Buscar

2575_Outras Linguagens de Programação


Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 27 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 27 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 27 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1 
 
 
 
 
 
 
 
 
 
 
 
 
 
Algoritmos 
 
 
 
 
 
 
 
 
Autor: 
Milena Wohlmeister 
 2 
Algoritmos 
Milena Wohlmeister 
 
Introdução 
O uso de algoritmos é quase tão antigo quanto a matemática. Com o passar do tempo, 
entretanto, ele foi bastante esquecido pela matemática. Com o advento das máquinas de 
calcular e mais tarde os computadores, o uso de algoritmos ressurgiu com grande vigor, 
como uma forma de indicar o caminho para a solução dos mais variados problemas. 
Algoritmo não é a solução do problema, pois, se assim fosse, cada problema teria um único 
algoritmo. Algoritmo é um caminho para a solução de um problema, e em geral, os 
caminhos que levam a uma solução são muitos. 
Ao longo dos anos surgiram muitas formas de representar os algoritmos, algumas 
utilizando linguagens semelhantes às linguagens de programação e outras utilizando formas 
gráficas, como os fluxogramas. 
Dentre as formas de representação usadas, deu-se uma acentuada preferência por formas 
estruturadas, cuja principal vantagem é a de facilitar a legibilidade e compreensão dos 
algoritmos. 
O aprendizado de algoritmos não se consegue a não ser através de muitos exercícios. 
Não se aprende algoritmos: 
• Copiando algoritmos 
• Estudando algoritmos 
Só se aprende algoritmos: 
• Construindo algoritmos 
• Testando algoritmos 
Conceitos Básicos 
Essa seção visa conceituar constante, variável, operação, expressão e atribuição. Considere-
se a fórmula matemática simples do cálculo do volume de uma esfera: 
V = 4 pi R3 
 3 
 3 
onde se encontram: 
1- valores que podem ser classificados como: 
a) valores constantes, invariantes em todas as aplicações da fórmula, no caso, 
os valores 4, 3 e pi, aos quais denomina-se constantes. 
b) valores a serem substituídos na fórmula, em cada aplicação. A representação 
destes valores, usualmente, é feita através de letras que recebem o nome de 
variáveis e tornam a fórmula genérica, possível de ser aplicada para resolver 
uma certa classe de problemas e não apenas um problema específico. 
2- Operações a serem feitas sobre determinados operandos (valores), para a obtenção 
da solução do problema. 
Na fórmula do volume da esfera, estão representadas as operações de divisão, multiplicação 
e potenciação, feitas sobre os operandos, 4, 3, pi e R, numa seqüência pré-determinada, mas 
nem sempre rigorosa, devido às leis matemáticas. 
Sob este aspecto, uma fórmula matemática é simplesmente uma descrição de um conjunto 
de ações que devem ser executadas sobre um conjunto de objetos, sendo estes, constantes 
ou variáveis. 
Existe uma outra relação importante entre objeto e operação, no sentido de que, certas 
operações somente podem ser executadas sobre determinados objetos. Por exemplo: 
• a raiz quadrada de um número qualquer somente pode ser feita se o número for real 
e positivo; 
• o cálculo do fatorial de um número somente pode ser feito se o número for inteiro e 
positivo; 
• a determinação do arco seno trigonométrico somente pode ser feita se o valor 
estiver no intervalo [ -1 , 1 ]. 
Nos exemplos apresentados, pode-se notar dois tipos de limitações: 
1- limitação de classe de valores: inteiros, reais, lógicos, literais; 
2- limitações de intervalo, pois algumas operações não atuam sobre todo conjunto, mas 
somente sobre parte dele. 
Os tipos de dados (valores) existentes podem, então, ser inteiros, reais, caracteres (ou 
literais) e lógicos (ou booleanos). Esses tipos básicos são bem definidos e podem ser 
combinados de modo a formar tipos de dados estruturados, incluindo vetores, matrizes, 
registros e arquivos. 
Uma constante é, então, um objeto invariante em cada execução de uma expressão, 
enquanto variável é um objeto que representa um valor que pode ser alterado a cada 
execução da expressão em que estiver inserida. 
 4 
As variáveis podem ser visualizadas como receptáculos de valores. Cada receptáculo é 
identificado através de um nome e somente pode receber valores de um determinado tipo. 
Pode-se comparar uma variável também como sendo uma caixa identificada por um nome 
colocado na tampa e na qual pode ser armazenado um valor. Enquanto o nome sempre 
permanece o mesmo, o conteúdo da caixa pode ser substituído. 
Assim, cada vez que a fórmula do cálculo do volume de uma esfera for utilizada, ocorrerá o 
seguinte: 
• a variável R deverá receber um valor antes da execução dos cálculos; 
• a variável V receberá um valor após a execução dos cálculos; 
• o valor da variável R será utilizado no cálculo do valor de V; 
• a cada nova utilização da fórmula, o valor de R poderá ser alterado e 
conseqüentemente o valor de V também o será. 
Uma vez conceituados constante e variável pode-se analisar as combinações deles na 
construção de expressões. Expressões, no sentido matemático, são representações 
simbólicas de seqüências de operações a serem feitas sobre determinados operandos, 
visando a obtenção de um resultado. 
As operações representadas nas expressões devem ser válidas para os operandos 
especificados para que seja possível a obtenção de um resultado. 
O conjunto de operandos e operações que compõem uma expressão determina o tipo da 
expressão e define o tipo de resultado a ser obtido. As expressões mais freqüentemente 
usadas na solução de problemas enquadram-se em uma das seguintes categorias: 
• expressões aritméticas: produzem como resultado um número; 
• expressões literais: produzem como resultado um texto; 
• expressões lógicas: produzem como resultado um valor lógico. 
Para cada uma das categorias acima, pode ser definido um conjunto de operações possíveis. 
Por exemplo, as expressões aritméticas podem utilizar as operações de adição, subtração, 
multiplicação, divisão, entre outras. As expressões literais podem utilizar a operação de 
concatenação, unindo dois conjuntos de caracteres. 
Nesse primeiro instante, irão ser estudadas as expressões aritméticas, compostas por: 
• operandos: constantes e variáveis; 
• operadores: que indicam as operações a serem feitas; 
• ordem de avaliação: símbolos que indicam alterações na ordem usual de avaliação. 
Por exemplo, o uso de parênteses. 
Na resolução de uma expressão aritmética deve-se seguir uma ordem pré-definida 
dependente dos operadores que aparecem nesta expressão. A prioridade dos operadores 
básicos é a que segue: 
 5 
