Buscar

Apostila Algoritmos e Estrutura de Dados

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 40 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 40 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 40 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

Universidade do Contestado 
Curso de Sistemas de Informação 
Disciplina de Lógica de Programação 
 
 
 
 
 
 
 
 
Lógica para o Desenvolvimento de 
 
Algoritmos e Programas de Computador 
 
 
 
 
 
 
Prof. Zorzo, Carlos Alberto 
 
 
 
 
 
 
Caçador, Junho/2013. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Lógica para o Desenvolvimento de 
 
Algoritmos e Programas de Computador 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Tal apostila não tem a presunção de substituir qualquer 
referência indicada na bibliografia da disciplina. 
Ela é tão somente uma compilação das notas de aula do professor, 
servindo a mesma como guia e material de apoio. 
Material mais completo e abrangente está indicado na bibliografia 
constante no Plano de Ensino da Disciplina em anexo. 
 
 
 
 
1. Introdução 
2. Lógica de Programação: 
2.1 Lógica 
2.2 Seqüência Lógica 
2.3 Instruções 
3. Algoritmos: 
3.1 Conceito 
3.2. Exemplos 
3.3 Formas de Representação: 
3.3.1 Descrição Narrativa 
3.3.2 Fluxograma ou Diagrama de Blocos 
3.3.3 Pseudocódigo 
3.4 Método de Construção 
3.5 Exercícios 
4. Construção de Algoritmos em Pseudocódigo: 
4.1 Conceitos e Estruturas básicas: 
4.1.1 Estrutura de um algoritmo 
4.1.2 Tipos de Dados 
4.1.3 Variáveis 
4.1.4 Constantes 
4.1.5 Expressões 
4.1.6 Instruções/Comandos Primitivos 
4.1.7 Exercícios 
4.2 Estruturas de Seleção: 
4.2.1 Estrutura de Seleção Simples 
4.2.2 Estrutura de Seleção Composta 
4.2.3 Estrutura de Seleção Encadeada 
4.2.4 Estrutura de Seleção de Múltipla Escolha 
4.2.5 Exercícios 
4.3 Estruturas de Repetição: 
4.3.1 Estrutura de Repetição com Variável de Controle 
4.3.2 Estrutura de Repetição com Teste no Início 
4.3.3 Estrutura de Repetição com Teste no Final 
4.3.4 Exercícios 
4.4 Tipos Estruturados de Dados: 
4.4.1 Vetores 
4.4.2 Matrizes 
4.4.3 Exercícios 
4.5 Subprogramação: 
4.5.1 Procedimentos 
4.5.2 Funções 
4.5.3 Parâmetros e Escopo de Variáveis 
4.5.4 Exercícios 
4.6 Recursividade: 
4.7 Alocação Dinâmica de Memória : 
4.8 Arquivos de Dados: 
4.8.1 Arquivos Tipo Texto 
4.8.2 Arquivos Tipo Registro 
4.9 Modularização e Reusabilidade (Units) : 
5. Anexos 
5.1 Plano de Ensino da Disciplina 
 
1. Introdução: 
 
Para que os computadores tenha alguma utilidade para os seres 
humanos, eles devem ser programados para a realização de tarefas específicas. 
Desta forma, para que um computador possa ser usado como máquina de 
automatização de tarefas o mesmo precisa ser alimentado com orientações claras 
e precisas de como resolver determinada tarefa. Este conjnto de orientações 
claras e precisas fornecidas ao computador em uma linguagem por ele intelegível 
é conhecido como um “Programa de Computador” e a área da Ciência da 
Computação que que trata do estudo e desenvolvimento de metodologias e 
técncias para a construção de programas, bem como estudo e desenvolvimento 
de linguagens para tal finalidade, é denominada de Programação de 
Computadores. Por outro lado, o desenvolvimento de programas de computador 
normalmente está baseado em uma lógica que, sem se preocupar com uma 
linguagem de programação específica, especifica através de um formalismo claro 
e preciso as operações a serem desenvolvidas pelo computador na 
automatização de uma tarefa. Tal apostila tem por objetivo introduzir os conceitos 
básicos de um formalismo de especificação de lógica de programação de 
computadores utilizando um pseudocódigo (não entendível diretamente pelo 
computador) através da metodologia de programação estruturada. 
 
 
 
2. Lógica de Programação: 
 
 
2.1 Lógica: 
 
A lógica de programação é necessária para as pessoas que desejam 
trabalhar com o desenvolvimento de sistemas e programas de computador e 
permite definir as instruções que serão executadas pelo computador dentro de 
uma seqüência lógica. Desta forma, pode-se definir a lógica de programação 
como a técnica de encadear pensamentos para atingir determinado objetivo. 
 
 
2.2 Seqüência Lógica: 
 
Estes pensamentos devem ser descritos como um seqüência de 
instruções ou passos que devem ser seguidos para se cumprir uma determinada 
tarefa. Desta forma, uma seqüência lógica pode ser entendida como um conjunto 
de passos que devem ser seguidos até se atingir um objetivo ou a solução de um 
problema. 
 
 
2.3 Instruções: 
 
Em informática uma instrução é uma informação que indica ao 
computador uma ação elementar a executar. Deve-se ressaltar neste ponto, que 
uma ordem ou ação isolada normalmente não permite a especificação de todas 
as instruções para se atingir um objetivo ou realizar uma tarefa completa sendo, 
para isto, necessário um conjunto de instruções colocadas em uma certa 
seqüencia lógica. Por exemplo, se quisermos fazer um omelete de batatas, 
precisaremos colocar em prática uma série de instruções: descascar as batatas, 
bater os ovos, fritar as batatas, etc, etc. É evidente também que essas instruções 
devem ser executadas em uma ordem adequada (não se pode descascar as 
batatas depois de fritá-las). 
 
Dessa maneira, uma instrução tomada isoladamente e em separado não 
tem muito sentido e, para obtermos o resultado desejado, normalmente 
precisamos colocar em prática o conjunto de todas as instruções na ordem 
correta. 
 
Convém ressaltar também, que este conjunto de instruções, quando 
especificado em uma linguagem de programação é entendido como um Programa 
de Computador, ao passo que quando especificado através de um formalismo 
para especificação de lógica de programação, sem estar atrelado a uma 
linguagem de programação específica, é entendido como um Algoritmo. Em 
suma, os programas de computadores nada mais são do que algoritmos escritos 
numa linguagem específica de programação de computadores como Pascal, C, 
Delphi, Java e Visual Basic entre outras e que são interpretados e executados por 
um computador. 
 
 
 
3. Algoritmos: 
 
 
3.1 Conceito: 
 
Um algoritmo é, formalmente, uma seqüência finita de passos que levam 
a execução de uma tarefa, ou seja, a atingir um objetivo. Nesta pequena definição 
de algoritmo deve-se notar a existência de três idéias básicas: 
 
1. Seqüência: uma ordem de execução das instruções; 
2. Finita: a seqüência de passos a serem executados deve ser finita; e 
3. Objetivo: um algoritmo é desenvolvido para se atingir um determinado 
objetivo. 
 
Além disso, um algoritmo deve possuir garantia de repetibilidade, ou seja, 
toda ver que ele for executado, a partir dos mesmos dados, deverá produzir o 
mesmo resultado. 
 
De forma genérica, os algoritmos não são específicos da área da Ciência 
da Computação e pode-se pensar em algoritmos como uma receita de bolo, 
instruções para se chegar à Universidade, orientações passo a passo para se 
ligar um vídeo cassete, etc. Até mesmo as coisas mais simples, podem ser 
descritas por seqüências lógicas, como por exemplo chupar uma bala (pegar a 
bala, retirar o papel, colocar a bala na boca, chupar a bala enquanto ela não 
terminar, jogar o papel no lixo). Qual é o problema com este pequeno algoritmo de 
5 passos? 
 
Como um algoritmo é a solução para um problema especificado através 
de uma seqüência lógica e geralmente existem várias soluções possíveis para um 
problema, um algoritmo é um possível caminho para a solução de um problema, e 
em geral, os caminhos que levam a uma solução são muitos. 
 
Finalmente, pode-se dizer que o aprendizado de algoritmos não se 
consegue a não ser através de muitos exercícios e, em suma: 
 
Algoritmos não se aprende: 
 Copiando Algoritmos 
 Estudando Algoritmos 
 
Algoritmos só se aprendem: 
 Construindo Algoritmos 
 TestandoAlgoritmos 
 
 
3.2. Exemplos: 
 
Alguns exemplos de algoritmos podem ser vistos abaixo: 
 
 Receita de Bolo: 
Misturar os ingredientes 
Untar a forma com manteiga 
Despejar a mistura no forno 
Levar a forma ao forno 
Deixar assar durante 30 minutos 
Retirar do forno 
Deixar esfriar 
 
 Trocar Pneu Furado de um carro: 
Afrouxar ligeiramente as porcas 
Suspender o carro 
Retirar as porcas e o pneu furado 
Colocar o pneu reserva 
Apertar as porcas 
Abaixar o carro 
Dar o aperto final nas porcas 
 
 Tomar Banho: 
Entrar no banheiro e tirar a roupa 
Abrir a torneira do chuveiro 
Entrar na água 
Ensaboar-se 
Sair da água 
Fechar a torneira 
Enxugar-se 
Vestir-se 
 
Como um leitor atento, tente identificar as diferenças entre os dois 
algoritmos abaixo que tem por objetivo “lavar o cabelo”? 
 
Algoritmo 1 Algoritmo 2 
Molhar o cabelo 
Colocar xampú 
Massagear 
Enxaguar 
Secar o cablo 
Abrir a torneira do chuveiro 
Entrar na água 
Molhar o cabelo 
Abrir o xampú 
Colocar um pouco na mão 
Levar à cabeça 
Massagear 
Enxaguar 
Sair da água 
Fechar o chuveiro 
Secar o cabelo 
 
Pode-se notar que os dois algoritmos abaixo atendem aos requisitos de 
definição de um algoritmo: são seqüências, são finitos e possuem um objetivo. A 
diferença básica entre os dois es tá no seu nível de detalhamento ou abstração. 
Em suma, o segundo algoritmo é muito mais detalhado que o primeiro, 
fornecendo assim, orientações bem mais precisas a quem for executar o 
algoritmo. Deve-se ter em mente que o desenvolvimento dos algoritmos deve-se 
dar num nível de detalhamento mínimo que permita às pessoas executá-los para 
atingir seus objetivos. 
 
 
3.3 Formas de Representação: 
 
