ApostilaRevisada22008[1]

Post on 24-Jul-2015

59 views 0 download

Transcript of ApostilaRevisada22008[1]

Linguagem de Programação Java

Professora: Lucélia Oliveira

2º. Semestre de 2008

Linguagem de Programação JavaProfessora Lucélia

Como Surgiu a Linguagem Java

A Sun criou um time (conhecido como Green Team) para desenvolver inovações tecnológicas em 1992. Esse time foi liderado por James Gosling, considerado o pai do Java. O time voltou com a idéia de criar um interpretador para pequenos dispositivos, facilitando a reescrita de software para aparelhos eletrônicos, como vídeo cassete, televisão e aparelhos de tv a cabo.

Máquina Virtual

Em uma linguagem de programação como C e Pascal, o código fonte é compilado para uma plataforma e sistema operacional específico. Muitas vezes, o próprio código fonte é desenvolvido visando uma única plataforma!

Já a Linguagem Java utiliza-se do conceito de máquina virtual, onde existe uma camada extra entre o sistema operacional e a aplicação, responsável por “traduzir” o que sua aplicação 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 independência de sistema operacional.

Tipos de Programas Java

Existem quatro maneiras de se criar programas java. Em duas delas, o programa é executado na máquina do usuário e nas outras duas, no servidor.

• Aplicativos: programas Java semelhantes aos criados em ferramentas de desenvolvimento tradicionais. Para que o programa seja executado, é necessário que a máquina virtual seja instalada e configurada na máquina do usuário.

• Applets: desde o início, a Sun projetou o Java para se encaixar como uma luva na Internet. As applets são programas Java que são executados dentro de browsers. Nesse caso, o browser deve possuir a Máquina Virtual Java (JVM).

• Servlets: são programas Java que são executados em máquinas servidoras e normalmente fazem parte de uma arquitetura de desenvolvimento em multicamadas. Para isso, é necessária a instalação de um programa gerenciador chamado Servidor de Aplicações, responsável pelo controle das requisições oriundas dos clientes. Obviamente, o servidor de aplicações deve ser compatível com a tecnologia Java, pois deve conter a JVM.

• JSP: é semelhante à Servlets, mas possui recursos mais amigáveis para escrita de código em HTML.

Instalando o Kit do Desenvolvedor Java (JDK)

O JDK é o conjunto de software da Sun que contém tudo que necessitamos para criar programas Java. Ele vem com um compilador Java (javac), uma máquina virtual (java), um programa que permite rodar applets fora de browsers (appletviewer), um depurador, códigos fonte de exemplo e etc.

Faça o download do JDK no endereço: http://java.sun.com/javase/downloads/index.jsp e depois instale - o normalmente.

Provavelmente, após a instalação, o JDK ainda não irá funcionar automaticamente. Se não funcionar, você terá que configurar a variável de ambiente. Para isso siga os passos abaixo: (caso esteja utilizando o Windows XP)

• Clique com o botão direito sobre Meu Computador• Propriedades• Clique no guia "Avançado"• Clique no botão "Variáveis de ambiente"• Em variáveis do sistema, clique em "Path"• Clique em editar

2

Linguagem de Programação JavaProfessora Lucélia

• Coloque um ; (ponto e vírgula) ao final do valor da variável 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 código (javac NomeDaClasse.java)Corrija os erros que encontrar e quando compilar com sucesso, ou seja, não tiver mais nenhum erro, execute e veja

o resultado! (comando para executar: java NomeDaClasse)

Uso de maiúsculas e minúsculas

Java é uma linguagem sensível ao caixa, isto é, distingue maiúsculas de minúsculas: nome é diferente de Nome, por exemplo.

Comentários

São os textos usados para anotar explicações no próprio programa e desconsiderados pelo compilador.Símbolo Descrição// Comentário de uma linha/* */ Comentário de bloco (pode ter muitas linhas)/** */ Comentário de documentação

Exemplos://Comentário de uma linha /*Comentário de bloco que pode conterMais de uma linha normalmente*//**Comentário de documentaçãoClasse que define ponto no espaço 3D*/public class Ponto3D{...}

