55
Construção de Construção de Algoritmos 1 Algoritmos 1 Programação em Java Prof. Maurício Braga

Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

Embed Size (px)

Citation preview

Page 1: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

Construção de Algoritmos 1Construção de Algoritmos 1

Programação em Java

Prof. Maurício Braga

Page 2: Construçã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.

Page 3: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

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.

Page 4: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

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”.

Page 5: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

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.

Page 6: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

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.

Page 7: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

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).

Page 8: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

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 (%).

Page 9: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

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 = ?

Page 10: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

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

Page 11: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

11/53

Exercícios

pot(8,2) + (1.5 * 10) / 5

rad( -2*(-8) ) div 4

( 30 mod 4 * pot(3,3) ) * -1

Page 12: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

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 (<=).

Page 13: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

13/53

Operadores

Operadores lógicos Utilizados para combinar resultados de expressões lógicas; Consistem de:

E (AND); OU (OR); NÃO (NOT).

Page 14: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

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

Page 15: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

15/53

Tabela verdade das operações lógicas

NÃO x NÃO x

Verdadeiro Falso

Falso Verdadeiro

Page 16: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

16/53

Operadores lógicos

Precedência de operadores lógicos1. Não;

2. E, OU.

Page 17: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

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

Page 18: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

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

Page 19: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

Operadores Lógicos em Java

Operadores Booleanos:! - Não & - E

| - Ou ^ - Ou Exclusivo

Operadores Booleanos com Curto-Circuito|| - Ou && - E

Page 20: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

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.

Page 21: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

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

Page 22: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

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 )

Page 23: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

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.

Page 24: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

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.

Page 25: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

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!

Page 26: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

26/53

Constantes e Variáveis

Ex:

Variável

Constante

media =P1 + P2 + P3 + P4

4

Page 27: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

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).

Page 28: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

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>, ...;

Page 29: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

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

Page 30: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

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;

Page 31: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

31/53

Funções

Atuam como um pequeno programa que, tendo valores de entrada, geram (retornam) um resultado.

<nomefunção> (<parâmetro1>, <parâmetro2>, ...)

Page 32: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

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

Page 33: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

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>, ...;

Page 34: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

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>,...;

Page 35: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

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;

Page 36: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

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;

Page 37: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

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

Page 38: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

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)

Page 39: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

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

Page 40: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

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

Page 41: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

41/53

Eclipse

Conhecer o Eclipse;

Escrever o programa ‘Alô mundo!’ em Java.

Page 42: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

42/53

Algoritmo ‘Alô mundo!’

Solução

Variáveis

// Não tem variáveis

Início

escreva(“Alo mundo!”);

Fim

Page 43: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

43/53

Programa “Alô mundo!” em Java

public static void main(String[] args) {

System.out.println("Alô mundo!”);}

Page 44: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

44/53

Exemplo

Implementar em Java o programa que calcula a média de aluno que possui 2 notas.

Page 45: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

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

Page 46: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

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);}

Page 47: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

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);

Page 48: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

48/53

Programa média em Java

}catch (Exception e) { } return resultado;}

Page 49: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

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

Page 50: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

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);

}

Page 51: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

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));

}

Page 52: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

52/53

Exercício

Digite o programa exibido no próximo slide e o execute. Você é capaz de explicar o resultado que aparece?

Page 53: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

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 : ");

Page 54: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

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)); }}

Page 55: Construção de Algoritmos 1 Programação em Java Prof. Maurício Braga

Construção de Algoritmos 1Construção de Algoritmos 1

Programação em Java

Prof. Maurício Braga