Baixe o app para aproveitar ainda mais
Prévia do material em texto
Universidade Federal Fluminense Centro Tecnológico Instituto de Computação Departamento de Ciência da Computação Construção de Algoritmos Versão 2005 Prof. Leonardo Cruz da Costa 1 Capítulo I - INTRODUÇÃO É comum seguirmos roteiros para solucionar problemas no dia a dia. Esses roteiros descrevem ações que devem ser seguidas uma a após a outra com o objetivo de produzir o resultado desejado. Os roteiros podem ser textuais ou gráficos. Exemplo 1: Como fazer um pato no tucupi? Tempere o pato com o alho, a cebola, sal e pimenta-do-reino. Aqueça o forno em temperatura média. Coloque o pato numa assadeira com um pouco de óleo e leve ao forno até dourar. Numa panela, coloque o tucupi e os pedaços de pato assado. Leve ao fogo alto até ferver. Abaixe o fogo e cozinhe até ficar macio. Acrescente mais tucupi, se necessário. Junte as folhas de jambu e cozinhe até que os talos fiquem macios. Sirva com farinha de mandioca. Exemplo 2: Como chegar no sítio do amigo para churrasco de final de semana? Siga pela rodovia RJ 104 No quilometro 98 virar a esquerda na primeira entrada de terra Siga até a primeira ponte. Atravesse a ponte e dobre à esquerda. Procure a placa sítio Animação. Exemplo 3: Como deve ser a instalação do sistema de aquecimento de água solar para piscinas. 1. Moto Bomba 2. Filtro 3. Registro de Esfera ou Gaveta 4. Válvula de Retenção 5. Saída de água fria para as placas 6. Retorno de água quente das placas 7. Tubulação de retorno para piscina. 2 Exemplo 4: Roteiro para trocar uma lâmpada queimada. a) Primeira versão 1. Remover a lâmpada queimada; 2. Colocar a nova lâmpada; Mas isto está muito abstrato. O que é remover uma lâmpada? b) Segunda versão (um pouco mais detalhada) 1. Buscar uma lâmpada nova; 2. Pegar uma escada 3. Posicionar a escada debaixo da lâmpada; 4. Subir na escada até que a lâmpada possa ser alcançada; 5. Girar a lâmpada queimada no sentido anti-horário até que se solte; 6. Colocar a lâmpada nova girando-a no sentido horário; 7. Descer da escada; E se a lâmpada não estiver queimada? c) Terceira versão (um pouco mais detalhada) 1. Buscar uma lâmpada nova; 2. Pegar uma escada 3. Posicionar a escada debaixo da lâmpada; 4. Acionar o interruptor; 5. Se a lâmpada não acender, então 6. Subir na escada até que a lâmpada possa ser alcançada; 7. Girar a lâmpada queimada no sentido anti-horário até que se solte; 8. Colocar a lâmpada nova girando-a no sentido horário; 9. Descer da escada; 3 Nessa versão algumas ações estão vinculadas à condição lâmpada não acender, ou seja, somente efetua-se a troca da lâmpada caso a condição lâmpada queimada (lâmpada não acender) for verdadeira. Se a condição lâmpada não acender for falsa, nada mais será realizado. Apesar do algoritmo estar correto, ele pode ser melhorado uma vez que somente seria necessário pegar a escada, caso a condição lâmpada não acender seja verdadeira: d) Quarta versão (um pouco mais detalhada) 1. Acionar o interruptor; 2. Se a lâmpada não acender, então 2.1 Buscar uma lâmpada nova; 2.2 Pegar uma escada 2.3 Posicionar a escada debaixo da lâmpada; 2.4 Subir na escada até que a lâmpada possa ser alcançada; 2.5 Girar a lâmpada queimada no sentido anti-horário até que se solte; 2.6 Colocar a lâmpada nova girando-a no sentido horário; 2.7 Descer da escada; Exercícios 1. Elaborar um algoritmo que mostre os passos necessários para trocar um pneu furado. 2. Um homem precisa atravessar um rio com um barco que possui capacidade apenas para carregar ele mesmo e mais uma de suas três cargas, que são: um lobo, um bode e um maço de alfafa. O que o homem deve fazer para conseguir atravessar o rio sem permite que fiquem em uma margem, o lobo e a cabra, a cabra e a alfafa? Escreva um algoritmo mostrando a resposta, ou seja, indicando todas as ações necessárias para efetuar a travessia segura. I.1 – ALGORITMOS Computadores muitas vezes chamados erroneamente de cérebro eletrônico, não têm, pelo menos até agora, a capacidade de resolver por conta própria problemas. Assim, como outras máquinas, eles precisam ser instruídos, para que através de um conjunto de ações possam solucionar o problema. Para resolvermos problemas, através de computador, é necessário que uma seqüência de operações seja criada, semelhante aos roteiros apresentados anteriormente. A solução é obtida através de duas etapas: • A criação de uma seqüência de operações que, quando executada, produz o resultado do problema (a esta seqüência se dá o nome de algoritmo). • A execução, propriamente dita, da seqüência de operações. “Um algoritmo é a descrição de um padrão de comportamento, expressado em termos de um repertório bem definido e finito de ações primitivas, as quais damos por certo que podem ser executadas” (Guimarães e Lages). 4 Um algoritmo pode ser definido também como: “uma seqüência ordenada, sem ambigüidade, de passos que levam à solução de um dado problema” (Tremblay e Bunt [5]). As definições acima mostram que um algoritmo precisa: • Ter inicio e fim; • Ser descritas em termos de ações não ambíguas e bem definida; • Que as ações sigam uma seqüência ordenada. Essas três características são entendidas de maneira fáceis, pois: 1. Ter inicio e fim: um computador não pode ficar infinitamente buscando uma solução para o problema; 2. Ações não ambíguas e bem definidas: não poder haver dúvidas da ação a ser tomada. Observe o passo no exemplo 1 - Coloque o pato numa assadeira com um pouco de óleo e leve ao forno até dourar. O que significa um pouco de óleo: 1 ml., 2 ml, 10 litros, etc. 3. Seqüência ordenada: as ações devem seguir sempre a mesma ordem de execução, pois se A ordem fosse aleatória não se pode garantir a solução adequada para o problema. I.2 REPRESENTAÇÃO DE ALGORITMOS O processo de resolução de um problema através de computador começa no entendimento de forma clara do problema, para qual é projetado um algoritmo, que futuramente será codificado em uma linguagem de programação, transformando-se dessa forma em um programa. Fase de resolução do Problema Fase de Implementação (utilização de uma linguagem de Programação) Assim, um algoritmo é representado de duas maneiras diferentes (mas equivalentes): A primeira representação deve ser fácil para as pessoas, construir, modificar e testar as ações (usada na construção em si). A segunda deve ser entendida por computadores – é usada na fase de execução, quando da transformação (codificação) em programa (tradução de um algoritmo em linguagem de programação). Situações semelhantes ocorrem em outras áreas do conhecimento. Na Arquitetura e na Engenharia, os profissionais elaboram várias plantas (baixa, corte, situação, etc.) da mesma 5 edificação para diferentes fins. A edificação é a solução projetada e cada planta, embora diferente, é a representação da mesma edificação. 1) A primeira representação: usadas pelas pessoas A linguagem natural (português, inglês): utilizada nas receitas, instruções, etc.. Para solução de problemas em computação apresenta um inconveniente: a ambigüidade de alguns termos. Assim, restrições são impostas à linguagem natural, objetivando a redução de ambigüidade, criando uma pseudolinguagem (ou, ainda, pseudocódigo, Portugol). Representações gráficas: são bastante recomendáveis já que um desenho muitas vezes substitui, com vantagem, mil palavras. a) fluxograma b) diagramas de Nassi-Shneidermamc) método de Jackson d) diagramas de Warnier-Or 2) A segunda representação: usada pelo computador Utiliza-se uma linguagem de programação (Pascal, Cobol, C, Java, C# etc.), para representar algoritmos, transformando-os em programas. 6 Capítulo II - CONSTRUÇÃO DE ALGORITMOS Como vimos anteriormente quando queremos resolver um problema utilizando um computador, devemos construir uma seqüência de passos (algoritmo) que conduz à solução do problema. Uma das vantagens de utilizar algoritmos é que a partir dele o programador pode codificá-lo em qualquer linguagem de programação. OS PASSOS DE UM ALGORITMO Um algoritmo é uma seqüência de passos, onde cada passo é de uma das três naturezas seguintes: a) uma operação elementar; b) uma operação de controle especificando uma seleção entre seqüências de passos; c) uma operação de controle especificando a repetição de uma seqüência de passos; A) OPERAÇÕES ELEMENTARES A principal motivação para o desenvolvimento e uso dos computadores foi a necessidade de manipular com eficiência grandes quantidade de dados. Os dados podem ser de diversos tipos: primitivos, agregados homogêneos, agregados heterogêneos, registros, arquivos de registros, etc.. O conjunto dos tipos primitivos que compõe uma linguagem de programação pode mudar dependendo da linguagem de programação. A seguir apresentamos os tipos primitivos que normalmente são usados na construção de algoritmos. Inteiro: denota todo o conjunto de valores numéricos que pertencem ao conjunto dos números inteiros (negativos, positivos ou nulos) Ex: Quantidade de alunos: 50 Quantidade de professores de um curso: 35 Real: denota todo o conjunto de valores numéricos que pertença ao conjunto dos números reais (negativos, positivos ou nulos) Ex: Média de um aluno: 8.5 Salário de uma pessoa: R$ 300.00 Caractere: denota todo o conjunto de valores que pertença ao conjunto dos caracteres (Alfabéticos: A-Z, a-z; numéricos: 0-9; e especiais: ?, @," ~, etc.) Ex: Nome do aluno: "João Antônio" Orientação: "usar somente caneta preta no preenchimento" 7 Lógico: denota duas situações (biestável: verdadeiro - falso, 0-1) Ex: Questão: Certa Situação: Reprovado 1. Determinar qual o tipo de dado presente nas sentenças abaixo: a) Há na porta do banheiro uma placa ‘HOMENS’. b) O salário de Maria é de R$ 1030,98. c) Uma maneira econômica de representar o sexo de uma pessoa é através de ‘F’ ou ‘M’. d) A sala de aula fica no segundo andar. e) O planeta Terra tem a forma quadrada. Entende-se por operações elementares todos os cálculos com um resultado produzido, entrada e saída de dados; movimentação de dados. A.1) ATRIBUIÇÃO A memória permite o armazenamento de dados (valores), que podem ser obtidos pelos dispositivos de entrada e saída, ou calculados em operações no programa e posteriormente colocados à disposição do usuário. Para que a memória possa armazenar os dados, uma área é reservada na memória e associada a identificadores (nomes) usados no programa. A esta área se dá o nome de Tabela de Símbolos (TS). Exemplo: Suponha que desejamos utilizar os valores numéricos 1 e 15. Para que esses possam permanecer na memória e posteriormente serem utilizados para algum tipo de processamento, são criados dois nomes SOMA e RESULTADO. Cada linha na Tabela de Símbolo (TS), representa uma área na memória que guardará os valores e será manipulada (referenciada, identificada) pelo nome dado (SOMA e RESULTADO), como representado a seguir: Tabela de Símbolos NOME TIPO VALOR SOMA Inteiro 1 RESULTADO Inteiro 15 Quando necessitarmos de manipular o valor 15 devemos utilizar o nome Resultado e para o valor 1, Soma. A esses nomes criados pelo programador, são chamados de identificadores. Pois, identificam o local (área de memória) onde o valor está armazenado. 8 A criação de nomes é livre? Não, o programador deve seguir uma regra para construir os identificador, ou em outras palavras os nomes utilizados no algoritmo. Regra para Construção de Identificadores Onde: LETRA = A ... Z DÌGITO = 0 ... 9 Observações: a) O primeiro caractere do nome sempre será uma letra; b) Não existe uma restrição a quantidade de letras ou dígitos que formam o nome; d) O nome não pode possuir espaço em branco ou símbolos especiais, tais como: ( ) # $ % & * ‘ “ = + [ ^ ´ ` ; e) Não poderão ser usados outros caracteres a não ser letras e números; f) As letras sempre serão maiúsculas; g) Não há acentuação dos nomes; h) Não poderá ser um nome uma palavra reservada a uma instrução. Isto é, os nomes devem ser diferentes de: inteiro, real, caractere, lógico, enquanto, faça, fim- enquanto, declare, repetir, leia, escreva, etc.. 1. Assinale os identificadores válidos: a) (X), b) x c) ah! d) "aluno" e) #55 f)KM/L g)UYT h) AB*C i) CEP h) dia/mes/ano Como especificamos cada linha da tabela de símbolos? A associação do identificador ao local que receberá o dado na tabela de símbolo (definição de cada linha da tabela) é chamada de declaração (é a compilação da declaração que produz uma TS correspondente a um programa). 9 Em pseudocódigo as declarações podem ser representadas como: DECLARE <identificador1, identificador2, ...> COMO <tipo> Onde tipo define as características dos dados a serem manipulados, pode ser: inteiro, real, caracter, lógico, entre outros. Assim, para definirmos que SOMA e RESULTADO, são os nomes utilizados no algoritmo e que ambos representarão números inteiros, é necessário utilizarmos a declaração: DECLARE SOMA, RESULTADO COMO INTEIRO Essa declaração produzirá a seguinte tabela: NOME TIPO VALOR SOMA Inteiro RESULTADO Inteiro Outros exemplos: DECLARE X, Y, Z, TOTAL COMO REAL NOME TIPO VALOR X Real Y Real Z Real DECLARE T COMO LOGICO NOME TIPO VALOR T LÓGICO DECLARE A, B, TOTALH, TOTALM COMO INTEIRO DECLARE X, K COMO REAL DECLARE S COMO CARATER NOME TIPO VALOR A INTEIRO B INTEIRO TOTALH INTEIRO TOTALM INTEIRO X REAL K REAL S CARATER Observe que a declaração irá produzir uma tabela com os nomes definidos, porém os valores não aparecem, não estão especificados. 10 Como os valores serão colocados na tabela? A associação de um valor a um nome (declarado) se dá através da atribuição. ATRIBUIÇÃO: associa um identificador a uma expressão (valor). forma geral: Identificador ← <Expressão> O símbolo ← deve ser lido como “recebe o valor de” Exemplo: A ← 14 VALOR ← 10.5 SOMA ← 5 RESULTADO ← SOMA Simulação do Funcionamento das Atribuições NOME ATRIBUTOS VALOR A Inteiro, variável 14 Valor Real, variável 10.5 Soma Inteiro, variável 5 Resultado Inteiro, variável 5 Analisando a forma geral da atribuição: Identificador ← <Expressão> percebe-se que é possível construir expressões e atribuir a um nome. Por exemplo: A ← 14 + 10 Como essa instrução é executada? A ← 14 + 10 Avalia-se, em primeiro lugar, a “expressão” à direita do sinal de atribuição (←) A ← 14 + 24 10 e em segundo lugar, o valor computado da expressão é atribuído ao identificador na TS. Como o valor associado ao nome pode mudar durante a “execução” do algoritmo (ou programa), usamos o termo variável. 11 Expressão pode ser: aritméticas, relacionais e lógicas. A.1.1) EXPRESSÕES ARITMÉTICAS São aquelas, que quando avaliadas, produzem resultados numéricos. Constituemna aplicação de operadores aritméticos a operandos que têm valores numéricos. Operadores Aritméticos: + (soma) - (subtração) * (multiplicação) / (divisão com resultado decimal) Os operadores * / têm maior prioridade e os parênteses podem ser usados para alterar a prioridade. As Expressões Aritméticas podem ser definidas como: 1. Os números são expressões aritméticas; 2. Variáveis numéricas com valor atribuído são expressões aritméticas; 3. Se X e Y são expressões aritméticas, e se não há conflito de tipos, então: (X) X * Y X / Y X + Y X - Y são também expressões aritméticas. 4. Funções aritméticas são expressões aritméticas. Exercícios 1. Para o algoritmo abaixo, crie a tabela de símbolos e mostre os valores para cada variável. DECLARE S, R, T COMO INTEIRO S ← 10 R ← 1 T ← R + S S ← T R ← S 2. Para o algoritmo abaixo, crie a tabela de símbolos e mostre os valores para cada variável. DECLARE S, R, T COMO INTEIRO S ← 10 R ← 1 R ← R + 1 12 R ← R + 1 R ← R + 1 R ← R + 1 R ← R + 1 R ← R + 1 R ← S S ← R 3. Escreva algoritmos que resolvam as expressões matemáticas a seguir usando apenas operações de adição e subtração. a) 10 X 3 b) 25 X 7 c) 10 / 2 d) 15 / 5 A.1.2) EXPRESSÕES RELACIONAIS Expressões Relacionais são na verdade comparações; quando avaliadas produzem resultado Verdadeiro ou Falso. Como o resultado de uma expressão relacional é um valor lógico, logo ela é uma expressão lógica (como definida anteriormente). Operadores Relacionais: > ( maior que ) >= ( maior ou igual) < ( menor que) <= ( menor ou igual) = ( igual a ) <> ( não igual ) Expressões Relacionais podem ser definidas como: 1. Sendo A e B expressões aritméticas, então: A > B (A maior que B) A >= B (A maior ou igual a B) A < B (A menor que B) A <= B (A menor ou igual a B) A = B (A igual a B) A <> B (A não igual a B), são expressões relacionais. Atenção: Pela definição apresentada acima, onde os operandos de uma expressão relacional, são sempre expressões aritméticas, a expressão 5 > X > 1, não é válida ! A.1.3) EXPRESSÕES LÓGICAS (CONDIÇÕES) Expressões lógicas (ou condições) são composições de operandos e operadores lógicos. Operadores Lógicos: and ( e), or (ou), not (não) 13 Expressões Lógicas podem ser definidas como: 1. Variáveis lógicas com valor atribuído e constante lógica (verdade ou falso) são expressões lógicas; 2. Expressões Relacionais são expressões lógicas; 3. Sendo A e B expressões lógicas, então: (A) A and B A or B not A, são expressões lógicas. Resultado das operações Lógicas AND verdade falso Verdade verdade falso Falso falso falso OR verdade falso verdade verdade verdade falso verdade falso NOT verdade falso falso verdade A.1.3.1) NOÇÕES DE LÓGICA MATEMÁTICA CONCEITO DE PROPOSIÇÃO Proposição: sentenças declarativas afirmativas (expressão de uma linguagem) da qual tenha sentido afirmar que seja verdadeira ou que seja falsa. ¾ A lua é quadrada. ¾ A neve é branca ¾ Matemática é uma ciência. Não são objetos de estudo as sentenças interrogativas ou exclamativas. OS SÍMBOLOS DA LING. DO CÁLCULO PROPOSICIONAL Variáveis Proposicionais letras latinas minúsculas p, q, r, s, .... para indicar as proposições (fórmulas atômicas) . Exemplos: A lua é quadrada : p A neve é branca : q Matemática é uma ciência: r Conectivos Lógicos: As fórmulas atômicas podem ser combinadas entre si e, para representar tais combinações usaremos os conectivos lógicos: e , ou , não 14 Exemplos: A lua é quadrada e a neve é branca. : p e q A lua é quadrada ou a neve é branca. : p ou q A lua não é quadrada. : não p Obtendo o valor lógico 7+5>7 OU 2=1 Î Verdadeiro V OU V F 7+5>7 E 2=1 Î Falso NÃO( 2 = 1)Î Verdadeiro V E F F NÃO V F 15 A.1.4 ) PRIORIDADE ENTRE OS OPERADORES PRIORIDADE OPERADORES 0 Parênteses e Funções 1 + e – (operadores unários) 2 Potenciação 3 * e / 4 + e – (soma e subtração) 5 Operadores relacionais 6 Não 7 And 8 Or A.1.5 ) EXERCÍCIOS RESOLVIDOS 1. Sendo p = verdade, q = falso, r = verdade, avalie as expressões abaixo: a) p e q b) p ou r c) p ou q d) r ou (p e q) ou p e) (r ou r) e (p ou p) f) (p e r) ou (q e r) g) não (p e q) h) (não (p e r) ou (q e r)) i) (não p e não r) ou q 2. Suponha que A, B e C, I, J, K sejam variáveis. Dados A = 4.0, B = 6.0 e I = 3, qual seria o valor final dos comandos seguintes? a) C ← A * B – I C= _______ d) K ← ( B / A + 2) K = _______ b) K ← I / 4 * 2 K = _______ e) J ← ( A / ( 5 / I )) J = _______ c) C ← B / A + 1 C = _______ 3. Escreva o comando de atribuição para as expressões abaixo: a) 1+ b a b) dc ba − + c) f ed c ba − + d) dc ba −+ 16 4. Encontre os erros dos seguintes comandos de atribuição. DECLARE A COMO LÓGICO DECLARE B, C COMO REAL DECLARE D COMO INTEIRO A ← B = C D ← B C + 1 ← B + C C e B ← 3,5 5. Para o algoritmo abaixo monte a TS e indique que valores a variáveis assumirão: DECLARE A, B, C COMO INTEIRO A ← 0 B ← A + 10 C ← B – 1 A ← 1 B ← A + 10 C ← B – 1 6. Em quais dos seguintes pares é importante à ordem dos comandos? Em outras palavras, quando se muda a ordem dos comandos, os resultados finais se alteram? ( Supor X # Y # Z) a) X ← Y Y ← Z Fazendo X ← Y e depois Y ← Z é o mesmo que Y ← Z e depois X ← Y ? Resolvendo: 1º caso: X ← Y e depois Y ← Z suponha X=1 Y =2 Z= 3 NOME TIPO VALOR X Inteiro 1 Y Inteiro 2 Z Inteiro 3 17 Fazendo X ← Y NOME TIPO VALOR X Inteiro 2 Y Inteiro 2 Z Inteiro 3 Fazendo Y ← Z NOME TIPO VALOR X Inteiro 2 Y Inteiro 3 Z Inteiro 3 Supondo X=1 Y =2 Z= 3 e fazendo X ← Y e depois Y ← Z, temos X=2, Y=3 e Z=3 2º caso : Y ← Z e depois X ← Y Supondo X=1 Y =2 Z= 3, porém invertendo os comandos (fazendo Y ← Z e depois X ← Y ) Resolvendo: suponha X=1 Y =2 Z= 3 NOME TIPO VALOR X Inteiro 1 Y Inteiro 2 Z Inteiro 3 Fazendo Y ← Z NOME TIPO VALOR X Inteiro 1 Y Inteiro 3 Z Inteiro 3 Fazendo X ← Y NOME TIPO VALOR X Inteiro 3 Y Inteiro 3 Z Inteiro 3 Supondo X=1 Y =2 Z= 3 e fazendo Y ← Z e depois X ← Y, temos X= Y= Z=3 Concluindo: mudar a ordem desses comandos produzirá resultado diferente. Faça os itens b, c, d 18 b) X ← Z c) X ← Y d) X ← Y X ← Y Z ← X Z ← Y 7. Uma conta telefônica é composta dos seguintes custos: assinatura: R$ 32,00 impulsos: R$ 0,09 por impulso que exceder a 90 chamadas p/ celular: R$0,35 por impulso Monte a fórmula para calcular o valor da conta para 254 impulsos e 23 chamadas para celular. Elabore um algoritmo que calcula o valor total. 8. Um eletricista precisa comprar fio que irá passar, pelo telhado, por toda a diagonal de uma casa de formato retangular. Como ele não tem condições de medir a diagonal com precisão, a solução alternativa que ele encontrou foi medir os lados da casa, sabendo que a diagonal pode ser calculada com base nos lados pelo Teorema de Pitágoras (a2 = b2 + c2). Considerando que a casa mede11,5 x 6,3 metros, faça um algoritmo que calcule a quantidade mínima necessária de fio a ser comprada. 9. Um professor atribui pesos de 1 a 4 para as notas de quatro avaliações. A nota é calculada por meio da média ponderada (N1 + N2*2 + N3*3 + N4*4)/10, onde N1 é a nota da primeira avaliação, N2 a da segunda, etc..Um aluno tirou as seguintes notas: 8 - 7,5 - 10 - 9. Faça um algoritmo que calcula a média deste aluno. 19 A.2) OPERAÇÕES DE ENTRADA E SAÍDA DE DADOS As unidades de entrada e saída de dados são dispositivos que possibilitam a comunicação entre o usuário e o computador. Através delas, o usuário consegue fornecer dados (entrada de dados) para que a máquina possa processar, assim como, obtém resultados (saída de dados) do processamento. As operações de entrada e saída permitem escrever algoritmos mais genéricos. A utilização dessas unidades é representada nos algoritmos pelos passos de leitura e escrita. A.2.1) LEITURA Forma Geral: LEIA <lista de variáveis> Exemplo 1: LEIA A Simulação do Funcionamento da Leitura Obtém do meio externo, a informação disponível para a leitura. A forma como é feita a leitura depende de como os dados estão organizados. ENTRADA DE DADOS: 32 LEIA A e armazena na(s) variável(eis) definida. NOME TIPO VALOR A INTEIRO 32 A leitura é uma atribuição cujos valores estão externos ao algoritmo. Exemplo 2: 20 ENTRADA DE DADOS: 32 45 60 LEIA A, B, C Resultado da leitura: Valores lidos (32, 45, e 60) armazenados nas variáveis A, B, C (na TS) respectivamente. NOME ATRIBUTOS VALOR A Inteiro 32 B Inteiro 45 C Inteiro 60 Exemplo 3 : ENTRADA DE DADOS: 32 45 LEIA A, B 60 LEIA C Resultado da leitura: Valores lidos (32, 45, e 60) armazenados nas variáveis A, B, C (na TS) respectivamente. Exemplo 4 : ENTRADA DE DADOS: 32 LEIA A 45 LEIA B 60 LEIA C Valores lidos (32, 45, e 60) armazenados nas variáveis A, B, C (na TS) respectivamente. 21 Exemplo 5 : ENTRADA DE DADOS: 32 LEIA A 60 LEIA B 45 LEIA C Resultado da leitura: Valores lidos (32, 60, e 45) armazenados nas variáveis A, B, C (na TS) respectivamente Exemplo 6 : ENTRADA DE DADOS: 32 LEIA A 60 LEIA B LEIA C (não há definição de dado p/ C) Resultado da leitura: Valores lidos (32, 60) armazenados nas variáveis A, B respectivamente, porém como não há especificação de dado para C, um erro de leitura de dados ocorre. 22 A.2.2) ESCRITA Forma Geral: ESCREVA <lista de variáveis> Imprime no dispositivo de saída (vídeo, impressora, etc.) o conteúdo da(s) variável(eis) especificadas. Textos explicativos podem também ser impressos e intercalados com as variáveis. Exemplo: ESCREVA A,B,C Lista de variáveis NOME ATRIBUTOS VALOR A Inteiro 32 B Inteiro 45 C Inteiro 60 32 45 60 Resultado da Escrita: Os valores contidos em A, B, C (na TS) são exibidos (vídeo, impressora, etc.) na mesma linha. ESCREVA A ESCREVA B ESCREVA C NOME ATRIBUTOS VALOR A Inteiro 32 B Inteiro 45 C Inteiro 60 32 45 60 Resultado da Escrita: Os valores contidos em A, B, C (na TS) são exibidos (vídeo, impressora, etc.), porém cada instrução ESCREVA produz uma linha na saída. 23 É possível utilizar mensagens no comando ESCREVA. ESCREVA ‘VALOR =’, A NOME ATRIBUTOS VALOR A Inteiro 32 B Inteiro 45 C Inteiro 60 VALOR = 32 Resultado da Escrita: O valor contido em A (na TS) é exibido (vídeo, impressora, etc.), juntamente com a mensagem “VALOR =” . ESCREVA ‘A =’, A NOME ATRIBUTOS VALOR A Inteiro 32 B Inteiro 45 C Inteiro 60 A = 32 Resultado da Escrita: O valor contido em A (na TS) é exibido (vídeo, impressora, etc.), juntamente com a mensagem “A =” . ESCREVA ‘A =’, A, ‘B =’,B NOME ATRIBUTOS VALOR A Inteiro 32 B Inteiro 45 C Inteiro 60 A = 32 B= 45 Resultado da Escrita: O valor contido em A e B (na TS) são exibidos (vídeo, impressora, etc.), juntamente com a mensagem “A =” e ‘B=’ respectivamente, na mesma linha. ESCREVA ‘A =’, A, ‘B =’, B ESCREVA ‘C =’, C 24 NOME ATRIBUTOS VALOR A Inteiro 32 B Inteiro 45 C Inteiro 60 A = 32 B= 45 C = 60 Resultado da Escrita: O valor contido em A e B (na TS) são exibidos (vídeo, impressora, etc.), juntamente com a mensagem “A =” e ‘B=’ respectivamente, na mesma linha e o valor de C é apresentado em uma nova linha juntamente com sua mensagem. ESCREVA ‘A =’, A ESCREVA ‘B =’, B ESCREVA ‘C =’, C NOME ATRIBUTOS VALOR A Inteiro 32 B Inteiro 45 C Inteiro 60 A = 32 B = 45 C = 60 Resultado da Escrita: O valor contido em A, B e C (na TS) são exibidos (vídeo, impressora, etc.), juntamente com as suas respectivas mensagens cada um em sua linha. A instrução escreva pode ser usada para escrever mensagens, sem a utilização de variáveis. ESCREVA ‘DADOS INVALIDOS’ DADOS INVALIDOS’ 25 A.3) EXEMPLOS DE ALGORITMOS 1) Leia um valor inteiro e escreva um algoritmo para escrevê-lo. DECLARE A COMO INTEIRO LEIA A ESCREVA ‘O VALOR LIDO = ‘, A Simulação do algoritmo Cria a área que armazenará o valor a ser lido Escreve o valor lido, acompanhado de uma mensagem Lê da entrada de dados o valor DECLARE A COMO INTEIRO NOME TIPO VALOR A INTEIRO LEIA A Lê um valor da entrada de dados. Para testar o algoritmo é válido utilizar valores numéricos aleatórios, porém, o algoritmo deve funcionar para qualquer valor. entrada de dados: 80 LEIA A e armazena na variável definida. NOME TIPO VALOR A INTEIRO 80 ESCREVA ‘O VALOR LIDO = ‘, A NOME ATRIBUTOS VALOR A Inteiro 80 O VALOR LIDO = 80 26 2) Leia dois valores e escreva um algoritmo para escrevê-los. DECLARE A, B COMO INTEIRO Cria as variáveis que armazenarão os valores lidos LEIA A ESCREVA ‘O VALOR LIDO = ‘, A LEIA B ESCREVA ‘O VALOR LIDO = ‘, B Lê da entrada de dados o primeiro valor Escreve o primeiro valor lido, acompanhado de uma mensagem Lê da entrada de dados o segundo valor Escreve o segundo valor lido, acompanhado de uma mensagem Simulação do algoritmo DECLARE A, B COMO INTEIRO NOME TIPO VALOR A INTEIRO BINTEIRO LEIA A Lê um valor da entrada de dados. Para testar o algoritmo é válido utilizar valores numéricos aleatórios, porém, o algoritmo deve funcionar para qualquer valor inteiro lido. Observe que dois valores são colocados na entrada de dados ( 78 e 65 ), um em cada linha. entrada de dados: 78 LEIA A 65 e armazena na variável definida. NOME TIPO VALOR A INTEIRO 78 B INTEIRO 27 ESCREVA ‘O VALOR LIDO = ‘, A NOME TIPO VALOR A INTEIRO 78 B INTEIRO O VALOR LIDO = 78 LEIA B Lê um valor da entrada de dados. Observe que o segundo valor será lido, o primeiro já foi utilizado pela primeira leitura. entrada de dados: 65 LEIA B e armazena na variável definida. NOME TIPO VALOR A INTEIRO 78 B INTEIRO 65 ESCREVA ‘O VALOR LIDO = ‘, B NOME TIPO VALOR A INTEIRO 78 B INTEIRO 65 O VALOR LIDO = 78 O VALOR LIDO = 65 28 3) Leia dois valores e escreva um algoritmo para escrevê-los (variação da solução do exercício anterior). A modificação aqui apresentada está na utilização de apenas uma variável que armazenará os valores lidos. Anteriormente os dois valores eram lidos através de duas variáveis ( A e B ). Isso pode ser feito pelo seguinte motivo: após a escrita do valor contido em A, não há necessidade de conservar esse valor em A, podendo ser substituído por outro. DECLARE A COMO INTEIRO Cria a variável que armazenará os valores lidos LEIA A ESCREVA ‘O VALOR LIDO = ‘, A LEIA A ESCREVA ‘O VALOR LIDO = ‘, A Lê da entrada de dados o primeiro valor Escreve o primeiro valor lido, acompanhado de uma mensagem Lê da entrada de dados o segundo valor Escreve o segundo valor lido, acompanhado de uma mensagem Simulação do algoritmo DECLARE A COMO INTEIRO NOME TIPO VALOR A INTEIRO LEIA A Lê um valor da entrada de dados. Observe que dois valores são colocados na entrada de dados ( 78 e 65 ) entrada de dados: 78 LEIA A 65 e armazena na variável definida. NOME TIPO VALOR A INTEIRO 78 29 ESCREVA ‘O VALOR LIDO = ‘, A NOME TIPO VALOR A INTEIRO 78 O VALOR LIDO = 78 LEIA A Lê um valor da entrada de dados. Observe que o segundo valor será lido, o primeiro já foi utilizado pela primeira leitura. entrada de dados: 65 LEIA A e armazena na variável definida. Observe que o valor armazenado em A ( 78 ) é “perdido”, substituído pelo novo valor obtido através da leitura. NOME TIPO VALOR A INTEIRO 65 ESCREVA ‘O VALOR LIDO = ‘, A NOME TIPO VALOR A INTEIRO 65 O VALOR LIDO = 78 O VALOR LIDO = 65 30 4) Leia dois valores inteiros e calcule a soma. DECLARE V1, V2, RESULTADO COMO INTEIRO LEIA V1, V2 RESULTADO ← V1 + V2 ESCREVA ‘ VALORES LIDOS =’, V1, V2 ESCREVA ‘A SOMA DOS VALORES = ‘, RESULTADO Escreve os valores lidos, acompanhados de uma mensagem Cria as áreas (V1, V2) que armazenarão os valores a serem lidos. E a área que armazenará a soma (RESULTADO) Escreve a soma (RESULTADO) calculada Lê da entrada de dados os valores que serão somados Cria a atribuição, onde a expressão é justamente a soma entre os dois valores lidos, representados por V1 e V2 e quando avaliada a expressão o valor resultante será armazenado em RESULTADO Simulação do algoritmo DECLARE V1, V2, RESULTADO COMO INTEIRO NOME TIPO VALOR V1 INTEIRO V2 INTEIRO RESULTADO INTEIRO LEIA V1, V2 Lê dois valores da entrada de dados. Para testar o algoritmo utilizamos dois valores numéricos aleatórios, porém, o algoritmo deve funcionar para qualquer valor. entrada de dados: 3 5 LEIA V1, V2 e armazena na variável definida. 31 NOME TIPO VALOR V1 INTEIRO 3 V2 INTEIRO 5 RESULTADO INTEIRO RESULTADO ← V1 + V2 Avalia-se, em primeiro lugar, a “expressão” à direita do sinal de atribuição (←); V1 V2 RESULTADO ← 3 + 8 5 e em segundo lugar, o valor computado da expressão é atribuído ao identificador. NOME TIPO VALOR V1 INTEIRO 3 V2 INTEIRO 5 RESULTADO INTEIRO 8 ESCREVA ‘ VALORES LIDOS =’, V1, V2 NOME TIPO VALOR V1 INTEIRO 3 V2 INTEIRO 5 RESULTADO INTEIRO 8 VALORES LIDOS = 3 5 32 ESCREVA ‘A SOMA DOS VALORES = ‘, RESULTADO NOME TIPO VALOR V1 INTEIRO 3 V2 INTEIRO 5 RESULTADO INTEIRO 8 VALORES LIDOS = 3 5 A SOMA DOS VALORES = 8 5) Leia dois valores inteiros e calcule a soma (variação da solução do exercício anterior). DECLARE V1, V2, RESULTADO COMO INTEIRO LEIA V1 LEIA V2 RESULTADO ← V1 + V2 ESCREVA ‘ VALORES LIDOS =’, V1, V2 ESCREVA ‘A SOMA DOS VALORES = ‘, RESULTADO A modificação aqui apresentada está na maneira como os valores são agora lidos. Anteriormente os dois valores eram lidos através de uma única leitura ( LEIA V1, V2 ). Nessa versão cada valor é lido através de uma leitura, isso provoca alteração na maneira de organizar os dados na entrada de dados. ANTES: os dados eram colocados na mesma linha ( uma leitura ) Entrada de dados: 3 5 LEIA V1, V2 AGORA: cada dado é colocado em uma linha ( duas leituras → duas linhas ) Entrada de dados: 3 5 33 Entrada de dados: 3 LEIA V1 5 LEIA V2 6) Leia dois valores inteiros e calcule a soma (variação da solução do exercício anterior). DECLARE V1, V2, RESULTADO COMO INTEIRO LEIA V1 LEIA V2 RESULTADO ← V1 + V2 ESCREVA ‘ PRIMEIRO VALOR LIDO =’, V1 ESCREVA ‘ SEGUNDO VALOR LIDO =’, V2 ESCREVA ‘A SOMA DOS VALORES = ‘, RESULTADO A modificação aqui apresentada está na maneira como os valores são agora escritos. Anteriormente os dois valores eram escritos através de uma única escrita (ESCREVA ‘ VALORES LIDOS =’, V1, V2). Nessa versão cada valor é apresentado através de uma escrita, isso provoca alteração na maneira de apresentar os dados na saída. ANTES ESCREVA ‘ VALORES LIDOS =’, V1, V2 NOME TIPO VALOR V1 INTEIRO 3 V2 INTEIRO 5 RESULTADO INTEIRO 8 VALORES LIDOS = 3 5 34 AGORA ESCREVA ‘ PRIMEIRO VALOR LIDO =’, V1 NOME TIPO VALOR V1 INTEIRO 3 V2 INTEIRO 5 RESULTADO INTEIRO 8 PRIMEIRO VALOR LIDO = 3 ESCREVA ‘ SEGUNDO VALOR LIDO =’, V2 NOME TIPO VALOR V1 INTEIRO 3V2 INTEIRO 5 RESULTADO INTEIRO 8 PRIMEIRO VALOR LIDO = 3 SEGUNDO VALOR LIDO = 8 7) Escreva um algoritmo para calcular a área de um círculo, onde o valor do raio é lido. Etapas para construção do algoritmo: 1- criar as variáveis; 2- calcular a área utilizando a fórmula: área = π * raio2, onde π = 3.1415 3- apresentar a área calculada. Solução: DECLARE RAIO, AREA COMO REAIS LEIA RAIO AREA ← 3.1415 * RAIO * RAIO ESCREVA AREA Variação da Solução A solução acima pode ser alterada criando um nome ( PI ) que conterá o valor de π. DECLARE RAIO, AREA, PI COMO REAIS 35 LEIA RAIO PI ← 3.1415 AREA ← PI * RAIO * RAIO ESCREVA AREA A.4) EXERCÍCIOS PROPOSTOS 1. Como deveria estar organizados os dados, na entrada de dados, se no algoritmo as leituras fossem: a) LEIA K, MM, T LEIA Y, I b) LEIA J LEIA T, O c) LEIA NOME, SEXO, SALARIO d) LEIA A LEIA A e) LEIA A, B LEIA C LEIA A,B 2. Como seriam impressos os dados, na saída de dados, se no algoritmo as impressões fossem: a) ESCREVA A ESCREVA B b) ESCREVA ‘NAO SEI’ c) ESCREVA A, B, C 3. Com base nos dados abaixo, qual o valor final de cada variável: a) LEIA K, MM, T ENTRADA DE DADOS: 1 2 3 4 LEIA Y, I 5 6 b) LEIA J ENTRADA DE DADOS: 1 2 3 4 LEIA T, O, R 5 6 7 c) LEIA NOME, SEXO, SALARIO ENTRADA DE DADOS: 1 2 3 4 5 d) LEIA A ENTRADA DE DADOS: 1 2 3 4 LEIA A f) LEIA A ENTRADA DE DADOS: 1 36 LEIA A 2 LEIA A, B 3 4 g) LEIA A, B ENTRADA DE DADOS: 1 5 LEIA A 2 LEIA A, B 3 4 LEIA A,B 1 5 4. Simular a execução do seguinte algoritmo, como os valores de entrada apresentados abaixo: DECLARE A, B, C COMO INTEIROS DECLARE MEDIA COMO REAL ENTRADA LEIA A, B, C 4 2 6 ESCREVA A, B, C 10 6 0 MEDIA ← ( A + B + C ) /3 7 8 7 ESCREVA MEDIA LEIA A, B, C ESCREVA A, B, C MEDIA ← ( A + B + C ) /3 ESCREVA MEDIA 5. Escreva um algoritmo que leia uma temperatura em graus Celsius e converta para graus Fahrenheit, cuja fórmula de conversão é: ( 9 * graus Celsius + 160 ) /5. 6. Escreva um algoritmo que leia uma temperatura em graus Fahrenheit e converta para graus Celsius, cuja fórmula de conversão é: ( graus Fahrenheit – 32) * (5/9). 7. Escreva um algoritmo que leia três valores, representando o comprimento, largura e altura de uma caixa retangular e calcule o seu volume, cuja fórmula é: VOLUME = COMPRIMENTO * LARGURA * ALTURA 8. Escreva um algoritmo que leia dois valores A e B, e efetue a troca dos valores de forma que A passe a possuir o valor de B e B passa a possuir o valor de A. Apresente os valores antes e depois da troca. 9. Escreva um algoritmo que leia dois valores PRESTAÇÂO e TAXA, representando o valor de uma prestação e a taxa de juros cobrada pelo atraso. Calcule a prestação atrasada pela fórmula: ATRASO = PRESTAÇÂO + ( PRESTAÇÂO * TAXA /100). 10. Escreva um algoritmo que leia dois valores, representando o raio e altura de uma lata e calcule o seu volume, cuja fórmula é: VOLUME = 3.1415 * RAIO2 * ALTURA 11. Escreva um algoritmo para ler, calcular e escrever a média aritmética entre quatro números. 12. Escrever um algoritmo que lê 3 valores a, b, c que são lados de um triângulo e calcule a área deste triângulo. s s a s b s c( )( )(− − − ) , onde S = (A+B+C)/2 37 13. O custo ao consumidor de um carro novo é a soma do custo de fábrica com a percentagem do distribuidor e dos impostos ( aplicados ao custo de fábrica). Supondo que a percentagem do distribuidor seja de 12% e os impostos de 45%, escrever um algoritmo para ler o custo de fábrica do carro e escrever o custo ao consumidor. 14. Num curso, a nota final de um estudante é calculada a partir de seu desempenho em três aspectos. Existe um exame que vale 30% da nota final, nota de trabalho que vale 20% da nota final e o exame final que vale 50% da nota final. Escreva um algoritmo que leia as três notas de um aluno e calcule sua nota final. 15. Escreva um algoritmo que calcule o valor da conversão em dólar de um valor lido em real. O algoritmo deverá ler o valor da cotação do dólar e a quantidade de reais. 16. Escreva um algoritmo que dados os litros gastos, os quilômetros percorridos por um automóvel e o valor do litro de combustível, calcule os gastos de combustível em Reais/km. 17. Escreva um algoritmo para ler o número de eleitores de um município, o número de votos brancos, nulos e válidos. Calcular e escrever o percentual que cada um representa em relação ao total de eleitores. 18. Escreva um algoritmo para ler o salário mensal de um funcionário e o percentual de reajuste. Calcular e escrever o valor do novo salário. 19. Uma revendedora de carros usados, paga a seus funcionários vendedores, um salário fixo por mês, mais uma comissão também fixa para cada carro vendido e mais 5% do valor das vendas por ele efetuadas. Escrever um algoritmo que leia o número de carros por ele vendidos, o valor total de suas vendas, o salário fixo e a comissão que recebe por carro vendido. Escreva um algoritmo que calcule e escreva o salário mensal do vendedor. 20. Escreva um algoritmo que leia dois lados de um triângulo retângulo e calcula a hipotenusa. 21. Uma criança quer saber qual é a soma de todas as idades que ela já teve. Elaborar algoritmo que lê uma idade qualquer e responde rapidamente a essa pergunta [fórmula para calcular a soma dos N primeiros números inteiros: N (N+1)/2]. 22. Uma conta telefônica é composta dos seguintes custos: assinatura: R$ 21,40 impulsos: R$ 0,03 por impulso que exceder a 90 interurbanos chamadas p/ celular: R$0,40 por impulso elabore um algoritmo que lê os impulsos excedentes, valor de interurbanos e quantidade de chamadas para celular e calcula o valor da conta. B) SELEÇÃO Também chamada de estrutura de decisão, a seleção é utilizada quando a execução de uma seqüência de passos depende do valor de uma condição (trechos alternativos que são ou não processados de acordo com o resultado da condição). A seleção pode ser de um ramo ou de dois ramos. 38 B.1) SELEÇÃO DE UM RAMO É utilizada quando uma seqüência de passos depender de uma condição verdadeira, e não há seqüência a executar ser executada quando a condição for falsa. Forma geral: SE <condição> ENTÃO <seqüência de passos> FIM-SE Esquema de Funcionamento da Seleção de um Ramo Exemplo: 1) Escreva um algoritmo que leia um valor e escreva-o caso seja maior que 10. DECLARE A COMO INTEIRO A > 10 ? LEIA A SE A > 10 ENTÃO SIM ESCREVA A FIM-SE ESCREVA A NÃO Simulação do algoritmo DECLARE A COMO INTEIRO NOME TIPO VALOR A INTEIRO 39 LEIA A Lê um valor da entrada de dados. entrada de dados: 78 LEIA A e armazena na variável definida. NOME TIPO VALOR A INTEIRO 78 SE A > 10 ENTÃO verifica se o valor contido em A é maior que 10, caso seja verdadeiro executa os comandos contidos na seleção, neste caso: ESCREVA A. Caso contrário ignora os comandos contidos na seleção.B.2) SELEÇÃO DE DOIS RAMOS Utiliza-se quando se deseja executar uma seqüência de passos se uma condição é verdadeira, e se executa uma outra seqüência se a condição é falsa. Forma geral: SE <condição> ENTÃO <seqüência de passos1> SENÃO <seqüência de passos2> FIM-SE Esquema de Funcionamento da Seleção de dois Ramos 40 Exemplo: 1) Escreva um algoritmo que leia um valor e escreva-o indicando se ele é maior ou igual a 10 e menor que 10. DECLARE A COMO INTEIRO LEIA A SE A >= 10 ENTÃO ESCREVA 'VALOR MAIOR OU IGUAL A 10' , A SENÃO ESCREVA 'VALOR MENOR QUE 10' , A FIM-SE NÃO A >= 10 ? SIM ESCREVA 'VALOR ESCREVA 'VALOR MENOR QUE 10' , A MAIOR OU IGUAL A 10', A 41 B.3) EXEMPLOS DE ALGORITMOS 1) Faça um algoritmo que leia um numero inteiro e o imprima se ele for menor que 5. DECLARE NUMERO COMO INTEIRO LEIA NUMERO SE (NUMERO < 5 ) ENTÃO ESCREVA NUMERO FIM-SE 2) Elaborar um algoritmo que lê uma nota e indique a situação do aluno. Se a nota obtida for de 6 a 10, aprovado; caso contrário, reprovado. DECLARE NOTA COMO INTEIRO LEIA NOTA SE (NOTA < 6 ) ENTÃO ESCREVA ‘ALUNO REPROVADO’ SENÂO ESCREVA ‘ALUNO APROVADO’ FIM-SE 3) Elaborar um algoritmo que lê uma nota e indique a situação do aluno. Se a nota obtida for de 6 a 10, aprovado; se 4 ou 5.9 vs e menor que 4 reprovado. DECLARE NOTA COMO INTEIRO LEIA NOTA SE (NOTA > 6 ) ENTÃO ESCREVA ‘ALUNO APROVADO’ SENÂO SE ( ( NOTA < 6 ) E ( NOTA >= 4) ENTÃO ESCREVA ‘ALUNO EM VS’ SENÂO ESCREVA ‘ALUNO REPROVADO’ FIM_SE FIM-SE 4) Faça um algoritmo que leia dois números inteiros e descubra o maior. DECLARE VALOR1, VALOR2 COMO INTEIRO LEIA VALOR1, VALOR2 SE VALOR1> VALOR2 ENTÃO ESCREVA VALOR1 SENÃO ESCREVA VALOR2 FIM-SE 42 Variação da solução DECLARE VALOR1, VALOR2, MAIOR COMO INTEIRO LEIA VALOR1, VALOR2 SE VALOR1> VALOR2 ENTÃO MAIOR← VALOR1 SENÃO MAIOR← VALOR2 FIM-SE ESCREVA MAIOR 5) Faça um algoritmo que obtenha três números reais e informe o maior deles. DECLARE NUMA, NUMB, NUMC, MAIOR COMO REAL LEIA (NUMA, NUMB, NUMC SE NUMA > NUMB ENTÃO MAIOR ← NUMA SENÃO MAIOR ← NUMB FIM-SE SE NUNC > MAIOR ENTÃO MAIOR ←NUMC FIM-SE ESCREVA MAIOR Variação da solução DECLARE NUMA, NUMB, NUMC, MAIOR COMO REAL LEIA NUMA, NUMB, NUMC SE ((NUMA > NUMB) and (NUMA > NUMC)) ENTÃO MAIOR ← NUMA SENÃO SE ((NUMB > NUMA) and (NUMB > NUMC)) ENTÃO MAIOR ← NUMB SENÃO MAIOR ← NUMC FIM-SE FIM-SE ESCREVA MAIOR 43 Aninhamentos Um aninhamento é o fato de se ter qualquer uma seleção dentro de outra seleção. Para que o aninhamento esteja correto é necessário que a construção interna esteja completamente embutida na construção externa. Exemplo: Aninhamento correto SE < condição 1 > ENTÃO SE < condição 2 > ENTÃO SE < condição 3 > ENTÃO <seqüência de passos 3 > SENÃO <seqüência de passos 4 > FIM-SE SENÃO SE < condição 4 > ENTÃO <seqüência de passos 5 > SENÃO SE < condição 5 > ENTÃO <seqüência de passos 6 > SENÃO <seqüência de passos 7 > FIM-SE FIM-SE FIM-SE SENÃO SE < condição 6 > ENTÃO <seqüência de passos 8 > SENÃO SE < condição 7 > ENTÃO <seqüência de passos 9 > SENÃO SE < condição 8 > ENTÃO <seqüência de passos 10 > SENÃO <seqüência de passos 11 > FIM-SE FIM-SE FIM-SE FIM-SE 44 Aninhamento incorreto SE < condição 1 > ENTÃO SE < condição 2 > ENTÃO SE < condição 3 > ENTÃO < seqüência de passos 3 > SENÃO <seqüência de passos 4 > SENÃO SE < condição 4 > ENTÃO <seqüência de passos 5 > SENÃO SE < condição 5 > ENTÃO <seqüência de passos 6 > SENÃO <seqüência de passos 7 > FIM-SE FIM-SE FIM-SE FIM-SE FIM-SE O FIM-SE que deveria estar nessa posição e foi colocado erradamente em outra posição Aninhamento errado. Observe as linhas se cruzando 1) Fazer um algoritmo que leia três valores inteiros, distintos entre si, determine e imprima o menor deles: DECLARE A,B,C, MENOR COMO INTEIRO LEIA A, B,C determine o menor número SE A<B e A<C ENTÃO MENOR ←A SENÃO determine o menor dentre B e C FIM-SE SE B < C ENTÃO MENOR ← B SENÃO MENOR ←C FIM-SE ESCREVA MENOR 45 2) Dados três valores inteiros X,Y,Z, verificar se eles podem ser os comprimentos dos lados de um triângulo e, se forem , verificar se é um triângulo eqüilátero, isósceles ou escalenos. Se eles não formarem um triângulo, escrever uma mensagem. Sabe-se que o comprimento de cada lado de um triângulo é menor do que a soma dos comprimentos dos outros dois lados. DECLARE X,Y,Z COMO INTEIRO LEIA X,Y,Z SE ((X<Y+Z) e (Y <X+Z) e (Z<X+Y)) ENTÃO verifique o tipo do triângulo SENÃO Escreva ‘Não Existe Triângulo’ FIM-SE SE X=Y E X = Z ENTÃO ESCREVA ‘TRIANG. QUILATERO’ SENÃO Verifique se ele é escaleno ou isóscele FIM-SE SE X=Y OU X = Z OU Y = Z ENTÃO ESCREVA ‘TRIANG. ISOSCELES’ SENÃO ESCREVA ‘TRIANG. ISCALENO’ FIM-SE 3) Dados três valores distintos, coloca-los em ordem crescente: DECLARE L, M, N, AUXILIAR COMO INTEIRO LEIA L, M, N Armazene em L o menor valor Armazene em M o valor intermediário e em N o maior valor ESCREVA L,M,N SE L > M ou L > N ENTÃO SE M < N ENTÃO troque L com M SENÃO troque L com N FIM-SE FIM-SE AUXILIAR ← L L ← M M ←AUXILIAR AUXILIAR ← L L ← N N ← AUXILIAR SE M > N ENTÃO AUXILIAR – M M ← N N ← AUXILIAR FIM-SE 46 B.4) EXERCÍCIOS PROPOSTOS 1. Escreva um algoritmo que leia um valor verifique se ele se encontra no intervalo entre (5 ,20]. 2.Elaborar um algoritmo que leia uma letra que pode ser ‘F’ ou ‘J’ e mostra a mensagem “pessoa física”, “pessoa jurídica” ou "tipo de pessoa inválido", conforme o caso. 3. Elaborar um algoritmo que lê 2 valores a e b e os escreve com a mensagem: ‘São múltiplos’ ou ‘Não são múltiplos’. 4. Tendo como dados de entrada a altura e o sexo de uma pessoa (‘M’ masculino e ‘F’ feminino), construa um algoritmo que calcule seu peso ideal, utilizando as seguintes fórmulas: - para homens: (72.7*h)-58 - para mulheres: (62.1*h)-44.7 5. Um banco concederá um crédito especial aos seus clientes, variável com o saldo médio no último ano. Faça um algoritmo que leia o saldo médio de um cliente e calcule o valor do crédito de acordo com a tabela abaixo. Mostre uma mensagem informando o saldo médio e o valor do crédito. Saldo médio Percentual de 0 a 500 nenhum crédito de 501 a 1000 20% do valor do saldo médio de 1001 a 1600 30% do valor do saldo médio acima de 1601 40% do valor do saldo médio 6. Elabore um algoritmo que lê um número que representa uma senha, verifica se a senha está correta ou não, comparando-a com a senha 34567, e informa "Acesso autorizado" ou "Acesso negado", conforme o caso. 7. O departamento que controla o índice de poluição do meio ambiente mantém 3 grupos de indústrias que são altamente poluentes do meio ambiente. O índice de poluição aceitável varia de 0,05 até 0,25. Se o índice sobe para 0,3 as indústrias do 1o grupo são intimadas a suspenderem suas atividades, se o índice cresce para 0,4 as do 1o e 2o grupo são intimadas a suspenderem suas atividades e se o índice atingir 0,5 todos os 3 grupos devem ser notificados a paralisarem suas atividades. Escrever um algoritmo que lê o índice de poluição medido e emite a notificação adequada aos diferentes grupos de empresas. 8. Um sistema de equações lineares da forma : Ax + By = C Dx + Ey = F pode ser resolvido utilizando-se as seguintes fórmulas. EC - BF AF - CD X = ------------------ e Y = --------------------------- AE - BD AE - BD 47 Escreva um algoritmo para ler o conjunto de coeficientes (A, B, C, D, E, F) e imprimir a solução, ou seja, X e Y. Verifique as situações onde X e Y não podem ser determinados. 9. Elaborar um algoritmo que lê uma altura e mostra uma mensagem conforme a faixa de altura: menos que 1,60 “baixa estatura” de 1,60 a 1,85 “estatura normal” mais que 1,85 “alta estatura” 10.Uma faculdade atribui menções aos alunos conforme a faixa de notas que tenha atingido: 9,0 a 10: SS (superior) 7,0 a 8,9: MS (médio superior) 5, 0 a 6,9: MM (médio) 3,0 a 4,9: MI (médio inferior) 0,1 a 2,9: II (inferior) 0 : SR (sem rendimento). Faça um algoritmo que lê a nota e informa a menção. 11.Um imposto é calculado com base na seguinte tabela: Até 1.200,00 isento de 1.201,00 a 2.500,00 10% de 2.501,00 a 5.000,00 15% acima de 5.000,00 20%. Escreva um algoritmo que leia o valor base e calcule o imposto a pagar. 12.Faça um algoritmo que leia as 3 notas de um aluno e calcule a média final deste aluno. Considerar que a média é ponderada e que o peso das notas é: 2,3 e 5, respectivamente. Se a nota obtida for de 6 a 10, aprovado; se 4 ou 5.9, vs e menor que 4 reprovado. 13.Um ano é bissexto se for divisível por 4 exceto os séculos, que são bissextos se forem múltiplos de 400. Escreva um algoritmo que determina se um ano é bissexto. 14.Escrever um algoritmo que lê três valores representado o dia, mês e ano de uma data e verifica se ela está correta. Supor que o mês de fevereiro tem 29 dias. 15.Escrever um algoritmo que lê um valor em reais e calcula qual o menor número possível de notas de 100, 50, 10, 5 e 1 em que o valor lido pode ser decomposto. Escrever o valor lido e a relação de notas necessárias. 16.Dadas 8 bolas tendo uma deles peso diferente das demais. Dizer qual é essa bola e se ela é mais pesada ou mais leve que as outras e qual o seu peso. Imprimir também o peso de todas as bolas. 48 C) OPERAÇÕES DE REPETIÇÃO 1) Leia 5 valores e escreva um algoritmo para escrevê-los. O algoritmo é construído criando apenas uma variável cujos valores são lidos, escritos e descartados pela leitura do próximo valor. DECLARE A COMO INTEIRO ENTRADA DE DADOS LEIA A 17 ESCREVA ‘O VALOR LIDO = ‘, A 34 LEIA A 1 ESCREVA ‘O VALOR LIDO = ‘, A 23 LEIA A 78 ESCREVA ‘O VALOR LIDO = ‘, A LEIA A ESCREVA ‘O VALOR LIDO = ‘, A LEIA A ESCREVA ‘O VALOR LIDO = ‘, A O problema com a solução anterior, é que se a quantidade de valores a serem lidos crescer, o número de passos do algoritmo também crescerá. Por exemplo: Leia 10 valores e escreva um algoritmo para escrevê-los. DECLARE A COMO INTEIRO ENTRADA DE DADOS LEIA A 17 ESCREVA ‘O VALOR LIDO = ‘, A 34 LEIA A 1 ESCREVA ‘O VALOR LIDO = ‘, A 23 LEIA A 78 ESCREVA ‘O VALOR LIDO = ‘, A 90 LEIA A 2 ESCREVA ‘O VALOR LIDO = ‘, A 5 LEIA A 8 ESCREVA ‘O VALOR LIDO = ‘, A 15 LEIA A ESCREVA ‘O VALOR LIDO = ‘, A LEIA A ESCREVA ‘O VALOR LIDO = ‘, A LEIA A ESCREVA ‘O VALOR LIDO = ‘, A LEIA A ESCREVA ‘O VALOR LIDO = ‘, A LEIA A ESCREVA ‘O VALOR LIDO = ‘, A Observe no algoritmo anterior que um conjunto de passos se repete várias vezes: 49 DECLARE A COMO INTEIRO LEIA A ESCREVA ‘O VALOR LIDO = ‘, A LEIA A ESCREVA ‘O VALOR LIDO = ‘, A LEIA A ESCREVA ‘O VALOR LIDO = ‘, A LEIA A ESCREVA ‘O VALOR LIDO = ‘, A LEIA A ESCREVA ‘O VALOR LIDO = ‘, A LEIA A ESCREVA ‘O VALOR LIDO = ‘, A LEIA A ESCREVA ‘O VALOR LIDO = ‘, A LEIA A ESCREVA ‘O VALOR LIDO = ‘, A LEIA A ESCREVA ‘O VALOR LIDO = ‘, A LEIA A ESCREVA ‘O VALOR LIDO = ‘, A Quando isso acontecer, isso é, uma seqüência de passos repetida, podemos utilizar as estruturas de repetição, que podem ser de 2 tipos: Número conhecido de repetição e número não conhecido de repetição. C.2) NÚMERO CONHECIDO DE REPETIÇÕES Essa estrutura de repetição é utilizada quando se conhece exatamente o número de vezes que a seqüência será repetida. Forma geral: REPETIR <especificação de vezes> <seqüência de passos a ser repetida > FIM-REPETIR No exemplo anterior, colocamos a seqüência de passos a ser repetida dentro da repetição: DECLARE A COMO INTEIRO REPETIR <especificação de vezes> LEIA A ESCREVA ‘O VALOR LIDO = ‘, A CORPO DA REPETIÇÃO FIM-REPETIR e especificamos o número de vezes que a seqüência deverá ser repetida: <especificação de vezes> <variável> = < valor inicial >, <valor final>, <incremento> 50 < variável > é um identificador ( nome ) que deve ser criado pelo programador. Essa variável também é chamada de controle de repetição. < valor inicial > é um valor inteiro. É o primeiro valor que a variável de controle de repetição assumirá. < valor final > é um valor inteiro. É o valor limite que a variável de controle de repetição assumirá. <incremento> é um valor inteiro. É valor que será adicionado ao valor variável de controle de repetição. Exemplos: a) I = 1, 10, 1 valores de I = 1 2 3 4 5 6 7 8 9 10 Quantidade de valores de I ( 10 valores ), logo uma repetição seria executada 10 vezes. b) I = 10, 20, 1 valores de I = 10 11 12 13 14 15 16 17 18 19 20 Quantidade de valores deI ( 11 valores ), logo uma repetição seria executada 11 vezes. c) I = 11, 20, 1 valores de I = 11 12 13 14 15 16 17 18 19 20 Quantidade de valores de I ( 10 valores ), logo uma repetição seria executada 10 vezes. d) K = 1, 10, 2 valores de K = 1 3 5 7 9 Quantidade de valores de K ( 5 valores ), logo uma repetição seria executada 5 vezes. e) JL = 1, 3, 1 valores de JL = 1 2 3 Quantidade de valores de JL ( 3 valores ), logo uma repetição seria executada 3 vezes. f) JL = 1011, 1013, 1 valores de JL = 1011 1012 1013 Quantidade de valores de JL ( 3 valores ), logo uma repetição seria executada 3 vezes. g) JL = 100, 102, 1 valores de JL = 100 101 102 Quantidade de valores de JL ( 3 valores ), logo uma repetição seria executada 3 vezes. h) P = N, J, K A especificação dos valores de P e consequentemente o número de repetições dependerá de: 1. É necessário que todas as variáveis (N, J, K) estejam declaradas como inteiras; 2. Que tenham valores inteiros na TS. Obs.: O número de repetição está em função do número de valores que a variável de controle assumir. 51 No exemplo do algoritmo anterior: DECLARE A COMO INTEIRO LEIA A ESCREVA ‘O VALOR LIDO = ‘, A LEIA A ESCREVA ‘O VALOR LIDO = ‘, A LEIA A ESCREVA ‘O VALOR LIDO = ‘, A LEIA A ESCREVA ‘O VALOR LIDO = ‘, A LEIA A DECLARE A, I COMO INTEIRO ESCREVA ‘O VALOR LIDO = ‘, A EQUIVALE REPETIR I = 1, 10, 1 LEIA A AO LEIA A ESCREVA ‘O VALOR LIDO = ‘, A ALGORITMO ESCREVA ‘O VALOR LIDO = ‘, A LEIA A FIM-REPETIR ESCREVA ‘O VALOR LIDO = ‘, A LEIA A ESCREVA ‘O VALOR LIDO = ‘, A LEIA A ESCREVA ‘O VALOR LIDO = ‘, A LEIA A ESCREVA ‘O VALOR LIDO = ‘, A Esquema de Funcionamento da Repetição Repetir 52 A partir do esquema de funcionamento anterior podemos simular o algoritmo abaixo: DECLARE A, I COMO INTEIRO REPETIR I = 1 ,10, 1 LEIA A ESCREVA ‘O VALOR LIDO = ‘, A FIM-REPETIR REPETIR I = 1 , 10, 1 Inicializa a variável de controle I ← 1 Executa a seqüência de passos LEIA A ESCREVA ‘O VALOR LIDO = ‘, A REPETIR I = 1 , 10, 1 Incrementa a variável de controle I ← I + 1 Verifica se o novo valor da variável de controle ultrapassou o valor do limite Sim Sair da Repetição Simulação do algoritmo DECLARE A, I COMO INTEIRO NOME TIPO VALOR A INTEIRO I INTEIRO 53 REPETIR I = 1 ,10, 1 Inicializa variável de controle ( passo vindo do esquema de func. da repetição), com valor inicial I = 1, 10, 1 I ← 1 NOME TIPO VALOR A INTEIRO I INTEIRO 1 LEIA A Lê um valor da entrada de dados. Observe que os dez valores são colocados na entrada de dados ( 17 34 1 23 78 90 2 5 8 15 ) entrada de dados: 17 LEIA A 34 1 23 78 90 2 5 8 15 NOME TIPO VALOR A INTEIRO 17 I INTEIRO 1 ESCREVA ‘O VALOR LIDO = ‘, A NOME TIPO VALOR A INTEIRO 78 O VALOR LIDO = 17 54 FIM-REPETIR retorna ao passo REPETIR I = 1 ,10, 1 REPETIR I = 1 ,10, 1 incrementa a variável de controle ( passo vindo do esquema de func. da repetição), com valor de incremento. I ← I + 1 I ← 1 + 1 2 NOME TIPO VALOR A INTEIRO 17 I INTEIRO 2 Verifica se o novo valor de I ( 2 ) ultrapassa o valor do limite ( 10 ), caso ultrapasse para a repetição, caso negativo continue executando a repetição, no primeiro passo dentro da repetição. LEIA A entrada de dados: 34 LEIA A 1 23 78 90 2 5 8 15 NOME TIPO VALOR A INTEIRO 34 I INTEIRO 2 ESCREVA ‘O VALOR LIDO = ‘, A NOME TIPO VALOR A INTEIRO 34 I INTEIRO 2 O VALOR LIDO = 17 O VALOR LIDO = 34 FIM-REPETIR retorna ao passo REPETIR I = 1 ,10, 1 55 REPETIR I = 1 ,10, 1 incrementa a variável de controle ( passo vindo do esquema de func. da repetição), com valor de incremento. I ← I + 1 I ← 2 + 1 3 NOME TIPO VALOR A INTEIRO 17 I INTEIRO 3 Verifica se o novo valor de I ( 3 ) ultrapassa o valor do limite ( 10 ), caso ultrapasse, parar a repetição, caso negativo continue executando a repetição, no primeiro passo dentro da repetição (LEIA A). Assim, a repetição será executada ... Pularemos os passos intermediários e apresentamos a finalização da repetição ( I está com o valor 9, penúltima repetição e já foram lidos os 9 valores da entrada). REPETIR I = 1 ,10, 1 incrementa a variável de controle ( passo vindo do esquema de func. da repetição), com valor de incremento. I ← I + 1 I ← 9 + 1 10 NOME TIPO VALOR A INTEIRO 8 I INTEIRO 10 Verifica se o novo valor de I ( 10 ) ultrapassa o valor do limite ( 10 ), caso ultrapasse, parar a repetição, caso negativo continue executando a repetição, no primeiro passo dentro da repetição. LEIA A (último valor a ser lido, observe que todos os valores da entrada de dados foram utilizados, lidos através das leituras ) entrada de dados: 15 LEIA A NOME TIPO VALOR A INTEIRO 15 I INTEIRO 10 ESCREVA ‘O VALOR LIDO = ‘, A NOME TIPO VALOR A INTEIRO 15 56 I INTEIRO 10 O VALOR LIDO = 17 O VALOR LIDO = 34 O VALOR LIDO = 1 O VALOR LIDO = 23 O VALOR LIDO = 78 O VALOR LIDO = 90 O VALOR LIDO = 2 O VALOR LIDO = 5 O VALOR LIDO = 8 O VALOR LIDO = 15 FIM-REPETIR retorna ao passo REPETIR I = 1 ,10, 1 REPETIR I = 1 ,10, 1 incrementa a variável de controle ( passo vindo do esquema de func. da repetição), com valor de incremento. I ← I + 1 I ← 10 + 1 11 NOME TIPO VALOR A INTEIRO 17 I INTEIRO 11 Verifica se o novo valor de I ( 11 ) ultrapassa o valor do limite ( 10 ), caso ultrapasse para a repetição, caso negativo continue executando a repetição. Como ultrapassa encerra a repetição e continua executando o algoritmo no próximo passo. Como este não existe passo após a repetição, o algoritmo é encerrado. C.2.1) LEITURA DE DADOS X REPETIÇÂO 57 DECLARE A COMO INTEIRO ENTRADA DE DADOS LEIA A 17 ( 1ª leitura ) ESCREVA ‘O VALOR LIDO = ‘, A 34 ( 2ª leitura ) LEIA A 1 ( 3ª leitura ) ESCREVA ‘O VALOR LIDO = ‘, A 23 ( 4ª leitura) LEIA A 78 ( 5ª leitura ) ESCREVA ‘O VALOR LIDO = ‘, A 90 ( 6ª leitura) LEIA A 2 ( 7ª leitura ) ESCREVA ‘O VALOR LIDO = ‘, A 5 ( 8ª leitura ) LEIA A 8 ( 9ª leitura ) ESCREVA ‘O VALOR LIDO = ‘, A 15 ( 10ª leitura ) LEIAA ESCREVA ‘O VALOR LIDO = ‘, A LEIA A ESCREVA ‘O VALOR LIDO = ‘, A LEIA A ESCREVA ‘O VALOR LIDO = ‘, A LEIA A ESCREVA ‘O VALOR LIDO = ‘, A LEIA A ESCREVA ‘O VALOR LIDO = ‘, A DECLARE A, I COMO INTEIRO REPETIR I = 1 ,10, 1 LEIA A REPETIÇÃO 1ª 2ª 3ª 4ª 5ª 6ª 7ª 8ª 9ª 10ª VALOR DO I 1 2 3 4 5 6 7 8 9 10 ESCREVA ‘O VALOR LIDO = ‘, A FIM-REPETIR 58 DECLARE A COMO INTEIRO ENTRADA DE DADOS LEIA A 17 ( 1ª leitura ) ESCREVA ‘O VALOR LIDO = ‘, A 34 ( 2ª leitura ) LEIA A 1 ( 3ª leitura ) ESCREVA ‘O VALOR LIDO = ‘, A 23 ( 4ª leitura) LEIA A 78 ( 5ª leitura ) ESCREVA ‘O VALOR LIDO = ‘, A 90 ( 6ª leitura) LEIA A 2 ( 7ª leitura ) ESCREVA ‘O VALOR LIDO = ‘, A 5 ( 8ª leitura ) LEIA A 8 ( 9ª leitura ) ESCREVA ‘O VALOR LIDO = ‘, A 15 ( 10ª leitura ) LEIA A ESCREVA ‘O VALOR LIDO = ‘, A LEIA A ESCREVA ‘O VALOR LIDO = ‘, A LEIA A ESCREVA ‘O VALOR LIDO = ‘, A LEIA A ESCREVA ‘O VALOR LIDO = ‘, A LEIA A ESCREVA ‘O VALOR LIDO = ‘, A DECLARE A, I COMO INTEIRO REPETIR I = 11 ,20, 1 LEIA A REPETIÇÃO 1ª 2ª 3ª 4ª 5ª 6ª 7ª 8ª 9ª 10ª VALOR DO I 11 12 13 14 15 16 17 18 19 20 ESCREVA ‘O VALOR LIDO = ‘, A FIM-REPETIR Observe que o valor do I não influência no valor que será lido. O primeiro valor lido será obtido pela primeira leitura (no primeiro algoritmo ) que é também obtido através da leitura quando a repetição executa pela primeira vez (segundo algoritmo) . 59 C.2.2) Exercícios Resolvidos 1. Faça um algoritmo que obtenha 15 números inteiros e calcule o somatório. DECLARE VALOR, SOMA COMO INTEIRO SOMA ← 0 REPETIR J = 1, 15 , 1 LEIA VALOR SOMA ← SOMA + VALOR FIM-REPETIR ESCREVA SOMA 2. Faça um algoritmo que leia 25 números inteiros e calcule o somatório dos números pares. DECLARE VALOR, SOMA COMO INTEIRO SOMA ← 0 REPETIR J = 1, 25 , 1 LEIA VALOR SE ( MOD( VALOR , 2) = 0 ENTÃO SOMA ← SOMA + VALOR FIM-SE FIM-REPETIR ESCREVA SOMA 3. Faça um algoritmo que obtenha 5 números inteiros e informe o maior deles. DECLARE VALOR, MAIOR COMO INTEIRO LEIA VALOR MAIOR ← VALOR REPETIR J = 1,4, 1 LEIA VALOR SE VALOR > MAIOR ENTÃO MAIOR ← VALOR FIM-SE FIM-REPETIR ESCREVA MAIOR 60 C.2.3) EXERCÍCIOS PROPOSTOS 1. Dizer quantas repetições são especificadas e que valores as variáveis de controle de repetição assumirão, pelos seguintes comandos: a) REPETIR I = 8, 10, 2 b) REPETIR J = 1, 2, 100 c) REPETIR K = 2, 2, 2 d) REPETIR A = 15, 11, 1 e) REPETIR O = 1, 12, 3 2. Para os algoritmos a seguir : DECLARE I, V1, V2, V3 COMO INTEIROS LEIA V1 LEIA V2, V3 REPETIR I = 1, 5, 2 LEIA V1, V2 , V3 ESCREVA V1, V2, V3 FIM-REPETIR DECLARE I, V1, V2 COMO INTEIROS REPETIR I = 1, 5, 1 LEIA V1, V2 ESCREVA V1, V2 FIM-REPETIR DECLARE I, V1, V2 COMO INTEIROS LEIA V1 REPETIR I = 2, 1, 1 LEIA V1, V2 ESCREVA V1, V2 FIM-REPETIR DECLARE I, V1, V2 COMO INTEIROS LEIA V1 REPETIR I = 2, 4, 1 LEIA V1, V2 FIM-REPETIR ESCREVA V1, V2 DECLARE I, V1, V2 COMO INTEIROS LEIA V1, V2 ESCREVA V1, V2 REPETIR I = 1, 4, 1 LEIA V1, V2 ESCREVA V1, V2 FIM-REPETIR ESCREVA V1, V2 61 Responda a) Quantos valores são lidos para V1 ? b) Qual o total de valores lidos ? c) Quantas linhas são impressas ? d) Que valores I possuirá ? e) Qual deve ser a organização dos dados de entrada ? 3. Considerando os algoritmos do exercício anterior e com a seguinte organização de entrada: ENTRADA DE DADOS 1 2 2 4 5 6 7 8 8 10 Responda: a) Quais os valores são lidos para V1, V2, V3 ? b) Quais os valores impressos ? c) Verificar a validade das situações seguintes c.1) TS V1 INTEIRO 3 V2 INTEIRO 4 I INTEIRO 2 1 2 3 4 c.2) TS V1 INTEIRO 9 V2 INTEIRO 10 I INTEIRO 6 1 2 3 4 5 6 7 8 62 4. Para o algoritmo abaixo e a entrada de a complete as informações: DECLARE I, V1, V2 COMO INTEIROS REPETIR I = 1, 5, 1 LEIA V1, V2 ESCREVA V1, V2 FIM-REPETIR ENTRADA DE DADOS 1 2 3 4 5 6 7 8 9 10 TS V1 INTEIRO 5 V2 INTEIRO ? I INTEIRO ? 1 2 3 4 5. Escreva um algoritmo que leia cinco temperaturas em graus Celsius e converta cada uma para grau Fahrenheit, cuja fórmula de conversão é: ( 9 * graus Celsius + 160 ) /5. 6. Escreva um algoritmo que leia três temperaturas em grau Fahrenheit e converta cada uma para graus Celsius, cuja fórmula de conversão é: ( graus Fahrenheit – 32) * (5/9). 7. Escreva um algoritmo que leia seis conjuntos de três valores, representando o comprimento, largura e altura de caixas retangulares e calcule o volume de cada uma, cuja fórmula é: VOLUME = COMPRIMENTO * LARGURA * ALTURA 8. Escreva um algoritmo que leia oito conjuntos de dois valores A e B, e efetue a troca dos valores de forma que A passe a possuir o valor de B e B passa a possuir o valor de A. Apresente os valores antes e depois da troca, para cada conjunto. 9. Escreva um algoritmo que leia quinze conjuntos de dois valores PRESTAÇÂO e TAXA, representando o valor de uma prestação e a taxa de juros cobrada pelo atraso. Calcule cada prestação atrasada pela fórmula: ATRASO = PRESTAÇÂO + ( PRESTAÇÂO* TAXA /100) 10. Escreva um algoritmo que leia cem conjuntos de dois valores, representando o raio e altura de cem latas e calcule cada volume, cuja fórmula é: VOLUME = 3.1415 * RAIO2 * ALTURA 63 11. Escreva um algoritmo que leia 32 conjuntos de três valores, representando as duas bases e a altura de 32 trapézios e calcule cada área, cuja fórmula é: ÁREA = (BASE1 + BASE2) /2 * ALTURA 12. Escreva um algoritmo para ler 40 valores lidos dois a dois, calcular e escrever a média aritmética entre cada par de números. 13. Escrever um algoritmo que lê 3 valores a, b, c que são lados de um triângulo e calcule a área deste triângulo. O total de triângulos é igual 55. s s a s b s c( )( )(− − − ) onde s = semiperímetro 14. Para A e B inteiros e maiores que zero, fazer um algoritmo para o cálculo de A elevado à potência de B usando multiplicações sucessivas. C.3) OUTRA UTILIZAÇÃO DA INSTRUÇÂO REPETIR Além de utilizar a instrução REPETIR para produzir repetições de conjuntos de passos é possível utilizá-la para outros fins, graças a uma característica bastante interessante; ao definir uma repetição o programador deve especificar o número de repetições (por exemplo: I = 1,3,1). A partir dessa especificação a instrução produz os valores automaticamente. Essa característica pode ser utilizada para resolver certos tipos de problema. Exemplo 1: Escrever um algoritmo que gere e imprima os números de 1 até 10. DECLARE I COMO INTEIRO REPETIR I = 1 ,10, 1 ESCREVA ‘O VALOR I = ‘, I FIM-REPETIR O VALOR I = 1 O VALOR I = 2 O VALOR I = 3 O VALOR I = 4 O VALOR I = 5 O VALOR I = 6 O VALOR I = 7 O VALOR I = 8 O VALOR I = 9 O VALOR I = 10 Observe que não há leitura de dados Exemplo 2: Escrever um algoritmo que gere e imprima os números pares de 1 até 10. 64 DECLARE I COMO INTEIRO REPETIR I = 2 ,10, 2
Compartilhar