Os comentários de documentação, colocados antes da declaração dos elementos do programa, podem ser extraídos pela ferramenta javadoc e produzir páginas de documentação em HTML.

Operadores

Operadores AritméticosOperador Descrição+ Adição- Subtração* Multiplicação/ Divisão% Resto da divisão

Operadores Incremento e decrementoOperador Descrição++ Incremento unitário (adiciona uma unidade)-- Decremento unitário (subtrai uma unidade)

Se usado como prefixo (antes da variável), a operação é realizada antes do uso do valor da variável.Exemplo:int a = 1, b;b = ++a; // b recebe 2, a passa a valer 2

Se usado como sufixo (depois da variável), a operação é realizada depois do uso do valor da variável.

3

Linguagem de Programação JavaProfessora Lucélia

Exemplo:int a = 1, b;b = a++; // b recebe 1, a passa a valer 2

Operadores RelacionaisOperador Descrição== Igual!= Diferente> Maior que>= Maior ou igual a< Menor que<= Menor ou igual a

OBS.: O operador de igualdade “==” não deve ser confundido com o operador de atribuição “=”.Não podem ser usados para comparar strings (literal)

Operadores LógicosOperador Descrição&& E lógico (and)|| Ou lógico (or)! Negação (not)

Operador Ternário

É um valor simples que permite usar o valor de duas expressões diferentes conforme o resultado da condição. Sua sintaxe é:<cond> ? <expressão_se_verdadeiro> : <expressão_se_falso>Se a expressão cond é verdadeira, éretornado o resultado de expressão_se_verdadeiro, senão é retornado o resultado de expressão_se_falso.

Operadores de atribuição compostosExpressões assim:Variável = variável operador expressãoa = a + 1;Podem ser escritas assim:Variável operador = expressãoa +=1;

Operador Descrição+= Soma e atribui-= Subtrai e atribui*= Multiplica e atribui/= Divide e atribui%= Calcula o resto e atribui

Precedência dos operadores:

São as regras que determinam a ordem com que os diferentes operadores serão processados nas expressões:

Nível Operadores1 ( )2 ++ --3 * / %4 + -

4

Linguagem de Programação JavaProfessora Lucélia

5 == !=6 &&7 ||8 ?:9 = += - + *= /= %=Parênteses são usados para alterar a ordem natural das expressões.

Variáveis

A declaração de variáveis 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 variável e também as operações sobre seus valores. A linguagem Java possui oito tipos primitivos de dados:

Tipo Descrição Tamanho IntervaloByte Inteiros positivos e negativos 1 -128 a +127short Inteiros positivos e negativos 2 -32.768 a +32.767Int Inteiros positivos e negativos 4 -2.147.483.648 a

2.147.483.647Long Inteiros positivos e negativos 8 -2^64 a +2^64-1Float Valores em ponto flutuante 4 1,40239846E-45 a

3.40282347E+38double Valores em ponto flutuante 8 4,9406564E-324 a

1.79769313E+308Char Caracteres individuais - -boolean Tipo lógico, só assume false ou true - -

Diretivas (statements)

São as instruções de um programa Java, separadas uma das outras por um; (ponto e vírgula). Podendo ocupar linhas distintas ou uma mesma linha.//Diretivas simples em seqüência diretiva1;diretiva2; diretiva3; BlocosSão um conjunto de diretivas simples, agrupadas através de pares de chaves {e} (statement block). Os blocos são tratados como uma única diretiva composta.//diretivas em blocos{

diretiva1;diretiva2;diretiva3;

}

Exercícios

1. Identifique o tipo dos dados:

5

Linguagem de Programação JavaProfessora Lucélia

(a) int

(b) float ou double

(c) boolean(d) String

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

2. Indique os identificadores (nomes das variáveis e não os seus conteúdos!) como válidos ou inválidos:

(a) identificador válido(b) identificador inválido

( ) ano ( ) ai! ( ) 3/1( ) mediaSalario ( ) A15B34 ( ) nome-aluno( ) média ( ) ‘aula’ ( ) 5ª