1- potenciação, radiciação e operações unárias 
2- multiplicação e divisão 
3- soma e subtração 
4- parênteses podem alterar esta ordem 
5- segue-se da esquerda para a direita em caso de indeterminação (mais de uma 
operação com a mesma prioridade) 
A última operação realizada em uma expressão se chama atribuição de valor, que é o ato 
de armazenar ou escrever um valor em uma variável. A atribuição compreende uma ação de 
substituição do conteúdo de uma variável cujo efeito é: após a atribuição, a variável passa a 
representar um novo valor, sendo “perdido” o seu valor anterior. 
Em algoritmos, existem várias maneiras de representar uma atribuição de valor, como: 
variavel = valor 
variavel := valor 
variavel <- valor 
Será utilizada a segunda forma para representar uma atribuição. Isso será feito para 
diferenciar o operador de atribuição do operador de igualdade, muito utilizado em 
operações lógicas. Por exemplo, se N = 5 fosse considerado uma atribuição, então o valor 5 
seria atribuído à variável N. Se N = 5 fosse considerada uma operação de igualdade, então o 
resultado seria verdadeiro se N fosse igual a 5 e falso se N fosse diferente de 5. 
Considerando as atribuições: 
A := B 
B := C 
nesta ordem e supondo que A tenha valor 5, B tenha valor 2 e C tenha valor 10, tem-se como 
resultado final A com valor 2 e B com valor 10. Se for alterada apenas a ordem das duas 
atribuiçõespara: 
B := C 
A := B 
tem-se como resultado final A com valor 10 e B com valor 10. 
Outro exemplo mostra que se o A tiver valor 2 e B valor 4 e se forem intercambiados os 
valores das variáveis A e B não é possível escrever simplesmente: 
A := B 
B := C 
Cujo resultado seria A com valor 4 e B com valor 4 também. Nesse caso tem-se que utilizar 
uma variável auxiliar, assim: 
C := A 
 6 
A := B 
B := C 
Algoritmos Puramente Seqüenciais 
Essa seção visa conceituar algoritmo e caracterizar algoritmos puramente seqüenciais, além 
de apresentar a formalização da linguagem algorítmica. 
Em termos conceituais, algoritmo é um conjunto finito de regras, bem definidas, para a 
solução de um problema em um tempo finito. Considerando o seguinte problema: dados 
três valores não nulos a, b, c, determinar a sua média aritmética, harmônica e geométrica. 
As tarefas a serem executadas para a solução deste problema podem ser descritas assim: 
1- obter os valores de a, b, c 
2- calcular a média aritmética pela fórmula: média aritmética = a + b + c 
 3 
3- calcular a média harmônica pela fórmula: média harmônica = 3 
 1 + 1 + 1 
 a b c 
4- calcular a média geométrica pela fórmula: média geométrica = 3 a x b x c 
5- comunicar os resultados obtidos: média aritmética, média harmônica e média 
geométrica 
6- terminar 
A seqüência de tarefas apresentada, especificada passo a passo, é um algoritmo, pois é um 
conjunto finito de regras que podem ser consideradas bem definidas e cuja execução produz 
a solução do problema proposto, após um tempo finito. 
É importante que, num algoritmo, cada passo esteja precisamente definido, não deixando 
nenhuma margem a ambigüidades. A correção é uma qualidade diferente das demais que 
podem ser consideradas em relação a um algoritmo. Enquanto as outras qualidades são 
relativas, isto é, podem ser mais importantes em alguns algoritmos e menos em outros, a 
correção é condição para que o algoritmo tenha sentido de existência. 
As outras qualidades importantes em um algoritmo, além da correção, são: 
• efetividade: o algoritmo deve fazer aquilo a que se propõe em tempo hábil; 
• eficiência e clareza: o algoritmo deve fazer aquilo a que se propõe da forma mais 
econômica possível, tanto do ponto de vista da máquina, quanto do usuário; 
• generalidade: se possível, o algoritmo deve prever a necessidade de futuras 
adaptações e estar preparado para aceitá-las. 
Na prática, não é importante se ter apenas um algoritmo, mas sim um bom algoritmo. 
Geralmente existe mais de uma seqüência de operações que levam à execução da mesma 
tarefa, isto é, existem vários algoritmos para um mesmo problema. Após encontrada uma 
 7 
solução, pode ser efetuado um refinamento no algoritmo, na tentativa de se alcançar as 
qualidades citadas anteriormente. 
No exemplo das médias foi utilizada uma linguagem algorítmica informal, onde não 
existem regras rígidas na construção do algoritmo. Para os algoritmos desenvolvidos a 
partir de agora, será utilizada uma linguagem algorítmica estruturada, baseada na 
linguagem Pascal. 
O algoritmo em si se constitui basicamente em: 
• entrada de dados 
• processamento 
• saída de dados 
Para a entrada de dados será utilizada a instrução: 
ler(lista de variáveis); 
Exemplo: ler(a,b,c); 
Para a saída de dados será utilizada a instrução: 
mostre(lista de variáveis/texto qualquer); 
Exemplo: mostre(‘Alo mundo!’); 
 mostre(‘O resultado final é ’, soma); 
 mostre(‘A média de ’, a , ‘, ’ , b , ‘ e ’ , c , ‘ é ’ , media); 
O texto mostrado nos exemplos é conhecido como string, e é assim que será chamado 
daqui pra diante. Um string, obrigatoriamente, deve estar dentro de apóstrofes. Percebe-se 
que é possível intercalar strings com variáveis na mostragem. 
Tanto a instrução ler quanto o mostre tem ao seu final um ponto-e-vírgula. Isso também é 
obrigatório em todo final de instrução. A utilização de maiúsculas ou minúsculas na 
construção do algoritmo fica por conta de quem vai construí-lo. 
Como já foi comentado, o operador das atribuições será o :=, mas as expressões aritméticas 
tem que estar dispostas todas na mesma linha, usando os operadores comumente utilizados 
em computadores. No exemplo das médias, as expressões ficariam assim: 
 a + b + c ma := (a + b + c ) / 3; 
 3 
 3 mh := 3 / (1/a + 1/b + 1/c ); 
 1 + 1 + 1 
 a b c 
 8 
 
3
 a x b x c mg := (a * b * c) ^ (1 / 3); 
 
Os operadores são (em ordem de prioridade) : 
1. potenciação Ex.: 2^3 e radiciação Ex.: 12 ^(1/2) 2 12 
2. multiplicação * e divisão / 
3. adição + e subtração – 
Os tipos de dados utilizados em variáveis são : 
• inteiro: variáveis que armazenam valores inteiros; 
• real: variáveis que armazenam valores reais; 
• caracter: variáveis que armazenam apenas uma letra, número ou símbolo; 
• string: variáveis que armazenam um conjunto de caracteres; 
• lógico: variáveis que armazenam verdadeiro ou falso. 
Cada variável vai ter um nome identificador que deve ser iniciado por letras ou o caracter 
underline ( _ ). O resto é formado por letras, dígitos e caracter underline. Não é permitida a 
utilização de espaços para a formação do identificador e nem acentuação. Exemplo de 
identificadores válidos: valortotal, soma_item1. 
É muito importante que se tenha cuidado com a sintaxe do algoritmo, ou seja, a grafia tem 
que estar rigorosamente dentro das especificações. 
Em termos estruturais, o algoritmo possui quatro áreas, na ordem: 
1. área para identificação; 
2. área para declarações; 
3. área para subalgoritmos; 
4. área do algoritmo em si. 
A terceira área somente será utilizada mais adiante. A área para identificação é formada 
pela palavra-chave programa, um espaço em branco, um identificador, que segue as 
mesmas regras das variáveis, mas pode ter no máximo dez caracteres, e um ponto-e-vírgula. 
Exemplo: 
programa medias; 
A área para declarações é o espaço destinado para declarar as variáveis que serão utilizadas 
no algoritmo. Todas as variáveis devem ser declaradas, obrigatoriamente. Sempre começa 
pela palavra-chave var. Exemplo: 
var 
 a,b,c: inteiro; 
 soma: real; 
 9 
 letra: caracter; 
 nome1, nome2: string; 
 x: lógico; 
