Buscar

Gabarito Autoatividades Algoritmos e 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 106 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 106 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 106 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

das
A
Gabarito
utoatividades
LIN | 2012/2 | Módulo IV
ALGORITMOS E PROGRAMAÇÃO
Editora
Centro Universitário Leonardo da Vinci
Rodovia BR 470, Km 71, nº 1.040
Bairro Benedito - CEP 89130-000
Indaial - Santa Catarina - 47 3281-9000
Elaboração:
Revisão, Diagramação e Produção:
Centro Universitário Leonardo da Vinci - UNIASSELVI
Prof. Cléverson Tambosi
3UNIASSELVI
NEAD
GABARITO DAS AUTOATIVIDADES
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
GABARITO DAS AUTOATIVIDADES DE
ALGORITMOS E PROGRAMAÇÃO
Editora
Centro Universitário Leonardo da Vinci
Rodovia BR 470, Km 71, nº 1.040
Bairro Benedito - CEP 89130-000
Indaial - Santa Catarina - 47 3281-9000
Elaboração:
Revisão, Diagramação e Produção:
Centro Universitário Leonardo da Vinci - UNIASSELVI
UNIDADE 1
TÓPICO 1
1 Qual é a origem da palavra “algoritmo”?
R.: Essa palavra tem origem no apelido de um matemático árabe do século IX, 
Al-Khwarizmi, cujos conhecimentos abriram uma nova era da matemática. Seu 
nome, na forma latina, é algoritmi, dando origem à palavra que conhecemos 
hoje.
2 O que é um algoritmo?
R.: É uma sequência de passos ou instruções, que têm por objetivo resolver 
um determinado problema.
3 Qual é a diferença básica entre “dado” e “informação”?
R.: O dado é basicamente um valor, porém sem significado. Por exemplo: o 
valor “6,5” ou a palavra “nome”.
A informação possui um significado. Por exemplo, “Nome da rua” ou “6,5 kg”.
4 O que é lógica de programação?
R.: A lógica é o estudo do pensamento válido, a ciência das leis ideais do 
pensamento e a arte de aplicá-las à pesquisa e à demonstração da verdade.
 A lógica de programação é um encadeamento de instruções para resolver 
um problema através do computador.
5 O que é uma pseudolinguagem?
R.: É uma linguagem utilizada especificamente para construção de algoritmos.
6 Faça um algoritmo para escovar os dentes.
R.: a) pegar a pasta de dentes;
4 GABARITO DAS AUTOATIVIDADES UNIASSELVI
NEAD
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
b) abrir o tubo da pasta de dentes;
c) pegar a escova de dentes;
d) posicionar a ponta do tubo da pasta de dentes sobre as cerdas da escova 
de dentes;
e) apertar o tubo para sair cerca de 1 cm de pasta sobre as cerdas;
f) levar a parte das cerdas à boca e fazer movimentos de fricção entre as 
cerdas e os dentes;
g) iniciar pelos dentes de trás superiores na parte externa entre os dentes e 
a bochecha e seguir lentamente em direção à parte da frente e, em seguida, 
até a parte de trás do lado oposto;
h) passar as cerdas para a parte interna dos dentes superiores da parte de 
trás, entre os dentes e a língua e seguir lentamente até a parte da frente e, 
em seguida, até a parte de trás do lado oposto;
i) repetir todo o processo a partir do item g), porém, com os dentes da parte 
inferior.
7 Faça um algoritmo para escrever e enviar um e-mail.
R.: a) abrir o programa de e-mail de sua preferência;
b) clicar no botão Nova Mensagem;
c) no campo “Para:”, informar o endereço de e-mail do destinatário;
d) se desejar enviar o e-mail, colocar uma vírgula após o último endereço de 
e-mail informado no campo “Para:” e informar o próximo endereço de e-mail;
e) se desejar enviar uma cópia do e-mail para outro endereço, informar o 
endereço de e-mail que deverá receber a cópia, no campo “Cc:”;
f) se desejar enviar uma cópia oculta do e-mail, informar o endereço de e-mail 
que deverá receber a cópia oculta, no campo “Cco:”;
g) no campo “Assunto”, informar uma breve descrição do que se trata a 
mensagem;
h) no campo “Mensagem”, informar o conteúdo sobre o qual deseja comunicar;
i) ao terminar de informar o conteúdo da mensagem, pressionar o botão 
“Enviar”.
TÓPICO 2
1 Quais são as partes (etapas) básicas de, praticamente, qualquer 
problema?
R.: Entrada → Processamento → Saída
2 Na área da informática, como se costuma chamar as pessoas que 
utilizam um programa?
5UNIASSELVI
NEAD
GABARITO DAS AUTOATIVIDADES
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
R.: Usuários
3 Quais são as regras básicas para compor o nome de um identificador?
R.: - deve iniciar com uma letra ou com um “caractere de sublinhado”;
- depois disto, pode ser seguido por letras, números ou “caracteres de 
sublinhado”.
4 O que são "variáveis"?
R.: Uma variável é um “local” na memória do computador, utilizado para 
armazenar uma informação. O conteúdo deste “local” pode mudar durante a 
execução de um algoritmo, por isto o nome “variável”.
5 O que são "constantes"?
R.: São “locais” na memória do computador que servem para armazenar 
valores. Estes valores não podem ser alterados durante a execução de um 
algoritmo. Daí o nome “constante”.
6 Considerando que o nome de cada uma das variáveis a seguir 
represente o conteúdo que ela armazenará, defina o tipo de dado 
ideal para cada variável:
R.:
Idade Inteiro
Nome_do_carro Caractere
Placa_do_carro Caractere
Salario Real
Quantidade_de_parafusos Inteiro
7 Cite 3 "tipos de dados" e dê 2 exemplos, para cada tipo de dado 
citado, de valores que se podem armazenar em cada tipo.
R.: Tipo: Inteiro
Tipo Valores
Inteiro
2
300
53
6 GABARITO DAS AUTOATIVIDADES UNIASSELVI
NEAD
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
Real
31,8
1000
37,49
Caractere
“João da Silva”
“12.458.950/0001-20”
“MPU-2391”
8 Um “operador de atribuição” serve para atribuir o quê?
R.: Um valor a uma variável.
9 O que significa “declarar um identificador”?
R.: Significa informar, no início do algoritmo, que esse identificador existe e 
qual é o tipo de dado que ele poderá suportar.
10 Para que serve o ponto e vírgula em um algoritmo escrito em portugol?
R.: Serve para finalizar uma instrução, informando ao algoritmo que a instrução 
acabou naquele local.
TÓPICO 3
1 Explique o operador aritmético “mod”.
R.: Este operador faz a divisão entre dois valores numéricos e retorna o resto 
da divisão.
2 O que faz (verifica) a seguinte expressão: X <> 10?
R.: Verifica se o conteúdo da variável “X” é diferente de 10.
3 Considerando as seguintes atribuições:
a ← 10;
b ← 12;
c ← 25;
d ← 51;
informe se o valor de cada expressão abaixo é verdadeiro ou falso:
(somente operadores relacionais)
7UNIASSELVI
NEAD
GABARITO DAS AUTOATIVIDADES
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
a >= 10 verdadeiro
a >= b falso
b >= a verdadeiro
c <> a verdadeiro
a < d verdadeiro
(operadores relacionais e aritméticos)
a = (b – 2) verdadeiro
d < (b + c) falso
(a + b) >= (d – c) falso
d mod 2 = 0 falso
b + a < c verdadeiro
c <> 5 * 5 falso
a = 20 / 2 verdadeiro
(operadores relacionais e lógicos)
(a = 10) e (d = 51) verdadeiro
(a <> 10) e (d = 51) falso
(a <> 10) ou (d = 51) verdadeiro
(d > a) ou (b > c) verdadeiro
não a = 10 falso
(operadores relacionais, lógicos e aritméticos)
(a + b > c) e (d – c > a) falso 
(a + b > c) ou (d – c > a) verdadeiro
(não b + c > 30) e (d > 50) falso
(a / 2 = 5) e (d = 50 + 1) verdadeiro
(a * 2 = 22) ou (d + 50 = 101) falso
TÓPICO 4
1 Para que serve o comando Escreva?
R.: Para exibir informações para o usuário. Estas informações podem ser: 
uma mensagem, o conteúdo de uma variável ou constante, ou até o resultado 
de um cálculo.
2 Para que serve o comando Leia?
R.: Para captar dados fornecidos pelo usuário através do teclado do 
computador.
3 Para que servem os comentários? Dê um exemplo do seu uso.
8 GABARITO DAS AUTOATIVIDADES UNIASSELVI
NEAD
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
R.: Para explicar algo que esteja sendo feito no algoritmo, como, por exemplo, 
um determinado cálculo ou qualquer informação que o desenvolvedor do 
algoritmo achar necessária.
4 Faça um algoritmo que solicite e armazene o peso de uma pessoa 
(você determinará a variável na qual será armazenado o valor do 
peso). Em seguida, o algoritmo deverá exibir a mensagem “Seu peso 
é <peso>”, onde, no lugar de <peso>, deverá ser exibido o pesoque 
a pessoa informou.
 Acima de cada uma destas instruções, faça um comentário (no 
formato portugol) explicando o que cada instrução faz.
R.: 
Algoritmo Unidade1_Topico4_Exe4 ;
var
 peso : real;
Início
 Escreva('Informe seu peso: ');
 Leia(peso);
 Escreva('Seu peso é ', peso);
Fim.
5 Desenvolva um algoritmo que solicite e armazene as seguintes 
informações de uma pessoa:
a) Nome
b) Sobrenome
c) Idade
d) Endereço
Após ler as informações, o algoritmo deverá exibir uma mensagem semelhante 
a esta: “Olá, Humberto Pereira. Você tem 23 anos e mora na Rua Antônio 
Pchara”.
Os dados em negrito serão as informações que o usuário forneceu.
R.:
9UNIASSELVI
NEAD
GABARITO DAS AUTOATIVIDADES
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
Algoritmo Unidade1_Topico4_Exe5;
var
 Nome, Sobrenome, Endereco : Caractere;
 Idade : Inteiro;
Início
 Escreva('Informe seu nome: ');
 Leia(Nome);
 Escreva('Informe seu sobrenome: ');
 Leia(Sobrenome);
 Escreva('Informe sua idade: ');
 Leia(Idade);
 Escreva('Informe seu endereço: ');
 Leia(Endereco);
 Escreva('Olá, ',Nome, ' ', Sobrenome, '. 
 Você tem ',Idade,' anos e mora na ',Endereco,'.');
Fim.
TÓPICO 5
1 Faça um trecho de algoritmo que solicite e armazene:
a) um valor correspondente ao salário de uma pessoa;
b) um valor correspondente aos benefícios de saúde que a pessoa recebe;
c) um valor correspondente ao vale-transporte.
Você precisa exibir qual é o valor total que a pessoa recebeu, entre salário 
e benefícios.
R.:
10 GABARITO DAS AUTOATIVIDADES UNIASSELVI
NEAD
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
Algoritmo Unidade1_Topico5_Exe1;
var
 Salario, Beneficios, Vale : Real;
Início
 Escreva('Salário: ');
 Leia(Salario);
 Escreva('Valor dos benefícios: ');
 Leia(Beneficios);
 Escreva('Valor do vale-transporte: ');
 Leia(Vale);
 Escreva('Valor total recebido: ', 
 (Salario + Beneficios + Vale));
