Buscar

06-programacao-introducao-repeticao-C

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 28 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 28 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 28 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

Fundamentos de Programação I Luiz Arthur1
Universidade Tecnológica Federal do Paraná – UTFPR
Campus:
Campo Mourão
Professor:
Luiz Arthur Feitosa dos Santos
E-mail:
luiz_arthur@fornet.com.br
Sumário:
● Revisão;
● Estruturas de repetição;
 
Fundamentos de Programação I Luiz Arthur2
Estrutura de repetição
Uma estrutura de repetição é utilizada quando um trecho do algoritmo ou até 
mesmo o algoritmo inteiro precisa ser repetido. 
O número de repetições pode ser fixo ou estar atrelado a uma condição. 
Assim, existem estruturas para tais situações.
Estrutura de repetição para um número definido de repetições - PARA
Essa estrutura de repetição é utilizada quando se sabe o número de vezes 
que um trecho do algoritmo deve ser repetido. O formato geral dessa 
estrutura é
PARA I valor inicial ATÉ valor final FAÇA [PASSO n]←
INÍCIO
 comando1
 comando2
 …
 comandoN
FIM
 
Fundamentos de Programação I Luiz Arthur3
No algoritmo anterior o comando1, comando2 e o comandoM (assim como 
qualquer comando no bloco do comando de repetição) serão executados 
utilizando-se a variável I como controle, e seu conteúdo vai variar do valor 
inicial até o valor final. O PASSO indica como será a variação da variável 
de controle (caso não seja especificada ela é incrementada de um em um, 
caso seja dois será de dois em dois).
Quando houver apenas um comando a ser repetido, os marcadores de bloco 
INICIO e FIM poderão ser supridos.
Exemplos:
PARA I 1 ATÉ 10 FAÇA←
 ESCREVA I
O comando ESCREVA I será executado dez vezes, os valores da variável I 
serão 1, 2, 3, 4, 5, 6, 7, 8, 9 e 10.
PARA J 1 ATÉ 9 FAÇA PASSO 2←
ESCREVA J
O comando ESCREVA J será executado cinco vezes, os valores da variável J 
serão, 1, 3, 5, 7 e 9. 
 
Fundamentos de Programação I Luiz Arthur4
PARA J 15 ATÉ 1 FAÇA PASSO -2←
 ESCREVA J
O comando ESCREVA J será executado oito vezes, ou seja, J será: 15, 13, 11, 
9, 7, 5, 3 e 1.
Estrutura de repetição para número indefinido de repetições e teste 
no início - ENQUANTO
Essa estrutura de repetição é utilizada quando não se sabe o número de 
vezes que um trecho do algoritmo deve ser repetido, embora também possa 
ser utilizada quando se conhece o número.
Essa estrutura se baseia na análise de uma condição. A repetição será feita 
enquanto a condição mostrar-se verdadeira.
Existem situações em que o teste condicional da estrutura de repetição, que 
fica no início, resulta em um valor falso logo na primeira comparação. Nesses 
casos, os comandos de dentro da estrutura de repetição não serão 
executados.
ENQUANTO condições FAÇA
comando1
 
Fundamentos de Programação I Luiz Arthur5
Enquanto a condição for verdadeira, o comando1 será executado.
ENQUANTO condição FAÇA
INICIO
comando1
comando2
FIM
Enquanto a condição for verdadeira execute o bloco.
Exemplos:
x 1←
y 5←
ENQUANTO X < Y FAÇA
INICIO
 x x+2←
 y y+1←
FIM
Neste caso a repetição será executada quatro vezes (veja teste de mesa no 
próximo slide).
 
Fundamentos de Programação I Luiz Arthur6
Teste de mesa:
x 1←
y 5←
ENQUANTO X < Y FAÇA
INICIO
 x x+2←
 y y+1←
FIM
Neste caso a repetição será executada quatro vezes.
Iteração x y
Início 1 5
1 3 6
2 5 7
3 7 8
4 9 9 Nesta última não é 
executado o bloco!
 
Fundamentos de Programação I Luiz Arthur7
Estrutura de repetição para número indefinido de repetições e teste 
no final - REPITA
Essa estrutura de repetição é utilizada quando não se sabe o número de 
vezes que um trecho do algoritmo deve ser repetido, embora também possa 
ser utilizada quando se conhece esse número.
Essa estrutura se baseia na análise de uma condição. A repetição será feita 
até a condição tornar-se verdadeira.
A diferença entre a estrutura ENQUANTO e o REPITA é que no REPITA os 
comandos serão executados pelo menos uma vez, já que a condição de 
parada se encontra no final.
REPITA
 comandos
ATÉ condição
Repita os comandos até a condição se tornar verdadeira.
 