Como visto, os algoritmos são representações formais do raciocínio a ser 
seguido para a automatização de uma tarefa e, para tanto, existem formalismos 
que devem ser seguidos para a sua especificação. Os principais formalismos 
utilizados para se especificar algoritmos são: “Descrição Narrativa”, “Fluxograma” 
ou “Diagrama de Blocos” e “PseudoCódigo”. 
 
3.3.1 Descrição Narrativa: 
 
Esta forma de especificação de algoritmos é dada em linguagem natural 
estando, portanto, impregnada com problemas de má interpretação, 
ambiguidades e imprecisões. Com exemplo, tem-se o algoritmo abaixo para 
“trocar o pneu furado de um carro”: 
 
Afrouxar ligeiramente os parafusos (*) 
Suspender o carro 
Retirar os parafusos e o pneu 
Colocar o pneu reserva 
Apertar os parafusos 
Abaixar o carro 
Dar o aperto final nos parafusos 
 
No exemplo acima, pede-se ao leitor qual a sua interpretação para a 
instrução “Afrouxar ligeiramente os parafusos”. Nota-se, neste caso, que a 
execução desta instrução dá margem à várias interpretações. O que significa para 
o leitor a palavra “ligeiramente”? Para fins de uma boa execução do algoritmo 
abaixo, tal instrução deveria ser especificada de forma mais precisa como, por 
exemplo, “Afrouxar os parafusos girando-os 30° graus no sentido anti-horário”. 
Em função destes problemas de má interpretação, ambiguidades e imprecisões, 
próprios da linguagem natural, outros formalismos são mais apropriados para a 
especificação de algoritmos do que a descrição narrativa em linguagem natural. 
 
3.3.2 Fluxograma ou Diagrama de Blocos: 
 
O Fluxograma ou Diagrama de Blocos é uma das formas mais populares 
para a especificação de algoritmos, sendo uma forma padronizada e eficaz para 
representar os passos lógicos de um determinado processamento através de 
formas geométricas diferentes que especificam ações diferentes. Com ele define-
se uma seqüência de símbolos com significados específicos, facilitando, desta 
forma, a visualização dos passos de um processamento. Além disso, o 
Fluxograma ou Diagrama de Blocos constituie-se numa forma mais precisa do 
que a Descrição Narrativa para especificar algoritmos. 
 
3.3.3 Pseudocódigo: 
 
Algoritmos também podem ser descritos através de um formalismo 
chamado Pseudocódigo, sendo conhecido também por PseudoLinguagem, 
Português Estruturado ou Portugol. Este nome, pseudocódigo, é uma alusão à 
posterior necessidade de implementação do mesmo em uma linguagem de 
programação específica, uma vez que o mesmo não é executável diretamente 
pelo computador. Desta forma, algoritmos em pseudocódigo (ou qualquer um dos 
outros formalismos anteriormente citados) são independentes das linguagens de 
programação, sendo intermediários entre a linguagem falada e uma linguagem de 
programação. O pseudocódigo é uma representação genérica e bem aceita para 
a especificação de algoritmos e permite uma tradução praticamente direta para 
programas de computador na Linguagem Pascal ou C (linguagens muito 
utilizadas para o ensino de programação). 
 
Um exemplo de algoritmo em pseudocódigo pode ser visto abaixo: 
 
ALGORITMO média 
VAR 
n1, n2, n3, média: REAL 
INÍCIO 
LEIA (n1,n2,n3) 
média  (n1 + n2 + n3 ) / 3 
SE média >= 7 ENTÃO 
ESCREVA ("Aluno Aprovado") 
SENÃO 
ESCREVA ("Aluno Reprovado") 
FIM SE 
FIM 
 
Dentro do escopo desta apostila, o pseudocódigo foi escolhido como 
formalismo para a especificação de algoritmos por não possuir os problemas 
inerentes do formalismo de Descrição Narrativa; ser padronizado e intelegível 
tanto sintática quanto semanticamente; permitir a elaboração de algoritmos 
estruturados; ser simples e enxuto e, a despeito disto, permitir a representação 
clara e precisa da lógica para a resolução de problemas, bem como por facilitar a 
codificação dos algoritmos nas linguagens de programação Pascal e C. 
 
 
3.4 Método de Construção: 
 
Como visto, um algoritmo é uma seqüência lógica de instruções que são 
executadas para se atingir um objetivo. A construção de um algoritmo, consiste 
basicamente, na especificação de instruções para as fases de: 
 
1. Entrada: corresponde a fornecer ao algoritmo os dados básicos 
necessários para a resolução do problema (normalmente estes dados 
serão usados pelo algoritmo para realizar os cálculos e comparações 
necessárias na etapa de processamento); 
2. Saída: corresponde à geração dos resultados do algoritmo para o 
usuário; e 
3. Processamento: é a etapa intermediária do algoritmo onde os dados 
de entrada, normalmente fornecidos pelo usuário, são transformados 
nos dados de saída. 
 
Em suma, pode-se sugerir o algoritmo abaixo como um método inicial 
para a especificação de algoritmos: 
 
(1) Ler atentamente o enunciado; 
(2) Retirar do enunciado a relação dos dados de entrada; 
(3) Retirar do enunciado a relação dos dados de saída; 
(4) Determinar o processamento a ser feito para transformar as 
entradas em saídas; 
(5) Construir o Algoritmo usando o formalismo; 
(6) Executar o Algoritmo ( Teste de Mesa ). 
 
Após o desenvolvimento de um algoritmo, o mesmo deverá sempre ser 
testado. Este teste é chamado de TESTE DE MESA e implica em seguir e 
executar uma a uma as instruções do algoritmo de maneira precisa para verificar 
se o procedimento utilizado está correto ou não. 
 
 
3.5 Exercícios: 
 
1) Identifique as fases de um algoritmo para resolver a equação (Y=X2+2X+10), 
bem como as instruções em cada uma delas (exercício resolvido). 
Entradas: valor de X 
Saídas: valor de Y 
Processamento: 
(1) Elevar X ao quadrado 
(2) Multiplicar X por 2 
(3) Somar o resultado de X elevado ao quadrado com o resultado de 
X multiplicado por 2 
(4) Somar o resultado da operação 3 com o valor 10 
 
2) Identifique as etapas, bem como suas instruções, de um algoritmo que calcule 
o valor da mensalidade que um aluno deve pagar. Para tanto, o usuário possui 
como informações o nome do aluno, número de créditos que ele faz e o valor 
unitário do crédito. O algoritmo deverá imprimir o nome do aluno e o valor da 
mensalidade que este deve pagar.3) Quais instruções são necessárias para construir um algoritmo que calcule a 
média aritmética de um aluno com 5 notas. 
 
4) Identifique as instruções para construir um algoritmo que calcule a média 
ponderada de um aluno com 3 notas. A fórmula de cálculo com os respectivos 
pesos é a seguinte: média = ( 3*nota1 + 4*nota2 + 2*nota3 ) / 9. O usuário possui 
como dados o nome do aluno e suas 3 notas e gostaria de ter como resultado 
final o nome e a média final do aluno. 
 
5) O preço de um automóvel é calculado pela soma do preço de fábrica com o 
preço dos impostos (45% do preço de fábrica) e com a porcentagem dos 
vendedores (28% do preço de fábrica). Identifique as instruções de um algoritmo 
que forneça ao usuário o nome do automóvel e seu preço final. 
 
 
 
4. Construção de Algoritmos em Pseudocódigo: 
 
4.1 Conceitos e Estruturas básicas: 
 
4.1.1 Estrutura de um algoritmo: 
 
Na especificação de um algoritmo em Pseudocódigo é necessário o 
estabelecimento de uma estrutura a fim de organizar o mesmo em seções. Os 
algoritmos desenvolvidos em pseudocódigo possuem a seguinte estrutura: 
 
ALGORTIMO <nome do algoritmo> 
<área de declarações> 
INÍCIO 
<área de instruções> 
FIM 
 
Dentro desta estrutura tem-se as seguintes definições e espaços para 
códigos específicos: 
 
 ALGORTIMO: palavra reservada para indicar o início de um algoritmo; 
 
 nome do algoritmo: é somente um nome simbólico dado ao algoritmo 
com a finalidade de distingui-lo dos demais; 
 
 área de declarações: espaço designado para a declaração das 
informações (variáveis, constantes, tipos de dados do usuário, 
procedimentos e funções) que serão usadas na seqüência lógica de 
instruções do algoritmo; 
 
 INÍCIO e FIM: palavras reservadas que delimitam o início e o fim da 
seqüência lógica de instruções ou do algoritmo; e 
 
 área de instruções: espaço designado para a especificação da 
seqüência lógica de instruções do algoritmo que será executada para 
se atingir seu objetivo. 
 
4.1.2 Tipos de Dados: 
 
O computador, através de um algoritmo, manipula um conjunto de 
informações através de uma seqüência lógica de instruções com a finalidade de 
atingir um objetivo. Desta forma, pode-se dizer que a matéria prima com a qual o 
computador trabalha são as informações que estão na sua memória (local de 
armazenamento). Estas informações, por sua vez, podem ser de dois tipos: 
 
 Instruções: são aquelas informações que comandam o funcionamento 
do computador e determinam como os dados devem ser tratados; e 
 Dados: são aquelas informações processadas pelas instruções do 
computador. 
 
Como exemplo, poderíamos pensar em uma instrução de soma que 
opera uma adição sobre dois valores ou dados. Em suma, pode-se dizer então 
que um algoritmo nada mais é do que a especificação de uma seqüência lógica 
de instruções que manipulam dados a fim de atingir um determinado objetivo. 
 
O formalismo para especificação de lógica de programação chamado 
Pseudocódigo, adotado nesta apostila, permite ao computador manipular três 
tipos diferentes de dados: 
 
 Numéricos: são aqueles dados representados por números e que serão 
utilizados pelas instruções do algoritmo para cálculos. Estes, podem ser 
divididos em Dados Numéricos Inteiros (armazenam dados que não 
possuem componente decimal) e Dados Numéricos Reais (armazenam 
dados que possuem componente decimal); 
 
 Alfanuméricos: são também conhecidos por dados caracter ou string e 
são aqueles dados representados por um conjunto de caracteres 
alfanuméricos e/ou especiais. Estes dados possuem um comprimento 
dado pelo número de caracteres nele contido e, em algoritmos, são 
delimitados por aspas duplas ( “<dado alfanumérico>”); e 
 
 Lógicos: são também conhecidos por dados booleanos e podem 
