Você está na página 1de 26

Linguagem de Programao

Java

Professora: Luclia Oliveira

2. Semestre de 2008

Linguagem de Programao Java Professora Luclia

Como Surgiu a Linguagem Java


A Sun criou um time (conhecido como Green Team) para desenvolver inovaes tecnolgicas em 1992. Esse time foi liderado por James Gosling, considerado o pai do Java. O time voltou com a idia de criar um interpretador para pequenos dispositivos, facilitando a reescrita de software para aparelhos eletrnicos, como vdeo cassete, televiso e aparelhos de tv a cabo.

Mquina Virtual
Em uma linguagem de programao como C e Pascal, o cdigo fonte compilado para uma plataforma e sistema operacional especfico. Muitas vezes, o prprio cdigo fonte desenvolvido visando uma nica plataforma! J a Linguagem Java utiliza-se do conceito de mquina virtual, onde existe uma camada extra entre o sistema operacional e a aplicao, responsvel por traduzir o que sua aplicao deseja fazer para as respectivas chamadas do sistema operacional no qual ela est rodando no momento. Dessa forma, a maneira a qual voc abre uma janela no Linux ou no Windows a mesma: voc ganha independncia de sistema operacional.

Tipos de Programas Java


Existem quatro maneiras de se criar programas java. Em duas delas, o programa executado na mquina do usurio e nas outras duas, no servidor. Aplicativos: programas Java semelhantes aos criados em ferramentas de desenvolvimento tradicionais. Para que o programa seja executado, necessrio que a mquina virtual seja instalada e configurada na mquina do usurio. Applets: desde o incio, a Sun projetou o Java para se encaixar como uma luva na Internet. As applets so programas Java que so executados dentro de browsers. Nesse caso, o browser deve possuir a Mquina Virtual Java (JVM). Servlets: so programas Java que so executados em mquinas servidoras e normalmente fazem parte de uma arquitetura de desenvolvimento em multicamadas. Para isso, necessria a instalao de um programa gerenciador chamado Servidor de Aplicaes, responsvel pelo controle das requisies oriundas dos clientes. Obviamente, o servidor de aplicaes deve ser compatvel com a tecnologia Java, pois deve conter a JVM. JSP: semelhante Servlets, mas possui recursos mais amigveis para escrita de cdigo em HTML.

Instalando o Kit do Desenvolvedor Java (JDK)


O JDK o conjunto de software da Sun que contm tudo que necessitamos para criar programas Java. Ele vem com um compilador Java (javac), uma mquina virtual (java), um programa que permite rodar applets fora de browsers (appletviewer), um depurador, cdigos fonte de exemplo e etc. Faa o download do JDK no endereo: http://java.sun.com/javase/downloads/index.jsp e depois instale - o normalmente. Provavelmente, aps a instalao, o JDK ainda no ir funcionar automaticamente. Se no funcionar, voc ter que configurar a varivel de ambiente. Para isso siga os passos abaixo: (caso esteja utilizando o Windows XP)

Clique com o boto direito sobre Meu Computador Propriedades Clique no guia "Avanado" Clique no boto "Variveis de ambiente" Em variveis do sistema, clique em "Path" Clique em editar

Linguagem de Programao Java Professora Luclia

Coloque um ; (ponto e vrgula) ao final do valor da varivel e cole o caminho do bin do java no meu caso, o caminho o seguinte: C:\Arquivos de programas\Java\jdk1.6.0_07\bin Clique em Ok, depois Ok de novo e OK novamente.

Agora s digitar seus programas (digo, suas classes Java) no bloco de notas, por exemplo. Abra o Promp do DOS e compile o cdigo (javac NomeDaClasse.java) Corrija os erros que encontrar e quando compilar com sucesso, ou seja, no tiver mais nenhum erro, execute e veja o resultado! (comando para executar: java NomeDaClasse)

Uso de maisculas e minsculas


Java uma linguagem sensvel ao caixa, isto , distingue maisculas de minsculas: nome diferente de Nome, por exemplo. Comentrios So os textos usados para anotar explicaes no prprio programa e desconsiderados pelo compilador. Smbolo Descrio // Comentrio de uma linha /* */ Comentrio de bloco (pode ter muitas linhas) /** */ Comentrio de documentao Exemplos: //Comentrio de uma linha /*Comentrio de bloco que pode conter Mais de uma linha normalmente*/ /**Comentrio de documentao Classe que define ponto no espao 3D*/ public class Ponto3D{...} Os comentrios de documentao, colocados antes da declarao dos elementos do programa, podem ser extrados pela ferramenta javadoc e produzir pginas de documentao em HTML.

Operadores
Operadores Aritmticos Operador + * / % Descrio Adio Subtrao Multiplicao Diviso Resto da diviso Operadores Incremento e decremento Operador ++ -Descrio Incremento unitrio (adiciona uma unidade) Decremento unitrio (subtrai uma unidade)

Se usado como prefixo (antes da varivel), a operao realizada antes do uso do valor da varivel. Exemplo: int a = 1, b; b = ++a; // b recebe 2, a passa a valer 2 Se usado como sufixo (depois da varivel), a operao realizada depois do uso do valor da varivel.

Linguagem de Programao Java Professora Luclia

