CCO 013 FUNDAMENTOS DE PROGRAMAÇÃO

Prof. Dr. Edison Oliveira de Jesus

Universidade Federal de Itajubá
1

Assuntos da Aula
• Estruturas de Repetição
– Definição – Estrutura de Repetição Para faça – Entrada de Dados via Arquivos – Exemplos
2

Repetições Definidas
• Este tipo de repetição é utilizado quando sabe-se à priori quantas vezes uma determinada ação vai ser repetida no programa. • Exemplos:
– Dê 5 voltas no campo de futebol afim de se exercitar; – Leia 10 números inteiros;
3

• No primeiro exemplo, a ação compreende uma volta no campo de futebol; portanto, ela foi repetida 5 vezes; informação esta bem clara no enunciado; • No segundo exemplo, a ação compreende a leitura de 1 número; portanto, como 10 números deverão ser lidos, define-se aí a repetição previamente conhecida de 10 vezes;
4

• É representada em algoritmo. da seguinte forma: Para variavel = vi até vf de vp faça Procedimento fim_para 5 .

3. a condição precisa ter : 1. 2. forma de terminar a repetição. atualização da variável de controle. uma variável de controle com um valor inicial.• Neste caso. 6 .

no entanto. esta é controlada pela própria instrução.• Da mesma forma que a estrutura Enquanto Faça. 7 . existe uma variável de controle.

8 . então o procedimento é executado de novo. – O procedimento é executado.• Modo de operação: – Variável de controle recebe o valor inicial vi. – A variável de controle é atualizada com o valor do passo vp – Se o valor da variável de controle comparada com o valor final vf for verdade. caso contrário o ciclo de repetição é terminado.

5. 3.Exemplo utilizando ENQUANTO: 1. 2. a ← 10 enquanto ( a < 15 ) faça imprima ( “a = “ . 4. a ) a←a+1 fim_enquanto Observação: 9 a numeração das linhas é utilizada apenas para a explanação do algoritmo .

Exemplo utilizando PARA: 1. 3. 2. para a ← 10 até 14 de 1 faça imprima ( “a = “ . a ) fim_para Observação: a numeração das linhas é utilizada apenas para a explanação do algoritmo 10 .

tem-se: – Variável de controle da repetição: a – Valor inicial da variável de controle: 10 – Variação da variável de controle: + 1 – Condição de término da repetição: a ≥ 15 11 .• Neste exemplo.

• O que difere este programa daquele onde a estrutura enquanto é utilizada? 12 .

13 .Exemplo 1 • Calcular a média aritmética dos n primeiros números inteiros.

ALGORITMO media_numeros_inteiros algoritmo para o cálculo da média aritmética dos n primeiros números inteiros 1) definição das variáveis inteiros n. soma_numeros flutuante media 2) iniciando as variáveis soma_numeros ← 0 3) entrada dos dados imprima ( “entre com a quantidade de numeros “ ) leia ( n ) 14 . numero.

n . “ numeros: “. media ) fim_algoritmo 15 .4) calculando a soma dos números para ( numero = 1 até n de 1 ) faça soma_numeros ← soma_numeros + numero fim_para 5) calculando a média aritmética dos números media ← soma_numeros / n 6) mostrando resultados imprima ( “ media aritmetica de “ .

passo ) { procedimento } 16 . condição.Linguagem C for ( v = vi.

float media. // entrada dos dados printf ( "entre com a quantidade de numeros\n" ). soma_numeros.Exemplo 2 // programa para o cálculo da média aritmética // dos n primeiros números inteiros #include <stdio. scanf ( "%d". void main ( void ) { // definição das variáveis int n. &n ).h> void main (void). 17 . numero.

} 18 . numero <= n. // mostrando resultados printf ( " media aritmetica de %d numeros: %10. n.// iniciando as variáveis soma_numeros = 0. // calculando a soma dos números for ( numero = 1. // calculando a média aritmética dos números media = (float) soma_numeros / (float) n. numero++ ) soma_numeros += numero.3f\n". media ).

Exemplo 3 Calcular a média aritmética de n números dados 19 .

