Logo Passei Direto
Buscar

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Pseudocódigos
Aula Anterior:
¾ Simbologia associada;
ƒ Analogia com fluxogramas;
¾ Resolução de Exercícios;
ƒJá resolvidos na forma de fluxogramas;
ƒ Símbolos básicos;
ƒ Comando de atribuição;
ƒ Comando de seleção;
ƒTrabalho de Programação 02;
I
C
C
-
P
s
e
u
d
o
c
ó
d
i
g
o
s
 
/
 
E
s
t
r
u
t
u
r
a
 
d
e
 
C
o
n
t
r
o
l
e
 
d
e
 
R
e
p
e
t
i
ç
ã
o
ƒ Estrutura de Controle de repetição;
9
9
9
9
9
Aula de Hoje:
Estrutura de Controle de Repetição
¾ O propósito da Estrutura de Controle de Repetição (comandos de repetição) é
controlar o número de vezes que um grupo de instruções será executada;
Idéias Gerais Æ O que você deve saber :
¾ Cada execução de todas as instruções internas ao comando de repetição é
referenciada por iteração. Assim, se o comando de repetição executar um grupo de 
instruções 10 vezes, houve exatamente 10 iterações;
¾ Para conseguirmos entender o princípio de funcionamento de um comando de 
repetição e o seu uso na resolução dos mais variados tipos de problemas, devemos 
ser capazes de descobrir o relacionamento entre as quantidades associadas as 
variáveis no interior do ciclo de repetição, entre duas iterações consecutivas 
quaisquer;
Em outras palavras, como obter as quantidades associadas as variáveis que estão no 
interior do comando de repetição na iteração i, a partir da iteração (i-1) (i > 0).
I
C
C
-
P
s
e
u
d
o
c
ó
d
i
g
o
s
 
/
 
E
s
t
r
u
t
u
r
a
 
d
e
 
C
o
n
t
r
o
l
e
 
d
e
 
R
e
p
e
t
i
ç
ã
o
Estrutura de Controle de Repetição
¾ A Estrutura de Controle de Repetição dá origem a diferentes Comandos de 
Repetição. Vamos ver dois destes comandos agora e deixar o terceiro para quando 
aprendermos a linguagem C;
Primeira Forma:Æ É usada quando você sabe “a priori”, a partir do enunciado 
do problema, o número exato de vezes que o comando de repetição será
executado, ou seja, a quantidade de iterações a serem executadas.
Exemplo 1: Determinar o número de divisores positivos de um número p (p > 0);
Dado um problema é possível determinar a partir do enunciado qual 
forma utilizar (com um pouquinho de experiência, é claro!!!!).
Exemplo 2: Somar os n (n > 0) primeiros números inteiros positivos;
Exemplo 3: Obter o fatorial de n (n ≥ 0). Lembrando que:
1 0
!
( 1)! 1
se n
n
n n se n
=⎧= ⎨ − ≥⎩
I
C
C
-
P
s
e
u
d
o
c
ó
d
i
g
o
s
 
/
 
E
s
t
r
u
t
u
r
a
 
d
e
 
C
o
n
t
r
o
l
e
 
d
e
 
R
e
p
e
t
i
ç
ã
o
Estrutura de Controle de Repetição
Segunda Forma:Æ é usada quando você não sabe “a priori”, a partir do 
enunciado do problema, o número de vezes que o comando de repetição será
executado. Esta forma dá origem a dois comandos de repetição. Vamos ver apenas 
um deles.
Exemplo 1: Dado um valor real lim (lim ≥ 0), determine o número de termos 
necessários que você deve somar da Série Harmônica, para que esta soma 
seja superior a lim. Em outras palavras:
1
1 limH
i
S
n
∞
=
= >∑
1 1 1 1 1 1 11 lim
2 3 4 5 6 7H
S
n
= + + + + + + + + >"
expandindo esta série, temos:
Muito em breve estaremos implementando este código em C. Aguarde!!!
I
C
C
-
P
s
e
u
d
o
c
ó
d
i
g
o
s
 
/
 
E
s
t
r
u
t
u
r
a
 
d
e
 
C
o
n
t
r
o
l
e
 
d
e
 
R
e
p
e
t
i
ç
ã
o
Estrutura de Controle de Repetição
Idéias Gerais Æ O que você deve saber :
I
C
C
-
P
s
e
u
d
o
c
ó
d
i
g
o
s
 
/
 
E
s
t
r
u
t
u
r
a
 
d
e
 
C
o
n
t
r
o
l
e
 
d
e
 
