76
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 Unidade 01

Introdução a programação deComputadores

Embed Size (px)

DESCRIPTION

Apostila do Curso de Informática IFMA

Citation preview

Page 1: Introdução a programação deComputadores

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

Unidade 01 

Page 2: Introdução a programação deComputadores

P á g i n a  | 2  

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:

Capítulo 01 Conceitos Básicos em Programação

A palavra computador vem do latim computare, que significa calcular. 

Page 3: Introdução a programação deComputadores

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.

Page 4: Introdução a programação deComputadores

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:

Page 5: Introdução a programação deComputadores

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

Page 6: Introdução a programação deComputadores

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. 

Page 7: Introdução a programação deComputadores

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.

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

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

Page 8: Introdução a programação deComputadores

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.

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:

read 0

storeconst 3 1

add 0 1

store 2

write 2

Page 9: Introdução a programação deComputadores

P á g i n a  | 9  

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.

Vamos agora analisar o seguinte programa:

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”.

read 0

storeconst 3 1

add 0 1

store 0

write 2

É 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. 

read 0

storeconst 3 1

add 0 1

store 0

write 0

Page 10: Introdução a programação deComputadores

P á g i n a  | 10  

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.

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. 

Page 11: Introdução a programação deComputadores

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.

Page 12: Introdução a programação deComputadores

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

://w

ww

.cam

acar

inot

icia

s.co

m.b

r/upl

oad/

77/7

8159

2967

.jpg 

Page 13: Introdução a programação deComputadores

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:

Page 14: Introdução a programação deComputadores

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.” 

Page 15: Introdução a programação deComputadores

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.

Page 16: Introdução a programação deComputadores

P á g i n a  | 16  

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.

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.

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.

Page 17: Introdução a programação deComputadores

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.

Page 18: Introdução a programação deComputadores

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:

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.

1. Ligar o aparelho de DVD na tomada.

2. Colocar o disco no aparelho de DVD.

3. Pressionar play.

4. Assistir ao filme.

1. Ligar o aparelho de DVD na tomada.

2. Conectar o aparelho de DVD na TV.

3. Abrir a bandeja para inserir o disco.

4. Colocar o disco na bandeja.

5. Fechar a bandeja.

6. Pressionar play.

7. Assistir ao filme.

8 Abrir a bandeja

Page 19: Introdução a programação deComputadores

P á g i n a  | 19  

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.

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.

Símbolos para Representar Algoritmos

Cálculo/ Processamento

Entrada de Dados

Saída de Dados

Decisão

Início/ Fim

Fluxo de Dados

Page 20: Introdução a programação deComputadores

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 do Algoritmo

Entrada da Primeira Nota

Entrada da Segunda Nota

Cálculo da Média

Apresentação do Resultado

Início 

Nota1 

Nota2 

 

Média = (Nota1 + Nota2)/2 

 

Média 

Fim 

Page 21: Introdução a programação deComputadores

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 

Page 22: Introdução a programação deComputadores

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

algoritmo passo a passo.

Vamos considerar os seguintes cenários

de testes: o primeiro consistirá na entrada das

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:

Note a presença de uma decisão. Neste caso, existem dois caminhos e apenas um deverá ser seguido. A escolha é determinada pelo teste condicional. 

Início

Nota1 

Nota2 

Aqui se inicia a execução

Nota 1 = 8 

Nota 2 = 9 

Page 23: Introdução a programação deComputadores

P á g i n a  | 23  

Para o segundo cenário, temos:

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

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

É mostrada a Palavra “Aprovado” 

Fim da Execução 

Início

Nota1 

Nota2 

Média = (Nota1 + Nota2)/2 

 

“Aprovado” 

Média >= 7 

 

“Reprovado” 

falsoverdadeiro 

Aqui se inicia a execução

Nota 1 = 4 

Nota 2 = 6 

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

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

Page 24: Introdução a programação deComputadores

P á g i n a  | 24  

Com base nos testes, verificamos que os resultados apresentados pelo

algoritmo são exatamente aqueles esperados. Portanto, o algoritmo corresponde á

solução do problema.

É mostrada a palavra “Reprovado” 

Page 25: Introdução a programação deComputadores

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 

falsoverdadeiro 

Início

NUM1 

NUM2 

 

“Não é possível dividir” 

Fim

NUM2 = 0 

 

Quociente = NUM1 / NUM2 

 

Quociente 

Page 26: Introdução a programação deComputadores

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

Page 27: Introdução a programação deComputadores

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 

Nota1 

Nota2 

 

Média = (Nota1 + Nota2)/2 

 

Média 

Fim 

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

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

Page 28: Introdução a programação deComputadores

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 

Page 29: Introdução a programação deComputadores

P á g i n a  | 29  

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:

Capítulo 02 Pseudocódigo: Conceitos Básicos

algoritmo “ <nome do Algoritmo> ”

var

<Bloco de Variáveis>

inicio

<Bloco de Comandos>

fimalgoritmo

Page 30: Introdução a programação deComputadores

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.

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.

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. 

Page 31: Introdução a programação deComputadores

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.

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).

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

dado associado a ela e o dado por ela guardado.

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

