You are on page 1of 76

Unidade 01 

Introdução à Programação de
Computadores

Objetivos
Conhecer e descrever a estrutura e funcionamento de um computador
Conceituar algoritmo, descrevendo suas características e elementos
Escrever algoritmos simples em diversos formatos
Conhecer e utilizar comandos de entrada, saída e atribuição.
Utilizar a estrutura sequencial para escrever algoritmos simples.

Conteúdo
Conceitos Básicos em Programação
Pseudocódigo: Conceitos Básicos
Pseudocódigo: Estruturas de Controle – Visão Geral
Capítulo 01 P á g i n a  | 2 
 
Conceitos Básicos em Programação

O homem, desde a pré-história, tem buscado desenvolver equipamentos que


o auxiliem em seu trabalho, a fim de diminuir esforços e economizar tempo. Dentre
todos os equipamentos já inventados pelo homem, merece destaque o computador,
por sua versatilidade, rapidez e segurança.
O computador é capaz de auxiliar o homem na execução das mais difíceis
atividades, tendo por finalidade a tarefa de processar dados, que consiste na
recepção, manipulação e armazenamento dos dados. Isto só possivel graças à
existência de um conjunto de instruções que são executadas pelo equipamento.
Esse conjunto de instruções, chamado de programa, é escrito pelo homem para
finalidades específicas de processamento.
Neste capítulo, aprenderemos como funciona um computador e como
proceder para escrever conjuntos de instruções que poderão ser transformados em
programas de computador. Inciaremos nosso estudo pelos conceitos básicos em
computação e, em seguida, aprofundaremos os conceitos da programação de
computadore.

1.1. O que é um computador e como ele está organizado?

É possível encontrarmos muitas definições de computador. Algumas delas


são relacionadas a seguir. Leia-as atentamente:

A palavra computador vem do latim


computare, que significa calcular. 
P á g i n a  | 3 
 

“Um computador é um dispositivo capaz de fazer cálculos e tomar decisões


lógicas a velocidades milhões (e até bilhões) de vezes mais rápidas que os
seres humanos” (DEITEL, 2005).

“Computador é uma máquina que recebe e trabalha os dados de maneira a


obter um resultado” (MARÇULA; BENINI, 2005).

“Computador é uma máquina capaz de variados tipos de tratamento automático


de informações ou processamento de dados” (WIKIPEDIA, 2009)

Você ter notado que nas definições apresentadas fica claro que um
computador realiza as tarefas para o qual foi criado (processamento de dados) por
meio da realização de cálculos matemáticos. Entretanto, esses cálculo precisam ser
realizados de forma organizada e ordenada. Mas como se consegue essa
organização? Como o computador sabe quais cálculos devem ser realizados e em
que momento?
Todo computador, para cumprir sua função, é programável. Ou seja,
trabalha executando um conjunto de comandos específicos, também chamados de
instruções. São essas instruções que orientam o computador em sua tarefa de
processamento de dados. Para que os resultados obtidos sejam os esperados, as
instruções são agrupadas e ordenadas, consituindo o que chamamos de programas
de computador. A definição de quais instruções irão compor o programa e a ordem
em que serão executadas é determinada pelos programadores de computador.
Assim, podemos concluir que um computador pode ser definido como uma
“máquina que pode ser programada para receber dados, processá-los em
informação útil e armazená-los para proteção ou reutilização” (CAPRON. JOHNSON,
2004).
Agora que você já sabe o que é um computador, vamos aprender como ele
está organizado e como ele trabalha com os dados que recebe para processar.
Já sabemos que todo sistema de computação é formado por três
componentes: hardware, software e usuário.
P á g i n a  | 4 
 

 
Figura 1: Componentes de um Sistema de Computação

O hardware representa a parte material do computador, ou seja, os


componentes físicos do sistema. O software representa todo o conjunto de
instruções organizadas logicamente e que são entendidas pelo computador. Em
outras palavras, podemos dizer que o software são todos os programas que
compõem o sistema de computação. O usuário são todas as pessoas que utilizam o
computador para algum propósito. Cada um desses componentes possui uma
relação de interdependência com os demais. De nada nos serviria ter o melhor
equipamento se não possuíssemos os programas que possibilitariam o
funcionamento da máquina. Do mesmo modo, para nada serviriam os melhores
programas sem que houvesse uma máquina capaz de executá-los. E mesmo que
tivessemos a melhor máquina com os mais modernos programas, se não houvesse
quem os manipulasse e deles tirasse proveito, não teriam nenhuma utilidade.
A seguir, vamos aprender como o hardware de um computador está
organizado. O entendimento desta organização é importante para que você
compreenda como um programa é executado. Observe a figura a seguir:
P á g i n a  | 5 
 

 
Figura 2: Organização de um Computador e o Ciclo de Processamento

A Figura 2 mostra a organização básica de um computador associada a


cada uma das etapas do ciclo de processamento: entrada, processamento e saída.
Os dispositivos de entrada, como teclado e mouse, são responsáveis pela entrada
de dados no sistema. A Unidade Central de Processamento (CPU) é responsável
pelo processamento dos dados. Os dispositivos de saída, como o monitor de vídeo,
realizam a apresentação dos resultados ao usuário.
O fluxo de dados obedece ao que está representado na figura. Os dados
quando “entram” no sistema são armazenados na memória principal, sendo enviado
um sinal de controle para a CPU. Quando a CPU executa uma instrução que
necessita dos dados que estão armazenados na memória principal, estes são lidos e
armazenados temporariamente em registradores do processador. Os dados no
registrador são então manipulados e os resultados são guardados também em
registradores e, em seguida são escritos na memória principal. A partir da memória
principal estes resultados são enviados para os dispositivos de saída, a fim de que o
usuário possa ter acesso a eles.
Consideremos a seguinte situação: realizar em meio computacional a
seguinte operação 2 + 3. Note que temos aqui uma instrução (soma) e dois valores
(dados externos). Inicialmente, os dados e a operação a ser realziada serão
P á g i n a  | 6 
 

fornecidas ao sistema através do teclado (dispositivo de entrada), os dados seguem


para a memória principal, onde serão armazenados. Um sinal de controle
informando a operação a ser realizada e a localização dos dados é enviado para a
CPU (Unidade de Controle). Em seguida, a CPU realiza a leitura dos dados e copia
seus valores para os registradores internos. A operação é então realizada pela CPU
(Unidade Lógica e Aritmética) e o valor 5 é armazenado em um registrador. Em
seguida, este resultado é escrito na memória principal para, na sequência, ser
enviado ao monitor de vídeo (dispositivo de saída) de modo que possa ser
visualizado pelo usuário.
Perceba neste pequeno exemplo a presença dos três componentes do
sistema: o equipamento (dispositivos de entrada e saída, CPU, memória), as
instruções (ler os dados do teclado, armazenar na memória, calcular a soma,
apresentar os dados no monitor) e o usuário (que digitou os dados e visualizou os
resultados na tela).
Antes de prosseguir, vamos fazer uma pequena obervação sobre a memória
principal. Quando um dado é guardado na memória, é preciso que seja possível
localizá-lo posterioremente. Para isso, a memória é dividida em pequenas porções,
normalmente correspondentes a um byte. Cada porção de memória possui um
endereço, através do qual é possível ter acesso aos dados ali armazenados.
Podemos imaginar a memória conforme a Figura 3.

0000 0001 0002 0003 0004 0005 0006 0007 0008 0009

0010 0011 0012 0013 0014 0015 0016 0017 0018 0019

0020 0021 0022 0023 0024 0025 0026 0027 0028 0029

0030 0031 0032 0033 0034 0035 0036 0037 0038 0039

Figura 3: Esquema de Memória Principal 

Os endereços de cada porção de memória na Figura 
3 foram expressos em números decimais apenas 
para fins didáticos. Na prática, esses valores são 
expressos na base binária. 
P á g i n a  | 7 
 

Nosso objetivo nesta disciplina é escrever instruções que serão executadas


pelo computador, a fim de que um dado problema seja resolvido. Ou seja, vamos
nos concentrar no desenvolvimento de programas. Para exemplificar alguns
conceitos básicos de desenvolvimento de programas, e antes de apresentar a
formalização desses conceitos, vamos considerar a existência de um computador
hipotético simples, proposto por Celes e Ierusalimschy (2007). Para efeito de
simplificação, este computador hipotético trabalha na base decimal. Tenha claro
que, na prática, os computadores trabalham com o sistema de numeração binário.
Nosso computador é capaz de realizar um conjunto de poucas instruções
básicas. Deste modo, um programa para ser executado neste computador, deve ser
composto por uma sequêncial dessas instruções. A memória só armazena valores
numéricos e cada posição é rotulada por um número inteiro não negativo. Nossa
CPU obedece ao esquema já apresentado: possui registradores, uma unidade para
controlar a execução das instruções e o fluxo de dados e uma unidade para realizar
operações lógicas e aritméticas. A seguir, apresentamos o set de instruções deste
computador hipotético.

Conjunto de instruções que uma CPU 
reconhece e consegue executar. 

Tabela 1: Set de Instruções do Computador Hipotético 

Instruções Descrição

read pos captura o valor digitado pelo usuário e armazena na memoria na


posição especificada pelo valor pos.

write pos mostra na tela do monitor o valor armazenado na memória na


posição de valor pos.

storeconst num pos armazena o valor de uma constante numérica (num) na posiçaõ
de memória especificada pelo valor pos.

add pos1 pos2 soma os valores armazenados na memória em pos1 e pos2,


guardando o resultado no registrador.

sub pos1 pos2 subtrai os valores armazenados na memória em pos1 e pos2,


guardando o resultado no registrador.

mul pos1 pos2 multiplica os valores armazenados na memória em pos1 e pos2,


guardando o resultado no registrador.

div pos1 pos2 divide o primeiro pelo segundo valores armazenados na memória
em pos1 e pos2, guardando o resultado no registrador.

store pos armazena o valor do registrador na posição de memória


identificada pelo valor pos
P á g i n a  | 8 
 

Com esse conjunto de instruções, é possível escrever pequenos programas


que podem ser virtualmente executados neste nosso computador hipotético. Por
exemplo, considere um programa que captura uma valor fornecido pelo usuário e
mostra na tela o resultado da soma desse valor com 3. Já sabemos que um
programa é um conjunto de instruções que o computador reconhece e consegue
executar. Assim, o código abaixo representa o programa deste exemplo para o
nosso computador hipotético.

read 0
storeconst 3 1
add 0 1
store 2
write 2

A execução deste programa em nosso computador consiste inicialmente na


leitura de valor a partir do teclado e armazenamento deste dado na posição de
memória 0 (read 0). Em seguida, será guardada na posição 1 da memória o valor
constante 3, definido pelo programa (storeconst 3 1). Na sequência, os valores
que estão armazenados nas posições de memória 0 e 1 são lidos e copiados para o
registrador, a Unidade Lógica e Aritmética então realiza a soma e guarda o resultado
no registrador (add 0 1). A seguir, o resultado guardado no registrador é escrito na
posição 2 da memória (store 2). Por fim, o valor guardado na posição 2 é
mostrado no monitor de vídeo (write 2). Assim, no final da execução, teríamos o
valor digitado pelo usuário armazenado na posição de memória rotulada por 0. A
posição 1 foi utilizada para armazenar a constante 3, a fim de que a soma pudesse
ser realizada. Na posição 2, teríamos o valor fornecido pelo usuário adicionado de 3.
O programa apresentado pode ser escrito de outras formas, o que não
modificaria o resultado final. Acompanhe:
P á g i n a  | 9 
 