R
e
p
e
t
i
ç
ã
o
Você saberia dizer 
quantos termos teríamos 
que somar da SH para 
que a soma acumulada 
excedesse lim?
1
2
12.367
1.835.421
4.989.191
13.562.027
36.865.412
100.210.581
lim
0 -------------Æ
1 -------------Æ
10 -------------Æ
15 -------------Æ
16 -------------Æ
17 -------------Æ
18 -------------Æ
19 -------------Æ
1 1 1 11 lim
2 3 4H
S
n
= + + + + + + >" "
Estrutura de Controle de Repetição
Idéias Gerais Æ O que você deve saber :
Com a elaboração de diferentes pseudocódigos e um pouco mais de 
experiência, você verá que para a maioria dos problemas é absolutamente 
indiferente usar a 1ª ou a 2ª forma.
I
C
C
-
P
s
e
u
d
o
c
ó
d
i
g
o
s
 
/
 
E
s
t
r
u
t
u
r
a
 
d
e
 
C
o
n
t
r
o
l
e
 
d
e
 
R
e
p
e
t
i
ç
ã
o
Quando usar a 2ª forma (enquanto-faça), não se esqueça de determinar a 
condição de terminação.
Tabela de Equivalência – Estrutura de Controle de Repetição
Fluxograma Pseudocódigo
V
. . .(expressão boleana)
para (exp1; exp2; exp3)
inicio
fim
comandos;
comandos
proxima_instrucao;
...
F
1ª Forma: sabemos exatamente quantas 
vezes o grupo de instruções (comandos) 
será executado. Neste caso, usamos 
uma variável de controle para contar o 
número de iterações.
I
C
C
-
P
s
e
u
d
o
c
ó
d
i
g
o
s
 
/
 
E
s
t
r
u
t
u
r
a
 
d
e
 
C
o
n
t
r
o
l
e
 
d
e
 
R
e
p
e
t
i
ç
ã
o
Estrutura de Controle de Repetição - 1ª Forma
Forma Geral:
Onde:
exp2: é uma expressão boleana que define a condição de terminação do comando de 
repetição e é testada antes do início de cada iteração. Se exp2 for verdadeira, então o bloco 
de instruções associado ao comando para é executado, caso contrário, a 
proxima_instruçao será executada. 
exp1: é uma expressão que inicializa a variável de controle (variável que controla o número 
de vezes que o comando será executado). É executada uma única vez.
exp3: é uma expressão que incrementa ou decrementa a variável de controle, após cada 
iteração. Faz o papel de um contador (incremental ou decremental). É sempre executada 
(automaticamente) após o último comando no interior do bloco de instruções.
I
C
C
-
P
s
e
u
d
o
c
ó
d
i
g
o
s
 
/
 
E
s
t
r
u
t
u
r
a
 
d
e
 
C
o
n
t
r
o
l
e
 
d
e
 
R
e
p
e
t
i
ç
ã
o para (exp1; exp2; exp3)
inicio
fim
comandos;
proxima_instrucao;
...
Atenção. A maioria dos livros que você for ler adota uma forma sintática 
ligeiramente diferente do comando para, porém com o mesmo sentido. A forma 
adotada aqui vai facilitar nossa vida quando formos aprender a Linguagem C.
Exemplo 1:
...
para (i Å1; i ≤ n; i Å i+1)
s Å s + i;
proxima_instrucao;
...
exp1: (i Å 1) - aqui a variável que controla o número de repetições é i.
Onde:
exp2: (i ≤ n) - condição de terminação (expressão boleana) que controla até
quando a(s) instrução(ões) interna(s) será(ão) executada(s).
exp3: (i Å i+1) - a variável de controle i está sendo incrementada em uma 
unidade.
Observe que o comando de repetição acima possui uma única instrução interna. 
Nesse caso, não é necessário delimitar o bloco de comandos representado pelas 
palavras inicio e fim. 
I
C
C
-
P
s
e
u
d
o
c
ó
d
i
g
o
s
 
/
 
E
s
t
r
u
t
u
r
a
 
d
e
 
C
o
n
t
r
o
l
e
 
d
e
 
R
e
p
e
t
i
ç
ã
o
Estrutura de Controle de Repetição - 1ª Forma
exp1: i Å 1Onde:
exp2: i ≤ n
exp3: i Å i+1
Observe que em cada iteração desejamos executar mais de uma instrução no caso da 
expressão boleana (i ≤ n) ser verdadeira. Nesse caso, é necessário mostrar isso utilizando o 
bloco de instruções delimitado pelas palavras inicio e fim. 
I
C
C
-
P
s
e
u
d
o
c
ó
d
i
g
o
s
 