Fundamentos de Programação I Luiz Arthur8
Exemplo:
x 1←
y 5←
REPITA
 x x+2←
 y y+1←
ATÉ x >= Y
Neste caso a repetição será executada cinco vezes (no exemplo anterior com 
o ENQUANTO foram somente 4 e os dados são os mesmos!).
Teste de mesa:
Iteração x y
Início 1 5
1 3 6
2 5 7
3 7 8
4 9 9 Nesta mesmo a informação 
já não sendo verdadeira o 
bloco é executado!
 
Fundamentos de Programação I Luiz Arthur9
Estrutura de repetição em C/C++
Estrutura de repetição for
Essa estrutura de repetição é utilizada quando se sabe o número de vezes 
que um trecho do programa deve ser repetido.
O formato geral do comando for é composto por três partes:
for (i = valor inicial; condição; incremento ou decremento de i)
comando;
A primeira parte atribui um valor inicial à variável i, que tem como função 
controlar o número necessário de repetições.
A segunda parte corresponde a uma expressão relacional que, quando 
assumir valor falso, determinará o fim da repetição.
A terceira parte é responsável por alterar o valor da variável i (incremento 
ou decremento) com o objetivo de, em algum momento, fazer com que a 
condição assuma valor falso.
1 2 3
 
Fundamentos de Programação I Luiz Arthur10
Caso seja necessária a repetição de apenas um comando, o compilador 
entenderá que a estrutura de repetição terminará quando o for encontrar o 
primeiro ; (ponto-e-vírgula). 
Exemplo do uso do for:
Em algumas escolas quando o aluno fazia algo de errado, o castigo era 
escrever no quadro que ele não deveria fazer aquilo, repetidas vezes no 
quadro. Suponha que o mesmo castigo foi passado em uma aula de 
programação, escrever 20 vezes “não acessar sites impróprios”. 
Um aluno sem conhecer muito de programação faria (próximo slide):
Não acessar sites impróprios Não acessar sites impróprios
Não acessar sites impróprios Não acessar sites impróprios
Não acessar sites impróprios Não acessar sites impróprios
Não acessar sites impróprios Não acessar sites impróprios
Não acessar sites impróprios Não acessar sites impróprios
Não acessar sites impróprios Não acessar sites impróprios
Não acessar sites impróprios Não acessar sites impróprios
Não acessar sites impróprios Não acessar sites impróprios
Não acessar sites impróprios Não acessar sites impróprios
Não acessar sites impróprios Não acessar sites impróprios
 
Fundamentos de Programação I Luiz Arthur11
Um aluno sem conhecer muito de programação faria o castigo em C da 
seguinte forma:
1 – Usando um editor de texto crie o código fonte:
$vi castigo1.c
#include <stdio.h>
int main ()
{
 printf("não acessar sites impróprios \t não acessar sites impróprios\n");
 printf("não acessar sites impróprios \t não acessar sites impróprios\n");
 printf("não acessar sites impróprios \t não acessar sites impróprios\n");
 printf("não acessar sites impróprios \t não acessar sites impróprios\n");
 printf("não acessar sites impróprios \t não acessar sites impróprios\n");
 printf("não acessar sites impróprios \t não acessar sites impróprios\n");
 printf("não acessar sites impróprios \t não acessar sites impróprios\n");
 printf("não acessar sites impróprios \t não acessar sites impróprios\n");
 printf("não acessar sites impróprios \t não acessar sites impróprios\n");
 printf("não acessar sites impróprios \t não acessar sites impróprios\n");
}
2 – Compilar: $ gcc castigo1.c -o castigo1
3 – Executar: $ ./castigo1 
Esta resolução do castigo funcionaria mas daria muito trabalho 
(provavelmente era isto que a professora queria!), mas existe uma forma 
mais elegante de fazer isto com o for.
 