Exemplo: int a = 1, b; b = a++; // b recebe 1, a passa a valer 2 Operadores Relacionais Operador == != > >= < <= Descrio Igual Diferente Maior que Maior ou igual a Menor que Menor ou igual a

OBS.: O operador de igualdade == no deve ser confundido com o operador de atribuio =. No podem ser usados para comparar strings (literal) Operadores Lgicos Operador && || ! Descrio E lgico (and) Ou lgico (or) Negao (not) Operador Ternrio um valor simples que permite usar o valor de duas expresses diferentes conforme o resultado da condio. Sua sintaxe : <cond> ? <expresso_se_verdadeiro> : <expresso_se_falso> Se a expresso cond verdadeira, retornado o resultado de expresso_se_verdadeiro, seno retornado o resultado de expresso_se_falso. Operadores de atribuio compostos Expresses assim: Varivel = varivel operador expresso a = a + 1; Podem ser escritas assim: Varivel operador = expresso a +=1; Operador += -= *= /= %= Descrio Soma e atribui Subtrai e atribui Multiplica e atribui Divide e atribui Calcula o resto e atribui Precedncia dos operadores: So as regras que determinam a ordem com que os diferentes operadores sero processados nas expresses: Nvel 1 2 3 4 Operadores () ++ -*/% +-

Linguagem de Programao Java Professora Luclia

5 == != 6 && 7 || 8 ?: 9 = += - + *= /= %= Parnteses so usados para alterar a ordem natural das expresses. Variveis A declarao de variveis em Java requer: um tipo de dados, um nome (identificador) e, opcionalmente, um valor inicial. Exemplo: Int i; Tipos de dados primitivos: Definem o conjunto de valores que podem ser armazenados em uma varivel e tambm as operaes sobre seus valores. A linguagem Java possui oito tipos primitivos de dados: Tipo Byte short Int Long Float double Char boolean Descrio Inteiros positivos e negativos Inteiros positivos e negativos Inteiros positivos e negativos Inteiros positivos e negativos Valores em ponto flutuante Valores em ponto flutuante Caracteres individuais Tipo lgico, s assume false ou true Tamanho 1 2 4 8 4 8 Intervalo -128 a +127 -32.768 a +32.767 -2.147.483.648 2.147.483.647 -2^64 a +2^64-1 1,40239846E-45 3.40282347E+38 4,9406564E-324 1.79769313E+308 -

a a a

Diretivas (statements) So as instrues de um programa Java, separadas uma das outras por um; (ponto e vrgula). Podendo ocupar linhas distintas ou uma mesma linha. //Diretivas simples em seqncia diretiva1; diretiva2; diretiva3; Blocos So um conjunto de diretivas simples, agrupadas atravs de pares de chaves {e} (statement block). Os blocos so tratados como uma nica diretiva composta. //diretivas em blocos { diretiva1; diretiva2; diretiva3; } Exerccios 1. Identifique o tipo dos dados:

Linguagem de Programao Java Professora Luclia

(a) int

(b) float ou double


(c) boolean (d) String ( ) true ( ) aula ( ) -0.342 ( ) c*d ( ) 897 ( ) 35.23 ( ) false ( ) 345 ( ) -23 ( ) 1 2 3 4 ( ) -18.589 ( ) Maria

2.

Indique os identificadores (nomes das variveis e no os seus contedos!) como vlidos ou invlidos: (a) identificador vlido (b) identificador invlido ( ) ano ( ) mediaSalario ( ) mdia ( ) ai! ( ) A15B34 ( ) aula ( ) 3/1 ( ) nome-aluno ( ) 5

3.

Faa a declarao de 2 variveis do tipo inteira, 2 do tipo ponto flutuante, 2 de um nico caractere e 2 do tipo cadeia de caracteres. _____________________________________________________________________________________________ _____________________________________________________________________________________________ _____________________________________________________________________________________________ _____________________________________________________________________________________________

4.

Indique qual o resultado das expresses aritmticas abaixo: Sendo: x = 6.0 y=2 z = 4.0 a=8 b = 7.5 d = 12 p=4 r = 10

a) x + y z * a = b) d%y= c) y % d =

d) ((z / a) + b * a) d = g) (a + r) * r = h) p * (r % p) q/2

5.
a)

Dadas as informaes abaixo, informe qual o valor das relaes (V ou F): a == 2.0 ( ) b + 1 >= a*a b == 9.0 nome ==ana profissao ==advogado

Linguagem de Programao Java Professora Luclia

( ) nome != ana ( ) profissao ==mdico b) a == 6.0, b == 121.0, nome == Pedro profissao == mdico

( ) a + 1 > = b/a ( ) nome != Ana ( ) profissao == mdico c) x == 3, y == 4, z == 16, nome == Maria, resultado == true

( ) ( x + y > z ) && (nome == Maria) ( ) (resultado) | | ( y > = x ) ( ) (!resultado) && ( z % y + 1 == x ) ( ) (nome == Maria) | | ( x + y + z < ( y * y ))

6.

Em casa: Faa o download do JDK e instale-o em seu computador para realizar os prximos exerccios.

