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
Download

Apostila - Professora Lucélia Alves de Oliveira