representar somente dois tipos de informação: Verdadeiro ou Falso. 
 
Os dados manipulados por um algoritmo em pseudocódigo devem ser 
classificados como sendo de um dos tipos definidos acima (ou de outros tipos que 
serão explicados posteriormente), sendo tal operação de classificação, feita no 
momento da declaração de variáveis (posições de memória que armazenarão os 
dados). 
 
4.1.3 Variáveis: 
 
Todos as informações manipuladas pelo computador devem estar em um 
local onde o mesmo possa acessá-las. Tal local, utilizado pelo computador para 
armezenar tanto instruções a serem executadas quanto dados, é chamado de 
memória (mais especificamente memória primária ou RAM – existem outros tipos 
de memória que não fazem parte do escopo desta apostila). Para fins únicos de 
programação de computadores vamos nos ater também somente ao 
armazenamento e manipulação de dados em memória (a manipulação e 
tratamento de instruções em memória é um tópico melhor abordado em 
disciplinas como Compiladores). 
 
A memória do computador pode ser entendida como um conjunto 
ordenado de caixas ou células, todas de igual tamanho e cada uma delas 
identificada por um endereço distinto e que, num dado momento, armazenam 
algum tipo de dado que poderá ser manipulado pelo computador através da 
seqüência lógica de instruções especificadas pelo algoritmo. Por outro lado, 
dados diferentes podem ter tamanhos diferentes (um dado numérico real ocupa 
mais espaço que um dado numérico inteiro). Desta forma, um dado pode ocupar 
mais de uma célula de memória, dependendo do seu tipo. Assim, para que o 
computador possa acessar um dado na memória, ele deverá saber o seu 
endereço de início (endereço da célula de início) e o seu tamanho, recuperando 
assim, a partir do endereço inicial de memória, a quantidade de total células 
usadas para armenar aquele dado. Desta forma, seria necessário que, em nossos 
programas, especificassemos os endereços iniciais de onde estão armazenados 
cada um dos dados que o computador poderia manipular. O endereçamento de 
posições de memória através de números hexadecimais é perfeitamente 
compreendido pela máquina, sendo entretanto, uma tarefa complicada para os 
programadores. 
 
Para evitar a manipulação de endereços em notação hexadecimal, 
facilitando assim a manipulação das posições de memória, as linguagens de 
programação permitem especificar diferentes nomes a cada conjunto de células 
que armazenam um determinado dado. Desta forma, os programadores ficaram 
livres de trabalhar com os endereços físicos (números hexadecimais) e passaram 
a trabalhar com endereços lógicos, ou seja, os nomes dados por eles próprios a 
um conjunto de células que armazenam um dado. À estes endereços lógicos de 
memória que irão armazenar dados dá-se o nome variável. Desta forma, uma 
variável pode ser entendida como um posição lógica de memória (composta de 
uma ou mais células físicas, dependendo do tipo do dado armazenado) 
representada por um nome simbólico dado pelo programador que será usado 
para acessar e manipular o dado nele contido. 
 
A fim de atender o objetivo para a qual foi proposta, uma variável possui 
três atributos: 
 
 Nome: é a representação simbólica do conjunto de endereços de 
memória, sendo o mesmo, utilizado para se acessar e manipular o dado 
nele contido. A especificação de um nome para uma variável deveria 
serguir algumas regras lógicas, quais sejam: o nome deverá começar 
por uma letra, podendo ser seguido por outras letras e/ou números; não 
é permitido o uso de caracteres especiais (exceto o underline “ _”); deve 
ter um número limitado de caracteres e, principalmente, o nome deve 
estar relacionado com o significado, para o programa, do dado que ele 
contém. 
 
 Tipo de Dado: uma variável só poderá armazenar informações de um 
mesmo tipo e, para tanto, deverá ser definido qual o tipo da informação 
uma variável armazena. Desta forma, o tipo de dado associado a uma 
variável definirá a natureza da informação nela contida, podendoa 
mesma ser numérica (inteira ou rel), alfanumérica ou lógica. Além disso, 
a associação de um tipo de dado a uma variável delimitará a 
quantidade de células físicas que a mesma ocupará na memória. Por 
outro lado, a informação do tipo de dado associado com uma variável 
será usada pelo compilador para a verificação semântica do programa. 
 
 Informação: é o conteúdo propriamente dito da variável. A associação 
de um conteúdo a uma variável deverá obedecer a restrição imposta 
pela definição do tipo de dado da variável. 
 
Para fins de desenvolvimento de um algoritmo ou programa de 
computador, todas as variáveis usadas por ele devem ser formalmente 
explicitadas ao computador, correspondendo, tal ação, à declaração de variáveis. 
Assim sendo, a declaração de variáveis é obrigatória para todas as variáveis 
usadas por um algoritmo e deve ser especificada, segundo uma sintaxe que difere 
de linguagem para linguagem, na <área de declarações> do algoritmo. Mais 
especificamente, uma declaração de variável consiste em reservar o espaço de 
memória para a mesma, associando a este espaço um nome e um tipo de dado. 
 
No pseudocódigo aqui adotado, a declaração de variáveis segue a 
seguinte sintaxe: 
 
ALGORTIMO <nome do algoritmo> 
VAR 
Nome da variável : Tipo de dado associado 
INÍCIO 
<área de instruções> 
FIM 
 
No caso da existência de várias variáveis de um mesmo tipo, pode-se 
fazer uma única associação de tipo às várias variáveis através da separação das 
mesmas através de uma vírgula. 
 
4.1.4 Constantes: 
 
As constantes, juntamente com as variáveis, são os elementos básicos 
que um programa manipula. Assim como uma variável, uma constante também é 
um endereço lógico de memória para se armazenar um determinado dado. A 
diferença básica é que um determinado endereço lógico de memória declarado 
como constante conterá um valor que não poderá ser alterado durante a 
execução do programa. Uma constante também possui os atributos nome, tipo de 
dado e informação, da mesma forma que uma variável, e a especificação do seu 
nome deverá serguir as mesmas regras usadas na especificação de nomes de 
variáveis. Além disso, constantes também devem ser declaradas na <área de 
declarações> do algoritmo, da seguinte forma: 
 
ALGORTIMO <nome do algoritmo> 
CONST 
Nome da constante : Valor inicial 
VAR 
Nome da variável : Tipo de dado associado 
INÍCIO 
<área de instruções> 
FIM 
 
4.1.5 Expressões: 
 
Uma expressão pode ser entendida como um conjunto de operandos 
que, relacionando-se por meio de operadores, compõe uma fórmula que, uma vez 
avaliada, resultará num valor. Como exemplo conhecido de uma expressão, 
podemos ter uma fórmula matemática. Na confecção de algoritmo e programas, 
podemos ter expressões aritméticas ou lógicas que diferem entre sí no tipo de 
operandos/operadores e no tipo de dado do valor resultante de sua avaliação. 
 
Expressões Aritméticas e Operadores: 
 
Expressões aritméticas são aquelas que possuem como operandos 
variáveis e/ou constantes numéricas combinados através de operadores 
aritméticos, resultando, após a sua avaliação, em um valor do tipo numérico 
(inteiro ou real). A tabela de operadores aritméticos, com seu grau de prioridade, 
é dada abaixo: 
 
Operador Operação Prioridade 
** Exponenciação 1 
* Multiplicação 2 
/ Divisão 2 
+ Adição 3 
- Subtração 3 
 
Quando da avaliação de uma expressão aritmética, o computador segue 
uma ordem de prioridade para os operadores, conforma a tabela acima. 
Entretanto, para operadores de mesma prioridade, será avaliado aquele que for 
encontrado primeiro, da esquerda para a direita, na avaliação da expressão. A fim 
de quebrar esta hierarquia pré-definida de operadores, pode-se fazer uso dos 
parênteses, da mesma forma que nas equações matemáticas. 
 
Expressões Lógicas e Operadores: 
 
Expressões lógicas são aquelas que possuem como operandos relações 
e/ou variáveis e/ou constantes do tipo lógico combinados através de operadores 
lógicos e/ou relacionais, resultando, após a sua avaliação, em um valor do tipo 
lógico (verdadeiro ou falso). 
 
Os operadores relacionais são usados para fazer comparações entre 
elementos (variáveis e/ou constantes) de um mesmo tipo de dado, retornando um 
valor verdadeiro ou falso. Os operadores relacionais, bem como seus 
relacionamentos de prioridade, são dados na tabela abaixo: 
 
Operador Operação 
= Igual 
<> Diferente 
> maior que 
< menor que 
> = maior ou igual a 
< = menor ou igual a 
 
Os operadores lógicos são usados para combinar resultados de 
expressões, realizando operações de álgebra booleana, implicando em um 
resultado final como um valor verdadeiro ou falso. Os operadores lógicos, bem 
como seus relacionamentos de prioridade, são dados na tabela abaixo: 
 
Operador Operação Prioridade 
NÃO Negação 1 
E Conjunção 2 
OU Disjunção 3 
 
Por outro lado, o funcionamento dos operadores lógicos é detalhado pela 
tabela verdade abaixo: 
 
A B NÃO A NÃO B A E B A OU B 
V V F F V V 
V F F V F V 
F V V F F V 
F F V V F F 
 
Em suma, pode-se dizer que uma expressão combinada através do 
operador lógico “E” tem como resultado final verdadeira (V) somente se todas as 
expressões forem verdadeiras. Por outro lado, uma expressão combinada através 
do operador lógico “OU” tem como resultado final verdadeira (V) se, pelo menos, 
uma das expressões for verdadeira. Finalmente, o operador lógico “NÃO” inverte 
o valor lógica da expressão. 
 
4.1.6 Instruções/Comandos Primitivos: 
 
A manipulação de dados por um algoritmo é feita através da 
especificação de instruções que os manipulam. Dentro o conjunto de instrução do 
pseudocódigo, ou de uma linguagem de computador, são consideradas instruções 
ou comandos primitivos aquelas que efetuam as tarefas essenciais para a 
operação dos computadores, como a entrada e saída de dados e a movimentação 
dos mesmos para a memória. São eles, os comandos de atribuição e de entrada 
e saída de dados. 
 
Comando de Atribuição: 
 
