Escolar Documentos
Profissional Documentos
Cultura Documentos
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)
b)
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;
Lucas
Pedro
Roberto
Cabelos:
Jogo:
2.) Amigos do Esporte
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)
Pas:
Esporte:
Camisa:
Bon:
Antnio
Robson
Marcos
Victor
Andr
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.
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
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.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).
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 )
( (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
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%;
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.
11
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
parte
executvel
fim.
3.3 Exerccios
1.)
2.)
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.
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
fim;
// seqncia de comandos
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:
15
se <condio >
ento
incio
fim;
// seqncia de comandos
seno
incio
fim;
// seqncia de comandos
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
16
fim;
// seqncia de comandos
fimse;
seno
se <condio 3>
ento
incio
fim;
// seqncia de comandos
seno
se <condio 4>
ento
Cv;
seno
Cf;
fimse;
fimse;
fimse;
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.
18
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
19
resposta
20
10.)
150
-1
-2
50
Mensagem
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.)
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%
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'.
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);
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.
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
27
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.
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.
30
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
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.
32
endereo
cidade
cep
fone
idade
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;
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;
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.)
Incio
tipo reg =
registro
inteiro: cod;
caracteres: desc, forn;
real: qtd;
fim;
vet
35
36
6.3 Exerccios
Digitar exerccios da pgina 91!!!!
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;
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.
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
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.
41