Você está na página 1de 32

Algoritmos e Estrutura de Dados I

AIgoritmos com Repetio - Laos de Repetio


Em varios momentos, na programaco, se torna necessario repetir um trecho de um programa um
determinado numero de vezes. Nesse caso, pode ser criado um laco ae repetico que eIetue o
processamento de um determinado trecho, tantas vezes quantas Iorem necesssarias. Os lacos ae repetico
tambm so conhecidos por loopings.
Supondo que se queira executar um determinado trecho de um programa trs vezes (3x). Por exemplo,
suponha que um programa deva ler dois valores e mostrar a mdia entre esses valores. Certamente a melhor
tcnica no seria repetir simplesmente um mesmo trecho trs vezes, como mostrado abaixo:

variaveis
numerico media,n1,n2
inicio
Ler n1
Ler n2
media := (n1+n2)/2
escrever Mdia:, media
Ler n1
Ler n2
media := (n1+n2)/2
escrever Mdia:, media

Ler n1
Ler n2
media := (n1+n2)/2
escrever Mdia:, media
fim

Para esse e outros casos similares, existem comandos apropriados para eIetuar a repetico de determinados
trechos de programa tantas vezes quantas Iorem necessarias. A principal vantagem que o programa passa a
ter um tamanho muito menor, podendo ser ampliada a amplitude de processamento como Ior necessaria.
Existem 2 tipos de repetices:
deIinidas e garantidas, ou seia, um mesmo trecho de programa sera executado um numero pr-
determinado de vezes e:
indeIinida e sem garantia, ou seia, um trecho de programa podera ser executado indeIinidamente, no
havendo garantia do trmino da execuco do algoritmo.
Repetico utilizando estrutura Para / Prximo
A estrutura do Para/Proximo garantida, e sua sintaxe em portugus
estruturado apresentada no seguinte Iormato:
para <var> de <incio> ate <fim> passo <incremento>
<comandos>
prximo
Veia o exemplo anterior, aplicando-se nele o laco de repetico Para /
Proximo.

condio
F
var incio
fim, increm.
comandos
V
Pagina - 25
Algoritmos e Estrutura de Dados I

variaveis
numerico media,n1,n2,i
inicio
para i de 1 ate 3 passo 1 // (nesse caso passo 1 opcional)
Ler n1
Ler n2
media := (n1+n2)/2
escrever Mdia:, media
proximo
fim
O algoritmo, que tinha que 17 linhas, passou a ter 10 linhas, com a mesma Iuncionalidade e ainda com a
vantagem de se ampliar o numero de repetices de 3 para 300, com a maior Iacilidade.
Repetico utilizando estrutura Faca Enquanto / Fimenquanto
Embora tambm possa ser utilizada quando se tem um numero pr-determinado de repetices a executar,
como no exemplo acima, essa estrutura mais indicada quando necessario repetir um determinado trecho
de programa indeIinidamente. Para ilustrar, suponha que um determinado valor deva ser lido
indeIinidamente, at que seia digitado zero (condico de parada). Nesse caso devemos usar a estrutura Faca
enquanto:
variaveis
numerico val
inicio
val:= 1
faa enquanto val <> 0
escrever Valor:
ler val
...
<comandos
1
>
fim_enquanto (pode ser usado tambm fim_faa)
<comandos
2
>
fim

Nesse caso, quando Ior digitado 0 (zero) para val, o Iluxo do programa segue at chegar no comando
fimenquanto. Ao retornar na linha faca enquanto, veriIicado que o valor no diIerente de zero e o
controle do programa passa para a linha comandos
2
. A partir dai o Iluxo do programa segue normalmente.
Veia abaixo como Iicaria a utilizaco do laco faca enquanto para o exercicio das 4 repetices:
variaveis
numerico media,n1,n2,i
inicio
i:= 1
faa enquanto i <= 3
Ler n1
Ler n2
media := (n1+n2)/2
escrever Mdia:, media
i:= i+1
fim_enquanto
fim

Pagina - 26
Algoritmos e Estrutura de Dados I

Embora existam outros tipos de lacos de repetico, alm do para e faca enquanto, somente trabalharemos
com estes nos algoritmos, pois so encontrados em praticamente todas as linguagens de programaco e
resolvem qualquer problema que necessite repetico.
Contador
E uma variavel de controle, inteira, que serve para controlar quantas vezes um determinado trecho de
programa Ioi executado. Considere, por exemplo, um programa que leia 10 valores, podendo eles serem
somente negativos ou positivos (desconsidere os valores nulos). A seguir, considere que o programa deva
mostrar a quantidade de valores positivos digitados. Nesse caso, devemos Iazer um teste a cada leitura, e, no
caso do valor lido ser positivo, adicionar 1 para uma variavel tipo contador (contpcontp1).
Exercicio.: Iaca o algoritmo acima (ler 100 valores), mostrando no Iinal a quantidade de numeros negativos
e positivos digitados.
Acumulador
E uma variavel de controle, inteira, que serve para acumular valores. Considere que um programa, alm de
ler 100 valores e mostrar a quantidade de numeros positivos, deva mostrar a mdia dos valores positivos
digitados. Resolva este problema.
Algoritmos Propostos
1) O que e para que serve uma variavel tipo CONTADOR e uma variavel tipo ACUMULADOR.
2) Leia 5 valores para uma variavel A. A seguir mostre quantos valores digitados Ioram pares, quantos
valores digitados Ioram impares, quantos Ioram positivos e quantos Ioram negativos.
3) Mostre os numeros pares entre 1 e 100, inclusive.
4) Calcule e mostre a soma dos numeros pares entre 1 e 100, inclusive.
5) Calcule e mostre a mdia dos numeros pares entre 1 e 100, inclusive.
6) Calcule e mostre a soma dos numeros impares entre 1 e 100, inclusive
7) Leia 2 valores: X e Y. A seguir, calcule e mostre a soma dos numeros impares entre eles.
8) Leia 10 valores. Para cada valor lido, mostre uma mensagem dizendo se ele par ou impar e se ele
positivo ou negativo.
9) Faca um algoritmo que leia um coniunto no determinado de pares de valores M e N (parar quando
algum dos valores Ior menor ou igual a zero). Para cada par lido, mostre:
a) a seqncia do menor at o maior, inclusive:
b) a soma dos inteiros consecutivos do menor at o maior, inclusive.
10)Apresente o quadrado de cada um dos numeros pares entre 1 e 1000, inclusive.
11)Apresente todos os numeros divisiveis por 5 que seiam maiores do que 0 e menores ou iguais a 200.

Pagina - 27
Algoritmos e Estrutura de Dados I

12) Leia 1 variavel X inumeras vezes (parar quando o valor digitado Ior 0). Para cada valor lido mostre
a seqncia de 1 at o valor lido.
13) Faca um algoritmo que leia 1 valor para uma variavel N. A seguir, mostre a tabuada de N:
1 x N N 2 x N 2N ... 10 x N 10N
14) Escreva um algoritmo que leia 10 valores quaisquer. A seguir, mostre quantos deles esto dentro do
intervalo |10,20| e quantos esto Iora do intervalo, mostrando essas inIormaces.
15) Faca um algoritmo que leia um coniunto de 15 valores, um de cada vez, acompanhados de um codigo
1 ou 2. O valor representa o numero de cobaias utilizadas em uma das 15 experincias Ieitas e os
codigos 1 e 2 representam respectivamente coelhos e ratos. Mostre no Iinal, o total de cobaias
utilizadas, o total de coelhos, total de ratos, e o percentual de coelhos e ratos.
16) Escreva um algoritmo que leia 50 valores, um de cada vez. Mostre ento o maior valor lido.
17) Faca um algoritmo que leia 5 coniuntos de 2 valores, o primeiro representando o numero de um
aluno e o segundo representando a sua altura em centimetros. Encontrar o aluno mais alto e mais
baixo e mostrar seus numeros e suas alturas, dizendo se o aluno o mais alto ou o mais baixo.
18) Escreva um algoritmo que leia um numero e diga se este numero perIeito ou no. Um numero
perIeito aquele que igual a soma de seus divisores. Ex: 1236 , 124728 , etc...
19) Escrever um algoritmo que l um valor para X e calcula e mostra os 20 primeiros termos da srie:
1
o
termo: 1/x 2
o
termo: 1/x 1/x
2
3
o
termo: 1/x 1/x
2
1/x
3
...
20) Mostre os numeros entre 1000 e 2000 que quando divididos por 11 do resto igual a 5.
21) Supondo que a populaco de um pais A seia 90 milhes de habitantes, crescendo com uma taxa anual de
3.5 e que a populaco de um pais B seia 140 milhes de habitantes, crescendo a uma taxa anual de 1
. Faca um algoritmo que calcule e mostre quantos anos sero necessarios para que a populaco do pais
A ultrapasse a populaco do pais B.
Algoritmos com Fatoriais (considere a entrada de valores positivos)
20) Faca um algoritmo que leia um valor para M. Se este valor Ior positivo, calcule e mostre o seu
Iatorial.
21) Faca um algoritmo que leia um coniunto no determinado de valores para M (parar quando o valor
digitado Ior 0). Para cada valor lido, se este valor Ior par, mostre quantos divisores ele possui. Se Ior
impar, mostre o Iatorial de M.
Algoritmos com nmeros primos (considere a entrada de valores positivos)
22) Escrever um algoritmo que leia um valor qualquer. A seguir, mostre se o valor lido primo ou no
primo.
23) Leia 100 valores. A seguir, para cada valor, mostre se o valor primo ou no. Em caso negativo,
mostre quantos divisores o numero possui.
24) Leia uma quantidade de valores para X indeterminadamente (parar quando o valor digitado para x Ior
igual a zero). Para cada valor lido, mostrar se este valor primo ou no.

Pagina - 28
Algoritmos e Estrutura de Dados I

