Algoritmos e Estruturas de Dados I Estruturas de

  • Slides: 26
Download presentation
Algoritmos e Estruturas de Dados I – Estruturas de Controle de Fluxo Profa. Mercedes

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

Algoritmo Um algoritmo é formado por comandos, que determinam as ações a serem executadas

Algoritmo Um algoritmo é formado por comandos, que determinam as ações a serem executadas para resolver um certo problema. Estes comandos são organizados em estruturas de controle de fluxo (ECF). ECF determinam a ordem dos comandos e especificam, em uma dada condição, quais destes devem ser executados e se devem ser repetidos.

Algoritmo Estas estruturas de controle de fluxo são: Sequencial, Condicional e de Repetição.

Algoritmo Estas estruturas de controle de fluxo são: Sequencial, Condicional e de Repetição.

Estruturas de controle de fluxo Estrutura Sequencial: Execução dos comandos em uma sequência linear

Estruturas de controle de fluxo Estrutura Sequencial: Execução dos comandos em uma sequência linear (na mesma ordem em que foram escritas). Exemplo: Algoritmo <Sequencial> inteiro: idade literal: nome Início escreva “Informe seu nome: “ leia (nome) escreva “Informe sua idade: “ leia (idade) escreva “Você se chama”, nome, “e possui”, idade, “anos!”

Estruturas de controle de fluxo Estrutura Condicional : É utilizada quando há uma condição

Estruturas de controle de fluxo Estrutura Condicional : É utilizada quando há uma condição lógica que desviará o fluxo do algoritmo para um diferente bloco de comandos, dependendo da condição ser verdadeira ou falsa. Exemplo: se (A > B) então escreva “A é maior” senão escreva “O B é maior ou são iguais”

Estruturas de controle de fluxo Estrutura de Repetição: Execução de uma sequência de comandos

Estruturas de controle de fluxo Estrutura de Repetição: Execução de uma sequência de comandos repetidas vezes. O computador abandona o fluxo natural da execução (de cima para baixo) e volta a executar a sequência de ações desejada. Exemplo: M← 1 enquanto (M < 10) faça A←B M←M+1 Fim enquanto

Algoritmo Adotamos o seguinte formato para um algoritmo sem módulos Algoritmo <nome> declarações de

Algoritmo Adotamos o seguinte formato para um algoritmo sem módulos Algoritmo <nome> declarações de variáveis e constantes Inicio comandos Fim

Estrutura Sequencial Os comandos deverão ser executados numa sequência linear, seguindo-se o texto em

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 <exemplo 1> inteiro: a, b, c Inicio leia (a, b) c ← a*b escreva (a, b, c) Fim

Estrutura Sequencial 1. Escreva um algoritmo que leia um número e exiba o dobro

Estrutura Sequencial 1. Escreva um algoritmo que leia um número e exiba o dobro do mesmo. ANALISE Deve-se obter um dado que é um número, em seguida calcular seu dobro e, finalmente, fornecer o valor de saída, que é o resultado da operação efetuada. A estrutura do algoritmo é, portanto sequencial: leitura do número calculo do dobro saída de dobro

Estrutura Sequencial A obtenção do dado consiste no armazenamento dele em uma localização de

Estrutura Sequencial A obtenção do dado consiste no armazenamento dele em uma localização de memória do computador. As localizações da memória identificadas por nomes são chamadas variáveis. ENTRADA: No nosso problema a entrada consiste de apenas um dado que é um número inteiro. A variável que conterá este número chamaremos de num. PROCESSAMENTO : O dobro de num será representado por 2*num e será armazenada na variável dobro. SAIDA : O saída consistirá em escrever o conteúdo da variável dobro.

Estrutura Sequencial O fornecimento de um valor à variável num é indicado pelo comando

Estrutura Sequencial O fornecimento de um valor à variável num é indicado pelo comando leia (num) A atribuição de um valor a uma variável é indicada pelo símbolo ← dobro ← 2*num Finalmente, para representar a saída de informações, utiliza-se o comando de saída escreva (dobro)

Estrutura Sequencial TESTE DE MESA A memória Esses comandos escritos sequencialmente, nessa ordem, descrevem

Estrutura Sequencial TESTE DE MESA A memória Esses comandos escritos sequencialmente, nessa ordem, descrevem o algoritmo de resolução do problema dado. Algoritmo <dobro> inteiro: num, dobro Inicio leia (num) dobro ← 2*num escreva (dobro) Fim num dobro 4 8 A tela 4 8

Estrutura Sequencial 2. Escreva um algoritmo que dado um número inteiro obtenha o último

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. ANALISE: Ao escrever um número inteiro no sistema de numeração decimal (base 10), o último algarismo da direita representa as unidades porque, após o primeiro agrupamento em grupos de 10 a quantidade de unidades que sobra é representada pelo último algarismo da direita. Portanto, o resto da divisão do número dado por 10, dará o resultado desejado

TESTE DE MESA Estrutura Sequencial A memória Algoritmo <ultimo_algarismo> inteiro: num, ultimo_alg Inicio leia

TESTE DE MESA Estrutura Sequencial A memória Algoritmo <ultimo_algarismo> inteiro: num, ultimo_alg Inicio leia (num) A tela ultimo_alg← MOD(num, 10) escreva (ultimo_alg) Fim num 487 7 ultimo_alg 7