============================================================================================ Para fazer um programa na linguagem Java, necessitamos de um editor de texto simples, como o bloco de notas para digitar o cdigo fonte: Exemplo 1: Programa para exibir uma mensagem public class MostraMensagem { public static void main(String[ ] args) { System.out.println("Mensagem"); } } Aps digitar o cdigo fonte, temos que salvar o arquivo com o mesmo nome da classe, inclusive iniciando com letra maiscula. O programa acima dever ser salvo com o nome: MostraMensagem.java Aps salvar a classe devemos compilar o programa, usando, por exemplo o Prompt de Comando, entrando no diretrio onde salvamos nossa classe e digitando a seguinte linha de comando: javac nome-do-arquivo.java O compilador ir verificar e informar os erros de sintaxe do programa. Devemos corrigir cada erro e compilar o programa novamente, at que no acuse mais nenhum erro. Aps a compilao um novo arquivo gerado no diretrio onde est salva a classe. Agora temos que executar esse novo arquivo para ver o resultado do programa que fizemos. Para isso devemos digitar a seguinte linha de comando: java nome-do-arquivo. No exemplo acima seria: java MostraMensagem

Linguagem de Programao Java Professora Luclia

Exerccios

1. Agora digite o cdigo abaixo, salve-o com o nome da classe: ExemploString.java. ATENO! Observe o que est
em letra maiscula e minscula! Isso faz muita diferena! // Programa para inserir um texto import javax.swing.JOptionPane; public class ExemploString { public static void main(String[] args) { String s = JOptionPane.showInputDialog("Digite um texto"); JOptionPane.showMessageDialog(null, s); } } 2. Agora tente compilar o exemplo: javac ExemploString.java 3. Se houver erros, corrija-os todos, sempre tentando compreender cada um deles, para no acontecer novamente. 4. Agora s executar o programa: java ExemploString

5. Agora digite o cdigo abaixo e salve-o com o nome soma.java


//Programa para somar 2 nmeros import javax.swing.JOptionPane; public class ExemploSoma { public static void main(String[] args) { String numero1, numero2; float n1, n2, resultado; numero1 = JOptionPane.showInputDialog("Digite o primeiro nmero"); numero2 = JOptionPane.showInputDialog("Digite o segundo nmero."); n1 = Float.parseFloat(numero1); n2 = Float.parseFloat(numero2); resultado = n1 + n2; } } 6. Agora tente compilar a classe 7. Se houver erros, corrija-os todos, sempre tentando compreender cada um deles, para no acontecer novamente. 8. Agora s executar o programa! JOptionPane.showMessageDialog(null, "Resultado: " + resultado);

Linguagem de Programao Java Professora Luclia

Exerccios 1. Faa um programa que receba quatro nmeros inteiros, calcule e mostre a soma desses nmeros. 2. Faa um programa que receba trs notas e seus respectivos pesos. Calcule e mostre a mdia ponderada dessas notas. 3. Faa um programa que receba o valor do salrio de um funcionrio. Calcule e mostre o novo salrio, sabendo-se que este sofreu aumento de 25%. 4. Faa um programa que receba o valor do salrio de um funcionrio e o percentual de aumento, calcule e mostre o valor do aumento e o novo salrio. 5. Faa um programa que receba o valor do salrio-base de um funcionrio, calcule e mostre o salrio a receber, sabendo-se que este funcionrio tem gratificao de 5% sobre o salrio-base e paga imposto de 7% sobre o salriobase. 6. Faa um programa que receba o valor do salrio-base de um funcionrio, calcule e mostre o salrio a receber, sabendo-se que este funcionrio tem gratificao de R$ 1.000,00 e paga imposto de 10% sobre o salrio-base. 1. Lista para Casa 1. Faa um algoritmo que leia dois nmeros, calcule e imprima a soma desses dois nmeros. 2. Faa um programa que receba dois nmeros inteiros, calcule e imprima a diviso do primeiro nmero pelo segundo. 3. Faa um programa que leia um nmero e informe a metade e o dobro desse nmero. 4. Escrever um programa que permita receber o nome e a idade de uma pessoa e em seguida, informar o nome digitado e a idade da pessoa daqui a 30 anos. 5. Faa um programa que leia trs notas de um aluno, calcule e imprima a mdia aritmtica entre essas notas. 6. Faa um programa que receba dois nmeros inteiros, calcule e imprima:

soma dos dois nmeros; subtrao do primeiro pelo segundo; subtrao do segundo pelo primeiro; produto dos dois nmeros; diviso do primeiro pelo segundo; quociente inteiro da diviso do primeiro pelo segundo; resto da diviso do primeiro pelo segundo.

Linguagem de Programao Java Professora Luclia

Desvios Condicionais
Uso da estrutura if-else
Os programas desenvolvidos at aqui seguiram um mesmo padro: entrava-se com dados, estes eram processados e alguma informao era mostrada na tela. Dessa forma, o computador mais parecia uma mquina de calcular. O aprendizado de novos conceitos, como a estrutura de seleo ou desvios condicionais, nos dar uma viso maior da complexidade de tarefas que ele poder executar. O if em conjunto com o else, uma estrutura que permite a seleo entre dois caminhos distintos para execuo, dependendo do resultado da condio (verdadeiro ou falso). Se a condio for verdadeira, sero executadas as instrues que estiverem posicionadas antes do else. Se a condio for falsa, sero executadas as instrues que estiverem aps a instruo else. Podemos constatar que esta estrutura faz parte do nosso cotidiano:

