Anda di halaman 1dari 10

FICA FACULDADES INTEGRADAS CAMES DISCIPLINA: ADS Estrutura de Dados - C. PROFESSOR: MS.c.

c. Euclides Peres Farias Junior Curitiba - Paran 1. Semestre/2011. AULA 02 Reviso da Programao na Linguagem C.

LAOS DE REPETIO (WHILE) enquanto e (FOR) para

Existem situaes em que necessrio repetir o trecho de um programa um determinado nmero de vezes, o que pode ser conseguido de duas formas. Na primeira ser escrito o mesmo trecho tantas vezes quanto necessrio (trabalhoso), na segunda forma podem ser utilizados la;cos de repetio, conhecidos tambm como loopings ou malhas de repetio. LAOS CONDICIONAL PR TESTE Essa estrutura realiza um teste lgico no incio do lao de repetio, verificando se permitido executar o trecho de instrues subordinado a ele. A estrutura while tem o seu funcionamento controlado por condio, portanto pode executar um determinado conjunto de instrues enquanto a condio verificada permanecer Verdadeira. No momento em que a condio se torna Falsa, o processamento da rotina desviado para fora do lao de repetio. Caso essa condio Falsa logo no incio do lao de repetio, as instrues dele so ignoradas. Case seja necessrio executar mais de uma instruo para uma condio verdadeira dentro de um lao, elas devem estar em um bloco com smbolos de chaves. A instruo while deve ser escrita: while <(condio> { <instrues para condio verdadeira> } PROBLEMA 1: Programa Clculo Para atender a essa necessidade, necessrio definir um contador de vezes para controlar a execuo do programa, e cada vez que for executado o trecho desejado do programa, esse contador deve ser incrementado de mais 1. Observe os detalhes para a soluo do problema: 1. cria uma varivel para servir como contador com valor inicial 1; 2. Enquanto o valor do contador for menor ou igual a 5, processar os passos 3, 4 e 5; 3. Ler os dois valores; 4. Efetuar o clculo, implicando o resultado em R; 5. Apresentar o valor calculado na varivel R; 6. Acrescentar ao contador 1; 7. Quando o contador for maior que 5, encerrar o processamento.

PROGRAMA EM C Verso 1: 1. /*Looping do tipo While Verso 1A*/ 2. #include <stdio.h> 3. int main(void) 4. { 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. } Note que na linha 5 so declaradas as variveis e na linha 6 a varivel I recebe um valor inicial de 6; na linha 7 comea efetivamente o condicional while, o qual apresenta uma condio de ENQUANTO (I <= 5) faa; nas linhas 9 e 10 pede para entrar com um valor para as variveis A e B; na linha 11 a varivel R recebe o somatrio entre A e B; aps na linha 12 apresenta o resultado correspondente; Por fim, na linha 13, acontece o contador para a condicional, onde I acrescido de mais um a cada passo. Para a condio de incremento, a varivel tambm poderia ser representado por I ++ (possui o mesmo efeito de acrscimo); PROGRAMA EM C Verso 2: 1. /*Looping do tipo While Verso 2*/ 2. #include <stdio.h> 3. int main(void) 4. { 5. 6. 7. 8. 9. 10. 11. int A, B, R, RESP; RESP = 1; while (RESP == 1) { printf(\n\nEntre com um valor para A ..: ); scanf(%d, &A); printf(\n\nEntre com um valor para B ..: ); scanf(%d, &B); R = A + B; } return 0; int A, B, R, I; I = 1; while (I <= 5) { printf(\n\nEntre com um valor para A ..: ); scanf(%d, &A); printf(\n\nEntre com um valor para B ..: ); scanf(%d, &B); R = A + B; printf(\nO resultado corresponde a ..: %d, R); I = I + 1;

12. 13. 14. 15. 16. 17. 18. } }

printf(\nO resultado corresponde a ..: %d, R); printf(\n Deseja continuar?); printf(\nTecle [1] para SIM / [2] para no ...: ); scanf(%d, &RESP); return 0;

