101
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

Apostila Algoritmo Pseudocódigo

Embed Size (px)

Citation preview

  • Universidade Federal Fluminense Centro Tecnolgico Instituto de Computao Departamento de Cincia da Computao

    Construo de Algoritmos Verso 2005

    Prof. Leonardo Cruz da Costa

    1

  • Captulo I - INTRODUO comum seguirmos roteiros para solucionar problemas no dia a dia. Esses roteiros descrevem aes que devem ser seguidas uma a aps a outra com o objetivo de produzir o resultado desejado. Os roteiros podem ser textuais ou grficos. Exemplo 1: Como fazer um pato no tucupi? Tempere o pato com o alho, a cebola, sal e pimenta-do-reino. Aquea o forno em temperatura mdia. Coloque o pato numa assadeira com um pouco de leo e leve ao forno at dourar. Numa panela, coloque o tucupi e os pedaos de pato assado. Leve ao fogo alto at ferver. Abaixe o fogo e cozinhe at ficar macio. Acrescente mais tucupi, se necessrio. Junte as folhas de jambu e cozinhe at que os talos fiquem macios. Sirva com farinha de mandioca. Exemplo 2: Como chegar no stio 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 stio Animao. Exemplo 3: Como deve ser a instalao do sistema de aquecimento de gua solar para piscinas. 1. Moto Bomba 2. Filtro 3. Registro de Esfera ou Gaveta 4. Vlvula de Reteno 5. Sada de gua fria para as placas 6. Retorno de gua quente das placas 7. Tubulao de retorno para piscina.

    2

  • Exemplo 4: Roteiro para trocar uma lmpada queimada. a) Primeira verso

    1. Remover a lmpada queimada; 2. Colocar a nova lmpada;

    Mas isto est muito abstrato. O que remover uma lmpada? b) Segunda verso (um pouco mais detalhada)

    1. Buscar uma lmpada nova; 2. Pegar uma escada 3. Posicionar a escada debaixo da lmpada; 4. Subir na escada at que a lmpada possa ser alcanada; 5. Girar a lmpada queimada no sentido anti-horrio at que se solte; 6. Colocar a lmpada nova girando-a no sentido horrio; 7. Descer da escada;

    E se a lmpada no estiver queimada? c) Terceira verso (um pouco mais detalhada)

    1. Buscar uma lmpada nova; 2. Pegar uma escada 3. Posicionar a escada debaixo da lmpada; 4. Acionar o interruptor; 5. Se a lmpada no acender, ento 6. Subir na escada at que a lmpada possa ser alcanada; 7. Girar a lmpada queimada no sentido anti-horrio at que se solte; 8. Colocar a lmpada nova girando-a no sentido horrio; 9. Descer da escada;

    3

  • Nessa verso algumas aes esto vinculadas condio lmpada no acender, ou seja, somente efetua-se a troca da lmpada caso a condio lmpada queimada (lmpada no acender) for verdadeira. Se a condio lmpada no acender for falsa, nada mais ser realizado.

    Apesar do algoritmo estar correto, ele pode ser melhorado uma vez que somente seria necessrio pegar a escada, caso a condio lmpada no acender seja verdadeira:

    d) Quarta verso (um pouco mais detalhada) 1. Acionar o interruptor; 2. Se a lmpada no acender, ento

    2.1 Buscar uma lmpada nova; 2.2 Pegar uma escada 2.3 Posicionar a escada debaixo da lmpada; 2.4 Subir na escada at que a lmpada possa ser alcanada; 2.5 Girar a lmpada queimada no sentido anti-horrio at que se solte; 2.6 Colocar a lmpada nova girando-a no sentido horrio; 2.7 Descer da escada;

    Exerccios 1. Elaborar um algoritmo que mostre os passos necessrios 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 trs cargas, que so: um lobo, um bode e um mao 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 aes necessrias para efetuar a travessia segura.

    I.1 ALGORITMOS

    Computadores muitas vezes chamados erroneamente de crebro eletrnico, no tm, pelo menos at agora, a capacidade de resolver por conta prpria problemas. Assim, como outras mquinas, eles precisam ser instrudos, para que atravs de um conjunto de aes possam solucionar o problema.

    Para resolvermos problemas, atravs de computador, necessrio que uma seqncia de operaes seja criada, semelhante aos roteiros apresentados anteriormente. A soluo obtida atravs de duas etapas:

    A criao de uma seqncia de operaes que, quando executada, produz o resultado do problema (a esta seqncia se d o nome de algoritmo).

    A execuo, propriamente dita, da seqncia de operaes.

    Um algoritmo a descrio de um padro de comportamento, expressado em termos de um repertrio bem definido e finito de aes primitivas, as quais damos por certo que podem ser executadas (Guimares e Lages).

    4

  • Um algoritmo pode ser definido tambm como: uma seqncia ordenada, sem ambigidade, de passos que levam soluo de um dado problema (Tremblay e Bunt [5]).

    As definies acima mostram que um algoritmo precisa:

    Ter inicio e fim; Ser descritas em termos de aes no ambguas e bem definida; Que as aes sigam uma seqncia ordenada.

    Essas trs caractersticas so entendidas de maneira fceis, pois: 1. Ter inicio e fim: um computador no pode ficar infinitamente buscando uma soluo

    para o problema;

    2. Aes no ambguas e bem definidas: no poder haver dvidas da ao 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. Seqncia ordenada: as aes devem seguir sempre a mesma ordem de execuo, pois se A ordem fosse aleatria no se pode garantir a soluo adequada para o problema.

    I.2 REPRESENTAO DE ALGORITMOS O processo de resoluo de um problema atravs de computador comea no entendimento de forma clara do problema, para qual projetado um algoritmo, que futuramente ser codificado em uma linguagem de programao, transformando-se dessa forma em um programa. Fase de resoluo do Problema Fase de Implementao

    (utilizao de uma linguagem de Programao)

    Assim, um algoritmo representado de duas maneiras diferentes (mas equivalentes):

    A primeira representao deve ser fcil para as pessoas, construir, modificar e testar as aes (usada na construo em si).

    A segunda deve ser entendida por computadores usada na fase de execuo, quando da transformao (codificao) em programa (traduo de um algoritmo em linguagem de programao).

    Situaes semelhantes ocorrem em outras reas do conhecimento. Na Arquitetura e na

    Engenharia, os profissionais elaboram vrias plantas (baixa, corte, situao, etc.) da mesma

    5

  • edificao para diferentes fins. A edificao a soluo projetada e cada planta, embora diferente, a representao da mesma edificao. 1) A primeira representao: usadas pelas pessoas

    A linguagem natural (portugus, ingls): utilizada nas receitas, instrues, etc.. Para soluo de problemas em computao apresenta um inconveniente: a ambigidade de alguns termos. Assim, restries so impostas linguagem natural, objetivando a reduo de ambigidade, criando uma pseudolinguagem (ou, ainda, pseudocdigo, Portugol).

    Representaes grficas: so bastante recomendveis j que um desenho muitas vezes substitui, com vantagem, mil palavras.

    a) fluxograma b) diagramas de Nassi-Shneidermam c) mtodo de Jackson d) diagramas de Warnier-Or

    2) A segunda representao: usada pelo computador

    Utiliza-se uma linguagem de programao (Pascal, Cobol, C, Java, C# etc.), para representar

    algoritmos, transformando-os em programas.

    6

  • Captulo II - CONSTRUO DE ALGORITMOS

    Como vimos anteriormente quando queremos resolver um problema utilizando um computador, devemos construir uma seqncia de passos (algoritmo) que conduz soluo do problema. Uma das vantagens de utilizar algoritmos que a partir dele o programador pode codific-lo em qualquer linguagem de programao.

    OS PASSOS DE UM ALGORITMO Um algoritmo uma seqncia de passos, onde cada passo de uma das trs naturezas seguintes:

    a) uma operao elementar; b) uma operao de controle especificando uma seleo entre seqncias de passos; c) uma operao de controle especificando a repetio de uma seqncia de passos;

    A) OPERAES ELEMENTARES

    A principal motivao para o desenvolvimento e uso dos computadores foi a necessidade de manipular com eficincia grandes quantidade de dados. Os dados podem ser de diversos tipos: primitivos, agregados homogneos, agregados heterogneos, registros, arquivos de registros, etc..

    O conjunto dos tipos primitivos que compe uma linguagem de programao pode mudar

    dependendo da linguagem de programao. A seguir apresentamos os tipos primitivos que normalmente so usados na construo de algoritmos.

    Inteiro: denota todo o conjunto de valores numricos que pertencem ao conjunto dos

    nmeros inteiros (negativos, positivos ou nulos)

    Ex: Quantidade de alunos: 50 Quantidade de professores de um curso: 35

    Real: denota todo o conjunto de valores numricos que pertena ao conjunto dos nmeros reais (negativos, positivos ou nulos)

    Ex: Mdia de um aluno: 8.5 Salrio de uma pessoa: R$ 300.00

    Caractere: denota todo o conjunto de valores que pertena ao conjunto dos caracteres (Alfabticos: A-Z, a-z; numricos: 0-9; e especiais: ?, @," ~, etc.)

    Ex: Nome do aluno: "Joo Antnio" Orientao: "usar somente caneta preta no preenchimento"

    7

  • Lgico: denota duas situaes (biestvel: verdadeiro - falso, 0-1)

    Ex: Questo: Certa Situao: Reprovado

    1. Determinar qual o tipo de dado presente nas sentenas abaixo: a) H na porta do banheiro uma placa HOMENS. b) O salrio de Maria de R$ 1030,98. c) Uma maneira econmica de representar o sexo de uma pessoa atravs de F ou M. d) A sala de aula fica no segundo andar. e) O planeta Terra tem a forma quadrada. Entende-se por operaes elementares todos os clculos com um resultado produzido, entrada e sada de dados; movimentao de dados.

    A.1) ATRIBUIO A memria permite o armazenamento de dados (valores), que podem ser obtidos pelos dispositivos de entrada e sada, ou calculados em operaes no programa e posteriormente colocados disposio do usurio. Para que a memria possa armazenar os dados, uma rea reservada na memria e associada a identificadores (nomes) usados no programa. A esta rea se d o nome de Tabela de Smbolos (TS). Exemplo:

    Suponha que desejamos utilizar os valores numricos 1 e 15. Para que esses possam permanecer na memria e posteriormente serem utilizados para algum tipo de processamento, so criados dois nomes SOMA e RESULTADO. Cada linha na Tabela de Smbolo (TS), representa uma rea na memria que guardar os valores e ser manipulada (referenciada, identificada) pelo nome dado (SOMA e RESULTADO), como representado a seguir: Tabela de Smbolos

    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, so chamados de identificadores. Pois, identificam o local (rea de memria) onde o valor est armazenado.

    8

  • A criao de nomes livre? No, o programador deve seguir uma regra para construir os identificador, ou em outras palavras os nomes utilizados no algoritmo.

    Regra para Construo de Identificadores

    Onde: LETRA = A ... Z DGITO = 0 ... 9 Observaes: a) O primeiro caractere do nome sempre ser uma letra; b) No existe uma restrio a quantidade de letras ou dgitos que formam o nome; d) O nome no pode possuir espao em branco ou smbolos especiais, tais como: ( ) # $ %

    & * = + [ ^ ` ; e) No podero ser usados outros caracteres a no ser letras e nmeros; f) As letras sempre sero maisculas; g) No h acentuao dos nomes;

    h) No poder ser um nome uma palavra reservada a uma instruo. Isto , os nomes

    devem ser diferentes de: inteiro, real, caractere, lgico, enquanto, faa, fim-enquanto, declare, repetir, leia, escreva, etc..

    1. Assinale os identificadores vlidos: 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 smbolos? A associao do identificador ao local que receber o dado na tabela de smbolo (definio

    de cada linha da tabela) chamada de declarao ( a compilao da declarao que produz uma TS correspondente a um programa).

    9

  • Em pseudocdigo as declaraes podem ser representadas como:

    DECLARE COMO

    Onde tipo define as caractersticas dos dados a serem manipulados, pode ser: inteiro, real, caracter, lgico, entre outros.

    Assim, para definirmos que SOMA e RESULTADO, so os nomes utilizados no algoritmo e que ambos representaro nmeros inteiros, necessrio utilizarmos a declarao: DECLARE SOMA, RESULTADO COMO INTEIRO Essa declarao 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 LGICO

    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 declarao ir produzir uma tabela com os nomes definidos, porm os valores

    no aparecem, no esto especificados.

    10

  • Como os valores sero colocados na tabela? A associao de um valor a um nome (declarado) se d atravs da atribuio. ATRIBUIO: associa um identificador a uma expresso (valor). forma geral:

    Identificador O smbolo deve ser lido como recebe o valor de Exemplo: A 14 VALOR 10.5 SOMA 5 RESULTADO SOMA

    Simulao do Funcionamento das Atribuies

    NOME ATRIBUTOS VALOR A Inteiro, varivel 14 Valor Real, varivel 10.5 Soma Inteiro, varivel 5 Resultado Inteiro, varivel 5

    Analisando a forma geral da atribuio: Identificador percebe-se que

    possvel construir expresses e atribuir a um nome. Por exemplo: A 14 + 10 Como essa instruo executada? A 14 + 10 Avalia-se, em primeiro lugar, a expresso direita do sinal de atribuio ()

    A

    14

    +

    24

    10

    e em segundo lugar, o valor computado da expresso atribudo ao identificador na TS. Como o valor associado ao nome pode mudar durante a execuo do algoritmo (ou

    programa), usamos o termo varivel.

    11

  • Expresso pode ser: aritmticas, relacionais e lgicas.

    A.1.1) EXPRESSES ARITMTICAS So aquelas, que quando avaliadas, produzem resultados numricos. Constituem na aplicao de operadores aritmticos a operandos que tm valores numricos. Operadores Aritmticos: + (soma) - (subtrao) * (multiplicao) / (diviso com resultado decimal) Os operadores * / tm maior prioridade e os parnteses podem ser usados para alterar a prioridade. As Expresses Aritmticas podem ser definidas como:

    1. Os nmeros so expresses aritmticas; 2. Variveis numricas com valor atribudo so expresses aritmticas;

    3. Se X e Y so expresses aritmticas, e se no h conflito de tipos, ento:

    (X) X * Y

    X / Y X + Y X - Y so tambm expresses aritmticas.

    4. Funes aritmticas so expresses aritmticas.

    Exerccios

    1. Para o algoritmo abaixo, crie a tabela de smbolos e mostre os valores para cada varivel. 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 smbolos e mostre os valores para cada varivel. 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 expresses matemticas a seguir usando apenas

    operaes de adio e subtrao. a) 10 X 3 b) 25 X 7 c) 10 / 2 d) 15 / 5

    A.1.2) EXPRESSES RELACIONAIS Expresses Relacionais so na verdade comparaes; quando avaliadas produzem resultado Verdadeiro ou Falso. Como o resultado de uma expresso relacional um valor lgico, logo ela uma expresso lgica (como definida anteriormente). Operadores Relacionais: > ( maior que ) >= ( maior ou igual) < ( menor que) B (A maior que B) A >= B (A maior ou igual a B) A < B (A menor que B) A X > 1, no vlida !

    A.1.3) EXPRESSES LGICAS (CONDIES) Expresses lgicas (ou condies) so composies de operandos e operadores lgicos. Operadores Lgicos: and ( e), or (ou), not (no)

    13

  • Expresses Lgicas podem ser definidas como:

    1. Variveis lgicas com valor atribudo e constante lgica (verdade ou falso) so expresses lgicas; 2. Expresses Relacionais so expresses lgicas; 3. Sendo A e B expresses lgicas, ento:

    (A) A and B A or B not A, so expresses lgicas. Resultado das operaes Lgicas 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) NOES DE LGICA MATEMTICA

    CONCEITO DE PROPOSIO Proposio: sentenas declarativas afirmativas (expresso de uma linguagem) da qual tenha sentido afirmar que seja verdadeira ou que seja falsa.

    A lua quadrada. A neve branca Matemtica uma cincia.

    No so objetos de estudo as sentenas interrogativas ou exclamativas.

    OS SMBOLOS DA LING. DO CLCULO PROPOSICIONAL Variveis Proposicionais letras latinas minsculas p, q, r, s, .... para indicar as proposies (frmulas atmicas) . Exemplos: A lua quadrada : p A neve branca : q Matemtica uma cincia: r Conectivos Lgicos: As frmulas atmicas podem ser combinadas entre si e, para representar tais combinaes usaremos os conectivos lgicos: e , ou , no

    14

  • Exemplos:

    A lua quadrada e a neve branca. : p e q A lua quadrada ou a neve branca. : p ou q A lua no quadrada. : no p

    Obtendo o valor lgico

    7+5>7 OU 2=1 Verdadeiro

    V

    OU

    V

    F

    7+5>7 E 2=1 Falso NO( 2 = 1) Verdadeiro

    V

    E

    F

    F

    NO

    V

    F

    15

  • A.1.4 ) PRIORIDADE ENTRE OS OPERADORES

    PRIORIDADE OPERADORES 0 Parnteses e Funes 1 + e (operadores unrios) 2 Potenciao 3 * e / 4 + e (soma e subtrao) 5 Operadores relacionais 6 No 7 And 8 Or

    A.1.5 ) EXERCCIOS RESOLVIDOS 1. Sendo p = verdade, q = falso, r = verdade, avalie as expresses 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) no (p e q) h) (no (p e r) ou (q e r)) i) (no p e no r) ou q 2. Suponha que A, B e C, I, J, K sejam variveis. 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 atribuio para as expresses abaixo:

    a) 1+ba b)

    dcba

    +

    c)

    fed

    cba

    + d)

    dcba +

    16

  • 4. Encontre os erros dos seguintes comandos de atribuio.

    DECLARE A COMO LGICO 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 variveis assumiro:

    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, porm 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. Faa os itens b, c, d

    18

  • b) X Z c) X Y d) X Y X Y Z X Z Y 7. Uma conta telefnica 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 frmula 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 no tem condies de medir a diagonal com preciso, a soluo alternativa que ele encontrou foi medir os lados da casa, sabendo que a diagonal pode ser calculada com base nos lados pelo Teorema de Pitgoras (a2 = b2 + c2). Considerando que a casa mede 11,5 x 6,3 metros, faa um algoritmo que calcule a quantidade mnima necessria de fio a ser comprada. 9. Um professor atribui pesos de 1 a 4 para as notas de quatro avaliaes. A nota calculada por meio da mdia ponderada (N1 + N2*2 + N3*3 + N4*4)/10, onde N1 a nota da primeira avaliao, N2 a da segunda, etc..Um aluno tirou as seguintes notas: 8 - 7,5 - 10 - 9. Faa um algoritmo que calcula a mdia deste aluno.

    19

  • A.2) OPERAES DE ENTRADA E SADA DE DADOS As unidades de entrada e sada de dados so dispositivos que possibilitam a comunicao entre o usurio e o computador. Atravs delas, o usurio consegue fornecer dados (entrada de dados) para que a mquina possa processar, assim como, obtm resultados (sada de dados) do processamento. As operaes de entrada e sada permitem escrever algoritmos mais genricos. A utilizao dessas unidades representada nos algoritmos pelos passos de leitura e escrita.

    A.2.1) LEITURA Forma Geral:

    LEIA

    Exemplo 1:

    LEIA A

    Simulao do Funcionamento da Leitura

    Obtm do meio externo, a informao disponvel para a leitura. A forma como feita a leitura depende de como os dados esto organizados. ENTRADA DE DADOS: 32 LEIA A

    e armazena na(s) varivel(eis) definida.

    NOME TIPO VALOR A INTEIRO 32

    A leitura uma atribuio cujos valores esto 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 variveis 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 variveis 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 variveis 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 variveis A, B, C (na TS) respectivamente Exemplo 6 : ENTRADA DE DADOS: 32 LEIA A 60 LEIA B LEIA C (no h definio de dado p/ C) Resultado da leitura: Valores lidos (32, 60) armazenados nas variveis A, B respectivamente, porm como no h especificao de dado para C, um erro de leitura de dados ocorre.

    22

  • A.2.2) ESCRITA

    Forma Geral:

    ESCREVA

    Imprime no dispositivo de sada (vdeo, impressora, etc.) o contedo da(s) varivel(eis) especificadas. Textos explicativos podem tambm ser impressos e intercalados com as variveis.

    Exemplo:

    ESCREVA A,B,C Lista de variveis

    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) so exibidos (vdeo,

    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) so exibidos (vdeo,

    impressora, etc.), porm cada instruo ESCREVA produz uma linha na sada.

    23

  • possvel 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 (vdeo, 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 (vdeo, 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) so exibidos (vdeo, 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) so exibidos (vdeo, 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) so exibidos (vdeo, impressora,

    etc.), juntamente com as suas respectivas mensagens cada um em sua linha.

    A instruo escreva pode ser usada para escrever mensagens, sem a utilizao de variveis.

    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 Simulao 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 vlido utilizar valores numricos aleatrios, porm, o algoritmo deve funcionar para qualquer valor. entrada de dados: 80 LEIA A

    e armazena na varivel 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 variveis que armazenaro 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

    Simulao do algoritmo DECLARE A, B COMO INTEIRO

    NOME TIPO VALOR A INTEIRO B INTEIRO

    LEIA A L um valor da entrada de dados. Para testar o algoritmo vlido utilizar valores numricos aleatrios, porm, o algoritmo deve funcionar para qualquer valor inteiro lido. Observe que dois valores so colocados na entrada de dados ( 78 e 65 ), um em cada linha. entrada de dados: 78 LEIA A 65

    e armazena na varivel 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 varivel 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 (variao da soluo do exerccio anterior).

    A modificao aqui apresentada est na utilizao de apenas uma varivel que armazenar os

    valores lidos. Anteriormente os dois valores eram lidos atravs de duas variveis ( A e B ). Isso pode ser feito pelo seguinte motivo: aps a escrita do valor contido em A, no h necessidade de conservar esse valor em A, podendo ser substitudo por outro.

    DECLARE A COMO INTEIRO

    Cria a varivel 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

    Simulao do algoritmo DECLARE A COMO INTEIRO

    NOME TIPO VALOR A INTEIRO

    LEIA A L um valor da entrada de dados. Observe que dois valores so colocados na entrada de dados ( 78 e 65 ) entrada de dados: 78 LEIA A 65

    e armazena na varivel 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 varivel definida. Observe que o valor armazenado em A ( 78 ) perdido, substitudo pelo novo valor obtido atravs 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 armazenaro 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 sero somados

    Cria a atribuio, onde a expresso justamente a soma entre os dois valores lidos, representados por V1 e V2 e quando avaliada a expresso o valor resultante ser armazenado em RESULTADO

    Simulao 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 numricos aleatrios, porm, o algoritmo deve funcionar para qualquer valor. entrada de dados: 3 5 LEIA V1, V2

    e armazena na varivel definida.

    31

  • NOME TIPO VALOR

    V1 INTEIRO 3 V2 INTEIRO 5 RESULTADO INTEIRO

    RESULTADO V1 + V2

    Avalia-se, em primeiro lugar, a expresso direita do sinal de atribuio (); V1 V2

    RESULTADO

    3

    +

    8

    5

    e em segundo lugar, o valor computado da expresso atribudo 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 (variao da soluo do exerccio 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 modificao aqui apresentada est na maneira como os valores so agora lidos. Anteriormente os dois valores eram lidos atravs de uma nica leitura ( LEIA V1, V2 ). Nessa verso cada valor lido atravs de uma leitura, isso provoca alterao 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 (variao da soluo do exerccio 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 modificao aqui apresentada est na maneira como os valores so agora escritos. Anteriormente os dois valores eram escritos atravs de uma nica escrita (ESCREVA VALORES LIDOS =, V1, V2). Nessa verso cada valor apresentado atravs de uma escrita, isso provoca alterao na maneira de apresentar os dados na sada. 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 3 V2 INTEIRO 5 RESULTADO INTEIRO 8

    PRIMEIRO VALOR LIDO = 3 SEGUNDO VALOR LIDO = 8

    7) Escreva um algoritmo para calcular a rea de um crculo, onde o valor do raio lido. Etapas para construo do algoritmo: 1- criar as variveis; 2- calcular a rea utilizando a frmula: rea = * raio2, onde = 3.1415 3- apresentar a rea calculada. Soluo: DECLARE RAIO, AREA COMO REAIS LEIA RAIO AREA 3.1415 * RAIO * RAIO ESCREVA AREA Variao da Soluo A soluo 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) EXERCCIOS 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 sada de dados, se no algoritmo as impresses 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 varivel: 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 execuo 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 frmula de converso : ( 9 * graus Celsius + 160 ) /5. 6. Escreva um algoritmo que leia uma temperatura em graus Fahrenheit e converta para graus

    Celsius, cuja frmula de converso : ( graus Fahrenheit 32) * (5/9). 7. Escreva um algoritmo que leia trs valores, representando o comprimento, largura e altura

    de uma caixa retangular e calcule o seu volume, cuja frmula : 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 PRESTAO e TAXA, representando o valor

    de uma prestao e a taxa de juros cobrada pelo atraso. Calcule a prestao atrasada pela frmula: ATRASO = PRESTAO + ( PRESTAO * TAXA /100).

    10. Escreva um algoritmo que leia dois valores, representando o raio e altura de uma lata e

    calcule o seu volume, cuja frmula : VOLUME = 3.1415 * RAIO2 * ALTURA

    11. Escreva um algoritmo para ler, calcular e escrever a mdia aritmtica entre quatro nmeros.

    12. Escrever um algoritmo que l 3 valores a, b, c que so lados de um tringulo e calcule a rea deste tringulo. 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 fbrica com a percentagem do distribuidor e dos impostos ( aplicados ao custo de fbrica). Supondo que a percentagem do distribuidor seja de 12% e os impostos de 45%, escrever um algoritmo para ler o custo de fbrica do carro e escrever o custo ao consumidor.

    14. Num curso, a nota final de um estudante calculada a partir de seu desempenho em trs

    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 trs notas de um aluno e calcule sua nota final.

    15. Escreva um algoritmo que calcule o valor da converso em dlar de um valor lido em real.

    O algoritmo dever ler o valor da cotao do dlar e a quantidade de reais.

    16. Escreva um algoritmo que dados os litros gastos, os quilmetros percorridos por um automvel e o valor do litro de combustvel, calcule os gastos de combustvel em Reais/km.

    17. Escreva um algoritmo para ler o nmero de eleitores de um municpio, o nmero de votos

    brancos, nulos e vlidos. Calcular e escrever o percentual que cada um representa em relao ao total de eleitores.

    18. Escreva um algoritmo para ler o salrio mensal de um funcionrio e o percentual de reajuste.

    Calcular e escrever o valor do novo salrio.

    19. Uma revendedora de carros usados, paga a seus funcionrios vendedores, um salrio fixo por ms, mais uma comisso tambm fixa para cada carro vendido e mais 5% do valor das vendas por ele efetuadas. Escrever um algoritmo que leia o nmero de carros por ele vendidos, o valor total de suas vendas, o salrio fixo e a comisso que recebe por carro vendido. Escreva um algoritmo que calcule e escreva o salrio mensal do vendedor.

    20. Escreva um algoritmo que leia dois lados de um tringulo retngulo e calcula a hipotenusa.

    21. Uma criana 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 [frmula para calcular a soma dos N primeiros nmeros inteiros: N (N+1)/2].

    22. Uma conta telefnica 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) SELEO

    Tambm chamada de estrutura de deciso, a seleo utilizada quando a execuo de uma seqncia de passos depende do valor de uma condio (trechos alternativos que so ou no processados de acordo com o resultado da condio). A seleo pode ser de um ramo ou de dois ramos.

    38

  • B.1) SELEO DE UM RAMO utilizada quando uma seqncia de passos depender de uma condio verdadeira, e no h seqncia a executar ser executada quando a condio for falsa. Forma geral:

    SE ENTO FIM-SE

    Esquema de Funcionamento da Seleo 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 ENTO SIM ESCREVA A FIM-SE ESCREVA A NO Simulao 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 varivel definida.

    NOME TIPO VALOR A INTEIRO 78

    SE A > 10 ENTO verifica se o valor contido em A maior que 10, caso seja verdadeiro executa os comandos contidos na seleo, neste caso: ESCREVA A. Caso contrrio ignora os comandos contidos na seleo.

    B.2) SELEO DE DOIS RAMOS Utiliza-se quando se deseja executar uma seqncia de passos se uma condio verdadeira,

    e se executa uma outra seqncia se a condio falsa. Forma geral:

    SE ENTO SENO FIM-SE

    Esquema de Funcionamento da Seleo 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 ENTO ESCREVA 'VALOR MAIOR OU IGUAL A 10' , A SENO ESCREVA 'VALOR MENOR QUE 10' , A FIM-SE NO A >= 10 ? SIM ESCREVA 'VALOR ESCREVA 'VALOR MENOR QUE 10' , A MAIOR OU IGUAL A 10', A

    41

  • B.3) EXEMPLOS DE ALGORITMOS 1) Faa 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 ) ENTO ESCREVA NUMERO FIM-SE 2) Elaborar um algoritmo que l uma nota e indique a situao do aluno. Se a nota obtida for de 6 a

    10, aprovado; caso contrrio, reprovado. DECLARE NOTA COMO INTEIRO LEIA NOTA SE (NOTA < 6 ) ENTO ESCREVA ALUNO REPROVADO SENO ESCREVA ALUNO APROVADO FIM-SE 3) Elaborar um algoritmo que l uma nota e indique a situao 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 ) ENTO ESCREVA ALUNO APROVADO SENO SE ( ( NOTA < 6 ) E ( NOTA >= 4) ENTO ESCREVA ALUNO EM VS SENO ESCREVA ALUNO REPROVADO FIM_SE FIM-SE 4) Faa um algoritmo que leia dois nmeros inteiros e descubra o maior. DECLARE VALOR1, VALOR2 COMO INTEIRO LEIA VALOR1, VALOR2 SE VALOR1> VALOR2 ENTO ESCREVA VALOR1 SENO ESCREVA VALOR2 FIM-SE

    42

  • Variao da soluo DECLARE VALOR1, VALOR2, MAIOR COMO INTEIRO LEIA VALOR1, VALOR2 SE VALOR1> VALOR2 ENTO MAIOR VALOR1 SENO MAIOR VALOR2 FIM-SE ESCREVA MAIOR 5) Faa um algoritmo que obtenha trs nmeros reais e informe o maior deles. DECLARE NUMA, NUMB, NUMC, MAIOR COMO REAL LEIA (NUMA, NUMB, NUMC SE NUMA > NUMB ENTO MAIOR NUMA SENO MAIOR NUMB FIM-SE SE NUNC > MAIOR ENTO MAIOR NUMC FIM-SE ESCREVA MAIOR Variao da soluo DECLARE NUMA, NUMB, NUMC, MAIOR COMO REAL

    LEIA NUMA, NUMB, NUMC SE ((NUMA > NUMB) and (NUMA > NUMC)) ENTO

    MAIOR NUMA SENO

    SE ((NUMB > NUMA) and (NUMB > NUMC)) ENTO MAIOR NUMB SENO MAIOR NUMC FIM-SE

    FIM-SE ESCREVA MAIOR

    43

  • Aninhamentos Um aninhamento o fato de se ter qualquer uma seleo dentro de outra seleo. Para que

    o aninhamento esteja correto necessrio que a construo interna esteja completamente embutida na construo externa. Exemplo:

    Aninhamento correto

    SE < condio 1 > ENTO

    SE < condio 2 > ENTO SE < condio 3 > ENTO SENO FIM-SE SENO SE < condio 4 > ENTO SENO SE < condio 5 > ENTO SENO FIM-SE FIM-SE FIM-SE

    SENO SE < condio 6 > ENTO SENO SE < condio 7 > ENTO SENO SE < condio 8 > ENTO SENO FIM-SE FIM-SE FIM-SE FIM-SE

    44

  • Aninhamento incorreto

    SE < condio 1 > ENTO SE < condio 2 > ENTO SE < condio 3 > ENTO < seqncia de passos 3 > SENO SENO SE < condio 4 > ENTO SENO SE < condio 5 > ENTO SENO FIM-SE FIM-SE FIM-SE FIM-SE FIM-SE

    O FIM-SE que deveria estar nessa posio e foi colocado erradamente em outra posio

    Aninhamento errado. Observe as linhas se cruzando

    1) Fazer um algoritmo que leia trs 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 nmero

    SE A

  • 2) Dados trs valores inteiros X,Y,Z, verificar se eles podem ser os comprimentos dos lados de um tringulo e, se forem , verificar se um tringulo eqiltero, issceles ou escalenos. Se eles no formarem um tringulo, escrever uma mensagem. Sabe-se que o comprimento de cada lado de um tringulo menor do que a soma dos comprimentos dos outros dois lados. DECLARE X,Y,Z COMO INTEIRO LEIA X,Y,Z SE ((X N ENTO AUXILIAR M M N N AUXILIAR FIM-SE

    46

  • B.4) EXERCCIOS 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 fsica, pessoa jurdica ou "tipo de pessoa invlido", conforme o caso.

    3. Elaborar um algoritmo que l 2 valores a e b e os escreve com a mensagem: So mltiplos ou No so mltiplos.

    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 frmulas:

    - para homens: (72.7*h)-58 - para mulheres: (62.1*h)-44.7

    5. Um banco conceder um crdito especial aos seus clientes, varivel com o saldo mdio no ltimo ano. Faa um algoritmo que leia o saldo mdio de um cliente e calcule o valor do crdito de acordo com a tabela abaixo. Mostre uma mensagem informando o saldo mdio e o valor do crdito.

    Saldo mdio Percentual de 0 a 500 nenhum crdito de 501 a 1000 20% do valor do saldo mdio de 1001 a 1600 30% do valor do saldo mdio acima de 1601 40% do valor do saldo mdio

    6. Elabore um algoritmo que l um nmero que representa uma senha, verifica se a senha est correta ou no, comparando-a com a senha 34567, e informa "Acesso autorizado" ou "Acesso negado", conforme o caso.

    7. O departamento que controla o ndice de poluio do meio ambiente mantm 3 grupos de indstrias que so altamente poluentes do meio ambiente. O ndice de poluio aceitvel varia de 0,05 at 0,25. Se o ndice sobe para 0,3 as indstrias do 1o grupo so intimadas a suspenderem suas atividades, se o ndice cresce para 0,4 as do 1o e 2o grupo so 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 poluio medido e emite a notificao adequada aos diferentes grupos de empresas.

    8. Um sistema de equaes lineares da forma :

    Ax + By = C Dx + Ey = F pode ser resolvido utilizando-se as seguintes frmulas. 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 soluo, ou seja, X e Y. Verifique as situaes onde X e Y no 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 menes aos alunos conforme a faixa de notas que tenha atingido:

    9,0 a 10: SS (superior) 7,0 a 8,9: MS (mdio superior) 5, 0 a 6,9: MM (mdio) 3,0 a 4,9: MI (mdio inferior) 0,1 a 2,9: II (inferior) 0 : SR (sem rendimento).

    Faa um algoritmo que l a nota e informa a meno.

    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.Faa um algoritmo que leia as 3 notas de um aluno e calcule a mdia final deste aluno. Considerar que a mdia 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 divisvel por 4 exceto os sculos, que so bissextos se forem mltiplos de 400. Escreva um algoritmo que determina se um ano bissexto.

    14.Escrever um algoritmo que l trs valores representado o dia, ms e ano de uma data e verifica se ela est correta. Supor que o ms de fevereiro tem 29 dias.

    15.Escrever um algoritmo que l um valor em reais e calcula qual o menor nmero possvel de notas de 100, 50, 10, 5 e 1 em que o valor lido pode ser decomposto. Escrever o valor lido e a relao de notas necessrias.

    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 tambm o peso de todas as bolas.

    48

  • C) OPERAES DE REPETIO 1) Leia 5 valores e escreva um algoritmo para escrev-los.

    O algoritmo construdo criando apenas uma varivel cujos valores so lidos, escritos e descartados pela leitura do prximo 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 soluo anterior, que se a quantidade de valores a serem lidos crescer, o nmero de passos do algoritmo tambm 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 vrias 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 seqncia de passos repetida, podemos utilizar as

    estruturas de repetio, que podem ser de 2 tipos: Nmero conhecido de repetio e nmero no conhecido de repetio.

    C.2) NMERO CONHECIDO DE REPETIES Essa estrutura de repetio utilizada quando se conhece exatamente o nmero de vezes que a seqncia ser repetida. Forma geral:

    REPETIR FIM-REPETIR

    No exemplo anterior, colocamos a seqncia de passos a ser repetida dentro da repetio: DECLARE A COMO INTEIRO

    REPETIR

    LEIA A ESCREVA O VALOR LIDO = , A CORPO DA REPETIO

    FIM-REPETIR e especificamos o nmero de vezes que a seqncia dever ser repetida: = < valor inicial >, ,

    50

  • < varivel > um identificador ( nome ) que deve ser criado pelo programador. Essa varivel tambm chamada de controle de repetio. < valor inicial > um valor inteiro. o primeiro valor que a varivel de controle de repetio assumir. < valor final > um valor inteiro. o valor limite que a varivel de controle de repetio assumir. um valor inteiro. valor que ser adicionado ao valor varivel de controle de repetio. 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 repetio 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 de I ( 11 valores ), logo uma repetio 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 repetio 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 repetio seria executada 5 vezes. e) JL = 1, 3, 1 valores de JL = 1 2 3 Quantidade de valores de JL ( 3 valores ), logo uma repetio seria executada 3 vezes. f) JL = 1011, 1013, 1 valores de JL = 1011 1012 1013 Quantidade de valores de JL ( 3 valores ), logo uma repetio seria executada 3 vezes. g) JL = 100, 102, 1 valores de JL = 100 101 102 Quantidade de valores de JL ( 3 valores ), logo uma repetio seria executada 3 vezes. h) P = N, J, K A especificao dos valores de P e consequentemente o nmero de repeties depender de:

    1. necessrio que todas as variveis (N, J, K) estejam declaradas como inteiras; 2. Que tenham valores inteiros na TS.

    Obs.: O nmero de repetio est em funo do nmero de valores que a varivel 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 Repetio 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 varivel de controle

    I 1

    Executa a seqncia de passos LEIA A

    ESCREVA O VALOR LIDO = , A REPETIR I = 1 , 10, 1 Incrementa a varivel de controle I I + 1 Verifica se o novo valor da varivel

    de controle ultrapassou o valor do limite Sim Sair da Repetio Simulao do algoritmo DECLARE A, I COMO INTEIRO

    NOME TIPO VALOR A INTEIRO I INTEIRO

    53

  • REPETIR I = 1 ,10, 1 Inicializa varivel de controle ( passo vindo do esquema de func. da repetio), 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 so 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 varivel de controle ( passo vindo do esquema de func. da repetio), 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 repetio, caso negativo continue executando a repetio, no primeiro passo dentro da repetio. 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 varivel de controle ( passo vindo do esquema de func. da repetio), 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 repetio, caso negativo continue executando a repetio, no primeiro passo dentro da repetio (LEIA A). Assim, a repetio ser executada ... Pularemos os passos intermedirios e apresentamos a finalizao da repetio ( I est com o valor 9, penltima repetio e j foram lidos os 9 valores da entrada). REPETIR I = 1 ,10, 1 incrementa a varivel de controle ( passo vindo do esquema de func. da repetio), 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 repetio, caso negativo continue executando a repetio, no primeiro passo dentro da repetio. LEIA A (ltimo valor a ser lido, observe que todos os valores da entrada de dados foram utilizados, lidos atravs 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 varivel de controle ( passo vindo do esquema de func. da repetio), 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

    repetio, caso negativo continue executando a repetio. Como ultrapassa encerra a repetio e continua executando o algoritmo no prximo passo. Como este no existe passo aps a repetio, o algoritmo encerrado.

    C.2.1) LEITURA DE DADOS X REPETIO

    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 ) 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 = 1 ,10, 1 LEIA A REPETIO 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 REPETIO 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 no influncia no valor que ser lido. O primeiro valor lido ser obtido pela primeira leitura (no primeiro algoritmo ) que tambm obtido atravs da leitura quando a repetio executa pela primeira vez (segundo algoritmo) .

    59

  • C.2.2) Exerccios Resolvidos 1. Faa um algoritmo que obtenha 15 nmeros inteiros e calcule o somatrio. DECLARE VALOR, SOMA COMO INTEIRO SOMA 0 REPETIR J = 1, 15 , 1 LEIA VALOR SOMA SOMA + VALOR FIM-REPETIR ESCREVA SOMA 2. Faa um algoritmo que leia 25 nmeros inteiros e calcule o somatrio dos nmeros pares. DECLARE VALOR, SOMA COMO INTEIRO SOMA 0 REPETIR J = 1, 25 , 1 LEIA VALOR SE ( MOD( VALOR , 2) = 0 ENTO SOMA SOMA + VALOR FIM-SE FIM-REPETIR ESCREVA SOMA 3. Faa um algoritmo que obtenha 5 nmeros 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 ENTO MAIOR VALOR FIM-SE FIM-REPETIR ESCREVA MAIOR

    60

  • C.2.3) EXERCCIOS PROPOSTOS 1. Dizer quantas repeties so especificadas e que valores as variveis de controle de repetio

    assumiro, 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 so lidos para V1 ? b) Qual o total de valores lidos ? c) Quantas linhas so impressas ? d) Que valores I possuir ? e) Qual deve ser a organizao dos dados de entrada ?

    3. Considerando os algoritmos do exerccio anterior e com a seguinte organizao de entrada:

    ENTRADA DE DADOS 1 2 2 4 5 6 7 8 8 10 Responda: a) Quais os valores so lidos para V1, V2, V3 ? b) Quais os valores impressos ? c) Verificar a validade das situaes 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 informaes:

    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 frmula de converso : ( 9 * graus Celsius + 160 ) /5. 6. Escreva um algoritmo que leia trs temperaturas em grau Fahrenheit e converta cada uma para

    graus Celsius, cuja frmula de converso : ( graus Fahrenheit 32) * (5/9). 7. Escreva um algoritmo que leia seis conjuntos de trs valores, representando o comprimento,

    largura e altura de caixas retangulares e calcule o volume de cada uma, cuja frmula : 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 PRESTAO e TAXA,

    representando o valor de uma prestao e a taxa de juros cobrada pelo atraso. Calcule cada prestao atrasada pela frmula: ATRASO = PRESTAO + ( PRESTAO* 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 frmula : VOLUME = 3.1415 * RAIO2 * ALTURA

    63

  • 11. Escreva um algoritmo que leia 32 conjuntos de trs valores, representando as duas bases e a altura de 32 trapzios e calcule cada rea, cuja frmula : REA = (BASE1 + BASE2) /2 * ALTURA

    12. Escreva um algoritmo para ler 40 valores lidos dois a dois, calcular e escrever a mdia

    aritmtica entre cada par de nmeros. 13. Escrever um algoritmo que l 3 valores a, b, c que so lados de um tringulo e calcule a rea

    deste tringulo. O total de tringulos igual 55. s s a s b s c( )( )( ) onde s = semipermetro

    14. Para A e B inteiros e maiores que zero, fazer um algoritmo para o clculo de A elevado

    potncia de B usando multiplicaes sucessivas.

    C.3) OUTRA UTILIZAO DA INSTRUO REPETIR

    Alm de utilizar a instruo REPETIR para produzir repeties de conjuntos de passos possvel utiliz-la para outros fins, graas a uma caracterstica bastante interessante; ao definir uma repetio o programador deve especificar o nmero de repeties (por exemplo: I = 1,3,1). A partir dessa especificao a instruo produz os valores automaticamente. Essa caracterstica pode ser utilizada para resolver certos tipos de problema.

    Exemplo 1: Escrever um algoritmo que gere e imprima os nmeros 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 no h leitura de dados Exemplo 2: Escrever um algoritmo que gere e imprima os nmeros pares de 1 at 10.

    64

  • DECLARE I COMO INTEIRO REPETIR I = 2 ,10, 2 ESCREVA O VALOR I = , I FIM-REPETIR Valores de I que sero impressos 2 4 6 8 10 Exemplo 3: Escrever um algoritmo que gere e imprima os nmeros impares de 1 at 10. DECLARE I COMO INTEIRO REPETIR I = 1 ,10, 2 ESCREVA O VALOR I = , I FIM-REPETIR Valores de I que sero impressos 1 3 5 7 9 Exemplo 4: Escrever um algoritmo que gere e imprima o somatrio de 1 at 10. DECLARE I , S COMO INTEIRO S 0 REPETIR I = 1 ,10, 1 S S + I FIM-REPETIR ESCREVA S REPETIO 1 2 3 4 5 6 7 8 9 10

    I 1 2 3 4 5 6 7 8 9 10 S 0 1 3 6 10 15 21 28 36 45 55

    Valor de S que ser impresso 55 Exemplo 5: Escrever um algoritmo que gere e imprima o fatorial de 5. DECLARE I , S COMO INTEIRO S 1 REPETIR I = 1 , 5 , 1 S S * I FIM-REPETIR ESCREVA S REPETIO 1 2 3 4 5

    I 1 2 3 4 5 S 1 1 2 6 24 120

    Valor de S que ser impresso 120 Exemplo 6: Escrever um algoritmo que gere e imprima o fatorial de N (considere N > 1).

    65

  • DECLARE I , S, N COMO INTEIRO LEIA N

    S 1 ENTRADA DE DADOS REPETIR I = 1 , N , 1 5 S S * I FIM-REPETIR Observe: que o valor de N est sendo lido e usado como limite ESCREVA S da repetio REPETIO 1 2 3 4 5

    I 1 2 3 4 5 S 1 1 2 6 24 120 N 5

    Valor de S que ser impresso 120

    C.3.1) EXERCCIOS PROPOSTOS

    1. Para o algoritmo e a entrada de dados a seguir :

    DECLARE I, SI, SV, V COMO INTEIROS

    SI 0 ENTRADA DE DADOS SV 0 10 REPETIR I = 1,10,1 9 LEIA V 8 SI SI + I 7

    SV SV + V 6 FIM-REPETIR 5 ESCREVA SI 4 ESCREVA SV 3

    2 1

    Responda: a) Quantos valores so lidos para V ? b) Em que momentos verdadeira a igualdade SI = SV c) Para que valores de I verdade que SV mltiplo SI ?

    2. Escrever um algoritmo que escreve os nmeros pares entre 100 e 200.

    3. Escrever um algoritmo que escreve a soma dos nmeros pares entre 0 e 100.

    4. Escrever um algoritmo que escreve a soma dos nmeros que no so mltiplos de 13 entre 100 e 200.

    66

  • 5. Escrever um algoritmo que escreve a soma dos nmeros mltiplos de 7 entre 100 e 200.

    6. Escrever um algoritmo que gera os nmeros de 1000 a 1999 e escreve aqueles que divididos por 11 do um resto igual a 5.

    7. Escrever um algoritmo que l 10 valores para n, um de cada vez, todos inteiros e positivos, e para cada n lido, escreva a tabuada de 1 at n de n.

    1 x n = n 2 x n = 2n ... n x n = n2

    8. Escrever um algoritmo que l 5 valores para a, um de cada vez, e conta quantos destes valores so negativos, escrevendo esta informao.

    9. Escrever um algoritmo que l 150 valores, um de cada vez, e conta quantos deles esto em cada um dos intervalos [0, 25], (25, [50] , (50, 75], (75, 100].

    10. Escrever um algoritmo semelhante ao anterior que calcula as mdias aritmticas de cada intervalo e as escreve, juntamente com o nmero de valores de cada intervalo.

    11. Escrever um algoritmo que l um nmero no determinado de valores, todos inteiros e positivos, um de cada vez, e calcule e escreva a mdia aritmtica dos valores lidos, a quantidade de valores pares, a quantidade de valores impares, a percentagem de valores pares e a percentagem de valores mpares.

    12. Escrever um algoritmo que l 5 conjuntos de 3 valores a, b, c, um conjunto por vez e os escreve assim como foram lidos. Em seguida, ordene-os em ordem decrescente e escreva-os novamente.

    13. Escreva um algoritmo para calcular o valor de S, onde os valores de N e P so lidos e S calculada pela formula :

    N! S = ----------------------- P! ( N - P) ! 14. Escreva um algoritmo para calcular o valor de X, onde X calculado da seguinte forma :

    X = N! + (N-1)! / 2 + (N-2)!/ 3 + (N-3)!/4 + ... + 1 / N 15. Calcular e imprimir a srie

    SX X X= + + + +37 381

    36 37

    2

    35 36

    3

    1 2

    37. . .

    X

    16. Escrever um algoritmo que l um valor N e calcula e escreve os 20 primeiros termos da srie:

    67

  • 1 + 1/x2 + 1/x3 + 1/x4 + ...

    17. Dada a srie:

    2 3 4 9 16 29 54 99 . Escreva um algoritmo para calcular o n-simo termo da srie

    18. Dada a srie:

    -2 0 6 8 14 16 22 24 30 32 . Escreva um algoritmo para calcular o n-simo termo da srie.

    19. Escreva um algoritmo para calcular o valor de Sen x, obtido pela srie de Mac-Laurin.

    Sen x = x - x3 / 6 + x5 / 120 - x7/5040 + + xn / n! 20. Fazer um algoritmo que leia um nmero real X e calcule o seguinte somatrio : X X X S = X - ------- + --------- - --------- + ... 1! 2! 3!

    , usando os 20 primeiros termos da srie.

    21. Calcular a srie :

    S = + +

    1

    1

    2

    4

    3

    9

    4

    16

    10

    100

    . . .

    22. Calcular e imprimir a srie :

    P = + + 11

    2

    3

    3

    7

    4

    15

    5

    31

    ! ! ! ! !. . .

    , usando os 20 primeiros termos da srie. 23. Escrever um algoritmo para calcular, para N lido, o valor de S, dado por:

    SN N N

    N N= + + + + + +1 2

    13

    21

    2 1...

    68

  • 24. Um nmero perfeito aquele que igual a soma dos seus divisores. (Ex.: 6 = l + 2 + 3; 28 = 1 + 2 + 4 + 7 + 14 etc..). Escreva um algoritmo para ler um valor e verificar se ele um nmero perfeito.

    B.3) NMERO NO CONHECIDO DE REPETIES Suponha que se deseja escrever um algoritmo para ler valores e escrev-los. Quantos valores sero lidos ? Existe algum valor para processar ? 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 . finito ESCREVA O VALOR LIDO = , A . LEIA A ESCREVA O VALOR LIDO = , A

    .

    . Isso no pode ser feito (um algoritmo deve possuir um nmero finito de passos)

    .

    necessria uma estrutura de repetio quando no conhece precisamente o nmero de vezes que a seqncia de passos deve ser repetida. Forma geral:

    ENQUANTO FAA FIM-ENQUANTO

    A estrutura de repetio enquanto-faa utilizada quando um conjunto de passos deve ser

    executado repetidamente, enquanto uma determinada condio (expresso lgica) permanecer verdadeira.

    Dependendo do resultado do teste da condio, o conjunto de comandos poder no ser

    executado nem uma vez ( se for falsa no primeiro teste), ou ser executado varias vezes (enquanto for verdadeira). Chama-se a isso um lao (loop).

    Ao criar estruturas de repetio enquanto:

    inicializar a(s) varivel(eis) que controla(m) o loop antes de inici-lo; modificar a(s) varivel(eis) que controla(m) o loop dentro dele (seja por leitura ou

    por atribuio), pois se isto no for feito cairemos no que chamamos um loop infinito.

    69

  • Essa estrutura resolve o problema de ter um nmero finito de passos no algoritmo. Como resolver o problema de garantir que o conjunto de dados finito (conjunto de dado infinito = leitura infinita = algoritmo infinito), sem cont-los ?

    Como o nmero de dados depositados na entrada de dados ignorado, utilizamos um

    expediente para contornar essa situao. Adicionamos um dado especial ( flag ) que indicar o final dos dados. Embora a quantidade de dados seja ignorada, podemos agora afirmar que o ltimo o flag. O flag um dado que no ser processado, ele s indica que os dados terminaram. O flag normalmente constitudo de valores inconsistentes ou valores assumidos por deciso do programador. Por exemplo:

    1. Se o dado a ser lido: idade - escolheria um valor negativo para ser o flag, pois no h

    idade negativa; 2. Se o dado a ser lido: sexo - escolheria um caracter diferente M ou F (M ou F so

    os caracteres que normalmente representam os sexos masculino e feminino respectivamente); 3. Se o dado a ser lido: salrio - escolheria um valor negativo para ser o flag, pois

    normalmente salrio positivo ou zero; 4. Se o dado a ser lido: nome - escolheria uma seqncia de caracteres que no representasse

    o nome de uma pessoa, por exemplo ZZZZZZZZ ou AAAAAAAA; 5. Se o dado a ser lido: nmeros inteiros - escolheria um valor (por exemplo zero) para ser o

    flag; 6. Se o dado a ser lido: coeficientes da equao do 2 grau escolheria os valores 0 0 0 (

    pois no existe equao do 2 grau com coeficientes 0 0 0 ); 7. Se o dado a ser lido: nome, sexo, salrio, idade escolheria os valores ZZZ Z 1 1

    ENTRADA DE DADOS 17 34 1 23 78 . . .

    FLAG

    0 Observe que se o programador erradamente colocar entre os valores que devem ser

    processados o valor zero ( 0 ), nem todos os valores colocados na entrada de dados sero processados.

    ENTRADA DE DADOS 17 34 1 Apenas os valores 17, 34 e 1 sero processados 0 23 78 .

    Valor colocado erradamente

    . .

    70

    FLAG

  • 0 Vimos anteriormente que para criar estruturas de repetio enquanto, o programador deve

    ter sua ateno voltada para os seguintes aspectos:

    inicializar a(s) varivel(eis) que controla(m) o loop antes de inici-lo; modificar a(s) varivel(eis) que controla(m) o loop dentro dele (seja por leitura ou

    por atribuio), pois se isto no for feito cairemos no que chamamos um loop infinito. Isso devido a forma como a repetio funciona.

    Retornando ao problema: escrever um algoritmo para ler valores e escrev-los.

    Etapas para construo do algoritmo:

    1. criar a varivel; 2. inicializar a(s) varivel(eis) que controla(m) o loop antes de inici-lo 3. escrever a condio de repetio de acordo com o flag definido 4. escrever o valor lido 5. modificar a(s) varivel(eis) que controla(m) o loop dentro dele

    DECLARE A COMO INTEIRO LEIA A ENQUANTO A # 0 FAA ESCREVA O VALOR LIDO = , A

    inicializar a varivel que controla o loop antes de inici-lo. Isso ser realizado por leitura

    LEIA A

    71

  • FIM-ENQUANTO Simulao do algoritmo DECLARE A COMO INTEIRO

    NOME TIPO VALOR A INTEIRO

    LEIA A L um (primeiro) valor da entrada de dados. Essa leitura tem por objetivo inicializar a varivel de controle da repetio ( A ) entrada de dados: 17 LEIA A 34 1 23 78 . . . 42 0

    NOME TIPO VALOR A INTEIRO 17

    ENQUANTO A # 0 FAA Verifica a condio de repetio A # 0 ( A possui o valor 17 que diferente de 0) logo a condio verdadeira Observe que se o valor lido anteriormente fosse zero ( 0), a condio seria falsa, logo no entraria na repetio (nenhuma repetio seria realizada). ESCREVA O VALOR LIDO = , A

    NOME TIPO VALOR

    Modificar o valor da varivel que controla a repetio dentro dele. Isso ser feito atravs da leitura do prximo valor que poder ser o valor flag ou no.

    A condio A # 0, pois o flag escolhido zero, ento a repetio deve ser feita enquanto o valor lido seja diferente de zero

    72

  • A INTEIRO 78

    O VALOR LIDO = 17

    LEIA A L um novo valor da entrada de dados. ( Modificar a(s) varivel(eis) que controla(m) o loop dentro dele, se isso no fosse feito A estaria com o valor 17 e a prxima repetio processaria novamente o valor 17 ) entrada de dados: 34 LEIA A 1 23 78 . . . 42 0

    NOME TIPO VALOR A INTEIRO 34

    FIM-ENQUANTO retorna ao passo ENQUANTO A # 0 FAA Verifica a condio de repetio A # 0 ( A possui o valor 34 que diferente de 0) logo a condio verdadeira. O valor 34 foi lido, ainda no processado, isso acontecer quando a execuo comear no incio do corpo da repetio. Observe, se o valor lido anteriormente fosse zero ( 0), a condio seria falsa, logo no entraria na repetio (repetio seria finalizada). ESCREVA O VALOR LIDO = , A (processamento do valor lido, que sabemos ser diferente de zero)

    NOME TIPO VALOR A INTEIRO 34

    73

  • O VALOR LIDO = 17

    O VALOR LIDO = 34

    Assim, a repetio ser executada ... Pularemos os passos intermedirios e apresentamos a finalizao da repetio ( A est com o valor 42, penltimo valor lido). FIM-ENQUANTO retorna ao passo ENQUANTO A # 0 FAA Verifica a condio de repetio A # 0 ( A possui o valor 42 que diferente de 0) logo a condio verdadeira. O valor 42 foi lido, ainda no processado, isso acontecer, quando a execuo comear no incio do corpo da repetio. Observe, se o valor lido anteriormente fosse zero ( 0), a condio seria falsa, logo no entraria na repetio (repetio seria finalizada). ESCREVA O VALOR LIDO = , A (processamento do valor lido, que sabemos ser diferente de zero)

    NOME TIPO VALOR A INTEIRO 42

    O VALOR LIDO = 17

    O VALOR LIDO = 34 O VALOR LIDO = 1 O VALOR LIDO = 23 .

    O VALOR LIDO = 42

    LEIA A L um novo valor da entrada de dados. ( Modificar a(s) varivel(eis) que controla(m) o loop dentro dele)

    74

  • entrada de dados: 0 LEIA A FIM-ENQUANTO retorna ao passo ENQUANTO A # 0 FAA Verifica a condio de repetio A # 0 ( A possui o valor 0 que igual a 0) logo a condio falsa. A repetio finalizada. B.3.1) Exerccios Propostos 1) Para o algoritmo e a entrada de dados abaixo, responda as questes:

    DECLARE S, A COMO INTEIROS ENTRADA DE DADOS S 0 1 LEIA A 3 ENQUANTO ( A # -1 ) FAA 0 S S + A 4 LEIA A 2 FIM-ENQUANTO - 1 ESCREVA S a) Quais os valores lidos ? b) Que valor seria impresso ? c) Quantas repeties seriam realizadas ? d) O que aconteceria se a condio de controle fosse A # 0 ?

    2) Refazer os exerccios de 5 at 15 da seo B.2.2, considerando a existncia de vrios valores na

    entrada de dados. 3) Um vendedor necessita de um algoritmo que calcule o preo total devido por um cliente. O

    algoritmo deve ler o cdigo de um produto, a quantidade comprada, valor unitrio e calcular o preo total de cada produto e o dbito total. Considere o ltimo produto com o cdigo igual a zero.

    75

  • B.4) REPETIR X ENQUANTO

    Como vimos, a estrutura de repetio enquanto-faa usada quando no conhece precisamente o nmero de vezes que a seqncia de passos deve ser repetida. Podemos ento afirmar que a estrutura enquanto-faa mais genrica que a estrutura repetir. possvel dessa forma simular a estrutura repetir usando a estrutura enquanto-faa. Verifique o exemplo abaixo:

    Escrever um algoritmo que gere e imprima o somatrio dos nmeros impares 1 at 10. DECLARE I , S COMO INTEIRO S 0 REPETIR I = 1 ,10, 2 S S + I FIM-REPETIR ESCREVA S Analisando a repetio do algoritmo anterior : Pelo esquema de funcionamento do REPETIR apresentado na seo B.2, a varivel de controle ( I ) iniciada com o valor inicial ( 1 ), em seguida o corpo da repetio executado ( seqncia de passos definida dentro da repetio ), ao terminar de executar os passos do corpo da repetio, o valor da varivel de controle adicionado do valor do incremento ( 2 ) e logo em seguida testado se o novo valor da varivel de controle ainda menor ou igual que o limite (10), caso afirmativo continua a executar