Вы находитесь на странице: 1из 8

Introduo Cincia da

Computao
Introduo
Linguagem C:
Parte II
Prof. Ricardo J. G. B. Campello

Sumrio









Seleo Simples
Seleo Composta
Seleo Encadeada
Seleo de Mltipla Escolha
Repetio com Teste no Incio
Repetio com Teste no Final
Repetio com Varivel de Controle
Exerccios

Seleo Simples


Sintaxe:

if ( condio )
{

instrues;

/* comandos do bloco verdade */

if uma palavra reservada (palavra-chave)

condio uma varivel ou expresso com valor lgico




Exemplo:
#include <stdio.h>
void main(void){

Seleo Simples

int A, B, C;
printf("Entre com 3 nmeros inteiros:\n");
scanf("%d%d%d", &A, &B, &C);

verdadeiro (valor no nulo) ou falso (valor nulo)

if (A + B < C)

instrues qualquer conjunto de comandos vlidos em C


Se instrues possui apenas uma instruo, os delimitadores do
bloco verdade { e } podem ser omitidos

printf("%d maior que %d", C, A+B);


}

Seleo Composta


Sintaxe:

Seleo Composta


Exemplo:

if ( condio )
{

#include <stdio.h>

instrues 1;

/* comandos do bloco verdade */

void main(void){

int A, B, C;

else

printf("Entre com 3 nmeros inteiros:\n");

scanf("%d%d%d", &A, &B, &C);

instrues 2;

/* comandos do bloco falsidade */

if (A + B < C) printf("%d maior que %d", C, A+B);

}


else printf("%d maior ou igual a %d", A+B, C);

Se condio for verdadeira, instrues 1 sero executadas, caso


contrrio, instrues 2 sero executadas

Seleo Composta


Operador ?


Sintaxe: (Exp1 ? Exp2 : Exp3)




Seleo Encadeada
C permite o encadeamento de estruturas de seleo


O encadeamento pode ser homogneo ou heterogneo

Exp1, Exp2 e Exp3 so constantes, variveis ou expresses

Valor resultante:


Exp2: se Exp1 for verdadeira (valor no nulo)

Exp3: se Exp1 for falsa (valor nulo)

Exemplo:

#include <stdio.h>
void main(void){
int idade, menor;
printf("Entre com a idade:\n");
scanf("%d", &idade);
menor = ( idade < 18 ? 1 : 0);
}

Analisem o cdigo a seguir verificando:




O encadeamento dos if, if-else, if-else-if

O uso ou no de blocos de instrues { ... }

Seleo Encadeada
#include<stdio.h>
void main(void){
int A, B;
printf("Entre com dois inteiros, A e B:\n");
scanf("%d%d", &A, &B);
if (A > B){
printf("A maior que B\n");
if (A>10*B) printf("Na verdade, A mais que 10x maior que B\n");
else
if (A<=2*B) printf("Porm, A no mais que o dobro de B\n");
}
else
if (A == B) printf("A e B so iguais");
else printf("A menor que B");
}

Seleo de Mltipla Escolha




Sintaxe:
switch ( seletor ) {
case valor_1 :
instrues 1;
break;
case valor_2 :
instrues 2;
break;
...
case valor_n :

instrues n;
break;
default:
instrues;
}

seletor : qualquer varivel ou expresso cujo


valor seja um caractere ou um nmero inteiro
(possivelmente expresso com valor lgico)
valor_i : valor inteiro ou caractere


i-simo conjunto de instrues ser


executado se valor_i = valor do seletor

break : desvia o fluxo de execuo para a


instruo seguinte ao comando switch



no obrigatrio
porm, se no for inserido ao final do i-simo
conjunto de instrues, quando este conjunto
for executado o (i+1)-simo conjunto tambm
ser executado (at que se encontre um break)

Seleo de Mltipla Escolha


#include<stdio.h>
void main(void){
char menu;
printf("Entre com a Estao do Ano (p, v, o ou i) e ENTER:\n");
scanf("%c", &menu);
switch ( menu ) {
case 'p':
printf("Setembro a Dezembro");
break;
case 'v':
printf("Dezembro a Maro");
break;
case 'o':
printf("Maro a Junho");
break;
case 'i':
printf("Junho a Setembro");
break;
default:
printf("Entrada Invlida!");
}
}

Repetio com Teste no Incio




Comando while


Equivale ao enquanto do pseudo-cdigo

Verifica antes de cada execuo se permitido


executar o trecho do programa dentro do lao:


O trecho repetido enquanto uma condio for verdadeira

Quando a condio se tornar falsa, a repetio interrompida

Se j na primeira vez a condio falsa, as instrues


internas no sero executadas

Repetio com Teste no Incio




Repetio com Teste no Incio

Sintaxe:

Exemplos:

while ( condio )

#include<stdio.h>
void main(void){
while (1) printf("Devo Estudar Mais!");
}

instrues;
}





#include<stdio.h>
void main(void){
int contador = 0;
while (contador < 10){
printf("Devo Estudar Mais!\n");
contador++;
}
}

condio uma varivel ou expresso com valor lgico


verdadeiro (valor no nulo) ou falso (valor nulo)

instrues qualquer conjunto de comandos vlidos em C


Se instrues possui apenas uma instruo, os delimitadores do
bloco verdade { e } podem ser omitidos

Repetio com Teste no Final

Repetio com Teste no Final





Comando do while

do {

Repete um trecho do programa enquanto


uma determinada condio for verdadeira
Como o teste feito no final do lao, os
comandos internos sero executados pelo
menos uma vez !

Sintaxe:
instrues;
} while ( condio );

condio uma varivel ou expresso com valor lgico




verdadeiro (valor no nulo) ou falso (valor nulo)

instrues um (conjunto de) comando(s) vlido(s) em C

Repetio com Teste no Final




Exemplo:

Repetio com Var. de Controle




#include<stdio.h>
void main(void){
int no = 0;
do {
printf("Entre com um inteiro entre 1 e 10:\n");
scanf("%d", &no);
} while (no<1 || no>10);
printf("A opo escolhida foi: %d", no);
}

Comando for


Utiliza uma ou mais variveis de controle

Pode fazer o papel do para em pseudo-cdigo




Porm, em C este comando mais flexvel que isso

Repetio com Var. de Controle




Sintaxe:

condio: varivel ou expresso com valor lgico




incremento: modificao do(s) valor(es) da(s) var(s). de controle

inicializao, condio e incremento so todos opcionais !




Se instrues possui apenas uma instruo, os delimitadores do


bloco verdade { e } podem ser omitidos

repetio por um nmero de vezes no pr-estabelecido

Exemplo 1 (passo unitrio positivo):


#include<stdio.h>
void main(void)
{
int cont;
for(cont = 1 ; cont <= 10; cont++)
printf("Devo Estudar Mais!\n");
}

lao ser repetido enquanto esta condio for verdadeira (no nula)

pode tambm, por exemplo, fazer o mesmo papel de while

Repetio de lao por nmero pr-estabelecido de vezes




inicializao: atribuio de valor(es) (s) varivel(is) de controle

Repetio com Var. de Controle

for(inicializao ; condio ; incremento) { instrues ; }




repetio de lao por um nmero pr-estabelecido de vezes

Equivale a: para cont de 1 at 10 passo 1 faa

Repetio com Var. de Controle




Repetio de lao por nmero pr-estabelecido de vezes




Repetio com Var. de Controle




Exemplo 2 (passo negativo, no unitrio):

#include<stdio.h>
void main(void)
{
int cont;
for(cont = 100 ; cont >= 0; cont-=5)
printf("%d\n", cont);
}


Repetio por nmero no pr-estabelecido de vezes

#include<stdio.h>
void main(void)
{
int no = 0;
for( ; no<1 || no>10; ){
printf("Entre com um inteiro entre 1 e 10:\n");
scanf("%d", &no);
}
}

Equivale a: para cont de 100 at 0 passo 5 faa

Repetio com Var. de Controle




Comando for permite mltiplas variveis de controle...




No exemplo acima o lao (sem instrues) simplesmente


incrementa x com passo 100 e y com passo 1 at que y2
passe a ser maior que x (exemplo meramente ilustrativo)

Equivale a: enquanto (no < 1 ou no > 10) faa

Comandos break e continue




Exemplo:
#include<stdio.h>
void main(void)
{
int x, y;
for(x=0,y=0 ; y*y <= x; x+=100,y+=1);
}

Exemplo:

O comando break interrompe imediatamente qualquer


comando de repetio, independente das condies de
parada do comando terem ou no sido satisfeitas
O comando continue fora um desvio do fluxo de
execuo do programa para o incio do lao, pulando
instrues internas ao lao subsequentes ao comando
Exemplo...

Exerccios
Comandos break e continue


Sugesto de metodologia de estudos ao resolver os


exerccios a seguir:

Exemplo ( lao infinito ):




#include<stdio.h>
void main(void){
int x;
for( ; ; ){
printf("Entre com opo 1 a 5, ou 0 para sair:\n");
scanf("%d", &x);
if (x>=1 && x<=5){
printf("Opo Escolhida: %d\n", x);
continue;
}
if (x==0) break;
else printf("Opo Invlida\n");
}
}




Exerccios


Faa um programa em C que leia do teclado


trs valores reais (A, B e C) e escreva na tela
se esses valores podem ser os comprimentos
dos lados de um tringulo ou no. Caso
possam, verificar e escrever no dispositivo de
sada se o tringulo eqiltero, issceles ou
escaleno

Resolva o problema em pseudo-cdigo, para se preocupar


inicialmente apenas com a lgica de soluo, e no com
detalhes de sintaxe de linguagem de programao
Faa um teste de mesa para se certificar que seu pseudocdigo est correto
Transcreva o pseudo-cdigo em linguagem C
Compile e rode o cdigo nos laboratrios da graduao ou
em casa para se certificar que o programa est correto

Exerccios


Exerccio: escreva um programa C que leia o cdigo de


um determinado produto e mostre a sua classificao



Utilize seleo de mltipla escolha (comando switch)


Utilize a seguinte tabela como referncia:

Cdigo:

Classificao:

Alimento no perecvel

2, 3 ou 4

Alimento perecvel

5 ou 6

Vesturio

Higiene pessoal

8 a 15

Limpeza e utenslios domsticos

Qualquer outro cdigo

Invlido

Exerccios

Exerccios


Faa um programa em C, utilizando o comando while,


que calcule a mdia aritmtica de um conjunto de
nmeros inteiros pares fornecidos pelo usurio:




Utilize o comando for e escreva


um programa, em C, que calcule
e escreva o valor do nmero S:

O valor de parada ser 0


O usurio poder entrar com nmeros mpares; porm, esses
no devem ser considerados nos clculos

S = 1 + 3 + 5 + 7 + ... + 99

50 49 48 47

O programa dever retornar como sada (resposta) a


quantidade de nmeros pares digitados e a mdia dos mesmos

Refaa o programa acima utilizando o comando repita

Exerccios Adicionais

Exerccios


Elabore um programa C que efetue a


soma de todos os nmeros mpares que
so mltiplos de 3 e que se encontram
no intervalo de 1 a 500

Traduza para C os pseudo-cdigos dos


exemplos de estruturas de seleo e
repetio (aula de estruturas de controle)


Compile e execute os programas em


laboratrio ou no seu computador pessoal
para se certificar que funcionam!
Pesquise as bibliotecas C caso alguma
funo (por exemplo matemtica) seja
necessria

Вам также может понравиться