aula08 (1)

64
9002 — Aula 08 Algoritmos e Programação de Computadores Instituto de Engenharia – UFMT Primeiro Semestre de 2015 13 de abril de 2015

description

aula

Transcript of aula08 (1)

Page 1: aula08 (1)

9002 — Aula 08Algoritmos e Programação de Computadores

Instituto de Engenharia – UFMT

Primeiro Semestre de 2015

13 de abril de 2015

Page 2: aula08 (1)

Roteiro

1 Revisão

2 Comandos de Repetição

3 Construção Enquanto-Faça

4 Comando while

5 Sumilação de código

6 O que vem depois

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 2 / 26

Page 3: aula08 (1)

RevisãoNas aulas anteriores, vimos como escrever programas capazes deexecutar comandos de forma linear, e, se necessário, tomar decisõescom relação à executar ou não um bloco de comandos.

Fig 1 - Fluxogramas dos algoritmos das aulas anteriores.

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 3 / 26

Page 4: aula08 (1)

Revisão

Vimos, ainda, um procedimento de simulação (=teste de mesa), quepode e deve ser utilizado para testar o algoritmo.Esta técnica de simulação é composta apenas por dois passos:

I Reservar espaço para cada variávelI Executar em sequência cada um dos passos do algoritmo.

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 4 / 26

Page 5: aula08 (1)

Exemplo — até 4

Programa que imprime todos os números inteiros entre 1 e 4

. . .printf(“1”);printf(“2”);printf(“3”);printf(“4”);. . .

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 5 / 26

Page 6: aula08 (1)

Exemplo — até 4

Programa que imprime todos os números inteiros entre 1 e 4

. . .printf(“1”);printf(“2”);printf(“3”);printf(“4”);. . .

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 5 / 26

Page 7: aula08 (1)

Exemplo — até 4

Programa que imprime todos os números inteiros entre 1 e 4

. . .printf(“1”);printf(“2”);printf(“3”);printf(“4”);. . .

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 5 / 26

Page 8: aula08 (1)

Exemplo — até 4

Programa que imprime todos os números inteiros entre 1 e 4

. . .printf(“1”);printf(“2”);printf(“3”);printf(“4”);. . .

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 5 / 26

Page 9: aula08 (1)

Exemplo — até 4

Programa que imprime todos os números inteiros entre 1 e 4

. . .printf(“1”);printf(“2”);printf(“3”);printf(“4”);. . .

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 5 / 26

Page 10: aula08 (1)

Exemplo — até 100

Programa que imprime todos os números inteiros entre 1 e 100

. . .printf(“1”);printf(“2”);printf(“3”);printf(“4”);printf(“5”);printf(“6”);...printf(“99”);printf(“100”);. . .

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 6 / 26

Page 11: aula08 (1)

Exemplo — até 100

Programa que imprime todos os números inteiros entre 1 e 100

. . .printf(“1”);printf(“2”);printf(“3”);printf(“4”);printf(“5”);printf(“6”);...printf(“99”);printf(“100”);. . .

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 6 / 26

Page 12: aula08 (1)

Exemplo — até 100

Programa que imprime todos os números inteiros entre 1 e 100

. . .printf(“1”);printf(“2”);printf(“3”);printf(“4”);printf(“5”);printf(“6”);...printf(“99”);printf(“100”);. . .

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 6 / 26

Page 13: aula08 (1)

Exemplo — até 100

Programa que imprime todos os números inteiros entre 1 e 100

. . .printf(“1”);printf(“2”);printf(“3”);printf(“4”);printf(“5”);printf(“6”);...printf(“99”);printf(“100”);. . .

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 6 / 26

Page 14: aula08 (1)

Exemplo — até 100

Programa que imprime todos os números inteiros entre 1 e 100

. . .printf(“1”);printf(“2”);printf(“3”);printf(“4”);printf(“5”);printf(“6”);...printf(“99”);printf(“100”);. . .

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 6 / 26

Page 15: aula08 (1)