read 0
storeconst 3 1
add 0 1
store 0
write 0

Neste caso, o resultado mostrado no monitor de vídeo é exatamente o


mesmo. O que diferencia este programa do analisado anteriormente é o fato de
serem utilizadas apenas duas posições de memória (0 e 1). Ao término da
execução, teremos o valor 3 armazenado na posição 1 e o valor da soma
armazenado na posição 0, sobrescrevendo o valor anteriormente armazenado.

É possível sobrescrever valores na memória. 
Quando isto acontece, o valor anterior é perdido, a 
menos que seja feita uma cópia e armazenada em 
outra posição. 

Vamos agora analisar o seguinte programa:

read 0
storeconst 3 1
add 0 1
store 0
write 2

Este programa não está correto, pois tenta exibir no monitor de vídeo um
valor armazenado na posição 2, que não foi definido. Nesta situação seria mostrado
um valor indefinido e desconexo do contexto do programa. A este valor atribuímos o
nome “lixo”.
P á g i n a  | 10 
 

Auto Avaliação 1.1 
 
1. Explique o que é um computador, citando suas principais características. 
2. Quais são os componentes de um sistema de computação? Explique cada um. 
3. Descreva o funcionamento de um computador. 

Agora que já sabemos como um computador está organizado e como os


programas são executados podemos iniciar o nosso estudo sobre o
desenvolvimento de programas. Esteja atento, pois cada detalhe é de fundamental
importância.

1.2. A Programação e o Conceito de Algoritmo

Tomando por base os exemplos apresentados acima, podemos afirmar que


um programa é uma sequência de instruções a serem executadas pelo computador
que visa atingir um objetivo (resolver um problema). Para que possam ser
executadas pela CPU, essas instruções devem estar codificadas em linguagem de
máquina.
Nos primórdios da computação, os programas eram escritos diretamente em
linguagem de máquina, o que era uma tarefa penosa, pois exigia atenção do
programador em trabalhar diretamente em notação binária. Com o passar do tempo,
surgiram as Linguagens de Programação de alto nível, que consistem em
linguagens mais fáceis de serem manipuladas pelo programador e que podem ser
traduzidas em linguagem de máquina.
P á g i n a  | 11 
 

Uma linguagem de programação, assim como toda linguagem, deve ser


rigorosamente definida, ou seja, deve apresentar sintaxe e semântica próprias.
Chamamos sintaxe a estrutura da linguagem, ou seja, as regras que regem a forma
como se expressam ideias nessa linguagem. A semântica trata do significado
daquilo que foi expresso. Por exemplo, consideremos a seguinte frase escrita
conforme as regras da língua portuguesa:

A manga está madura.

Para escrever uma frase seguimos a seguinte regra: primeiro vem o sujeito,
em seguida um verbo e seu complemento. Isto é parte da sintaxe da língua
portuguesa, pois especifica como expressar uma ideia. A semântica nos possibilita
entender que a frase diz respeito ao estado de uma fruta (madura), pois trata do
significado do que foi expresso.
Com as linguagens de programação não é diferente. Cada uma tem regras
que definem como as instruções devem ser escritas (sintaxe) e também semântica,
que indica o significado de cada instrução.
Atualmente, um programa de computador deve ser escrito numa linguagem
de programação e depois traduzido para a linguagem de máquina, a fim de que seja
executado pelo computador. O processo de traduzir um programa da linguagem de
programação para a linguagem de máquina é chamado de compilação. Essa tarefa
é executada por um software chamado de compilador.
A criação de um programa não é uma tarefa simples. Exige muita paciência,
dedicação e uma forte dose de raciocínio lógico-matemático. O Quadro 1 resume as
etapas que devem ser seguidas para a construção de um programa.

Etapas para a Construção de um Programa

1. Análise: esta etapa consiste na compreensão do problema e


identificação da entrada, das operações de processamento e da
saída.
2. Elaboração do Algoritmo: nesta etapa, são descritos
formalmente o problema e sua solução.
3. Codificação: consiste na tradução do algoritmo para uma
linguagem de programação.
P á g i n a  | 12 
 

A partir da análise do Quadro 1 é imediato concluir que um programa


constitui-se de um algoritmo escrito em uma linguagem de programação. Por isso, o
conceito de algoritmo é fundamental para a Ciência da Computação, visto que
desenvolver programas de computador nada mais é senão criar algoritmos que
solucionem um dado problema. A literatura apresenta inúmeras definições para o
termo Algoritmo das quais selecionamos as seguintes. Leia-as atentamente.

“Algoritmo é uma sequência de passos que deve ser seguida para a


realização de uma tarefa” (ASCENCIO; CAMPOS, 2007)

“Algoritmos são regras formais para a obtenção de um resultado ou da


solução de um problema, englobando fórmulas de expressões aritméticas”
(MANZANO, 1997)

Essas definições, apresentam de forma simples a visão geral do conceito de


algoritmo, entendido como um conjunto sequencial de instruções que, quando
executadas, solucionam um problema. Neste contexto, podemos facilmente
exemplificar o uso de algoritmos para resolver problemas da nossa vida cotidiana
como, por exemplo, um saque num terminal de auto atendimento.
Imagine que você deseja sacar uma quantia de R$ 500,00 num caixa
eletrônico. Normalmente, deve ser seguida uma sequência ordenada de passos para
que esta tarefa seja realizada.
http://www.camacarinoticias.com.br/upload/77/781592967.jpg 
P á g i n a  | 13 
 

1. Inserir o cartão;
2. Retirar o cartão;
3. Escolher a opção saque;
4. Escolher o tipo de conta (corrente ou poupança);
5. Digitar o valor (R$ 500,00);
6. Selecionar um conjunto de três letras (uma de cada vez);
7. Inserir o cartão;
8. Retirar o cartão;
9. Retirar o dinheiro.

Este é um algoritmo para a operação saque num terminal de caixa


eletrônico. Observe que é necessário executar todos os passos na ordem em que
são definidos para que a operação seja realizada.
Consideremos agora que desejamos comer um ovo frito. Quais são os
passos a serem seguidos para a tarefa de dado um ovo cru transformarmos em ovo
frito? Acompanhe:
P á g i n a  | 14 
 

Fonte das Imagens: http://dietacerta.files.wordpress.com e

1. Pegar um ovo cru;


2. Pegar uma frigideira e colocar sobre o fogão;
3. Acender o fogo;
4. Colocar gordura na frigideira;
5. Aguardar a gordura esquentar;
6. Quebrar o ovo e colocá-lo na frigideira;
7. Colocar sal sobre o ovo;
8. Aguardar o tempo de fritura;
9. Desligar o fogo;
10. Retirar o ovo da frigideira.
11. Colocar o ovo em um prato.

Note que para transformar o ovo cru em ovo frito foi demandado certo tempo
e utilizados alguns utensílios. Fazendo uma analogia com o problema do
processamento de dados, podemos imaginar que o ovo cru são os dados brutos
(dados de entrada) e o ovo frito os dados processados (dados de saída). Os
utensílios utilizados para realizar a transformação de ovo cru em ovo frito podem ser
entendidos como os recursos computacionais utilizados para processar os dados. O
ato de quebrar o ovo na frigideira representa a entrada de dados e a retirada
representa a saída de dados.
Diante do exposto, apresentamos uma definição mais completa de algoritmo,
proposta por Holloway (2007).

“Um algoritmo é uma lista de instruções que, quando executadas, 
transformam  dados  de  entrada  até  a  saída.  As  instruções  são  um 
conjunto finito de etapas que podem ser executadas, numa ordem 
precisa, por um mecanismo determinista. Quando estas etapas são 
efetivamente  executadas,  a  execução  deve  terminar  após  um 
tempo finito.” 
P á g i n a  | 15 
 

Nesta definição é preciso destacar alguns aspectos importantes para a


compreensão do conceito de algoritmo.

1. Expressão Finita: um algoritmo é um conjunto finito de instruções. Note


que não seria possível estabelecer, por exemplo, uma quantidade infinita
de passos para sacar R$ 500,00 ou para fritar um ovo.
2. Execução por Mecanismo: é obrigatória a existência de uma máquina
que seja capaz de executar as etapas definidas no algoritmo.
3. Execução Finita: todo algoritmo deve obrigatoriamente ser executado
num intervalo de tempo finito. Por exemplo, não é possível estabelecer
um passo num algoritmo que realize a entrada de todos os números
naturais, pois a execução ficaria nesta instrução infinitamente.

Estas características podem ser identificadas claramente nos algoritmos


apresentados anteriormente. Por exemplo, no algoritmo para realizar um saque de
R$ 500,00 através de um terminal de caixa eletrônico, é simples notar que o
algoritmo consiste num conjunto finito de passos (9 passos). Além disso, existe
“alguém” (o usuário) para executar os passos e, uma vez iniciado o saque, ele é
concluído após um determinado intervalo de tempo. De forma semelhante, é
possível identificar essas características no algoritmo que determina como fritar um
ovo.
O quadro a seguir, resume as características de um algoritmo.
P á g i n a  | 16 
 

Características de um Algoritmo

1. Ter fim.
2. Não dar margem a dupla interpretação.
3. Capacidade de receber dados do mundo exterior.
4. Pode gerar informações de saída para o mundo externo ao ambiente
do algoritmo.
5. Ser efetivo, ou seja, após um intervalo de tempo finito, o algoritmo
apresenta a saída esperada, de acordo com a entrada.

Agora que já sabemos o que é um algoritmo e quais as suas características,


vamos conhecer um método que detalha como devemos proceder para, dado um
problema, construir um algoritmo que represente sua solução.

Método para a Construção de Algoritmos

1. Ler atentamente e compreender o problema a ser solucionado.


2. Identificar os dados de entrada.
3. Identificar os dados de saída.
4. Determinar o processamento, ou seja, definir como obter os dados
de saída a partir dos dados de entrada.
5. Escrever o algoritmo.
6. Testar o algoritmo, simulando sua execução.
P á g i n a  | 17 
 

Para melhor compreender o método apresentado, vamos considerar o


seguinte problema: “pegar duas notas de um aluno e apresentar sua média”.
Segundo o método, devemos inicialmente compreender o problema. Neste
caso, o problema consiste na determinação da média aritmética de um aluno, a
partir de suas duas notas.
Em seguida, vamos proceder à identificação dos dados de entrada e de
saída: neste caso é simples detectar que os dados de entrada (matéria-prima para a
execução do algoritmo) são as duas notas do aluno e o dado de saída é a média
dessas notas.
O próximo passo consiste em definir o processamento. Ou seja, de que
forma é possível obter a saída a partir dos dados de entrada. Para o problema
estudado, basta pegar as duas notas, somá-las e dividir o total da soma por dois.
Uma vez que o problema foi entendido e foram destacados entrada,
processamento e saída, é preciso escrever o algoritmo. Mas, como o algoritmo será
representado? Para representar um algoritmo, existem diversas formas, algumas
padronizadas e outras não. Dentre várias técnicas de representação de algoritmos,
escolhemos três para abordarmos em nosso curso: descrição narrativa,
fluxograma e pseudocódigo ou linguagem algorítmica. Estas técnicas serão
detalhadas a seguir.
Uma vez escrito o algoritmo, devemos testá-lo, simulando sua execução, a
fim de vericar se os resultado apresentados são corretos ou não. Mais adiante,
veremos detalhes de como testar nossos algoritmos.

