Beruflich Dokumente
Kultur Dokumente
onde a condio_lgica uma expresso composta por operadores relacionais e lgicos. O conjunto de instrues dentro do bloco de repetio s ser executado caso a condio_lgica resulte em um valor verdadeiro, caso contrrio, no ser executado. Ao atingir o final da instruo while(), o
52
computador automaticamente retorna para o incio da instruo e testar novamente a condio e todo o processo se repetir at que a condio resulte em um valor falso. Exemplo 1: programa em C para imprimir os valores de 1 at 10 no vdeo.
#include <stdio.h> #include <conio.h> int main() { int cont; cont = 1; while( cont <= 10 ) { printf(%d, cont); cont = cont + 1; } getch(); return(0); }
Exemplo 2: programa em C para calcular a mdia dos nmeros pares entre 1 e 100.
#include <stdio.h> #include <conio.h> int main() { int cont, soma; cont = 1; soma = 0; while(cont <= 100) { if(cont % 2 == 0 ) soma = soma + cont; cont = cont + 1; } printf(A soma dos nmeros pares %d, soma); getch(); return(0); }
Exemplo 3: programa em C para calcular e imprimir a mdia dos 50 alunos de uma sala de aluno. Suponha que cada aluno fez duas provas durante o semestre.
#include <stdio.h> #include <conio.h> int main() { int cont; float p1, p2, media; cont = 1; while(cont <= 50) { printf(Digite a primeira nota: ); scanf(%f, &p1); printf(Digite a segunda nota: ); scanf(%f, &p2); media = (p1+p2)/2; printf(A media do aluno %d %f, cont, media);
53
54
cont = cont + 1; } while(cont <= 100); printf(A soma dos nmeros pares %d, soma); getch(); return(0); }
55
onde: inicializao se refere a forma como a varivel de controle do lao ser inicializada; teste_lgico o teste que ser realizado a cada ciclo de execuo do lao de repetio. Para um valor verdadeiro o conjunto de instrues dentro do lao ser executado; incremento/decremento se refere a forma como a varivel de controle do lao ser alterada. A inicializao da varivel de controle ocorre apenas uma vez, na primeira vez que o lao for executado, mas tanto o teste lgico quanto o incremente ou o decremento sero executados todas as vezes. Exemplo 7: Refazendo o exemplo 1 usando a estrutura de repetio for().
#include <stdio.h> #include <conio.h> int main() { int cont; for(cont = 1; cont <= 10; cont = cont + 1) printf(%d, cont); getch(); return(0); }
Como pode ser percebido, a estrutura de repetio for() simplifica um algoritmo. Esse o motivo pela qual a estrutura preferida dos programadores. Dos trs parmetros pode-se omitir alguns. Os exemplos 8, 9 e 10 tm o mesmo efeito do exemplo 7. Exemplo 8
#include <stdio.h> #include <conio.h> int main() { int cont = 1; for(; cont <= 10; cont = cont + 1) printf(%d, cont); getch(); return(0); }
Exemplo 9
#include <stdio.h> #include <conio.h> int main() { int cont; for(cont = 1; cont <= 10; ) { printf(%d, cont); cont = cont + 1;
56
} getch(); return(0); }
Exemplo 10
#include <stdio.h> #include <conio.h> int main() { int cont = 1; for(; cont <= 10; ) { printf(%d, cont); cont = cont + 1; } getch(); return(0); }
verdadeiro
falso
verdadeiro
falso
57
A instruo: x = x + 1 equivalente a ++x e x++. Por outro lado, a instruo x = x 1 equivalente a --x e x--. A diferena entre a forma prefixada ou ps-fixada s aparece quando a instruo faz mais do que simplesmente incremente ou decrementar o valor da varivel. Por exemplo: y = 4; x = ++y; Neste caso o valor da varivel x ser 5 e o da varivel y tambm ser 5, porque o valor de y incrementado antes do operador de atribuio ser executado, ou seja, a prioridade do operador de incremento/decremento quando ele est na forma prefixada. Acompanhe o que acontece nesse prximo exemplo: y = 4; x = y++; Nesta situao, o operador de atribuio tem prioridade em relao ao operador de incremento/decremento. Neste caso o valor da varivel x = 4 e o da varivel y ser 5. Os operadores unrios (os que operam sobre um nico operando) tm prioridade em relao aos operadores binrios, ou seja, os operadores de incremento/decremento tem prioridade em relao aos operadores aritmticos. Por exemplo: x = a * b++ equivalente a x = a* (b++)
58
Por outro lado, o commando continue utilizado quando, em um comando de repetio, queremos encerrar a iterao corrente e passar para a prxima. Por exemplo:
... int k; for(k = 1; k <= 6; k++) if(k == 3) break; printf(%d\n, k); ...
59
4. Escreva um programa em C que leia 15 nmeros fornecidos pelo usurio. Imprima o maior valor informado. 5. Escreva um programa em C que leia um nmero inteiro e positivo. Imprimir sua tabuada no vdeo (considerar apenas o intervalo entre 0 e 10). O programa deve permitir reprocessamento. 6. Escreva um programa em C que leia vrios nmeros fornecidos pelo usurio. Imprima o menor valor informado. A finalizao da leitura dever ser definida pelo programador. 7. Escreva um programa em C que calcule o fatorial de um nmero inteiro e positivo. 8. Escreva um programa em C que leia um valor inteiro e positivo. Verifique se o nmero digitado primo. Um nmero primo se for divisvel apenas por 1 e por ele mesmo. 9. Escreva um programa em C que calcule o valor da expresso abaixo:
1 1 1 1 h = + + +L+ 1 2 3 20 10. Determine o valor armazenado na varivel x aps a execuo de cada instruo abaixo. Considere cada instruo independente da outra. Considere tambm os seguintes valores para cada uma das variveis: a = 1, b = 2, c = 2, d = 4. a) x = a + b++ + c++ + d++; b) x = ++a + b++ / (d++ + c); c) x = b++ + b++ + ++c + c; d) x = ++a + a + ++b + b;
60
11. Represente cada uma das sequncias de nmeros abaixo usando expresses matemticas (lei formao somatrio ou produtrio) e) 1 + 2 + 3 + 4 + .... + 20 f) 1 * 2 * 3 * 4 * ... * 20 1 1 1 1 g) + + + ... + 1 2 3 50 1 2 3 n 1 1 1 1 h) + + + ... + 1 2 3 n 1 1 1 1 1 i) + + ... 1 2 3 4 10 12. Indique o valor de cada uma das expresses abaixo. (Exerccio extrado do livro Treinamento em Linguagem C 2 edio, Victoriane Viviane Mizrahi) int i = 1, j = 2, k = 3, n = 2; float x = 3.3, y = 4.4; a) b) c) d) e) f) g) h) i) i < j+3 2*i-7 <= j-8 !(n-j) !n-j !x * !x i && j && k i || j 3 && 0 i < j && 2 >= k i < j || 2 >= k
13. Escreva um programa em C que multiplique dois valores inteiros e positivos sem utilizar o operador de multiplicao (*). 14. Criar um programa em C que imprima os 10 primeiros termos da srie de Fibonacci. A srie dada por: 1 1 2 3 5 8 ... 15. Escreva um programa em C que calcule e imprima a mdia de cada um dos 50 alunos de uma turma. Suponha que foram aplicadas 2 provas. Imprima tambm a situao de cada aluno (Aprovado / Reprovado) levando em considerao que a mdia para aprovao deve ser maior ou igual a 6. 16. Faa um programa em C que leia um nmero e imprima todos os seus divisores. 17. Escreva um programa em C que leia 15 nmeros fornecidos pelo usurio. Imprima quantos nmeros maiores que 30 foram digitados. 18. Desenvolva um programa em C que calcule o valor da expresso:
61
1 1 1 1 h = + + +L+ 1 2 3 n
Estrutura de repetio for()
19. Desenvolva um programa em C para calcular o valor da expresso: 1 2 3 4 y= + + + + Ln n n 1 n 3 n 4 20. Faa um programa em C para calcular o valor da expresso: 1 1 1 1 h = + L 1 2 3 n 21. Desenvolva um programa em C para calcular o valor da expresso: 1 2 3 n x = + + +L+ 1! 2! 3! n! 22. Chico tem 1,50m e cresce 2 centmetros por ano, enquanto que, Juca tem 1,10m e cresce 3 centmetros por ano. Escreva um programa em C que calcule e imprima quantos anos so necessrios para que Juca seja maior que Chico. 23. Criar um programa em C que calcule e imprima o valor de bn. O valor de n dever ser maior ou igual a zero e o valor de b dever ser inteiro.
1. Execute o teste de mesa para os trechos de programa abaixo e indique o valor armazenado em cada uma das variveis aps a execuo do programa. a) A = 1; S = 0; while (A<5) { S = S + A; A = A + 2; } b) A = 1; N = 0; S = 0; while (S < 12 ) { S = S + A; A = A + 1; N = N + 1; }
62
2. Faa o teste de mesa nos trechos de programa abaixo: a) A = 1; B = 4; S = 0; while (A <= 6 ) { if (A <= B) S = S + A*B; else S = S - A*B; A = A + 1; B = B 1; } b) G = 1; while (G <= 5) { C = 0; while (C < G) C = C + 1; G = G + 1; } 3. Construa o fluxograma para os itens a e b do exerccio anterior. 4. Dado o conjunto de instrues a seguir, coloque o comando de repetio adequadamente: a) executar um conjunto de instrues 10 vezes; b) executar um conjunto de instrues N vezes, onde N uma varivel informada pelo usurio. 5. Indique o valor de cada uma das expresses abaixo. (Exerccio extrado do livro Treinamento em Linguagem C 2 edio, Victoriane Viviane Mizrahi) I int i = 1, j = 2, k = 3, n = 2; float x = 3.3, y = 4.4; a) i == 2 || j == 4 || k == 5 b) x <= 5.0 && x != 1.0 || i > j 6. Qual o valor da expresso abaixo? (Exerccio extrado do livro Treinamento em Linguagem C 2 edio, Victoriane Viviane Mizrahi) int a = 1, b = 2, c = 3; ++a / a && !b && c || b-- || -- a + 4*c > !!b 7. Faa programa em C que imprima todos os nmeros pares entre 85 e 907. 8. Escreva um programa em C que leia 20 valores inteiros e imprima a soma dos nmeros cujos quadrados so menores que do que 225.
63
9. Escreva um programa em C que calcule a soma dos primeiros 10 valores inteiros, ou seja, 1+2+3...+10. 10. Construa um programa em C que, para um grupo de 50 valores inteiros fornecidos pelo usurio determine: a) a soma dos nmeros positivos; b) a quantidade de valores negativos; 11. Escreva o fluxograma para o exerccio anterior. 12. A srie de Ricci difere da srie de Fibonacci porque os dois primeiros valores so fornecidos pelo usurio. Os demais termos so gerados da mesma forma que a srie de Fibonacci. Criar um programa em C que imprima os 15 primeiros valores da srie. 13. Criar um programa em C que leia um nmero que servir para controlar os nmeros pares que sero impressos a partir de 2. Exemplo: Quantidade: 4 Sada no vdeo: 2 4 6 8 14. Faa um programa em C que leia um nmero e imprima a soma dos nmeros mltiplos de 5 no intervalo aberto entre 1 e o nmero lido. Suponha que o nmero lido ser maior que zero. 15. Faa um programa em C que entre com nmeros e imprima o triplo de cada nmero. O programa termina quando entrar o nmero -1. 16. Dados n valores inteiros, desenvolver um programa em C para calcular a mdia dos valores que so mpares e mltiplos de 3. 17. Dados n valores inteiros. Construir um programa em C para calcular a porcentagem de valores pares. 18. Faa o fluxograma do exerccio anterior. 19. Desenvolva um programa em C que leia nmeros inteiros at entrar o nmero -999. Para cada nmero imprima seus divisores. 20. Criar um programa em C que receba a idade, a altura e o peso de 30 pessoas. Calcule e imprima: a) quantidade de pessoas com idade superior a 50 anos; b) mdia das alturas das pessoas com idade entre 10 e 20 anos; 21. Escreva um programa em C que calcule o valor de ex. O valor de x dever ser informado via teclado. O valor da expresso dever ser calculado pela soma dos 10 primeiros termos da srie abaixo. x2 x3 x4 ex =1+ x + + + +L 2! 3! 4!
64
22. Escreva um programa em C que leia vrios nmeros inteiros e positivos. Calcular a soma dos nmeros que no so primos. 23. Dados n valores de x, desenvolver um programa em C para calcular e imprimir o valor da funo y para cada valor de x. O valor de y dado por: y = x2 + 3 . 2
24. Desenvolver um programa em C para exibir um quadrado formado por asteriscos conforme exemplo abaixo. O tamanho n do lado do quadrado deve ser fornecido pelo usurio (DEITEL, 2006). Considere como exemplo n = 5: ***** * * * * * * ***** 25. Desenvolver um programa em C para exibir um tringulo formado por asteriscos conforme exemplo abaixo. O tamanho n do lado do tringulo deve ser fornecido pelo usurio (DEITEL, 2006). Considere como exemplo n = 5: * *** ***** ******* ********* 26. Um engenheiro precisa fazer o grfico da funo f ( x) = x2 + 1 . Para isso ele quer criar um x+2 programa que gere a tabela de pares ordenados (x, y) e, em seguida, construa o grfico a partir da tabela. Vamos ajud-lo na primeira parte desta tarefa, construindo a tabela de pares ordenados. Para isso sero fornecidos como dados de entrada: o valor inicial de x, o valor final de x e o incremento. Por exemplo, se x varia de 0.0 a 0.3 com incremento 0.2, devemos gerar uma tabela com os seguintes valores de x: 0.0, 0.2, 0.4, 0.6 .... 2.6, 2.8, 3.0.
27. Desenvolver um programa em C para calcular o valor do arco-tangente de x a partir da soma das n primeiras parcelas da srie: x3 x5 x7 para -1 < x < 1 atg ( x) = x + + L 3 5 7 1 1 1 1 para x >= 1 atg ( x) = + 3 5 + 7 L 2 x 3x 5 x 7x 1 1 1 1 atg ( x) = + 3 5 + 7 L para x <= -1 2 x 3x 5 x 7x