A área do algoritmo começa com a palavra-chave início e termina com a palavra-chave 
fim com um ponto final. Dentro dessa área vão estar as entradas, o processamento e as 
saídas do algoritmo, ou seja, é o algoritmo em si. Exemplo: 
início 
 <entradas> 
 <processamento> 
 <saídas> 
fim. 
Percebe-se, nos exemplos, um pequeno avanço para a direita em alguns momentos. Isso se 
chama endentação do algoritmo e, apesar de não influenciar na sua execução, é muito 
utilizada para sua organização e entendimento. Mais adiante, quando os algoritmos 
tomarem dimensões maiores e for necessário mais do que um nível de endentação, se 
notará mais claramente a sua importância. 
Com o que foi visto até aqui, é possível construir algoritmos puramente seqüenciais, 
onde a execução se dá em ordem ascendente às instruções, de cima para baixo. Como 
exemplo, o algoritmo abaixo mostra a resolução do problema das médias apresentada 
anteriormente. 
programa medias; 
var 
 a,b,c,ma,mh,mg: real; 
inicio 
 ler(a,b,c); 
 ma := (a + b + c ) / 3; 
 mh := 3 / (1/a + 1/b + 1/c ); 
 mg := (a * b * c) ^ (1 / 3); 
 mostre(‘Media Aritmetica: ’, ma); 
 mostre(‘Media Harmonica: ’, mh); 
 mostre(‘Media Geometrica: ’, mg); 
fim. 
Percebe-se a existência das três áreas bem definidas, com a identificação doalgoritmo, a 
declaração das variáveis utilizadas e do algoritmo em si, que é executado seqüencialmente. 
Exercícios 
1. Escrever um algoritmo que lê o número de um funcionário, seu número de horas 
trabalhadas, o valor que recebe por hora, e o número de filhos com idade menor do 
que 14 anos. Calcular e mostrar o salário deste funcionário. 
2. Escrever um algoritmo que calcula e mostra o fatorial de 5. Um fatorial é 
caracterizado pela fórmula n! => n x (n-1) x (n-2) x ... x 1. 
3. Escrever um algoritmo que lê 3 valores a, b, c e calcula e mostra: 
 10 
a) A área do triângulo que tem a por base e b por altura. 
Fórmula: (b x h) 
 2 
b) A área do círculo de raio c. 
Fórmula: piR2 
c) A área do trapézio que tem a e b por bases e c por altura. 
Fórmula: (B + b).h 
 2 
d) A área do quadrado de lado b. 
Fórmula: lado2 
e) A área do retângulo de lados a e b. 
Fórmula: lado1 x lado2 
f) A área da superfície de um cubo que tem c por aresta. 
Fórmula: 6a2 
4. Escrever um algoritmo que lê p, u e r respectivamente o 1o termo de uma progressão 
aritmética, o último termo da progressão e a razão desta progressão. Determinar a 
soma dos termos desta progressão aritmética e mostrar. 
n = an – a1 + r Sn = (a1 + an) . n 
 r 2 
5. Escrever um algoritmo que lê o código da peça 1, o número de peças 1, o valor 
unitário da peça 1, o código da peça2, o número de peças 2, o valor unitário da peça 
2 e a percentagem do IPI a ser acrescentado e calcula e mostra o valor total a ser 
pago. 
6. Um avião em linha reta, a uma altitude a passa sobre um ponto p num instante t = 0. 
Se a velocidade é v, calcular a distância d do avião ao ponto p no tempo t = 30. 
Escrever um algoritmo que lê v e a e calcula e mostra a distância ao ponto p após 30 
segundos. 
 d = a2 + vt2 
 
 
7. Escrever um algoritmo para calcular e mostrar os sucessivos valores de “E” usando 
a série abaixo e considerando primeiro 3 termos, depois 4 termos e finalmente 5 
termos. 
E = 1 + 1 + 1 + 1 + 1 
 1! 2! 3! 4! 
0 vt 30 
a 
d 
p 
 11 
8. Escrever um algoritmo que lê o valor de um empréstimo e calcule e mostre o valor 
de cada amortização, considerando 24 amortizações a uma taxa de 48%. 
valor da amortização = valor do emprestimo x taxa 
 no de amortizações 
9. Escrever um algoritmo que lê um valor monetário e calcula qual o menor número 
possível de notas de 5000, 1000, 500, 200, 100, 50, 10, 5 e 1 em que o valor lido 
pode ser decomposto. Mostrar o valor lido e a relação de notas necessárias. Dica: 
Utilizar a instrução truncar, que serve para pegar apenas a parte inteira de uma 
divisão. Ex.: truncar(8 / 3) produz o resultado 2 . 
10. Escrever um algoritmo que lê o número de um vendedor, o seu salário-fixo, o total 
de vendas por ele efetuadas e o percentual que ganha sobre o total de vendas. 
Calcular o salário total do vendedor. Mostrar o número do vendedor e o salário 
total. 
11. Escrever um algoritmo que lê 3 valores a, b, c que são lados de um triângulo e 
calcule e mostre a área deste triângulo. 
Area = s(s – a)(s – b)(s – c) 
onde s é o semi-perímetro s = a + b + c 
 2 
12. Um sistema de equações lineares do tipo: 
ax + by = c 
dx + ey = f 
pode ser resolvido segundo mostrado abaixo: 
x = ce – bf e y = af – cd 
 ae – bd ae – bd 
Escrever um algoritmo que lê os coeficientes a, b, c, d, e, f e calcula e mostra os 
valores de x e y. 
13. O custo ao consumidor, de um carro novo, é a soma do custo de fábrica com a 
percentagem do distribuidor e dos impostos (aplicados ao custo de fábrica). 
Supondo que a percentagem do distribuidor seja de 28% e os impostos de 45%, 
escrever um algoritmo para ler o custo de fábrica de um carro e mostrar o custo ao 
consumidor. 
14. Uma revendedora de carros usados paga a seus funcionários vendedores, um salário 
fixo por mês, mais uma comissão também fixa para cada carro vendido e mais 5% 
do valor das vendas por ele efetuadas. Escrever um algoritmo que lê o número do 
vendedor, o número de carros por ele vendidos, o valor total de suas vendas, o 
salário fixo e o valor que recebe por carro vendido e calcula e o salário mensal do 
vendedor, mostrando-o juntamente o seu número de identificação. 
15. Considerando que o aumento dos funcionários é de 80% do INPC e mais um 
percentual de produtividade discutido com a empresa, escrever um algoritmo que lê 
 12 