Exemplo — até 100

Programa que imprime todos os números inteiros entre 1 e 100

. . .printf(“1”);printf(“2”);printf(“3”);printf(“4”);printf(“5”);printf(“6”);...printf(“99”);printf(“100”);. . .

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 6 / 26

Page 16: aula08 (1)

Exemplo — até 100

Programa que imprime todos os números inteiros entre 1 e 100

. . .printf(“1”);printf(“2”);printf(“3”);printf(“4”);printf(“5”);printf(“6”);...printf(“99”);printf(“100”);. . .

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 6 / 26

Page 17: aula08 (1)

Exemplo — até 100

Programa que imprime todos os números inteiros entre 1 e 100

. . .printf(“1”);printf(“2”);printf(“3”);printf(“4”);printf(“5”);printf(“6”);...printf(“99”);printf(“100”);. . .

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 6 / 26

Page 18: aula08 (1)

Exemplo — até 100

Programa que imprime todos os números inteiros entre 1 e 100

. . .printf(“1”);printf(“2”);printf(“3”);printf(“4”);printf(“5”);printf(“6”);...printf(“99”);printf(“100”);. . .

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 6 / 26

Page 19: aula08 (1)

Exemplo — até 100

Programa que imprime todos os números inteiros entre 1 e 100

. . .printf(“1”);printf(“2”);printf(“3”);printf(“4”);printf(“5”);printf(“6”);...printf(“99”);printf(“100”);. . .

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 6 / 26

Page 20: aula08 (1)

Exemplo — até n dado

Programa que imprime todos os números inteiros entre 1 e n (dado).Sabendo que os valores de n variam entre 1 e 100.

. . .int n;scanf("%d", &n);printf(“1”);if (n>=2)

printf(“2”);if (n>=3)

printf(“3”);/* repete 96 vezes o bloco acima */if (n>=100)

printf(“100”);. . .

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 7 / 26

Page 21: aula08 (1)

Exemplo — até n dado

Programa que imprime todos os números inteiros entre 1 e n (dado).Sabendo que os valores de n variam entre 1 e 100.

. . .int n;scanf("%d", &n);printf(“1”);if (n>=2)

printf(“2”);if (n>=3)

printf(“3”);/* repete 96 vezes o bloco acima */if (n>=100)

printf(“100”);. . .

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 7 / 26

Page 22: aula08 (1)

Exemplo — até n dado

Programa que imprime todos os números inteiros entre 1 e n (dado).Sabendo que os valores de n variam entre 1 e 100.

. . .int n;scanf("%d", &n);printf(“1”);if (n>=2)

printf(“2”);if (n>=3)

printf(“3”);/* repete 96 vezes o bloco acima */if (n>=100)

printf(“100”);. . .

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 7 / 26

Page 23: aula08 (1)

Exemplo — até n dado

Programa que imprime todos os números inteiros entre 1 e n (dado).Sabendo que os valores de n variam entre 1 e 100.

. . .int n;scanf("%d", &n);printf(“1”);if (n>=2)

printf(“2”);if (n>=3)

printf(“3”);/* repete 96 vezes o bloco acima */if (n>=100)

printf(“100”);. . .

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 7 / 26

Page 24: aula08 (1)

Exemplo — até n dado

Programa que imprime todos os números inteiros entre 1 e n (dado).Sabendo que os valores de n variam entre 1 e 100.

. . .int n;scanf("%d", &n);printf(“1”);if (n>=2)

printf(“2”);if (n>=3)

printf(“3”);/* repete 96 vezes o bloco acima */if (n>=100)

printf(“100”);. . .

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 7 / 26

Page 25: aula08 (1)

Exemplo — até n dado

Programa que imprime todos os números inteiros entre 1 e n (dado).Sabendo que os valores de n variam entre 1 e 100.

. . .int n;scanf("%d", &n);printf(“1”);if (n>=2)

printf(“2”);if (n>=3)

printf(“3”);/* repete 96 vezes o bloco acima */if (n>=100)

