Você está na página 1de 101

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

Construo de Algoritmos
Verso 2005

Prof. Leonardo Cruz da Costa

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.

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

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).

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

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.

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"

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 SOMA Inteiro RESULTADO Inteiro

VALOR 1 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.

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, fimenquanto, declare, repetir, leia, escreva, etc..

1. Assinale os identificadores vlidos: a) (X), f)KM/L b) x g)UYT c) ah! h) AB*C d) "aluno" i) CEP e) #55 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).

Em pseudocdigo as declaraes podem ser representadas como:

DECLARE <identificador1, identificador2, ...> COMO <tipo>

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 SOMA RESULTADO Outros exemplos: DECLARE X, Y, Z, TOTAL COMO REAL NOME X Y Z TIPO Real Real Real VALOR TIPO Inteiro Inteiro VALOR

DECLARE T COMO LOGICO NOME T TIPO LGICO VALOR

DECLARE A, B, TOTALH, TOTALM COMO INTEIRO DECLARE X, K COMO REAL DECLARE S COMO CARATER NOME A B TOTALH TOTALM X K S TIPO INTEIRO INTEIRO INTEIRO INTEIRO REAL REAL CARATER VALOR

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 <Expresso> 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 A Valor Soma Resultado ATRIBUTOS Inteiro, varivel Real, varivel Inteiro, varivel Inteiro, varivel VALOR 14 10.5 5 5

Analisando a forma geral da atribuio: Identificador <Expresso> 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 () 14 + 10

24

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 TR+S ST RS

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 RR+1 12

RR+1 RR+1 RR+1 RR+1 RR+1 RS 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) ( menor ou igual) ( igual a ) ( no igual )

Expresses Relacionais podem ser definidas como: 1. Sendo A e B expresses aritmticas, ento: A>B A >= B A<B A <= B A=B A <> B (A maior que B) (A maior ou igual a B) (A menor que B) (A menor ou igual a B) (A igual a B) (A no igual a B), so expresses relacionais.

Ateno: Pela definio apresentada acima, onde os operandos de uma expresso relacional, so sempre expresses aritmticas, a expresso 5 > 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 verdade Verdade verdade Falso falso

AND

falso falso falso

verdade verdade verdade falso verdade

OR

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 V OU F

Verdadeiro

7+5>7 E V E

2=1 F

Falso

NO( 2 = 1) F

Verdadeiro

NO F V

15

A.1.4 ) PRIORIDADE ENTRE OS OPERADORES


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

A.1.5 ) EXERCCIOS RESOLVIDOS


1. Sendo p = verdade, q = falso, r = verdade, avalie as expresses abaixo: a) b) c) d) e) f) g) h) i) peq p ou r p ou q r ou (p e q) ou p (r ou r) e (p ou p) (p e r) ou (q e r) no (p e q) (no (p e r) ou (q e r)) (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 b) K I / 4 * 2 c) C B / A + 1 C= _______ K = _______ C = _______ d) K ( B / A + 2) e) J ( A / ( 5 / I )) K = _______ J = _______

3. Escreva o comando de atribuio para as expresses abaixo: a)

a +1 b
a+

b)

a+b cd

b c c) e d f

d) a +

b cd

16

4. Encontre os erros dos seguintes comandos de atribuio. DECLARE A COMO LGICO DECLARE B, C COMO REAL DECLARE D COMO INTEIRO AB=C DB C+1B+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 A0 B A + 10 CB1 A1 B A + 10 CB1 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 YZ 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 X Y Z TIPO Inteiro Inteiro Inteiro VALOR 1 2 3

17

Fazendo X Y NOME X Y Z Fazendo Y Z NOME X Y Z TIPO Inteiro Inteiro Inteiro VALOR 2 3 3 TIPO Inteiro Inteiro Inteiro VALOR 2 2 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 X Y Z Fazendo Y Z NOME X Y Z Fazendo X Y NOME X Y Z TIPO Inteiro Inteiro Inteiro VALOR 3 3 3 TIPO Inteiro Inteiro Inteiro VALOR 1 3 3 TIPO Inteiro Inteiro Inteiro VALOR 1 2 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 XY

c) X Y ZX

d) X Y ZY

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 <lista de variveis>

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 A TIPO INTEIRO VALOR 32

A leitura uma atribuio cujos valores esto externos ao algoritmo.

Exemplo 2: 20

ENTRADA DE DADOS:

32

45

60

LEIA A,

B,

Resultado da leitura: Valores lidos (32, 45, e 60) armazenados nas variveis A, B, C (na TS) respectivamente. NOME A B C Exemplo 3 : ATRIBUTOS Inteiro Inteiro Inteiro VALOR 32 45 60

ENTRADA DE DADOS:

32 60

45

LEIA A, 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 45 60

LEIA A LEIA B LEIA C

Valores lidos (32, 45, e 60) armazenados nas variveis A, B, C (na TS) respectivamente.

21

Exemplo 5 :

ENTRADA DE DADOS: 32 60 45

LEIA A LEIA B 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 60

LEIA A 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 <lista de variveis>

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 NOME A B C ATRIBUTOS Inteiro Inteiro Inteiro VALOR 32 45 60 Lista de variveis

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 A B C

ATRIBUTOS Inteiro Inteiro Inteiro

VALOR 32 45 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 A B C ATRIBUTOS Inteiro Inteiro Inteiro VALOR 32 45 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 A B C ATRIBUTOS Inteiro Inteiro Inteiro VALOR 32 45 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 A B C ATRIBUTOS Inteiro Inteiro Inteiro VALOR 32 45 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 A B C

ATRIBUTOS Inteiro Inteiro Inteiro

VALOR 32 45 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 A B C ATRIBUTOS Inteiro Inteiro Inteiro A = 32 B = 45 C = 60 VALOR 32 45 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 Escreve o valor lido, acompanhado de uma mensagem Simulao do algoritmo DECLARE A COMO INTEIRO NOME A TIPO INTEIRO VALOR Cria a rea que armazenar o valor a ser lido L da entrada de dados o valor

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

e armazena na varivel definida. NOME A TIPO INTEIRO VALOR 80

ESCREVA O VALOR LIDO = , A NOME A ATRIBUTOS Inteiro VALOR 80

O VALOR LIDO = 80

26

2) Leia dois valores e escreva um algoritmo para escrev-los. Cria as variveis que armazenaro os valores lidos 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

DECLARE A, B COMO INTEIRO LEIA A ESCREVA O VALOR LIDO = , A LEIA B ESCREVA O VALOR LIDO = , B

Simulao do algoritmo DECLARE A, B COMO INTEIRO NOME A B TIPO INTEIRO INTEIRO VALOR

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 65

LEIA

e armazena na varivel definida. NOME A B TIPO INTEIRO INTEIRO VALOR 78

27

ESCREVA O VALOR LIDO = , A NOME A B TIPO INTEIRO INTEIRO VALOR 78

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

e armazena na varivel definida. NOME A B TIPO INTEIRO INTEIRO VALOR 78 65

ESCREVA O VALOR LIDO = , B NOME A B TIPO INTEIRO INTEIRO VALOR 78 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. Cria a varivel que armazenar os valores lidos 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

DECLARE A COMO INTEIRO LEIA A ESCREVA O VALOR LIDO = , A LEIA A ESCREVA O VALOR LIDO = , A

Simulao do algoritmo DECLARE A COMO INTEIRO NOME A TIPO INTEIRO VALOR

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 65

LEIA

e armazena na varivel definida. NOME A TIPO INTEIRO VALOR 78

29

ESCREVA O VALOR LIDO = , A NOME A TIPO INTEIRO VALOR 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

