Você está na página 1de 13

Rastreando Algoritmos Rastreio de um Algoritmo

1. Antes de iniciar o rastreio de um algoritmo,


numere todas as linhas (passo) do algoritmo
‰ Uma vez desenvolvido um
algoritmo, como saber se ele faz 2. Escolha um conjunto significativo de dados de
o que se supõe que faça? entrada que será fornecido ao algoritmo
‰ Nesta aula veremos que uma 3. Para cada dado de entrada:
forma é executar o algoritmo a) Utilize uma tabela na qual as linhas representam os
manualmente, com dados passos executados pelo algoritmo e as colunas
representativos de entrada, representam os valores de todas as variáveis do
registrando os valores tomados algoritmo
pela variáveis passo a passo do
algoritmo b) Inicie o rastreio do algoritmo, começando pelo passo 1 e
continue a execução respeitando as estruturas de
‰ Esta técnica é conhecida como controle já vistas: seqüência, seleção e repetição
rastreio (trace)
4. Repita o passo 3 para os demais dados de
entrada
José Augusto Baranauskas E-mail: augusto@ffclrp.usp.br
Departamento de Física e Matemática – FFCLRP-USP URL: http://fmrp.usp.br/augusto
Sala 226 – Bloco P2 – Fone (16) 3602-4361
2

Exemplo: Numerando os Passos Rastreio de um Algoritmo


1. Antes de iniciar o rastreio de um algoritmo,
numere todas as linhas (passo) do algoritmo
Algoritmo Divisão. Este Algoritmo Divisão. Este 2. Escolha um conjunto significativo de dados de
algoritmo lê dois algoritmo lê dois entrada que será fornecido ao algoritmo
valores reais e calcula valores reais e calcula
o resultado da divisão o resultado da divisão 3. Para cada dado de entrada:
entre eles. entre eles. a) Utilize uma tabela na qual as linhas representam os
Início Início passos executados pelo algoritmo e as colunas
Leia(A,B) 1 Leia(A,B)
representam os valores de todas as variáveis do
algoritmo
D Å A / B 2 D Å A / B
b) Inicie o rastreio do algoritmo, começando pelo passo 1 e
Escreva(”Divisão = ”,D) 3 Escreva(”Divisão = ”,D) continue a execução respeitando as estruturas de
Fim Fim controle já vistas: seqüência, seleção e repetição
4. Repita o passo 3 para os demais dados de
entrada
3 4

Conjunto Significativo de Dados Exemplo 1


‰Depende de cada algoritmo ‰Determine um conjunto ‰ Possíveis valores:
ƒ A > 0, B > 0
de dados de teste para
‰Como regra geral, o conjunto de dados deve o algoritmo:
ƒ
ƒ
A = 0, B > 0
A = 0, B = 0
permitir que cada passo do algoritmo seja ƒ A < 0, B = 0
ƒ A < 0, B < 0
executado pelo menos uma vez Algoritmo Divisão. Este
ƒ ...
algoritmo lê dois
‰No caso de seleções, cada uma das valores reais e calcula
o resultado da divisão
alternativas deve ser testada entre eles.
Início
‰No caso de repetições, o laço deve ser 1 Leia(A,B)
executado zero (se possível), uma e mais de 2 D Å A / B
3 Escreva(”Divisão = ”,D)
uma vez Fim

5 6

1
Exemplo 2 Exemplo 3
‰ Determine um conjunto de ‰Possíveis valores: ‰Determine um conjunto de ‰Possíveis valores:
dados de teste para o dados de teste para o ƒ N=0
algoritmo: ƒ (N1 + N2)/2 > 5 algoritmo:
ƒ N=1
ƒ (N1 + N2)/2 = 5 Algoritmo ParÍmpar. Este
Algoritmo Média. Este algoritmo ƒ N=2
lê duas notas, calcula a média ƒ (N1 + N2)/2 < 5 algoritmo lê um valor
inteiro N e determina se ƒ N=3
aritmética delas e imprime uma
mensagem indicativa se o aluno
foi aprovado ou não,
‰Os dois primeiros ele é par ou ímpar. ƒ ...
Início
juntamente com a média obtida.
Início
conjuntos de dados 1 Leia(N) ‰Os conjuntos de dados
1 Leia(N1,N2) testam a parte do 2 Se N % 2 = 0 Então (N=0, N=2, ...) testam a
2 Media Å (N1 + N2) / 2.0
“então” e o último 3 Escreva(N,” é par”) parte do então e os
3 Se Media >= 5.0 Então
4 Escreva(“Aprovado média”, conjunto de dados 4 Senão conjuntos (N=1, N=3,
Media)
testa a parte do
5 Escreva(N,” é ímpar”) ...) testam a parte do
5 Senão 6 Fim Se senão
6 Escreva(“Reprovado média”,
Media)
“senão” Fim
7 Fim Se
Fim
7 8

Exemplo 4 Exemplo 5
‰Determine um ‰Possíveis valores: ‰ Determine um conjunto de dados
de teste para o algoritmo:
‰ Possíveis valores:
conjunto de dados ƒ N = 0 (laço não é ƒ N=0
de teste para o executado) Algoritmo Primo. Lê um número N e ƒ N = 1 (teste do então do
determina se ele é ou não um número
1º se)
algoritmo: ƒ N = 1 (laço
primo.
Início
ƒ N = 2 (teste do senão
executado 1 vez) 1 Leia(N)
2 Se N = 1 Então do 1º se, teste do para,
Algoritmo Fatorial. Calcula o
fatorial de um número N. ƒ N = 2 (laço 3 Escreva(”1 nao e' primo”) teste do então do 2º se,
4 Senão
Início executado duas 5 divisores Å 1 teste do então do 3º se)
1 Leia(N)
vezes)
6
7
Para i Å 2 até N Faça
Se N % i = 0 Então
ƒ N = 3 (teste do senão
2 fat Å 1
8 divisores Å divisores + 1 do 1º se, teste do para,
3 Para i Å 1 até N Faça ƒ N = 3 (laço 9 Fim Se teste então do 2º se,
4 fat Å fat * i executado 3 vezes) 10
11
Fim Para
Se divisores = 2 Então
teste do senão do 3º se)
5 Fim Para
6 Escreva(”fatorial=”,fat) ƒ ... 12 Escreva(N,” é primo”) ƒ ...
13 Senão
Fim 14 Escreva(N,” não é primo”)
15 Fim Se
16 Fim Se
Fim
9 10

Rastreio de um Algoritmo Exemplo 1: 1º conjunto de dados


1. Antes de iniciar o rastreio de um algoritmo, ‰Rastrear o algoritmo
numere todas as linhas (passo) do algoritmo Variáveis/ A B D
para A > 0, B > 0 (por
2. Escolha um conjunto significativo de dados de exemplo A = 2, B = 5) Passos
entrada que será fornecido ao algoritmo
1 2 5
3. Para cada dado de entrada: Algoritmo Divisão. Este
a) Utilize uma tabela na qual as linhas representam os algoritmo lê dois
passos executados pelo algoritmo e as colunas valores reais e calcula
representam os valores de todas as variáveis do o resultado da divisão
algoritmo entre eles.
b) Inicie o rastreio do algoritmo, começando pelo passo 1 e Início
continue a execução respeitando as estruturas de 1 Leia(A,B)
controle já vistas: seqüência, seleção e repetição 2 D Å A / B
4. Repita o passo 3 para os demais dados de 3 Escreva(”Divisão = ”,D)
entrada Fim

