Linguagem de Programação I Linguagem Java FACEB – Faculdade Cenecista de Brasília Professora: Lucélia Oliveira FACULDADE CENECISTA DE BRASÍLIA - FACEB Linguagem de Programação I Professora Lucélia 2º. Semestre de 2007 2 FACULDADE CENECISTA DE BRASÍLIA - FACEB Linguagem de Programação I Professora 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. 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 conter Mais de uma linha normalmente*/ /**Comentário de documentação Classe 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éticos Operador + * / % Descrição Adição Subtração Multiplicação Divisão Resto da divisão Operadores Incremento e decremento 3 FACULDADE CENECISTA DE BRASÍLIA - FACEB Linguagem de Programação I Professora Lucélia Operador ++ -- 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. Exemplo: int a = 1, b; b = a++; // b recebe 1, a passa a valer 2 Operadores Relacionais Operador == != > >= < <= 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ógicos Operador && || ! 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 compostos Expressões assim: Variável = variável operador expressão a = a + 1; Podem ser escritas assim: Variável operador = expressão a +=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: 4 FACULDADE CENECISTA DE BRASÍLIA - FACEB Linguagem de Programação I Professora Lucélia São as regras que determinam a ordem com que os diferentes operadores serão processados nas expressões: Nível Operadores 1 () 2 ++ -3 */% 4 +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 Intervalo byte Inteiros positivos e negativos 1 -128 a +127 short Inteiros positivos e negativos 2 -32.768 a +32.767 int Inteiros positivos e negativos 4 -2.147.483.648 a 2.147.483.647 long Inteiros positivos e negativos 8 -2^64 a +2^64-1 float Valores em ponto flutuante 4 1,40239846E-45 a 3.40282347E+38 double Valores em ponto flutuante 8 4,9406564E-324 a 1.79769313E+308 char 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; Blocos Sã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; 5 FACULDADE CENECISTA DE BRASÍLIA - FACEB Linguagem de Programação I Professora Lucélia } Exercícios 1. Identifique o tipo dos dados: (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 real, 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 a) x + y – z * a = d) ((z / a) + b * a) – d = b) g) (a + r) * r = d%y= c) y % d = h) d = 12 p=4 r = 10 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” b + 1 >= a*a ( ) nome != “ana” ( ) profissao ==”médico” ( ) profissao ==”advogado” 6 FACULDADE CENECISTA DE BRASÍLIA - FACEB Linguagem de Programação I Professora Lucélia b) a == 6.0, b == 121.0, nome == “Pedro” a + 1 > = b/a ( ) nome != “Ana” ( ) profissao == “médico” ( ) c) x == 3, y == 4, z == 16, profissao == “médico” nome == “Maria”, ( x + y > z ) && (nome == “Maria”) ( ) (resultado) | | ( y > = x ) ( ) (!resultado) && ( z % y + 1 == x ) ( ) (nome == “Maria”) | | ( x + y + z < ( y * y )) ( ) resultado == true 6. Em Casa: - Faça o download do JDK (A Sun fornece o download gratuito em seu site: http://java.sun.com/j2se) 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 que exibe 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 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! 7 FACULDADE CENECISTA DE BRASÍLIA - FACEB Linguagem de Programação I Professora Lucélia // 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, salve-o //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."); //numero1 = args[0]; //numero2 = args[1]; 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 FACULDADE CENECISTA DE BRASÍLIA - FACEB Linguagem de Programação I Professora Lucélia 8. Agora é só executar o programa! 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 do 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. Desvios Condicionais 9 FACULDADE CENECISTA DE BRASÍLIA - FACEB Linguagem de Programação I Professora Lucélia 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"); 10 FACULDADE CENECISTA DE BRASÍLIA - FACEB Linguagem de Programação I Professora Lucélia else System.out.println("c"); } } 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 [ 0,0 a ] 3,0 [ 3,0 a ] 7,0 [ 7,0 a 10,0 ] MENSAGEM Reprovado Exame 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. 11 FACULDADE CENECISTA DE BRASÍLIA - FACEB Linguagem de Programação I Professora Lucélia 6. Fazer um programa que receba um número e mostre se ele é positivo, negativo ou nulo (0) . 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) – 58 Para 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 { 12 FACULDADE CENECISTA DE BRASÍLIA - FACEB Linguagem de Programação I Professora Lucélia 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); 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 3. Procedência 1 Sul 2 Norte 3 Leste 4 Oeste 5 Nordeste 6 Sudeste 7 Centro-oeste 8 Noroeste 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 Planeta 1 0.37 Mercúrio 2 0.88 Vênus 13 FACULDADE CENECISTA DE BRASÍLIA - FACEB Linguagem de Programação I Professora Lucélia 3 0.38 Marte 4 2.64 Júpiter 5 1.15 Saturno 6 1.17 Urano Para calcular o peso no planeta escolhido use a seguinte fórmula: Peso no Planeta = Peso / 10 * gravidade. 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 14 FACULDADE CENECISTA DE BRASÍLIA - FACEB Linguagem de Programação I Professora Lucélia { 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; { 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; 15 FACULDADE CENECISTA DE BRASÍLIA - FACEB Linguagem de Programação I Professora Lucélia • 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. 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; 16 FACULDADE CENECISTA DE BRASÍLIA - FACEB Linguagem de Programação I Professora Lucélia - 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). 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 Idade 17 FACULDADE CENECISTA DE BRASÍLIA - FACEB Linguagem de Programação I Professora Lucélia 1 Até 15 anos 2 De 16 a 30 anos 3 De 31 a 45 anos 4 De 46 a 60 anos 5 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. 4ª. Lista para Casa 1. Mostrar todos os números de 100 até 1. 2. Criar um programa que entre com cinco números e imprima o quadrado de cada número. 3. Criar um programa que imprima todos os números de 1 até 100 e a soma deles. 4. Escreva um programa que receba a idade de 10 pessoas, calcule e imprima a quantidade de pessoas maiores de idade (idade >= 18 anos). 5. 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. 6. Criar um programa que deixe escolher qual a tabuada de multiplicar que se deseja mostrar. Orientaçã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 18 FACULDADE CENECISTA DE BRASÍLIA - FACEB Linguagem de Programação I Professora Lucélia - Atributos: são características do objeto Exemplos: 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. Exemplo: matricularAluno(); incluirPessoa(); - Método Construtor: é um método especial que inicializa os atributos de uma classe Toda 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) 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; 19 FACULDADE CENECISTA DE BRASÍLIA - FACEB Linguagem de Programação I Professora Lucélia 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 objeto new => é 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( ) { } } 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; 20 FACULDADE CENECISTA DE BRASÍLIA - FACEB Linguagem de Programação I Professora Lucélia 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étodos Idade => 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"); System.out.println(p1.getEscolaridade( )); System.out.println(p1.getIdade( )); System.out.println(p1.getNome( )); } } 21 FACULDADE CENECISTA DE BRASÍLIA - FACEB Linguagem de Programação I Professora Lucélia 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(" "); System.out.println("O construtor sobrecarregado que recebe identidade de Pessoa foi executado"); 22 FACULDADE CENECISTA DE BRASÍLIA - FACEB Linguagem de Programação I Professora Lucélia Classe Main Pessoa 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){ 23 FACULDADE CENECISTA DE BRASÍLIA - FACEB Linguagem de Programação I Professora Lucélia super(identidade); 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() { } } 24 FACULDADE CENECISTA DE BRASÍLIA - FACEB Linguagem de Programação I Professora Lucélia 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; } 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; } } 25 FACULDADE CENECISTA DE BRASÍLIA - FACEB Linguagem de Programação I Professora Lucélia 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); 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