Vous êtes sur la page 1sur 108

Universidade Federal Fluminense

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.4 PRIORIDADE ENTRE OS OPERADORES __________________________________________ 19
2.1.5 EXERCCIOS RESOLVIDOS______________________________________________________ 19
2.2 OPERAES DE ENTRADA E SADA DE DADOS_______________________________ 23
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
produzir o resultado desejado. Os roteiros podem ser textuais ou grficos.

Exemplo 1: Como fazer um pato no tucupi?

Tempere o pato com o alho, a cebola, sal e pimenta-do-reino.


Aquea o forno em temperatura mdia.
Coloque o pato numa assadeira com um pouco de leo e leve ao forno at dourar.
Numa panela, coloque o tucupi e os pedaos de pato assado.
Leve ao fogo alto at ferver.
Abaixe o fogo e cozinhe at ficar macio.
Acrescente mais tucupi, se necessrio.
Junte as folhas de jambu e cozinhe at que os talos fiquem macios.
Sirva com farinha de mandioca.

Exemplo 2: Como chegar no stio do amigo para churrasco de final de semana?

Siga pela rodovia RJ 104


No quilometro 98 virar a esquerda na primeira entrada de terra
Siga at a primeira ponte.
Atravesse a ponte e dobre esquerda.
Procure a placa stio Animao.

Exemplo 3: Roteiro para trocar uma lmpada queimada.

a) Primeira verso
1. Remover a lmpada queimada;
2. Colocar a nova lmpada;

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

b) Segunda verso (um pouco mais detalhada)

1. Buscar uma lmpada nova;


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

E se a lmpada no estiver queimada?

c) Terceira verso (um pouco mais detalhada)

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

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


seja, somente efetua-se a troca da lmpada caso a condio lmpada queimada
(lmpada no acender) for verdadeira.
Se a condio lmpada no acender for falsa, nada mais ser realizado.

Apesar de o algoritmo estar correto, ele pode ser melhorado uma vez que somente seria
necessrio pegar a escada, caso a condio lmpada no acender seja verdadeira:
d) Quarta verso (um pouco mais detalhada)
1. Acionar o interruptor;
2. Se a lmpada no acender, ento
2.1 Buscar uma lmpada nova;
2.2 Pegar uma escada
2.3 Posicionar a escada debaixo da lmpada;
2.4 Subir na escada at que a lmpada possa ser alcanada;
2.5 Girar a lmpada queimada no sentido anti-horrio at que se solte;
2.6 Colocar a lmpada nova girando-a no sentido horrio;
2.7 Descer da escada;

Exerccios

1. Elaborar um algoritmo que mostre os passos necessrios para trocar um pneu furado.

2. Um homem precisa atravessar um rio com um barco que possui capacidade apenas
para carregar ele 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
Computadores muitas vezes chamados erroneamente de crebro eletrnico, no
tm, pelo menos at agora, a capacidade de resolver por conta prpria problemas. Assim,
como outras mquinas, 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


sequncia de operaes seja criada, semelhante aos roteiros apresentados
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
ambiguidade, de passos que levam soluo de um dado problema (TREMBLAY;
BUNT, 1981).

As definies acima mostram que um algoritmo precisa:

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
adequada para o problema.

1.2 REPRESENTAO DE ALGORITMOS

O processo de resoluo de um problema atravs de computador comea no


entendimento de forma clara do problema, para qual projetado um algoritmo, que
futuramente ser codificado em uma linguagem de programao, transformando-se
dessa forma em um programa.

6
Fase de resoluo do Problema Fase de Implementao

Implementao utilizao de uma linguagem de Programao

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

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


testar as aes (usada na 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.

1) A primeira representao: usadas pelas pessoas

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
representaes utilizadas:

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

2) A segunda representao: usada pelo computador

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
programadores o computador.

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.

Uma linguagem de programao um mtodo padronizado para expressar


instrues para um computador. um conjunto de regras sintticas e semnticas usadas
para definir um programa de computador. Uma linguagem permite que um programador
especifique precisamente sobre quais dados um computador vai atuar, como estes dados
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.

Existem trs tipos de programas tradutores : Montadores, Interpretadores e


Compiladores

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

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

COMPILADOR
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


so compilados (ou interpretados) gerando a linguagem de mquina, usada pelo
computador para execuo e a obteno do resultado desejado.

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
necessidade de manipular com eficincia grandes quantidade de dados. Os dados
podem ser de diversos tipos: primitivos, agregados homogneos, agregados
heterogneos, registros, arquivos de registros, etc..

O conjunto dos tipos primitivos que compe uma linguagem de programao


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

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


dos nmeros inteiros (negativos, positivos ou nulos)
Ex: Quantidade de alunos: 50
Quantidade de professores de um curso: 35

Real: denota todo o conjunto de valores numricos que pertena ao conjunto dos
nmeros reais (negativos, positivos ou nulos)
Ex: Mdia de um aluno: 8.5
Salrio de uma pessoa: R$ 300.00

Caractere: denota todo o conjunto de valores que pertena ao conjunto dos


caracteres (Alfabticos: A-Z, a-z; numricos: 0-9; e especiais: ?, @," ~, etc.)
Ex: Nome do aluno: "Joo Antnio"
Orientao: "usar somente caneta preta no preenchimento"

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

10
Ex: Questo: Certa
Situao: Reprovado

1. Determinar qual o tipo de dado presente nas sentenas abaixo:

a) H na porta do banheiro uma placa HOMENS.


b) O salrio de Maria de R$ 1030,98.
c) Uma maneira econmica de representar o sexo de uma pessoa atravs de F ou M.
d) A sala de aula fica no segundo andar.
e) O planeta Terra tem a forma quadrada.

Entende-se por operao elementar todos os clculos com um resultado


produzido, entrada e sada de dados; movimentao de dados.

2.2 ATRIBUIO

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