1.3. Formas de Representação de Algoritmos

1.3.1. Descrição Narrativa

Esta técnica para escrever algoritmos consiste na escrita do passo a passo


em linguagem natural, conforme já o fizemos no início desta unidade quando
determinamos os algoritmos para sacar um valor em dinheiro a partir de um terminal
de caixa eletrônico e para fritar um ovo.
P á g i n a  | 18 
 

A vantagem de utilizar esta notação para representar um algoritmo é que


não é necessário aprender nenhum conceito novo, basta numerar cada passo e
detalhá-lo em língua portuguesa. Entretanto, existem algumas desvantagens na
adoção desta técnica, dentre as quais destacamos: a imprecisão, a pouca
confiabilidade e a extensão.
Por exemplo, imagine que foi solicitado a duas pessoas que fosse construído
um algoritmo que representasse os passos para assistir a um filme a partir de um
aparelho de DVD. As soluções apresentadas foram as seguintes:

1. Ligar o aparelho de DVD na tomada. 1. Ligar o aparelho de DVD na tomada.

2. Colocar o disco no aparelho de DVD. 2. Conectar o aparelho de DVD na TV.

3. Pressionar play. 3. Abrir a bandeja para inserir o disco.

4. Assistir ao filme. 4. Colocar o disco na bandeja.

5. Fechar a bandeja.

6. Pressionar play.

7. Assistir ao filme.

8 Abrir a bandeja

Note que ambas as descrições estão corretas, entretanto o nível de


detalhamento de cada uma é diferente. Escrever um algoritmo mais enxuto pode
gerar imprecisão no momento em que ele for executado. Por outro lado, detalhar o
passo a passo tornará o algoritmo muito extenso.
Utilizando esta forma de representação para escrever nosso algoritmo que
informa a média de uma aluno, temos:

Algoritmo CalculaMedia

1. Solicite a primeira nota.


2. Anote a primeira nota.
3. Solicite a segunda nota.
4. Anote a segunda nota.
5. Some a primeira nota com a segunda e divida o resultado por 2.
6. Anote o resultado do cáculo.
7. Informe o resultado.
P á g i n a  | 19 
 

Auto Avaliação 1.2 
 
1. Conceitue Algoritmo e dê exemplos de algoritmos que você percebe no seu dia a dia. 
 
2. Por que um algoritmo não pode conter um comando que represente a leitura de 
todos os números naturais? 
 
3. Escreva um algoritmo em descrição narrativa para cada um dos seguintes problemas:

a) Trocar uma lâmpada no teto de sua casa.

1.3.2. Fluxograma

Esta técnica define um conjunto de símbolos gráficos padronizados para


representar algoritmos. A seguir, apresentamos os principais símbolo utilizados e
seus siginifcados.

Símbolos para Representar Algoritmos

Cálculo/ Processamento Decisão

Entrada de Dados Início/ Fim

Saída de Dados Fluxo de Dados


P á g i n a  | 20 
 

Como ficaria a representação em fluxograma do nosso algoritmo que calcula


a média de um aluno? Acompanhe.

Início  Início do Algoritmo

Nota1  Entrada da Primeira Nota

Nota2  Entrada da Segunda Nota

Média = (Nota1 + Nota2)/2 
Cálculo da Média

 
Média  Apresentação do Resultado

Fim 
P á g i n a  | 21 
 

Fim do Algoritmo

A fim de melhor ilustrar o uso de fluxogramas na construção de algoritmos,


consideremos o seguinte problema: “dadas duas notas de um aluno, calcular sua
média e informar se o aluno foi aprovado, caso sua média seja maior ou igual a 7, ou
reprovado, se a média for menor que 7”.
Seguindo o método apresentado, iniciamos pela análise e compreensão do
problema. O problema consiste em solicitar duas notas, calcular a média aritmética
dessas notas e verificar se a média é maior que 7. Caso positivo, informar que o
aluno foi aprovado, caso contrário, informar que o aluno foi reprovado.
Após compreender o problema, devemos identificar entrada, saída e
processamento. Para este problema, temos:

Entrada: Nota 1 e Nota 2.


Saída: a palavra “Aprovado” ou a palavra “Reprovado”.
Processamento: A partir dos dados de entrada (Nota 1 e Nota 2), calcular a
média aritmética, somando as duas notas e dividindo o resultado por 2. Em seguida,
deve ser feito um teste condificional, que consiste em verificar se a média é maior ou
igual a 7. Caso o resultado do teste seja verdadeiro, mostrar a palavra “Aprovado”,
caso seja falso, mostrar a palavra “Reprovado”.

Uma vez identificados esses elementos, o próximo passo consiste em


escrever o algoritmo. Neste caso, foi construído um fluxograma. Analise-o.

Início

Nota1 

Nota2 

Média = (Nota1 + Nota2)/2 
P á g i n a  | 22 
 

Finalmente, devemos proceder aos testes para verificar se o algoritmo


apresenta resultados coerentes. Para os testes,
devemos simular alguns resultados e executar o
Note a presença de uma decisão. 
algoritmo passo a passo. Neste caso, existem dois caminhos 
Vamos considerar os seguintes cenários e apenas um deverá ser seguido. A 
escolha é determinada pelo teste 
de testes: o primeiro consistirá na entrada das condicional. 
notas 8 e 9, respectivamente, cuja saída esperada
é a palavra “Aprovado”, e o segundo terá como entradas as notas 4 e 6 e a saída
esperada é a palavra “Reprovado”.
Assim, para o primeiro cenário, temos:

Início Aqui se inicia a execução

Nota 1 = 8 
Nota1 

Nota 2 = 9 
Nota2 
P á g i n a  | 23 
 

Média = (8 + 9) / 2 = 8,5

Média >= 7 → verdadeiro 
(O fluxo segue pela esquerda). 

Fim da Execução 

É mostrada a Palavra “Aprovado” 

Para o segundo cenário, temos:

Início Aqui se inicia a execução

Nota 1 = 4 
Nota1 

Nota 2 = 6 
Nota2 

Média = (4 + 6) / 2 = 5
Média = (Nota1 + Nota2)/2 

Média >= 7 → falso 
(O fluxo segue pela direita). 
verdadeiro  falso
Média >= 7 

   
“Aprovado”  “Reprovado” 
P á g i n a  | 24 
 

É mostrada a palavra 
“Reprovado” 

Com base nos testes, verificamos que os resultados apresentados pelo


algoritmo são exatamente aqueles esperados. Portanto, o algoritmo corresponde á
solução do problema.
P á g i n a  | 25 
 

Exemplo 
 
Escrever um algoritmo em fluxograma para fornecer o resultado da divisão de 
dois números. 
 
SOLUÇÃO 
 
Entrada: os dois números a serem divididos. 
Saída: a frase “Não é possível dividir” caso o segundo número seja zero, ou a 
resultado da divisão do primeiro pelo segundo número, caso contrário. 
Processamento: verificar se o segundo número é igual a zero. Caso positivo, 
mostrar a frase. Caso contrário, calcular o quociente e mostrar o resultado. 
 
Fluxograma 
Início

NUM1 

NUM2 

verdadeiro  falso
NUM2 = 0 

   
“Não é possível dividir”  Quociente = NUM1 / NUM2 

Quociente 

Fim
P á g i n a  | 26 
 

A grande vantagem da utilização de fluxogramas para representar algoritmos


é sua ampla utilização, uma vez que se trata de uma das notações mais conhecidas
mundialmente, sendo inclusive padronizada. Além disso, o entendimento do
algoritmo é mais simples em relação à descrição narrativa.
Como desvatagens do uso de fluxogramas merece destaque o fato de não
oferecer recursos para descrever ou representar os dados e não mostrar alguns
detalhes, o que torna a tarefa de codificação trabalhosa. Além disso, quanto maior a
complexidade de problema, maior será o fluxograma, tornado mais difcíil o seu
entendimento.
Como forma de minimizar esses problemas foi criada uma técnica de
representação que aproximou os algoritmos das linguagens de programação. Esta
técnica é apresentada na seção seguinte e detalhada nos próximos capítulos.

1.3.3. Pseudocódigo (Linguagem Algorítmica)

Esta é a representação que mais se assemelha à forma como os programas


são escritos, uma vez que consiste na definição de uma pseudolinguagem de
programação para escrever um algoritmo, normalmente chamada de Portugol,
Pseudocódigo ou Português Estruturado.
Como toda linguagem de programação, o Portugol possui regras bem
definidas para a escrita das instruções que representam a solução do problema e
um significado para cada uma delas (sintaxe + semântica). Devido a isto, a tradução
do algoritmo para qualquer linguagem de programação torna-se uma tarefa muito
fácil, bastando ao programador apenas conhecer a linguagem que será utilizada
para escrever o programa.
A grande desvantagem na utilização de pseudocódigo para escrever
algoritmos reside no fato de se ter que aprender a sintaxe e a semântica de cada
comando. Além disso, não existe uma padronização de sintaxe. Cada grupo tem a
liberdade de determinar a forma como as instruções serão escritas. Entretanto,
apesar de existirem diversas pseudolinguagens, cada uma com sua sintaxe própria,
o significado das instruções é sempre o mesmo. Portanto, nosso objetivo neste
P á g i n a  | 27 
 

curso é aprender a semântica dos comandos, pois de posse deste conhecimento, é


possível compreender e utilizar qualquer linguagem.
Antes de apresentar as regras de sintaxe que iremos utilizar, mostraremos
alguns exemplos de códigos para que você perceba as diferenças entre eles. Não
se preocupe em entender o que cada comando representa, isto é uma tarefa para os
próximos capítulos.
Voltemos para o algoritmo que calcula a média de um aluno. Como ficaria
sua em pseudocódigo? A seguir, é mostrado o fluxograma que representa o
algoritmo e, em seguida, seu correspondente em pseudocódigo (em sintaxes
diferentes). Analise-o.

Início 

Algoritmo CalculaMedia
Declare Nota1, Nota1, Media Numérico
Nota1  Escreva “Digite a primeira nota”
Leia Nota1
Escreva “Digite a segunda nota”
Leia Nota2
Media ← (Nota1 + Nota2) / 2
Escreva Media
Nota2  Fim_Algoritmo

 
Algoritmo CalculaMedia
real Nota1, Nota2, Media;
Média = (Nota1 + Nota2)/2 
inicio
imprima (“Digite a primeira nota”);
leia (Nota1);
imprima (“Digite a segunda nota”);
leia (Nota2);
 
Média  Media = (Nota1 + Nota2) / 2;
imprima (Media)
fim

Fim 
P á g i n a  | 28 
 

Observe que os três algoritmos representam a mesma solução. O que muda


de um para o outro é apenas a forma como a solução está escrita, entretanto o
significado de cada comando é o mesmo em cada uma das representações.
Nos próximos capítulos focaremos na construção de algoritmos em
pseudocódigo, por enquanto tente resolver os exercícios a seguir utilizando a
representação de fluxograma.

Auto Avaliação 1.3 
 
Para cada um dos seguintes problemas, identifique entrada, saída e processamento. Em 
seguida desenhe o fluxograma que representa a solução do problema. 
 
1. Faça um algoritmo para mostrar o resultado da multiplicação de dois números. 
 
2. Faça um algoritmo que informe se um número é positivo ou negativo. 
 
3. Faça um algoritmo para calcular o novo salário de um funcionário. Sabe‐se que os 
Capítulo 02 P á g i n a  | 29 
 
