CMCC
Processamento da
informação
MediaPonderada{ double x,y,w; double media; x = nextDouble(); y = nextDouble(); w = nextDouble(); media = w*x + (1.0-w)*y; }
MediaPonderada{ double x,y,w; double media; x = nextDouble(); y = nextDouble(); w =nextDouble(); media = w*x + (1.0-w)*y; }
Média Ponderada (ex. 02/aula01)
Mas e se o
usuário digitar
um valor fora da
MediaPonderada{ double x,y,w; double media; x = nextDouble(); y = nextDouble(); w = nextDouble(); Se w < 0 ou w > 1 assuma w=0.5; media = w*x + (1.0-w)*y; }
Média Ponderada (ex. 02/aula01)
Condicionais
Para descrever essas situações de escolha e t o m a da d e d e c i s ã o utilizamos instruções condicionais:
if( condição ){
// instruções para serem realizadas caso a condição seja verdadeira
Condicionais
if( w < 0 ){
System.out.println( “w deve ser maior que zero” );
}
if( w > 1 ){
System.out.println(“w deve ser menor que um”); }
Condicionais
Os operadores “>” e “<“ são operadores de relação e avaliam a relação entre duas variáveis.
Esses operadores resultam em um valor de tipo lógico, denominado booleano, que pode ser true (verdadeiro) ou false (falso).
Condicionais
boolean x;
x = 10 < 20; // x contém o valor “true” x = 10 > 20; // x contém o valor “false”
Condicionais
Operadores relacionais: < menor > maior <= menor ou igual >= maior ou igual == igual != diferenteCondicionais
if( w < 0 ){
System.out.println( “w deve ser maior que zero e menor que um” );
}
if( w > 1 ){
System.out.println(“w deve ser menor que que um e maior que zero”);
Condicionais
Operadores booleanos: ! não
&& e || ou
Condicionais
if( w < 0 || w > 1 ){
System.out.println( “w deve ser maior que zero e menor que um” );
MediaPonderada{
double x,y,w, media; x = nextDouble(); y = nextDouble(); w = nextDouble(); if( w < 0 || w > 1 ){ w = 0.5; } media = w*x + (1.0-w)*y; }
Média Ponderada (ex. 02/aula01)
Conversão Nota - Conceito
O CONSUNI aprovou um novo regulamento alterando os conceitos existentes na UFABC, agora temos apenas aprovado e reprovado.
Um professor de Fundamentos de Desenho e Projeto (FDP) montou a seguinte tabela para converter as notas numéricas para conceito:
nota > 9
-->
A nota <= 9-->
RO algoritmo é bem simples:
[verifica a nota] Se a nota > 9 retorna Aprovado [reprova sem dó] Senão retorna Reprovado
NotaConceito{ double nota; nota = nextDouble(); if( nota > 9 ){ println(“Aprovado”); } if( nota <= 9 ){ println(“Reprovado”); } }
Mas se sabemos que a nota não é maior que 9 (no primeiro if), por que temos que verificar se ela é menor?
if( condicao ){
// comandos se condição verdadeira }else{
// comandos se condição falsa }
NotaConceito{ double nota; nota = nextDouble(); if( nota >= 9 ){ println(“Aprovado”); }else{ println(“Reprovado”); } }
O professor disponibilizou o algoritmo para os outros professores, que resolveram generalizar mais:
Entrada: nota do aluno e limiar (corte) para ser aprovado
Saída: Aprovado ou Reprovado
[verifica a nota] Se a nota >= limiar retorna Aprovado [reprova sem dó] Senão retorna Reprovado
NotaConceito{
double nota, limiar; limiar = nextDouble(); nota = nextDouble(); if( nota >= limiar ){
println(“Aprovado”); }else{
println(“Reprovado”); }
}
Conversão Nota - Conceito
Ops...o CONSUNI esqueceu de incluir o conceito reprovado por falta.
Agora temos que verificar as notas do aluno e as faltas.
Conversão Nota - Conceito
[verifica nota] Se a nota >= limiar vai para [ ve r i f i c ar f a l ta ] s e n ã o va i p a ra [ ve r i f i c a r reprovação]
[verificar falta] Se falta > maximoFaltas retorna O senão A
[verificar reprovação] Se falta > maximoFaltas retorna O senão R
Conversão Nota - Conceito
[verifica falta] Se falta > maximoFaltas retorna O
[verificar nota] Se nota >= limiar retorna A senão R
A ordem das condições pode ser importante para manter o algoritmo fácil de ler e executar.
NotaConceito{
int falta, maximoFalta; double nota, limiar; // ...captura valores... if( falta > maximoFalta ){
println(“O”); }else{
if( nota >= limiar ){ println(“A”); }else{ println(“R”); } } }
Pedra, Papel, Tesoura
Para facilitar o uso de condicionais podemos usar a seguinte sintaxe:
if( condição 1 ){
// instruções caso condição 1 seja verdade }else if( condição 2 ){
// instruções caso condição 2 seja verdade }else{
// instruções caso nenhuma condição seja verdade }
Tipo de Triângulo
Dado 3 lados de uma forma com tamanhos x, y e z respectivamente, determinar se ele pode formar um triângulo. Sabemos que para formar um triângulo devemos ter:
x + y > z x + z > y y + z > x
Tipo de Triângulo
Além disso temos:
Se x, y, z forem iguais, ele é equilátero
Se dois dos três lados forem iguais, ele é isósceles Se todos os lados forem diferentes, ele é escaleno.
Determine se ele pode formar o triângulo e qual tipo ele forma.
Ano Bissexto
Faça um algoritmo para testar se um ano é bissexto sabendo que ele é se o ano for:
- múltiplo de 400 ou
- múltiplo de 4 e não de 100
Para testar se um número é múltiplo de outro, utilize o operador %.
3 valores em ordem crescente
Dado três valores x, y e z, imprima-os em ordem crescente!
4 valores em ordem crescente
Dado quatro valores x, y, w e z, imprima-os em ordem crescente!
Atividade 01
Faça um programa para jogar cara ou coroa. O usuário escolherá cara (0) ou coroa (1).
Utilize o comando Math.random() para gerar um número aleatório entre 0 e 1.
Se o número sorteado for menor que 0,5 o resultado foi cara, se for maior ou igual a 0,5 o resultado foi coroa.
Atividade 02
O peso ideal de uma pessoa segue a seguinte tabela:
Dependendo se o usuário responder ser homem (0) ou mulher (1) e dependendo de sua altura, e peso, indique se ele está acima do recomendado.
Homem Mulher
Altura Peso Altura Peso
1,5m 50 Kg 1,5m 48 Kg
1,7m 74 Kg 1,7m 68 Kg
1,9m 98 Kg 1,9m 88 Kg
Atividade 03
Dado uma circunferência com centro localizado em cx e cy e raio r, e dado um ponto na coordenada x, y. Determine se o ponto está dentro do círculo.
Atividade 04
A estrela da morte é uma arma desenvolvida pelo império para dominar o mundo.
Um telescópio digital foi de-senvolvido pelas forças rebel-des para detectar o local dela.
Atividade 04
Mas tal telescópio só consegue mostrar o contorno das circunferências encontradas indicando o centro e o raio delas.
Atividade 04
Duas circunferências podem formar a Estrela da Morte se:
- o raio da maior circunferência for pelo menos 10
vezes maior que o raio da outra
- a c i r c u n f e r ê n c i a m e n o r e n c o n t r a - s e
completamente dentro da circunferência maior e o contorno dela está a pelo menos 2 unidades de distância da maior
Atividade 05
Altere o programa para exibir o conceito do aluno para, dado as notas da P1 e P2, peso, número de faltas e limiar de aprovação, verifique se o aluno passou ou não na disciplina.
Atividade 06
Faça uma calculadora simples em que o usuário entra com os números x e y e um operador +, -, * ou / e ele mostra o resultado na tela.
Para os operadores utilize o tipo char de variável. Esse é um tipo que recebe um único caractere (letra, símbolo, número) do teclado.
Atividade 07
Resolva a equação ax^2 + bx + c = 0 quando temos:
- apenas uma raíz (b^2 = 4ac) - raízes complexas (b^2 < 4ac) - raízes reais (aula anterior)
RESUMO
Quando temos instruções específicas que devem ser executadas apenas em certas condições, usamos desvios condicionais para instruir o computador:
if( condição1 ){ // instruções
}else if( condição2 ){ // instruções
}else{
// instruções }
RESUMO
As expressões de condição são do tipo booleanas (bool) e podem assumir o valor true ou false.
bool x = true; if( x ){
// isso será executado }else{
// isso não }
RESUMO
As expressões de condição são do tipo booleanas (bool) e podem assumir o valor true ou false.
bool x = false; if( x ){
// isso não será executado }else{
// isso será }
RESUMO
Para ajudar na avaliação das expressões lógicas temos operadores de relação numérica que retorna uma variável booleana:
int x = 10; int y = 5; if( x > y ){
// isso será executado }
RESUMO
Para ajudar na avaliação das expressões lógicas temos operadores de relação numérica que retorna uma variável booleana:
> maior < menor
>= maior ou igual <= menor ou igual != diferente
RESUMO
E para fazer expressões lógicas mais complexas, temos a disposição operadores lógicos:
&& e || ou ! não
RESUMO
int x = 10; int y = 5; int z = 15;
if( !(x > y && (z%5 != 0)) ){
// isso não será executado }