pelos dispositivos de entrada e sada, ou calculados em operaes no programa e
posteriormente colocados disposio do usurio. Para que a memria possa armazenar
os dados, uma rea reservada na memria e associada a identificadores (nomes)
usados no programa. A esta rea se d o nome de Tabela de Smbolos (TS)
(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
processamento, so criados dois nomes SOMA e RESULTADO. Cada linha na Tabela de
Smbolo (TS), representa uma rea na memria que guardar os valores e ser
manipulada (referenciada, identificada) pelo nome dado (SOMA e RESULTADO), como
representado a seguir:

Tabela de Smbolos
NOME TIPO VALOR
SOMA Inteiro 1
RESULTADO Inteiro 15

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


para o valor 1, Soma.

A esses nomes criados pelo programador, so chamados de identificadores.


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

A criao de nomes (identificadores) livre?

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
Regra para Construo de Identificadores

Onde: LETRA = A ... Z


DGITO = 0 ... 9

RESTRIES:

a) O primeiro caractere do nome sempre ser uma letra;

b) No existe uma restrio quantidade de letras ou dgitos que formam o nome;

d) O nome no pode possuir espao em branco ou smbolos especiais, tais como:


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

e) No podero ser usados outros caracteres a no ser letras e nmeros;

f) As letras sempre sero maisculas;

g) No h acentuao dos nomes;

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


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

1. Assinale os identificadores vlidos:

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


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

Como especificamos cada linha da tabela de smbolos?

A associao do identificador ao local que receber o dado na tabela de smbolo


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

Em pseudocdigo as declaraes podem ser representadas como:

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

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:

DECLARE SOMA, RESULTADO COMO INTEIRO

Essa declarao produzir a seguinte tabela:

NOME TIPO VALOR


SOMA Inteiro
RESULTADO Inteiro

Outros exemplos:

DECLARE X, Y, Z, TOTAL COMO REAL

NOME TIPO VALOR


X Real
Y Real
Z Real

DECLARE T COMO LOGICO

NOME TIPO VALOR


T LGICO

DECLARE A, B, TOTALH, TOTALM COMO INTEIRO


DECLARE X, K COMO REAL
DECLARE S COMO CARATER

NOME TIPO VALOR


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

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

Como os valores sero colocados na tabela?

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:

Identificador <Expresso>

O smbolo deve ser lido como recebe o valor de

Exemplo:
A 14
VALOR 10.5
SOMA 5
RESULTADO SOMA

Simulao do Funcionamento das Atribuies

NOME TIPO VALOR


A Inteiro, varivel 14
Valor Real, varivel 10.5
Soma Inteiro, varivel 5
Resultado Inteiro, varivel 5

Analisando a forma geral da atribuio: Identificador <Expresso> percebe-se


que possvel construir expresses e atribuir a um nome. Por exemplo: A 14 + 10

Como essa instruo executada?

A 14 + 10

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

14 10

A 24

e em segundo lugar, o valor computado da expresso atribudo ao identificador


na TS.

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


(ou programa), usamos o termo varivel.

Expresso pode ser: aritmticas, relacionais e lgicas.

14
2.2.1 EXPRESSES ARITMTICAS

So aquelas, que quando avaliadas, produzem resultados numricos. Constituem


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

Operadores Aritmticos: + (soma)


- (subtrao)
* (multiplicao)
/ (diviso com resultado decimal)

Os operadores * / tm maior prioridade e os parnteses podem ser usados para


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

1. Os nmeros so expresses aritmticas;

2. Variveis numricas com valor atribudo so expresses aritmticas;

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


(X)
X*Y
X/Y
X+Y
X - Y so tambm expresses aritmticas.

4. Funes aritmticas so expresses aritmticas.

Exerccios

1. Para o algoritmo abaixo, crie a tabela de smbolos e mostre os valores para cada
varivel.

DECLARE S, R, T COMO INTEIRO


S 10
R 1
TR+S
ST
RS

2. Para o algoritmo abaixo, crie a tabela de smbolos e mostre os valores para cada
varivel.

DECLARE S, R, T COMO INTEIRO


S 10
R 1
RR+1
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

Expresses Relacionais so na verdade comparaes; quando avaliadas


produzem resultado Verdadeiro ou Falso. Como o resultado de uma expresso relacional
um valor lgico, logo ela uma expresso lgica (como definida anteriormente).

Operadores Relacionais: > ( maior que )


>= ( maior ou igual)
< ( menor que)
<= ( menor ou igual)
= ( igual a )
<> ( no igual )

Expresses Relacionais podem ser definidas como:

1. Sendo A e B expresses aritmticas, ento:

A>B (A 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)

Expresses lgicas (ou condies) so composies de operandos e operadores


lgicos.

Operadores Lgicos: and ( e), or (ou), not (no)

Expresses Lgicas podem ser definidas como:

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


expresses lgicas;

2. Expresses Relacionais so expresses lgicas;

3. Sendo A e B expresses lgicas, ento:

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

Resultado das operaes Lgicas

AND verdade falso OR verdade falso NOT verdade falso


Verdade verdade falso verdade verdade verdade falso verdade
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 lua quadrada.
 A neve branca
 Matemtica uma cincia.

No so objetos de estudo as sentenas interrogativas ou exclamativas.

OS SMBOLOS DA LING. DO CLCULO PROPOSICIONAL

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

17
Exemplos:
A lua quadrada : p
A neve branca : q
Matemtica uma cincia: r

Conectivos Lgicos: As frmulas atmicas podem ser combinadas entre si e, para


representar tais combinaes usaremos os conectivos lgicos: e , ou , no

Exemplos:

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


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

Obtendo o valor lgico

7+5>7 OU 2=1  Verdadeiro


V F

OU

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


V F F

E
NO

18
2.1.4 PRIORIDADE ENTRE OS OPERADORES

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

2.1.5 EXERCCIOS RESOLVIDOS

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

5. Para o algoritmo abaixo monte a TS e indique que valores a variveis assumiro:

DECLARE A, B, C COMO INTEIRO


A0
B A + 10
CB1
A1
B A + 10
CB1

6. Em quais dos seguintes pares importante ordem dos comandos? Em outras


palavras, quando se muda a ordem dos comandos, os resultados finais se alteram? (
Supor X # Y # Z)

SOLUO

a) X Y
YZ

Fazendo X Y e depois Y Z obtem-se o mesmo resultado fazendo Y Z e depois


XY?

Resolvendo: 1 caso: X Y e depois Y Z

suponha X=1 Y =2 Z= 3