Fim.
2 Desenvolva um algoritmo que leia um valor correspondente a uma 
temperatura em Fahrenheit, converta para graus centígrados e exiba 
a temperatura convertida. Para converter, basta utilizar a fórmula C 
= (F – 32) / 1,8, onde “f” é a temperatura lida.
R.:
Algoritmo Unidade1_Topico5_Exe2;
var
 F, C : Real;
início
 Escreva('Temperatura em Fahrenheit: ');
 Leia(F);
 C <- (F - 32) / 1.8;
 Escreva(F, ' graus Fahrenheit equivalem a ', C, 
 ' graus Centígrados.');
Fim.
11UNIASSELVI
NEAD
GABARITO DAS AUTOATIVIDADES
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
3 Construa um algoritmo que solicite e armazene o preço de venda 
de uma mercadoria e o valor pago pelo cliente. O algoritmo deverá 
calcular e exibir o troco a ser entregue ao cliente.
Algoritmo Unidade1_Topico5_Exe3 ;
var
 Preco_Venda, Valor_Pago, Troco : Real;
início
 Escreva('Preço da mercadoria: ');
 Leia(Preco_Venda);
 Escreva('Valor pago: ');
 Leia(Valor_Pago);
 
 Troco <- Valor_Pago - Preco_Venda;
 Escreva('Troco: ', Troco);
Fim.
4 Desenvolva um algoritmo que solicite e armazene o preço de custo 
de uma mercadoria, calcule e mostre o preço de venda. Este preço é 
obtido acrescentando 28% ao preço de custo.
Algoritmo Unidade1_Topico5_Exe4;
var
 Preco_Custo, Preco_Venda : Real;
início
 Escreva('Preço de custo da mercadoria: ');
 Leia(Preco_Custo);
 Preco_Venda <- Preco_Custo + (Preco_Custo * 28 / 100);
 Escreva('Preço de venda: ', Preco_Venda);
Fim.
12 GABARITO DAS AUTOATIVIDADES UNIASSELVI
NEAD
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
5 Faça um algoritmo que solicite e armazene o salário de uma pessoa 
e um valor percentual. O algoritmo deve aplicar o percentual sobre 
o salário e exibir o salário atualizado.
Algoritmo Unidade1_Topico5_Exe5 ;
var
 Salario, Percentual, SalarioAtualizado : Real;
 início
 escreva('Salário: ');
 Leia(Salario);
 escreva('Percentual de acréscimo: ');
 Leia(Percentual);
 SalarioAtualizado <- Salario + 
 (Salario * Percentual / 100);
 escreva('Salário atualizado: ', SalarioAtualizado);
Fim.
6 Crie um algoritmo que solicite e armazene:
a) uma distância percorrida (em km);
b) o tempo que durou para percorrer esta distância.
O algoritmo deverá informar qual foi a velocidade média utilizada ao percorrer 
o período.
13UNIASSELVI
NEAD
GABARITO DAS AUTOATIVIDADES
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
Algoritmo Unidade1_Topico5_Exe6 ;
var
 Distancia, Tempo, Velocidade : Real;
início
 escreva('Distância percorrida: ');
 Leia(Distancia);
 escreva('Tempo que durou: ');
 Leia(Tempo);
 Velocidade <- Distancia / Tempo;
 
 Escreva('A velocidade média foi: ', Velocidade);
Fim.
7 A fórmula para calcular a área de uma circunferência é A = πR2. Sendo 
o valor de π = 3.14159, faça um algoritmo que:
a) solicite e armazene o valor do raio de uma circunferência, no caso a 
variável R; 
b) efetue o cálculo da área, elevando o valor de R ao quadrado e multiplicando 
por π;
c) apresente o valor da variável A.
* O valor de π deve estar armazenado em uma constante.
R.:
14 GABARITO DAS AUTOATIVIDADES UNIASSELVI
NEAD
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
Algoritmo Unidade1_Topico5_Exe7 ;
Const pi = 3.14159;
var
 A, R : Real;
início
 escreva('Raio: ');
 Leia(R);
 { pi * R ao quadrado)}
 A <- pi * (R * R);
 Escreva('A área da circunferência é: ', A);
 
Fim.
8 Faça um algoritmo que leia um valor correspondente a uma 
quantidade de horas (por exemplo: 1,5 corresponde a uma hora e 
meia). O algoritmo deverá exibir o equivalente em minutos.
R.:
Algoritmo Unidade1_Topico5_Exe8;
var
 horas : Real;
início
 escreva('Horas: ');
 Leia(horas);
 escreva(horas, ' horas equivalem a ', (horas * 60), 
 ' minutos.');
Fim.
15UNIASSELVI
NEAD
GABARITO DAS AUTOATIVIDADES
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
UNIDADE 2
TÓPICO 1
1 Reescreva o mesmo algoritmo de conversão de temperaturas, 
adaptando-o da seguinte forma: além de ler a temperatura, o algoritmo 
deverá ler se o usuário quer converter de Fahrenheit para Centígrados 
ou de Centígrados para Fahrenheit. A fórmula para converter graus 
Centígrados em Fahrenheit é F = (C * 1,8) + 32.
R.:
Algoritmo Unidade2_Topico1_Exe1;
var
 Temp_Original, Temp_Convertida : Real;
 Tipo_de_Conversao : texto;
início
Escreva('Temperatura: ');
Leia(Temp_Original);
Escreva('1 - Converter de Fahrenheit para Centígrados');
Escreva('2 - Converter de Centígrados para Fahrenheit');
Leia(Tipo_de_Conversao);
Se (Tipo_de_Conversao = '1') então
 início
 Temp_Convertida <- (Temp_Original - 32) / 1.8;
 Fim
 senão
 início
 Temp_Convertida <- (Temp_Original * 1.8) + 32; 
 Fim;
 Escreva('Temperatura convertida: ', Temp_Convertida);
 Leia;
Fim.
16 GABARITO DAS AUTOATIVIDADES UNIASSELVI
NEAD
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
2 Escreva um algoritmo que solicite e armazene três valores. O 
algoritmo deverá calcular e exibir o maior dos três valores.
R.:
Algoritmo Unidade2_Topico1_Exe2;
var
 v1, v2, v3, Maior : Real;
início
 escreva('Valor 1: ');
 Leia(v1);
 escreva('Valor 2: ');
 Leia(v2);
 escreva('Valor 3: ');
 Leia(v3);
 
 Se (v1 >= v2) então
 início
 Maior <- v1;
 Fim
 senão
 início
 Maior <- v2;
 Fim;
 Se (v3 > Maior) então
 início
 Maior <- v3;
 Fim;
 
 escreva('O maior valor é: ', Maior);
 
Fim.
3 Faça um algoritmo que leia um número e informe se ele é menor que 
zero, se ele é maior que zero ou se ele é o próprio valor zero.
R.:
17UNIASSELVI
NEAD
GABARITO DAS AUTOATIVIDADES
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
Algoritmo Unidade2_Topico1_Exe3;
var
 valor : real;
início
 escreva('Informe um valor: ');
 Leia(valor);
 Se (valor > 0) então
 início
 escreva('O valor é maior que zero.');
 Fim
 senão Se (valor < 0) então
 inícioescreva('O valor é menor que zero.');
 Fim
 senão
 início
 escreva('O valor é zero.');
 Fim;
Fim.
4 Desenvolva um algoritmo que leia um número inteiro e informe se o 
número é par ou é ímpar.
R.:
18 GABARITO DAS AUTOATIVIDADES UNIASSELVI
NEAD
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
Algoritmo Unidade2_Topico1_Exe4;
var
 numero : inteiro;
início
 escreva('Informe um número: ');
 Leia(numero);
 Se (numero mod 2 = 0) então
 início
 escreva('O número é par.');
 Fim
 senão
 início
 escreva('O número é ímpar.');
 Fim;
Fim.
5 Faça um algoritmo que leia um número inteiro de zero a nove e exiba 
o valor por extenso.
R.:
19UNIASSELVI
NEAD
GABARITO DAS AUTOATIVIDADES
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
Algoritmo Unidade2_Topico1_Exe5 ;
var
 numero : inteiro;
início
 escreva('Informe um número: ');
 Leia(numero);
 Escolha numero 
 Caso 0 : Escreva('Zero');
 Caso 1 : Escreva('Um');
 Caso 2 : Escreva('Dois');
 Caso 3 : Escreva('Três');
 Caso 4 : Escreva('Quatro');
 Caso 5 : Escreva('Cinco');
 Caso 6 : Escreva('Seis');
 Caso 7 : Escreva('Sete');
 Caso 8 : Escreva('Oito');
 Caso 9 : Escreva('Nove');
 Fim;
Fim.
6 Desenvolva um algoritmo que solicite e armazene dois valores 
numéricos reais. Em seguida, o algoritmo deverá exibir as seguintes 
opções:
+ Adição
- Subtração
* Multiplicação
/ Divisão
O algoritmo, após exibir as opções acima, deverá ler a escolha do usuário 
e efetuar o cálculo entre os dois valores lidos, de acordo com a escolha do 
usuário. Ao final, o algoritmo deverá exibir o resultado do cálculo.
R.:
20 GABARITO DAS AUTOATIVIDADES UNIASSELVI
NEAD
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
Algoritmo Unidade2_Topico1_Exe6;
var
 v1, v2 : Real;
 operacao : texto;
início
 escreva('Valor 1: ');
 Leia(v1);
 escreva('Valor 2: ');
 Leia(v2);
 Escreva('Escolha a operação: ');
 Escreva('+ Adição');
 Escreva('- Subtração');
 Escreva('* Multiplicação');
 Escreva('/ Divisão');
 Leia(operacao);
 
 escreva('Resultado da operação: ');
 Se (operacao = '+') então
 início
 Escreva(v1 + v2);
 Fim
 senão Se (operacao = '-') então
 início
 Escreva(v1 - v2);
 Fim
 senão Se (operacao = '*') então
 início
 Escreva(v1 * v2);
 Fim
 senão Se (operacao = '/') então
 início
 {
 Matematicamente, não é possível fazer uma divisão por 0 (zero).
 Assim, antes de fazer o cálculo, deve-se verificar se o divisor não é 
0 (zero).}
 Se (v2 <> 0) então
 início
 Escreva(v1 / v2);
 Fim
 senão
 início
 Escreva('Erro! Não é possível dividir por zero.')
 Fim;
 Fim;
Fim.
21UNIASSELVI
NEAD
GABARITO DAS AUTOATIVIDADES
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
7 Construa um algoritmo que leia o salário de um funcionário. O 
algoritmo deverá calcular um aumento no salário de acordo com o 
quadro a seguir:
Se o salário for: Acrescentar:
Menor que R$ 800,00 40%
Entre R$ 800,00 e R$ 1.000,00 35%
Entre R$ 1.001,00 e R$ 1.500,00 25%
Acima de R$ 1.500,00 15%
R.:
Algoritmo Unidade2_Topico1_Exe7;
var
 Salario, Aumento, NovoSalario : Real;
início
 escreva('Salário: ');
 Leia(Salario);
 Se (Salario < 800) então
 início
 Aumento <- 40;
 Fim
 senão Se (Salario <= 1000) então
 início
 Aumento <- 35;
 Fim
 senão Se (Salario <= 1500) então
 início
 Aumento <- 25;
 Fim
 senão
 início
 Aumento <- 15;
 Fim;
 NovoSalario <- Salario + (Salario * Aumento / 100);
 Escreva('Novo salário: ', NovoSalario);
