Você está na página 1de 42

Apostila

de
Construo de
Algoritmo
Faculdade de Engenharia e Arquitetura e Tecnologia UNIMAR Marlia - SP..

Tutorial de Algoritmo:
Uma ferramenta para o aprendizado de Lgica de Programao

1. Introduo
1.1 Noes de Lgica
Lgica a arte de pensar corretamente. A lgica estuda a correo do raciocnio.
Exemplos:
a)

So Paulo um estado do Brasil.


Marlia uma cidade do estado de So Paulo.
Portanto, Marlia est localizada no Brasil.

b)

A gaveta est fechada.


A caneta est dentro da gaveta.
Precisamos primeiro abrir a gaveta para depois pegar a caneta.

1.1.1 Lgica de Programao


Lgica da Programao significa o uso correto das leis do pensamento, da ordem da razo e
de processos de raciocnio e simbolizao formais na programao de computadores, objetivando
racionalidade e o desenvolvimento de tcnicas que cooperem para a produo de solues logicamente
vlidas e coerentes, que resolvam com qualidade os problemas que se deseja programar. [FOR00]
1.1.2 O que um Algoritmo?
Um algoritmo pode ser definido como uma seqncia de passos que visam atingir um objetivo
bem definido.
Apesar do nome pouco usual, algoritmos so comuns em nosso cotidiano, como, por exemplo,
uma receita de bolo. Nela est descrita uma srie de ingredientes necessrios e uma seqncia de
diversos passos (aes) que devem ser fielmente cumpridos para que se consiga fazer o alimento
desejado, conforme se esperava antes do incio das atividades (objetivo bem definido). [FOR00]

Faculdade de Engenharia e Arquitetura e Tecnologia UNIMAR Marlia - SP..

1.2 Algoritmizando a Lgica


Um algoritmo tem por objetivo representar mais fielmente o raciocnio envolvido na Lgica
de Programao e, dessa forma, permite-nos abstrair de uma srie de detalhes computacionais,
que podem ser acrescentados mais tarde.
Outra importncia da construo de algoritmos que, uma vez concebida uma soluo
algortmica para um problema, esta pode ser traduzida para qualquer linguagem de programao e ser
agregada das funcionalidades disponveis nos diversos ambientes; costumamos denominar esse
processo de codificao.
1.2.1 Mtodo para Construo de Algoritmos
a)
b)
c)
d)

Ler atentamente o enunciado.


Retirar do enunciado a relao das entradas de dados.
Retirar do enunciado a relao das sadas de dados.
Determinar o que deve ser feito para transformar as entradas determinadas nas sadas
especificadas.
e) Construir o algoritmo.
f) Executar o algoritmo.
1.2.2 Exemplos
Algoritmo 1.1
pegar uma escada;
posicionar a escada embaixo da lmpada;
buscar uma lmpada nova;
subir na escada;
retirar a lmpada velha;
colocar a lmpada nova.
Algoritmo 1.2
pegar uma escada;
posicionar a escada embaixo da lmapda;
buscar uma lmpada nova;
acionar o interruptor;
se a lmpada no acender, ento
Faculdade de Engenharia e Arquitetura e Tecnologia UNIMAR Marlia - SP..

subir na escada;
retirar a lmpada queimada;
colocar a lmpada nova.
Algoritmo 1.5

acionar o interruptor;
se a lmpada no acender, ento
pegar uma escada;
posicionar a escada embaixo da lmpada;
buscar uma lmpada nova;
acionar o interruptor;
subir na escada;
retirar a lmpada queimada;
colocar uma lmpada nova;
enquanto a lmpada no acender, faa
retirar a lmpada queimada;
colocar um lmpada nova;

1.3 Exerccios que envolvem a Lgica


1.) Os jogadores
Quatro homens se renem diariamente para jogar e conversar. No h dois com cabelos da mesma
cor e que tenham preferncia pelo mesmo jogo. Com as seguintes indicaes dadas, voc
conseguiria completar o quadro associando cor de cabelo e ao jogo preferido de cada um ?
a) Vicente tem cabelos castanhos.
b) O jogador de pquer louro.
c) Algum gosta de jogar domin, mas no o Roberto, pois ele gosta de jogar pquer.
d) Lucas gosta de jogar damas.
e) O jogador de xadrez tem cabelos brancos.
f) Pedro no tem cabelos ruivos.
Vicente

Lucas

Pedro

Roberto

Cabelos:
Jogo:
2.) Amigos do Esporte

Faculdade de Engenharia e Arquitetura e Tecnologia UNIMAR Marlia - SP..

Quatro atletas tornaram-se amigos durante uma competio internacional. So eles: Paul, George,
Lus e um atleta da Rssia. Com base nos dados abaixo, descubra o nome, o esporte e o pas de
cada atleta.
a)
b)
c)
d)
e)
f)

Dimitri no jogava futebol nem praticava atletismo.


O atleta dos EUA praticava basquete.
Lus no era dedicado ginstica nem era norte-americano.
George no era nem do Brasil nem dos EUA.
Paul no jogava futebol nem praticava atletismo.
O atleta da Inglaterra no praticava nem ginstica nem futebol.
Atleta:

Pas:

Esporte:

3.) Os cinco amigos


Um grupo de cinco amigos decidem ir a um Estdio de futebol, mas iro se encontrar l dentro do
Estdio. Para ficar mais fcil de se encontrarem, cada um vai com um bon de uma cor, e uma
camisa de um time diferente, no h dois amigos com a mesma camisa nem com bon da mesma
cor. Baseando nas afirmaes abaixo, descubra quem est com que camisa e qual a cor do bon que
cada um estava usando.
a) Marcos usa bon vermelho.
b) Robson est usando a camisa do Brasil.
c) O garoto que est com a camisa do So Paulo no usa bon amarelo.
d) Quem usa bon verde est com a camisa do Guarani.
e) Victor no usa bon amarelo.
f) Andr usa bon azul e no preto.
g) Victor est com a camisa do Santos.
h) O garoto de bon azul est com a camisa do Cruzeiro.
Nome:

Camisa:

Bon:

Antnio
Robson
Marcos
Victor
Andr

Faculdade de Engenharia e Arquitetura e Tecnologia UNIMAR Marlia - SP..

4.) F-1
O diretor da corrida de F-1 esqueceu qual a ordem de largada da corrida, e necessita saber disso
para informar os jornalistas. Sabendo que so apenas seis pilotos e que cada um pertence a uma
equipe onde as cores dos carros so diferentes, ajude-o a formar a ordem de largada baseando-se
nas seguintes afirmaes:
a) O 1 colocado tem um carro amarelo.
b) Eddie, vai largar na frente da equipe Lola e atrs do carro azul.
c) O carro de Rosset preto.
d) O ltimo colocado est atrs da Lola.
e) Senna est atrs de um carro branco.
f) Se invertessem a ordem, a equipe Tasman ficaria em primeiro.
g) O carro da equipe Brabham vermelho.
h) O carro do 5 colocado preto.
i) Richie o piloto da equipe Lotus.
j) O dono do carro verde Luyendyk.
k) A equipe de Minardi est entre as equipes Lotus e March.
l) Patrese, Rosset, Luyendyk e Eddie no conseguiram ficar em 1 lugar.
Ordem:
1
2
3
4
5
6

