Introdução à Programação Aula Prática 4 Estruturas de Repetição Monitoria 2013.2 Roteiro Laços – – – – – For While Do – while Laços aninhados Observações Dúvidas Exercícios Laços Laços são comandos usados quando queremos realizar uma tarefa várias vezes, até uma condição ser cumprida. Em C, temos 3 tipos de laços: – For – While – Do – while Os 3 são equivalentes: A mesma coisa pode ser feita usando os 3 tipos. Laços - For Funciona Em C: na forma: Antes for( isso do; laço, isto; incremento) faça isso; Enquanto { isto for verdade, { Faça aquilo; faça } aquilo; incremente o contador; Exemplo } For(int i = 0; i< 10;i++) { printf(“%d”, i); } Se só for executado um comando dentro do bloco, as chaves são facultativas, mas é preferível sempre usar chaves. Podem ser declaradas variáveis dentro do laço, que tem como seu escopo o bloco de comandos. Quando elas saírem do escopo, são destruídas. Isso também vale para os outros dois tipos de laço. Os laços “for” são indicados quando se sabe exatamente o numero de vezes que o código será iterado. Laços - While Funciona na forma: Em C: Enquanto While(isso)isso for verdade, { Faça aquilo; Aquilo; } Exemplo: while( a >= b ) { a -= b; } Usado quando queremos repetir uma ação até que uma condição não seja mais verdade. Na condição, não se pode usar variáveis declaradas no bloco, pois a expressão é avaliada fora do bloco. Se a condição for falsa desde o começo, o laço não é executado. Laços - Do - While Funciona Em C: na forma: Faça do Usado quando queremos executar o bloco pelo menos uma vez, pois a { condição é testada ao fim de cada isso; iteração. } enquanto while(aquilo); aquilo for verdade. do { Exemplo: andar(); }while(energia > 0); Na condição, não se pode usar variáveis declaradas no bloco, pois a expressão é avaliada fora do bloco. Obs: o “ponto-e-virgula” depois do while(condição) é necessário. Quiz 1- Qual dos laços é ideal para um evento que acontece um número fixo de vezes? Quiz 2- Qual dos laços é ideal para repetir um programa inteiro? Quiz 3- Qual dos laços é equivalente a um if que se repete? Quiz 4- O que acontece no código seguinte: int main() { unsigned int i; for (i = 10; i >= 0; i--) { printf (“a”); } return 0; } Laços – Laços aninhados. Laços, por serem comandos, podem ser colocados dentro de outros laços. Assim, podemos “aninhar” laços dentro de laços dentro de laços dentro de laços... Exemplo: For(sala = 1; sala <= 10 ; sala++) { for(mesa = 1; mesa <= 60; mesa++) { Limpar(sala,mesa); } } Laços – Observações Nos 3 tipos de laço, devemos tomar cuidado com a condição: Se ela nunca for falsa, o código entrará num laço infinito, efetivamente “travando” seu programa. No laço “for”, tomar cuidado para não incrementar uma variável no bloco de comandos e no incremento próprio do laço. Novamente: É sempre aconselhável usar um bloco de código ao usar laços, mesmo quando só um comando será repetido. Isso facilita a leitura do código, e elimina possíveis ambiguidades com laços aninhados. Dúvidas? Exercício 1 Escreva um programa em C que solicita 10 números ao usuário, através de um laço while, e ao final mostre os dois menores números distintos digitados pelo usuário. Obs: O usuário irá digitar um número por vez. Ex: Entrada: 20 1 8 1999 104 2 42 1 51 18 Saida: 12 Exercício 2 Faça um programa que recebe do usuário um número N e imprima uma matriz de NxN onde cada elemento é a soma da linha e da coluna da célula. Dica: use %.3d para ficar bem alinhado Ex: 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8 5 6 6 7 7 8 8 9 9 10 Exercício 3 Faça um programa que recebe um numero inteiro N positivo, e imprima todos os quadrados perfeitos que existem entre 0 e N (inclusive). Ex: Entrada: 64 Saída: 1 4 9 16 25 36 49 64