programaÇÃo ii – parte 5 profa. maria augusta constante puget

28
PROGRAMAÇÃO II – PARTE 5 Profa. Maria Augusta Constante Puget

Upload: maria-eduarda-affonso-barata

Post on 07-Apr-2016

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PROGRAMAÇÃO II – PARTE 5 Profa. Maria Augusta Constante Puget

PROGRAMAÇÃO II – PARTE 5

Profa. Maria Augusta Constante Puget

Page 2: PROGRAMAÇÃO II – PARTE 5 Profa. Maria Augusta Constante Puget

2

Comandos de Repetição (1)• Os comandos de repetição (ou laços) são úteis quando se tem tarefas a serem executadas repetitivamente.

• A linguagem C oferece os seguintes comandos de repetição:• while• for• do-while

Page 3: PROGRAMAÇÃO II – PARTE 5 Profa. Maria Augusta Constante Puget

3

O Comando while (1)• O uso do laço while é indicado quando se tem situações em que o laço pode ser terminado inesperadamente, por condições desenvolvidas dentro do corpo do laço.

Page 4: PROGRAMAÇÃO II – PARTE 5 Profa. Maria Augusta Constante Puget

4

O Comando while (2)Exemplo:#include <stdio.h>#include <stdlib.h>int main(){ int i; i = 1; while (i <= 10){ printf(“i = %i\n“, i); i++; } system("pause"); return 0;}

• Este laço imprime todos os inteiros contidos no intervalode 1 a 10.Note que:• 1 é o valor com o qual a variável de controle é inicializada.• i <= 10 é a condição deparada do laço.• Dentro do laço a variáveli é incrementada de 1 unidade a cada execução do laço.

Inicialização da variável de controle de laço

Condição do laço

Alteração da variável de controle do laço

Page 5: PROGRAMAÇÃO II – PARTE 5 Profa. Maria Augusta Constante Puget

5

O Comando while (3)Sintaxe do comando while (enquanto):

while (condição){ instrução_1; instrução_2;

... instrução_n;}

Se a condição entre parênteses for avaliada como:• Verdadeira (1):

As instruções entre chaves serão executadas. Após a execução da última instrução (instrução_n),a condição torna a ser avaliada.

• Falsa (0): As instruções entre chaves não são executadas e o fluxo do programa prossegue a partir da próxima instrução após o fecha-chaves.

• A condição entre parênteses é uma expressão booleana, isto é, que envolve operadores relacionais e, possivelmente, também operadores lógicos.

• Quando avaliada, uma tal expressão resulta em Verdadeiro (1) ou Falso (0).

Não há ponto-e-vírgula aqui

Page 6: PROGRAMAÇÃO II – PARTE 5 Profa. Maria Augusta Constante Puget

6

O Comando while (4)• Assim, o comando while consiste na palavra-chave while seguida de uma expressão de

teste entre parênteses.• A execução do laço while ocorre, normalmente, na seguinte ordem:1. A instrução de inicialização é executada. 2. A condição é avaliada. 3. Se a condição for verdadeira (igual a 1), o corpo do laço é executado uma vez e a

condição é avaliada novamente. 4. Este ciclo de teste e execução é repetido até que a expressão de teste se torne falsa

(igual a zero).5. Então o laço termina e o controle do programa passa para a linha seguinte ao laço.