Estrutura Sequencial 3. Escreva um algoritmo que leia duas variáveis, troque o conteúdo entre

Estrutura Sequencial 3. Escreva um algoritmo que leia duas variáveis, troque o conteúdo entre elas e exiba elas trocadas. ANÁLISE : Para trocar o conteúdo de duas variáveis devese guardar o valor da primeira em uma variável auxiliar, depois atribuir o valor da segunda variável para a primeira e então fazer com que a segunda variável fique com o valor da variável auxiliar. ENTRADA: numero 1 e numero 2 PROCESSAMENTO: O valor de numero 1 será guardada na variável aux, o valor de numero 2 será guardada na variável numero 1 e finalmente o valor de aux será guardada na variável numero 2. SAIDA: numero 1 e numero 2

Estrutura Sequencial Algoritmo <troca> inteiro: numero 1, numero 2, aux Inicio leia (numero 1,

Estrutura Sequencial Algoritmo <troca> inteiro: numero 1, numero 2, aux Inicio leia (numero 1, numero 2) aux← numero 1 ← numero 2 ← aux escreva (numero 1, numero 2) Fim

Estrutura Sequencial 4. Escreva um algoritmo que calcule e exiba a média ponderada de

Estrutura Sequencial 4. Escreva um algoritmo que calcule e exiba a média ponderada de duas notas. As notas e os pesos deverão ser lidos. 5. Faça um algoritmo que dadas duas frações ordinárias a/b e c/d, determinar a sua soma e o seu produto (ambas como frações). 6. Faça um algoritmo que dados o primeiro termo e a razão de uma progressão aritmética, determine a soma dos seus primeiros cinco termos.

Estrutura Sequencial 7. Faça um algoritmo que dado um número inteiro que representa um

Estrutura Sequencial 7. 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 <binario 5 digitos> inteiro: binario, primeiro, segundo, terceiro, quarto, quinto, decimal Inicio leia (binario) primeiro ←DIV(binario, 10000) segundo ←MOD(DIV(binario, 1000), 10) terceiro ←MOD(DIV(binario, 100), 10) quarto ←MOD(DIV(binario, 10) quinto ←MOD(binario, 10) decimal←primeiro*2**4+segundo*2**3+terceiro*2**2+quarto*2 +quinto

Estrutura Sequencial 7. (outra solução). Algoritmo <binario 5 digitos> inteiro: binario, primeiro, segundo, terceiro,

Estrutura Sequencial 7. (outra solução). Algoritmo <binario 5 digitos> inteiro: binario, primeiro, segundo, terceiro, quarto, quinto, decimal Inicio leia (binario) primeiro ←DIV(binario, 10000) segundo ←DIV(MOD(binario, 10000), 1000) terceiro ←DIV(MOD(binario, 1000), 100) quarto ←DIV(MOD(binario, 100), 10) quinto ←MOD(binario, 10) decimal←primeiro*2**4+segundo*2**3+terceiro*2**2+quarto*2 +quinto Fim

Estrutura Sequencial 8. Dado um número inteiro de 3 algarismos, inverter a ordem de

Estrutura Sequencial 8. 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 Sequencial

Estrutura Sequencial

Estrutura Sequencial Algoritmo<3 -4 algarismos> inteiro: num, novonum, primer, segun, terc, digitocont Inicio leia

Estrutura Sequencial Algoritmo<3 -4 algarismos> 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 Sequencial 10. Faça o algoritmo para calcular qual foi a porcentagem de desconto

Estrutura Sequencial 10. 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_dscto Inicio leia (pre_orig, pre_cob) porc_dscto ←((pre_orig-pre_cob)/pre_orig)*100 escreva (porc_dscto) Fim

Estrutura Sequencial 11. Para se obter uma indicação da taxa atual de inflação, gostaríamos

Estrutura Sequencial 11. Para se obter uma indicação da taxa atual de inflação, gostaríamos de comparar o preço pago hoje por um artigo com o preço pago pelo mesmo artigo no mês anterior. Faça um algoritmo que lê uma pequena descrição do produto comprado, seu preço atual e seu preço no mês anterior. O algoritmo deve calcular a diferença algébrica e a diferença percentual entre os preços, e deve também exibir a seguinte frase: O produto ____ está R$ _____ mais caro, o que corresponde a um aumento de _____ %.

Estrutura Sequencial Algoritmo <inflacao> literal: nome_produto real: pre_atual, pre_mes_ant, dif_alg, dif_perc Inicio leia (nome_produto,

Estrutura Sequencial Algoritmo <inflacao> literal: nome_produto real: pre_atual, pre_mes_ant, dif_alg, dif_perc Inicio leia (nome_produto, pre_atual, pre_mes_ant) dif_alg ←pre_atual-pre_mes_ant dif_perc ←(dif_alg/pre_mes_ant)*100 escreva (“O produto”, nome_produto, ”está R$”, dif_alg, ”mais caro, o que corresponde a um aumento de”, dif_perc, ”%”) Fim

Estrutura Sequencial 12. Dado um número inteiro de segundos determinar o seu valor equivalente

Estrutura Sequencial 12. 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.