q_numeros. soma_numeros flutuante media 2) iniciando as variáveis soma_numeros ← 0 3) entrada dos dados imprima ( “entre com a quantidade de numeros “ ) leia ( n ) 20 .ALGORITMO media_numeros_inteiros algoritmo para o cálculo da média aritmética de n números inteiros dados 1) definição das variáveis inteiros n. numero.

numero ) soma_numeros ← soma_numeros + numero fim_para 5) calculando a média aritmética dos números media ← soma_numeros / n 6) mostrando resultados imprima ( “ media aritmetica de “ .4) entrar com os números e calcular a soma dos mesmos para ( q_numeros = 1 até n ) faça imprima ( “ entre com um numero inteiro “ ) leia ( numero ) imprima ( “numero lido: “ . n . “ numeros: “. media ) fim_algoritmo 21 .

soma_numeros. &n ). // entrada dos dados printf ( "entre com a quantidade de numeros\n" ).Implementação // programa para o cálculo da média aritmética // de n números inteiros dados #include <stdio. float media. numero. void main ( void ) { // definição das variáveis int n. 22 . scanf ( "%d".h> void main (void).

// inicializar variaveis soma_numeros = 0. media ). soma_numeros += numero. scanf ( “%d”. } 23 . } // calculando a média aritmética dos números media = (float) soma_numeros / (float) n. & numero ). numero ). n. printf ( “numero lido: %5d\n“ . q_numeros <= n.3f\n". // mostrando resultados printf ( " media aritmetica de %d numeros: %10. // entrar com os números e calcular a soma dos mesmos for ( q_numeros = 1. q_numeros++ ) { printf ( “ entre com um numero inteiro \n“ ).

Exemplo 4 Calcular a seguinte expressão: a + b! a!−b 24 .

fat_b. fat_a. “ b= “. den flutuante x 2) entrada dos dados imprima ( “ entre com dois valores inteiros “ ) leia ( a. k. b. a.Algoritmo calcula_expressão algoritmo para calcular uma expressão envolvendo fatorial 1) definição das variáveis inteiros a. b ) imprima ( “a = “. num. b ) 3) consistência dos dados se ( a < 0 ) ou ( b < 0 ) então imprima ( “ dados incompativeis “ ) senão 25 .

k fim_para 3.4) calculo do denominador den ← fat_a – b 26 .senão 3.1) calculo do fatorial de a fat_a ← 1 para ( k = 1 até a ) faça fat_a ← fat_a .2) calculo do fatorial de b fat_b ← 1 para ( k = 1 até b ) faça fat_b ← fat_b .3) calculo do numerador num ← a + fat_b 3. k fim_para 3.

5) verificação do denominador e calculo da expressão se ( den = 0 ) então imprima ( “expressao não pode ser calculada” ) senão x ← num / den imprima ( “ x = “.3. x ) fim_se fim_se fim_algoritimo 27 .

em linguagem C o programa ficará da seguinte forma: 28 .