/
 
E
s
t
r
u
t
u
r
a
 
d
e
 
C
o
n
t
r
o
l
e
 
d
e
 
R
e
p
e
t
i
ç
ã
o
Estrutura de Controle de Repetição - 1ª Forma
Exemplo 2:
.........exp1: expressão de inicialização;
.........exp2: expressão boleana;
.........exp2: expressão de incremento ou decremento;
...
para (iÅ1; i ≤ n; i Å i+1)
inicio
num Å num*x;
den Å den*i;
s Å s + num/den;
fim
proxima_instrucao;
...
Bloco de instruções 
Internas ao comando 
enquanto (expressão boleana) faça
Tabela de Equivalência – Estrutura de Controle de Repetição
Fluxograma Pseudocódigo
inicio
comandos;
fim
proxima_instrucao;V
. . .(expressão boleana)
comandos
F
2ª Forma: não sabemos exatamente 
quantas vezes o grupo de instruções no 
interior do comando de repetição será
executado. 
I
C
C
-
P
s
e
u
d
o
c
ó
d
i
g
o
s
 
/
 
E
s
t
r
u
t
u
r
a
 
d
e
 
C
o
n
t
r
o
l
e
 
d
e
 
R
e
p
e
t
i
ç
ã
o
2ª Forma: Observem a condição de terminação (expressão boleana) no início do 
comando de repetição.
Enquanto o valor da expressão bolena for verdadeira, todas as instruções no 
interior do bloco de instruções associado ao comando enquanto – faça, serão 
executadas. No início de cada iteração a expressão bolena é verificada.
o número de iterações será determinado em tempo de execução e irá
depender dos valores associados as variáveis envolvidas na expressão 
boleana.
Estrutura de Controle de Repetição - 2ª Forma
enquanto (exp. boleana) faça
inicio
comandos;
fim
proxima instrucao;
I
C
C
-
P
s
e
u
d
o
c
ó
d
i
g
o
s
 
/
 
E
s
t
r
u
t
u
r
a
 
d
e
 
C
o
n
t
r
o
l
e
 
d
e
 
R
e
p
e
t
i
ç
ã
o
Pelo menos uma das instruções no interior do comando de repetição deve 
alterar a condição de terminação.
Os comandos no interior do comando de repetição enquanto-faça serão 
executados enquanto a expressão boleana (soma ≤ limite ) for verdadeira. 
Quando essa condição de terminação for falsa, então a proxima_instrucao será
executada e o fluxo de execução segue normalmente. Lembrem-se que eu não 
posso violar o princípio da finitude de um algoritmo, logo não posso ter um loop
infinito. Nesse caso as instruções estão bem definidas. Por quê?
...
enquanto (soma ≤ limite ) faça
inicio
soma Å soma + 1/i;
i Å i + 1;
fim
proxima_instrucao;
...
I
C
C
-
P
s
e
u
d
o
c
ó
d
i
g
o
s
 
/
 
E
s
t
r
u
t
u
r
a
 
d
e
 
C
o
n
t
r
o
l
e
 
d
e
 
R
e
p
e
t
i
ç
ã
o
Exemplo 1:
Estrutura de Controle de Repetição - 2ª Forma
...
i Å 1;
enquanto (i ≤ n ) faça
inicio
s Å s + i;
i Å i + 1;
fim
proxima_instrucao;
...
I
C
C
-
P
s
e
u
d
o
c
ó
d
i
g
o
s
 
/
 
E
s
t
r
u
t
u
r
a
 
d
e
 
C
o
n
t
r
o
l
e
 
d
e
 
R
e
p
e
t
i
ç
ã
o
Estrutura de Controle de Repetição - 2ª Forma
Exemplo 2: Do ponto de vista lógico, ambos os trechos de código abaixo produzem o 
mesmo resultado. Observem as pequenas diferenças estruturais.
...
para (i Å1; i ≤ n; i Å i+1 )
s Å s + i;
proxima_instrucao;
...
Æ Quase todos os exercícios a seguir já foram resolvidos por meio de 
fluxogramas;
I
C
C
-
P
s
e
u
d
o
c
ó
d
i
g
o
s
 
/
 
E
s
t
r
u
t
u
r
a
 
d
e
 
C
o
n
t
r
o
l
e
 
d
e
 
