Вы находитесь на странице: 1из 108

Centro Tecnolgico
Instituto de Computao
Departamento de Cincia da Computao

Construo de Algoritmos
Verso 2011

## Prof. Leonardo Cruz da Costa

1
Sumrio
1 INTRODUO _______________________________________________________________ 4
1.2 REPRESENTAO DE ALGORITMOS _________________________________________ 6
2 CONSTRUO DE ALGORITMOS _____________________________________________ 10
2.1 OPERAES ELEMENTARES _______________________________________________ 10
2.2 ATRIBUIO ______________________________________________________________ 11
2.2.1 EXPRESSES ARITMTICAS ____________________________________________________ 15
2.1.2 EXPRESSES RELACIONAIS ____________________________________________________ 16
2.1.3 EXPRESSES LGICAS (CONDIES) ___________________________________________ 17
2.1.5 EXERCCIOS RESOLVIDOS______________________________________________________ 19
2.2.1. LEITURA _______________________________________________________________ 23
2.2.2 ESCRITA ________________________________________________________________ 24
2.3 EXEMPLOS DE ALGORITMOS_______________________________________________ 27
3. SELEO __________________________________________________________________ 37
3.1. SELEO DE UM RAMO ___________________________________________________ 37
3.2. SELEO DE DOIS RAMOS _________________________________________________ 38
3.3. EXEMPLOS DE ALGORITMOS ______________________________________________ 40
3.4. EXERCCIOS PROPOSTOS__________________________________________________ 45
4. OPERAES DE REPETIO ________________________________________________ 47
4.2. NMERO CONHECIDO DE REPETIES ____________________________________ 48
4.2.1. LEITURA DE DADOS X REPETIO ______________________________________ 56
4.2.2. EXERCCIOS RESOLVIDOS ____________________________________________________ 58
4.2.3. EXERCCIOS PROPOSTOS ________________________________________________ 59
4.3. OUTRA UTILIZAO DA INSTRUO PARA-FAA____________________________ 62
4.3.1 EXERCCIOS PROPOSTOS_______________________________________________________ 64
4.3 NMERO NO CONHECIDO DE REPETIES ________________________________ 67
4.3.1 EXERCCIOS PROPOSTOS ___________________________________________________________ 73
4.4. PARA-FAA X ENQUANTO-FAA ___________________________________________ 74
4.4. EXERCCIOS PROPOSTOS ______________________________________________________ 75
4.5 REPETIR AT _____________________________________________________________ 76
5 ARQUIVOS _________________________________________________________________ 77

2
5.1 EXERCCIOS RESOLVIDOS ______________________________________________________ 78
5.2 EXERCCIOS PROPOSTOS ______________________________________________________ 80
6 VETOR _____________________________________________________________________ 85
6.1 DECLARAO DE VETORES ____________________________________________________ 85
6.2 COLOCANDO VALORES NOS VETORES ____________________________________________ 85
6.2.1 COLOCANDO VALORES NO VETOR ATRAVS DE LEITURA _____________________________ 86
6.2.2 COLOCANDO TODOS OS VALORES NO VETOR ATRAVS DE LEITURA _____________________ 87
6.3 IMPRIMINDO O VETOR ____________________________________________________ 87
6.4 EXERCCIOS RESOLVIDOS ______________________________________________________ 88
6.5 EXERCCIOS ________________________________________________________________ 90
7 MATRIZES__________________________________________________________________ 92
7.1 DECLARAO DE MATRIZES ____________________________________________________ 92
7.2 COLOCANDO VALORES NAS MATRIZES ____________________________________________ 93
7.2.1 COLOCANDO VALORES NO VETOR ATRAVS DE LEITURA _____________________________ 94
7.2.2 COLOCANDO TODOS OS VALORES NO VETOR ATRAVS DE LEITURA _____________________ 95
7.3 IMPRIMINDO A MATRIZ ________________________________________________________ 96
7.4 EXERCCIOS RESOLVIDOS ______________________________________________________ 97
7.5 EXERCCIOS PROPOSTOS ______________________________________________________ 99
8 MODULARIZAO _________________________________________________________ 101
8.1 PROCEDIMENTOS ___________________________________________________________ 101
8.2 EXERCCIOS PROPOSTOS _____________________________________________________ 104
8.3 FUNES _________________________________________________________________ 105
8.4 EXERCCIOS PROPOSTOS _____________________________________________________ 106
REFERNCIAS ______________________________________________________________ 108

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

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

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

a) Primeira verso

Mas isto est muito simples (abstrato). O que remover uma lmpada?

## 1. Buscar uma lmpada nova;

5. Girar a lmpada queimada no sentido anti-horrio at que se solte;
6. Colocar a lmpada nova girando-a no sentido horrio;

## c) Terceira verso (um pouco mais detalhada)

4
4. Acionar o interruptor;
5. Se a lmpada no acender, ento
7. Girar a lmpada queimada no sentido anti-horrio at que se solte;
8. Colocar a lmpada nova girando-a no sentido horrio;

## Nessa verso algumas aes esto vinculadas condio lmpada no acender, ou

Apesar de o algoritmo estar correto, ele pode ser melhorado uma vez que somente seria
d) Quarta verso (um pouco mais detalhada)
1. Acionar o interruptor;
2. Se a lmpada no acender, ento
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;

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

5
1.1 ALGORITMOS
tm, pelo menos at agora, a capacidade de resolver por conta prpria problemas. Assim,
como outras mquinas, elas precisam ser instrudas, para que atravs de um conjunto de
aes possam solucionar um problema.

## Para resolvermos problemas, atravs de computador, necessrio que uma

anteriormente. A soluo obtida atravs de duas etapas (CARVALHO, 1982):

## A criao de uma sequncia de operaes que, quando executada, produz o

resultado do problema (a esta sequncia se d o nome de algoritmo).
A execuo, propriamente dita, da sequncia 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 do por certo
que podem ser executadas (GUIMARES; LAGES, 1985).

Um algoritmo pode ser definido tambm como: uma sequncia ordenada, sem
BUNT, 1981).

## 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 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. Sequncia ordenada: as aes devem seguir sempre a mesma ordem de

execuo, pois se a ordem for aleatria no se pode garantir a soluo

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

6
Fase de resoluo do Problema Fase de Implementao

## A primeira representao deve ser fcil para as pessoas, construir, modificar e

testar as aes (usada na busca da soluo 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 construo) a soluo projetada
e cada planta, embora diferente, a representao da mesma edificao.

## A linguagem natural (portugus, ingls, etc.) utilizada nas receitas, instrues,

etc.. Para a fase de resoluo do problema, a linguagem natural apresenta um
inconveniente: a ambiguidade de alguns termos. Assim, restries e limitaes (uso de
certos termos e estruturas) so impostas linguagem natural, objetivando a reduo de
ambiguidade, criando uma nova linguagem, uma pseudolinguagem (ou, ainda,
pseudocdigo, Portugol).

## Representaes grficas: ao invs de representar a resoluo do problema

atravs de linguagens naturais (textos) so utilizados desenhos e diagramas. Algumas

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

## O computador uma ferramenta auxiliar na resoluo de problemas. Em geral, a

descrio de como resolver um problema um algoritmo. Para executar o algoritmo e
obter a soluo necessrio que este esteja descrito na linguagem prpria do
computador, a linguagem de mquina. Porm, a linguagem de mquina bastante
ininteligvel pelas pessoas. Assim, necessrio que haja um intermedirio entre os

7
Todo o programa tem que existir em linguagem de mquina que torna possvel sua
execuo pelo computador, mas para que a tarefa de escrever programas seja mais
simples necessrio que os programadores utilizem uma linguagem que se aproxima da
linguagem natural (Portugus, Ingls, etc.). Dessa abordagem surgiu o conceito de
linguagem de programao.

## Embora no exista uma definio universalmente aceita, podemos entender a Ling.

de Programao como um conjunto de comandos e regras que permitem a construo de
aes que descrevem de forma precisa o que a mquina dever executar.

instrues para um computador. um conjunto de regras sintticas e semnticas usadas
para definir um programa de computador. Uma linguagem permite que um programador
sero armazenados ou transmitidos e quais aes devem ser tomadas sob vrias
circunstncias1.

## Por exemplo, regras de sintaxe podem especificar que os comandos quaisquer

devem ser separados por ponto-e-vrgula ; . Situao similar da lngua portuguesa onde
regras de ortografia que define como as palavras devem ser escritas. As regras de
semntica especificam o significado de quaisquer comandos, sintaticamente vlido,
escrito na linguagem.

## Porm, mquinas executam programas em LM (Linguagem de Mquina) e no em

LP (Programas em Linguagens de Programao de Alto Nvel). Assim, para tornar o
processo de construo de programas uma tarefa mais amena as pessoas so
construdos programas que traduzem o programa escrito em LP para programas escritos
em LM.

Efetua a traduo da linguagem Assembly para a linguagem de mquina.

So programas que lem um cdigo fonte de uma linguagem de programao e os
convertem em cdigo executvel. Em muitos casos o interpretador l linha-a-linha e
converte em cdigo de mquina medida que vai executando o programa (l uma linha e
converte em cdigo de mquina).

Um compilador um programa que transforma um cdigo escrito em uma
linguagem, o cdigo fonte (source code), em um programa equivalente em outra
linguagem, cdigo objeto (object code). Normalmente, o cdigo fonte escrito em uma
linguagem de programao e o cdigo objeto escrito em uma linguagem de baixo nvel,
como uma sequncia de instrues a ser executada por uma mquina.

1
http://pt.wikipedia.org/wiki/Linguagem_de_programa%C3%A7%C3%A3o

8
Resumindo:

## Utiliza-se uma linguagem de programao (Pascal, Fortran, Cobol, C, Java, C#

etc.), para representar algoritmos, transformando-os em programas. A essa passagem do
algoritmo para uma linguagem de programao chamada de codificao.

Fortran
Programa em Fortran

