Algoritmos e Estruturas de Dados Estruturas de Controle

  • Slides: 46
Download presentation
Algoritmos e Estruturas de Dados Estruturas de Controle Prof. Me. Claudio Benossi claudio@beno. com.

Algoritmos e Estruturas de Dados Estruturas de Controle Prof. Me. Claudio Benossi claudio@beno. com. br

Sumário v Estrutura Condicional v Estrutura de Repetição

Sumário v Estrutura Condicional v Estrutura de Repetição

Sumário v Estrutura Condicional v Estrutura de Repetição

Sumário v Estrutura Condicional v Estrutura de Repetição

Estrutura Condicional v Execução seqüencial: início Cada comando é executado seqüencialmente, na ordem em

Estrutura Condicional v Execução seqüencial: início Cada comando é executado seqüencialmente, na ordem em que são escritos. separar ingredientes misturar ingredientes colocar massa no forno tirar bolo do forno fim

Estrutura Condicional v Execução seletiva ou condicional: início olhar o céu Permite a escolha

Estrutura Condicional v Execução seletiva ou condicional: início olhar o céu Permite a escolha de um grupo de ações (bloco), quando certas condições são (ou não são) satisfeitas. chuva? F V levar guardachuva fim usar roupa leve

Estrutura Condicional v Simples v Composta v Múltipla escolha

Estrutura Condicional v Simples v Composta v Múltipla escolha

Estrutura Condicional Simples início olhar o céu escuro? V acender luz fim F

Estrutura Condicional Simples início olhar o céu escuro? V acender luz fim F

Estrutura Condicional Simples v Utilizada quando precisamos testar uma certa condição antes de executar

Estrutura Condicional Simples v Utilizada quando precisamos testar uma certa condição antes de executar uma ação. se <condição> então <ação> fim se

Estrutura Condicional Simples v Exemplo: // declaração de variáveis: real N 1, N 2,

Estrutura Condicional Simples v Exemplo: // declaração de variáveis: real N 1, N 2, NF, media // início do programa: ler(N 1, N 2, NF) media ← (N 1 + N 2 + NF) / 3. 0 se (media ≥ 5. 0) então escrever(“Aluno aprovado”) fim se fim programa

Estrutura Condicional Composta início olhar a vovó nariz grande? F V Chamar caçador fim

Estrutura Condicional Composta início olhar a vovó nariz grande? F V Chamar caçador fim Entregar cesta de comida

Estrutura Condicional Composta v Utilizada em situações em que duas alternativas dependem da mesma

Estrutura Condicional Composta v Utilizada em situações em que duas alternativas dependem da mesma condição, uma da condição verdadeira (então) e a outra da condição falsa (senão). se <condição> então <ação 1> senão <ação 2> fim se

Estrutura Condicional Composta v Exemplo: // declaração de variáveis: real N 1, N 2,

Estrutura Condicional Composta v Exemplo: // declaração de variáveis: real N 1, N 2, NF, media // início do programa: ler(N 1, N 2, NF) media ← (N 1 + N 2 + NF) / 3. 0 se (media ≥ 5. 0) então escrever("Aluno aprovado") senão escrever("Aluno reprovado") fim se fim programa

Estrutura Condicional de Múltipla Escolha início ler signo áries? V Ganhará na loteria F

Estrutura Condicional de Múltipla Escolha início ler signo áries? V Ganhará na loteria F touro? V Não saia de casa hoje! F gêmeos? F fim V Sorte no amor

Estrutura Condicional de Múltipla Escolha v Utilizada quando um conjunto de valores discretos e

Estrutura Condicional de Múltipla Escolha v Utilizada quando um conjunto de valores discretos e ações diferentes são associadas a cada um desses valores. se <cond_01> então <ação 1> senão se <cond_02> então <ação 2> senão se <cond_03> então <ação 3>. . senão <ação default> fim se switch <variável> caso x 1: <ação 1> caso x 2: <ação 2> caso x 3: <ação 3>. . . default <ação default> fim switch

Estrutura Condicional de Múltipla Escolha v O comando switch-case testa apenas igualdade v A