R
e
p
e
t
i
ç
ã
o
Observações
Æ As discussões já realizadas sobre a análise de cada um dos problemas 
continuam valendo e não serão repetidas novamente;
Æ Ao estudar, procure ter em mãos todas as aulas anteriores, principalmente 
aquelas que resolvem os mesmos problemas usando formas de representação 
de algoritmos diferentes. Assim, fica mais fácil verificar a correspondência 
entre os símbolos existentes, em ambas as formas.
Problema: Somar os n primeiros números naturais.
Quantidades a serem representadas:
Valor de entrada (n)
Representar a soma (soma)
Controlar (contar) o número de iterações ( i )
Versão 1:
inicio
inteiro n, soma, i;
impressao(“Introduza o valor de n: ”); 
leitura(n); // n≥0
soma Å 0 ; // inicializando a variável soma
para (i Å 1; i ≤ n; i Å i+1)
soma Å soma + i ;
impressao(“Valor da Soma obtido”, soma);
fimI
C
C
-
P
s
e
u
d
o
c
ó
d
i
g
o
s
 
/
 
E
s
t
r
u
t
u
r
a
 
d
e
 
C
o
n
t
r
o
l
e
 
d
e
 
R
e
p
e
t
i
ç
ã
o
Para a maioria dos exercícios a seguir, vamos admitir que os dados de entrada 
estejam corretos.
Problema: Somar os n primeiros números naturais.
Quantidades a serem representadas:
Valor de entrada (n) Representar a soma (soma)
Controlar (contar) o número de iterações ( i )
Versão 2:
inicio
inteiro n, soma, i;
impressao(“Introduza o valor de n : ”); 
leitura(n); // n≥0
i Å 1;
soma Å 0 ;
enquanto (i ≤ n) faça
inicio
i Å i + 1 ;
soma Å soma + i;
fim
impressao(“Valor da Soma obtido”, soma);
fimI C
C
-
P
s
e
u
d
o
c
ó
d
i
g
o
s
 
/
 
E
s
t
r
u
t
u
r
a
 
d
e
 
C
o
n
t
r
o
l
e
 
d
e
 
R
e
p
e
t
i
ç
ã
o
Problema: Imprimir os n primeiros números ímpares. 
inicio
inteiro n, i, im;
impressao(“Introduza um valor inteiro”); 
leitura(n); // n>0
Valor de entrada (n)
para (i Å 1; i ≤ n; i Å i + 1)
inicio
fim
im Å 2*i – 1;
Número ímpar (im)
Número de iterações (i)
impressao(im);
fim
I
C
C
-
P
s
e
u
d
o
c
ó
d
i
g
o
s
 
/
 
E
s
t
r
u
t
u
r
a
 
d
e
 
C
o
n
t
r
o
l
e
 
d
e
 
R
e
p
e
t
i
ç
ã
o
Quantidades a serem representadas:
Problema: Encontrar o fatorial de um número inteiro positivo n.
Número de entrada (n)
Fatorial ( fat )
Conta o número de iterações ( i )
I
C
C
-
P
s
e
u
d
o
c
ó
d
i
g
o
s
 
/
 
E
s
t
r
u
t
u
r
a
 
d
e
 
C
o
n
t
r
o
l
e
 
d
e
 
R
e
p
e
t
i
ç
ã
o
Quantidades a serem representadas:c
1 0
!
( 1)! 1
se n
n
n n se n
=⎧= ⎨ − ≥⎩
1
! .( 1).( 2).( 3) 3.2.1
n
i
n i n n n n
=
= = − − −∏ "
intervalo de variável i 
fat ÅÅ fat **iExpressão que acumula o produto:Æ
Lembrando que:
Problema: Encontrar o fatorial de um número inteiro
positivo n.
inicio
inteiro n, fat, i;
impressao(“Introduza um inteiro positivo”);
leitura(n); // n≥0
Número de entrada (n)
fat Å 1 ;
Fatorial ( fat )
Iteração ( i )
para (i Å 1; i ≤ n; i Å i + 1)
fat Å fat * i ;
impressao(“Valor do Fatorial=”, fat);
fim
I
C
C
-
P
s
e
u
d
o
c
ó
d
i
g
o
s
 
/
 
E
s
t
r
u
t
u
r
a
 
d
e
 
C
o
n
t
r
o
l
e
 
d
e
 
R
e
p
e
t
i
ç
ã
o
Quantidades a serem representadas:
se (n ≥ 0) // n≥0
inicioentão
fim
senão impressao(“Erro nos dados de Entrada”);
Versão 1:
Problema: Encontrar o fatorial de um número inteiro positivo n.
Número de entrada (n)
Fatorial ( fat )
Iteração ( i )
I
C
C
-
P
s
e
u
d
o
c
ó
d
i
g
o
s
 