Se eu tiver prova, vou estudar; seno vou ao clube. Se eu tiver aumento, troco de carro; seno espero o 13 salrio. Se minha mdia for maior ou igual a seis, estou aprovado; seno estou reprovado. A nica coisa diferente a forma como iremos escrev-la, vamos adaptar os algoritmos do cotidiano para uma

linguagem especfica (em nosso caso Java) de um modo formal, obedecendo as regras da linguagem. Sintaxe: if (condio) { Instrues pra condio verdadeira } else { Instrues pra condio para condio falsa } Obs.: O uso do else no obrigatrio. Exemplo: Programa que verifica qual dos trs nmeros o maior: a, b ou c: public class Exemplo01if { public static void main(String[ ] args) { int a,b,c; a=9; b=10; c=3; if ((a>b) && (a>c)) System.out.println("a"); else if (b>c) System.out.println("b"); else System.out.println("c"); } }

10

Linguagem de Programao Java Professora Luclia

Exerccios 1. Ler um nmero qualquer e exibir na tela uma mensagem indicando se ele positivo, negativo ou nulo (zero). Se ele for positivo, exibir tambm a raiz quadrada deste nmero. Se ele for negativo voc deve escrever uma mensagem dizendo No possvel calcular a raiz deste nmero. 2. Ler um nmero inteiro e exibir na tela a mensagem Par se ele for um nmero par, ou mpar se ele for um nmero mpar. 3. Faa um programa que receba trs notas de um aluno, calcule e mostre a mdia aritmtica e as mensagens de acordo com a tabela abaixo. Para os alunos de exame, calcule e mostre a nota que dever ser tirada no exame para aprovao, considerando que a mdia no exame de 6,0. MDIA [ 0,0 a ] 3,0 [ 3,0 a ] 7,0 [ 7,0 a 10,0 ] MENSAGEM Reprovado Exame Aprovado

4. Faa um programa que receba trs nmeros e os mostre em ordem crescente. 5. Dados trs valores X, Y e Z, verificar se eles podem ser os lados de um tringulo e, se forem, verificar se um tringulo eqiltero, issceles ou escaleno. Se eles no formarem um tringulo informar ao usurio tal situao. Considerar que: Condio para ser tringulo: O comprimento de cada lado de um tringulo menor que a soma dos outros dois lados. Chama-se tringulo eqiltero o tringulo que tem os trs lados iguais; Chama-se tringulo issceles o que tem o comprimento de dois lados iguais; Chama-se tringulo escaleno o tringulo que tm os trs lados diferentes.

2. Lista para Casa 1. Faa um programa que leia um nmero e informe se o dobro do nmero maior que 35. 2. Faa um programa que leia um nmero e informe se a metade do nmero menor que 12. 3. Faa um programa que leia dois nmeros e informe se o primeiro maior que o segundo. 4. Faa um programa que leia dois nmeros e informe se o primeiro maior, menor ou igual ao segundo. 5. Faa um programa que leia trs nmeros e informe qual dos trs o maior. 6. Fazer um programa que receba um nmero e mostre se ele positivo, negativo ou nulo (0) .

11

Linguagem de Programao Java Professora Luclia

7. Faa um programa que leia a altura e o sexo de uma pessoa, calcule e imprima seu peso ideal, utilizando as seguintes frmulas: Para homens: (72.7 * h) 58 Para mulheres: (62.1 * h) 44.7 (h = altura)

8. Faa um programa que receba quatro notas de um aluno, calcule e imprima a mdia aritmtica das notas e a mensagem de aprovado para mdia superior ou igual a 7.0 ou a mensagem de reprovado para mdia inferior a 7.0. 9. Faa um programa que calcule e imprima o salrio reajustado de um funcionrio de acordo com a seguinte regra: salrios at R$ 300,00, reajuste de 50% salrios maiores que R$ 300,00, reajuste de 30%

10. A prefeitura do Rio de Janeiro abriu uma linha de crdito para os funcionrios municipais. O valor mximo da prestao no poder ultrapassar 30% do salrio bruto. Fazer um algoritmo que permita entrar com o salrio bruto e o valor da prestao e informar se o emprstimo pode ou no ser concedido. Comando switch-case A estrutura switch-case se refere a outra modalidade de desvio condicional, semelhante ao uso da instruo if. Ao trabalhar com uma grande quantidade de desvios condicionais contendo instrues if , a legibilidade do programa pode ser comprometida, deixando-o difcil de ser interpretado. A estrutura switch-case uma forma mais adequada e eficiente para solucionar os mesmos problemas. A estrutura switch-case equivale a um conjunto de instrues if encadeadas, fornecendo maior inteligibilidade. Sintaxe: switch (expresso) { case 1: instrues; break; case 2: instrues; break; case n: instrues; break; default: instrues; } Exemplo: Este programa recebe um nmero de 0 a 9 e informa o seu valor por extenso. Caso o nmero no esteja neste intervalo, mostra a mensagem: Nmero desconhecido. import javax.swing.JOptionPane; public class ExemploSwitchCase { public static void main (String args[ ]) { String num; Int x; num 10); x = Integer.parseInt (num); = JOptionPane.swhowInputDialog (Informe um nmero entre 0 e

12

Linguagem de Programao Java Professora Luclia

switch (x) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: default } } }

