Sie sind auf Seite 1von 49

CCO 013 FUNDAMENTOS DE PROGRAMAO

Prof. Dr. Edison Oliveira de Jesus

Universidade Federal de Itajub


1

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

representada em algoritmo, da seguinte forma:

Para variavel = vi at vf de vp faa Procedimento fim_para

Neste caso, a condio precisa ter :


1. uma varivel de controle com um valor inicial; 2. atualizao da varivel de controle; 3. forma de terminar a repetio;

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

Exemplo utilizando ENQUANTO:


1. 2. 3. 4. 5. a 10 enquanto ( a < 15 ) faa imprima ( a = , a ) aa+1 fim_enquanto

Observao: 9 a numerao das linhas utilizada apenas para a explanao do algoritmo

Exemplo utilizando PARA:


1. 2. 3. para a 10 at 14 de 1 faa imprima ( a = , a ) fim_para

Observao: a numerao das linhas utilizada apenas para a explanao do algoritmo

10

Neste exemplo, tem-se:


Varivel de controle da repetio: a Valor inicial da varivel de controle: 10 Variao da varivel de controle: + 1 Condio de trmino da repetio: a 15
11

O que difere este programa daquele onde a estrutura enquanto utilizada?

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

for ( v = vi; condio; passo ) { procedimento }


16

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

em linguagem C o programa ficar da seguinte forma:

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

Entrada de Dados via arquivos


Em linguagem C a entrada de dados pode ser realizada diretamente em arquivos de dados, ou seja, os dados so lidos pelo computador diretamente de um arquivo previamente preenchido pelo usurio, ao invs de serem introduzidos via teclado.

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

A necessidade de uso de Arquivos de Dados


Em linguagem C a entrada de dados via arquivos feita da seguinte forma:
Utilizando um editor de texto qualquer, cria-se o arquivo contendo os dados desejados pelo programa. Estes dados so escritos da mesma forma e na mesma ordem que seriam fornecidos pelo usurio se este estivesse utilizando o teclado.
36

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

Usando Arquivo de Dados


int x, a; file *arqDados; arqDados = fopen ( dados1.dat, rt ); for ( x = 1; x <= 100; x++ ) { fscanf ( arqDados, %d, &a ); printf ( %3d) x, a = %4d \n, x, a ); }

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

Uma forma de se verificar condio de erro a seguinte:


arqDados = fopen ( dados1.dat, rt ); If ( arqDados == null ) { printf ( arquivo dados1.dat no existe\n ); exit(0); } Neste caso, se o arquivo no estiver presente no diretrio de trabalho, o programa dar a mensagem e ser terminado.

45

Usando mais de um arquivo


int x, y, z, a, b; file *arqDados1, *arqDados2; char nomeArq1[20], nomeArq2[20]; strcpy ( nomeArq1, dados1.dat ); strcpy ( nomeArq2, dados2.dat ); arqDados1 = fopen ( nomeArq1, rt ); y = 0; for ( x = 1; x <= 50; x++ ) { fscanf ( arqDados1, %d, &a ); y += a; printf ( %3d) x, a = %4d \n, x, a ); }
46

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

Das könnte Ihnen auch gefallen