11 12

2
Exemplo 1: 1º conjunto de dados Exemplo 1: 1º conjunto de dados
‰Rastrear o algoritmo ‰Rastrear o algoritmo
Variáveis/ A B D Variáveis/ A B D
para A > 0, B > 0 (por para A > 0, B > 0 (por
exemplo A = 2, B = 5) Passos exemplo A = 2, B = 5) Passos
1 2 5 1 2 5
Algoritmo Divisão. Este Algoritmo Divisão. Este
algoritmo lê dois algoritmo lê dois
valores reais e calcula valores reais e calcula
o resultado da divisão 2 2 5 0.4 o resultado da divisão 2 2 5 0.4
entre eles. entre eles.
Início Início
1 Leia(A,B) 1 Leia(A,B) 3 2 5 0.4
2 D Å A / B 2 D Å A / B
3 Escreva(”Divisão = ”,D) 3 Escreva(”Divisão = ”,D)
Fim Fim

13 14

Rastreio de um Algoritmo Exemplo 1: 2º conjunto de dados


1. Antes de iniciar o rastreio de um algoritmo, ‰Rastrear o algoritmo
numere todas as linhas (passo) do algoritmo Variáveis/ A B D
para A = 0, B > 0 (por
2. Escolha um conjunto significativo de dados de exemplo A = 0, B = 5) Passos
entrada que será fornecido ao algoritmo
1 0 5
3. Para cada dado de entrada: Algoritmo Divisão. Este
a) Utilize uma tabela na qual as linhas representam os algoritmo lê dois
passos executados pelo algoritmo e as colunas valores reais e calcula
representam os valores de todas as variáveis do o resultado da divisão
algoritmo entre eles.
b) Inicie o rastreio do algoritmo, começando pelo passo 1 e Início
continue a execução respeitando as estruturas de 1 Leia(A,B)
controle já vistas: seqüencial, seleção e repetição 2 D Å A / B
4. Repita o passo 3 para os demais dados de 3 Escreva(”Divisão = ”,D)
entrada Fim

15 16

Exemplo 1: 2º conjunto de dados Exemplo 1: 2º conjunto de dados


‰Rastrear o algoritmo ‰Rastrear o algoritmo
Variáveis/ A B D Variáveis/ A B D
para A = 0, B > 0 (por para A = 0, B > 0 (por
exemplo A = 0, B = 5) Passos exemplo A = 0, B = 5) Passos
1 0 5 1 0 5
Algoritmo Divisão. Este Algoritmo Divisão. Este
algoritmo lê dois algoritmo lê dois
valores reais e calcula valores reais e calcula
o resultado da divisão 2 0 5 0 o resultado da divisão 2 0 5 0
entre eles. entre eles.
Início Início
1 Leia(A,B) 1 Leia(A,B) 3 0 5 0
2 D Å A / B 2 D Å A / B
3 Escreva(”Divisão = ”,D) 3 Escreva(”Divisão = ”,D)
Fim Fim

17 18

3
Rastreio de um Algoritmo Exemplo 1: 3º conjunto de dados
1. Antes de iniciar o rastreio de um algoritmo, ‰Rastrear o algoritmo
numere todas as linhas (passo) do algoritmo Variáveis/ A B D
para A = 0, B = 0
2. Escolha um conjunto significativo de dados de Passos
entrada que será fornecido ao algoritmo
1 0 0
3. Para cada dado de entrada: Algoritmo Divisão. Este
a) Utilize uma tabela na qual as linhas representam os algoritmo lê dois
passos executados pelo algoritmo e as colunas valores reais e calcula
representam os valores de todas as variáveis do o resultado da divisão
algoritmo entre eles.
b) Inicie o rastreio do algoritmo, começando pelo passo 1 e Início
continue a execução respeitando as estruturas de 1 Leia(A,B)
controle já vistas: seqüencial, seleção e repetição 2 D Å A / B
4. Repita o passo 3 para os demais dados de 3 Escreva(”Divisão = ”,D)
entrada Fim

19 20

Exemplo 1: 3º conjunto de dados Como Solucionar?


‰Rastrear o algoritmo ‰Quando um problema é detectado no rastreio
Variáveis/ A B D
para A = 0, B = 0
Passos de um algoritmo, sua solução pode ser
1 0 0
efetuada:
Algoritmo Divisão. Este ƒ Refinando as pré-condições que o algoritmo
algoritmo lê dois exige para ser executado
valores reais e calcula
o resultado da divisão 2 0 0 ? ƒ Alterando o algoritmo para solucionar o
entre eles.
Início
problema (o que requer novos testes para
1 Leia(A,B) verificar se o novo código introduzido não produz
Tanto na matemática como
2 D Å A / B na computação, o resultado outros resultados inesperados)
3 Escreva(”Divisão = ”,D) de uma divisão por zero é
Fim um valor indefinido. Neste
caso, o algoritmo
apresentaria um problema.
21 22

Detalhamento das Pré-Condições Pré-Condição

Algoritmo Divisão. Este Algoritmo Divisão. Este


‰A pré-condição indica o que deve ser
algoritmo lê dois algoritmo lê dois verdade antes que o algoritmo seja
valores reais e calcula valores reais e calcula
o resultado da divisão o resultado da divisão
executado
entre eles. entre eles. O segundo
valor (divisor) deve ser
‰A violação da pré-condição pode resultar
diferente de zero. em comportamento anormal do algoritmo
Início Início
(resultados inesperados)
1 Leia(A,B) 1 Leia(A,B)
2 D Å A / B 2 D Å A / B ‰Nesse caso, o usuário que executa o
3 Escreva(”Divisão = ”,D) 3 Escreva(”Divisão = ”,D) algoritmo é responsável por certificar que a
Fim
Fim pré-condição seja verdadeira

23 24