/
 
E
s
t
r
u
t
u
r
a
 
d
e
 
C
o
n
t
r
o
l
e
 
d
e
 
R
e
p
e
t
i
ç
ã
o
Quantidades a serem representadas:
enquanto (i ≤ n) faça
inicio
i Å i + 1;
fat Å fat * i;
fim
impressao(“Valor do Fatorial=”, fat);
fim
inicio
inteiro n, fat, i;
impressao(“Introduza um inteiro positivo”);
leitura(n); // vamos admitir n≥0
fat Å 1; iÅ 1;
Versão 2:
Problema: Dado um p > 0 inteiro, encontre todos os divisores positivos 
de p e sua respectiva quantidade.
Quantidade de divisores (q)
Conta o número de iterações ( i )
número (p)
I
C
C
-
P
s
e
u
d
o
c
ó
d
i
g
o
s
 
/
 
E
s
t
r
u
t
u
r
a
 
d
e
 
C
o
n
t
r
o
l
e
 
d
e
 
R
e
p
e
t
i
ç
ã
o
Quantidades a serem representadas:
\0 10 1 pp
Todos os divisores positivos de p
1 ≤≤ variável i ≤≤ p
Lembrando que:
Problema: Dado um p > 0 inteiro, encontre todos os divisores positivos 
de p e sua respectiva quantidade.
inicio
inteiro p, i, q;
impressao(“Introduza o valor de p”); 
leitura (p); // p>0
i Å 1 ;
Quantidade de divisores (q)
Conta o número de iterações ( i )
q Å 0 ;
enquanto (i ≤ p) faça
inicio
i Å i + 1 ;
q Å q + 1 ;
fim
impressao(“Número de divisores”, q);
fim
impressao(i);
se ((p % i) = 0 )
entao inicio
fim
número (p)
I
C
C
-
P
s
e
u
d
o
c
ó
d
i
g
o
s
 
/
 
E
s
t
r
u
t
u
r
a
 
d
e
 
C
o
n
t
r
o
l
e
 
d
e
 
R
e
p
e
t
i
ç
ã
o
Quantidades a serem representadas:
Número (p)
Problema: Verificar se um número inteiro positivo p qualquer é um número 
perfeito.
Soma dos divisores (soma)
Contar o número de iterações ( i )
Quantidades a serem representadas:
I
C
C
-
P
s
e
u
d
o
c
ó
d
i
g
o
s
 
/
 
E
s
t
r
u
t
u
r
a
 
d
e
 
C
o
n
t
r
o
l
e
 
d
e
 
R
e
p
e
t
i
ç
ã
o
Um número p (p>0) é perfeito, se a soma de seus divisores (com exceção de p) é igual ao 
próprio número.
Exemplo1: D(10) = {1,2,5,10} Soma(D(10)) = 8X 10 ≠ 8
Exemplo2: D(6) = {1,2,3,6} Soma(D(6)) = 6X 6 = 6
Exemplo3: D(28) = {1, 2, 4, 7, 14, 28} Soma(D(28)) = 28X 28 = 28
X
9
9
Lembrando que:
Os primeiros 4 números perfeitos são: 6, 28, 496 e 8128.
Número (p)
Problema: Verificar se um número inteiro positivo p qualquer é um número 
perfeito.
Soma dos divisores (soma)
Contar o número de iterações ( i )
Quantidades a serem representadas:
I
C
C
-
P
s
e
u
d
o
c
ó
d
i
g
o
s
 
/
 
E
s
t
r
u
t
u
r
a
 
d
e
 
C
o
n
t
r
o
l
e
 
d
e
 
R
e
p
e
t
i
ç
ã
o
Lembrando que:
\0 10 1 pp
Todos os divisores positivos de p 
com exceção dele mesmo
1 ≤≤ variável i ≤≤ p-1
inicio
inteiro p, i, soma;
impressao(“Introduza o valor de p”); 
leitura(p); // supondo p>0
Número (p)
i Å 1;
soma Å 0;
enquanto (i < p) faça
inicio
i Å i + 1;
fim
senao impressao(“O número não é perfeito”);
fim
se ((p % i) = 0 )
entao soma Å soma + i;
Problema: Verificar se um número inteiro positivo p qualquer é um número 
perfeito.
Soma dos divisores (soma)
Contar o número de iterações ( i )
se (p = soma )
entao impressao(“O número é perfeito”);
Quantidades a serem representadas:
I
C
C
-
P
s
e
u
d
o
c
ó
d
i
g
o
s
 