Fim. 
22 GABARITO DAS AUTOATIVIDADES UNIASSELVI
NEAD
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
TÓPICO 2
1 Quando é necessário utilizar uma estrutura de repetição?
R.: Quando precisarmos repetir uma instrução ou um mesmo conjunto de 
instruções mais de uma vez.
2 Quando se dá preferência por utilizar a estrutura Para-faça ao invés 
de Enquanto-faça?
R.: Quando se sabe a quantidade de vezes que a estrutura deverá repetir.
3 Explique o que é flag e dê um exemplo.
R.: É a condição para parar uma estrutura de repetição. 
Exemplo: (x = 0)
“Enquanto” x for igual a zero, a estrutura irá repetir. Assim a flag é “x diferente 
de zero”. Quando o valor da variável “x” for diferente de zero, a estrutura irá 
parar.
4 Crie um algoritmo que leia o salário de 8 pessoas. O algoritmo deverá 
informar:
a) quantas pessoas ganham mais que 1.000 reais;
b) a média salarial entre as 8 pessoas.
R.: 
23UNIASSELVI
NEAD
GABARITO DAS AUTOATIVIDADES
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
Algoritmo Unidade2_Topico2_Exe4 ;
{Como a quantidade é 8 fixa, pode-se colocar esta quantidade em uma 
constante }
Constante Qtd = 8;
var
 Salario, Soma, Media : Real;
 Qtd_Mais_Mil, Qtd_Total : inteiro;
início
 { Inicializa a variável que contará quantos ganham mais do que mil }
 Qtd_Mais_Mil <- 0;
 { Inicializa a variável que acumulará a soma dos salários }
 Soma <- 0;
 Para Qtd_Total <- 1 até 8 faça
 início
 escreva('Salário: ');
 Leia(Salario);
 {Para a questão a), verifica se o salário é maior do que mil}
 Se (Salario > 1000) então
 início
 { Conta mais uma pessoa que ganha mais do que mil }
 Qtd_Mais_Mil <- Qtd_Mais_Mil + 1;
 Fim;
 { Para fazer a média é necessário somar (acumular a soma de) todos 
os salários }
 Soma <- Soma + Salario;
 Fim; 
 
 { Calcula a média, dividindo a soma de todos os salários pela quantidade 
de salários }
 Media <- Soma / Qtd;
 
 {Exibe os resultados }
 Escreva(Qtd_Mais_Mil, ' pessoas recebem acima de mil reais.');
 Escreva('A média salarial foi de ', Media);
Fim. 
24 GABARITO DAS AUTOATIVIDADES UNIASSELVI
NEAD
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
5 Faça um algoritmo que possa imprimir o menu abaixo:
MENU ESTADO CIVIL
1 – Solteiro(a)
2 – Desquitado(a)
3 – Casado(a)
4 – Divorciado(a)
5 – Viúvo(a)
Opção: 
a) O usuário deverá selecionar uma das opções, digitando o número 
correspondente.
b) Emitir mensagem de erro caso seja escolhida uma opção inexistente.
c) Ao finalizar, o algoritmo deverá apresentar a porcentagem de cada estado civil.
R.:
25UNIASSELVI
NEAD
GABARITO DAS AUTOATIVIDADES
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
Algoritmo Unidade2_Topico2_Exe5 ;
var
 estado_civil : Char;
 Solteiro, 
 Desquitado, 
 Casado,
 Divorciado,
 Viuvo,
 Total : inteiro;
início
 { Inicializa as variáveis que irão contar a quantidade de cada estado civil}
 Solteiro <- 0; 
 Desquitado <- 0; 
 Casado <- 0;
 Divorciado <- 0;
 Viuvo <- 0;
 Total <- 0; { Conta o total de pessoas para calcular o percentual }
 
 Escreva('1 - Solteiro');
 Escreva('2 - Desquitado');
 Escreva('3 - Casado');
 Escreva('4 - Divorciado');
 Escreva('5 - Viuvo');
 Escreva('9 - Sair'); 
 Leia(estado_civil);
 Enquanto (estado_civil <> '9') faça
 início 
 Caso estado_civil de
 '1' : Solteiro <- Solteiro + 1;
 '2' : Desquitado <- Desquitado + 1;
 '3' : Casado <- Casado + 1;
 '4' : Divorciado <- Divorciado + 1;
 '5' : Viuvo <- Viuvo + 1;
 senão Escreva('Opção inexistente.');
 Fim;
26 GABARITO DAS AUTOATIVIDADES UNIASSELVI
NEAD
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
 Total <- Total + 1;
 
 { Solicita o estado civil da próxima pessoa }
 Escreva('1 - Solteiro');
 Escreva('2 - Desquitado');
 Escreva('3 - Casado');
 Escreva('4 - Divorciado');
 Escreva('5 - Viuvo');
 Escreva('9 - Sair');
 Leia(estado_civil);
 Fim;
 { Calcula o percentual na hora de exibir }
 Escreva('Percentual desolteiros: ', (Solteiro * 100 / Total));
 Escreva('Percentual de desquitados: ', (Desquitado * 100 / Total));
 Escreva('Percentual de casados: ', (Casado * 100 / Total));
 Escreva('Percentual de divorciados: ', (Divorciado * 100 / Total));
 Escreva('Percentual de viuvos: ', (Viuvo * 100 / Total));
Fim.
6 Faça um algoritmo que leia um número inteiro. O algoritmo deverá 
exibir se o número é primo ou não. Conceito de um número primo: 
Um número natural é um número primo quando ele tem exatamente 
dois divisores distintos: o número um e ele mesmo. Por convenção, 
os números 0, 1 e -1 não são considerados primos nem compostos.
R.:
27UNIASSELVI
NEAD
GABARITO DAS AUTOATIVIDADES
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
Algoritmo Unidade2_Topico2_Exe6;
var
 Primo : lógica; { Variável para identificar se é primo ou não (verdadeiro/
falso}
 Numero, NumeroTeste : inteiro;
início
 { Assume que Primo é verdadeiro. 
 A lógica do problema mudará esse valor se no momento que descobrir 
que o número não é primo }
 Primo <- verdadeiro; 
 escreva('Informe um número: ');
 Leia(Numero);
 
 { Se o número for -1, 0 ou 1, já assume que não é mais primo }
 Se (Numero >= -1) e (Numero <= 1) então
 início
 Primo <- falso;
 Fim
 senão { Se não for nenhum desses valores, faz os testes }
 início
 { Não é necessário testar a divisão pelo próprio número, nem por 1, pois 
sempre dará resto zero 
 Assim, testa-se a divisão sempre começando por um número anterior 
ao número informado e indo até 2 } 
 
 NumeroTeste <- 2;
 
 { Enquanto não chegou no número anterior ao número informado 
 e enquanto não descobrir que não é mais primo, continua }
 Enquanto (NumeroTeste < Numero) e (Primo) faça
 início
 { Se a divisão for exata (resto zero) é porque o número é divisível 
por outro número,
 que não é ele mesmo, nem 1.} 
 Se (Numero mod NumeroTeste = 0) então
 início
 Primo <- falso;
 Fim; 
 NumeroTeste <- NumeroTeste + 1;
 Fim;
 Fim;
28 GABARITO DAS AUTOATIVIDADES UNIASSELVI
NEAD
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
 Se (Primo) então
 início
 Escreva('O número ',Numero, ' é primo.');
 Fim
 senão
 início
 Escreva('O número ',Numero, ' não é primo.');
 Fim;
Fim.
7 Faça um algoritmo que leia um número e calcule o seu fatorial. O 
algoritmo deverá apresentar uma mensagem semelhante a: O fatorial 
de X é Y.
 O fatorial de um número é calculado multiplicando o número por 
todos os seus antecessores até chegar em 1. Exemplo: Se o número 
for 5, o cálculo será 5 * 4 * 3 * 2 * 1 = 120.
 Assim, o fatorial de 5 é 120.
R.:
Algoritmo Unidade2_Topico2_Exe7;
var
 Numero, Fatorial, I : inteiro;
início
 { Inicializa com um valor neutro na multiplicação }
 Fatorial <- 1;
 Escreva('Informe um número: ');
 Leia(Numero);
 { Pode-se chegar até 2, pois o 1 é neutro na multiplicação,
 não fazendo diferença multiplicar por 1, 
 mas é um processamento a mais, desnecessário }
 Para I <- Numero voltar 2 faça
 início
 Fatorial <- Fatorial * I; { I receberá cada número entre o número 
informado e 2 }
 Fim;
 
 Escreva('O fatorial de ',Numero,' é ',Fatorial);
Fim.
29UNIASSELVI
NEAD
GABARITO DAS AUTOATIVIDADES
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
8 Desenvolva um algoritmo para calcular o Índice de Massa Corpórea 
(IMC) de várias pessoas. O usuário deverá informar seu peso e altura. 
O IMC é calculado dividindo-se o peso pela altura ao quadrado. O 
algoritmo deverá exibir a situação da pessoa de acordo com o quadro 
logo a seguir. O algoritmo deverá permanecer solicitando os dados 
das pessoas e informando sua situação até que seja informada a 
altura igual a 0 (zero).
Quadro de situações segundo a faixa de peso:
Cálculo IMC Situação
Abaixo de 18,5 Você está abaixo do peso ideal
Entre 18,5 e 24,9 Parabéns — você está em seu peso normal!
Entre 25,0 e 29,9 Você está acima de seu peso (sobrepeso)
Entre 30,0 e 34,9 Obesidade grau I
Entre 35,0 e 39,9 Obesidade grau II
40,0 e acima Obesidade grau III
R.:
Algoritmo Unidade2_Topico2_Exe8;
var
 Peso, Altura, IMC : Real;
início
 escreva('Altura: ');
 Leia(Altura);
 
 Enquanto (Altura > 0) faça
 início
 
 escreva('Peso: ');
 Leia(Peso);
 
 IMC <- Peso / (Altura * Altura);
 
 Se (IMC < 18.5) então
 início
 Escreva('Você está abaixo do peso ideal.');
 Fim
30 GABARITO DAS AUTOATIVIDADES UNIASSELVI
NEAD
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
 senão Se (IMC < 25) então
 início
 Escreva('Parabéns — você está em seu peso normal!');
 Fim
 senão Se (IMC < 30) então
 início
 Escreva('Você está acima de seu peso (sobrepeso).');
 Fim
 senão Se (IMC < 35) então
 início
 Escreva('Obesidade grau I.');
 Fim
 senão Se (IMC < 40) então
 início
 Escreva('Obesidade grau II.');
 Fim
 senão
 início
 Escreva('Obesidade grau III.');
 Fim;
 
 { Pede a altura da próxima pessoa } 
 escreva('Altura: ');
 Leia(Altura);
 Fim;
Fim.
9 Escreva um algoritmo que solicite o preço unitário e a quantidade 
de uma mercadoria a ser vendida. O algoritmo deverá permanecer 
solicitando estes valores até que o preço seja 0 (zero). A cada vez que 
forem lidas as informações, o algoritmo deverá verificar se a mercadoria 
foi vendida em uma quantidade maior do que cinco. Caso tenha sido, 
deverá ser dado um desconto de 15% no valor total da compra.
 Ao final, o algoritmo deverá informar quanto deixou de ser arrecadado 
em função dos descontos oferecidos.
R.:
31UNIASSELVI
NEAD
GABARITO DAS AUTOATIVIDADES
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
Algoritmo Unidade2_Topico2_Exe9;
var
 Preco, ValorCompra, DescontoTotal : Real;
 Qtd : inteiro;
 
início
 { Inicializa a variável DescontoTotal, que acumulará o total 
 de desconto concedido, considerando todas as compras. }
 DescontoTotal <- 0;
 escreva('Preço unitário: ');
 Leia(preco);
 
 Enquanto (Preco > 0) faça
 início
 escreva('Quantidade: ');
 Leia(qtd);
 
 ValorCompra <- Preco * Qtd;
 
 Se (Qtd > 5) então
 início 
 DescontoTotal <- DescontoTotal + (ValorCompra * 15 / 100);
 Fim;
 
 
 escreva('Preço unitário: ');
 Leia(Preco);
 Fim;
 
 Escreva('Deixou de ser arrecadado: ', DescontoTotal);
 
Fim.
TÓPICO 3
1 Para que servem os contadores?
R.: Para contar quantas vezes uma estrutura de repetição é executada ou quantas 
vezes uma situação específica é executada dentro de uma estrutura de repetição.
32 GABARITO DAS AUTOATIVIDADES UNIASSELVI
NEAD
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
2 O que é inicialização e para que serve?
R.: É atribuir um valor inicial a uma variável.
Quando uma variável receber o conteúdo que ela já possui (por exemplo: 
variavel ← variavel +1), é necessário inicializar, pois na primeira vez que a 
instrução for executada, a variável já deverá ter algum valor armazenado.
3 Para que servem os acumuladores?
R.: Como o nome já sugere, serve para acumular valores em uma variável, 
geralmente fazendo a variável receber o que ela já possui armazenada até 
o momento, mais o conteúdo de outra variável ou resultado de um cálculo.
4 Para cada uma das técnicas a seguir, imagine um problema que 
necessita da técnica para ser resolvido (diferente dos problemas 
já apresentados no caderno), descreva o problema imaginado e 
resolva-o utilizando algoritmos (ao todo, serão três algoritmos):
a) Contador
R.:
{ Conta quantas pessoas são maiores de idade (18 anos ou mais)}
Algoritmo Unidade2_Topico3_Exe4_a ;
var
 Idade, Maiores : inteiro;