Estrutura Condicional de Múltipla Escolha v O comando switch-case testa apenas igualdade v A corrente if-esle-if pode avaliar uma expressão de relação ou lógica

Estrutura Condicional de Múltipla Escolha v Exemplo: Dado a variável inteira mês, determinar o

Estrutura Condicional de Múltipla Escolha v Exemplo: Dado a variável inteira mês, determinar o número de dias ao mês correspondente. switch (mês) caso 1: dias = caso 2: dias = caso 3: dias = caso 4: dias = caso 5: dias = caso 6: dias =. . default: dias = fim switch 31 28 31 30 0

Sumário v Estrutura Condicional v Estrutura de Repetição

Sumário v Estrutura Condicional v Estrutura de Repetição

Estruturas de Repetição v Permitem que uma seqüência de comandos seja executada repetidamente, até

Estruturas de Repetição v Permitem que uma seqüência de comandos seja executada repetidamente, até que determinada condição de interrupção seja satisfeita. v São também conhecidas como laços ou malhas. v Cada repetição do conjunto de comandos é chamada iteração.

Estruturas de Repetição v A repetição de comandos em um laço pode seguir um

Estruturas de Repetição v A repetição de comandos em um laço pode seguir um dos seguintes critérios: w Por Condição (Verificação no início) w Por Condição (Verificação no fim) w Por Contagem

Estrutura de Repetição por Condição : : Verificação no início v Permite que comandos

Estrutura de Repetição por Condição : : Verificação no início v Permite que comandos sejam repetidos enquanto uma condição não é atendida. enquanto (<condição>) fazer <ações> fim fazer

Estrutura de Repetição por Condição : : Verificação no início v Exemplo: w Dado

Estrutura de Repetição por Condição : : Verificação no início v Exemplo: w Dado o valor de N, calcular a soma dos números inteiros de 1 a N. . soma = 0 i = 1 enquanto (i ≤ N) fazer soma = soma + i i = i + 1 fim fazer. . .

Estrutura de Repetição por Condição : : Verificação no fim v Permite que comandos

Estrutura de Repetição por Condição : : Verificação no fim v Permite que comandos sejam repetidos até que uma condição seja atendida. fazer <ações> enquanto <condição> fim fazer

Estrutura de Repetição por Condição : : Verificação no fim v Exemplo: w Dado

Estrutura de Repetição por Condição : : Verificação no fim v Exemplo: w Dado o valor de N, calcular a soma dos números inteiros de 1 a N. . s = 0 i = 1 fazer s = s + i i = i + 1 enquanto (i ≤ N) fim fazer. . .

Estrutura de Repetição por Condição : : Verificação no fim × Verificação no início

Estrutura de Repetição por Condição : : Verificação no fim × Verificação no início v. Verificação no início w. Condição é verificada antes do conjunto de instruções v. Verificação no fim w. O conjunto de instruções será executado pelo menos uma vez w. Condição é verificada depois do conjunto de instruções

Estrutura de Repetição por Contagem v Permite que comandos sejam repetidos um determinado número

Estrutura de Repetição por Contagem v Permite que comandos sejam repetidos um determinado número de vezes. para (início; fim; incremento) <ações> fim para

Estrutura de Repetição por Contagem v início: define qual a variável de controle da

Estrutura de Repetição por Contagem v início: define qual a variável de controle da malha (contador) e seu valor inicial. v fim: define o valor final da variável de controle. v incremento: define como a variável de controle se altera a cada repetição.

Estrutura de Repetição por Contagem v Exemplo: w Dado o valor de N, calcular

Estrutura de Repetição por Contagem v Exemplo: w Dado o valor de N, calcular a soma dos números inteiros de 1 a N. . soma = 0 para (i=1; N; incremento=1) soma = soma + i fim para. . .

Estruturas de Repetição : : Considerações finais v Número de repetições pode ser indeterminado,

Estruturas de Repetição : : Considerações finais v Número de repetições pode ser indeterminado, mas não deve ser infinito (loop). v As formas de laços de repetição são equivalentes entre si. v A escolha entre uma e outra é arbitrária.

Estruturas de Repetição : : Considerações finais Repetição por condição s = 0 i