o número do funcionário, seu salário atual, o índice INPC e o índice de 
produtividade conquistado e mostra o número do funcionário, seu aumento e o valor 
de seu novo salário. 
16. Escrever um algoritmo que lê 3 valores a, b, c. Encontre o maior dos 3 valores e o 
mostre com a mensagem: “É o maior” 
Maior entre a e b = a + b + |a – b| 
 2 
Dica: utilize a instrução absoluto para descobrir o valor absoluto. 
Ex.: absoluto(a – b) 
 
Algoritmos com Seleção 
Essa seção visa conceituar algoritmos com seleção e expressões lógicas, bem como 
explicitar as instruções existentes na linguagem algorítmica. 
Existem algoritmos com situações resolvidas através de passos cuja execução é 
subordinada a uma condição. Tais algoritmos são denominados algoritmos com seleção. A 
condição aqui referenciada é denominada expressão lógica ou expressão booleana. A 
álgebra booleana é a que regulamenta as expressões lógicas, onde não existem outros 
estados possíveis além do verdadeiro e falso. 
As expressões lógicas são construídas baseadas em dois tipos de operadores, os operadores 
relacionais, responsáveis pelas proposições realizadas; e os operadores lógicos, 
responsáveis pela ligação de duas ou mais proposições. 
Operadores Relacionais 
Operador Operação 
= Igual 
<> Diferente 
< Menor 
> Maior 
<= Menor ou igual 
>= Maior ou igual 
 
Operadores Lógicos 
Operador Operação 
não “não” booleano 
e “e” booleano 
ou “ou” booleano 
Duas são as instruções que podem ser utilizadas. A primeira delas: 
 13 
se <expressão lógica> então <instrução>; 
Exemplo: 
se (a > 2) então mostre(‘O valor é maior que 2’); 
A instrução do então pode estar na linha seguinte, endentada. Exemplo: 
se (a > 0) e (a < 2) então 
 mostre(‘O valor é maior que 0 e menor que 2’); 
Nos exemplos, o string apenas será mostrado se a expressão for verdadeira. Quando existe 
mais do que uma instrução a ser executada, é necessário inserir as instruções no que se 
chama bloco de instruções. Um bloco de instruções sempre possui um início e um fim; 
Por exemplo: 
se (a > 2) então 
início 
 mostre(‘O valor é maior que 2. O novo valor é 4’); 
 a := 4; 
fim; 
Quando existem instruções a serem executadas quando a expressão for falsa, deve-se 
utilizar o senão, assim: 
se (a > 2) então 
 mostre(‘O valor é maior que 2’) 
senão 
 mostre(‘O valor é menor ou igual a 2’); 
Na linguagem algorítmica que está sendo utilizada, a instrução anterior ao senão não pode 
ter ponto-e-vírgula. No caso de se usar um bloco de instruções, o fim fica sem ponto-e-
vírgula, assim: 
se (a > 2) então 
início 
 mostre(‘O valor é maior que 2. O novo valor é 4’); 
 a := 4; 
fim 
senão 
inicio 
 mostre(‘O valor é menor ou igual a 2. O novo valor é 5’); 
 a := 5; 
fim; 
No exemplo abaixo, os resultados possíveis são: 
se (a > 0) e (b < 0) então ... 
 V V V 
 V F F 
 F F V 
 14 
 F F F 
Se for mudado o operador lógico: 
se (a > 0) ou (b < 0) então ... 
 V V V 
 V V F 
 F V V 
 F F F 
Pode-se ter expressões muito maiores, cujo resultado final vai ser verdadeiro ou falso, 
dependendo dos valores existentes nas variáveis envolvidas na expressão inteira,como: 
se não(((a > b) e (b > c)) ou ((c > d) e (d > f))) então ... 
Em algumas situações, pode-se utilizar a instrução caso no lugar do se. 
caso <variável> faça <valor1 : instrução1>; <valor2 : instrução2>; <valorn : 
instruçãon>; senão <instrução>; fimcaso; 
Assim, as instruções abaixo: 
se (a = 1) então 
 mostre(‘um’); 
se (a = 2) então 
 mostre(‘dois’); 
se (a = 3) então 
 mostre(‘três’); 
se (a = 4) então 
 mostre(‘quatro’); 
se (a < 1) ou (a > 4) então 
 mostre(‘nenhum’); 
Podem ser substituídas por: 
caso a faça 
 1: mostre(‘um’); 
 2: mostre(‘dois’); 
 3: mostre(‘três’); 
 4: mostre(‘quatro’); 
 senão 
 mostre(‘nenhum’); 
fimcaso; 
Exercícios 
1. Escrever um algoritmo que lê 3 valores a, b, c e calcula e mostra a média ponderada 
com peso 5 para o maior dos três valores e 2.5 para os outros 2. 
2. Escrever um algoritmo que lê 3 valores a, b, c e verifica se eles formam ou não um 
triângulo. Supor que os valores lidos são inteiros e positivos. Caso os valores 
 15 
formarem um triângulo, calcular e mostrar a área deste triângulo. Se não formarem, 
mostrar os valores lidos e a mensagem “não formam triângulo”. 
3. Escrever um algoritmo que lê 2 valores a, b e os mostra com a mensagem “são 
múltiplos” ou “não são múltiplos”, conforme o caso. 
4. Escrever um algoritmo que lê o número de um vendedor de uma empresa, seu 
salário fixo e o total de vendas por ele efetuadas. Cada vendedor recebe um salário 
fixo, mais uma comissão proporcional às vendas por ele efetuadas.A comissão é de 
3% sobre o total de vendas até 1000 reais e 5% sobre o que ultrapassar esse valor. 
Mostrar o número do vendedor, o total de suas vendas, seu salário fixo e seu salário 
total. 
5. Escrever um algoritmo que lê um conjunto de 4 valores i, a, b, c, onde i é um valor 
inteiro e a, b, c são quaisquer valores reais. A seguir: 
• Se i = 1 mostrar os 3 valores a, b, c em ordem crescente. 
• Se i = 2 mostrar os 3 valores a, b, c em ordem decrescente. 
• Se i = 3 mostrar os 3 valores de forma que o maior valor fique entre os 
outros dois. 
Subalgoritmos e Recursividade 
Muitos problemas de solução mais ou menos complexa podem ser divididos, 
sucessivamente, em problemas menores e de lógica mais fácil. Em vez de se escrever um 
algoritmo grande, se escreve vários algoritmos menores, os quais, conjuntamente, resolvem 
o problema proposto. 
Os trechos de algoritmo que efetuam um ou mais cálculos determinados denominam-se 
subalgoritmos. Em um algoritmo, eles ficam situados na área dos subalgoritmos e são 
formados pela palavra-chave procedimento ou proced, acompanhados por um 
identificador único que segue as mesmas regras do nome do programa, e um ponto-e-
vírgula. O subalgoritmo em si fica em um bloco de instruções. 
Como exemplo, é mostrado a seguir o algoritmo de cálculo das médias com a utilização de 
subalgoritmos. 
programa medias; 
var 
 a,b,c,ma,mh,mg: real; 
 
