1 / 46

Algoritmos e Estruturas de Dados

Prof. Me. Claudio Benossi claudio@beno.com.br. Algoritmos e Estruturas de Dados. Estruturas de Controle. Sumário. Estrutura Condicional Estrutura de Repetição. Sumário. Estrutura Condicional Estrutura de Repetição. Estrutura Condicional. Execução seqüencial :

lucio
Download Presentation

Algoritmos e Estruturas de Dados

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Sumário • Estrutura Condicional • Estrutura de Repetição

  3. Sumário • Estrutura Condicional • Estrutura de Repetição

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

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

  6. Estrutura Condicional • Simples • Composta • Múltipla escolha

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

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

  9. Estrutura Condicional Simples • Exemplo: // declaração de variáveis: real N1, N2, NF, media // início do programa: ler(N1,N2,NF) media ← (N1 + N2 + NF) / 3.0 se(media ≥ 5.0)então escrever(“Aluno aprovado”) fim se fim programa

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

  11. Estrutura Condicional Composta • 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ção1> senão <ação2> fim se

  12. Estrutura Condicional Composta • Exemplo: // declaração de variáveis: real N1, N2, NF, media // início do programa: ler(N1,N2,NF) media ← (N1 + N2 + NF) / 3.0 se(media ≥ 5.0)então escrever("Aluno aprovado") senão escrever("Aluno reprovado") fim se fim programa

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

  14. Estrutura Condicional de Múltipla Escolha • Utilizada quando um conjunto de valores discretos e ações diferentes são associadas a cada um desses valores. switch<variável>caso x1: <ação1> caso x2: <ação2> caso x3: <ação3> ... default <ação default> fim switch se<cond_01>então <ação1> senão se<cond_02> então <ação2> senão se<cond_03> então <ação3> .... senão <ação default> fim se

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

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

  17. Sumário • Estrutura Condicional • Estrutura de Repetição

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

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

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

  21. Estrutura de Repetição por Condição:: Verificação no início • Exemplo: • 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 ...

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

  23. Estrutura de Repetição por Condição:: Verificação no fim • Exemplo: • 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 ...

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

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

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

  27. Estrutura de Repetição por Contagem • Exemplo: • 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 ...

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

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

  30. Exemplo 1 • 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. • A fórmula é • Elabore um algoritmo que leia o peso e a altura de um adulto e mostre sua condição.

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

  32. Exemplo 1 – Algoritmo verifica validade dos valores inseridos calcula IMC verifica posição na tabela 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ãose (imc ≤ 25) então escrever("Peso normal") senãose (imc ≤ 30) então escrever("Acima do peso") senão escrever("Obeso") fim se fim se fim programa

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

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

  35. Exemplo 2 – Algoritmo condições iniciais • 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 • fimfazer • escrever(ano) • fim programa

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

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

  38. Exemplo 3 – Algoritmos termo geral termo geral • início // Contagem • float i • float soma = 0 • para ((i = 1); (i ≤ 10); (incremento = 1)) • soma = soma + (-1)^(i+1)*(i)/(i*i) • fimpara • escrever(soma) • fimprograma • 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 • fimfazer • escrever(soma) • fim programa

  39. 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 • 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?

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

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

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

  43. Exemplo 5 – Algoritmo:: Refinamento 2 verifica validade dos valores inseridos testa divisibilidade determina primalidade de acordo com o resto • 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 = div + 1 • fim fazer • se (resto ≠ 0) então • escrever("É primo") • senão • escrever("Não é primo") • fim se • fim se • fim programa

  44. Exemplo 5 – Algoritmo:: Refinamento 3 verifica validade dos valores inseridos 0 e 1 não são primos testa divisibilidade determina primalidade de acordo com o resto • 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 = div + 1 • fim fazer • se (resto ≠ 0) então • escrever("É primo") • senão • escrever("Não é primo") • fim se • fim se • fim programa

  45. Exemplo 5 – Algoritmo:: Refinamento 4 verifica validade dos valores inseridos 0 e 1 não são primos testa divisibilidade determina primalidade de acordo com o resto 2, 3 e 5 são primos, mas não passariam no teste • 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 se ((num == 2) OU (num == 3) OU (num == 5)) então • escrever("É primo") • senão • div = 2 • enquanto ((div < num/2) AND (resto ≠ 0)) fazer • resto = num % div • div = div + 1 • fim fazer • se (resto ≠ 0) então • escrever("É primo") • senão • escrever("Não é primo") • fim se • fim se • fim programa

  46. Questões

More Related