Pascal
Programa em Pascal

Java
Algoritmo
Programa em Java

C#
Programa em C#

## Assim, um algoritmo pode ser representado em vrias linguagens. Os programas

9
2 CONSTRUO DE ALGORITMOS
Como vimos anteriormente quando queremos resolver um problema utilizando um
computador, devemos construir uma sequncia 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 sequncia de passos, onde cada passo de uma das trs
naturezas seguintes (CARVALHO, 1982):

## a) Uma operao elementar;

b) Uma operao de controle especificando uma seleo entre sequncia s de
passos;
c) Uma operao de controle especificando a repetio de uma sequncia de
passos.

## 2.1 OPERAES ELEMENTARES

A principal motivao para o desenvolvimento e uso dos computadores foi a
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)
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)

10
Ex: Questo: Certa

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

2.2 ATRIBUIO

## A memria permite o armazenamento de dados (valores), que podem ser obtidos

posteriormente colocados disposio do usurio. Para que a memria possa armazenar
usados no programa. A esta rea se d o nome de Tabela de Smbolos (TS)
(CARVALHO,1982).

Exemplo:

Suponha que desejamos operar os valores numricos 1 e 15. Para que esses
possam permanecer na memria e posteriormente serem utilizados para algum tipo de
Smbolo (TS), representa uma rea na memria que guardar os valores e ser

Tabela de Smbolos
NOME TIPO VALOR
SOMA Inteiro 1

## Quando necessitarmos manipular o valor 15 devemos utilizar o nome Resultado e

para o valor 1, Soma.

Pois, identificam o local (rea de memria) onde o valor est armazenado.

## No, o programador deve seguir uma regra para construir os identificador, ou em

outras palavras os nomes utilizados no algoritmo, alm de respeitar algumas restries.

11

DGITO = 0 ... 9

RESTRIES:

()#\$%&*=+[^ `;

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

nomes devem ser diferentes de: inteiro, real, caractere, lgico, enquanto,
faa, fim-enquanto, declare, para, leia, escreva, verdadeiro, falso. etc.. As
palavras reservadas variam conforme a linguagem de programao.

## a) (X), b) x c) ah! d) "aluno" e) #55

f)KM/L g)UYT h) AB*C i) CEP h) dia/mes/ano

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

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

## Assim, para definirmos que SOMA e RESULTADO, so os nomes utilizados no

algoritmo e que ambos representaro nmeros inteiros, necessrio utilizarmos
declarao:

SOMA Inteiro

Outros exemplos:

X Real
Y Real
Z Real

T LGICO

## DECLARE A, B, TOTALH, TOTALM COMO INTEIRO

DECLARE X, K COMO REAL
DECLARE S COMO CARATER

## NOME TIPO VALOR

A INTEIRO
B INTEIRO
TOTALH INTEIRO
TOTALM INTEIRO
X REAL
K REAL
S CARATER

Observe que a declarao ir produzir uma tabela com os nomes definidos, porm
os valores no aparecem, no esto especificados.

## A associao de um valor a um nome (declarado) se d atravs da atribuio.

13
ATRIBUIO: associa um identificador a uma expresso (valor).

Forma geral:

Exemplo:
A 14
VALOR 10.5
SOMA 5

## NOME TIPO VALOR

A Inteiro, varivel 14
Valor Real, varivel 10.5
Soma Inteiro, varivel 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

A 14 + 10

14 10

A 24

na TS.

## Como o valor associado ao nome pode mudar durante a execuo do algoritmo

(ou programa), usamos o termo varivel.

## Expresso pode ser: aritmticas, relacionais e lgicas.

14
2.2.1 EXPRESSES ARITMTICAS

na aplicao de operadores aritmticos a operandos que tm valores numricos.

- (subtrao)
* (multiplicao)

alterar a prioridade. As Expresses Aritmticas podem ser definidas como:

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

S 10
R 1
RR+1
RR+1
RR+1

15
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

## 2.1.2 EXPRESSES RELACIONAIS

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 )

## A>B (A maior que B)

A >= B (A maior ou igual a B)
A<B (A menor que B)
A <= B (A menor ou igual a B)
A=B (A igual a B)
A <> B (A 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 !

16
2.1.3 EXPRESSES LGICAS (CONDIES)

lgicos.

## 1. Variveis lgicas com valor atribudo e constante lgica (verdade ou falso) so

expresses lgicas;

## 3. Sendo A e B expresses lgicas, ento:

(A)
A and B
A or B
not A, so expresses lgicas.

Falso falso falso falso verdade falso

## 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 neve branca
 Matemtica uma cincia.

## OS SMBOLOS DA LING. DO CLCULO PROPOSICIONAL

Variveis Proposicionais
letras latinas minsculas p, q, r, s, .... para indicar as proposies (frmulas atmicas) .

17
Exemplos:
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

Exemplos:

V F

OU

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

V F F

E
NO

18

0 Parnteses e Funes
2 Potenciao
3 *e/
4 + e (soma e subtrao)
6 No
7 And
8 Or

## 1. Sendo p = verdade, q = falso, r = verdade, avalie as expresses abaixo:

a) peq
b) p ou r
c) p ou q
d) r ou (p e q) ou p
e) (r ou r) e (p ou p)
f) (p e r) ou (q e r)
g) no (p e q)
h) (no (p e r) ou (q e r))
i) (no p e no r) ou q

## 2. Suponha que A, B e C, I, J, K sejam variveis. Dados A = 4.0, B = 6.0 e I = 3, qual

seria o valor final dos comandos seguintes?

a) C A * B I C= _______ d) K ( B / A + 2) K = _______
b) K I / 4 * 2 K = _______ e) J ( A / ( 5 / I )) J = _______
c) C B / A + 1 C = _______

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

a a+b
a) +1 b)
b cd

b
a+
c b
c) d) a +
e cd
d
f

19
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

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)

SOLUO

a) X Y
YZ

XY?

## Resolvendo: 1 caso: X Y e depois Y Z

suponha X=1 Y =2 Z= 3

X Inteiro 1
Y Inteiro 2
Z Inteiro 3

20
Fazendo X Y

X Inteiro 2
Y Inteiro 2
Z Inteiro 3

Fazendo Y Z

X Inteiro 2
Y Inteiro 3
Z Inteiro 3

## Supondo X=1 Y =2 Z= 3 e fazendo X Y e depois Y Z, temos X=2, Y=3 e Z=3

2 caso : Y Z e depois X Y

Y)

X Inteiro 1
Y Inteiro 2
Z Inteiro 3

Fazendo Y Z

X Inteiro 1
Y Inteiro 3
Z Inteiro 3

Fazendo X Y

X Inteiro 3
Y Inteiro 3
Z Inteiro 3

## Concluindo: mudar a ordem desses comandos produzir resultado diferente.

21
7. Faa como o anterior para os casos:

a) X Z b) X Y c) X Y
XY ZX ZY

## 8. Uma conta telefnica composta dos seguintes custos:

assinatura: R\$ 32,00
minutos: R\$ 0,09 por minuto
chamadas p/ celular: R\$0,35 por minuto
Monte a frmula para calcular o valor da conta para 254 minutos e 23 minutos para
celular. Elabore um algoritmo que calcula o valor total.

9. 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, 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.

## 10. 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.

22

comunicao entre o usurio e o computador. Atravs delas, o usurio consegue fornecer
permitem escrever algoritmos mais genricos.

leitura e escrita.

2.2.1. LEITURA

Forma Geral:

Exemplo 1:

LEIA A

A INTEIRO 32

## A leitura uma atribuio cujos valores esto externos ao algoritmo.

23
Exemplo 2:

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

A Inteiro 32
B Inteiro 45
C Inteiro 60

2.2.2 ESCRITA

Forma Geral:

## Imprime no dispositivo de sada (vdeo, impressora, etc.) o contedo da(s)

varivel(eis) especificadas. Textos explicativos podem tambm ser impressos e

Exemplo:

A Inteiro 32
B Inteiro 45
C Inteiro 60

32 45 60

## Resultado da Escrita: Os valores contidos em A, B, C (na TS) so exibidos (vdeo,

impressora, etc.) na mesma linha.

24
ESCREVA A
ESCREVA B
ESCREVA C

A Inteiro 32
B Inteiro 45
C Inteiro 60

32
45
60

## Resultado da Escrita: Os valores contidos em A, B, C (na TS) so exibidos (vdeo,

possvel utilizar mensagens no comando ESCREVA.

ESCREVA VALOR =, A

A Inteiro 32
B Inteiro 45
C Inteiro 60

VALOR = 32

## Resultado da Escrita: O valor contido em A (na TS) exibido (vdeo, impressora,

etc.), juntamente com a mensagem VALOR = .

ESCREVA A =, A

A Inteiro 32
B Inteiro 45
C Inteiro 60

A = 32

## Resultado da Escrita: O valor contido em A (na TS) exibido (vdeo, impressora,

etc.), juntamente com a mensagem A = .

ESCREVA A =, A, B =,B

25
NOME TIPO VALOR
A Inteiro 32
B Inteiro 45
C Inteiro 60

A = 32 B= 45

## Resultado da Escrita: O valor contido em A e B (na TS) so exibidos (vdeo,

impressora, etc.), juntamente com a mensagem A = e B= respectivamente, na mesma
linha.
ESCREVA A =, A, B =, B
ESCREVA C =, C

A Inteiro 32
B Inteiro 45
C Inteiro 60

A = 32 B= 45
C = 60

## Resultado da Escrita: O valor contido em A e B (na TS) so exibidos (vdeo,

impressora, etc.), juntamente com a mensagem A = e B= respectivamente, na mesma
linha e o valor de C apresentado em uma nova linha juntamente com sua mensagem.

ESCREVA A =, A
ESCREVA B =, B
ESCREVA C =, C

A Inteiro 32
B Inteiro 45
C Inteiro 60

A = 32
B = 45
C = 60

