Você está na página 1de 71

Conceitos bsicos de programao

Programao em Java Prof. Maurcio Braga

Algoritmos

Estruturas para construo de software


Tipos de Dados; Variveis; Constantes; Operadores aritmticos, relacionais e lgicos; Atribuio; Comandos de condio ou seleo; Comandos de repetio.

2/71

Tipos de dados

Dado pode ser definido como informao em estado primitivo cujo processamento pode gerar informao til.
Devido a natureza do que vai ser armazenado em memria, existem tipos de dados diferentes. Tipo de dado representa o conjunto de valores possveis para um dado.

3/71

Tipos de dados

Iremos utilizar apenas cinco tipos de dados durante a criao de algoritmos:


Inteiro Para representar informaes que no possuem parte fracionria. Ex: 1, 2, 40000, etc.; Real Para representar informaes que podem possuir parte fracionria. Ex: 3.1415; Lgico Para representar um estado ou situao que pode ser apenas verdadeira (true) ou falsa (false); Caractere Utilizado para armazenar um nico caractere na memria. Ex: A; Cadeia de caracteres Utilizado para armazenar um seqncia de caracteres na memria. Ex: Computador.

4/71

Exerccios

Identifique o tipo de dado para a representao das informaes abaixo:


Quantidade de brinquedos de uma criana; Altura de uma pessoa; Aviso em uma placa; Sexo de uma pessoa; Salrio de um funcionrio; CEP de uma carta; Estado de um computador quanto ao seu funcionamento; Nmero de cheques emitidos por um cliente em um ms.

5/71

Tipos de dados em Java

Java possui oito tipos primitivos de dados:


Lgico: boolean Texto (1 caractere): char Inteiros: byte, short, int e long Reais: double e float

Todos os tipos numricos possuem sinal. String: representa uma cadeia de caracteres.

Operadores

Operadores aritmticos
Utilizados

para obteno de dados numricos; Consistem de:

Adio (+); Subtrao (-); Multiplicao (*); Diviso real entre dois nmeros (/); Diviso inteira entre dois nmeros inteiros (div); Resto da diviso inteira entre dois nmeros inteiros (mod).

7/71

Operadores em Java

Operadores aritmticos
Consistem de: Adio (+); Subtrao (-); Multiplicao (*); Diviso real entre dois nmeros (/); Diviso inteira entre dois nmeros inteiros (/); Resto da diviso inteira entre dois nmeros inteiros (%).

8/71

Operadores aritmticos

Precedncia de operadores aritmticos


1. 2. 3.

4.

( ) Parnteses; Potenciao, radiciao; Multiplicao, divises e resto da diviso; Adio ou subtrao.

Ex:

2 * (2 4) + 3* 4 = ?

9/71

Montagem de expresses

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

10/71

Exerccios

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


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

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

11/71

Operadores

Operadores relacionais

Utilizados na comparao de literais ou nmeros; Retornam valores lgicos; Consistem de:


Igual a (==); Diferente de (!=); Maior que (>); Menor que (<); Maior ou igual a (>=); Menor ou igual a (<=).

12/71

Operadores

Operadores lgicos

Utilizados para combinar resultados de expresses lgicas; Consistem de:


E (AND); OU (OR); NO (NOT).

13/71

Tabela verdade das operaes lgicas

x Verdadeiro Verdadeiro Falso Falso

y Falso Verdadeiro Verdadeiro Falso y Falso Verdadeiro Verdadeiro

xEy Falso Verdadeiro Falso Falso x OU y Verdadeiro Verdadeiro Verdadeiro

OU

x Verdadeiro Verdadeiro Falso

Falso

Falso

Falso

14/71

Tabela verdade das operaes lgicas

NO

x Verdadeiro Falso

NO x Falso Verdadeiro

15/71

Operadores lgicos

Precedncia de operadores lgicos


1. 2.

No; E, OU.

16/71

Operadores lgicos

Exemplos:
F F F V V

(3 == 5) E (4 > 2) = Falso (2 > 4) OU (2 < 4) = Verdadeiro 15 % 4 < 19 % 6 = Falso