3. Faça a declaração de 2 variáveis 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 expressões aritméticas 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 = d) ((z / a) + b * a) – d =b) d % y = g) (a + r) * r =c) y % d = h) p * (r % p) –q/2

5. Dadas as informações abaixo, informe qual o valor das relações (V ou F):

a) a == 2.0 b == 9.0 nome ==”ana” profissao ==”advogado”( ) b + 1 >= a*a

6

Linguagem de Programação JavaProfessora Lucélia

( ) nome != “ana”( ) profissao ==”médico”

b) a == 6.0, b == 121.0, nome == “Pedro” profissao == “médico”( ) a + 1 > = b/a( ) nome != “Ana”( ) profissao == “médico”

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:

Faça o download do JDK e instale-o em seu computador para realizar os próximos exercícios.============================================================================================

Para fazer um programa na linguagem Java, necessitamos de um editor de texto simples, como o bloco de notas para digitar o código fonte:Exemplo 1: Programa para exibir uma mensagem

public class MostraMensagem {public static void main(String[ ] args) {System.out.println("Mensagem");

}

}

• Após digitar o código fonte, temos que salvar o arquivo com o mesmo nome da classe, inclusive iniciando com letra maiúscula. O programa acima deverá ser salvo com o nome: MostraMensagem.java

• Após salvar a classe devemos compilar o programa, usando, por exemplo o Prompt de Comando, entrando no diretório 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 não acuse mais nenhum erro.

• Após a compilação um novo arquivo é gerado no diretório 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

7

Linguagem de Programação JavaProfessora Lucélia

Exercícios

1. Agora digite o código abaixo, salve-o com o nome da classe: ExemploString.java. ATENÇÃO! Observe o que está em letra maiúscula e minúscula! Isso faz muita diferença!

// 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 não acontecer novamente.

4. Agora é só executar o programa: java ExemploString

5. Agora digite o código abaixo e salve-o com o nome soma.java

//Programa para somar 2 números

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 número");

numero2 = JOptionPane.showInputDialog("Digite o segundo número.");

n1 = Float.parseFloat(numero1); n2 = Float.parseFloat(numero2);

resultado = n1 + n2;

JOptionPane.showMessageDialog(null, "Resultado: " + resultado);}

}

6. Agora tente compilar a classe

7. Se houver erros, corrija-os todos, sempre tentando compreender cada um deles, para não acontecer novamente.

8. Agora é só executar o programa!

8

Linguagem de Programação JavaProfessora Lucélia

Exercícios

1. Faça um programa que receba quatro números inteiros, calcule e mostre a soma desses números.

2. Faça um programa que receba três notas e seus respectivos pesos. Calcule e mostre a média ponderada dessas notas.

3. Faça um programa que receba o valor do salário de um funcionário. Calcule e mostre o novo salário, sabendo-se que este sofreu aumento de 25%.

4. Faça um programa que receba o valor do salário de um funcionário e o percentual de aumento, calcule e mostre o valor do aumento e o novo salário.

5. Faça um programa que receba o valor do salário-base de um funcionário, calcule e mostre o salário a receber, sabendo-se que este funcionário tem gratificação de 5% sobre o salário-base e paga imposto de 7% sobre o salário-base.

6. Faça um programa que receba o valor do salário-base de um funcionário, calcule e mostre o salário a receber, sabendo-se que este funcionário tem gratificação de R$ 1.000,00 e paga imposto de 10% sobre o salário-base.

1ª. Lista para Casa

1. Faça um algoritmo que leia dois números, calcule e imprima a soma desses dois números.2. Faça um programa que receba dois números inteiros, calcule e imprima a divisão do primeiro número pelo segundo.3. Faça um programa que leia um número e informe a metade e o dobro desse número.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. Faça um programa que leia três notas de um aluno, calcule e imprima a média aritmética entre essas notas.

6. Faça um programa que receba dois números inteiros, calcule e imprima:

• soma dos dois números;

• subtração do primeiro pelo segundo;

• subtração do segundo pelo primeiro;

• produto dos dois números;

• divisão do primeiro pelo segundo;