25) Faca um algoritmo que gere e mostre os valores primos entre 1 e 1000. Mostre tambm a soma
destes valores.
26) Escreva um algoritmo que calcula e mostra a soma dos numeros primos entre 92 e 1478.
27) Mostre nas telas ao lado a execuco dos seguintes algoritmo (os calculos devem aparecer):
s := 3
x := 0
para i de 1 at 3 passo 2
para j de 6 at i passo -3
s := s - 1
x := x + i * j * s
prximo
prximo
escrever "Soma = ", x
b)C := 0
Para i de 1 at 3
para j de 6 at i passo -3
C := C+i
escrever C
Prximo j
Prximo
escrever C=,C
A := 12
B := 27
D := 0
Faa enquanto A <= B
Para i de 1 at int(A/6)
D := D+A
Prximo
A := A+10
fim_enquanto
escrever D=,D
Considerando a entrada dos valores 4, 5, 2, 3, 0, -1, 5 para X, mostre na tela a execuco dos algoritmos:
d)
s := 0
x := 1
faa enquanto x <> 0
ler x
s := s + x
fim_enquanto
escrever "Soma = ", s
s := 0
faa enquanto 1 = 1
ler x
Se x = 0 ento
exit
fim_se
s := s + x
fim_enquanto
escrever "Soma = ", s

Soma =
Soma =
Calculos
Calculos (memoria)
D=
Calculos
Calculos
Pagina - 29
Soma =
Calculos
a)
c)
e)
C=
Algoritmos e Estrutura de Dados I

Estruturas de dados
Temos os seguintes tipos de dados basicos: numricos (inteiros e reais), logicos e caracteres. Baseando-
se nestes tipos basicos podemos construir tipos compostos. Os tipos compostos dividem-se em dois:
homogneos (vetores e matrizes) e heterogneos (registros).
Tipos de dados Homogneos - VETORES e MATRIZES
Os tipos homogneos so coniuntos do mesmo tipo basico. A utilizaco desse tipo de estrutura de dados
recebe diversos nomes, tais como: variaveis indexadas, compostas, arranios, tabelas em memoria, arrays
(do ingls) vetores e matrizes. Para simpliIicar utilizaremos somente os nomes vetores e matrizes. Os
vetores so uma lista de elementos do mesmo tipo. Quando os vetores possuem mais de uma dimenso se
tornam matrizes.
Todas as variaveis e constantes ocupam um espaco em memoria. Este espaco ocupado um espaco
linear, ou seia, se temos a seguinte declaraco :
variaveis
numerico a,b
provavelmente (dependendo do compilador da linguagem utilizada) estas variaveis ocuparo espacos
subsequentes em memoria. Baseado na necessidade de utilizaco de tipos como vetores e utilizando esta
linearidade do armazenamento em memoria Iica Iacil para as linguagens de programaco implementarem
estes tipos.
Vetores:
Quando possuimos uma ordem e um indice de acesso aos elementos de um coniunto ento temos
caracterizado um vetor. Para deIinirmos um vetor a sintaxe utilizada sera a seguinte :
matriz identiIicador|indice| exemplo: Matriz numerico X[3]
Para se ter idia de como utilizar vetores em uma determinada situaco, considere o seguinte problema:
Calcular a mdia geral da turma segundo a tabela abaixo:
Aluno Nota 1 Nota 2 Mdia
1 4.0 6.0 5.0
2 6.0 7.0 6.5
3 9.0 8.0 7,5
4 3.0 9.0 6.0
5 4.0 6.0 5.0
6 7.0 7.0 7.0
7 8.0 7.0 7.5
Agora basta escrever um programa para eIetuar as 7 mdias, onde sero utilizadas as mdias Iinais de
cada aluno, sendo que a mdia do primeiro aluno esta na variavel MD1, do segundo em MD2, do
terceiro em MD3, assim por diante. Ento tem-se:
MD1 : 5
MD2 : 6.5
...
MD7 : 7.5

.
Pagina - 30
Algoritmos e Estrutura de Dados I

Com o conhecimento adquirido at o presente momento, seria ento elaborado um programa que
eIetuaria a leitura de cada nota, a soma das mesmas e uma diviso do valor da soma por 7.
variaveis
numerico MD1, MD2, MD3, MD4, MD5, MD6, MD7, soma, med
inicio
Soma := 0
Ler MD1, MD2, MD3, MD4, MD5, MD6, MD7
soma := MD1+ MD2 + MD3 + MD4 + MD5 + MD6 + MD7
med := soma /7
escrever Mdia = , med
fim
Como seria o clculo utilizando um Vetor MD, com 7 elementos?
Nesse caso, teremos ento uma unica variavel indexada (vetor) contendo todos os valores das 8 notas.
Isso apresentado da seguinte Iorma:
MD[ 1 ] := 5
MD[ 2 ] := 6.5
MD[ 3 ] := 7.5
MD[ 4 ] := 6.0
MD[ 5 ] := 5.0
MD[ 6 ] := 7.0
MD[ 7 ] := 7.5
O vetor pode ser declarado da seguinte Iorma:
variaveis
matriz numerico MD[7]
Faca o exercicio para calcular a mdia da turma utilizando o vetor.
Algoritmos Propostos
1) Conceitue Vetor.
2) Como se Iaz a leitura de um vetor A que tenha 10 elementos (A[10])
3) Faca um algoritmo que leia um vetor V|6|. Conte a seguir, quantos valores de V so negativos e
mostre essa inIormaco.
4) Faca um algoritmo que leia um vetor A|10|. No Iinal, mostre todas as posices do vetor que
armazenam um valor menor ou igual a 10 e o valor armazenado na posico.
5) Faca um algoritmo que leia um vetor X|10|. Substitua, a seguir, todos os valores nulos do vetor X
por 1 e escreva novamente o vetor X.
6) Faca um algoritmo que leia um vetor C|50|. Encontre a seguir o maior elemento de C e mostre-o.

Pagina - 31
Algoritmos e Estrutura de Dados I

7) Faca um algoritmo que leia um vetor N|20|. A seguir, encontre o menor elemento do vetor N e a sua
posico dentro do vetor, mostrando: 'O menor elemento de N , M, 'e sua posico dentro do vetor
:,P.
8) Faca um algoritmo que leia um vetor N|20|. Troque a seguir, o 1
o
elemento com o ultimo, o 2
o
elemento com o penultimo, etc., at trocar o 10
o
com o 11
o
. Mostre o vetor modiIicado.
9) Faca um algoritmo que leia um vetor K|30|. Troque a seguir, todos os elementos de ordem impar do
vetor com os elementos de ordem par imediatamente posteriores. Mostre o vetor modiIicado.
10) Faca um algoritmo que leia um vetor D|60|. A seguir, troque o 1
o
elemento com o 31
o
, o 2
o
com o
32
o
, etc. Mostre no Iinal o vetor modiIicado.
11) Faca um algoritmo que leia um vetor S|20| e uma variavel A. A seguir, mostre o produto da variavel
escalar A pelo vetor.
12) Faca um algoritmo que leia um vetor F|20| e uma variavel A. A seguir, crie um vetor G|20| que o
produto da variavel A pelo vetor F. Mostre o vetor G no Iinal.
13) Faca um algoritmo que leia dois vetores: F|20| e G|20|. Calcule e mostre, a seguir, o produto dos
valores de F por G.
14) Faca um algoritmo que leia um vetor K|10| e um vetor N|10|. A seguir, crie um vetor M que seia a
diIerenca entre o vetor K e N (MK-N). Mostre a seguir o vetor M.
15) Faca um algoritmo que leia um vetor F|20|. A seguir ordene este vetor F em ordem crescente e
mostre ento o vetor ordenado.
16) Faca um algoritmo que leia um vetor G|5| e a seguir leia 15 numeros de alunos e de vetores R|5|,
que seriam as respostas dos alunos para as questes, da letra A at a letra E, sendo que deve ser lido
um numero de aluno e um vetor de respostas por vez. Para cada aluno, mostre o numero de acertos e
a sua nota, sendo que todas as questes tem o mesmo peso.
17) Faca um algoritmo que leia um vetor G|5| e a seguir leia um numero indeIinido de alunos e de
vetores R|5|, que seriam as respostas dos alunos para as questes, sendo que deve ser lido um
numero de aluno e um vetor de respostas por vez. Para cada aluno, mostre o numero de acertos e a
sua nota, sendo que todas as questes tem o mesmo peso. Mostre, ainda, a mensagem 'Aprovado,
se o aluno Iicou com nota acima ou igual a 5 e 'Reprovado se o aluno Iicou com a nota menor do
que 5.
18) Faca um algoritmo que leia um vetor G|5| e a seguir leia um numero indeIinido de alunos e de
vetores R|5|, que seriam as respostas dos alunos para as questes, sendo que deve ser lido um
numero de aluno e um vetor de respostas por vez. Para cada aluno, mostre o numero de acertos e a
sua nota, sendo que todas as questes tem o mesmo peso. Mostre, ainda, a mensagem 'Aprovado,
se o aluno Iicou com nota acima ou igual a 7, 'Reprovado se o aluno Iicou com a nota menor do
que 5 e 'Em exame, se o aluno Iicou com a mdia entre 5 e 7.
19) Faca um algoritmo que leia 2 vetores A|10| e B|10|. A seguir, Crie um vetor C que seia a intersecco
de A com B e mostre este vetor C. Obs.: Intersecco quando um valor estiver nos dois vetores.
Considere que no ha elementos duplicados em cada um dos vetores.

Pagina - 32
Algoritmos e Estrutura de Dados I

