Beruflich Dokumente
Kultur Dokumente
Assuntos da Aula
Estruturas de Repetio
Definio Estrutura de Repetio Para faa Entrada de Dados via Arquivos Exemplos
2
Repeties Definidas
Este tipo de repetio utilizado quando sabe-se priori quantas vezes uma determinada ao vai ser repetida no programa. Exemplos:
D 5 voltas no campo de futebol afim de se exercitar; Leia 10 nmeros inteiros;
3
No primeiro exemplo, a ao compreende uma volta no campo de futebol; portanto, ela foi repetida 5 vezes; informao esta bem clara no enunciado; No segundo exemplo, a ao compreende a leitura de 1 nmero; portanto, como 10 nmeros devero ser lidos, define-se a a repetio previamente conhecida de 10 vezes;
4
Da mesma forma que a estrutura Enquanto Faa, existe uma varivel de controle, no entanto, esta controlada pela prpria instruo;
Modo de operao:
Varivel de controle recebe o valor inicial vi; O procedimento executado; A varivel de controle atualizada com o valor do passo vp Se o valor da varivel de controle comparada com o valor final vf for verdade, ento o procedimento executado de novo; caso contrrio o ciclo de repetio terminado.
8
10
12
Exemplo 1
Calcular a mdia aritmtica dos n primeiros nmeros inteiros.
13
ALGORITMO media_numeros_inteiros algoritmo para o clculo da mdia aritmtica dos n primeiros nmeros inteiros 1) definio das variveis inteiros n, numero, soma_numeros flutuante media 2) iniciando as variveis soma_numeros 0 3) entrada dos dados imprima ( entre com a quantidade de numeros ) leia ( n )
14
4) calculando a soma dos nmeros para ( numero = 1 at n de 1 ) faa soma_numeros soma_numeros + numero fim_para 5) calculando a mdia aritmtica dos nmeros media soma_numeros / n 6) mostrando resultados imprima ( media aritmetica de , n , numeros: , media ) fim_algoritmo
15
Linguagem C
Exemplo 2
// programa para o clculo da mdia aritmtica // dos n primeiros nmeros inteiros #include <stdio.h> void main (void); void main ( void ) { // definio das variveis int n, numero, soma_numeros; float media; // entrada dos dados printf ( "entre com a quantidade de numeros\n" ); scanf ( "%d", &n );
17
// iniciando as variveis soma_numeros = 0; // calculando a soma dos nmeros for ( numero = 1; numero <= n; numero++ ) soma_numeros += numero; // calculando a mdia aritmtica dos nmeros media = (float) soma_numeros / (float) n; // mostrando resultados printf ( " media aritmetica de %d numeros: %10.3f\n", n, media ); }
18
Exemplo 3
Calcular a mdia aritmtica de n nmeros dados
19
ALGORITMO media_numeros_inteiros algoritmo para o clculo da mdia aritmtica de n nmeros inteiros dados 1) definio das variveis inteiros n, q_numeros, numero, soma_numeros flutuante media 2) iniciando as variveis soma_numeros 0 3) entrada dos dados imprima ( entre com a quantidade de numeros ) leia ( n )
20
4) entrar com os nmeros e calcular a soma dos mesmos para ( q_numeros = 1 at n ) faa imprima ( entre com um numero inteiro ) leia ( numero ) imprima ( numero lido: , numero ) soma_numeros soma_numeros + numero fim_para 5) calculando a mdia aritmtica dos nmeros media soma_numeros / n 6) mostrando resultados imprima ( media aritmetica de , n , numeros: , media ) fim_algoritmo
21
Implementao
// programa para o clculo da mdia aritmtica // de n nmeros inteiros dados #include <stdio.h> void main (void); void main ( void ) { // definio das variveis int n, numero, soma_numeros; float media; // entrada dos dados printf ( "entre com a quantidade de numeros\n" ); scanf ( "%d", &n );
22
// inicializar variaveis soma_numeros = 0; // entrar com os nmeros e calcular a soma dos mesmos for ( q_numeros = 1; q_numeros <= n; q_numeros++ ) { printf ( entre com um numero inteiro \n ); scanf ( %d, & numero ); printf ( numero lido: %5d\n , numero ); soma_numeros += numero; } // calculando a mdia aritmtica dos nmeros media = (float) soma_numeros / (float) n; // mostrando resultados printf ( " media aritmetica de %d numeros: %10.3f\n", n, media ); }
23
Exemplo 4
Calcular a seguinte expresso:
a + b! a!b
24
Algoritmo calcula_expresso algoritmo para calcular uma expresso envolvendo fatorial 1) definio das variveis inteiros a, b, fat_a, fat_b, k, num, den flutuante x 2) entrada dos dados imprima ( entre com dois valores inteiros ) leia ( a, b ) imprima ( a = , a, b= , b ) 3) consistncia dos dados se ( a < 0 ) ou ( b < 0 ) ento imprima ( dados incompativeis ) seno
25
seno 3.1) calculo do fatorial de a fat_a 1 para ( k = 1 at a ) faa fat_a fat_a . k fim_para 3.2) calculo do fatorial de b fat_b 1 para ( k = 1 at b ) faa fat_b fat_b . k fim_para 3.3) calculo do numerador num a + fat_b 3.4) calculo do denominador den fat_a b
26
3.5) verificao do denominador e calculo da expresso se ( den = 0 ) ento imprima ( expressao no pode ser calculada ) seno x num / den imprima ( x = , x ) fim_se fim_se
fim_algoritimo
27
28
// programa para calcular uma expresso envolvendo fatorial #include <stdio.h> void main ( void ); void main ( void ) { // definio das variveis int a, b, fat_a, fat_b, k, num, den; float x; // entrada dos dados printf ( "entre com dois valores inteiros\n" ); scanf ( "%d %d", &a, &b ); printf ( "a = %d b = %d\n", a, b );
29
if ( ( a < 0 ) || ( b < 0 ) ) printf ( " dados incompativeis\n" ); else { // calculo do fatorial de a fat_a = 1; for ( k = 1; k <= a; k++ ) fat_a = fat_a * k; // calculo do fatorial de b fat_b = 1; for ( k = 1; k <= b ; k++ ) fat_b = fat_b * k; // calculo do numerador num = a + fat_b;
30
// calculo do denominador den = fat_a - b; // verificao do denominador e calculo da expresso if ( den == 0 ) printf ( "expressao no pode ser calculada\n" ); else { x = (float)num / (float)den; printf ( " x = %10.5f\n", x ); } } }
31
Exemplo 5
Dados os dgitos que compem um nmero binrio inteiro positivo de 8 bits, determinar a sua converso para decimal;
32
33
Este procedimento visa facilitar a entrada de dados repetitivos ou longos assim como evita erros na introduo de dados por parte do usurio. Exemplo, suponha que um aplicativo tenha como entrada de dados, vrios nmeros inteiros quaisquer.
34
Se esta quantidade for pequena, ento esta tarefa poderia ser realizada facilmente quantas vezes fosse necessria. No entanto, se a quantidade de nmeros for grande, digamos, mais de 30, a repetio de entrada de dados, seria tediosa e sujeita a erros.
35
O programa dever:
Definir o arquivo de dados; Abrir o arquivo de dados; Ler os dados do arquivo de dados.
37
Exemplo 1
Seja o seguinte programa em C:
int a, b; float y; printf (entre com 2 valores inteiros e um real\n); scanf ( %d %d %f, &a, &b, &y ); printf ( valores lidos\n ); printf ( a = %4d \n b = %5d \n\n y = %12.5f\n, a, b, y );
38
Neste exemplo, todas as vezes que o programa for processado, o usurio dever fornecer via teclado, 2 valores inteiros e 1 valor real, ou seja, o usurio dever digitar estes valores para executar o programa. Esta uma tarefa relativamente simples e pouco provvel de erro.
39
Exemplo 2
Seja o seguinte programa em C:
int x, a; printf (entre com 100 valores inteiros); for ( x = 1; x <= 100; x++ ) { scanf ( %d, &a ); printf ( %3d) x, a = %4d \n, x, a ); }
40
Neste exemplo, todas as vezes que o programa for processado, o usurio dever fornecer via teclado, 100 valores inteiros, ou seja, o usurio dever digitar estes valores para executar o programa. Esta uma tarefa muito provvel de erro alem de ser cansativa ao usurio.
41
42
Onde arqDados o nome lgico do arquivo de dados que o programa se refere. dados1.dat o nome fsico do arquivo de dados onde as informaes esto fisicamente armazenadas.
43
Isto significa que deve haver em sua rea de trabalho, um arquivo chamado dados1.dat contendo os dados exatamente como o programa exige na leitura. Este arquivo deve ser criado antes da execuo do programa, caso contrrio o programa no poder ser executado e se o for, dar erro.
44
45
arqDados2 = fopen ( nomeArq2, rt ); z = 0; for ( x = 1; x <= 150; x++ ) { fscanf ( arqDados2, %d, &b ); z += b; printf ( %3d) x, b = %4d \n, x, b ); }
Neste caso dois arquivos foram utilizados para o armazenamento fsico dos dados, o que requer a definio deles no programa de leitura dos mesmos.
47
O nome fsico do arquivo pode ser dado ao programa em tempo de execuo do mesmo, ou seja:
char nomeArqDados[20]; file *arqDados; printf(entre com o nome do arquivo de dados\n ); scanf(%s, nomeArqDados ); arqDados = fopen ( nomeArqDados, rt ); If ( arqDados == null ) { printf ( arquivo %s no existe\n, nomeArqDados ); exit(0); }
48
FIM DA APRESENTAO
49