17/71

Operadores Lgicos em Java

Operadores Booleanos:
! - No | - Ou &-E ^ - Ou Exclusivo

Operadores Booleanos com Curto-Circuito


|| - Ou && - E

Montagem de expresses

Para realizao de determinados clculos, pode ser necessrio fazer combinaes de operadores, bom como a adio de parnteses. Mas que operador ser calculado primeiro?

O que tiver maior prioridade.

19/71

Montagem de expresses

Tabela de prioridades de operadores:


1 Parnteses mais internos 2 Funes 3 Operadores aritmticos
1 Multiplicativos (*, /, %); 2 Aditivos (+, -)

4 Operadores relacionais 5 Operadores lgicos


1 NO 2 E 3 OU

20/71

Exerccios

2 < 5 e 15/3 == 5
pot(3,2)/3 < 2 e 5==5 NO ( 3 + 5 != 5 / 2 - 1 ) Falso ou 20 / (18/3) != (21/3) / 2

21/71

Constantes e Variveis

Constante

Possui valor fixo durante execuo do programa; Pode ser numrica, lgica ou literal.

Varivel

Um dos conceitos mais importantes na construo de algoritmos. Representa um espao de memria reservado para armazenar determinado tipo de dado; Deve receber um nome para referenciao e modificao; Deve possuir um tipo associado; Quando um algoritmo termina sua execuo, todas as variveis so apagadas da memria; S podem armazenar um dado por vez.

22/71

Constantes e Variveis

Nomes de Variveis

O nome de uma varivel deve ser nico dentro de um mesmo algoritmo. Deve comear por uma letra, podendo-se incluir aps esta letra outras letras, dgitos ou o sinal de underline ( _ ). Este tipo de nome conhecido como identificador. O identificador no pode possuir acentos, nem ser igual ao nome de um comando.

23/71

Identificadores em Java

Devem comear com uma letra, um cifro ($) ou um underscore (_)

Exemplos:
1. 2. 3. 4. 5.

Ok! Foobar Ok! BIGInterface $incomeAfterExpenses Ok! 3_node5 Errado! !theCase Errado!

24/71

Constantes e Variveis

Ex:
P1 + P2 + P3 + P4 media = 4 Varivel Constante

25/71

Constantes e Variveis

Tipos de variveis

Numricas: Armazenamento de nmeros;


Inteiras: Armazenamento de nmeros inteiros; Reais: Armazenamento de nmeros reais. Ex: a, Jos, Rua 23.

Caracteres: Cadeia de letras ou nmeros;

Booleanas: Armazenam valores lgicos (verdadeiro ou falso).

26/71

Constantes e Variveis

Declarao de variveis

Toda varivel utilizada em um algoritmo deve ser declarada. A sintaxe utilizada em pseudocdigo : <tipo>:<variavel1>, <variavel2>, ...;

27/71

Sintaxe dos algoritmos

Os algoritmos em portugus estruturado devem possuir a seguinte estrutura:


Variveis // Declarao de variveis <tipo1> : <varivel1>; <tipo2> : <varivel2>; <tipo3> : <varivel2>; // Corpo do algoritmo Incio <comando1>; <comando2>; <comando3>; Fim. // Mdulos Mdulo <nomemdulo>; [[ ... ]]
28/71

Declarao de variveis Comentrio

Parte principal do algoritmo

Separador de comandos Indentao

Mdulos dos algoritmos

Atribuio

O que atribuio?

Atribui ou associa um valor a uma varivel ou constante

Ex:

nome = Jos; media = (nota1 + nota2) / 2;

29/71

Funes

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

<nomefuno> (<parmetro1>, <parmetro2>, ...)

30/71

Funes Matemticas disponveis no pacote Java.Math


Funo log(double x) exp(double x) pow(double x, double y) round(float x) sqrt(double x) Utilidade Retorna o valor do logaritmo neperiano de x Retorna o valor de ex Retorna o valor de x elevado a y. Arredonda x para o inteiro mais prximo Retorna a raiz quadrada de x Tipo do resultado Real Real Real Inteiro Real