System.out.println("zero"); break; System.out.println("um"); break; System.out.println("dois"); break; System.out.println("tres"); break; System.out.println("quatro"); break; System.out.println("cinco"); break; System.out.println("seis"); break; System.out.println("sete"); break; System.out.println("oito"); break; System.out.println("nove"); break; : System.out.println("Numero desconhecido");

Exerccios

1. Faa um programa que receba o cdigo de origem de um produto e informe a sua procedncia. A procedncia
obedece seguinte tabela: Cdigo de origem 1 2 3 4 5 6 7 8 Procedncia Sul Norte Leste Oeste Nordeste Sudeste Centro-oeste Noroeste

3. Escrever um programa que leia um peso na Terra e o nmero de um planeta e imprima o valor do seu peso neste planeta. A relao de planetas dada a seguir juntamente com o valor das gravidade relativas Terra: N 1 2 3 4 5 6 gravidade relativa 0.37 0.88 0.38 2.64 1.15 1.17 Planeta Mercrio Vnus Marte Jpiter Saturno Urano

Para calcular o peso no planeta escolhido use a seguinte frmula: Peso no Planeta = Peso / 10 * gravidade.

13

Linguagem de Programao Java Professora Luclia

Estruturas de Repetio
Vamos supor que nossos programas precisaro ser executados mais de uma vez e, para que no tenhamos que reescrever trechos idnticos que aumentariam consideravelmente o tamanho do programa, utilizaremos as estruturas de repetio. Comando while (enquanto) Esta estrutura recomenda quando o nmero de repeties for desconhecido. Recomendaes para que o programa que utiliza a estrutura while funcione corretamente:

necessrio um teste (uma condio) para interromper a repetio, esta estrutura testa a condio e s executa
o que est dentro dela se for verdadeira. A varivel que testa a condio dever ter seu valor atribudo no incio do programa atravs de um comando de leitura ou de atribuio, antes da estrutura do enquanto e dentro da estrutura, como ltimo comando. O while comea com { e termina com } Pode-se usar outras estruturas dentro do while, como: if, case, etc. while (condio) { Conjunto de instrues; } Instrues sejam executadas pelo menos uma vez. H outro tipo de lao condicional, o comando do-while, que bem parecido com o while, porm o conjunto de instrues executado antes da avaliao da expresso lgica. Isso faz com que essas Sintaxe: do { Conjunto de instrues; } while (condio); Exemplo: Este programa l vrios nmeros e quando o usurio digitar -1 (menos um), o programa mostrar a soma dos nmeros digitados at ento, em seguida ser encerrado. import javax.swing.JOptionPane; public class ExemploWhile;

Sintaxe:

14

Linguagem de Programao Java Professora Luclia