20) Faca um algoritmo que leia um vetor G|13| que o gabarito de um teste da loteria esportiva,
contendo os valores 1 quando Ior coluna 1, 0 quando Ior coluna do meio e 2 quando Ior coluna 2.
Ler a seguir, para 10 apostadores, o numero do carto de cada apostador e um vetor R|13| que
seriam as respostas dos apostadores. Para cada apostador, mostre o numero de acertos.
21) Com relaco ao exercicio anterior, calcule e mostre o percentual dos apostadores que Iizeram de 10 a
13 pontos e o percentual dos apostadores que Iizeram menos do que 10 pontos.
22) Faca um algoritmo que leia um vetor S|20|. A seguir, compacte este vetor S, retirando todos os
valores nulos ou negativos e mostre ento o vetor compactado.
23) Faca um algoritmo que leia um vetor T|15|. Crie, a seguir, um vetor Fat|15| que contm os Iatoriais
do vetor T. Mostre a seguir o vetor Fat.
24) Faca um algoritmo que leia um vetor U|15|. Crie, a seguir, um vetor Primo|15| que contera todos os
valores primos do vetor U. Mostre o vetor Primo|15| no Iinal.
25) Faca um algoritmo que leia um vetor V|10| e o escreve. Crie, a seguir, um vetor COMP que contera
somente os valores no repetidos de V. Mostre ento o vetor COMP.
26) Faca um algoritmo que leia um vetor V|10| e o escreve. Mostre a seguir, todos os valores distintos
que aparecem no vetor.
27) Faca um algoritmo que leia um coniunto de 30 valores. Para cada valor lido, coloque em um vetor P
ou I, conIorme os valores Iorem pares ou impares. O tamanho dos vetores P e I de 10 posices.
Cada vez que encher um dos vetores, (P ou I) esvazie-o, mostrando os valores que estavam no vetor.
Cada vetor P ou I pode ser preenchido quantas vezes Iorem necessarias. No Iinal, mostre os valores
que restaram em cada um dos vetores.
28) Faca um algoritmo que leia um vetor V|10| e um vetor X|10|. A seguir, crie um vetor Y|20| que
contera os valores dos vetores V e X em ordem crescente. Obs.: o mtodo para Iazer livre.
29) Faca um algoritmo que leia 5 valores para um vetor V|10| e ordene estas primeiras 5 posices do
vetor em ordem crescente. Leia, a seguir, 5 valores para A, um de cada vez, e para cada valor lido,
insira-o dentro do vetor de Iorma que o mesmo continue ordenado em ordem crescente.
30) Faca um algoritmo que gere os 10 primeiros numeros primos acima de 100 e armazena-os em um
vetor X|10|. Mostre ento o vetor X.
Obs: A resoluo dos exerccios 25 a 29 se encontram no Anexo , no final da apostila

Pagina - 33
Algoritmos e Estrutura de Dados I

Matrizes:
A matriz mais comum a de duas dimenses (linha e coluna), por se relacionar diretamente com a utilizaco
de tabelas. Trabalharemos somente com matrizes de 2 dimenses, por serem mais comuns, mas podem ser
necessarias, em algum momento, matrizes de 3 ou mais dimenses.
Uma matriz de 2 dimenses estara sempre Iazendo menco a linhas e colunas e sera representada por seu
nome e tamanho. Dessa Iorma, uma matriz Tabela|8,5| indica que tem 8 linhas e 5 colunas.

Matriz 1abela Colunas

1 2 3 4 5
Linhas 1
2
3
4
5
6
7
8
A matriz pode ser declarado da seguinte Iorma:
variaveis
matriz numerico M[10,10]
Exerccios
1) Faca um algoritmo que leia uma matriz M|6,6| e uma matriz N|6,6|. A seguir, calcule o produto de M
por N, colocando os resultados em uma matriz PROD|6,6|.
2) Faca um algoritmo que leia uma matriz S|6,6| e um valor A. A seguir, multiplique a matriz pelo valor A,
colocando o resultado em um vetor V|36|. Mostre o vetor V|36|.
3) Leia uma matriz M|7,7|. A seguir, calcule e mostre a soma dos elementos de cada area hachuriada:
a) b) c) d) e)
I) g) h) i)
4) Leia uma matriz M|5,5| e crie 2 vetores Sl|5| e Sc|5| que contenham respectivamente as somas das
linhas e das colunas de M.

Linha 3
C
o
l
u
n
a


5
Pagina - 34
Algoritmos e Estrutura de Dados I

5) Leia uma matriz M|6,5|. Apos, divida os 5 elementos de cada linha da matriz pelo maior elemento de
cada uma das 6 linhas. Coloque o resultado em uma matriz S|6,5|.
6) Escreva um algoritmo que l uma matriz M|5,5|. Substitua, a seguir, todos os valores negativos da matriz
pelo seu modulo. Exemplo: substitua -2 por 2, -16 por 16, assim por diante.
7) Escreva um algoritmo que l uma matriz M|6,6|. A seguir, troque os elementos da primeira coluna
com os elementos da segunda coluna, os da terceira coluna com a quarta coluna e os elementos da
quinta coluna com os elementos da sexta coluna.
8) Repita o exercicio 4, trocando os elementos das linhas, ao invs das colunas.
9) Leia uma matriz M|5,5|. A seguir, ordene os elementos da matriz M e mostre como Iicou a Matriz
ordenada, linha por linha.
10)Execute o algoritmo abaixo, preenchendo a matriz M |2,6|:
variaveis
matriz numerico M [2,6]
numerico fat,i
inicio
para i de 1 at 6 M [2,6]= 1 2 3 4 5 6
ler M[1,i]
se M[1,i] > 0 ento
fat := 1
para j de 1 at M[1,i]
fat := fat * j
proximo
M[2,i] := fat
senao
M[2,i] := i * i
fim_se
M[2,i] := M[2,i] - 10
proximo
fim

Na leitura da Matriz, considere os valores: -5 7 2 1 4 0


Pagina - 35
Algoritmos e Estrutura de Dados I

UtiIizao de Sub-Rotinas (moduIarizao)
A medida que a complexidade de um algoritmo aumenta, surge a necessidade de dividir um grande
problema em problemas menores, para que seia compreendido mais Iacilmente. Dessa Iorma, cada parte
menor (modulo) tem um algoritmo mais simples, e esse trecho menor chamado de sub-rotina.
Alm de Iacilitar a compreenso do algoritmo, as sub-rotinas possibilitam que determinados trechos de
programas seiam aproveitados em outros programas. Isso Iacilita a correco, pois, se uma rotina para
veriIicar se um numero ou no primo esta incorreta, por exemplo, sabe-se exatamente qual o trecho
do programa que deve ser arrumado.
Rotinas que Iicam demasiado complexas podem ainda ser divididas em diversas outras rotinas mais
simples. O processo de dividir uma sub-rotina em outras denominado reIinamento sucessivo.
O processo de se programar um computador torna-se bastante simples quando aplicado algum mtodo
para utilizaco das sub-rotinas. Um dos mtodos mais utilizados na programaco estruturada o mtodo
TOP-DOWN (de cima para baixo) que se caracteriza por:
- Antes de iniciar a construco do programa, o programador devera ter em mente as tareIas principais
que esse programa devera executar. No necessario saber como Iuncionaro, somente saber quais so.
- Deve-se ter em mente como sera o Iuncionamento do programa principal, que controlara todas as
tareIas distribuidas em sub-rotinas.
- Uma vez deIinido o programa principal, detalha-se ento as sub-rotinas. So deIinidos varios
algoritmos, um para cada rotina em separado, para que se tenha uma viso do que sera executado em
cada modulo de programa. Isso tambm Iacilita a manutenco (alteraces posteriores necessarias).
O mtodo Top-Down pode ser graIicamente visualizado abaixo:
Procedimentos x Funces
Existem dois tipos de sub-rotinas a serem utilizados na programaco, conhecidos como procedimentos
(procedures) e funces (Iunctions). As diIerencas entre eles so apresentadas a seguir:

Programa
Principal
Rotina 1 Rotina 2 Rotina 3 Rotina 4
Rotina 1.1 Rotina 1.2 Rotina 4.1 Rotina 4.2 Rotina 4.3
Rotina 4.2.1 Rotina 4.2.2
Pagina - 36
Algoritmos e Estrutura de Dados I

Procedimentos
So, na realidade, trechos de programas independentes mas que, para serem processados, devem ser
solicitados pelo programa principal. Exemplo:
procedimento NomeProcedimento ( lista de parmetros )
incio
<comandos>;
fim

A lista de parmetros, deIinida no cabecalho do procedimento, produz a comunicaco de dados entre o
procedimento e quem o chamou. O procedimento pode ter de 0 a varios parmetros, sendo que tambm
pode ter varios parmetros de entrada, de saida ou ambos. Exemplos:
...
limpa_tela // sem nenhum parmetro
...
limpa_tela(01,01,24,80) // com parmetros de entrada somente
...
Fatorial (5; retorno) // 5 parmetro de entrada e retorno parmetro de saida
escrever retorno
Funces
E um caso particular de procedimentos. A diIerenca porm, que apenas uma inIormaco retornada ao
programa que a chamou, ou seia, os parmetros, se existentes, so todos de entrada e obrigatoriamente
ha uma e somente uma saida ou retorno para o programa principal.
Algumas linguagens obrigam que a chamada de Iunco nunca seia sozinha, como os procedimentos, mas
sim Iazendo parte de um comando de atribuico ou de uma expresso.

A sua declaraco segue o seguinte Iormato:

Funcao NomeFuno ( lista de parmetros)
inicio
<comandos>
retornar ( parmetro )
fim

Exemplos do uso de funces:
Variaveis
numerico A,B

Funcao Soma (A, B)
Variaveis
numerico x
inicio
x := A + B
retornar(x)
Fim
Incio
Ler A
Ler B
escrever "Soma de A e B:", Soma(A,B)
Fim

Pagina - 37
Algoritmos e Estrutura de Dados I

As rotinas poaem ficar no inicio ae um programa. no final ou ainaa em um arquivo separaao.
aepenaenao aa linguagem utilizaaa.
Uma Iunco pode ainda retornar um valor verdadeiro (v) ou Falso (f).
Escopo de varivel
Programa Principal:
Exerccios
1) Criar um algoritmo CALCULADORA que apresente um menu de seleces no programa principal. Esse
menu devera dar ao usuario a possibilidade de escolher uma entre as 4 operaces aritmticas. Apos a
entrada de dois numeros deve ser escolhida a operaco deseiada e deve ser exibido o resultado.
2) Criar um algoritmo que leia um valor. A seguir, Iaca duas rotinas, uma para calcular o Iatorial do valor
lido e a outra que retorna quantos divisores o valor possui. No programa principal escreva o Iatorial e
uma mensagem dizendo se o valor lido primo ou no.