Estruturas de Repetição : : Considerações finais Repetição por condição s = 0 i = 1 enquanto (i ≤ N) fazer s = s + i i = i + 1 fim fazer atribuição-1 enquanto (condição) fazer instruções atribuição-2 fim fazer Repetição por contagem s = 0 para (i=1; N; incremento=1) s = s + i fim para (atribuição-1; condição; atribuição-2) instruções fim para

Exemplo 1 v O IMC (Índice de Massa Corporal) é um critério da Organização

Exemplo 1 v O IMC (Índice de Massa Corporal) é um critério da Organização Mundial da saúde para dar uma indicação sobre a condição de peso de uma pessoa adulta. v A fórmula é v Elabore um algoritmo que leia o peso e a altura de um adulto e mostre sua condição. IMC em adultos Condição abaixo de 18, 5 abaixo do peso entre 18, 5 e 25 peso normal entre 25 e 30 acima do peso acima de 30 obeso

Exemplo 1 – Esboço v Variáveis: w Entrada: peso, altura § Tipo: real (float)

Exemplo 1 – Esboço v Variáveis: w Entrada: peso, altura § Tipo: real (float) § Intervalo: maior que zero w Saída: IMC § Tipo: real v Comandos: w Ler variáveis de entrada w Checar validade das variáveis de entrada w Calcular IMC w Determinar condição