sin(double x)
cos(double x) atan(double x) abs(int x)

Retorna o seno de x
Retorna o co-seno de x Retorna o arco, em radianos, cuja tangente x Retorna o mdulo de x (|x|)

Real
Real Real Inteiro

31/71

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 usurio.
leia (varivel1);

Quando um computador encontra um comando de entrada de dados, ele suspende a execuo do programa at que os dados sejam fornecidos.

32/71

Comando de entrada de dados em Java

Para fazer a leitura de dados do teclado em programas Java, utilizaremos o objeto Scanner:
Scanner s = new Scanner(System.in); int numero = s.nextInt();

O objeto Scanner pode ser usado com variveis numricas, lgicas e do tipo texto.

33/71

Comando de sada de dados

Da mesma forma que precisamos receber dados externos, precisamos fornecer dados e instrues para os usurios. Desta forma, precisamos de um comando para retornar dados e/ou mensagens em um dispositivo de sada.
Escreva <var ou expresso ou mensagem>,...;

Ex:

escreva O saldo atual , saldo; escreva soma;


34/71

Comando de sada de dados em Java

Para escrevermos na tela, usaremos a funo println, disponvel no Java.


Para concatenar uma varivel com um texto, usamos o sinal +.
System.out.println(var ou expresso ou mensagem +...);

Ex:

System.out.println(O saldo atual + saldo); System.out.println(soma);


35/71

Exemplo de construo de algoritmo

Exemplo 1

Exibir a soma de dois nmeros inteiros fornecidos pelo usurio. Objetivo construir um algoritmo que ensine o computador a executar uma soluo para o problema proposto. Sada de dados O que o algoritmo deve fazer?

Soluo

Calcular a soma de dois nmeros e exibi-la ao usurio.

O valor da soma dever ser armazenado em memria antes de ser exibido


necessrio ento a criao de uma varivel soma necessrio que ao trmino do algoritmo a varivel soma seja exibida para o usurio escreva soma;
36/71

Exemplo de construo de algoritmo

Soluo (cont.)

O enunciado afirma que os valores a serem somados devem ser informados pelo usurio

O algoritmo possui dados de entrada, e estes dados de entrada devero ser armazenados em memria. necessria a criao de duas variveis num1 e num2 para armazenar os dados fornecidos leia num1; pelo usurio. leia num2; necessrio a obteno destes dados do usurio atravs do comando de entrada de dados.

O processamento do algoritmo deve possuir apenas a operao soma = num1 + num2; de soma.

Utilizaremos o operador de adio (+) para ensinar ao computador que operao, e com quais valores, deve ser realizada. O resultado da soma dever ser armazenado em memria pela varivel soma, logo precisaremos utilizar o comando de atribuio.
37/71

Exemplo de construo de algoritmo

Exemplo 1

Exibir a soma de dois nmeros inteiros fornecidos pelo usurio.


Variveis
inteiro: num1, num2, soma; Incio leia(num1);

Soluo

leia(num2);
soma = num1 + num2; escreva(soma); Fim
38/71

Exemplo de construo de algoritmo

Exemplo 2

Exibir o quadrado de um nmero inteiro fornecido pelo usurio. Possui apenas uma sada de dados Necessita de apenas uma entrada de dados Podemos utilizar a funo pow(x,2)

Soluo

39/71

Exemplo de construo de algoritmo

Sem usar a funo

Usando a funo

Variveis inteiro: valor, quadrado; Incio leia(valor); quadrado = valor * valor; escreva(quadrado); Fim

Variveis inteiro: valor, quadrado; Incio leia(valor); quadrado = pow( valor,2 ); escreva(quadrado); Fim

40/71

Exerccios

Faa um programa para exibir a multiplicao de dois inteiros informados pelo usurio. Faa um programa para ler 3 nmeros reais e exibir a soma do 1 nmero com o 2, multiplicada pela soma do 2 pelo 3. O que ser impresso pelo algoritmo a seguir?
Variveis inteiro: val1, val2, val3; Incio

val1 = 10; val2 = 20; val3 = val2 val1; val3 = val1 val2; escrever val3;
Fim
41/71