• quociente inteiro da divisão do primeiro pelo segundo;

• resto da divisão do primeiro pelo segundo.

9

Linguagem de Programação JavaProfessora LucéliaDesvios Condicionais

Uso da estrutura if-else

Os programas desenvolvidos até aqui seguiram um mesmo padrão: entrava-se com dados, estes eram processados e alguma informação era mostrada na tela.

Dessa forma, o computador mais parecia uma máquina de calcular. O aprendizado de novos conceitos, como a estrutura de seleção ou desvios condicionais, nos dará uma visão maior da complexidade de tarefas que ele poderá executar.

O if em conjunto com o else, é uma estrutura que permite a seleção entre dois caminhos distintos para execução, dependendo do resultado da condição (verdadeiro ou falso). Se a condição for verdadeira, serão executadas as instruções que estiverem posicionadas antes do else. Se a condição for falsa, serão executadas as instruções que estiverem após a instrução else.Podemos constatar que esta estrutura faz parte do nosso cotidiano:

• Se eu tiver prova, vou estudar; senão vou ao clube.

• Se eu tiver aumento, troco de carro; senão espero o 13° salário.

• Se minha média for maior ou igual a seis, estou aprovado; senão estou reprovado.

A única coisa diferente é a forma como iremos escrevê-la, vamos adaptar os algoritmos do cotidiano para uma linguagem específica (em nosso caso Java) de um modo formal, obedecendo as regras da linguagem.

Sintaxe:if (condição)

{

Instruções pra condição verdadeira

}

else

{

Instruções pra condição para condição falsa

}

Obs.: O uso do else não é obrigatório. Exemplo: Programa que verifica qual dos três números é 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 Programação JavaProfessora Lucélia

Exercícios

1. Ler um número qualquer e exibir na tela uma mensagem indicando se ele é positivo, negativo ou nulo (zero). Se ele for positivo, exibir também a raiz quadrada deste número. Se ele for negativo você deve escrever uma mensagem dizendo ‘Não é possível calcular a raiz deste número’.

2. Ler um número inteiro e exibir na tela a mensagem ‘Par’ se ele for um número par, ou ‘Ímpar’ se ele for um número ímpar.

3. Faça um programa que receba três notas de um aluno, calcule e mostre a média aritmética 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 aprovação, considerando que a média no exame é de 6,0.

MÉDIA MENSAGEM[ 0,0 a ] 3,0 Reprovado[ 3,0 a ] 7,0 Exame[ 7,0 a 10,0 ] Aprovado

4. Faça um programa que receba três números e os mostre em ordem crescente.

5. Dados três valores X, Y e Z, verificar se eles podem ser os lados de um triângulo e, se forem, verificar se é um triângulo eqüilátero, isósceles ou escaleno. Se eles não formarem um triângulo informar ao usuário tal situação. Considerar que:

Condição para ser triângulo: O comprimento de cada lado de um triângulo é menor que a soma dos outros dois lados.

Chama-se triângulo eqüilátero o triângulo que tem os três lados iguais;Chama-se triângulo isósceles o que tem o comprimento de dois lados iguais;Chama-se triângulo escaleno o triângulo que têm os três lados diferentes.

2ª. Lista para Casa

1. Faça um programa que leia um número e informe se o dobro do número é maior que 35.

2. Faça um programa que leia um número e informe se a metade do número é menor que 12.

3. Faça um programa que leia dois números e informe se o primeiro é maior que o segundo.

4. Faça um programa que leia dois números e informe se o primeiro é maior, menor ou igual ao segundo.

5. Faça um programa que leia três números e informe qual dos três é o maior.

6. Fazer um programa que receba um número e mostre se ele é positivo, negativo ou nulo (0) .

11

Linguagem de Programação JavaProfessora Lucélia

7. Faça um programa que leia a altura e o sexo de uma pessoa, calcule e imprima seu peso ideal, utilizando as seguintes fórmulas:

Para homens: (72.7 * h) – 58Para mulheres: (62.1 * h) – 44.7 (h = altura)