NOME TIPO VALOR


X Inteiro 1
Y Inteiro 2
Z Inteiro 3

20
Fazendo X Y

NOME TIPO VALOR


X Inteiro 2
Y Inteiro 2
Z Inteiro 3

Fazendo Y Z

NOME TIPO VALOR


X Inteiro 2
Y Inteiro 3
Z Inteiro 3

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

2 caso : Y Z e depois X Y

Supondo X=1 Y =2 Z= 3, porm invertendo os comandos (fazendo Y Z e depois X


Y)

Resolvendo: suponha X=1 Y =2 Z= 3

NOME TIPO VALOR


X Inteiro 1
Y Inteiro 2
Z Inteiro 3

Fazendo Y Z

NOME TIPO VALOR


X Inteiro 1
Y Inteiro 3
Z Inteiro 3

Fazendo X Y

NOME TIPO VALOR


X Inteiro 3
Y Inteiro 3
Z Inteiro 3

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

Concluindo: mudar a ordem desses comandos produzir resultado diferente.

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
2.2 OPERAES DE ENTRADA E SADA DE DADOS

As unidades de entrada e sada de dados so dispositivos que possibilitam a


comunicao entre o usurio e o computador. Atravs delas, o usurio consegue fornecer
dados (entrada de dados) para que a mquina possa processar, assim como, obtm
resultados (sada de dados) do processamento. As operaes de entrada e sada
permitem escrever algoritmos mais genricos.

A utilizao dessas unidades representada nos algoritmos pelos passos de


leitura e escrita.

2.2.1. LEITURA

Forma Geral:

LEIA <identificador[,identificador...]>

Exemplo 1:

LEIA A

Simulao do Funcionamento da Leitura

Obtm do meio externo, a informao disponvel para a leitura.

A forma como feita a leitura depende de como os dados esto organizados.

ENTRADA DE DADOS: 32 LEIA A

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

NOME TIPO VALOR


A INTEIRO 32

A leitura uma atribuio cujos valores esto externos ao algoritmo.

23
Exemplo 2:

ENTRADA DE DADOS: 32 45 60 LEIA A, B, C

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

NOME TIPO VALOR


A Inteiro 32
B Inteiro 45
C Inteiro 60

2.2.2 ESCRITA

Forma Geral:

ESCREVA <identificador[,identificador...]>

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


varivel(eis) especificadas. Textos explicativos podem tambm ser impressos e
intercalados com as variveis.

Exemplo:

ESCREVA A,B,C Lista de variveis

NOME TIPO VALOR


A Inteiro 32
B Inteiro 45
C Inteiro 60

32 45 60

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


impressora, etc.) na mesma linha.

24
ESCREVA A
ESCREVA B
ESCREVA C

NOME TIPO VALOR


A Inteiro 32
B Inteiro 45
C Inteiro 60

32
45
60

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


impressora, etc.), porm cada instruo ESCREVA produz uma linha na sada.
possvel utilizar mensagens no comando ESCREVA.

ESCREVA VALOR =, A

NOME TIPO VALOR


A Inteiro 32
B Inteiro 45
C Inteiro 60

VALOR = 32

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


etc.), juntamente com a mensagem VALOR = .

ESCREVA A =, A

NOME TIPO VALOR


A Inteiro 32
B Inteiro 45
C Inteiro 60

A = 32

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


etc.), juntamente com a mensagem A = .

ESCREVA A =, A, B =,B

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

NOME TIPO VALOR


A Inteiro 32
B Inteiro 45
C Inteiro 60

A = 32 B= 45
C = 60

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


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

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

NOME TIPO VALOR


A Inteiro 32
B Inteiro 45
C Inteiro 60

A = 32
B = 45
C = 60

Resultado da Escrita: O valor contido em A, B e C (na TS) 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.

ESCREVA DADOS INVALIDOS

DADOS INVALIDOS

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
acompanhado de dados o
uma mensagem
Simulao do algoritmo

DECLARE A COMO INTEIRO

NOME TIPO VALOR


A INTEIRO

LEIA A

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


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

entrada de dados: 80 LEIA A

e armazena na varivel definida.

NOME TIPO VALOR


A INTEIRO 80

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
L da entrada de dados
ESCREVA O VALOR LIDO = , A
o primeiro valor
LEIA B
ESCREVA O VALOR LIDO = , B
Escreve o primeiro valor lido,
acompanhado de uma
mensagem
L da entrada de dados
Escreve o segundo valor lido,
o segundo valor acompanhado de uma
mensagem

Simulao do algoritmo

DECLARE A, B COMO INTEIRO

NOME TIPO VALOR


A INTEIRO
B INTEIRO

LEIA A

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


numricos aleatrios, porm, o algoritmo deve funcionar para qualquer valor inteiro lido.
Observe que dois valores so colocados na entrada de dados ( 78 e 65 ), um em cada
linha.

entrada de dados: 78 LEIA A


65

28
e armazena na varivel definida.

NOME TIPO VALOR


A INTEIRO 78
B INTEIRO

ESCREVA O VALOR LIDO = , A

NOME TIPO VALOR


A INTEIRO 78
B INTEIRO

O VALOR LIDO = 78

LEIA B

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

entrada de dados: 65 LEIA B

e armazena na varivel definida.

NOME TIPO VALOR


A INTEIRO 78
B INTEIRO 65

ESCREVA O VALOR LIDO = , B

NOME TIPO VALOR


A INTEIRO 78
B INTEIRO 65

O VALOR LIDO = 78
O VALOR LIDO = 65

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
L da entrada de dados
ESCREVA O VALOR LIDO = , A
o primeiro valor
LEIA A
ESCREVA O VALOR LIDO = , A
Escreve o primeiro valor lido,
acompanhado de uma
mensagem
L da entrada de dados
o segundo valor Escreve o segundo valor lido,
acompanhado de uma
mensagem

Simulao do algoritmo

DECLARE A COMO INTEIRO

NOME TIPO VALOR


A INTEIRO

LEIA A

L um valor da entrada de dados. Observe que dois valores so colocados na entrada de


dados ( 78 e 65 )

entrada de dados: 78 LEIA A


65

e armazena na varivel definida.