e armazena na varivel definida. Observe que o valor armazenado em A ( 78 ) perdido, substitudo pelo novo valor obtido atravs da leitura. NOME A TIPO INTEIRO VALOR 65

ESCREVA O VALOR LIDO = , A NOME A TIPO INTEIRO VALOR 65

O VALOR LIDO = 78 O VALOR LIDO = 65

30

4) Leia dois valores inteiros e calcule a soma. Cria as reas (V1, V2) que armazenaro os valores a serem lidos. E a rea que armazenar a soma (RESULTADO)

L da entrada de dados os valores que sero somados

DECLARE V1, V2, RESULTADO COMO INTEIRO LEIA V1, V2 RESULTADO V1 + V2 ESCREVA VALORES LIDOS =, V1, V2 ESCREVA A SOMA DOS VALORES = , RESULTADO

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 Escreve os valores lidos, acompanhados de uma mensagem

Escreve a soma (RESULTADO) calculada

Simulao do algoritmo DECLARE V1, V2, RESULTADO COMO INTEIRO NOME V1 V2 RESULTADO TIPO INTEIRO INTEIRO INTEIRO VALOR

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:

LEIA V1,

V2

e armazena na varivel definida.

31

NOME V1 V2 RESULTADO

TIPO INTEIRO INTEIRO INTEIRO

VALOR 3 5

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

e em segundo lugar, o valor computado da expresso atribudo ao identificador. NOME V1 V2 RESULTADO TIPO INTEIRO INTEIRO INTEIRO VALOR 3 5 8

ESCREVA VALORES LIDOS =, V1, V2 NOME V1 V2 RESULTADO TIPO INTEIRO INTEIRO INTEIRO VALOR 3 5 8

VALORES LIDOS = 3 5

32

ESCREVA A SOMA DOS VALORES = , RESULTADO

NOME V1 V2 RESULTADO

TIPO INTEIRO INTEIRO INTEIRO

VALOR 3 5 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:

LEIA V1, V2

AGORA: cada dado colocado em uma linha ( duas leituras duas linhas ) Entrada de dados: 3 5

33

Entrada de dados:

LEIA V1

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 V1 V2 RESULTADO TIPO INTEIRO INTEIRO INTEIRO VALOR 3 5 8

VALORES LIDOS = 3 5

34

AGORA ESCREVA PRIMEIRO VALOR LIDO =, V1 NOME V1 V2 RESULTADO TIPO INTEIRO INTEIRO INTEIRO VALOR 3 5 8

PRIMEIRO VALOR LIDO = 3

ESCREVA SEGUNDO VALOR LIDO =, V2 NOME V1 V2 RESULTADO TIPO INTEIRO INTEIRO INTEIRO VALOR 3 5 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 LEIA Y, I b) LEIA J LEIA T, O, R c) LEIA NOME, SEXO, SALARIO d) LEIA A LEIA A f) LEIA A ENTRADA DE DADOS: 1 2 3 4 56 ENTRADA DE DADOS: 1 2 3 4 567 ENTRADA DE DADOS: 1 2 3 4 5 ENTRADA DE DADOS: 1 2 3 4

ENTRADA DE DADOS: 1

36

LEIA A LEIA A, B g) LEIA A, B LEIA A LEIA A, B LEIA A,B

2 3 4 ENTRADA DE DADOS: 1 5 2 3 4 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 LEIA A, B, C ESCREVA A, B, C MEDIA ( A + B + C ) /3 ESCREVA MEDIA LEIA A, B, C ESCREVA A, B, C MEDIA ( A + B + C ) /3 ESCREVA MEDIA

ENTRADA 4 2 6 10 6 0 7 8 7

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 <condio> ENTO <seqncia de passos> 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 LEIA A SE A > 10 ENTO ESCREVA A FIM-SE A > 10 ? SIM

ESCREVA A

NO

Simulao do algoritmo DECLARE A COMO INTEIRO NOME A TIPO INTEIRO VALOR

39

LEIA A L um valor da entrada de dados.

entrada de dados:

78

LEIA

e armazena na varivel definida. NOME A TIPO INTEIRO VALOR 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 <condio> ENTO <seqncia de passos1> SENO <seqncia de passos2> 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 MENOR QUE 10' , A

ESCREVA 'VALOR 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 <seqncia de passos 3 > SENO <seqncia de passos 4 > FIM-SE SENO SE < condio 4 > ENTO <seqncia de passos 5 > SENO SE < condio 5 > ENTO <seqncia de passos 6 > SENO <seqncia de passos 7 > FIM-SE FIM-SE FIM-SE SENO SE < condio 6 > ENTO <seqncia de passos 8 > SENO SE < condio 7 > ENTO <seqncia de passos 9 > SENO SE < condio 8 > ENTO <seqncia de passos 10 > SENO <seqncia de passos 11 > 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 <seqncia de passos 4 > SENO SE < condio 4 > ENTO <seqncia de passos 5 > SENO SE < condio 5 > ENTO Aninhamento <seqncia de passos 6 > errado. SENO Observe as <seqncia de passos 7 > linhas se FIM-SE cruzando FIM-SE FIM-SE FIM-SE FIM-SE

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

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 ESCREVA MENOR SE A<B e A<C ENTO MENOR A SENO determine o menor dentre B e C FIM-SE

SE B < C ENTO MENOR B SENO MENOR C FIM-SE

45

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<Y+Z) e (Y <X+Z) e (Z<X+Y)) ENTO verifique o tipo do tringulo SENO Escreva No Existe Tringulo FIM-SE

SE X=Y E X = Z ENTO ESCREVA TRIANG. QUILATERO SENO Verifique se ele escaleno ou isscele FIM-SE

SE X=Y OU X = Z OU Y = Z ENTO ESCREVA TRIANG. ISOSCELES SENO ESCREVA TRIANG. ISCALENO FIM-SE

3) Dados trs 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 intermedirio e em N o maior valor ESCREVA L,M,N SE M > N ENTO AUXILIAR M MN N AUXILIAR FIM-SE SE L > M ou L > N ENTO SE M < N ENTO troque L com M SENO troque L com N FIM-SE FIM-SE

AUXILIAR L LM M AUXILIAR AUXILIAR L LN N AUXILIAR

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 X = -----------------AE - BD AF - CD Y = --------------------------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 de 1,60 a 1,85 mais que 1,85 baixa estatura estatura normal 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 de 1.201,00 a 2.500,00 de 2.501,00 a 5.000,00 acima de 5.000,00 isento 10% 15% 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 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 ENTRADA DE DADOS 17 34 1 23 78

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 <especificao de vezes> <seqncia de passos a ser repetida > FIM-REPETIR No exemplo anterior, colocamos a seqncia de passos a ser repetida dentro da repetio: DECLARE A COMO INTEIRO REPETIR <especificao de vezes> LEIA A ESCREVA O VALOR LIDO = , A

CORPO DA REPETIO

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

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. <incremento> 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 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

EQUIVALE AO ALGORITMO

DECLARE A, I COMO INTEIRO REPETIR I = 1, 10, 1 LEIA A ESCREVA O VALOR LIDO = , A FIM-REPETIR

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 I1

Executa a seqncia de passos LEIA A ESCREVA O VALOR LIDO = , A

REPETIR I = 1 , 10, 1 Incrementa a varivel de controle II+ 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 A I TIPO INTEIRO INTEIRO VALOR

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 NOME A I TIPO INTEIRO INTEIRO VALOR 1 I1

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 34 1 23 78 90 2 5 8 15 TIPO INTEIRO INTEIRO

LEIA

NOME A I