## Resultado da Escrita: O valor contido em A, B e C (na TS) exibido (vdeo,

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

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

## 2.3 EXEMPLOS DE ALGORITMOS

1) Leia um valor inteiro e escreva um algoritmo para escrev-lo.

## DECLARE A COMO INTEIRO Cria a rea que

armazenar o valor a
LEIA A
ser lido
ESCREVA O VALOR LIDO = , A
L da
Escreve o valor lido, entrada de
uma mensagem
Simulao do algoritmo

A INTEIRO

LEIA A

## L um valor da entrada de dados. Para testar o algoritmo vlido utilizar valores

numricos aleatrios, porm, o algoritmo deve funcionar para qualquer valor.

## NOME TIPO VALOR

A INTEIRO 80

27
ESCREVA O VALOR LIDO = , A

## NOME TIPO VALOR

A Inteiro 80

O VALOR LIDO = 80

## 2) Leia dois valores e escreva um algoritmo para escrev-los.

Cria as variveis que
armazenaro os
valores lidos
DECLARE A, B COMO INTEIRO
LEIA A
ESCREVA O VALOR LIDO = , A
o primeiro valor
LEIA B
ESCREVA O VALOR LIDO = , B
Escreve o primeiro valor lido,
mensagem
Escreve o segundo valor lido,
o segundo valor acompanhado de uma
mensagem

Simulao do algoritmo

A INTEIRO
B INTEIRO

LEIA A

## L um valor da entrada de dados. Para testar o algoritmo vlido utilizar valores

numricos aleatrios, porm, o algoritmo deve funcionar para qualquer valor inteiro lido.
linha.

65

28
e armazena na varivel definida.

A INTEIRO 78
B INTEIRO

## NOME TIPO VALOR

A INTEIRO 78
B INTEIRO

O VALOR LIDO = 78

LEIA B

L um valor da entrada de dados. Observe que o segundo valor ser lido, o primeiro j foi

A INTEIRO 78
B INTEIRO 65

## NOME TIPO VALOR

A INTEIRO 78
B INTEIRO 65

O VALOR LIDO = 78
O VALOR LIDO = 65

29
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
DECLARE A COMO INTEIRO
LEIA A
ESCREVA O VALOR LIDO = , A
o primeiro valor
LEIA A
ESCREVA O VALOR LIDO = , A
Escreve o primeiro valor lido,
mensagem
o segundo valor Escreve o segundo valor lido,
mensagem

Simulao do algoritmo

## NOME TIPO VALOR

A INTEIRO

LEIA A

dados ( 78 e 65 )

65

## NOME TIPO VALOR

A INTEIRO 78

30
ESCREVA O VALOR LIDO = , A

## NOME TIPO VALOR

A INTEIRO 78

O VALOR LIDO = 78

LEIA A

L um valor da entrada de dados. Observe que o segundo valor ser lido, o primeiro j foi

## e armazena na varivel definida. Observe que o valor armazenado em A ( 78 )

perdido, substitudo pelo novo valor obtido atravs da leitura.

A INTEIRO 65

## NOME TIPO VALOR

A INTEIRO 65

O VALOR LIDO = 78
O VALOR LIDO = 65

## 4) Leia dois valores inteiros e calcule a soma.

31
Cria as reas (V1, V2) que
os valores que sero lidos. E a rea que armazenar a

## DECLARE V1, V2, RESULTADO COMO INTEIRO

LEIA V1, V2 Cria a atribuio, onde a expresso
RESULTADO V1 + V2 justamente a soma entre os dois valores
lidos, representados por V1 e V2 e
ESCREVA VALORES LIDOS =, V1, V2
quando avaliada a expresso o valor
ESCREVA A SOMA DOS VALORES = , RESULTADO resultante ser armazenado em

## Escreve os valores lidos,

Simulao do algoritmo

## NOME TIPO VALOR

V1 INTEIRO
V2 INTEIRO

LEIA V1, V2

L dois valores da entrada de dados. Para testar o algoritmo utilizamos dois valores
numricos aleatrios, porm, o algoritmo deve funcionar para qualquer valor.

32
NOME TIPO VALOR
V1 INTEIRO 3
V2 INTEIRO 5

V1 V2

3 5

V1 INTEIRO 3
V2 INTEIRO 5

## ESCREVA VALORES LIDOS =, V1, V2

VALORES LIDOS = 3 5

## NOME TIPO VALOR

V1 INTEIRO 3
V2 INTEIRO 5

VALORES LIDOS = 3 5
A SOMA DOS VALORES = 8

33
5) 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 = * raio , onde = 3.1415
2

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

LEIA RAIO
PI 3.1415
AREA PI * RAIO * RAIO
ESCREVA AREA

34
2.4 EXERCCIOS PROPOSTOS
1. Simular a execuo do seguinte algoritmo, como os valores de entrada

## DECLARE A, B, C COMO INTEIRO

LEIA A, B, C 4 2 6
ESCREVA A, B, C 10 6 0
MEDIA ( A + B + C ) /3 7 8 7
ESCREVA MEDIA
LEIA A, B, C
ESCREVA A, B, C
MEDIA ( A + B + C ) /3
ESCREVA MEDIA

2. Escreva um algoritmo que leia uma temperatura em graus Celsius e converta para
graus Fahrenheit, cuja frmula de converso : ( 9 * graus Celsius + 160 ) /5.

## 3. 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

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

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

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

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

## 8. Escrever um algoritmo que lem 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
9. 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.

35
10. 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.

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

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

## 13. 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.

## 14. Escreva um algoritmo para ler o salrio mensal de um funcionrio e o percentual

de reajuste. Calcular e escrever o valor do novo salrio.

## 15. 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.

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

17. 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].

36
3. SELEO
Tambm chamada de estrutura de deciso, ou ainda, desvio condicional, a seleo
utilizada quando a execuo de uma sequncia 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.

## utilizada quando uma sequncia de passos depender de uma condio

verdadeira, e no h sequncia a executar ser executada quando a condio for falsa.
Forma geral:

SE <condio> ENTO
<sequncia 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 A > 10 ?

LEIA A
SE A > 10 ENTO SIM
ESCREVA A
FIM-SE
ESCREVA A

NO

37
Simulao do algoritmo

A INTEIRO

LEIA A

## NOME TIPO VALOR

A INTEIRO 78

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

## Utiliza-se quando se deseja executar uma sequncia de passos se uma condio

verdadeira, e se executa uma outra sequncia se a condio falsa.
Forma geral:

SE <condio> ENTO
<sequncia de passos1>
SENO
<sequncia de passos2>
FIM-SE

38
Esquema de Funcionamento da Seleo de dois Ramos

Exemplo:

1) Escreva um algoritmo que leia um valor e escreva-o indicando se ele maior ou igual
a 10 e menor que 10.

## DECLARE A COMO INTEIRO

LEIA A
SE A >= 10 ENTO
ESCREVA 'VALOR MAIOR OU IGUAL A 10' , A
SENO
ESCREVA 'VALOR MENOR QUE 10' , A
FIM-SE

NO A >= 10 ? SIM

## ESCREVA 'VALOR ESCREVA 'VALOR

MENOR QUE 10' , A MAIOR OU IGUAL
A 10', A

39
3.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

## DECLARE NOTA COMO REAL

LEIA NOTA
SE (NOTA < 6 ) ENTO
SENO
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 REAL