NOME TIPO VALOR


A INTEIRO 78

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
utilizado pela primeira leitura.

entrada de dados: 65 LEIA A

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


perdido, substitudo pelo novo valor obtido atravs da leitura.

NOME TIPO VALOR


A INTEIRO 65

ESCREVA O VALOR LIDO = , A

NOME TIPO VALOR


A INTEIRO 65

O VALOR LIDO = 78
O VALOR LIDO = 65

4) Leia dois valores inteiros e calcule a soma.

31
Cria as reas (V1, V2) que
L da entrada de dados armazenaro os valores a serem
os valores que sero lidos. E a rea que armazenar a
somados soma (RESULTADO)

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
RESULTADO

Escreve os valores lidos,


Escreve a soma (RESULTADO) acompanhados de uma
calculada mensagem

Simulao do algoritmo

DECLARE V1, V2, RESULTADO COMO INTEIRO

NOME TIPO VALOR


V1 INTEIRO
V2 INTEIRO
RESULTADO INTEIRO

LEIA V1, V2

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

entrada de dados: 3 5 LEIA V1, V2

e armazena na varivel definida.

32
NOME TIPO VALOR
V1 INTEIRO 3
V2 INTEIRO 5
RESULTADO INTEIRO

RESULTADO V1 + V2

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

V1 V2

3 5

RESULTADO 8

e em segundo lugar, o valor computado da expresso atribudo ao identificador.

NOME TIPO VALOR


V1 INTEIRO 3
V2 INTEIRO 5
RESULTADO INTEIRO 8

ESCREVA VALORES LIDOS =, V1, V2

VALORES LIDOS = 3 5

ESCREVA A SOMA DOS VALORES = , RESULTADO

NOME TIPO VALOR


V1 INTEIRO 3
V2 INTEIRO 5
RESULTADO INTEIRO 8

VALORES LIDOS = 3 5
A SOMA DOS VALORES = 8

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

3- apresentar a rea calculada.

Soluo:

DECLARE RAIO, AREA COMO REAIS


LEIA RAIO
AREA 3.1415 * RAIO * RAIO
ESCREVA AREA

Variao da Soluo

A soluo acima pode ser alterada criando um nome ( PI ) que conter o valor de .

DECLARE RAIO, AREA, PI COMO REAIS


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
apresentados abaixo:

DECLARE A, B, C COMO INTEIRO


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

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.

3.1. SELEO DE UM RAMO

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

DECLARE A COMO INTEIRO

NOME TIPO VALOR


A INTEIRO

LEIA A

L um valor da entrada de dados.

entrada de dados: 78 LEIA A

e armazena na varivel definida.

NOME TIPO VALOR


A INTEIRO 78

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

3.2. SELEO DE DOIS RAMOS

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
for de 6 a 10, aprovado; caso contrrio, reprovado.

DECLARE NOTA COMO REAL


LEIA NOTA
SE (NOTA < 6 ) ENTO
ESCREVA ALUNO REPROVADO
SENO
ESCREVA ALUNO APROVADO
FIM-SE

3) Elaborar um algoritmo que l uma nota e indique a situao do aluno. Se a nota obtida
for de 6 a 10, aprovado; se 4 ou 5.9 vs e menor que 4 reprovado.

DECLARE NOTA COMO REAL


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

4) Faa um algoritmo que leia dois nmeros inteiros e descubra o maior.

DECLARE VALOR1, VALOR2 COMO INTEIRO


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

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
colocado erradamente
<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
dos outros dois lados.

DECLARE X,Y,Z COMO INTEIRO


LEIA X,Y,Z
SE ((X<Y+Z) e (Y <X+Z) e (Z<X+Y)) ENTO
verifique o tipo do tringulo 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

3) Dados trs valores distintos, coloca-los em ordem crescente:

DECLARE L, M, N, AUXILIAR COMO INTEIRO


LEIA L, M, N
Armazene em L o menor valor
Armazene em M o valor intermedirio e em N o maior valor
ESCREVA L,M,N

SE M > N ENTO 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
autorizado" ou "Acesso negado", conforme o caso.

7. O departamento que controla o ndice de poluio do meio ambiente mantm 3 grupos


de indstrias que so altamente poluentes do meio ambiente. O ndice de poluio
aceitvel varia de 0,05 at 0,25. Se o ndice sobe para 0,3 as indstrias do 1o grupo
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.

8. Um sistema de equaes lineares da forma :

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

13.Um ano bissexto se for divisvel por 4 exceto os sculos, que so bissextos se forem
mltiplos de 400. Escreva um algoritmo que determina se um ano bissexto.

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

15.Escrever um algoritmo que l um valor em reais e calcula qual o menor nmero


possvel de notas de 100, 50, 10, 5 e 1 em que o valor lido pode ser decomposto.
Escrever o valor lido e a relao de notas necessrias.

16.Dadas 8 bolas tendo uma deles peso diferente das demais. Dizer qual essa bola e
se ela mais pesada ou mais leve que as outras e qual o seu peso. Imprimir tambm o
peso de todas as bolas.

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.

DECLARE A COMO INTEIRO ENTRADA DE DADOS


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

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


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

DECLARE A COMO INTEIRO ENTRADA DE DADOS


LEIA A 17
ESCREVA O VALOR LIDO = , A 34
LEIA A 1
ESCREVA O VALOR LIDO = , A 23
LEIA A 78
ESCREVA O VALOR LIDO = , A 90
LEIA A 2
ESCREVA O VALOR LIDO = , A 5
LEIA A 8
ESCREVA O VALOR LIDO = , A 15
LEIA A
ESCREVA O VALOR LIDO = , A
LEIA A
ESCREVA O VALOR LIDO = , A
LEIA A
ESCREVA O VALOR LIDO = , A
LEIA A
ESCREVA O VALOR LIDO = , A
LEIA A
ESCREVA O VALOR LIDO = , A

Observe no algoritmo anterior que um conjunto de passos se repete vrias vezes:

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.

4.2. NMERO CONHECIDO DE REPETIES

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