Exemplo 1 – Algoritmo início float peso, altura, imc ler(peso, altura) se ((peso ≤

Exemplo 1 – Algoritmo início float peso, altura, imc ler(peso, altura) se ((peso ≤ 0) OU (altura ≤ 0)) então escrever("Valores Inválidos") senão imc = peso / (altura * altura) se (imc ≤ 18, 5) então escrever("Abaixo do peso") senão se (imc ≤ 25) então escrever("Peso normal") senão se (imc ≤ 30) então escrever("Acima do peso") senão escrever("Obeso") fim se fim programa verifica validade dos valores inseridos calcula IMC verifica posição na tabela

Exemplo 2 v Anacleto tem 1, 50 m e cresce 2 cm por ano,

Exemplo 2 v Anacleto tem 1, 50 m e cresce 2 cm por ano, enquanto Felisberto tem 1, 10 m e cresce 3 cm por ano. v Construa um algoritmo que calcule e imprima quantos anos serão necessários para que Felisberto seja maior que Anacleto.

Exemplo 2 – Esboço v Crescimento da Anacleto: w Altura inicial: alt_a = 1,

Exemplo 2 – Esboço v Crescimento da Anacleto: w Altura inicial: alt_a = 1, 5 w Altura após cada ano: alt_a = alt_a + 0, 02 v Crescimento de Felisberto: w Altura inicial: alt_f = 1, 1 w Altura após cada ano: alt_f = alt_f + 0, 03 v Condição de parada: alt_f > alt_a

Exemplo 2 – Algoritmo início inteiro ano = 0 float alt_a = 1, 5

Exemplo 2 – Algoritmo início inteiro ano = 0 float alt_a = 1, 5 float alt_f = 1, 1 enquanto (alt_a > alt_f) fazer alt_a = alt_a + 0, 02 alt_f = alt_f + 0, 03 ano = ano + 1 fim fazer escrever(ano) fim programa condições iniciais

Exemplo 3 v Apresente dois algoritmos para calcular o valor da seguinte soma. w

Exemplo 3 v Apresente dois algoritmos para calcular o valor da seguinte soma. w Estrutura de repetição por condição. w Estrutura de repetição por contagem.

Exemplo 3 – Termo geral 1 12 22 32 Termo geral: 42 52 62

Exemplo 3 – Termo geral 1 12 22 32 Termo geral: 42 52 62 102

Exemplo 3 – Algoritmos início // Contagem float i float soma = 0 para

Exemplo 3 – Algoritmos início // Contagem float i float soma = 0 para ((i = 1); (i ≤ 10); (incremento = 1)) soma = soma + (-1)^(i+1)*(i)/(i*i) fim para escrever(soma) fim programa início // Condição float soma, i soma = 0 i=1 enquanto (i ≤ 10) fazer soma = soma + (-1)^(i+1)*(i)/(i*i) i=i+1 fim fazer escrever(soma) fim programa termo geral

Exemplo 4 início inteiros: A, B, i, j ler(A) fazer para (i=1; i ≤

Exemplo 4 início inteiros: A, B, i, j ler(A) fazer para (i=1; i ≤ A; incremento=1) j = i enquanto (j ≤ A) fazer escrever(j) j = j + 1 fim fazer fim para B = A ler(A) enquanto ((A ≠ B) AND (A > 0)) fim fazer fim v v O que será mostrado se inserirmos 4 e 0? O que será mostrado se inserirmos 3, 2 e 2? O que será mostrado se inserirmos 2, 1 e 0? O que será mostrado se inserirmos 1 e 0?

Exemplo 5 v Construa um algoritmo que verifique se um número fornecido pelo usuário

Exemplo 5 v Construa um algoritmo que verifique se um número fornecido pelo usuário é primo ou não.

Exemplo 5 – Esboço v O que é um número primo? w (divisível por

Exemplo 5 – Esboço v O que é um número primo? w (divisível por ele mesmo) E (divisível por 1) w Zero e Um não são primos v Se A é divisível por B, então (A % B = 0) v Checar divisibilidade entre número em teste e divisores. v Repetir teste, incrementando-se o divisor a partir de 2. v Se um dos resto for zero, não há necessidade de testar novos divisores número em teste é primo. v Não há necessidade de testar divisores maiores que a metade do número em teste.

Exemplo 5 – Algoritmo : : Refinamento 1 início inteiro num, div, resto ler(num)

Exemplo 5 – Algoritmo : : Refinamento 1 início inteiro num, div, resto ler(num) div = 2 enquanto ((div < num/2) AND (resto ≠ 0)) fazer resto = num % div = div + 1 fim fazer se (resto ≠ 0) então escrever("É primo") senão escrever("Não é primo") fim se fim programa testa divisibilidade determina primalidade de acordo com o resto

Exemplo 5 – Algoritmo : : Refinamento 2 início inteiro num, div, resto ler(num)

Exemplo 5 – Algoritmo : : Refinamento 2 início inteiro num, div, resto ler(num) se (num < 0) então escrever("Valor Inválido") senão div = 2 enquanto ((div < num/2) AND (resto ≠ 0)) fazer resto = num % div = div + 1 fim fazer se (resto ≠ 0) então escrever("É primo") senão escrever("Não é primo") fim se fim programa verifica validade dos valores inseridos testa divisibilidade determina primalidade de acordo com o resto

Exemplo 5 – Algoritmo : : Refinamento 3 início inteiro num, div, resto ler(num)

Exemplo 5 – Algoritmo : : Refinamento 3 início inteiro num, div, resto ler(num) se (num < 0) então escrever("Valor Inválido") senão se ((num == 1) OU (num == 0)) então escrever("Não é primo") senão div = 2 enquanto ((div < num/2) AND (resto ≠ 0)) fazer resto = num % div = div + 1 fim fazer se (resto ≠ 0) então escrever("É primo") senão escrever("Não é primo") fim se fim programa verifica validade dos valores inseridos 0 e 1 não são primos testa divisibilidade determina primalidade de acordo com o resto

Exemplo 5 – Algoritmo : : Refinamento 4 início inteiro num, div, resto ler(num)

Exemplo 5 – Algoritmo : : Refinamento 4 início inteiro num, div, resto ler(num) verifica validade se (num < 0) então dos valores escrever("Valor Inválido") inseridos senão 0 e 1 não se ((num == 1) OU (num == 0)) então primos escrever("Não é primo") senão se ((num == 2) OU (num == 3) OU (num == 5)) então 2, 3 e 5 são primos, mas não passariam escrever("É primo") no teste senão testa div = 2 divisibilidade enquanto ((div < num/2) AND (resto ≠ 0)) fazer resto = num % div = div + 1 fim fazer se (resto ≠ 0) então determina escrever("É primo") primalidade de senão acordo com o resto escrever("Não é primo") fim se fim programa

Questões

Questões