Quando definimos uma variável, para a manipulação por nosso algoritmo, 
é natural que queiramos atribuir a ela algum valor. Uma das formas de atribuir um 
valor a uma variável e, consequentemente colocar este dado para dentro da 
memória do computador, é através de uma atribuição direta do valor desejado 
para a variável. Para tanto, utiliza-se o símbolo de atribuição ( ) que indica 
que o valor (ou o resultado da avaliação de uma expressão) que está à direita do 
símbolo de atribuição será colocado na posição de memória indicada pela variável 
que está a esquerda do símbolo, conforme a sintaxe abaixo: 
 
Nome da Variável Valor ou Expressão 
 
Deste momento em diante, o acesso àquele valor se dará através da 
invocação do nome da variável. Deve-se ter em mente que, como uma variável 
possui um tipo de dado associado, o valor ou resultado da avaliação de uma 
expressão a ser atribuido àquela variável deverá ser, obrigatoriamente, do tipo de 
dado definido para a variável. Uma exceção a esta restrição é o conceito de 
coerção, ou seja, a possibilidade de associação de um valor inteiro a uma variável 
do tipo numérico real. 
 
Como exemplo poderíamos ter as seguintes atribuições: 
 
A .V. 
Resultado 5 = 3 
B 5 + 13/4 
Sexo "M" 
Dolar 1,98 
Nome "JOSE" 
 
Comandos de Entrada e Saída de Dados: 
 
O computador não é uma máquina isolada e precisa interagir com o 
mundo exterior, quer seja para receber dados fornecidos por um usuário, 
colocando-os na memória, quer seja para fornecer ao usuário os resultados de 
seus processamentos. Isto é feito através dos comandos primitivos de entrada e 
saída de dados. 
 
Os comandos de saída de dados são a forma pela qual informações 
contidasem sua memória são colocadas em um dispositivo de saída (vídeo, 
impressora, etc) para que o usuário possa apreciá-las. A sintaxe de um comando 
de saída é dada abaixo: 
 
ESCREVA ( variável/constante/expressão/literal ) 
 
Este comando gera uma saída no vídeo que poderá ser o valor de uma 
variável, uma constante, o resultado da avaliação expressão, um literal (conjunto 
de caracteres delimitados por aspas) ou qualquer combinação deste elementos 
deste que separados por vírgula. 
 
Por outro lado, os comandos de entrada de dados são a forma pela qual 
dados são fornecidos ao computador através de dispositivos de entrada 
(inicalmente somente através do teclado) e armazenados em sua memória, nas 
variáveis especificadas no comando de entrada. Desta forma, pode ser entendido 
como o inverso de um comando de saída de dados. A sintaxe de um comando de 
entrada de dados é dada abaixo: 
 
LEIA ( lista de variáveis ) 
 
A partir deste ponto, tem o leitor os comandos básicos necessários para 
especificar as três fases de um algoritmo (Entrada, Processamento e Saída), 
podendo assim desenvolver seus primeiros exercícios. 
 
4.1.7 Exercícios: 
 
6) Sabendo os seguintes valores de variáveis A=3, B=7 e C=4, avalie as 
expressões abaixo indicando se seu resultado é verdadeiro ou falso. 
 
Expressões Resultado ( V ou F ) 
(A + C) > B 
B >= (A + 2) 
C = (B – A) 
(B + A) <= C 
(C + A) > B 
 
7) Sabendo os seguintes valores de variáveis A=5, B=4, C=3 e D=6, avalie as 
expressões abaixo indicando se seu resultado é verdadeiro ou falso. 
 
Expressões Resultado ( V ou F ) 
(A > C) AND (C <= D) 
(A+B) > 10 OR (A+B) = (C+D) 
(A>=C) AND (D >= C) 
 
 
8)Avalie a seguinte tabela, fornecendo seu resultado final: 
 
A B ( (NÃO A ) E B ) OU ( A E ( NÃO B )) 
V V 
V F 
F V 
F F 
 
9) Faça um algoritmo que leia as variáveis das equações abaixo e calcule e 
imprima seu resultado final. 
 
a) 
X
B A F
A
2 4 2
3 2
3 
b) 
Y H
X
H H
H
2
45
3
4 3
2 
c) 
X
a b e f
c d g h
i
j
( ) ( )
( ) ( )
*
 
 
10) Faça um algoritmo para calcular a média aritmética de três números 
quaisquer. 
 
11) Faça um algoritmo que calcule a média ponderada de um aluno com 3 notas. 
A fórmula de cálculo com seus respectivos pesos é a seguinte: média = (3*nota1 + 
4*nota2 + 2*nota3) / 9. O algoritmo deve ler o nome do aluno e suas 3 notas e 
imprimir o nome e a média final do aluno. 
 
12) Faça um algoritmo para calcular as raízes de uma equação de 2º grau pela 
fórmula de Báscara. 
 
13) Faça um algoritmo em Portugol que calcule o valor da mensalidade que um 
aluno deverá pagar. O algoritmo deve ler o nome do aluno, número de créditos 
que o mesmo está cursando e o valor unitário do crédito. Deverão ser impressos 
o nome do aluno e o valor da mensalidade devida pelo mesmo. 
 
14) Faça um algoritmo que leia a base e a altura de um triângulo e calcule a sua 
área conforme a fórmula A = ( B * H ) / 2 . Deverão ser impressos a base, altura e 
a área do triângulo. 
 
15) O preço de um automóvel é calculado pela soma do preço de fábrica com o 
preço pago de impostos (45% do preço de fábrica) e a porcentagem paga de 
comissão aos revendedores (28% do preço de fábrica). Faça um algoritmo que leia 
o nome e o preço de fábrica do automóvel e imprima o seu nome e o preço final. 
 
16) Suponha que você foi ao supermercado e comprou 2 produtos. Faça um 
algoritmo em Portugol que leia e nome e o preço dos produtos comprados e 
calcule o preço total da compra sabendo que você obteve um desconto de 20%. 
Deverão ser impressos os nomes dos 2 produtos comprados, seus preços 
unitários e o valor total da compra com e sem o desconto obtido. 
 
17) Suponha que uma pessoa tenha comprado 3 artigos em uma loja, tendo, para 
cada artigo, seu nome, preço e percentual de desconto. Faça um algoritmo em 
Portugol que imprima o nome, preço e preço com desconto de cada artigo 
comprado, além do total da conta a pagar. 
 
18) Faça um algoritmo que leia o nome, o salário e o número de dependentes de 
um funcionário e calcule o IR devido pelo funcionário. O valor a ser pago de IR 
corresponde a 25% do salário do funcionário, descontando-se um abatimento de 
R$ 0,50 por dependente que o funcionário possua. O algoritmo deverá imprimir o 
nome do funcionário, seu salário, número de dependentes e o imposto devido. 
 
19) Considere que uma empresa queira dar um aumento salarial a um 
funcionário. Deste funcionário, a empresa possui as seguintes informações: seu 
nome, idade e salário base. O procedimento adotado para o cálculo de aumento 
do salário é o seguinte: 1) Reajustar o salário base do funcionário em 30%; 2) 
Conceder uma gratificação de 20% sobre o salário já reajustado; 3) Efetuar 
descontos de 15% sobre o salário já reajustado e sem a concessão da 
gratificação. Deverão ser impressos o nome e o novo salário do funcionário na 
sua forma bruta ( aumento + gratificação ) e líquida ( aumento + gratificação - 
descontos ). 
 
20) Uma empresa tem para um determinado funcionário uma ficha contendo o 
nome, número de horas trabalhadas e o número de dependentes de um 
funcionário. Considere que: (1) a empresa paga 12 reais por hora e 40 reais por 
dependentes e (2) sobre o salário são feito descontos de 8,5% para o INSS e 5% 
para IR. Faça um algoritmo para ler o nome, número de horas trabalhadas e 
número de dependentes de um funcionário. Após a leitura e o processamento, 
escreva qual o nome, salário bruto, os valores descontados para cada tipo de 
imposto e finalmente qual o salário líquido do funcionário. 
 
21) Considere que você possua o nome e os preços de uma mercadoria em 
01/FEV e 01/MAR. Faça um algoritmo em Portugol que leia estes dados e calcule 
a variação percentual ocorrida no preço da mercadoria naquele período. Deverão 
ser impressos o nome da mercadoria, seus preços em 01/FEV e 01/MAR e a 
variação percentual ocorrida no preço da mesma naquele período. 
 
22) Faça um algoritmo em Portugol que leia três números e jogue-os nas 
variáveis num1, num2, num3. Após isto, o algoritmo deverá movimentar os 
valores das variáveis da seguinte forma: jogar o valor original da variável num1 na 
variável num3; o valor original de da variável num3 na variável num2 e o valor 
original da variável num2 na variável num1. Deverão ser impressos os valores das 
três variáveis antes e após a movimentação dos valores. 
 
23) Faça um algoritmo que leia dois números inteiros e jogue-os nas variáveis A e 
B. O algoritmo deverá então trocar o conteúdo destas variáveis. Deverão ser 
impressos os conteúdos das variáveis A e B antes e depois de efetuada a troca. 
 
 
4.2 Estruturas de Seleção: 
 
Como visto na conceituação de algoritmo, o mesmo é 
preponderantemente seqüêncial, ou seja, todas as suas instruções serão 
executadas, uma única vez, uma após a outra. Entretanto, a complexidade 
inerente aos problemas a serem resolvidos pelo computador implica na 
necessidade de estruturas mais complexas para que algoritmos possam ser 
projetados para a sua solução. 
 
Durante o desenvolvimento de um algoritmo, frequentemente existe a 
necessidade de se tomar decisões e excutar ou não determinadas instruções, de 
acordo com o panorama atual de alguns dados. Para tanto foram projetadas as 
instruções de seleção ou decisão. Estas permitem definir um conjunto de 
instruções que poderão ser executadas ou não, dependendo do resultado de um 
teste realizado em cima de alguns dados. Desta forma, algumas instrução serão 
ou não executadas durante a execução do programa, interferindo diretamente no 
andamento do programa, conduzindo a algoritmos e programas que não são 
totalmente sequenciais. 
 
As instruções de seleção ou decisão encontradas no pseudocódigo são 
as seguintes:estrutura de seleção simples, estrutura de seleção composta, 
estrutura de seleção encadeada e estrutura de seleção de múltipla escolha. 
 
4.2.1 Estrutura de Seleção Simples: 
 
Esta estrutura de seleção permite definir um único conjunto de instruções 
ou comandos que será ou não executado em função do resultado da realização 
de um teste sobre os dados. Sua sintaxe é dada a seguir: 
 