• Elementos de um laço while:instrução de inicialização;while(condição){

//corpo do laço...incremento(ou decremento);...}

12

4

3

Page 7: PROGRAMAÇÃO II – PARTE 5 Profa. Maria Augusta Constante Puget

7

O Comando while (5)• Pode acontecer de a condição do laço não ser nunca verdadeira e o laço não

ser executado nenhuma vez.Exemplo:

i = 10;while(i < 5){

printf("i = %i\n", i);i++;

}• Se não houver dentro do laço uma instrução que altere o valor da variável de

controle do laço de tal forma que a condição do laço torne-se falsa em algum momento da execução do programa, tem-se um laço infinito.

Exemplo:i = 1;while(i < 10){

printf("i = %i\n", i);}

• Como i inicia valendo 10, a condição i < 5 é, logo de início, falsa.• Neste caso, o laço não é executado

nenhuma vez.

• Como i inicia valendo 1, a condição i < 10 é verdadeira.• Como o valor de i não é alterado dentro

do laço, a condição permanece verdadeira “para sempre”.

Page 8: PROGRAMAÇÃO II – PARTE 5 Profa. Maria Augusta Constante Puget

8

O Comando while (6)• Uma outra maneira de implementar um laço infinito é utilizando o literal 1 como condição de laço (lembrando que, em C, 1 = verdadeiro).

while(1){...}

Page 9: PROGRAMAÇÃO II – PARTE 5 Profa. Maria Augusta Constante Puget

9

O Comando break (1)• O comando break causa a interrupção imediata de um laço. • Quando um break é encontrado dentro de um laço o mesmo

deixa de ser executado e o controle do programa passa para a próxima instrução após o laço.

Exemplo:int valor;while(1){printf("Digite um inteiro positivo (0 para terminar):");scanf("%i“, &valor);if (valor == 0){break;}...}

Page 10: PROGRAMAÇÃO II – PARTE 5 Profa. Maria Augusta Constante Puget

10

O Comando for (1)• O laço for é geralmente usado quando queremos repetir algo por um número fixo de vezes.

• Ou seja, geralmente utilizamos um laço for quando sabemos de antemão o número de vezes a repetir.

Page 11: PROGRAMAÇÃO II – PARTE 5 Profa. Maria Augusta Constante Puget

11

O Comando for (2)Exemplo:#include <stdio.h>#include <stdlib.h>int main(){ int i; for(i = 1; i <= 10; i++){

printf("i = %i\n", i); } system("pause"); return 0;}

• Este laço imprime todos os inteiros contidos no intervalode 1 a 10.Note que:• 1 é o valor com o qual a variável de controle é inicializada.• i <= 10 é a condição deparada do laço.• A variável i é incrementada de 1 unidade a cada execução do laço.

Page 12: PROGRAMAÇÃO II – PARTE 5 Profa. Maria Augusta Constante Puget

12

O Comando for (3)Sintaxe do comando for:

for (expr_inicialização; condição; expr_alteração){ instrução_1; ... instrução_n;}

Exemplo:

Não há ponto-e-vírgula aqui

for(i = 1; i <= 10; i++){

printf("i = %i\n", i);}

Ponto-e-vírgula

Inicialização IncrementoCondição

Corpo do laço

Page 13: PROGRAMAÇÃO II – PARTE 5 Profa. Maria Augusta Constante Puget

13

Ordem de Execução das Expressões no Laço for (1)

1. Primeiramente, a expressão de inicialização (1) é avaliada. Isto ocorre uma única vez, no início da execução do laço for.

2. Em seguida, a condição (2) é avaliada.3. Se a condição for avaliada como verdadeira, o corpo do laço (3) é executado.4. Após a execução do corpo do laço a expressão de alteração(4) é executada.5. Novamente a condição (2) é avaliada.6. O laço é interrompido quando a condição (2) se tornar falsa.

for(i = 1; i <= 10; i++){

printf("i = %i\n", i);}

1 2 4

3

Page 14: PROGRAMAÇÃO II – PARTE 5 Profa. Maria Augusta Constante Puget

14

O Comando for - Exemplo (1)Exemplo:#include <stdio.h>#include <stdlib.h>int main(){ int i; for(i = 1; i <= 10; i++){

printf("\n%4i X 6 = %4i", i, i*6); } printf("\n"); system("pause"); return 0;}

Este laço imprime a tabuadado 6.

Page 15: PROGRAMAÇÃO II – PARTE 5 Profa. Maria Augusta Constante Puget

15

Flexibilidade do laço for (1)• Nos exemplos anteriores utilizamos o laço for na sua forma

mais comum, isto é:• Primeira expressão para inicializar a variável;• Segunda expressão para expressar um limite para a execução do laço;• Terceira expressão para incrementar ou decrementar a variável de laço.

• Podemos, entretanto, utilizar estas expressões de outras formas...

Page 16: PROGRAMAÇÃO II – PARTE 5 Profa. Maria Augusta Constante Puget

16

Flexibilidade do laço for (2)O Operador Vírgula

• Qualquer uma das expressões de um laço for pode conter várias instruções separadas por vírgulas.

Exemplo:#include <stdio.h>#include <stdlib.h>int main(){ int i, j; for(i = 0, j = i; (i+j) < 100; i++, j++){

printf("%i ", i+j); } printf("\n"); system("pause"); return 0;}

Este laço imprime os númerosdo 0 ao 98 de 2 em 2.

Page 17: PROGRAMAÇÃO II – PARTE 5 Profa. Maria Augusta Constante Puget

17

Flexibilidade do laço for (3)Omitindo expressões do laço for

• Qualquer uma das três expressões de um laço for pode ser omitida.• Os únicos elementos que não podem ser omitidos são os dois ponto-e-vírgulas.

Exemplo:#include <stdio.h>#include <stdlib.h>#include <conio.h>

int main(){ unsigned char ch; for( ;(ch = getche()) != '\r'; ){

printf("=%i\n", ch); } printf("\n"); system("pause"); return 0;}

Neste laço estão sendo omitidasas expressões de inicialização e de alteração.

Se as expressões de inicialização ou de alteração forem omitidas, elas são simplesmente desconsideradas.

Page 18: PROGRAMAÇÃO II – PARTE 5 Profa. Maria Augusta Constante Puget

18

Flexibilidade do laço for (4)Omitindo expressões do laço for (cont.)