printf(“100”);. . .

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 7 / 26

Page 26: aula08 (1)

Exemplo — até n dado

Programa que imprime todos os números inteiros entre 1 e n (dado).Sabendo que os valores de n variam entre 1 e 100.

. . .int n;scanf("%d", &n);printf(“1”);if (n>=2)

printf(“2”);if (n>=3)

printf(“3”);/* repete 96 vezes o bloco acima */if (n>=100)

printf(“100”);. . .

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 7 / 26

Page 27: aula08 (1)

Repetindo...

Se observarmos com atenção, perceberemos que, nestes casos, blocos decomandos são executados várias vezes (repetidamente) para obter oresultado.

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 8 / 26

Page 28: aula08 (1)

Estruturas de repetição

Permitem que uma sequência de comandos seja executada repetidasvezes. Cada uma destas execuções é chamada de iteração.A execução termina quando um critério de parada é atingido.Veremos o comando while que implementa uma construção do tipoEnquanto-Faça.

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 9 / 26

Page 29: aula08 (1)

Construção Enquanto-Faça

Nesta construção, o critério de parada é testado antes que asequência de comandos da ação seja executada. Deste modo, a açãoé executada enquanto a condição for verdadeira.

Fig. 2 - Fluxograma.

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 10 / 26

Page 30: aula08 (1)

Construção Enquanto-Faça

Três questões são fundamentais:Qual ação deve ser repetida?Quantas vezes a repetição deve ser realizada?Qual condição pode ser utilizada para representar esta repetição?

ImportanteLembre-se de que um algoritmo deve sempre terminar. A condiçãoprojetada deve deixar de ser verdadeira em algum momento. Por isto, aação deve alterar as variáveis envolvidas na condição de parada.

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 11 / 26

Page 31: aula08 (1)

Construção Enquanto-Faça

Três questões são fundamentais:Qual ação deve ser repetida?Quantas vezes a repetição deve ser realizada?Qual condição pode ser utilizada para representar esta repetição?

ImportanteLembre-se de que um algoritmo deve sempre terminar. A condiçãoprojetada deve deixar de ser verdadeira em algum momento. Por isto, aação deve alterar as variáveis envolvidas na condição de parada.

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 11 / 26

Page 32: aula08 (1)

Construção Enquanto-Faça

Vamos refletir novamente sobre problema de imprimir os números inteirosentre 1 e 100.

Qual ação deve ser executada?R: Impressão dos números 1, 2, 3, ... 100Ideia: Utilizar uma variável, por exemplo, i para representar osnúmeros. Iniciar i com valor 1. Incrementar i repetidamente.Quantas vezes a ação deve ser repetida?R. 100 vezes.Qual condição pode ser utilizada para representar esta repetição?R. Como a variável i indica quantas repetições foram executadas,podemos utilizá-la diretamente. Nossa condição pode ser, porexemplo, i ≤ 100.

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 12 / 26

Page 33: aula08 (1)

Construção Enquanto-Faça

Vamos refletir novamente sobre problema de imprimir os números inteirosentre 1 e 100.

Qual ação deve ser executada?R: Impressão dos números 1, 2, 3, ... 100Ideia: Utilizar uma variável, por exemplo, i para representar osnúmeros. Iniciar i com valor 1. Incrementar i repetidamente.Quantas vezes a ação deve ser repetida?R. 100 vezes.Qual condição pode ser utilizada para representar esta repetição?R. Como a variável i indica quantas repetições foram executadas,podemos utilizá-la diretamente. Nossa condição pode ser, porexemplo, i ≤ 100.

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 12 / 26

Page 34: aula08 (1)

Construção Enquanto-Faça

Vamos refletir novamente sobre problema de imprimir os números inteirosentre 1 e 100.

