Aula 7: Selecção/Ramificação I (if ... , if ... else ...) |
Até agora, todas as instruções que se
colocaram
num programa foram executadas. Mais ainda, elas foram executadas
exactamente
na ordem em que foram colocadas. A primeira linha do programa foi
executada
primeiro, depois a segunda, depois a terceira, e por aí fora.
Nem
sempre é assim. Com a ramificação (um ramo
faz parte de uma árvore) podemos controlar o fluxo de um
programa.
Vamos imaginar um programa que recebe um número e calcula o
raíz
quadrada desse número. Calcular a raíz quadrada de um
número
negativo não faz sentido (a não ser que se esteja a
trabalhar
com número complexos, claro), e então queremos que o
programa
gere um erro e páre quando o utilizador introduzir um
número
negativo. Deverá surgir no écran uma mensagem como:
Negative numbers are not allowed! Obviamente, nem sempre queremos que esta mensagem surja no écran; no caso do utilizador introduzir um número positivo, queremos que seja calculada a sua raíz quadrada e que o resultado apareça no écran: The square-root of 5 is 2.23607 É preciso ter uma forma de verificar o número e dependendo do resultado, executar partes do programa. |
A maneira mais simples de ter o controlo sobre as
instruções
que serão executadas é utilizando a
instrução
if ... A sintaxe completa da instrução é
Em condição
iremos
colocar a nossa condição e em instrução
colocamos a(s) nossa(s) instrução(ões) que
serão
executadas se e só se a condição for verdadeira.
|
A execução normal do programa irá prosseguir
após
o bloco de instruções. No exemplo seguinte, a instrução3
e a instrução4 serão executadas
independentemente
da condição (a = b).
if (a == b)
{ instrução1; instrução2; } instrução3; instrução4; |
|
De notar que a analogia com a ramificação das
árvores
termina aqui. Numa árvore, os ramos nunca se voltam a encontrar
novamente; uma vez num ramo, não é possível voltar
ao tronco principal.
Se também se quiser que o programa faça coisas
no caso
da condição não ser verdadeira deve-se utilizar a
instrução if ... else. A forma geral
desta
instrução é
exemplo:
|
#include <stdio.h>
#include <math.h>
main()
{
double x;
double root;
printf("Give a number");
scanf("%f", &x);
if (x<0)
printf("Negative numbers
are not allowed!\n");
else
{
root = sqrt(x);
printf("The
square-root of %0.4f is %0.4f\n", x, root);
}
printf("Have a nice day\n");
}
Correndo o programa; dois exemplos:
Give a number
3.68 The square-root of 3.6800 is 1.9183 Have a nice day |
Give a number
-3.68 Negative numbers are not allowed! Have a nice day |