Neste programa, o que mudou foram as linhas 5 e 6 onde 5 recebe variveis inclusive a varivel RESP e a 6, cuja varivel RESP recebe 1; a prxima mudana na linha 7 no while, onde efetuada uma CONDIO DE IGUALDADE (RESP == 1 ) enquanto RESP for igual a 1, faa; a prxima mudana com relao a sada do programa, o qual o usurio pode optar por encerrar ou continuar no programa, atravs das linhas 13, 14 e 15. Programa do FATORIAL: Criar um programa em C que calcule o fatorial de um nmero qualquer. Supondo que o nmero seja 5, o programa deve apresentar o resultado 5! (fatorial de 5). Desta forma, temos que 5! = 5.4.3.2.1 ou 5! = 1.2.3.4.5, equivalente a 120. O Fatorial o produto dos nmeros naturais desde 1 at o inteiro n. Algoritmo: 1. Inicializar as variveis FATORIAL e CONTADOR com 1; 2. Solicitar o valor de um nmero para calcular a sua fatorial; 3. Multiplicar sucessivamente a varivel FATORIAL pela varivel CONTADOR; 4. Incrementar 1 varivel CONTADOR, efetuando o controle at o limite definido no passo 2; 5. Apresentar ao final o valor obtido. PROGRAMA EM C Verso 1: 1. //Looping do tipo while para o Fatorial 2. #include <stdio.h> 3. int main(void) 4. { 5. 6. 7. 8. 9. 10. 11. 12. int CONTADOR, N; long FATORIAL = 1; CONTADOR = 1; printf(\nPrograma FATORIAL\n); printf(\nFatorial do nmero : ); scanf(%d, &N); while (CONTADOR <= N) { FATRORIAL *= CONTADOR;

13. 14. 15. 16. 17. } }

CONTADOR ++; printf(\nO FATORIAL de %d equivale a : %d\n\n, N, FATORIAL); return 0;

Observe que o centro de controle deste programa est na condicional ENQUANTO CONTADOR for MENOR que N, faa. LAO CONDICIONAL PS-TESTE Essa estrutura faz um teste lgico no final de um lao de repetio. Ela parecida coma estrutura while. Seu funcionamento controlado tambm por condio. Esse tipo de lao executa um conjunto de instrues pelo menos uma vez antes de verifica a validade da condio estabelecida. Diferente da estrutura while que executa somente um conjunto de instrues enquanto a condio verdadeira. Desta forma do...while processa um conjunto de instrues, no mnimo uma vez, at enquanto a condio for verdadeira. A instruo do...while dever ser escrita: do { <faa instruo1 enquanto condio verdadeira>; <faa instruo2 enquanto condio verdadeira>; <faa instruo3 enquanto condio verdadeira>; <faa instruoN enquanto condio verdadeira>; } PROBLEMA CLCULO 2 Para exemplificar a utilizao dessa estrutura de lao, ser considerado como exemplo o mesmo programa anterior, que pede a leitura de dois valores, afetua a adio e apresenta o resultado cinco vezes. Algoritmo: 1. Criar uma varivel para servir como contador com valor inicial 1; 2. Ler os valores; 3. Efetuar o clculo, implicando o resultado em R; 4. Apresentar o valor calculado na varivel R; 5. Acrescentar ao contador 1; 6. Repetir os passos 2,3,4 e 5 enquanto o contador for menor ou igual a 5.

Programa em C Verso 1B /*Looping do tipo Do .. While Verso 1b*/ #include <stdio.h> int main(void) { int A, B, R, I=1; do { printf(\n\nEntre com um valor para A ..: ); scanf(%d, &A); printf(\n\nEntre com um valor para B ..: ); scanf(%d, &B); R = A + B; printf(\n\nO Resultado corresponde a : %d, R); printf(\n\nTecle [1] para SIM e [2] para NAO : ); scanf(%d, &RESP); } while (RESP == 1); return 0; } PROBLEMA 2 FATORIAL 2 Utilizando a instruo do....while, exibida uma segunda verso do progrrama para clculo da fatorial de um nmero qualquer, como segue: Fazer um programa que calcule o fatorial de um nmero qualquer. Algoritmo: 1. Inicializar as variveis FATORIAL e CONTADOR com 1; 2. Solicitar o valor de um nmero para calcular a sua fatorial; 3. Multiplicar sucessivamente a varivel FATORIAL pela varivel CONTADOR; 4. Incrementar 1 varivel CONTADOR, realizando o controle enquanto o limite for menor ou igual ao valor definido no passo 2; 5. Apresentar ao final o valor obtido. Programa em C /*Looping do tipo Do While para Fatorial */ #include <stdio.h> int main(void) {