Qual ação deve ser executada?R: Impressão dos números 1, 2, 3, ... 100Ideia: Utilizar uma variável, por exemplo, i para representar osnúmeros. Iniciar i com valor 1. Incrementar i repetidamente.Quantas vezes a ação deve ser repetida?R. 100 vezes.Qual condição pode ser utilizada para representar esta repetição?R. Como a variável i indica quantas repetições foram executadas,podemos utilizá-la diretamente. Nossa condição pode ser, porexemplo, i ≤ 100.

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 12 / 26

Page 35: aula08 (1)

Construção Enquanto-Faça

Vamos refletir novamente sobre problema de imprimir os números inteirosentre 1 e 100.

Qual ação deve ser executada?R: Impressão dos números 1, 2, 3, ... 100Ideia: Utilizar uma variável, por exemplo, i para representar osnúmeros. Iniciar i com valor 1. Incrementar i repetidamente.Quantas vezes a ação deve ser repetida?R. 100 vezes.Qual condição pode ser utilizada para representar esta repetição?R. Como a variável i indica quantas repetições foram executadas,podemos utilizá-la diretamente. Nossa condição pode ser, porexemplo, i ≤ 100.

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 12 / 26

Page 36: aula08 (1)

Construção Enquanto-Faça

Vamos refletir novamente sobre problema de imprimir os números inteirosentre 1 e 100.

Qual ação deve ser executada?R: Impressão dos números 1, 2, 3, ... 100Ideia: Utilizar uma variável, por exemplo, i para representar osnúmeros. Iniciar i com valor 1. Incrementar i repetidamente.Quantas vezes a ação deve ser repetida?R. 100 vezes.Qual condição pode ser utilizada para representar esta repetição?R. Como a variável i indica quantas repetições foram executadas,podemos utilizá-la diretamente. Nossa condição pode ser, porexemplo, i ≤ 100.

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 12 / 26

Page 37: aula08 (1)

Construção Enquanto-Faça

Vamos refletir novamente sobre problema de imprimir os números inteirosentre 1 e 100.

Qual ação deve ser executada?R: Impressão dos números 1, 2, 3, ... 100Ideia: Utilizar uma variável, por exemplo, i para representar osnúmeros. Iniciar i com valor 1. Incrementar i repetidamente.Quantas vezes a ação deve ser repetida?R. 100 vezes.Qual condição pode ser utilizada para representar esta repetição?R. Como a variável i indica quantas repetições foram executadas,podemos utilizá-la diretamente. Nossa condição pode ser, porexemplo, i ≤ 100.

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 12 / 26

Page 38: aula08 (1)

Construção Enquanto-Faça

Fig. 3 - Fluxograma.

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 13 / 26

Page 39: aula08 (1)

Comando whileO comando while é utilizado para executar um bloco de comandosenquando uma condição for satisfeita

Sintaxe do whilewhile (condicao) {

ação;}

Funcionamento:

Passo 1: Testa condição:Se condição for verdadeira, executa o Passo 2.Se condição for falsa, executa o Passo 4 (pula o bloco de

comandos).Passo 2: Executa o bloco de comandos.Passo 3: Volta para o Passo 1.Passo 4: Executa os comandos fora do bloco repetitivo.

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 14 / 26

Page 40: aula08 (1)

Comando whileO comando while é utilizado para executar um bloco de comandosenquando uma condição for satisfeita

Sintaxe do whilewhile (condicao) {

ação;}

Funcionamento:

Passo 1: Testa condição:Se condição for verdadeira, executa o Passo 2.Se condição for falsa, executa o Passo 4 (pula o bloco de

comandos).Passo 2: Executa o bloco de comandos.Passo 3: Volta para o Passo 1.Passo 4: Executa os comandos fora do bloco repetitivo.

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 14 / 26

Page 41: aula08 (1)

Imprimindo os 100 primeiros números inteiros.

. . .i = 1;while(i <= 100) {

printf(“%d”, i);i = i + 1;

}. . .

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 15 / 26

Page 42: aula08 (1)

Imprimindo os 100 primeiros números inteiros.

. . .i = 1;while(i <= 100) {

printf(“%d”, i);i = i + 1;

}. . .

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 15 / 26

Page 43: aula08 (1)