proced leitura; 
início 
 mostre(‘Digite 3 valores: ’); 
 ler(a,b,c); 
fim; 
 
proced calculo; 
início 
 ma := (a + b + c ) / 3; 
 16 
 mh := 3 / (1/a + 1/b + 1/c ); 
 mg := (a * b * c) ^ (1 / 3); 
fim; 
 
proced mostragem 
início 
 mostre(‘Media Aritmetica: ’, ma); 
 mostre(‘Media Harmonica: ’, mh); 
 mostre(‘Media Geometrica: ’, mg); 
fim; 
 
inicio 
 leitura; 
 calculo; 
 mostragem; 
fim. 
O algoritmo em si sempre fica após os subalgoritmos. No exemplo, os procedimentos são 
chamados dentro da área do algoritmo, mas isso não é uma regra. É possível chamar um 
procedimento dentro de outro procedimento, além de ser possível chamá-lo quantas vezes 
forem necessárias. Esse é um dos objetivos dos subalgoritmos: a reutilização de blocos de 
instruções que se repetiriam em um algoritmo seqüencial. 
Além disso, muitas vezes, é necessário repetir o mesmo procedimento de dentro dele 
mesmo. Isso se chama recursividade, e é muito útil, por exemplo, para validar a entrada de 
dados. O subalgoritmo 
proced leitura; 
início 
 mostre(‘Digite valor positivo: ’); 
 ler(a); 
 se (a < 0) então 
 início 
 mostre(‘Valor inválido’); 
 leitura; 
 fim; 
fim; 
garante que o valor digitado para a variável a obrigatoriamente será um valor positivo. 
Exercícios 
1. Refazer o algoritmo 5 da lista anterior, utilizando subalgoritmos e considerando que 
o valor para i deve ser inteiro no intervalo de 1 a 3. 
2. Escrever um algoritmo que lê um conjunto de 6 valores x1, x2, y1, y2, z1, z2 em um 
intervalo de –10 a 10, que representam as coordenadas cartesianas de 3 pontos 
P1(x1, x2), P2(y1, y2) e P3(z1, z2). Calcule as distâncias entre P1 e P2, P1 e P3, P2 
e P3. 
distancia = (y1 – x1)2 + (y2 – x2)2 para P1 e P2. 
 17 
Se os segmentos de retas calculados formarem um triângulo, calcular e mostrar a 
área deste triângulo. Caso contrário, mostrar as distâncias calculadas. 
3. Escrever um algoritmo que lê 4 comprimentos de lados a, b, c, d, em um intervalo 
de 10 a 50, e os ordena em ordem decrescente, mostrando-os. 
4. Escrever um algoritmo que lê 3 comprimentos de lados a, b, c, em um intervalo de 5 
a 10, e os ordena em ordem decrescente, de modo que o a represente o maior dos 3 
lados lidos. Determine, a seguir, o tipo de triângulo que estes 3 lados formam, com 
base nos seguintes casos, mostrando sempre a mensagem adequada: 
• Se a > b + c não formam triângulo algum; 
• Se a2 = b2 + c2 formam um triângulo retângulo. 
• Se a2 > b2 + c2 formam um triângulo obtusângulo. 
• Se a2 < b2 + c2 formam um triângulo acutângulo. 
• Se forem todos iguais formam um triângulo eqüilátero. 
• Se a = b ou b = c ou a = c então formam um triângulo isósceles. 
5. O departamento que controla o índice de poluição do meio ambiente mantém 3 
grupos de indústrias que são altamente poluentes do meio ambiente. O índice de 
poluição aceitável varia de 0.05 até 0.25. Se o índice subir de 0.25 até 0.3, as 
indústrias do 1o grupo são intimadas a suspenderem suas atividades. Se subir até 
0.4, as indústrias do 1o e 2o grupo são intimadas a suspenderem suas atividades. Se o 
índice for maior que 0.4, todos os 3 grupos devem ser notificados a paralisarem suas 
atividades. Escrever um algoritmo que lê o índice de poluição medido (acima de 
0.05) e emite a notificação adequada aos diferentes grupos de empresas. 
6. Escrever um algoritmo que lê a hora de início de um jogo e a hora do final do jogo 
(considerando apenas horas inteiras) e calcula e mostra a duração do jogo em horas, 
sabendo-se que o tempo máximo de duração do jogo é de 24 horas e que o jogo 
pode iniciar em um dia e terminar no dia seguinte. 
7. O cardápio de uma casa de lanches é dado pela tabela a seguir: 
Código 
100 
101 
102 
103 
104 
105 
106 
Especificação 
Cachorro-quente 
Bauru simples 
Bauru com ovo 
Hamburger 
Cheese burger 
Refrigerante 
Cerveja 
Preço Unitário 
3.50 
4.00 
4.50 
5.50 
6.00 
1.50 
2.50 
Escrever um algoritmo que lê o código dos itens, o número de itens de cada tipo 
adquiridos por um consumidor. A cada item fazer a pergunta: “Deseja mais algum 
item?”. Se a resposta for negativa calcular e mostrar o valor da conta a pagar. A 
 18 
seguir, perguntar: “Deseja calcular a conta de mais algum consumidor?”. Encerrar o 
algoritmo apenas se a resposta for negativa. 
8. Escrever um algoritmo que lê o número de um funcionário, inteiro e positivo, o 
número de horas por ele trabalhadas, o valor que recebe por hora, o número de 
filhos com idade inferior a 14 anos, a idade, o tempo de serviço do funcionário e o 
valor do salário família por filho. 
Calcular o salário bruto, o desconto do INSS (8,5% do salário bruto) e o salário 
família. Calcular o IR como segue: 
• Se salário bruto for maior ou igual a 1500 então IR = 15% do salário bruto. 
• Se salário brutofor maior ou igual a 500 e menor que 1500 então IR = 7% 
do salário bruto. 
• Se salário bruto for menor que 500 então IR = 0. 
Calcular o adicional conforme especificado: 
• Se idade for superior a 40 anos, adicional = 2% do salário bruto. 
• Se tempo de serviço for superior a 15 anos, adicional = 3.5% do salário 
bruto. 
• Se tempo de serviço for menor que 15 anos, mas superior a 5 anos e idade 
maior do que 30 anos, adicional = 1,5% do salário bruto. 
Calcular o salário líquido, mostrando-o juntamente com o número do funcionário, 
seu salário bruto, o total de descontos e o adicional. 
9. Escrever um algoritmo que lê o número de identificação e as 3 notas obtidas por um 
aluno nas 3 verificações e a média dos exercícios que fazem parte da avaliação. Para 
cada aluno, calcular a média de aproveitamento, usando a fórmula: 
MA = N1 + N2 x 3 + N3 x 3 + ME 
 2 
