Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 Algoritmos Conceitos Introdutórios sobre Construção de Algoritmos Algoritmo Algoritmo não computacional cujo objetivo é usar um telefone público. S E Q U Ê N C I A L DESVIO Início 1. Tirar o fone do gancho; 2. Ouvir o sinal de linha; 3. Introduzir o cartão; 4. Teclar o número desejado; 5. Se der o sinal de chamar 5.1 Conversar; 5.2 Desligar; 5.3 Retirar o cartão; 6. Senão 6.1 Repetir; Fim. Algoritmo Involuntariamente, já seguimos uma determinada seqüência de ações que, representadas neste algoritmo, fazem com que ele seja seguido naturalmente por pessoas, estabelecendo um padrão de comportamento. É assim também com os algoritmos escritos para computador, você deve especificar todos os passos, para que o computador possa chegar ao objetivo. Introdução Para que exista comunicação é necessário estabelecer padrões e regras que podem ser: falados, escritos, desenhados e/ou representados em símbolos. Introdução Exemplo 1 - Escovar os dentes pela manhã Introdução Exemplo 2 – Trocar uma lâmpada queimada Introdução Exemplo 3 – Resolver Equação do 2º Grau Problemas – Divisão de Água Inicialmente o recipiente de 8 litros está cheio e os demais vazios; Os recipientes não possuem escala de medição, sabe- se apenas o volume total de cada; Cada transferência(entre os recipientes) deve ser feita no volume total do recipiente receptor; Ao final das transferências o recipiente com capacidade para 8 litros deve possuir apenas 4 litros de água e o recipiente de 5 litros deve possuir apenas 4 litros de água. Problemas – Divisão de Água Solução: Problemas – Transporte Chinês Transportar todos os elementos de um lado para outro do rio, sendo que: Somente o pai, a mãe e o policial sabem pilotar o barco; A mãe não pode ficar sozinha com os filhos; O pai não pode ficar sozinho com as filhas; O prisioneiro não pode ficar sozinho com nenhum integrante da família; O barco só pode transportar duas pessoas por vez; Você pode ir e vir com as pessoas quantas vezes precisar. 11 Formas de representar um algoritmo Como representar um algoritmo? 12 Formas de representar um algoritmo Algoritmos podem ser representados, dentre outras maneiras, por: DESCRIÇÃO NARRATIVA Utiliza uma linguagem de escrita natural para descrever algoritmos. FLUXOGRAMA (DIAGRAMA DE MÓDULOS) Utiliza uma linguagem de representação gráfica para descrever algoritmos. LINGUAGEM ALGORÍTMICA (PSEUDO-CÓDIGO) Utiliza uma linguagem de escrita artificial para descrever algoritmos. 13 Formas de representar um algoritmo Exemplo: Algoritmo para converter uma temperatura em Fahrenheit para Celsius 14 Formas de representar um algoritmo Linguagem algorítmica (pseudo-código) A forma geral de um algoritmo em pseudo-código: Algoritmo <nome_do_algoritmo> [<declaração_de_variáveis>] Início <corpo_do_algoritmo> Fim. 15 Formas de representar um algoritmo LINGUAGEM ALGORÍTMICA (PSEUDO-CÓDIGO) Onde: Algoritmo Indica o início da definição do algoritmo. <nome_do_algoritmo> Nome dado ao algoritmo para distingui-lo dos demais. [<declaração_de_variáveis>] Parte opcional onde são declaradas as variáveis globais usadas no algoritmo principal e, eventualmente, nos sub- algoritmos. 16 Formas de representar um algoritmo LINGUAGEM ALGORÍTMICA (PSEUDO-CÓDIGO) Onde: Início Palavra que delimita o início do corpo do algoritmo. <corpo_do_algoritmo> Conjunto de instruções do algoritmo. Fim. Palavra que delimita o término do corpo do algoritmo. 17 Formas de representar um algoritmo Pseudo-código do algoritmo Fahrenheit-Celsius Algoritmo Fahrenheit-Celsius Variaveis Fahrenheit, Celsius: Real Início Ler (Fahrenheit) Celsius 5/9 * (Fahrenheit – 32) Escrever (Celsius) Fim. 18 Formas de representar um algoritmo Ling. Algorítmica Algoritmo Fahrenheit-Celsius Variaveis Fahrenheit, Celsius: Real Início Ler (Fahrenheit) Celsius 5/9 * (Fahrenheit – 32) Escrever (Celsius) Fim. Fluxograma Desc. Narrativa Solicite a temperatura em Fahrenheit. Transforme de Fahrenheit para Celsius. Informe a temperatura em Celsius. Início Fahrenheit Celsius = 5/9 * (Fahrenheit – 32) Celsius Fim 19 Construindo algoritmos Uma boa prática para construir algoritmos é dividir o problema em 3 fases (Entrada, Processamento e Saída). Lembra-se do seu primeiro mantra de programação? ENTRADA: São os dados de entrada do algoritmo. PROCESSAMENTO: São os procedimentos utilizados para chegar ao resultado final. SAÍDA: São os dados já processados. Entrada Processamento Saída 20 Construindo algoritmos No algoritmo Fahrenheit-Celsius temos: ENTRADA: Temperatura em Fahrenheit PROCESSAMENTO: Celsius = 5/9 *(Fahrenheit – 32) SAÍDA: Temperatura em Celsius Num algoritmo para calcular a área de um triângulo temos: ENTRADA: Base e Altura do triângulo PROCESSAMENTO: Área = (Base * Altura)/2 SAÍDA: Área 21 Construindo algoritmos Dividir o problema em Entrada, Processamento e Saída irá ajudá-lo a ordenar corretamente as instruções do seus algoritmos. 22 Construindo algoritmos Por isso, antes de construir um algoritmo, pare para pensar e identificar: Que dados preciso para começar? – Entrada Quais são os cálculos e decisões? – Processamento Que dados devem ser exibidos? – Saída 23 Atividade 1 – Respostas 1. Calcular e exibir a média ponderada de 2 notas dadas. (nota1= peso 6 e nota2= peso 4) ENTRADA: nota1 e nota2 PROCESSAMENTO: médiaP=((nota1 * 6)+(nota2 * 4))/(6+4) SAÍDA: médiaP 24 Atividade 1 – Respostas 2. Reajustar um salário em 7,75%. ENTRADA: salário PROCESSAMENTO: salárioR = salário+(salário*0,0775) SAÍDA: salárioR 3. Calcular o desconto de 23% sobre o preço de um produto. ENTRADA: preço PROCESSAMENTO: desconto = preço*0,23 SAÍDA: desconto 25 Identificadores e Palavras Reservadas Identificadores: São nomes únicos definidos pelos programadores para identificar/distinguir os elementos de um algoritmo. Palavras Reservadas São instruções primitivas que têm significados pré- determinados e fazem parte da estrutura de qualquer linguagem de programação. 26 Nomes de Identificadores Algumas regras para os nomes de Identificadores: 1) Devem começar por um caractere alfabético. 2) Podem ser seguidos por mais caracteres alfabéticos e/ou numéricos. 3) Não é permitido o uso de espaço em branco ou de caracteres especiais, como: @, #, &, *, +, ?,$ (exceto o _ ). 4) Não poderá ser uma palavra reservada a uma instrução do algoritmo. 5) Devem ser significativos. 6) Não podem ser repetidos dentro de um mesmo algoritmo/sub-algoritmo. 27 Tipos de Dados As fases de Entrada, Processamento e Saída podem manipular vários tipos primitivos de dados, a saber: Obs: Um Caractere SEMPRE deve estar entre “ ” EX: “A”, “Fone 3333-33333”, “1”, Tipo Primitivo Descrição Inteiro Representa o conjunto de números inteiros Real Representa o conjunto de números reais Caracter Representa um ou mais caracteres do teclado. Lógico valor lógico (V ou F).Representa um 28 Constante e Variável Constante é um identificador que representa valores constantes, ou seja, que não variam no decorrer do algoritmo. Seu uso poupa tempo quando tem que alterar o seu valor no algoritmo. Ao trocar o valor de uma constante, todas as instruções que a usam irão manipular, automaticamente, o novo valor. 29 Variável e Constante Variável é um endereço físico da memória principal, que é representado por um identificador que, ao longo do seu tempo de existência, pode armazenar vários conteúdos de um único tipo pré-determinado. Endereço Físico Identificador Conteúdo Tipo 1000:2000 Nome “João” Caracter 2001:3000 RG 12345 Inteiro 3001:4000 Salário 999,99 Real 4001:5000 Fumante F Lógico 30 Variável e Constante Simplificando... Considere que a memória principal do seu computador é um armário, onde cada gaveta é a uma variável. 31 Variável e Constante Declaração de Constantes <nome da constante> = <valor>; • • • <nome da constante> = <valor>; Declaração de Variáveis <var1, ..., varN>:<tipo de dado>; • • • <var1, ..., varN>:<tipo de dado>; 32 Variável e Constante Exemplos corretos: VARIAVEIS notaMédia, Salário: Real; contador: Inteiro; achou: Lógico; nome, sexo: Caracter; CONSTANTES PI = 3.1416 ; MAX = 10 ; OK = VERDADEIRO; País = “Brasil”; 33 Expressões Uma expressão é uma fórmula para processamento de um valor. As principais expressões são as seguintes: Aritméticas: Retornam um valor numérico (inteiro ou real). EX: 10+(3+1)/2 Lógicas: Retornam um valor lógico V ou F. EX: (3=2+1) e (3>2) Obs: Ter atenção com as prioridades dos operadores ! 3+2*2 = 7 (3+2)*2 = 10 Use corretamente os parênteses! 34 Expressões Expressões consistem de operandos e operadores. Operandos são os elementos de uma expressão que sofrem uma ação. Ex: variáveis, constantes ou outras expressões. Operadores são os elementos de uma expressão que realizam a ação. EX: aritméticos, lógicos e relacionais. Na expressão 3 + 2 = 5, temos “3, 2 e 5” como operandos e “+ e =” como operadores. 35 Operadores Os operadores podem ser classificados em: Binários: atuam sobre dois operandos. Ex: operadores aritméticos básicos (+ - * /) Unários: atuam sobre um único operando. Ex.: o sinal de (-) na frente de um número para inverter seu sinal. Tipos de operadores da nossa linguagem: Atribuição Aritméticos Relacionais Lógicos ou Booleanos 36 Operadores Atribuição: serve para atribuir um valor a uma variável. Operador de atribuição “ ” EX: Nome “Um nome”; Idade 18; Casado F; Salário 500,50; A expressão do lado direito do operador é avaliada e seu resultado é armazenado na variável à esquerda. Obs: A expressão deve retornar o mesmo tipo da variável ! 37 Operadores Relacionais: são operadores binários (de mesma prioridade) que somente retornam os valores lógicos V ou F. Estes somente são usados para efetuar comparações, as quais só podem ser feitas entre dados do mesmo tipo. O resultado de uma comparação é sempre um valor lógico. Operador Comparação > maior que < menor que >= maior ou igual <= menor ou igual = igual <> diferente 38 Operadores Exemplos: Operador Comparação Exemplo Resultado > maior que 4>3 V < menor que 4<3 F >= maior ou igual 4>=3 V <= menor ou igual 4<=3 F = igual 4=3 F <> diferente 4<>3 V 39 Operadores Lógicos ou Booleanos: são usados para combinar expressões relacionais e lógicas. Também retornam como resultado valores lógicos V ou F. Operador Tipo Operação Prioridade NÃO Unário Negação 1 E Binário Conjunção 2 OU Binário Disjunção 3 O rd e m p ri o ri d a d e Maior Menor 40 Operadores Exemplos: Operador Operação Exemplo Resultado OU Disjunção V ou F V E Conjunção V e F F NÃO Negação Não V F 41 Operadores Ordem de prioridades Observações: Operadores de igual prioridade, execução da esquerda para direita. Para alterar a ordem de prioridade, utilizar parênteses. Operador Prioridade Aritméticos 1 Relacional 2 Lógico 3 O rd e m p ri o ri d a d e Maior Menor 42 Sintaxe e Semântica Sintaxe diz respeito à forma como as instruções devem ser escritas. Conjunto de regras formais que especificam a composição dos algoritmos a partir de letras, dígitos e outros símbolos. A violação da sintaxe de uma instrução impede que o algoritmo seja executado! 43 Sintaxe e Semântica Semântica diz respeito ao significado lógico das instruções que serão executadas pelo computador. Conjunto de regras que especificam o “significado” de qualquer programa, sintaticamente válido. A violação da semântica de um algoritmo não impede que ele seja executado. Todavia, ele processará um resultado errado! 44 Sintaxe e Semântica Exemplo de erro sintático: Média: Inteiro média 25/5 {pois toda divisão retorna um no Real} “média” >= 7 {pois não se pode comparar tipos diferentes} Exemplo de erro semântico: Média: Real Se (média >= 7) então Escreva (“REPROVADO”); Senão Escreva (“APROVADO”); Sintaticamente a estrutura “SE-Então-Senão” está correta, mas semanticamente, NÃO. 45 Sintaxe e Semântica Os erros sintáticos são identificados pelos tradutores, enquanto que os erros semânticos não o são. Por isso que os erros semânticos exigem mais atenção para corrigi-los. 46 Instruções Primitivas São os instruções básicas que efetuam tarefas essenciais para o recebimento e apresentação de dados. Estas são: entrada; saída. 47 A instrução de entrada de dados permite que informações dos usuários sejam transferidas para a memória do computador (variáveis). Sua sintaxe pode ser: Leia (var1) Ex: Leia (nome) Leia (var1, ..., varN) Ex: Leia (nome, sexo) A semântica: os dados são fornecidos ao computador por meio de um dispositivo de entrada (ex: teclado e mouse ) e armazenados nas posições de memória das variáveis. Instruções Primitivas 48 Ex: Algoritmo ExemploInstruçãoEntrada Variaveis preçoUnit, preçoTot: Real Qtd: Inteiro Início Leia(preçoUnit, qtd) preçoTot preçoUnit * qtd Fim. Instruções Primitivas 49 Instruções Primitivas Note I Quando uma variável é declarada, esta apenas reserva uma posição na RAM. Ou seja, o conteúdo dessa posição é vazio. Assim, a cada variável criada deve-se ler ou atribuir um valor a ela. 50 Instruções Primitivas Note II Diferente do operador “”, quesó atribui valores pré-definidos, a instrução LEIA permite qualquer entrada de dados válida. Ou seja, os valores das variáveis não são mais fixos. 51 A instrução de saída de dados é o meio pelo qual variáveis, constantes e expressões têm seus dados exibidos pelos dispositivos de saída de um computador (ex: vídeo e impressora). Sua sintaxe pode ser: Escreva (var1) Ex: Escreva (salário) Escreva (Var1, ..., varN) Ex: Escreva (nome, endereço, cidade) Escreva (“texto”) Ex: Escreva (“Aula de programação”) Escreva (“texto”, var1, ..., varN,“texto”,var1, ..., varN ) Ex: Escreva (“nome e CPF = ”,nome, cpf,“ fone = ”,fone) Instruções Primitivas 52 Instruções Primitivas Atenção: Usa-se “,” (vírgula) para concatenar (juntar) o valor de uma variável com um texto explicativo. Exemplo: média 15/2; Escreva (“Média = ”,média) Média = 7,5 53 Ex: Algoritmo ExemploInstruçõesEntradaSaída Variaveis preçoUnit, preçoTot: Real Qtd: Inteiro Início Leia(preçoUnit, qtd) preçoTot preçoUnit * qtd Escreva(preçoTot) Fim. Instruções Primitivas 54 Instruções Primitivas Note III Início Leia(preçoUnit, qtd) preçoTot preçoUnit * qtd Escreva(preçoTot) Fim 55 Duas regras básicas para melhorar nossos algoritmos : Toda operação de leitura deve antes enviar uma mensagem ao usuário informando que dados ele deve entrar. Todo resultado enviado ao usuário deveria ser precedido de uma mensagem explicativa. Instruções Primitivas 56 Algoritmo ExemploInstruçõesEntradaSaída Variaveis preçoUnit, preçoTot: Real qtd: Inteiro Início Escreva(“informe preço unitário e quantidade”) Leia(preçoUnit, qtd) preçoTot preçoUnit * qtd Escrever(“Preço total = ”, preçoTot) Fim. Instruções Primitivas 57 Na estrutura de seqüência os comandos de um algoritmo são executados na ordem em que aparecem. Uma estrutura de seqüência é delimitada pelas palavras- reservadas Início e Fim e contém basicamente comandos de atribuição, de entrada e de saída. Todos os algoritmos vistos até agora utilizam uma única estrutura seqüencial (Início-Fim). Estrutura de seqüência 58 Dica Geral: Todo algoritmo deve ser feito visando a sua eficiência, clareza e manutenção. Dicas específicas: Pense de forma incremental e detalhada no problema a ser resolvido. Quais são os dados de entrada? Como estes dados devem ser processados? Quais são os dados de saída? Faça o algoritmo tão simples quanto possível. Isto facilita: A leitura do algoritmo por outras pessoas. A correção de erros quando estes existem. Dicas para escrever bons algoritmos 59 Procure alinhar os comandos de acordo com o nível a que pertençam, isto é, destaque a estrutura na qual estão contidos. Este alinhamento é chamado de identação. Exemplo genérico: Início comando do algoritmo no nível 1; subcomando dentro do nível 2; subcomando dentro do nível 3; comando do algoritmo no nível 1 Início subcomando dentro do nível 2; subcomando dentro do nível 2; Fim Fim Dicas para escrever bons algoritmos 60 1) leia nome, idade e salário de um funcionário e exiba os mesmos dados, devendo ser o salário reajustado em 12%. Algortimo Reajuste Variaveis nome: cadeia idade: inteiro salario, salarionovo: real Inicio Leia (nome, idade, salario) salarionovo salario + (salario * 12%) Escreva (“Nome =“, nome, “Idade=“, idade, “Salário=“, salarionovo) Fim. Atividade 1 - Faça um algoritmo que: 61 2) leia a base e a altura de um triângulo. Em seguida, escreva a área do mesmo. Algortimo Area Variaveis base, altura, area: real Inicio Leia (base, altura) area (base * altura) / 2 Escreva (“A área do triangulo é “, area) Fim. Atividade 1 - Faça um algoritmo que: 2 ALTURABASE ÁREA 62 São estruturas que, dada a avaliação de uma expressão lógica (condição), permitem a escolha de um fluxo de instruções a ser executado. No máximo só podem existir dois fluxos de instruções: um, se a condição for V, e outro, se a condição for F. Os tipos de estruturas de decisão são 3: Decisão Simples ; Decisão Composta ; Decisão Múltipla. Estruturas de Decisão 63 Na decisão simples, uma única expressão lógica é avaliada. Sintaxes: Estrutura de Decisão Simples Seqüência Se <expressão lógica> Então <comando1> ; . . . <comandoN> ; Fim-se. 64 Semântica: Se a avaliação da condição for V, um conjunto de comandos do bloco verdade é executado e prossegue-se o fluxo. Caso a avaliação da condição for F, salta-se para o primeiro comando após o fim da estrutura de decisão simples. Estrutura de Decisão Simples Instrução(ões) executada(s) para expressão = V Executar comando(s) V F Exp. Lógica Não faz nada! 65 Algoritmo ExemploDecisãoSimples Variaveis X: Inteiro Início Escreva(“Digite um valor”) Leia (x) Se (x > 0) Então Escreva (“X > 0”) Fim-se Fim. Estrutura de Decisão Simples 66 Além de executar se a condição for V a decisão composta também executa se a condição for F. Sintaxes : Se <expressão lógica> Então <instruções> Senão <instruções> Fim-se Estrutura de Decisão Composta 67 Semântica: Se a avaliação da condição for V, um conjunto de comandos do bloco verdade é executado e prossegue-se o fluxo. Caso a avaliação da condição for F, um conjunto de comandos do bloco falsidade é executado e prossegue-se o fluxo. Estrutura de Decisão Composta Executar instrução(ões) V F Exp. Lógica Instrução(ões) executada(s) para expressão = V Instrução(ões) executada(s) para expressão = F Bloco F Bloco V 68 Algoritmo ExemploDecisãoComposta Variaveis X: Inteiro Início Escreva(“Digite um valor”) Leia (x) Se (x > 0) Então Escreva (“X > 0”) Senão Escreva (“X < 0”) Fim-se Fim. Estrutura de Decisão Composta Os blocos V ou F nunca são executados ao mesmo tempo! Bloco V Bloco F 69 O encadeamento de decisões composta é utilizado para aninhar as estruturas Se Então Senão. Estrutura de Decisão Composta Executar instrução(ões) V F Instrução(ões) executada(s) para expressão = V V F Exp. Lógica Exp. Lógica Instrução(ões) executada(s) para expressão = V Instrução(ões) executada(s) para expressão = F ou outras decisões compostas 70 Algoritmo ExemploDecisãoCompostaAninhada Variaveis X: inteiro Início Escreva(“Digite um valor”) Leia (x) Se (x > 0) Então Escreva (“X > 0”) Senão Se (x < 0) Então Escreva (“X < 0”) Senão Escreva (“X = 0”) Fim-se Fim-se Fim. Estrutura de Decisão Composta 71 1) Se (x > 0) Então Escreva (“X > 0”) Se (x < 0) Então Escreva (“X < 0”) Se (x = 0) Então Escreva (“X = 0”) Estrutura de Decisão Composta – ATENÇÃO! Se um número é >0, então ele não pode ser =0 ou <0. Por isso, o exemplo acima faztestes desnecessários! Note que todas as condições SEMPRE são testadas! Isso torna a execução do algoritmo mais lenta! Isso vai funcionar, mas é uma péssima prática! 72 Estrutura de Decisão Composta – ATENÇÃO! NOTE II Se existem condições mutuamente exclusivas (somente uma, e apenas uma, condição pode ser V), então sempre deve-se usar DECISÃO COMPOSTA para se obter algoritmos mais rápidos! 73 2) Se (x MOD 2 = 0) Então Se (x > 0) Então Se (x/2 = 0) Então Escreva (“X é par, positivo e múltiplo de 2”) Fim-se Fim-se Fim-se Estrutura de Decisão Composta – ATENÇÃO! O encadeamento acima é o mesmo que: Se (x MOD 2 = 0) E (x > 0) E (x/2 = 0) Então Escreva (“X é par, positivo e múltiplo de 2”) Fim-se 74 A decisão múltipla é uma especialização da estrutura de decisão composta aninhada, que permite a execução de opções mutuamente exclusivas. Sintaxe: Caso <Variavel> Seja <Valor1> : <instrução(ões)> . . . <ValorN> : <instrução(ões)> [ Senão <comando(s)>] opcional! Fim-Caso Estrutura de Decisão Múltipla 75 Algoritmo ExemploDecisãoMúltipla Variaveis X: Caracter Início Escreva(“Digite um caracter”) Leia (x) Caso (x) Seja “A”,“E”,“I”,“O”,“U” : Escreva (“Vogal”) “~”,“^”,“v” : Início Escreva(“Operador”) Escreva(“ Lógico”) Fim Senão Escreva (“Caracter não reconhecido”) Fim-Caso Fim. Estrutura de Decisão Múltipla 76 Após desenvolver um algoritmo ele deverá ser testado. Este teste objetiva seguir as instruções do algoritmo para verificar se a solução está correta. EX: Algoritmo ExemploTesteDeMesa Variaveis nota1, nota2, média: Real situação: Cadeia Início Ler (nota1, nota2) média (nota1+nota2)/2 Se (média >= 7) então situação “Aprovado” Senão situação “Reprovado” Escreva (Situação) Fim. Teste de Algoritmo Tabela de variáveis Nota1 Nota2 Média Situação 7,0 8,5 7,75 Aprovado 6,5 7,0 6,75 Reprovado 8,0 6,0 7,0 Aprovado 5,0 7,5 6,25 Reprovado 77 4) leia a idade de um nadador e exiba sua categoria segundo as regras: A(5 até 7); B(8 até 10); C(11 até 13); D(14 até 18) e E( Idade > 18) 5) leia dois números inteiros, uma operação matemática (+,-,*,/) e faça o calculo destes números segundo a operação lida 6) leia o nome e a idade de três pessoas e informe o nome da pessoa mais velha e o nome da pessoa mais nova. Considere que não existem idades iguais Atividade 2 - Faça um algoritmo que 78 Existem situações em que o processamento de um valor uma única vez não é suficiente para resolver o problema. Quando isto ocorre, deve-se utilizar uma estrutura de repetição. Estruturas de repetição permitem que uma ou mais instruções sejam executadas um número definido de vezes, ou enquanto uma determinada condição não é alcançada. Estruturas de Repetição 79 As estruturas de repetição também são conhecidas como Laços ou Loops. As estruturas de repetição das linguagens de programação são de dois tipos: Condicional Repetem até satisfazer a condição de repetição. São usadas quando não se sabe previamente quantas vezes deve-se executar as instruções do bloco de repetição. Contada Repetem um número contado (pré-definido) de vezes. São usadas quando se sabe previamente quantas vezes deve-se executar as instruções do bloco de repetição. Estruturas de Repetição 80 As estruturas de repetição condicional podem executar seus testes: No Início Enquanto/Faça No Fim Repita/Até As estruturas de repetição contada utilizam uma variável para controlar a quantidade de repetições. Para/Faça Estruturas de Repetição 81 Exemplos: Estruturas de Repetição Condicional Algoritmo variávelContadora: ... cont 0 <estrutura de repetição> ... cont cont + 1 ... <fim estrutura de repetição> ... Algoritmo variávelAcumuladora: ... soma 0 <estrutura de repetição> ... soma soma + X ... <fim estrutura de repetição> ... constante Variável 82 Estrutura de repetição Enquanto/Faça Sintaxe: Enquanto <expressão lógica> FAÇA <Instrução1> . . . <InstruçãoN> Fim-Enquanto Estruturas de Repetição Condicional 83 Semântica: Faz o teste no início do laço. Se o resultado for V as instruções do laço são executadas. Volta-se para o início do laço e testa-se novamente a sua condição. Isto é repetido enquanto a condição testada for V. Estruturas de Repetição Condicional Executar outras instruções V F Instruções executadas para expressão = V Exp. Lógica Estrutura de repetição Enquanto/Faça 84 Estruturas de Repetição Condicional Estrutura de repetição Enquanto/Faça Resumindo... Não se sabe de antemão quantas vezes o bloco de repetição será executado. Isto é, ele pode ser executado várias vezes ou nenhuma vez. Testa a condição antes de entrar na estrutura de repetição Repete a execução do bloco de instruções toda vez que condição for V. O bloco de instruções A execução do bloco é finalizada quando a condição for F. 85 Algoritmo ExemploEnquantoFaça Variaveis x: Inteiro Início Escreva(“Digite um valor”) Leia (x) Enquanto (x<>0) faça Se (x > 0) Então Escreva (“X > 0”) Senão Escreva (“X < 0”) Fim-se Escreva(“Digite um valor”) Leia (x) Fim-Enquanto; Escreva (“X = 0”) Fim. Estruturas de Repetição Condicional 86 Estrutura de repetição Repita/Até Sintaxe: Repita <Comando1> . . . <ComandoN> Até <expressão lógica> Estruturas de Repetição Condicional 87 Semântica: Efetua um teste lógico no fim do laço, garantindo que pelo menos uma vez as instruções deste são executadas. Ao contrário do enquanto, esta só repete o laço se o resultado do teste for F. Estruturas de Repetição Condicional Executar outras instruções F Instruções executadas até expressão = V Exp. Lógica V Estrutura de repetição Repita/Até 88 Estruturas de Repetição Condicional Estrutura de repetição Repita/Até Resumindo... Não se sabe de antemão quantas vezes o bloco de repetição será executado. Todavia é garantido que ele será executado pelo menos uma vez. Testa a condição depois de entrar na estrutura de repetição. Repete a execução do bloco de instruções toda vez que a condição for F. A execução do bloco é finalizada quando a condição for V. 89 Algoritmo ExemploRepitaAté Variaveis x: Inteiro Início Repita Escreva(“Digite um valor”) Leia (x) Se (x > 0) Então Escreva (“X > 0”) Senão Se (x < 0) Então Escreva (“X < 0”) Fim-se Fim-se Até (x = 0); Escreva (“X = 0”) Fim. Estruturas de Repetição Condicional 90 Estruturas de Repetição Condicional Toda repetição condicional pode ser representada por uma estrutura do tipo Enquanto/Faça ou Repita/Até. Todavia, perceba que a primeira repete somente quando a condição é V e a segunda somente quando a condição é F. Por isso, a condição deuma é a negação da outra. Note I 91 Estruturas de Repetição Condicional Nos laços condicionais a variável que é testada deve estar sempre associada a uma instrução que a atualize no interior do laço, pois, se isto não ocorrer, o algoritmo ficará repetindo indefinidamente este laço, gerando uma situação conhecida como “laço/loop” infinito”. Note II 92 Estruturas de Repetição Condicional Algoritmo ExemploEnquantoFaça_LoopInfinito Variaveis x: Inteiro Início Escreva(“Digite um valor”) Leia (x) Enquanto (x<>0) faça Se (x > 0) Então Escreva (“X > 0”) Senão Escreva (“X < 0”) Fim-se Escreva(“Digite um valor”) Fim Enquanto Fim. Leia (x) sem este Leia(x), o laço se repete infinitamente! 93 Estrutura de repetição Para/Faça Sintaxe: PARA <varContador> de <Início> até <Fim> FAÇA <Instrução1> . . . <InstruçãoN> FIM-PARA Estrutura de Repetição Contada 94 Estrutura de repetição Para/Faça Estrutura de Repetição Contada Semântica: Repete as instruções enquanto a variável contador não atingir o valor final. Ressalta-se que a variável contador é previamente inicializada e incrementada ou decrementada de uma constante a cada repetição. Executar outras instruções) V F Instruções executadas para expressão = V Incremento/ decremento Inicialização Início<=fim 95 Estrutura de Repetição Contada Estrutura de repetição Para/Faça Resumindo... Sabe-se de antemão quantas vezes o bloco de repetição será executado. Isto é, repete enquanto o valor final não atingir o valor final da variável de controle. Incrementa automaticamente a variável de controle cada vez que o bloco é executado (incremento 1 é o padrão). A variável de controle deve ser um número inteiro. A variável de controle não pode ser modificada dentro do bloco. 96 Algoritmo ExemploParaFaça Variaveis x, i, contP: inteiro Início contP0 Para i de 1 até 20 faça Escreva(“Digite um valor”) Leia (x) Se (x > 0) Então contP contP + 1 Fim-se Fim-Para Escreva (“positivos = ”, contP) Fim. Estrutura de Repetição Contada 97 Estrutura de Repetição Contada Pode-se implementar um laço PARA com um laço CONDICIONAL, entretanto o controle do incremento/decremento da variável contadora é seu. O laço PARA faz isso implicitamente! Atenção : 98 Algoritmo ExemploParaFaçaComEnquanto Variaveis x, i, contP: inteiro Início contP0 i1 Enquanto (i <= 20) faça Escreva(“Digite um valor”) Leia (x) Se (x > 0) Então contP contP + 1 Fim-se i i+1 {Incremento explícito da variável contadora} Fim Enquanto Escreva (“positivos = ”, contP) Fim. Estrutura de Repetição Contada 99 Algoritmo ExemploParaFaçaComRepita Variaveis x, i, contP: inteiro Início contP0 i1 Repita Escreva(“Digite um valor”) Leia (x); Se (x > 0) Então contP contP + 1 Fim-se i i+1; {Incremento explícito da variável contadora} Até (i > 20) Escreva (“positivos = ”+contP) Fim. Estrutura de Repetição Contada 100 Encadeando as Estruturas de Repetição Semelhante às estruturas de decisão composta, as estruturas de repetição também podem ser encadeadas/aninhadas. Esta abordagem é usada quando há a necessidade de se usar laços dentro de laços. Por exemplo: fazer um algoritmo para gerar toda a tabuada de 1 a 10. 101 Encadeando as Estruturas de Repetição Algoritmo Tabuada Variaveis r, n1, n2: inteiro Início n11 Enquanto (n1<=10) faça Para n2 de 1 até 10 faça r n1 * n2 Escreva (n1,“ X ”,n2,“ = ”,r) Fim-Para n1n1+1 Fim-Enquanto Fim. 102 Encadeando as Estruturas de Repetição Também pode-se encadear estruturas de repetição com estruturas de decisão. 103 Encadeando Diversas Estruturas Algoritmo TabuadaSomaComParidade Var r, n1, n2: inteiro Início n1:=1 Enquanto (n1<=10) faça Para n2 1 até 10 faça r n1 + n2 Se (r mod 2 = 0) Escreva (n1,“ + ”,n2,“ = ”,r, “ = Par”) Senão Escreva (n1,“ + ”,n2,“ = ”,r, “ = Impar”) Fim Para n1n1+1 Fim Enquanto Fim. Exercício Senha Algoritmo Senha Variaveis senha, usuario: cadeia controle: lógico Inicio Repita Leia (usuario) Leia (senha) Se (usuario=“”) ou (senha=usuario) ou (senha=“12345”) ou (senha=“senha”) Então controle Falso Escreva(“Acesso Invalido”) Senão controle Verdadeiro Escreva(“Acesso Permitido”) Fim-se Até (controle = Verdadeiro) Fim. Algoritmo Senha Variaveis senha, usuario: cadeia controle: logico Inicio controle Falso Enquanto (controle=Falso) Leia (usuario) Leia (senha) Se (usuario=“”) ou (senha=usuario) ou (senha=“12345”) ou (senha=“senha”) Então controle Falso Escreva(“Acesso Invalido”) Senão controle Verdadeiro Escreva(“Acesso Permitido”) Fim-se Fim-Enquanto 104 Exercício Senha Algoritmo Senha Variaveis senha, usuario: cadeia Inicio Repita Leia (usuario) Leia (senha) Até ((usuario≠“”) e (senha ≠ usuario) e (senha ≠“12345”) e (senha ≠“senha”)) Escreva (“Acesso Permitido”) Fim. Algoritmo Senha Variaveis senha, usuario: cadeia controle: lógico Inicio controle Falso Repita Se (controle = Verdadeiro) Então Escreva(“Acesso Inválido”) Fim-se controle Verdadeiro Leia (usuario) Leia (senha) Até ((usuario≠“”) e (senha ≠ usuario) e (senha ≠“12345”) e (senha ≠“senha”)) Escreva (“Acesso Permitido”) Fim. 105 Vetores Vetor_de_Notas 1 2 3 4 5 6 7 8 9 10 INDICE IDENTIFICAÇÃO Vetor_de_Notas[ INDICE ] Vetor_de_Notas[ 3 ] 8,5 Vetor_de_Notas[ 3 ] := 8,5 Vetor_de_Notas[ 8 ] := 6,0 8,5 6,0 Declaração de Vetor Identificação : vetor [inicial..final] de <tipo_dados> Vetor_de_Notas : vetor [1..10] de real Identificação: array [inicio..fim] of <tipo_dados> Vetor_de_Notas: array [1..10] of real Vetor_de_Notas 1 2 3 4 5 6 7 8 9 10 Exemplo (Algoritmo) Leitura Para i de 1 até 10 faça Escreva(“Entre com o número:”) Leia(vetor_de_notas[i]) Fim-para Escrita Para i de 1 até 10 faça Escreva(“Posição”, i, “=“,vetor_de_notas[i]) Fim-para Exemplo (Pascal) Leitura For i := 1 to 10 do Begin write(‘Entre com o número:’); readln(vetor_de_notas[i]); End; Escrita For i := 1 to 10 do Begin writeln(‘Posição’, i, ‘=‘,vetor_de_notas[i]) End; Matriz 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 Matriz[3,5] := 100 Matriz[3,5] 100 Matriz : array [1..5,1..10] of Integer; Matriz : vetor[1..5,1..10] de Inteiro; 100 Exemplo (Algoritmo) Leitura Para i de 1 até 5 faça Para j de 1 até 10 faça Escreva(“Entre com o número:”) Leia(Matriz[i,j]) Fim-Para Fim-para Escrita Para i de 1 até 5 faça Para j de 1 até 10 faça Escreva(“Posição”, i, j, “=“, Matriz[i,j]) Fim-para Fim-para
Compartilhar