• Se a condição de teste for omitida, ela será considerada permanentemente verdadeira.

Exemplo:#include <stdio.h>#include <stdlib.h>

int main(){ for( ; ; ){

printf(“Laco infinito...\n"); } system("pause"); return 0;}

Page 19: PROGRAMAÇÃO II – PARTE 5 Profa. Maria Augusta Constante Puget

19

Flexibilidade do laço for (5)Omitindo o corpo do laço for (cont.)

• O corpo do laço pode ser vazio.• No entanto, neste caso, deve ser colocado um ponto-e-vírgula após o comando for.

Exemplo:#include <stdio.h>#include <stdlib.h>#include <conio.h>

int main(){ unsigned char ch; for( ;(ch = getche()) != '\r'; printf("=%i\n", ch)); printf("\n"); system("pause"); return 0;}

Aqui há ponto-e-vírgula!

Só quando o corpo do laçoé vazio!!!

Page 20: PROGRAMAÇÃO II – PARTE 5 Profa. Maria Augusta Constante Puget

20

Laço for Aninhado (1)• Quando um laço for faz parte do corpo de outro laço for, dizemos que o laço interno está aninhado.

• Para ilustrar esta situação no exemplo seguinte temos um programa que imprime as tabuadas do 2 ao 9.

Page 21: PROGRAMAÇÃO II – PARTE 5 Profa. Maria Augusta Constante Puget

21

Laço for Aninhado (2)Exemplo:#include <stdio.h>#include <stdlib.h>

int main(){ int i, j; for(i = 2; i<=9 ; i++){ system("cls");

printf("Tabuada do %i\n", i);for(j=1; j<=10; j++){

printf("%3d X %3d = %3d\n", i, j, i*j);}system("pause");printf("\n");

} return 0;}

Só quando o corpo do laçoé vazio!!!

Page 22: PROGRAMAÇÃO II – PARTE 5 Profa. Maria Augusta Constante Puget

22

Laço while Aninhado• Da mesma forma que o laço for, também podemos ter laços while aninhados.

• Para ilustrar vamos reescrever o programa da tabuada utilizando, ao invés do comando for o comando while.

Page 23: PROGRAMAÇÃO II – PARTE 5 Profa. Maria Augusta Constante Puget

23

O Comando do-while (1)• O comando do-while é utilizado em situações em que é necessário executar o corpo do laço pelo menos uma vez.

• Neste laço, a expressão de teste é avaliada por último.

Page 24: PROGRAMAÇÃO II – PARTE 5 Profa. Maria Augusta Constante Puget

24

O Comando do-while (2)Exemplo:#include <stdio.h>#include <stdlib.h>int main(){ int idade; do{ printf("\nForneca sua idade: "); scanf("%i", &idade); }while(idade < 0); printf("\nSua idade vale: %i.\n\n", idade); system("pause"); return 0;}

• Este laço imprime pelo menosuma vez a frase solicitando a idade, fazendo a leitura da mesma em seguidacom o scanf.• Se o usuário fornecer um valor negativopara a idade, então o laço é executadonovamente, solicitando uma vez mais a idade do usuário.• O laço só é interrompido quando o usuário finalmente fornece um valor positivo para a idade, quando então a condiçãodo while se torna falsa.

Page 25: PROGRAMAÇÃO II – PARTE 5 Profa. Maria Augusta Constante Puget

25

O Comando do-while (3)Sintaxe do comando do-while :

do{ instrução_1; ... instrução_n;}while(condição);

• O comando do-while consiste na palavra-chave do seguida de um bloco de uma ou mais instruções entre chaves e terminada pela palavra-chave while seguida por uma expressão de teste entre parênteses (condição), terminada por ponto-e-vírgula.

Não há ponto-e-vírgula aqui

Ponto-e-vírgula aqui

Page 26: PROGRAMAÇÃO II – PARTE 5 Profa. Maria Augusta Constante Puget

26

Ordem de Execução do do-while (1)do{ instrução_1; ... instrução_n;}while(condição);

1. Primeiramente o bloco de código é executado.2. Em seguida, a condição entre parênteses é avaliada.3. Se a condição for avaliada como verdadeira (igual a 1), o laço é mais

uma vez executado.4. Este ciclo de execução do bloco seguido pela avaliação da condição é

repetido até que a expressão de teste se torne falsa (igual a zero), quando então o laço termina e o controle do programa passa para a linha seguinte ao laço.

Page 27: PROGRAMAÇÃO II – PARTE 5 Profa. Maria Augusta Constante Puget

27

Aplicações do do-while (1)O comando do-while é utilizado com frequência para:• Fazer validação de dados.• Apresentação de menus.

Page 28: PROGRAMAÇÃO II – PARTE 5 Profa. Maria Augusta Constante Puget

28

Representação em Fluxograma while e for do-while