fat_a. a. printf ( "a = %d b = %d\n". den. void main ( void ) { // definição das variáveis int a. scanf ( "%d %d".// programa para calcular uma expressão envolvendo fatorial #include <stdio. &b ). float x. num. 29 .h> void main ( void ). fat_b. b ). // entrada dos dados printf ( "entre com dois valores inteiros\n" ). &a. k. b.

if ( ( a < 0 ) || ( b < 0 ) ) printf ( " dados incompativeis\n" ). k++ ) fat_b = fat_b * k. 30 . // calculo do numerador num = a + fat_b. // calculo do fatorial de b fat_b = 1. k <= a. k++ ) fat_a = fat_a * k. for ( k = 1. else { // calculo do fatorial de a fat_a = 1. k <= b . for ( k = 1.

} } } 31 . x ). printf ( " x = %10. // verificação do denominador e calculo da expressão if ( den == 0 ) printf ( "expressao não pode ser calculada\n" ).// calculo do denominador den = fat_a .5f\n". else { x = (float)num / (float)den.b.

32 .Exemplo 5 Dados os dígitos que compõem um número binário inteiro positivo de 8 bits. determinar a sua conversão para decimal.

ao invés de serem introduzidos via teclado. 33 .Entrada de Dados via arquivos • Em linguagem C a entrada de dados pode ser realizada diretamente em arquivos de dados. os dados são lidos pelo computador diretamente de um arquivo previamente preenchido pelo usuário. ou seja.

34 . vários números inteiros quaisquer.• Este procedimento visa facilitar a entrada de dados repetitivos ou longos assim como evita erros na introdução de dados por parte do usuário. • Exemplo. suponha que um aplicativo tenha como entrada de dados.

• No entanto. a repetição de entrada de dados. então esta tarefa poderia ser realizada facilmente quantas vezes fosse necessária. 35 . se a quantidade de números for grande. seria tediosa e sujeita a erros.• Se esta quantidade for pequena. digamos. mais de 30.

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 são escritos da mesma forma e na mesma ordem que seriam fornecidos pelo usuário se este estivesse utilizando o teclado. 36 .

37 . • Ler os dados do arquivo de dados. • Abrir o arquivo de dados.– O programa deverá: • Definir o arquivo de dados.

b. &y ). printf ( “ a = %4d \n b = %5d \n\n y = %12.5f\n”. printf ( “valores lidos\n” ). b.Exemplo 1 • Seja o seguinte programa em C: int a. printf (“entre com 2 valores inteiros e um real\n”). 38 . &b. &a. a. float y. y ). scanf ( “%d %d %f”.

o usuário deverá fornecer via teclado. o usuário deverá digitar estes valores para executar o programa. 39 .• Neste exemplo. 2 valores inteiros e 1 valor real. todas as vezes que o programa for processado. ou seja. • Esta é uma tarefa relativamente simples e pouco provável de erro.

a. printf (“entre com 100 valores inteiros”). a = %4d \n”. for ( x = 1. x. printf ( “ %3d) x. x <= 100. x++ ) { scanf ( “%d”. } 40 .Exemplo 2 • Seja o seguinte programa em C: int x. a ). &a ).

• Neste exemplo. todas as vezes que o programa for processado. 41 . 100 valores inteiros. • Esta é uma tarefa muito provável de erro alem de ser cansativa ao usuário. ou seja. o usuário deverá digitar estes valores para executar o programa. o usuário deverá fornecer via teclado.

“%d”. printf ( “ %3d) x. a ). x <= 100. a = %4d \n”. “rt” ). } 42 . x++ ) { fscanf ( arqDados. arqDados = fopen ( “dados1. for ( x = 1. &a ). x.dat”. a. file *arqDados.Usando Arquivo de Dados int x.

• Onde arqDados é o nome lógico do arquivo de dados que o programa se refere. 43 .dat é o nome físico do arquivo de dados onde as informações estão fisicamente armazenadas. • dados1.

dat contendo os dados exatamente como o programa exige na leitura. 44 . dará erro. caso contrário o programa não poderá ser executado e se o for.• Isto significa que deve haver em sua área de trabalho. • Este arquivo deve ser criado antes da execução do programa. um arquivo chamado dados1.

} Neste caso. “rt” ).• Uma forma de se verificar condição de erro é a seguinte: arqDados = fopen ( “dados1. se o arquivo não estiver presente no diretório de trabalho. 45 .dat”. If ( arqDados == null ) { printf ( “arquivo dados1. o programa dará a mensagem e será terminado.dat não existe\n” ). exit(0).

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

47 . b = %4d \n”. “rt” ). z = 0.arqDados2 = fopen ( nomeArq2. x++ ) { fscanf ( arqDados2. printf ( “ %3d) x. “%d”. x. x <= 150. } Neste caso dois arquivos foram utilizados para o armazenamento físico dos dados. z += b. for ( x = 1. o que requer a definição deles no programa de leitura dos mesmos. b ). &b ).

“rt” ). exit(0). nomeArqDados ). printf(“entre com o nome do arquivo de dados\n” ). file *arqDados. ou seja: char nomeArqDados[20].• O nome físico do arquivo pode ser dado ao programa em tempo de execução do mesmo. nomeArqDados ). arqDados = fopen ( nomeArqDados. If ( arqDados == null ) { printf ( “arquivo %s não existe\n”. } 48 . scanf(“%s”.

FIM DA APRESENTAÇÃO 49 .