A atribuição de conceitos obedece à tabela abaixo: 
Média de Aproveitamento Conceito 
>= 9.0 
>= 7.5 e < 9.0 
>= 6.0 e < 7.5 
>= 4.0 e < 6.0 
< 4.0 
A 
B 
C 
D 
E 
O algoritmo deve mostrar o número do aluno, suas notas, a média dos exercícios, a 
média de aproveitamento, o conceito correspondente e a mensagem: “Aprovado” se 
o conceito for A, B ou C e “Reprovado” se o conceito for D ou E. Para cada aluno, 
perguntar: “Deseja calcular a média de aproveitamento de mais algum aluno?”. 
10. A empresa XYZ decidiu conceder um aumento de salários a seus funcionários de 
acordo com a tabela abaixo: 
Salário Atual Índice de aumento 
 19 
0 a 400.00 
400.01 a 700.00 
700.01 a 1000.00 
1000.01 a 1800.00 
1800.01 a 2500.00 
Acima de 2500.00 
15% 
12% 
10% 
7% 
4% 
Sem aumento 
Escrever um algoritmo que lê, para cada funcionário, o seu número e o seu salário 
atual e mostra o número do funcionário, seu salário atual, o percentual de seu 
aumento e o valor do salário corrigido. Perguntar ao final: “Deseja calcular a 
correção do salário de mais algum funcionário?”. 
11. Escrever um algoritmo que lê a hora de início de um jogo e a hora de término do 
jogo, ambas subdivididas em 2 valores distintos, a saber: horas e minutos. Calcular 
e mostrar a duração do jogo, também em horas e minutos, considerando que o 
tempo máximo de duração de um jogo pode iniciar em um dia e terminar no dia 
seguinte. 
12. Escrever um algoritmo que lê um código i, em um intervalo de 1 a 5, e 3 valores a, 
b, c inteiros e positivos, com a < b. 
• Se código i = 1 então calcular a área do trapézio de base a e b e altura c e 
mostrar juntamente com os valores lidos. 
• Se código i = 2 então se a, b, c formarem equação do 2o grau e esta tiver 
raízes reais, calcular e mostrar as raízes desta equação. 
Formula = -b ± b2– 4ac 
 2a 
• Se código i = 3 então calcular a média geométrica e mostrar juntamente com 
os valores lidos. 
• Se código i = 4 então se a, b, c formarem triângulo, calcular e mostrar a área 
deste triângulo. 
• Se código i = 5 então calcular e mostrar a soma dos inteiros de a inclusive 
até b com uma variação igual a c (se a = 5, b = 19 e c = 3, então soma = 
5+8+11+14+17 = 55) 
Algoritmos com Repetição e Vetores/Matrizes 
Essa seção visa conceituar algoritmos com repetição, apresentar as instruções para 
manipulação desse tipo de algoritmo, variáveis do tipo contador e do tipo acumulador, além 
de apresentar conceitos e utilização de vetores e matrizes. 
Todo algoritmo que possui um ou mais de seus passos repetidos um determinado número 
de vezes denomina-se algoritmo com repetição. São basicamente três as instruções 
existentes: 
 20 
A primeira instrução, mostrada a seguir, faz com que uma variável inteira inicie com um 
valor e repita o bloco de instruções tantas vezes quantas forem necessárias para se atingir o 
valor final, sempre adicionando (a) ou subtraindo (menosaté) um número. 
para <variável inteira> := <valor inicial> a/menosaté <valor final> faça <bloco de 
instruções> 
Exemplo: 
a:= 0; 
para i:= 1 a 5 faça 
início 
 a:= a + i; 
 mostre(a); 
fim; 
A variável inteira utilizada pode ser utilizada em expressões, como o a:= a + i; , mas não 
pode ter um valor atribuído a ela, como por exemplo i:= i + 1;. O incremento/decremento 
da variável inteira é feito automaticamente. 
A segunda instrução repete o bloco de instruções enquanto a expressão lógica for 
verdadeira. 
enquanto <expressão lógica> faça <bloco de instruções>; 
Exemplo: 
a:= 0; 
enquanto (a < 5) faça 
início 
 a:= a + 1; 
 mostre(a); 
fim; 
A terceira instrução é parecida com a segunda, mas se caracteriza por ter a expressão lógica 
no final do bloco de instruções, garantindo a execução do bloco uma vez, pelo menos, além 
de repeti-lo até que a expressão for verdadeira. O bloco de instruções não tem início-fim. 
O que garante o término é o próprio até. 
repita <bloco de instruções> até <expressão lógica>; 
Exemplo: 
a:= 0; 
repita 
 a:= a + 1; 
 mostre(a); 
até (a = 5); 
 21 
Em muitos casos, há a necessidade da utilização de variáveis contadoras dentro de um 
bloco de repetição. As variáveis contadoras recebem um valor inicial (geralmente 0) fora do 
bloco e é incrementada dentro do bloco (geralmente em 1). 
Em outros casos, há a necessidade de utilizar variáveis acumuladoras, onde o valor inicial 
geralmente é zero e é incrementado de um valor variável, e não de uma constante. 
As instruções de repetição são muito úteis em algoritmos que utilizam vetores e matrizes. 
Um vetor é um tipo de dado estruturado, sendo muito útil quando se deseja armazenar um 
conjunto de valores. Um conceito simples para vetor seria: é uma variável com um nome 
único, de um tipo de dado único, que pode armazenar vários valores desse tipo, cada um 
com seu índice próprio. A diferença entre vetor e matriz é que a matriz permite a indexação 
por linha e coluna, enquanto o vetor possui apenas uma linha. 
Exemplos de declaração de vetores e matrizes: 
var 
 vet: arranjo [1..10] de inteiros; 
 vet2: arranjo [1..20] de reais; 
 vet3: arranjo [1..10] de caracteres; 
 mat: arranjo [1..5, 1..10] de inteiros; 
 mat1: arranjo [1..5, 1..10] de reais; 
A indexação de um vetor se dá da seguinte forma: 
vet[1]:= 4; 
vet1[1]:= 3.4; 
vet2[1]:= ‘a’; 
Para as matrizes, é importante observar a indexação na forma [linha, coluna]: 
mat[1,1]:= 5; 
mat1[1,1]:= 2.4; 
Exercícios com Instruções de Repetição e Vetores 
1. Escrever um algoritmo que lê 5 valores quaisquer para um vetor a. Contar, após, 
quantos destes valores são negativos, mostrando esta informação. 
2. Escrever um algoritmo que gera e mostra os números ímpares entre 100 e 200 
3. Escrever um algoritmo que lê 10 valores quaisquer, armazenando em um vetor. 
Contar quantos deles estão no intervalo [10, 20] e quantos deles estão fora deste 
intervalo, mostrando estas informações. 
4. Escrever um algoritmo que lê 30 valores inteiros em um intervalo de 0 a 100, 
armazenando em um vetor. Contar quantos deles estão em cada um dos intervalos 
[0, 25], (25, 50], (50, 75], (75, 100]. 
 22 