início
 Maiores <- 0;
 escreva('Idade: ');
 Leia(Idade);
 Enquanto (Idade > 0) faça
 início
 Se (Idade >= 18) então
 início
 Maiores <- Maiores + 1;
 Fim;
 escreva('Idade: ');
 Leia(Idade);
 Fim; 
33UNIASSELVI
NEAD
GABARITO DAS AUTOATIVIDADES
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
Escreva(Maiores, ' pessoas são maiores de idade.');
 Leia;
Fim.
b) Acumulador
R.:
{
Uma loja resolveu doar todo o valor arrecadado durante um dia,
nas compras que custarem menos de 5 reais.
O algoritmo deverá solicitar valores das compras até que seja informado 
0 (zero).
Ao final, o algoritmo deverá exibir o valor total que será doado.
 }
Algoritmo Unidade2_Topico3_Exe4_b ;
var
 ValorCompra, Doacao : inteiro;
início
 Doacao <- 0;
 escreva('Valor da compra: ');
 Leia(ValorCompra);
 Enquanto (ValorCompra > 0) faça
 início
 
 Se (ValorCompra < 5) então
 início
 Doacao <- Doacao + ValorCompra;
 Fim;
 escreva('Valor da compra: ');
 Leia(ValorCompra);
 Fim;
 Escreva('Valor recebido por doação: ', Doacao);
 Leia;
Fim.
34 GABARITO DAS AUTOATIVIDADES UNIASSELVI
NEAD
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
c) Menor valor
R.:
{
O algoritmo lê o nome e idade de várias pessoas até que seja informado 
0 (zero)
para a idade.
Em seguida, o algoritmo deverá exibir o nome da pessoa mais nova.
 }
Algoritmo Unidade2_Topico3_Exe4_c ;
var
 Nome, NomeMaisNovo : texto;
 Idade, IdadeMaisNovo : inteiro;
início
 
 IdadeMaisNovo <- 999;
 escreva('Idade: ');
 Leia(Idade);
 Enquanto (Idade > 0) faça
 início
 escreva('Nome: ');
 Leia(Nome);
 
 Se (Idade < IdadeMaisNovo) então
 início
 IdadeMaisNovo <- Idade;
 NomeMaisNovo <- Nome;
 Fim;
 
 escreva('Idade: ');
 Leia(Idade);
 Fim;
 
 Escreva(NomeMaisNovo, ' é a pessoa mais nova.');
 
Fim.
35UNIASSELVI
NEAD
GABARITO DAS AUTOATIVIDADES
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
5 O que é "looping"?
R.: É quando uma estrutura de repetição entra em uma situação onde nunca 
mais irá parar de repetir.
6 Faça um algoritmo diferente do apresentado no caderno, cuja 
estrutura de repetição entre em looping.
R.:
{ Se for informado um valor menor do que zero para “x”, a estrutura irá 
parar. Mas se for informado um valor maior do que zero, entrará em 
looping }
Algoritmo Unidade2_Topico3_Exe;
var
 x : Inteiro;
início
 Escreva('Informe um valor: ');
 Leia(x);
 Enquanto (x > 0) faça
 Início
 Escreva('O valor informado para x é ', x);
 Fim;
Fim.
TÓPICO 4
1 O que são vetores?
R.: Os vetores são um tipo de variável onde se podem armazenar vários 
valores ao mesmo tempo.
36 GABARITO DAS AUTOATIVIDADES UNIASSELVI
NEAD
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
2 Escreva um algoritmo que leia 10 valores e armazene-os. Em seguida, 
o algoritmo percorrerá todos os valores e, ao final, exibirá qual é o 
maior valor armazenado no vetor.
R.:
Algoritmo Unidade2_Topico4_Exe2 ;
Constante qtd = 10;
var
 valores : vetor [1..qtd] de inteiro;
 i, maior : inteiro;
início
 { Armazenando os valores }
 Para i <- 1 até qtd faça
 início
 escreva('Valor ', i, ': ');
 Leia(valores[i]);
 Fim;
 { Uma boa técnica é atribuir o primeiro valor do vetor como sendo o 
maior
 Depois é só comparar com os demais }
 Maior <- valores[1];
 
 { Percorrendo e localizando o maior valor.
 Pode iniciar da 2a. posição, pois o 1o. já está como sendo o maior até 
o momento }
 Para i <- 2 até qtd faça
 início
 Se (valores[i] > Maior) então
 início
 Maior <- valores[i];
 Fim;
 Fim;
 escreva('O maior valor armazenado é: ', Maior);
Fim.
37UNIASSELVI
NEAD
GABARITO DAS AUTOATIVIDADES
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
3 Escreva um algoritmo que leia 20 valores e armazene todos eles. Em 
seguida, o algoritmo deverá exibir quantos valores negativos estão 
armazenados no vetor.
R.:
Algoritmo Unidade2_Topico4_Exe3;
Constante qtd = 20;
var
 valores : vetor [1..qtd] de real;
 i, negativos : inteiro;
início
 negativos <- 0;
 Para i <- 1 até qtd faça
 início
 escreva('Informe um valor: ');
 Leia(valores[i]);
 Fim;
 { Percorre o vetor.
 Poderia ser verificado no "for" anterior,
 mas foi feito separadamente para termos noção
 que todos os valores já estão armazenados quando
 formos verificar }
 Para i <- 1 até qtd faça
 início
 Se (valores[i] < 0) então
 início
 negativos <- negativos + 1;
 Fim;
 Fim;
 Escreva(negativos, ' valores eram negativos.');
Fim.
38 GABARITO DAS AUTOATIVIDADES UNIASSELVI
NEAD
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
4 Desenvolva um algoritmo que solicite 10 valores a armazene-os. Após 
armazenados, o algoritmo deverá exibir quantos valores pares estão 
armazenados no vetor.
R.:
Algoritmo Unidade2_Topico4_Exe4 ;
Constante qtd = 10;
var
 valores : vetor [1..qtd] de inteiro;
 i, pares : inteiro;
início
 pares <- 0;
 
 Para i <- 1 até qtd faça
 início
 escreva('Informe um valor: ');
 Leia(valores[i]);
 Fim;
 { Percorre o vetor.
 Poderia ser verificado no "for" anterior,
 mas foi feito separadamente para termos noção
 que todos os valores já estão armazenados quando
 formos verificar }
 Para i <- 1 até qtd faça
 início
 Se (valores[i] mod 2 = 0) então
 início
 pares <- pares + 1;
 Fim;
 Fim;
 escreva(pares, ' valores são pares.');
Fim.
39UNIASSELVI
NEAD
GABARITO DAS AUTOATIVIDADES
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
5 Faça um algoritmo que solicite 15 valores e armazene todos em um 
vetor. Ao final, o algoritmo deverá exibir quantos valores múltiplos 
de três estão armazenados.
R.:
Algoritmo Unidade2_Topico4_Exe5 ;
Constante qtd = 15;
var
 valores : vetor [1..qtd] de inteiro;
 i, multiplo3 : inteiro;
início
 multiplo3 <- 0;
 Para i <- 1 até qtd faça
 início
 escreva('Informe um valor: ');
 Leia(valores[i]);
 Fim;
 { Percorre o vetor.
 Poderia ser verificado no "for" anterior,
 mas foi feito separadamente para termos noção
 que todos os valores já estão armazenados quando
 formos verificar }
 Para i <- 1 até qtd faça
 início
 Se (valores[i] mod 3 = 0) então
 início
 multiplo3 <- multiplo3 + 1;
 Fim;
 Fim;
 escreva(multiplo3, ' valores são multiplos de 3.');
Fim.
40 GABARITO DAS AUTOATIVIDADES UNIASSELVI
NEAD
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
6 Refaça o algoritmo anterior, porém, após armazenados os valores, o 
algoritmo deverá solicitar mais um valor e, em seguida, exibir todos 
os valores múltiplos deste último valor lido.
R.:
Algoritmo Unidade2_Topico4_Exe6;
Constante qtd = 15;
var
 valores : vetor [1..qtd] de inteiro;
 i, valor : inteiro;
início
 Para i <- 1 até qtd faça
 início
 escreva('Informe um valor: ');
 Leia(valores[i]);
 Fim;
 escreva('Você deseja encontrar os múltiplos de que valor: ');
 Leia(valor);
 
 Para i <- 1 até qtd faça
 início
 Se (valores[i] mod valor = 0) então
 início
 Escreva(valores[i]);
 Fim;
 Fim;
Fim.
7 Escreva um algoritmo que leia 20 valores e armazene todos eles. 
Em seguida, o algoritmo deverá exibir uma mensagem informando 
se a quantidade de valores pares é maior do que a quantidade de 
valores ímpares; se a quantidade de valores ímpares é maior do que 
a quantidade de valores pares ou se a quantidade é igual.
R.:
41UNIASSELVI
NEAD
GABARITO DAS AUTOATIVIDADES
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
ÃO
Algoritmo Unidade2_Topico4_Exe7;
Constante qtd = 20;
var
 valores : vetor [1..qtd] de inteiro;
 i, qtd_pares, qtd_impares : inteiro;