4
Alteração do Algoritmo Exemplo 5: 1º conjunto de dados
Variáveis/
‰Rastrear o algoritmo Passos
N divisores i
Algoritmo Divisão. Este
Algoritmo Divisão. Este
algoritmo lê dois valores para N = 0 1 0
algoritmo lê dois
valores reais e calcula reais e calcula o
resultado da divisão entre Algoritmo Primo. Lê um número N e
o resultado da divisão eles.
determina se ele é ou não um número
primo.
entre eles. Início
Início
Início 1 Leia(A,B)
1 Leia(N)
2 Se N = 1 Então
1 Leia(A,B) 2 Se (B ≠ 0) Então 3 Escreva(”1 nao e' primo”)
4 Senão
2 D Å A / B 3 D Å A / B 5 divisores Å 1
3 Escreva(”Divisão = ”,D) 4 Escreva(”Divisão = ”,D) 6 Para i Å 2 até N Faça
7 Se N % i = 0 Então
Fim 5 Senão
8 divisores Å divisores + 1
6 Escreva(”Impossível dividir”) 9 Fim Se
7 Fim Se 10 Fim Para
11 Se divisores = 2 Então
Fim 12 Escreva(N,” é primo”)
13 Senão
14 Escreva(N,” não é primo”)
15 Fim Se
16 Fim Se
Fim
25 26

Exemplo 5: 1º conjunto de dados Exemplo 5: 1º conjunto de dados


Variáveis/ Variáveis/
‰Rastrear o algoritmo Passos
N divisores i ‰Rastrear o algoritmo Passos
N divisores i
para N = 0 1 0 para N = 0 1 0
2 0 2 0
Algoritmo Primo. Lê um número N e Algoritmo Primo. Lê um número N e
determina se ele é ou não um número determina se ele é ou não um número 4 0
primo. primo.
Início Início
1 Leia(N) 1 Leia(N)
2 Se N = 1 Então 2 Se N = 1 Então
3 Escreva(”1 nao e' primo”) 3 Escreva(”1 nao e' primo”)
4 Senão 4 Senão
5 divisores Å 1 5 divisores Å 1
6 Para i Å 2 até N Faça 6 Para i Å 2 até N Faça
7 Se N % i = 0 Então 7 Se N % i = 0 Então
8 divisores Å divisores + 1 8 divisores Å divisores + 1
9 Fim Se 9 Fim Se
10 Fim Para 10 Fim Para
11 Se divisores = 2 Então 11 Se divisores = 2 Então
12 Escreva(N,” é primo”) 12 Escreva(N,” é primo”)
13 Senão 13 Senão
14 Escreva(N,” não é primo”) 14 Escreva(N,” não é primo”)
15 Fim Se 15 Fim Se
16 Fim Se 16 Fim Se
Fim Fim
27 28

Exemplo 5: 1º conjunto de dados Exemplo 5: 1º conjunto de dados


Variáveis/ Variáveis/
‰Rastrear o algoritmo Passos
N divisores i ‰Rastrear o algoritmo Passos
N divisores i
para N = 0 1 0 para N = 0 1 0
2 0 2 0
Algoritmo Primo. Lê um número N e Algoritmo Primo. Lê um número N e
determina se ele é ou não um número 4 0 determina se ele é ou não um número 4 0
primo. 5 0 1 primo. 5 0 1
Início Início
1 Leia(N) 1 Leia(N)
6 0 1 2
2 Se N = 1 Então 2 Se N = 1 Então
3 Escreva(”1 nao e' primo”) 3 Escreva(”1 nao e' primo”)
4 Senão 4 Senão
5 divisores Å 1 5 divisores Å 1
6 Para i Å 2 até N Faça 6 Para i Å 2 até N Faça
7 Se N % i = 0 Então 7 Se N % i = 0 Então
8 divisores Å divisores + 1 8 divisores Å divisores + 1
9 Fim Se 9 Fim Se
10 Fim Para 10 Fim Para
11 Se divisores = 2 Então 11 Se divisores = 2 Então
12 Escreva(N,” é primo”) 12 Escreva(N,” é primo”)
13 Senão 13 Senão
14 Escreva(N,” não é primo”) 14 Escreva(N,” não é primo”)
15 Fim Se 15 Fim Se
16 Fim Se 16 Fim Se
Fim Fim
29 30

5
Exemplo 5: 1º conjunto de dados Exemplo 5: 1º conjunto de dados
Variáveis/ Variáveis/
‰Rastrear o algoritmo Passos
N divisores i ‰Rastrear o algoritmo Passos
N divisores i
para N = 0 1 0 para N = 0 1 0
2 0 2 0
Algoritmo Primo. Lê um número N e Algoritmo Primo. Lê um número N e
determina se ele é ou não um número 4 0 determina se ele é ou não um número 4 0
primo. 5 0 1 primo. 5 0 1
Início Início
1 Leia(N)
6 0 1 2 1 Leia(N)
6 0 1 2
2 Se N = 1 Então 11 0 1 2 2 Se N = 1 Então 11 0 1 2
3 Escreva(”1 nao e' primo”) 3 Escreva(”1 nao e' primo”) 13 0 1 2
4 Senão 4 Senão
5 divisores Å 1 5 divisores Å 1
6 Para i Å 2 até N Faça 6 Para i Å 2 até N Faça
7 Se N % i = 0 Então 7 Se N % i = 0 Então
8 divisores Å divisores + 1 8 divisores Å divisores + 1
9 Fim Se 9 Fim Se
10 Fim Para 10 Fim Para
11 Se divisores = 2 Então 11 Se divisores = 2 Então
12 Escreva(N,” é primo”) 12 Escreva(N,” é primo”)
13 Senão 13 Senão
14 Escreva(N,” não é primo”) 14 Escreva(N,” não é primo”)
15 Fim Se 15 Fim Se
16 Fim Se 16 Fim Se
Fim Fim
31 32

Exemplo 5: 1º conjunto de dados Exemplo 5: 1º conjunto de dados


Variáveis/ Variáveis/
‰Rastrear o algoritmo Passos
N divisores i ‰Rastrear o algoritmo Passos
N divisores i
para N = 0 1 0 para N = 0 1 0
2 0 2 0
Algoritmo Primo. Lê um número N e Algoritmo Primo. Lê um número N e
determina se ele é ou não um número 4 0 determina se ele é ou não um número 4 0
primo. 5 0 1 primo. 5 0 1
Início Início
1 Leia(N)
6 0 1 2 1 Leia(N)
6 0 1 2
2 Se N = 1 Então 11 0 1 2 2 Se N = 1 Então 11 0 1 2
3 Escreva(”1 nao e' primo”) 13 0 1 2 3 Escreva(”1 nao e' primo”) 13 0 1 2
4 Senão 4 Senão
14 0 1 0 14 0 1 2
5 divisores Å 1 5 divisores Å 1
6 Para i Å 2 até N Faça 6 Para i Å 2 até N Faça 15 0 1 2
7 Se N % i = 0 Então 7 Se N % i = 0 Então
8 divisores Å divisores + 1 8 divisores Å divisores + 1
9 Fim Se 9 Fim Se
10 Fim Para 10 Fim Para
11 Se divisores = 2 Então 11 Se divisores = 2 Então
12 Escreva(N,” é primo”) 12 Escreva(N,” é primo”)
13 Senão 13 Senão
14 Escreva(N,” não é primo”) 14 Escreva(N,” não é primo”)
15 Fim Se 15 Fim Se
16 Fim Se 16 Fim Se
Fim Fim
33 34

Exemplo 5: 1º conjunto de dados Exemplo 5: 2º conjunto de dados


Variáveis/ Variáveis/
‰Rastrear o algoritmo Passos
N divisores i ‰Rastrear o algoritmo Passos
N divisores i
para N = 0 1 0 para N = 1 1 1
2 0
Algoritmo Primo. Lê um número N e Algoritmo Primo. Lê um número N e
determina se ele é ou não um número 4 0 determina se ele é ou não um número
primo. 5 0 1 primo.
Início Início
1 Leia(N)
6 0 1 2 1 Leia(N)
2 Se N = 1 Então 11 0 1 2 2 Se N = 1 Então
3 Escreva(”1 nao e' primo”) 13 0 1 2 3 Escreva(”1 nao e' primo”)
4 Senão 4 Senão
14 0 1 2
5 divisores Å 1 5 divisores Å 1
6 Para i Å 2 até N Faça 15 0 1 2 6 Para i Å 2 até N Faça
7 Se N % i = 0 Então 16 0 1 2 7 Se N % i = 0 Então
8 divisores Å divisores + 1 8 divisores Å divisores + 1
9 Fim Se 9 Fim Se
10 Fim Para 10 Fim Para
11 Se divisores = 2 Então 11 Se divisores = 2 Então
12 Escreva(N,” é primo”) 12 Escreva(N,” é primo”)
13 Senão 13 Senão
14 Escreva(N,” não é primo”) 14 Escreva(N,” não é primo”)
15 Fim Se 15 Fim Se
16 Fim Se 16 Fim Se
Fim Fim
35 36

6
Exemplo 5: 2º conjunto de dados Exemplo 5: 2º conjunto de dados
Variáveis/ Variáveis/
‰Rastrear o algoritmo Passos
N divisores i ‰Rastrear o algoritmo Passos
N divisores i
para N = 1 1 1 para N = 1 1 1
2 1 2 1
Algoritmo Primo. Lê um número N e Algoritmo Primo. Lê um número N e
determina se ele é ou não um número determina se ele é ou não um número 3 1
primo. primo.
Início Início
1 Leia(N) 1 Leia(N)
2 Se N = 1 Então 2 Se N = 1 Então
3 Escreva(”1 nao e' primo”) 3 Escreva(”1 nao e' primo”)
4 Senão 4 Senão
5 divisores Å 1 5 divisores Å 1
6 Para i Å 2 até N Faça 6 Para i Å 2 até N Faça
7 Se N % i = 0 Então 7 Se N % i = 0 Então
8 divisores Å divisores + 1 8 divisores Å divisores + 1
9 Fim Se 9 Fim Se
10 Fim Para 10 Fim Para
11 Se divisores = 2 Então 11 Se divisores = 2 Então
12 Escreva(N,” é primo”) 12 Escreva(N,” é primo”)
13 Senão 13 Senão
14 Escreva(N,” não é primo”) 14 Escreva(N,” não é primo”)
15 Fim Se 15 Fim Se
16 Fim Se 16 Fim Se
Fim Fim
37 38

Exemplo 5: 2º conjunto de dados Exemplo 5: 3º conjunto de dados


Variáveis/ Variáveis/
‰Rastrear o algoritmo Passos
N divisores i ‰Rastrear o algoritmo Passos
N divisores i
para N = 1 1 1 para N = 2 1 2
2 1
Algoritmo Primo. Lê um número N e Algoritmo Primo. Lê um número N e
determina se ele é ou não um número 3 1 determina se ele é ou não um número
primo. 16 1 primo.
Início Início
1 Leia(N) 1 Leia(N)
2 Se N = 1 Então 2 Se N = 1 Então
3 Escreva(”1 nao e' primo”) 3 Escreva(”1 nao e' primo”)
4 Senão 4 Senão
5 divisores Å 1 5 divisores Å 1
6 Para i Å 2 até N Faça 6 Para i Å 2 até N Faça
7 Se N % i = 0 Então 7 Se N % i = 0 Então
8 divisores Å divisores + 1 8 divisores Å divisores + 1
9 Fim Se 9 Fim Se
10 Fim Para 10 Fim Para
11 Se divisores = 2 Então 11 Se divisores = 2 Então
12 Escreva(N,” é primo”) 12 Escreva(N,” é primo”)
13 Senão 13 Senão
14 Escreva(N,” não é primo”) 14 Escreva(N,” não é primo”)
15 Fim Se 15 Fim Se
16 Fim Se 16 Fim Se
Fim Fim
39 40

Exemplo 5: 3º conjunto de dados Exemplo 5: 3º conjunto de dados


Variáveis/ Variáveis/
‰Rastrear o algoritmo Passos
N divisores i ‰Rastrear o algoritmo Passos
N divisores i
para N = 2 1 2 para N = 2 1 2
2 2 2 2
Algoritmo Primo. Lê um número N e Algoritmo Primo. Lê um número N e
determina se ele é ou não um número determina se ele é ou não um número 4 2
primo. primo.
Início Início
1 Leia(N) 1 Leia(N)
2 Se N = 1 Então 2 Se N = 1 Então
3 Escreva(”1 nao e' primo”) 3 Escreva(”1 nao e' primo”)
4 Senão 4 Senão
5 divisores Å 1 5 divisores Å 1
6 Para i Å 2 até N Faça 6 Para i Å 2 até N Faça
7 Se N % i = 0 Então 7 Se N % i = 0 Então
8 divisores Å divisores + 1 8 divisores Å divisores + 1
9 Fim Se 9 Fim Se
10 Fim Para 10 Fim Para
11 Se divisores = 2 Então 11 Se divisores = 2 Então
12 Escreva(N,” é primo”) 12 Escreva(N,” é primo”)
13 Senão 13 Senão
14 Escreva(N,” não é primo”) 14 Escreva(N,” não é primo”)
15 Fim Se 15 Fim Se
16 Fim Se 16 Fim Se
Fim Fim
41 42

7
Exemplo 5: 3º conjunto de dados Exemplo 5: 3º conjunto de dados
Variáveis/ Variáveis/
‰Rastrear o algoritmo Passos
N divisores i ‰Rastrear o algoritmo Passos
N divisores i
para N = 2 1 2 para N = 2 1 2
2 2 2 2
Algoritmo Primo. Lê um número N e Algoritmo Primo. Lê um número N e
determina se ele é ou não um número 4 2 determina se ele é ou não um número 4 2
primo. 5 2 1 primo. 5 2 1
Início Início
1 Leia(N) 1 Leia(N)
6 2 1 2
2 Se N = 1 Então 2 Se N = 1 Então
3 Escreva(”1 nao e' primo”) 3 Escreva(”1 nao e' primo”)
4 Senão 4 Senão
5 divisores Å 1 5 divisores Å 1
6 Para i Å 2 até N Faça 6 Para i Å 2 até N Faça
7 Se N % i = 0 Então 7 Se N % i = 0 Então
8 divisores Å divisores + 1 8 divisores Å divisores + 1
9 Fim Se 9 Fim Se
10 Fim Para 10 Fim Para
11 Se divisores = 2 Então 11 Se divisores = 2 Então
12 Escreva(N,” é primo”) 12 Escreva(N,” é primo”)
13 Senão 13 Senão
14 Escreva(N,” não é primo”) 14 Escreva(N,” não é primo”)
15 Fim Se 15 Fim Se
16 Fim Se 16 Fim Se
Fim Fim
43 44

Exemplo 5: 3º conjunto de dados Exemplo 5: 3º conjunto de dados


Variáveis/ Variáveis/
‰Rastrear o algoritmo Passos
N divisores i ‰Rastrear o algoritmo Passos
N divisores i
para N = 2 1 2 para N = 2 1 2
2 2 2 2
Algoritmo Primo. Lê um número N e Algoritmo Primo. Lê um número N e
determina se ele é ou não um número 4 2 determina se ele é ou não um número 4 2
primo. 5 2 1 primo. 5 2 1
Início Início
1 Leia(N)
6 2 1 2 1 Leia(N)
6 2 1 2
2 Se N = 1 Então 7 2 1 2 2 Se N = 1 Então 7 2 1 2
3 Escreva(”1 nao e' primo”) 3 Escreva(”1 nao e' primo”) 8 2 2 2
4 Senão 4 Senão
5 divisores Å 1 5 divisores Å 1
6 Para i Å 2 até N Faça 6 Para i Å 2 até N Faça
7 Se N % i = 0 Então 7 Se N % i = 0 Então
8 divisores Å divisores + 1 8 divisores Å divisores + 1
9 Fim Se 9 Fim Se
10 Fim Para 10 Fim Para
11 Se divisores = 2 Então 11 Se divisores = 2 Então
12 Escreva(N,” é primo”) 12 Escreva(N,” é primo”)
13 Senão 13 Senão
14 Escreva(N,” não é primo”) 14 Escreva(N,” não é primo”)
15 Fim Se 15 Fim Se
16 Fim Se 16 Fim Se
Fim Fim
45 46

Exemplo 5: 3º conjunto de dados Exemplo 5: 3º conjunto de dados


Variáveis/ Variáveis/
‰Rastrear o algoritmo Passos
N divisores i ‰Rastrear o algoritmo Passos
N divisores i
para N = 2 1 2 para N = 2 1 2
2 2 2 2
Algoritmo Primo. Lê um número N e Algoritmo Primo. Lê um número N e
determina se ele é ou não um número 4 2 determina se ele é ou não um número 4 2
primo. 5 2 1 primo. 5 2 1
Início Início
1 Leia(N)
6 2 1 2 1 Leia(N)
6 2 1 2
2 Se N = 1 Então 7 2 1 2 2 Se N = 1 Então 7 2 1 2
3 Escreva(”1 nao e' primo”) 8 2 2 2 3 Escreva(”1 nao e' primo”) 8 2 2 2
4 Senão 4 Senão
9 2 2 2 9 2 2 2
5 divisores Å 1 5 divisores Å 1
6 Para i Å 2 até N Faça 6 Para i Å 2 até N Faça 10 2 2 2
7 Se N % i = 0 Então 7 Se N % i = 0 Então
8 divisores Å divisores + 1 8 divisores Å divisores + 1
9 Fim Se 9 Fim Se
10 Fim Para 10 Fim Para
11 Se divisores = 2 Então 11 Se divisores = 2 Então
12 Escreva(N,” é primo”) 12 Escreva(N,” é primo”)
13 Senão 13 Senão
14 Escreva(N,” não é primo”) 14 Escreva(N,” não é primo”)
15 Fim Se 15 Fim Se
16 Fim Se 16 Fim Se
Fim Fim
47 48

8
Exemplo 5: 3º conjunto de dados Exemplo 5: 3º conjunto de dados
Variáveis/ Variáveis/
‰Rastrear o algoritmo Passos
N divisores i ‰Rastrear o algoritmo Passos
N divisores i
para N = 2 1 2 para N = 2 1 2
2 2 2 2
Algoritmo Primo. Lê um número N e Algoritmo Primo. Lê um número N e
determina se ele é ou não um número 4 2 determina se ele é ou não um número 4 2
primo. 5 2 1 primo. 5 2 1
Início Início
1 Leia(N)
6 2 1 2 1 Leia(N)
6 2 1 2
2 Se N = 1 Então 7 2 1 2 2 Se N = 1 Então 7 2 1 2
3 Escreva(”1 nao e' primo”) 8 2 2 2 3 Escreva(”1 nao e' primo”) 8 2 2 2
4 Senão 4 Senão
9 2 2 2 9 2 2 2
5 divisores Å 1 5 divisores Å 1
6 Para i Å 2 até N Faça 10 2 2 2 6 Para i Å 2 até N Faça 10 2 2 2
7 Se N % i = 0 Então 6 2 2 3 7 Se N % i = 0 Então 6 2 2 3
8 divisores Å divisores + 1 8 divisores Å divisores + 1 11 2 2 3
9 Fim Se 9 Fim Se
10 Fim Para 10 Fim Para
11 Se divisores = 2 Então 11 Se divisores = 2 Então
12 Escreva(N,” é primo”) 12 Escreva(N,” é primo”)
13 Senão 13 Senão
14 Escreva(N,” não é primo”) 14 Escreva(N,” não é primo”)
15 Fim Se 15 Fim Se
16 Fim Se 16 Fim Se
Fim Fim
49 50

Exemplo 5: 3º conjunto de dados Exemplo 5: 3º conjunto de dados


Variáveis/ Variáveis/
‰Rastrear o algoritmo Passos
N divisores i ‰Rastrear o algoritmo Passos
N divisores i
para N = 2 1 2 para N = 2 1 2
2 2 2 2
Algoritmo Primo. Lê um número N e Algoritmo Primo. Lê um número N e
determina se ele é ou não um número 4 2 determina se ele é ou não um número 4 2
primo. 5 2 1 primo. 5 2 1
Início Início
1 Leia(N)
6 2 1 2 1 Leia(N)
6 2 1 2
2 Se N = 1 Então 7 2 1 2 2 Se N = 1 Então 7 2 1 2
3 Escreva(”1 nao e' primo”) 8 2 2 2 3 Escreva(”1 nao e' primo”) 8 2 2 2
4 Senão 4 Senão
9 2 2 2 9 2 2 2
5 divisores Å 1 5 divisores Å 1
6 Para i Å 2 até N Faça 10 2 2 2 6 Para i Å 2 até N Faça 10 2 2 2
7 Se N % i = 0 Então 6 2 2 3 7 Se N % i = 0 Então 6 2 2 3
8 divisores Å divisores + 1 11 2 2 3 8 divisores Å divisores + 1 11 2 2 3
9 Fim Se 9 Fim Se
10 Fim Para 12 2 2 3 10 Fim Para 12 2 2 3
11 Se divisores = 2 Então 11 Se divisores = 2 Então 15 2 2 3
12 Escreva(N,” é primo”) 12 Escreva(N,” é primo”)
13 Senão 13 Senão
14 Escreva(N,” não é primo”) 14 Escreva(N,” não é primo”)
15 Fim Se 15 Fim Se
16 Fim Se 16 Fim Se
Fim Fim
51 52

Exemplo 5: 3º conjunto de dados Exemplo 5: 4º conjunto de dados


Variáveis/ Variáveis/
‰Rastrear o algoritmo Passos
N divisores i ‰Rastrear o algoritmo Passos
N divisores i
para N = 2 1 2 para N = 3 1 3
2 2
Algoritmo Primo. Lê um número N e Algoritmo Primo. Lê um número N e
determina se ele é ou não um número 4 2 determina se ele é ou não um número
primo. 5 2 1 primo.
Início Início
1 Leia(N)
6 2 1 2 1 Leia(N)
2 Se N = 1 Então 7 2 1 2 2 Se N = 1 Então
3 Escreva(”1 nao e' primo”) 8 2 2 2 3 Escreva(”1 nao e' primo”)
4 Senão 4 Senão
9 2 2 2
5 divisores Å 1 5 divisores Å 1
6 Para i Å 2 até N Faça 10 2 2 2 6 Para i Å 2 até N Faça
7 Se N % i = 0 Então 6 2 2 3 7 Se N % i = 0 Então
8 divisores Å divisores + 1 11 2 2 3 8 divisores Å divisores + 1
9 Fim Se 9 Fim Se
10 Fim Para 12 2 2 3 10 Fim Para
11 Se divisores = 2 Então 15 2 2 3 11 Se divisores = 2 Então
12 Escreva(N,” é primo”) 16 2 2 3 12 Escreva(N,” é primo”)
13 Senão 13 Senão
14 Escreva(N,” não é primo”) 14 Escreva(N,” não é primo”)
15 Fim Se 15 Fim Se
16 Fim Se 16 Fim Se
Fim Fim
53 54

9
Exemplo 5: 4º conjunto de dados Exemplo 5: 4º conjunto de dados
Variáveis/ Variáveis/
‰Rastrear o algoritmo Passos
N divisores i ‰Rastrear o algoritmo Passos
N divisores i
para N = 3 1 3 para N = 3 1 3
2 3 2 3
Algoritmo Primo. Lê um número N e Algoritmo Primo. Lê um número N e
determina se ele é ou não um número determina se ele é ou não um número 4 3
primo. primo.
Início Início
1 Leia(N) 1 Leia(N)
2 Se N = 1 Então 2 Se N = 1 Então
3 Escreva(”1 nao e' primo”) 3 Escreva(”1 nao e' primo”)
4 Senão 4 Senão
5 divisores Å 1 5 divisores Å 1
6 Para i Å 2 até N Faça 6 Para i Å 2 até N Faça
7 Se N % i = 0 Então 7 Se N % i = 0 Então
8 divisores Å divisores + 1 8 divisores Å divisores + 1
9 Fim Se 9 Fim Se
10 Fim Para 10 Fim Para
11 Se divisores = 2 Então 11 Se divisores = 2 Então
12 Escreva(N,” é primo”) 12 Escreva(N,” é primo”)
13 Senão 13 Senão
14 Escreva(N,” não é primo”) 14 Escreva(N,” não é primo”)
15 Fim Se 15 Fim Se
16 Fim Se 16 Fim Se
Fim Fim
55 56

Exemplo 5: 4º conjunto de dados Exemplo 5: 4º conjunto de dados


Variáveis/ Variáveis/
‰Rastrear o algoritmo Passos
N divisores i ‰Rastrear o algoritmo Passos
N divisores i
para N = 3 1 3 para N = 3 1 3
2 3 2 3
Algoritmo Primo. Lê um número N e Algoritmo Primo. Lê um número N e
determina se ele é ou não um número 4 3 determina se ele é ou não um número 4 3
primo. 5 3 1 primo. 5 3 1
Início Início
1 Leia(N) 1 Leia(N)
6 3 1 2
2 Se N = 1 Então 2 Se N = 1 Então
3 Escreva(”1 nao e' primo”) 3 Escreva(”1 nao e' primo”)
4 Senão 4 Senão
5 divisores Å 1 5 divisores Å 1
6 Para i Å 2 até N Faça 6 Para i Å 2 até N Faça
7 Se N % i = 0 Então 7 Se N % i = 0 Então
8 divisores Å divisores + 1 8 divisores Å divisores + 1
9 Fim Se 9 Fim Se
10 Fim Para 10 Fim Para
11 Se divisores = 2 Então 11 Se divisores = 2 Então
12 Escreva(N,” é primo”) 12 Escreva(N,” é primo”)
13 Senão 13 Senão
14 Escreva(N,” não é primo”) 14 Escreva(N,” não é primo”)
15 Fim Se 15 Fim Se
16 Fim Se 16 Fim Se
Fim Fim
57 58

Exemplo 5: 4º conjunto de dados Exemplo 5: 4º conjunto de dados


Variáveis/ Variáveis/
‰Rastrear o algoritmo Passos
N divisores i ‰Rastrear o algoritmo Passos
N divisores i
para N = 3 1 3 para N = 3 1 3
2 3 2 3
Algoritmo Primo. Lê um número N e Algoritmo Primo. Lê um número N e
determina se ele é ou não um número 4 3 determina se ele é ou não um número 4 3
primo. 5 3 1 primo. 5 3 1
Início Início
1 Leia(N)
6 3 1 2 1 Leia(N)
6 3 1 2
2 Se N = 1 Então 7 3 1 2 2 Se N = 1 Então 7 3 1 2
3 Escreva(”1 nao e' primo”) 3 Escreva(”1 nao e' primo”) 9 3 1 2
4 Senão 4 Senão
5 divisores Å 1 5 divisores Å 1
6 Para i Å 2 até N Faça 6 Para i Å 2 até N Faça
7 Se N % i = 0 Então 7 Se N % i = 0 Então
8 divisores Å divisores + 1 8 divisores Å divisores + 1
9 Fim Se 9 Fim Se
10 Fim Para 10 Fim Para
11 Se divisores = 2 Então 11 Se divisores = 2 Então
12 Escreva(N,” é primo”) 12 Escreva(N,” é primo”)
13 Senão 13 Senão
14 Escreva(N,” não é primo”) 14 Escreva(N,” não é primo”)
15 Fim Se 15 Fim Se
16 Fim Se 16 Fim Se
Fim Fim
59 60

10
Exemplo 5: 4º conjunto de dados Exemplo 5: 4º conjunto de dados
Variáveis/ Variáveis/
‰Rastrear o algoritmo Passos
N divisores i ‰Rastrear o algoritmo Passos
N divisores i
para N = 3 1 3 para N = 3 1 3
2 3 2 3
Algoritmo Primo. Lê um número N e Algoritmo Primo. Lê um número N e
determina se ele é ou não um número 4 3 determina se ele é ou não um número 4 3
primo. 5 3 1 primo. 5 3 1
Início Início
1 Leia(N)
6 3 1 2 1 Leia(N)
6 3 1 2
2 Se N = 1 Então 7 3 1 2 2 Se N = 1 Então 7 3 1 2
3 Escreva(”1 nao e' primo”) 9 3 1 2 3 Escreva(”1 nao e' primo”) 9 3 1 2
4 Senão 4 Senão
10 3 1 2 10 3 1 2
5 divisores Å 1 5 divisores Å 1
6 Para i Å 2 até N Faça 6 Para i Å 2 até N Faça 6 3 1 3
7 Se N % i = 0 Então 7 Se N % i = 0 Então
8 divisores Å divisores + 1 8 divisores Å divisores + 1
9 Fim Se 9 Fim Se
10 Fim Para 10 Fim Para
11 Se divisores = 2 Então 11 Se divisores = 2 Então
12 Escreva(N,” é primo”) 12 Escreva(N,” é primo”)
13 Senão 13 Senão
14 Escreva(N,” não é primo”) 14 Escreva(N,” não é primo”)
15 Fim Se 15 Fim Se
16 Fim Se 16 Fim Se
Fim Fim
61 62

Exemplo 5: 4º conjunto de dados Exemplo 5: 4º conjunto de dados


Variáveis/ Variáveis/
‰Rastrear o algoritmo Passos
N divisores i ‰Rastrear o algoritmo Passos
N divisores i
para N = 3 1 3 para N = 3 1 3
2 3 2 3
Algoritmo Primo. Lê um número N e Algoritmo Primo. Lê um número N e
determina se ele é ou não um número 4 3 determina se ele é ou não um número 4 3
primo. 5 3 1 primo. 5 3 1
Início Início
1 Leia(N)
6 3 1 2 1 Leia(N)
6 3 1 2
2 Se N = 1 Então 7 3 1 2 2 Se N = 1 Então 7 3 1 2
3 Escreva(”1 nao e' primo”) 9 3 1 2 3 Escreva(”1 nao e' primo”) 9 3 1 2
4 Senão 4 Senão
10 3 1 2 10 3 1 2
5 divisores Å 1 5 divisores Å 1
6 Para i Å 2 até N Faça 6 3 1 3 6 Para i Å 2 até N Faça 6 3 1 3
7 Se N % i = 0 Então 7 3 1 3 7 Se N % i = 0 Então 7 3 1 3
8 divisores Å divisores + 1 8 divisores Å divisores + 1 8 3 2 3
9 Fim Se 9 Fim Se
10 Fim Para 10 Fim Para
11 Se divisores = 2 Então 11 Se divisores = 2 Então
12 Escreva(N,” é primo”) 12 Escreva(N,” é primo”)
13 Senão 13 Senão
14 Escreva(N,” não é primo”) 14 Escreva(N,” não é primo”)
15 Fim Se 15 Fim Se
16 Fim Se 16 Fim Se
Fim Fim
63 64

Exemplo 5: 4º conjunto de dados Exemplo 5: 4º conjunto de dados


Variáveis/ Variáveis/
‰Rastrear o algoritmo Passos
N divisores i ‰Rastrear o algoritmo Passos
N divisores i
para N = 3 1 3 para N = 3 1 3
2 3 2 3
Algoritmo Primo. Lê um número N e Algoritmo Primo. Lê um número N e
determina se ele é ou não um número 4 3 determina se ele é ou não um número 4 3
primo. 5 3 1 primo. 5 3 1
Início Início
1 Leia(N)
6 3 1 2 1 Leia(N)
6 3 1 2
2 Se N = 1 Então 7 3 1 2 2 Se N = 1 Então 7 3 1 2
3 Escreva(”1 nao e' primo”) 9 3 1 2 3 Escreva(”1 nao e' primo”) 9 3 1 2
4 Senão 4 Senão
10 3 1 2 10 3 1 2
5 divisores Å 1 5 divisores Å 1
6 Para i Å 2 até N Faça 6 3 1 3 6 Para i Å 2 até N Faça 6 3 1 3
7 Se N % i = 0 Então 7 3 1 3 7 Se N % i = 0 Então 7 3 1 3
8 divisores Å divisores + 1 8 3 2 3 8 divisores Å divisores + 1 8 3 2 3
9 Fim Se 9 Fim Se
10 Fim Para 9 3 2 3 10 Fim Para 9 3 2 3
11 Se divisores = 2 Então 11 Se divisores = 2 Então 10 3 2 3
12 Escreva(N,” é primo”) 12 Escreva(N,” é primo”)
13 Senão 13 Senão
14 Escreva(N,” não é primo”) 14 Escreva(N,” não é primo”)
15 Fim Se 15 Fim Se
16 Fim Se 16 Fim Se
Fim Fim
65 66

11
Exemplo 5: 4º conjunto de dados Exemplo 5: 4º conjunto de dados
Variáveis/ Variáveis/
‰Rastrear o algoritmo Passos
N divisores i ‰Rastrear o algoritmo Passos
N divisores i
para N = 3 1 3 para N = 3 1 3
2 3 2 3
Algoritmo Primo. Lê um número N e Algoritmo Primo. Lê um número N e
determina se ele é ou não um número 4 3 determina se ele é ou não um número 4 3
primo. 5 3 1 primo. 5 3 1
Início Início
1 Leia(N)
6 3 1 2 1 Leia(N)
6 3 1 2
2 Se N = 1 Então 7 3 1 2 2 Se N = 1 Então 7 3 1 2
3 Escreva(”1 nao e' primo”) 9 3 1 2 3 Escreva(”1 nao e' primo”) 9 3 1 2
4 Senão 4 Senão
10 3 1 2 10 3 1 2
5 divisores Å 1 5 divisores Å 1
6 Para i Å 2 até N Faça 6 3 1 3 6 Para i Å 2 até N Faça 6 3 1 3
7 Se N % i = 0 Então 7 3 1 3 7 Se N % i = 0 Então 7 3 1 3
8 divisores Å divisores + 1 8 3 2 3 8 divisores Å divisores + 1 8 3 2 3
9 Fim Se 9 Fim Se
10 Fim Para 9 3 2 3 10 Fim Para 9 3 2 3
11 Se divisores = 2 Então 10 3 2 3 11 Se divisores = 2 Então 10 3 2 3
12 Escreva(N,” é primo”) 6 3 2 4 12 Escreva(N,” é primo”) 6 3 2 4
13 Senão 13 Senão
11 3 2 4
14 Escreva(N,” não é primo”) 14 Escreva(N,” não é primo”)
15 Fim Se 15 Fim Se
16 Fim Se 16 Fim Se
Fim Fim
67 68

Exemplo 5: 4º conjunto de dados Exemplo 5: 4º conjunto de dados


Variáveis/ Variáveis/
‰Rastrear o algoritmo Passos
N divisores i ‰Rastrear o algoritmo Passos
N divisores i
para N = 3 1 3 para N = 3 1 3
2 3 2 3
Algoritmo Primo. Lê um número N e Algoritmo Primo. Lê um número N e
determina se ele é ou não um número 4 3 determina se ele é ou não um número 4 3
primo. 5 3 1 primo. 5 3 1
Início Início
1 Leia(N)
6 3 1 2 1 Leia(N)
6 3 1 2
2 Se N = 1 Então 7 3 1 2 2 Se N = 1 Então 7 3 1 2
3 Escreva(”1 nao e' primo”) 9 3 1 2 3 Escreva(”1 nao e' primo”) 9 3 1 2
4 Senão 4 Senão
10 3 1 2 10 3 1 2
5 divisores Å 1 5 divisores Å 1
6 Para i Å 2 até N Faça 6 3 1 3 6 Para i Å 2 até N Faça 6 3 1 3
7 Se N % i = 0 Então 7 3 1 3 7 Se N % i = 0 Então 7 3 1 3
8 divisores Å divisores + 1 8 3 2 3 8 divisores Å divisores + 1 8 3 2 3
9 Fim Se 9 Fim Se
10 Fim Para 9 3 2 3 10 Fim Para 9 3 2 3
11 Se divisores = 2 Então 10 3 2 3 11 Se divisores = 2 Então 10 3 2 3
12 Escreva(N,” é primo”) 6 3 2 4 12 Escreva(N,” é primo”) 6 3 2 4
13 Senão 13 Senão
11 3 2 4 11 3 2 4
14 Escreva(N,” não é primo”) 14 Escreva(N,” não é primo”)
15 Fim Se 12 3 2 4 15 Fim Se 12 3 2 4
16 Fim Se 16 Fim Se 15 3 2 4
Fim Fim
69 70

Exemplo 5: 4º conjunto de dados Resumo da Metodologia de Solução


Variáveis/
‰Rastrear o algoritmo Passos
N divisores i 1. Assegure-se de entender completamente as especificações do problema.
Você pode fazer isso indicando a saída desejada para cada entrada do
para N = 3 1 3 algoritmo
2 3 2. Formule um esboço geral do algoritmo para a solução do problema,
Algoritmo Primo. Lê um número N e desconsiderando detalhes específicos. Essa é a primeira tentativa de
determina se ele é ou não um número 4 3 expressar a solução e você deve se assegurar que está correta, rastreando
primo. 5 3 1 os vários passos com amostras de dados
Início
1 Leia(N)
6 3 1 2 3. Identifique qualquer variável que possa ser necessária. Algumas variáveis
2 Se N = 1 Então 7 3 1 2 serão sugeridas diretamente pelo algoritmo definido no passo anterior e pelo
3 Escreva(”1 nao e' primo”) 9 3 1 2 próprio problema. Inclua o nome da variável, seu tipo e uma indicação de seu
4 Senão propósito. A lista obtida é somente uma primeira aproximação do conjunto
10 3 1 2 final de variáveis; ela poderá ser aumentada ou diminuída se necessário
5 divisores Å 1
6 Para i Å 2 até N Faça 6 3 1 3 4. Retorne aos passos individuais do algoritmo e prossiga com o detalhamento.
7 Se N % i = 0 Então 7 3 1 3 Cada vez que um passo é desdobrado em vários outros mais detalhados,
8 divisores Å divisores + 1 8 3 2 3 verifique se estes novos passos executam a função expressa no passo
9 Fim Se original
10 Fim Para 9 3 2 3
10 3 2 3 5. Percebendo que o algoritmo está detalhado adequadamente, rastreie com
11 Se divisores = 2 Então cuidado os passos do algoritmo, utilizando amostras de dados até se
12 Escreva(N,” é primo”) 6 3 2 4 convencer que sua solução satisfaz as especificações propostas. O teste
13 Senão
11 3 2 4 completo de um algoritmo não é fácil mas é uma etapa que não pode ser
14 Escreva(N,” não é primo”)
12 3 2 4 ignorada no processo
15 Fim Se
16 Fim Se 15 3 2 4 6. Somente agora é apropriado considerar a implementação do algoritmo numa
Fim linguagem de programação particular
16 3 2 4 71 72

12
Resumo da Metodologia de Solução Sempre Existe um Algoritmo?
1. Entenda as especificações do ‰ À medida que você estudar mais ciência da computação,
aprenderá que existem certas classes de problemas que
problema não têm solução, ou certas perguntas que não têm
respostas
2. Formule um esboço geral do ‰ A pergunta “existe um algoritmo adequado para este
algoritmo problema particular?” é um caso
‰ O único modo de determinar se um algoritmo adequado
3. Identifique variáveis necessárias existe para um dado problema é verificar se ele pode ser
4. Detalhe os passos individuais construído. Se puder, você mostrou que pelo menos um
algoritmo existe
5. Rastreie o algoritmo ‰ Entretanto, suponha que você não tenha sido capaz de
construir um algoritmo adequado após algum esforço. Isto
6. Implemente numa linguagem de não significa que ele não existe, mas simplesmente que
programação particular você não foi capaz de construir um

73 74

13