Repet i Coes
-
Upload
tulymar-costa -
Category
Documents
-
view
214 -
download
0
description
Transcript of Repet i Coes
-
INF1004/INF1005 Programao 1Captulo 05: Repeties
1
Captulo 5: Repeties
Pontifcia Universidade CatlicaDepartamento de Informtica
INF1004 e INF1005 Programao 1
Construo de Laos
Repetio: Diversos problemas de difcil soluo podem ser resolvidos
numericamente por um computador se dividido em partes. Acumulando o resultado de pequenas computaes, podemos
chegar soluo do problema como um todo. Precisamos de mecanismos de programao que nos permitam
requisitar que um conjunto de instrues seja repetidamente executado, at que uma determinada condio seja alcanada.
REPETIES SO PROGRAMADAS ATRAVS DA CONSTRUO DE LAOS (OU CICLOS).
-
INF1004/INF1005 Programao 1Captulo 05: Repeties
2
Construo de Laos:o comando while
Em C, uma das formas de se trabalhar com repeties atravs do comando while.
Enquanto uma determinada _expresso_booleana_for verdadeira, o _bloco de comandos_ executado! Depois, a execuo procede nos comandos subsequentes ao bloco while.
...
while(_expressao_booleana) {_bloco_de_comandos_
...
}...
Exemplo:Imprimir 100 nmeros: 0 a 99
#include
int main(void) {int x = 0;while(x < 100){printf("%d\n", x);x++;
}return 0;
}
-
INF1004/INF1005 Programao 1Captulo 05: Repeties
3
Exemplo:Fatorial de um nmero no-negativo
Exemplo: Fatorial de um nmero no-negativo.
int fatorial(int n) {int f = 1;while(n > 1){f = f * n;n = n 1;
}return f;
}
Exemplo:Clculo do MDC entre dois nmeros inteiros positivos
Exemplo: MDC (mximo divisor comum entre dois nmeros inteiros positivos usando o algoritmo de Euclides)
MDC entre 42 e 24:
x = 42, y = 24Na etapa seguinte o y passaa ser x e o resto passa a ser y.O processo se repete at que o restoda diviso seja 0. e o valor em y o MDC desejado
MDC entre 42 e 23:
-
INF1004/INF1005 Programao 1Captulo 05: Repeties
4
Exemplo:Clculo do MDC entre dois nmeros inteiros positivos
int mdc(int x, int y) {int r = x%y;while(r != 0){
x = y;y = r;r = x%y;
}return y;
}
Exemplo:Verificar se um Nmero Primo
Exemplo: determinar se um dado nmero inteiro positivo ou no primo. Como se sabe, um nmero dito primo se for divisvel apenas pelo
nmero 1 e pelo prprio nmero, sendo que 1 no primo (2 o primeiro nmero primo)
/* retorna 0 se n nao for primo, 1 se for)*/
int primo(int n) {int i;if (n
-
INF1004/INF1005 Programao 1Captulo 05: Repeties
5
Exemplo: Imprimir o n-simo termo da Srie de Fibonacci
/* retorna o n-esimo termo da serie de fibonacci */int fibonacci(int n) {
if (n
-
INF1004/INF1005 Programao 1Captulo 05: Repeties
6
Exemplo:Imprimir 100 nmeros: 0 a 99
Exemplo: imprimir na tela os valores de 0 a 99:
#include
int main(void) {int x;for(x=0;x
-
INF1004/INF1005 Programao 1Captulo 05: Repeties
7
Exemplo:Clculo do MDC entre dois nmeros inteiros positivos
int mdc(int x, int y) {int r;for(r=x%y; r!=0; r = x%y) {
x=y;y=r;
}return y;
}
Exemplo:Verificar se um Nmero Primo
Exemplo: determinar se um dado nmero inteiro positivo ou no primo. Como se sabe, um nmero dito primo se for divisvel apenas
pelo nmero 1 e pelo prprio nmero, sendo que 1 no primo.
#include
int primo(int n){int i;if (n
-
INF1004/INF1005 Programao 1Captulo 05: Repeties
8
Exemplo: Imprimir o n-simo termo da Srie de Fibonacci
Repetio com Teste no Final
while e for: avaliam a expresso booleana que controla a execuo do bloco de comandos no incio do lao.
A linguagem C oferece uma terceira construo de laos atravs do comando do-while: A expresso booleana avaliada no final do lao. Isso significa que o bloco de comandos avaliado pelo menos
uma vez!