5. Escrever um algoritmo semelhante ao anterior que calcula as médias aritméticas de 
cada intervalo e as mostra, juntamente com o número de valores encontrados em 
cada intervalo. 
6. A série de Fibonacci tem como dados os 2 primeiros termos da série, que são 
respectivamente 0 e 1. A partir deles, os demais termos são construídos pela regra: 
tn = tn-1 + tn-2 
Escrever um algoritmo que gera os 10 primeiros termos da série de Fibonacci e 
armazena em um vetor. Após, calcular a soma destes termos e mostrar juntamente 
com o vetor. 
7. Escrever um algoritmo que gera os 30 primeiros termos da série de Fibonacci e 
armazena em um vetor. Após, mostrar os termos gerados com a mensagem “É 
primo” ou “Não é primo”, conforme o caso. 
8. Escrever um algoritmoque lê 100 números positivos e armazena em um vetor. 
Após, mostrar uma tabela com cabeçalho, que deve ser repetido a cada 20 linhas 
escritas. A tabela conterá o valor lido, seu quadrado, seu cubo e sua raiz quadrada. 
9. Escrever um algoritmo que lê 100 valores para o vetor v, todos inteiros e positivos. 
Após, percorrer o vetor e, se o valor for par, verificar quantos divisores possui e 
mostrar esta informação. Se o valor for ímpar e menor que 12 calcular e mostrar o 
fatorial do valor. Se o valor for ímpar e maior ou igual a 12 calcular e mostrar a 
soma dos inteiros de 1 até o valor. 
10. Escrever um algoritmo que lê 10 valores para o vetor a, todos inteiros e positivos. 
Calcular e mostrar, a seguir, a média aritmética dos valores do vetor, a quantidade 
de valores pares, a quantidade de valores ímpares, a percentagem de valores pares e 
a percentagem de valores ímpares. 
11. Escrever um algoritmo que mostra os números primos entre 100 e 200, bem como a 
soma destes números. 
12. Escrever um algoritmo que lê 500 valores inteiros e positivos. Mostrar estes 500 
valores ordenados em ordem crescente. 
13. Escrever um algoritmo que lê 10 valores para o vetor n, todos inteiros e positivos. 
Após, para cada valor lido, mostrar a tabuada de 1 até n de n. 
1 x n = n 
2 x n = 2n 
. . . . . 
. . . . . 
. . . . . 
n x n = n
2
 
14. Escrever um algoritmo que lê um par de valores a, b, inteiros e positivos, com a < b 
e mostra os inteiros pares de a até b, incluindo o a e b se forem pares. 
15. Escrever um algoritmo que lê um par de valores m, n, inteiros e positivos, e calcula 
e mostra a soma dos n inteiros consecutivos à partir de m, inclusive. 
 23 
16. Escrever um algoritmo que lê um conjunto de 15 valores, um de cada vez, 
acompanhados de um código 1 ou 2. O valor representa o número de cobaias 
utilizadas em cada uma das 15 experiências feitas e os códigos 1 e 2 representam, 
respectivamente, coelhos e ratos. Armazenar esses valores em dois vetores numcob 
e tipo. Quer-se saber o total de cobaias utilizadas, o total de coelhos, o total de ratos, 
a percentagem de coelhos e a percentagem de ratos. Mostrar esses valores. 
17. Escrever um algoritmo que lê um número n (número de termos de uma progressão 
aritmética), a1 (primeiro termo desta progressão) e r (razão da progressão), e mostra 
os n termos desta progressão, bem como, a sua soma. Utilizar as instruções de 
repetição, e não as fórmulas matemáticas. 
18. Escrever um algoritmo que lê 2 vetores de 10 valores, o primeiro contendo o 
número de identificação de dez alunos, e o segundo contendo a altura em 
centímetros de cada um. Após, encontrar o aluno mais alto e o mais baixo e mostrar 
seus números, suas alturas e uma mensagem dizendo se é o mais alto ou o mais 
baixo. 
19. Um avião, voando em linha reta, a uma altitude a passa sobre um ponto p num 
instante t = 0. Se a velocidade v e a altura a são lidos, calcular a distância d do avião 
ao ponto p após 1, 2, 3, ..., 60 segundos. Mostrar, para cada t, o tempo e a distância. 
20. Escrever um algoritmo que lê um valor n que indica quantos valores devem ser lidos 
para m, todos inteiros e positivos, com leitura de um valor de cada vez. Mostre 
uma tabela contendo o valor m lido, o somatório dos inteiros de 1 até m e o fatorial 
de m. 
21. Escrever um algoritmo que gera e mostra os 5 primeiros números perfeitos. Um 
número perfeito é aquele que é igual a soma dos seus divisores, menos ele mesmo. 
(Ex.: 6=1+2+3; 28=1+2+4+7+14). 
22. Escrever um algoritmo que lê um vetor g com 5 valores do tipo caracter, que 
constituem o gabarito de uma prova de 5 questões. Leia, a seguir, um número não 
determinado de 5 respostas de alunos em um vetor do tipo caracter r. Para cada 
aluno, contar o número de acertos e multiplicar por 2, mostrando a nota adquirida. 
Após, perguntar: “Deseja conferir as respostas de mais algum aluno?”. 
23. Escrever um algoritmo que mostra os números entre 1000 e 1999, inclusive, que 
divididos por 11 dão um resto igual a 5. 
24. Sabe-se, pela Lei de Newton, que a força de interação entre 2 corpos é diretamente 
proporcional ao produto de suas massas e inversamente proporcional ao quadrado 
de suas distâncias. 
F = G m1 m2 
 d2 
Escrever um algoritmo que lê um número não determinado de conjuntos de 4 
valores m1 (massa do 1o corpo), m2 (massa do 2o corpo), G (constante de gravitação 
universal) e d (distância entre os corpos) e calcula e mostra, para cada conjunto lido, 
a força de atração. A cada conjunto, perguntar se deseja continuar ou não. 
 24 
25. Sabe-se, da matemática financeira, que a aplicação de um capital C, a uma taxa 
mensal de juros i, capitalizados mensalmente, é recuperado através de n prestações 
mensais de valor R. 
R = C i(1 + i)n 
(1 + i)n-1 
Escrever um algoritmo que lê um número não determinado de conjuntos de valores 
formados pelo capital, a taxa de juros e o número de prestações e calcula e mostra, 
para cada conjunto lido, o valor de cada prestação. A cada conjunto, perguntar se 
deseja continuar ou não. 
26. Escrever um algoritmo que lê um valor x e calcula e mostra os 20 primeiros termos 
da série: 
1 + 1 + 1 + 1 + ... 
 x
2 
x
3 
x
4
 