início
 qtd_pares <- 0;
 qtd_impares <- 0;
 Para i <- 1 até qtd faça
 início
 escreva('Informe um valor: ');
 Leia(valores[i]);
 Fim;
 
 Para i <- 1 até qtd faça
 início
 Se (valores[i] mod 2 = 0) então
 início
 qtd_pares <- qtd_pares + 1;
 Fim
 senão
 início
 qtd_impares <- qtd_impares + 1;
 Fim;
 Fim; 
 
 Se (qtd_pares > qtd_impares) então
 início
 Escreva('A quantidade de valores pares é maior do que a quantidade 
de valores ímpares.');
 Fim
 senão Se (qtd_impares > qtd_pares) então
 início
 Escreva('A quantidade de valores ímpares é maior do que a quantidade 
de valores pares.');
 Fim
 senão
 início
 Escreva('A quantidade de valores pares e ímpares é igual.');
 Fim;
Fim.
42 GABARITO DAS AUTOATIVIDADES UNIASSELVI
NEAD
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
8 Desenvolva um algoritmo que solicite ao usuário quantos nomes ele 
deseja informar. Esta quantidade não pode ser maior do que 50. Em 
seguida, o algoritmo deverá solicitar um nome para busca.
 Após solicitar o nome, o algoritmo deverá percorrer todos os nomes 
armazenados e verificar se o nome de busca existe armazenado. Se 
tiver, exibir a mensagem “Nome encontrado”; se não tiver, exibir a 
mensagem “Nome inexistente”.
R.:
Algoritmo Unidade2_Topico4_Exe8 ;
var
 nomes : vetor [1..50] de texto;
 nome_busca : texto;
 qtd, i : inteiro;
início
 escreva('Quantos nomes deseja informar? ');
 Leia(qtd);
 { Enquanto a quantidade ultrapassar 50, pede novamente }
 Enquanto (qtd > 50) ou (qtd < 0) faça
 início
 escreva('A quantidade não pode ultrapassar 50, nem pode ser 
negativa. Quantos nomes deseja informar? ');
 Leia(qtd);
 Fim;
 
 escreva('Nome para busca: ');
 Leia(nome_busca);
Fim.
TÓPICO 5
 
Questão única: Faça o teste de mesa do trecho restante do algoritmo.
 
Linha 21: L recebe 1
43UNIASSELVI
NEAD
GABARITO DAS AUTOATIVIDADES
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
Algoritmo Unidade2_Topico5_Exe1 ;
{ Tanto as linhas quanto colunas são iguais.
 Assim, coloca-se em uma única constante este valor }
Constante Dimensao = 4;
var
 { A matriz terá as linhas 1 a 4 e as colunas 1 a 4 }
 valores : vetor [1..Dimensao, 1..Dimensao] de Real;
 MaiorValor : Real;
 l, c, lMaior, cMaior : inteiro;
início
 Para l <- 1 até Dimensao faça
 início
 Para c <- 1 até Dimensao faça
 início
 escreva('Valor: ');
 Leia(valores[l,c]);
 Fim;
 Fim;
 {Percorre a matriz para localizar o maior valor.
 Como é necessário iniciar a variável que guarda um valor,
 pode-se iniciar com o primeiro valor armazenado na matriz.
 A casa onde está este valor é a 1,1. Assim, armazena esta
 coordenada nas variáveis lMaior e cMaior
 }
 MaiorValor <- valores[1,1];
 lMaior <- 1;
 cMaior <- 1;
 
 { Percorre a matriz procurando se há um valor maior que o primeiro }
 Para l <- 1 até Dimensao faça
 início
 Para c <- 1 até Dimensao faça
 início
 Se (valores[l,c] > MaiorValor) então
 início
 { Guarda o valor e onde ele está }
 MaiorValor <- valores[l,c];
44 GABARITO DAS AUTOATIVIDADES UNIASSELVI
NEAD
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
 lMaior <- l;
 cMaior <- c;
 Fim;
 Fim;
 Fim;
 Escreva('O maior valor é ',MaiorValor,'. Ele está na linha ',lMaior,', coluna 
',cMaior);
 Leia;
Fim.
2 Crie um algoritmo que solicite valores e preencha uma matriz de 
ordem 5 x 4 (5 linhas por 4 colunas). Em seguida, o algoritmo deverá 
solicitar mais um valor para procurá-lo na matriz. O algoritmo deverá 
informar, no fim, em que linha x coluna está o valor. Se o valor não 
for encontrado, o algoritmo deverá exibir uma mensagem informando 
esta situação.
R.:
Algoritmo Unidade2_Topico5_Exe2;
Constante
 linhas = 5;
 colunas = 4;
 
var
 mat : vetor [1..linhas,1..colunas] de real;
 procurar : real;
 l, c : inteiro;
 encontrou : lógica;
 
início
 Para l <- 1 até linhas faça
 início
 Para c <- 1 até colunas faça
 início
 escreva('Valor: ');
 Leia(mat[l,c]);
 Fim;
 Fim;
 
45UNIASSELVI
NEAD
GABARITO DAS AUTOATIVIDADES
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
escreva('Valor para busca: ');
 Leia(procurar);
 { Como ainda não começou a procurar, assume-se que ainda não 
encontrou o valor }
 encontrou <- falso;
 Para l <- 1 até linhas faça
 início
 Para c <- 1 até colunas faça
 início
 Se (mat[l,c] = procurar) então
 início
 { Mostra a localização do valor }
 Escreva('Linha: ',l,' Coluna: ',c);
 { Indica que encontrou o valor }
 encontrou <- verdadeiro;
 Fim;
 Fim;
 Fim; 
 { Se não encontrou o valor, exibe a mensagem }
 Se (not encontrou) então
 início
 escreva('O valor ',procurar,' não existe na matriz.');
 Fim;
Fim. 
3 Desenvolva um algoritmo que leia valores e preencha uma matriz 4 
x 4. O algoritmo deverá informar quantos valores maiores do que 5 
estão armazenados na matriz.
R.:
46 GABARITO DAS AUTOATIVIDADES UNIASSELVI
NEAD
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
Algoritmo Unidade2_Topico5_Exe3;
Constante
 Dimensao = 4;
var
 valores : vetor [1..Dimensao,1..Dimensao] de Real;
 l,c, QtosMaioresQ5 : inteiro;
início
 QtosMaioresQ5 <- 0;
 
 Para l <- 1 até Dimensao faça
 início
 Para c <- 1 até Dimensao faça
 início
 escreva('Valor: ');
 Leia(valores[l,c]);
 Fim;
 Fim;
 
 Para l <- 1 até Dimensao faça
 início
 Para c <- 1 até Dimensao faça
 início
 Se (valores[l,c] > 5) então
 início
 QtosMaioresQ5 <- QtosMaioresQ5 + 1;
 Fim;
 Fim;
 Fim; 
 
 Escreva('Existem ', QtosMaioresQ5, ' valores maiores do que 5 
armazenados na matriz.');
 
 Leia;
Fim.
47UNIASSELVI
NEAD
GABARITO DAS AUTOATIVIDADES
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
4 Faça um algoritmo que solicite valores para preencher uma matriz 3 
x 4. Depois, o algoritmo deverá solicitar mais um valor e criar uma 
segunda matriz, cujos valores são formados pelo resultado de cada 
um dos valores da primeira matriz, multiplicados pelo valor lido por 
último. Exibir a segunda matriz.
R.:
Algoritmo Unidade2_Topico5_Exe4;
Constante
 linhas = 3;
 colunas = 4;
 
var
 mat : vetor [1..linhas,1..colunas] de real;
 mat2 : vetor [1..linhas,1..colunas] de real;
 multiplicador : real;
 l, c : inteiro;
início
 Para l <- 1 até linhas faça
 início
 Para c <- 1 até colunas faça
 início
 escreva('Valor: ');
 Leia(mat[l,c]);
 Fim;
 Fim;
 
 escreva('Valor para multiplicar: ');
 Leia(multiplicador);
 Para l <- 1 até linhas faça
 início
 Para c <- 1 até colunas faça
 início
 mat2[l,c] <- mat[l,c] * multiplicador;
 Fim;
 Fim;
 
48 GABARITO DAS AUTOATIVIDADES UNIASSELVI
NEAD
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
 { Mostra a matriz 2 }
 Para l <- 1 até linhas faça
 início
 Para c <- 1 até colunas faça
 início
 escreva(mat2[l,c],' '); { Exibe o valor e adiciona um espaço para 
exibir o próximo }
 Fim;
 Escreva;
 Fim;
 Leia;
Fim.
5 Crie um algoritmo que preencha uma matriz de dimensão 3 x 3 com 
valores fornecidos pelo usuário. O algoritmo deverá exibir a média 
dos valores de cada uma das linhas.
R.:
Algoritmo Unidade2_Topico5_Exe2;Constante
 Dimensao = 3;
 
var
 mat : vetor [1..Dimensao,1..Dimensao] de real;
 SomaValores : Real;
 l, c : inteiro;
início
 Para l <- 1 até Dimensao faça
 início
 Para c <- 1 até Dimensao faça
 início
 escreva('Valor: ');
 Leia(mat[l,c]);
 Fim;
 Fim;
 
 Para l <- 1 até Dimensao faça
 início
49UNIASSELVI
NEAD
GABARITO DAS AUTOATIVIDADES
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
{ A cada linha, inicializa SomaValores novamente }
 SomaValores <- 0;
 { Percorre todos os valores de uma linha }
 Para c <- 1 até Dimensao faça
 início
 SomaValores <- SomaValores + mat[l,c];
 Fim;
 { Ao chegar aqui, terminou a soma de todos os valores de uma linha.
 Com isto, calcula-se a média e já exibe, sem necessidade de armazenar 
em variável }
 Escreva('Média dos valores da ',l,' linha: ', (SomaValores / Dimensao));
 { A média é a soma dos valores dividodo pela quantidade. Sabe-se que 
todas as linhas
 terão três (Dimensao) valores. Assim, divide-se por Dimensao }
 
 Fim;
 Leia;
Fim.
6 Escreva um algoritmo que leia um número e exiba uma mensagem 
informando se o número é primo ou não. O algoritmo utilizará um 
subalgoritmo que recebe um valor, verifica se ele é primo e retorna uma 
informação lógica indicando se é primo ou não. O algoritmo principal 
deverá utilizar esta informação para exibir a mensagem na tela.
Algoritmo Unidade2_Topico6_Exe6;
var
 Numero : inteiro;
função Primo(Numero : inteiro) : lógica;
var
 NumeroTeste : inteiro;
 Verifica : lógica;
 
início
 Verifica <- verdadeiro; 
 
 { Se o número for -1, 0 ou 1, já assume que não é mais primo }
 Se (Numero >= -1) e (Numero <= 1) então
 início
50 GABARITO DAS AUTOATIVIDADES UNIASSELVI
NEAD
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
 Verifica <- falso;
 Fim
 senão { Se não for nenhum desses valores, faz os testes }
 início
 { Não é necessário testar a divisão pelo próprio número, nem por 1, pois 
sempre dará resto zero 
 Assim, testa-se a divisão sempre começando por um número anterior 
ao número informado e indo até 2 }
 
 NumeroTeste <- 2;
 
 { Enquanto não chegou no número anterior ao número informado
 e enquanto não descobrir que não é mais primo, continua }
 Enquanto (NumeroTeste < Numero) e (Verifica) faça
 início
 { Se a divisão for exata (resto zero) é porque o número é divisível 
por outro número,
 que não é ele mesmo, nem 1.}
 Se (Numero mod NumeroTeste = 0) então
 início
 Verifica <- falso;
 Fim;
 NumeroTeste <- NumeroTeste + 1;
 Fim;
 Fim;
 { Retorna o "verdadeiro" ou "falso" }
 Primo <- Verifica;
Fim;
início
 escreva('Informe um número: ');
 Leia(Numero);
 
 Se (Primo(Numero)) então
 início
 Escreva('O número ',Numero, ' é primo.');
 Fim
 senão
 início
 
51UNIASSELVI
NEAD
GABARITO DAS AUTOATIVIDADES
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
Escreva('O número ',Numero, ' não é primo.');
 Fim;
Fim.
7 Desenvolva um algoritmo que leia três números. Os três números 
serão enviados para um subalgoritmo que retornará o maior dos três. 
O algoritmo principal deverá exibir o maior valor.
R.:
Algoritmo Unidade2_Topico6_Exe7;
var
 a, b, c : Real;
função Maior (v1, v2, v3 : Real) : Real;
var
 ArmazenaMaior : Real;
início
 Se (v1 > v2) então
 início
 ArmazenaMaior <- v1;
 Fim
 senão
 início
 ArmazenaMaior <- v2;
 Fim;
 Se (v3 > ArmazenaMaior) então
 início
 ArmazenaMaior <- v2;
 Fim;
 Maior <- ArmazenaMaior;
Fim;
52 GABARITO DAS AUTOATIVIDADES UNIASSELVI
NEAD
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
início
 escreva('Informe o primeiro número: ');
 Leia(a);
 escreva('Informe o segundo número: ');
 Leia(b);
 escreva('Informe o terceiro número: ');
 Leia(c);
 Escreva('O maior valor é ', Maior(a,b,c));
Fim.
8 Escreva um algoritmo para calcular exponenciação. O algoritmo 
deverá ler dois valores e exibir o resultado do primeiro elevado ao 
segundo (por exemplo, se os valores lidos forem 3 e 2, o algoritmo 
deverá exibir o resultado de 32). O algoritmo deverá utilizar um 
subalgoritmo que recebe dois valores, calcula e retorna o primeiro 
elevado ao segundo. Calcular somente com expoentes inteiros.
R.:
Algoritmo Unidade2_Topico6_Exe8;
var
 base : Real;
 expoente : inteiro;
 
função Potencia(b : Real; e : inteiro) : Real;
var
 i : inteiro;
 Resultado : Real;
início
 Resultado <- 1; { Inicializa com um número neutro na multiplicação }
 { Multiplica a base por "n" vezes, 
 onde "n" equivale à quatidade representada pelo expoente }
 Para i <- 1 até e faça
 início
 Resultado <- Resultado * b;
 Fim;
 
53UNIASSELVI
NEAD
GABARITO DAS AUTOATIVIDADES
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
 Potencia <- Resultado;
Fim;
início
 escreva('Informe o número base: ');
 Leia(base);
 escreva('Informe o expoente: ');
 Leia(expoente);
 Escreva(base, ' elevado a ', expoente, ' é ', Potencia(base, expoente));
Fim.
9 Desenvolva um algoritmo que leia um valor correspondente ao 
raio de uma esfera. O algoritmo deverá passar este valor para um 
subalgoritmo que calculará o volume da esfera e retornará este 
volume. O algoritmo principal deverá exibir o volume da esfera. A 
fórmula para calcular o volume de uma esfera, baseando-se no valor 
do raio, é v = 4/3 * Pi * R3.
R.:
Algoritmo Unidade2_Topico6_Exe9;
var
 raio : Real;
função VolumeEsfera(r : Real) : Real;
Constante
 pi = 3.1415926535;
início
 VolumeEsfera <- 4 / 3 * pi * (r * r * r);
Fim;
início
 escreva('Raio: ');
 Leia(raio);
 Escreva('O volume da esfera é ',VolumeEsfera(raio));
Fim.
54 GABARITO DAS AUTOATIVIDADES UNIASSELVI
NEAD
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
10 Faça um algoritmo que exiba este menu na tela:
1 – Adição
2 – Subtração
3 – Multiplicação
4 – Divisão
Este menu deverá ser exibido por um subalgoritmo.
O algoritmo principal deverá ler a opção do usuário e mais dois valores 
numéricos.
Os dois valores, mais a operação, deverão ser enviados a um subalgoritmo 
que fará o cálculo de acordo com a escolha do usuário e retornará o resultado.
Ex.: Se a escolha foi 2 (subtração) e os valores foram 2 e 8, o subalgoritmo 
retornará -6.
O algoritmo deverá exibir o resultado.
R.:
Algoritmo Unidade2_Topico6_Exe10;
var
 valor1, valor2 : Real;
 Operacao : char;
Procedimento Menu;
início
 Escreva('1 - Adição');
 Escreva('2 - Subtração');
 Escreva('3 - Multiplicação');
 Escreva('4 - Divisão'); 
Fim;
função Calculo(v1, v2 : Real; Op : char) : Real;
início
 Caso Op de
 '1' : Calculo <- v1 + v2;
 '2' : Calculo <- v1 - v2;
 '3' : Calculo <- v1 * v2;
 '4' :
 início
 { Como divisão por 0 não existe, deve-se tratar esta situação }
 Se (v2 = 0) então
 escreva('Erro. Divisão por zero.')
 
55UNIASSELVI
NEAD
GABARITO DAS AUTOATIVIDADES
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
senão
 Calculo <- v1 / v2;
 Fim;
 Fim;
Fim;
início
 escreva('Primeiro valor: ');
 Leia(valor1);
 escreva('Segundo valor: ');
 Leia(valor2);
 { Chama o sub-programa que exibe o menu }
 Menu;
 { Lê a opção do usuário }
 Leia(Operacao);
 escreva('Resultado do cálculo: ', Calculo(valor1, valor2, Operacao));
Fim.
UNIDADE 3
TÓPICO 1
1 Por que foi escolhida a linguagem Pascal para o aprendizado de 
linguagens de programação?
R.: Por ser a mais parecida com a pseudolinguagem portugol.
2 Esta linguagem tem este nome em homenagem ao Blaise Pascal. Por 
que foi prestada esta homenagem a ele? 
R.: Porque ele inventoua primeira máquina de calcular mecânica do mundo.
3 Qual é o atributo pelo qual Blaise Pascal é conhecido?
R.: Blaise Pascal é considerado o pai da Ciência da Computação.
56 GABARITO DAS AUTOATIVIDADES UNIASSELVI
NEAD
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
4 Quem criou a linguagem Pascal? Com que objetivo?
R.: Niklaus Wirth. Seu objetivo era criar uma linguagem para o ensino da 
programação. Uma linguagem que fosse simples, incentivando o aprendizado 
através de programas claros e legíveis, permitindo a utilização de boas 
técnicas de programação.
5 Cite dois exemplos de ambientes de programação para Pascal.
R.: Turbo Pascal, da Borland
PascalZim
6 O que é case sensitive?
R.: Case sensitive significa que a linguagem faz distinção entre letras 
maiúsculas e minúsculas. Em outras palavras, se dizemos que uma linguagem 
é case sensitive, as letras maiúsculas são diferentes de minúsculas.
7 Cite uma importância dos tipos de dados em uma linguagem de 
programação.
R.: Para que o programador possa ter um certo controle sobre o quanto seu 
programa irá utilizar da memória do computador.
TÓPICO 2
1 Qual é a regra básica sobre a utilização do Begin/End em uma 
estrutura: quando é obrigatório e quando não é?
R.: O Begin/End apenas é obrigatório quando há duas ou mais instruções 
dentro de uma estrutura.
2 Qual é a importância de utilizar o "else" para encadear uma estrutura 
"if", ao invés de apenas utilizar estruturas "if" independentes?
R.: Se utilizar “IFs” independentes, todas as condições da estrutura serão 
testadas. Ao encadear com “else”, quando uma condição for verdadeira, a 
execução não testa mais as condições seguintes.
3 Crie um programa que solicite o salário de uma pessoa. O programa 
deverá dar um reajuste de 9% no salário se este for até R$ 1.000,00. 
Se for maior, deverá dar um reajuste de 6%. Exibir o novo salário.
57UNIASSELVI
NEAD
GABARITO DAS AUTOATIVIDADES
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
R.:
Program Unidade3_Topico2_Exe3;
var
 Salario, Reajuste : Real; 
Begin
 write('Salário: ');
 readln(Salario);
 
 if (Salario <= 100) then
 begin
 Reajuste := 9;
 end
 else
 begin
 Reajuste := 6;
 end;
 
 Writeln('Salário com reajuste: ', (Salario + (Salario * Reajuste / 
100))); 
 
End.
4 Uma loja concede pagamento a prazo em 3, 5 e 7 vezes. A partir do 
preço à vista de um determinado produto, calcule o preço total a pagar 
e o valor da prestação mensal, referentes ao pagamento parcelado. 
Se o pagamento for parcelado em três vezes, deverá ser dado um 
acréscimo de 12% no total a ser pago. Se for parcelado em 5 vezes, 
o acréscimo é de 22%. Parcelado em 10 vezes, acrescenta-se 38%.
R.:
Program Unidade3_Topico2_Exe4;
var
 preco_vista, total_pagar, 
 prestacao, acrescimo : Real;
 parcelas : Integer;
 Begin
 write('Preço da mercadoria: ');
 readln(preco_vista);
 
58 GABARITO DAS AUTOATIVIDADES UNIASSELVI
NEAD
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
write('Em quantas vezes você deseja pagar: ');
 readln(parcelas);
 
 { Não permite que continue se a parcela não for uma opção correta 
}
 while (parcelas <> 3) and (parcelas <> 5) and (parcelas <> 10) do
 begin
 write('Esta quantidade não é permitida. Em quantas vezes 
você deseja pagar: ');
 readln(parcelas);
 end;
 
 case parcelas of
 3 : acrescimo := 12;
 5 : acrescimo := 22;
 10 : acrescimo := 38;
 end;
 
 total_pagar := preco_vista + (preco_vista * acrescimo / 100);
 
 writeln('Será pago R$ ', total_pagar,' em ',parcelas,' vezes de R$ ', 
(total_pagar / parcelas));
 
 End.
5 Desenvolva um programa que solicite o cargo, o salário e a idade de 
uma pessoa e calcule o aumento que ela receberá de acordo com os 
dados a seguir:
Cargo Idade Aumento
1 - Programador Até 20 anos 5%
1 - Programador Acima de 20 anos 8%
2 – Analista de sistemas Até 25 anos 8,5%
2 – Analista de sistemas Acima de 25 anos 10%
3 – Qualidade de software Independente da idade 7%
O programa deverá exibir o novo salário da pessoa.
Faça o programa de duas formas, cada uma utilizando uma estrutura de 
seleção diferente.
59UNIASSELVI
NEAD
GABARITO DAS AUTOATIVIDADES
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
R.:
Utilizando “case”
Program Unidade3_Topico2_Exe5;
var
 Cargo : char;
 Salario, Aumento : Real;
 Idade : Integer;
 
Begin
 writeln('Informe o cargo');
 writeln('1 - Programador');
 writeln('2 - Analista de sistemas');
 writeln('3 - Qualidade de software');
 readln (Cargo);
 
 write('Salário: ');
 readln(Salario);
 
 write('Idade: ');
 readln(Idade);
 
 case Cargo of
 '1' : 
 if (idade <= 20) then
 Aumento := 5
 else
 Aumento := 8;
 '2' :
 if (idade <= 25) then
 Aumento := 8.5
 else
 Aumento := 10;
 '3' : Aumento := 7;
 end;
 writeln('Novo salário: ', (Salario + (Salario * Aumento / 100))); 
 
 
End.
60 GABARITO DAS AUTOATIVIDADES UNIASSELVI
NEAD
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
Utilizando “if”
Program Unidade3_Topico2_Exe5;
var
 Cargo : char;
 Salario, Aumento : Real;
 Idade : Integer;
 
Begin
 writeln('Informe o cargo');
 writeln('1 - Programador');
 writeln('2 - Analista de sistemas');
 writeln('3 - Qualidade de software');
 readln (Cargo);
 
 write('Salário: ');
 readln(Salario);
 
 write('Idade: ');
 readln(Idade);
 
 if (Cargo = '1') then
 begin
 if (idade <= 20) then
 Aumento := 5
 else
 Aumento := 8;
 end
 else if (Cargo = '2') then
 begin
 if (idade <= 25) then
 Aumento := 8.5
 else
 Aumento := 10;
 end
 else if (Cargo = '3') then
 begin
 Aumento := 7;
 end
 else
 begin
 
61UNIASSELVI
NEAD
GABARITO DAS AUTOATIVIDADES
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
writeln('Cargo inexistente.');
 Aumento := 0;
 end;
 writeln('Novo salário: ', (Salario + (Salario * Aumento / 100))); 
 
 
End.
6 Faça um programa que solicite três valores correspondentes aos 
lados de um possível triângulo e informe:
- Se for um triângulo, exibir qual é o tipo (equilátero, isósceles, escaleno).
- Se for um triângulo retângulo, exibir uma mensagem informando.
- Se não for triângulo, exibir uma mensagem informando.
Regras matemáticas:
a) Para que as medidas formem um triângulo, cada um de seus lados deve 
ser maior que o valor absoluto (módulo) da diferença dos outros dois lados e 
menor que a soma dos outros dois lados. Resumo da regra:
| b - c | < a < b + c 
| a - c | < b < a + c 
| a - b | < c < a + b 
b) Para que seja um triângulo equilátero, todos os seus lados devem ser 
iguais.
c) Para que seja um triângulo isósceles, deve possuir apenas dois lados 
iguais.
d) Para que seja um triângulo escaleno, todos os seus lados devem ser 
diferentes.
e) Para que seja um triângulo retângulo, a soma do quadrado entre dois 
lados deve ser igual ao quadrado do lado restante. Ex.: a2 = b2 + c2. Note 
que um triângulo retângulo pode ser somente isósceles ou escaleno, nunca 
equilátero.
R.:
Program Unidade3_Topico2_Exe6;
var
 a, b, c : Real;
 
 Begin
 
 write('Lado a: ');
 readln(a);
62 GABARITO DAS AUTOATIVIDADES UNIASSELVI
NEAD
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
write('Lado b: ');
 readln(b);
 
 write('Lado c: ');
 readln(c);
 
 { Verifica se é triângulo }
 if (a < b + c) and (b < a + c) and (c < a + b) then
 begin
 { Verifica qual é o triângulo }
 
 { Se todos os lados forem iguais, é equilátero }
 if (a = b) and (b = c) then
 begin
 writeln('O triângulo é Equilátero.');
 end
 else
 begin 
 { Se não for equilátero, pode ser isósceles, 
escaleno e,
 independente disto, pode ser Retântulo }
 if (a = b) or (a = c) or (b = c) then
 begin
 writeln('O triângulo é Isósceles.'); 
 
 end
 else
 begin
 writeln('O triângulo é Escaleno.');
 end;
 
 { Verifica se é retângulo }
 if (((a*a) = (b*b) + (c*c)) or ((b*b) = (a*a) + (c*c)) or 
((c*c) = (a*a) + (b*b))) then
 begin
 writeln('O triângulo é Retângulo.');
 end;
 
 end;
 end
 else 
 begin
 writeln('As medidas não formam um triângulo.');
 end;
 
 End.
63UNIASSELVINEAD
GABARITO DAS AUTOATIVIDADES
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
TÓPICO 3
1 Onde é utilizado e para que serve o DownTo?
R.: É utilizado na estrutura “for” e serve para fazer com que uma variável 
percorra de um número maior para um número menor.
2 Qual é a diferença básica entre as estruturas de repetição While-Do 
e Repeat-Until?
R.: Na estrutura “repeat-until”, as instruções ali contidas executarão pelo 
menos uma vez.
Na estrutura “while-do”, pode ser que as instruções nunca sejam executadas.
3 Refaça o exercício que verifica se um número é primo, agora na 
linguagem de programação. Obs.: procure não consultar o exercício 
feito em algoritmo. Você vai perceber que, mesmo um exercício que 
já foi resolvido, trará desafios ao tentar resolvê-lo novamente.
R.:
Program Unidade3_Topico3_Exe3;
var
 Primo : Boolean; { Variável para identificar se é primo ou não 
(verdadeiro/falso}
 Numero, NumeroTeste : Integer;
Begin
 { Assume que Primo é verdadeiro. 
 A lógica do problema mudará esse valor se no momento que 
descobrir que o número não é primo }
 Primo := true; 
 write('Informe um número: ');
 readln(Numero);
 
 { Se o número for -1, 0 ou 1, já assume que não é mais primo }
 if (Numero >= -1) and (Numero <= 1) then
 begin
 
64 GABARITO DAS AUTOATIVIDADES UNIASSELVI
NEAD
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
Primo := false;
 end
 else { Se não for nenhum desses valores, faz os testes }
 begin
 { Não é necessário testar a divisão pelo próprio número, 
nem por 1, pois sempre dará resto zero 
 Assim, testa-se a divisão sempre começando por um 
número anterior ao número informado e indo até 2 } 
 
 NumeroTeste := 2;
 
 { Enquanto não chegou no número anterior ao número 
informado 
 e enquanto não descobrir que não é mais primo, continua 
}
 while (NumeroTeste < Numero) and (Primo) do
 begin
 { Se a divisão for exata (resto zero) é porque o 
número é divisível por outro número,
 que não é ele mesmo, nem 1.} 
 if (Numero mod NumeroTeste = 0) then
 begin
 Primo := false;
 end; 
 NumeroTeste := NumeroTeste + 1;
 end;
 end;
 
 if (Primo) then
 begin
 writeln('O número ',Numero, ' é primo.');
 end
 else
 begin
 writeln('O número ',Numero, ' não é primo.');
 end;
End.
4 Desenvolva um programa que leia, de uma quantidade indeterminada 
de pessoas, os seguintes dados:
a) Nome
b) Salário
65UNIASSELVI
NEAD
GABARITO DAS AUTOATIVIDADES
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
c) Idade
Ao final, o programa deverá exibir:
a) Nome da pessoa mais velha
b) Nome e salário da pessoa que tem o salário mais alto
c) Salário da pessoa mais nova
Program Unidade3_Topico3_Exe4;
var
 nome, nome_mais_velho, nome_salario_alto : String;
 salario, salario_mais_alto, salario_mais_novo : Real;
 idade, idade_mais_velho, idade_mais_novo : Integer;
 continua : char;
 
