Diferenças entre edições de "As condições if"
(→Exercícios) |
(→Exercícios) |
||
Linha 51: | Linha 51: | ||
# Leia um número e indique se o mesmo é ou não primo. | # Leia um número e indique se o mesmo é ou não primo. | ||
+ | |||
+ | <syntaxhighlight> | ||
+ | # le um numero e diz se e primo ou nao | ||
+ | numero = input("Escolha um numero: "); | ||
+ | if (isprime(numero)) | ||
+ | printf ("%d e primo\n", numero); | ||
+ | else | ||
+ | printf ("%d nao e primo\n", numero); | ||
+ | endif | ||
+ | </syntaxhighlight> | ||
# Escreva uma script que calcule o índice de massa corporal e apresente uma informação qualitativa sobre o mesmo, usando a informação disponível na [http://apps.who.int/bmi/index.jsp?introPage=intro_3.html World Health Organization]. Escontra nesta página a fórmula de cálculo deste índice. | # Escreva uma script que calcule o índice de massa corporal e apresente uma informação qualitativa sobre o mesmo, usando a informação disponível na [http://apps.who.int/bmi/index.jsp?introPage=intro_3.html World Health Organization]. Escontra nesta página a fórmula de cálculo deste índice. |
Revisão das 11h47min de 12 de novembro de 2013
As instruções condicionais if têm 3 formas recorrentes. Consoante a lógica necessária, usa-se uma destas 3 formas.
if (condition) then-body endif
if (condition) then-body else else-body endif
if (condition) then-body elseif (condition) elseif-body else else-body endif
Condições
Como se pode ver, a instrução if começa sempre com uma condição. Uma condição é uma expressão que resulta num valor booleano, verdadeiro ou falso. Caso o valor da expressão seja numérico, assume-se que é falso se for zero, e verdadeiro em qualquer outro caso.
Nas condições é habitual usarem-se os operadores booleanos e parêntesis para criar expressões mais complicadas.
Operadores booleanos:
- (conjunção) & retorna verdadeiro se ambas as expressões 1 e 2 forem verdadeiras
- (disjunção) | retorna verdadeiro se uma das expressões 1 e 2 for verdadeiras
- (negação) ! (ou ~ ) retorna o contrário da expressão
Nestas expressões usam-se diversas comparações, sendo necessário lembrar que a igualdade escreve-se com == em vez de ser apenas com =.
Exercícios
- Leia um número e indique se o mesmo é par ou ímpar.
numero = input("Escolha um número: "); if (rem (numero, 2) == 0) printf ("%d é par\n", numero); else printf ("%d é ímpar\n", numero); endif
- Leia um número e indique se o mesmo é ou não primo.
# le um numero e diz se e primo ou nao numero = input("Escolha um numero: "); if (isprime(numero)) printf ("%d e primo\n", numero); else printf ("%d nao e primo\n", numero); endif
- Escreva uma script que calcule o índice de massa corporal e apresente uma informação qualitativa sobre o mesmo, usando a informação disponível na World Health Organization. Escontra nesta página a fórmula de cálculo deste índice.
# massacorporal.m peso = input("Peso?\n"); altura = input("Altura?\n"); imc = peso/altura^2; printf("O seu índice de massa corporal é: %.1f\n", imc); if (imc < 17) disp("Muito abaixo do peso"); elseif (imc >=17 & imc < 18.5) disp("Abaixo do peso"); elseif (imc >=18.5 & imc < 25) disp("Peso normal"); elseif (imc >=25 & imc < 30) disp("Acima do peso"); elseif (imc >=30 & imc < 35) disp("Obesidade"); elseif (imc >=35 & imc < 40) disp("Obesidade severa"); else disp("Obesidade mórbida"); endif
Ao executar a script anterior, pode-lhe aparecer a mensagem:
warning: massacorporal.m: possible Matlab-style short-circuit operator at line 9, column 18 (...)
Esta mensagem não corresponde a um erro propriamente dito. É um aviso de que nem todas as condições precisam de ser calculadas. De facto, o mesmo código pode ser escrito com menos condições, da seguinte forma:
# massacorporal.m peso = input("O seu Peso?\n"); altura = input("Altura?\n"); imc = peso/altura^2; printf("O seu índice de massa corporal é: %.1f\n", imc); if (imc < 17) disp("Muito abaixo do peso"); elseif (imc < 18.5) disp("Abaixo do peso"); elseif (imc < 25) disp("Peso normal"); elseif (imc < 30) disp("Acima do peso"); elseif (imc < 35) disp("Obesidade"); elseif (imc < 40) disp("Obesidade severa"); else disp("Obesidade mórbida"); endif