A,B
Rotina 1:
Rotina 2:
A,X
Rotina 1.1:
Y
Nesse caso, as rotinas 1, 1.1 e 2 "enxergam" as variaveis A e B,
porm, dentro da Rotina 1, a variavel A deIinida novamente.
Dessa Iorma, o novo valor da variavel sera valido para a rotina
1.1.
As variaveis X e Y no sero visualizadas pelo programa
principal.
A variavel X presente na rotina 2 no interIere na variavel X que
esta na rotina 1 (so independentes).
X
Pagina - 38
Algoritmos e Estrutura de Dados I

Tipos de dados Heterogneos - REGISTROS
O registro consiste em trabalhar varios dados de tipos diIerentes (campos) em uma mesma estrutura. Por
essa razo o dado considerado heterogneo.
Considere um exercicio de aprendizagem onde deve ser inIormado o nome de um aluno e suas 4 notas.
Isso obrigaria a utilizaco de 2 vetores, um contendo os nomes (tipo caractere) e outro contendo as notas
(valores tipo real). Imagine como seria muito mais Iacil agrupar os dois tipos de dados em uma mesma
estrutura. E exatamente isto que se consegue Iazer com a utilizaco de registros.
A Iigura abaixo mostra um exemplo de layout de um registro com as suas inIormaces, as quais recebem
o nome de campos.
A estrutura estaria no seguinte Iormato:
NOME C 35 (Caractere de tamanho 35)
NOTA1 N
NOTA2 N
NOTA3 N
NOTA4 N
Nos algoritmos, podemos declarar na seguinte Iorma
programa LEITURA
tipo
cad_aluno = registro
Nome: caractere
Nota1: real
Nota2: real
Nota3: real
Nota4: real
fim_registro
var
Aluno: cad_aluno
incio
ler aluno.Nome
ler aluno.Nota1
ler aluno.Nota2
ler aluno.Nota3
ler aluno.Nota4
escrever aluno.Nota1
fim

Pagina - 39
Cadastro de Notas Escolares
Nome......:
Nota 1....:
Nota 2....:
Nota 3....:
Nota 4....:
Algoritmos e Estrutura de Dados I

Registros de Conjuntos
Se Ior necessario trabalhar uma matriz ou vetor dentro de um registro, isso possivel? Considere,
utilizando o exemplo anterior, que se deseia separar as notas por bimestres, tendo quatro bimestres em
um ano e uma nota em cada bimestre (poderiam ser mais notas). A Iigura abaixo mostra o layout para
esta proposta:
Cadastro de notas escolares
Nome................:

Notas
1 2 3 4
Nos algoritmos, essa estrutura seria apresentada da seguinte Iorma:
programa LEITURA
tipo
bimestre : conjunto[1..4] de real
cad_aluno = registro
Nome: caractere
Nota: conjunto [1...4] de real (Matriz Numrico Nota[4])
fim_registro
var
Aluno: cad_aluno
i: inteiro
incio
ler aluno.Nome
para i de 1 at 4
ler aluno.Nota[i]
prximo
fim
Exerccios
1) Faca um algoritmo que leia 3 notas bimestrais para 10 alunos (apresentando no Iinal os dados de cada
aluno classiIicados por nome - opcional) .

Pagina - 40
Algoritmos e Estrutura de Dados I

Exemplo do uso de registros em pascal
Program Teste; //Nome do programa
uses crt; //Biblioteca onde tem rotinas de entrada/saida de vdeo
var
a:integer; // o mesmo que numerico a
begin // o mesmo que inicio
clrscr; // limpa a tela
read(a); // o mesmo que ler a
end.
Program Leitura;
uses crt;
type //tudo o que viro nas linhas a seguir so tipos
cad_aluno = record //cria o tipo cad_aluno, que um registro
nome: string[20]; //poderia ser nome:char. o mesmo que caracter nome
Nota: array [1..4] of real; // o mesmo que vetor numerico Nota[4]
end; // Fim do registro Cad_aluno
var
aluno: cad_aluno; //varivel aluno ter o formato da estrutura Cad_aluno
i: integer; // o mesmo que numerico i
begin
read (aluno.nome); //l o campo nome da estrutura de dados (registro) aluno
for i:= 1 to 4 do // o mesmo que para i de 1 ate 4
read( aluno.nota[i]); //l a Nota[1] Nota[2] Nota[3] e Nota[4] da
end. estrutura de dados (registro) aluno

Program Leitura;
uses crt;
type
tipo_aluno = record
nome: string[20];
Nota1: array [1..4] of real; // Primeira nota
Nota2: array [1..4] of real; // Segunda nota
Nota3: array [1..4] of real; // Terceira nota
end;
var
aluno: array [1..10] of tipo_aluno; //Agora so 10 alunos
i,j: integer;
media,soma_medias: real;
begin
for i:= 1 to 10 do begin
clrscr;
Writeln ('Nome do aluno ',i,' :');
readln (aluno[i].nome);
soma_medias:=0;
for j:= 1 to 4 do begin
Writeln ('Notas do ',j,' Bimestre:');
readln( aluno[i].nota1[j]);
readln( aluno[i].nota2[j]);
readln( aluno[i].nota3[j]);
media:=(aluno[i].nota1[j]+ aluno[i].nota2[j]+ aluno[i].nota3[j])/3;
Writeln ('Media do Bimestre:',media:2:1);
soma_medias:=soma_medias+media;
end;
Writeln ('Media do Ano: ',(soma_medias/2):2:1);
readln;
end;
end.

Pagina - 41
Algoritmos e Estrutura de Dados I

AuIa Prtica
AMBAP - ILA
Para iniciar com a programaco, nada mais simples do que utilizar um interpretador que utiliza, ao invs de
comandos em ingls, comandos em portugus, como os utilizados at agora.
No inicio da parte pratica desta disciplina, por motivos didaticos, sera utilizado um ambiente de
programaco denominado AMBAP (Ambiente de Aprendizado de Programaco). Este ambiente Ioi
construido em JAVA e utiliza, na execuco dos algoritmos, um interpretador (linguagem) denominado ILA
(Interpretador de Linguagem Algoritmica), com pequenas modiIicaces.
O AMBAP Ioi desenvolvido na UFAL (Universidade Federal de Alagoas) e o ILA Ioi desenvolvido pela
UNISINOS, So Leopoldo RS.
Convences da linguagem utilizada pelo AMBAP
A tabela abaixo especiIica as convences utilizadas pelo AMBAP:
Formataco Indica
Proieto Ambap palavra reservada da linguagem
Proieto Ambap constante
Proieto Ambap expresso obrigatoria
Proieto Ambap expresso opcional
Projeto Ambap
trecho de codigo Ionte
Operador de Atribuico
A atribuico uma instruco que permite o armazenamento, em variaveis, dos dados gerados pela execuco
do programa. Sintaxe: <variavel> := <expressao>
O : utilizado para diIerenciar os operadores de atribuico do operando de igualdade ().
Exemplo:
num : 12
Estrutura Basica
A estrutura basica de um programa em ILA a seguinte:
<Declaracao-de-variaveis>
<Declaracao-de-Funcoes>
inicio
<Bloco-de-Instrucao>
fim
Inicio e Fim
Indicam ao interpretador o inicio e Iim da Iunco ou de um bloco de intruces no algoritmo principal. Em
ambas as situaces seu uso OBRIGATORIO.

Pagina - 42
Algoritmos e Estrutura de Dados I

Exemplo:
// Menor algoritmo em ILA.
// -----------------------
inicio
fim
Declaraco de Variaveis
Variavel uma identiIicaco dada a uma posico de memoria. Utilizada para armazenar dados. Todas as
variaveis deIinidas pelo usuario devem ser declaradas separadamente em um bloco especial denominado
variaveis. Podem ser deIinidas duas classes distintas de variaveis, simples e compostas.
Variveis Simples
Sintaxe:
variaveis
numerico <expr1>, <expr2>, ... , <exprN>
logico <expr1>, <expr2>, ... , <exprN>
caracter <expr1>, <expr2>, ... , <exprN>
Variveis Compostas
Sintaxe:
variaveis
matriz numerico <expr1>[ <expr2>, <expr3>], ...
matriz caracter <expr1>[ <expr2>, <expr3>], ...
matriz logico <expr1>[ <expr2>, <expr3>], ...
Exemplo:
// Algoritmo para criar e imprimir um vetor de 100 posies.
// ---------------------------------------------------------
variaveis
numerico i
matriz numerico vet[100]
inicio
limpar
para i de 1 ate 3
posicionar 10,10
escrever "Entre com um numero = "
posicionar 10,40
ler vet[i]
proximo
para i de 1 ate 3
escrever vet[i]
proximo
fim

Falso
Constante logica de valor FALSO.

Exemplo:
// Algoritmo para mostrar o valor de uma constante lgica falsa.
//-------------------------------------------------------------
variaveis
logico f
inicio
f := falso
escrever "constante f = ", f
fim

Pagina - 43
Algoritmos e Estrutura de Dados I