VALOR 17 1

ESCREVA O VALOR LIDO = , A NOME A TIPO INTEIRO VALOR 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. II+1 NOME A I TIPO INTEIRO INTEIRO I1+1 VALOR 17 2 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 1 23 78 90 2 5 8 15 TIPO INTEIRO INTEIRO

LEIA

NOME A I

VALOR 34 2

ESCREVA O VALOR LIDO = , A NOME A I TIPO INTEIRO INTEIRO VALOR 34 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. II+1 NOME A I TIPO INTEIRO INTEIRO I2+1 VALOR 17 3 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. II+1 NOME A I TIPO INTEIRO INTEIRO I9+1 VALOR 8 10 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: NOME A I

15 TIPO INTEIRO INTEIRO

LEIA

VALOR 15 10

ESCREVA O VALOR LIDO = , A NOME A TIPO INTEIRO VALOR 15

56

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. II+1 TIPO INTEIRO INTEIRO I 10 + 1 VALOR 17 11 11

NOME A I

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

ENTRADA DE DADOS 17 ( 1 leitura ) 34 ( 2 leitura ) 1 ( 3 leitura ) 23 ( 4 leitura) 78 ( 5 leitura ) 90 ( 6 leitura) 2 ( 7 leitura ) 5 ( 8 leitura ) 8 ( 9 leitura ) 15 ( 10 leitura )

DECLARE A, I COMO INTEIRO REPETIR I = 1 ,10, 1 LEIA A REPETIO VALOR DO I ESCREVA O VALOR LIDO = , A FIM-REPETIR 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10

58

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

ENTRADA DE DADOS 17 ( 1 leitura ) 34 ( 2 leitura ) 1 ( 3 leitura ) 23 ( 4 leitura) 78 ( 5 leitura ) 90 ( 6 leitura) 2 ( 7 leitura ) 5 ( 8 leitura ) 8 ( 9 leitura ) 15 ( 10 leitura )

DECLARE A, I COMO INTEIRO REPETIR I = 11 ,20, 1 LEIA A REPETIO VALOR DO I 1 2 3 4 5 6 7 8 9 10 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) b) c) d) e) REPETIR I = 8, 10, 2 REPETIR J = 1, 2, 100 REPETIR K = 2, 2, 2 REPETIR A = 15, 11, 1 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) b) c) d) e) Quantos valores so lidos para V1 ? Qual o total de valores lidos ? Quantas linhas so impressas ? Que valores I possuir ? 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 3

2 4

c.2) TS V1 V2 I INTEIRO INTEIRO INTEIRO 9 10 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 V2 I

INTEIRO INTEIRO INTEIRO

5 ? ?

1 3

2 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 = O VALOR I = O VALOR I = O VALOR I = O VALOR I = O VALOR I = O VALOR I = O VALOR I = O VALOR I = O VALOR I = 1 2 3 4 5 6 7 8 9 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 SS+I FIM-REPETIR ESCREVA S REPETIO I S 1 1 1 2 2 3 3 3 6 55 4 4 10 5 5 15 6 6 21 7 7 28 8 8 36 9 9 45 10 10 55

Valor de S que ser impresso

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 SS*I FIM-REPETIR ESCREVA S REPETIO I S 1 1 1 2 2 2 3 3 6 120 4 4 24 5 5 120

Valor de S que ser impresso

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 SS*I FIM-REPETIR Observe: que o valor de N est sendo lido e usado como limite ESCREVA S da repetio REPETIO I S N 1 1 1 2 2 2 3 3 6 4 4 24 5 5 120

1 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 SV 0 REPETIR I = 1,10,1 LEIA V SI SI + I SV SV + V FIM-REPETIR ESCREVA SI ESCREVA SV ENTRADA DE DADOS 10 9 8 7 6 5 4 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 : S = N! ----------------------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

S =

37 X 38 1

36 X 37 2

35 X 36 3

+. . . +

1X 2 37

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 ------- + 1! X --------2! X --------- + ... 3!

S=

X -

, usando os 20 primeiros termos da srie. 21. Calcular a srie :

22. Calcular e imprimir a srie :

P =

1! 1

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:
S= 1 2 3 N 1 N + + + ...+ + + N N 1 N 2 2 1

001 01
68

. . .+

61 4

4 2

1 1

= S

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 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 ENTRADA DE DADOS 17 34 1 23 78 . . finito .

. . .

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 <condio> FAA <seqncia de passos> 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 . . . 0

FLAG

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 0 23 78 . . .

Apenas os valores 17, 34 e 1 sero processados Valor colocado erradamente

FLAG 70

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 LEIA A

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

71

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

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. Simulao do algoritmo DECLARE A COMO INTEIRO NOME A TIPO INTEIRO

VALOR

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 34 1 23 78 . . . 42 0 TIPO INTEIRO

LEIA

NOME A

VALOR 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

72

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 1 23 78 . . . 42 0

LEIA

NOME A

TIPO INTEIRO

VALOR 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 A TIPO INTEIRO VALOR 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 A TIPO INTEIRO VALOR 42 17 34 1 23 . O VALOR LIDO = 42

O VALOR LIDO = O VALOR LIDO = O VALOR LIDO = O VALOR LIDO =

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:

LEIA

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 S0 LEIA A ENQUANTO ( A # -1 ) FAA S S+A LEIA A FIM-ENQUANTO ESCREVA S a) b) c) d) ENTRADA DE DADOS 1 3 0 4 2 -1

Quais os valores lidos ? Que valor seria impresso ? Quantas repeties seriam realizadas ? 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 SS+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 o corpo da repetio, caso negativo para a repetio. Assim a repetio REPETIR I = 1 ,10, 2 pode ser interpretada como: comeando em 1 e enquanto o valor a varivel de controle for menor ou igual que 10 execute o corpo da repetio e em seguida incremente de 2 a varivel de controle.

DECLARE I , S COMO INTEIRO S 0 REPETIR I = 1 ,10, 2 algoritmo SS+I FIM-REPETIR equivalente ESCREVA S

DECLARE I , S COMO INTEIRO S 0 I 1 ENQUANTO ( I < 10 OR I = 10 ) FAA SS+I I I+2 FIM-ENQUANTO ESCREVA S

OBS.: o algoritmo anterior, utilizando enquanto, no faz uso de flag, pois no h leitura de dados. Porm, a regra apresentada anteriormente:
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.

76

respeitada.
DECLARE I, S COMO INTEIRO S 0 I 1 ENQUANTO ( I < 10 OR I = 10 ) FAA SS+I I I+2 FIM-ENQUANTO ESCREVA S

inicializar a varivel que controla o loop antes de inici-lo. Isso ser realizado pela atribuio do valor 1 (valor inicial da repetio REPETIR I = 1 ,10, 2 ) a varivel I (varivel de controle da repetio)

Modificar o valor da varivel que controla a repetio dentro dele. Isso ser feito atravs do incremento da varivel I de duas unidades

A condio ( I < 10 OR I = 10 ), pois o limite estabelecido o valor 10, na repetio REPETIR I = 1 ,10, 2

B.4) EXERCCIOS PROPOSTOS


1. Para A e B inteiros e maiores que zero, fazer um algoritmo para o clculo A dividido por B usando subtraes sucessivas. 2. Considerando a igualdade

Soma = 13 + 23 + 33 + ...+ N3
Fazer um algoritmo para ler um valor X inteiro, positivo e maior que zero e obter o menor valor de N que satisfaa a relao SOMA > X. 3. Chico tem 1,50 metro e cresce 2 centmetros por ano, enquanto Z tem 1,10 metro e cresce 3 centmetros por ano. Construa um algoritmo que calcule e imprima quantos anos sero necessrios para que Z seja maior que Chico.