Begin
 idade_mais_velho := 0;
 salario_mais_alto := 0;
 idade_mais_novo := 999;
 
 write('Deseja iniciar? (s/n) ');
 readln(continua);
 
 while (continua = 's') do
 begin
 
 write('Nome: ');
 readln(nome);
 write('Salário: ');
 readln(salario);
 write('Idade: ');
 readln(idade);
 
 { Verifica o nome da pessoa mais velha }
 if (idade > idade_mais_velho) then
 begin
 idade_mais_velho := idade;
 nome_mais_velho := nome;
 end;
 
 { Verifica o nome da pessoa que possui o salário mais alto 
}
 if (salario > salario_mais_alto) then
 begin
66 GABARITO DAS AUTOATIVIDADES UNIASSELVI
NEAD
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
salario_mais_alto := salario;
 nome_salario_alto := nome;
 end;
 
 { Verifica o salário da pessoa mais nova }
 if (idade < idade_mais_novo) then
 begin
 idade_mais_novo := idade;
 salario_mais_novo := salario;
 end;
 
 write('Deseja continuar? (s/n) ');
 readln(continua); 
 end;
 
 writeln('Nome da pessoa mais velha: ', nome_mais_velho);
 writeln(nome_salario_alto,' tem o salário mais alto: R$ ',salario_
mais_alto);
 writeln('O salário da pessoa mais nova é R$ ',salario_mais_novo);
 
 