int CONTADOR, N; long FATORIAL = 1; CONTADOR = 1; printf(\n\nPrograma FATORIAL\n); printf(\nO Fatorial do nmero : ); scanf(%d, &N); do { FATORIAL *= CONTADOR; CONTADOR ++; } while (CONTADOR <= N); printf(\n\nO Fatorial de %d equivale a %d\n\n, N, FATORIAL); return 0; }

LAO COM VARIVEL DE CONTROLE ( FOR) para

Foram apresentadas anteriormente duas formas de elaborar laos de repetio. Com as tcnicas mostradas possvel elaborar rotinas que executem um lao, um determinado nmero de vezes, coma utilizao de um contador ou mesmo de uma varivel que aguarde a resposta ao usurio. Independentemente da forma de tratamento, ela denominada varivel de controle. Uma outra forma de facilitar o uso de contadores finitos sem usar as estrutura de laos anteriores, laos de repetio com while e do...while, passam a ser utilizados quando no se conhece de antemo o nmero de vezes que uma determinada sequencia de instrues deve ser executada. Os laos de repetio que possuem um nmero finito de execues podem ser processados por meio do lao for. O lao de repetio tem o funcionamento controlado por uma varivel contador, que pode ser crescente ou decrescente, tendo como sintaxe: for (<incio>; <fim>; <incremento>) { <instrues1>; <instrues2>; <instruesN>; }

em que: <incio> <fim> - uma instruo de atribuio com o valor inicial do lao; - uma instruo de condio com o valor final do lao;

<incremento> - uma expresso com o incremento do lao. PROBLEMA 1: Programa da contagem crescente Fazer um programa em C que escreva na tela os valores 1,2,3,4,56,7,8,9 e 10; Algoritmo: 1. Definir para a varivel I a faixa de frequncia de contagem de 1 at 10; 2. medida que ocorrer cada contagem, o valor de I deve ser apresentado na tela. Programa em C: /*looping crescente de 1 em 1*/ #include <stdio.h> int main(void) { int I; for (I = 1; I <= 10; I++) printf(I = %2d\n, I); return 0; } O primeiro argumento da funo for() inicializa a varivel contador com 1, o segundo argumento verifica se a varivel atingiu o valor limite (I <= 10) e o terceiro se encarrega de executar o incremento de 1 em 1 varivel em uso. OBSERVAO: Para este mesmo programa, em forma de nmeros DECRESCENTE, o I inicializado com 10, a condicional dever ser de <= (menor ou igual) e no >=(maior ou igual) e o incremento dever ser ao invs de ++(mais) deve-se colocar --(menos). PROBLEMA: Programa Crescente 3 Fazer um programa em C que apresente na tela os valores: 2, 5, 8, 11 e 14. Algoritmo: 1. Definir para a varivel A o valor inicial 1; 2. Definir para a varivel B o valor inicial 1; 3. Executar o lao at que a soma de A com B atinja o valor 15;

4. A varivel a deve variar de dois em dois e a varivel B deve variar de um em um. Programa em C: /*Dois contadores*/ #include <stdio.h> int main(void) { int A, B, R; for (A = 1, B = 1; A + B <= 15; A += 2, B++) { R = A + B; printf(O resultado e de : %3d\n, R); } return 0; } A varivel A comea com 1 e avana de 2 em 2, a varivel B comea com 1 e avana de 1 em 1. Ambas as variveis so acrescidas de seus respectivos incrementos at que a soma delas chegue ao mximo a 15. Programa de Clculo 2 : Criar um programa em C que leia dois valores para as variveis A e B. O programa deve somar os dois valores e apresentar o resultado repetindo a sequencia cinco vezes. Algoritmo: 1. Definir um contador que varia de 1 a 5; 2. Ler os valores; 3. Efetuar o clculo, implicando o resultado em R; 4. Apresentar o valor calculado na varivel R. Programa em C: /*Looping do tipo FOR 1C */ #include <stdio.h> int main(void) { int A, B, R, I; for (I = 1; I <= 5; I ++) { printf(\n\nEntre com um valor para A : ); scanf(%d, &A);