Piloto:

Equipe:

Cor do carro:

5.) Um homem precisa atravessar um rio com um barco que possui capacidade apenas para carregar ele
mesmo e mais uma de suas trs cargas, que so: um lobo, um bode e um mao de alfafa. O que o
homem deve fazer para conseguir atravessar o rio sem perder suas cargas?
6.) A Torre de Hani consiste em trs hastes (a b c), uma das quais serve de suporte para trs discos
de tamanhos diferentes (1 2 3), os menores sobre os maiores. Pode-se mover um disco de cada
vez para qualquer haste, contanto que nunca seja colocado um disco maior sobre um menor. O
objetivo transferir os trs discos para outra haste.

Faculdade de Engenharia e Arquitetura e Tecnologia UNIMAR Marlia - SP..

2. Tpicos Preliminares
2.1 Tipos Primitivos
A informao a matria-prima que faz com que seja necessria a existncia dos computadores,
pois eles so capazes de manipular e armazenar grande volume de dados. A cincia que estuda a
informao a Informtica. Aproximando-nos da maneira pela qual o computador manipula as
informaes, vamos dividi-las em quatro tipos primitivos:
2.1.1 Inteiro: toda e qualquer informao numrica que pertena ao conjunto dos nmeros
inteiros relativos.
Exemplos:
Ele tem 18 anos.
A temperatura desta noite foi de -2 graus.
2.1.2 Real: toda e qualquer informao numrica que pertena ao conjunto dos nmeros reais.
Exemplos:
Sua nota 6.5.
O preo deste sapato foi R$ 45.99.
2.1.3 Caractere: toda e qualquer informao composta por um conjunto de caracteres
alfanumricos (letras e dgitos) e/ou por smbolos especiais.
Exemplos:
O cartaz dizia: No Fume.
A placa daquele automvel BHA 3456.
2.1.4 Lgico: toda e qualquer informao que pode apenas assumir duas situaes (falso ou
verdadeiro).
Exemplos:
A porta pode estar aberta ou fechada.
A lmpada pode estar acesa ou apagada.

2.2 Constantes
Uma informao dita constante quando ela no sofre nenhuma variao no decorrer do tempo.
Exemplos:
Teste de Impresso...
1234

Faculdade de Engenharia e Arquitetura e Tecnologia UNIMAR Marlia - SP..

Falso

2.3 Variveis
Uma informao dita varivel quando tem possibilidade de ser alterada em algum instante no
decorrer do tempo.
Exemplos: Cotao do dlar, juros

2.4 Identificadores
atravs dos identificadores que referenciamos (nomeamos) uma varivel, constante e outros
nomes utilizados no programa. A regra bsica para cri-los :
o primeiro caractere obrigatoriamente deve ser uma letra
os demais podem ser qualquer combinao de letras e dgitos
no podem ser utilizados smbolos especiais ( * - + [ } & $ % @ ....). O nico smbolo
permitido o underline ( _ ).
So permitidos 256 caracteres, mas para o compilador apenas 8 so reconhecidos.
EX. X1 , X2, NOME_FUNC, SOMA_1, etc.

2.5 Declarao de Variveis


Nos computadores as variveis so armazenadas em dispositivos eletrnicos chamados de
memria. A diferenciao das vrias variveis so feitas atravs dos identificadores. Portanto,
precisamos definir nomes para especificar esses objetos que podem ser manipulados.
Ex.
inteiro: a, b, c;
real: x1, x2;
lgico: flag;
caractere: rua, cep, nome;
Obs. O ponto e vrgula (;) finaliza uma declarao e, em um mesmo tipo, podem ser declaradas
quantas variveis forem necessrias, separando-as por vrgulas.

2.6 Operadores
Os operadores podem ser aritmticos, relacionais, lgicos e atribuio.
a) aritmticos: representam as operaes bsicas de matemtica ( + - / * ) e ainda DIV
(quociente entre inteiros) e MOD (resto da diviso entre inteiros).

Faculdade de Engenharia e Arquitetura e Tecnologia UNIMAR Marlia - SP..

Ex.

45 + 67 * 4 / 2
10 DIV 3 (resulta em 3)
10 MOD 3 (resulta em 1)
A prioridade dos operadores : primeiro * e / e depois + e - , exceto quando do uso de
parnteses.
Funes Matemticas
Alm das operaes bsicas citadas, podemos usar algumas expresses aritmticas.
Dentre elas:
sen(x) e cos(x)
abs (x) - valor absoluto
int (x) - parte inteira de um nmero real
rnd (x) - sorteia um nmero randmico entre 0 e x
b) relacionais: so utilizados para realizar comparaes entre dois valores.
So eles: = > < <= >= <> (diferente). Sempre retornam falso ou verdadeiro.
Ex.

( a >= 10)
( c <> d )

c) lgicos: so utilizados para combinarem relaes. So eles: e ou no . Tambm retornam


falso ou verdadeiro.
Ex.
A
F
F
V
V
Ex.

( (a > b) e (c > d) )
( (s = 10) ou (x = -15))
B
F
V
F
V

Ae B
F
F
F
V

A
F
F
V
V

B
F
V
F
V

A ou B
F
V
V
V

A
F
V

no A
V
F

Eu vou almoar se tiver macarronada e frango.


Quando eu vou almoar ?
Eu vou almoar se tiver macarronada ou frango.
Quando eu vou almoar ?

Faculdade de Engenharia e Arquitetura e Tecnologia UNIMAR Marlia - SP..

d) atribuio: utilizado para atribuir uma expresso ou valor uma varivel. Ser utilizado o
smbolo .
Ex.

a 10;
b 2 * a + (a / 4)
a a + 1;

2.7 Exerccios
1.) Dos identificadores abaixo, assinale aqueles que esto errados.
a) cod
b) s 1
c) prova2
d) X@
e) 2y
g) P1-P2

h) M&S

i) dados

j) Rg

f) aux

k) nome do cliente

