[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_zeroonde:
- tanto
ação_se_não_zero
quantoação_se_zero
podem 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ção
deve 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 cadaelse
se refere aoif
mais próximo dentro do mesmo bloco.
O comando switch ... case ... break ... default
Observações:
- O comando
switch
só pode testar igualdade; já o comandoif
pode avaliar uma expressão lógica ou relacional; - Duas constantes
case
no mesmoswitch
não podem ter valores idênticos; - Constantes caracter são automaticamente convertidas para seus valores inteiros;
- Os comandos
break
dentro doswitch
são opcionais. Eles terminam a seqüência de comandos associados com cada constante. Se o comandobreak
é omitido, a execução continua pelos próximos comandoscase
até 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