8. Faça um programa que receba quatro notas de um aluno, calcule e imprima a média aritmética das notas e a mensagem de aprovado para média superior ou igual a 7.0 ou a mensagem de reprovado para média inferior a 7.0.

9. Faça um programa que calcule e imprima o salário reajustado de um funcionário de acordo com a seguinte regra:

• salários até R$ 300,00, reajuste de 50%

• salários maiores que R$ 300,00, reajuste de 30%

10. A prefeitura do Rio de Janeiro abriu uma linha de crédito para os funcionários municipais. O valor máximo da prestação não poderá ultrapassar 30% do salário bruto. Fazer um algoritmo que permita entrar com o salário bruto e o valor da prestação e informar se o empréstimo pode ou não ser concedido.

Comando switch-case

A estrutura switch-case se refere a outra modalidade de desvio condicional, semelhante ao uso da instrução if. Ao trabalhar com uma grande quantidade de desvios condicionais contendo instruções if , a legibilidade do programa pode ser comprometida, deixando-o difícil 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 instruções if encadeadas, fornecendo maior inteligibilidade.

Sintaxe:switch (expressão){

case 1: instruções; break;case 2: instruções; break;case n: instruções; break;

default: instruções;}

Exemplo: Este programa recebe um número de 0 a 9 e informa o seu valor por extenso. Caso o número não esteja neste intervalo, mostra a mensagem: “Número desconhecido”.

import javax.swing.JOptionPane;public class ExemploSwitchCase { public static void main (String args[ ]) {

String num;Int x;

num = JOptionPane.swhowInputDialog (“Informe um número entre 0 e 10”);

x = Integer.parseInt (num);

12

Linguagem de Programação JavaProfessora Lucélia

switch (x) {

case 0: System.out.println("zero"); break; case 1: System.out.println("um"); break; case 2: System.out.println("dois"); break; case 3: System.out.println("tres"); break; case 4: System.out.println("quatro"); break; case 5: System.out.println("cinco"); break; case 6: System.out.println("seis"); break; case 7: System.out.println("sete"); break; case 8: System.out.println("oito"); break; case 9: System.out.println("nove"); break; default : System.out.println("Numero desconhecido");

} } }

Exercícios

1. Faça um programa que receba o código de origem de um produto e informe a sua procedência. A procedência

obedece à seguinte tabela:Código de origem Procedência1 Sul2 Norte3 Leste4 Oeste5 Nordeste6 Sudeste7 Centro-oeste8 Noroeste

3. Escrever um programa que leia um peso na Terra e o número de um planeta e imprima o valor do seu peso neste planeta. A relação de planetas é dada a seguir juntamente com o valor das gravidade relativas à Terra:

N° gravidade relativa Planeta1 0.37 Mercúrio2 0.88 Vênus3 0.38 Marte4 2.64 Júpiter5 1.15 Saturno6 1.17 UranoPara calcular o peso no planeta escolhido use a seguinte fórmula:Peso no Planeta = Peso / 10 * gravidade.

13

Linguagem de Programação JavaProfessora Lucélia

Estruturas de Repetição

Vamos supor que nossos programas precisarão ser executados mais de uma vez e, para que não tenhamos que reescrever trechos idênticos que aumentariam consideravelmente o tamanho do programa, utilizaremos as estruturas de repetição.

Comando while (enquanto)

Esta estrutura é recomenda quando o número de repetições for desconhecido. Recomendações para que o programa que utiliza a estrutura while funcione corretamente:

• É necessário um teste (uma condição) para interromper a repetição, esta estrutura testa a condição e só executa

o que está dentro dela se for verdadeira.

• A variável que testa a condição deverá ter seu valor atribuído no início do programa através de um comando de leitura ou de atribuição, antes da estrutura do enquanto e dentro da estrutura, como último comando.

• O while começa com { e termina com }

• Pode-se usar outras estruturas dentro do while, como: if, case, etc.

Sintaxe:while (condição)

{

Conjunto de instruções;

}

Instruções sejam executadas pelo menos uma vez.Há outro tipo de laço condicional, o comando do-while, que é bem parecido com o while, porém o conjunto de