2.) Determine qual o tipo primitivo da informao presente nas sentenas a seguir.
a) A placa "Pare!" tinha 2 furos de bala.
b) Josefina subiu 5 degraus para pegar uma ma boa.
c) Alberta levou 3,5 horas para chegar ao hospital onde concebeu uma garota.
d) Astrogilda pintou em sua camisa: "Preserve o meio ambiente", e ficou devendo R$ 100,59 ao
vendedor de tintas.
e) Felisberto recebeu sua 18a medalha por ter alcanado a marca de 57,3 segundos nos 100
metros rasos.
3.) Determine qual o tipo primitivo das informaes:
a) Pare
b) 2
c) 100.59
d) Preserve o meio ambiente
e) S
a) falso
b) -57.3
c) -5000
d) UNIMAR
e) 0.001
4.) Declare variveis capazes de armazenar seus dados pessoais: nome, endereo, cidade, cep, telefone,
cdula de identidade, data de nascimento.
5.) Nas declaraes de variveis abaixo existe alguns erros, encontre-os:
INTEIRO: a, b, c, ... z;
REAL: preco1, lucro2, taxa%;

Faculdade de Engenharia e Arquitetura e Tecnologia UNIMAR Marlia - SP..

CARACTERE: cliente, nome da cidade, rua;


LGICO: flag, set;
6.) Encontre os erros da seguinte declarao de variveis:
a) inteiro: endereo, nfilhos;
b) caracter: idade, resposta;
c) real: peso, altura, nome;
d) logico: situao;
7.) Supondo que as variveis COD, NOME, SEXO, DEPTO, FUNO, SAL, NDEP, ADIC, VALE,
TIPO, sejam utilizadas para armazenar informaes referentes a um funcionrio de uma empresa, a
saber: cdigo, nome, sexo, departamento em que trabalha, funo que exerce, salrio mensal,
nmero de dependentes, salrio extra, se tem direito a vale transporte e tipo sanguneo, declare-as
corretamente.
8.) Escreva a declarao das seguintes variveis: a sua mdia, a sua nota mxima obtida numa
disciplina, o saldo de sua conta bancria, o ano em que espera acabar o curso. Escolha nomes e
tipos apropriados para as suas variveis.
9.) Supondo A, B e C variveis do tipo inteiro, com valores 5, 10 e -8, e D varivel do tipo real com
valor 1.5, quais os resultados das expresses abaixo:
a) 2 + A * ABS(3) + C =
b) 3 + RQ (2 * ABS(C)) / 2 =
b) QUAD(B -6 * 2) * D + 2 =
c) B MOD 3 + A MOD 2 =
d) 2 * A MOD 3-C =
e) RQ(2*ABS(C)) / 4 =
10.) Determine os resultados (verdadeiro ou falso) obtidos na avaliao das expresses lgicas
seguintes, sabendo que A, B, C, D e E contm respectivamente 2, 7, 3.5, noite e frio e que existe
uma varivel lgica L cujo valor falso:
a) (B = A * C) e L ou verdadeiro
b) (no (dia = D)) ou (frio <> clima)
c) L ou (B DIV A >= C) ou no (A <= C)
d) L e (C >= B DIV A) ou no (A<= C)

Faculdade de Engenharia e Arquitetura e Tecnologia UNIMAR Marlia - SP..

10

3. Comandos Bsicos
3.1 Comandos de Entrada e Sada
Uma entrada ou sada de dados uma interrupo que ocorre, a nvel de hardware, para realizar
alguma tarefa. Assim a entrada de dados a espera pela digitao de uma informao e a sada de
dados a impresso de uma informao. A unidade padro de entrada do computador o teclado e a
unidade padro de sada o monitor. Pode-se dizer que todo algoritmo se reduz a:

entrada

processamento

sada

As linguagens de programao devem possuir funes para que ocorram as entradas e sadas de
dados. Em nossos algoritmos utilizaremos:
Entrada:
leia ( var )
onde: var - lista de variveis (separadas por vrgulas)
Ex.

leia (a);
leia (nome);

Sada:
escreva ( expresso e/ou constante )
Ex.

escreva ( Digite um nmero :);


escreva (5 *6 / 3);

Faculdade de Engenharia e Arquitetura e Tecnologia UNIMAR Marlia - SP..

11

3.2 ESTRUTURA DE UM PROGRAMA


Todo programa constitudo por:
CABEALHO - DECLARAES - PARTE EXECUTVEL
O cabealho deve ser comeado com a palavra PROGRAMA seguido de um identificador.
Ex.

PROGRAMA Exerc_1;

A parte executvel, para que seja estruturada deve ser feita com o auxlio de blocos de
programao. Um bloco constitudo pelas palavras INCIO e FIM.
Ex.
incio

cabealho
inteiro: a,b;

declaraes

escreva ( Digite um nmero :);


leia (a);
b 2 * a;
escreva ( O dobro de , a, = , b );

parte
executvel

fim.

3.3 Exerccios
1.)

Elabore um algoritmo para resolver a expresso: R = 2 * a + 3 * b

2.)

Elabore um algoritmo para resolver a expresso: R = 1 / y

3.) Faa um exerccio para escrever "Hello World!".


4.) Repita o exerccio anterior utilizando variveis.
5.) Repita o exerccio anterior usando constantes.
6.) Escreva um algoritmo que calcule a mdia aritmtica para as seguintes notas: nota 1 = 5.0 , nota 2 =
3.5 e nota 3 = 9.5. Obs. crie as variveis e faa as atribuies necessrias.
7.) Escreva um algoritmo que declare uma varivel como inteiro, inicialize essa varivel com o valor 5,

Faculdade de Engenharia e Arquitetura e Tecnologia UNIMAR Marlia - SP..

12

incremente essa varivel em 10, e atualize o seu valor multiplicando-o pela metade de seu valor
atual.
8.) Escreva um algoritmo que calcule e mostre a quantidade de R$ 0,05, R$ 0,10, R$ 0,25 R$ 0,50 e
R$ 1,00 que seriam necessrias para trocar um cheque no valor de R$ 13.463,00, se este fosse
trocado em cada um dos valores de moedas.
9.) O preo de um produto dado pelo preo de fbrica, ao qual adicionado o lucro do vendedor e os
impostos (aplicados ao custo de fbrica). Escreva um algoritmo que calcule e exiba a o preo de
venda de um produto qualquer (cujo preo de custo fornecido pelo usurio) com uma
percentagem para o vendedor de 12% e impostos de 26,95%.
10.) Refaa o exerccio anterior, permitindo ao usurio alm de fornecer o preo de fbrica, entrar
tambm com a percentagem do vendedor e dos impostos (valores expressos em %).
11.) FAQ calcule a distncia entre dois pontos quaisquer do plano, de coordenadas (x1,y1) para o
primeiro ponto e (x2,y2) para o segundo ponto. A frmula que efetua tal clculo :
distncia = raiz quadrada ((x2-x1) 2 + (y2-y1) 2 )
12.) FAQ calcule a quantidade de latas de tintas necessrias e o custo para pintar tanques cilndricos
de combustvel, em que so fornecidos a altura e o raio desse cilindro; sabendo que
a) a lata de tinta custa R$ 50,00;
b) cada lata contm 5 litros;
c) cada litro de tinta pinta 3 m2.
13.) FAQ troque os valores das variveis A, B, C e D (tipo inteiro - sendo que os valores iniciais
devem ser fornecidos pelo usurio) e mostre o seu resultado, ou seja os valores trocados. A troca
deve ser feita da seguinte forma:
A
B
C
D