LEIA NOTA
SE (NOTA >= 6 ) AND (NOTA <= 10) ENTO
SENO
SE ( ( NOTA < 6 ) E ( NOTA >= 4) ENTO
ESCREVA ALUNO EM VS
SENO
FIM_SE
FIM-SE

## DECLARE VALOR1, VALOR2 COMO INTEIRO

LEIA VALOR1, VALOR2
SE VALOR1> VALOR2 ENTO
ESCREVA VALOR1
SENO
ESCREVA VALOR2
FIM-SE

40
Variao da soluo

## DECLARE VALOR1, VALOR2, MAIOR COMO INTEIRO

LEIA VALOR1, VALOR2
SE VALOR1> VALOR2 ENTO
VALOR1
MAIOR
SENO
VALOR2
MAIOR
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

41
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
<sequncia de passos 3 >
SENO
<sequncia de passos 4 >
FIM-SE
SENO
SE < condio 4 > ENTO
<sequncia de passos 5 >
SENO
SE < condio 5 > ENTO
<sequncia de passos 6 >
SENO
<sequncia de passos 7 >
FIM-SE
FIM-SE
FIM-SE
SENO
SE < condio 6 > ENTO
<sequncia de passos 8 >
SENO
SE < condio 7 > ENTO
<sequncia de passos 9 >
SENO
SE < condio 8 > ENTO
<sequncia de passos 10 >
SENO
<sequncia de passos 11 >
FIM-SE
FIM-SE
FIM-SE
FIM-SE

42
Aninhamento incorreto

## SE < condio 1 > ENTO

SE < condio 2 > ENTO
SE < condio 3 > ENTO
< sequncia de passos 3 >
SENO
<sequncia de passos 4 >
O FIM-SE que deveria
SENO
estar nessa posio e foi
SE < condio 4 > ENTO
<sequncia de passos 5 >
em outra posio
SENO
Aninhamento SE < condio 5 > ENTO
errado. <sequncia de passos 6 >
Observe as SENO
linhas se <sequncia de passos 7 >
cruzando FIM-SE
FIM-SE
FIM-SE
FIM-SE
FIM-SE

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

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

43
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 equiltero, 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

## 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 SE X=Y E X = Z ENTO
SENO ESCREVA TRIANG. QUILATERO
Escreva No Existe Tringulo SENO
FIM-SE 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

## 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 SE L > M ou L > N ENTO

AUXILIAR M SE M < N ENTO
MN AUXILIAR L
troque L com M
N AUXILIAR LM SENO
FIM-SE M AUXILIAR troque L com N
FIM-SE
AUXILIAR L FIM-SE
LN
N AUXILIAR

44
3.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

## 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
intimado 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.

Ax + By = C
Dx + Ey = F

## pode ser resolvido utilizando-se as seguintes frmulas:

45
EC - BF AF - CD
X = ------------------ e Y = ---------------------------
AE - BD AE - BD

## Escreva um algoritmo para ler o conjunto de coeficientes (A, B, C, D, E, F) e imprimir a

soluo, ou seja, X e Y. Verifique as situaes onde X e Y no podem ser determinados.

9. Elaborar um algoritmo que l uma altura e mostra uma mensagem conforme a faixa de
altura:

## menos que 1,60 baixa estatura

de 1,60 a 1,85 estatura normal
mais que 1,85 alta estatura
10.Uma faculdade atribui menes aos alunos conforme a faixa de notas que tenha
atingido:

## 9,0 a 10: SS (superior)

7,0 a 8,9: MS (mdio superior)
5, 0 a 6,9: MM (mdio)
3,0 a 4,9: MI (mdio inferior)
0,1 a 2,9: II (inferior)
0: SR (sem rendimento).
Faa um algoritmo que l a nota e informa a meno.

## 11.Um imposto calculado com base na seguinte tabela:

At 1.200,00 isento
de 1.201,00 a 2.500,00 10%
de 2.501,00 a 5.000,00 15%
acima de 5.000,00 20%.
Escreva um algoritmo que leia o valor base e calcule o imposto a pagar.

12.Faa um algoritmo que leia as 3 notas de um aluno e calcule a mdia final deste
aluno. Considerar que a mdia ponderada e que o peso das notas : 2,3 e 5,
respectivamente. Se a nota obtida for de 6 a 10, aprovado; se 4 ou 5.9, vs e menor que

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.

46
4. 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.

LEIA A 17
ESCREVA O VALOR LIDO = , A 34
LEIA A 1
ESCREVA O VALOR LIDO = , A 23
LEIA A 78
ESCREVA O VALOR LIDO = , A
LEIA A
ESCREVA O VALOR LIDO = , A
LEIA A
ESCREVA O VALOR LIDO = , A

## O problema com a soluo anterior, que se a quantidade de valores a serem lidos

crescer, o nmero de passos do algoritmo tambm crescer. Por exemplo: Leia 10
valores e escreva um algoritmo para escrev-los.

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:

47
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

## Quando isso acontecer, isso , uma sequncia de passos repetida, podemos

utilizar as estruturas de repetio, que podem ser de 3 tipos: Nmero conhecido de
repetio e nmero no conhecido de repetio, nmero no conhecido de repetio com
condio de parada fim da sequncia de passos.

## Essa estrutura de repetio utilizada quando se conhece exatamente o nmero

de vezes que a sequncia ser repetida. Forma geral:

PARA <varivel> < valor inicial > AT <valor final> [ PASSO <incremento>] FAA
<sequncia de passos a ser repetida >
FIM-PARA

repetio:

## DECLARE A ,I COMO INTEIRO

PARA I 1 AT 9 FAA PASSO 1
LEIA A
ESCREVA O VALOR LIDO = , A CORPO DA REPETIO
FIM-PARA

## e especificamos o nmero de vezes que a sequncia dever ser repetida:

48
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 at 10 Passo 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 at 20 Passo 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 at 20 Passo 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 at 10 Passo 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 at 3 Passo 1 valores de JL = 1 2 3

## h) P N at J Passo 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.

49
No exemplo do algoritmo anterior:

## DECLARE A COMO INTEIRO

LEIA A
ESCREVA O VALOR LIDO = , A
LEIA A
ESCREVA O VALOR LIDO = , A
LEIA A
ESCREVA O VALOR LIDO = , A
LEIA A
ESCREVA O VALOR LIDO = , A
LEIA A DECLARE A, I COMO INTEIRO
ESCREVA O VALOR LIDO = , A EQUIVALE PARA I 1 AT 10 PASSO 1 FAA
LEIA A AO LEIA A
ESCREVA O VALOR LIDO = , A ALGORITMO ESCREVA O VALOR LIDO = , A
LEIA A FIM-PARA
ESCREVA O VALOR LIDO = , A
LEIA A
ESCREVA O VALOR LIDO = , A
LEIA A
ESCREVA O VALOR LIDO = , A
LEIA A
ESCREVA O VALOR LIDO = , A

## Esquema de Funcionamento do PARA-FAA

50
A partir do esquema de funcionamento anterior podemos simular o algoritmo abaixo:

## DECLARE A, I COMO INTEIRO

PARA I1 AT 10 FAA PASSO 1
LEIA A
ESCREVA O VALOR LIDO = , A
FIM-PARA PARA I 1 AT 10 FAA

I1

## Executa a sequncia de passos

LEIA A
ESCREVA O VALOR LIDO = , A

PARA I 1 AT 10 PASSO 1

## Incrementa a varivel de controle

II+ 1

No
Verifica se o novo valor da varivel
de controle ultrapassou o valor
do limite

Sim
Sair da Repetio

Simulao do algoritmo

## NOME TIPO VALOR

A INTEIRO
I INTEIRO

51
PARA I 1 AT 10 PASSO 1 FAA
Iniciar varivel de controle ( passo vindo do esquema de func. da repetio), com valor
inicial

I 1 AT 10 PASSO 1 I1

## NOME TIPO VALOR

A INTEIRO
I INTEIRO 1

LEIA A

de dados ( 17 34 1 23 78 90 2 5 8 15 )

34
1
23
78
90
2
5
8
15

A INTEIRO 17
I INTEIRO 1

## NOME TIPO VALOR

A INTEIRO 78

O VALOR LIDO = 17

## FIM-PARA retorna ao passo PARA I 1 AT 10 PASSO 1 FAA

52
PARA I 1 AT 10 PASSO 1 FAA
incrementa a varivel de controle ( passo vindo do esquema de func. da repetio), com
valor de incremento.

II+1 2

A INTEIRO 17
I INTEIRO 2

## Verifica se o novo valor de I ( 2 ) ultrapassa o valor do limite ( 10 ), caso ultrapasse

para a repetio, caso negativo continue executando a repetio, no primeiro passo
dentro da repetio.

LEIA A

1
23
78
90
2
5
8
15

A INTEIRO 34
I INTEIRO 2

## NOME TIPO VALOR

A INTEIRO 34
I INTEIRO 2

O VALOR LIDO = 17
O VALOR LIDO = 34

## FIM-PARA retorna ao passo PARA I 1 AT 10 PASSO 1 FAA

53
PARA I 1 AT 10 PASSO 1 FAA
incrementa a varivel de controle ( passo vindo do esquema de func. da repetio), com
valor de incremento.

II+1 I2+1 3

A INTEIRO 17
I INTEIRO 3

## Verifica se o novo valor de I ( 3 ) ultrapassa o valor do limite ( 10 ), caso ultrapasse, parar

a repetio, caso negativo continue executando a repetio, no primeiro passo dentro da
repetio (LEIA A).

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

## PARA I 1 AT 10 PASSO 1 FAA

incrementa a varivel de controle ( passo vindo do esquema de func. da repetio), com
valor de incremento.

II+1 I9+1 10

A INTEIRO 8
I INTEIRO 10

## Verifica se o novo valor de I ( 10 ) ultrapassa o valor do limite ( 10 ), caso

ultrapasse, parar a repetio, caso negativo continue executando a repetio, no primeiro
passo dentro da repetio.

LEIA A
(ltimo valor a ser lido, observe que todos os valores da entrada de dados foram
utilizados, lidos atravs das leituras )

A INTEIRO 15
I INTEIRO 10

## ESCREVA O VALOR LIDO = , A

54
NOME TIPO VALOR
A INTEIRO 15
I INTEIRO 10

O VALOR LIDO = 17
O VALOR LIDO = 34
O VALOR LIDO = 1
O VALOR LIDO = 23
O VALOR LIDO = 78
O VALOR LIDO = 90
O VALOR LIDO = 2
O VALOR LIDO = 5
O VALOR LIDO = 8
O VALOR LIDO = 15

## PARA I 1 AT 10 PASSO 1 FAA

incrementa a varivel de controle ( passo vindo do esquema de func. da repetio), com
valor de incremento.

II+1 I 10 + 1 11

A INTEIRO 17
I INTEIRO 11

## Verifica se o novo valor de I ( 11 ) ultrapassa o valor do limite ( 10 ), caso

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

55
4.2.1. LEITURA DE DADOS X REPETIO

LEIA A 17 ( 1 leitura )
ESCREVA O VALOR LIDO = , A 34 ( 2 leitura )
LEIA A 1 ( 3 leitura )
ESCREVA O VALOR LIDO = , A 23 ( 4 leitura)
LEIA A 78 ( 5 leitura )
ESCREVA O VALOR LIDO = , A 90 ( 6 leitura)
LEIA A 2 ( 7 leitura )
ESCREVA O VALOR LIDO = , A 5 ( 8 leitura )
LEIA A 8 ( 9 leitura )
ESCREVA O VALOR LIDO = , A 15 ( 10 leitura )
LEIA A
ESCREVA O VALOR LIDO = , A
LEIA A
ESCREVA O VALOR LIDO = , A
LEIA A
ESCREVA O VALOR LIDO = , A
LEIA A
ESCREVA O VALOR LIDO = , A
LEIA A
ESCREVA O VALOR LIDO = , A

## DECLARE A, I COMO INTEIRO

PARA I 1 AT 10 FAA

LEIA A
REPETIO 1 2 3 4 5 6 7 8 9 10
VALOR DO I 1 2 3 4 5 6 7 8 9 10

## ESCREVA O VALOR LIDO = , A

FIM-FAA

56
LEIA A 17 ( 1 leitura )
ESCREVA O VALOR LIDO = , A 34 ( 2 leitura )
LEIA A 1 ( 3 leitura )
ESCREVA O VALOR LIDO = , A 23 ( 4 leitura)
LEIA A 78 ( 5 leitura )
ESCREVA O VALOR LIDO = , A 90 ( 6 leitura)
LEIA A 2 ( 7 leitura )
ESCREVA O VALOR LIDO = , A 5 ( 8 leitura )
LEIA A 8 ( 9 leitura )
ESCREVA O VALOR LIDO = , A 15 ( 10 leitura )
LEIA A
ESCREVA O VALOR LIDO = , A
LEIA A
ESCREVA O VALOR LIDO = , A
LEIA A
ESCREVA O VALOR LIDO = , A
LEIA A
ESCREVA O VALOR LIDO = , A
LEIA A
ESCREVA O VALOR LIDO = , A

## DECLARE A, I COMO INTEIRO

PARA I 11 AT 20 FAA PASSO 1

LEIA A
REPETIO 1 2 3 4 5 6 7 8 9 10
VALOR DO I 11 12 13 14 15 16 17 18 19 20

FIM-FAA

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

57
4.2.2. Exerccios Resolvidos

## DECLARE VALOR, SOMA, J COMO INTEIRO

SOMA 0
PARA J 1 AT 15 FAA
LEIA VALOR
SOMA SOMA + VALOR
FIM-PARA
ESCREVA SOMA =, SOMA

2. Faa um algoritmo que leia 25 nmeros inteiros e calcule o somatrio dos nmeros
pares.

## DECLARE VALOR, SOMA, J COMO INTEIRO

SOMA 0
PARA J 1 AT 25 FAA
LEIA VALOR
SE ( MOD( VALOR , 2) = 0 ENTO
SOMA SOMA + VALOR
FIM-SE
FIM-PARA
ESCREVA SOMA =, SOMA

## DECLARE VALOR, MAIOR, J COMO INTEIRO

LEIA VALOR
MAIOR VALOR
PARA J 1 AT 4 FAA
LEIA VALOR
SE VALOR > MAIOR ENTO
MAIOR VALOR
FIM-SE
FIM-PARA
ESCREVA MAIOR

58
4.2.3. EXERCCIOS PROPOSTOS

## 1. Dizer quantas repeties so especificadas e que valores as variveis de controle de

repetio assumiro, pelos seguintes comandos:

## a) PARA I 8 AT 10 PASSO 2 FAA

b) PARA J 1 AT 2 PASSO 100 FAA
c) PARA K 2 AT 2 PASSO 2 FAA
d) PARA A 15 AT 11 PASSO 1 FAA
e) PARA O 1 AT 12 PASSO 3 FAA