Pseudocódigo: Conceitos Básicos

No capítulo anterior aprendemos o que são algoritmos, quais são suas


características e como escrevê-los em diferentes formatos. Além disso, conhecemos
um método para solucionar problemas computacionalmente.
A partir de agora, vamos nos concentrar na construção de algoritmos em
pseudocódigo. Neste capítulo, serão descritos os principais tipos de dados e o
conceito de variável. Além disso, serão apresentadas as estruturas de controle da
execução de um algoritmo, sendo detalhada a estrutura sequencial e os comandos
de entrada, saída e atribuição. A posse destes conceitos é fundamental para a
construção de soluções algorítmicas para os mais variados problemas e para o
entendimento das estruturas mais complexas que serão estudadas nas próximas
unidades.

2.1. Estrutura da Nossa Linguagem Algorítimica

Já sabemos que a utilização de pseudocódigo é a maneira de representar


um algoritmo que mais se assemelha às linguagens de programação. Sabemos
também que, por não ser padronizada, sua utilização exige a definição de uma
sintaxe para escrever os comandos, o que pode apresentar muitas variações.
A Linguagem Algorítmica utilizada neste curso obedecerá a seguinte
estrutura básica:

algoritmo “ <nome do Algoritmo> ”

var

<Bloco de Variáveis>

inicio

<Bloco de Comandos>

fimalgoritmo
P á g i n a  | 30 
 

Note que existem alguns termos que são componentes obrigatórios,


determinados pela sintaxe da linguagem. Esses termos são os seguintes:
algoritmo, var, inicio e fimalgoritmo.
A palavra algoritmo é utilizada para indicar o início da construção. Ao seu
lado, devemos escrever, entre aspas, um nome significativo para identificar o
algoritmo.
O termo var tem a função de iniciar um bloco conhecido como bloco de
variáveis, que será estudado um pouco mais à frente.
A palavra chave inicio abre um segundo bloco conhecido como bloco de
comandos. Nele é que escreveremos os comandos que representarão a entrada, o
processamento e a saída de dados. Este bloco e, consequentemente, o algoritmo é
encerrado pelo termo fimalgoritmo.

Essas palavras chaves, e todas as outras que fazem 
parte da sintaxe da linguagem, são chamadas de 
palavras reservadas e não podem ser utilizadas 
para nenhuma outra finalidade que não aquela 
prevista nas regras de sintaxe da linguagem. 

Agora que já conhecemos a estrutura básica da nossa pseudolinguagem,


vamos detalhar cada um dos blocos principais.

2.2. O Bloco de Variáveis

Você deve estar lembrado do nosso computador hipotético apresentado no


capítulo 01. Todos os dados que eram utilizados pelos programas que nosso
computador executava, ficavam armazenados na memória principal. O mesmo
ocorria com os dados resultantes do processamento.
Já discutimos que a memória principal é dividida em pequenas porções e
cada uma delas possui um endereço físico. Este endereço é utilizado para a
localização os dados.
P á g i n a  | 31 
 

Quando escrevemos um algoritmo, devemos informar em que lugar da


memória (em qual endereço) os dados utilizados e produzidos por ele deverão ser
armazenados. Esta é a finalidade do bloco de variáveis, reservar alguns endereços
de memória para guardar os dados necessários à execução de um algoritmo.
Você certamente deve estar lembrado de que os endereços de memória são
representados por números binários. Imagine como seria difícil escrever em base
binária a localização de cada dado utilizado ou produzido por um algoritmo. Devido a
essa dificuldade, surgiu o conceito de variável como a representação de cada um
desses espaços de memória utilizados pelo algoritmo durante sua execução.

Uma variável é um local na memória principal, isto é, um endereço 
que armazena um conteúdo. 
(LOPES; GARCIA, 2002) 

Podemos, portanto, afirma que “a cada variável corresponde uma posição de


memória, cujo conteúdo pode variar ao longo do tempo durante a execução de um
algoritmo” (FARRER et al, 1999).

Mesmo a variável podendo assumir diferentes 
valores, ela só pode armazenar um valor a cada 
instante.

Toda variável possui três atributos: um nome (ou identificador), um tipo de


dado associado a ela e o dado por ela guardado.
P á g i n a  | 32 
 

 
Figura 4: Atributos de uma Variável

O identificador da variável é uma espécie de apelido do seu endereço de


memória, tornando mais simples sua representação. O dado corresponde ao próprio
valor que é guardado na variável. Já o tipo de dado é utilizado para determinar o que
pode ser guardado numa variável e o que pode ser feito com ela durante a execução
do algoritmo.
Neste ponto, cabe uma observação: todo o trabalho realizado por um
computador é baseado na manipulação dos dados contidas em sua memória.
Já sabemos que a manipulação de dados corresponde ao ato do
processamento, propriamente dito. E você lembra o que siginifica o termo
processamento de dados?

O  processamento  de  dados  consiste  na  execução  de  várias 


operações  sobre  os  dados,  dentre  as  quais  destacam‐se: 
comparação, cálculo, cópia, alteração, ordenação, ... 

O tipo de dado define, entre outras coisas, os tipos de operações que podem
ser feitas com ele. Por exemplo, para dados do tipo numérico é possível realizar
operações aritméticas. Além disso, cada tipo de dado é representado de uma
maneira diferente na memória, ocupando um espaço maior ou menor. Portanto, ao
determinar o tipo de dado que será armazenado em uma variável, será definido
quanto de memória deve ser reservado para guardar o dado e que operações
poderão ser realizadas com este dado.
P á g i n a  | 33 
 

A tarefa de informar ao algoritmo quais são as variáveis a serem utilizadas


durante sua execução é chamada de declaração de variáveis e obedece à
seguinte sintaxe:

<identificador> : <tipo da variável>

onde <identificador> é o nome da variável e <tipo da variável>


define o tipo de dado que a variável pode armazenar.
Os identificadores das variáveis são usados para referenciá-las dentro do
algoritmo, devendo, portanto, ser claros e precisos, indicando explicitamente o
significado dos dados nelas armazenados. Existem algumas normas para a
nomeação de variáveis, conforme mostra o Quadro 5.

Regras para a Formação de Identificadores

1. Nunca utilizar palavras reservadas.


2. O primeiro caractere do nome de uma variável deve,
obrigatoriamente, ser uma letra.
3. Os demais caracteres podem ser letras, números ou sublinhado.
4. Nunca utilizar caracteres especiais (@, #, !, *, etc), espaço em
braço ou acentos em nomes de variáveis.
5. Na sintaxe da nossa pseudolinguagem, não há diferença entre
letras maiúsculas e minúsculas (Num é igual a NUM).

Você deve estar se perguntando: E como saber se uma palavra é


reservada? Bem, é preciso conhecer a sintaxe da linguagem com a qual se está
trabalhando para saber se uma palavra é reservada para aquela linguagem. Quanto
à nossa linguagem, a tabela a seguir exemplifica um conjunto de palavras que você
não deve utilizar para nomear variáveis.
P á g i n a  | 34 
 

PALAVRAS RESERVADAS
abs declare leia passo
algoritmo e literal pausa
arquivo eco log pi
asc enquanto logico pos
caracter entao logn procedimento
caso escolha maiusc quad
compr escreva mensagem raizq
copia exp minusc rand
cos faca nao repita
cotan falso numerico se
cronometro função ou sen
debug int para senao

Exemplo 
 
São identificadores válidos: 
 
NUM, NOTA1, ALTURA_MEDIA, AlturaMedia, maiorNumero 
 
São inválidos os identificadores: 
 
1Nota (não inicia com letra), Nota 1 (contém espaço), FIM (palavra reservada), 
Not@ (contém um caractere especial), Altura.Media (contém caractere especial) 

Agora já sabemos como nomear uma variável. Mas e quais são os tipos de
dados que uma variável pode armazenar? É isso que vamos aprender agora.
P á g i n a  | 35 
 

2.2.1. Tipos de Dados

Existem basicamente quatro tipos de dados, conforme detalha a tabela


abaixo.

Tabela 2: Tipos de Dados 
Tipo Descrição Exemplos

Não possuem parte fracionária e podem ser


INTEIRO 100, 12, -56, -48
positivos ou negativos.

Possuem parte fracionária e podem ser


REAL positivos ou negativos. O ponto é usado como 12.5, 100, -0.456
separador da parte decimal.

Podem conter sequências de letras, dígitos e “Introdução à Programação”,


CARACTERE
símbolos. Representa texto entre aspas duplas. “A”, “1234”, “HPU 1597”

VERDADEIRO
LÓGICO Representa valores lógicos.
FALSO

De posse do conhecimento dos tipos de dados disponíveis para uso, já


podemos declarar variáveis para serem usadas em nossos algoritmos. Analise o
seguinte conjunto de exemplos.
P á g i n a  | 36 
 

Exemplo 
 
Declaração de Variáveis 
 
Num: Inteiro 
Aqui estamos declarando uma variável chamada Num que poderá armazenar um 
dado do tipo inteiro. Ou seja, estamos reservando um espaço na memória, 
apelidado de Num, suficiente para guardar um número inteiro. 
NOTA: Real 
Neste caso declarando uma variável chamada NOTA que poderá armazenar um 
dado do tipo real. Ou seja, estamos reservando um espaço na memória, rotulado 
pela palavra NOTA, de tamanho suficiente para guardar um número real. 
NOME, EstCivil: Caractere 
Aqui declaramos duas variáveis do tipo Caractere. Ou seja, alocamos dois espaços 
na memória, identificados por NOME e EstCivil, que poderão armazenar uma 
sequência de caracteres cada uma. 
 
Observação:  a  escolha  do  tipo  de  dado  para  representar  uma  informação  deve 
levar  em  consideração  a  adequação  do  tipo  com  a  própria  informação.  Por 
exemplo, não se deve armazenar o  nome de uma pessoa  numa variável do tipo 
real, pois o tipo de dado é incompatível com o valor que se desejar representar. 
De forma semelhante, não será escolhido o tipo inteiro para representar o valor 
de um salário, visto que este valor pode ser fracionário. 

Em resumo, podemos dizer que:

“Um  dos  objetivos  de  se  declarar  uma  variável  no  início  do 
algoritmo  é  para  que  seja  alocada  uma  área  na  memória  para  a 
variável. Outro objetivo é que, após a declaração, o algoritmo sabe 
os tipos de operações que cada variável pode realizar.” 
(LOPES E GARCIA, 2002). 
P á g i n a  | 37 
 

Auto Avaliação 2.1 
 
1. Escreva os comandos necessários para declarar: 

a) uma variável para armazenar o nome de um país. 
b) duas variáveis para armazenar as medidas dos lados de um retângulo. 
c) uma variável que seja capaz de armazenar o número de municípios de um Estado.

 
2 Explique o significado de cada um dos seguintes comandos

Agora que você já conhece o bloco de variáveis e sabe como proceder para
declarar as variáveis necessárias à execução de um algoritmo, podemos iniciar o
estudo do bloco de comandos para, a partir daí, escrever os primeiros algoritmos
utilizando nossa pseudolinguagem.

2.3. O Bloco de Comandos

Já sabemos que neste bloco serão escritos todos os comandos necessários


para entrada, processamento e saída de dados. Mas o que é um comando? Que
comandos podem ser utilizados para a criação de algoritmos computacionais?

Um  comando  pode  ser  definido  como  a  descrição  de  uma  ação  a 
ser executada num dado momento. 
(FARRER et al, 1999). 