Exemplo Java

Escrever o programa Al mundo! em Java.

42/71

Algoritmo Al mundo!

Soluo
Variveis
// No tem variveis Incio escreva(Alo mundo!); Fim

43/71

Programa Al mundo! em Java


public static void main(String[] args) {
System.out.println("Al mundo!); }

44/71

Exemplo

Implementar em Java um programa que solicite duas notas de um aluno e calcule a sua mdia.

45/71

Algoritmo do programa mdia:


Incio // declarao de variveis real: nota1, nota2, media; // entrada de dados leia(nota1); leia(nota2); // processamento (clculo da mdia) media = (nota1 + nota2) / 2; // sada de dados escreva(media); Fim
46/71

Programa mdia em Java


public static void main(String[] args) { // Variveis: nota1, nota2 e mdia do aluno double nota1 = 0, nota2 = 0, media = 0; System.out.println("Entre a primeira e a segunda nota do aluno:");

// entrada de dados Scanner s = new Scanner (System.in); nota1 = s.nextDouble(); nota2 = s.nextDouble(); // clculo da mdia media = (nota1 + nota2)/2;
System.out.println("A mdia : "+media); }
47/71

Exerccio

Implementar em Java um programa que, a partir do valor em Celsius digitado pelo usurio, calcula o valor da temperatura em Fahrenheit.

Frmula converso F C:

C ( F 32) * 5 / 9

48/71

Exerccio

Ler o preo a prazo de um produto numa loja bem como o desconto para pagamento a vista e imprimir o valor a vista.

49/71

Exerccio

O algoritmo fica assim...

Variveis

preco, desconto, valor_a_descontar, preco_final : real;


Incio ler preco; ler desconto; valor_a_descontar = ( preco * desconto ) / 100; preco_final = preco valor_a_descontar; escrever preco_final; Fim

50/71

Programa desconto em Java


public static void main(String[] args) { double preco=0, desconto=0, valor_a_descontar=0, preco_final=0; System.out.println("Entre o preo do produto:"); Scanner s = new Scanner (System.in); preco = s.nextDouble(); System.out.println("Entre o desconto:"); preco = s.nextDouble(); // clculo do preo da mercadoria com o desconto valor_a_descontar = (preco*desconto)/100; preco_final = preco valor_a_descontar; System.out.println(O preo com desconto : "+preco_final); }
51/71

Strings

Implementam o tipo cadeia de caracteres em Java;


Em Java, Strings so objetos que disponibilizam um conjunto de funes que podem ser usadas pelo usurio. Pode-se concatenar uma String com uma outra varivel ou expresso com o sinal +.

52/71

Strings

Exemplos:
String

s1 = Exemplo de uma string; int x = 10; String s2 = Idade de ricardo = + x; int y = 5; String s3 = Respostas: x = + x + e y = + y; System.out.println(s3);

53/71

Igualdade de Strings

Strings no devem ser comparadas com ==, e sim com o mtodo equals;
Comparao diferencia letras maisculas e minsculas; Caso a comparao no deva levar em conta maisculas e minsculas, deve-se usar o mtodo equalsIgnoreCase;

54/71

Igualdade de Strings

Ex:

String S1 = Banana; String S2 = banana; System.out.println("mtodo equals = " + s1.equals(s2)); System.out.println("mtodo equalsIgnoreCase = " + s1.equalsIgnoreCase(s2));

55/71

Manipulao de Strings

Algumas funes teis para manipulao de Strings:


length() Retorna o comprimento da string; int indexOf(String s) Retorna a posio da primeira ocorrncia da substring s na String; char charAt(int ndice) Retorna o caractere na posio apontada por ndice (o primeiro caractere est na posio 0).
int

56/71

Manipulao de Strings

Ex:

String s1 = Banana; int indice = s1.indexOf("na"); System.out.println(" Posicao da substring 'na' em s1 : " + indice); char letra = s1.charAt(5); System.out.println(" A 6. letra em S1 : " + letra);

57/71

Exerccio

Ler o nome e a qualidade de uma pessoa, e exibir a mensagem <Nome> uma pessoa que tem <qualidade>.

58/71

Exerccio

Soluo

Exemplo simples de composio de frases em algoritmos. Para as entradas Maria e coragem, a sada seria Maria uma pessoa de coragem. Este algoritmo no necessita de clculos, apenas leitura dos dados e exibio de composio entre variveis e mensagens.

59/71

Soluo

O algoritmo fica assim...

Variveis
nome, qualidade : cadeia; Incio ler nome; ler qualidade; escrever nome + uma pessoa que tem + qualidade;

Fim

60/71

Programa mensagem em Java


public static void main(String[] args) { // declarao de variveis String nome=null, qualidade=null; System.out.println("Entre o nome:"); Scanner s = new Scanner (System.in); nome = s.next(); System.out.println("Entre a qualidade:"); qualidade = s.next(); System.out.println(nome+ " uma pessoa que tem "+qualidade); }
61/71

Exerccios

Faa um programa para ler um valor em reais e exibir o equivalente em dlares. Considere que um dlar vale R$2,50. Faa um programa para ler o salrio de um funcionrio e imprimi-lo com um aumento de 15%. Mostre o que ser impresso pelo algoritmo a seguir.
Variveis v, r : real; Incio

v = 1000; r = 15 / 100; v = v + r * v; v = v + r * v; v = v + r * v; escreva v;


Fim

62/71

Programa cmbio em Java


public static void main(String[] args) { // declarao de variveis double valor_real=0, valor_dolar=0, cotacao_dolar = 2.50; System.out.println("Entre o valor em reais:"); Scanner s = new Scanner (System.in); valor_real = s.nextDouble(); valor_dolar = valor_real/cotacao_dolar; System.out.println("O valor de R$ " + valor_real + " reais em dlar : US$ " + valor_dolar); }

63/71

Programa salrio em Java


public static void main(String[] args) { // declarao de variveis double salario_antigo=0, salario_novo=0; System.out.println("Entre o valor do salrio do funcionrio:"); Scanner s = new Scanner (System.in); salario_antigo= s.nextDouble(); salario_novo = salario_antigo*1.15; System.out.println("O valor do salrio com aumento de 15% R$ " + salario_novo + " reais.); }

64/71

Funes matemticas em Java

Disponveis na classe Math;


Para chamar uma funo matemtica, basta inserirmos em algum ponto do programa Math + o nome da mesma, junto com a lista de parmetros (se houver) que a mesma recebe.

Math.<nome_funo>(parametro1, parametro2);

Para saber quais funes esto disponveis, deve-se consultar a documentao.


65/71

Funes matemticas com Java - 1


public static void main(String[] args) { double a=0, b=0; System.out.println("Entre o valor de a:"); Scanner s = new Scanner (System.in); a= s.nextDouble(); System.out.println("Entre o valor de b:"); b= s.nextDouble(); 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); }
66/71

Funes matemticas com Java - 2


public 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)); }
67/71

Exerccio

Digite o programa exibido no prximo slide e o execute. Voc capaz de explicar o resultado que aparece?

68/71

Exemplo tipos de dados em Java


public static void main(String[] args) { short s1 = 17, s2 = 5; double d1 = 0.7; System.out.println("diviso de shorts : "); System.out.println("("+ s1 + "/" + s2 + ") = "+ (s1/s2) ); System.out.println("\ndiviso de shorts com converso para double aps a diviso : "); System.out.println("(double) ("+ s1 + "/" + s2 + ") = " + (double) (s1/s2)); System.out.println("\ndiviso de shorts com converso para double antes da diviso : "); System.out.println("( (double) "+ s1 + "/ (double) " + s2 + ") = " + ((double) s1/(double) s2)); System.out.println("\nsoma de shorts com um double sem converso : ");
69/71

Exemplo tipos de dados em Java


System.out.println("("+ s1 + "/" + s2 + " + " + d1 + " + " +s2 + ") = " + (s1/s2 + d1 + s2) ); System.out.println("\n converso para short aps 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)); }

70/71

Conceitos bsicos de programao

Programao em Java Prof. Maurcio Braga

Você também pode gostar