/
 
E
s
t
r
u
t
u
r
a
 
d
e
 
C
o
n
t
r
o
l
e
 
d
e
 
R
e
p
e
t
i
ç
ã
o
Base (a)
Expoente (b)
Problema: Calcular ab, dado a:real e b: inteiro positivo.
Potência (pot)
Contar o número de iterações ( i )
Quantidades a serem representadas:
I
C
C
-
P
s
e
u
d
o
c
ó
d
i
g
o
s
 
/
 
E
s
t
r
u
t
u
r
a
 
d
e
 
C
o
n
t
r
o
l
e
 
d
e
 
R
e
p
e
t
i
ç
ã
o
. . . . . . .bpot a a a a a a a a a= = "
b vezes
Lembrando que:
inicio
inteiro b, i;
impressao(“Introduza o valor da base”); 
leitura(a);
Base (a)
Expoente (b)
i Å 1;
pot Å 1;
enquanto (i ≤ b) faça
inicio
i Å i + 1;
fim
fim
Problema: Calcular ab, dado a:real e b: inteiro positivo.
impressao(“Resultado: Pot(“,a,”,”,b,”) = ” , pot);
real a, pot;
impressao(“Introduza o valor do expoente”); 
leitura(b); // b≥0
pot Å pot*a;
Potência (pot)
Contar o número de iterações ( i )
Quantidades a serem representadas:
I
C
C
-
P
s
e
u
d
o
c
ó
d
i
g
o
s
 
/
 
E
s
t
r
u
t
u
r
a
 
d
e
 
C
o
n
t
r
o
l
e
 
d
e
 
R
e
p
e
t
i
ç
ã
o
inicio
inteiro a, b, soma, i;
impressao(“Introduza dois numeros naturais: ”); 
leitura(a,b); // a, b ≥0
Valores de entrada (a e b)
soma Å 0;
para (i Å 1; i ≤ b; i Åi + 1)
fim
Problema: Fazer o produto de a por b (inteiros positivos), usando 
somente operações de soma.
impressao(“Resultado:” , soma);
soma Å soma + a;
Acumular a soma (soma)
Contar o número de iterações ( i )
Quantidades a serem representadas:
I
C
C
-
P
s
e
u
d
o
c
ó
d
i
g
o
s
 
/
 
E
s
t
r
u
t
u
r
a
 
d
e
 
C
o
n
t
r
o
l
e
 
d
e
 
R
e
p
e
t
i
ç
ã
o
.a b a a a a a a a a= + + + + + + + +"
b vezes
Lembrando que:
Valores de entrada (a,b)
Quociente (parte inteira da divisão) (q)
Problema: Fazer a divisão inteira de a por b, usando somente 
operações de subtração.
I
C
C
-
P
s
e
u
d
o
c
ó
d
i
g
o
s
 
/
 
E
s
t
r
u
t
u
r
a
 
d
e
 
C
o
n
t
r
o
l
e
 
d
e
 
R
e
p
e
t
i
ç
ã
o
Quantidades a serem representadas:
00 aa
bb bb bb bb bb bb restoresto
Quantidade de vezes que o b “cabe” dentro de a
Lembrando que:
inicio
inteiro a, b, q, ca;
impressao(“Introduza o valor de a: ”); 
leitura (a);
Valores de entrada (a,b)
Quociente (parte inteira da divisão) (q)
Cópia de a (ca)
q Å 0; ca Å a;
enquanto (a ≥ b) faça
inicio
q Å q + 1;
fim
fim
impressao(“Introduza o valor de b:”); 
leitura (b);
// b>0
a Å a – b;
Problema: Fazer a divisão inteira de a por b, usando somente 
operações de subtração.
impressao(“Resto(“,ca,”,”,b,”)= “, a);I
C
C
-
P
s
e
u
d
o
c
ó
d
i
g
o
s
 
/
 
E
s
t
r
u
t
u
r
a
 
d
e
 
C
o
n
t
r
o
l
e
 
d
e
 
R
e
p
e
t
i
ç
ã
o
impressao(“Quociente(“,ca,”,”,b,”) = “, q);
Quantidades a serem representadas:
inicio
inteiro n, alg, cn;
impressao(“Introduza um valor inteiro”); 
leitura(n); // n≥ 0
se ( n < 10)
entao alg Å1; 
Problema: Dado um n ∈Z*. Encontrar o número de Algarismos de n. 
inicio
fim
alg Å alg + 1;
n Å QUOC(n,10);
fim
impressao(“Número de algarismo de ”, cn , “é igual a”, alg); 
alg Å 0 ; cn Å n;
Valor de entrada (n)
Cópia de n (cn)
Número de algarismos de n (alg)
I
C
C
-
P
s
e
u
d
o
c
ó
d
i
g
o
s
 