No caso dos algoritmos computacionais, um comando é toda e qualquer


instrução que deverá ser executada pela CPU, a fim de que dados de entrada sejam
processados, gerando, com isso, dados de saída.
P á g i n a  | 38 
 

A partir desta unidade, aprenderemos como escrever esses comandos e


como utilizar as estruturas disponíveis para o desenvolvimento de algoritmos.
Vamos iniciar conhecendo o comando de atribuição. Em seguida, aprenderemos
como escrever e utilizar comandos para entrada e saída de dados. Na próxima
seção, conheceremos as estruturas de controle de execução de um algoritmo.

2.3.1. Comando de Atribuição

Este  comando  permite  que  se  forneça  um  valor  a  uma  certa 
variável, onde a natureza deste valor tem de ser compatível com o 
tipo da variável na qual está sendo armazenado. 
(FARRER et al, 1999). 

Este comando é a principal forma de se armazenar um dado em uma


variável. Sua sintaxe é a seguinte:

identificador <- expressão

onde:

identificador é o nome da variável à qual está sendo atribuído o valor;


<- é o símbolo de atribuição;
expressão pode ser qualquer valor constante ou uma expressão
aritmética, uma expressão lógica ou uma expressão
literal cujo resultado é atribuído à variável.
P á g i n a  | 39 
 

Exemplo 
 
Comando de Atribuição 
 
X <- 2 
 
Como se lê? 
A variável X recebe o valor 2 ou simplesmente x recebe 2 
 
O que acontece “dentro” do computador? 
Na memória principal, onde estava reservado um espaço para a variável X, essa 
variável armazenará o valor 2. 
 
Memória Principal 
      X 
2

O conceito de expressão em termos computacionais está diretamente


relacionado ao conceito de expressão matemática, onde um conjunto de variáveis e
constantes numéricas relacionam-se por meio de operadores compondo uma
fórmula que, uma vez avaliada, resulta num valor (LOPES; GARCIA, 2002).

2.3.1.1. Expressões Aritméticas

Uma expressão aritmética é formada por por operadores aritméticos e cujos


operandos são valores constantes ou variáveis do tipo inteiro ou do tipo real.
A tabela a seguir lista os operadores aritméticos disponíveis para a nossa
pseudolinguagem. Para cada operador, associa-se uma operação aritmética.

Tabela 3: Operadores Aritméticos 

Operador Operação
P á g i n a  | 40 
 

+ Adição
- Subtração
* Multiplicação
/ Divisão
\ Divisão Inteira
% Resto (ou mod)
^ Exponenciação

As operações de adição, subtração, multiplicação e divisão são exatamente


as mesmas que você já conhece. A novidade aqui pode ser a divisão inteira e a
operação resto.
A operação divisão inteira (ou simplesmente div) dá como resultado a parte
inteiro do quociente da divisão de um valor por outro. Por exemplo, se realizarmos a
operação 11 \ 3 (lê-se 11 div 3), teremos como resultado 3, que é a parte inteira do
resultado da divisão de 11 por 3. De forma semelhante, 15 \ 2 resulta em 7, pois é a
parte inteira da divisão de 15 por 2, ou seja 15 dividido por 2 resulta em 7 e sobra 1.
A operação resto ou mod fornece como resultado o resto da divisão de um
valor por outro. Por exemplo, para a operação 11 % 3 (lê-se 11 mod 3) o resultado é
2, pois 11 dividido por 3 dá resto 2. De modo semelhante, 15 % 2 resulta em 1.
A operação exponenciação calcula a potência de um valor. Por exemplo,
2 ^ 3 resulta em 8, visto que a expressão representa 2 elevado a 3. De forma
análoga, 5 ^ 2 resulta em 25, assim como 3 ^ 4 resulta em 81.
Na construção de algoritmos, todas as expressões aritméticas devem ser
linearizadas, ou seja, dispostos em linha, devendo também ser feita a substituição
dos operadores da aritmética tradicional para os da nossa pseudolinguagem.
P á g i n a  | 41 
 

Exemplo 
 
Linearização de Expressões Aritméticas 
 
Formato Tradicional 

 
 
Formato Computacional (Linearizado) 

Pelo exemplo, você deve ter percebido que não são utilizados colchetes e
chaves para estabelecer prioridades de execução das operações. No formato
computacional, devemos utilizar para isto tantos pares de parênteses quantos forem
necessários.
Os parênteses indicam quais partes da expressão deverão ser executadas
primeiro. A execução se dá sempre da esquerda para a direita, mas além dos
parênteses, existe uma ordem de prioridade dos operadores, ilustrada na tabela a
seguir.

Tabela 4: Precedência de Operadores Aritméticos 

Prioridade Operadores
1ª ^ \ %

2ª * /

3ª + -

Além das operações básicas, podemos utilizar nas expressões aritméticas


algumas funções comuns na matemática.
P á g i n a  | 42 
 

Tabela 5: Funções Matemáticas 

Função Descrição
Abs(valor) Calcula o módulo (valor absoluto) do valor entre parênteses.
Cos(valor) Calcula o cosseno do valor entre parênteses
Sen(valor) Calcula o seno do valor entre parênteses
Tan(valor) Calcula a tangente do valor entre parênteses
Exp(b, e) Calcula o valor de b elevado a e
Log(valor) Calcula o logaritmo decimal do valor entre parênteses
Logn(valor) Calcula o logaritmo natural do valor entre parênteses
Pi Valor de Pi
Raizq(valor) Calcula a raiz quadrada do valor entre parênteses

A ordem de prioridade de uma função em uma expressão aritmética é


máxima. Ou seja, executa-se uma função antes de qualquer outro operador.

Exemplo 
 
Expressões Aritméticas 
 

B ^ 2 – 4 * A * C 

Neste caso, é executada a operação de exponenciação por primeiro. Em 
P á g i n a  | 43 
 

2.3.1.2. Expressões Relacionais

As expressões relcionais são aquelas em que aparecem operadores


relacionais e cujo resultado de avaliação é sempre um valor lógico (verdadeiro ou
falso). A tabela a seguir apresenta os operadores relacionais utilizados por nossa
linguagem algorítmica.

Tabela 6: Operadores Relacionais 

Operador Significado
> Maior que
< Menor que
>= Maior ou igual a
<= Menor ou igual a
= Igual a
<> Diferente de

Exemplo 
 
Expressões Relacionais 
 

A   B 

Adf d B

Dos exemplos apresentados, podemos destacar que em uma expressão


relacional, os operandos devem obrigatoriamente ser do mesmo tipo, ou expressões
que resultem em dados do mesmo tipo. Assim, para o conjunto de exemplos,
P á g i n a  | 44 
 

podemos afirmar que A e B são do mesmo tipo, assim como X e o resultado da


expressão 3 – Y.
Note que é possível aparecer variáveis em expressões relacionais. Deste
modo, o resultado da expressão será determinado no momento em que o algoritmo
estiver sendo executado, desde que já tenham sido atribuídos valores para as
variáveis envolvidas na expressão. Assim, para o primeiro exemplo se as viaráveis A
e B contêm, respectivamente, os valores 4 e 5, o resultado da expressão é o valor
lógico falso.

2.3.1.3. Expressões Lógicas

Um expressão lógica é aquela em que aparecem operadores lógicos e cujos


operandos são expressões relacionais, constantes lógicas e/ou variáveis do tipo
lógico. O resultado da avaliação de uma expressão lógico é sempre um dos valores
lógicos (verdadeiro ou falso).
Já conhecemos, da lógica proposicional, os conectivos lógicos utilizados na
formação de novas proposições a partir de outras já conhecidas. Sabemos também
que cada conectivo é tratado como um operador lógico. Na construção de
algoritmos, utilizaremos os seguintes operadores lógicos:

Tabela 7: Operadores Lógicos 

Operador Descrição

E Resulta verdadeiro se ambos os operandos forem verdadeiros.

Ou Resulta verdadeiro se pelo menos um operandos for verdadeiro.

Nao Inverte o valor lógico do operando,

A seguir é mostrada a tabela verdade com os resultados das aplicações


dos operadores lógicos.
P á g i n a  | 45 
 

Tabela 8: Tabela Verdade para Operadores Lógicos 

A B A E B A OU B Não A Não B
VERDADEIRO VERDADEIRO VERDADEIRO VERDADEIRO FALSO FALSO
VERDADEIRO FALSO FALSO VERDADEIRO FALSO VERDADEIRO
FALSO VERDADEIRO FALSO VERDADEIRO VERDADEIRO FALSO
FALSO FALSO FALSO FALSO VERDADEIRO VERDADEIRO

Os operadores lógicos normalmente são utilizados para unir expressões


relacionais, de modo a estabelcer conjuntos de condições que devem ser satisfeitas
para que um conjunto de comandos seja executado. Por exemplo, considere a
situação em que se deseja atribuir um aumento de 20% sobre o salário de um
funcionário que recebe entre mil e dois mil reais. Neste caso, em vez de cairmos no
erro de escrever a condição como 1000 < salário < 2000, devemos utilizar o
operador lógico E, escrevendo: salario > 1000 E salario < 2000.
Assim como os operadores aritméticos, os operadores lógico também
obedecem a uma ordem de prioridade.

Tabela 9: Precedência dos Operadores Lógicos 

Prioridade Operadores
1ª NÃO

2ª E

3ª OU
P á g i n a  | 46 
 

Exemplo 
 
Precedência de Operadores Lógicos 
 

5   8  OU  5   6  E  1   5  

Neste caso, o resultado seria falso. Pois, é executada a operação E e, em seguida, 

E quando uma expressão apresenta operadores aritméticos, relacionais e


lógicos simultaneamente, em que ordem de prioridade as operações são realizadas?
Neste caso, devem ser obedecida a ordem de precedência entre as categorias de
operadores, conforme mostra a tabela abaixo.

Tabela 10: Precedência de Operadores 

Prioridade Operadores
1ª Operadores Aritméticos
2ª Operadores Relacionais
3ª Operadores Lógicos
P á g i n a  | 47 
 

Exemplo 
 
Precedência de Operadores 
 

NÃO Num   2 E A   B  OU  B   C   0  

Neste  caso,  serão  realizadas  inicialmente  as  operações  entre  parênteses, 

Auto Avaliação 2.2 
 
1. Escreva o resultado das seguintes expressões: 

a) ((9 – Raizq(25)) * 4^2)


b) (13%2 + 1)
c) 20\3 – (Exp(2,3)/4) 

 
2. Escreva o resultado das seguintes comparações: 

a) 3 = 1 + 2
b) NÃO(8 <= 3 OU 4 = 0) E 10 – 2 > 5
c) X–1 > 0 OU (10*X < 80 E NÃO(X <> 1)), onde X = 1 

Agora já sabemos como proceder quando houver necessidade de utilizar


expressões aritméticas, relacionais e lógicas em nossos algoritmos. Vamos,
portanto, concluir nossa análise do operador de atribuição, a partir de um exemplo.
P á g i n a  | 48 
 

Exemplo 
 
Comando de Atribuição 
 
X <- A + B
 
Como se lê? 
A variável X recebe o resultado da expressão A + B, ou seja, o valor correspondente 
à soma do conteúdo da variável A com o conteúdo da variável B. 
 
O que acontece “dentro” do computador? 
Uma  cópia  do  conteúdo  das  variáveis  A  e  B  é  “enviada”  para  os  registradores. 
Então,  a  Unidade  Lógica  e  Aritmética  realiza  a  soma,  guardando  o  resultado  no 
registrador. Em seguida, este resultado é armazenado na memória (na variável X). 
Isto é representado pelo comando de atribuição. 