printf(Entre com um valor para B ..: ); scanf(%d, &B); R = A + B; printf(\nO resultado corresponde a ..: %d, R); } return 0; } PROBLEMA 4 Programa Fatorial Utilizando a instruo FOR(), faa um programa em C que apresente o resultado da fatorial de um nmero qualquer lido pelo teclado. Algoritmo: 1. Inicializar as variveis FATORIALL e CONTADOR com 1; 2. Solicitar o valor de um nmero para calcular a sua fatorial; 3. Multiplicar sucessivamente a varivel FATORIAL pela varivel CONTADOR; 4. Incrementar 1 varivel CONTADOR efetuando o controle at o limite definido com passo 2. Programa em C: /*Looping do tipo FOR para Fatorial*/ #include <stdio.h> int main(void) { int CONTADOR, N; long FATORIAL = 1; printf(\n\nPrograma FATORIAL \n); printf(\nFatorial do numero .: ); scanf(%d, &N); for(CONTADOR = 1; CONTADOR <= n; CONTADOR ++) FATORIAL *= CONTADOR; printf(\nFatorial de %d equivale a %d\n\n, N, FATORIAL); return 0; }

LISTA DE EXERCCIOS
1. Apresentar todos os valores numricos inteiros mpares situados na faixa de 0 a 20. Para verificar se o nmero mpar, na malha verificar a lgica dessa condio com a instruo if, perguntando se o nmero mpar; sendo, mostre-o, no sendo, passe para o prximo passo. Sugesto: a varivel utilizada para a contagem deve obrigatoriamente ser inicializada com um valor 0(zero). Utilize o operador % para obter o resultado do resto de uma diviso de valores inteiros e assim verificar se o nmero par ou mpar (lembre-se de que um valor mpar quando, dividido por dois o resto diferente de zero, ou seja uma valor qualquer); 2. Apresentar o somatrio obtido (1+2+3+4.....+97+98+99+100); dos cem primeiros nmeros inteiros

3. Apresentar os resultados de uma tabuada para um nmero qualquer a ser fornecido pelo usurio. Sugesto: procure apresentar o resultada da tabuada em seu formato matemtico padro; 4. Apresentar todos os nmeros divisveis por 4 que sejam menores que 200. Sugesto: a varivel utilizada para a contagem deve obrigatoriamente ser inicializada com o valor 1(um). Utilize o operador % (resto de diviso) para verificar se o nmero divisvel por quatro (lembre-se de que um valor divisvel por outro quando o resto da diviso for igual a zero); 5. Apresentar os quadrados dos nmeros inteiros de 15 a 180; 6. Apresentar as potncias de 3, variando de 0 a 9. Deve ser considerado que qualquer nmero elevado a zero 1, e elevado a 1 ele prprio; 7. Faa um programa que apresenta a srie de Fibonacci at o dcimo quinto termo; 8. Faa um programa que leia uma quantidade desconhecida de nmeros e conte quantos deles esto nos seguintes intervalos (0 25,9), (26 59,9) e (76 100). A entrada de dados deve terminar quando for lido um nmero negativo. 9. Foi realizada uma pesquisa de algumas caractersticas fsicas da populao de certa regio, a qual coletou os seguintes dados referentes a cada habitante para serem analisados: Sexo (masculino e feminino); cor dos olhos (azuis, verdes ou castanhos); cor dos cabelos (louros, castanhos ou pretos); idade; altura e peso. Apresente a mdia da idade dos participantes, a mdia do peso e da altura de seus habitantes, a porcentagem de pessoas do sexo feminino e masculino. Quantas pessoas possuem olhos verdes e cabelos louros? A cada iterao dever ser perguntado ao usurio se deseja continuar ou no. Os resultados devero ser apresentados apenas quando o usurio no desejar mais inserir dados; 10. Faa um algoritmo que l um valor n inteiro e positivo e que calcula e escreve o fatorial de N (n!).

REFERENCIAS

Livro da srie Estudo Dirigido - Linguagem C - Jos Augusto N. G. Manzano 13a. Edio Revisada. - Editora rica. Orientadora do curso de ADS Fernanda Ramos ramosrs@gmail.com

Anda mungkin juga menyukai