Escolar Documentos
Profissional Documentos
Cultura Documentos
Computational Thinking - Cap 3 - Estruturas de Repetição - RevFinal - 20200413
Computational Thinking - Cap 3 - Estruturas de Repetição - RevFinal - 20200413
santos.anacaraujo@gmail.com
Estruturas de Repetição Página 2
LISTA DE FIGURAS
Figura 3.40 – Exemplo de estratégia recursiva Fonte: Adaptado por FIAP (2015) ..93
Figura 3.41 – Mudança do disco maior diretamente da torre A para a torre C Fonte:
Adaptado por FIAP (2015).........................................................................................94
Figura 3.42 – Mudança dos dois discos da torre B para a torre C Fonte: Adaptado
por FIAP (2015) .........................................................................................................94
Figura 3.43 – Torre de Hanói. ...................................................................................95
LISTA DE TABELAS
SUMÁRIO
3 ESTRUTURAS DE REPETIÇÃO
Como dito no início deste capítulo, toda vez que tivermos uma repetição, não
temos condições de solucionar o problema usando apenas os recursos conhecidos
até o momento, especialmente em um problema tão dinâmico quando o sugerido: o
número de repetições não é fixo, varia de acordo com o valor informado pelo
usuário; um programador não teria condições de resolver o problema sem uma
estrutura de repetição.
A questão que fica pendente é saber como simular uma somatória, isto é, a
repetição de um processo de somas consecutivas de um conjunto de números.
Vamos deixar pendente, por ora, esse problema.
Mas como escrever isso numa linguagem algorítmica? Vamos à sua sintaxe:
Solução:
No exemplo em questão temos uma variável “i” que faz a contagem. Por isso
mesmo, chamamos a esse tipo de variável de variáveis de contagens ou, mais
usualmente, de contadores.
Naturalmente, a primeira variável inteira seria “i”, portanto passou a ser quase
natural que contadores fossem “i”, “i1” etc. Também pareceu natural, quando mais
de um contador fosse usado num mesmo programa que esses fossem
representados por “j”, “k” etc.
Observações:
• Há linguagens, como o PL/SQL, que vão ainda além, pois sequer exigem
que o contador seja declarado. Basta enunciá-lo como contador da
instrução “para”. Isso basta para a linguagem se incumbir de todos os
Solução:
Figura 3.3 – Exemplo de algoritmo de repetição que soma números entre dois números inteiros.
Fonte: Autor (2015)
• Observe que a variável “s” representa uma somatória, isto é, como toda
soma, deve ser iniciada com zero. Esse tipo de variável é conhecido como
acumulador ou variável para somatória ou ainda somatório.
Simulação
Figura 3.4 – Exemplo de teste de mesa do algoritmo de repetição que soma números entre dois
números inteiros
Fonte: Elaborado pelo autor (2015)
Solução:
Figura 3.5 – Exemplo de algoritmo de repetição que soma quantos números inteiros o usuário quiser.
Fonte: Autor (2015)
Simulação
Figura 3.6 – Exemplo de teste de mesa do algoritmo de repetição que soma quantos números inteiros
o usuário quiser.
Fonte: Autor (2015)
var
n: inteiro;
i: inteiro;
numero: inteiro;
maior: inteiro;
inicio
leia(n)
leia (numero)
maior := numero
fimse
fimpara
fimalgoritmo
var
n: inteiro;
i: inteiro;
numero: inteiro;
maior: inteiro;
repetido: logico;
inicio
leia(n)
leia (numero)
repetido := verdadeiro
fimse
maior := numero
fimse
fimpara
se (repetido) ENTÃO
fimse
fimalgoritmo
algoritmo "Exercicio_Básicos_Capitulo_3_c"
var
n: inteiro;
i: inteiro;
numero: inteiro;
menor: inteiro;
soma: inteiro;
inicio
menor := 99999999
leia(n)
leia (numero)
menor := numero
fimse
fimpara
escreval ("A soma dos numeros digitados sem considera o menor numero é ", soma)
fimalgoritmo
algoritmo "Exercicio_Básicos_Capitulo_3_d"
var
n: inteiro;
i: inteiro;
numero: inteiro;
menor: inteiro;
soma: inteiro;
media: real;
inicio
menor := 99999999
leia(n)
leia (numero)
menor := numero
fimse
fimpara
escreval ("A media dos numeros digitados sem considera o menor numero é ", media)
fimalgoritmo
algoritmo "Exercicio_Básicos_Capitulo_3_e"
var
i: inteiro;
numero_1: inteiro;
numero_2: inteiro;
inicio
leia(numero_1)
leia(numero_2)
escreval ("Listando os números pares entre ", numero_1 , " e ", numero_2 )
se i MOD 2 = 0 ENTÃO
escreval (i)
fimse
fimpara
fimalgoritmo
algoritmo "Exercicio_Básicos_Capitulo_3_f"
var
i: inteiro;
numero_1: inteiro;
numero_2: inteiro;
soma: inteiro
inicio
leia(numero_1)
leia(numero_2)
se i MOD 2 = 0 ENTÃO
soma := soma + i
fimse
fimpara
fimalgoritmo
DICA PARA SOLUÇÃO: O último digito de qualquer número pode ser obtido
através de uma simples conta: pegue o número e divida-o por 10, olhando para seu
resto (MOD 10). Exemplos: 107 MOD 10 = 7 e 135112456 MOD 10 = 6.
algoritmo "Exercicio_Básicos_Capitulo_3_g"
var
i: inteiro;
numero_1: inteiro;
numero_2: inteiro;
inicio
leia(numero_1)
leia(numero_2)
se i MOD 10 = 7 ENTÃO
escreval (i)
fimse
fimpara
fimalgoritmo
Figura 3.7 – Escola de Atenas (1509) affresco de Rafael, retratando provavelmente Euclides
Fonte Wikimedia Commons (2010)
Embora eficaz, dividir os dois números por todos os números menores que
eles e posteriormente identificar o maior divisor comum entre os dois é um processo
muito trabalhoso. Seres humanos gostam de atalhos, e os matemáticos não são
exceções à regra.
Note que “A” inicialmente vale 30 e “B” vale 20. O resto da divisão entre eles é
10. A variável “A” recebe o valor de “B” (20), descartando o 30. Em “B” guardamos o
resto da divisão, 10. Ao se dividir novamente A por B, agora 20 dividindo o 10, o
resto dá zero, logo, o maior divisor comum entre “30” e “20” é “10”! Ao se determinar
o MDC de 80 e 54, dividimos um pelo outro, obtendo resto 26. Divide-se novamente,
agora entre 54 e 26, obtendo-se resto 2; a divisão seguinte entre 26 e 2, obtemos
um resto zero, concluindo que o MDC de 80 e 54 é 2.
3.5.1 Enquanto
A estrutura enquanto, por partir do pressuposto que uma condição terá que
ser inicialmente válida para ser executada e também só continuará a ser executada
enquanto permanecer verdadeira; é conhecida também como estrutura de repetição
otimista.
Sintaxe:
<instrução>
fim-enquanto
Solução:
Observações:
Por partir do pressuposto que executará ações até uma condição ser
satisfeita, é conhecida também como estrutura de repetição pessimista.
Sintaxe:
repita
<instrução>
Vamos observar como montar uma contagem, semelhante como fizemos nas
estruturas para e enquanto.
Solução:
Figura 3.9 – Exemplo que exibe números de 1 até 10 usando REPITA ... ATÉ
Fonte: Autor (2015)
Observações:
• Devemos notar que “i” continua sendo um mero contador, mas comporta-
se de maneira muito semelhante ao que ocorria na estrutura
Sintaxe:
faça
<instrução>
Vamos observar como montar uma contagem, semelhante como fizemos nas
estruturas para, enquanto e repita.
Solução:
Figura 3.10 – Exemplo que exibe números de 1 até 10 usando FAÇA ... ENQUANTO
Fonte: Autor (2015)
Observações:
• Devemos notar que “i” continua sendo um mero contador, mas comporta-se de
maneira muito semelhante ao que ocorria na estrutura “ENQUANTO”, ou seja, o
controle do início do contador e seu passo é encargo do programador e não da
instrução.
• A instrução “faça” não precisa que seu contador seja inicialmente válido, para
que seja executada numa primeira execução. O programador deve ter em mente
que se uma instrução “faça” nunca vier a se tornar falsa, o programa entrará num
“loop infinito”, ou seja, jamais irá parar, sem a intervenção de um usuário.
Sintaxe
laço
<instrução>
se <condição> então
Quebre
fim-se
fim-laço
Vamos observar como montar uma contagem, semelhante como fizemos nas
estruturas para, enquanto, repita e faça.
Solução:
Observações:
• Devemos notar que “i” continua sendo um mero contador, mas comporta-
se de maneira muito semelhante ao que ocorria na estrutura “enquanto”,
“repita” ou “para”, mas todo o controle da estrutura passou a ser do
programador.
algoritmo "Exercicio_Básicos_Enquanto_Capitulo_3_a"
var
n: inteiro;
i: inteiro;
numero: inteiro;
maior: inteiro;
inicio
leia(n)
i := 1
leia (numero)
maior := numero
fimse
i := i + 1
FIMENQUANTO
fimalgoritmo
-----------------------------
algoritmo "Exercicio_Básicos_Enquanto_Capitulo_3_b"
var
n: inteiro;
i: inteiro;
numero: inteiro;
maior: inteiro;
repetido: logico;
inicio
i := 1
leia(n)
leia (numero)
repetido := verdadeiro
fimse
maior := numero
fimse
i := i+1
FIMENQUANTO
se (repetido) ENTÃO
fimse
fimalgoritmo
------------------
algoritmo "Exercicio_Básicos_Enquanto_Capitulo_3_c"
var
n: inteiro;
i: inteiro;
numero: inteiro;
menor: inteiro;
soma: inteiro;
inicio
menor := 99999999
i := 1
leia(n)
leia (numero)
menor := numero
fimse
i := i + 1
FIMENQUANTO
escreval ("A soma dos numeros digitados sem considera o menor numero é ", soma)
fimalgoritmo
--------------------
algoritmo "Exercicio_Básicos_Enquanto_Capitulo_3_d"
var
n: inteiro;
i: inteiro;
numero: inteiro;
menor: inteiro;
soma: inteiro;
media: real;
inicio
menor := 99999999
i := 1
leia(n)
leia (numero)
menor := numero
fimse
i := i + 1
FIMENQUANTO
escreval ("A media dos numeros digitados sem considera o menor numero é ", media)
fimalgoritmo
--------------
algoritmo "Exercicio_Básicos_Enquanto_Capitulo_3_e"
var
i: inteiro;
numero_1: inteiro;
numero_2: inteiro;
inicio
leia(numero_1)
i := numero_1
leia(numero_2)
escreval ("Listando os números pares entre ", numero_1 , " e ", numero_2 )
se i MOD 2 = 0 ENTÃO
escreval (i)
fimse
i := i + 1
fimenquanto
fimalgoritmo
-------------
algoritmo "Exercicio_Básicos_Enquanto_Capitulo_3_f"
var
i: inteiro;
numero_1: inteiro;
numero_2: inteiro;
soma: inteiro
inicio
leia(numero_1)
i := numero_1 + 1
leia(numero_2)
se i MOD 2 = 0 ENTÃO
soma := soma + i
fimse
i := i + 1
FIMENQUANTO
fimalgoritmo
---------------
algoritmo "Exercicio_Básicos_Enquanto_Capitulo_3_g"
var
i: inteiro;
numero_1: inteiro;
numero_2: inteiro;
inicio
leia(numero_1)
i := numero_1 + 1
leia(numero_2)
se i MOD 10 = 7 ENTÃO
escreval (i)
fimse
i := i + 1
FIMENQUANTO
fimalgoritmo
das hipóteses, o número 1 será o MDC, uma vez que qualquer número é divisível
por 1.
Figura 3.14 – Descobrindo o maior divisor comum usando o algoritmo de Euclides e enquanto.
Fonte: Elaborado pelo autor (2015)
Solução
processar, por isso usamos a instrução “para” indo até “n” números para solução
desse problema.
RELEMBRAR é VIVER!
5!
5! = 5 x 4 x 3 x 2 x 1
5! = 20 x 3 x 2 x 1
5! = 60 x 2 x 1
5! = 120 x 1
5! = 120
Lembrou?
Solução
A seguir, vamos transformar o algoritmo fatorial numa função que possa ser
chamada por um programa principal.
Solução
Solução
Exemplo:
15 DIV 10 = 1
500109 % 10 = 9
Incrível, não?
Solução
Nossa estratégia, dessa vez, foi replicar o valor da variável que recebe o
número, pretensamente palíndromo. A partir da variável em que esse número está
copiado, extraímos dígito a dígito, multiplicando o número resultante por dez, de
forma a “inverter” o número em questão.
SOLUÇÃO 1 DO PROBLEMA A
Todo número “n” que não seja divisível por nenhum número entre 2 e “n-1” é
primo, sendo assim, primos são divisíveis apenas um 1 e si mesmos.
Figura 3.24 – Algoritmo que determina se o número informado é primo ou não, melhorado.
Fonte: Elaborado pelo autor (2015)
É fácil perceber que o esforço foi reduzido à metade, nos dois casos!
Começamos a perceber que, embora existam várias soluções para um mesmo
problema, seu desempenho pode ser muito, mas muito diferente!
Embora os ganhos sejam evidentes, será que não seria possível melhorarmos
ainda mais nosso algoritmo?
Ora, parece uma boa ideia eliminarmos dos testes todos os números pares,
exceto o número 2. Chegaríamos, portanto no algoritmo que segue:
Pensemos um pouco...
Isso ocorre porque será necessário muito esforço para previamente calcular e
armazenar esse conjunto de números primos a serem testados. Com certeza, vale
bem mais a pena realizar alguns testes inúteis (9, 15, 21, 25 etc.) do que armazenar
números primos em memória antes de efetivamente iniciarmos nossos testes.
var
inicio
leia(n)
i := 1
leia (numero)
maior := numero
fimse
i := i + 1
FIMENQUANTO
fimalgoritmo
a) Elabore um algoritmo que calcule e exiba a soma dos “n” primeiros números
inteiros positivos, sendo “n” informado pelo usuário. Exemplo, se n = 4, deverá
ser impresso 10 (4+3+2+1).
algoritmo "Exercicio_Gerais_Capítulo_3_a"
var
i: inteiro;
soma: inteiro;
numero: inteiro;
inicio
leia(numero)
soma := soma + i
FIMPARA
escreva (soma)
fimalgoritmo
var
i: inteiro;
fat: inteiro;
numero: inteiro;
inicio
fat := 1
leia(numero)
escreval("Exibindo o fatorial")
fat := fat * i
FIMPARA
escreva (fat)
fimalgoritmo
var
i: inteiro;
tri: inteiro;
numero: inteiro;
inicio
leia(numero)
tri := i
tri := tri * (i + 1)
tri := tri * (i + 2)
FIMPARA
fimalgoritmo
var
i: inteiro;
numero: inteiro;
inicio
leia(numero)
fimse
FIMPARA
fimalgoritmo
var
i: inteiro;
numero: inteiro;
contador: inteiro;
inicio
leia(numero)
contador := contador + 1
FIMSE
FIMPARA
SE contador = 2 ENTÃO
FIMSE
fimalgoritmo
f) Elabore um algoritmo que receba do usuário “n” números inteiros (quanto ele
quiser), calcule e exiba a somatória desses números (Exemplo, o usuário decide
informar 3 números, informando 5, 6 e 2, o algoritmo deve exibir 13).
algoritmo "Exercicio_Gerais_Capítulo_3_f"
var
i: inteiro;
numero: inteiro;
valor: inteiro;
soma: inteiro;
inicio
fimalgoritmo
g) Elabore um algoritmo que receba do usuário “n” números inteiros (quanto ele
quiser). O algoritmo deverá ler os n números e devolver:
algoritmo "Exercicio_Gerais_Capítulo_3_g"
var
i: inteiro;
numero: inteiro;
valor: inteiro;
soma: inteiro;
menor: inteiro;
maior: inteiro;
produtoria: inteiro;
pares: inteiro;
impares: inteiro;
positivos: inteiro;
negativos: inteiro;
inicio
maior := -999999999
menor := 999999999
produtoria := 1
FIMPARA
fimalgoritmo
algoritmo "Exercicio_Gerais_Capítulo_3_h"
var
numero: inteiro;
aux: inteiro;
reverso: inteiro;
inicio
fimalgoritmo
i) Elabore um algoritmo que recebe do usuário dois números “p” e “q” inteiros e
positivos, calcule e exiba o MMC(p, q) (mínimo múltiplo comum de p e q).
algoritmo "Exercicio_Gerais_Capítulo_3_i"
var
mmc: inteiro;
a: inteiro;
b: inteiro;
c: inteiro;
d: inteiro;
r: inteiro;
inicio
c := a
escreva("Informe outro número inteiro e positivo: ")
leia(b)
d := b
fimalgoritmo
j) Elabore um algoritmo que imprima todos os números primos no intervalo de 1 a
100.000.
algoritmo "Exercicio_Gerais_Capítulo_3_j"
var
i: inteiro;
j: inteiro;
numero: inteiro;
contador: inteiro;
inicio
numero := i
contador := 0
PARA j de 1 ATE numero FACA
SE numero MOD j = 0 ENTÃO
contador := contador + 1
FIMSE
FIMPARA
SE contador = 2 ENTÃO
escreval (numero)
FIMSE
FIMPARA
fimalgoritmo
k) Dois números inteiros positivos são chamados primos entre si se o MDC entre
eles for 1. Elabore um algoritmo que receba do usuário um número inteiro “n”,
calcule e imprima “os números primos entre si” entre esse número e números no
intervalo entre 1 e 100.
algoritmo "Exercicio_Gerais_Capítulo_3_k"
var
i: inteiro;
numero: inteiro;
valor: inteiro;
resto: inteiro;
maior: inteiro;
menor: inteiro;
inicio
fimalgoritmo
l) Elabore um algoritmo que receba do usuário “n” números, calcule e imprima a
soma somente daqueles que pertencerem a Progressão Aritmética
4,7,10,13,16,19...
algoritmo "Exercicio_Gerais_Capítulo_3_l"
var
i: inteiro;
j: inteiro;
numero: inteiro;
valor: inteiro;
inicio
fimalgoritmo
var
v1: inteiro;
v2: inteiro;
v3: inteiro;
contador: inteiro;
qtd: inteiro;
inicio
v1 <- 1
v2 <- 1
v3 <- 1
Escreva("Digite quantos numeros na sequencia Fibonacci: ")
Leia(qtd)
Escreval(v3)
para contador de 1 ate qtd faca
Escreval(v3)
v3 <- v1 + v3
v1 <- v2
v2 <- v3
fimpara
fimalgoritmo
var
i: inteiro;
j: inteiro;
numero: inteiro;
valor: inteiro;
resto: inteiro;
maior: inteiro;
menor: inteiro;
inicio
Fimalgoritmo
var
i: inteiro;
numero: inteiro;
inicio
fimalgoritmo
p) Considere a PG (progressão geométrica) 1,2,4,8,16,... Elabore um algoritmo que
solicita ao usuário um número inteiro e positivo “n”, calcular e exiba seus “n”
primeiros termos e sua somatória de todos eles.
algoritmo "Exercicio_Gerais_Capítulo_3_p"
var
i: inteiro;
numero: inteiro;
soma: inteiro;
pg: inteiro;
inicio
pg := 1;
fimalgoritmo
q) Elabore um algoritmo que calcule e exiba o seguinte cálculo: 1 – ½ + ¼ - 1/6 +
1/8 - ... + 1/200
algoritmo "Exercicio_Gerais_Capítulo_3_q"
var
i: inteiro;
soma: real;
inicio
escreva (soma)
fimalgoritmo
r) Considere-se que um único casal de coelhos depois de dois meses de vida e, a
partir daí, produz um novo casal de coelhos a cada mês. Se os coelhos nunca
morrem, a quantidade de casal de coelhos após “n” meses é dada pelo n-ésimo
termo da série: Fn = F n-2 + F n-1 , onde n >= 2 e F0 = 1 e F1 = 1
Elabore um algoritmo capaz de calcular a quantidade de casais de coelhos
após “n” meses, sendo “n” um número inteiro e positivo fornecido pelo usuário.
algoritmo "Exercicio_Gerais_Capítulo_3_R"
var
v1: inteiro;
v2: inteiro;
v3: inteiro;
i: inteiro;
qtd: inteiro;
soma: inteiro;
inicio
v1 := 1
v2 := 1
v3 := 1
soma := v3
Leia(qtd)
soma := soma + v3
v3 := v1 + v3
v1 := v2
v2 := v3
fimpara
fimalgoritmo
3.13.1 Exercícios
a) Elabore uma função que receba um número inteiro informado pelo usuário e
retorne “1” se este número fizer parte da série de Fibonacci ou “0” em caso
contrário.
algoritmo "Exercicio_Funções_a"
var
numero: inteiro;
var
i: inteiro;
v1: inteiro;
v2: inteiro;
v3: inteiro;
sim: inteiro;
inicio
v1 := 1
v2 := 1
v3 := 1
sim := 0
RETORNE sim
fimfuncao
inicio
fimalgoritmo
b) Elabore uma função que receba um número inteiro informado pelo usuário e
retorne “1” se este número for palíndromo ou “0” em caso contrário.
algoritmo "Exercicio_Funções_b"
var
numero: inteiro;
var
aux: inteiro;
reverso: inteiro;
inicio
aux := n
SE reverso = n ENTÃO
retorne 1
SENÃO
retorne 0
FIMSE
fimfuncao
inicio
SE PALINDROMO(numero) = 1 ENTAO
escreva ("O numero ", numero, " é palindromo")
SENAO
escreva ("O numero ", numero, " não é palindromo")
fimse
fimalgoritmo
c) Elabore uma função que receba um número inteiro informado pelo usuário e
retorne “1” se este número fizer parte da Progressão Aritmética 4, 7, 10, 13, 16,
19, ou “0” em caso contrário.
algoritmo "Exercicio_Funções_c"
var
numero: inteiro;
var
j: inteiro;
inicio
fimfuncao
inicio
SE SEQ(numero) = 1 ENTAO
escreva ("O numero ", numero, " faz parte da sequencia 4, 7, 10, 13, 16, 19")
SENAO
escreva ("O numero ", numero, " não faz parte da sequencia 4, 7, 10, 13, 16,
19")
fimse
fimalgoritmo
3.14.1.1 Definição
• Vantagens:
• Desvantagens:
• N! = 1, para N=0;
b) Recursiva:
• N! = 1, para N=0;
Podemos observar que a função recebe uma variável “n” e, através de cálculo
repetitivo, devolve ao programa principal o valor de seu fatorial.
Por outro lado, poderíamos pensar numa função que se “auto chamasse”.
Observemos a animação que retrata uma função “recursiva”.
algoritmo funcao_fatorial_recursiva;
início
fim
início
se n = 0 então
retorne 1;
senão
retorne n * fatorial(n-1);
fim-se
fim
Notemos que a função fatorial se “auto chama” inúmeras vezes, até que o
número chamado seja 0 (zero). Quando esse número é chamado, a função retorna o
valor 1 (um) e resolve o processo que, até então, estava pendente.
Condição de terminação:
• O procedimento deve ter pelo menos um caso básico para cada caso
recursivo, o que significa a finalização do procedimento.
Notemos que nossa função tem dois parâmetros: “x” que representa o número
cuja potenciação queremos obter e “n” que indica a qual potência devemos elevar
“x”. Observar que temos uma condição de término. Quando “n” for igual a 0 (zero),
então obtemos como retorno o valor 1 (de fato, qualquer número elevado a zero
resulta em um).
Já para qualquer outro valor sabemos que basta multiplicar o número por ele
mesmo, elevado a sua potência menos o valor um. Por isso, quando fatorial se
“autochama”, temos a passagem de dois parâmetros, ou seja, o número a ser
elevado e a potência decrementada de um.
A lenda dizia que, no início dos tempos, foi dada aos monges de um templo
uma pilha de 64 discos de ouro, dispostos em uma haste, de forma que cada disco
de cima fosse menor que o de baixo.
Para solucionar o problema das torres de Hanoi com uma recursão, devemos
considerar que os "n" discos devam ser transferidos.
O primeiro, através da solução trivial (quando um disco tiver que ser movido
entre as torres A e C) e o segundo através da solução geral (uma solução para "n"
discos em termos de "n-1").
b) Senão:
algoritmo "Exercicio_Clássicos_1"
var
entrada: inteiro;
var
i: inteiro;
fat: inteiro;
inicio
fat := 1
fat := fat * i
FIMPARA
retorne fat
fimfuncao
inicio
leia(entrada)
fimalgoritmo
2. Elabore um algoritmo que possua uma função que receba como parâmetros
dois números e devolva a soma dos primos existentes entre ambos. Chame a
função algumas vezes para testá-la.
algoritmo "Exercicio_Clássicos_2"
var
entrada: inteiro;
ultimo: inteiro;
j: inteiro;
var
i: inteiro;
contador: inteiro;
inicio
contador := contador + 1
FIMSE
FIMPARA
SE contador = 2 ENTÃO
retorne 1
SENÃO
retorne 0
FIMSE
fimfuncao
inicio
leia(entrada)
leia(ultimo)
SE PRIMO(j) = 1 ENTÃO
escreval (j)
FIMSE
FIMPARA
fimalgoritmo
3. Elabore um algoritmo que possua uma função que receba como parâmetros
dois números e devolva a soma dos números de Fibonacci existentes entre
ambos. Chame a função algumas vezes para testá-la.
algoritmo "Exercicio_Clássicos_3"
var
entrada: inteiro;
ultimo: inteiro;
j: inteiro;
var
i: inteiro;
v1: inteiro;
v2: inteiro;
v3: inteiro;
inicio
v1 := 1
v2 := 1
v3 := 1
v3 := v1 + v3
v1 := v2
v2 := v3
SE v3 = n ENTAO
retorne 1
SENAO
retorne 0
FIMSE
FIMPARA
fimfuncao
inicio
leia(entrada)
leia(ultimo)
SE FIBO(j) = 1 ENTÃO
escreval (j)
FIMSE
FIMPARA
fimalgoritmo
4. Elabore um algoritmo que possua uma função que receba o total de números
e imprima os “n” primeiros termos da PA 4, 7, 10, 13, 16, 19, ... Chame a
função algumas vezes para testá-la.
algoritmo "Exercicio_Clássicos_4"
var
numero: inteiro;
var
j: inteiro;
inicio
fimfuncao
inicio
leia(numero)
SE SEQ(numero) = 1 ENTAO
escreva ("O numero ", numero, " faz parte da sequencia 4, 7, 10, 13, 16, 19")
SENAO
escreva ("O numero ", numero, " não faz parte da sequencia 4, 7, 10, 13, 16,
19")
fimse
fimalgoritmo
5. Elabore um algoritmo que possua uma função que receba como parâmetros
dois números e apresente os números palíndromos existentes entre ambos.
Chame a função algumas vezes para testá-la.
algoritmo "Exercicio_Clássicos_5"
var
numero: inteiro;
var
aux: inteiro;
reverso: inteiro;
inicio
aux := n
SE reverso = n ENTÃO
retorne 1
SENÃO
retorne 0
FIMSE
fimfuncao
inicio
SE PALINDROMO(numero) = 1 ENTAO
escreva ("O numero ", numero, " é palindromo")
SENAO
escreva ("O numero ", numero, " não é palindromo")
fimse
fimalgoritmo
REFERÊNCIAS
SCHILDT, Herbert. Linguagem C – Guia Prático. São Paulo: McGraw Hill, 1989.
WOOD, Steve. Turbo Pascal – Guia do Usuário. São Paulo: McGraw Hill, 1987.