Exemplo 
 
Comando de Atribuição 
 
X <- X + 1
 
Como se lê? 
A variável X recebe o resultado da expressão X + 1, ou X recebe X + 1. 
 
O que acontece “dentro” do computador? 
Uma  cópia  do  conteúdo  da  variável  X  é  “enviada”  para  o  registrador.  Então,  a 
Unidade  Lógica  e  Aritmética  realiza  a  soma  desse  valor  com  1,  guardando  o 
resultado  no  registrador.  Em  seguida,  este  resultado  é  armazenado  na  própria 
variável X (o antigo valor é substituído). Neste caso, dizemos que a variável X foi 
incrementada de uma unidade. 
 
Observação:  caso  a  operação  fosse  de  subtração,  diríamos  que  a  variável  X  foi 
decrementada em uma unidade. 
P á g i n a  | 49 
 

Auto Avaliação 2.3 
 
Determine os valores finais de A, B e C após a execução do trecho do algoritmo abaixo. 
 
A <- 0
B <- 1
C <- A + B
A <- A + 1
B <- A + B + C
 

2.3.2. Comandos de Entrada e Saída de Dados

No capítulo 01, foram revisados alguns conceitos referentes à arquitetura e


funcionamento de um computador. Já sabemos que os dispositivos de entrada e
saída são utilizados para a comunicação entre o usuário e o computador. Por
exemplo, através do teclado um usuário consegue inserir dados de entrada para um
programa que, por sua vez, utiliza o monitor para mostrar resultados e outras
mensagens ao usuário.
Farrer et al (1999) faz a seguinte indagação: “Após o início da execução de
um algoritmo, como se determina o momento da entrada dos dados para o programa
e da saída dos resultados para o usuário?”
Já sabemos que a tarefa de determinar as ações que serão executadas pelo
algoritmo é tarefa do programador. Portanto, é ele quem define, através de
comandos de entrada e saída, quando serão realizadas as tarefas de leitura de
dados e de listagem dos resultados. Esses comandos são apresentados a seguir.
P á g i n a  | 50 
 

2.3.2.1. Comando de Saída

A finalidade deste comando é mostrar, a partir do monitor de vídeo, um


resultado (armazenado em uma variável) ou uma instrução ao usuário. O valor de
cada variável é buscado na memória e inserido no dispositivo de saída.
A sintaxe deste comando é a seguinte:

Escreva(<expressão ou identificador>)

onde

Escreva é a palavra chave do comando;


expressão pode ser qualquer valor constante ou uma expressão
aritmética, uma expressão lógica ou uma expressão
literal cujo resultado será mostrado na tela.
identificado é o nome da variável, cujo conteúdo será mostrado na
tela;

Os parâmetros deste comando devem vir entre parênteses, podendo ser


uilizados mais de um parâmetros, desde que separados por vírgulas.
P á g i n a  | 51 
 

Exemplo 
 
Comando de Saída 
 
A <- 10
B <- 2
Escreva(“O Valor de A é”, A)
Escreva(“A Soma de A e B é”, A + B)
 
Os  dois  primeiros  comandos  nós  já  discutimos  e  você  já  sabe  que  a  variável  A 
armazenará o valor 10 e a variável B guardará o valor 2. 
 
Na  terceira  linha,  temos  um  comando  de  saída  que  possui  dois  parâmetros:  o 
primeiro é um valor constante do tipo CARACTERE (entre aspas) e o segundo é o 
identificador de uma variável. Neste caso, será mostrada na tela a constante e, em 
seguida, o valor armazenado na variável A. Ou seja, O valor de A é 10. 
 
Na quarta linha, temos outro comando de saída com dois parâmetros: o primeiro 
é  uma  constante  CARACTERE  e  o  segundo  uma  expressão  aritmética  envolvendo 
duas variáveis. Neste caso, será exibida na tela a frase e, em seguida, o resultado 
da expressão. Ou seja, A Soma de A e B é 12. 

2.3.2.2. Comando de Entrada

Este comando permite que o usuário digite dados de entrada para um


algoritmo. O dado digitado é armazenado na memória principal, na posição indicada
no comando.
A sintaxe deste comando é a seguinte:

Leia(<identificador>)

onde:

Leia é a palavra chave do comando;


P á g i n a  | 52 
 

identificador é o nome da variável, que representa o endereço de


memória onde o dado lido será guardado.

Este comando deve ter apenas um parâmetro que, obrigatoriamente,


aparece entre parênteses.

Exemplo 
 
Comando de Entrada 
 
Leia (X)
 
Como se lê? 
Leia um valor para a variável X ou, simplesmente, leia X. 
 
O acontece “dentro” do computador? 
O  computador  fica  “esperando”  o  usuário  digitar  um  dado.  Após  a  digitação,  o 
dado é armazenado no endereço de memória representado por X. 
 
Observação: o dado digitado deve ser do mesmo tipo da variável que o guardará, 
caso contrário ocorrerá um erro durante a execução do algoritmo. 

Exemplo 
 
Os comandos necessários para ler o número de páginas de um livro são: 
 
Var
numPag: Inteiro

Leia(numPag)
 
O comando Leia é utilizado para capturar do teclado o valor que corresponde ao 
número de páginas do livro e armazena esse valor na variável numPag. A variável 
deverá obrigatoriamente ter sido declarada e seu tipo é Inteiro porque é o que se 
adéqua ao problema. 
P á g i n a  | 53 
 

Auto Avaliação 2.4 
 
Escreva os comandos necessários para ler: 
 
1. A cor de um objeto. 
2. O número de filhos de um casal. 
3. O salário de uma pessoa. 
 
Explique o significado dos seguintes comandos: 
 
1. Leia (Nome)
2. Var
Y: Real

Leia(Y)
Y <- Y * 10
Escreva(Y)

Tendo conhecido os três comandos básicos para o desenvolvimento de


algoritmos, vamos aprender, a partir do próximo capítulo, as regras para realizar o
controle da execução de um algoritmo e assim poder escrever algoritmos utilizando
nossa pseudolinguagem.
Capítulo 03 P á g i n a  | 54 
 
Pseudocódigo: Estruturas de Controle – Visão Geral

No capitulo anterior aprendemos um conjunto de conceitos referentes à


utilização de uma pseudolinguagem para representar a solução de um problema
através de um algoritmo. Já sabemos o que são variáveis e porque declará-las e já
conhecemos os comandos básicos para entrada, atribuição e saída de dados.
De posse deste conhecimento, precisamos conhecer algumas estruturas
necessárias à elaboração de algoritmos. Tais estruturas indicarão como organizar os
comandos de entrada, atribuição e saída e como a execução desses comandos será
controlada, tendo em vista a produção das saídas desejadas. Essas estruturas são
conhecidas como Estruturas de Controle Dinâmico da Execução de um
Algoritmo, ou simplesmente Estruturas de Controle, e serão apresentadas na
próxima seção.

3.1. Estruturas de Controle Dinâmico da Execução de um Algoritmo

São três as estrutras básicas de controle sobre as quais os algoritmos são


contruídos:
• Estrutura Sequencial
• Estruturas de Decisão ou Seleção
• Estruturas de Repetição ou Iteração

3.1.1. Estrutura Sequencial

Esta estrutura especifica uma ordem linear de execução, ou seja, os


comandos do algoritmo estão dispostos numa certa ordem e esta deve ser
respeitada durante a execução. A sequenciação diz, portanto, que os comandos de
um algoritmo serão executados um de cada vez, na ordem em que aparecem.
P á g i n a  | 55 
 

Assim, para um conjunto de comandos, podemos representar a estrutura


sequencial da seguinte maneira:

 
Figura 5: Estrutura Sequencial

Na seção 3.2. aprenderemos a utilizar esta estrutura para elaborar


algoritmos simples em pseudocódigo.

3.1.2. Estruturas de Seleção

Também conhecidas como estruturas condicionais ou de decisão,


estabelecem que a execução de um determinado bloco de comandos depende do
resultado de um teste condicional.
Em outras palavras, as estruturas de seleção são usadas quando existem
dois ou mais caminhos a serem seguidos durante a execução do algoritmo e apenas
P á g i n a  | 56 
 

um caminho deve ser escolhido. A escolha se dá em função do resultado do teste


condicional.
Podemos representar a estrutura de seleção da seguinte forma:

 
Figura 6: Estrutura de Seleção

3.1.3. Estruturas de Repetição

Este tipo de estrutura determina que um ou mais comandos sejam


executados um número determinado de vezes ou tantas vezes quantas uma
condição lógica permitir. Para entender o significado deste tipo de construção,
considere os seguintes exemplos:
P á g i n a  | 57 
 

a) Vou corrigir 50 provas;


b) Enquanto tiver dinheiro, vou viajar mundo afora.
c) Vou prestar concursos públicos até ser aprovado.

No exemplo (a), haverá uma repetição do ato de corrigir uma prova por 50
vezes. Já no exemplo (b), a condição que me permitirá viajar mundo afora é ter
dinheiro. No exemplo (c), a ação de prestar concurso público será repetida ate que
seja satisfeita a condição de passar em um.

A utilização combinada dessas estruturas permitirá expressar, usando


qualquer ferramenta, a solução de muitos problemas. Por isso, é importante uma
boa compreensão do significado de cada uma. Na seção 3.2. detalharemos a
estrutura sequencial. As demais estruturas serão abordadas na Unidade 02.

3.2. Estrutura Sequencial

Nesta seção, aprenderemos a escrever soluções algorítmicas para


diferentes problemas, utilizando a estrutura sequencial, o método de
desenvolvimento apresentado no capítulo 01 e a pseudolinguagem definida no
capítulo 02.

A  estrutura  sequencial  é aplicada  quando  a  solução  do  problema 


pode ser decomposta em passos individuais. 
P á g i n a  | 58 
 

Exemplo 
 
Elaborar  um  algoritmo  que  leia  dois  valores  numéricos,  calcule  e  mostre  sua 
média aritmética. 
 
Entrada: dois valores numéricos. 
(estes  valores  devem  ser  armazenados  na  memória,  sendo 
necessárias duas variáveis para isso: NUM1 e NUM2). 
Saída: a média aritmética de NUM1 e NUM2. 
Processamento: Os valores armazenados em NUM1 e NUM2 são copiados 
para a CPU, onde é feita a soma e, em seguida, o resultado 
da soma é dividido por 2. Este resultado (a média) deve ser 
guardado na memória para, em seguida, ser mostrado ao 
usuário. Isto indica que deveremos ter uma variável 
numérica (MEDIA). 
 
Uma  vez  que  o  problema  tenha  sido  entendido  e  tenham  sido  identificados 
entrada,  saída  e  processamento,  o  próximo  passo  consiste  em  escrever  o 
algoritmo segundo a sintaxe da pseudolinguagem adotada. 
 
Algoritmo “CalculaMedia”
VAR
NUM1, NUM2, MEDIA: Real
inicio
Escreva(“Digite um valor”)
Leia(NUM1)
Escreva(“Digite outro valor”)
Leia(NUM2)
MEDIA <- (NUM1 + NUM2)/2
Escreva(“A media dos valores é: ”, MEDIA)
fimAlgoritmo

