Prévia do material em texto
CCF 110 ALGORITMO E ESTRUTURA ALGORITMO E ESTRUTURA DE DADOS IDE DADOS I Universidade Federal de Itajubá Prof. Roberto Affonso da Costa Junior AULA 06 – 1/2AULA 06 – 1/2 ➢Estruturas de Repetição ➢Definição ➢Estrutura de Repetição Enquanto faça ➢Estrutura de Repetição Para faça ➢Exemplos RepetiçãoRepetição ● Esta estrutura é utilizada quando determi-nada parte do programa precisa ser repetida; ● Existem 2 tipos de repetição: – Repetições não definidas – Repetições definidas Repetições DefinidasRepetições Definidas ● Este tipo de repetição é utilizado quando sabe-se à priori quantas vezes uma determi-nada ação vai ser repetida no programa. ● Exemplos: – Dê 5 voltas no campo de futebol afim de se exercitar; – Leia 10 números inteiros; ● No primeiro exemplo, a ação compreende uma volta no campo de futebol; portanto, ela foi repetida 5 vezes; informação esta bem clara no enunciado; ● No segundo exemplo, a ação compreende a leitura de 1 número; portanto, como 10 números deverão ser lidos, define-se aí a repetição previamente conhecida de 10 vezes; Repetições Não definidasRepetições Não definidas ● Neste tipo de repetição, a quantidade de vezes que a ação é repetida, não é conheci-da à priori; ● Exemplo: – Dê voltas no campo de futebol afim de se exercitar, mas quando se cansar, pare; – Leia números inteiros até achar o número -1 ● No primeiro exemplo, a ação continua até que uma condição ocorra; ou seja, enquanto a condição pré estabelecida não ocorrer, a ação continua sendo repetida; no exemplo, a condição estabelecida é o cansaço, ou seja, quando este ocorrer a ação ( no caso, as voltas no campo de futebol ) termina; ● No segundo exemplo o mesmo ocorre, ou seja, a condição estabelecida é encontrar o numero -1; ou seja, números vão sendo lidos até que a condição ocorra; RepetiçõesRepetições ● Repetição definida: para faça ● Repetição não definida: enquanto faça repita enquanto 9 Repetição não definidaRepetição não definida Estrutura de Repetição: Enquanto-Faça Na estrutura Enquanto-Faça as instruções a serem repetidas podem não ser executadas nenhuma vez, pois o teste fica no início da repetição, então a execução das instruções (que estão "dentro" da repetição) depende do teste. Nesta estrutura, a repetição é finalizada quando o teste é Falso (F), ou seja, enquanto o teste for Verdadeiro as instruções serão executadas e, quando for Falso, o laço é finalizado. Portugol enquanto <condição> faça bloco de comandos fim-enquanto <condição> bloco de comandos F V • Neste caso, a estrutura de repetição precisa ter : 1.- uma variável de controle com um valor inicial; 2.- atualização da variável de controle; 3.- forma de terminar o ciclo de repetição; ● Caso estas condições não ocorram, o programa: 1 não tem como entrar no ciclo de repetição pois não tem valor definido para a variável que compõem a condição, ou seja, de controle; 2 não tem como terminar o ciclo repetitivo pois não há variação da variável de controle durante este ciclo; ● Modo de operação: – Antes de executar o procedimento, a condição é verificada; – Enquanto a condição for verdadeira a repetição é continuada; – Quando a condição for falsa, o ciclo de repetição é terminado; Exemplo 1Exemplo 1 1. a ← 10 2. enquanto ( a < 15 ) faça 3. imprima ( “a = “ , a ) 4. a ← a + 1 5. fim_enquanto Observação: a numeração das linhas é utilizada apenas para a explanação do algoritmo a < 15 a ← 10 F V “a = “, a ● Neste exemplo, tem-se: – Variável de controle da repetição: a – Valor inicial da variável de controle: 10 – Variação da variável de controle: + 1 – Condição de término da repetição: a ≥ 15 ● O que aconteceria se a declaração da linha 1 não existisse? ● Idem, para a linha 4 Exemplo 2Exemplo 2 1. leia ( a ) 2. enquanto ( a <> 999 ) faça 3. imprima ( “a = “ , a ) 4. leia ( a ) 5. fim_enquanto a <> 999 F V “a = “, a a a ● O que difere este programa do anterior? ● Qual é a função das declarações nas linhas 1 e 4? ● Utilização do flag Exemplo 3Exemplo 3 ● Calcular a média aritmética dos n primeiros números inteiros. Algoritmo para o cálculo da média aritmética dos n primeiros números inteiros 1) definição das variáveis inteiros n, q_numeros, numero, soma_numeros real media inicio 2) iniciando as variáveis q_numeros ← 0 soma_numeros ← 0 numero ← 1 3) entrada dos dados imprima ( “entre com a quantidade de numeros “ ) leia ( n ) 4) calculando a soma dos números enquanto ( q_numeros < n ) faça soma_numeros ← soma_numeros + numero numero ← numero + 1 q_numeros ← q_numeros + 1 fim_enquanto 5) calculando a média aritmética dos números media ← soma_numeros / q_numeros 6) mostrando resultados imprima ( “ media aritmetica de “ , n , “ numeros: “, media ) fim q_numeros < n F V n inicio q_numeros ← 0 soma_numeros ← 0 Numero ← 1 soma_numeros ← soma_numeros + numero q_numeros ← q_numeros + 1 numero ← numero + 1 1 “media aritmetica de” , n, “ numeros: “, media 1 media ← soma_numeros / q_numeros fim Exemplo 4Exemplo 4 Calcular a média aritmética de n números dados Algoritmo para o cálculo da média aritmética de n números inteiros dados 1) definição das variáveis inteiro n, q_numeros, numero, soma_numeros real media inicio 2) iniciando as variáveis q_numeros ← 0 soma_numeros ← 0 3) entrada dos dados imprima ( “entre com a quantidade de numeros “ ) leia ( n ) 4) entrar com os números e calcular a soma dos mesmos enquanto ( q_numeros < n ) faça imprima ( “ entre com um numero inteiro “ ) leia ( numero ) soma_numeros ← soma_numeros + numero q_numeros ← q_numeros + 1 fim_enquanto 5) calculando a média aritmética dos números media ← soma_numeros / q_numeros 6) mostrando resultados imprima ( “ media aritmetica de “ , n , “ numeros: “, media ) fim q_numeros < n F V numero n inicio q_numeros ← 0 soma_numeros ← 0 soma_numeros ← soma_numeros + numero q_numeros ← q_numeros + 1 1 “media aritmetica de” , n, “ numeros: “, media 1 media ← soma_numeros / q_numeros fim Exemplo 5Exemplo 5 Calcular a média aritmética de n números dados; n não é conhecido à priori Algoritmo para o cálculo da média aritmética de n números inteiros dados 1) definição das variáveis inteiro q_numeros, numero, soma_numeros real media caracter flag inicio 2) iniciando as variáveis q_numeros ← 0 soma_numeros ← 0 flag ← 's' 3) entrar com os demais números e somá-los enquanto ( flag = 's' ) faça imprima ( “ entre com um numero inteiro “ ) leia ( numero ) soma_numeros ← soma_numeros + numero q_numeros ← q_numeros + 1 imprima ( “Quer continuar? (s/n) “ ) leia ( flag ) fim_enquanto 5) calculando a média aritmética dos números media ← soma_numeros / q_numeros 6) mostrando resultados imprima ( “ media aritmetica de “ , n , “ numeros: “, media ) fim flag = 's' F V numero inicio q_numeros ← 0 soma_numeros ← 0 flag ← 's' soma_numeros ← soma_numeros + numero q_numeros ← q_numeros + 1 1 flag “Quer continuar? (s/n) “media aritmeticade” , n, “ numeros: “, media 1 media ← soma_numeros / q_numeros fim 35 Repetição não definidaRepetição não definida Portugol repita bloco de comandos até <condição> faça <condição> bloco de comandos Observações da estrutura de repetição REPITA-ATÉ-FAÇA: 1) A repetição (o laço) se encerra quando a condição (teste) for verdadeira. 2) As instruções a serem repetidas são executadas pelo menos 1 vez, por que o teste é no final da repetição. F V • Neste caso, a estrutura de repetição precisa ter : 1.- uma variável de controle com um valor inicial; 2.- atualização da variável de controle; 3.- forma de terminar o ciclo de repetição; ● Caso estas condições não ocorram, o programa: 1 não tem como entrar no ciclo de repetição pois não tem valor definido para a variável que compõem a condição, ou seja, de controle; 2 não tem como terminar o ciclo repetitivo pois não há variação da variável de controle durante este ciclo; ● Modo de operação: – O procedimento é executado antes da condição ser verificada; – Enquanto a condição for verdadeira a repetição é terminada; – Quando a condição for falsa, o ciclo de repetição é continuado; Exemplo 6Exemplo 6 1. a 10← 2. repita 3. imprima ( “a = “ , a ) 4. a a + 1← 5. até ( a >= 15 ) faça Observação: a numeração das linhas é utilizada apenas para a explanação do algoritmo ● Neste exemplo, tem-se: – Variável de controle da repetição: a – Valor inicial da variável de controle: 10 – Variação da variável de controle: + 1 – Condição de término da repetição: a ≥ 15 ● O que aconteceria se a declaração da linha 1 não existisse? ● Idem, para a linha 4 Exemplo 7Exemplo 7 1. repita 3. imprima ( “a = “ , a ) 4. leia ( a ) 5. até ( a = 999 ) faça ● O que difere este programa do anterior? ● Qual é a função das declarações nas linhas 1 e 4? ● Utilização do flag Exemplo 8Exemplo 8 ● Calcular a média aritmética dos n primeiros números inteiros. algoritmo para o cálculo da média aritmética dos n primeiros números inteiros 1) definição das variáveis inteiros n, q_numeros, numero, soma_numeros real media inicio 2) iniciando as variáveis q_numeros ← 0 soma_numeros ← 0 numero ← 1 3) entrada dos dados imprima ( “entre com a quantidade de numeros “ ) leia ( n ) 4) calculando a soma dos números repita soma_numeros soma_numeros + numero← numero ← numero + 1 q_numeros q_numeros + 1← até ( q_numeros < n ) faça 5) calculando a média aritmética dos números media soma_numeros / q_numeros← 6) mostrando resultados imprima ( “ media aritmetica de “ , n , “ numeros: “, media ) fim Exemplo 9Exemplo 9 Calcular a média aritmética de n números dados Algoritmo para o cálculo da média aritmética de n números inteiros dados 1) definição das variáveis inteiro n, q_numeros, numero, soma_numeros real media inicio 2) iniciando as variáveis q_numeros ← 0 soma_numeros ← 0 3) entrada dos dados imprima ( “entre com a quantidade de numeros “ ) leia ( n ) 4) entrar com os números e calcular a soma dos mesmos repita imprima ( “ entre com um numero inteiro “ ) leia ( numero ) soma_numeros ← soma_numeros + numero q_numeros ← q_numeros + 1 até ( q_numeros >= n ) faça 5) calculando a média aritmética dos números media ← soma_numeros / q_numeros 6) mostrando resultados imprima ( “ media aritmetica de “ , n , “ numeros: “, media ) fim Exemplo 10Exemplo 10 Calcular a média aritmética de n números dados; n não é conhecido à priori Algoritmo para o cálculo da média aritmética de n números inteiros dados 1) definição das variáveis inteiro n, numero, soma_numeros real media caracter flag = 's' inicio 2) iniciando as variáveis n ← 0 soma_numeros ← 0 3) entrar com os demais números e somá-los repita imprima ( “ entre com um numero inteiro “ ) leia ( numero ) soma_numeros ← soma_numeros + numero n ← n + 1 imprima ( “Quer continuar? (s/n) “ ) leia ( flag ) até ( flag = 's' ) faça 5) calculando a média aritmética dos números media ← soma_numeros / n 6) mostrando resultados imprima ( “ media aritmetica de “ , n , “ numeros: “, media ) fim 55 Portugol Para <variável> = valor_inicial até valor_final passo número faça bloco de comandos fim-para Observações da estrutura de repetição Para-Até-Faça: 1) A repetição começa de um valor_inicial (numérico) e se encerra quando atinge ou supera um valor_final, sendo que ela varia com o número de passos a ser seguido. 2) As instruções a serem repetidas podem ou não ser executadas. <variável> = valor_inicial até valor_final passo número bloco de comandos Repetição DefinidaRepetição Definida • Neste caso, a condição precisa ter : 1. uma variável de controle com um valor inicial; 2. atualização da variável de controle; 3. forma de terminar a repetição; • Da mesma forma que a estrutura Enquanto Faça, existe uma variável de controle, no entanto, esta é controlada pela própria ins-trução; ● Modo de operação: – Variável de controle recebe o valor inicial vi; – O procedimento é executado; – A variável de controle é atualizada com o valor do passo vp – Se o valor da variável de controle comparada com o valor final vf for verdade, então o procedimento é executado de novo; caso contrário o ciclo de repetição é terminado. Exemplo utilizando ENQUANTO:Exemplo utilizando ENQUANTO: 1. a ← 10 2. enquanto ( a < 15 ) faça 3. imprima ( “a = “ , a ) 4. a ← a + 1 5. fim_enquanto Observação: a numeração das linhas é utilizada apenas para a explanação do algoritmo Exemplo utilizando PARA:Exemplo utilizando PARA: 1. para a = 10 até 14 de 1 faça 2. imprima ( “a = “ , a ) 3. fim_para Observação: a numeração das linhas é utilizada apenas para a explanação do algoritmo ● Neste exemplo, tem-se: – Variável de controle da repetição: a – Valor inicial da variável de controle: 10 – Variação da variável de controle: + 1 – Condição de término da repetição: a ≥ 15 ● O que difere este programa daquele onde a estrutura enquanto é utilizada? Exemplo 11Exemplo 11 ● Calcular a média aritmética dos n primeiros números inteiros. Algoritmo para o cálculo da média aritmética dos n primeiros números inteiros 1) definição das variáveis inteiro n, numero, soma_numeros real media inicio 2) iniciando as variáveis soma_numeros ← 0 3) entrada dos dados imprima ( “entre com a quantidade de numeros “ ) leia ( n ) 4) calculando a soma dos números para ( numero = 1 até n de 1 ) faça soma_numeros ← soma_numeros + numero fim_para 5) calculando a média aritmética dos números media ← soma_numeros / n 6) mostrando resultados imprima ( “ media aritmetica de “ , n , “ numeros: “, media ) fim Exemplo 12Exemplo 12 Calcular a média aritmética de n números dados Algoritmo para o cálculo da média aritmética de n números inteiros dados 1) definição das variáveis inteiro n, q_numeros, numero, soma_numeros real media inicio 2) iniciando as variáveis soma_numeros ← 03) entrada dos dados imprima ( “entre com a quantidade de numeros “ ) leia ( n ) 4) entrar com os números e calcular a soma dos mesmos para ( q_numeros = 1 até n ) faça imprima ( “ entre com um numero inteiro “ ) leia ( numero ) imprima ( “numero lido: “ , numero ) soma_numeros ← soma_numeros + numero fim_para 5) calculando a média aritmética dos números media ← soma_numeros / n 6) mostrando resultados imprima ( “ media aritmetica de “ , n , “ numeros: “, media ) fim Exemplo 13Exemplo 13 Calcular a seguinte expressão: ba ba − + ! ! Algoritmo para calcular uma expressão envolvendo fatorial 1) definição das variáveis inteiro a, b, fat_a, fat_b, k, num, den real x inicio 2) entrada dos dados imprima ( “ entre com dois valores inteiros “ ) leia ( a, b ) imprima ( “a = “, a, “ b= “, b ) 3) consistência dos dados se ( a < 0 ) ou ( b < 0 ) então imprima ( “ dados incompatíveis “ ) senão senão 3.1) calculo do fatorial de a fat_a ← 1 para ( k = 1 até a ) faça fat_a ← fat_a * k fim_para 3.2) calculo do fatorial de b fat_b ← 1 para ( k = 1 até b ) faça fat_b ← fat_b * k fim_para 3.3) calculo do numerador num ← a + fat_b 3.4) calculo do denominador den ← fat_a – b 3.5) verificação do denominador e calculo da expressão se ( den = 0 ) então imprima ( “expressao não pode ser calculada” ) senão x ← num / den imprima ( “ x = “, x ) fim_se fim_se fim Exemplo 13Exemplo 13 Dados os dígitos que compõem um número binário inteiro positivo de 8 bits, determinar a sua conversão para decimal; algoritmo para converter um número binário de 8 bits em decimal 1) Definição das variáveis inteiro digito, decimal, k, n, pos, chave, soma inicio 2) Inicializando variáveis pos ← 7 decimal ← 0 chave ← 0 3) Entrando com os dígitos e respectiva conversão k ← 1 enquanto ( k =< 8 ) e ( chave = 0 ) faça imprima ( “entre com um digito binario “ ) leia ( digito ) imprima ( digito ) se ( digito <> 0) e (digito <> 1 ) então imprima ( “dados errados” ) chave ← 1 senão se ( digito = 1 ) então soma ← 1 para n = 1 até pos faça soma ← 2 * soma fim_para decimal ← decimal + soma fim_se fim_se k ← k + 1 pos ← pos - 1 fim_enquanto 4) Mostrando resultados se ( chave = 0 ) então imprima ( “ decimal = “, decimal ) fim_se fim 75 Exemplo 14Exemplo 14 Escreva um algoritmo para ler a nota de 10 alunos e contar quantos foram aprovados, sendo que, para ser aprovado, a nota deve ser maior ou igual a 6,0. Escrever o número de aprovados. 76 var cont, i : inteiro nota, soma, media : real inicio cont ← 0 soma ← 0 para i ← 1 até 10 faça leia (nota) se nota >= 6.0 então cont ← cont + 1 fim-se soma ← soma + nota fim-para media ← soma / 10 escreva (“Nº de aprovados é: ”, cont) escreva (“Média dos alunos é: “, media) fim 77 i ← 1 até 10 cont ← 0 soma ← 0 F INICIO FIM nota “Nº de aprovados é ”, cont V “Média dos alunos é “, media nota >= 6.0 cont ← cont + 1 soma← soma + nota 1 1 media← soma / 10 TreinamentoTreinamento 1) Codifique o algoritmo que leia um número inteiro e positivo e apresente o seu fatorial (exemplo: o fatorial de 5! = 1*2*3*4*5 = 120). 2) Uma empresa decidiu fazer um recrutamento para preencher algumas vagas. Os candidatos serão cadastrados por computador. Faça um algoritmo para: a) ler o número do candidato, a idade e o sexo, a experiência profissional (SIM / NÃO); b) mostrar a idade média dos candidatos; c) mostrar o número total de candidatos e candidatas; d) mostrar os candidatos (homens e mulheres) maiores de idade que tenham experiência noserviço. TreinamentoTreinamento 3) Supondo que a população de um país A seja da ordem de 98.000.000 de habitantes, com uma taxa anual de crescimento de 3,5% e que um país B tenha uma população de aproximadamente 200.000.000 habitantes com uma taxa anual de crescimento de 1,5%. Escreva um algoritmo que calcule iterativamente, quantos anos serão necessários para que a população do país A, ultrapasse ou iguale a população do país B, mantidas as taxas de crescimento. 4) Criar um algoritmo que leia um número N (0 ≤ N ≤ 20) e imprima a série, conforme o exemplo a seguir: 70, 71, 72, 73, ..., 720 Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 11 Slide 12 Slide 13 Slide 14 Slide 15 Slide 16 Slide 17 Slide 18 Slide 19 Slide 20 Slide 21 Slide 22 Slide 23 Slide 24 Slide 25 Slide 26 Slide 27 Slide 28 Slide 29 Slide 30 Slide 31 Slide 32 Slide 33 Slide 34 Slide 35 Slide 36 Slide 37 Slide 38 Slide 39 Slide 40 Slide 41 Slide 42 Slide 43 Slide 44 Slide 45 Slide 46 Slide 47 Slide 48 Slide 49 Slide 50 Slide 51 Slide 52 Slide 53 Slide 54 Slide 55 Slide 56 Slide 57 Slide 58 Slide 59 Slide 60 Slide 61 Slide 62 Slide 63 Slide 64 Slide 65 Slide 66 Slide 67 Slide 68 Slide 69 Slide 70 Slide 71 Slide 72 Slide 73 Slide 74 Slide 75 Slide 76 Slide 77 Slide 78 Slide 79