## DECLARE I, V1, V2, V3 COMO INTEIROS

LEIA V1
LEIA V2, V3
PARA I 1 AT 5 PASSO 2 FAA
LEIA V1, V2 , V3
ESCREVA V1, V2, V3
FIM-FAA

## DECLARE I, V1, V2 COMO INTEIROS

PARA I 1 AT 5 FAA
LEIA V1, V2
ESCREVA V1, V2
FIM-FAA

## DECLARE I, V1, V2 COMO INTEIROS

LEIA V1
PARA I 2 AT 1 FAA
LEIA V1, V2
ESCREVA V1, V2
FIM-FAA

## DECLARE I, V1, V2 COMO INTEIROS

LEIA V1
PARA I 2 AT 4 FAA
LEIA V1, V2
FIM-FAA
ESCREVA V1, V2

## DECLARE I, V1, V2 COMO INTEIROS

LEIA V1, V2
ESCREVA V1, V2
PARA I 1 AT 4 FAA
LEIA V1, V2
ESCREVA V1, V2
FIM-FAA
ESCREVA V1, V2

59
Responda

## a) Quantos valores so lidos para V1 ?

b) Qual o total de valores lidos ?
c) Quantas linhas so impressas ?
d) Que valores I possuir ?

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

1 2
2 4
5 6
7 8
8 10

Responda:
a) Quais os valores so lidos para V1, V2, V3 ?
b) Quais os valores impressos ?
c) Verificar a validade das situaes seguintes
c.1)
TS
V1 INTEIRO 3
V2 INTEIRO 4
I INTEIRO 2

1 2
3 4

c.2)
TS
V1 INTEIRO 9
V2 INTEIRO 10
I INTEIRO 6

1 2
3 4
5 6
6 8

60
4. Para o algoritmo abaixo e a entrada de a complete as informaes:

## DECLARE I, V1, V2 COMO INTEIROS

PARA I 1 AT 5 FAA
LEIA V1, V2
ESCREVA V1, V2
FIM-FAA

1 2
3 4
5 6
7 8
9 10

TS
V1 INTEIRO 5
V2 INTEIRO ?
I INTEIRO ?

1 2
3 4

5. Escreva um algoritmo que leia cinco temperaturas em graus Celsius e converta cada
uma para grau Fahrenheit, cuja frmula de converso : ( 9 * graus Celsius + 160 ) /5.

6. Escreva um algoritmo que leia trs temperaturas em grau Fahrenheit e converta cada
uma para graus Celsius, cuja frmula de converso : ( graus Fahrenheit 32) * (5/9).

## 7. Escreva um algoritmo que leia seis conjuntos de trs valores, representando o

comprimento, largura e altura de caixas retangulares e calcule o volume de cada uma,
cuja frmula : VOLUME = COMPRIMENTO * LARGURA * ALTURA

8. Escreva um algoritmo que leia oito conjuntos de dois valores A e B, e efetue a troca
dos valores de forma que A passe a possuir o valor de B e B passa a possuir o valor
de A. Apresente os valores antes e depois da troca, para cada conjunto.

## 9. Escreva um algoritmo que leia quinze conjuntos de dois valores PRESTAO e

TAXA, representando o valor de uma prestao e a taxa de juros cobrada pelo atraso.
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

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

## Alm de utilizar a instruo PARA-FAA 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.

## DECLARE I COMO INTEIRO

PARA I 1 AT 10 FAA
ESCREVA O VALOR I = , I
FIM-PARA
O VALOR I = 1
O VALOR I = 2
O VALOR I = 3
O VALOR I = 4
O VALOR I = 5
O VALOR I = 6
O VALOR I = 7
O VALOR I = 8
O VALOR I = 9
O VALOR I = 10

## Exemplo 2: Escrever um algoritmo que gere e imprima os nmeros pares de 1 at 10.

62
DECLARE I COMO INTEIRO
PARA I 2 AT 10 PASSO 2 FAA
ESCREVA O VALOR I = , I
FIM-PARA

## DECLARE I COMO INTEIRO

PARA I 1 AT 10 PASSO 2 FAA
ESCREVA O VALOR I = , I
FIM-PARA

## DECLARE I , S COMO INTEIRO

S 0
PARA I 1 AT 10 FAA
S S+I
FIM-PARA
ESCREVA S

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

## DECLARE I , S COMO INTEIRO

S 1
PARA I 1 AT 5 FAA
S S*I
FIM-FAA
ESCREVA S

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

## Valor de S que ser impresso 120

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

63
DECLARE I , S, N COMO INTEIRO
LEIA N
PARA I 1 AT N FAA 5
S S*I
FIM-FAA Observe: que o valor de N est sendo lido e
ESCREVA S como limite da repetio

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

## DECLARE I, SI, SV, V COMO INTEIROS

SV 0 10
PARA I 1 AT 10 FAA 9
LEIA V 8
SI SI + I 7
SV SV + V 6
FIM-PARA 5
ESCREVA SI 4
ESCREVA SV 3
2
1

Responda:

## a) Quantos valores so lidos para V ?

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.

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

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
...
2
n x n = n

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

N!
S = ----------------------
P! ( N - P) !

forma :

## 15. Calcular e imprimir a srie

37 X 38 36 X 37 35 X 36 1X 2
S = + + +. . . +
1 2 3 37

65
16. Escrever um algoritmo que l um valor N e calcula e escreve os 20 primeiros termos
2 3 4
da srie: 1 + 1/x + 1/x + 1/x + ...

## Escreva um algoritmo para calcular o n-simo termo da srie.

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

## Sen x = x - x3 / 6 + x5 / 120 - x7/5040 + + xn / n!

20. Fazer um algoritmo que leia um nmero real X e calcule o seguinte somatrio :

X X X
S= X - ------- + --------- - --------- + ...
1! 2! 3!

1! 2! 3! 4! 5!
P = + + . . .
1 3 7 15 31

## , usando os 20 primeiros termos da srie.

22. Escrever um algoritmo para calcular, para N lido, o valor de S, dado por:

1 2 3 N 1 N
S= + + + ...+ + +
N N 1 N 2 2 1

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

66
4.3 NMERO NO CONHECIDO DE REPETIES

## Quantos valores sero lidos ? Existe algum valor para processar ?

LEIA A 17
ESCREVA O VALOR LIDO = , A 34
LEIA A 1
ESCREVA O VALOR LIDO = , A 23
LEIA A 78
ESCREVA O VALOR LIDO = , A .
LEIA A . finito
ESCREVA O VALOR LIDO = , A .
LEIA A
ESCREVA O VALOR LIDO = , A
.
. Isso no pode ser feito (um algoritmo deve possuir um nmero finito de passos)

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

## ENQUANTO <condio> FAA

<sequncia de passos>
FIM-ENQUANTO

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

## iniciar 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.

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

67
um expediente para contornar essa situao. Adicionamos um dado especial ( flag ) que
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

## 2. Se o dado a ser lido: sexo - escolheria um caractere 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 sequncia 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

17
34
1
23
78 FLAG
.
.
.
0

68
17
34
1
0 Valor
.
.
. FLAG
0

## iniciar 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.

## Etapas para construo do algoritmo:

1. criar a varivel;
2. iniciar 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

69
DECLARE A COMO INTEIRO
LEIA A inicializar a varivel que controla o
ENQUANTO A # 0 FAA loop antes de inici-lo. Isso ser
ESCREVA O VALOR LIDO = , A realizado por leitura
LEIA A
FIM-ENQUANTO
A condio A # 0, pois o flag
escolhido zero, ento a repetio
deve ser feita enquanto o valor lido
Modificar o valor da varivel seja diferente de zero
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

