Algoritmos e Estruturas de Dados I
– Estruturas de Controle de Fluxo
Profa. Mercedes Gonzales
Márquez
Algoritmo
Formato, adoptado pela
algoritmo sem módulos
disciplina,
Algoritmo <nome>
declarações de variáveis e constantes
Inicio
comandos
Fim
de
um
Algoritmo
Quando precisar realizar um detalhamento
progressivo (conforme aula de refinamento
sucessivos) pode-se usar o seguinte formato:
Algoritmo <semrefinam-nome>
Inicio
comandos em linguagem natural
Fim
Estruturas de controle de fluxo
Estrutura Sequencial: Execução dos comandos
em uma seqüência linear (na mesma ordem em
que foram escritas)
Estrutura Condicional : Verifica-se uma condição
lógica antes de executar um bloco de comandos.
Estrutura de Repetição: Execução de uma
seqüência de comandos repetidas vezes. O
computador abandona o fluxo natural da
execução (de cima para baixo) e volta a executar
a seqüência de ações desejada.
Estrutura Sequencial
Os comandos deverão ser executados numa sequência
linear, seguindo-se o texto em que estão escritos, de cima
para baixo.
Exemplo:
Algoritmo <exemplo1>
inteiro: a,b,c
Inicio
leia (a,b)
c ← (a + b)*b
escreva (a,b,c)
Fim
Estrutura Sequencial
1. Escreva um algoritmo que leia um número e exiba o
dobro do mesmo.
Algoritmo <semrefin-dobro>
1. leitura do número
2. calculo do dobro
3. saída de dobro
Estrutura Sequencial
1. Leitura do numero
leia (num)
2. Calculo do dobro
dobro ← 2*num
3. saída do dobro
escreva (dobro)
Estrutura Sequencial
Juntando
tudo
temos
algoritmo completo.
Algoritmo <dobro>
inteiro: num,dobro
Inicio
leia (num)
dobro ← 2*num
escreva (dobro)
Fim
o
TESTE DE MESA
num
4
dobro A memória
8
A tela
4
8
Estrutura Sequencial
2. Escreva um algoritmo que dado um número inteiro
obtenha o último algarismo desse número. Exemplo:
dado o número 7663, deve-se obter o número 3; e dado
o número 779, deve-se obter o número 9.
Algoritmo <semrefin-ultimoalgarismo>
1. leitura número inteiro
2. obtenção do ultimo algarismo
3. saída do ultimo algarismo
Estrutura Sequencial
1. Leitura do numero
leia (num)
2. Calculo do dobro
ultimo_algarismo ← MOD(num,10)
3. saída do último algarismo
escreva (ultimo_algarismo)
Estrutura Sequencial
E juntando tudo, temos:
Algoritmo <ultimo_algarismo>
inteiro: num, ultimo_alg
Inicio
leia (num)
ultimo_alg← MOD(num,10)
escreva (ultimo_alg)
Fim
TESTE DE MESA
num
487
A memória
ultimo_alg
7
A tela
487
7
Estrutura Seqüencial
3. Escreva um algoritmo que leia duas variáveis, troque o
conteúdo entre elas e exiba elas trocadas.
Algoritmo <semrefin-troca>
1. leitura números
2. troca de números
3. saída dos números trocados
Estrutura Sequencial
1. Leitura dos numeros
leia (numero1,numero2)
2. Troca dos números
aux ← numero1
numero1← numero2
numero2← aux
3. saída dos números trocados
escreva (numero1,numero2)
Estrutura Sequencial
TESTE DE MESA
A memória
Algoritmo <troca>
inteiro: numero1, numero2,aux numero1 numero2
aux
Inicio
487
56
487
leia (numero1,numero2)
56
487
aux← numero1
A
tela
numero1 ← numero2
487
56
numero2 ← aux
56
487
escreva (numero1,numero2)
Estrutura Seqüencial
4. Faça um algoritmo que dado um número inteiro que representa um núme
binário de cinco dígitos, determine o seu equivalente decimal.
Estrutura Seqüencial
4. Faça um algoritmo que dado um número inteiro que representa um núm
binário de cinco dígitos, determine o seu equivalente decimal.
Algoritmo <binario5digitos>
inteiro: binario, primeiro,segundo,terceiro,quarto,quinto,decimal
Inicio
leia (binario)
primeiro ←MOD(binario,10)
segundo ←MOD(DIV(binario,10),10)
terceiro ←MOD(DIV(binario,100),10)
quarto ←MOD(DIV(binario,1000),10)
quinto ←DIV(binario,10000)
decimal←quinto*2**4+quarto*2**3+terceiro*2**2+segundo*2
+primeiro
Fim
Estrutura Seqüencial
5. Faça um algoritmo que dado um número inteiro que representa um núm
binário de cinco dígitos, determine o seu equivalente decimal (outra
solução).
Algoritmo <binario5digitos>
inteiro: binario, primeiro,segundo,terceiro,quarto,quinto,decimal
Inicio
leia (binario)
primeiro ←MOD(binario,10)
segundo ←DIV(MOD(binario,100),10)
terceiro ←DIV(MOD(binario,1000),100)
quarto ← DIV(MOD(binario,10000),1000)
quinto ← DIV(binario,10000)
decimal←quinto*2**4+quarto*2**3+terceiro*2**2+segundo*2
+primeiro
Estrutura Sequencial
6. Faça o algoritmo para calcular qual foi a porcentagem de
desconto dada em um determinado produto, sabendose o preço original do produto e o preço que foi
cobrado por ele depois do desconto.
Estrutura Sequencial
6. Faça o algoritmo para calcular qual foi a porcentagem de
desconto dada em um determinado produto, sabendose o preço original do produto e o preço que foi
cobrado por ele depois do desconto.
Algoritmo<porcentagem>
real: pre_orig,pre_cob,porc_dscto
Inicio
leia (pre_orig,pre_cob)
porc_dscto ←((pre_orig-pre_cob)/pre_orig)*100
escreva (porc_dscto)
Fim
Estrutura Sequencial
7. Dado um número inteiro de segundos determinar o seu
valor equivalente em graus, minutos e segundos. Se a
quantidade de segundos for insuficiente para dar o
valor em graus, o valor em graus deve ser zero. A
mesma observação continua válida em relação a
minutos e segundos. Por exemplo: 3600 segundos = 1
grau, 0 minutos, 0 segundos; 3500 segundos = 0
graus, 58 minutos, 20 segundos.
Estrutura Sequencial
8.
Dado um número de 3 algarismos construir outro número de
quatro algarismos de acordo com a seguinte regra: a) os três
primeiros algarismos, contados da esquerda para a direita são
iguais aos do número dado; b) o quarto algarismo é um dígito
de controle calculado da seguinte forma: primeiro algarismo +
segundo algarismo x 3 + terceiro algarismo x 5; o dígito de
controle é igual ao resto da divisão dessa soma por 7.
Estrutura Sequencial
8.
Algoritmo<3-4algarismos>
inteiro: num, novonum,primer,segun,terc,digitocont
Inicio
leia (num)
prim ←DIV(num,100)
segun ←DIV(MOD(num,100),10)
terc ←MOD(num,10)
digitocont ←MOD(prim+segun*3+terc*5,7)
novonum ←num*10+digitocont
Fim
Estrutura Seqüencial
9. Dado um número inteiro de 3 algarismos,
inverter a ordem de seus algarismos. Os três
algarismos do número dado são diferentes de
zero.
Download

AEDI-estruturas