Baixe o app para aproveitar ainda mais
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
Compartilhar