460 likes | 666 Views
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 :
E N D
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: 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
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
Estrutura Condicional • Simples • Composta • Múltipla escolha
Estrutura Condicional Simples início olhar o céu F escuro? V acender luz fim
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
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
Estrutura Condicional Composta início olhar a vovó nariz grande? F V Chamar caçador Entregar cesta de comida fim
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
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
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
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
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
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
Sumário • Estrutura Condicional • Estrutura de Repetição
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.
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
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
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 ...
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
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 ...
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
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
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.
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 ...
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.
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
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.
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
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
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.
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
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
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.
Exemplo 3 – Termo geral 1 12 22 32 42 52 62 102 Termo geral:
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
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?
Exemplo 5 • Construa um algoritmo que verifique se um número fornecido pelo usuário é primo ou não.
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.
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
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
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
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