77

Captulo III - ARQUIVOS


Quando se deseja manter e/ou obter informaes sobre objetos de raciocnio pode-se chamar estes objetos de classes de entidade, como por exemplo: Alunos, Professores, equipes de futebol, peas de um estoque, empregados de uma fbrica, etc.. A seleo de um elemento de uma classe de entidade constitui uma entidade. As caractersticas que interessam no contexto constitui os atributos da classe de entidade. Exemplo: Aluno Nome Filiao Endereo Matrcula

As caractersticas de uma classe de entidade podem assumir valores que denominamos de valor de atributo. Exemplo: Aluno Nome - Maria Filiao - Pedro e Ana Endereo - Rua Pres. Vargas, 15 Matrcula - 1509

Considerando a classe de entidade empregados de uma empresa pode-se visualizar o seguinte: Empregados = { Joo, Carlos, Maria, Pedro, Ana, ... } Empregado = { Carlos } Atributos = { Nome, Departamento, Idade, Cargo, Tempo de Servio } Valores de Atributo = { Carlos, Computao, 30, Programador, 5 } A perfeita individualizao de uma entidade feita pela justaposio de um conjunto de pares < atributos - valores de atributo > que recebe o nome de registro. Registro = {{nome, Carlos}, {Departamento, {Cargo,Programao}, {Tempo de Servio, 5}} Computao}, {Idade, 30},

Certamente um registro pode ser constitudo tornando-se implcita a existncia dos atributos e trabalhando apenas com os valores de atributo: { Carlos, Computao, 30, Programador, 5 }. Em termos computacionais (jargo tcnico) os atributos so tambm chamados de campos do registro. Um conjunto de registros que caracterizam uma classe de entidade chamado de arquivo.

78

III.1) EXERCCIOS RESOLVIDOS


1. Escreva um algoritmo que leia o nome, sexo, idade de uma pessoa e escreva os dados lidos. DECLARE NOME, SEXO CARACTER DECLARE IDADE COMO INTEIRO LEIA NOME, SEXO, IDADE ESCREVA NOME, SEXO, IDADE 2. Escreva um algoritmo que leia um arquivo contendo o nome, sexo, idade de vrias pessoas e escreva os dados lidos. O total de registro igual a 100. DECLARE NOME, SEXO CARACTER DECLARE IDADE COMO INTEIRO REPETIR I = 1 , 100, 1 LEIA NOME, SEXO, IDADE ESCREVA NOME, SEXO, IDADE FIM-REPETIR 3. Escreva um algoritmo que leia um arquivo contendo o nome, sexo, idade de vrias pessoas e escreva os dados lidos. DECLARE NOME, SEXO CARACTER DECLARE IDADE COMO INTEIRO LEIA NOME, SEXO, IDADE ENQUANTO IDADE # -1 FAA ESCREVA NOME, SEXO, IDADE LEIA NOME, SEXO, IDADE FIM-ENQUANTO

4. Escreva um algoritmo que leia um arquivo contendo o nome, sexo, idade de vrias pessoas e escreva os dados lidos das pessoas de sexo feminino. DECLARE NOME, SEXO CARACTER DECLARE IDADE COMO INTEIRO LEIA NOME, SEXO, IDADE ENQUANTO IDADE # -1 FAA SE SEXO = 'F' ENTO ESCREVA NOME, SEXO, IDADE FIM-SE LEIA NOME, SEXO, IDADE FIM-ENQUANTO

79

5. Escreva um algoritmo que leia um arquivo contendo o nome, sexo, idade de vrias pessoas e escreva o total de mulheres. DECLARE NOME, SEXO CARACTER DECLARE IDADE, TOTALMULHER COMO INTEIRO LEIA NOME, SEXO, IDADE TOTALMULHER 0 ENQUANTO NOME # 'ZZZ' FAA SE SEXO = 'F' ENTO TOTALMULHER TOTALMULHER + 1 FIM-SE LEIA NOME, SEXO, IDADE FIM-ENQUANTO ESCREVA 'TOTAL DE MULHERES =', TOTALMULHER 6. Escrever um algoritmo que leia um arquivo contendo o nome, sexo, idade e o total de horas trabalhadas de vrias pessoas. Considerando que a hora de trabalho custa R$ 3,45 calcule e escreva o salrio bruto de cada pessoa. DECLARE NOME, SEXO CARACTER DECLARE IDADE, TOTALMULHER COMO INTEIRO DECLARE TOTALH, SALBRUTO COMO REAL LEIA NOME, SEXO, IDADE ENQUANTO IDADE # -1 FAA SALBRUTO TOTH * 3.45 ESCREVA SALBRUTO LEIA NOME, SEXO, IDADE FIM-ENQUANTO 7. Fazer um algoritmo que leia o sexo e a idade de vrias pessoas. Escreva o total de homens menor de idade e o total de mulheres maior de idade. DECLARE SEXO CARACTER DECLARE IDADE, HMENOR, MMAIOR INTEIRO HMENOR -1 MMAIOR -1 LEIA SEXO, IDADE ENQUANTO IDADE # -1 FAA SE SEXO = 'M' E IDADE < 18 ENTO HMENOR HMENOR + 1 FIM-SE SE SEXO = 'F' E IDADE 18 ENTO MMAIOR MMAIOR + 1 FIM-SE LEIA SEXO, IDADE FIM-ENQUANTO ESCREVA HMENOR ESCREVA MMAIOR

80

8) Escrever um algoritmo que leia o sexo e o peso de pessoas, calcule e escreva a mdia dos pesos dos homens e o total de mulheres com mais de 50 kg. DECLARE SEXO CARACTER DECLARE PESO, MDIA, SOMA, TOTALHOM, TOTALMULH INTEIRO TOTAL_HOM 0 SOMA 0 TOTALMULH 0 LEIA SEXO, PESO ENQUANTO SEXO # 'Z' FAA SE SEXO = 'M' ENTO TOTALHOM TOTALHOM + 1 SOMA SOMA + PESO FIM-SE SE SEXO = 'F' E PESO > 50 ENTO TOTALMULH TOTALMULH + 1 FIM-SE LEIA SEXO, PESO FIM-ENQUANTO MDIA SOMA / TOTALHOM ESCREVA MDIA ESCREVA TOTALMULH

III.2 EXERCCIOS PROPOSTOS


1. Escreva um algoritmo que leia uma seqncia de valores inteiros positivos e : a) imprima todos os nmeros; b) imprima o maior e o menor valor; c) imprima os valores primos, pares e impares; 2. Escreva um algoritmo que leia uma seqncia de dados (nome, sexo, idade,salrio) a) imprima todos os nomes dos funcionrios; b) imprima o total de homens; c) imprima o total de mulheres com salrio maior que R$ 500,00; d) imprima a mdia salarial. 3. Dado uma seqncia de dados (nome, salrio, idade, sexo) dos funcionrios de uma firma, escreva um algoritmo para: a) imprimir os nomes das pessoas; b) imprimir o total de homens e o total de mulheres; c) imprimir o maior salrio; d) imprimir a menor idade; e) para os salrios menores que R$ 5.000,00 imprima esses salrios acrescidos de 20%.

81