SE <condição> ENTÃO 
 <conjunto de instruções> 
FIM SE 
 
Nesta estrutura, um teste sobre os dados é executado através da 
especificação de uma expressão a ser avaliada. Tal expressão é definida pela 
cláusula <condição>. Esta, por sua vez, será avaliada e, em resultando um valor 
verdadeiro, o <conjunto de instruções> será executado. Caso o resultado da 
avaliação da <condição> não seja verdadeiro, serão executadas as instruções 
imediatamente seguintes ao término da estrutura, dada pela palavra reservada 
FIM SE. 
 
Com exemplo desta estrutura, poderíamos ter o seguinte trecho de 
algoritmo: 
 
SE x > 5 ENTÃO 
x  x + 1 
escreva (“O valor de x é igual a “, x) 
FIM SE 
 
 
4.2.2 Estrutura de Seleção Composta: 
 
Uma estrutura de seleção composta permite definir dois conjuntos de 
instruções passíveis de execução. Estes dois conjuntos de instruções, por sua 
vez, são excludentes, ou seja, somente um dos dois será executado. A escolha 
de qual dos dois conjuntos de instruções será executado dependerá também do 
resultado da avaliação de um teste sobre os dados. Desta forma, um deles será 
executado quando o resultado da avaliação do teste for verdadeiro, enquanto o 
outro somente será executado quando o resultado da avaliação do teste for falso. 
Tal instrução possui a seguinte sintaxe: 
 
SE <condição> ENTÃO 
 <conjunto de instruções1> 
SENÃO 
 <conjunto de instruções2> 
FIM SE 
 
Alguns autores consideram a estrutura de seleção composta e a estrutura 
de seleção simples como uma estrutura única, tendo a cláusula SENÃO como 
opcional. Na estrutura de seleção composta, um teste sobre os dados, 
especificado na cláusula <condição> será realizado. Caso o resultado da 
avaliação deste teste seja verdadeiro, as instruções constantes no <conjunto de 
instruções1> serão executadas sendo, em caso contrário (o resultado da 
avaliação do teste é falso) as instruções constantes no <conjunto de instruções2> 
serão executadas. Após a execução de um dos dois conjuntos de instruções, o 
fluxo de execução do algoritmo segue normalmente com as instruções 
imediatamente seguintes ao final da estrutura, dada pela palavra reservada FIM 
SE. 
 
Como exemplo, pode-se ter o seguinte trecho de algoritmo: 
 
SE x > 5 ENTÃO 
x  x + 1 
escreva(“O valor de x é igual a “, x) 
SENÃO 
y  y + 1 
escreva(“O valor de y é igual a “, y) 
FIM SE 
 
4.2.3 Estrutura de Seleção Encadeada: 
 
Uma estrutura de seleção encadeada nada mais é do que uma 
combinação entre as estruturas de seleção simples e compostas, possibilitando, 
desta forma, a especificação de vários conjuntos de instruções passíveis de 
execução. Entretanto, da mesma forma como na estrutura de seleção composta, 
somente um dos conjuntos de instruções especificados será executado, 
dependendo do resultado de testes sobre os dados. 
 
Um exemplo de sintaxe para este estrutura é dado abaixo: 
 
SE <condição 1> ENTÃO 
SE <condição 2> ENTÃO 
 <conjunto de instruções1> 
SENÃO 
 <conjunto de instruções2> 
FIM SE 
SENÃO 
SE <condição 3> ENTÃO 
 <conjunto de instruções3> 
FIM SE 
FIM SE 
 
O exemplo acima combina duas estruturas de seleção composta, 
juntamente com uma estrutura de seleção simples, permitindo a especificação de 
três conjuntos de instruções. Entretanto, somente um deles deverá ser executado. 
A combinação de estrutras de seleção simples e composta é livre, desde que se 
observe a hierarquização das mesmas. Um exemplo deste tipo de combinação 
pode ser visto abaixo: 
 
SE x > 5 ENTÃO 
SE nome = “José” ENTÃO 
escreva(“Nome = “, nome) 
FIM SE 
SENÃO 
SE y > 5 ENTÃO 
x  x + 1 
escreva(“O valor de x é igual a “, x) 
SENÃO 
SE k < 4 ENTÃO 
y  y + 1 
escreva(“O valor de y é igual a “, y) 
FIM SE 
FIM SE 
FIM SE 
 
4.2.4 Estrutura de Seleção de Múltipla Escolha: 
 
Uma estrutura de seleção de múltipla escolha, da mesma forma que uma 
estrutura de seleção encadeada, permite a especificação de vários conjuntos de 
instruções passíveis de execução. Entretanto, somente um destes conjuntos será 
executado, dependendo de um teste em cima do valor de uma variável. Sua 
sintaxe pode ser vista abaixo: 
 
CASO <variável a ser testada> 
valor1 : <conjunto de instruções1> 
valor2 : <conjunto de instruções2> 
valor3 : <conjunto de instruções3> 
... 
SENÃO ( opcional ) 
<conjunto de instruções n> 
FIM CASO 
 
No contexto da estrutura acima, será executado o <conjunto de 
instruções?> cujo valor associado valor? corresponda ao valor da <variável a ser 
testada>. Um exemplo pode ser visto abaixo: 
 
CASO x 
1 : Escreva(“o valor de x é 1”) 
2 : Escreva(“o valor de x é 2”) 
3 : Escreva(“o valor de x é 3”) 
SENÃO 
Escreva(“o valor de x é diferente de 1, 2 e 3”) 
FIM CASO 
 
4.2.5 Exercícios: 
 
24) Faça um algoritmo em Portugol que leia dois números inteiros e identifique se 
os mesmos são iguais ou diferentes. Caso eles sejam iguais imprima uma 
mensagem dizendo que eles são iguais. Caso contrário, diga qual dos dois 
números é o menor. 
 
25) Faça um algoritmo em Portugol que verifique se um aluno foi aprovado ou 
não. O algoritmo deve ler o nome do aluno, suas 3 notas, juntamente com seus 3 
pesos e calcular a média ponderada do aluno de acordo com a fórmula abaixo: 
 
321
3*32*21*1
pesopesopeso
notapesonotapesonotapeso
MédiaFinal
 
 
Após o cálculo da média final, o algoritmo deverá verificar o conceito final do 
aluno e indicar sua aprovação ou não, conforme a tabela abaixo: 
 
Média Final Conceito Resultado 
9.00 - 10.00 A Aprovado 
7.50 - 8.99 B Aprovado 
6.00 - 7.49 C Aprovado 
5.00 - 5.99 D Reprovado 
0.00 - 4.99 E Reprovado 
 
O algoritmo deverá imprimir o nome do aluno, seu conceito e o resultado final. 
 
26) Faça um algoritmo que leia três número diferentes e imprima o maior número 
dentre os três. 
 
27) Suponha que a Universidade possua a seguinte tabela de valores de créditos 
por curso : 
Curso Valor do Crédito 
INFO 12,00 
ADM 10,00 
CONTAB 15,00 
CIÊNCIAS 8,00 
Faça um algoritmo em Portugol que leia o nome de um aluno, curso que o mesmo 
está matriculado e o número de créditos que o ele está cursando e calcule a 
mensalidade a ser paga pelo aluno. Deverão ser impressos o nome do aluno, seu 
curso e o valor da mensalidade a pagar. 
 
28) Faça um algoritmo em Portugol que leia o nome, o sexo, a altura e a idade de 
uma pessoa e calcule e imprima o seu peso ideal de acordo com as seguintes 
características da pessoa: 
 
Sexo Altura Idade Peso Ideal 
 < = 20 ( 72.7 * h ) - 58 
 > 20 ( 72.7 * h ) - 45 
 < = 40 ( 72.7 * h ) - 50 
 > 40 ( 72.7 * h ) - 58 
 > 1,50 Independente ( 62,1 * h ) - 44 
 >= 35 ( 62,1 * h ) - 45 
 < 35 ( 62,1 * h ) - 49 
 
29) Faça um algoritmo em Portugol que leia o código do departamento em que 
um funcionário trabalha (1-secretaria, 2-tesouraria, 3-depto pessoal, 4-almoxarifado), 
seu nome, salário base e o tempo de serviço. O algoritmo deverá então calcular e 
imprimir o novo salário base do funcionário conforme as condições abaixo: 
 
Departamento Tempo de Serviço % de Aumento 
Secretaria ou < 4 anos 50% 
Tesouraria > 4 anos 60% 
Depto Pessoal Independente 30% 
 < 2 anos 30% 
Almoxarifado > = 2 anos e < = 4 
anos 
40% 
 > 4 anos 50% 
 
Deverão ser impressoso nome do funcionário, seu salário antigo e o novo salário. 
 
30) Faça o teste de mesa do algoritmo abaixo diga qual o conteúdo das variáveis 
A, B e AUX após o término da sua execução: 
 
Inicio 
a  10 
b  20 
aux  10 
a  b 
b  a 
soma  a + b 
Se soma >= a + aux Então 
Se a = b Então 
aux  a + b 
a  10 
b  20 
Fim Se 
Senão 
aux  b - a 
a  aux - 10 
b  aux + 10 
Fim Se 
Fim 
 
 Masculino 
 Feminino 
 > 1,70 
 < = 1,70 
 < = 1,50 
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
 
31) Faça o teste de mesa do algoritmo abaixo diga qual o conteúdo das variáveis 
A, B e AUX após o término da sua execução: 
 
Inicio 
a  10 
b  20 
aux  10 
a  b + aux 
b  a + aux 
aux  a + b 
total  aux - ( aux - a - b ) 
se aux = total então 
se b > a então 
a  b - a 
b  aux - b - a 
aux  total - 2*b - 2*a 
fimse 
senão 
a  a - b 
b  aux - b 
aux  total - a 
fimse 
Fim 
 
32) Suponha que uma empresa deseja fazer uma seleção ente os funcionários 
para o aumento salarial. Só participará deste aumento o funcionário que possuir 
mais de 4 anos de serviço, mais de 3 dependentes e salário atual abaixo de R$ 
500,00. Faça um algoritmo em Portugol que leia estes dados de um funcionário e 
imprima uma mensagem dizendo se ele tem direito ao aumento ou não. Caso ele 
tenha este direito, calcule o novo salário deste funcionário em função de uma taxa 
de aumento de 48%. Deverão ser impressos o nome do funcionário, seu salário 
antigo e o novo salário. 
 