Fundamentos de Programação I Luiz Arthur12
Um aluno preguiçoso e com certo conhecimento de programação faria o 
castigo em C da seguinte forma:
1 – Usandoum editor de texto crie o código fonte:
$vi castigo2.c
#include <stdio.h>
int main ()
{
 int i;
 for (i=1; i<=10; i++)
 printf("não acessar sites impróprios \t não acessar sites 
impróprios\n");
}
2 – Compilar: $ gcc castigo2.c -o castigo2
3 – Executar: $ ./castigo2 
Esta resolução do castigo é bem mais curta que a primeira (é claro que a 
professora provavelmente não queria esta), mas mérito do aluno! O i<=10 é 
por que no printf já tem duas mensagens, se fosse apenas uma “não 
acessar sites impróprios” ai seria i<=20.
 
Fundamentos de Programação I Luiz Arthur13
Lembre-se que a informática e como consequência a programação foi feita 
para facilitar a nossa vida, esses comandos de repetição, decisão, dentre 
outros fazem exatamente isto, facilita a vida! Por isto, é recomendável que 
você aprenda o máximo de comandos possível para que estes melhorem e 
facilitem a sua programação...
#include <stdio.h>
int main ()
{
 int i;
 for (i=1; i<=10; i++)
 printf("não acessar sites impróprios 
 \t não acessar sites impróprios\n");
}
 
Fundamentos de Programação I Luiz Arthur14
Teste 1 – Vamos fazer um programa que apresente a tabuada do 2, 
sem o uso do for:
1 – Usando um editor de texto crie o código fonte:
$vi tabuada1.c
#include <stdio.h>
int main ()
{
 int x=2;
 printf("Tabuada do %d:\n",x);
 printf("%d x 1 = %d\n",x, x*1);
 printf("%d x 2 = %d\n",x, x*2);
 printf("%d x 3 = %d\n",x, x*3);
 printf("%d x 4 = %d\n",x, x*4);
 printf("%d x 5 = %d\n",x, x*5);
 printf("%d x 6 = %d\n",x, x*6);
 printf("%d x 7 = %d\n",x, x*7);
 printf("%d x 8 = %d\n",x, x*8);
 printf("%d x 9 = %d\n",x, x*9);
 printf("%d x 10 = %d\n",x, x*10);
}
2 – Compilar: $ gcc tabuada1.c -o tabuada1
3 – Executar: $ ./tabuada1
 
Fundamentos de Programação I Luiz Arthur15
4 – A saída do programa:
Tabuada do 2:
2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18
2 x 10 = 20
Como podemos ver pela saída do programa tabuada1.c, foi realmente 
apresentada a tabuada do 2, mas o código fica muito extenso e a chance de 
erros, principalmente de digitação aumenta.
Neste caso, onde existe muita repetição é melhor utilizar um comando de 
repetição como o for.
 
Fundamentos de Programação I Luiz Arthur16
Teste 2 – Vamos fazer um programa que apresente a tabuada do 2, 
usando for:
1 – Usando um editor de texto crie o código fonte:
$ vi tabuada2.c
#include <stdio.h>
int main ()
{
 int x=2, i;
 printf("Tabuada do %d:\n", x);
 for (i=1; i<=10; i++)
 printf("%d x %d = %d\n", x, i, x*i);
}
2 – Compilar: $ gcc tabuada2.c -o tabuada2
3 – Executar: $ ./tabuada2
 
Fundamentos de Programação I Luiz Arthur17
4 – Saída do programa:
Tabuada do 2:
2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18
2 x 10 = 20
Conforme é possível observar a saída de tabuada2.c é idêntica a saída de 
tabuada1.c. Porém, utilizando o for foram necessários apenas dois (2) 
comandos printf em tabuada2.c contra onze (11) do programa 
tabuada1.c.
Inicialmente o código pode até parecer mais complicado de analisar com o 
uso de comandos de repetição! Mas com certeza com pouca prática de 
programação, os códigos com uso de repetição ficaram bem mais legíveis ao 
programador.
 
Fundamentos de Programação I Luiz Arthur18
Estrutura de repetição WHILE
Trata-se de uma estrutura de repetição que pode ser utilizada quando o 
número de repetição necessárias não é fixo. Os comandos serão repetidos até 
a condição assumir o valor falso.
Nesse tipo de estrutura, o teste condicional ocorre no início. Isto significa 
que existe a possibilidade da repetição não ser executada quando a condição 
assumir valor falso, logo na primeira verificação.
while (condição)
 comando;
Enquanto a condição for verdadeira, o comando será executado.
while (condição)
{
 comando1;
 comando2;
 ...
}
Enquanto a condição for verdadeira, o bloco de comandos será executado.
 
Fundamentos de Programação I Luiz Arthur19
Teste 3 – Faça o computador contar do 1 até o 5 para você, utilizando 
o while!
1 – Usando um editor de texto crie o código fonte:
$ vi conte1.c
#include <stdio.h>
int main ()
{
 int x=1;
 while ( x != 6)
 {
 printf("Valor de x é %d\n", x);
 x = x + 1;
 }
 printf("O valor de X após sair do while é %d.\n", x);
}
2 – Compilar: $ gcc conte1.c -o conte1
3 – Executar: $ ./conte1
 
Fundamentos de Programação I Luiz Arthur20
4 – Saída do programa:
Valor de x é 1
Valor de x é 2
Valor de x é 3
Valor de x é 4
Valor de x é 5
O valor de X após sair do while é 6.
Analisando a saída podemos ver que o programa cumpriu o objetivo! O 
computador contou até 5. Repare que no final o valor de X ficou setado 
como 6, mas com este valor não foi executado o bloco de comandos do 
while pela sexta vez isto não interfere no resultado.
Teste de mesa de conte1.c
Iteração x
Início 1
1 2
2 3
3 4
4 5
5 6
 
Fundamentos de Programação I Luiz Arthur21
Estrutura de repetição DO-WHILE
Se trata de uma estrutura de repetição que pode ser utilizada quando o 
número de repetições necessárias não é fixo. Os comandos serão repetidos 
até a condição assumir o valor falso.
Neste tipo de estrutura, o teste condicional ocorre no final. Isso significa que 
a repetição será executada no mínimo uma vez, quando todo o bloco for 
executado uma vez e, ao final, a condição assumir o valor falso.
do
 {
comandos;
 }
while (condição);
Os comandos serão repetidos até que a condição assuma valor falso.
 
Fundamentos de Programação I Luiz Arthur22
Teste 4 – Faça o computador contar do 1 até o 5 para você utilizando o 
comando do-while!
1 – Usando um editor de texto crie o código fonte:
$ vi conte2.c
#include <stdio.h>
int main ()
{
 int x=1;
do
 {
 printf("Valor de x é %d\n", x);
 x = x + 1;
 }
while (x != 6);
 printf("O valor de X após sair do do-while é %d.\n", x);
}
2 – Compilar: $ gcc conte2.c -o conte2
3 – Executar: $ ./conte2
 
Fundamentos de Programação I Luiz Arthur23
4 – Saída do programa:
Valor de x é 1
Valor de x é 2
Valor de x é 3
Valor de x é 4
Valor de x é 5
O valor de X após sair do do-while é 6.
Teste de mesa de conte2.c
Apesar de parecer igual, lembre-se de que com o do-while o bloco de 
comandos seria executado pelo menos uma vez! O que não aconteceria com o 
while caso a condição fosse falsa desde o inicio. Vamos constatar isto 
próximo teste.
Iteração x
Início 1
1 2
2 3
3 4
4 5
5 6
 
Fundamentos de Programação I Luiz Arthur24
Teste 5 – Faça x=1 e faça do-while (x==6).
1 – Usando um editor de texto crie o código fonte:
$ vi conte3.c
#include<stdio.h>
int main()
{
 int x=1;
 do
 {
 printf("Valor de x é %d\n", x);
 x = x + 1;
 }
 while (x==6);
 printf("O valor de X após sair do do-while é %d.\n", x);
}
2 – Compilar: $ gcc conte3.c -o conte3
3 – Executar: $ ./conte3
 
Fundamentos de Programação I Luiz Arthur25
4 – Saída do programa:
Valor de x é 1
O valor de X após sair do do-while é 2.
Teste 6 – Faça x=1 e faça while (x==6).
1 – Usando um editor de texto crie o código fonte:
$ vi conte4.c
#include<stdio.h>
int main()
{
 int x=1;
 while(x==6)
 {
 printf("Valor de x é %d\n", x);
 x = x + 1;
 }
 printf("O valor de X após sair do while é %d\n", x);
}
 
Fundamentos de Programação I Luiz Arthur26
2 – Compilar: $ gcc conte4.c -o conte4
3 – Executar: $ ./conte4
4 – Saída do programa:
Valor de x é 1
O valor de X após sair do do-while é 2.
Então qual é a diferença entre o teste 5 para o teste 6?
A diferença é que no teste 5 é executada pelo menos uma vez o bloco de 
comandos do do-while, enquanto no while do teste 6 não é executada 
nenhumavez o bloco de comandos, já que em ambos os casos a comparação 
é falsa desde o inicio.
 
Fundamentos de Programação I Luiz Arthur27
Referência:
ASCENCIO, Ana F.G; CAMPOS, Edilene A.V. Fundamentos da 
programação de computadores – Algoritmos, Pascal, C/C++ e Java. 
2ed. Editora Pearson. 2007.
SALVETTI, Dirceu D; BARBOSA, Lisbete M. Algoritmos. Editora Makron 
Books. 1998.
UTIYAMA, Fabiano. Introdução Algoritmos. UNIPAR. 2010.
SCHILDT, Herbert. C Completo e total. 3 ed. Editora Makron Books. 1996.
 
Fundamentos de Programação I Luiz Arthur28
Fim!
	Slide 1
	Slide 2
	Slide 3
	Slide 4
	Slide 5
	Slide 6
	Slide 7
	Slide 8
	Slide 9
	Slide 10
	Slide 11
	Slide 12
	Slide 13
	Slide 14
	Slide 15
	Slide 16
	Slide 17
	Slide 18
	Slide 19
	Slide 20
	Slide 21
	Slide 22
	Slide 23
	Slide 24
	Slide 25
	Slide 26
	Slide 27
	Slide 28

Outros materiais