Algoritmos e Estruturas de Dados I – Estruturas de Controle de Fluxo
Profa. Mercedes Gonzales Márquez
AlgoritmoFormato, adoptado pela disciplina, de um algoritmo sem módulos
Algoritmo <nome>declarações de variáveis e constantesInicio
comandosFim
AlgoritmoQuando precisar realizar um detalhamento progressivo (conforme aula de refinamento sucessivos) pode-se usar o seguinte formato:Algoritmo <semrefinam-nome>Inicio
comandos em linguagem naturalFim
Estruturas de controle de fluxoEstrutura 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 SequencialOs 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,cInicio
leia (a,b)c ← (a + b)*bescreva (a,b,c)
Fim
1. Escreva um algoritmo que leia um número e exiba o dobro do mesmo.Algoritmo <semrefin-dobro>
1. leitura do número2. calculo do dobro3. saída de dobro
Estrutura Sequencial
1. Leitura do numeroleia (num)
2. Calculo do dobrodobro ← 2*num
3. saída do dobroescreva (dobro)
Estrutura Sequencial
Juntando tudo temos o algoritmo completo.
Algoritmo <dobro>inteiro: num,dobroInicio
leia (num)dobro ← 2*numescreva (dobro)
Fim
Estrutura Sequencial
A memóriaA memória
A telaA tela
num dobro 4 8
48
TESTE DE MESA
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 inteiro2. obtenção do ultimo algarismo3. saída do ultimo algarismo
Estrutura Sequencial
1. Leitura do numeroleia (num)
2. Calculo do dobroultimo_algarismo ← MOD(num,10)
3. saída do último algarismoescreva (ultimo_algarismo)
Estrutura Sequencial
E juntando tudo, temos:Algoritmo <ultimo_algarismo>inteiro: num, ultimo_algInicio
leia (num)ultimo_alg← MOD(num,10)escreva (ultimo_alg)
Fim
Estrutura Sequencial
A memóriaA memória
A telaA tela
num ultimo_alg
487
7 487 7
TESTE DE MESA
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úmeros2. troca de números3. saída dos números trocados
Estrutura Seqüencial
1. Leitura dos numerosleia (numero1,numero2)
2. Troca dos númerosaux ← numero1numero1← numero2numero2← aux
3. saída dos números trocadosescreva (numero1,numero2)
Estrutura Sequencial
Algoritmo <troca>inteiro: numero1, numero2,auxInicio
leia (numero1,numero2)aux← numero1numero1 ← numero2numero2 ← auxescreva (numero1,numero2)
Fim
Estrutura Sequencial
A memóriaA memória
A telaA tela
numero1
numero2
aux
487 56 487 56 487
487 56 56 487
TESTE DE MESA
4. Faça um algoritmo que dado um número inteiro que representa um número 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úmero binário de cinco dígitos, determine o seu equivalente decimal.Algoritmo <binario5digitos>inteiro: binario, primeiro,segundo,terceiro,quarto,quinto,decimalInicio
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
+primeiroFim
Estrutura Seqüencial
5. Faça um algoritmo que dado um número inteiro que representa um número binário de cinco dígitos, determine o seu equivalente decimal (outra solução).Algoritmo <binario5digitos>inteiro: binario, primeiro,segundo,terceiro,quarto,quinto,decimalInicio
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
+primeiroFim
Estrutura Seqüencial
6. Faça o algoritmo para calcular qual foi a porcentagem de desconto dada em um determinado produto, sabendo-se 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, sabendo-se 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_dsctoInicio
leia (pre_orig,pre_cob)porc_dscto ←((pre_orig-pre_cob)/pre_orig)*100escreva (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,digitocontInicio
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 Sequencial
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.
Estrutura Seqüencial