No exemplo anterior, colocamos a sequncia de passos a ser repetida dentro da


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 > um identificador ( nome ) que deve ser criado pelo programador. Essa
varivel tambm chamada de controle de repetio.
< valor inicial > um valor inteiro. o primeiro valor que a varivel de controle de
repetio assumir.
< valor final > um valor inteiro. o valor limite que a varivel de controle de repetio
assumir.
<incremento> um valor inteiro. valor que ser adicionado ao valor varivel de
controle de repetio.

Exemplos:

a) I 1 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

Quantidade de valores de JL ( 3 valores ), logo uma repetio seria executada 3 vezes.

f) JL 1011 at 1013 Passo 1 valores de JL = 1011 1012 1013

Quantidade de valores de JL ( 3 valores ), logo uma repetio seria executada 3 vezes.

g) JL 100 at 10 Passo 1 valores de JL = 100 101 102

Quantidade de valores de JL ( 3 valores ), logo uma repetio seria executada 3 vezes.

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

Iniciar a varivel de controle

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

DECLARE A, I COMO INTEIRO

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

L um valor da entrada de dados. Observe que os dez valores so colocados na entrada


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

entrada de dados: 17 LEIA A


34
1
23
78
90
2
5
8
15

NOME TIPO VALOR


A INTEIRO 17
I INTEIRO 1

ESCREVA O VALOR LIDO = , A

NOME TIPO VALOR


A INTEIRO 78

O VALOR LIDO = 17

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

NOME TIPO VALOR


A INTEIRO 17
I INTEIRO 2

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


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

LEIA A

entrada de dados: 34 LEIA A


1
23
78
90
2
5
8
15

NOME TIPO VALOR


A INTEIRO 34
I INTEIRO 2

ESCREVA O VALOR LIDO = , A

NOME TIPO VALOR


A INTEIRO 34
I INTEIRO 2

O VALOR LIDO = 17
O VALOR LIDO = 34

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

NOME TIPO VALOR


A INTEIRO 17
I INTEIRO 3

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


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

Assim, a repetio ser executada ...

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


com o valor 9, penltima repetio e j foram lidos os 9 valores da entrada).

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

NOME TIPO VALOR


A INTEIRO 8
I INTEIRO 10

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


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

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

entrada de dados: 15 LEIA A

NOME TIPO VALOR


A INTEIRO 15
I INTEIRO 10

ESCREVA O VALOR LIDO = , A

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

FIM-FAA RETORNA AO PASSO PARA I 1 AT 10 PASSO 1 FAA

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

NOME TIPO VALOR


A INTEIRO 17
I INTEIRO 11

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


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

55
4.2.1. LEITURA DE DADOS X REPETIO

DECLARE A COMO INTEIRO ENTRADA DE DADOS


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

DECLARE A, I COMO INTEIRO


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
DECLARE A COMO INTEIRO ENTRADA DE DADOS
LEIA A 17 ( 1 leitura )
ESCREVA O VALOR LIDO = , A 34 ( 2 leitura )
LEIA A 1 ( 3 leitura )
ESCREVA O VALOR LIDO = , A 23 ( 4 leitura)
LEIA A 78 ( 5 leitura )
ESCREVA O VALOR LIDO = , A 90 ( 6 leitura)
LEIA A 2 ( 7 leitura )
ESCREVA O VALOR LIDO = , A 5 ( 8 leitura )
LEIA A 8 ( 9 leitura )
ESCREVA O VALOR LIDO = , A 15 ( 10 leitura )
LEIA A
ESCREVA O VALOR LIDO = , A
LEIA A
ESCREVA O VALOR LIDO = , A
LEIA A
ESCREVA O VALOR LIDO = , A
LEIA A
ESCREVA O VALOR LIDO = , A
LEIA A
ESCREVA O VALOR LIDO = , A

DECLARE A, I COMO INTEIRO


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

ESCREVA O VALOR LIDO = , A

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

1. Faa um algoritmo que obtenha 15 nmeros inteiros e calcule o somatrio.

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

3. Faa um algoritmo que obtenha 5 nmeros inteiros e informe o maior deles.

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

2. Para os algoritmos a seguir :

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 ?
e) Qual deve ser a organizao dos dados de entrada ?

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


entrada:

ENTRADA DE DADOS
1 2
2 4
5 6
7 8
8 10

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

1 2
3 4

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

1 2
3 4
5 6
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

ENTRADA DE DADOS
1 2
3 4
5 6
7 8
9 10

TS
V1 INTEIRO 5
V2 INTEIRO ?
I INTEIRO ?

1 2
3 4

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

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

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


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

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

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


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

10. Escreva um algoritmo que leia cem conjuntos de dois valores, representando o raio e
altura de cem latas e calcule cada volume, cuja frmula : VOLUME = 3.1415 * RAIO2
* ALTURA

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.

4.3. OUTRA UTILIZAO DA INSTRUO PARA-FAA

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.

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

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

Observe que no h leitura de dados

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

Valores de I que sero impressos 2 4 6 8 10

Exemplo 3: Escrever um algoritmo que gere e imprima os nmeros impares de 1 at 10.

DECLARE I COMO INTEIRO


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

Valores de I que sero impressos 1 3 5 7 9

Exemplo 4: Escrever um algoritmo que gere e imprima o somatrio de 1 at 10.

DECLARE I , S COMO INTEIRO


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

Valor de S que ser impresso 55

Exemplo 5: Escrever um algoritmo que gere e imprima o fatorial de 5.

DECLARE I , S COMO INTEIRO


S 1
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
S 1 ENTRADA DE DADOS
PARA I 1 AT N FAA 5
S S*I
FIM-FAA Observe: que o valor de N est sendo lido e
usado
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

Valor de S que ser impresso 120

4.3.1 EXERCCIOS PROPOSTOS

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

DECLARE I, SI, SV, V COMO INTEIROS

SI 0 ENTRADA DE DADOS
SV 0 10
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 ?


b) Em que momentos verdadeira a igualdade SI = SV
c) Para que valores de I verdade que SV mltiplo SI ?

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

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

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


S calculada pela formula :

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

14. Escreva um algoritmo para calcular o valor de X, onde X calculado da seguinte


forma :

X = N! + (N-1)! / 2 + (N-2)!/ 3 + (N-3)!/4 + ... + 1 / N

15. Calcular e imprimir a srie

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

