Você está na página 1de 8

Lista de Exerccios Estruturas Condicionais e Laos

EB302 A Algoritmos e Programao e Computadores


Prof. Luis Meira

A lista de exerccios visa que voc desenvolva a declarao e manipulao de variveis,


operaes aritmticas e lgicas, comandos printf, scanf, if/else, switch, for, while e do while.
um material de estudo para a primeira prova e de extrema importncia na fixao do
contedo. Assim, faremos algumas consideraes que podem vir a ser teis para voc.

Sada padro (printf)


A tela o dispositivo padro para sada de dados. O comando printf apresenta nmeros e
caracteres na tela da seguinte forma:
printf("%d",a); /* Mostra o contedo da varivel a. */
A simbologia de converso a mesma usada no scanf. Esta sada tambm pode ser formatada
indicando o nmero de dgitos do nmero. O %d o especificador de formato da varivel a ser
impressa que, neste caso, uma varivel do tipo inteiro.

Entrada padro (scanf)


O teclado o dispositivo padro para entrada de dados. O comando scanf l nmeros e
caracteres digitados no teclado da seguinte forma:
scanf("%d",&a);
onde a uma varivel inteira e &a e o endereo em memria da varivel a e %d o
especificador de formato para uma varivel do tipo inteiro.

Estrutura condicional simples (if)


Um comando condicional simples aquele que permite a escolha de um grupo de instrues
(bloco de comandos) quando uma determinada condio lgica satisfeita.
if (expresso) {
bloco de comandos;
}

Estrutura condicional composta (if/else)

Um comando condicional composto aquele que permite a escolha de um bloco de


comandos, quando uma determinada condio satisfeita, e de outro bloco de comandos
quando a condio no satisfeita.
if (expresso) {
bloco 1 de comandos;
} else {
bloco 2 de comandos;
}
Note que, um bloco de comandos pode ter outros comandos condicionais, que o caso de
if/else aninhados:

#include <stdio.h>
int main() {
int a,b,c;
printf("Digite a, b, e c: ");
scanf("%d %d %d", &a, &b, &c);
if (a > b) { /* Neste caso, as chaves so obrigatrias. */
printf("%d maior que %d\n", a, b);
if (b > c)
printf("%d maior que %d\n", b, c);
else /* b <= c */
printf("%d menor ou igual a %d\n", b, c); }
else { /* a <= b */
printf("%d menor ou igual a %d\n", a, b);
if (b < c)
printf("%d menor que %d\n", b, c);
else /* b >= c */
printf("%d e maior ou igual a %d\n", b, c);
}
return(0);

Comando Switch (switch/case)


Frequentemente desejamos evitar aninhar vrios comandos if para tratar mltiplas
condies. O comando switch faz este papel verificando o contedo de variveis dos tipos int e
char.

switch (varivel) {
case contedo1: bloco de comandos break;
case contedo2: bloco de comandos break;
...
case contedon: bloco de comandos break;
default: bloco de comandos
}
O comando break encerra instruo assim que o case for atendido, bem como o
default executado quando nenhum case considerado verdadeiro.

Comandos de repetio (do while, while e for)


Comando do while

O comando do while uma instruo de repetio, onde a condio de


interrupo testada aps executar o comando.
do {
bloco de comandos
} while (expresso lgica);
O bloco de comandos repetido at que a expresso seja falsa. Suponha, por
exemplo, um programa pra dizer se um nmero inteiro lido da entrada padro par
ou mpar. Desejamos que o programa execute at digitar um nmero negativo.
#include <stdio.h>
int main() {
int n;
do {
printf("Digite um nmero inteiro:");

scanf("%d", &n);
if ((n%2)==0)
printf("O nmero par\n");
else
printf("O nmero mpar\n");
} while (n >= 0);

Comando while
O comando while uma instruo de repetio, onde a expresso lgica
testada antes de executar o comando. Sua estrutura bsica envolve quatro etapas:
inicializao de uma varivel de controle, teste de interrupo envolvendo a varivel
de controle, execuo do bloco de comandos, e atualizao da varivel de controle.
inicializao
while(expresso lgica) {
bloco de comandos
atualizao
}
Suponha, por exemplo, um programa que soma n valores reais lidos da
entrada padro e apresenta o resultado na sada padro:
#include <stdio.h>
int main() {
int i,n; /* varivel de controle i */
float soma,num;
printf("Entre com a quantidade de nmeros a serem somados: ");
scanf("%d", &n); /* inicializao */
i = 1;
soma = 0.0;
while (i <= n) { /* expresso */ /* bloco de comandos */
printf("Digite o %do. nmero:", i);
scanf("%f", &num);
soma = soma + num;
i = i + 1; /* atualizao */
}
printf("O resultado da soma e %f\n", soma);
return(0);
}

Comando for

O comando for uma simplificao do comando while, onde a inicializao da


varivel de controle, a expresso lgica envolvendo a varivel de controle e a
atualizao da varivel especificada no prprio comando. Sua implementao feita
com o comando while, portanto seu comportamento o mesmo: aps a inicializao,
a expresso lgica testada. Se for verdadeira, o bloco de comandos executado.
Aps execuo, a varivel de controle atualizada, a expresso lgica verificada, e o
processo se repete at que a expresso seja falsa.
for (inicializao; expresso; atualizao) {
bloco de comandos
}
Por exemplo, um programa para somar n nmeros tem o seguinte cdigo:
#include <stdio.h>
int main() {
int n,i;
float soma, num;
printf("Entre com a quantidade de nmeros a serem somados: ");
scanf("%d", &n);
for (i=1, soma = 0.0; i <= n; i=i+1, soma = soma + num) {
printf("Digite o %do. nmero:", i);
scanf("%f", &num);
}
printf("O resultado da soma e %f \n", soma);
return(0);
}

Exerccios
1. Escreva um programa que leia um nmero inteiro e imprima na tela se ele par ou
mpar.

2. Escreva um programa que leia uma data no formato dd/mm/aaaa e escreva por
extenso:
Ex: Entre com a data 01/04/2016
Imprima: 01 de abril de 2016.

3. Reescreva o programa do exerccio anterior usando o comando switch.

4. Escreva um programa que simule o funcionamento de uma calculadora simples com


quatro operaes (+, -, *, /). Este programa dever ler os operandos e o operador, e
exibir o resultado da operao. Use apenas if-else.

5. Reescreva o programa do exerccio 4 usando apenas o operador switch.

6. Escreva um programa que l um nmero inteiro do teclado e imprime "SIM" se o


nmero for par e maior do que 10, ou for mpar e menor do que 50. Caso contrrio o
programa deve imprimir "NAO".
7. Qual o valor lgico que as seguintes expresses enviam para o if?
a) if (10 == 5)
b) if ((2+3) == -(-2 -3))
c) if (x=5)
d) if (x=0)
8. Faa um programa com uso do switch, que receba como entrada um ano e verifique se
bissexto. OBS: So bissextos todos os anos mltiplos de 400. No sendo mltiplo de
400, so bissextos todos os anos mltiplos de 4 mas que no so mltiplos de 100.
9. Faa um programa que leia os trs lados de um tringulo e informe se ele issceles,
escaleno ou equiltero. OBS: equiltero: possuem os trs lados iguais; issceles: possui
pelo menos dois lados iguais; escaleno: trs lados distintos.
10. Escreva um programa que solicite ao usurio um nmero e um caractere. Em seguida,
ter que preencher n linhas, cada uma delas com n caracteres.
11. Escreva um programa l trs nmeros e os imprime em ordem (ordem crescente).
12. Faa um programa que l dois nmeros inteiros positivos a e b. Utilizando laos, o seu
programa deve calcular e imprimir o valor ab .
13. Escreva um programa que imprima o quadrado de todos os inteiros de 1 a 20, um por
linha.
14. Escreva um programa que leia dez nmeros inteiros e imprima na tela quantos destes
nmeros so pares e quantos so mpares.