Verdadeiro
Constante logica de valor VERDADEIRO.
Exemplo:
// Algoritmo que demonstra uma constante lgica verdadeira.
//--------------------------------------------------------
variaveis
logico v
inicio
v := verdadeiro
escrever "constante v = ", v
fim
Operadores
Segue abaixo a lista de operadores da linguagem. A prioriodade a mesma utilizada nos algoritmos:
Potenciaco: ` Multiplicaco: * Diviso:/
Soma: Subtraco: -
Negaco: NAO Multiplicaco logica: E Adico logica: OU
Maior: ~ Menor: Igual: DiIerente: ~ Maior igual: ~ Menor igual:
Concatenaco de Caracteres:
Exemplo:
// Concatenar dois campos tipo caracter em um terceiro.
// --------------------------------------------------
variaveis
caracter pre_nome, sobrenome, nome
inicio
limpar
ler pre_nome
ler sobrenome
nome := pre_nome + " " + sobrenome
escrever "aluno = ", nome
fim
Comandos
Escrever
Exibe no video um texto, o conteudo de uma variavel ou o valor de uma expresso.
ESCREVER <variavel>,<"texto">,<expressao arit.>
Ler
L uma entrada do teclado e armazena o dado lido em uma variavel.
LER <variavel>
Exemplo:
// Algoritmo para ler uma varivel nome, nmero e imprimir: nome e nmero.
variaveis
caracter nome
numerico numero
inicio
ler nome
ler numero
escrever "Nome = ",nome," Numero = ",numero
fim

Pagina - 44
Algoritmos e Estrutura de Dados I

Se
Estrutura que decide entre duas sequncias de instruces qual sera executada, ou apenas se uma dada
sequncia de instruces sera ou no executada.
SE <expressao> ENTAO
<bloco-de-instrucoes1...>
SENAO
<bloco-de-instrucoess2...>
FIM_SE
Faca Caso
Estrutura que decide entre varios blocos de instruces qual aquele que devera ser executado ou se nenhum
deles devera ser executado.
FACA CASO
CASO <expressao>:
<bloco-de-instrucoes1...>
OUTRO_CASO :
<bloco-de-instrucoes2...>
FIM_CASO
Para Proximo
Estrutura que repete a execuco de um bloco de instruces um determinado numero de vezes.
PARA <variavel> DE <expressao1> ATE <expressao2> PASSO <expressao3>
<bloco-de-instrucoes>
PROXIMO
Faca Enquanto
Repete um bloco de instruces enquanto a avaliaco de uma expresso Iornecida resultar verdadeiro.
FACA ENQUANTO <expressao>
<bloco-de-intrucoes>
FIM_ENQUANTO
Declaraco de Funco
funcao <identificador> ( <parametro...> )
<Declaracao-de-variaveis-Locais>
inicio
<Bloco-de-Instrucoes>
fim

Exemplo:
// Algoritmo para ler um nome usando uma funo para imprimi-lo.
variaveis
caracter nome
funcao imprime(nome) // parametro = nome
inicio
posicionar 10,10
escrever "nome = " , nome
fim
//------- INICIO DO ALGORITMO PRINCIPAL -------------
inicio
limpar
escrever "Digite um nome: "
ler nome
imprime(nome)
fim

Pagina - 45
Algoritmos e Estrutura de Dados I

Retornar
EspeciIica qual valor devera ser retornado pela Iunco.
Sintaxe:
RETORNAR ( <expressao> )
Comentrio:
Uma Iunco pode ou no retornar valores.
Limpar
Limpa uma area da tela.
Sintaxe:
LIMPAR lin, col, lin1, col1
Comentrios:
Canto superior esquerdo: (lin,col) Canto inIerior direito: (lin1,col1) Caso |lin,col,lin1,col1| seiam omitidos,
sero assumidos os valores deIault: ( 1, 1, 25, 80 )
Esperar
Suspende a execuco do algoritmo durante um intervalo de tempo especiIicado em segundos.
Sintaxe:
ESPERAR ( <expr1> )
Comentrios em Algoritmos
A instruco // Iaz com que tudo que estiver a direita, seia ignorado pelo interpretador.
Funces
O ILA possui inumeras Iunces deIinidas em sua linguagem (olhar na AJUDA do programa AMBAP). Na
resoluco dos algoritmos so sera permitido o uso das Iunces ABS (retorna o valor absoluto de um numero
NO PRESENTE NO ILA) e da Iunco Inteiro, apresentada abaixo:
Inteiro
Extrai de um numero qualquer somente a sua parte inteira.

Sintaxe:
INTEIRO ( <variavel> )

As outras Iunces existentes no ILA e que podem ser utilizadas nos algoritmos somente para pratica so:
Acos, Aleatorio, Asen, Atan, Comprimento, Cos, Log, Raiz, Resto, Sen, Tan, Valor
OBSERVAES
1. Usar comentrios nos programas de forma a esclarecer a lgica
2. Usar nome elucidativos nos identificadores de variveis, constantes, etc.
3. Manter sempre a mesma Identao, de no mnimo 3 caracteres
4. Usar espaos e parnteses em expresses de forma a facilitar a leitura das
mesmas. Ex.: X1 := sqr( b ) - 4 * A * C , e no X1:=sqr(b)-4*a*c.
5. Pular algumas linhas em branco, entre trechos do programa de forma a facilitar a
leitura

Pagina - 46
Algoritmos e Estrutura de Dados I

Exerccios Complementares
Algoritmos com repetico
1.Escreva um algoritmo para repetir a leitura de um numero enquanto o valor Iornecido Ior diIerente de 0. Para cada
numero Iornecido, imprimir se ele NEGATIVO ou POSITIVO. Quando o numero 0 Ior Iornecido a repetico de ser
encerrada sem imprimir mensagem alguma.
OBS: Utilize uma estrutura de repetico com teste de saida no final (Faca/Enquanto).
[Para os dados de entrada abaixo] [Deve ser gerada a seguinte sada]
4
-1
2
6
-7
0
Positivo
Negativo
Positivo
Positivo
Negativo
2. Escreve um algoritmo para ler uma quantidade indeterminada de valores inteiros. Para cada valor Iornecido escrever
uma mensagem que indica se cada valor Iornecido PAR ou IMPAR. O algoritmo sera encerrado imediatamente apos a
leitura de um valor NULO ou NEGATIVO.
[Para os dados de entrada abaixo] [Deve ser gerada a seguinte sada]
11
3
2
10
5
-2
mpar
mpar
Par
Par
mpar
3.Ler uma quantidade indeterminada de duplas de valores (2 valores de cada vez). Escrever para cada dupla uma
mensagem que indique se ela Ioi inIormada em ordem crescente ou decrescente. A repetico sero encerrado ao ser
Iornecido para os elementos da dupla valores iguais.
[Para os dados de entrada abaixo] [Deve ser gerada a seguinte sada]
5 4
7 2
3 8
2 2
Decrescente
Decrescente
Crescente
4.Escreva um algoritmo para repetir a leitura de uma senha at que ela seia valida. Para cada leitura da senha incorreta
inIormada escrever a mensagem "SENHA INVALIDA". Quanto a senha Ior inIormada corretamente deve ser impressa a
mensagem "ACESSO PERMITIDO" e o algoritmo encerrado. Considere que a senha correta o valor 2002
[Para os dados de entrada abaixo] [Deve ser gerada a seguinte sada]
2200
1020
2022
2002
Senha Invlida
Senha Invlida
Senha Invlida
Acesso Permitido
5. Escreva um algoritmo para ler as coordenadas (X,Y) de uma quantidade indeterminada de pontos no sistema cartesiano.
Para cada ponto escrever o quadrante a que ele percente. O algoritmo sera encerrado quando pelo menos uma de duas
coordenadas Ior NULA (nesta situaco sem escrever mensagem alguma).
[Para os dados de entrada abaixo] [Deve ser gerada a seguinte sada]
2 2
3 -2
-8 -1
-7 1
0 2
primeiro
quarto
terceiro
segundo
6. Para que a diviso entre 2 numeros possa ser realizada, o divisor no pode ser nulo. Escreva um algoritmo para ler 2
valores e imprimir o resultado da diviso do primeiro pelo segundo.

Pagina - 47
Algoritmos e Estrutura de Dados I

OBS: O algoritmo deve validar a leitura do segundo valor (que no deve ser nulo). Enquanto Ior Iornecido um valor nulo a
leitura deve ser repetida. Utilize a estrutura FACA/ENQUANTO na construco da repetico de validaco.
7. Altere a soluco do exercicio anterior. para que seia impressa a mensagem Valor invalido caso o segundo valor
inIormado seia ZERO.
8. Altere a soluco do exercicio 6 para que seia impressa a mensagem Valor invalido caso o segundo valor inIormado seia 0.
9. Escreva um algoritmo para ler as notas da 1a. e 2a. avaliaces de um aluno, calcular e imprimir a mdia semestral. Faca
com que o algoritmo so aceite notas validas( uma nota valida deve pertencer ao intervalo |0,10|. Cada nota deve ser
validada separadamente. Deve ser impressa a mensagem "Nota invalida" caso a nota inIormada no pertenca ao intervalo
|0,10|.
10. Reescreva o algoritmo para o problema 9 para que no Iinal seia impressa a mensagem Novo calculo (1.sim 2.no)
solicitando ao usuario que inIorme um codigo (1 ou 2) indicando se ele deseia ou no executar o algoritmo novamente. Se
Ior inIormado o codigo 1 deve ser repetida a execuco de todo o algoritmo para permitir um novo calculo, caso contrario ele
deve ser encerrado.
11. Reescreva o algoritmo do exercicio 9 validando a resposta do usuario para a pergunta Novo Calculo (1.sim 2.no)?
(aceitar apenas os codigo 1 ou 2).
12. Escreva um algoritmo para ler 2 notas de um aluno, calcular e imprimir a mdia Iinal. Logo apos escrever a mensagem
"Calcular a mdia de outro aluno 1.Sim 2.No?" e solicitar um resposta. Se a resposta Ior 1, o algoritmo deve ser executado
novamente, caso contrario deve ser encerrado imprimindo a quantidade de alunos aprovados.
13. Reescreva o algoritmo do exercicio 12, para que seia impresso no Iinal, a quantidade de alunos aprovados, reprovados
ou que Iicaram em exame.
14. Reescreva o algoritmo do exercicio 13, para que seia impresso no Iinal, o percentual de alunos aprovados, reprovados ou
em exame em relaco a quantidade total de alunos cuias notas Ioram inIormadas.
15. Escreva um algoritmo que veriIique a validade de uma senha Iornecida pelo usuario. A senha valida o numero 1234.
OBS: Se a senha inIormada pelo usuario Ior invalida, a mensagem "ACESSO NEGADO" deve ser impressa e repetida a
solicitaco de uma nova senha at que ela seia valida. Caso contrario deve ser impressa a mensagem "ACESSO
PERMITIDO" iunto com um numero que representa quantas vezes a senha Ioi inIormada.
16. A Federaco Gaucha de Futebol contratou voc para escrever um programa para Iazer uma estatistica do resultado de
varios GRENAIS. Escreva um algoritmo para ler o numero de gols marcados pelo Inter, o numero de gols marcados pelo
GRMIO em um GRENAL, imprimindo o nome do time vitorioso ou a palavra EMPATE. Logo apos escrever a mensagem
"Novo GRENAL 1.Sim 2.No?" e solicitar uma resposta. Se a resposta Ior 1, o algoritmo deve ser executado novamente
solicitando o numero de gols marcados pelos times em uma nova partida, caso contrario deve ser encerrado imprimindo:
-Quantos GRENAIS Iizeram parte da estatistica.
-O numero de vitorias do Inter.
-O numero de vitorias do Grmio.
-O numero de Empates.
- Uma mensagem indicando qual o time que venceu o maior numero de GRENAIS (ou NO HOUVE VENCEDOR).
17. Um Posto de combustiveis deseia determinar qual de seus produtos tem a preIerncia de seus clientes. Escreva um
algoritmo para ler o tipo de combustivel abastecido (codiIicado da seguinte Iorma: 1.Alcool 2.Gasolina 3.Diesel 4.Fim).
Caso o usuario inIorme um codigo invalido (Iora da Iaixa de 1 a 4) deve ser solicitado um novo codigo (at que seia valido).
Ao ser inIormado o codigo do combustivel, o seu respectivo nome deve ser impresso na tela. O programa sera encerrado
quando o codigo inIormado Ior o numero 4 escrevendo ento a mensagem: "MUITO OBRIGADO" e a quantidade de
clientes que abasteceram cada tipo de combustivel.
18. Escreva um algoritmo para imprimir os numero de 1 a 10 utilizando uma estrutura FACA/ENQUANTO e um contador.
19. Escreva um algoritmo para escrever a palavra PROGRAMACAO 5 vezes utilizando uma estrutura de repetico e um
contador.

Pagina - 48
Algoritmos e Estrutura de Dados I

20. Escreva um algoritmo para ler um numero inteiro e escrev-lo na tela 10 vezes utilizando uma repetico e um contador.
21. Escreva um algoritmo que imprima na tela os 10 primeiros numeros inteiros maiores que 100 utilizando uma estrutura
de repetico.
22. Escreva um algoritmo que imprima os numeros impares existentes de entre 1(inclusive) e 9(inclusive).
23. Escreva um algoritmo que imprima os numeros de 100 a 200 de 10 em 10 utilizando uma estrutura de repetico.
24. Escreva um algoritmo para ler um valor N (validar para aceitar apenas valores positivos). Imprima a seguir
'PROGRAMA N vezes.
25. Escreva um algoritmo para ler um valor N (validar para aceitar apenas valores positivos) e imprimir os N primeiros
numeros inteiros.
26. Escreva um algoritmo que imprima a tabuada do 8 utilizando uma estrutura de repetico.
27. Ler 10 valores e escrever quantos destes valores so negativos.
28. Ler 10 valores, calcular e escrever a mdia aritmtica destes valores.
29. Ler 2 valores (considere que o primeiro valor lido sempre sera menor que o segundo), calcular e escrever a soma dos
numeros inteiros existentes entre eles(incluindo os 2 valores lidos na soma).
30. Reescreva o exercicio anterior considerando que o primeiro pode ser maior que o segundo e vice-versa.
31. Escreva um algoritmo que Iorneca quantos numeros devem existir em sequncia a partir do 1 (1,2,3,4,...) para que a sua
soma ultrapasse a 100 o minimo possivel.
32. Ler um valor A e um valor N. Imprimir a soma dos N numeros a partir de A(inclusive). Caso N seia negativo ou ZERO,
devera ser lido um novo N(apenas N).
Valores para teste:
A N SOMA
3 2 7 (34)
4 5 30 (45678)
33. Ler um valor X e um valor Z (se Z Ior menor que X deve ser lido um novo valor para Z). Contar quantos numeros
inteiros devemos somar em sequncia ( a partir do X inclusive) para que a soma ultrapasse a Z o minimo possivel. Escrever
o valor Iinal da contagem.
Ex:
X Z Reposta
3 20 5 (3456725)
2 10 4 (234514)
30 40 2 (303161)
34. A seguinte sequncia de numeros 0 1 1 2 3 5 8 13 21... conhecida como srie de Fibonacci. Nessa sequncia, cada
numero, depois dos 2 primeiros, igual a soma dos 2 anteriores. Escreva um algoritmo que mostre os 20 primeiros numeros
dessa srie.
35. Ler um valor (so deve aceitar valores positivos), calcular e escrever seu respectivo Iatorial.
Fatorial de n n *(n-1)*(n-2)*(n-3)*...*1
Ex: Fatorial de 4 4*3*2*1 24
36. Ler um numero indeterminado de dados, contendo cada um, a idade de um individuo. O ultimo dado, que no entrara
nos calculos, contm o valor de idade negativa. Calcular e imprimir a idade mdia deste grupo de individuos.
37. Escreva um algoritmo para calcular e escrever o valor de S.

Pagina - 49
Algoritmos e Estrutura de Dados I

38. Escreva um algoritmo para calcular e escrever o valor de S.
S 1 3/2 5/4 7/8 ... 99/?
39. Escreva um algoritmo para calcular e escrever o valor de S.
S 1/2 2/4 3/8 4/16 5/32 ... 20/?
40. Escreva um algoritmo que calcule e escreva a soma dos 30 primeiros termos da srie:
41. Elabore um algoritmo para resolver o valor de S, onde:
S 1/1 - 2/4 3/9 - 4/16 5/25 - 6/36 ... - 10/100
42. Escrever um algoritmo que l um valor N inteiro e positivo e que calcula e escreve o valor de E.
E 1 1 / 1! 1 / 2! 1 / 3! 1 / N!
43. Escreva um algoritmo que l um valor n inteiro e positivo e que calcula a seguinte soma:
S : 1 1/2 1/3 1/4 ... 1/n
O algoritmo deve escrever cada termo gerado e o valor Iinal de S.
44. Elabore um algoritmo que calcule e escreva o valor H, sendo que ele determinado pela seguinte srie:
H 1/1 3/2 5/3 7/4 .... 99/50.
45. Escreva um algoritmo que calcule e escreva a soma dos dez primeiros termos da srie:
2/500 - 5/450 2/400 - 5/350 ....
46. Escreva um algoritmo para calcular e escrever o n-simo termo da srie abaixo, onde o valor de N sera inIormado pelo
usuario.
5,6,11,12,17,18,23,24, ....
Exemplo:
-para N3 deve ser impresso o valor 11
-para N5 deve ser impresso o valor 17
-para N8 deve ser impresso o valor 24
47. Ler 2 valores A e B. Se A Ior igual a B devem ser lidos novos valores para A e B.Se A Ior menor que B calcular e
imprimir a soma dos numeros impares existentes entre A(inclusive) e B(inclusive).Se A Ior maior que B calcular e
imprimir a mdia aritmtica dos multiplos de 3 existentes entre A(inclusive) e B(inclusive).
OBS: Considere que so sero inIormados valores inteiros positivos.
48. Suponha que exista um prdio de 20 andares onde existam trs elevadores, identiIicados pelos numero 1,2 e 3. Para
otimizar o sistema de controle dos elevadores, Ioi realizado um levantamento no qual cada usuario respondia qual o
elevador que utilizava com mais Ireqncia. Escreva um algoritmo que leia o numero de usuarios do prdio, leia as
respostas de cada usuario calcule e imprima qual o elevador mais Ireqentado.
49. No planeta Alpha vive a criatura Blobs, que come precisamente 1/2 de seu suprimento de comida disponivel todos os
dias. Escreva um algoritmo que leia a capacidade inicial de suprimento de comida (em Kg), e calcule quantos dias passaro
antes de Blobs coma todo esse suprimento at atingir um quilo ou menos.
50. Considere uma sequncia de numeros que tenha a propriedade que comeca com o quarto deles, e cada numero a soma
do anterior mais duas vezes o anterior ao anterior a ele, menos o anterior dele. Por exemplo, o 8o. deles (o 7o. deles) mais
duas vezes (o 6o. deles) menos (o 5o. deles). Suponha que os primeiros trs numeros na sequncia so: 1,2,3, escreva um
algoritmo que encontre o 15o deles.
51. Ler um numero inteiro N (so aceitar valores positivos.Caso o N no seia positivo devera ser lido um novo valor para o
N) e escrever os divisores de N.
52. Ler um numero inteiro N (so aceitar valores positivos-Caso o N no seia positivo devera ser lido um novo valor para o

Pagina - 50
Algoritmos e Estrutura de Dados I

N) e escrever se ou no PRIMO.
53. Escrever os numeros de 1 a 20 com seus respectivos divisores.
54. Escreva um algoritmo que imprima todos os numeros primos existentes entre N1 e N2, onde N1 e N2 so numeros
positivos Iornecidos pelo usuario.
55. Calcular e escrever a maior nota entre N notas lidas. O valor de N sera inIormado pelo usuario.
56. Ler um numero indeterminado de notas. O algoritmo devera ser encerrado ao ser Iornecido um valor negativo para a
nota. Calcular e escrever a menor nota entre as notas lidas.
57. Ler um numero indeterminado de pares de valores. Cada par representa a idade de um aluno e a sua respectiva nota.
Calcular e escrever:
- A idade do aluno que obteve a maior nota.
- A nota do aluno mais velho.
Obs: O algoritmo sera encerrado imediatamente apos o usuario Iornecer uma idade negativa (sem Iornecer a respectiva
nota).
58. Calcular e escrever o maior entre N valores lidos do teclado. O valor de N sera Iornecido pelo usuario.
59. Ler um coniunto de dados contendo, cada um, uma nota. Determinar e escrever a maior e a menor nota da turma. O
ultimo dado que no sera processado, contm, nota 99.
60. Ler o codigo e a altura de cada aluno de uma turma de 10 alunos. Escrever o codigo e a altura do aluno mais alto.
61. Ler um coniunto de 10 pares de dados contendo, cada um, a altura e um codigo para masculino (1) e outro para
Ieminino (2) de uma turma de alunos.Calcular e escrever:
-a maior e a menor altura da turma.
-a mdia de altura das mulheres.
62. Ler um numero indeterminado de dados, contendo cada um o peso de um individuo. O ultimo dado que no entrara nos
calculos, contm um valor negativo. Calcular e imprimir:
-A mdia aritmtica das pessoas que possuem mais de 60 Kg.
-O peso do mais pesado entre aqueles que possuem menos de 60 Kg.
63. Escrever um algoritmo que calcula e mostra a mdia aritmtica dos numeros pares compreendidos entre 13 e 73.
64. A preIeitura de uma cidade Iez uma pesquisa entre seus habitantes, coletando dados sobre o salario e numero de Iilhos.
A preIeitura deseia saber:
a) mdia do salario da populaco:
b) mdia do numero de Iilhos:
c) maior salario:
d) percentual de pessoas com salario at R$100,00.
O Iinal da leitura de dados se dara com a entrada de um salario negativo. (Use o comando ENQUANTO-FACA)
65. Chico tem 1,50 metro e cresce 2 centimetros por ano, enquanto Z tem 1,10 metro e cresce 3 centimetros por ano.
Construa um algoritmo que calcule e imprima quantos anos sero necessarios para que Z seia maior que Chico.
66. Faca um algoritmo que leia varios numeros inteiros e positivos e calcule o produtorio dos numeros pares. O Iim da
leitura sera indicado pelo numero 0.
67. Foi realizada uma pesquisa de algumas caracteristicas Iisicas da populaco de uma certa regio, a qual coletou os
seguintes dados reIerentes a cada habitante para serem analisados:
- sexo (masculino e Ieminino)
- cor dos olhos (azuis, verdes ou castanhos)
- cor dos cabelos ( louros, castanhos, pretos)
- idade
Faca um algoritmo que determine e escreva:
- a maior idade dos habitantes

Pagina - 51
Algoritmos e Estrutura de Dados I

- a quantidade de individuos do sexo Ieminino cuia idade esta entre 18 e 35 anos inclusive
e que tenham olhos verdes e cabelos louros.
O Iinal do coniunto de habitantes reconhecido pelo valor -1 entrada como idade.
68. Construa um algoritmo para receber uma seqncia de numeros inteiros qualquer. Quando o numero zero Ior entrado a
repetico deve ser interrompida e deve ser mostrada a mdia dos numeros digitados.
69. Faca um algoritmo que calcule o Iaturamento de um cinema a cada sesso. Devemos considerar que os menores de 18
anos pagam meia, devido a carteirinha de estudante e que os maiores de 65 anos tambm pagam meia, devido a carteirinha
de aposentado. O preco normal do ingresso ira variar conIorme o dia da semana, portanto deve ser solicitada estas
inIormaco. A quantidade de pessoas no cinema ira variar a cada sesso, portanto deve haver esta inIormaco tambm.
Alm disto, o algoritmo pode ser executado mais de uma vez, ou seia, deve-se veriIicar ao Iinal do calculo de uma sesso se
o usuario deseia veriIicar o Iaturamento de outra sesso.
70. Faca um algoritmo que dado um numero voc imprima em ordem decrescente ser valor variando de 2 em 2 at atingir
zero. Quando o numero Ior digitado veriIique se ele maior que 100 antes de realizar a impresso. Se ele Ior menor que
100 envie uma mensagem ao usuario de que o numero digitado esta Iora do limite e solicite que um novo numero seia
digitado. Quando o usuario entrar com o numero -1 o algoritmo deve ser Iinalizado.
71. Escreva Algoritmo que apresente todos Iatoriais cuio resultado seia inIerior a um dado valor que lido pelo teclado.
72. Escreva um Algoritmo que apresente em ordem decrescente, os Iatoriais desde um dado valor, at o Iatorial de 1.
73. Elabore um algoritmo que obtenha o numero inteiro que mais se aproxima da raiz quadrada de um numero Iornecido
pelo usuaro.
74. Um rainha requisitou os sevicos de um monge e disse-lhe que pagaria qualquer preco. O monge, necessitando de
alimentos, perguntou a rainha se o pagamento poderia ser Ieito em gros de trigo dispostos em um tabuleiro de damas, de
Iorma que o primeiro quadrado tivesse apenas um gro, e os quadrados subsequentes, o dobro do quadrado anterior..A
rainha considerou o pagamento barato o pediu que o servico Iosse executado, sem se dar conta de que seria impossivel
executar o pagamento. Escreva um algoritmo para calcular o numero de gros que o monge esperava receber.
75. Existem numeros de 4 digitos (de 1000 a 9999) que obedecem a seguinte caracteristica: se dividirmos o numero em dois
numeros de dois digitos, um composto pela dezena e pela unidade, e outro pelo milhar e pela centena, somarmos estes dois
novos numeros gerando um terceiro, o quadrado deste terceiro numero exatamente o numero original de quatro digitos.
Por exemplo: 2025-~ separando: 20 e 25 -~ somando temos 45 -~ 45
2
2025. Escreva um programa para calcular todos os
numeros que obedecem a esta caracteristica.
76. Ler um numero N qualquer menor ou igual a 50 e apresentar o valor obtido da
multiplicaco sucessiva de N por 3 (ou seia: N*3, N*3*3, N*3*3*3, ...),
enquanto o produto Ior menor do que 250.
77. Escrever um algoritmo que escreve a soma dos numeros que no so multiplos de 13 entre 100 e 200.
Lembrete.
Algoritmos no se aprenaem.
Copianao algoritmos
Estuaanao algoritmos
Algoritmos so se aprenaem.
Construinao algoritmos
Testanao algoritmos

Pagina - 52
Algoritmos e Estrutura de Dados I

Algoritmos com Vetores e matrizes
1. Elaborar um algoritmo que l um coniunto de 30 valores e os coloca em 2 vetores conIorme estes valores Iorem pares ou
impares. O tamanho do vetor de 5 posices. Se algum vetor estiver cheio, escrev-lo. Terminada a leitura escrever o
conteudo dos dois vetores. Cada vetor pode ser preenchido tantas vezes quantas Ior necessario.
2. Faca um algoritmo que leia um vetor N|20|. A seguir, encontre o menor elemento do vetor N e a sua posico dentro do
vetor, mostrando: 'O menor elemento de N , M, 'e sua posico dentro do vetor :,P.
3. Escreva um algoritmo que leia dois vetores de 10 posices e Iaca a multiplicaco dos elementos de mesmo indice,
colocando o resultado em um terceiro vetor. Mostre o vetor resultante.
4. Faca um algoritmo que leia um vetor K|30|. Troque a seguir, todos os elementos de ordem impar do vetor com os
elementos de ordem par imediatamente posteriores.
5. Faca um algoritmo que leia um vetor S|20| e uma variavel A. A seguir, mostre o produto da variavel A pelo vetor.
6. Faca um algoritmo que leia dois vetores: F|20| e G|20|. Calcule e mostre, a seguir, o produto dos valores de F por G.
7. Escreva um algoritmo que leia dois vetores de 10 posices e Iaca a multiplicaco dos elementos de mesmo indice,
colocando o resultado em um terceiro vetor. Mostre o vetor resultante.
8. Escreva um algoritmo que leia e mostre um vetor de 20 numeros. A seguir, conte quantos valores pares existem no vetor.
9.Escreva um algoritmo que leia um vetor de 100 posices e mostre-o ordenado em ordem crescente.
10. Escreva um algoritmo que leia um vetor de 20 posices e mostre- o. Em seguida, troque o primeiro elemento com o
ultimo, o segundo com o penultimo, o terceiro com o antepenultimo, e assim sucessivamente. Mostre o novo vetor depois da
troca.
11. Escreva um algoritmo que leia 50 valores para um vetor de 50 posices. Mostre depois somente os positivos.
12. Escreva um algoritmo que leia um vetor inteiro de 30 posices e crie um segundo vetor, substituindo os valores nulos
por 1. Mostre os 2 vetores.
13. Escreva um que leia um vetor G de 20 elementos caracter que representa o gabarito de uma prova. A seguir, para cada
um dos 50 alunos da turma, leia o vetor de respostas (R) do aluno e conte o numero de acertos. Mostre o n de acertos do
aluno e uma mensagem APROVADO, se a nota Ior maior ou igual a 6: e mostre uma mensagem de REPROVADO, caso
contrario.
14. Escreva um algoritmo que leia um vetor de 13 elementos, que o Gabarito de um teste da loteria esportiva, contendo os
valores 1(coluna 1), 2 (coluna 2) e 3 (coluna do meio). Leia, a seguir, para cada apostador, o numero do seu carto e um
vetor de Respostas de 13 posices. VeriIique para cada apostador o numeros de acertos, comparando o vetor de Gabarito
com o vetor de Respostas. Escreva o numero do apostador e o numero de acertos. Se o apostador tiver 13 acertos, mostrar a
mensagem "Ganhador".
15. Escrever um algoritmo que gera os 30 primeiros numeros primos a partir de 100 e os armazena em um vetor de X|100|
escrevendo, no Iinal, o vetor X.
16. Escrever um algoritmo que l 2 vetores de tamanho 10. Crie, a seguir, um vetor S de 20 posices que contenha os
elementos dos outros 2 vetores em ordem crescente. Obs.: copie primeiro os valores para o vetor S para depois ordena-los
17. Escrever um algoritmo que l 2 vetores X(10) e Y(10) . Crie, a seguir, um vetor Z que seia
a) a diIerenca entre X e Y:
b) a soma entre X e Y:
c) o produto entre X e Y:
Escreva o vetor Z a cada calculo.
18. Escrever um algoritmo que l um vetor K(15). Crie, a seguir, um vetor P, que contenha todos os numeros primos de K.
Escreva o vetor P.
19. Escrever um algoritmo que l um vetor X(20). Escreva, a seguir, cada um dos valores distintos que aparecem em X
dizendo quantas vezes cada valor aparece em X.
20. Faca um algoritmo que leia dois vetores de 200 posices de caracteres. A seguir, troque o 1 elemento de A com o 200
de B, o 2 de A com o 199 de B, assim por diante, at trocar o 200 de A com o 1 de B. Mostre os vetores antes e depois da
troca.

Pagina - 53
Algoritmos e Estrutura de Dados I

21. Faca um algoritmo que leia um codigo numrico inteiro e um vetor de 50 posices de numeros. Se o codigo Ior zero,
termine o algoritmo. Se o codigo Ior 1, mostre o vetor na ordem como ele Ioi lido. Se o codigo Ior 2, mostre o vetor na
ordem inversa, do ultimo at o primeiro.
22. Faca um algoritmo que leia um vetor (A) de 100 posices. Em seguida, compacte o vetor, retirando os valores nulos e
negativos, colocando o resultado em um vetor B de 100 posices (deixe em branco as posices no utilizadas).
23. Faca um algoritmo que leia um vetor (A) de 100 posices. Em seguida, compacte o vetor, retirando os valores nulos e
negativos, colocando o resultado em um vetor B de 100 posices (DeIina o vetor B com o numero exato de posices para
que seia suIicientemente grande para conter o vetor A sem os valores nulos).
24. Faca um algoritmo que leia um vetor de 500 posices de numeros e divida todos os seus elementos pelo maior valor do
vetor. Mostre o vetor apos os calculos.
25. Faca um algoritmo que leia um vetor de 10 posices. Mostre ento os 3 menores valores do vetor.
26. Faca um algoritmo que leia dois vetores (A e B) de 50 posices de numeros. O algoritmo deve, ento, subtrair o
primeiro elemento de A do ultimo de B, acumulando o valor, subtrair o segundo elemento de A do penultimo de B,
acumulando o valor, e assim por diante. Mostre o resultado da soma Iinal.
27. Uma locadora de videos tem guardada, em um vetor de 500 posices, a quantidade de Iilmes retirados por seus clientes
durante o ano de 1993. Agora, esta locadora esta Iazendo uma promoco e, para cada 10 Iilmes retirados, o cliente tem
direito a uma locaco gratis. Faca um algoritmo que crie um outro vetor contendo a quantidade de locaces gratuitas a que
cada cliente tem direito.
28. Faca um algoritmo que leia um vetor A|10|. Preencha ento um vetor B|10| com o Iatorial de cada valor de A
respeitando as posices, caso o reIerido valor Ior positivo ou nulo. Deixe os valores negativos intactos. Mostre o vetor B.
29. Faca um algoritmo que leia um vetor A|10|. Preencha ento um vetor B|10| com o Iatorial de cada valor de A
respeitando as posices, caso o reIerido valor Ior positivo ou nulo. Substitua no Iinal os valores negativos por 0 (zero).
Mostre o vetor B.
30. Faca um algoritmo que leia um vetor A|10|. Inverta ento os valores de A. troque o primeiro pelo ultimo, segundo pelo
penultimo e assim por diante. Mostre o vetor A apos as alteraces.
31. Elaborar um algoritmo que l duas matrizes M(4,6) e N(4,6) e cria uma matriz que seia:
a) o produto de M por N:
b) a soma de M com N:
c) a diIerenca de M com N:
Escrever as matrizes calculadas.
32. 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 Iinal o vetor V.
33. Escreva um algoritmo que leia um numero inteiro A e uma matriz V 30x30 de numeros. Conte quantos valores iguais a
A esto na matriz. Crie, a seguir, uma matriz X contendo todos os elementos de V diIerentes de A. Mostre os resultados.
34. 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 secundaria
e) de todos os elementos da matriz M
Escrever essas somas e a matriz.
35. Escrever um algoritmo que l uma matriz A(15,5) e a escreva. VeriIique, a seguir, quais os elementos de A que esto
repetidos e quantas vezes cada um esta repetido. Escrever cada elemento repetido com uma mesagem dizendo que o
elemento aparece X vezes em A.
36. Escrever um algoritmo que l uma matriz M(12,13) e divida todos os 13 elementos de cada uma das 12 linhas de M
pelo maior elemento em modulo daquela linha. Escrever a matriz lida e a modiIicada.

Pagina - 54
Algoritmos e Estrutura de Dados I

37. Escrever um algoritmo que l uma matriz M(10,10) e a escreve. Troque, a seguir:
a) a linha 2 com a linha 8
b) a coluna 4 com a coluna 10
Escreva a matriz assim modiIicada.
38. Escrever um algoritmo que l uma matriz M(10,10) e a escreve. Troque, a seguir:
a) a diagonal principal com a diagonal secundaria
b) a linha 5 com a coluna 10.
Escreva a matriz assim modiIicada.
39. Escrever um algoritmo que l uma matriz M(12,13) e divida todos os 13 elementos de cada uma das 12 linhas de M
pelo maior elemento em modulo daquela linha. Escrever a matriz lida e a modiIicada.
40. Escrever um algoritmo que l uma matriz M(5,5) e cria 2 vetores SL(5) e SC(5) que contenham, respectivamente, as
somas das linhas e das colunas de M. Escrever a matriz e os vetores criados.
41. Escreva um algoritmo que l uma matriz M|5,5|. Substitua, a seguir, todos os valores negativos da matriz pelo seu
modulo. Exemplo: substitua -2 por 2, -16 por 16, assim por diante.
42. Escreva um algoritmo que l uma matriz M|6,6|. A seguir, troque os elementos da primeira coluna com os elementos da
segunda coluna, os da terceira coluna com a quarta coluna e os elementos da quinta coluna com os elementos da sexta
coluna.
43. Repita o exercicio anterior, trocando os elementos das linhas, ao invs das colunas.
44. Leia uma matriz M|5,5|. A seguir, ordene os elementos da matriz M e mostre como Iicou a Matriz ordenada, linha por
linha.
45. Faca um algoritmo que calcule a mdia dos elementos da diagonal principal de uma matriz 10 X 10 de numeros.
46. Faca um algoritmo que calcule a mdia dos elementos da diagonal secundaria de uma matriz 10 X 10 de numeros.
47. Faca um algoritmo que gere a seguinte matriz:
1 1 1 1 1 1
1 2 2 2 2 1
1 2 3 3 2 1
1 2 3 3 2 1
1 2 2 2 2 1
1 1 1 1 1 1
48. Faca um algoritmo que gere a seguinte matriz:
1 3 3 3 3 2
3 1 3 3 2 3
3 3 1 2 3 3
3 3 2 1 3 3
3 2 3 3 1 3
2 3 3 3 3 1
49. Faca um algoritmo que leia uma matriz numrica 15 X 15 e calcule a soma dos elementos da diagonal secundaria.
50. Faca um algoritmo que leia uma matriz 20x15 de numeros. calcule e mostre a soma das linhas pares da matriz.
51. Faca um algoritmo que leia uma matriz 20x20 de numeros e some cada uma das linhas, armazenando o resultado da
soma em um vetor. A seguir, multiplique cada elemento pela soma da sua linha. Mostre a matriz resultante.
52. Faca um algoritmo que leia uma matriz 50x50 de numeros e encontre o maior valor da matriz. A seguir, multiplique
cada elemento da diagonal principal pelo maior valor. Mostre a matriz apos as multiplicaces.
53. Faca um algoritmo que leia uma matriz 50x50 de numeros. A seguir, multiplique cada linha pelo elemento da diagonal
principal daquela linha. Mostre a matriz apos as multiplicaces.
54. Faca um algoritmo que leia uma matriz de 60 linhas e 10 colunas. Depois de l-la, some as colunas individualmente e
acumule a soma na 61 linha da matriz. Mostre o resultado de cada coluna no video. (Lembrete: para guardar o resultado
necessario declarar uma matriz de 61 x 10.)
55. Na teoria dos sistemas, deIine-se como elemento minimax de uma matriz o menor elemento da linha onde se encontra o
maior elemento da matriz. Escreva um algoritmo que leia uma matriz 10 X 10 de numeros e encontre seu elemento
minimax, mostrando tambm sua posico.

Pagina - 55
Algoritmos e Estrutura de Dados I

56. Escrever um programa que l uma matriz 17x17 e:
1. calcula a mdia aritmtica dos elementos hachurados na letra a:
2. o maior elemento da linha onde se encontra o menor elemento da area hachurada na letra b:
Escreva os valores calculados nos itens 1 e 2 e a matriz.
57. Faca um programa que leia uma matriz 12x12 e calcule e escreva a soma da area hachurada na letra a e o maior
elemento da area hachurada na letra b abaixo:
58. Faca um programa que leia uma matriz 12 x 12 e calcule e escreva:
a. o menor elemento e a sua posico (indices) da area hachurada:
b. a mdia dos elementos da area hachurada.
59. Faca um programa l uma matriz A 7 x 7 de numeros e cria 2 vetores ML(7) e MC(7), que contenham,
respectivamente, o maior elemento de cada uma das linhas e o menor elemento de cada uma das colunas. Escrever a matriz
A e os vetores ML e MC.
60. Execute o algoritmo abaixo, preenchendo a matriz M |2,6|:
variaveis
matriz numerico M [2,6]
numerico fat,i
inicio
para i de 1 at 6 M [2,6]= 1 2 3 4 5 6
ler M[1,i]
se M[1,i] > 0 ento
fat := 1
para j de 1 at M[1,i]
fat := fat * j
prximo j
M[2,i] := fat
seno
M[2,i] := i * i
fim_se
M[2,i] := M[2,i] - 10
prximo
fim

Pagina - 56
Na leitura da Matriz, considere os valores: -5 7 2 1 4 0