14.) FAQ dados o primeiro termo e a razo de uma progresso aritmtica (PA), determine a soma
dos seus 5 primeiros termos e exiba o resultado.
Observe que para o exerccio 2, existe a restrio de que se o valor de y for 0 (zero), no haver
soluo para o problema. Assim, este teste deve ser feito a fim de que no ocorra tal erro. Para que isto
seja possvel, necessrio o controle do fluxo de dados.

Faculdade de Engenharia e Arquitetura e Tecnologia UNIMAR Marlia - SP..

13

4. Estruturas de Seleo
4.1 Estrutura de Seleo (Comando Se)
Uma estrutura de seleo permite a escolha de um grupo de aes (blocos) a ser executado
quando determinadas condies, representadas por expresses lgicas ou relacionais, so ou no
satisfeitas [FOR00].
4.1.1 Seleo Simples
A seleo de um bloco de comandos realizada atravs do comando Se... ento. A sintaxe deste
comando descrita a seguir:
se <condio >
ento
C;
fimse;

// comando nico

<condio> uma expresso lgica que, quando inspecionada, pode gerar um resultado falso ou
verdadeiro. Se a <condio> for verdadeira, a ao sob a clusula ento (C) ser executada; caso
contrrio (<condio> for falsa), encerra-se a seleo (fimse), neste caso, sem executar nenhum
comando.
Quando precisamos colocar diversas aes necessrio usar um bloco, delimitado por incio
fim, conforme o modelo a seguir:
se <condio >
ento
incio

// incio do bloco verdade


C1;
C2;
.
.
Cn;

fim;

// seqncia de comandos

// fim do bloco verdade

Faculdade de Engenharia e Arquitetura e Tecnologia UNIMAR Marlia - SP..

14

fimse;
Exemplo: Mdia aritmtica com aprovao.
incio
// declarao de variveis
real: n1, n2, n3, n4, ma;
escreva ('Fornea as 4 notas bimestrais');
leia (n1, n2, n3, n4);
ma (n1 + n2 + n3 + n4) / 4;
escreva ('A mdia ', ma);
se (ma >= 7)
ento
escreva ('Aluno aprovado!!');
fimse;
fim.
4.1.2 Seleo Composta
Quando tivermos situaes em que duas alternativas dependem de uma mesma condio, uma
da condio ser verdadeira e outra da condio ser falsa, usamos a estrutura seleo composta. A
seleo composta de um bloco de comandos realizada atravs do comando Se... ento ... seno. A
sintaxe deste comando descrita a seguir:
se <condio >
ento
Cv;
seno
Cf;
fimse;

// comando verdade
// comando falso

Este comando deve ser interpretado da seguinte forma: Se a <condio> for verdadeira
(comparao entre valores - operao relacional) executa-se o <bloco de comandos> pertencente ao
ENTO, caso a <condio> seja falsa, executa-se o <bloco de comandos> pertencente ao SENO.
Observamos que tambm deveremos usar um bloco quando precisamos colocar diversas aes
tanto para o ento como para o seno, conforme o modelo a seguir:

Faculdade de Engenharia e Arquitetura e Tecnologia UNIMAR Marlia - SP..

15

se <condio >
ento
incio

// incio do bloco verdade


C1;
C2;
.
.
Cn;

fim;

// seqncia de comandos

// fim do bloco verdade

seno
incio

// incio do bloco falso


C1;
C2;
.
.
Cn;

fim;

// seqncia de comandos

// fim do bloco falso

fimse;
Exemplo: Mdia aritmtica com aprovao e reprovao.
incio
// declarao de variveis
real: n1, n2, n3, n4, ma;
escreva ('Fornea as 4 notas bimestrais');
leia (n1, n2, n3, n4);
ma (n1 + n2 + n3 + n4) / 4;
escreva ('A mdia ', ma);
se (ma >= 7)
ento
escreva ('Aluno aprovado!!');
seno
escreva ('Aluno reprovado!!');
fimse;
fim.
4.1.2 Seleo Encadeada

Faculdade de Engenharia e Arquitetura e Tecnologia UNIMAR Marlia - SP..

16

Quando, devido necessidade de processamento, agruparmos vrias selees, formaremos uma


seleo encadeada. Normalmente, tal formao ocorre quando determinada ao ou bloco deve ser
executado se um grande conjunto de possibilidades ou combinaes de situaes for satisfeito
[FOR00].
O modelo a seguir expressa um exemplo de seleo encadeada:
se <condio 1 >
ento
se <condio 2>
ento
incio

// incio do bloco verdade 1


C1;
C2;
.
.
Cn;

fim;

// seqncia de comandos

// fim do bloco verdade 1

fimse;
seno
se <condio 3>
ento
incio

// incio do bloco falso 2


C1;
C2;
.
.
Cn;

fim;

// seqncia de comandos

// fim do bloco falso 2

seno
se <condio 4>
ento
Cv;
seno
Cf;
fimse;
fimse;
fimse;

Faculdade de Engenharia e Arquitetura e Tecnologia UNIMAR Marlia - SP..

17

Exemplo: Algoritmo para determinar o maior dentre 3 valores (a, b, c) lidos pelo teclado.
incio
inteiro: a, b, c, maior;
escreva (digite o valor de a:);
leia(a);
escreva (digite o valor de b:);
leia(b);
escreva (digite o valor de c:);
leia(c);
se ( (a > b) e (a > c) ) ento
maior a
seno
se ( b > c) ento
maior b
seno
maior c;
fimse;
escreva ( o maior valor dentre os lidos =, maior);
fim.

4.2 Estrutura de Seleo (Mltipla Escolha)


Quando um conjunto de valores discretos precisa ser testado e aes diferentes so associadas a
esses valores, estamos diante de uma seleo encadeada homognea do tipo se ento se. Como esta
situao bastante freqente na construo de algoritmos que dependem de alternativas, utilizaremos
uma estrutura especfica para estes caso, a seleo de mltipla escolha [FOR00].
O sintaxe utilizada para esta estrutura a seguinte:
escolha x

Faculdade de Engenharia e Arquitetura e Tecnologia UNIMAR Marlia - SP..

18

caso V1: C1;


caso V2: C2;
caso V3: C3;
caso V4: C4;
caso contrrio: C5;
fimescolha;

Caso o contedo da varivel X seja igual ao valor Vn, ento o comando Cn ser executado; caso
contrrio, sero inspecionados os outros casos at ser encontrada uma igualdade ou terminarem os
casos, executando assim a clusula caso contrrio. Esta clusula pode ser omitida. O valor atribudo
Vn, pode tambm ser um intervalo, como no exemplo:
escolha x
caso V1:
C1;
caso V2, V3: C2;
caso V4..V6: C3;
caso V7:
C4;
caso contrrio: C5;
fimescolha;