17. Dada a srie: 2 3 4 9 16 29 54 99 .

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

18. Dada a srie: -2 0 6 8 14 16 22 24 30 32 .

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

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

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


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

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

, usando os 20 primeiros termos da srie.

21. Calcular e imprimir a srie :

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

Suponha que se deseja escrever um algoritmo para ler valores e escrev-los.

Quantos valores sero lidos ? Existe algum valor para processar ?

DECLARE A COMO INTEIRO ENTRADA DE DADOS


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

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

ENQUANTO <condio> FAA


<sequncia de passos>
FIM-ENQUANTO

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


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

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


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

Ao criar estruturas de repetio enquanto:

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
Como o nmero de dados depositados na entrada de dados ignorado, utilizamos
um expediente para contornar essa situao. Adicionamos um dado especial ( flag ) que
indicar o final dos dados. Embora a quantidade de dados seja ignorada, podemos agora
afirmar que o ltimo o flag. O flag um dado que no ser processado, ele s indica
que os dados terminaram. O flag normalmente constitudo de valores inconsistentes ou
valores assumidos por deciso do programador. Por exemplo:

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

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

ENTRADA DE DADOS
17
34
1
23
78 FLAG
.
.
.
0

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


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

68
ENTRADA DE DADOS
17
34
1
0 Valor
23 colocado
78 erradamente
.
.
. FLAG
0

Apenas os valores 17, 34 e 1 sero processados

Vimos anteriormente que para criar estruturas de repetio enquanto, o


programador deve ter sua ateno voltada para os seguintes aspectos:

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.

Isso devido a forma como a repetio funciona.

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

Etapas para construo do algoritmo:


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

DECLARE A COMO INTEIRO

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 )

entrada de dados: 17 LEIA A


34
1
23
78
.
.
.
42
0

NOME TIPO VALOR


A INTEIRO 17

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

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

ESCREVA O VALOR LIDO = , A

NOME TIPO VALOR


A INTEIRO 78

O VALOR LIDO = 17

LEIA A

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


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

entrada de dados: 34 LEIA A


1
23
78
.
.
.
42
0

NOME TIPO VALOR


A INTEIRO 34

FIM-ENQUANTO retorna ao passo ENQUANTO A # 0 FAA

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


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

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

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

Assim, a repetio ser executada ...

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


com o valor 42, penltimo valor lido).

FIM-ENQUANTO retorna ao passo ENQUANTO A # 0 FAA

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


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

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

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


diferente de zero)

NOME TIPO VALOR


A INTEIRO 42

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

O VALOR LIDO = 42

LEIA A

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


loop dentro dele)

72
entrada de dados: 0 LEIA A

FIM-ENQUANTO retorna ao passo ENQUANTO A # 0 FAA

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


condio falsa.
A repetio finalizada.

4.3.1 Exerccios Propostos

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

DECLARE S, A COMO INTEIROS ENTRADA DE DADOS


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 ?

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


valores na entrada de dados.

3) Um vendedor necessita de um algoritmo que calcule o preo total devido por um


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

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

Analisando a repetio do algoritmo anterior :

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.

Assim a repetio PARA I 1 AT 10 PASSO 2 FAA pode ser interpretada como:

comeando em 1 e enquanto o valor a varivel de controle for menor ou igual que


10 execute o corpo da repetio e em seguida incremente de 2 a varivel de
controle.

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


h leitura de dados. Porm, a regra apresentada anteriormente:

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.

respeitada.

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

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.

2. Considerando a igualdade

Soma = 13 + 23 + 33 + ...+ N3
Fazer um algoritmo para ler um valor X inteiro, positivo e maior que zero e obter o menor
valor de N que satisfaa a relao SOMA > X.

3. Chico tem 1,50 metro e cresce 2 centmetros por ano, enquanto Z tem 1,10 metro e
cresce 3 centmetros por ano. Construa um algoritmo que calcule e imprima quantos
anos sero necessrios para que Z seja maior que Chico.

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
pelo menos uma vez. Indicada para tratar entrada de dados (via teclado).

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.

Exemplo: Aluno Nome


Filiao
Endereo
Matrcula

As caractersticas de uma classe de entidade podem assumir valores que


denominamos de valor de atributo.

Exemplo: Aluno Nome - Maria


Filiao - Pedro e Ana
Endereo - Rua Pres. Vargas, 15
Matrcula - 1509

Considerando a classe de entidade empregados de uma empresa pode-se


visualizar o seguinte:

Empregados = { Joo, Carlos, Maria, Pedro, Ana, ... }

Empregado = { Carlos }

Atributos = { Nome, Departamento, Idade, Cargo, Tempo de Servio }

Valores de Atributo = { Carlos, Computao, 30, Programador, 5 }

A perfeita individualizao de uma entidade feita pela justaposio de um


conjunto de pares < atributos - valores de atributo > que recebe o nome de registro.