15. Escreva um programa que ter as seguintes opes: 1 - Cadastrar um produto. 2 Buscar informaes de produto. 3 - Remover um produto. 4 - Sair do Programa. De
acordo com a opo escolhida, o programa imprime uma mensagem dizendo qual
ao est sendo executada. Aps realizar uma das operaes, o programa volta para o
menu.
16. Escreva um programa que pea ao usurio um nmero positivo e faa a validao.
Caso ele no seja positivo, imprima uma mensagem informando o erro e pea para
digitar outro nmero.
17. Faa um programa que leia n nmeros e calcule a mdia aritmtica destes nmeros.
18. Faa um programa que leia um nmero inteiro e imprima quantos dgitos este nmero
possui.
19. Escreva um programa que faa o clculo de n! (fatorial), n inteiro, no muito grande.
Retorne: n! se n 0; 1 caso contrrio.
20. Faa um programa para ler um nmero positivo n 2 e decidir se este nmero
primo. Um nmero positivo n 2 primo se for divisvel apenas por 1 e por n. Note
que o nmero 1 no primo.
21. Faa um programa que leia nmeros at que seja digitado um inteiro positivo.
22. Escreva um programa que leia um nmero inteiro positivo e imprima a representao
deste nmero em algarismos romanos.
23. Faa um programa que imprima os 100 primeiros nmeros inteiros usando while.
24. Refaa o programa anterior com do while.
25. Refaa o programa anterior usando for.
26. Implemente um programa que, dada uma letra, indique qual o estado civil de uma
pessoa.
27. Escreva um programa que leia uma data e verifique se esta vlida ou no.
28. Escreva um programa que imprima os 10 primeiros nmeros inteiros, cada um em
uma linha.
29. Escreva um programa que calcule a soma e o produto dos primeiros n nmeros
naturais.

30. Faa um programa que leia as 3 notas de um aluno e informe se ele deve ser aprovado
(media >= 7), se deve fazer a prova substitutiva (media >= 5) ou se est reprovado
(mdia < 5).

Você também pode gostar