4.3 Exerccios
1.)

Elabore um algoritmo que leia um nmero inteiro e determine se ele par ou mpar.

2.)

Elabore um algoritmo que leia e lados de um tringulo ( a, b, c), verifique se as medidas podem
ser tringulo ( a < b + c, b < a + c e c < a + b). Se for tringulo, determinar se equiltero,
issceles ou escaleno.

3.)

Elabore um algoritmo para resolver uma equao do 2 grau dada por : ax 2 + bx + c = 0. Efetuar
as entradas (valores de a, b e c). Calcular as razes utilizando a frmula:
X = - b

4.)

b2 - 4.a.c
2.a

Elabore um algoritmo leia a idade de um nadador e imprima a categoria que ele pertence:
idade < 8 anos - infantil A
idade >=8 e < 13 - infantil B

Faculdade de Engenharia e Arquitetura e Tecnologia UNIMAR Marlia - SP..

19

idade >=13 e < 18 - juvenil A


idade >=18 e < 21 - juvenil B
idade >= 21 snior
5.) FAQ tendo como dados de entrada o nome, a altura e o sexo (M ou F) de uma pessoa, calcule e
mostre seu peso ideal, utilizando as seguintes frmulas:
para sexo masculino peso ideal = (72.7*altura) - 58
para sexo feminino peso ideal = (62.1*altura) - 44.7
6.) Sejam: nmero da conta do cliente, saldo anterior, dbito e crdito, elabore um algoritmo que
calcule e mostre saldo atual = saldo anterior - dbito + crdito. Se saldo atual for maior ou igual a
zero mostre a mensagem: Saldo Positivo, seno a mensagem Saldo Negativo.
7.) Sejam trs nmeros inteiros diferentes digitados pelo usurio, coloque-os em ordem crescente.
8.) Dado um caracter qualquer digitado pelo usurio, verificar e escrever se uma vogal (a, e, i, o, u).
9.) Seja o seguinte algoritmo:
incio
inteiro: x,y,z;
caracter: resposta;
escreva ('Fornea dois valores');
leia (x,y);
z x*y - 5;
se z <= 0
ento resposta A;
seno se z <= 100
ento resposta B;
seno resposta C;
fimse;
fimse;
escreva (z, resposta);
fim.
Faa um teste de mesa e complete o quadro a seguir para os seguintes valores:
x

resposta

Faculdade de Engenharia e Arquitetura e Tecnologia UNIMAR Marlia - SP..

20

10.)

150

-1

-2

50

Seja o seguinte algoritmo:


inicio
inteiro: a, b, c;
caracter: mens;
{preparar tela}
leia (a);
leia (b);
leia (c);
se (a<b+c) e (b<a+c) e (c<a+b)
ento se (a=b) e (b=c)
ento mens Tringulo Equiltero;
seno se (a=b) ou (b=c) ou (a=c)
ento mens Tringulo Issceles;
seno mens Tringulo Escaleno;
fimse;
fimse;
seno mens No e possvel formar um tringulo;
fimse;
escreva (mens);
fim.
Faa um teste de mesa e complete o quadro a seguir para os seguintes valores:
a

Mensagem

Faculdade de Engenharia e Arquitetura e Tecnologia UNIMAR Marlia - SP..

21

11.) FAQ calcule e escreva os valores das razes de uma equao do 2 grau (ax2 + bx + c), levando
em considerao a existncia de razes reais, sendo que o usurio deve fornecer os valores dos
coeficientes a, b e c.
12.)

Determinar e mostrar o valor de z, sendo x e y fornecidos pelo usurio, sabendo-se que:


se x>0 e y>0 ento z = x+y;
se x>0 ou y>0 ento z =

2x y
;
2

3x

se x=y ento z = y
se nenhuma das situaes ocorrer ento z=0.

Obs: No possvel dividir por zero. Caso isto ocorra escrever uma mensagem.
13.) Dados: a descrio do produto, a quantidade adquirida e o preo unitrio, calcular e escrever o
total (total = quantidade adquirida x preo unitrio), o desconto e o total a pagar (total a pagar =
total - desconto), sabendo-se que:
se quantidade <= 5 o desconto ser de 2%
se quantidade > 5 e quantidade <=10 o desconto ser de 3%
se quantidade > 10 o desconto ser de 5%

Faculdade de Engenharia e Arquitetura e Tecnologia UNIMAR Marlia - SP..

22

14.) Sejam quantidade em estoque, quantidade mxima em estoque e quantidade mnima em estoque
de um produto, calcular e exibir a quantidade mdia = (quantidade mxima + quantidade
mnima)/2. Se a quantidade em estoque for maior ou igual a quantidade mdia exibir a mensagem
'No efetuar compra', seno exibir 'Efetuar compra'.

Faculdade de Engenharia e Arquitetura e Tecnologia UNIMAR Marlia - SP..

23

5. Estruturas de Repetio
5.1 Estrutura de Repetio
A repetio de um bloco de comandos (loop) uma prtica muito freqente em programao.
Ela pode ser realizada de diversas formas, dentre elas: enquanto .... faa; repita .... at e para ...
variando ... de ... at .... faa. Cada estrutura tem sua sintaxe e em alguns casos umas so mais
requisitadas que outras, porm varia de programador para programador a forma de utiliz-las.
A estrutura de repetio permite que uma seqncia de comandos seja executada repetidamente
at que uma determinada condio de interrupo seja satisfeita.
5.1.1 Repetio com Varivel de Controle
Para realizar a repetio com varivel de controle, utilizamos a estrutura para, que repete a
execuo de um bloco ou uma ao um nmero definido de vezes, pois ela possui limites fixos. O
modelo genrico para a estrutura de repetio para o seguinte:
para <var> = <valor_inicial> at <valor_final> passo p faa
bloco de comandos
fimpara;
Deve ser interpretado da seguinte forma: Para <var> (varivel contadora) variando de
<valor_incial> at <valor_final> (de p em p) executa-se o bloco de comandos. Quando o passo for
igual a 1, pode-se omitir a clusula passo da sintaxe.
Ex. Algoritmo para somar os nmeros de 1 a 100, utilizando a estrutura para.
incio
i, s: inteiro;
s 0;
para i = 1 at 100 faa
s s + i;
fimpara;
escreva ( A soma =, s);

Faculdade de Engenharia e Arquitetura e Tecnologia UNIMAR Marlia - SP..

24