Registro = {{nome, Carlos}, {Departamento, 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
chamados de campos do registro.

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

DECLARE NOME, SEXO CARACTER


DECLARE IDADE COMO INTEIRO
LEIA NOME, SEXO, IDADE
ESCREVA NOME, SEXO, IDADE

2. Escreva um algoritmo que leia um arquivo contendo o nome, sexo, idade de vrias
pessoas e escreva os dados lidos. O total de registro igual a 100.

DECLARE NOME, SEXO CARACTER


DECLARE IDADE, I COMO INTEIRO
PARA I 1 AT 100 FAA
LEIA NOME, SEXO, IDADE
ESCREVA NOME, SEXO, IDADE
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


DECLARE IDADE COMO INTEIRO
LEIA NOME, SEXO, IDADE
ENQUANTO (NOT EOF) FAA
ESCREVA NOME, SEXO, IDADE
LEIA NOME, SEXO, IDADE
FIM-ENQUANTO

4. Escreva um algoritmo que leia um arquivo contendo o nome, sexo, idade de vrias
pessoas e escreva os dados lidos das pessoas de sexo feminino.

DECLARE NOME, SEXO CARACTER


DECLARE IDADE COMO INTEIRO
LEIA NOME, SEXO, IDADE
ENQUANTO (NOT EOF) FAA
SE (SEXO = 'F') ENTO
ESCREVA NOME, SEXO, IDADE
FIM-SE
LEIA NOME, SEXO, IDADE
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


DECLARE IDADE, TOTALMULHER COMO INTEIRO
LEIA NOME, SEXO, IDADE
TOTALMULHER 0
ENQUANTO (NOT EOF) FAA
SE (SEXO = 'F') ENTO
TOTALMULHER TOTALMULHER + 1
FIM-SE
LEIA NOME, SEXO, IDADE
FIM-ENQUANTO
ESCREVA 'TOTAL DE MULHERES =', TOTALMULHER

6. Escrever um algoritmo que leia um arquivo contendo o nome, sexo, idade e o total de
horas trabalhadas de vrias pessoas. Considerando que a hora de trabalho custa R$
3,45 calcule e escreva o salrio bruto de cada pessoa.

DECLARE NOME, SEXO CARACTER


DECLARE IDADE, TOTALMULHER COMO INTEIRO
DECLARE TOTALH, SALBRUTO COMO REAL
LEIA NOME, SEXO, IDADE
ENQUANTO (NOT EOF) FAA
SALBRUTO TOTH * 3.45
ESCREVA SALBRUTO
LEIA NOME, SEXO, IDADE
FIM-ENQUANTO

7. Fazer um algoritmo que leia o sexo e a idade de vrias pessoas. Escreva o total de
homens menor de idade e o total de mulheres maior de idade.

DECLARE SEXO CARACTER


DECLARE IDADE, HMENOR, MMAIOR INTEIRO
HMENOR -1
MMAIOR -1
LEIA SEXO, IDADE
ENQUANTO (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
LEIA SEXO, IDADE
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

5.2 Exerccios Propostos

1. Escreva um algoritmo que leia uma sequncia de valores inteiros positivos e :

a) imprima todos os nmeros;


b) imprima o maior e o menor valor;
c) imprima os valores primos, pares e impares;

2. Escreva um algoritmo que leia uma 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.

3. Dado uma sequncia de dados (nome, salrio, idade, sexo) dos funcionrios de uma
firma, escreva um algoritmo para:

a) imprimir os nomes das pessoas;


b) imprimir o total de homens e o total de mulheres;
c) imprimir o maior salrio;
d) imprimir a menor idade;
e) para os salrios menores que R$ 5.000,00 imprima esses salrios acrescidos de
20%.

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,


cada um formado pelo nmero de um aluno e suas 3 notas. Calcular, para cada
aluno, a mdia ponderada com pesos respectivos de 4 para a maior nota e 3 paras as
outras duas. Escrever o nmero do aluno, suas 3 notas, a mdia calculada e uma
mensagem "aprovado" se nota >= 5 ou "reprovado" para nota < 5.

6. Escrever um algoritmo que l o nmero de um funcionrio, seu nmero de horas


trabalhadas, o valor que recebe por hora, e o nmero de filhos com idade menor do
que 14 anos, o valor do salrio famlia por filho e calcula o salrio deste funcionrio.

7. Uma revendedora de carros usados, paga a seus funcionrios vendedores, um salrio


fixo por ms, mais uma comisso tambm fixa para cada carro vendido e mais 5%
do valor das vendas por ele efetuadas. Escrever um algoritmo que l o nmero do
vendedor, o nmero de carros por ele vendidos, o valor tota1 de suas vendas, o
salrio fixo e o valor que recebe por carro vendido e calcula o salrio mensal do
vendedor, escrevendo-o juntamente com o seu nmero de identificao.

8. Escrever um algoritmo que l o nmero de um vendedor de uma empresa, seu salrio


fixo e o total de vendas por ele efetuadas. Cada vendedor recebe um salrio fixo, mais
uma comisso proporcional s vendas por ele efetuadas. A comisso de 3% sobre o
total de vendas at $ 1.000,00 e 5% sobre o que ultrapassa este valor. Escrever o
nmero do vendedor, o total de suas vendas, seu salrio fixo e seu salrio total.

9. Escrever um algoritmo que l 5 conjuntos de 2 valores, o primeiro representando o


nmero de um aluno e o segundo representando a sua altura em centmetros.
Encontrar o aluno mais alto e o mais baixo e escrever seus nmeros, suas alturas e
uma mensagem dizendo se o mais alto ou o mais baixo.

10. Fazer um programa que leia um conjunto de dados contendo a matrcula, as trs
notas e a 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.

13. Numa fbrica trabalham homens e mulheres divididos em trs classes :

A - os que fazem at trinta peas por ms;


B - os que fazem de 31 a 35 peas por ms;
C - os que fazem mais de 35 peas por ms.

A classe A recebe salrio mnimo. A classe B recebe salrio mnimo e mais 3% do salrio
mnimo por pea, acima das 30 iniciais. A classe C recebe salrio mnimo e mais 5% do
salrio mnimo por pea acima das 30 iniciais. Fazer um programa que :

Leia um conjunto de dados com :


o nmero de operrios;
o nmero de peas fabricadas por ms;
o sexo do operrio;

Considere o nmero de operrios sendo zero como flag de entrada.


Calcular e imprimir :
o nmero e o salrio de cada operrio;
o total da folha de pagamento mensal;
o nmero total de peas fabricadas por ms;
a mdia de peas fabricadas pelos homens em cada classe;
a mdia de peas fabricadas pelas mulheres em cada classe;
o nmero do operrio(a) de maior salrio (supor no haver empate).

14. Existem 3 candidatos a uma vaga no Senado. Feita a eleio os votos so colocados
em um arquivo, formando uma sequncia de valores. O voto de cada eleitor foi
codificado da seguinte forma :

1 - voto para o candidato 1


2 - voto para o candidato 2
3 - voto para o candidato 3
4 - voto em branco
5 - voto nulo.

Deseja-se saber : a) o candidato vencedor;


b) o nmero de votos em branco;
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
escrevendo sempre os valores lidos e uma mensagem adequada:

Se a > b + c no formam tringulo algum.


Se a2 = b2 + c2 formam um tringulo retngulo.
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
Calcular o adicional conforme especificado:
Se idade superior a 40 anos ADIC = 2% do SB
Se tempo de servio superior a 15 anos ADIC = 3.5% do SB
Se tempo de servio < 15 anos, mas superior a 5 anos e idade maior do que 30
anos ento ADIC = 1,5% do SB.