33) Sabendo que o preço final de um automóvel é dado pelo soma do preço de 
fábrica com o valor pago de impostos e o percentual pagos aos revendedores ( 
5% do preço de fábrica ), faça um algoritmo em Portugol que use a tabela abaixo 
e calcule e imprima o nome e o modelo do automóvel e o seu preço final de 
venda. 
 
Marca Modelo % de Impostos 
GOL 1000 
CL 
12 
15 
 
UNO 
MILLE 
ELX 
1.6 R 
8 
15 
18 
CORSA GL 23 
 
 
34) Faça o teste de mesa do algoritmo abaixo e diga qual o conteúdo da variável 
TOTAL ao término da sua execução. 
 
Inicio 
abono  10 
filhos  3 
aluno  ‘ZÉ’ 
curso  ‘TPD’ 
cred  20 
Se ( curso = ‘ADM’ ) ou ( curso = ‘CONTAB’ ) Então 
mensal  cred * 7,00 
Senão 
mensal  cred * 8,00 
Fim Se 
Se mensal < = 150,00 Então 
Se filhos = 3 Então 
abono  50 
Fim Se 
Fim Se 
total  ( mensal - abono ) / 100 
Fim 
 
35) Faça o teste de mesa do algoritmo abaixo e diga qual o conteúdo da variável 
TOTAL ao término da sua execução. 
 
Início 
curso “TPD” 
filhos 0 
ncred 20 
perc 0 
vlcred 3,45 
se curso = “ADM” então 
vlcred 3,47 
senão 
se curso = “CONTAB” então 
vlcred 4,17 
senão 
se curso = “CIÊNCIAS” então 
vlcred 5,17 
fimse 
fimse 
fimse 
se filhos >= 3 então 
perc 10 
senão 
se filhos >= 1 então 
perc 5 
senão 
perc 3 
fimse 
fimse 
mensal vlcred * ncred 
desc mensal * perc/100 
total mensal - desc 
Fim 
 
 
36) Faça o teste de mesa do algoritmo abaixo e diga qual o conteúdo das 
variáveis NOME, SALANT e SALNOVO ao término da sua execução. 
 
Início 
nome "JOSE" 
depto 3 
filhos 4 
salant 500 
se depto < 2 então 
perc 50 
senão 
se depto < 4 então 
perc 60 
senão 
perc 70 
fimse 
fimse 
se filhos < = 1 então 
abono 100 
senão 
se filhos < 3 então 
abono 150 
senão 
abono 200 
fimse 
fimse 
salnovo salant + salant*perc/100 + abono 
Fim 
 
37) Suponha que você esteja fazendo um concurso público. Cada candidato ao 
cargo terá direito a uma pontuação em função da sua titulação, anos de 
experiência e idade. Baseado na tabela abaixo, faça um algoritmo em Portugol 
que leia o nome do candidato, sua titulação, tempo de experiência e idade. O 
algoritmo deverá então calcular e imprimir o nome do candidato e sua pontuação 
final. 
 
Titulação Anos Experiência Pontos 
2° Grau Independente 50 
Graduação Até 4 anos 70 
 Acima de 4 anos 90 
 Até 4 anos 100 
Pós-Graduação De 4 a 6 anos 120 
 Mais de 6 anos 150 
 
Além disso, se o candidato possuir menos de 40 anos de idade, terá direito a mais 
100 pontos. Caso contrário, perderá 50 pontos. 
 
 
 
4.3 Estruturas de Repetição: 
 
Como citado anteriormente, o desenvolvimento de algoritmos mais 
complexos implica na necessidade de outras estruturas de controle além da 
estrutura sequencial inerente do algoritmo. Desta forma, foram introduzidas as 
estruturas de seleção ou decisão, permitindo a execução condicional de 
instruções dependendo de uma visão dos dados naquele momento. Outra 
estrutura básica fornecida pelo pseudocódigo (e também pelas linguagens de 
programação) para o desenvolvimento de algoritmos são as estruturas de 
repetição. Estas estruturas nos permitem executar um determinado conjunto de 
instruções mais de uma vez, possibilitando assim que um determinado 
processamento seja executado várias vezes. 
 
As estruturas de repetição fornecidas pelo pseudocódigo são as 
seguintes: estrutura de repetição com variável de controle, estrutura de repetição 
com teste no início e estrutura de repetição com teste no final. 
 
4.3.1 Estrutura de Repetição com Variável de Controle: 
 
Este tipo de estrutura de repetição permite que um conjunto de instruções 
seja executado um número fixo e determinado de vezes. Este número de vezes 
que o conjunto de instruções será executado é determinado por uma variável de 
controle. Tal estrutura possui a seguinte sintaxe: 
 
PARA <variável de controle> = <valorinicial>, <valorfinal>, <passo> FAÇA 
<conjunto de instruções> 
FIM PARA 
 
Nesta estrutura uma variável de controle é especificada através da 
cláusula <variável de controle>. Durante a execução desta estrutura, a variável de 
controle será incrementada ou decrementada de um valor definido em <passo> 
desde um valor inicial, definido em <valorinicial> até um valor final especificado na 
cláusula <valorfinal>. Esta diferença entre o valor inicial e o valor final da variável 
de controle em unidades definidas pelo passo, indicará o número de vezes que o 
conjunto de instruções será executado. 
 
Semanticamente, uma estrutura de repetição com variável de controle 
pode ser entendida da seguinte forma: “no início da execução da estrutura a 
variável de controle será inicializada com o valor constante na cláusula 
<valorinicial>. Um teste será feito para verificar se o seu valor é menor ou igual ao 
valor da cláusula <valorfinal>. Caso o resultado deste teste seja verdadeiro, o 
conjunto de instruções será executado e, ao encontrar o final da estrutura, dado 
pela palavra reservada FIM PARA, o fluxo de execução retornará para o início da 
estrutura, dado pela palavra reservada PARA, sendo a variável de controle 
incrementada automaticamente. Este funcionamento se repetirá até que o 
resultado do teste “<valorinicial> <= <valorfinal>” seja falso. Neste caso então, o 
ciclo de execução deste conjunto de instruções é terminado, sendo executada a 
instrução imediatamente seguinte ao término da estrutura (primeira instrução logo 
após a palavra reservada FIM PARA)”. Este procedimento também é válido para o 
decremento da variável de controle, respeitando-se a inversão do teste e o 
decremento em vez do incremento da variável de controle. 
 
Como exemplo poderíamos ter o trecho de algoritmo abaixo que lê o 
nome e três notas de um conjunto de 50 alunos e, para cada um deles, calcula 
sua média e escreve o nome do aluno e sua média final: 
 
PARA contador = 1,50 FAÇA 
LEIA (nome, nota1, nota2, nota3 ) 
media  ( nota1 + nota2 + nota3 ) / 3 
ESCREVA ( nome, media ) 
FIM PARA 
 
4.3.2 Estruturade Repetição com Teste no Início: 
 
Esta estrutura de repetição permite a execução de um conjunto de 
instruções um número indeterminado de vezes, ou seja, enquanto uma 
determinada condição seja satisfeita. Desta forma, uma condição (normalmente 
um teste sobre os dados) é examinada antes da execução do conjunto de 
instruções e, caso seu resultado seja verdadeiro, o conjunto de instruções é 
executado. Tal estrutura de repetição possui a seguinte sintaxe: 
 
ENQUANTO <condição> FAÇA 
<conjunto de instruções> 
FIM ENQUANTO 
 
Na estrutura acima, <condição> é uma expressão que será avaliada, 
retornando um valor verdadeiro ou falso. Caso o resultado da avaliação desta 
expressão seja verdadeiro, o conjunto de instruções será executado. Após a 
execução do conjunto de instruções, o final da estrutura, dado pela palavra 
reservada FIM ENQUANTO, é encontrado fazendo o fluxo de execução retornar 
para o início da estrutura, dado pela palavra reservada ENQUANTO. Neste caso, 
o teste especificado em <condição> é executado novamente e, se resultar em um 
valor verdadeiro, a execução do conjunto de instruções se dará novamente. O 
fluxo de execução do algoritmo ficará neste loop até que a inspeção da 
<condição> resulte em um valor falso. Neste caso, serão executadas as 
instruções imediatamente seguintes ao final da estrutura. 
 
Um exemplo desta estrutura pode ser visto no trecho de algoritmo abaixo 
que lê o nome e o número de créditos que um aluno faz, juntamente com o valor 
unitário do crédito e calcula e imprime o nome e a mensalidade que cada aluno 
tem a pagar, bem como o total de mensalidades a ser recebido pela instituição de 
ensino: 
 
 
 
 
 
 
 
total  0 
LEIA (nome) 
ENQUANTO nome <> “nenhum” FAÇA 
LEIA ( vlcred, numcred ) 
mensal  vlcred * numcred 
ESCREVA ( nome, mensal ) 
total  total + mensal 
LEIA (nome) 
FIM ENQUANTO 
ESCREVA ( total ) 
 
4.3.3 Estrutura de Repetição com Teste no Final: 
 
Uma estrutura de repetição com teste no final também permite a 
execução de um conjunto de instruções um número indeterminado de vezes, até 
que uma determinada condição seja satisfeita. Entretanto, uma condição 
(normalmente um teste sobre os dados) é examinada após a execução do 
conjunto de instruções. Desta forma, o conjunto de instruções associado à 
estrutura de repetição será executado pelo menos uma vez e as outras execução 
do conjunto de instruções dependerão do resultado da inspeção da condição. 
Esta é a diferença básica entre as estruturas de repetição com teste no início e 
teste no final. Tal estrutura possui como sintaxe: 
 
REPITA 
<conjunto de instruções> 
ATÉ <condição> 
 
Nesta estrutura, inicialmente o conjunto de instruções será executado. 
Após isto, uma condição será testada. Caso a inspeção desta condição resulte 
em um valor verdadeiro, o fluxo da execução é desviado para o início da 
estrutura, dado pela palavra reservada REPITA e o conjunto de instruções é 
executado novamente. Este ciclo de execução se repete até que a inspeção da 
condição resulte em um valor falso. Neste caso, serão executadas as instruções 
imediatamente seguintes ao final da estrutura de repetição, dada pela palavra 
reservada ATÉ. 
 
4.3.4. Exercícios: 
 
38) Faça um algoritmo em Portugol que imprima todos os números inteiros de 1 a 
25. 
 
39) Dada uma série de 20 registros de dados de entrada, cada registro contendo 
um valor real, escreva um algoritmo em Portugol que imprima os valores 
negativos e calcule e imprima a média dos valores não negativos. 
 