Uma variável é um local na memória principal, isto é, um endereço que armazena um conteúdo. 

(LOPES; GARCIA, 2002) 

Page 32: Introdução a programação deComputadores

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

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, ... 

Page 33: Introdução a programação deComputadores

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:

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.

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.

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).

<identificador> : <tipo da variável>

Page 34: Introdução a programação deComputadores

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

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.

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) 

Page 35: Introdução a programação deComputadores

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

INTEIRO Não possuem parte fracionária e podem ser positivos ou negativos. 100, 12, -56, -48

REAL Possuem parte fracionária e podem ser positivos ou negativos. O ponto é usado como separador da parte decimal.

12.5, 100, -0.456

CARACTERE Podem conter sequências de letras, dígitos e símbolos. Representa texto entre aspas duplas.

“Introdução à Programação”, “A”, “1234”, “HPU 1597”

LÓGICO Representa valores lógicos. VERDADEIRO 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.

Page 36: Introdução a programação deComputadores

P á g i n a  | 36  

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). 

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. 

Page 37: Introdução a programação deComputadores

P á g i n a  | 37  

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?

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.

Um comando pode  ser definido como a descrição de uma ação a ser executada num dado momento. 

(FARRER et al, 1999). 

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

Page 38: Introdução a programação deComputadores

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 é a principal forma de se armazenar um dado em uma

variável. Sua sintaxe é a seguinte:

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.

identificador <- expressã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). 

Page 39: Introdução a programação deComputadores

P á g i n a  | 39  

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

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

Page 40: Introdução a programação deComputadores

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.

Page 41: Introdução a programação deComputadores

P á g i n a  | 41  

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.

Exemplo  

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

  Formato Computacional (Linearizado) 

Page 42: Introdução a programação deComputadores

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 

Page 43: Introdução a programação deComputadores

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

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,

Exemplo  

Expressões Relacionais  

A   B 

A d f d B

Page 44: Introdução a programação deComputadores

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.

Page 45: Introdução a programação deComputadores

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

Page 46: Introdução a programação deComputadores

P á g i n a  | 46  

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

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, 

Page 47: Introdução a programação deComputadores

P á g i n a  | 47  

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.

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 

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, 

Page 48: Introdução a programação deComputadores

P á g i n a  | 48  

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. 

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. 

Page 49: Introdução a programação deComputadores

P á g i n a  | 49  

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.

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  

Page 50: Introdução a programação deComputadores

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:

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.

Escreva(<expressão ou identificador>)

Page 51: Introdução a programação deComputadores

P á g i n a  | 51  

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:

onde:

Leia é a palavra chave do comando;

Leia(<identificador>)

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. 

Page 52: Introdução a programação deComputadores

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  

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. 

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. 

Page 53: Introdução a programação deComputadores

P á g i n a  | 53  

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.

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)

Page 54: Introdução a programação deComputadores

P á g i n a  | 54  

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.

Capítulo 03 Pseudocódigo: Estruturas de Controle – Visão Geral

Page 55: Introdução a programação deComputadores

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

Page 56: Introdução a programação deComputadores

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:

Page 57: Introdução a programação deComputadores

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. 

Page 58: Introdução a programação deComputadores

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.

Page 59: Introdução a programação deComputadores

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 20

NUM2 MEDIA

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 20

NUM2 8

MEDIA

Page 60: Introdução a programação deComputadores

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 20

NUM2 8

MEDIA 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.

Page 61: Introdução a programação deComputadores

P á g i n a  | 61  

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

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

Page 62: Introdução a programação deComputadores

P á g i n a  | 62  

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

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. 

Page 63: Introdução a programação deComputadores

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

Page 64: Introdução a programação deComputadores

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. 

Page 65: Introdução a programação deComputadores

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)

Page 66: Introdução a programação deComputadores

P á g i n a  | 66  

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 

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. 

Page 67: Introdução a programação deComputadores

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).

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.

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

Page 68: Introdução a programação deComputadores

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

Page 69: Introdução a programação deComputadores

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

Page 70: Introdução a programação deComputadores

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.

Page 71: Introdução a programação deComputadores

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

Page 72: Introdução a programação deComputadores

P á g i n a  | 72  

5. Defina variável.

6. Assinale os identificadores inválidos.

[ ] repita

[ ] Nome2

[ ] 13Salario

[ ] A&E

[ ] etc.

[ ] norte-sul

[ ] Salario Base

[ ] 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.

a) ( ) NOME <- “5”

b) ( ) SOMA <- NUM + 2 * X

c) ( ) TESTE <- SOMA

d) ( ) NUM <- SOMA

e) ( ) COR <- "PRETO"

f) ( ) X <- X + 1

g) ( ) NUM <- "*ABC*"

h) ( ) DIA <- "seGUNDA"

i) ( ) SOMA + 2 <- NUM

j) ( ) X <- (NOME = COR)

k) ( ) Salario <- 5.000

l) ( ) Salario <- 150

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

Page 73: Introdução a programação deComputadores

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)

Page 74: Introdução a programação deComputadores

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

Page 75: Introdução a programação deComputadores

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.

Page 76: Introdução a programação deComputadores

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.