End.
5 Na matemática, um número perfeito é um número inteiro para o qual 
a soma de todos os seus divisores positivos próprios (excluindo ele 
mesmo) é igual ao próprio número. 
 Construa um programa que leia um número e informe se o número 
é perfeito ou não.
 Por exemplo, o 6 é um número perfeito, pois 1 + 2 + 3 = 6. No caso, 
1, 2 e 3 são os únicos divisores de 6.
 Exemplos de números perfeitos: 6; 28; 496; 8128; 33.550.336; 
8.589.869.056.
R.:
67UNIASSELVI
NEAD
GABARITO DAS AUTOATIVIDADES
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
Program Unidade3_Topico3_Exe5;
var
 Numero, SomaDivisores, i : Integer;
Begin
 SomaDivisores := 0;
 write('Informe um número: ');
 readln(Numero);
 
 for i := 1 to Numero - 1 do
 begin
 if (Numero mod i = 0) then
 begin
 SomaDivisores := SomaDivisores + i;
 end;
 end;
 
 if (SomaDivisores = Numero) then
 begin
 write('O número é perfeito.');
 end
 else
 begin
 write('O número não é perfeito.');
 end;
 
End.
6 Em uma empresa, foram solicitadas informações de cada funcionário 
para realizar uma pesquisa. Para cada funcionário, é informado o 
nome e quantos filhos ele possui. Ao final, a pesquisa deverá informar:
a) Nome da pessoa que mais possui filhos
b) Quantos filhos a pessoa do item acima (item a) possui
c) Se existem na empresa mais pessoas com filhos ou mais pessoas sem 
filhos (apresentar uma mensagem informando)
d) Percentual de pessoas sem filhos
R.:
68 GABARITO DAS AUTOATIVIDADES UNIASSELVI
NEAD
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
Program Unidade3_Topico3_Exe6;
var
 nome, nome_mais_filhos : string;
 qtd_filhos, mais_filhos,
 qtd_com_filhos, qtd_sem_filhos : Integer;
 continua : char;
Begin
 
 mais_filhos := 0;
 qtd_com_filhos := 0;
 qtd_sem_filhos := 0;
 
 write('Deseja iniciar? (s/n)');
 readln(continua);
 
 while (continua = 's') do
 begin
 
 write('Nome: ');
 readln(nome);
 write('Quantidade de filhos: ');
 readln(qtd_filhos);
 
 if (qtd_filhos > mais_filhos) then
 begin
 mais_filhos := qtd_filhos;
 nome_mais_filhos := nome;
 end; 
 
 if (qtd_filhos > 0) then
 begin
 qtd_com_filhos := qtd_com_filhos + 1;
 end
 else
 begin
 qtd_sem_filhos := qtd_sem_filhos + 1;
 end;
 
 write('Deseja continuar? (s/n)');
 readln(continua);
 end;
 