/
 
E
s
t
r
u
t
u
r
a
 
d
e
 
C
o
n
t
r
o
l
e
 
d
e
 
R
e
p
e
t
i
ç
ã
o
Quantidades a serem representadas:
senao enquanto (n ≠ 0) faça
Problema: Dado um número p ∈ Z, p ≥ 2, verificar se ele é primo. (Versão 
Simples)
I
C
C
-
P
s
e
u
d
o
c
ó
d
i
g
o
s
 
/
 
E
s
t
r
u
t
u
r
a
 
d
e
 
C
o
n
t
r
o
l
e
 
d
e
 
R
e
p
e
t
i
ç
ã
o
\0 1 20 1 2 pp
Verificando se existe algum divisor 
neste intervalo
2 ≤≤ variável i ≤≤ p-1
Estratégia: Sabemos pela definição de números primos que não pode existir 
nenhum divisor de p, além dos divisores próprios.
Logo, vou verificar se existe divisores de p no intervalo [2, p-1]. Se existir um 
único divisor o número não é primo.
Uma outra estratégia bastante simples, seria contar o número de divisores de p
no intervalo [1, p]. Se este número for diferente de dois, então, o número não é
primo.
Problema: Dado um número p ∈ Z, p ≥ 2, verificar se ele é primo. (Versão 
Simples)
inicio
inteiro p, aux, i;
impressao(“Introduza um valor inteiro maior ou igual a 2”); 
leitura(p); // p ≥ 2
número (p)
enquanto ((i < p) E (aux = 1)) faça
inicio
fim
Variável auxiliar (aux)
Controlando as iterações (i)
então impressao (“O número “, p, “ é primo”);
i Å i + 1;
i Å 2; aux Å 1;
se (p % i) = 0 )
entao aux Å 0;
se (aux = 1 )
senao impressao (“O número “, p, “ não é primo”);
se (p ≥ 2)
entao inicio
senao impressao(“Dados Incorretos”);
fim
fim
I
C
C
-
P
s
e
u
d
o
c
ó
d
i
g
o
s
 
/
 
E
s
t
r
u
t
u
r
a
 
d
e
 
C
o
n
t
r
o
l
e
 
d
e
 
R
e
p
e
t
i
ç
ã
o
Quantidades a serem representadas:
Problema: Dado um número real positivo LIM, determinar o número de 
termos a serem somados da Série Harmônica, de modo que, essa soma 
exceda LIM.
I
C
C
-
P
s
e
u
d
o
c
ó
d
i
g
o
s
 
/
 
E
s
t
r
u
t
u
r
a
 
d
e
 
C
o
n
t
r
o
l
e
 
d
e
 
R
e
p
e
t
i
ç
ã
o
1 1 1 1 1 1 1 1 1 11
2 3 4 5 6 7 8 9 10 11H
S = + + + + + + + + + + +"
Análise básica do problema:
1 2 3 4 5 6 7 8 9 10 11
FATOS:
ÆTemos que ser capazes de somar uma dada quantidade de termos da série e para 
que isso ocorra, devemos gerar em cada iteração o respectivo termo;
Æ Enquanto a soma acumulada for menor ou igual ao valor LIM, eu continuo a 
somar;
1 ≤≤ variável i
Problema: Dado um número real positivo LIM, determinar o número de 
termos a serem somados da Série Harmônica, de modo que, essa soma 
exceda LIM.
I
C
C
-
P
s
e
u
d
o
c
ó
d
i
g
o
s
 
/
 
E
s
t
r
u
t
u
r
a
 
d
e
 
C
o
n
t
r
o
l
e
 
d
e
 
R
e
p
e
t
i
ç
ã
o
Número (lim) Soma acumulada (soma)
Auxiliar na Geração dos termos (i)
Quantidades a serem representadas:
inicio
inteiro i;
real soma, lim;
impressao(“Introduza um valor real positivo :”); 
leitura (lim); // lim ≥ 0
enquanto (soma ≤ lim) faça
inicio
fim
impressao(“Número de termos somados: “, i-1);
i Å i + 1;
i Å 1; soma Å 0;
soma Å soma + 1.0/i;
se (lim ≥ 0)
entao inicio
senao impressao(“Dados Incorretos”);fim
fim
I
C
C
-
P
s
e
u
d
o
c
ó
d
i
g
o
s
 
