Buscar

Estruturas_de_Controle (2013)

Prévia do material em texto

L
i
n
g
u
a
g
e
m
 
C
Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados
L
i
n
g
u
a
g
e
m
 
C
Linguagem C
>> Estruturas de Controle
Prof. Isaac Benjamim Benchimol
ibench@ifam.edu.br
L
i
n
g
u
a
g
e
m
 
C
Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 2
Ementa
• Introdução
• Operadores e Expressões
• Funções de E/S
• Estruturas de Controle
• Vetores e Matrizes
• Strings
• Ponteiros
• Funções
• Estruturas
• Alocação Dinâmica de Memória
• Arquivos
L
i
n
g
u
a
g
e
m
 
C
Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 3
Estruturas de Controle
• Governam o fluxo de execução do 
programa. Se dividem em três 
categorias:
– Desvios Condicionais: if, operador 
ternário (?:) e switch.
– Loop: while(), do-while(), for() e os 
comandos continue e break.
– Desvio Incondicional: goto.
L
i
n
g
u
a
g
e
m
 
C
Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 4
if
Sintaxe: if (expressão) comando;
else comando;
onde, comando poder ser um único, um bloco de 
comandos e, neste caso, usa-se os delimitadores 
de bloco de comandos ( { } ) ou nenhum comando. 
A cláusula else é opcional.
F
if (expressão) comando;
else comando;
próximo comando;
V
L
i
n
g
u
a
g
e
m
 
C
Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 5
if
Exemplo:
main()
{
int a, b;
printf(“Digite dois números”);
scanf(“%d,%d”,&a,&b);
if (b) printf(“%f\n”,(float)a/b);
else printf(“divisão por zero\n”);
}
L
i
n
g
u
a
g
e
m
 
C
Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 6
if aninhados
Ocorre quando um comando if é um objeto de um 
outro if ou else.
Sintaxe exemplo:
if ( i )
{
if ( k ) comando1;
if ( j ) comando2;
else comando3;
}
else comando4;
L
i
n
g
u
a
g
e
m
 
C
Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 7
if – else - if
Sintaxe exemplo:
if (expressão) comando;
else if (expressão) comando;
else if (expressão) comando;
else if (expressão) comando;
else comando;
Neste caso, as expressões são avaliadas de cima para 
baixo. Assim que uma expressão for diferente de zero 
(verdadeira), o comando associado a ela é executado e a 
estrutura encerrada. Se nenhuma expressão for verdadeira, 
será executado o comando associado ao último else e, se 
ele não for declarado, nenhum comando será executado.
L
i
n
g
u
a
g
e
m
 
C
Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 8
if – else - if
main(){
int magico, adivinhacao;
randomize();
magico= random(10);
printf(“ADIVINHE: ”);
scanf(“%d”,&adivinhacao);
if (adivinhacao == magico){
printf(“ACERTOU”);
printf(“%d é o número mágico\n”, magico);
} else if (adivinhacao > magico)
printf(“—errado– muito alto\n’);
else (“—errado– muito baixo\n’);}
L
i
n
g
u
a
g
e
m
 
C
Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 9
Operador Ternário
main(){
int x = 3, y = 7, max;
max = (x>y)?1:0;
printf(“max = %d\n”,max);
}
L
i
n
g
u
a
g
e
m
 
C
Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 10
switch
O comando de seleção switch é utilizado em caso de seleção 
múltipla. Ele testa o valor de uma expressão contra uma lista de 
constantes inteiras ou caracter. Quando o valor é igual, os comandos 
associados àquela constante são executados. Se nenhuma 
coincidência for encontrada os comandos de default são executados.
switch(expressão)
{
case constante1:
comandos;
break;
case constante2:
comandos;
break;
.
default:
comandos;
}
L
i
n
g
u
a
g
e
m
 
C
Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 11
switch
O comando break causa a saída imediata do switch. Se não existir 
um comando break seguindo os comandos de um case, o programa 
segue executando os comandos dos cases abaixo. Exemplo:
void main() {
int dia;
clrscr();
printf(“Digite um dia da semana: “);
scanf(“%d”,&dia);
switch(dia) {
case 1: printf(“\nDomingo\n”);
break;
case 2: printf(“\nSegunda\n”);
break;
.
case 7: printf(“\nSábado\n”);
break;
default: printf(“\nNúmero inválido!!!\n”);
}}
L
i
n
g
u
a
g
e
m
 
C
Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 12
Comandos de repetição
O comando de repetição é utilizado nos casos 
em que queremos repetir determinados 
comandos.
Laço for
Sintaxe:
for(inicialização;condição;incremento) comando;
ou 
for(inicialização;condição;incremento)
{
comandos;
}
L
i
n
g
u
a
g
e
m
 
C
Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 13
for
Inicialização: é geralmente uma atribuição 
que determina o valor inicial da variável de 
controle. Esta declaração pode ser feita 
antes do laço e, desta forma, não necessita 
ser declarada no escopo do comando.
Condição: é uma expressão que determina o 
final do laço ou o valor final da variável de 
controle.
Incremento: define como a variável de 
controle do laço varia cada vez que o laço é 
repetido.
L
i
n
g
u
a
g
e
m
 