4. Escrever um algoritmo que l o nmero de um vendedor, o seu salrio-fixo, o tota1 de vendas por ele efetuadas e o percentual que ganha sobre o total de vendas. Calcular o salrio tota1 do vendedor. Escrever nmero do vendedor e o salrio total. 5. Escrever um algoritmo que l um nmero no determinado de conjuntos de valores, cada um formado pelo nmero de um aluno e suas 3 notas. Calcular, para cada aluno, a mdia ponderada com pesos respectivos de 4 para a maior nota e 3 paras as outras duas. Escrever o nmero do aluno, suas 3 notas, a mdia calculada e uma mensagem "aprovado" se nota >= 5 ou "reprovado" para nota < 5. 6. Escrever um algoritmo que l o nmero de um funcionrio, seu nmero de horas trabalhadas, o valor que recebe por hora, e o nmero de filhos com idade menor do que 14 anos, o valor do salrio famlia por filho e calcula o salrio deste funcionrio. 7. 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 l o nmero do vendedor, o nmero de carros por ele vendidos, o valor tota1 de suas vendas, o salrio fixo e o valor que recebe por carro vendido e calcula o salrio mensal do vendedor, escrevendo-o juntamente com o seu nmero de identificao. 8. Escrever um algoritmo que l o nmero de um vendedor de uma empresa, seu salrio fixo e o total de vendas por ele efetuadas. Cada vendedor recebe um salrio fixo, mais uma comisso proporcional s vendas por ele efetuadas. A comisso de 3% sobre o total de vendas at $ 1.000,00 e 5% sobre o que ultrapassa este valor. Escrever o nmero do vendedor, o total de suas vendas, seu salrio fixo e seu salrio total. 9. Escrever um algoritmo que l 5 conjuntos de 2 valores, o primeiro representando o nmero de um aluno e o segundo representando a sua altura em centmetros. Encontrar o aluno mais alto e o mais baixo e escrever seus nmeros, suas alturas e uma mensagem dizendo se o mais alto ou o mais baixo. 10. Fazer um programa que leia um conjunto de dados contendo a matrcula, as trs notas e a freqncia de do aluno e calcule e imprima: a nota final de cada aluno; a maior e a menor nota final da turma (supor no haver empate); a nota mdia da turma; o total dos alunos reprovados; a porcentagem dos alunos reprovados por freqncia. para cada aluno: a matrcula, a freqncia, as trs notas, a nota final e o aproveitamento (A/R); Imprimir a matrcula quando for pertinente.

11. Uma universidade deseja fazer um levantamento a respeito de seu concurso vestibular. Para cada curso, fornecido o seguinte conjunto de valores : 82

- cdigo do curso; - nmero de vagas; - nmero de candidatos do sexo masculino; - nmero de candidatos do sexo feminino. 12. Considere o cdigo do curso sendo zero para indicar o flag de entrada. Fazer um programa que: - calcule e imprima, para cada curso, o nmero de candidatos por vaga e a porcentagem de candidatos do sexo feminino e o cdigo do curso; - determine e imprima o maior nmero de candidatos por vaga juntamente com o cdigo do curso (supor que no haver empate); - calcule e imprima o total de candidatos. 13. Numa fbrica trabalham homens e mulheres divididos em trs classes : A - os que fazem at trinta peas por ms; B - os que fazem de 31 a 35 peas por ms; C - os que fazem mais de 35 peas por ms. A classe A recebe salrio mnimo. A classe B recebe salrio mnimo e mais 3% do salrio mnimo por pea, acima das 30 iniciais. A classe C recebe salrio mnimo e mais 5% do salrio mnimo por pea acima das 30 iniciais. Fazer um programa que : Leia um conjunto de dados com : o nmero de operrios; o nmero de peas fabricadas por ms; o sexo do operrio; Considere o nmero de operrios sendo zero como flag de entrada. Calcular e imprimir : o nmero e o salrio de cada operrio; o total da folha de pagamento mensal; o nmero total de peas fabricadas por ms; a mdia de peas fabricadas pelos homens em cada classe; a mdia de peas fabricadas pelas mulheres em cada classe; o nmero do operrio(a) de maior salrio (supor no haver empate). 14. Existem 3 candidatos a uma vaga no Senado. Feita a eleio os votos so colocados em um arquivo, formando uma seqncia de valores. O voto de cada eleitor foi codificado da seguinte forma : 1 - voto para o candidato 1 2 - voto para o candidato 2 3 - voto para o candidato 3 4 - voto em branco 5 - voto nulo. Deseja-se saber : a) o candidato vencedor; b) o nmero de votos em branco;

83

c) e o nmero de eleitores 15. Leia 3 valores DD , MM, AA representando respectivamente (dia, ms e ano). Escreva um algoritmo para verificar a validade da data. Considere ano bissexto (um ano bissexto (fevereiro com 29 dias) quando o ano mltiplo de 4 ) e que as datas (DD MM AA) esto no intervalo de 01 01 93 at 31 12 95. 16. Escrever um algoritmo que l 3 comprimentos de lados a, b, c e os ordena em ordem decrescente, de modo que o a represente o maior dos 3 lados lidos. Determine, a seguir, o tipo de tringulo que estes 3 lados formam, com base nos seguintes casos escrevendo sempre os valores lidos e uma mensagem adequada: Se a > b + c no formam tringulo algum. Se a2 = b2 + c2 formam um tringulo retngulo. Se a2 > b2 + c2 formam um tringulo obtusngulo. Se a2 < b2 + c2 formam um tringulo acutngulo. Se forem todos iguais formam um tringulo eqiltero. Se a = b ou b = c ou a = c ento formam um tringulo isscele 17. Escrever um algoritmo que l a hora de incio de um jogo e a hora do final do jogo (considerando apenas horas inteiras) e calcula a durao do jogo em horas, sabendo-se que o tempo mximo de durao do jogo de 24 horas e que o jogo pode iniciar em um dia e terminar no dia seguinte. 18. Escrever um algoritmo que l o nmero de um funcionrio, o nmero de horas por ele trabalhadas, o valor que recebe por hora, o nmero de filhos com idade inferior a 14 anos, a idade, o tempo de servio do funcionrio e o valor do salrio famlia por filho. Calcular o salrio bruto, o desconto do INSS (8,5% do salrio bruto) e o salrio famlia. Calcular o IR (Imposto de Renda) como segue: Se Salrio Bruto > 1.500,00 ento IR = 15% do SB Se Salrio Bruto > 500,00 e SB <= 1.500,00 ento IR = 8% do SB Se salrio Bruto <= 500,00 ento IR = 0 Calcular o adicional conforme especificado: Se idade superior a 40 anos ADIC = 2% do SB Se tempo de servio superior a 15 anos ADIC = 3.5% do SB Se tempo de servio < 15 anos, mas superior a 5 anos e idade maior do que 30 anos ento ADIC = 1,5% do SB. Calcular o salrio lquido. Escrever o nmero do funcionrio, salrio bruta, total dos descontos, adicional e salrio lquido.

19. Escrever um algoritmo que l o nmero de identificao e as 3 notas obtidas por um aluno nas 3 verificaes e a mdia dos exerccios que fazem parte da avaliao. Para cada aluno, calcular a mdia de aproveitamento, usando a frmula:

84

MA = Nl + N2 x 2 + N3 x 3 + ME 7 A atribuio de conceitos obedece tabela abaixo: Mdia de Aproveitamento >= 9.0 >= 7.5 e < 9.0 >= 6.0 e < 7.5 >= 4.0 e < 6.0 < 4.0 Conceito A B C D E

O algoritmo deve escrever o nmero do aluno, suas notas, a mdia dos exerccios, a mdia de aproveitamento, o conceito correspondente e a mensagem: "APROVADO" se o conceito for A, B, ou C e "REPROVADO" se conceito for D ou E. 20. Uma empresa decidiu conceder um aumento de salrios a seus funcionrios de acordo com a tabela abaixo: Salrio Atual 0 - 400,00 400,01 - 700,00 700,01 - 1.000,00 1.000,01 - 1.800,00 1.800,01 - 2.500,00 acima de 2.500,00 ndice De Aumento 15% 12% 10% 7% 4% sem aumento