69UNIASSELVI
NEAD
GABARITO DAS AUTOATIVIDADES
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
writeln(nome_mais_filhos, ' é o funcionário que mais possui filhos');
 if (qtd_com_filhos > qtd_sem_filhos) then
 begin
 writeln('Existem mais pessoas com filhos.');
 end
 else if (qtd_sem_filhos > qtd_com_filhos) then
 begin
 writeln('Existem mais pessoas sem filhos.');
 end
 else
 begin
 writeln('A quantidade de pessoas sem filhos e com filhos é 
a mesma.');
 end;
 
 { Quantidade sem filhos vezes 100, divido pelo total de pessoas }
 writeln((qtd_sem_filhos * 100 / (qtd_com_filhos+qtd_sem_filhos)), 
'% das pessoas não tem filhos.');
End.
7 Um órgão governamental fará um recadastramento de pessoas físicas 
e jurídicas para obter informações sobre impostos. Para cada pessoa 
ou empresa, serão solicitadas as seguintes informações:
- Tipo de pessoa (física/jurídica)
- Salário ou faturamento bruto mensal
As pessoas físicas pagarão 3,5% do seu salário para o imposto.
As pessoas jurídicas pagarão 5,2%.
Para cada pessoa, exibir quanto de imposto ela irá pagar.
O programa deverá fornecer as seguintes informações:
a) Foram recadastradas mais pessoas físicas ou jurídicas?
b) Qual é a percentagem de pessoas físicas que fizeram recadastramento?
c) Qual foi o imposto (em valor) mais alto pago por uma pessoa jurídica?
d) Qual é a média geral de imposto pago por pessoas físicas?
* Não se sabe quantas pessoas virão fazer o recadastramento. O algoritmo 
deverá estar preparado para isso.
R.:
70 GABARITO DAS AUTOATIVIDADES UNIASSELVI
NEAD
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
Program Unidade3_Topico3_Exe7;
const
 pf = 3.5;
 pj = 5.2;
var
 tipo : char;
 valor_mensal, imposto, 
 imposto_mais_alto_juridica,soma_imposto_fisica : real;
 qtd_fisica, qtd_juridica : Integer;
 
Begin 
 qtd_fisica := 0;
 qtd_juridica := 0;
 imposto_mais_alto_juridica := 0;
 soma_imposto_fisica := 0;
 
 writeln('Informe a opção:');
 writeln('F - Física');
 writeln('J - Jurídica');
 writeln('* - Sair (qualquer outra informação para sair');
 readln(tipo);
 
 while (tipo = 'f') or (tipo = 'j') do
 begin
 
 write('Salário ou faturamento mensal: ');
 readln(valor_mensal);
 
 if (tipo = 'f') then
 begin
 imposto := valor_mensal * pf / 100;
 qtd_fisica := qtd_fisica + 1;
 
 soma_imposto_fisica := soma_imposto_fisica + 
imposto;
 end
 else
 begin
 
71UNIASSELVI
NEAD
GABARITO DAS AUTOATIVIDADES
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
imposto := valor_mensal * pj / 100;
 qtd_juridica := qtd_juridica + 1;
 
 if (imposto > imposto_mais_alto_juridica) then
 begin
 imposto_mais_alto_juridica := imposto;
 end;
 end;
 
 writeln('Informe a opção:');
 writeln('F - Física');
 writeln('J - Jurídica');
 writeln('* - Sair (qualquer outra informação para sair');
 readln(tipo); 
 end;
 if (qtd_fisica > qtd_juridica) then
 begin
 writeln('Foram cadastradas mais pessoas físicas.');
 end
 else if (qtd_juridica > qtd_fisica) then
 begin
 writeln('Foram cadastradas mais pessoas jurídicas.');
 end
 else
 begin
 writeln('Foi cadastrada a mesma quantidade de pessoas 
físicas e jurídicas.');
 end;
 
 writeln((qtd_fisica * 100 / (qtd_fisica+qtd_juridica)), '% das pessoas 
que fizeram cadastramento eram físicas.');
 writeln('O valor mais alto de imposto pago por uma pessoa jurídica 
foi de R$ ', imposto_mais_alto_juridica); 
 if (qtd_fisica > 0) then
 begin
 writeln('A média de imposto pago por pessoas físicas foi de 
R$ ', (soma_imposto_fisica / qtd_fisica));
 end
 else
 begin
 writeln('Não houve pessoas físicas no cadastramento.');
 end;
End.
72 GABARITO DAS AUTOATIVIDADES UNIASSELVI
NEAD
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
8 Abriu um novo cinema na cidade e, no dia da estreia, estão cobrando 
10 reais a entrada normal e 5 para estudantes. O cinema deseja saber 
algumas informações sobre a primeira sessão (a sessão de estreia).
 Para isto, você fará um programa em que, quando uma pessoa 
comprar um ingresso para esta sessão, o atendente informe se a 
pessoa é estudante ou não.
 Você define a flag de saída.
 Após vendidos todos os ingressos da sessão, o programa deverá exibir:
a) Quanto o cinema arrecadou na sessão?
b) Qual foi o percentual de estudantes em relação ao total de pessoas?
c) Foi arrecadado mais com entradas normais ou com estudantes?
d) Foram comprados mais ingressos de estudante ou normais?
R.:
Program Unidade3_Topico3_Exe8;
var
 tipo : char;
 valor, total, valor_estudante, valor_nao_estudante : real;
 qtd_estudante, qtd_nao_estudante : integer;
 
Begin
 
 total := 0;
 valor_estudante := 0;
 valor_nao_estudante := 0;
 qtd_estudante := 0;
 qtd_nao_estudante := 0;
 writeln('1 - Estudante');
 writeln('2 - Não estudante');
 writeln('* - Qualquer outra informação para sair');
 readln(tipo);
 
 while(tipo = '1') or (tipo = '2') do
 begin
 
 if (tipo = '1') then
 begin
 valor := 5;
 valor_estudante := valor_estudante + valor;
73UNIASSELVI
NEAD
GABARITO DAS AUTOATIVIDADES
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
qtd_estudante := qtd_estudante + 1;
 
 end
 else
 begin
 valor := 10;
 valor_nao_estudante := valor_nao_estudante + valor;
 qtd_nao_estudante := qtd_nao_estudante + 1;
 end;
 
 total := total + valor;
 
 writeln('1 - Estudante');
 writeln('2 - Não estudante');
 writeln('* - Qualquer outra informação para sair');
 readln(tipo); 
 end;
 
 writeln('O cinema arrecadou R$ ', total);
 writeln('O percentual de estuduantes foi de ',(qtd_estudante * 100 / 
(qtd_estudante+qtd_nao_estudante)),'%');
 
 if (valor_estudante > valor_nao_estudante) then
 begin
 writeln('Foi arrecadado mais com estudantes.');
 end
 else if (valor_nao_estudante > valor_estudante) then
 begin
 writeln('Foi arrecadado mais com pessoas que não são 
estudantes.');
 end
 else
 begin
 writeln('Foi arrecadado o mesmo valor entre estudantes e 
não estudantes');
 end;
 
 if (qtd_estudante > qtd_nao_estudante) then
 begin
 writeln('Foi comprado mais ingressos de estuduantes.');
 end
 else if (qtd_nao_estudante > qtd_estudante) then
 begin
74 GABARITO DAS AUTOATIVIDADES UNIASSELVI
NEAD
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
writeln('Foi comprado mais ingressos de pessoas que não são estudantes.');
 end
 else
 begin
 writeln('Foi arrecadada a mesma quantidade de ingressos 
entre estudantes e não estudantes');
 end;
 
End.
TÓPICO 4
1 Faça um programa que solicite e armazene 5 valores. Em seguida, o 
algoritmo deverá exibir os valores na ordem inversa em que foram lidos.
R.:
Program Unidade3_Topico4_Exe1;
const 
 qtd = 5;
var
 valores : array [1..qtd] of real;
 i : integer;
Begin
 for i := 1 to qtd do
 begin
 write('Valor 1: ');
 readln(valores[i]);
 end;
 
 writeln; { Deixa uma linha em branco na tela }
 
 writeln('Valores na ordem inversa:');
 for i := qtd downto 1 do
 begin
 writeln(valores[i]);
 end;
End.
75UNIASSELVI
NEAD
GABARITO DAS AUTOATIVIDADES
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
2 Desenvolva um programa que leia 10 números e armazene-os em 
um array do tipo vetor. Após a leitura destes números, o algoritmo 
deverá solicitar outro número para fazer uma busca.
 O programa deverá percorrer os números lidos procurando pelo 
“número de busca”. Ao final, o programa deverá exibir quantas 
vezes o número de busca está presente no array ou apresentar uma 
mensagem informando se o número não está no array.
R.:
Program Unidade3_Topico4_Exe2 ;
const
 qtd = 10;
 
var
 numeros : array [1..qtd] of real;
 numero_busca : real;
 i, qtd_encontrou : integer;
Begin
 
 qtd_encontrou := 0;
 
 for i := 1 to qtd do
 begin
 write('Numero: ');
 readln(numeros[i]);
 end;
 
 writeln('Informe um número para busca: ');
 readln(numero_busca);
 
 for i := 1 to qtd do
 begin
 if (numeros[i] = numero_busca) then
 begin
 qtd_encontrou := qtd_encontrou + 1;
 end;
 end;
 
 if (qtd_encontrou = 0) then
 begin
 writeln('O número informado não está no array.');
 
76 GABARITO DAS AUTOATIVIDADES UNIASSELVI
NEAD
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
end
 else
 begin
 writeln('O número ',numero_busca,' foi encontrado ', qtd_
encontrou, ' vezes no array.');
 end;
 
End.
3 Crie um programa que solicite 8 valores e armazene-os em um array 
(vetor). O programa, sem seguida, deverá ler mais dois valores (A e 
B) e apresentar a soma dos valores armazenados nos índices A e B 
do array.
R.: 
Program Unidade3_Topico4_Exe3;
const
 qtd = 8;
 
var
 numeros : array [1..qtd] of real;
 numero_busca : real;
 i, a, b : integer;
Begin
 for i := 1 to qtd do
 begin
 write('Numero: ');
 readln(numeros[i]);
 end;
 
 writeln('Informe o primeiro índice: ');
 readln(a);
 writeln('Informe o segudo índice: ');
 readln(b);
 
 writeln('O valor do índice a (',numeros[a],') somado ao valor do 
índice b (',numeros[b],') resulta em ', (numeros[a] + numeros[b]));
 
End.
77UNIASSELVI
NEAD
GABARITO DAS AUTOATIVIDADES
A
L
G
O
R
I
T
M
O
S
 
E
 
P
R
O
G
R
A
M
A
Ç
Ã
O
4 Faça um programa que leia 10 valores e armazene-os em um array. 
O programa deverá ordenar (em ordem crescente) os valores, dentro 
do próprio array. Ao final, o programa percorrerá o array e exibirá os 
valores na tela, já ordenados.
R.:
Program Unidade3_Topico4_Exe4;
const
 qtd = 10;
var
 numeros : array [1..qtd] of real;
 i, j : integer;
 temp : real;
Begin
 for i := 1 to qtd do
 begin
 write('Numero: ');
 readln(numeros[i]);
 end;
 
 for i := 1 to qtd - 1 do
 begin
 for j := 1 to qtd - 1 do
 begin
 if (numeros[j] > numeros[j+1]) then
 begin
 temp := numeros[j];
 numeros[j] := numeros[j+1];
 numeros[j+1] := temp;
 end;
 end; 
 end; 
 writeln;
 for i := 1 to qtd do
 begin
 writeln(numeros[i]);
 end;
 
End.

Continue navegando