## NOME TIPO VALOR

A INTEIRO

LEIA A
L um (primeiro) valor da entrada de dados. Essa leitura tem por objetivo iniciar a varivel
de controle da repetio ( A )

34
1
23
78
.
.
.
42
0

## NOME TIPO VALOR

A INTEIRO 17

ENQUANTO A # 0 FAA
Verifica a condio de repetio A # 0 ( A possui o valor 17 que diferente de 0) logo a

70
Observe que se o valor lido anteriormente fosse zero ( 0), a condio seria falsa, logo
no entraria na repetio (nenhuma repetio seria realizada).

## NOME TIPO VALOR

A INTEIRO 78

O VALOR LIDO = 17

LEIA A

## L um novo valor da entrada de dados. ( Modificar a(s) varivel(eis) que controla(m) o

loop dentro dele, se isso no fosse feito A estaria com o valor 17 e a prxima repetio
processaria novamente o valor 17 )

1
23
78
.
.
.
42
0

A INTEIRO 34

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

71
ESCREVA O VALOR LIDO = , A (processamento do valor lido, que sabemos ser
diferente de zero)

## NOME TIPO VALOR

A INTEIRO 34

O VALOR LIDO = 17
O VALOR LIDO = 34

## Pularemos os passos intermedirios e apresentamos a finalizao da repetio ( A est

com o valor 42, penltimo valor lido).

## Verifica a condio de repetio A # 0 ( A possui o valor 42 que diferente de 0) logo a

condio verdadeira. O valor 42 foi lido, ainda no processado, isso acontecer,
quando a execuo comear no incio do corpo da repetio.

Observe, se o valor lido anteriormente fosse zero ( 0), a condio seria falsa, logo no
entraria na repetio (repetio seria finalizada).

## ESCREVA O VALOR LIDO = , A (processamento do valor lido, que sabemos ser

diferente de zero)

## NOME TIPO VALOR

A INTEIRO 42

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

O VALOR LIDO = 42

LEIA A

## L um novo valor da entrada de dados. ( Modificar a(s) varivel(eis) que controla(m) o

loop dentro dele)

72

condio falsa.

## 1) Para o algoritmo e a entrada de dados abaixo, responda as questes:

S0 1
LEIA A 3
ENQUANTO ( A # -1 ) FAA 0
S S+A 4
LEIA A 2
FIM-ENQUANTO -1
ESCREVA S

## a) Quais os valores lidos ?

b) Que valor seria impresso ?
c) Quantas repeties seriam realizadas ?
d) O que aconteceria se a condio de controle fosse A # 0 ?

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

73
4.4. PARA-FAA X ENQUANTO-FAA

## Como vimos, a estrutura de repetio enquanto-faa usada quando no conhece

precisamente o nmero de vezes que a sequncia de passos deve ser repetida.
Podemos ento afirmar que a estrutura enquanto-faa mais genrica que a estrutura
PARA-FAA. possvel simular a estrutura PARA-FAA 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
PARA I 1 AT 10 PASSO 2 FAA
S S+I
FIM-PARA
ESCREVA S

## Pelo esquema de funcionamento do PARA-FAA apresentado na seo B.2, a

varivel de controle ( I ) iniciada com o valor inicial ( 1 ), em seguida o corpo da
repetio executado ( sequncia 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.

## 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 DECLARE I , S COMO INTEIRO

S 0 S 0
PARA I 1 AT 10 PASSO 2 FAA I 1
SS+I algoritmo ENQUANTO ( I < 10 OR I = 10 ) FAA
FIM-PARA equivalente S S+I
ESCREVA S I I+2
FIM-ENQUANTO
ESCREVA S

## OBS.: o algoritmo anterior, utilizando enquanto, no faz uso de flag, pois no

74
iniciar 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.

## DECLARE I, S COMO INTEIRO

S 0 iniciar a varivel que controla o loop
I 1 antes de inici-lo. Isso ser realizado
ENQUANTO ( I < 10 OR I = 10 ) FAA pela atribuio do valor 1 (valor inicial
S S+I da repetio PARA I 1 AT 10
I I+2 PASSO 2 FAA ) a varivel I (varivel
de controle da repetio)
FIM-ENQUANTO
ESCREVA S

## A condio ( I < 10 OR I = 10 ), pois

o limite estabelecido o valor 10, na
Modificar o valor da varivel repetio PARA I 1 AT 10
que controla a repetio dentro PASSO 2 FAA
dele. Isso ser feito atravs do
incremento da varivel I de

## 4.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.

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.

75
4.5 REPETIR AT

## uma estrutura de repetio onde a condio de parada testada no fim da

sequncia de passos. uma estrutura que garante a execuo da sequncia de passos

REPETIR
<sequncia de passos>
AT <condio>

REPEAT
ESCREVA Entre com um nmero no intervalo [10,50]
LEIA n
SE ((n<10) or (n>50)) ENTO
ESCREVA ERRO: Nmero invlido.
FIM-SE
AT (n>=10) and (n<=50);

76
5 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.

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

visualizar o seguinte:

## 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, Computao}, {Idade, 30},

{Cargo,Programao}, {Tempo de Servio, 5}}

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

## Um conjunto de registros que caracterizam uma classe de entidade chamado de

arquivo. O arquivo finalizado com uma marca de fim de arquivo (EOF end of file)

77
5.1 Exerccios Resolvidos

1. Escreva um algoritmo que leia o nome, sexo, idade de uma pessoa e escreva os

## DECLARE NOME, SEXO CARACTER

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

PARA I 1 AT 100 FAA
FIM-PARA

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

ENQUANTO (NOT EOF) FAA
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

ENQUANTO (NOT EOF) FAA
SE (SEXO = 'F') ENTO
FIM-SE
FIM-ENQUANTO

78
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

TOTALMULHER 0
ENQUANTO (NOT EOF) FAA
SE (SEXO = 'F') ENTO
TOTALMULHER TOTALMULHER + 1
FIM-SE
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 TOTALH, SALBRUTO COMO REAL
ENQUANTO (NOT EOF) FAA
SALBRUTO TOTH * 3.45
ESCREVA SALBRUTO
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

HMENOR -1
MMAIOR -1
ENQUANTO (NOT EOF) 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
FIM-ENQUANTO
ESCREVA HMENOR
ESCREVA MMAIOR

79
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 (NOT EOF) 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

## 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 sequncia 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.

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;
e) para os salrios menores que R\$ 5.000,00 imprima esses salrios acrescidos de
20%.

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

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 frequncia 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 frequncia.
- para cada aluno: a matrcula, a frequncia, 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 :

- cdigo do curso;
- nmero de vagas;
- nmero de candidatos do sexo masculino;
- nmero de candidatos do sexo feminino.

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

## 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;
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 sequncia de valores. O voto de cada eleitor foi

## 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;
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.

82
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

## Se a > b + c no formam tringulo algum.

Se a2 = b2 + c2 formam um tringulo retngulo.
2 2 2
Se a > b + c formam um tringulo obtusngulo.
Se a2 < b2 + c2 formam um tringulo acutngulo.
Se forem todos iguais formam um tringulo equiltero.
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
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:

MA = Nl + N2 x 2 + N3 x 3 + ME
7

## Mdia de Aproveitamento Conceito

>= 9.0 A
>= 7.5 e < 9.0 B
>= 6.0 e < 7.5 C
>= 4.0 e < 6.0 D
< 4.0 E

83
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 ndice De Aumento

0 - 400,00 15%
400,01 - 700,00 12%
700,01 - 1.000,00 10%
1.000,01 - 1.800,00 7%
1.800,01 - 2.500,00 4%
acima de 2.500,00 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.

84
6 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.
de armazenar vrios valores ao mesmo tempo e de mesmo tipo. Os vetores podem ser
unidimensionais ou multidimensionais (matrizes, tabelas.).

## Onde tipo pode ser: inteiro, real, carter, lgico.

<tamanho> = define quantos valores sero armazenados.

VETOR 10
A INTEIRO

## 6.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
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

85
NOME TIPO VALOR
VETOR 10
A INTEIRO 12

A(10) 55 ( o valor dez indica a posio no vetor e o valor 55, o valor a ser

## NOME TIPO VALOR

VETOR 10
A INTEIRO 12 55

Obs. Cada A(I) 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
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

incorreta)

leitura.

## NOME TIPO VALOR

VETOR 10
A INTEIRO 32

86
6.2.2 Colocando todos os valores no vetor atravs de leitura

LEIA A(2) 12
LEIA A(3) 20
LEIA A(4) 15
LEIA A(5) 1
4
OU

## DECLARE A(5), I COMO INTEIRO

PARA I 1 AT 5 FAA
LEIA A(I)
FIM-FAA

## NOME TIPO VALOR

VETOR 5
A INTEIRO 12 20 15 1 4

## 6.3 IMPRIMINDO O VETOR

ESCREVA A(1)
ESCREVA A(2) PARA I 1 AT 5 FAA
ESCREVA A(3) OU
ESCREVA A(4) ESCREVA A(I)
ESCREVA A(5) FIM-FAA

## NOME TIPO VALOR

VETOR 5
A INTEIRO 12 20 15 1 4

12
20
15
1
4

87
6.4 Exerccios Resolvidos

mdia aritmtica.

## DECLARE A(50), I, SOMA COMO INTEIRO

DECLARE MEDIA COMO REAL
LEIA A(I), I = 1,50,1
SOMA 0
PARA I 1 AT 50 FAA
SOMA SOMA + A(I)
FIM-PARA
MEDIA SOMA / 50
PARA I 1 AT 50 FAA
ESCREVA A(I), MEDIA
FIM-PARA

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
PARA I 1 AT 100 FAA
SE ( VET(I) > 0 ) THEN
ESCREVA VALOR = , VET(I), NA POSICAO =, I
FIM-SE
FIM-FAA