Escrever um algoritmo que l, para cada funcionrio, o seu nmero e o seu salrio atual e escreve o numero do funcionrio, seu salrio atua1, o percentual de seu aumento e o valor do salrio corrigido. 21. Escrever um algoritmo que l, para cada vendedor de uma empresa, o seu nmero de identificao, seu salrio fixo e o total de vendas em reais por ele efetuadas. Cada vendedor recebe um salrio fixo e uma comisso proporcional s vendas por ele efetuadas. A comisso de 3% sobre o total de vendas at $ 1.000,00 e 5% sobre o que ultrapassa este valor. Escrever, para cada vendedor, o seu nmero de identificao, o tota1 de suas vendas, seu salrio fixo e seu salrio total.

85

Captulo IV - VETOR
Os algoritmos desenvolvidos at agora apresentam, em relao aos dados de entrada, uma caracterstica comum que o fato de que o dado lido independe dos outros. Alm disso, cada varivel apresentada at agoras tm a capacidade de armazenar apenas um valor a cada vez. O vetor ou agregado homogneo uma estrutura de dados, capaz de armazenar vrios valores ao mesmo tempo e de mesmo tipo. Os vetores podem ser unidimensionais ou multidimensionais (matrizes, tabelas.).

IV.1) DECLARAO DE VETORES


Em pseudocdigo as declaraes podem ser representadas como:

DECLARE <nome>(<tamanho>) COMO <tipo>

Onde tipo pode ser: inteiro, real, carter, lgico. <nome> = nome do identificador <tamanho> = define quantos valores sero armazenados. Exemplo: DECLARE A(10) COMO INTEIRO NOME A TIPO VETOR INTEIRO VALOR 10

IV.2) COLOCANDO VALORES NOS VETORES


Para a colocao de valores nos vetores necessrio indicar que posio o valor ser alocado. Para isso, necessrio utilizar um ndice. Um ndice um valor inteiro deve ser maior ou igual a 1 e menor ou igual que a quantidade declarada, colocada entre os parnteses. O comando de atribuio, j estudado, pode ser utilizado para a atribuio de valores no vetor. Por exemplo: Vetor

ndice
Valor A(3) 12 ( o valor trs indica a posio no vetor e o valor 12, o valor a ser alocado)

86

NOME A

TIPO VETOR INTEIRO

VALOR 10 12

A(10) 55 ( o valor dez indica a posio no vetor e o valor 55, o valor a ser alocado) NOME A TIPO VETOR INTEIRO VALOR 10 12 55

OBS. CADA A(I) DEVE SER TRATADO COMO UMA VARIVEL INTEIRA "COMUM", ISTO , PODESE REALIZAR OPERAES ARITMTICAS, RELACIONAIS, ETC.. OBSERVE QUE AO COLOCAR O VALOR NO COMPONENTE, ELE PODE SER MANIPULADO DIRETAMENTE, ISTO , PARA APANHAR O VALOR QUE EST NO VETOR NO NECESSRIO LER O VALOR, BASTA ACESS-LO DIRETAMENTE. Exemplo: A(10) A(10) + 1 ( o valor de A(10) passou para 56)

A(1) A(10) - A(3) ( o valor de A(1) que estava indefinido passou a ter o valor 44) Caso seja escrito uma operao com componentes indefinida, ser considerada uma operao errada, por exemplo: A(4) A(5) - 32 incorreta) ( o componente A(5) no possui valor logo a operao est

A(6) A(15) - 32 ( o componente A(15) no existe logo a operao est incorreta)

IV.2.1) Colocando valores no vetor atravs de leitura


Alm da atribuio possvel colocar os valores no vetor atravs da operao de leitura.

ENTRADA DE DADOS:

32

LEIA

A(15)

NOME

TIPO

VALOR

87

VETOR INTEIRO

10 32

IV.2.2) Colocando todos os valores no vetor atravs de leitura


A) Um valor por linha DECLARE A(5), I COMO INTEIRO LEIA A(1) LEIA A(2) LEIA A(3) LEIA A(4) LEIA A(5) OU DECLARE A(5), I COMO INTEIRO REPETIR I = 1,10,1 LEIA A(I) FIM-REPETIR

ENTRADA DE DADOS 12 20 15 1 4

NOME A

TIPO VETOR INTEIRO

VALOR 5 12 20 15 1 4

B) Todos os valores na mesma linha DECLARE A(5), I COMO INTEIRO LEIA A(1), A(2), A(3), A(4), A(5) OU DECLARE A(5), I COMO INTEIRO LEIA A(I), I = 1,10,1

ENTRADA DE DADOS 12 20 15 1 4

NOME A

TIPO VETOR INTEIRO

VALOR 5 12 20 15 1 4

IV.3) IMPRIMINDO O VETOR

88

A) Um valor por linha ESCREVA ESCREVA ESCREVA ESCREVA ESCREVA NOME A A(1) A(2) A(3) A(4) A(5) TIPO VETOR INTEIRO

OU

REPETIR I = 1,10,1 ESCREVA A(I) FIM-REPETIR VALOR

5 12 20 15 1 4

12 20 15 1 4

B) Todos os valores na mesma linha

ESCREVA A(1), A(2), A(3), A(4), A(5)

OU ESCREVA A(I), I = 1,10,1

NOME A

TIPO VETOR INTEIRO

VALOR 5 12 20 15 1 4

12 20 15 1

89

IV.4) Exerccios Resolvidos


1. Escreva um algoritmo para ler 50 valores inteiros e imprimi-los acompanhados de sua mdia aritmtica. DECLARE A(50), I, SOMA COMO INTEIRO DECLARE MEDIA COMO REAL LEIA A(I), I = 1,50,1 SOMA 0 REPETIR I = 1,50,1 SOMA SOMA + A(I) FIM-REPETIR MEDIA SOMA / 50 REPETIR I = 1,50,1 ESCREVA A(I), MEDIA FIM-REPETIR

2. Escreva um algoritmo que leia um vetor de 100 posies de nmeros inteiros e mostre somente os de valores positivos e sua posio do vetor. DECLARE VET(100), I COMO INTEIRO LEIA VET(I), I = 1,100,1 REPETIR I = 1,100,1 SE ( VET(I) > 0 ) THEN ESCREVA VALOR = , VET(I), NA POSICAO =, I FIM-SE FIM-REPETIR

3. Escreva um algoritmo que leia um vetor de 80 elementos inteiros. Encontre e mostre o menor elemento e sua posio no vetor. DECLARE VET(80), I COMO INTEIRO LEIA VET(I), I = 1,80,1 MENOR VET(1) POSICAOMENOR 1 REPETIR I = 1,79,1 SE ( VET(I) < MENOR ) THEN MENOR VET(I) POSICAOMENOR I FIM-SE FIM-REPETIR ESCREVA MENOR = , MENOR, NA POSICAO =, POSICAOMENOR

90

4.Escreva um algoritmo que leia um vetor inteiro de 30 posies e crie um segundo vetor, substituindo os valores 0 por 1. Mostre os 2 vetores. DECLARE A(30), B(30), I COMO INTEIRO LEIA A(I), I = 1,30,1 ESCREVA A(I), I = 1,30,1 REPETIR I = 1,30,1 SE ( A(I) = 0 ) THEN B(I) 1 SENO B(I) A(I) FIM-SE FIM-REPETIR ESCREVA B(I), I = 1,30,1