40) Faça um algoritmo em Portugol que imprima os números ímpares 
compreendidos entre 10 e 20. 
 
41) Faça um algoritmo que leia uma lista de letras terminada com a letra "Z". Ao 
final, o algoritmo deve imprimir a quantidade lida de cada vogal. 
 
42) Foi feita uma pesquisa na Lanchonete da Universidade do Contestado 
envolvendo N alunos. Foi pergunta para cada aluno o seu nome, sua idade, o 
lanche que ele fez e seu curso em que está matriculado. 
 
Lanche Custo 
X Salada 3,40 
Misto Quente 1,50 
X Burger 2,80 
Pizza 0,90 
 
Total da Conta % de desconto 
< 8,00 5 
< = 8,00 e < = 10,00 7 
> 10,00 10 
 
Faça um algoritmo em Portugol que, levando em conta as tabelas acima de custo 
dos lanches e descontos, calcule e imprima: 
 valor total arrecadado pela lanchonete no período em que foi feita a 
pesquisa; 
 nome do lanche mais vendido; 
 média de gasto dos alunos do curso de Processamento de Dados; 
 
43) O DER deseja fazer um levantamento estatístico da utilização de uma 
determinada rodovia de Santa Catarina. Em um ponto de pedágio levantou-se os 
seguintes dados de um número desconhecido de condutores de veículos: 
 estado de origem; 
 número de pessoas viajando; 
 marca e ano de fabricação do veículo; 
 característica da viagem ( 1-Férias / 2-Trabalho ). 
Faça um algoritmo em Portugol que calcule e imprima: 
 número de automóveis que passaram por aquele ponto de pedágio; 
 média de pessoas por automóvel 
 número de automóveis que não são do Estado de Santa Catarina; 
 número de automóveis da marca FUSCA fabricados entre os anos de 
1970 e 1980; 
 percentagem de automóveis que estavam em viagem de Férias. 
 
44) Foi feita uma pesquisa visando identificar as características físicas da 
população de uma certa região. Foram coletados os seguintes dados dos seus 
habitantes: sexo (masculino ou feminino); cor dos olhos (azuis, verdes ou 
castanhos); cor dos cabelos (louros, castanhos ou pretos) e idade. 
Faça um algoritmo em Portugol que leia os dados acima de um conjunto 
desconhecido de habitantes e calcule e imprima: 
 menor idade dos homens pesquisados; 
 número de pessoas entrevistadas; 
 idade média das mulheres; 
 percentagem de habitantes de cabelos louros e olhos azuis. 
 
45) Faça um algoritmo em Portugol para calcular o fatorial de um número N 
qualquer fornecido pelo usuário. 
 
46) Suponha que a empresa TELESC deseje informatizar o processo de controle 
das contas telefônicas seus assinantes. A cobrança de seus serviços é feita 
obedecendo os seguintes critérios: 
 
Tarifas Básicas /Assinatura 
Residencial Comercial 
13,59 25,78 
 
Serviços adicionais cobrados 
Serviço Local 0,54 por pulso excedente 
( acima de 90 pulsos ) 
Serviço Interurbano 0,98 por pulso excedente 
( acima de 45 pulsos ) 
Despertador Automático 8,50 por serviço 
Telegrama Fonado 12,34 por serviço 
 
Faça um algoritmo em Portugol que leia os seguintes dados de um número 
desconhecido de usuários: 
 número do telefone ( usado como critério de parada ); 
 tipo da linha ( 1-residencial, 2-comercial ); 
 número de pulsos registrados para chamadas locais; 
 número de pulsos registrados para chamadas interurbanas; 
 número de telegramas passados; 
 número de utilizações do serviço de despertador. 
O Algoritmo deverá calcular e imprimir: 
 valor da maior conta e o número do telefone do assinante que a pagou; 
 número de chamadas ao serviço de telegrama fonado; 
 total arrecadado pela TELESC em relação a cada um dos serviços 
prestados; 
 total geral arrecadado pela TELESC; 
 
47) Um cinema deseja fazer um levantamento estatístico quanto à sua utilização. 
Cada usuário preencheu um formulário com os seguintes dados: horário da 
sessão (14:30 hs ou 20:30 hs); um código indicando se ele pagou meia entrada 
ou inteira (1-meia ou 2-inteira); sexo; idade e filme assistido. 
Faça um algoritmo em Portugol que leia estes dados para um conjunto de 500 
usuários e calcule e imprima: 
 horário da sessão de maior lotação; 
 número de pessoas maiores de 18 anos que pagaram meia entrada; 
 quantidade de mulheres assistiram ao filme "GHOST"; 
 número de pessoas maiores de 30 anos que assistiram ao filme " 
DANÇA COM LOBOS" na sessãodas 14:30 hs. 
 
 
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
 
48) Supunha que uma Universidade tenha os seguintes dados dos seus 
alunos: Número de Matrícula; Nome; Curso (TPD, ADM, CONT) e Número de 
créditos devidos. Sabendo-se que os valores dos créditos são de R$ 9,30 
para o curso de TPD e R$ 7,57 para os cursos de ADM e CONT, faça um 
algoritmo em Portugol que leia um conjunto de 500 registros com estes dados e 
calcule e imprima: 
 total de créditos devidos pelos alunos; 
 valor médio, em R$, devido pelo curso de TPD; 
 nome dos alunos de ADM que devem mais de 30 créditos. 
 
49) Faça um algoritmo em Portugol que leia um número desconhecido de 
registros de dados de entrada contendo o nome de um candidato a 
emprego, sua idade, o código de sua maior escolaridade (1=1° Grau, 2=2° 
Grau ou 3=3° Grau ) e o cargo de sua preferência. O algoritmo deverá 
calcular e imprimir: 
 nome e cargo pretendido pelo candidato mais novo; 
 percentagem de candidatos que possuem o terceiro grau; 
 número de candidatos ao cargo de Analista de Sistemas; 
 idade média dos candidatos que possuem o segundo grau 
como maior titulação. 
 
50) Suponha que você trabalha em uma agência de aviação e deseja 
fazer uma avaliação sobre o atraso e a média de lotação dos vôos da 
companhia. Faça um algoritmo em Portugol que leia um número 
desconhecido de registros contendo os seguintes dados: número do vôo; 
número de lugares do avião; número de lugares ocupados; horário 
previsto para chegada do vôo e horário real da chegada do vôo. 
Faça um algoritmo que calcule e imprima: 
 atraso médio dos vôos; 
 número do vôo que decolou com o menor número de 
passageiros; 
 quantidade de vôos que chegaram atrasado ; 
 número do vôo que teve a maior quantidade de lugares vazios. 
 
51) Suponha que para cada aluno da UnC existam as seguintes 
informações: nome do aluno, curso, idade e renda familiar. Faça um 
algoritmo em Portugol que leia um conjunto de 500 registros contendo os 
dados dos alunos e calcule e imprima: 
 nome e curso do aluno mais novo da UnC; 
 quantidade de alunos de PD com idade entre 20 e 35 anos; 
 renda média familiar dos alunos da Administração. 
 
 
 
 
 
 
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
52) Faça o teste de mesa do algoritmo abaixo e diga qual o conteúdo das 
variáveis A, B, AUX e X ao término da sua execução. 
 
Inicio 
fim  3 
x  0 
cont  1 
a  10 
b  20 
aux  10 
a  b + aux 
b  a + aux 
aux  a + b 
total  aux - ( aux - a - b ) 
se a < b então 
a  b - a 
b  aux - b - a 
aux  total - 2*b - 2*a 
enquanto cont <= fim faça 
x  x + a 
cont  cont + 1 
fim enquanto 
senão 
para cont=1,fim faça 
x  x + 2 
fim para 
fimse 
Fim 
 
53) Suponha que o governo do Estado esteja iniciando um programa de 
concessão de bolsas de estudo. Cada aluno preencheu uma ficha com os 
seguintes dados: nome; curso que está freqüentando e tipo de vínculo 
empregatício com o Estado ( 1A, 1B, 1C ou 1D). Suponha ainda a seguinte tabela 
de valores de créditos por curso: 
 
Curso Valor do Crédito 
PEDAGOGIA 10,00 
LETRAS 15,00 
CIÊNCIAS 8,00 
 
Faça um algoritmo que leia os dados de um número desconhecido de alunos e 
calcule e imprima: 
 número total de alunos para cada um dos quatro tipos de vínculo; 
 nome do aluno, tipo de vínculo, número de créditos, valor da 
mensalidade a pagar, curso e o valor da bolsa recebida sabendo-se que 
a mesma é calculada segundo um percentual definido pelo tipo de 
vínculo do aluno: 
 
Tipo de Vïnculo % de bolsa 
1A 80 % da mensalidade 
1B 60 % da mensalidade 
1C 40 % da mensalidade 
1D 20 % da mensalidade 
Este último relatório deverá possuir o seguinte formato: 
 
Nome Curso Vínculo Créditos Mensalidade Bolsa 
xxxxxx xxx xxx xxxx xxxxx xxxxx 
xxxxxx xxx xxx xxxx xxxxx xxxxx 
 
54) Escreva um algoritmo em Portugol que leia um conjunto de 50 registros 
contendo cada um a altura e o código do sexo da pessoa (1=Masc ou 2=Fem). 
Este algoritmo deverá calcular e imprimir: 
 maior e a menor altura do conjunto de pessoas; 
 altura média das mulheres; 
 altura média da turma. 
 
55) Suponha que existam dois candidatos a uma vaga no senado. Feita a eleição, 
os votos são registrados da seguinte maneira: 
 
Código do Voto Descrição 
1 Voto para o candidato 1 
2 Voto para o candidato 2 
3 Voto branco 
4 Voto nulo 
 
Faça um algoritmo em Portugol que leia um conjunto indefinido de registros de 
código de votos e calcule e imprima: 
 número de votos de cada candidato; 
 candidato vencedor; 
 número de votos nulos; 
 número de votos brancos; 
 número de eleitores que compareceram às urnas. 
 
 
56) Escreva um algoritmo em Portugol que faça o levantamento em uma adega 
da seguinte maneira: leia um conjunto de 300 registros cada um contendo o nome 
do vinho, ano da safra e o código indicando o tipo do vinho (1=branco, 2=tinto ou 
3=rose). O algoritmo deverá calcular e imprimir: 
 quantidade de cada tipo de vinho; 
 safra e o nome do vinho mais velho; 
 quantidade total de garrafas de vinho; 
 porcentagem de garrafas de vinho rose. 
 
