Algoritmos e Estruturas de Dados I – Estruturas de Controle de Fluxo Profa. Mercedes Gonzales...

Post on 07-Apr-2016

220 views 0 download

Transcript of Algoritmos e Estruturas de Dados I – Estruturas de Controle de Fluxo Profa. Mercedes Gonzales...

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