5.Escreva um algoritmo que leia um vetor inteiro de 30 posies e crie um segundo vetor, com apenas os valores diferentes de 0. Mostre os 2 vetores. DECLARE A(30), B(30), I, K COMO INTEIRO LEIA A(I), I = 1,30,1 ESCREVA A(I), I = 1,30,1 K0 REPETIR I = 1,30,1 SE ( A(I) # 0 ) THEN KK+1 B(K) A(I) FIM-SE FIM-REPETIR ESCREVA B(I), I = 1,K,1

IV.5) EXERCCIOS
1. Sendo o vetor V com 10 componentes de nmeros inteiros. 2 6 8 3 10 9 1 21 33 14

e as variveis X = 2 e Y = 4, escreva o valor correspondente a solicitao: a) V[ X + 1] e) V[ X * 1] i) V[ X - Y] b) V[X + 2] f) V[ X * 2] c) V[ X + 3] g) V[ X * 3] d) V[ X * 4] h) V[ X + Y] ]

2. Escreva um algoritmo que leia um arquivo de nmeros inteiros e apresente o somatrio dos valores 3. Escreva um algoritmo que depois de ler um arquivo de inteiros, apresente os seguintes resultados: mximo, mnimo, somatrio, a mdia e a quantidade de nmeros superiores a mdia.

91

4. Escreva um algoritmo que leia um arquivo com 10 nmeros, e os mostre em ordem inversa. 5. Elaborar um algoritmo que l um conjunto de 30 valores e os coloca em 2 vetores conforme forem pares ou mpares. O tamanho do vetor de 5 posies. Se algum vetor estiver cheio, escrev-lo. Terminada a leitura escrever o contedo dos dois vetores. Cada vetor pode ser preenchido tantas vezes quantos forem necessrios. 6. Escreva um algoritmo que leia dois vetores de 10 posies e faa a multiplicao dos elementos de mesmo ndice, colocando o resultado em um terceiro vetor. Mostre o vetor resultante. 7. Escreva um algoritmo que leia e mostre um vetor de 20 elementos inteiros. a seguir, conte quantos valores pares existem no vetor. 8. Escreva um algoritmo que leia um vetor de 20 posies e mostre-o. Em seguida, troque o primeiro elemento com o ltimo, o segundo com o penltimo, o terceiro com o antepenltimo, e assim sucessivamente. Mostre o novo vetor depois da troca. 9. Escrever um algoritmo que gera os 10 primeiros nmeros primos acima de 100 e os armazena em um vetor de X(10) escrevendo, no final, o vetor X. 10. Escrever um algoritmo que l 2 vetores X(10) e Y(10) e os escreve. Crie, a seguir, um vetor Z que seja a unio de X com Y. 11. Escrever um algoritmo que l 2 vetores X(10) e Y(10) e os escreve. Crie, a seguir, um vetor Z que seja a soma entre X e Y. 12. Escrever um algoritmo que l 2 vetores X(10) e Y(10) e os escreve. Crie, a seguir, um vetor Z que seja o produto entre X e Y. 13. Faa um algoritmo que leia um vetor (A) de 100 posies. Em seguida, compacte o vetor, retirando os valores nulos e negativos. Coloque o resultado no vetor B. 14. Faa um algoritmo que leia um vetor de 500 posies de nmeros reais e divida todos os seus elementos pelo maior valor do vetor. Mostre o vetor aps os clculos. 15. Uma locadora de vdeos tem guardado, em um vetor de 500 posies, a quantidade de filmes retirados por seus clientes durante o ano. Agora, esta locadora est fazendo uma promoo e, para cada 10 filmes retirados, o cliente tem direito a uma locao grtis. Faa um algoritmo que crie um outro vetor contendo a quantidade de locaes gratuitas a que cada cliente tem direito.

92

Captulo V - MATRIZES
Matrizes, conjuntos, tabelas ou vetores multidimensionais so estruturas de dados similares ao vetor, com a diferena que podem ter vrias dimenses. Cada clula (componente) de uma matriz ser identificada por seu nome e pelos ndices que representaro suas dimenses. Trabalharemos com matrizes de duas ou trs dimenses.

V.1) DECLARAO DE MATRIZES


Em pseudocdigo as declaraes podem ser representadas como:

DECLARE <nome>(<tamanho da primeira dimenso, tamanho da segunda dimenso, ... >) COMO <tipo>

Onde tipo pode ser: inteiro, real, caractere, lgico. <nome> = nome do identificador < tamanho da primeira dimenso > = define tamanho da primeira dimenso. < tamanho da segunda dimenso > = define tamanho da segunda dimenso, etc. Exemplo: DECLARE A(3,10) COMO INTEIRO NOME A TIPO VETOR INTEIRO VALOR 10

Posio 2,5

Posio 1,1

Posio 1,2

Posio 1,10

Posio 2,1

Posio 3,10

93

V.2) COLOCANDO VALORES NAS MATRIZES


Para a colocao de valores nos matrizes necessrio indicar que posio o valor ser alocado. Para isso, necessrio utilizar ndices (o numero de ndices corresponder a nmero de dimenses da matriz, uma matriz de duas dimenses necessitar de dois ndices, uma matriz de trs dimenses necessitar de trs ndices). Um ndice um valor inteiro deve ser maior ou igual a 1 e menor ou igual que a quantidade declarada, colocada entre os parnteses. O comando de atribuio, j estudado, pode ser utilizado para a atribuio de valores no vetor. Por exemplo: DECLARE A(3,10) COMO INTEIRO Matriz

ndice referente a linha da matriz


Valor

A(1,3) 12 ( o valor 1 indica a posio linha na matriz e valor 3 posio coluna


e o valor 12, o valor a ser alocado)

ndice referente a coluna da matriz

NOME A

TIPO VETOR INTEIRO

VALOR 10 12

Obs. Cada A(I,J) deve ser tratado como uma varivel inteira "comum", isto , pode-se realizar operaes aritmticas, relacionais, etc. . Observe que ao colocar o valor no componente, ele pode ser manipulado diretamente, isto , para apanhar o valor que est na matriz no necessrio ler o valor, basta acess-lo diretamente.

94

Exemplo: A(3,10) A(3,10) + 1 A(1,1) A(3,10) - A(2,1) Caso seja escrito uma operao com componentes indefinida, ser considerada uma operao errada, por exemplo: A(6,1) incorreta) A(1,5) - 32 ( o componente A(6,1) no existe logo a operao est

V.2.1) Colocando valores no vetor atravs de leitura


Alm da atribuio possvel colocar os valores na matriz atravs da operao de leitura. DECLARE A(3,3) COMO INTEIRO

ENTRADA DE DADOS:

32

LEIA

A(2,2)

NOME A

TIPO VETOR INTEIRO

VALOR 10

32

95

V.2.2) Colocando todos os valores no vetor atravs de leitura


A) Um valor por linha (os dados na entrada no tem a forma de uma matriz) DECLARE A(3,3) COMO INTEIRO LEIA A(1,1) LEIA A(1,2) LEIA A(1,3) LEIA A(2,1) LEIA A(2,2) LEIA A(2,3) LEIA A(3,1) LEIA A(3,2) LEIA A(3,3) OU NOME DECLARE A(3,3) COMO INTEIRO REPETIR I = 1,3,1 REPETIR J = 1,3,1 LEIA A(I,J) FIM-REPETIR FIM-REPETIR A TIPO VALOR VETOR 12 20 15 10 INTEIRO 1 4 3 ENTRADA DE DADOS 12 20 15 1 4 3 5 8 2