Imprimindo os 100 primeiros números inteiros.

Fig. 3 - Relação entre o fluxograma e a construção.

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 16 / 26

Page 44: aula08 (1)

Imprimindo os n primeiros números inteiros.

int i = 1, n;scanf("%d", &n);while (i <= n) {

printf("%d ", i);i++;

}

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 17 / 26

Page 45: aula08 (1)

Exercício

ExercícioCalcule a divisão inteira de dois numeros positivos usando apenas soma esubtração.

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 18 / 26

Page 46: aula08 (1)

Solução — em C

...scanf("%d %d", &dividendo, &divisor);

contador = 0;while (dividendo >= divisor) {

dividendo = dividendo - divisor;contador++;

}...

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 19 / 26

Page 47: aula08 (1)

Simulação Manual - Recapitulando

Simulando códigoBem simples: Existem apenas 2 passos.

I “Reservar” os espaços para os nossos objetosI “Executar” em sequência cada um dos passos do algoritmo.

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 20 / 26

Page 48: aula08 (1)

Simulando

...scanf("%d %d", &dividendo, &divisor); /*1*/

contador = 0; /*2*/while (dividendo >= divisor) { /*3*/

dividendo = dividendo - divisor; /*3.1*/contador++; /*3.2*/

}...

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 21 / 26

Page 49: aula08 (1)

Simulando

...scanf("%d %d", &dividendo, &divisor); /*1*/

contador = 0; /*2*/while (dividendo >= divisor) { /*3*/

dividendo = dividendo - divisor; /*3.1*/contador++; /*3.2*/

}...

Reservando espaço para as variáveis

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 21 / 26

Page 50: aula08 (1)

Simulando

...scanf("%d %d", &dividendo, &divisor); /*1*/

contador = 0; /*2*/while (dividendo >= divisor) { /*3*/

dividendo = dividendo - divisor; /*3.1*/contador++; /*3.2*/

}...

Reservando espaço para as variáveisApós executar a linha 1.Tipo inteiro positivo inteiro positivo inteiro positivoNome dividendo divisor contadorValor 21 7 ?

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 21 / 26

Page 51: aula08 (1)

Simulando

...scanf("%d %d", &dividendo, &divisor); /*1*/

contador = 0; /*2*/while (dividendo >= divisor) { /*3*/

dividendo = dividendo - divisor; /*3.1*/contador++; /*3.2*/

}...

Reservando espaço para as variáveisApós executar a linha 2.Tipo inteiro positivo inteiro positivo inteiro positivoNome dividendo divisor contadorValor 21 7 0

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 21 / 26

Page 52: aula08 (1)

Simulando

...scanf("%d %d", &dividendo, &divisor); /*1*/

contador = 0; /*2*/while (dividendo >= divisor) { /*3*/

dividendo = dividendo - divisor; /*3.1*/contador++; /*3.2*/

}...

Após executar a linha 3.1.Tipo inteiro positivo inteiro positivo inteiro positivoNome dividendo divisor contadorValor 14 7 0

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 21 / 26

Page 53: aula08 (1)

Simulando

...scanf("%d %d", &dividendo, &divisor); /*1*/

contador = 0; /*2*/while (dividendo >= divisor) { /*3*/

dividendo = dividendo - divisor; /*3.1*/contador++; /*3.2*/

}...

Após executar a linha 3.2.Tipo inteiro positivo inteiro positivo inteiro positivoNome dividendo divisor contadorValor 14 7 1

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 21 / 26

Page 54: aula08 (1)

Simulando

...scanf("%d %d", &dividendo, &divisor); /*1*/

contador = 0; /*2*/while (dividendo >= divisor) { /*3*/

dividendo = dividendo - divisor; /*3.1*/contador++; /*3.2*/

}...

Após executar a linha 3.1.Tipo inteiro positivo inteiro positivo inteiro positivoNome dividendo divisor contadorValor 7 7 1

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 21 / 26

Page 55: aula08 (1)

Simulando