fim.
5.1.2 Repetio com Teste no Incio
Consiste em uma estrutura de controle do fluxo de execuo que permite repetir diversas vezes
um mesmo trecho do algoritmo, porm, sempre verificando antes de cada execuo se "permitido"
executar o mesmo trecho [FOR00].
Para realizar a repetio com teste no incio, utilizamos a estrutura enquanto, que permite que
um bloco ou uma ao seja repetida enquanto uma condio determinada <condio> for verdadeira
[FOR00]. O modelo genrico desta estrutura o seguinte:
enquanto ( <condio> ) faa
bloco de comandos;
fimenquanto;
A interpretao deve ser: enquanto <condio> for verdadeira executa-se o bloco de comandos.
Quando a <condio> for falsa encerra-se o lao de repetio.
Ex. Algoritmo para somar os nmeros de 1 a 100, utilizando a estrutura enquanto.
incio
i, s: inteiro;
s 0;
i 1;
enquanto (i <=100) faa
s s + i;
i i + 1;
fimenquanto;
escreva ( A soma =, s);
fim.
5.1.2 Repetio com Teste no Final
Para realizar a repetio com teste no final, utilizamos a estrutura repita, que permite que um
bloco ou uma ao seja repetido at que uma determinada condio seja verdadeira [FOR00]. O
modelo genrico deste tipo de repetio o seguinte:
repita
bloco de comandos;
Faculdade de Engenharia e Arquitetura e Tecnologia UNIMAR Marlia - SP..

25

at ( <condio> );
Deve ser interpretado da seguinte forma: Repita o bloco de comandos at que a <condio> seja
verdadeira.
Ex. Algoritmo para somar os nmeros de 1 a 100, utilizando a estrutura repitat.
incio
i, s: inteiro;
s 0;
i 1;
repita
s s + i;
i i + 1;
at i > 100;
escreva ( A soma =, s);
fim.

5.1 Exerccios
1.) Construa um algoritmo que verifique se um nmero fornecido pelo usurio primo ou no.
2.) Sendo H = 1 + 1/2 + 1/3 + 1/4 + ... + 1/N, prepare um algoritmo para gerar o nmero H. O nmero
fornecido pelo usurio.
3.) Escreva um algoritmo que leia um conjunto de 20 nmeros inteiros e mostre qual foi o maior e o
menor valor fornecido.
4.) Calcule o imposto de renda de um grupo de 10 contribuintes, considerando que os dados de cada
contribuinte, nmero do CPF, nmero de dependentes e renda mensal so valores fornecidos pelo
usurio. Para cada contribuinte ser feito um desconto de 5% do salrio mnimo por dependente:
Renda Lquida
At 2 salrios mnimos
2 a 3 salrios mnimos
3 a 5 salrios mnimos
5 a 7 salrios mnimos
Acima de 7 salrios mnimos

Alquota
isento
5%
10%
15%
20%

Observe que deve ser fornecido o valor atual do salrio mnimo para que o algoritmo calcule os
valores corretamente.

Faculdade de Engenharia e Arquitetura e Tecnologia UNIMAR Marlia - SP..

26

5.) Foi realizada uma pesquisa sobre algumas caractersticas fsicas da populao de uma certa regio,
a qual coletou os seguintes dados referentes a cada habitante para anlise:
sexo ('M' masculino ou 'F' feminino);
cor dos olhos ('A' azuis, 'V' verdes ou 'C' castanhos);
cor dos cabelos ('L' louros, 'C' castanhos ou 'P' pretos);
idade
Faa um algoritmo que determine e escreva:
a maior idade dos habitantes;
a percentagem de indivduos do sexo feminino cuja idade est entre 18 e 35 anos, inclusive, e
que tenham olhos verdes e cabelos louros.
O final do conjunto de habitantes reconhecido pelo valor 1 entrando como idade.
6.) Anacleto tem 1,50 metro e cresce 2 centrmetros por ano, enquanto Felisberto tem 1,10 metro e
cresce 3 centrmetros por ano. Construa um algoritmo que calcule e imprima quantos anos sero
necessrios para que Felisberto seja maior que Anacleto.
7.) Realizou-se uma pesquisa para determinar o ndice de mortalidade infantil em um certo perodo.
Construa um algoritmo que leia o nmero de crianas nascidas no perodo e, depois, em um nmero
indeterminado de vezes, o sexo de uma criana morta ('M' masculino ou 'F' feminino) e o
nmero de meses de vida da criana.
Como finalizados, teremos a letra 'X' no lugar do sexo da criana.
Determine e imprima:
a porcentagem de crianas mortas no perodo;
a porcentagem de crianas do sexo masculino mortas no perodo;
a porcentagem de crianas que viveram dois anos ou menos no perodo.
8.) Um cinema possui capacidade de 100 lugares e est sempre com ocupao total. Certo dia, cada
espectador respondeu a um questionrio, no qual constava:
sua idade;
sua opinio em relao ao filme, segundo as seguintes notas:
Nota
A
B
C
D
E

Significado
timo
Bom
Regular
Ruim
Pssimo

Faculdade de Engenharia e Arquitetura e Tecnologia UNIMAR Marlia - SP..

27

Elabore um algoritmo que, lendo estes dados, calcule e imprima:


a quantidade de respostas timo;
a diferena percentual entre respostas bom e regular;
a mdia de idade das pessoas que responderam ruim;
a percentagem de respostas pssimo e a maior idade que utilizou esta opo;
a diferena de idade entre a maior idade que respondeu timo e a maior idade de respondeu
ruim.
9.) Em um prdio h trs elevadores denominados A, B, e C. Para otimizar o sistema de controle dos
elevadores, foi realizado um levantamento no qual cada usurio respondia:
o elevador que utilizava com mais freqncia;
o perodo que utilizava o elevador, entre:
'M' = matutino;
'V' = vespertino;
'N' = noturno.
Construa um algoritmo que calcule e imprima:
qual o elevador mais freqentado e em que perodo se concentra o maior fluxo;
qual o perodo mais usado de todos e a que elevador pertence;
qual a diferena percentual entre o mais usado dos horrios e o menos usado;
qual a percentagem sobre o total de servios prestados do elevados de mdia utilizao.

Faculdade de Engenharia e Arquitetura e Tecnologia UNIMAR Marlia - SP..

28

6. Estruturas de Dados
6.1 Variveis Compostas Homogneas
As linguagens de programao de modo geral oferecem recursos adicionais para manusear
dados com uma organizao mais complexa: MATRIZES e REGISTROS.
As estruturas de dados indica como os elementos num conjunto so relacionados uns com os
outros, ou organizados. A matriz talvez, a estrutura de dados mais conhecida, porque est disponvel
em quase todas as linguagens de alto nvel. Uma matriz pode ser classificada como unidimensional (os
chamados VETORES) ou multidimensional ( MATRIZES).
6.1.1 Unidimensionais - Vetores
Um vetor uma estrutura que para acess-lo necessrio a utilizao de ndices. A declarao
realizada atravs da palavra : VETOR.
Vet : VETOR [ 1..50] de inteiros;
Neste exemplo a varivel Vet capaz de armazenar 50 elementos inteiros.
1

