Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Centro Tecnolgico
Instituto de Computao
Departamento de Cincia da Computao
Construo de Algoritmos
Verso 2011
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
a) Primeira verso
1. Remover a lmpada queimada;
2. Colocar a nova lmpada;
Mas isto est muito simples (abstrato). O que remover uma lmpada?
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;
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.
Um algoritmo pode ser definido tambm como: uma sequncia ordenada, sem
ambiguidade, de passos que levam soluo de um dado problema (TREMBLAY;
BUNT, 1981).
6
Fase de resoluo do Problema Fase de Implementao
a) fluxograma
b) diagramas de Nassi-Shneidermam
c) mtodo de Jackson
d) diagramas de Warnier-Or
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.
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:
Fortran
Programa em Fortran
Pascal
Programa em Pascal
Java
Algoritmo
Programa em Java
C#
Programa em C#
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):
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
10
Ex: Questo: Certa
Situao: Reprovado
2.2 ATRIBUIO
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
11
Regra para Construo de Identificadores
RESTRIES:
12
Onde tipo define as caractersticas dos dados a serem manipulados, pode ser: inteiro,
real, caractere, lgico, entre outros.
Outros exemplos:
Observe que a declarao ir produzir uma tabela com os nomes definidos, porm
os valores no aparecem, no esto especificados.
13
ATRIBUIO: associa um identificador a uma expresso (valor).
Forma geral:
Identificador <Expresso>
Exemplo:
A 14
VALOR 10.5
SOMA 5
RESULTADO SOMA
A 14 + 10
14 10
A 24
14
2.2.1 EXPRESSES ARITMTICAS
Exerccios
1. Para o algoritmo abaixo, crie a tabela de smbolos e mostre os valores para cada
varivel.
2. Para o algoritmo abaixo, crie a tabela de smbolos e mostre os valores para cada
varivel.
15
RR+1
RR+1
RR+1
RS
S R
16
2.1.3 EXPRESSES LGICAS (CONDIES)
(A)
A and B
A or B
not A, so expresses lgicas.
CONCEITO DE PROPOSIO
A lua quadrada.
A neve branca
Matemtica uma cincia.
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
Exemplos:
OU
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
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
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 = _______
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.
SOLUO
a) X Y
YZ
suponha X=1 Y =2 Z= 3
20
Fazendo X Y
Fazendo Y Z
2 caso : Y Z e depois X Y
Fazendo Y Z
Fazendo X Y
21
7. Faa como o anterior para os casos:
a) X Z b) X Y c) X Y
XY ZX ZY
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.
22
2.2 OPERAES DE ENTRADA E SADA DE DADOS
2.2.1. LEITURA
Forma Geral:
LEIA <identificador[,identificador...]>
Exemplo 1:
LEIA A
23
Exemplo 2:
Resultado da leitura:
Valores lidos (32, 45, e 60) armazenados nas variveis A, B, C (na TS) respectivamente.
2.2.2 ESCRITA
Forma Geral:
ESCREVA <identificador[,identificador...]>
Exemplo:
32 45 60
24
ESCREVA A
ESCREVA B
ESCREVA C
32
45
60
ESCREVA VALOR =, A
VALOR = 32
ESCREVA A =, A
A = 32
ESCREVA A =, A, B =,B
25
NOME TIPO VALOR
A Inteiro 32
B Inteiro 45
C Inteiro 60
A = 32 B= 45
A = 32 B= 45
C = 60
ESCREVA A =, A
ESCREVA B =, B
ESCREVA C =, C
A = 32
B = 45
C = 60
26
A instruo escreva pode ser usada para escrever mensagens, sem a utilizao de
variveis.
DADOS INVALIDOS
LEIA A
27
ESCREVA O VALOR LIDO = , A
O VALOR LIDO = 80
Simulao do algoritmo
LEIA A
28
e armazena na varivel definida.
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.
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).
Simulao do algoritmo
LEIA A
30
ESCREVA O VALOR LIDO = , A
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.
O VALOR LIDO = 78
O VALOR LIDO = 65
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)
Simulao do algoritmo
LEIA V1, V2
L dois valores da entrada de dados. Para testar o algoritmo utilizamos dois valores
numricos aleatrios, porm, o algoritmo deve funcionar para qualquer valor.
32
NOME TIPO VALOR
V1 INTEIRO 3
V2 INTEIRO 5
RESULTADO INTEIRO
RESULTADO V1 + V2
V1 V2
3 5
RESULTADO 8
VALORES LIDOS = 3 5
VALORES LIDOS = 3 5
A SOMA DOS VALORES = 8
33
5) Escreva um algoritmo para calcular a rea de um crculo, onde o valor do raio lido.
Soluo:
Variao da Soluo
A soluo acima pode ser alterada criando um nome ( PI ) que conter o valor de .
34
2.4 EXERCCIOS PROPOSTOS
1. Simular a execuo do seguinte algoritmo, como os valores de entrada
apresentados abaixo:
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.
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.
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.
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.
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.
SE <condio> ENTO
<sequncia de passos>
FIM-SE
Exemplo:
1) Escreva um algoritmo que leia um valor e escreva-o caso seja maior que 10.
NO
37
Simulao do algoritmo
LEIA A
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.
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.
NO A >= 10 ? SIM
39
3.3. EXEMPLOS DE ALGORITMOS
1) Faa um algoritmo que leia um numero inteiro e o imprima se ele for menor que 5.
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.
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.
40
Variao da soluo
5) Faa um algoritmo que obtenha trs nmeros reais e informe o maior deles.
Variao da soluo
41
Aninhamentos
Aninhamento correto
42
Aninhamento incorreto
1) Fazer um algoritmo que leia trs valores inteiros, distintos entre si, determine e imprima
o menor deles:
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.
SE X=Y OU X = Z OU Y = Z ENTO
ESCREVA TRIANG. ISOSCELES
SENO
ESCREVA TRIANG. ISCALENO
FIM-SE
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.
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.
Ax + By = C
Dx + Ey = F
45
EC - BF AF - CD
X = ------------------ e Y = ---------------------------
AE - BD AE - BD
9. Elaborar um algoritmo que l uma altura e mostra uma mensagem conforme a faixa de
altura:
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.
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
O algoritmo construdo criando apenas uma varivel cujos valores so lidos, escritos
e descartados pela leitura do prximo valor.
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
PARA <varivel> < valor inicial > AT <valor final> [ PASSO <incremento>] FAA
<sequncia de passos a ser repetida >
FIM-PARA
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
b) I 10 at 20 Passo 1 valores de I = 10 11 12 13 14 15 16 17 18 19 20
c) I 11 at 20 Passo 1 valores de I = 11 12 13 14 15 16 17 18 19 20
d) K 1 at 10 Passo 2 valores de K = 1 3 5 7 9
e) JL 1 at 3 Passo 1 valores de JL = 1 2 3
49
No exemplo do algoritmo anterior:
50
A partir do esquema de funcionamento anterior podemos simular o algoritmo abaixo:
I1
LEIA A
ESCREVA O VALOR LIDO = , A
PARA I 1 AT 10 PASSO 1
II+ 1
No
Verifica se o novo valor da varivel
de controle ultrapassou o valor
do limite
Sim
Sair da Repetio
Simulao do algoritmo
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
LEIA A
O VALOR LIDO = 17
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
LEIA A
O VALOR LIDO = 17
O VALOR LIDO = 34
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
II+1 I9+1 10
LEIA A
(ltimo valor a ser lido, observe que todos os valores da entrada de dados foram
utilizados, lidos atravs das leituras )
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
II+1 I 10 + 1 11
55
4.2.1. LEITURA DE DADOS X REPETIO
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
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
LEIA A
REPETIO 1 2 3 4 5 6 7 8 9 10
VALOR DO I 11 12 13 14 15 16 17 18 19 20
FIM-FAA
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
2. Faa um algoritmo que leia 25 nmeros inteiros e calcule o somatrio dos nmeros
pares.
58
4.2.3. EXERCCIOS PROPOSTOS
59
Responda
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:
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).
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.
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.
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.
62
DECLARE I COMO INTEIRO
PARA I 2 AT 10 PASSO 2 FAA
ESCREVA O VALOR I = , I
FIM-PARA
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
REPETIO 1 2 3 4 5
I 1 2 3 4 5
S 1 1 2 6 24 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
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:
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.
1 x n = n
2 x n = 2n
...
2
n x n = n
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].
N!
S = ----------------------
P! ( N - P) !
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 + ...
19. Escreva um algoritmo para calcular o valor de Sen x, obtido pela srie de Mac-Laurin.
X X X
S= X - ------- + --------- - --------- + ...
1! 2! 3!
1! 2! 3! 4! 5!
P = + + . . .
1 3 7 15 31
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
.
necessria uma estrutura de repetio quando no conhece precisamente o
nmero de vezes que a sequncia de passos deve ser repetida. Forma geral:
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;
3. Se o dado a ser lido: salrio - escolheria um valor negativo para ser o flag, pois
normalmente salrio positivo ou zero;
5. Se o dado a ser lido: nmeros inteiros - escolheria um valor (por exemplo zero)
para ser o flag;
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
68
ENTRADA DE DADOS
17
34
1
0 Valor
23 colocado
78 erradamente
.
.
. FLAG
0
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
LEIA A
L um (primeiro) valor da entrada de dados. Essa leitura tem por objetivo iniciar a varivel
de controle da repetio ( A )
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).
O VALOR LIDO = 17
LEIA A
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)
O VALOR LIDO = 17
O VALOR LIDO = 34
Observe, se o valor lido anteriormente fosse zero ( 0), a condio seria falsa, logo no
entraria na repetio (repetio seria finalizada).
O VALOR LIDO = 17
O VALOR LIDO = 34
O VALOR LIDO = 1
O VALOR LIDO = 23
.
O VALOR LIDO = 42
LEIA A
72
entrada de dados: 0 LEIA A
73
4.4. PARA-FAA X ENQUANTO-FAA
Escrever um algoritmo que gere e imprima o somatrio dos nmeros impares 1 at 10.
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.
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
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
Empregado = { Carlos }
77
5.1 Exerccios Resolvidos
1. Escreva um algoritmo que leia o nome, sexo, idade de uma pessoa e escreva os
dados lidos.
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.
3. Escreva um algoritmo que leia um arquivo contendo o nome, sexo, idade de vrias
pessoas e escreva os dados lidos.
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.
78
5. Escreva um algoritmo que leia um arquivo contendo o nome, sexo, idade de vrias
pessoas e escreva o total de mulheres.
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.
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.
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.
2. Escreva um algoritmo que leia uma sequncia de dados (nome, sexo, idade,salrio)
3. Dado uma sequncia de dados (nome, salrio, idade, sexo) dos funcionrios de uma
firma, escreva um algoritmo para:
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.
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:
- 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:
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 :
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 :
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:
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.
MA = Nl + N2 x 2 + N3 x 3 + ME
7
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.
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
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)
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(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:
86
6.2.2 Colocando todos os valores no vetor atravs de leitura
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
12
20
15
1
4
87
6.4 Exerccios Resolvidos
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.
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.
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.
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]
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
Posio 2,5
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:
Matriz
Valor
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
Caso seja escrito uma operao com componentes indefinida, ser considerada
uma operao errada, por exemplo:
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)
OU
5 8 2
OU
1 4 3
5 8 2
95
7.3 Imprimindo a Matriz
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
OU
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.
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.
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.
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
ESCREVA C(I,S), S = 1,2,1
FIM-PARA
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.
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
3) economia de cdigo.
8.1 Procedimentos
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
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
102
Exemplo 2: Suponha que ao resolver um problema necessrio permutar os
valores de diversas variveis.
USANDO PROCEDIMENTO
PROCEDIMENTO TrocaInteiro ( X, Y )
DECLARE X, Y AUX COMO INTEIROS
AUX X
XY Trecho voltado para permuta
Y AUX
FIM- SUBROTINA
Forma Geral:
103
8.2 Exerccios Propostos
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.
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 >
RETORNA
FIM- FUNCO
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
105
USANDO FUNO
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 de Programao
Luis Aguilar Joyanes
MCGRAW-HILL
108