Você  deve  ter  notado  que  escrever  um  algoritmo  consiste  em,  inicialmente, 
determinar  os  dados  a  serem  manipulados  (determinar  seu  tipo)  e  declarar  as 
variáveis  que  irão  armazenar  esses  dados.  Em  seguida,  devemos  proceder  à 
entrada  dos  dados,  utilizando  o  comando  Leia.  Neste  caso,  foram  dadas 
instruções  ao  usuário  antes  de  cada  comando  Leia.  Tais  instruções  têm  a 
finalidade  de  instruir  o  usuário  sobre  o  que  ele  deve  digitar.  Na  sequência, 
escrevemos  o  processamento,  que,  neste  caso,  consistiu  no  cálculo  da  média 
aritmética  e  na  atribuição  do  resultado  à  variável  MEDIA.  Por  fim,  o  resultado 
deve ser mostrado, através do comando Escreva.
P á g i n a  | 59 
 

A fim de verificar a correção do algoritmo, devemos testá-lo, simulando sua


execução pelo computador.

1 – Inicialmente, são alocados espaços na memória para guardar os dados.


Esses espaços são representados pelas variáveis. Assim, representamos a memória
como:

NUM1 NUM2 MEDIA

2 – Em seguida, simulamos a execução de cada comando pela CPU,


obedecendo a ordem em que aparecem. A execução é inicia-se pelo primeiro
comando situado após a palavra início. Para este algoritmo, o comando inicial
corresponde à exibição de uma instrução para o usuário (Digite um valor).
3 – Na sequência, o algoritmo aguarda que seja digitado um valor. Após
esse valor ter sido digitado, ele é armazenado na memória e seu endereço é
representado pela variável NUM1.
Supondo que tenha sido digitado o valor 20, temos:

NUM1 NUM2 MEDIA


20

4 – Em seguida, e exibida mais uma instrução para o usuário e o algoritmo


novamente aguarda a digitação de um valor que, desta vez, será armazenado na
variável NUM2.
Supondo a digitação do valor 8, temos:

NUM1 NUM2 MEDIA


20 8
P á g i n a  | 60 
 

5 – Em seguida, é realizado o cálculo da média pela CPU e o


armazenamento do resultado na variável MEDIA. Neste caso, temos:

NUM1 NUM2 MEDIA


20 8 14

6 – Por fim, o valor armazenado na variável MEDIA é mostrado a usuário,


acompanhado da constante caractere entre aspas (A media dos valores é: 14).
7 – A execução do algoritmo é finalizada.

O teste aqui apresentado tem finalidade apenas didática, podendo ser feito
de forma mais enxuta com a construção e preenchimento de uma tabela de
variáveis. Este teste é conhecido como Teste de Mesa.
O teste de mesa simula a execução de todos os passos do algoritmo, a fim
de saber se ele chega ao resultado a que se propõe e se a lógica está correta. A
cada comando executado, o valor das variáveis na tabela deve ser atualizado. Se
após a execução de um comando, uma ou mais variáveis nã assumirem os valores
esperados, há um erro de lógica no algoritmo.
Ao construir a tabela para o teste de mesa, devemos reservar uma coluna
para cada variável e uma coluna para saída de dados.

Algoritmo Teste de Mesa


VAR NUM1 NUM2 MEDIA Saída
inicio ? ? ?
Escreva(“Digite um valor”) ? ? ?
Leia(NUM1) 20 ? ?
Escreva(“Digite outro valor”) 20 ? ?
Leia(NUM2) 20 8 ?
MEDIA <- (NUM1 + NUM2)/2 20 8 14
Escreva(MEDIA) 14

Neste caso, constatamos que o algoritmo produz as saídas esperadas.


P á g i n a  | 61 
 

Exemplo 
 
Escrever um algoritmo que receba o salário de um funcionário, calcule e mostre 
o novo salário após reajuste de 20%. 
 
Entrada: o  valor  do  salário  atual,  que  deverá  ser  armazenado  em 
uma variável do tipo Real. 
Saída: o valor do salário reajustado. 
Processamento:   calcular o valor do aumento (20% do salário atual), ou seja 
salário atual * 0.20. Em seguida, somar o valor do aumento 
ao salário atual e guardar o resultado na memória (variável 
do tipo Real) 
 
Uma  vez  que  o  problema  tenha  sido  entendido  e  tenham  sido  identificados 
entrada,  saída  e  processamento,  o  próximo  passo  consiste  em  escrever  o 
algoritmo segundo a sintaxe da pseudolinguagem adotada. 
 
Algoritmo “ReajustaSalario”
VAR
SalAtual, Aumento, NovoSal: Real
inicio
Escreva(“Informe o salário atual”)
Leia(SalAtual)
Aumento <- SalAtual * 0.20
NovoSal <- SalAtual + Aumento
Escreva(NovoSal)
fimAlgoritmo

A seguir é mostrado um teste de mesa para o algoritmo ReajustaSalario,


considerando que o salário atual valha mil reais.

Algoritmo Teste de Mesa


VAR SalAtual Aumento NovoSal Saída
inicio ? ? ?
Escreva(“Informe o salário atual”) ? ? ?
Leia(SalAtual) 1000 ? ?
Aumento <- SalAtual * 0.20 1000 200 ?
NovoSal <- SalAtual + Aumento 1000 200 1200
Escreva(NovoSal) 1000 200 1200 1200
P á g i n a  | 62 
 

Exemplo 
 
Elaborar  um  algoritmo  que  leia  o  valor  do  raio,  calcule  e  mostre  a  área  do 
círculo correspondente. 
 
Entrada: o valor do raio, que deverá ser armazenado em uma variável 
do tipo Real. 
Saída: o valor da área do círculo. 
Processamento:   calcular a área através da fórmula Pi * raio² 
 
Uma  vez  que  o  problema  tenha  sido  entendido  e  tenham  sido  identificados 
entrada,  saída  e  processamento,  o  próximo  passo  consiste  em  escrever  o 
algoritmo segundo a sintaxe da pseudolinguagem adotada. 
 
Algoritmo “AreaCirculo”
VAR
raio, area: Real
inicio
Escreva(“Informe o raio do círculo”)
Leia(raio)
area <- Pi * Exp(raio, 2)
Escreva(area)
fimAlgoritmo

Note que não é necessário declarar o Pi, pois já uma função definida para nossa 
pseudolinguagem. 
 
O cálculo do quadrado do raio foi realizado pela função pré‐definida Exp. 

Como este algoritmo seria executado pelo computador?


Inicialmente, seriam alocados dois espaços na memória suficientes para
armazenar um número real cada um. Em seguida, seria mostrada no monitor uma
instrução para o usuário, solicitando que seja informado o raio do círculo. Na
sequência, o algoritmo esperaria que fosse digitado um valor a partir do teclado.
Quando o valor fosse digitado, sera então armazenado na variável raio. Em
seguida, seria realizada a avaliação da expressão Pi * Exp(raio, 2) e o
P á g i n a  | 63 
 

resultado guardado na variável area. Por fim, o dado armazenado em area seria
exibido na tela do monitor e a execução do algoritmo encerrada.
A tabela abaixo corresponde a um teste de mesa para o algoritmo
AreaCirculo, cujo valor de entrada seja 10.

Algoritmo Teste de Mesa


VAR raio area Saída
inicio ? ?
Escreva(“Informe o raio do círculo”) ? ?
Leia(raio) 10 ?
area <- Pi * Exp(raio, 2) 10 314
Escreva(area) 10 314 314
P á g i n a  | 64 
 

Exemplo 
 
Faça um algoritmo que receba o valor de um depósito e o valor da taxa de juros, 
calcule e mostre o valor do rendimento e o valor total depois do rendimento  . 
 
Entrada: o valor do depósito e o valor da taxa de juros. Ambos devem 
ser armazenados em variáveis do tipo Real. 
Saída: o valor do rendimento e o valor do montante. 
Processamento:   calcular o valor do rendimento pela fórmula: 
  rendimento = deposito * taxa/100
  Calcular o valor do montante pela fórmula: 
  montante = deposito + rendimento
 
Para este problema necessitamos de quatro espaços na memória para armazenar 
os valores do depósito, da taxa de juros, do rendimento e do montante. Todos os 
esses dados são do tipo real. Note que temos duas entradas (deposito e taxa), por 
isso  teremos  dois  comandos  Leia.  Veja  que  também  são  apresentados  dois 
resultados (rendimento e montante), o que corresponde a dois comandos Escreva. 
 
Algoritmo “CalculaRendimento”
VAR
dep,taxa, rend, montante: Real
inicio
Escreva(“Informe o valor do depósito”)
Leia(dep)
Escreva(“Informe o valor da taxa de juros”)
Leia(taxa)
rend <- dep * taxa/100
Escreva(rend)
montante <- dep + rend
Escreva(montante)
fimAlgoritmo

Poderíamos  ter  realizado  todas  as  operações  de  processamento  e  só  realizar  a 
saída de dados ao final. 
P á g i n a  | 65 
 

Exemplo 
 
O custo ao consumidor de um carro novo é a soma do preço de fábrica com o 
percentual de lucro do distribuidor e dos impostos aplicados sobre o preço de 
fábrica .  Fazer  um  algoritmo  que  receba  o  preço  de  fábrica  de  um  veículo,  o 
percentual de lucro do distribuidor e o percentual de impostos, calcule e mostre 
o  valor  correspondente  ao  lucro  do  distribuidor,  o  valor  correspondente  aos 
impostos e o preço final do veículo. 
 
Entrada: o  preço  de  fábrica  do  veículo,  o  percentual  de  lucro  e  o 
percentual de impostos. 
Saída: o  valor  do  lucro,  o  valor  dos  impostos  e  o  preço  final  do 
veículo. 
Processamento:   calcular o valor do lucro do distribuidor pela fórmula: 
  lucro = preço de fábrica * percentual de
lucro/100
  calcular o valor dos impostos pela fórmula: 
  impostos = preço de fábrica * percentual de
impostos/100
calcular o preço final do veículo pela fórmula: 
  preço final = preço de fábrica + lucro +
impostos

 
Algoritmo “PrecoVeiculo”
VAR
precoFb, percI, percL, lucro, imp, precoFinal: Real
inicio
Escreva(“Informe o preço de fábrica”)
Leia(precoFb)
Escreva(“Informe o percentual de lucro”)
Leia(percL)
Escreva(“Informe o percentual de impostos”)
Leia(percI)
lucro <- precoFb * percL/100
imp <- precoFb * percI/100
pecoFinal <- precoFb + lucro + imp
Escreva(lucro)
Escreva(imp)
Escreva(precoFinal)
fimAlgoritmo

Poderíamos substituir os três últimos comandos por um só:


Escreva(lucro, imp, precoFinal)
P á g i n a  | 66 
 

Auto Avaliação 3.1 
 
1. Escrever um algoritmo que leia três valores (A, B eC), calcule e mostre a área de um 
trapézio que tenha A como base menor, B como base maior e C como altura. 
 
2. Faça um algoritmo que receba o número de horas trabalhadas de um funcionário, o 
valor correspondente a cada hora, calcule e mostre o salário desse funcionário. 
 
3. Faça um algoritmo que receba o salário base de um funcionário, calcule e mostre seu 
salário a receber, sabendo‐se que o funcionário tem 5% de gratificação sobre o 
salário base e paga 7% de imposto sobre este. 
 
4. Faça um algoritmo que receba o ano de nascimento de uma pessoa e o ano atual, 
calcule e mostre a idade dessa pessoa. 