10

12

16

48

............................

13

49

50

Declarao:
TIPO VET = VETOR [1..100] DE REAIS;
VET : A;
Nesta declarao A um vetor capaz de armazenar 100 elementos reais.

Faculdade de Engenharia e Arquitetura e Tecnologia UNIMAR Marlia - SP..

29

Exemplos:
1.) Algoritmo para ler um vetor de 200 elementos reais e imprimir a mdia dos elementos
incio
tipo dados = vetor [1..200] de reais;
dados: v;
inteiro : i;
real: s, med;
para i = 1 ate 200 faa
escreva (elemento, i, = );
leia (v[ i ]);
fimpara;
s 0;
para i = 1 ate 200 faa
s s + v [ i ];
fimpara;
med s/200;
escreva ( A mdia dos elementos =, med);
fim.
2.)

Elabore um algoritmo para ler um vetor de 50 elementos inteiros e imprima o maior entre eles.

inicio
tipo vet = vetor [ 1 .. 50 ] de inteiros;
vet: a;
inteiro: i, mv;
para i = 1 ate 50 faa
escreva ( elemento , i , =);
leia (a [ i ] );
fimpara;
mv a[ 1 ];
para i = 2 ate 50 faa
se ( a[ i ] > mv ) ento
mv a[ i ];
fimse;
fimpara;
escreva ( O maior valor = , mv);
fim.

Faculdade de Engenharia e Arquitetura e Tecnologia UNIMAR Marlia - SP..

30

6.1.2 Multidimensionais - Matrizes


Uma matriz dita multidimensional quando necessrio utilizar dois ou mais ndices para
referenciar (acessar) um determinado elemento da estrutura. Veja o esquema:
A
1
2
3
4
5
6

5
23
45
67
52
8

9
13
48
86
94
36

10
11
21
28
79
63

32
89
74
55
63
32

12
94
28
66
42
17

No esquema acima, A uma matriz de duas dimenses com 6 linhas e 5 colunas. A referncia a
um elemento feita com o auxlio de 2 ndices: um para a linha e o outro para a coluna. Veja:
A [ 3,2 ] = 48
A [ 5,4 ] = 63
Declarao
TIPO IDEN = MATRIZ [ 1..10, 1..10 ] DE REAIS;
IDEN : A, B;
Nesta declarao A e B so matrizes com 10 linhas e 10 colunas.
Exemplos
1.) Elabore um algoritmo que leia uma matriz quadrada 5 x 5 e calcule e imprima os elementos da
diagonal principal bem como a soma destes elementos.
inicio
tipo mat = vetor [1..5,1..5] de inteiros;
mat a;
inteiro: i, j, s;
escreva (digite os elementos da matriz :);
para i = 1 ate 5 faa
para j = 1 ate 5 faa
Faculdade de Engenharia e Arquitetura e Tecnologia UNIMAR Marlia - SP..

31

escreva ( linha, i, coluna, j, =);


leia (a [ i, j ];
fimpara;
fimpara;
s 0;
para i 1 ate 5 faa
s s + a [ i, i ];
escreva ( a [ i, i ]);
fimpara;
escreva ( A soma da diagonal =, s);
fim.
2.)

Elabore um algoritmo que leia uma matriz 10 x 5 e calcule e imprima a soma de cada linha.

Incio
tipo mat = matriz [1..10, 1..5] de reais;
mat : m;
real: sl;
inteiro: i, j;
escreva (digite os elementos da matriz :);
para i 1 ate 10 faa
para j 1 ate 5 faa
escreva ( linha, i, coluna, j, =);
leia (m [ i, j ];
fimpara;
fimpara;
para i = 1 ate 10 faa
sl 0;
para j = 1 ate 5 faa
sl sl + m[ i, j ];
fimpara;
escreva (soma da linha, i , = , sl);
fimpara;
fim.

Faculdade de Engenharia e Arquitetura e Tecnologia UNIMAR Marlia - SP..

32

6.2 Variveis Compostas Heterogneas


Os registros so estruturas de dados capazes de armazenar informaes de tipos de dados
diferentes. Assim, possvel combinar em uma nica varivel um conjunto de dados diferentes.
Esquema:
registro
nome

endereo

cidade

cep

fone

idade

A estrutura acima, capaz de armazenar 5 informaes diferentes.


Declarao:
Para declarar uma varivel registro usa-se a diretiva REGISTRO e FIM. Veja o exemplo:
TIPO DADOS

REGISTRO
CARACTERES: nome, endereo, cidade;
CARACTERES: cep, fone;
INTEIRO: idade;
FIM;

DADOS: REG;
Na declarao acima, a varivel REG capaz de armazenar a estrutura utilizada como exemplo. O que
diferencia os campos ou componentes do registro o acesso que realizado atravs do ponto (.).
Ex.
REG.nome, REG.idade, REG.cep, etc..
Como exemplo, vamos ler 50 registros especificados anteriormente e imprimir todos os que possuem
idade > 21 anos.
Incio
tipo dados

= registro
caracteres: nome, endereo, cidade;
caracteres: cep, fone;
inteiro: idade;

Faculdade de Engenharia e Arquitetura e Tecnologia UNIMAR Marlia - SP..

33

fim;
dados: reg;
inteiro : i;
para i = 1 ate 50 faa
escreva ( nome :); leia (reg.nome);
escreva ( endereo :);
leia (reg.endereo);
escreva ( cidade:); leia (reg.cidade);
escreva ( cep:);
leia (reg.cep);
escreva ( fone:);
leia (reg.fone);
escreva ( idade :); leia (reg.idade);
se (reg.idade > 21) entao
incio
escreva ( nome :, reg.nome);
escreva ( endereo :,reg.endereo);
escreva ( cidade:, reg.cidade);
escreva ( cep:, reg.cep);
escreva ( fone:, reg.fone);
escreva ( idade : , reg.idade);
fim;
senao
escreva ( a pessoa menor de idade !);
fimse;
fimpara;
fim.
Exemplos:
1.)

Declare um registro contendo as informaes de alunos: nome, ra, disciplina, n1, n2. Em
seguida leia 60 registros e imprima a quantidade de alunos aprovados e a quantidade de alunos
reprovados, mostrando o nome e a mdia dos aprovados.

Incio
tipo

rec = registro
caracteres: nome, ra, disc;
real: n1, n2;
fim;

rec : a;
inteiro : i qa, qr;
real: med;

Faculdade de Engenharia e Arquitetura e Tecnologia UNIMAR Marlia - SP..

34