## 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
PARA I 1 AT 79 FAA
SE ( VET(I) < MENOR ) THEN
MENOR VET(I)
POSICAOMENOR I
FIM-SE
FIM-PARA
ESCREVA MENOR = , MENOR, NA POSICAO =, POSICAOMENOR

88
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
PARA I 1 AT 30 FAA
SE ( A(I) = 0 ) THEN
B(I) 1
SENO
B(I) A(I)
FIM-SE
FIM-PARA
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
PARA I 1 AT 30 FAA
SE ( A(I) # 0 ) THEN
KK+1
B(K) A(I)
FIM-SE
FIM-PARA
ESCREVA B(I), I = 1,K,1

## 6.Escreva um algoritmo que leia um vetor inteiro de 30 posies e permute o primeiro

com o ltimo valor contido no vetor.

## DECLARE A(30), AUX, I, K COMO INTEIRO

LEIA A(I), I = 1,30,1
ESCREVA A(I), I = 1,30,1
AUX A(1)
A(1) A(30)
A(30) AUX
ESCREVA A(I), I = 1,30,1

89
6.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] b) V[X + 2] c) V[ X + 3] d) V[ X * 4]
e) V[ X * 1] f) V[ X * 2] g) V[ X * 3] h) V[ X + Y] ]
i) 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.
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.

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

91
7 MATRIZES

## Matrizes, 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.

## 7.1 Declarao de Matrizes

Em pseudocdigo as declaraes podem ser representadas como:

## DECLARE <identificador>(<tamanho da primeira dimenso, tamanho da

segunda dimenso, ... >) COMO <tipo>

## Onde tipo pode ser: inteiro, real, caractere, lgico.

< tamanho da primeira dimenso > = define tamanho da primeira dimenso.
< tamanho da segunda dimenso > = define tamanho da segunda dimenso, etc.

MATRIZ
A INTEIRA

Posio 2,5

## Posio 2,1 Posio 3,10

92
7.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
ser utilizado para a atribuio de valores no vetor.

Por exemplo:

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)

## NOME TIPO VALOR

MATRIZ
A INTEIRA 12

Obs. Cada A(I,J) deve ser tratado como uma varivel inteira "comum", isto ,
podem-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.

93
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

incorreta)

## NOME TIPO VALOR

MATRIZ
A INTEIRA

32

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

LEIA A(1,1) 12
LEIA A(1,2) 20
LEIA A(1,3) 15
LEIA A(2,1) 1
LEIA A(2,2) 4
LEIA A(2,3) 3
LEIA A(3,1) 5
LEIA A(3,2) 8
LEIA A(3,3) 2

OU

## NOME TIPO VALOR

DECLARE A(3,3), I,J COMO INTEIRO MATRIZ
PARA I 1 AT 3 FAA A INTEIRA 12 20 15
PARA j 1 AT 30 FAA
LEIA A(I,J)
FIM-PARA 1 4 3
FIM-PARA

5 8 2

LEIA A(1,1), A(1,2), A(1,3) 12 20 15
LEIA A(2,1), A(2,2), A(2,3) 1 4 3
LEIA A(3,1), A(3,2), A(3,3) 5 8 2

OU

## DECLARE A(3,3) COMO INTEIRO

PARA I 1 AT 3 FAA NOME TIPO VALOR
LEIA A(I,1), A(1,2), A(I,3) MATRIZ
FIM-PARA A INTEIRA 12 20 15

1 4 3

5 8 2

95
7.3 Imprimindo a Matriz

## A) Um valor por linha

ESCREVA A(1,1)
ESCREVA A(1,2)
ESCREVA A(1,3) PARA I 1 AT 3 FAA
ESCREVA A(2,1) PARA J 1 AT 3 FAA
ESCREVA A(2,2) ESCREVA A(I,J)
ESCREVA A(2,3) FIM-PARA
ESCREVA A(3,1) FIM-PARA
ESCREVA A(3,2)
ESCREVA A(3,3)

12
20
15
1
4
3
5
8
2

## ESCREVA A(1,1), A(1,2), A(1,3)

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

OU

## DECLARE A(3,3) COMO INTEIRO

PARA I 1 AT 3 FAA NOME TIPO VALOR
ESCREVA A(I,1), A(1,2), A(I,3) MATRIZ
FIM-PARA A INTEIRA 12 20 15

1 4 3

5 8 2

12 20 15
1 4 3
5 8 2

96
7.4 Exerccios Resolvidos

1. Escreva um algoritmo para ler uma matriz (5,5) de nmeros inteiros e imprimi-los

## DECLARE A(5,5), I, SOMA, J COMO INTEIRO

DECLARE MEDIA COMO REAL

PARA I 1 AT 5 FAA
LEIA A(I,J), J = 1,5,1
ESCREVA A(I,J), J = 1,5,1
FIM-PARA

SOMA 0
PARA I 1 AT 5 FAA
PARA J 1 AT 5 FAA
SOMA SOMA + A(I,J)
FIM-PARA
FIM-PARA

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

PARA I 1 AT 3 FAA
LEIA A(I,J), J = 1,3,1
ESCREVA A(I,J), J = 1,3,1
FIM-PARA

PARA I 1 AT 3 FAA
PARA J 1 AT 3 FAA
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-PARA
FIM-PARA

97
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

PARA I 1 AT 3 FAA
LEIA A(I,J), J = 1,3,1
ESCREVA A(I,J), J = 1,3,1
FIM-PARA

K0
PARA I 1 AT 3 FAA
PARA J 1 AT 3 FAA
SE ( MOD( A(I,J), 2) # 0 ) THEN
K K+1
B(K) A(I,J)
FIM-SE
FIM-PARA
FIM-PARA

PARA I 1 AT K FAA
ESCREVA B(I)
FIM-PARA

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:

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

98
DECLARE A(3,4), B(4,2) , C(3,2) R,S, SOMA, I COMO INTEIRO

PARA I 1 AT 3 FAA
LEIA A(I,J), J = 1,4,1
ESCREVA A(I,J), J = 1,3,1
FIM-PARA

PARA I 1 AT 4 FAA
LEIA B(I,J), J = 1,2,1
ESCREVA B(I,J), J = 1,3,1
FIM-PARA

## PARA I 1 AT 3 FAA (fixa a linha da primeira matriz)

PARA S 1 AT 2 FAA (fixa a coluna da segunda matriz)
SOMA 0
PARA R 1 AT 4 FAA (varia os elementos para multiplicao)
SOMA SOMA + A(R,I) * B(I,S)
FIM-PARA
C(R,S) SOMA
FIM-PARA
FIM-PARA

PARA I 1 AT 3 FAA
ESCREVA C(I,S), S = 1,2,1
FIM-PARA

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

99
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.
5. 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.
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

100
8 MODULARIZAO

## At agora, todos os programas foram escritos de forma que o corpo do programa

consistia de um nico bloco de comandos. No entanto, medida que precisamos
escrever programas maiores (com centenas de linhas de cdigo, por exemplo) esta deixa
de ser uma boa tcnica. A tcnica de modularizao consiste em quebrar um programa
grande em unidades menores que sejam funcionalmente independentes mas que levem
subprograma.

## 1) desenvolver o algoritmo em diferentes fases de detalhamento crescente, do

geral ao particular, por refinamentos sucessivos (desenvolvimento top-down ou de cima
para baixo) - reduo da complexidade;

## 2) decompor o algoritmo em mdulos funcionais, organizados de preferncia em

um sistema hierrquico. Esses mdulos trazem vantagens adicionais: para testes, pois
se testa um modulo ( ou seja, uma parte do programa) de cada vez, independentemente,
e para reutilizao de um modulo em outros algoritmos e programas, no futuro.

3) economia de cdigo.

## 1. um subprograma deve ter um propsito nico;

2. um subprograma deve representar uma operao completa.

8.1 Procedimentos

## Um procedimento um conjunto de instrues ( comandos, variveis, arquivos,

etc.) que implementa a soluo de uma parte do problema. E para ser executado deve
ser ativado por um programa principal ou por outro procedimento.

Exemplo 1: Suponha que desejamos escrever cdigo para ler e imprimir trs
matrizes A, B, C 3x3 de nmeros inteiros. O Seguinte trecho de algoritmo poderia ser
escrito.

101
DECLARE A(3,3), B(3,3), C(3,3), I, J COMO INTEIROS
PARA I 1 AT 3 FAA Trecho voltado para leitura e
LEIA A(I,1), A(I,2), A(I,3) impresso de A
ESCREVA A(I,1), A(I,2), A(I,3)
FIM-PARA
PARA I 1 AT 3 FAA Trecho voltado para leitura e
LEIA B(I,1), B(I,2), B(I,3) impresso de B
ESCREVA B(I,1), B(I,2), B(I,3)
FIM-PARA
PARA I 1 AT 3 FAA
LEIA C(I,1), C(I,2), C(I,3) Trecho voltado para leitura e
ESCREVA C(I,1), C(I,2), C(I,3) impresso de C
FIM-PARA

## Observe que os trechos acima abordam a mesma idia, porm particularizados

para cada matriz (A, B, C). A utilizao de procedimento poder eliminar a repetio
desses cdigos.

USANDO PROCEDIMENTO.

PROCEDIMENTO LeituraMatriz ( X )
DECLARE X(3,3), I, J COMO INTEIROS Trecho voltado para LEITURA
PARA I 1 AT 3 FAA
LEIA X(I,1), X(I,2), X(I,3)
FIM-PARA
FIM- PROCEDIMENTO

PROCEDIMENTO EscrevaMatriz ( X )
DECLARE X(3,3), I, J COMO INTEIROS Trecho voltado para ESCRITA
PARA I 1 AT 3 FAA
ESCREVA X(I,1), X(I,2), X(I,3)
FIM-PARA
FIM- PROCEDIMENTO

## DECLARE A(3,3), B(3,3), C(3,3) COMO INTEIROS