instruções é executado antes da avaliação da expressão lógica. Isso faz com que essas Sintaxe:

do

{

Conjunto de instruções;

}

while (condição);

Exemplo: Este programa lê vários números e quando o usuário digitar -1 (menos um), o programa mostrará a soma dos números digitados até então, em seguida será encerrado.import javax.swing.JOptionPane;

public class ExemploWhile;

14

Linguagem de Programação JavaProfessora Lucélia

{

public static void main (String [ ] args)

{

String numero;

int num = 0, soma = 0;

numero = JOptionPane.showInputDialog ("Informe um número

qualquer:");

num = Integer.parseInt(numero);

while (numero != -1)

{

soma = soma + num;

numero = JOptionPane.showInputDialog ("Informe um número qualquer

ou digite -1 para encerrar:");

num = Integer.parseInt(numero);

}

JOptionPane.showMessageDialog(null,"A soma dos números digitados é =

" + soma);

}

}

Exercícios

1. Faça um programa que receba vários números positivos ou negativos, terminada por zero. O programa deve fornecer como saída, a soma dos números positivos e a soma dos números negativos.

2. Faça um programa que leia os dados de vários alunos, contendo o número da matrícula, as três notas e a freqüência. Calcule e mostre: para cada aluno o número 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. Faça um programa que receba a idade, a altura e o peso de várias pessoas. Calcule e mostre:

• A quantidade de pessoas com idade superior a 50 anos;• A média 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 preços em 20%. Faça um programa que leia o código, o preço de custo de vários produtos e que calcule o novo preço de cada um deles. Calcule também a média de preços com e sem aumento. Mostre o código e o novo preço de cada produto e, no final, as médias. A entrada de dados deve terminar quando for recebido um código de produto menor ou igual a zero.

5. Faça um programa que apresente um menu de opções para cálculo das seguintes operações entre dois números: adição, subtração, multiplicação e divisão. O programa deve permitir a escolha da operação desejada, a entrada dos números, a exibição do resultado e a volta ao menu de opções. O programa só termina quando for escolhida a opção de saída.

15

Linguagem de Programação JavaProfessora Lucélia

3ª. Lista para Casa

1. Entrar com vários números e imprimir quantos números 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 profissão e ao final diga quantas pessoas foram entrevistadas e quantas são dentistas (considerar dentista, Dentista e DENTISTA).

3. Uma fábrica produz e vende vários 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 reposição. 4. Faça um programa que leia a idade e a altura de várias pessoas. Calcule e informe a média das alturas das pessoas

com mais de 50 anos. Para encerrar o programa digite zero para idade.

5. Faça um programa que leia vários números, quando o zero for digitado o programa será finalizado. Mostre no final desse programa a soma dos números positivos, a soma dos negativos e a soma total dos positivos e negativos juntos.

6. O GDF realizou uma pesquisa entre vários habitantes do DF, coletando dados sobre o rendimento familiar e o número de filhos de cada família. O GDF quer saber:

• A média dos rendimentos da população;

• Média do número de filhos.

7. Uma empresa classifica seus funcionários em três níveis de acordo com um índice de produtividade. São eles (1) Excelente, (2) Bom e (3) Regular. Cada nível acrescenta um abono ao salário base do funcionário, de acordo com a seguinte tabela:

• Excelente 80% do salário base;

• Bom 50% do salário base;

• Regular 30% do salário base.

O programa deve ler a matrícula do funcionário, seu salário base e seu nível de abono. Calcular e imprimir o salário a ser pago (salário a ser pago é = salário base + abono). O programa será encerrado quando for digitado 0 para matrícula.

Comando for

É uma estrutura de repetição determinada, ou seja, o valor inicial da estrutura é conhecido e o valor final também. (Ao se iniciar a estrutura já se sabe quantas vezes o bloco de comandos será executado).

16

Linguagem de Programação JavaProfessora Lucélia

O seu funcionamento é realizado por uma variável de controle do tipo contador, podendo ser crescente ou decrescente.

Sintaxe:

for (int x = 1; x < 10; x++){

<conjunto de instruções>}

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 números 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!”);

}}