qa 0;
qr 0;
para i = 1 ate 60 faa
escreva ( nome :); leia (a.nome);
escreva ( ra: );
leia (a.ra);
escreva ( disciplina :);
leia (a.disc);
escreva ( digite as 2 notas:);
leia (a.n1 , a n2);
med (a.n1 , a n2) / 2;
se ( med >= 7) entao
inicio
qa qa + 1;
escreva ( nome =, a.nome);
escreva ( mdia =, med);
fim;
senao
qr qr + 1;
fimse;
fimpara;
escreva ( Total de aprovados =, qa);
escreva ( Total de reprovados =, qr);
fim.
2.)

Declare um registro contendo informaes de um produto: cdigo, descrio, fornecedor, qtd.


Estoque, etc. Em seguida declare um vetor capaz de armazenar 500 produtos. Elabore um algoritmo
que cadastre os 500 produtos e em seguida efetue baixas no estoque, solicitando a digitao do
cdigo de um produto e se ele existir no vetor, entrar com a quantidade a ser retirada do estoque. Se
esta quantia for maior que a estocada, zerar o estoque e retirar o que tem, caso contrrio atualize o
estoque. Encerrar o programa quando o usurio desejar.

Incio
tipo reg =

registro
inteiro: cod;
caracteres: desc, forn;
real: qtd;
fim;

vet

vetor [ 1..500] de reg;

Faculdade de Engenharia e Arquitetura e Tecnologia UNIMAR Marlia - SP..

35

vet: v; { v uma varivel capaz de armazenar 500 registros }


inteiro: i , qt, cd, ac ;
caractere: resp;
escreva ( cadastro dos 500 produtos:);
para i = 1 ate 500 faa
escreva (codigo :);
leia ( v[ i ].cod );
escreva (descrio:);
leia ( v[ i ].desc );
escreva (fornecedor:);
leia ( v[ i ].forn);
escreva ( qtd. em estoque:); leia ( v[ i ].qtd);
fimpara;
repita
escreva ( Digite o cdigo para busca em vetor:);
leia (cd);
ac 0;
i 1;
enquanto ( ( ac = 0) e (i < 500)) faa
se ( v[ i ].cod = cd) entao
ac 1
senao
i i + 1;
fimse;
se (ac = 0) ento
escreva ( Produto no cadastrado!)
seno
inicio
escreva (Digite a quantidade a retirar do estoque:);
leia (qt);
se ( v[ i ]. qtd < qt) ento
inicio
v[ i ].qtd : = 0;
escreva (Efetuar pedido a, v [ i ]. forn);
fim
seno
inicio
v [ i ]. qtd v [ i ]. qtd - qt;
escreva (Restou:, v[ i ].qtd);
fim;
fimse;
fim;
fimse;
Faculdade de Engenharia e Arquitetura e Tecnologia UNIMAR Marlia - SP..

36

escreva ( Deseja efetuar outra baixa no estoque:);


leia (resp);
at ( (resp = n) ou (resp = n));
fim.

6.3 Exerccios
Digitar exerccios da pgina 91!!!!

Faculdade de Engenharia e Arquitetura e Tecnologia UNIMAR Marlia - SP..

37

7. Modularizao de Algoritmos
7.1 Subprogramas (Subrotinas)
A principal razo para se criar subprogramas est relacionada com a otimizao do cdigo do
programa ( uando um determinado trecho de programao deve ser repetido por vrias vezes no
programa, colocando-o em um subprograma, basta referenci-lo quantas vezes desejar) e tambm por
melhor estruturar (organizar) o programa (pode ser implementado um pedao por vez). Assim, so
duas as formas bsicas para desenvolvimento de subprogramas:
PROCEDIMENTOS
FUNES
A diferena bsica entre os procedimentos e as funes que, as funes obrigatoriamente
retornam valor no trmino de sua execuo e os procedimentos no. A declarao dos procedimentos e
funes pertencentes a um determinado programa devem ser feitas aps a declarao das variveis
globais e antes do incio do programa principal.
7.1.1 Procedimentos
Um procedimento criado pela declarao : PROCEDIMENTO. Veja a sintaxe:
PROCEDIMENTO < nome do procedimento> ;
declaraes de variveis locais ao procedimento
INCIO
comandos pertencentes ao procedimento
FIM;

Faculdade de Engenharia e Arquitetura e Tecnologia UNIMAR Marlia - SP..

38

EX. Algoritmo para ler um 100 registros de funcionrios ( nome, cargo, salrio) e imprimir os 100
registros com um aumento de 10%.
Incio
tipo reg = registro
caractere: nome, cargo;
real: sal;
end;
tipo vet = vetor [1..100] de reg;
{ variveis globais - todos os procedimentos podem us-las }
vet : a;
inteiro: i;
procedimento ledados;
inicio
para i = 1 ate 100 faa
escreva (nome = ); leia (a [ i ].nome);
escreva ( cargo = ); leia ( a [ i ].cargo);
escreva ( salrio = ); leia ( a [ i ]. sal );
fimpara;
fim;
procedimento aumento;
inicio
para i 1 at 100 faa
a [ i ]. sal : = a [ i ]. sal * 1.1;
escreva (nome = , a[ i ] . nome , salrio = , a [ i ]. sal );
fimpara;
fim;
{ programa principal }
escreva ( Entrada dos dados );
ledados;
escreva ( Impresso dos dados com aumento de salrio);
aumento;
fim.

Faculdade de Engenharia e Arquitetura e Tecnologia UNIMAR Marlia - SP..

39

7.1.1 Funes
A caracterstica fundamental de uma funo que ela retorna um valor para o programa que a
chamou. Assim, a sua declarao dever conter o tipo de dado que ir retornar. Veja:
FUNO <nome da funo> : tipo de dado da funo;
declaraes de variveis locais funo
INCIO
comandos pertencentes funo
< nome da funo > recebe valor a ser retornado
FIM;
Ex. Algoritmo para calcular o maior entre 3 valores lidos pelo teclado.
Incio
inteiro: a, b, c , y;
funo max : inteiro;
inteiro: maior;
inicio
se (( a > b ) e ( a > c )) ento
maior a
seno
se ( b > c ) ento
maior b
seno
maior c;
fimse;
fimse;
max maior; { o nome da funo recebe o valor a ser retornado }
fim;
{ programa principal }
escreva ( Digite os 3 valores :);
Faculdade de Engenharia e Arquitetura e Tecnologia UNIMAR Marlia - SP..

40

leia (a, b, c);


y max ;
escreva ( O maior valor = , y );
fim.

7.2 Exerccios
1.)

Elabore um algoritmo utilizando procedimentos para ler um vetor de 100 elementos inteiros
(idades) e calcule e imprima a mdia das 100 idades.

2.)

Elabore um algoritmo utilizando funes que leia 1 valor inteiros e calcule e imprima se ele
ou no nmero primo. Lembre-se que para o nmero ser primo ele deve ser divisvel por 1 e por
ele mesmo.

Faculdade de Engenharia e Arquitetura e Tecnologia UNIMAR Marlia - SP..

41

Você também pode gostar