LeituraMatriz (A)
Escrevamatriz (A) CHAMADAS dos Procedimentos que passam a ter
Escrevamatriz (B) uma das matrizes ( A, B, C )
LeituraMatriz (C)
Escrevamatriz (C)

102
Exemplo 2: Suponha que ao resolver um problema necessrio permutar os
valores de diversas variveis.

## DECLARE A , B, C, D ,E, F, AUX COMO INTEIROS

AUX A
AB permuta A por B
B AUX
AUX C
CD permuta C por D
D AUX
AUX E
EF permuta E por F
F AUX

USANDO PROCEDIMENTO

PROCEDIMENTO TrocaInteiro ( X, Y )
DECLARE X, Y AUX COMO INTEIROS
AUX X
Y AUX
FIM- SUBROTINA

## DECLARE A , B, C, D ,E, F, AUX COMO INTEIROS

TrocaInteiro (A,B)
TrocaInteiro (E,F)

## Para executar um PROCEDIMENTO (chamar) utilizamos seu nome e passamos a

lista de argumentos de acordo com a lista de parmetros. Os argumentos so variveis,

## No exemplo acima: TrocaInteiro (A,B) A e B so argumentos do PROCEDIMENTO

TrocaInteiro, enquanto X e Y so os parmetros.

## importante que os argumentos e parmetros apaream exatamente na mesma

ordem e de mesmo tipo. Os argumentos podem ter os mesmos IDENTIFICADORES
(nome) que os parmetros de um PROCEDIMENTO. Porm, se pensarmos que os elas
dos parmetros como mais gerais, e os dos argumentos mais especficos.

Forma Geral:

## PROCEDIMENTO <identificador> ( <lista de parmetros > )

< declarao de variveis internas e dos parmetros >
< corpo do PROCEDIMENTO >
FIM- PROCEDIMENTO

103
8.2 Exerccios Propostos

## 1. Faa um procedimento que recebe, por parmetro, 2 vetores de 10 elementos inteiros

e que calcule e retorne, tambm por parmetro, o vetor unio dos dois primeiros.

## 2. Faa um procedimento que recebe um vetor X de 30 elementos inteiros, por

parmetro, e retorna, tambm por parmetro, dois vetores A e B. O vetor A deve
conter os elementos pares de X e o vetor B, os elementos mpares.

3. Faa uma funo que recebe um vetor X(15) de inteiros , por parmetro, e retorna a
quantidade de valores pares em X.

4. Faa uma funo que recebe um vetor X(20) de reais , por parmetro, e retorna a
soma dos elementos de X.

5. Faa um procedimento que recebe, por parmetro, um vetor A(50) de reais e retorna-

## 6. Faa um procedimento que recebe, por parmetro, um vetor A(25) de inteiros e

substitui todos os valores negativos de A por zero. O vetor A deve retornar alterado.

## 7. Faa um procedimento que gera os 10 primeiros primos acima de 100 e retorna-os em

um vetor X(10), por parmetro.

## 8. Faa um procedimento que recebe, por parmetro, 2 vetores de 10 elementos inteiros

e que calcule e retorne, tambm por parmetro, o vetor interseo dos dois primeiros.

## 9. Faa um procedimento que recebe, por parmetro, 2 vetores de 10 elementos inteiros

e que calcule e retorne, tambm por parmetro, o vetor diferena dos dois primeiros.

10. Faa um procedimento que recebe, por parmetro, 2 vetores de 20 elementos inteiros
e que calcule e retorne, tambm por parmetro, o vetor soma dos dois primeiros.

11. Faa um procedimento que recebe, por parmetro, 2 vetores de 15 elementos inteiros
e que calcule e retorne, tambm por parmetro, o vetor produto dos dois primeiros.

12. Faa um procedimento que receba um vetor A(100) de inteiros e retorna esse mesmo
vetor compactado, ou seja, sem os seus valores nulos(zero) e negativos.

13. Faa um procedimento que receba, por parmetro um vetor B(50) de reais e calcula o
maior valor do vetor. A seguir, o procedimento deve dividir todos os elementos de B

14. Faa um procedimento que receba, por parmetro, duas matrizes A(4,6) e B(6,4) e
retorna uma matriz C, tambm por parmetro, que seja o produto matricial de M por N.

15. Faa um procedimento que receba, por parmetro, duas matrizes A(4,6) e B(6,4) e
retorna uma matriz C, tambm por parmetro, que seja a soma de M com N.

104
8.3 Funes

Uma funo um mdulo que tem por objetivo calcular, avaliar, testar e retornar
ao algoritmo, procedimento ou funo chamador um nico valor. A chamada de uma
funo para execuo feita apenas citando o seu nome (identificador) dentro de uma
expresso. Funes retornam um valor, no seu nome e no so invocadas (chamadas)
como procedimentos. Funes so usadas em expresses, como por exemplo,
operandos de operaes. o aparecimento do nome da funo em uma expresso que
sinaliza sua execuo.

Forma Geral:

<tipo do valor retornado > FUNCO <Nome da Funo> ( <lista de parmetros > )
< declarao de variveis interno e dos parmetros >

RETORNA
FIM- FUNCO

## DECLARE I , FATN, FATP, FATNP COMO INTEIRO

DECLARE S COM REAL
LEIA N, P
FATN 1
PARA I 1 AT N FAA Clculo do fatorial de N
FATN FATN * I
FIM-PARA

FATP 1
PARA I 1 AT P FAA Clculo do fatorial de P
FATP FATP * I
FIM-PARA

FATNP 1
PARA I 1 AT N-P FAA Clculo do fatorial de N-P
FATNP FATNP * I
FIM-PARA

ESCREVA S

105
USANDO FUNO

## INTEIRO FUNO FATORIAL ( X)

DECLARE X, I COMO INTEIRO
FATORIAL 1
PARA I 1 AT X FAA
FATORIAL FATORIAL * I
FIM-PARA
RETORNA
FIM- FUNCO

## DECLARE I , FATORIAL COMO INTEIRO

LEIA N, P
S FATORIAL(N) / ( FATORIAL(N-P) - FATORIAL( P ) )
ESCREVA S

## a) uma determinada sequncia de operaes que implamenta um passo de

algoritmo deve retornar um nico valor;
b) o acesso a todos os argumentos e a variveis no locais, se necessrio, feito
somente para consulta, isto , quando no so feitas, em nenhum comando
interno funo, atribuies de valor a parmetros ou a variveis no-locais da
funo.

## 8.4 Exerccios Propostos

1. Faa uma funo que recebe um valor inteiro e verifica se o valor par ou mpar. A
funo deve retornar um valor booleano.

2. Faa uma funo que recebe, por parmetro, a altura (alt) e o sexo de uma pessoa
e retorna o seu peso ideal. Para homens, calcular o peso ideal usando a frmula
peso ideal = 72.7 x alt - 58 e ,para mulheres, peso ideal = 62.1 x alt - 44.7.

3. Faa uma funo que recebe, por parmetro, um valor inteiro e positivo e retorna o
nmero de divisores desse valor.

4. Escreva uma funo que recebe por parmetro um valor inteiro e positivo N e
retorna o valor de S.
5. S = 1 + + 1/3 + + 1/5 + 1/N.

6. Escreva uma funo que recebe por parmetro um valor inteiro e positivo N e
retorna o valor de S.
7. S = 1 + 1/1! + ! + 1/3! + 1 /N!

8. Faa uma funo que recebe um valor inteiro e verifica se o valor positivo ou
negativo. A funo deve retornar um valor booleano.

106
9. Faa uma funo que recebe por parmetro o raio de uma esfera e calcula o seu
volume (v = 4/3.P .R3).

10. Escreva uma funo que recebe, por parmetro, dois valores X e Z e calcula e
retorna Xz . (sem utilizar funcoes ou operadores de potencia prontos)

11. Faa uma funo que recebe por parmetro um valor inteiro e positivo e retorna o
valor lgico Verdadeiro caso o valor seja primo e Falso em caso contrrio.

12. Faa uma funo que verifique se um valor perfeito ou no. Um valor dito
perfeito quando ele igual a soma dos seus divisores excetuando ele prprio. (Ex:
6 perfeito, 6 = 1 + 2 + 3, que so seus divisores). A funo deve retornar um
valor booleano.

13. Faa uma funo que recebe um vetor X(15) de inteiros , por parmetro, e retorna
a quantidade de valores pares em X.

14. Faa uma funo que recebe um vetor X(20) de reais , por parmetro, e retorna a
soma dos elementos de X.

15. Faa uma funo que recebe, por parmetro, uma matriz A(5,5) e retorna a soma
dos seus elementos.

16. Faa uma funo que recebe, por parmetro, uma matriz A(6,6) e retorna a soma
dos elementos da sua diagonal principal e da sua diagonal secundria.

tambm por parmetro, a categoria desse nadador de acordo com a tabela abaixo:

5 a 7 anos Infantil A
8 a 10 anos Infantil B
11-13 anos Juvenil A
14-17 anos Juvenil B
Maiores de 18 anos (inclusive) Adulto

107
REFERNCIAS

## Fundamentos da Programao de Computadores

Algoritmos, Pascal e C\C++
Ana Fernanda G. Ascencio e Edilene A. V. de Campos
Pearson Prentice Hall - ISBN 85-87918-36-2

Fundamentos de Programao
Luis Aguilar Joyanes
MCGRAW-HILL

## Algoritmos e Estrutura de Dados

Autores: Guimaraes/Lajes
LTC

## Programao Estruturada com Fortran e Watfiv

Autores: Maria Clia A. Grillo
LTC

## Introduo Cincia da Computao com Watfiv e Fortran

Sergio E. R. de Carvalho
Editora Campus

## Cincia dos computadores: uma abordagem algortmica.

Tremblay & Bunt. McGraw-Hill. 1983

108

## Нижнее меню

### Получите наши бесплатные приложения

Авторское право © 2021 Scribd Inc.