Construção de Algoritmos 1Construção de Algoritmos 1
Programação em Java
Prof. Maurício Braga
2/53
Algoritmos
Estruturas para construção de algoritmos
Tipos de Dados; Variáveis; Constantes; Operadores aritméticos, relacionais e lógicos; Atribuição; Comandos de condição ou seleção; Comandos de repetição.
3/53
Tipos de dados
Dado pode ser definido como informação em estado primitivo cujo processamento pode gerar informação útil.
Devido a natureza do que vai ser armazenado em memória, existem tipos de dados diferentes.
Tipo de dado representa o conjunto de valores possíveis para um dado.
4/53
Tipos de dados
Iremos utilizar apenas cinco tipos de dados durante a criação de algoritmos: Inteiro – Para representar informações que não possuem parte
fracionária. Ex: 1, 2, 40000, etc.; Real – Para representar informações que podem possuir parte
fracionária. Ex: 3.1415; Lógico – Para representar um estado ou situação que pode ser
apenas verdadeira (true) ou falsa (false); Caractere – Utilizado para armazenar um único caractere na
memória. Ex: ‘A’; Cadeia de caracteres – Utilizado para armazenar um seqüência
de caracteres na memória. Ex: “Computador”.
5/53
Exercícios
Identifique o tipo de dado para a representação das informações abaixo:
Quantidade de brinquedos de uma criança; Altura de uma pessoa; Aviso em uma placa; Sexo de uma pessoa; Salário de um funcionário; CEP de uma carta; Estado de um computador quanto ao seu funcionamento; Número de cheques emitidos por um cliente em um mês.
Tipos de dados em Java
Java possui oito tipos primitivos de dados: Lógico: boolean Texto (1 caractere): char Inteiros: byte, short, int e long Reais: double e float
Todos os tipos numéricos possuem sinal.
String: representa uma cadeia de caracteres.
7/53
Operadores
Operadores aritméticos Utilizados para obtenção de dados numéricos; Consistem de:
Adição (+); Subtração (-); Multiplicação (*); Divisão real entre dois números (/); Divisão inteira entre dois números inteiros (div); Resto da divisão inteira entre dois números inteiros (mod).
8/53
Operadores em Java
Operadores aritméticos Consistem de:
Adição (+); Subtração (-); Multiplicação (*); Divisão real entre dois números (/); Divisão inteira entre dois números inteiros (/); Resto da divisão inteira entre dois números inteiros (%).
9/53
Operadores aritméticos
Precedência de operadores aritméticos1. ( ) Parênteses;
2. Potenciação, radiciação;
3. Multiplicação, divisões e resto da divisão;
4. Adição ou subtração.
Ex:
2 * (2 – 4) + 3* 4 = ?
10/53
Montagem de expressões
Exemplos 3 + 4 * 9 3 + 36 39
(3 + 4) * 9 7 * 9 63
8 – pot(4*2,2) + 5 8 – pot(8,2) +5 8 – 64 + 5 -56 + 5 -51
11/53
Exercícios
pot(8,2) + (1.5 * 10) / 5
rad( -2*(-8) ) div 4
( 30 mod 4 * pot(3,3) ) * -1
12/53
Operadores
Operadores relacionais Utilizados na comparação de literais ou números; Retornam valores lógicos; Consistem de:
Igual a (==); Diferente de (<> ou !=); Maior que (>); Menor que (<); Maior ou igual a (>=); Menor ou igual a (<=).
13/53
Operadores
Operadores lógicos Utilizados para combinar resultados de expressões lógicas; Consistem de:
E (AND); OU (OR); NÃO (NOT).
14/53
Tabela verdade das operações lógicas
E
OU
x y x E y
Verdadeiro Falso Falso
Verdadeiro Verdadeiro Verdadeiro
Falso Verdadeiro Falso
Falso Falso Falso
x y x OU y
Verdadeiro Falso Verdadeiro
Verdadeiro Verdadeiro Verdadeiro
Falso Verdadeiro Verdadeiro
Falso Falso Falso
15/53
Tabela verdade das operações lógicas
NÃO x NÃO x
Verdadeiro Falso
Falso Verdadeiro
16/53
Operadores lógicos
Precedência de operadores lógicos1. Não;
2. E, OU.
17/53
Operadores lógicos
Exemplos:
(3 == 5) E (4 > 2) =
(2 > 4) OU (2 < 4) =
15 mod 4 < 19 mod 6 =
Falso
Verdadeiro
Falso
F V
F V
F
18/53
Exercícios
2 < 5 e 15/3 = 5
pot(3,2)/3 < 2 e 5=5
Falso ou 20 div (18/3) <> (21/3) div 2
Operadores Lógicos em Java
Operadores Booleanos:! - Não & - E
| - Ou ^ - Ou Exclusivo
Operadores Booleanos com Curto-Circuito|| - Ou && - E
20/53
Montagem de expressões
Para realização de determinados cálculos, pode ser necessário fazer combinações de operadores, bom como a adição de parênteses.
Mas que operador será calculado primeiro? O que tiver maior prioridade.
21/53
Montagem de expressões
Tabela de prioridades de operadores:
1º Parênteses mais internos
2º Funções
3º Operadores aritméticos1º Multiplicativos (*, /, #, %);
2º Aditivos (+, -)
4º Operadores relacionais
5º Operadores lógicos1º NÃO
2º E
3º OU
22/53
Exercícios
Indique a ordem e o resultado das expressões:
7 * 4 / 2 + 9 – 6
7 > 2 E 3 – 5 < 8
NÃO ( 3 + 5 <> 5 / 2 - 1 )
23/53
Constantes e Variáveis
Constante Possui valor fixo durante execução do programa; Pode ser numérica, lógica ou literal.
Variável Um dos conceitos mais importantes na construção de algoritmos. Representa um espaço de memória reservado para armazenar
determinado tipo de dado; Deve receber um nome para referenciação e modificação; Deve possuir um tipo associado; Quando um algoritmo termina sua execução, todas as variáveis são
apagadas da memória; Só podem armazenar um dado por vez.
24/53
Constantes e Variáveis
Nomes de Variáveis O nome de uma variável deve ser único dentro de um mesmo
algoritmo. Deve começar por uma letra, podendo-se incluir após esta letra
outras letras, dígitos ou o sinal de underline ( _ ). Este tipo de nome é conhecido como identificador.
O identificador não pode possuir acentos, nem ser igual ao nome de um comando.
25/53
Identificadores em Java
Devem começar com uma letra, um cifrão ($) ou um underscore (_)
Exemplos:
1. Foobar2. BIGInterface3. $incomeAfterExpenses4. 3_node5 5. !theCase
Ok!
Ok!
Ok!
Errado!
Errado!
26/53
Constantes e Variáveis
Ex:
Variável
Constante
media =P1 + P2 + P3 + P4
4
27/53
Constantes e Variáveis
Tipos de variáveis Numéricas: Armazenamento de números;
Inteiras: Armazenamento de números inteiros; Reais: Armazenamento de números reais.
Caracteres: Cadeia de letras ou números; Ex: ‘a’, “José”, “Rua 23”.
Booleanas: Armazenam valores lógicos (verdadeiro ou falso).
28/53
Constantes e Variáveis
Declaração de variáveis Toda variável utilizada em um algoritmo deve ser declarada. A sintaxe utilizada em pseudocódigo é:
<tipo>:<variavel1>, <variavel2>, ...;
29/53
Sintaxe dos algoritmos Os algoritmos em português estruturado devem possuir
a seguinte estrutura:Variáveis// Declaração de variáveis <tipo1> : <variável1>; <tipo2> : <variável2>; <tipo3> : <variável2>;// Corpo do algoritmoInício <comando1>; <comando2>; <comando3>;Fim.
// MódulosMódulo <nomemódulo>; [[ ... ]]
Declaração de variáveis
Comentário
Módulos dos algoritmos
Parte principaldo algoritmo
Indentação
Separador de comandos
30/53
Atribuição
O que é atribuição? “Atribui ou associa um valor a uma variável ou constante”
Ex:
nome = “José”;media = (nota1 + nota2) / 2;
31/53
Funções
Atuam como um pequeno programa que, tendo valores de entrada, geram (retornam) um resultado.
<nomefunção> (<parâmetro1>, <parâmetro2>, ...)
32/53
Funções Matemáticas disponíveis no pacote Java.Math
Função Utilidade Tipo do resultado
log(double x) Retorna o valor do logaritmo neperiano de x Real
exp(double x) Retorna o valor de ex Real
pow(double x, double y)
Retorna o valor de x elevado a y. Real
round(float x) Arredonda x para o inteiro mais próximo Inteiro
sqrt(double x) Retorna a raiz quadrada de x Real
sin(double x) Retorna o seno de x Real
cos(double x) Retorna o co-seno de x Real
atan(double x) Retorna o arco, em radianos, cuja tangente é x Real
abs(int x) Retorna o módulo de x (|x|) Inteiro
33/53
Comando de entrada de dados
Normalmente precisamos de dados de entrada para serem processados pelos algoritmos.
Desta forma, precisamos de um comando para solicitar e obter dados fornecidos pelo usuário.
Quando um computador encontra um comando de entrada de dados, ele suspende a execução do programa até que os dados sejam fornecidos.
leia <variável1>, <variável2>, ...;
34/53
Comando de saída de dados
Da mesma forma que precisamos receber dados externos, precisamos fornecer dados e instruções para os usuários.
Desta forma, precisamos de um comando para retornar dados e/ou mensagens em um dispositivo de saída.
Ex: escreva “O saldo atual é”, saldo; escreva soma;
Escreva <var ou expressão ou mensagem>,...;
35/53
Exemplo de construção de algoritmo
Exemplo 1 Exibir a soma de dois números inteiros fornecidos pelo usuário.
Solução Objetivo é construir um algoritmo que ensine o computador a
executar uma solução para o problema proposto. O que o algoritmo deve fazer?
Calcular a soma de dois números e exibi-la ao usuário. O valor da soma deverá ser armazenado em memória antes de ser
exibido É necessário então a criação de uma variável soma É necessário que ao término do algoritmo a variável soma seja exibida
para o usuário
Saída de dados
escreva soma;
36/53
Exemplo de construção de algoritmo Solução (cont.)
O enunciado afirma que os valores a serem somados devem ser informados pelo usuário
O algoritmo possui dados de entrada, e estes dados de entrada deverão ser armazenados em memória. É necessária a criação de duas variáveis num1 e num2 para armazenar os dados fornecidos pelo usuário.
É necessário a obtenção destes dados do usuário através do comando de entrada de dados.
O processamento do algoritmo deve possuir apenas a operação de soma.
Utilizaremos o operador de adição (+) para ensinar ao computador que operação, e com quais valores, deve ser realizada.
O resultado da soma deverá ser armazenado em memória pela variável soma, logo precisaremos utilizar o comando de atribuição.
leia num1;leia num2;
soma <- num1 + num2;
37/53
Exemplo de construção de algoritmo
Exemplo 1 Exibir a soma de dois números inteiros fornecidos pelo usuário.
SoluçãoVariáveis
inteiro: num1, num2, soma;
Início
leia(num1);
leia(num2);
soma = num1 + num2;
escreva(soma);
Fim
38/53
Exemplo de construção de algoritmo
Exemplo 2 Exibir o quadrado de um número inteiro fornecido pelo usuário.
Solução Possui apenas uma saída de dados Necessita de apenas uma entrada de dados Podemos utilizar a função pow(x,2)
39/53
Exemplo de construção de algoritmo
Sem usar a função
Variáveis inteiro: valor, quadrado;Início leia(valor); quadrado = valor * valor; escreva(quadrado);Fim
Usando a função
Variáveis
inteiro: valor, quadrado;
Início
leia(valor);
quadrado = pow( valor,2 );
escreva(quadrado);
Fim
40/53
Exercícios Faça um algoritmo para exibir a multiplicação de dois inteiros
informados pelo usuário. Faça um algoritmo para ler um número inteiro e exibir seu
dobro. Faça um algoritmo para ler 3 números reais e exibir a soma do
1º número com o 2º, multiplicada pela soma do 2º pelo 3º. O que será impresso pelo algoritmo a seguir?
Variáveis inteiro: val1, val2, val3;
Inícioval1 = 10;val2 = 20;val3 = val2 – val1;val3 = val1 – val2;escrever val3;
Fim
41/53
Eclipse
Conhecer o Eclipse;
Escrever o programa ‘Alô mundo!’ em Java.
42/53
Algoritmo ‘Alô mundo!’
Solução
Variáveis
// Não tem variáveis
Início
escreva(“Alo mundo!”);
Fim
43/53
Programa “Alô mundo!” em Java
public static void main(String[] args) {
System.out.println("Alô mundo!”);}
44/53
Exemplo
Implementar em Java o programa que calcula a média de aluno que possui 2 notas.
45/53
Algoritmo do programa média:
Início // declaração de variáveis real: nota1, nota2, media; // entrada de dados
leia(nota1); leia(nota2);
// processamento (cálculo da média)media = (nota1 + nota2) / 2;
// saída de dados
escreva(media);Fim
46/53
Programa média em Javapublic static void main(String[] args) {
// Variáveis: nota1, nota2 e média do aluno double nota1 = 0, nota2 = 0, media = 0;
System.out.println("Entre a primeira e a segunda nota do aluno:");
// entrada de dados nota1 = Leia(nota1); nota2 = Leia(nota2);
// cálculo da média media = (nota1 + nota2)/2;
System.out.println("A média é : "+media);}
47/53
Programa média em Java
public static double Leia(double param) {
// variáveis// objeto que contém o dado digitado pelo usuárioDataInputStream dado_lido;
// variável auxiliar cujo objetivo é facilitar // a conversão dos dadosString stemporario;double resultado = 0;
try { dado_lido = new DataInputStream(System.in); stemporario = dado_lido.readLine(); resultado =Double.parseDouble(stemporario);
48/53
Programa média em Java
}catch (Exception e) { } return resultado;}
49/53
Exercício
Implementar em Java um programa que, a partir do valor em Celsius digitado pelo usuário, calcula o valor da temperatura em Fahrenheit.
Fórmula conversão F -> C:
5/9*)32( FC
50/53
Funções matemáticas com Java - 1public static void main(String[] args) {
double a=0, b=0;System.out.println("Entre o valor de a:");a=Leia(a);System.out.println("Entre o valor de b:");b=Leia(b);System.out.println(a+" elevado ao "+b+" é igual a " + Math.pow(a,b));System.out.println("a raiz quadrada de "+a+" é igual a " + Math.sqrt(a));System.out.println("o maior entre "+a+" e "+b+" é " + Math.max(a,b));System.out.println("o menor entre "+a+" e "+b+" é " + Math.min(a,b));System.out.println("o log de "+a+" é " + Math.log10(a));System.out.println("o valor de PI é "+Math.PI);
}
51/53
Funções matemáticas com Java - 2public static void main(String[] args) {
double A=5.2,B=5.6,C=-5.8;System.out.println("Arredondando 5.2 com Math.ceil = " + Math.ceil(A));System.out.println("Arredondando 5.6 com Math.ceil = " + Math.ceil(B));System.out.println("Arredondando -5.8 com Math.ceil = " + Math.ceil(C));System.out.println("Arredondando 5.2 com Math.floor = " + Math.floor(A));System.out.println("Arredondando 5.6 com Math.floor = " + Math.floor(B));System.out.println("Arredondando -5.8 com Math.floor = " + Math.floor(C));
}
52/53
Exercício
Digite o programa exibido no próximo slide e o execute. Você é capaz de explicar o resultado que aparece?
53/53
Exemplo tipos de dados em Javapublic static void main(String[] args) {
short s1 = 17, s2 = 5; double d1 = 0.7; System.out.println("divisão de shorts : "); System.out.println("("+ s1 + "/" + s2 + ") = "+ (s1/s2) ); System.out.println("\ndivisão de shorts com conversão para double após a divisão : "); System.out.println("(double) ("+ s1 + "/" + s2 + ") = " + (double) (s1/s2)); System.out.println("\ndivisão de shorts com conversão para double antes da divisão : "); System.out.println("( (double) "+ s1 + "/ (double) " + s2 + ") = " + ((double) s1/(double) s2)); System.out.println("\nsoma de shorts com um double sem
conversão : ");
54/53
Exemplo tipos de dados em Java System.out.println("("+ s1 + "/" + s2 + " + " + d1 + " + " +s2 + ") = " + (s1/s2 + d1 + s2) ); System.out.println("\n conversão para short após a soma de shorts
com um double : "); System.out.println("(short) ("+ s1 + "/" + s2 + " 0.7 + " +s2 + ") = " + (short) (s1/s2 + 0.7 + s2)); System.out.println("\ncast para double em cada elemento antes da soma : "); System.out.println(" ( (double) "+ s1 + "/(double) " + s2 + " + " + d1 + " + " + s2 + ") = " + ((double) s1/(double) s2 + 0.7 + s2)); }}
Construção de Algoritmos 1Construção de Algoritmos 1
Programação em Java
Prof. Maurício Braga
Top Related