/
 
E
s
t
r
u
t
u
r
a
 
d
e
 
C
o
n
t
r
o
l
e
 
d
e
 
R
e
p
e
t
i
ç
ã
o
Se app é uma boa aproximação para , então 
( ) / 2x app
app
+ é melhor ainda.
x
Você saberia dizer “a 
priori” o número de 
iterações necessárias para 
resolver o problema com 
uma boa aproximação?
Problema: Dado um número real positivo x≥0, determinar usando a 
relação abaixo.
x
I
C
C
-
P
s
e
u
d
o
c
ó
d
i
g
o
s
 
/
 
E
s
t
r
u
t
u
r
a
 
d
e
 
C
o
n
t
r
o
l
e
 
d
e
 
R
e
p
e
t
i
ç
ã
o
Problema: Dado um número real positivo x≥0, determinar usando a 
relação abaixo.
x
Se app é uma boa aproximação para , então 
( ) / 2x app
app
+ é melhor ainda.
x
\0 1 0 1 x
app app app app app
Análise básica do problema:
I
C
C
-
P
s
e
u
d
o
c
ó
d
i
g
o
s
 
/
 
E
s
t
r
u
t
u
r
a
 
d
e
 
C
o
n
t
r
o
l
e
 
d
e
 
R
e
p
e
t
i
ç
ã
o
x app≅
2| |x app eps− <
2 0x app− ≅
Vamos analisar a condição de terminação, ou seja, até quando eu devo 
continuar com minhas aproximações? Em outras palavras, quando eu devo 
parar.
2x app≅
10 , 6 12.(suficientemente pequeno)neps n−= ≤ ≤
Análise básica do problema:
I
C
C
-
P
s
e
u
d
o
c
ó
d
i
g
o
s
 
/
 
E
s
t
r
u
t
u
r
a
 
d
e
 
C
o
n
t
r
o
l
e
 
d
e
 
R
e
p
e
t
i
ç
ã
o
Problema: Dado um número real positivo x≥0, determinar usando a 
relação abaixo.
x
Número (x) Valor aproximado (app)
Número bem pequeno (eps)
Quantidades a serem representadas:
inicio
real app, x, eps;
impressao (“Introduza um valor real positivo :”); 
leitura (x); // x ≥ 0
enquanto ( |x – app*app| > eps) faça
impressao (“Valor aproximado obtido: “, app);
app Å 1.0; eps Å 0.000001;
app Å ( x/app + app)/2.0;
se (x ≥ 0)
entao inicio
senao impressao (“Dados Incorretos”);fim
fim
I
C
C
-
P
s
e
u
d
o
c
ó
d
i
g
o
s
 
/
 
E
s
t
r
u
t
u
r
a
 
d
e
 
C
o
n
t
r
o
l
e
 
d
e
 
R
e
p
e
t
i
ç
ã
o
Exercícios
01) Refaça todos os exercícios já resolvidos com o comando for, só que agora, 
usando o comando while.
02) Se app é uma boa aproximação para , então
2( 2 ) / 3
x app
app
+
é melhor ainda.
3 x
03) Leia um número inteiro num e encontre o seu reverso. Por exemplo, se:
num = 1234 Æ nr = 4321
num = 74291 Æ nr = 19247
04) Leia um número inteiro num e verifique se esse número possui dois dígitos
adjacentes iguais. Por exemplo
num = 1234 Æ não possui
num = 727297 Æ não possui
num = 2335 Æ possui
2º Trabalho Prático de Programação - Pseudocódigos
I
C
C
-
P
s
e
u
d
o
c
ó
d
i
g
o
s
 
/
 
E
s
t
r
u
t
u
r
a
 
d
e
 
C
o
n
t
r
o
l
e
 
d
e
 
R
e
p
e
t
i
ç
ã
o
¾ Prazo de Entrega: 23/04/2008;
Observações:Æ
¾ Enviar o trabalho num único arquivo para o e.mail piteri@fct.unesp.br ;
¾ Os nomes dos participantes do grupo deverão estar no interior do arquivo e não 
no corpo do e.mail;
Trabalho:Æ Elaborar pseudocódigos para resolver os seguintes 
problemas:
Exercícios: 15, 22 e 34 da Lista 01.
¾ Se desejarem, vocês poderão fazer uma análise básica do problema;
¾ Procurem endentar os blocos de instruções e destacar os símbolos associados a 
cada um dos comandos utilizados. Observem as Notas de Aula;

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?