27. Escrever um algoritmo que calcula e mostra a média aritmética dos números pares 
compreendidos entre 13 e 73. 
28. Escrever um algoritmo que calcula e mostra o produto dos números primos entre 92 
e 1478. 
29. Escrever um algoritmo que lê n, inteiro e positivo, e calcula e mostra o termo de 
ordem n da sucessão abaixo: 
ordem: 1 2 3 4 5 6 7 8 ... 
 sucessão: -1 0 5 6 11 12 17 18 ... 
30. Supondo que a população de um país A seja da ordem de 90000 habitantes, com 
uma taxa anual de crescimento de 3,1% e que a população de um país B seja de 
200000 habitantes, com uma taxa anual de crescimento de 1,5%, escrever um 
algoritmo que calcula e mostra quantos anos serão necessários para que a população 
do país A ultrapasse a do país B, mantidas as taxas atuais de crescimento. 
Exercícios com Vetores e Matrizes 
1. Escrever um algoritmo que leia 10 números inteiros e positivos e armazene em um 
vetor. Após, mostrar o maior dos 10 números lidos e sua ordem de entrada. 
2. Escrever um algoritmo que lê 100 valores quaisquer para um vetor x. Substitua, a 
seguir, todos os valores nulos de x por 1 e mostre o vetor modificado. 
3. Escrever um algoritmo que lê 20 valores quaisquer para um vetor n. Troque, a 
seguir, o 1o elemento com o último, o 2o com o penúltimo, assim por diante, até o 
10o com o 11o e mostre o vetor modificado. 
4. Escrever um algoritmo que lê 20 valores quaisquer para um vetor k. Troque, a 
seguir, os elementos de ordem ímpar com os de ordem par imediatamente seguintes 
e mostre o vetor modificado. 
 25 
5. Escrever um algoritmo que lê 20 valores quaisquer para um vetor m. Troque, a 
seguir, o 1o elemento com o 11o, o 2o com o 12o, assim por diante, até o 10o com o 
20o e mostre o vetor modificado. 
6. Escrever um algoritmo que lê um vetor de 20 posições sem elementos repetidos e 
um valor qualquer a. Multiplicar cada posição do vetor por a e mostrar o vetor 
modificado. 
7. Escrever um algoritmo que lê dois vetores com 10 valores inteiros x e y. Crie, a 
seguir, um vetor z que seja a união de x com y, mostrando-o ao final. 
8. Escrever um algoritmo que lê dois vetores com 10 valores inteiros a e b. Crie, a 
seguir, um vetor c que seja a intersecção de a com b, mostrando-o ao final. 
9. Escrever um algoritmo que lê 20 valores quaisquer para um vetor v. Compacte, a 
seguir, o vetor V, retirando dele todos os valores nulos ou negativos e mostre o 
vetor compactado. 
10. Escrever um algoritmo que lê 30 valores inteiros e positivos para um vetor k. Crie, a 
seguir, um vetor n que contém todos os valoresprimos de k e mostre-o. 
11. Escrever um algoritmo que lê 20 valores quaisquer para um vetor v. Retire, a seguir, 
os elementos em duplicata, compactando o vetor v e mostrando-o ao final. 
12. Escrever um algoritmo que lê um conjunto de 30 valores inteiros e os coloca em 2 
vetores, conforme forem pares ou ímpares. O tamanho dos vetores é de 5 posições. 
Se algum vetor estiver cheio, mostrar e voltar a preencher a partir da primeira 
posição. Terminada a leitura, mostrar o conteúdo que sobrou dos dois vetores. 
13. Escrever um algoritmo que lê 2 vetores de 10 valores inteiros v e x. Crie, a seguir, 
um vetor y com os elementos de v e x em ordem crescente. 
14. Escrever um algoritmo que lê 20 valores inteiros para um vetor v de 30 posições 
que ocuparão as 20 primeiras posições. Ordene, a seguir, os 20 elementos em ordem 
crescente. Após, leia 10 valores inteiros, um por vez, e insira-os nas posições 
adequadas do vetor v, de forma que o mesmo continue ordenado em ordem 
crescente, mostrando-o ao final. 
15. Escrever um algoritmo que lê 20 valores inteiros para um vetor x. Mostre, a seguir, 
cada um dos valores distintos que aparecem em x e quantas vezes ele apareceu. 
16. Escrever um algoritmo que preencha uma matriz 10 por 50 com a soma da sua linha 
e coluna respectiva. Passar, após, os valores da matriz para um vetor. Mostrar a 
matriz e o vetor preenchidos. 
17. Escrever um algoritmo que lê uma matriz m(5,5) com valores inteiros e positivos. 
Calcule e mostre, após, as somas: 
a) da linha 4 de m. 
b) da coluna 2 de m. 
c) da diagonal principal. 
d) da diagonal secundária. 
e) de todos os elementos da matriz. 
 26 
18. Escrever um algoritmo que lê uma matriz m(6,6) e calcula as somas das partes 
hachuriadas, mostrando-as. 
 
19. Escrever um algoritmo que lê uma matriz m(10,10) com valores quaisquer. Troque, 
a seguir, a linha 2 com a linha 8, a coluna 4 com a coluna 10, a diagonal principal 
com a secundária e a linha 5 com a coluna 10. Mostre a matriz modificada. 
20. Escrever 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 v, 
mostrando-o ao final. 
21. Escrever um algoritmo que lê uma matriz m(5,5) com valores inteiros e cria 2 
vetores sl(5) e sc(5) que contenham as somas das linhas e das colunas de m, 
mostrando-os. 
22. Escrever um algoritmo que lê uma matriz m(50,19) contendo, nas posições 
assinaladas de cada linha o que segue: 
1 – no do aluno 
2, 3, 4 – notas da disciplina 1 
5, 6, 7 – notas da disciplina 2 
8, 9, 10 – notas da disciplina 3 
11, 12, 13 – notas da disciplina 4 
14, 15, 16 – notas da disciplina 5 
17, 18, 19 – notas da disciplina 6 
Calcular, para cada aluno, as médias de cada disciplina e a média geral, 
armazenando num vetor o número do aluno, as médias por disciplina e a média 
geral. Mostrar o vetor antes de passar ao aluno seguinte. 
23. Escrever um algoritmo que lê uma matriz a(12,13) e divida todos os 13 elementos 
de cada uma das 12 linhas de a pelo valor do maior elemento em módulo daquela 
linha. Mostrar a matriz a modificada. 
24. Na teoria de sistemas, define-se como elemento mínimax de uma matriz, o menor 
elemento da linha em que se encontra o maior elemento da matriz. Escrever um 
algoritmo que lê uma matriz a(10,10) com valores inteiros e determina o elemento 
mínimax dessa matriz, mostrando-o juntamente com a sua posição na matriz. 
Bibliografia 
Os conceitos e exercícios dessa apostila foram baseados na referência (que não está mais 
sendo editada): 
 27 
ORTH, A.I. Algoritmos. Porto Alegre, RS: Ciência dos Computadores, 1985. 
Tais conceitos, exercícios e principalmente a definição da linguagem algorítmica sofreram 
várias adaptações.

Mais conteúdos dessa disciplina