B) Os valores organizados por linha (Forma Matricial: Forma Recomendada) DECLARE A(3,3) COMO INTEIRO LEIA A(1,1), A(1,2), A(1,3) LEIA A(2,1), A(2,2), A(2,3) LEIA A(3,1), A(3,2), A(3,3) OU DECLARE A(3,3) COMO INTEIRO REPETIR I = 1,3,1 LEIA A(I,1), A(1,2), A(I,3) FIM-REPETIR OU DECLARE A(3,3) COMO INTEIRO REPETIR I = 1,3,1 LEIA A(I,J), J=1,3,1 FIM-REPETIR ENTRADA DE DADOS 12 20 15 1 4 3 5 8 2

NOME A

TIPO VALOR VETOR 12 20 15 10 INTEIRO 1 4 3

96

V.3) IMPRIMINDO A MATRIZ


A) Um valor por linha ESCREVA ESCREVA ESCREVA ESCREVA ESCREVA ESCREVA ESCREVA ESCREVA ESCREVA A(1,1) A(1,2) A(1,3) A(2,1) A(2,2) A(2,3) A(3,1) A(3,2) A(3,3)
12 20 15 1 4 3 5 8 2

REPETIR I = 1,3,1 REPETIR J = 1,3,1 ESCREVA A(I,J) FIM-REPETIR FIM-REPETIR

B) Os valores organizados por linha (Forma Matricial: Forma Recomendada) ESCREVA ESCREVA ESCREVA OU DECLARE A(3,3) COMO INTEIRO REPETIR I = 1,3,1 ESCREVA A(I,1), A(1,2), A(I,3) FIM-REPETIR OU 1 DECLARE A(3,3) COMO INTEIRO REPETIR I = 1,3,1 ESCREVA A(I,J), J=1,3,1 FIM-REPETIR
12 20 15 1 4 3 5 8 2

A(1,1), A(1,2), A(1,3) A(2,1), A(2,2), A(2,3) A(3,1), A(3,2), A(3,3)

NOME A

TIPO VALOR VETOR 12 20 15 10 INTEIRO 4 3

97

V.4) Exerccios Resolvidos


1. Escreva um algoritmo para ler uma matriz (5,5) de nmeros inteiros e imprimi-los acompanhados de sua mdia aritmtica. DECLARE A(5,5), I, SOMA, J COMO INTEIRO DECLARE MEDIA COMO REAL REPETIR I = 1,5,1 LEIA A(I,J), J = 1,5,1 ESCREVA A(I,J), J = 1,5,1 FIM-REPETIR SOMA 0 REPETIR I = 1,5,1 REPETIR J = 1,5,1 SOMA SOMA + A(I,J) FIM-REPETIR FIM-REPETIR MEDIA SOMA / 25 ESCREVA A(I), MEDIA

2. Escreva um algoritmo para ler uma matriz (3,3) de nmeros inteiros e imprimi-los e imprimir os valores pares indicando a linha, coluna da matriz. DECLARE A(3,3), I, J COMO INTEIRO REPETIR I = 1,3,1 LEIA A(I,J), J = 1,3,1 ESCREVA A(I,J), J = 1,3,1 FIM-REPETIR REPETIR I = 1,3,1 REPETIR J = 1,3,1 SE ( MOD( A(I,J), 2) = 0 ) THEN ESCREVA A(I,J), E PAR E ESTA NA POSICAO LINHA= ,I, E COLUNA =, J FIM-SE FIM-REPETIR FIM-REPETIR

98

3. Escreva um algoritmo para ler uma matriz (3,3) de nmeros inteiros e imprimi-los e crie um vetor com os valores impares e imprima o vetor. DECLARE A(3,3), I, J, B(9), K COMO INTEIRO REPETIR I = 1,3,1 LEIA A(I,J), J = 1,3,1 ESCREVA A(I,J), J = 1,3,1 FIM-REPETIR K0 REPETIR I = 1,3,1 REPETIR J = 1,3,1 SE ( MOD( A(I,J), 2) # 0 ) THEN K K+1 B(K) A(I,J) FIM-SE FIM-REPETIR FIM-REPETIR REPETIR I = 1,K,1 ESCREVA B(K) FIM-REPETIR

4. Escreva um algoritmo que leia duas matrizes M(3,4) e N(4,2) e cria uma matriz que seja o produto matricial de M por N;.

Nota: A(3,4) X B(4,2) = C(3,2), em geral A(M,N) X B(N,K) = C(M,K), onde cada elemento de C definido como:

c(r , s ) = arixbis
i =1
O elemento de C na posio r,s obtido considerando-se a linha r da primeira matriz e a coluna s da segunda matriz e somando-se os produtos de elementos correspondentes da linha r e coluna s. DECLARE A(3,4), B(4,2) , C(3,2) R,S, SOMA, I COMO INTEIRO REPETIR I = 1,3,1 LEIA A(I,J), J = 1,4,1 ESCREVA A(I,J), J = 1,3,1 FIM-REPETIR

99

REPETIR I = 1,4,1 LEIA B(I,J), J = 1,2,1 ESCREVA B(I,J), J = 1,3,1 FIM-REPETIR REPETIR R = 1,3,1 (fixa a linha da primeira matriz) REPETIR S = 1,2,1 (fixa a coluna da segunda matriz) SOMA 0 REPETIR I = 1,4,1 (varia os elementos para multiplicao) SOMA SOMA + A(R,I) * B(I,S) FIM- REPETIR C(R,S) SOMA FIM-REPETIR FIM-REPETIR REPETIR I = 1,3,1 ESCREVA C(I,S), S = 1,2,1 FIM-REPETIR

V.5) EXERCCIOS PROPOSTOS


1. Faa um algoritmo que leia uma matriz 15 X 15 de reais e calcule a soma dos elementos da diagonal secundria. 2. Escreva um algoritmo que leia um nmero inteiro A e uma matriz V 30x30 de inteiros. Conte quantos valores iguais a A esto na matriz.. 3. Escreva um algoritmo que l uma matriz M(5,5) e calcula as somas: a) da linha 4 de M b) da coluna 2 de M c) da diagonal principal d) da diagonal secundria e) de todos os elementos da matriz M Escrever essas somas e a matriz. 4. Elaborar um algoritmo que l duas matrizes M(4,6) e N(6,4) e cria uma matriz que seja: b) a soma de M com N; c) a diferena de M com N; Escrever as matrizes lidas e as calculadas.

100

4. Elaborar um algoritmo que l uma matriz M(6,6) e um valor A e multiplica a matriz M pelo valor A e coloca os valores da matriz multiplicados por A em um vetor de V(36) e escreve no final o vetor V. 6. Escrever um algoritmo que l uma matriz M(10,10) e a escreve. Troque, a seguir: a) a linha 2 com a linha 8 b) a coluna 4 com a coluna 10 c) a diagonal principal com a diagonal secundria d) a linha 5 com a coluna 10. Escreva a matriz assim modificada. 7. Faa um algoritmo que leia uma matriz 20x15 de inteiros. Calcule e mostre a soma das linhas pares da matriz. 8. Faa um algoritmo que leia uma matriz 20x20 de reais e some cada uma das linhas, armazenando o resultado da soma em um vetor. A seguir, multiplique cada elemento pela soma da sua linha. Mostre a matriz resultante. 9. Faa um algoritmo que leia uma matriz 50x50 de nmeros reais e encontre o maior valor da matriz. 10. Faa um algoritmo que leia uma matriz 50x50 de nmeros reais e encontre o maior valor da matriz. A seguir, multiplique cada elemento da diagonal principal pelo maior valor. Mostre a matriz aps as multiplicaes

101

Você também pode gostar