57) Faça um algoritmo que imprima os números pares compreendidos entre 
14 e 30 ( inclusive ). 
 
58) Faça um algoritmo em Portugol que leia um valor X e calcule e imprima os 
20 primeiros termos da série: 
 
...........
3
1
2
1
1
1
XXX
S
 
 
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
59) Faça um algoritmo em Portugol que leia um conjunto indefinido de registros 
com os seguintes dados de vendedores de uma empresa: nome, salário fixo e 
total de vendas efetuadas. Cada vendedor recebe uma comissão proporcional 
às vendas por ele efetuadas, sendo de 5% para o total de vendas de até R$ 
15.000,00 e 7% para vendas acima deste valor. Faça um algoritmo que calcule 
e imprima: 
 nome, salário fixo e valor recebido de comissão para cada vendedor; 
 quantidade de vendedores que tem salário fixo abaixo de R$ 500,00 
e que receberam mais de R$ 1.000,00 de comissão; 
 total geral pago pela empresa somando-se o total de salário fixo e de 
comissão; 
 número total de vendedores da empresa. 
 
60) Faça um algoritmo em Portugol que leia um par de valores inteiros e jogue-
os nas variáveis A e B. O algoritmo deverá então calcular o produtório de todos 
os números compreendidos entre A e B ( inclusive ). 
 
61) Faça um algoritmo em Portugol que leia um conjunto indefinido de registros 
contendo os seguintes dados de um automóvel: marca, fabricante ( Volks, Ford, 
Fiat ), capacidade do tanque de combustível e preço de fábrica. O algoritmo 
deverá então calcular e imprimir: 
 a marca, fabricante e preço final de cada automóvel sabendo que o 
preço final é calculado da seguinte maneira: PF + comissão das 
revendas ( 15% do PF ) + transporte ( R$ 150,00 ); 
 a capacidade média do tanque de combustível dos veículos; 
 qual dos três fabricantes produziu mais veículos; 
 qual a marca e o fabricante do carro mais caro. 
 
62) Faça um algoritmo em Portugol que leia um conjunto indefinido de registros 
cada um contendo os seguintes dados de um livro: autor, título, data e local de 
publicação e preço. O algoritmo deverá então calcular e imprimir: 
 quantidade de livros escritos por José de Alencar que foram publicados 
em São Paulo;custo médio dos livros escritos por Rui Barbosa; 
 nome do autor do livro “As Orquídeas”. 
 
63) Faça um algoritmo em Portugol que leia um conjunto de 50 registros, cada um 
contendo os seguintes dados de um aluno: nome, nota1, nota2, nota3, idade e 
curso que freqüenta. O algoritmo deverá calcular e imprimir: 
 nome e a média final de todos os alunos ( média aritmética ); 
 nome do aluno do curso de TPD que obteve a maior média; 
 idade média dos alunos; 
 quantidade de alunos com média acima de 7,0. 
 
64) Faça um algoritmo em Portugol que leia um conjunto de 36 registros cada um 
contendo os seguintes dados dos times de futebol do campeonato brasileiro: 
nome do time, estado a que ele pertence, total de pontos feitos no campeonato, 
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
número de gols marcados e número de gols sofridos no campeonato. O algoritmo 
deverá calcular e imprimir: 
 nome de cada time e o seu saldo de gols ( gols marcados menos gols 
sofridos ); 
 a soma de pontos dos times do Rio Grande do Sul; 
 nome dos times cuja pontuação foi superior a 50 pontos no 
campeonato. 
 
65) Faça um algoritmo em Portugol que leia um conjunto indefinido de registros 
de vendas dos vendedores de uma imobiliária. Cada registro contém os seguintes 
dados: código do vendedor, valor da venda, percentual de comissão a ser 
recebido pelo vendedor e tipo do imóvel vendido ( APTO, CASA, TERRENO ). 
O algoritmo deverá então calcular e imprimir: 
 código e a comissão recebida por cada vendedor; 
 código do vendedor que recebeu o maior valor de comissão; 
 quantidade de apartamentos vendidos; 
 valor médio de vendas da imobiliária. 
 
66) Faça um algoritmo em Portugol que leia um conjunto de 365 registros, cada 
um contendo a temperatura de um dia do ano ( os registros estão ordenados por 
dia ). O algoritmo deverá calcular e imprimir: 
 temperatura média do ano; 
 maior temperatura ocorrida no primeiro semestre daquele ano; 
 menor temperatura ocorrida no segundo semestre daquele ano; 
 número de dias do ano em que a temperatura foi superior a trinta graus. 
 
67) Faça um algoritmo que leia um conjunto indefinido de registros de candidatos 
ao vestibular, cada um contendo os seguintes dados: nome, curso pretendido ( 
TPD, ADM, CONTAB ), língua escolhida ( ING, ESP ), sexo e idade. O algoritmo 
deverá então calcular e imprimir: 
 curso de maior procura no vestibular; 
 idade média das candidatas mulheres; 
 percentual de candidatos que optaram pela lingua inglesa ( ING ); 
 nome e o curso pretendido por cada candidato. 
 
68) Faça um algoritmo que leia os valores das variáveis X e A e calcule o valor 
de S dado por: 
 
2032
1
*
19
2018
*
2
319
*
1
220
*
1
XAXAXAXA
S 
 
 
69) Faça um algoritmo para executar uma operação de multiplicação através de 
somas sucessivas. O algoritmo deverá ler o valor do multiplicando e do 
multiplicador e calcular e imprimir o resultado da multiplicação. 
 
70) Faça um algoritmo em Portugol que gere e imprima a tabuada dos números 
de 1 a 10. 
 
71) A conversão de graus Fahrenheit para centígrados é obtida pela fórmula: 
 
9
32*5 F
C
 
 
Escreva um algoritmo em Portugol que calcule e imprima uma tabela de graus 
centígrados em função de graus Fahrenheit que variam de 50 a 150 graus. A 
tabela deverá ter o seguinte formato: 
 
Fahrenheit Centígrados 
50 ? 
51 ? 
: : 
150 ? 
 
72) A Série de Fibonacci é formada pela seguinte sequência de números: 1, 1, 2, 
3, 5, 8, 13, 21, 34, 55, ... . Escreva um algoritmo em Portugol que gere e imprima 
esta série até o vigésimo termo. 
 
73) Faça um algoritmo que leia o valor da variável A e calcule e imprima o valor 
de S dado por: 
A
AAA
S 
2
3
1
21
 
 
74) Suponha que a UnC seja dividida em departamentos e que para cada um 
deles exista um código, conforme a tabela abaixo: 
 
Departamento Código 
Secretaria 1 
Tesouraria 2 
Biblioteca 3 
NPD 4 
 
Faça um algoritmo em Portugol que leia 250 registros de funcionários da UnC 
contendo, cada um, o código do departamento do funcionário, seu nome e salário. 
O algoritmo deverá calcular e imprimir: 
 nome do funcionário com maior salário da UnC; 
 salário médio por departamento; 
 salário médio da instituição. 
 
75) Faça um algoritmo em Portugol que leia um conjunto de 7000 registros de 
assinantes das revistas da Editora Abril, cada um contendo os seguintes dados: 
nome da revista ( EXAME, VEJA, INFO ), valor pago pela assinatura, idade e 
sexo do assinante. O algoritmo deverá calcular e imprimir: 
 nome da revista possui maior quantidade de assinantes; 
 idade média dos assinantes da revista INFO; 
 quantidade de homens que assinam a revista VEJA; 
 maior valor de assinatura pago pelas mulheres. 
 
 
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
ViinyDC-PC
Highlight
76) Dado o conjunto de dados e o algoritmo abaixo, faça o teste de mesa do 
mesmo e responda qual o conteúdo das variáveis Aux1, Aux2 e Aux3 ao final da 
execução do algoritmo. 
 
Início 
Aux3  0 
Maior  0 
Sal1, Sal2, Sal3  0 
Num1, Num2, Num3  0 
Para cont = 1,6 faça 
Leia ( nome, idade, depto, sal ) 
Se depto = “A” então 
Sal1  Sal1 + sal 
Num1  Num1 + 1 
Senão 
Se depto = “B” então 
Sal2  Sal2 + sal 
Num2  Num2 + 1 
Senão 
Sal3  Sal3 + sal 
Num3  Num3 + 1 
Fimse 
Fimse 
sal  sal * 1,10 
Se sal > maior então 
Maior  sal 
Aux2  idade 
Fimse 
Aux3  Aux3 + sal 
Fim para 
Aux1  Sal3/Num3 
Fim 
 
Dados do Algoritmo: 
 
 
 
 
 
 
 
 
 
 
Resultados do Algoritmo: 
 
Aux1 Aux2 Aux3 
 
 
 
 
 
LUIZ, 25, C, 800 
JOÃO, 51, B, 500 
CLEUSA, 35, C, 1500 
MARIA, 20, A, 200 
PEDRO, 32, D, 500 
ZÉ, 28, A, 1800 
77) Dado o conjunto de dados e o algoritmo abaixo, faça o teste de mesa do 
mesmo e responda qual o conteúdo das variáveis Aux1, Aux2 e Aux3 ao final da 
execução do algoritmo. 
 
Início 
Aux3  0 
Menor  999999 
Total, Veic  0 
ContF, ContG  0 
Para cont = 1,6 faça 
Leia ( Fab, Mod, Preço, AnoFab ) 
Se Fab = “FIAT" então 
ContF  ContF + 1 
Senão 
Se Fab = “GM” então 
ContG  ContG + 1 
Aux3  Aux3 + Preço*1,10 
Senão 
Se AnoFab < Menor Então 
Menor  AnoFab 
Aux2  Mod 
Fimse 
Fimse 
Fimse 
Veic  Veic + 1 
Total  Total + Preço 
Fim para 
Aux1  Total / Veic 
Fim 
 
Dados do Algoritmo: 
 
 
 
 
 
 
 
 
 
 
 
 
 
Resultados do Algoritmo: 
 
Aux1 Aux2 Aux3 
 
 
 
 
 
 GM, MONZA, 13000, 1991 
VOLKS,SANTANA,12500,1995 
GM, CORSA, 9000, 1994 
GM, VECTRA, 27000, 1998 
FIAT, PÁLIO, 10500, 1996 
VOLKS, GOL, 12000, 1997

Outros materiais