{ public static void main (String [ ] args) { String numero; int num = 0, soma = 0; numero = JOptionPane.showInputDialog qualquer:"); num = Integer.parseInt(numero);

("Informe

um

nmero

while (numero != -1) { soma = soma + num; numero = JOptionPane.showInputDialog ("Informe um nmero qualquer ou digite -1 para encerrar:"); num = Integer.parseInt(numero); } JOptionPane.showMessageDialog(null,"A soma dos nmeros digitados = " + soma); } }

Exerccios 1. Faa um programa que receba vrios nmeros positivos ou negativos, terminada por zero. O programa deve fornecer como sada, a soma dos nmeros positivos e a soma dos nmeros negativos. 2. Faa um programa que leia os dados de vrios alunos, contendo o nmero da matrcula, as trs notas e a freqncia. Calcule e mostre: para cada aluno o nmero de matricula, a nota final e a mensagem (aprovado ou reprovado); a maior e a menor nota da turma; o total de alunos reprovados; 3. Faa um programa que receba a idade, a altura e o peso de vrias pessoas. Calcule e mostre: A quantidade de pessoas com idade superior a 50 anos; A mdia das alturas das pessoas com idade entre 10 e 20 anos; A percentagem de pessoas com peso inferior a 40 quilos entre todas as pessoas analisadas.

4. Uma empresa deseja aumentar seus preos em 20%. Faa um programa que leia o cdigo, o preo de custo de
vrios produtos e que calcule o novo preo de cada um deles. Calcule tambm a mdia de preos com e sem aumento. Mostre o cdigo e o novo preo de cada produto e, no final, as mdias. A entrada de dados deve terminar quando for recebido um cdigo de produto menor ou igual a zero. 5. Faa um programa que apresente um menu de opes para clculo das seguintes operaes entre dois nmeros: adio, subtrao, multiplicao e diviso. O programa deve permitir a escolha da operao desejada, a entrada dos nmeros, a exibio do resultado e a volta ao menu de opes. O programa s termina quando for escolhida a opo de sada.

15

Linguagem de Programao Java Professora Luclia

3. Lista para Casa 1. Entrar com vrios nmeros e imprimir quantos nmeros foram digitados. 2. O IBGE fez uma pesquisa, ele quer saber quantos dentistas foram entrevistados. Fazer um programa que pergunte aos entrevistados qual a sua profisso e ao final diga quantas pessoas foram entrevistadas e quantas so dentistas (considerar dentista, Dentista e DENTISTA). 3. Uma fbrica produz e vende vrios produtos e para cada um deles tem-se o nome, quantidade produzida e quantidade vendida. Criar um algoritmo que mostre:

Para cada produto, o nome, a quantidade no estoque e uma mensagem se o produto tiver menos de 50 itens no estoque, informando que o produto precisa de reposio.

4. Faa um programa que leia a idade e a altura de vrias pessoas. Calcule e informe a mdia das alturas das pessoas com mais de 50 anos. Para encerrar o programa digite zero para idade. 5. Faa um programa que leia vrios nmeros, quando o zero for digitado o programa ser finalizado. Mostre no final desse programa a soma dos nmeros positivos, a soma dos negativos e a soma total dos positivos e negativos juntos. 6. O GDF realizou uma pesquisa entre vrios habitantes do DF, coletando dados sobre o rendimento familiar e o nmero de filhos de cada famlia. O GDF quer saber: A mdia dos rendimentos da populao; Mdia do nmero de filhos.

7. Uma empresa classifica seus funcionrios em trs nveis de acordo com um ndice de produtividade. So eles (1) Excelente, (2) Bom e (3) Regular. Cada nvel acrescenta um abono ao salrio base do funcionrio, de acordo com a seguinte tabela: Excelente Bom Regular 80% do salrio base; 50% do salrio base; 30% do salrio base.

O programa deve ler a matrcula do funcionrio, seu salrio base e seu nvel de abono. Calcular e imprimir o salrio a ser pago (salrio a ser pago = salrio base + abono). O programa ser encerrado quando for digitado 0 para matrcula. Comando for uma estrutura de repetio determinada, ou seja, o valor inicial da estrutura conhecido e o valor final tambm. (Ao se iniciar a estrutura j se sabe quantas vezes o bloco de comandos ser executado).

16

Linguagem de Programao Java Professora Luclia

O seu funcionamento realizado por uma varivel de controle do tipo contador, podendo ser crescente ou decrescente. Sintaxe: for (int x = 1; x < 10; x++) { <conjunto de instrues> } Outros exemplos: for (double i = 1; i <=10; i = i+0.5) for (int i = 10; i >= 0; i = i -2); for (int i = a; i <= b; i++) Exemplo: Programa que mostra os nmeros de 1 at 100. Public class ExemploFor { Public static void main (String [ ] a) { for (int i = 1; I <= 100; i++) { System.out.print (i + ); } System.out.println(FIM!); } } Exerccios 1. Faa um programa que receba a idade de 10 pessoas. O programa deve calcular e mostrar a quantidade de pessoas com idade maior que 18 anos. 2. Faa um programa que mostre a tabuada de multiplicao (de 1 a 10) para os 6 primeiros nmeros primos. Ao mudar de uma base para outra o programa deve mostrar uma mensagem ao usurio e aguardar que alguma tecla seja pressionada para ento montar a tabuada para a prxima base. 3. Faa um programa que receba a idade de 15 pessoas, calcule e mostre a quantidade de pessoas em cada faixa etria. Faixa etria 1 2 3 4 5 Idade At 15 anos De 16 a 30 anos De 31 a 45 anos De 46 a 60 anos Acima de 61 anos

4. Faa um programa que leia uma srie de nmeros positivos inteiros. Calcule e mostre o maior nmero digitado. A entrada de dados deve terminar quando um nmero negativo foi digitado. 5. Faa um programa que receba um nmero, calcule e mostre o fatorial desse nmero. Sabe-se que: n! = 1*2*3*...*(n-1)*n;

0! = 1, por definio.

17

Linguagem de Programao Java Professora Luclia

4. Lista para Casa 6. Mostrar todos os nmeros de 100 at 1. 7. Criar um programa que entre com cinco nmeros e imprima o quadrado de cada nmero. 8. Criar um programa que imprima todos os nmeros de 1 at 100 e a soma deles. 9. Escreva um programa que receba a idade de 10 pessoas, calcule e imprima a quantidade de pessoas maiores de idade (idade >= 18 anos).

10. Em uma eleio presidencial, existem trs candidatos e 10 eleitores. Os votos so informados atravs de cdigo. Os
cdigos utilizados so:

1, 2, 3 0 outros cdigos total de votos para cada candidato; total de votos nulos; total de votos em branco.

votos para os respectivos candidatos; votos em branco votos nulos

Escreva um programa que calcule e imprima:

11. Criar um programa que deixe escolher qual a tabuada de multiplicar que se deseja mostrar.

18

Linguagem de Programao Java Professora Luclia

Orientao a Objetos
Tpicos principais da Orientao a Objetos:

Classe: um grupo de objetos. Exemplos: Pessoa, Veiculo, Cliente. Objeto: um exemplo de um determinado grupo. Exemplo: pessoa1 Atributos: so caractersticas do objeto Exemplos: pessoa1.nome: = Jos pessoa1.idade = 21 pessoa1.endereco = QSA 10 Mtodos: so as operaes realizadas dentro das classes. Para o nome do mtodo, padro comear com letra minscula. Exemplos: matricularAluno(); incluirPessoa(); Mtodo Construtor: um mtodo especial que inicializa os atributos de uma classe Toda classe tem um mtodo construtor. A que menos precisa dele, a classe que contm o mtodo main, porque no tem muita afinidade com os conceitos de Orientao a Objetos. O mtodo construtor tem o mesmo nome da classe, inclusive inicializando com letra maiscula e no retorna nada, inclusive, no utiliza nem o void para expressar isto. Herana: significa ser capaz incorporar os dados e mtodos de uma classe previamente definida, de uma classe me. A classe filha conhecida como sub-classe. Assim como a herana na vida real, a classe filha herda todos os atributos e mtodos declarados na classe me (ou super classe ou classe progenitora). Abstrao: a capacidade de abstrair do mundo real somente o que relevante dentro de um determinado contexto. Por exemplo: ao desenvolver um sistema para uma universidade, no nos interessa o atributo tamanho do p. Porm ao desenvolver um sistema para um rgo como o Renda Minha, que distribui uniforme e sapatos, necessrio o atributo tamanho do p. Polimorfismo: muitas formas. Ocorre quando uma classe filha possui um mtodo com o mesmo nome e assinatura (nmero, tipo e ordem de parmetros) de um mtodo na sua superclasse. O polimorfismo ocorre quando precisamos reimplementar o mesmo mtodo, para a mesma finalidade, mas de forma diferente. Sobrecarga: semelhante ao polimorfismo, diferenciando-se pelo fato de possuir outros parmetros e no os mesmos como ocorre no polimorfismo. Encapsulamento (visibilidade): Mecanismo utilizado visando obter segurana, modularidade e autonomia para objetos. Conseguido atravs da definio de visibilidade privada dos atributos, ganhando-se assim autonomia para definir o que o mundo externo ao objeto poder visualizar e acessar, normalmente atravs de mtodos pblicos. Existem 3 nveis de encapsulamento: private (privado), protect (protegido) e public (pblico). Os atributos declarados fora do mtodo so variveis de objeto ou variveis de instncia ou propriedades ou atributos (para quem conhece programao estruturada similar variveis globais)

19

Linguagem de Programao Java Professora Luclia

Essas variveis de instncias so inicializadas automaticamente com valores default: Numricas = 0; String = null; boolean = false; char guarda o valor do caracter na tabela ASCII ou Unicode. As variveis locais (declaradas dentro dos mtodos) no so inicializadas automaticamente. Implementar uma classe com os atributos pblicos: Classe Pessoa package oo; public class Pessoa { public String nome; public int escolaridade; public int idade; public Pessoa() { } } ================================================== public Classe Main package oo; public class Main { public static void main(String[ ] args) { Pessoa p1 = new Pessoa(); p1.escolaridade = 1; p1.idade = 25; p1.nome = "Ana Luiza"; System.out.println(p1.escolaridade); System.out.println(p1.idade); System.out.println(p1.nome); } } Pessoa p1 = new Pessoa( ); Pessoa => se refere Classe, como se utilizssemos uma declarao de String nos programas j conhecidos. p1 => a referncia ao objeto new => o operador de instncia, sempre ser utilizado ao instanciar um novo objeto. Pessoa( ) => se refere ao Mtodo Construtor.

Modificar todos os atributos da classe Pessoa para private: package oo; public class Pessoa { private String nome; private int escolaridade; private int idade; public Pessoa( ) { } }

20

Linguagem de Programao Java Professora Luclia

O que acontece? R Todas as tentativas de acesso aos atributos da Classe Pessoa apresentaro erros na classe main, porque os atributos so privados. possvel acess-los somente dentro da prpria classe Pessoa. Como fazer para solucionar esse problema? R criar os mtodos get() e set() pblicos, para cada atributo que desejar tornar pblico. Obs. O mtodo set( ) o mtodo modificador, seu objetivo alterar o valor O mtodo get( ) o mtodo acessor, pega o valor do atributo. public class Pessoa { private String nome; private int escolaridade; private int idade; public Pessoa() { } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public int getEscolaridade() { return escolaridade; } public void setEscolaridade(int escolaridade) { this.escolaridade = escolaridade; } public int getIdade() { return idade; } public void setIdade(int idade) { this.idade = idade; } } public void main setIdade (int idade) this.idade = idade; this => faz referncia genrica ao objeto em questo .idade => se refere ao atributo declarado no incio da classe, fora dos mtodos Idade => se refere ao parmetro local. Classe Main public class Main { public static void main(String[ ] args) { Pessoa p1 = new Pessoa( ); p1.setEscolaridade (1); p1.setIdade(25); p1.setNome("Ana Luiza");

21

Linguagem de Programao Java Professora Luclia

System.out.println(p1.getEscolaridade( )); System.out.println(p1.getIdade( )); System.out.println(p1.getNome( )); } } Os mtodos get( ) e set( ) tem somente a funcionalidade de permitir acesso e modificao? R - No. Por exemplo, pode ser usado para fazer uma validao como no exemplo a seguir: A idade ser modificada somente se for maior que 0. public void setIdade(int idade) { if (idade >= 0) this.idade = idade; O mtodo construtor pode ser declarado de vrias formas: Exemplos: Na classe Pessoa: public Pessoa(int escolaridade) { setEscolaridade(escolaridade); setIdade(0); setNome(" "); } A classe Main: Pessoa p2 = new Pessoa(1); p2.setIdade(27); p2.setNome("Luclia "); System.out.println (p2.getNome( ));

Para no termos que repetir vrias vezes os comandos de impresso, podemos criar um mtodo que faa este trabalho na classe Pessoa e repetir somente a chamada ao mtodo: Na Classe Pessoa: public void exibe(){ System.out.println(getNome()); System.out.println(getEscolaridade()); System.out.println(getIdade()); } Na Classe Main: p1.exibe( ); p2.exibe( ); Mtodo com parmetros: Classe Pessoa public Pessoa(int identidade) { setIdentidade(identidade); setIdade(0); setNome(" ");

22

Linguagem de Programao Java Professora Luclia

System.out.println("O construtor identidade de Pessoa foi executado"); Classe Main Pessoa p2 = new Pessoa(444); p2.setConta(2); p2.setIdade(60); p2.setNome("Jos ");

sobrecarregado que recebe

Classe abstrata: uma classe que no pode ser instanciada, ela tem o objetivo de fornecer os dados comuns s suas sub-classes e nada mais. Como tornar uma classe abstrata? R = public abstract class Pessoa { Compilar a classe Pessoa Tentar compilar a classe Main

Criar Classe aluno: public class Aluno extends Pessoa{ private int matr; public Aluno() { setMatr(0); } public int getMatr() { return matr; } public void setMatr(int matr) { this.matr = matr; } }

Verificar o mtodo construtor padro na classe Aluno Para resolver o erro, inserir o comando na primeira linha do mtodo construtor de aluno: Super(1);

Ex: public Aluno() { super(1); setMatr(0); } Um construtor em aluno, utilizando um construtor da classe Pessoa: public Aluno(int identidade, int matr){ super(identidade);

23

Linguagem de Programao Java Professora Luclia

setMatr(matr); } Outro mtodo na classe aluno: public Aluno (int identidade, int idade, String nome, int matr){ super (identidade, idade,nome); setMatr(matr); } Na classe main: Aluno a5 = new Aluno(); a5.setConta(1); a5.setIdade(-27); a5.setIdentidade(111); a5.setNome(x); a5.setMatr(1); Aluno a6 = new Aluno(444, 2); a6.setConta(2); a6.setIdade(60); //p2.setIdentidade(222); a6.setNome(" Jos "); Os mtodos exibe da classe Pessoa no tem matrcula, para solucionar este problema: public void exibe( ){ super.exibe( ); System.out.println(getMatr( )); }

Exerccios 1. Crie um novo diretrio (pasta) com o nome: orientacaoo. Todas as (trs) classes criadas abaixo devero ser salvas neste diretrio. 2. Crie uma classe Veculo com dois atributos privados. public class Veiculo { private String cor; private int ano; public Veiculo() { } } 3. Crie uma classe Carro com dois atributos a sua escolha. A classe Carro dever herdar tudo da classe Veculo. public class Carro extends Veiculo{ private int quantidadePortas; private double valorIPVA; }

24

Linguagem de Programao Java Professora Luclia

4. Crie os mtodos de acesso - get() e de modificao - set() para todos os atributos definidos em ambas as
classes. OBS.: A parte em negrito j estava pronta, acrescente somente a parte que no est em negrito. A classe Veiculo ficar assim: public class Veiculo { private String cor; private int ano; public Veiculo() { } public String getCor(){ return cor; } public void setCor(String cor){ this.cor = cor; } public int getAno(){ return ano; } public void setAno(int ano){ this.ano = ano; } }

A classe Carro ficar assim: public class Carro extends Veiculo{ private int quantidadePortas; private double valorIPVA; public int getQuantidadePortas(){ return quantidadePortas; } public void setQuantidadePortas(int quantidadePortas){ this.quantidadePortas = quantidadePortas; } public double getValorIPVA(){ return valorIPVA; } public void setValorIPVA(double valorIPVA){ this.valorIPVA = valorIPVA; } } 5. Crie uma classe Principal com o mtodo main, crie nela um objeto da classe Veiculo e instancie os dois atributos que voc declarou na classe Veculo. Crie tambm um objeto da classe Carro, utilizando os dois atributos declarados na prpria classe e os dois herdados da classe Veculo. public class Principal { public static void main (String [] args){ Veiculo veiculo1 = new Veiculo(); veiculo1.setCor("prata"); veiculo1.setAno(2007);

25

Linguagem de Programao Java Professora Luclia

Carro veiculo2 = new Carro(); veiculo2.setCor("branco"); veiculo2.setAno(2006); veiculo2.setQuantidadePortas(5); veiculo2.setValorIPVA(900); } } 6. O mtodo main deve exibir as informaes dos dois objetos criados. OBS.: Acrescentar o cdigo abaixo antes das duas chaves de fechamento do mtodo main e da classe Principal. System.out.println("Veiculo 1 \nCor: "+veiculo1.getCor()+"\nAno: "+veiculo1.getAno()); System.out.println("-------------------------------"); System.out.println("Veiculo 2 \nCor: " + veiculo2.getCor() + "\nAno: " + veiculo2.getAno() + "\nQuantidade de portas = " + veiculo2.getQuantidadePortas() + "\nValor do IPVA R$ = " + veiculo2.getValorIPVA()); System.out.println("-------------------------------"); } }

26

Você também pode gostar