Calcular o salrio lquido. Escrever o nmero do funcionrio, salrio bruta, total


dos descontos, adicional e salrio lquido.

19. Escrever um algoritmo que l o nmero de identificao e as 3 notas obtidas por um


aluno nas 3 verificaes e a mdia dos exerccios que fazem parte da avaliao. Para
cada aluno, calcular a mdia de aproveitamento, usando a frmula:

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

A atribuio de conceitos obedece tabela abaixo:

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.
Alm disso, cada varivel apresentada at agora tm a capacidade de armazenar apenas
um valor a cada vez. O vetor ou agregado homogneo uma estrutura de dados, capaz
de armazenar vrios valores ao mesmo tempo e de mesmo tipo. Os vetores podem ser
unidimensionais ou multidimensionais (matrizes, tabelas.).

6.1 Declarao De Vetores

Em pseudocdigo as declaraes podem ser representadas como:

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

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


<tamanho> = define quantos valores sero armazenados.

Exemplo: DECLARE A(10) COMO INTEIRO

NOME TIPO VALOR


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
deve ser maior ou igual a 1 e menor ou igual que a quantidade declarada, colocada
entre os parnteses. O comando de atribuio, j estudado, pode ser utilizado para a
atribuio de valores no vetor.

Por exemplo:
Vetor

ndice
Valor

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

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

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
uma operao errada, por exemplo:

A(4) A(5) - 32 ( o componente A(5) no possui valor, logo a operao est


incorreta)

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

6.2.1 Colocando valores no vetor atravs de leitura

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


leitura.

ENTRADA DE DADOS: 32 LEIA A(15)

NOME TIPO VALOR


VETOR 10
A INTEIRO 32

86
6.2.2 Colocando todos os valores no vetor atravs de leitura

DECLARE A(5), I COMO INTEIRO


LEIA A(1) ENTRADA DE DADOS
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

1. Escreva um algoritmo para ler 50 valores inteiros e imprimi-los acompanhados de sua


mdia aritmtica.

DECLARE A(50), I, SOMA COMO INTEIRO


DECLARE MEDIA COMO REAL
LEIA A(I), I = 1,50,1
SOMA 0
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.
15. Uma locadora de vdeos tem guardado, em um vetor de 500 posies, a quantidade
de filmes retirados por seus clientes durante o ano. Agora, esta locadora est fazendo
uma promoo e, para cada 10 filmes retirados, o cliente tem direito a uma locao grtis.
Faa um algoritmo que crie um outro vetor contendo a quantidade de locaes gratuitas a
que cada cliente tem direito.

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.

< identificador > = nome do identificador


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

Exemplo: DECLARE A(3,10) COMO INTEIRO

NOME TIPO VALOR


MATRIZ
A INTEIRA

Posio 2,5

Posio 1,1 Posio 1,2 Posio 1,10

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
declarada ( colocada entre os parnteses). O comando de atribuio, j estudado, pode
ser utilizado para a atribuio de valores no vetor.

Por exemplo:

DECLARE A(3,10) COMO INTEIRO

Matriz

ndice referente a linha da matriz

Valor

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


e o valor 12, o valor a ser alocado)

ndice referente a coluna da matriz

NOME 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
uma operao errada, por exemplo:

A(6,1) A(1,5) - 32 ( o componente A(6,1) no existe logo a operao est


incorreta)

7.2.1 Colocando valores no vetor atravs de leitura

Alm da atribuio possvel colocar os valores na matriz atravs da operao de leitura.

DECLARE A(3,3) COMO INTEIRO

ENTRADA DE DADOS: 32 LEIA A(2,2)

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

DECLARE A(3,3) COMO INTEIRO ENTRADA DE DADOS


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

B) Os valores organizados por linha (Forma Matricial: Forma Recomendada)

DECLARE A(3,3) COMO INTEIRO ENTRADA DE DADOS


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

B) Os valores organizados por linha (Forma Matricial: Forma Recomendada)

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
acompanhados de sua mdia aritmtica.

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.
Escreva a matriz assim modificada.
7. Faa um algoritmo que leia uma matriz 20x15 de inteiros. Calcule e mostre a soma das
linhas pares da matriz.
8. Faa um algoritmo que leia uma matriz 20x20 de reais e some cada uma das linhas,
armazenando o resultado da soma em um vetor. A seguir, multiplique cada elemento
pela soma da sua linha. Mostre a matriz resultante.

9. Faa um algoritmo que leia uma matriz 50x50 de nmeros reais e encontre o maior
valor da matriz.

10. Faa um algoritmo que leia uma matriz 50x50 de nmeros reais e encontre o maior
valor da matriz. A seguir, multiplique cada elemento da diagonal principal pelo maior
valor. Mostre a matriz aps as multiplicaes

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
obteno dos mesmos resultados. Cada uma dessas unidades ser denominada de
subprograma.

A modularizao permite a obteno de algumas vantagens:

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.

Dois princpios bsicos para a decomposio de um programa em subprogramas:

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
LeituraMatriz (B) responsabilidade de ler e escrever cada
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
XY Trecho voltado para permuta
Y AUX
FIM- SUBROTINA

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


TrocaInteiro (A,B)
TrocaInteiro (C,D) Chamadas das rotinas
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,
constantes ou valores declarados no algoritmo ou procedimento chamador.

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
sero utilizadas para vrios algoritmos diferentes boa norma ter-se os identificadores
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-
o ordenado em ordem crescente.

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
pelo maior encontrado. O vetor deve retornar alterado.

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 >

< corpo da Funo >

RETORNA
FIM- FUNCO

Exemplo: Escrever um algoritmo para calcular a expresso abaixo:

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

S FATN / ( FATNP - FAT P )


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

Chamadas da Funo fatorial com seus respectivos argumentos (N, P, N-P)

Funes devem ser usadas quando:

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.

17. Faa uma funo que recebe a idade de um nadador por parmetro e retorna,
tambm por parmetro, a categoria desse nadador de acordo com a tabela abaixo:

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

Vous aimerez peut-être aussi