Problemas Complementares
1. Pedro comprou um saco de ração com peso em quilos. Ele possui dois gatos, 
para  os  quais  fornece  a  quantidade  de  ração  em  gramas.  A  quantidade 
diária  de  ração  fornecida  para  cada  gato  é  sempre  a  mesma.  Faça  um 
algoritmo  que  receba  o  peso  do  saco  de  ração  e  a  quantidade  de  ração 
fornecida para cada gato, calcule e mostre quanto restará de ração no saco 
após 5 dias. 
 

2. Faça um algoritmo que leia o nome de um piloto, uma distância percorrida 
em  km  e  o  tempo  que  o  piloto  levou  para  percorrê‐la  (em  horas).  O 
programa  deve  calcular  a  velocidade  média  ‐  Velocidade  =  Distância  / 
Tempo ‐ em km/h, e exibir a seguinte frase:  A velocidade média do
<nome do piloto> foi <velocidade media calculada>
km/h. 
 

3. Sabe‐se  que  para  iluminar  de  maneira  correta  os  cômodos  de  uma  casa, 
para  cada  metro  quadrado  deve‐se  usar  18W  de  potência.  Faça  um 
P á g i n a  | 67 
 

3.3. Uma Ferramenta para Desenvolver e Testar Algoritmos: VisuAlg

Existem ferramentas computacionais capazes de executar algoritmos


escritos em pseudocódigo. Utilizaremos a ferramenta VisuAlg 2.0 por utilizar a
mesma sintaxe com a qual temos trabalhado.
A VisuAlg surgiu a partir da necessidade de possibilitar um ambiente de
testes que fosse além do teste de mesa, visto que executar programas apenas no
papel pode se tornar um grande obstáculo no aprendizado das técnicas de
elaboração de algoritmos (SOUZA, 2008).

Para saber mais acesse 
http://www.apoioinformatica.inf.br/visualg/objetivos.htm 

3.3.1. Obtenção e Instalação do VisuAlg

Você pode fazer o download da versão 2.0 do VisuAlg a partir do seguinte


endereço: http://www.apoioinformatica.inf.br/
A instação é simples, basta seguir o passo a passo:

1 – Dar um duplo cique no ícone setupv2;


2 – Na janela que se abrirá escolha a opção executar;
3 – Será aberta uma nova janela, na qual você deve clicar na opção
avançar;
4 – Selecione um local para a instalação do aplicativo. Se preferir, aceite a
sugestão dada pelo programa de instalação. Clique em avançar;
5 – Deixe todas as opções selcionadas e clique em avançar;
6 – Cclique a avançar;
7 – Marque as opções “Criar ícone na área de trabalho” e “Associar arquivos
.alg ao VisuAlg”. Clique em avançar.
8 – Clique em instalar e aguarde.
9 – O VisuAlg está instalado e pronto para ser usado.
P á g i n a  | 68 
 

3.3.2. Conhecendo o VisuAlg

Todas as informações sobre o aplicativo são encontradas site da Apoio


Informática através do link http://www.apoioinformatica.inf.br/visualg/objetivos.htm

3.3.3. Executando um algoritmo com o VisuAlg

Como forma de exemplificar o uso da ferramenta, vamos escrever e


executar o algoritmo CalculaMedia no ambiente do VisuAlg.
Antes da execução o algoritmo, esta é a tela correspondente:

 
Figura 7: Tela do VisuAlg

Podemos perceber na parte superior da janela, o nosso algoritmo. Os


comandos que estão situados entre a palavra algoritmo e o bloco de variáveis
P á g i n a  | 69 
 

(iniciados por //) são chamados de comentários e servem para prestar informações
ao programador, sendo ignorados durante a execução do algoritmo. É importante
adicionar comentários aos nosso códigos para facilitar sua compreensão por outras
pessoas.
Na parte inferior da janela, vemos do lado esquerdo o quadro de variáveis,
que será preenchida durante a execução do algoritmo.
Para executar o algoritmo, basta pressionar a tecla F9, ou clicar no menu
Algoritmo e escolher a opção executar. Imediatamente, será exbida uma janela do
prompt de comando onde o algoritmo será executado. Ao final da execução, temos
todas as informações na janela do VisuAlg, conforme mostra a figura a seguir.

 
Figura 8: Janela do VisuAlg após execução do Algoritmo
P á g i n a  | 70 
 

O VisuAlg apresenta inúmeras opções para executar e corrigir um algoritmo.


Não é nosso objetivo descrever detalhes de como utilizar esses recursos, mas você
deve acessar a página indicada na seção 3.3.2. e obter todo o conhecimento
necessário para fazer bom uso desta ferramenta.
É aconselhável que daqui em diante você escreva e teste seus algoritmos no
VisuAlg. Isto facilitará os testes e seu entendimento sobre o assunto.

Chegamos ao final da primeira unidade. Antes de prosseguir para a unidade


02, resolva os exercícios complementares e verifique suas auto-avaliações.
P á g i n a  | 71 
 

Exercícios Complementares

Extraídos de: (TONET; KOLIVER, 2008) e (ASCENCIO; CAMPOS, 2007)

1. Escreva as expressões abaixo na forma linearizada, utilizando a sintaxe


da nossa pseudolinguagem.

a)

b)

2. Resolva as expressões, determinando se a expressão é verdadeira ou


falsa.
a) 2 > 3
b) (6 < 8) OU (3 > 7)
c) (5 >= 6 OU 6 < 7 OU NÃO(a + 5 – 6 = 8) , onde a = 5.
d) (34 > 9 E 5 + u = 34) OU (5 =1 5/3 E 8 > 12) = ((u = 29) E 8 >12),
onde u = 29

3. Determine o tipo de dado mais apropriado para representar as seguintes


informações.
a) A altura de uma pessoa.
b) A placa de um veículo.
c) O saldo de uma conta bancária.
d) A população de um país.
e) A cor de um objeto.

4. Qual o resultado das expressões aritméticas abaixo, sabendo-se que os


valores de X, Y e Z são, respectivamente, 1, 2 e 5?
a) Z % Y \ 3
b) X + Y + Z / 3
P á g i n a  | 72 
 

5. Defina variável.

6. Assinale os identificadores inválidos.


[ ] repita [ ] etc.

[ ] Nome2 [ ] norte-sul

[ ] 13Salario [ ] Salario Base

[ ] A&E [ ] NomeDoAluno

7. Escreva os comandos necessários para declarar:


a) Uma variável que receba uma frase qualquer.
b) Três variáveis que recebam as três notas de um aluno
c) Uma variável que receba a idade de uma pessoa

8. Assinale os comandos de atribuição considerados inválidos.


Lembre-se de que o valor atribuído a uma variável deve ser do mesmo tipo da
variável.

var
NOME, COR, TESTE, DIA: caracter
SOMA, NUM: inteiro
Salario: real
X: lógico

a) ( ) NOME <- “5” g) ( ) NUM <- "*ABC*"

b) ( ) SOMA <- NUM + 2 * X h) ( ) DIA <- "seGUNDA"

c) ( ) TESTE <- SOMA i) ( ) SOMA + 2 <- NUM

d) ( ) NUM <- SOMA j) ( ) X <- (NOME = COR)

e) ( ) COR <- "PRETO" k) ( ) Salario <- 5.000

f) ( ) X <- X + 1 l) ( ) Salario <- 150


P á g i n a  | 73 
 

m) ( ) Salario <- “insuficiente”

9. Escreva os comandos necessário para ler:


a) As 3 notas de um aluno.
b) O nome de uma pessoa.

10. Escreva os comandos necessários para exibir:


a) O conteúdo da variável A.
b) O resultado da expressão X – 2.
c) A frase Eu gosto de estudar algoritmos.

11. Quais os valores armazenados em SOMA, NOME e TUDO, supondo que NUM,
X, COR, DIA, TESTE e TESTE2 valem, respectivamente, 5, 2, “AZUL”,
“TERÇA”, FALSO e VERDADEIRO?
a) NOME <- DIA
b) SOMA <- (NUM^2/X) + (X + 1)
c) TUDO <- NÃO((TESTE OU TESTE2) E (X <> NUM))

12. Explique em que consiste a estrutura sequencial.

13. Analise o seguinte algoritmo e descreva o que ele faz.

Algoritmo “PrimeiroAlgoritmo”

var

NOTA1, NOTA2, NOTA3, NOTA4, MEDIA: real

NOME: caracter

inicio

leia (NOME)

leia (NOTA1)

leia (NOTA2)
P á g i n a  | 74 
 

leia (NOTA3)

leia (NOTA4)

MEDIA <- (NOTA1 + NOTA2 + NOTA3 + NOTA4) / 4;

escreva (NOME, “ obteve “, MEDIA)

fimalgoritmo

14. No seguinte algoritmo existem erros? Em caso afirmativo, onde?


algoritmo “Teste”

var

Maria: caracter

idade: numerico

letra: literal

Maria: real

1alt: caracter

peso : tonelada

Fernando literal

inicio

leia (nome)

leia idade

escreva (idade)

dade = 678
P á g i n a  | 75 
 

leia "letra"

leia ABC

escreva (letra)

letra <- A

fimalgoritmo

15. Escreva um algoritmo que receba os valores dos catetos de um triângulo


retângulo, calcule e mostre o valor da hipotenusa.

16. Faça um algoritmo que receba a medida do ângulo formado por uma
escada apoiada no chão e a distância em que a escada está da parede,
calcule e mostre a medida da escada. (Lembre das relações
trigonométricas no triângulo retângulo)

17. Faça um programa que receba um número no formato CDU (Centena


Dezena Unidade) e mostre esse número invertido. Por exemplo, se for
digitado 173, a saída será 371. (DICA: utilize os operadores div e mod para
separar a centena, a dezena e a unidade).

Referências

ASCENCIO, Ana Fernanda Gomes; CAMPOS, Edilene Aparecida Veneruchi de.


Fundamentos da Programação de Computadores. São Paulo: Pearson Prentice
Hall, 2007.

CAPRON, H.L.; JOHNSON, J. A. Introdução à Informática. São Paulo: Pearson


Prentice Hall, 2004.

CERES, Waldemar; IERUSALIMSCHY, Roberto. Introdução à Programação.


(MATERIAL DIDÁTICO), 2007.
P á g i n a  | 76 
 

DEITEL, H. M.; DEITEL, P. J. Java: Como Programar. São Paulo: Pearson Prentice
Hall, 2005.

FARRER, Harry; BECKER, Cristiano Gonçalves; FARIA, Eduardo Chaves; MATOS,


Helton Fábio de; SANTOS, Marcos Augusto dos; MAIA, Miriam Lourenço.
Algoritmos Estruturados. Rio de Janeiro: LTC, 1999.

GUIMARÃES, Ângelo de Moura; LAGES, Newton Alberto de Castilho. Algoritmos e


Estruturas de Dados. Rio de Janeiro: LTC, 1994.

HOLLOWAY, James Paul. Introdução à Programação para Engenharia:


Resolvendo Problemas com Algoritmos. Rio de Janeiro: LTC, 2006.

LOPES, Anita; GARCIA, Guto. Introdução à Programação: 500 Algoritmos


Resolvidos. Rio de Janeiro: Campus Elsevier, 2002.

MARÇULA, Marcelo; BENINI, Pio Armando. Informática: Conceitos e Aplicações.


São Paulo: Érica, 2005.

TONET, Bruno; KOLIVER, Cristian. Introdução aos Algoritmos. NAPRO, Caxias


do Sul.

You might also like