Exercícios

1. Faça 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. Faça um programa que mostre a tabuada de multiplicação (de 1 a 10) para os 6 primeiros números primos. Ao mudar de uma base para outra o programa deve mostrar uma mensagem ao usuário e aguardar que alguma tecla seja pressionada para então montar a tabuada para a próxima base.

3. Faça um programa que receba a idade de 15 pessoas, calcule e mostre a quantidade de pessoas em cada faixa etária.

Faixa etária Idade1 Até 15 anos2 De 16 a 30 anos3 De 31 a 45 anos4 De 46 a 60 anos5 Acima de 61 anos

4. Faça um programa que leia uma série de números positivos inteiros. Calcule e mostre o maior número digitado. A entrada de dados deve terminar quando um número negativo foi digitado.

5. Faça um programa que receba um número, calcule e mostre o fatorial desse número.Sabe-se que: n! = 1*2*3*...*(n-1)*n;

0! = 1, por definição.

17

Linguagem de Programação JavaProfessora Lucélia

4ª. Lista para Casa

6. Mostrar todos os números de 100 até 1.7. Criar um programa que entre com cinco números e imprima o quadrado de cada número.8. Criar um programa que imprima todos os números 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 eleição presidencial, existem três candidatos e 10 eleitores. Os votos são informados através de código. Os códigos utilizados são:

• 1, 2, 3 votos para os respectivos candidatos;

• 0 votos em branco

• outros códigos votos nulos

Escreva um programa que calcule e imprima:

• total de votos para cada candidato;

• total de votos nulos;

• total de votos em branco.

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

18

Linguagem de Programação JavaProfessora LucéliaOrientação a Objetos

Tópicos principais da Orientação a Objetos:

• Classe: é um grupo de objetos. Exemplos: Pessoa, Veiculo, Cliente.

• Objeto: é um exemplo de um determinado grupo. Exemplo: pessoa1

• Atributos: são características do objetoExemplos: pessoa1.nome: = “José”

pessoa1.idade = 21 pessoa1.endereco = “QSA 10”

• Métodos: são as operações realizadas dentro das classes. Para o nome do método, é padrão começar com letra minúscula.

Exemplos: matricularAluno(); incluirPessoa();

• Método Construtor: é um método especial que inicializa os atributos de uma classeToda classe tem um método construtor. A que menos precisa dele, é a classe que contém o método main, porque não tem muita afinidade com os conceitos de Orientação a Objetos.O método construtor tem o mesmo nome da classe, inclusive inicializando com letra maiúscula e não retorna nada, inclusive, não utiliza nem o void para expressar isto.

• Herança: significa ser capaz incorporar os dados e métodos de uma classe previamente definida, de uma classe mãe. A classe filha é conhecida como sub-classe. Assim como a herança na vida real, a classe filha herda todos os atributos e métodos declarados na classe mãe (ou super classe ou classe progenitora).

• Abstração: é 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, não nos interessa o atributo tamanho do pé. Porém ao desenvolver um sistema para um órgão como o Renda Minha, que distribui uniforme e sapatos, é necessário o atributo tamanho do pé.

• Polimorfismo: muitas formas. Ocorre quando uma classe filha possui um método com o mesmo nome e assinatura (número, tipo e ordem de parâmetros) de um método na sua superclasse. O polimorfismo ocorre quando precisamos reimplementar o mesmo método, para a mesma finalidade, mas de forma diferente.

• Sobrecarga: é semelhante ao polimorfismo, diferenciando-se pelo fato de possuir outros parâmetros e não os mesmos como ocorre no polimorfismo.

• Encapsulamento (visibilidade): Mecanismo utilizado visando obter segurança, modularidade e autonomia para objetos. Conseguido através da definição de visibilidade privada dos atributos, ganhando-se assim autonomia para definir o que o mundo externo ao objeto poderá visualizar e acessar, normalmente através de métodos públicos. Existem 3 níveis de encapsulamento: private (privado), protect (protegido) e public (público).