C
Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 14
for
Exemplo:
int x;
for(x=1;x<=100;x++) printf(“%d”,x);
for(x=100;x!=65;x-=5) {
z=x*x;
printf(“o quadrado de %d é %f”,x,z);
}
O laço infinito:
for( ; ; ) printf(“este laço é infinito\n”);
ch=”\0”;
for( ; ; ){
ch=getchar();
if (ch==”A”) break; � o comando break causa 
o término imediato do laço
}
printf(“Você digitou A”);
L
i
n
g
u
a
g
e
m
 
C
Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 15
while
Sintaxe: while(condição) comando;
ou
while(condição) 
{ 
comandos;
}
A condição pode ser qualquer expressão, e 
verdadeiro é qualquer valor não-zero. Quando a 
condição é falsa, o controle do programa passa para 
o primeiro comando após o bloco de código do 
comando while.
L
i
n
g
u
a
g
e
m
 
C
Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 16
while
Exemplo:
void main(){
int t=1, dia;
while(t) {
printf(“Digite um dia da semana, ou <99> para encerrar: 
“);
scanf(“%d”,&dia);
switch(dia) {
case 1: printf(“\nDomingo\n”);
break;
.
case 7: printf(“\nSábado\n”);
break;
case 99: printf(“\nEncerrando\n”);
t=0;
break;
default: printf(“\nNúmero inválido!!!\n”);
} /* fim switch*/
} /* fim while */
} /* fim main() */
L
i
n
g
u
a
g
e
m
 
C
Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 17
do-while
Ao contrário dos laços for e while, que testam as 
condições no início, o do-while testa a condição no 
final. Este laço sempre será executado pelo menos uma 
vez e repete até que a condição se torne falsa.
Sintaxe: do 
{
comando
} while (condição);
Exemplo:
do
{
scanf(“%d”,&num);
}while(num!=99);
L
i
n
g
u
a
g
e
m
 
C
Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 18
Comandos de desvio
São utilizados para realizar desvios dentro de um 
programa.
• break:O comando break tem duas finalidades. A primeira é 
de terminar um case num comando switch e a 
segunda é de forçar o término imediato de um laço 
de repetição.
Exemplo:
for(t=0;t<100;t++){ 
print(“%d \n”,t); 
if(t==10) break; }
L
i
n
g
u
a
g
e
m
 
C
Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 19
Comandos de desvio
• continue:
Força a repetição (retorna ao início do laço 
e testa a condição).
Exemplo:
for(x=0;x<100;x++){ 
if (x%2) continue;
print(“%d \n”,x); 
}
L
i
n
g
u
a
g
e
m
 
C
Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 20
Comandos de desvio
• goto:
Apesar das linguagens possuírem estruturas de 
controle eficientes, também é disponibilizado o 
comando de desvio. Deve-se ter um cuidado muito 
grande, pois a sua utilização em demasia ou de forma 
incorreta tende a tornar os programas ilegíveis. 
A sua utilização é simples, basta declarar um rótulo 
(identificador aceito pela linguagem C seguido de dois 
pontos) e, de algum ponto do programa estabelecer o 
desvio através da declaração goto rótulo;
Sintaxe: goto rótulo;
rótulo:
L
i
n
g
u
a
g
e
m
 
C
Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 21
Comandos de desvio
Exemplo:
int x=1;
retorno:
printf(“%d”,x);
x++;
if(x<=100) goto retorno;
L
i
n
g
u
a
g
e
m
 
C
Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 22
Comandos de desvio
• exit():
Assim como o comando break força o término de um 
laço, a função exit() força o término de execução de 
um programa, retornando ao sistema operacional.
Sintaxe:
void exit(código_de_erro);
onde código_de_erro é utilizado para indicar o 
estado de retorno. Quando for zero, indica término 
normal de execução e outros valores são utilizados 
para indicar algum tipo de erro (retornado para a 
variável ERRORLEVEL em arquivos “batch” do 
DOS).
L
i
n
g
u
a
g
e
m
 
C
Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 23
Lista de Exercícios
1. Anacleto tem 1,50 metro e cresce 2 centímetros por 
ano, enquanto Felisberto tem 1,10 metro e cresce 3 
centímetros por ano. Calcule e exiba quantos anos 
serão necessários para que Felisberto seja maior 
que Anacleto.
2. Leia 10 números inteiros positivos e imprima se são 
números perfeitos.
Nota: Número perfeito é aquele cuja soma de seus 
divisores, exceto ele próprio, é igual ao número.
Exemplo: 6 é perfeito porque 1 + 2 + 3 = 6.
3. Calcule e apresente o valor de S no seguinte 
somatório:
S = 1/225 – 2/196 + 4/169 – 8/144 + ... + 16384/1

Continue navegando