...scanf("%d %d", &dividendo, &divisor); /*1*/

contador = 0; /*2*/while (dividendo >= divisor) { /*3*/

dividendo = dividendo - divisor; /*3.1*/contador++; /*3.2*/

}...

Após executar a linha 3.2Tipo inteiro positivo inteiro positivo inteiro positivoNome dividendo divisor contadorValor 7 7 2

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 21 / 26

Page 56: aula08 (1)

Simulando

...scanf("%d %d", &dividendo, &divisor); /*1*/

contador = 0; /*2*/while (dividendo >= divisor) { /*3*/

dividendo = dividendo - divisor; /*3.1*/contador++; /*3.2*/

}...

Após executar a linha 3.1.Tipo inteiro positivo inteiro positivo inteiro positivoNome dividendo divisor contadorValor 0 7 2

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 21 / 26

Page 57: aula08 (1)

Simulando

...scanf("%d %d", &dividendo, &divisor); /*1*/

contador = 0; /*2*/while (dividendo >= divisor) { /*3*/

dividendo = dividendo - divisor; /*3.1*/contador++; /*3.2*/

}...

Após executar a linha 3.2.Tipo inteiro positivo inteiro positivo inteiro positivoNome dividendo divisor contadorValor 0 7 3

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 21 / 26

Page 58: aula08 (1)

Simulação Manual - Exercício

Simulando códigoSimule o algoritmo para dividendo igual à 35 e divisor igual à 6.

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 22 / 26

Page 59: aula08 (1)

Solução — em C (completo)#include <stdio.h>int main() {

int dividendo, divisor, contador;

// lê dividendo e divisorscanf("%d %d", &dividendo, &divisor);

// realiza a divisãocontador = 0;while (dividendo >= divisor) {

dividendo = dividendo - divisor;contador++;

}

// mostra resultado da divisãoprintf("%d\n", contador);return 0;

}

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 23 / 26

Page 60: aula08 (1)

Casos especiais do while

Casos especiais1 O que acontece se a condição for falsa na primeira vez?

while (a!=a) a = a+1;

R: Ele nunca entra na repetição (loop).

2 O que acontece se a condição for sempre verdadeira?while (a==a) a = a+1;

R: Ele entra na repetição e nunca sai (loop infinito).

O que acontece no programa de divisão quando o dividendo é menor que odivisor?

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 24 / 26

Page 61: aula08 (1)

Casos especiais do while

Casos especiais1 O que acontece se a condição for falsa na primeira vez?

while (a!=a) a = a+1;

R: Ele nunca entra na repetição (loop).

2 O que acontece se a condição for sempre verdadeira?while (a==a) a = a+1;

R: Ele entra na repetição e nunca sai (loop infinito).

O que acontece no programa de divisão quando o dividendo é menor que odivisor?

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 24 / 26

Page 62: aula08 (1)

Casos especiais do while

Casos especiais1 O que acontece se a condição for falsa na primeira vez?

while (a!=a) a = a+1;

R: Ele nunca entra na repetição (loop).

2 O que acontece se a condição for sempre verdadeira?while (a==a) a = a+1;

R: Ele entra na repetição e nunca sai (loop infinito).

O que acontece no programa de divisão quando o dividendo é menor que odivisor?

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 24 / 26

Page 63: aula08 (1)

Exercício

1 Faça um programa que lê um número n e imprime o resultado dasoma n∑

i=1i

2 Faça um programa que lê um número n e imprime o fatorial de n(segundo exercício da lista).

3 Faça um programa que lê dois números inteiros n e a e imprime oresultado de an.

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 25 / 26

Page 64: aula08 (1)

Nas próximas aulas...

Nas próximas aulas veremos:Outras construções iteartivas e seus respectivos comandos em C:

1 Para-Faça - for2 Repita-Até - do...while

Outros problemas cujas soluções envolvem o uso de comandos derepetição.

IEng - UFMT (2015/1) 9002 — Aula 08 13 de abril de 2015 26 / 26