Os atributos declarados fora do método são variáveis de objeto ou variáveis de instância ou propriedades ou atributos (para quem conhece programação estruturada é similar à variáveis globais)

19

Linguagem de Programação JavaProfessora Lucélia

Essas variáveis de instâncias são inicializadas automaticamente com valores default:Numéricas = 0; String = null; boolean = false;• char guarda o valor do caracter na tabela ASCII ou Unicode.

As variáveis locais (declaradas dentro dos métodos) não são inicializadas automaticamente.

Implementar uma classe com os atributos públicos: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 utilizássemos uma declaração de String nos programas já conhecidos.p1 => é a referência ao objetonew => é o operador de instância, sempre será utilizado ao instanciar um novo objeto.Pessoa( ) => se refere ao Método 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 Programação JavaProfessora Lucélia

O que acontece?R – Todas as tentativas de acesso aos atributos da Classe Pessoa apresentarão erros na classe main, porque os atributos são privados. É possível acessá-los somente dentro da própria classe Pessoa.

Como fazer para solucionar esse problema?R – criar os métodos get() e set() públicos, para cada atributo que desejar tornar público.Obs. O método set( ) é o método modificador, seu objetivo é alterar o valor O método get( ) é o método 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 referência genérica ao objeto em questão.idade => se refere ao atributo declarado no início da classe, fora dos métodosIdade => se refere ao parâmetro 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 Programação JavaProfessora Lucélia

System.out.println(p1.getEscolaridade( )); System.out.println(p1.getIdade( )); System.out.println(p1.getNome( )); }}

Os métodos get( ) e set( ) tem somente a funcionalidade de permitir acesso e modificação? R - Não. Por exemplo, pode ser usado para fazer uma validação 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 método construtor pode ser declarado de várias 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("Lucélia ");

System.out.println (p2.getNome( ));

Para não termos que repetir várias vezes os comandos de impressão, podemos criar um método que faça este trabalho na classe Pessoa e repetir somente a chamada ao método:

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

Método com parâmetros:Classe Pessoa public Pessoa(int identidade) { setIdentidade(identidade); setIdade(0); setNome(" ");

22

Linguagem de Programação JavaProfessora Lucélia

System.out.println("O construtor sobrecarregado que recebe identidade de Pessoa foi executado");

Classe MainPessoa p2 = new Pessoa(444); p2.setConta(2); p2.setIdade(60); p2.setNome("José ");

Classe abstrata: é uma classe que não 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 método construtor padrão na classe Aluno• Para resolver o erro, inserir o comando na primeira linha do método 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 Programação JavaProfessora Lucélia

setMatr(matr);}

Outro método 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 métodos exibe da classe Pessoa não tem matrícula, para solucionar este problema:

public void exibe( ){ super.exibe( ); System.out.println(getMatr( ));}

Exercícios

1. Crie um novo diretório (pasta) com o nome: orientacaoo. Todas as (três) classes criadas abaixo deverão ser salvas neste diretório.

2. Crie uma classe Veículo 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 Veículo. public class Carro extends Veiculo{

private int quantidadePortas;private double valorIPVA;

}

24

Linguagem de Programação JavaProfessora Lucélia

4. Crie os métodos de acesso - get() e de modificação - set() para todos os atributos definidos em ambas as

classes. OBS.: A parte em negrito já estava pronta, acrescente somente a parte que não 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 método main, crie nela um objeto da classe Veiculo e instancie os dois atributos que você declarou na classe Veículo. Crie também um objeto da classe Carro, utilizando os dois atributos declarados na própria classe e os dois herdados da classe Veículo. public class Principal {

public static void main (String [] args){Veiculo veiculo1 = new Veiculo();veiculo1.setCor("prata");veiculo1.setAno(2007);

25

Linguagem de Programação JavaProfessora Lucélia

Carro veiculo2 = new Carro();veiculo2.setCor("branco");veiculo2.setAno(2006);veiculo2.setQuantidadePortas(5);veiculo2.setValorIPVA(900);

}}

6. O método main deve exibir as informações dos dois objetos criados. OBS.: Acrescentar o código abaixo antes das duas chaves de fechamento do método 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