Algoritmos e Estruturas de Dados Estruturas de Controle














































- Slides: 46
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
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 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 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 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, 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 Entregar cesta de comida
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, 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 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 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 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 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
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 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 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 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 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 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 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 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 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 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, 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 = 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 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) § 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 ≤ 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, 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, 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 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 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 102
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 ≤ 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 é primo ou não.
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) 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) 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) 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) 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