[CAPÍTULO 1] - [CAPÍTULO 2] - [CAPÍTULO 3]
[PARTE 1] - [PARTE 2] - [PARTE 3] - [PARTE 4] - [PARTE 5] - [PARTE 6] - [PARTE 7] - [PARTE 8]
[PARTE 1] - [PARTE 2] - [PARTE 3] - [PARTE 4] - [PARTE 5] - [PARTE 6] - [PARTE 7] - [PARTE 8]
Controle de Fluxo: Comandos de Seleção
Objetivos:
Nesta aula, iremos iniciar o estudo dos comandos e construção em C para o CONTROLE do FLUXO de EXECUÇÃO de um programa. Especificamente, abordaremos os comandos para realização de DESVIOS CONDICIONAIS:-
if ... else ... -
switch ... case ...
Controle de Fluxo:
Em C, bem como em toda linguagem moldada sob os princípios da PROGRAMAÇÃO ESTRUTURADA, o fluxo de execução de um programa é controlado de acordo com algumas idéas simples e fundamentais:- SEQÜÊNCIA e BLOCOS de comandos
- DESVIOS
- CONDICIONAIS
- INCONDICIONAIS
- ITERAÇÕES (LAÇOS)
Seqüência e Blocos de Comandos:
Uma SEQÜÊNCIA de COMANDOS é uma lista de COMANDOS delimitados por ; .Um BLOCO de COMANDOS é qualquer SEQÜÊNCIA de COMANDOS delimitada por chaves
{} . Em um BLOCO de COMANDOS, podem-se distinguir três tipos básicos de COMANDOS:
- DECLARAÇÃO de VARIÁVEIS LOCAIS
- sempre no início do BLOCO
- variáveis declaradas dentro de um BLOCO podem ter o mesmo nome de uma outra variável situada em um BLOCO mais externo; neste caso, a variável dentro do BLOCO mais interno se sobrepõe a variável do BLOCO mais externo.
- COMANDOS de EXPRESSÃO formados por uma expressão C válida
- ATRIBUIÇÕES
- CHAMADAS de FUNÇÃO
- COMANDOS de CONTROLE de FLUXO atuando sobre COMANDOS individuais ou então outros BLOCOS de COMANDOS.
- DESVIOS CONDICIONAIS
- DESVIOS INCONDICIONAIS
- ITERAÇÕES
Por exemplo:
int f() { /* início de BLOCO */
int a,b; /* DECLARAÇÕES LOCAIS */
a = 10; /* comando de EXPRESSÃO */
b = a % 3 ; /* comando de EXPRESSÃO */
if ( a > 2 ) /* comando de CONTROLE de FLUXO */
{ /* início de BLOCO */
int x,y; /* DECLARAÇÕES LOCAIS */
x = 2*a; /* comando de EXPRESSÃO */
for ( y =1; y < 10; y++ ) /* comando de CONTROLE de FLUXO */
x += y; /* comando de EXPRESSÃO */
...
} /* fim de BLOCO */
else
printf("a é menor que 2\n"); /* comando de EXPRESSÃO */
} /* fim de BLOCO */
Desvios Condicionais ( Comandos de SELEÇÃO ):
Em C, há dois comandos para DESVIOS CONDICIONAIS:-
if ... else -
switch ... case ... break ... default
O comando if ... else ...
Forma Geralif ( condição )
ação_se_não_zero
else
ação_se_zero
onde:- tanto
ação_se_não_zeroquantoação_se_zeropodem ser:- um único comando de EXPRESSÃO ou
- um outro comando de CONTROLE de FLUXO ou
- um BLOCO de COMANDOS
- a parte
else ação_se_zeroé opcional - a
condiçãodeve ser uma EXPRESSÃO ESCALAR (ou seja, uma EXPRESSÃO que quando avaliada produza um inteiro, um caracter ou ponto flutuante.)
Observação:
- em
if ... else ...aninhados cadaelsese refere aoifmais próximo dentro do mesmo bloco.
O comando switch ... case ... break ... default
Observações:
- O comando
switchsó pode testar igualdade; já o comandoifpode avaliar uma expressão lógica ou relacional; - Duas constantes
caseno mesmoswitchnão podem ter valores idênticos; - Constantes caracter são automaticamente convertidas para seus valores inteiros;
- Os comandos
breakdentro doswitchsão opcionais. Eles terminam a seqüência de comandos associados com cada constante. Se o comandobreaké omitido, a execução continua pelos próximos comandoscaseaté que umbreak, ou o fim doswitch, seja encontrado.
Atividade 1
Escreva um programa calculadora que leia dois númerosdouble e em seguida realize uma dentre um conjunto de operações disponíveis. As operações disponíveis são:- adição (
+) - subtração (
-) - multiplicação (
*) - divisão (
/) - divisão inteira (
div) - resto divisão inteira (
mod) - exponenciação inteira (
^)
...
Leitura Recomendada:
- CCT capítulo 3
- K&R capítulos 3
Exercícios:
- Complete as atividade 1 acima;
- Extenda a atividade 1 para lidar com as operações fat (fatorial), sen (seno), cos (coseno) e rq (raiz quadrada). Nestes casos, apenas um número deve ser lido.
- [CCT] Schildt, H. (1996) C, completo e total: 3a Ed.. São Paulo, Makron.
- LP, UFMA; Coutinho, Lucian. Linguagem de programação para ciencia da computação da ufma.http://www.deinf.ufma.br/~lrc/2009.1/LP/
- [K&R] KERNIGHAN, B. e RITCHIE, D. (1990) C, a linguagem de programação: padrão ANSI. Rio de Janeiro: Campus.
- DEITEL, H. M. (1999) Como programar em C. Rio de Janeiro: LTC.
- Módulo Consultoria e Informática (1989) Linguagem C: programação e aplicações. Rio de Janeiro: LTC.
Coloque aqui o seu email