Vous êtes sur la page 1sur 225

ISBN 978-85-8084-295-1

ALGORITMOS E LGICA DE
PROGRAMAO I
Professora Me. Gislaine Camila Lapasini Leal

graduao
Anlise e desenvolvimento de sistemas
Sistemas para Internet

MARING-pr
2012

Reitor: Wilson de Matos Silva


Vice-Reitor: Wilson de Matos Silva Filho
Pr-Reitor de Administrao: Wilson de Matos Silva Filho
Presidente da Mantenedora: Cludio Ferdinandi

NEAD - Ncleo de Educao a Distncia


Diretoria do NEAD: Willian Victor Kendrick de Matos Silva
Coordenao Pedaggica: Gislene Miotto Catolino Raymundo
Coordenao de Marketing: Bruno Jorge
Coordenao Comercial: Helder Machado
Coordenao de Tecnologia: Fabrcio Ricardo Lazilha
Coordenao de Curso: Danillo Xavier Saes
Supervisora do Ncleo de Produo de Materiais: Nalva Aparecida da Rosa Moura
Capa e Editorao: Daniel Fuverki Hey, Fernando Henrique Mendes, Luiz Fernando Rokubuiti, Renata Sguissardi e Thayla
Daiany Guimares Cripaldi
Superviso de Materiais: Ndila de Almeida Toledo
Reviso Textual e Normas: Cristiane de Oliveira Alves, Gabriela Fonseca Tofanelo, Janana Bicudo Kikuchi, Jaquelina
Kutsunugi e Maria Fernanda Canova Vasconcelos

Ficha catalogrfica elaborada pela Biblioteca Central - CESUMAR




CENTRO UNIVERSITRIO DE MARING. Ncleo de Educao

a Distncia:
C397 Algoritmos e lgica de programao I / Gislaine Camila Lapa

sini Leal. Maring - PR, 2012.
225 p.
Graduao em Anlise e Desenvolvimento de Sistemas -
EaD.

1. Algoritmos. 2. Programao. 3. EaD. I. Ttulo.



ISBN 978-85-8084-295-1

CDD - 22 ed. 005.1


CIP - NBR 12899 - AACR/2

As imagens utilizadas neste livro foram obtidas a partir dos sites PHOTOS.COM e SHUTTERSTOCK.COM.

Av. Guedner, 1610 - Jd. Aclimao - (44) 3027-6360 - CEP 87050-390 - Maring - Paran - www.cesumar.br
NEAD - Ncleo de Educao a Distncia - bl. 4 sl. 1 e 2 - (44) 3027-6363 - ead@cesumar.br - www.ead.cesumar.br

ALGORITMOS E LGICA DE
PROGRAMAO I
Professora Me. Gislaine Camila Lapasini Leal

APRESENTAO DO REITOR

Viver e trabalhar em uma sociedade global um grande desafio para todos os cidados.
A busca por tecnologia, informao, conhecimento de qualidade, novas habilidades para
liderana e soluo de problemas com eficincia tornou-se uma questo de sobrevivncia no
mundo do trabalho.
Cada um de ns tem uma grande responsabilidade: as escolhas que fizermos por ns e pelos
nossos far grande diferena no futuro.
Com essa viso, o Cesumar Centro Universitrio de Maring assume o compromisso
de democratizar o conhecimento por meio de alta tecnologia e contribuir para o futuro dos
brasileiros.
No cumprimento de sua misso promover a educao de qualidade nas diferentes reas
do conhecimento, formando profissionais cidados que contribuam para o desenvolvimento
de uma sociedade justa e solidria , o Cesumar busca a integrao do ensino-pesquisaextenso com as demandas institucionais e sociais; a realizao de uma prtica acadmica que
contribua para o desenvolvimento da conscincia social e poltica e, por fim, a democratizao
do conhecimento acadmico com a articulao e a integrao com a sociedade.
Diante disso, o Cesumar almeja ser reconhecido como uma instituio universitria de
referncia regional e nacional pela qualidade e compromisso do corpo docente; aquisio
de competncias institucionais para o desenvolvimento de linhas de pesquisa; consolidao
da extenso universitria; qualidade da oferta dos ensinos presencial e a distncia; bemestar e satisfao da comunidade interna; qualidade da gesto acadmica e administrativa;
compromisso social de incluso; processos de cooperao e parceria com o mundo do
trabalho, como tambm pelo compromisso e relacionamento permanente com os egressos,
incentivando a educao continuada.
Professor Wilson de Matos Silva
Reitor
ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Caro(a) aluno(a), ensinar no transferir conhecimento, mas criar as possibilidades para a


sua produo ou a sua construo (FREIRE, 1996, p. 25). Tenho a certeza de que no Ncleo
de Educao a Distncia do Cesumar, voc ter sua disposio todas as condies para se
fazer um competente profissional e, assim, colaborar efetivamente para o desenvolvimento da
realidade social em que est inserido.
Todas as atividades de estudo presentes neste material foram desenvolvidas para atender o
seu processo de formao e contemplam as diretrizes curriculares dos cursos de graduao,
determinadas pelo Ministrio da Educao (MEC). Desta forma, buscando atender essas
necessidades, dispomos de uma equipe de profissionais multidisciplinares para que,
independente da distncia geogrfica que voc esteja, possamos interagir e, assim, fazer-se
presentes no seu processo de ensino-aprendizagem-conhecimento.
Neste sentido, por meio de um modelo pedaggico interativo, possibilitamos que, efetivamente,
voc construa e amplie a sua rede de conhecimentos. Essa interatividade ser vivenciada
especialmente no ambiente virtual de aprendizagem AVA no qual disponibilizamos, alm do
material produzido em linguagem dialgica, aulas sobre os contedos abordados, atividades de
estudo, enfim, um mundo de linguagens diferenciadas e ricas de possibilidades efetivas para
a sua aprendizagem. Assim sendo, todas as atividades de ensino, disponibilizadas para o seu
processo de formao, tm por intuito possibilitar o desenvolvimento de novas competncias
necessrias para que voc se aproprie do conhecimento de forma colaborativa.
Portanto, recomendo que durante a realizao de seu curso, voc procure interagir com os
textos, fazer anotaes, responder s atividades de autoestudo, participar ativamente dos
fruns, ver as indicaes de leitura e realizar novas pesquisas sobre os assuntos tratados,
pois tais atividades lhe possibilitaro organizar o seu processo educativo e, assim, superar os
desafios na construo de conhecimentos. Para finalizar essa mensagem de boas-vindas, lhe
estendo o convite para que caminhe conosco na Comunidade do Conhecimento e vivencie
a oportunidade de constituir-se sujeito do seu processo de aprendizagem e membro de uma
comunidade mais universal e igualitria.
Um grande abrao e timos momentos de construo de aprendizagem!
Professora Gislene Miotto Catolino Raymundo
Coordenadora Pedaggica do NEAD- CESUMAR

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

APRESENTAO
Livro: ALGORITMOS E LGICA DE PROGRAMAO I
Professora Me. Gislaine Camila Lapasini Leal

Caro(a) aluno(a)! Seja bem-vindo(a) disciplina de Algoritmos e Lgica de Programao


I. Sou a professora Gislaine Camila e nesta disciplina estudaremos o conceito central da
programao, os algoritmos e lgica de programao.
A atividade de programar envolve a construo de algoritmos, sendo o ponto de partida para a
construo de programas, isto , o componente bsico de qualquer software. O aprendizado
de algoritmos crucial para o desenvolvimento de software de qualidade.
Os algoritmos so utilizados para a soluo de um problema, mas no constituem a nica
soluo para um problema. Podemos ter vrios algoritmos que resolvem o mesmo problema.
De modo que no h uma receita a ser seguida na construo de algoritmos, o que devemos
fazer desenvolver o nosso raciocnio lgico a encadear pensamentos para atingir um objetivo.
Para desenvolver a lgica de programao precisamos colocar em prtica os conceitos
adquiridos. No basta apenas observar ou copiar, necessrio praticar, construir algoritmos.
Lembre-se, a prtica fundamental para o sucesso no processo de aprendizagem de
algoritmos.
Apresento a voc o livro que nortear seus estudos nesta disciplina, auxiliando no aprendizado
de algoritmos e lgica de programao. Em cada unidade construiremos algoritmos passo
a passo e voc ver que medida que avanamos aumentamos a gama de problemas que
conseguimos resolver.
Na Unidade I estudaremos os conceitos e princpios bsicos de lgica de programao e
veremos que empiricamente j conhecemos algoritmos e utilizamos vrios deles em nosso
dia a dia. Estudaremos os tipos de algoritmos, conceito de variveis, tipos de variveis,
constantes, expresses, funes intrnsecas, comando para atribuio, entrada e sada de
dados. A partir destes contedos iniciaremos a construo de nossos primeiros algoritmos
que resolvem problemas.
A Unidade II abordar o conceito de estrutura condicional, que nos possibilita impor condies
para a execuo de uma determinada instruo ou conjunto de instrues. Discutiremos sobre
ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

os tipos de estrutura condicional simples, composta, aninha e estrutura de deciso mltipla,


destacando a sintaxe e como utilizar cada uma delas. Ao longo desta unidade construiremos
algoritmos com cada um dos tipos de estrutura condicional. Com os conceitos desta unidade
poderemos construir algoritmos com desvios de fluxo, aumentando o leque de problemas que
conseguimos resolver.
Na Unidade III aprenderemos a construir algoritmos utilizando a estrutura de repetio para
repetir um trecho de cdigo quantas vezes forem necessrias sem ter que reescrever trechos
idnticos. Discutiremos o funcionamento, como utilizar e como encadear as estruturas de
repetio controladas e condicionais. Colocaremos todos os conceitos desta unidade em
prtica construindo algoritmos.
A Unidade IV trata sobre as estruturas de dados homogneas e heterogneas, as quais
permitem agrupar diversas informaes em uma nica varivel. Em relao s estruturas de
dados homogneas unidimensionais (vetores) e multidimensionais (matrizes) estudaremos
como realizar a atribuio de valores, leitura, entrada e sada de dados neste tipo de estrutura.
Conheceremos mtodos que nos permitem classificar as informaes de acordo com um
critrio e realizar pesquisa. Discutiremos, tambm, as estruturas de dados heterogneas,
abordando como realizar atribuio, entrada e sada de dados utilizando registros.
Por fim, na Unidade V, estudaremos a modularizao de algoritmos utilizando sub-rotinas e a
manipulao de arquivos. Conheceremos as sub-rotinas do tipo procedimento e funo, sua
sintaxe, peculiaridades e como utiliz-las. Veremos os conceitos relacionados ao escopo de
variveis e a passagem de parmetros por valor e por referncia, recursividade, construo
de funes recursivas e aplicaes de recurso. Trataremos, tambm, o conceito de arquivos,
modos de concepo e como manipul-los utilizando operaes de que possibilitem consultar,
inserir, modificar e eliminar dados.
Ao longo deste livro voc encontrar indicaes de leitura complementar as quais enriquecero
o seu conhecimento com mais exemplos de algoritmos. H o momento de reflexo denominado
REFLITA, que permite que voc pense com calma sobre um determinado subtema.
importante que voc desenvolva as atividades de autoestudo, pois o momento que voc
tem para colocar em prtica os conhecimentos adquiridos e identificar eventuais dificuldades.
Desejo a voc um bom estudo!

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Sumrio
UNIDADE I
CONCEITOS BSICOS
CONCEITUANDO ALGORITMOS

16

COMO CONSTRUIR ALGORITMOS

19

TIPOS DE ALGORITMOS

20

ESTUDANDO VARIVEIS

23

TIPOS DE VARIVEIS

26

CONSTANTE

28

EXPRESSES

28

FUNES INTRNSECAS

31

ATRIBUIO

32

ENTRADA DE DADOS

33

SADA DE DADOS

33

CONSTRUINDO ALGORITMOS

34

UNIDADE II
ESTRUTURA CONDICIONAL
ESTRUTURA CONDICIONAL 

64

ESTRUTURA CONDICIONAL SIMPLES

65

ESTRUTURA CONDICIONAL COMPOSTA

71

ESTRUTURA CONDICIONAL ANINHADA

75

ESTRUTURA DE DECISO MLTIPLA

80

UNIDADE III
ESTRUTURA DE REPETIO
ESTRUTURA DE REPETIO 

102

ESTRUTURA PARA

103

ESTRUTURA ENQUANTO

110

ESTRUTURA REPITA

116

ESTRUTURAS DE REPETIO ENCADEADAS

118

UNIDADE IV
ESTRUTURAS DE DADOS HOMOGNEAS E HETEROGNEAS
ESTUTURAS DE DADOS HOMOGNEAS

148

VETORES

148

ORDENAO EM VETOR

152

BUSCA EM VETOR

159

MTODO SEQUENCIAL 

160

MATRIZES

162

ESTRUTURAS DE DADOS HETEROGNEAS

166

REGISTROS

166

PROBLEMA

173

UNIDADE V
SUB-ROTINAS E PROGRAMAO COM ARQUIVOS
SUB-ROTINAS

190

PROCEDIMENTOS

191

ESCOPO DE VARIVEIS

197

PASSAGEM DE PARMETROS

199

FUNES

205

RECURSIVIDADE

207

TRABALHANDO COM ARQUIVOS

211

CONCLUSO

223

REFERNCIAS

225

UNIDADE I

CONCEITOS BSICOS

Professora Me. Gislaine Camila Lapasini Leal


Objetivos de Aprendizagem
Conhecer os princpios bsicos de lgica de programao.
Entender os passos para a construo de algoritmos.
Aperfeioar o raciocnio lgico.
Conhecer os tipos de dados.
Conhecer os comandos de atribuio, entrada e sada de dados.
Plano de Estudo
A seguir, apresentam-se os tpicos que voc estudar nesta unidade:
Conceituando algoritmos
Como construir algoritmos
Tipos de algoritmos
Estudando variveis
Tipos de variveis
Constantes
Expresses
Funes Intrnsecas
Atribuio
Entrada de dados
Sada de dados

Construindo algoritmos
Problema 1
Problema 2
Problema 3

INTRODUO
Nesta unidade voc aprender os princpios bsicos de algoritmos e lgica de programao.
Algoritmos constituem o conceito central da programao e a atividade de programar envolve
a construo de algoritmos. Em geral, so utilizados para a soluo de um problema, contudo,
no se constituem em nica soluo para um problema e podemos ter vrios algoritmos que
resolvem o mesmo problema.
Primeiramente, ser abordado o conceito de algoritmos e voc descobrir que empiricamente
j conhece e utiliza algoritmos no seu cotidiano. Estudaremos tipos de algoritmos e as formas
que podemos utilizar para representar a soluo do problema e, especificamente, trataremos
sobre a representao por meio de linguagem natural, simbologia e linguagem restrita.
Para facilitar o processo de ensino-aprendizagem ser apresentado um mtodo para a
construo de algoritmos que divide os problemas em trs partes: Entrada Processamento
Sada. Esse mtodo nos auxiliar a sistematizar as informaes para a construo de
algoritmos.
Ao formular algoritmos precisamos guardar algumas informaes do problema. Para isso
veremos o conceito de variveis e constantes. Conheceremos os tipos de variveis numricas,
literais e lgicas e a caracterstica da informao que cada uma delas pode armazenar.
Alm de guardar informaes precisaremos obter dados, mostrar mensagens e resultados
de processamento. Desta forma, estudaremos os comandos relacionados entrada de
dados que nos permitem interagir como usurio; atribuio que possibilita atribuir valor s
variveis; e, sada de dados que viabiliza o envio de mensagens e a exibio dos resultados
do processamento.
Construiremos trs algoritmos para visualizar a aplicao de cada um dos conceitos abordados.
Aps estudar esta unidade voc poder responder s questes relacionadas com o tema de
Algoritmos e Lgica de Programao I, tais como: Que informaes so de entrada e quais

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

15

so de sada? Que tipo de varivel devo utilizar? Como exibo um resultado ao usurio? Qual o
resultado da simulao do algoritmo?
Alm disto, voc aprender os conceitos de variveis, constantes, expresses, funes,
atribuio, comando de entrada, comando de sada e tcnicas de raciocnio lgico para a
soluo de problemas. Todo esse conhecimento voc poder utilizar para construir os primeiros
algoritmos que resolvem problemas! Vamos l?!

CONCEITUANDO ALGORITMOS

Para dar incio a nossa disciplina de Algoritmos e Lgica de Programao I precisamos


entender o conceito de algoritmos. O que vem a ser um algoritmo? Voc j ouviu esse termo?
Um algoritmo consiste em uma sequncia finita de passos (instrues) para solucionar um
problema. Podemos ter vrios algoritmos que resolvem um mesmo problema, desta forma um
algoritmo no a nica soluo de um problema. Um algoritmo um caminho para a soluo
de um problema, visto que podem existir diversos caminhos que conduzem soluo (LOPES;
GARCIA, 2002).
Ao resolver algoritmos vamos construindo a nossa prpria lgica de programao. No h

16

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

receita mgica e o aprendizado de algoritmos requer prtica. Mas no se preocupe! No


decorrer deste livro teremos contato com diversos exemplos e atividades de autoestudo.
Se pararmos um pouco para pensar, em nosso cotidiano encontramos uma srie de problemas
os quais demandam por uma soluo. E um algoritmo nada mais do que um conjunto de
passos que resolvem um determinado problema. Isto quer dizer que empiricamente j
conhecemos diversos algoritmos. Tomemos como exemplo o problema de ir para o trabalho
(Quadro 1)
Quadro 1: Algoritmo para ir ao trabalho
1. Desligar o despertador
2. Ir para o banheiro
3. Lavar o rosto
4. Escovar os dentes
5. Tirar o pijama
6. Colocar uma roupa
7. Tomar caf da manh
8. Pegar o carro
9. Estacionar o carro
10. Entrar no escritrio

Observando o algoritmo para ir ao trabalho verificamos que em cada linha temos uma
instruo. Podemos dizer que o algoritmo para ir ao trabalho tem dez instrues. Portanto,
um algoritmo um conjunto de instrues. Mas, o que uma instruo? Uma instruo
uma operao bsica (sem ambiguidade) que indica a um computador a ao que deve ser
executada (SALVETTI; BARBOSA, 2004).

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

17

Agora que estamos mais familiarizados com o termo algoritmo podemos perceber que eles
fazem parte do nosso dia a dia, por exemplo, quando seguimos instrues para uso de um
medicamento, realizamos uma ligao telefnica, trocamos uma lmpada, montamos um
mvel ou aparelho ou at mesmo quando seguimos uma receita culinria (ZIVIANI, 2004).
O Quadro 2 apresenta o conjunto de instrues a serem seguidas para tomar sal de frutas (uso
de medicamento).
Quadro 2: Algoritmo para tomar sal de frutas
1. Colocar 2/3 de gua em um copo
2. Dissolver o sal de frutas
3. Esperar o efeito efervescente
4. Tomar a soluo

A sequncia de passos a ser seguida para realizar uma ligao telefnica apresentada no
Quadro 3.
Quadro 3: Algoritmo para fazer ligao telefnica
1. Inserir o nmero
2. Apertar o boto para fazer ligao
3. Esperar atender
4. Falar no telefone
5. Apertar o boto para desligar ligao
Fonte: adaptado de (LOPES; GARCIA, 2002)

18

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Uma soluo para o problema de trocar uma lmpada representada por cinco instrues,
como pode ser visto no Quadro 4.
Quadro 4: Algoritmo para trocar lmpada
1. Se (lmpada estiver fora de alcance) Pegar uma escada
2. Pegar a lmpada
3. Se (lmpada estiver quente) Pegar um pano
4. Tirar a lmpada queimada
5. Colocar a lmpada boa
Fonte: LOPES; GARCIA (2002)

Como j sabemos o que um algoritmo, outro conceito importante que precisamos compreender
o de programa de computador. Um programa nada mais que uma sequncia de instrues
codificada em uma linguagem que pode ser seguida por um computador. a representao
de um algoritmo em uma linguagem de programao (C, Pascal, Java, Fortran etc.) (ZIVIANE,
2004; SALVETTI; BARBOSA, 2004).

COMO CONSTRUIR ALGORITMOS


Sabemos que a construo de algoritmos requer prtica. Para facilitar nosso processo de
aprendizagem Ascencio e Campos (2010) descrevem alguns passos que devemos seguir,
sendo eles:

Compreender o problema: definir qual o objetivo do algoritmo.

Definir as informaes de entrada: que informaes precisamos obter do usurio.

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

19

Definir o processamento: que clculos devemos efetuar. neste momento que os dados
obtidos pela entrada sero transformados em informao til para o usurio.

Definir as informaes de sada: que informaes devemos fornecer ao usurio como


resultado do processamento efetuado.

A separao do problema em Entrada (Que dados devemos obter do usurio?), Processamento


(Que clculos devemos efetuar?) e Sada (Que informaes devemos fornecer ao usurio?) nos
auxilia no processo de construo do raciocnio lgico, facilitando assim o nosso aprendizado
de Algoritmos e Lgica de Programao I.

TIPOS DE ALGORITMOS
Ascencio e Campos (2010) destacam que os tipos de algoritmos mais utilizados so: descrio
narrativa, fluxograma e pseudocdigo.
A descrio narrativa consiste na representao do problema por meio da linguagem natural,
descrevendo os passos que devem ser seguidos para a resoluo de um problema, conforme
foi visto no tpico CONCEITUANDO ALGORITMOS. Como vantagem dessa representao
destaca-se a facilidade de aprendizado. No entanto, esse tipo de descrio pode ser ambgua,
gerar diversas interpretaes e dificultar a converso do algoritmo em um programa de
computador (ASCENCIO; CAMPOS, 2010).
Vamos tomar como exemplo a soma de dois nmeros. Seguindo os passos descritos na seo
Como Construir Algoritmos temos que:

Objetivo: somar dois nmeros.

Dados de entrada: obter do usurio quais so os dois nmeros que devemos somar.

Processamento: efetuar a operao de soma com os dois nmeros obtidos.

20

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Sada: mostrar o resultado da soma.

Agora que estruturamos o nosso problema em Entrada Processamento Sada ficou mais
fcil construir o nosso algoritmo. A representao do algoritmo como descrio narrativa pode
ser visualizada no Quadro 5.
Quadro 5: Descrio Narrativa Algoritmo Soma
1. Obter dois nmeros
2. Somar os dois nmeros
3. Mostrar o resultado da soma

O fluxograma consiste em uma notao grfica que permite indicar as aes e decises
que devem ser seguidas para resolver o problema. Os smbolos utilizados para construir o
fluxograma so apresentados no Quadro 6.
Quadro 6: Simbologia de Fluxograma
Smbolo

Descrio
Indica o incio e o fim do algoritmo.
Indica o sentido do fluxo de dados.
Indica a realizao de clculos e operaes de atribuio.
Representa a sada de dados.
Indica que deve ser tomada uma deciso, h possibilidade de desvio do fluxo.

Fonte: adaptado de MANZANO; OLIVEIRA (1997)

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

21

Para melhor compreenso apresenta-se na Figura 1, fluxograma para o problema de somar


dois nmeros.

Incio

N1, N2

S = N1+N2

S
Fim

Figura 1: Fluxograma Algoritmo Soma


Fonte: a autora

A vantagem do fluxograma est em facilitar o entendimento dos smbolos e como desvantagem


destaca-se o fato de o algoritmo no apresentar muitos detalhes, o que ir dificultar a converso
do algoritmo em um programa (ASCENCIO; CAMPOS, 2010).
Outro tipo de algoritmo o pseudocdigo, conhecido tambm como portugol ou portugus
estruturado, que consiste em representar o problema por meio de regras pr-definidas. uma
linguagem restrita que descreve o significado para todos os termos utilizados nas instrues.
O Quadro 7 apresenta o pseudocdigo do algoritmo que efetua a soma de dois nmeros. As
palavras em negrito so termos que possuem significado especfico. Notem que todo algoritmo
possui um nome e uma sequncia finita, sendo delimitado por um incio e por um fim.
Quadro 7: Pseudocdigo Algoritmo Soma

22

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

O pseudocdigo muito prximo linguagem de programao, de tal modo que a passagem


do algoritmo para o programa quase imediata, bastando conhecer as palavras reservadas
da linguagem, conforme destaca Ascencio e Campos (2010). A desvantagem est relacionada
ao fato de ter que aprender as regras do pseudocdigo.

ESTUDANDO VARIVEIS

Para elaborar algoritmos precisamos guardar algumas informaes e para isto utilizamos as
variveis. Uma varivel um espao na memria principal do computador que pode conter
diferentes valores a cada instante de tempo (LOPES;GARCIA, 2002).
Uma varivel pode ser vista como uma caixa que armazena pertences. Esta caixa tem um
nome e somente guarda objetos do mesmo tipo. Uma varivel possui um nome e seu contedo
pode ser de vrios tipos: inteiro, real, caractere, lgico entre outros.
Na Figura 2 temos uma varivel com nome Idade. Essa varivel pode guardar apenas valores
inteiros. Com isto, temos que o valor Casa no pode ser armazenado nesta caixa, visto que
se trata de um conjunto de caracteres.

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

23

Figura 2: Varivel
Fonte: a autora

Em um algoritmo o contedo de uma varivel pode ser modificado, consultado ou apagado


quantas vezes forem necessrias. importante ter cincia de que a varivel armazena apenas
um contedo por vez. Na Figura 2, nossa caixa denominada Idade recebe uma sequncia de
valores sendo eles 25, 60, 13 e 36. Sabemos que uma varivel armazena apenas um contedo
por vez, desta forma quando realizarmos uma consulta obteremos o valor 36 para a varivel
Idade.

Figura 3: Varivel
Fonte: a autora

As variveis so definidas logo no incio do algoritmo para que a rea na memria seja alocada.
A definio de variveis realizada utilizando o comando VAR, primeiro definimos o nome e,
em seguida, o tipo, do seguinte modo:
Var <nome da varivel> : <tipo da varivel>

24

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Ao declarar variveis devemos tomar alguns cuidados: a palavra VAR usada uma nica vez
na definio de variveis; mais de uma varivel do mesmo tipo pode ser definida em uma
mesma linha, basta separar cada uma delas por vrgula; e, se h diferentes tipos de variveis,
cada tipo deve ser declarado em linhas diferentes.
Os identificadores so os nomes das variveis, programas, rotinas, constantes etc. Para
nomear esses identificadores devemos seguir algumas regras (ASCENCIO; CAMPOS, 2010):

O nome deve iniciar SEMPRE com letra. Isto indica que nossas variveis podem ser
chamadas de media, altura, idade, cidade. Mas, no pode ser 2cidade, 4x etc.

O nome no pode conter espaos, ou seja, no podemos denominar uma varivel de


altura media.

O nome no pode conter caracteres especiais ($, #, @, ?, !, *).

Nenhuma palavra reservada poder ser nome de varivel. As palavras reservadas tm


uso especfico no pseudocdigo. Alguns exemplos so: Var, tipo, incio, fim, se, ento,
seno, enquanto, repita, faa, caso, at, procedimento, funo e outros. No se assuste
com todos esses termos, iremos v-los no decorrer desta unidade e com a prtica logo
voc estar familiarizado com todos eles.

O Quadro 8 apresenta alguns exemplos de identificadores vlidos e invlidos, exemplificando


cada uma das regras descritas anteriormente. importante lembrar que seguiremos essas
regras para nomear variveis, constantes, algoritmos, rotinas e outros.

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

25

Quadro 8: Exemplo de identificadores


Identificadores vlidos

Identificadores invlidos

b@

media

media idade

altura2

caso

media_idade

se

x36

x*y

At o momento sabemos o que um algoritmo, o que so variveis e qual a sua importncia.


Na seo seguinte iremos entender quais os tipos de variveis que dispomos para construir
nossos algoritmos.

TIPOS DE VARIVEIS
Como sabemos, as nossas variveis s podem armazenar dados do mesmo tipo. Os tipos de
variveis so: inteiro, real, caractere e lgico.
Uma varivel inteira armazena dados numricos que no possuem componentes decimais
ou fracionrios. Podendo o nmero ser positivo ou negativo (ASCENCIO; CAMPOS, 2010).
Alguns exemplos de nmeros inteiros so: -3, -1, 0, 4, 7. Desta forma, a declarao de uma
varivel inteira realizada da seguinte forma:
Var
Idade : Inteiro
Outro tipo de varivel numrica a real, que armazena componentes decimais ou fracionrios,
podendo estes ser positivos ou negativos. Alguns exemplos de nmeros reais so: 15.02, 4.5,

26

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

6.07 e outros. A declarao de uma varivel do tipo real dada por:


Var
Altura : Real
Neste ponto voc pode estar se perguntando: que diferena faz declarar uma varivel como
inteira ou real? Declaro todas as variveis como real j que o conjunto dos inteiros est incluso
nos reais?
A diferena est no tamanho do espao de memria utilizado. Normalmente, uma varivel inteira
pode ocupar 1, 2 ou 4 bytes. Enquanto uma varivel real poder ocupar 4 ou 8 bytes (LOPES;
GARCIA, 2002). Isto nos indica que se alocarmos todas as variveis como real, estaremos
alocando um espao de memria desnecessrio e sabemos que uma srie de informaes no
assumem valores decimais ou fracionrios. Por exemplo, quando perguntamos a idade para
uma pessoa, obtemos como resposta 26 anos e no 26,3 anos. Desta forma, para armazenar
a idade utilizamos sempre variveis do tipo inteiro. Do mesmo modo, existem informaes que
so necessariamente do tipo real, tais como altura, peso, notas, mdias e outras.
At o momento conhecemos as variveis numricas, no entanto existem dados literais que
devemos processar, para tanto utilizamos as variveis do tipo caractere, tambm conhecida
como literais, alfanumrico, string ou cadeia (MANZANO; OLIVEIRA, 1997).
Um caractere uma varivel que armazena dado que contm letras, dgitos e/ou smbolos
especiais (LOPES; GARCIA, 2002). Alguns exemplos so: Joo, 1234567, E, 21/06/1984.
As variveis do tipo caractere possuem um comprimento associado, por exemplo, Maria tem
comprimento 5, 21/06/1984 tem comprimento 10. O comprimento corresponde ao nmero de
caracteres que a varivel possui. Ao declarar uma varivel do tipo caractere podemos definir o
tamanho mximo de caracteres que ela poder armazenar, para tanto basta inserir o tamanho
entre colchetes. A declarao de uma varivel do tipo caractere realizada da seguinte forma:

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

27

Var
Nome : Caractere [tamanho]
H o tipo de varivel lgica ou booleana, que possui dois nicos valores lgicos: verdadeiro
ou falso, ou, 1 e 0. Para declarar uma varivel lgica realizamos o seguinte procedimento:
Var
Ocupado : Lgico

CONSTANTE
Uma constante armazena informaes que no variam com o tempo, ou seja, o seu contedo
um valor fixo. Da mesma forma que as variveis, todas as constantes devem ser definidas
no incio do algoritmo. O comando utilizado para definir constantes o CONST e sua definio
dada por:
CONST
<nome da constante> = <valor>

EXPRESSES
De acordo com Lopes e Garcia (2002), as expresses esto diretamente relacionadas ao
conceito de frmula matemtica, em que um conjunto de variveis e constantes relacionase por meio de operadores. As expresses dividem-se em: aritmticas, relacional, lgicas e
literais.
As expresses aritmticas so aquelas em que o resultado consiste em um valor numrico.
Desta forma, apenas operadores aritmticos e variveis numricas (inteiro e real) podem ser
utilizados em expresso desse tipo.

28

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

O Quadro 9 apresenta os operadores aritmticos, destacando suas representaes, forma de


uso e prioridade. A prioridade entre operadores define a ordem em que os mesmos devem ser
avaliados dentro de uma mesma expresso.
Quadro 9: Operadores aritmticos
Operao

Operador

Soma

Significado

Utilizado para efetuar a soma de duas ou mais

Prioridade

variveis. Dada uma varivel A e outra B, temos


que a soma delas representada por A + B.
Subtrao

Simboliza a subtrao do valor de duas variveis.

Supondo uma varivel A e B, a diferena entre


elas dada por: A - B.
Multiplicao

O produto entre duas variveis A e B

representado por A * B.
Diviso

A diviso entre duas variveis A e B dada por:

A/B. Em relao diviso importante lembrar


que no existe diviso por zero.
Exponenciao

**

representada por ** mais o nmero que se quer

elevar. Se quisermos elevar o valor da varivel A


ao quadrado, representamos por: A ** 2.
Resto

mod

Usado quando se deseja encontrar o resto da

diviso entre duas variveis A e B. A


representao dada por A mod B. Supondo A = 3
e B = 2, temos que A mod B = 1.
Diviso inteira

div

Representa o quociente da diviso entre dois

nmeros. Tomando A = 7 e B = 2, temos que A div


B resulta em 3.

As expresses relacionais referem-se comparao entre dois valores de um tipo bsico. Os


operadores relacionais so destacados no Quadro 10, em que possvel visualizar o operador,
ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

29

smbolo associado e forma de uso.


Quadro 10: Operadores relacionais
Operador

Smbolo Exemplo

Igual

A=1

<>

A<>B

Maior

>

A >5

Menor que

<

B < 12

Maior ou igual a

>=

A >= 6

Menor ou igual a

<=

B <=7

Diferente

Fonte: adaptado de (ASCENCIO; CAMPOS, 2010)

As expresses lgicas so aquelas cujo resultado consiste em um valor lgico verdadeiro ou


falso. Neste tipo de expresso podem ser usados os operadores relacionais, os operadores
lgicos ou expresses matemticas.
No Quadro 11 so descritos cada um dos operadores lgicos: conjuno, disjuno e negao.
Quadro 11: Operadores lgicos
Operador
Disjuno

Smbolo

Explicao

Prioridade

OU

A disjuno entre duas variveis resulta em um valor

verdadeiro quando pelo menos uma das variveis


verdadeira.
Conjuno

A conjuno entre duas variveis resulta em um valor

verdadeiro somente quando as duas variveis so


verdadeiras.
Negao

NO

A negao inverte o valor de uma varivel. Se a varivel A


verdadeira, a negao de A, torna o valor da varivel falso.

Fonte: adaptado de (LOPES; GARCIA, 2002)

30

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

As expresses literais consistem em expresses cujo resultado um caractere. H um nico


operador literal, o +, que utilizado na concatenao de duas ou mais variveis do tipo
caractere. Esse operador utilizado para acrescentar o contedo de uma varivel ao final de
outra. Por exemplo, a concatenao de ALGO + RITMO resulta em ALGORITMO.
Em uma expresso podemos ter mais de um operador. Em situaes que h um nico
operador a avaliao da expresso realizada de forma direta. Quando h mais de um
operador necessria a avaliao da expresso passo a passo, ou seja, um operador por
vez. A precedncia das operaes realizada por meio de parnteses e de acordo com a
prioridade dos operadores.
Por exemplo, temos: x + y * 25. Neste caso, a primeira operao a ser realizada a multiplicao
de y por 25, visto que o operador de multiplicao tem prioridade 3 e a soma prioridade 4. Se
quisermos multiplicar o produto da soma de x e y por 25 temos que representar a expresso
do seguinte modo: (x+y) * 25. Neste caso, primeiro executada a operao que est entre os
parnteses e depois a multiplicao, ou seja, os parnteses tm precedncia.
Fique tranquilo! Colocaremos em prtica as questes relacionadas precedncia de
operadores na seo Construindo Algoritmos.

FUNES INTRNSECAS
As funes so frmulas matemticas prontas que podemos utilizar em nossos algoritmos. O
Quadro 12 apresenta as principais funes, destacando o comando associado e o que ela faz.

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

31

Quadro 12: Funes

Funo

Objetivo

ABS(varivel)

Retorna o valor absoluto de um nmero qualquer.

ARCTAN(varivel)

Retorna o arco tangente de um ngulo qualquer em


radianos.

COS(varivel)

Retorna o valor do cosseno de um ngulo qualquer em


radianos.

EXP(varivel)

Retorna o valor exponencial, ou seja, o nmero


elevado a um nmero qualquer.

FRAC(varivel)

Retorna a parte fracionria.

LN(varivel)

Retorna o logaritmo natural.

PI

Retorna o valor de PI.

SIN(varivel)

Retorna o valor do seno de um ngulo qualquer em


radianos.

SQR(varivel)

Retorna o valor do parmetro elevado ao quadrado.

SQRT(varivel)

Retorna a raiz quadrada de um nmero positivo.

Fonte: adaptado de ASCENCIO; CAMPOS (2010); LOPES; GARCIA (2002)

ATRIBUIO
J sabemos o que so variveis, quais os tipos de variveis e expresses que podemos
associar a elas, agora precisamos entender como armazenar um dado em uma varivel. A

32

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

atribuio consiste no processo de fornecer um valor a uma varivel, em que o tipo desse valor
tem que ser compatvel com a varivel (LOPES; GARCIA, 2002).
O smbolo utilizado para a atribuio e a representao dada por:
identificador

expresso

O identificador representa a varivel a qual ser atribudo um valor e o termo expresso o


que ser atribudo, podendo ser uma expresso aritmtica, lgica ou literal. Tomemos como
exemplo atribuir a uma varivel denominada idade o valor 26. Para isso, temos que:
idade

26

A leitura dessa instruo realizada do seguinte modo: a varivel idade recebe o valor 26.

ENTRADA DE DADOS
A entrada de dados permite receber os dados digitados pelo usurio e realizada por meio do
comando leia. Os dados recebidos so armazenados em variveis (ASCENCIO; CAMPOS,
2010).
A sintaxe do comando :
leia

<varivel>

Ao utilizarmos esse comando o computador fica aguardando uma ao do usurio, que


digitar o valor para a varivel.

SADA DE DADOS
A sada de dados permite mostrar dados aos usurios. O comando utilizado o escreva, que

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

33

busca as informaes na memria e posteriormente as disponibiliza por meio de um dispositivo


de sada (monitor ou impressora).
A sintaxe do comando de sada :
escreva

<varivel> ou <literal>

Com o comando de sada podemos enviar mensagens ao usurio, informando que ao


estamos esperando ou enviar resultados dos dados processados. Um literal deve ser escrito
sempre entre aspas, por exemplo:
Escreva Estou estudando Algoritmos e Lgica de Programao I
Podemos imprimir diversas variveis ou combinar variveis com literais em um nico comando,
basta separ-las por vrgula. Por exemplo:
Escreva A idade :, idade
Escreva n1, x n2, igual a, produto

CONSTRUINDO ALGORITMOS
J vimos o conceito de variveis, constantes, expresses, conhecemos os operadores,
funes, comandos de atribuio, entrada e sada de dados. Nesta seo reuniremos todos
esses conhecimentos na construo de algoritmos.

34

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

PROBLEMA 1

Formular um algoritmo que leia e apresente as seguintes informaes de uma pessoa: nome,
idade, peso, altura e telefone.
Antes de partir para a elaborao do algoritmo dividiremos o problema tal como aprendemos
na seo COMO CONSTRUIR ALGORITMOS, em objetivo do algoritmo, entrada,
processamento e sada. Deste modo, temos que:

Objetivo do algoritmo: ler e apresentar o nome, idade, peso, altura e telefone de uma
pessoa.

Entrada: precisamos obter os dados: nome da pessoa, a idade, o peso, a altura e o


telefone.

Processamento: no h processamento.

Sada: informar o nome da pessoa, a idade, o peso, a altura e o telefone.

Estruturar o problema nestes quatro itens auxilia no processo de compreenso e, por


conseguinte, na construo do algoritmo. Aps entender o problema devemos analisar que

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

35

variveis so necessrias e qual o tipo de cada uma delas. Os dados que precisamos obter
e armazenar so: nome, idade, peso, altura e telefone. Desta forma, temos uma varivel
associada a cada um. Sabemos que idade, peso e altura so variveis numricas, sendo que
a idade inteiro e os demais real. Para armazenar o nome e telefone, uma informao literal,
utilizaremos a varivel do tipo caractere.
Iniciando a formulao do algoritmo, temos que ele precisa de um nome o qual denominaremos
de problema1. Portanto, a primeira linha ser:
Algoritmo problema1
Em seguida, temos a declarao das variveis, que dada por:
Var

Idade : inteiro

Peso, altura : real

Nome : caractere[50]

Telefone : caractere[15]

Note que as variveis do mesmo tipo podem ser declaradas na mesma linha, como o caso
de peso e altura. Se as variveis do tipo caractere tivessem o mesmo tamanho poderamos
declar-las de modo anlogo. Declarar como caractere[50] indica que o tamanho mximo que
a varivel ir armazenar de 50 caracteres.
Todo algoritmo delimitado pela instruo de Incio, logo:
Incio
Na entrada de dados precisamos obter as informaes definidas por meio do comando leia.
No entanto, importante enviar sempre uma mensagem informando ao usurio que dado est

36

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

sendo solicitado, deste modo utilizamos o comando escreva. Com isto, temos:

Escreva (Informe o nome:)

Leia (nome)

Escreva (Informe a idade:)

Leia (idade)

Escreva (Informe o peso:)

Leia (peso)

Escreva (Informe a altura:)

Leia (altura)

Escreva (Informe o telefone:)

Leia (telefone)

Como no h processamento, realizaremos a sada de dados por meio do comando escreva:


Escreva (O nome :, nome)

Escreva (A idade :, idade)

Escreva (O peso :, peso)

Escreva (A altura :, altura)

Escreva (O telefone :, telefone)

Ao trmino do algoritmo inserimos a instruo fim, do seguinte modo:


Fim.
O algoritmo inteiro apresentado no Quadro 13. Observe que as palavras destacadas (negrito)

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

37

so palavras reservadas, ou seja, no podemos utiliz-las como nome de varivel, constante,


algoritmo e outros.
Quadro 13: Pseudocdigo - Problema1
Algoritmo problema1
Var
Idade

: inteiro

Peso, altura : real


Nome

: caractere[50]

Telefone

: caractere[15]

Incio
Escreva (Informe o nome:)
Leia (nome)
Escreva (Informe a idade:)
Leia (idade)
Escreva (Informe o peso:)
Leia (peso)
Escreva (Informe a altura:)
Leia (altura)
Escreva (Informe o telefone:)
Leia (telefone)
Escreva (O nome :, nome)
Escreva (A idade :, idade )
Escreva (O peso :, peso)
Escreva (A altura :, altura)
Escreva (O telefone :,
telefone)
Fim.

38

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

O resultado da execuo do algoritmo apresentado no Quadro 14.


Quadro 14: Resultado da execuo - Problema 1
Informe o nome: Maria da Silva
Informe a idade: 30
Informe o peso: 60.3
Informe a altura: 1.58
Informe o telefone: 3011-1212
O nome : Maria da Silva
A idade : 30
O peso : 60.3
A altura : 1.58
O telefone : 3011-1212

Na resoluo deste problema colocamos em prtica o conceito de variveis, tipos de variveis


e comandos de entrada e sada de dados.
PROBLEMA 2
Um quadrado (Figura 4) uma figura geomtrica com quatro lados de mesmo comprimento
(l) e quatro ngulos retos. Elabore um algoritmo para calcular a rea e o permetro de um
quadrado. Observando a Figura 4, a rea dada pela superfcie (laranja) e o permetro a
medida do contorno do objeto, a soma dos quatro lados (pontilhado).

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

39

l
Figura 4: Quadrado
Fonte: a autora

No iremos elaborar o pseudocdigo diretamente, primeiro vamos dividir o problema tal


como aprendemos na seo COMO CONSTRUIR ALGORITMOS, em objetivo do algoritmo,
entrada, processamento e sada. Com isso, temos que:

Objetivo do algoritmo: calcular o permetro e rea de um quadrado.

Entrada: para calcular o permetro e a rea precisamos saber qual o comprimento do lado
do quadrado, ou seja, temos que saber o valor de l.

Processamento: clculo do permetro e da rea. O permetro (P) a soma dos quatro


lados, pode ser representado por P = 4 x l. A rea (A) dada por A = l x l.

Sada: informar o valor do permetro (P) e o valor da rea (A).

Essa estruturao facilita o entendimento sobre o problema, tornando explcitas as informaes


que precisamos, o que devemos fazer e que resultado devemos fornecer. O prximo passo
consiste em encontrar as variveis do problema. Quantas variveis precisamos? Qual o tipo
de cada varivel?
Na entrada de dados precisamos saber qual o valor do lado. Esta informao ser fornecida

40

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

pelo usurio e precisaremos armazen-la para efetuar os clculos do processamento. Portanto,


o valor do lado necessita ser armazenado em uma varivel, a qual denominaremos de l. No
processamento temos que armazenar o valor da rea e o valor do permetro, logo encontramos
mais duas variveis, A e P.
Definimos as variveis, agora temos que especificar qual o tipo de cada uma delas. O
comprimento do lado, a rea e o permetro so valores numricos, podemos representar como
inteiro ou real. Qual dos dois tipos devemos utilizar? Podemos ter parte decimal na medida do
lado de um quadrado?
O tipo a ser utilizado o real, j que a medida do lado, o permetro e a rea no necessariamente
so nmeros inteiros.
Agora que j entendemos o nosso problema, podemos iniciar a elaborao do algoritmo.
Todo algoritmo precisa de um nome e este nome segue as mesmas regras de nomeao de
identificadores, ou seja, no pode comear com nmeros, ter espaos ou conter caracteres
especiais. Alm disso, o nome do algoritmo no pode ser o mesmo das variveis. Que tal
chamarmos de quadrado? Com isso nossa primeira linha :
Algoritmo quadrado
A declarao de variveis deve ser realizada no incio do algoritmo, logo aps a definio de
seu nome, portanto temos:
Var

L, A, P: real

Sabemos que o algoritmo uma sequncia finita de passos, delimitada por Incio e Fim, com
as instrues de entrada, processamento e sada dentro desses limites. Portanto:

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

41

Incio
Na entrada de dados precisamos obter o valor do lado (L), portanto utilizamos o comando leia.
importante fornecer ao usurio uma mensagem informando qual ao esperada antes de
utilizar o comando leia. Com isso, temos:
Escreva (Informe o valor do lado do quadrado:)
Leia (L)
No processamento temos que calcular a rea e o permetro, os quais so representados pelas
variveis, A e P, respectivamente. O clculo representado por uma expresso matemtica,
que ao passar para algoritmo temos:
A=L*L
P=4*L
Estas instrues indicam que a varivel A e a varivel P armazena o resultado da expresso
que definimos.
Passamos pela entrada e processamento, agora temos que informar o resultado, ou seja, a
sada de dados, que realizada pelo comando escreva. O objetivo informar o valor da rea
e do permetro, portanto:
Escreva (O permetro :, P)
Escreva (A rea :, A)
Na instruo de sada utilizamos o comando escreva e combinamos uma sada literal com o
valor da varivel. Observe que a literal fica entre aspas, seguida de vrgula, varivel. Como um
algoritmo uma sequncia finita de passos, temos que finaliz-lo com a seguinte instruo:
Fim.

42

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Note que a instruo Fim possui um ponto final. O algoritmo completo que formulamos
encontra-se no Quadro 15. Note que as palavras-chave esto em negrito. Lembre-se que essas
palavras so reservadas, desta forma no podemos utiliz-las para nomear os identificadores
(programas, variveis, constantes e outros).
Quadro 15: Pseudocdigo - Problema 2

Vamos simular o funcionamento do nosso algoritmo ou realizar o teste de mesa. Essa etapa
importante, pois auxilia na compreenso e verificao do algoritmo. Supondo que L = 3, logo
temos que:
A=3*3
P=4*3

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

43

Desta forma, temos A = 9 e P = 12, com isso a sada dada por:


O permetro : 12
A rea : 9
No Quadro 16 apresentado o resultado da execuo do algoritmo que mostrado em vdeo.
Quadro 16: Resultado da execuo - Problema 2
Informe o valor do lado do quadrado: 3
O permetro : 12
A rea : 9

Neste problema, colocamos em prtica o conceito de variveis, tipos de variveis, expresses


aritmticas, entrada, processamento e sada de dados. E, ao final, testamos o algoritmo.

Fonte: SHUTTERSTOCK.COM

PROBLEMA 3

Elaborar um algoritmo que apresente o salrio bruto, salrio lquido, INSS e FGTS de
um funcionrio, sabendo que o salrio bruto dado por (Horas Trabalhadas + Horas

44

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Extras*(1+Porcentagem Hora Extra))*Valor por Hora. A Porcentagem de Hora Extra 100%. O


valor do INSS dado por Salrio Bruto * 9% e o FGTS Salrio Bruto * 8%. Por fim, o salrio
lquido dado pelo salrio bruto INSS.
Estruturando o problema em objetivo, entrada, processamento e sada, temos que:

Objetivo do algoritmo: apresentar o valor do salrio bruto, salrio lquido, INSS e FGTS.

Entrada: para calcular o salrio bruto do funcionrio precisamos obter o nmero de horas,
nmero de horas extras e o valor da hora trabalhada.

Processamento: calcular o salrio bruto, INSS, FGTS e salrio lquido.

Sada: informar o salrio bruto, salrio lquido, INSS e FGTS.

A partir das informaes da entrada de dados e do processamento possvel determinar as


variveis do problema, sendo elas: htrabalhadas, hextra, vhora, sbruto, inss, fgts e sliquido.
Essas variveis so numricas e do tipo real.
O pseudocdigo para o problema descrito apresentado no Quadro 17.

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

45

Quadro 17: Pseudocdigo Problema 3

46

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

A constante phoraextra foi definida pelo fato do valor ser invarivel, neste caso, sendo 100%.
Aps a entrada de dados foi efetuado o processamento, composto por quatro expresses,
em que podemos observar o uso de parnteses. Esses parnteses servem para indicar a
precedncia das operaes, ou seja, primeiramente realizada a operao que est dentro
deles e, em seguida, as demais, observando tambm a precedncia.
Vamos tomar como exemplo os seguintes valores para a entrada de dados: Horas trabalhadas
= 20, horas extras = 5 e valor da hora = 10. Substituindo esses valores na expresso para
clculo do salrio bruto teramos que:
sbruto (20 + 5*(1+(100/100)))*10
Para facilitar o entendimento acompanhe a resoluo deste clculo fazendo-o no papel. A
prioridade de execuo o conjunto de parnteses interno, ou seja, a diviso resultando
em 1. Aps a realizao da diviso ser executada a operao de soma cujo resultado 2.
Continuando a ordem de precedncia temos que ser realizada a multiplicao entre 5 e 2,
resultando em 10, o qual ser somado com o valor 20, tendo como resultado 30. Por fim, ser
realizada a multiplicao de 30 e 10, resultando em 300.
Ao final da execuo do algoritmo obteremos os resultados, conforme apresentado no Quadro
18.
Quadro 18 - Resultado da execuo - Problema 3
Informe o nmero de horas trabalhadas: 20
Informe o nmero de horas extras: 5
Informe o valor da hora: 10
O salrio bruto : 300
O salrio lquido : 273
O INSS : 27
O FGTS : 24

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

47

Neste problema, alm dos conceitos de variveis, tipos de variveis, comando de atribuio,
entrada e sada de dados, utilizamos constantes e a precedncia dos operadores.

CONSIDERAES FINAIS
Nesta unidade foi introduzido o conceito central da disciplina, algoritmo. O algoritmo consiste
em um conjunto de instrues para solucionar um problema. Enfatizando, dado um problema,
podemos ter vrios algoritmos que o resolvem, ou seja, temos o algoritmo como um possvel
caminho para a soluo. Alm disso, voc pde perceber que o termo algoritmo est presente
no nosso dia a dia nas mais diversificadas situaes, sempre que temos uma sequncia de
passos para realizar uma tarefa.
Entendemos o processo de anlise de problemas, que consiste na diviso do problema em
trs partes: Entrada (dados que precisamos solicitar ao usurio), Processamento (operaes
que devemos efetuar) e Sada (informaes que devemos mostrar ao usurio). Percebemos
que esses passos nos auxiliam na construo do algoritmo e raciocnio lgico e facilitam a
nossa compreenso sobre o problema.
Dentre os tipos de algoritmos estudamos a descrio narrativa, o fluxograma e o pseudocdigo.
Vimos que na descrio narrativa o problema representado por meio da linguagem natural,
o fluxograma apresenta uma notao grfica especfica para representao e o pseudocdigo
utiliza regras pr-definidas. Ao longo de nossa disciplina adotaremos a representao em
pseudocdigo devido a facilidade de converso para uma linguagem de programao.
Aprendemos a armazenar os dados obtidos utilizando variveis, que so espaos na memria
principal e que contm diversos valores a cada instante de tempo. Fizemos a analogia de
variveis com caixas, de modo que essas caixas s podem armazenar pertences do mesmo
tipo. Com isto, vimos os tipos de variveis numricas (inteiro e real), lgicas (boolean) e literais
(caractere).

48

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Em relao s regras para nomear identificadores (nomes das variveis, programas,


rotinas, constantes etc.) aprendemos que: devem iniciar com letras, nunca nmeros; no
podem conter espaos; no podem conter caracteres especiais; e, no podem ser utilizadas
palavras reservadas. As palavras reservadas so aquelas que possuem uso especfico no
pseudocdigo, tais como: var, tipo, incio, fim, se, ento, seno, enquanto, repita, faa, caso,
at, procedimento, funo, e outros.
Estudamos as expresses e os operadores aritmticos (soma, subtrao, diviso,
multiplicao, exponenciao, diviso inteira e resto), relacionais (igual, diferente, maior,
menor que, maior ou igual a, menor ou igual a) e lgicos (conjuno, disjuno e negao) que
utilizamos em sua construo. No que se refere aos operadores lgicos, a conjuno retorna
verdadeiro somente se as duas variveis so verdadeiras. Na disjuno o valor verdadeiro se
pelo menos uma das variveis for verdadeira. E a negao inverte o valor da varivel.
Aprendemos os comandos que utilizamos para atribuio, entrada de dados e sada de dados.
A atribuio o processo de fornecer valor a uma varivel, lembrando que esse valor tem
que ser compatvel com o tipo da varivel. Ou seja, se a varivel do tipo inteira, s podemos
armazenar um nmero inteiro nela.
O comando usado para atribuio representado por . A entrada de dados realizada
por meio do comando leia. Para mostrar dados ao usurio utilizamos o comando de sada
escreva.
Por fim, colocamos em prtica a construo de alguns algoritmos utilizando pseudocdigo. Na
construo desses algoritmos aplicamos os conceitos aprendidos no decorrer desta unidade.
importante que agora voc pratique um pouco sozinho fazendo as atividades de autoestudo.
No se esquea de dividir o problema em Entrada-Sada-Processamento para facilitar a

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

49

construo do algoritmo.

Histria da Programao: Como tudo comeou! SANTOS, R. PH. Disponvel em:


<http://www.techtudo.com.br/platb/desenvolvimento/2011/06/20/historia-da-programacao-como-tudo-comecou/>.
Para entender melhor como elaborar o teste de mesa ou simulao de um algoritmo.
Veja: <http://www.brasilacademico.com/ed/testemesa.htm>.

O aprendizado de algoritmos exige prtica. No se pode aprender copiando ou simplesmente olhando.

ATIvIDADE DE AuTOESTuDO
1 Construa um algoritmo utilizando a descrio narrativa para pagar uma conta de luz em um
caixa eletrnico.
2. Para os nomes de variveis abaixo, marque (C) para os corretos e (I) para os incorretos.
Para cada nome incorreto explique o que est errado.
(
(
(
(

) cidade
) endereo_nr
) media_peso%
) aluno-nota

(
(
(
(

) media idade
) a3
) endereo.cep
) B5

(
(
(
(

) nome2
) 4cidade
) cliente_nome
) 1234P

3. Elabore um algoritmo que leia, calcule e escreva a mdia aritmtica entre quatro nmeros.
4. Formule um algoritmo para ler um nmero positivo qualquer e apresentar o quadrado e a

50

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

raiz quadrada deste nmero. Dica: utilize as funes apresentadas.


5. Analise os algoritmos abaixo e escreva o resultado de sua execuo.

EXERCCIOS DE FIXAO
1. Elabore um algoritmo que leia um nmero inteiro e apresente o antecessor, o nmero e o
sucessor.
Objetivo do algoritmo: apresentar o antecessor e o sucessor de um nmero.
Entrada: ler um nmero inteiro.
Processamento: calcular o valor do nmero menos um (antecessor) e o valor do nmero
mais um (sucessor).

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

51

Sada: apresentar o antecessor, o nmero e o sucessor.


Quadro 19: Pseudocdigo Exerccio 1
Algoritmo numero
Var
num: inteiro
Incio
Escreva (Informe um nmero inteiro:)
Leia (num)
Escreva (O antecessor :, num -1)
Escreva (O nmero :, num )
Escreva (O sucessor :, num +1)
Fim.

2. Escreva um algoritmo que calcule a rea de um tringulo.


Objetivo do algoritmo: calcular a rea de tringulo.
Entrada: obter o valor da base e da altura do tringulo.
Processamento: calcular o valor da rea que dado por:
Sada: imprimir o valor da rea.

52

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Quadro 20: Pseudocdigo Exerccio 2


Algoritmo triangulo
Var
base, altura, area: real
Incio
Escreva (Informe a base do tringulo:)
Leia (base)
Escreva (Informe a altura do tringulo:)
Leia (altura)
area (base * altura)/2
Escreva (A rea do tringulo :, rea)
Fim.

3. Construa um algoritmo que leia o preo de um produto, o percentual de desconto e calcule


o valor a pagar e o valor do desconto.
Objetivo do algoritmo: calcular o valor a pagar de um produto.
Entrada: ler o preo de um produto e o percentual de desconto.
Processamento: calcular o valor do desconto e subtrair do preo do produto.
Sada: imprimir o valor a pagar do produto e o valor do desconto.

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

53

Quadro 21: Pseudocdigo Exerccio 3

4. Elabore um algoritmo que leia a quantidade de livros que uma locadora de livros possui e
o valor do aluguel por livro. Apresente as seguintes informaes: a) faturamento mensal se
todos os livros forem locados; b) faturamento anual se 20% dos livros no forem locados
todo ms.
Objetivo do algoritmo: calcular o faturamento mensal e o anual de uma locadora de livros.
Entrada: ler a quantidade de livros e o valor do aluguel.
Processamento: calcular o faturamento mensal considerando que todos os livros foram
locados e o faturamento anual considerando que 20% dos livros no sero locados.
Sada: imprimir o valor do faturamento mensal e o valor do faturamento anual.

54

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Quadro 22: Pseudocdigo Exerccio 4

5. Escreva um algoritmo que leia o valor da hora aula, o nmero de aulas dadas no ms e o
percentual de desconto do INSS. Calcule e apresente o salrio lquido e o salrio bruto.
Objetivo do algoritmo: calcular o salrio lquido e o salrio bruto de um professor.
Entrada: ler o valor da hora aula, o nmero de aulas dadas no ms e o percentual de desconto do INSS.
Processamento: calcular o salrio bruto que dado pelo produto do nmero de aulas pelo
valor da aula e calcular o salrio lquido que o salrio bruto menos o desconto do INSS.
Sada: imprimir o valor do salrio bruto e o valor do salrio lquido.

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

55

Quadro 23: Pseudocdigo Exerccio 5

6. Escreva um algoritmo que calcule a rea e o permetro de um crculo.


Objetivo do algoritmo: calcular a rea e o permetro de um crculo.
Entrada: ler o valor do raio.
Processamento: calcular a rea que dada por:
.

e permetro que dado por

Sada: imprimir o valor da rea e do permetro.

56

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Quadro 24: Pseudocdigo Exerccio 6

7. Elabore um algoritmo que leia um nmero inteiro e apresente a raiz quadrada e o valor
deste nmero elevado ao quadrado.
Objetivo do algoritmo: calcular a raiz quadrada e o valor do nmero elevado ao quadrado.
Entrada: ler um nmero inteiro.
Processamento: utilizar as funes SQR e SQRT para elevar ao quadrado e obter a raiz
quadrada, respectivamente.
Sada: imprimir raiz quadrada e o valor do nmero elevado ao quadrado.

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

57

Quadro 25: Pseudocdigo Exerccio 6

FORBELLONE, A.; EBERSPACHER, H. Lgica de Programao A Construo de Algoritmos e


Estruturas de Dados. So Paulo: Ed. Makron Books, 1993.

58

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Ttulo: Lgica de Programao A Construo de Algoritmos e Estruturas de Dados


Autores: Andr Luiz Villar Forbellone e Henri F. Eberspacher
Editora: Makron Books
Ano: 2005
Edio: 3
Nmero de pginas: 232
Sinopse: este livro introduz o leitor no universo da lgica aplicada programao de computadores.
Ao final do estudo, o aluno estar capacitado a construir algoritmos, assim como a assimilar mais facilmente qualquer linguagem de programao existente ou futura. O texto no requer nenhum conhecimento prvio de informtica e independente de caractersticas de mquina. Cada captulo conta
com exerccios de fixao, que visam sedimentar os assuntos de cada subitem, e com exerccios propostos, que cobrem todo o contedo do captulo. No anexo encontram-se resolues dos exerccios
de fixao. A pseudolinguagem utilizada intencionalmente prxima das linguagens de programao
comumente adotadas como primeira linguagem, para facilitar a posterior traduo e implementao
prtica.
FARREL, Joyce. Lgica e Design de Programao. Cengage Learning.

Ttulo: Lgica e Design de Programao


Autora: Joyce Farrell
Editora: Cengage Learning
Ano: 2009
Edio: 1
Pginas: 432
Assunto: Informtica-Programao
Sinopse: Lgica e Design de Programao um guia de desenvolvimento de lgicas estruturadas
para o programador iniciante. Sua leitura no pressupe nenhuma experincia com linguagens de programao nem conhecimento matemtico avanado. A obra contm muitos exemplos provenientes da
rea de negcios, que ajudam os estudantes a obter um conhecimento slido em lgica, independentemente da linguagem de programao usada. Suas principais caractersticas incluem: - A lgica usaALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

59

da no livro pode ser aplicada em qualquer linguagem de programao. - Fluxogramas, pseudocdigos


e muitas ilustraes tornam o aprendizado mais fcil - O cone No Faa Isso destaca os erros mais
comuns, ajudando os estudantes a evit-los. - A sesso Zona de Jogos incentiva os leitores a criarem
jogos usando os conceitos aprendidos. - Cinco apndices permitem que os estudantes tenham experincias adicionais de estruturar grandes programas desestruturados, criar formulrios de impresso,
usar o sistema binrio de numerao, trabalhar com grandes tabelas de decises e testar softwares.

60

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

UNIDADE II

ESTRUTURA CONDICIONAL
Professora Me. Gislaine Camila Lapasini Leal
Objetivos de Aprendizagem
Conhecer a estrutura condicional simples.
Conhecer a estrutura condicional composta.
Conhecer a estrutura condicional aninhada.
Conhecer a estrutura de deciso mltipla.
Elaborar algoritmos utilizando estrutura condicional.
Plano de Estudo
A seguir, apresentam-se os tpicos que voc estudar nesta unidade:
Estrutura condicional
Estrutura condicional simples
Estrutura condicional composta
Estrutura condicional aninha
Estrutura de deciso mltipla

INTRODUO
Nesta unidade voc estudar a estrutura condicional conhecendo a estrutura condicional
simples, composta, aninhada e de deciso mltipla. Com os conhecimentos adquiridos
na Unidade I conseguamos construir algoritmos que a partir da entrada, os dados eram
processados e apresentavam algumas informaes na sada, isto , algoritmos sequenciais.
Nos algoritmos sequenciais o fluxo seguido de modo sequencial, ou seja, todas as instrues
eram executadas uma a uma. No conseguamos impor condies para a execuo das
instrues. Se pararmos para pensar em diversas situaes temos que realizar uma verificao,
analisar o resultado desta verificao para saber que caminho seguir, ou seja, temos desvios
de fluxo. Isso acontece quando vamos comprar um carro, por exemplo, dependendo do valor
da entrada a taxa de juros pode ser maior ou menor. Quando temos que apresentar a mdia
escolar de um aluno e tomar a deciso se ele est aprovado, reprovado ou de exame. No
conseguimos tratar essas duas situaes utilizando apenas os conceitos de variveis, tipos de
variveis, constantes, comando de atribuio, entrada e sada de dados. Precisamos de uma
estrutura que nos permita impor condies para a execuo de uma determinada instruo, ou
ainda, criar condies que possibilitem desviar o fluxo.
Estudaremos a estrutura condicional simples que nos permite tomar uma deciso. A estrutura
condicional composta que a partir de uma expresso podemos seguir dois caminhos, um
quando o resultado do teste verdadeiro e outro quando o resultado falso. A estrutura
condicional aninhada ou encadeada que nos permite estabelecer verificao de condies
sucessivas. E a estrutura de deciso mltipla que uma generalizao da estrutura condicional
composta em que pode haver uma ou mais condies a serem testadas e cada uma delas
pode ter uma instruo diferente associada. Alm disso, veremos a tabela verdade para cada
um dos operadores lgicos e como construir expresses relacionais e lgicas. Os operadores
e expresses foram vistos na Unidade I, se voc ficou com alguma dvida no se preocupe,
pois ao longo desta unidade revisaremos estes conceitos.

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

63

Ao estudar cada estrutura condicional veremos um exemplo e construiremos algoritmos para


visualizar a aplicao dos conceitos estudados. Ao final desta unidade poderemos formular
algoritmos mais elaborados, com desvios de fluxo o que nos possibilitar desenvolver solues
para uma gama maior de problemas.

ESTRUTURA CONDICIONAL
At o momento, os nossos algoritmos apresentavam um padro em que a partir dos dados de
entrada, esses eram processados e na sada mostrvamos algumas informaes. O fluxo era
seguido sequencialmente, sem nenhum desvio, ou seja, todas as instrues eram executadas.
No entanto, em muitas situaes necessitamos realizar algum teste antes de efetuar um
processamento.

Vamos analisar a retirada de dinheiro em um caixa eletrnico. Aps inserir o carto solicitado
que a senha seja digitada. Se a senha digitada estiver correta poderemos efetuar o saque. Caso
a senha esteja errada receberemos mensagem informando que a senha invlida. Notem
que nesta situao no conseguimos representar apenas com o conhecimento adquirido na
Unidade I. Em situaes como esta precisamos utilizar uma estrutura que nos permita fazer
verificaes para ento saber que instrues devem ser executadas.

64

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

A estrutura que permite desviar o fluxo do programa denominada de estrutura condicional,


estrutura de seleo ou estrutura de controle (MANZANO; OLIVEIRA, 1997; ASCENCIO;
CAMPOS, 2010).
A estrutura condicional consiste em uma estrutura de controle de fluxo que permite executar
um ou mais comandos se a condio testada for verdadeira ou executar um ou mais comandos
se for falsa. Essa estrutura divide-se em estrutura simples e estrutura composta, as quais
veremos a seguir (LOPES; GARCIA 2002).

ESTRUTURA CONDICIONAL SIMPLES


Na estrutura condicional simples o comando s ser executado se a condio for verdadeira.
A sintaxe do comando :
Se (<Condio>) ento

<instrues para condio verdadeira>

fim_se
A estrutura condicional simples tem por finalidade tomar uma deciso. De modo que
se a condio que est sendo testada for verdadeira so executadas todas as instrues
compreendidas entre o se e o fim_se (MANZANO; OLIVEIRA, 1997). Ao trmino da execuo
o algoritmo segue o primeiro comando aps o fim_se. Se a condio que est sendo testada
for falsa o algoritmo executa a primeira instruo aps o fim_se, no executando as instrues
compreendidas entre o se e o fim_se.
Vamos analisar o algoritmo apresentado no Quadro 26. Consideremos o valor de A como 15,
desta forma ao testar a condio dada pela expresso A > 10, retorna um valor verdadeiro.
Com isto, temos a execuo do comando escreva que est compreendido entre o se e o
fim_se. Agora, tomemos A com valor 3. Ao testar a condio A >10 o valor retornado falso.

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

65

Deste modo, no executada a instruo entre o se e o fim_se.


Quadro 26: Pseudocdigo - Exemplo Estrutura Condicional Simples
Algoritmo exemplo
Var
: inteiro

A
Incio

Leia (A)
Se (A > 10) ento
Escreva (A maior que 10)
Fim_se
Fim.

De acordo com Lopes e Garcia (2002), a condio uma expresso lgica, portanto ao
ser testada devolve como resposta o valor verdadeiro ou falso. Uma condio pode ser
representada por uma expresso relacional ou por uma expresso lgica formada por pelo
menos duas expresses relacionais. Os operadores relacionais vistos na Unidade I so >, <, =,
>=, <= e <>. J os operadores lgicos so E, OU e NO.
Agora fica mais clara a aplicao dos operadores relacionais e como eles so utilizados em
nossos algoritmos. Alguns exemplos de expresso relacional so:
X > 16
A<B
Sexo = F
Resposta <> Sim

66

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Quando nossa condio uma expresso lgica temos pelo menos duas expresses
relacionais que esto ligadas por um operador lgico. Voc se recorda do funcionamento dos
operadores lgicos? O operador E resulta em verdadeiro somente quando as duas condies
so verdadeiras, como pode ser visto na tabela verdade apresentada no Quadro 27.
Quadro 27: Tabela Verdade - Operador E
Operador E
Condio 1

Condio 2

Resultado

Verdadeiro

Verdadeiro

Verdadeiro

Verdadeiro

Falso

Falso

Falso

Verdadeiro

Falso

Falso

Falso

Falso

Fonte: adaptado de (MANZANO; OLIVEIRA, 1997)

O operador OU resulta em verdadeiro quando pelo menos uma das condies verdadeira.
Sendo o resultado falso apenas quando as duas condies so falsas, como pode ser
visualizado no Quadro 28.
Quadro 28: Tabela Verdade - Operador OU
Operador OU
Condio 1

Condio 2

Resultado

Verdadeiro

Verdadeiro

Verdadeiro

Verdadeiro

Falso

Verdadeiro

Falso

Verdadeiro

Verdadeiro

Falso

Falso

Falso

Fonte: adaptado de (MANZANO; OLIVEIRA, 1997)

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

67

E o operador NO funciona como a negao do resultado, ou seja, inverte o resultado lgico.


Segundo Manzano (2000), esse operador utilizado em situaes em que se necessita
estabelecer que uma dada condio deve no ser verdadeira ou deve no ser falsa. A tabela
verdade para este operador apresentada no Quadro 29. Observe que o NO um operador
unrio, ou seja, tem apenas uma condio.
Quadro 29: Tabela Verdade - Operador NO
Operador NO
Condio

Resultado

Verdadeiro

Falso

Falso

Verdadeiro

Fonte: adaptado de (MANZANO; OLIVEIRA, 1997)

A partir do entendimento da tabela verdade de cada um dos operadores lgicos vamos ver
exemplos de expresso lgica:
(X >= 1) E (X <=20)
(Sexo = F) OU (Sexo = f)
NO (X>5)
Note que as expresses lgicas so compostas utilizando operadores relacionais e lgicos.
Agora que conhecemos a sintaxe da estrutura condicional simples e sabemos como montar
condies, vamos formular nosso primeiro algoritmo contendo desvio de fluxo.
O problema consiste em identificar se um nmero inteiro um nmero par e ento imprimir a
metade do nmero.

68

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Retomando nossos passos para a construo de algoritmos temos que:


Objetivo do algoritmo: verificar se o nmero par e imprimir a metade deste nmero.
Entrada: obter um nmero.
Processamento: verificar se o nmero par.
Sada: imprimir a metade do nmero, caso ele seja par.
O que um nmero par? Um nmero par um nmero inteiro mltiplo de 2, ou seja, um
nmero cuja diviso por 2 resulte em resto igual a 0.
A entrada de dados consiste em obter um nmero inteiro, o qual denominaremos de N. O
processamento consiste em encontrar o resto da diviso deste nmero por 2 e verificar se
igual a zero. Como faremos isso? Voc se recorda de alguma funo que faz isso? Na Unidade
I vimos o operador MOD, que retorna o resto da diviso de dois nmeros inteiros.
Se o resto for igual a zero calcularemos a metade deste nmero. E a sada consistir em
imprimir a metade do nmero. Se o resto for diferente de zero no ser executada nenhuma
instruo e tambm no haver sada.
Uma soluo para este problema apresentada no Quadro 30, em que podemos visualizar o
uso da estrutura condicional simples.

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

69

Quadro 30: Pseudocdigo - Algoritmo Par

Neste algoritmo utilizamos os conceitos que j conhecamos (variveis, tipos de variveis,


atribuio, comando de entrada e sada de dados), agregando a estrutura condicional.
Em relao ao algoritmo apresentado, podemos colocar uma instruo escreva aps o fim_se
dizendo que o nmero mpar? No, pois para qualquer nmero obtido na entrada, indiferente
de ser par ou mpar, a mensagem seria impressa. Devemos lembrar que aps o fim_se o fluxo
do algoritmo segue normalmente, sendo executada instruo a instruo.
Por que a varivel metade foi declarada como inteira e no como real? A metade de qualquer
nmero par sempre um nmero inteiro. Como a operao est sendo executada apenas se
o nmero par, no h problema. Se a instruo que calcula a metade fosse executada fora
da estrutura condicional a varivel deveria ser real. Por exemplo, se o nmero 3 fosse obtido
na entrada a metade seria 1.5, que no um nmero inteiro.

70

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Precisamos essa varivel denominada metade? E a varivel resto? No, podemos realizar o
teste lgico a partir da expresso relacional, no sendo necessria a varivel metade. Quanto
a varivel resto, podemos enviar como sada a operao que calcula a metade. Com isto,
teramos um algoritmo que utiliza apenas uma varivel e duas operaes de atribuio menos,
como pode ser visto no Quadro 31.
Quadro 31: Pseudocdigo - Algoritmo Par
Algoritmo par
Var
n: inteiro
Incio
Escreva (Digite um nmero:)
Leia (n)
Se (n mod 2 = 0) ento
Escreva (A metade do nmero :, n/2)
Fim_se
Fim.

ESTRUTURA CONDICIONAL COMPOSTA


Na estrutura condicional composta realizada a avaliao de uma nica expresso lgica.
Se o resultado desta avaliao for verdadeiro executado a instruo ou o conjunto de
instrues compreendido entre o comando se e o seno. Se o resultado da avaliao for falso
executado a instruo ou o conjunto de instrues entre o seno e o fim_se (MANZANO;
OLIVEIRA, 1997).
A sintaxe da estrutura condicional composta :

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

71

Se (<Condio>) ento

<instrues para condio verdadeira>

Seno

<instrues para condio falsa>

fim_se
Agora que voc conhece a estrutura condicional composta, podemos construir um algoritmo
para verificar se um nmero inteiro par ou mpar. O Quadro 32 apresenta o pseudocdigo
para verificar se um nmero par ou mpar.
Quadro 32: Pseudocdigo - Algoritmo parimpar
Algoritmo parimpar
Var
n: inteiro
Incio
Escreva (Digite um nmero:)
Leia (n)
Se (n mod 2 = 0) ento
Escreva (O nmero par)
Seno
Escreva (O nmero mpar)
Fim_se
Fim.

72

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Se o resultado do teste da expresso relacional n mod 2 = 0 for verdadeiro executada a


instruo que se encontra entre o se o fim_se, ou seja, escreva o nmero par. Caso o
resultado do teste seja falso executada a instruo que se encontra em o seno e o fim_se,
escreve O nmero mpar. Por exemplo, se o nmero obtido na entrada for 5 temos que 5
mod 2 igual a 1, ou seja, o teste da expresso resulta em falso, logo ser impresso que O
nmero mpar.
Na estrutura condicional composta podem ser utilizadas expresses relacionais e expresses
lgicas, tal como na estrutura condicional simples.
Antes de conhecer outros tipos de estrutura condicional vamos praticar mais a construo de
algoritmos utilizando expresses lgicas. O problema consiste em: dado um nmero inteiro
verificar se ele est compreendido entre 20 e 90.
No processo de resoluo seguiremos os seguintes passos:
Objetivo do algoritmo: verificar se o nmero est compreendido entre 20 e 90.
Entrada: obter um nmero inteiro.
Processamento: verificar se o nmero est entre 20 e 90.
Sada: imprimir se o nmero est dentro ou fora da faixa de 20 a 90.
Para identificar o nmero de variveis devemos observar o que requerido na entrada e no
processamento, neste caso temos que a entrada um nmero inteiro (denominadores varivel
n do tipo inteiro) e o processamento pode ser realizado usando apenas expresses lgicas,
portanto no precisamos de mais variveis.
A verificao se o nmero est na faixa entre 20 e 90, pode ser descrita como: n tem que ser
maior que 20 e menor do que 90. Com isto, temos duas expresses relacionais: n > 20 e n <
90.

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

73

A sada de dados consiste em imprimir se o nmero est ou no dentro dos limites dessa faixa.
O Quadro 33 apresenta o algoritmo para o problema descrito.
Quadro 33: Pseudocdigo - Algoritmo faixa

Algoritmo faixa
Var
n: inteiro
Incio
Escreva (Digite um nmero inteiro:)
Leia (n)
Se (n > 20) e (n < 90) ento
Escreva (O nmero est na faixa entre 20 e 90)
Seno
Escreva (O nmero est fora da faixa)
Fim_se
Fim.
Considerando n com valor 27, temos uma expresso lgica composta por duas expresses
relacionais (condies) unidas pelo operador E. Voc se recorda como esse operador
funciona? Dadas duas condies o resultado verdadeiro se e somente se as duas forem
verdadeiras. O Quadro 34 representa a expresso lgica da estrutura condicional, em que
27 > 20 verdadeiro e 27 < 90 tambm verdadeiro, o que resulta em verdadeiro. Como o

74

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

resultado do teste lgico verdadeiro temos a execuo do fluxo compreendido entre o se e o


seno, ou seja, a mensagem O nmero est na faixa entre 20 e 90.
Quadro 34: Representao da Expresso Lgica
Operador E
Condio 1

Condio 2

Resultado

27 > 20

27 < 90

Verdadeiro

E se na entrada recebssemos o nmero 20? Vamos analisar cada uma das expresses
relacionais (Quadro 35). Temos 20 > 20, uma expresso que resulta em verdadeiro ou falso?
falso, pois 20 igual a 20 e no maior. Na segunda expresso temos 20 < 90, que resulta
em verdadeiro. Essas expresses esto unidas pelo operador E sendo uma delas falsa e a
outra verdadeira, o resultado do teste lgico falso. Com isto, temos a execuo da instruo
compreendida entre o seno e o fim_se, O nmero est fora da faixa.
Quadro 35: Representao da Expresso Lgica
Operador E
Condio 1

Condio 2

Resultado

20 > 20

20 < 90

Falso

ESTRUTURA CONDICIONAL ANINHADA


Agora que voc j conhece a estrutura condicional simples e a composta, vamos conhecer a
estrutura condicional aninhada ou encadeada. Essa estrutura utilizada quando precisamos
estabelecer a verificao de condies sucessivas, em que uma determinada ao poder

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

75

ser executada se um conjunto anterior de instrues ou condies for satisfeito. A execuo


da ao pode, tambm, estabelecer novas condies. E o que isso quer dizer? Que podemos
utilizar uma condio dentro de outra, ou seja, a estrutura pode possuir diversos nveis de
condio (MANZANO; OLIVEIRA, 1997).
LOPES; GARCIA (2002) destacam que essa estrutura utilizada quando sentimos a
necessidade de tomar decises dentro de uma das alternativas de uma condio.
Vamos visualizar a estrutura condicional aninhada em um problema que consiste em encontrar
o maior nmero dentre trs nmeros. Seguindo o mtodo de estruturao do problema visto
na Unidade I, temos que:
Objetivo do algoritmo: encontrar o maior nmero.
Entrada: obter trs nmeros inteiros.
Processamento: comparar os nmeros e armazenar o valor do maior.
Sada: imprimir o maior nmero.
A entrada de dados consiste em ler trs nmeros inteiros, os quais armazenaremos em variveis
denominadas A, B e C. Para encontrar qual o maior nmero precisamos realizar comparaes
utilizando expresses relacionais do tipo: A > B e armazenar o valor do maior nmero em uma
varivel, a qual chamaremos de max. A sada consiste em enviar uma mensagem contendo o
valor do maior nmero, que est armazenado na varivel max. O algoritmo para o problema
apresentado no Quadro 36.

76

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Quadro 36: Pseudocdigo - Algoritmo maior

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

77

Se voc no entendeu o funcionamento do algoritmo, fique tranquilo veremos passo a passo


a estrutura condicional do problema em questo. Na Figura 5 temos a representao da
estrutura condicional aninhada, os colchetes em azul representam a estrutura condicional
composta, em que o trecho 1 executado quando o resultado da expresso relacional A > B
verdadeiro. O trecho 2 apresenta o conjunto de instrues que executado quando o resultado
da expresso relacional falso. Note que tanto no trecho 1 quanto no trecho 2, temos outra
estrutura condicional, representada pelos trechos 3 e 4. A estrutura condicional do trecho 3
s executada se A > B resultar em verdadeiro. Em seguida, verificado se A > C, em caso
verdadeiro executada a instruo em que atribudo o valor de a para a varivel max. Se
A > C for avaliado como falso executada a instruo em que o valor de C atribudo para a
varivel max.

Se (a > b) ento
Se ( a > c) ento
max:= a
seno
3
max:=c
fimse
seno
Se ( b > c ) ento
max:=b
seno
4
max:=c
fimse
fimse

Figura 5: Estrutura condicional aninhada


Podemos resolver o problema de encontrar o maior nmero dentre trs nmeros sem utilizar
a estrutura condicional aninhada? Sim, podemos, porm ser executado um maior nmero de
verificaes, como pode ser visto no algoritmo do Quadro 37.

78

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Quadro 37: Pseudocdigo - Algoritmo maior

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

79

Teste o funcionamento dos dois algoritmos supondo a=5, b=3 e c=12. Qual a vantagem de
utilizar a estrutura condicional aninhada? A grande vantagem que o uso destes encadeados
melhora o desempenho do algoritmo, isto , torna o algoritmo mais rpido por realizar menos
testes e comparaes. Ou ainda, executar um menor nmero de passos para chegar soluo
do problema.

ESTRUTURA DE DECISO MLTIPLA


A estrutura de deciso mltipla tambm denominada de estrutura de deciso do tipo escolha
consiste em uma generalizao do Se, em que somente uma condio era avaliada e dois
caminhos poderiam ser seguidos, um para o resultado da avaliao ser verdadeiro e outro para
falso. Na estrutura de deciso mltipla pode haver uma ou mais condies a serem avaliadas e
um comando diferente associado a cada uma delas (LOPES; GARCIA, 2002).
A sintaxe dessa estrutura (MANZANO; OLIVEIRA, 1997):
caso <varivel>
seja <valor 1> faa <instruo 1>
seja <valor 2> faa < instruo 2>
seja <valor N> faa < instruo N>
seno < instruo >
Fim_caso
Nesta estrutura o termo <varivel> indica a varivel a ser controlada, o termo <valor> o
contedo da varivel que est sendo analisado e o termo <instruo> refere-se a instruo que
ser executada. O funcionamento desta estrutura consiste em ao entrar-se em uma construo
do tipo Caso, o caso1 testada: se for verdadeira, a instruo 1 executada e aps seu

80

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

trmino, o fluxo de execuo prossegue pela primeira instruo aps o final da construo
(fim_caso); se o caso1 for falsa, o caso2 testado: se esta for verdadeira, a instruo 2
executada e ao seu trmino, a execuo prossegue normalmente pela instruo seguinte ao
final da construo (fim_caso). De modo anlogo ocorre para os demais casos da estrutura.
Lopes e Garcia (2002) destacam que esse tipo de estrutura bastante utilizado na construo
de menus, tornando-os mais claros.
Vamos elaborar um algoritmo para dado um nmero inteiro escrever o ms correspondente. Se
for digitado um nmero fora desse intervalo, dever aparecer uma mensagem informando que
no existe ms com este nmero. Retomando o nosso modelo de estruturao de problemas,
temos que:
Objetivo do algoritmo: retornar o ms equivalente ao nmero digitado.
Entrada: obter um nmero inteiro.
Processamento: verificar se o nmero digitado est entre 1 e 12.
Sada: imprimir o ms equivalente por extenso.
Na entrada de dados temos um nmero inteiro, que nomearemos com varivel num. O
processamento consiste em verificar se o nmero digitado est entre 1 e 12 e como sada
escrever por extenso o ms correspondente. No Quadro 38 temos o pseudocdigo para o
problema em questo.

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

81

Quadro 38: Pseudocdigo - Algoritmo ms


Algoritmo mes
Var
num: inteiro
Incio
Escreva (Digite um nmero de 1 a 12:)
Leia (num)
Caso (num)
Seja 1 faa Escreva (Janeiro)
Seja 2 faa Escreva (Fevereiro)
Seja 3 faa Escreva (Maro)
Seja 4 faa Escreva (Abril)
Seja 5 faa Escreva (Maio)
Seja 6 faa Escreva (Junho)
Seja 7 faa Escreva (Julho)
Seja 8 faa Escreva (Agosto)
Seja 9 faa Escreva (Setembro)
Seja 10 faa Escreva (Outubro)
Seja 11 faa Escreva (Novembro)
Seja 12 faa Escreva (Dezembro)
Seno

Escreva (O nmero digitado no corresponde a nenhum ms)

Fim_caso
Fim.

82

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Retomando um pouco o conhecimento sobre variveis, no algoritmo acima, podemos alterar o


nome da varivel num para mes? No, pois o nome do algoritmo se chama mes. Se quisermos
declarar a varivel como mes temos que modificar o nome do programa. Lembre-se no
podemos ter nome de identificados (varivel, constante, programa, rotinas e outros) repetidos.

Ainda analisando o algoritmo que utiliza a estrutura de deciso mltipla, voc acha que
podemos escrev-lo de outra forma? Como ficaria o algoritmo se utilizssemos apenas a
estrutura condicional simples?
H pelo menos mais duas formas de resolv-lo utilizando a estrutura condicional simples ou
a estrutura encadeada. A construo do algoritmo utilizando apenas a estrutura condicional
simples pode ser visualizada no Quadro 39.

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

83

Quadro 39: Pseudocdigo - Algoritmo ms

Algoritmo mes2
Var
num: inteiro
Incio
Escreva (Digite um nmero de 1 a 12:)
Leia (num)
Se (num = 1) ento
Escreva (Janeiro)
Fim_se
Se (num = 2) ento
Escreva (Fevereiro)
fim_se
Se (num = 3) ento
Escreva (Maro)
Fim_se
Se (num = 4) ento
Escreva (Abril)
Fim_se
Se (num = 5) ento
Escreva (Maio)
Fim_se
Se (num = 6) ento
Escreva (Junho)

84

Fim_se

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Escreva (Abril)
Fim_se
Se (num = 5) ento
Escreva (Maio)
Fim_se
Se (num = 6) ento
Escreva (Junho)
Fim_se
Se (num = 7) ento
Escreva (Julho)
Fim_se
Se (num = 8) ento
Escreva (Agosto)
Fim_se
Se (num = 9) ento
Escreva (Setembro)
Fim_se
Se (num = 10) ento
Escreva (Outubro)
Fim_se
Se (num = 11) ento
Escreva (Novembro)
Fim_se
Se (num = 12) ento
Escreva (Dezembro)
Fim_se
Se (num < > 1 ) e (num < > 2) e (num < >3) e (num < >4) e (num < >5) e (num< >6) e
(num< ALGORITMOS
>7) e (num< >8) eE(num
< > 9) DE
e (num
< > 10) e (num< >11)
e (num< >12)
LGICA
PROGRAMAO
I | Educao
a ento
Distncia

85

Escreva (Novembro)
Fim_se
Se (num = 12) ento
Escreva (Dezembro)
Fim_se
Se (num < > 1 ) e (num < > 2) e (num < >3) e (num < >4) e (num < >5) e (num< >6) e
(num< >7) e (num< >8) e (num < > 9) e (num < > 10) e (num< >11) e (num< >12) ento
Escreva (O nmero digitado no corresponde a nenhum ms)
fim_se
Fim.

Os algoritmos apresentados no Quadro 38 e Quadro 39 so soluo para o problema. Voc


sabe qual a diferena entre eles? Supondo que o nmero digitado tenha sido 3. No primeiro
algoritmo acontecesse a verificao Caso 1, Caso 2 e Caso 3. Como Caso 3 verdadeiro
ocorre a execuo da instruo Escreva Maro e o fluxo de execuo segue para o fim_caso,
isto , os demais casos no so testados. No segundo algoritmo temos que todas as instrues
sero verificadas. Desta forma, a diferena entre os dois algoritmos est no desempenho,
no nmero de instrues que ser executada e isso impacta no tempo de execuo dos
nossos programas. Portanto, importante que voc escreva algoritmos eficientes. Voc j se
perguntou como fazer um algoritmo eficiente? Um algoritmo eficiente utiliza apenas o nmero
necessrio de variveis j que cada varivel consiste um espao de memria reservado. Alm
disso, podemos associar a eficincia com o nmero de instrues que o algoritmo executa
para resolver um problema. Com isto, temos que no devemos declarar variveis que no
sero utilizadas e dar preferncia estrutura condicional aninha ou de escolha mltipla, ao
invs de construir vrias estruturas simples.

86

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

CONSIDERAES FINAIS
Nesta unidade voc aprendeu a construir algoritmos com desvios de fluxo, isto , algoritmos
em que podemos impor condies execuo de uma determinada instruo a um teste.
Essa estrutura que nos possibilita desviar o fluxo do programa conhecida na literatura como
estrutura condicional, estrutura de seleo ou estrutura de controle.
Estudamos quatro formas de estrutura condicional: estrutura condicional simples, estrutura
condicional composta, estrutura condicional encadeada e estrutura de deciso mltipla. Na
estrutura condicional simples vimos que as instrues s sero executadas se a condio que
est sendo avaliada for verdadeira. A sintaxe dessa estrutura sintaxe dada por:
Se (<Condio>) ento

<instrues para condio verdadeira>

fim_se
Na estrutura condicional composta vimos que realizada a avaliao de uma nica condio.
No entanto, temos dois caminhos para seguir, um quando o resultado da instruo verdadeiro
e outro quando falso. A sintaxe da estrutura condicional composta :
Se (<Condio>) ento

<instrues para condio verdadeira>

Seno

<instrues para condio falsa>

fim_se
Aprendemos que a estrutura aninhada usada quando temos que estabelecer verificaes
sucessivas, isto , quando uma ao s poder ser executada se um conjunto anterior de
condies for satisfeito. Alm disso, estudamos que o uso desta estrutura torna o algoritmo
mais rpido devido ao fato de executar um menor nmero de passos para chegar soluo
do problema.
Vimos tambm a estrutura de deciso mltipla, uma generalizao da estrutura Se, em que
ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

87

pode haver uma ou mais condies a serem testadas e um comando associado a cada uma
delas. A sintaxe dessa estrutura :
Caso <varivel>
seja <valor 1> faa <instruo 1>
seja <valor 2> faa < instruo 2>
seja <valor N> faa < instruo N>
seno < instruo >
Fim _caso
Alm da estrutura condicional, trabalhamos a construo de expresses relacionais e lgicas,
as quais so utilizadas na construo de condies. Entendemos, tambm, a tabela verdade
dos operadores lgicos E, OU e NO.
Ao longo desta unidade construmos algoritmos utilizando todos os conceitos aprendidos e,
tambm, discutimos que estrutura condicional mais adequada para cada situao. Como
o aprendizado de algoritmos requer prtica, importante que voc faa as atividades de
autoestudo para exercitar o raciocnio lgico.

Para facilitar a leitura de um algoritmo, normalmente so adicionados espaos em branco no incio de


um bloco de comandos para mostrar quais instrues esto dentro dele, a este recurso denominamos
identao. Para saber um pouco mais, leia o contedo disponvel em:
<http://pt.wikipedia.org/wiki/Indenta%C3%A7%C3%A3o>.

88

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Na soluo de um problema fundamental estudar as vrias opes de algoritmos a serem utilizados,


pois os aspectos de tempo e espao so consideraes importantes que devem ser vistas com
ateno (ZIVIANE, 2004).

ATIvIDADE DE AuTOESTuDO
1. Formule um algoritmo que leia a matrcula e nome de um vendedor, seu salrio fi xo e o total
de vendas e calcule a comisso do vendedor. Se o total de vendas inferior a R$ 1500,00
o percentual de comisso 2% e se for maior o percentual de 4%. Apresente o nome do
vendedor, matrcula, salrio fi xo e salrio total.
2. Escreva um algoritmo que leia um nmero e informe se ele divisvel por 3 e por 7.
3. Formule um algoritmo que leia cinco nmeros e conte quantos deles so negativos.
4. De acordo com uma tabela mdica, o peso ideal est relacionado com a altura e o sexo.
Elabore um algoritmo que receba altura e sexo de uma pessoa e calcule e imprima o seu
peso ideal, sabendo que:
Para homens

(72.7 x altura) -58

Para mulheres

(62.1 x altura) -44.7

5. Elabore um algoritmo que leia o percurso em quilmetros, o tipo de moto e informe o consumo estimado de combustvel, sabendo que uma moto do tipo A faz 26 km com um litro de
gasolina, uma moto do tipo B faz 20 km e o tipo C faz 7 km.
6. Uma instituio fi nanceira conceder crdito a uma taxa de juros de 3% aos seus clientes
de acordo com o saldo mdio do perodo. Elabore um algoritmo que calcule o valor que
pode ser concedido ao cliente e imprima-o. Os clientes com saldo mdio inferior a R$
500,00 no tm direito a crdito. J os clientes com saldo entre R$ 501,00 e R$ 1000,00
podem obter crditos de 35% em relao ao saldo mdio. Clientes com saldo entre R$
1001,00 a R$ 3000,00 podem obter crditos de 50% em relao ao saldo mdio. E para
aqueles clientes com saldo superior a R$ 3001,00 pode ser concedido crdito de 75% do
valor do saldo.
ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

89

EXERCCIOS DE FIXAO
1. Construa um algoritmo que receba o nome e a idade de uma pessoa e informe se menor
de idade, maior de idade ou idoso.
Objetivo do algoritmo: informar se a pessoa menor de idade, maior ou idoso.
Entrada: ler nome e idade.
Processamento: verificar se a idade menor que 18 (menor de idade), entre 18 e 64 anos
(maior de idade) ou maior ou igual a 65 anos (idoso).
Sada: escrever se a pessoa menor de idade, maior ou idoso.
Quadro 40: Pseudocdigo Exerccio 1
Algoritmo verificaidade
Var
idade: inteiro
nome: caractere[30]
Incio
Escreva (Digite o nome:)
Leia (nome)
Escreva (Digite a idade:)
Leia (idade)
Se (idade > = 65) ento
Escreva (Idoso)
Seno
Se (idade < 18) ento
Escreva (Menor de idade)
Seno
Escreva (Maior de idade)
Fim_se
Fim_se
Fim.

90

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

2. Elabore um algoritmo que receba a idade de uma pessoa e identifique sua classe eleitoral:
no eleitor (menor que 16 anos de idade), eleitor obrigatrio (entre 18 e 65 anos) e eleitor
facultativo (entre 16 e 18 anos e maior que 65 anos).
Objetivo do algoritmo: verificar a classe eleitoral de uma pessoa.
Entrada: ler idade.
Processamento: verificar se a idade menor que 16 (no eleitor), entre 18 e 65 anos
(eleitor obrigatrio) ou entre 16 e 18 ou maior que 65 anos (eleitor facultativo).
Sada: escrever a classe eleitoral.
Quadro 41: Pseudocdigo Exerccio 2
Algoritmo classeeleitoral
Var
idade: inteiro
Incio
Escreva (Digite a idade:)
Leia (idade)
Se (idade < 16) ento
Escreva (No eleitor)
Seno
Se (idade > 65) ou (idade < 18) ento
Escreva (Eleitor facultativo)
Seno
Escreva (Eleitor obrigatrio)
Fim_se
Fim_se
Fim.
ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

91

3. Escreva um algoritmo que calcule o IMC de uma pessoa e identifique se a pessoa est
abaixo do peso (IMC menor que 20), normal (IMC entre 20 e 25), com excesso de peso
(IMC entre 26 e 30), obesa (IMC entre 31 e 35) ou com obesidade mrbida (acima de 35).
.
O clculo do IMC dado por:
Objetivo do algoritmo: verificar a faixa de risco de uma pessoa a partir do IMC.
Entrada: ler peso e altura.
Processamento: verificar se o IMC menor que 20 (abaixo do peso), entre 20 e 25 (normal), entre 26 e 30 (excesso de peso), entre 31 e 35 (obesidade) ou acima de 35 (obesidade mrbida).
Sada: imprimir a faixa de risco da pessoa.
Quadro 42: Pseudocdigo Exerccio 3

92

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

4. Elabore um algoritmo que receba o salrio de um funcionrio e o cdigo do cargo e


apresente o cargo, o valor do aumento e o novo salrio. A Tabela abaixo apresenta os
cargos.

Cdigo

Cargo

Percentual do aumento

Servios gerais

50%

Vigia

30%

Recepcionista

25%

Vendedor

15%

Objetivo do algoritmo: calcular o aumento de salrio de acordo com o cargo.


Entrada: ler salrio e cdigo do cargo.
Processamento: calcular o aumento salarial de acordo com o cargo da pessoa.
Sada: imprimir o cdigo do cargo, nome do cargo, valor do aumento e novo salrio.
ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

93

Quadro 43: Pseudocdigo Exerccio 4


Algoritmo reajuste
Var
cargo: inteiro
salario, reajuste, aumento: real
Incio
Escreva (Digite o cargo:)
Leia (cargo)
Escreva (Digite o salrio:)
Leia (salario)
Se (cargo = 1) ento
Escreva (Cdigo do cargo:, cargo)
Escreva (Servios gerais)
aumento salario * (50/100)
reajuste salario + aumento
Escreva (O aumento de:, aumento)
Escreva (O novo salrio :, reajuste)
Seno
Se (cargo = 2) ento
Escreva (Cdigo do cargo:, cargo)
Escreva (Vigia)
aumento

salario * (30/100)

reajuste salario + aumento


Escreva (O aumento de:, aumento)
Escreva (O novo salrio :, reajuste)

94

seno

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Se (cargo = 3) ento

Escreva (O aumento de:, aumento)


Escreva (O novo salrio :, reajuste)
seno
Se (cargo = 3) ento
Escreva (Cdigo do cargo:, cargo)
Escreva (Recepcionista)
aumento salario * (25/100)
reajuste salario + aumento
Escreva (O aumento de:, aumento)
Escreva (O novo salrio :, reajuste)
seno
Se (cargo = 4) ento
Escreva (Cdigo do cargo:, cargo)
Escreva (Vendedor)
aumento salario * (15/100)
reajuste salario + aumento
Escreva (O aumento de:, aumento)
Escreva (O novo salrio :, reajuste)
fim_se
fim_se
fim_se
fim_se
Fim.

5. Escreva um algoritmo para resolver equaes do segundo grau (ax2 +bx + c). Sendo que: a
varivel a deve ser diferente de zero; = b2 - 4 x a x c; Se < 0 no existe raiz real; se = 0
^- b h
existe uma raiz real que dada por x =
; se > 0 existem duas razes reais
2 xa
^- b - T h
^- b + T h
e x1 =
x1 = 2 xa
2 xa
ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

95

Objetivo do algoritmo: resolver a equao do segundo grau.


Entrada: ler os valores de a, b e c.
Processamento: calcular o delta e o valor das razes.
Sada: imprimir o valor da raiz real.
Quadro 44: Pseudocdigo Exerccio 5
Algoritmo raiz
Var
a, b, c, delta, x1, x2: real
Incio
Escreva (Digite o valor de a:)
Leia (a)
Escreva (Digite o valor de b:)
Leia (b)
Escreva (Digite o valor de c:)
Leia (c)
Se (a = 0) ento
Escreva (No uma equao do segundo grau)
seno
delta sqr(b) * 4 * a * c
Se (delta < 0) ento
Escreva (No existe raiz real)
x1

( - b) / (2 * a)

Escreva (A raiz :, x1)


seno
Se (delta > 0) ento

96

Escreva (Existem
razes reais)
ALGORITMOS E LGICA DE PROGRAMAO
I |duas
Educao
a Distncia

delta sqr(b) * 4 * a * c
Se (delta < 0) ento
Escreva (No existe raiz real)
x1

( - b) / (2 * a)

Escreva (A raiz :, x1)


seno
Se (delta > 0) ento
Escreva (Existem duas razes reais)
x1 ( - b + sqrt(delta)) / (2 * a)
Escreva (A raiz x1 :, x1)
x2 ( - b - sqrt(delta)) / (2 * a)
Escreva (A raiz x2 :, x2)
fim_se
fim_se
fim_se
fim_se
Fim.

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

97

GUIMARES, A. M.; LAGES, N. A. C. Algoritmos e Estruturas de Dados. Editora LTC.

Ttulo: Algoritmos e Estruturas de Dados


Autora: Lages e Guimares
Editora: LTC
Ano: 1994
Edio: 1
Pginas: 216
Sinopse: os princpios da lgica de programao para computadores so apresentados utilizando
uma linguagem de programao didtica, denominada de Portugol, de modo a enfatizar a metodologia de criao de um algoritmo, independente da linguagem de programao utilizada pelo futuro
programador.

98

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

UNIDADE III

ESTRUTURA DE REPETIO
Professora Me. Gislaine Camila Lapasini Leal
Objetivos de Aprendizagem
Estudar as estruturas de repetio controladas e condicionais.
Conhecer as estruturas de repetio encadeadas.
Construir algoritmos utilizando estruturas de repetio.
Plano de Estudo
A seguir, apresentam-se os tpicos que voc estudar nesta unidade:
Estrutura Para
Estrutura Enquanto
Estrutura Repita
Estruturas de Repetio Encadeadas
Problema 1
Problema 2

INTRODUO
Nesta unidade voc aprender a construir algoritmos com repetio de um trecho de cdigo. A
repetio permite executar um conjunto de instrues quantas vezes forem necessrias sem
ter que ficar reescrevendo trechos de cdigos idnticos.
Ser abordado o conceito de estrutura de repetio e sua aplicao. Estudaremos as
estruturas de repetio com laos contados e laos condicionais. O uso de laos contados
restrito a situaes em que sabemos previamente quantas vezes as instrues precisam ser
executadas. Neste caso, abordaremos especificamente a Estrutura Para.
Nos laos condicionais no sabemos previamente o nmero de execues e atrelamos a
repetio a uma condio. Trataremos os casos com condio no incio e no final do lao,
estudando as estruturas: Enquanto e Repita.
Ao construir algoritmos utilizando estruturas de repetio, muitas vezes, precisaremos utilizar
variveis contadoras e acumuladoras. Aprenderemos os conceitos relacionados a essas
variveis, como utiliz-las e qual a diferena entre elas.
Estudaremos as estruturas de repetio (Para, Enquanto e Repita), destacando seu
funcionamento, sintaxe e aplicao. Para facilitar o aprendizado construiremos algoritmos
utilizando cada uma dessas estruturas.
Ao final desta unidade voc saber construir algoritmos com estruturas de repetio e poder
responder as questes relacionadas com o tema de Algoritmos e Lgica de Programao
I, tais como: como repetir um trecho de cdigo um nmero determinado de vezes? Como
repetir um trecho de cdigo com base em uma condio? Que estrutura de repetio mais
adequada para cada problema? Quando utilizar varivel contadora e acumuladora? Quando
utilizar estruturas de repetio encadeadas?

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

101

ESTRUTURA DE REPETIO
Ao desenvolver algoritmos muitas vezes nos deparamos com situaes em que precisamos
repetir um determinado trecho de cdigo ou todo o cdigo um certo nmero de vezes.
Por exemplo, se queremos efetuar a soma dos 100 primeiros nmeros pares, somar n
nmeros enquanto o valor da soma no ultrapasse 500, calcular a mdia de 20 nmeros,
calcular a tabuada de um nmero, somar os nmeros entre uma faixa de valores, efetuar
um processamento enquanto o usurio informe SIM, validar um dado de entrada e outras
(SALVETTI; BARBOSA, 1998; ASCENIO; CAMPOS, 2010).
Nos casos descritos acima e em muitos outros, podemos criar um loop para efetuar o
processamento de um trecho de cdigo quantas vezes forem necessrias. Na literatura essas
estruturas de repetio (loop) so, tambm, denominadas de laos de repetio e malhas de
repetio (MANZANO; OLIVEIRA, 1997).
Nas estruturas de repetio o nmero de repeties pode ser fixo ou estar relacionado a uma
condio. Isto , os laos de repetio podem ser classificados em laos contados e laos
condicionais (ASCENCIO; CAMPOS, 2010).
Os laos contados so aqueles que utilizamos quando sabemos previamente quantas vezes o
trecho do cdigo precisa ser repetido. Por exemplo, realizar a leitura de 100 nmeros, efetuar
o somatrio dos nmeros entre 500 e 700 e outros. A estrutura utilizada para representar os
laos contados a Estrutura Para.
Os laos condicionais so utilizados quando no conhecemos o nmero de vezes que o
trecho de cdigo precisa ser repetido. A repetio est atrelada a uma condio que pode ser
alterada dentro do lao. Por exemplo, solicitar que o usurio informe um nmero at que ele
digite um nmero entre 1 e 12. Com isto, podemos efetuar a validao dos dados de entrada.
Voc se recorda do algoritmo que criamos na unidade II para escrever por extenso o nome do
ms correspondente ao nmero digitado pelo usurio? Naquele caso, se o usurio informasse

102 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

um nmero fora da faixa1 e 12, emitamos uma mensagem informando que no havia ms
correspondente ao nmero digitado e a execuo do algoritmo era encerrada. Utilizando laos
podemos forar a digitao de um dado de entrada vlido, ou seja, enquanto o usurio no
digitar um nmero dentro da faixa definida continuamos solicitando que ele informe um nmero.
Os laos condicionais podem ter o teste lgico no incio ou no final do lao, configurando assim
duas estruturas de repetio: Estrutura Repita e Estrutura Enquanto.
A vantagem da estrutura de repetio que no precisamos reescrever trechos de cdigo
idnticos, reduzindo assim o tamanho do algoritmo. Alm disso, podemos determinar repeties
com nmero de vezes varivel (LOPES; GARCIA, 2002).
No uso de estruturas de repetio observaremos que necessrio utilizar variveis contadoras
e acumuladoras. Uma varivel contadora uma varivel que recebe um valor inicial antes de
iniciar a estrutura de repetio e no interior dessa estrutura seu valor incrementado em um
valor constante. J uma varivel acumuladora uma varivel que recebe um valor inicial antes
do incio de uma estrutura de repetio e incrementada no interior dessa estrutura em um
valor varivel. O que difere uma varivel contadora de uma acumuladora o valor que elas so
incrementadas na estrutura de repetio. Em uma varivel contadora o valor fixo e em uma
varivel acumuladora o valor constante.
Nas sees seguintes ser apresentada cada uma das estruturas de repetio, destacando
sua sintaxe e aplicao.

ESTRUTURA PARA
A estrutura Para uma estrutura do tipo lao contado, utilizada para um nmero definido de
repeties. Isto , devemos utilizar essa estrutura quando sabemos o nmero de vezes que o
trecho de cdigo precisa ser repetido. Outro termo utilizado para essa estrutura de repetio
o de estrutura de repetio com varivel de controle, pois utilizada uma varivel contadora

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

103

para controlar o nmero de repeties. A sintaxe da estrutura Para :


para <varivel> de <incio> at <fim> passo <incremento> faa
<instrues>
fim_para
Em que:

<varivel>: a varivel contadora utilizada para controlar a estrutura de repetio. Esta


varivel tem que ser do tipo inteiro.

<incio> e <fim>: esses termos delimitam o intervalo para a execuo do lao de repetio.
Podem ser constantes inteiras, funes ou expresses que retornem nmeros inteiros
(SALVETTI; BARBOSA, 1998).

<incremento> representa o valor que ser incrementado ou decrementado (se for um valor
negativo) a cada passagem do lao, isto , como ser a variao da varivel de controle
(contador).

Esse termo pode ser representado por uma constante ou uma varivel.

Lopes e Garcia (2002) destacam que o nmero de repeties do bloco de comandos igual
ao nmero de termos da srie delimitada pelos termos <incio> e <fim>. A varivel contadora
no deve aparecer em um comando de leitura dentro do bloco de repetio.
Agora que voc conheceu a teoria sobre a estrutura de repetio para, vamos resolver
um problema utilizando-a para tornar mais clara a sua aplicao prtica. Voc se lembra
databuada? A Figura 6 apresenta a tabuada para o nmero 5, em que temos o produto entre o
nmero 5 e os nmeros compreendidos entre 0 e 10.

104 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Figura 6: Tabuada do nmero 5


Que tal construir um algoritmo para efetuar a tabuada de um nmero qualquer?
O primeiro passo estruturar o nosso problema seguindo os passos descritos na Unidade I:
Objetivo do algoritmo: calcular a tabuada de um nmero inteiro.
Entrada: obter um nmero inteiro.
Processamento: efetuar a operao de multiplicao do nmero informado pelos valores
compreendidos entre 1 e 10.
Sada: imprimir a tabuada de 1 a 10 do nmero informado na entrada.
Na entrada de dados temos que ler um nmero inteiro, isto implica que precisamos declarar
uma varivel do tipo inteira para armazenar o nmero digitado pelo usurio. Denominaremos
essa varivel de num.
O processamento consiste em multiplicar o nmero recebido na entrada (armazenado na
varivel num) pelos valores 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 e 10, como pode ser visualizado na
Figura 7. Criaremos uma varivel chamada mult para armazenar o resultado da multiplicao.

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

105

Observe que temos a repetio de uma expresso aritmtica de multiplicao (num x i), em
que sabemos previamente o nmero de repeties. Portanto, podemos utilizar a estrutura
Para. Lembre-se que ao utilizar esta estrutura precisamos declarar uma varivel contadora
que deve ser do tipo inteiro, nomearemos de i. A varivel i deve ter incio em 0 e fim em 10, pois
queremos mostrar a tabuada de 0 a 10. O passo a ser utilizado 1. Como sada do algoritmo
temos que imprimir o resultado da operao de multiplicao.

Figura 7: Processamento a ser executado


Fonte: a autora

O Quadro 45 apresenta o algoritmo para o problema da tabuada. Observe que tanto o

106 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

processamento (expresso aritmtica dada por mult = num * i) quanto a sada de dados (Escreva
num, x, i, =, mult) se encontram dentro do lao de repetio. Por que isso acontece? Pois,
temos que imprimir o resultado de 10 operaes de multiplicao e no apenas uma. O que
acontece se colocarmos a sada de dados fora do lao? No vdeo ser apresentado apenas o
resultado da ltima operao, em que num igual a 3, i igual a 10. Portanto, ser exibido 3 x
10 = 30.
Lembre-se que um lao de repetio pode ser utilizado tanto para entrada, processamento,
quanto para a sada de dados.
Quadro 45: Pseudocdigo - Algoritmo tabuada

Algoritmo tabuada
Var
Num, i, mult: inteiro
Incio
Escreva (Digite um nmero:)
Leia (num)
Para i de 1 at 10 passo 1 faa
mult num*i
Escreva (num, x, i, =, mult)
fim_para
Fim.

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

107

A Figura 8 ilustra a simulao do algoritmo apresentado no Quadro 45.

Figura 8: Simulao - Algoritmo Tabuada


Fonte: a autora

Na Unidade II discutimos sobre algoritmos eficientes. Voc se lembra o que so algoritmos


eficientes? Podemos melhorar o algoritmo construdo para a tabuada? Sim, podemos

108 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

economizar uma varivel, no caso a varivel mult, e com isto, retirar a instruo de atribuio,
realizando a operao aritmtica diretamente no comando escreva. Isto possvel, pois no
comando escreva podemos colocar uma expresso. No Quadro 46 podemos visualizar outro
modo de escrever o algoritmo para a tabuada.
Quadro 46: Pseudocdigo - Algoritmo tabuada

Algoritmo tabuada
Var
Num, i: inteiro
Incio
Escreva (Digite um nmero:)
Leia (num)
Para i de 1 at 10 passo 1 faa
mult num*i
Escreva (num, x, i, =, num * i )
fim_para
Fim.

Nesta seo estudamos a estrutura de repetio controlada, que utiliza uma varivel contadora
para controlar o lao. Essa estrutura deve ser utilizada nas situaes em que sabemos
previamente quantas vezes o comando deve ser repetido.

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

109

ESTRUTURA ENQUANTO
A estrutura Enquanto uma estrutura do tipo lao condicional, isto , o loop baseia-se na
anlise de uma condio. Essa estrutura utilizada quando temos um nmero indefinido de
repeties e se caracteriza por realizar um teste condicional no incio.
A sintaxe da estrutura Enquanto :
Enquanto <condio> faa
<instrues>
fim_enquanto
Na estrutura para tnhamos uma varivel de controle (contador) para controlar o nmero de
repeties do algoritmo. Na estrutura Enquanto no h varivel de controle, sendo imposta
uma condio para controlar a repetio do algoritmo. Devemos tomar cuidado para garantir
que em algum momento a condio ser satisfeita, seno o algoritmo pode entrar em loop (no
parar nunca). Para impedir o loop do algoritmo utilizamos uma expresso condicional, tal como
vimos na Unidade II, para parar a repetio (LOPES; GARCIA, 2002).
Outra situao que como o teste condicional executado no incio, podem ocorrer casos em
que as instrues da estrutura de repetio nunca sejam executadas. Isso acontece quando
o teste condicional da estrutura resulta em falso logo na primeira comparao (ASCENCIO;
CAMPOS, 2010).
Agora que conhecemos os conceitos relacionados estrutura enquanto, vamos construir um
algoritmo para o seguinte problema: ler vrios nmeros e informar quantos se encontram no
intervalo de 100 a 300. Se for digitado o valor 0, o algoritmo encerra sua execuo.
Seguindo o mtodo de estruturao de problemas visto na Unidade I, temos:

110 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Objetivo do algoritmo: ler vrios nmeros e informar quantos esto no intervalo entre 100
e 300.
Entrada: ler nmeros inteiros at que seja digitado o nmero zero.
Processamento: contar quantos nmeros esto no intervalo entre 100 e 300.
Sada: imprimir a quantidade de nmeros entre 100 e 300.
Na entrada de dados temos que realizar a leitura de nmeros inteiros repetidas vezes, at
que o valor zero seja digitado. O processamento consiste em contar a quantidade de nmero
que esto na faixa entre 100 e 300, para isso utilizaremos uma varivel do tipo contador, que
nomearemos como cont. Para saber quantos valores esto dentro da faixa utilizaremos a
estrutura condicional Se, conforme visto na Unidade II. Como sada temos que informar o valor
da varivel cont.
Na construo de algoritmos utilizando a estrutura enquanto temos que o teste lgico
realizado no incio, deste modo precisamos ter um valor atribudo para a varivel usada na
condio antes de entrar na estrutura enquanto. Alm disso, no conjunto de instrues dentro
do lao de repetio deve haver uma instruo que modifique o valor dessa varivel, seno
entraremos em um loop. Isto nos indica que ao utilizar laos do tipo enquanto temos que ler a
varivel fora da estrutura de repetio e dentro. Observe o algoritmo do Quadro 47.

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

111

Quadro 47: Pseudocdigo - Algoritmo conta


Algoritmo conta
Var
Num, cont: inteiro
Incio
Escreva (Digite um nmero:)
Leia (num)
cont 0
Enquanto (num <> 0) faa
Se (num >=100) e (num <=300) ento
cont cont +1
fim_se
Escreva (Digite um nmero:)
Leia (num)
fim_enquanto
Escreva (A quantidade de nmeros entre 100 e 300 :, cont)
Fim.

Vamos analisar este algoritmo linha a linha a partir da instruo de Incio. Temos um comando
escreva, que envia uma mensagem ao usurio que digite um nmero. O nmero digitado pelo
usurio armazenado na varivel num (comando Leia). Em seguida, temos uma atribuio a
varivel cont, que um contador. Por qu? Sempre que utilizamos variveis desse tipo devemos
inicializ-la, pois uma varivel um espao de memria e pode conter lixos. Portanto, sempre
inicialize as variveis que exercem funo de contador e acumulador.

112 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

A prxima linha a instruo enquanto em que temos o teste lgico que analisa se o nmero
diferente de 0. Se o resultado for verdadeiro, temos a execuo das instrues que esto
dentro do lao, seno vai para a instruo aps o fim_enquanto. No lao de repetio temos
a verificao se o nmero est ou no na faixa estabelecida. Para isso usada a estrutura
condicional Se, em que temos duas expresses relacionais unidas por uma expresso lgica
com o operador E. Se o resultado do teste lgico for verdadeiro temos que cont recebe o valor
que ele tem mais um, ou seja, incrementado em uma unidade. Se o teste lgico resultar em
falso a execuo segue para a linha posterior ao fim_se. Note que aps o fim_se temos a
leitura da varivel novamente. Por que isso acontece? Se a leitura da varivel fosse realizada
apenas fora do lao de repetio teramos que o lao entraria em loop, uma vez que teramos
o mesmo valor para num. As instrues dentro do lao sero repetidas at que na entrada
seja obtido o valor zero. Quando este valor for obtido tem-se a execuo do comando aps o
fim_enquanto, que exibe na tela o valor armazenado na varivel cont. Na Figura 9 podemos
visualizar a simulao do algoritmo descrito.

Figura 9: Simulao - Algoritmo Conta


Vamos analisar o comportamento do algoritmo (Quadro 48) sem a entrada de dados dentro

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

113

da estrutura de repetio. Note que a leitura est sendo realizada apenas antes da estrutura
de repetio.
Quadro 48: Pseudocdigo - Algoritmo conta
Algoritmo conta
Var
Num, cont: inteiro
Incio
Escreva (Digite um nmero:)
Leia (num)
cont 0
Enquanto (num <> 0) faa
Se (num >=100) e (num <=300) ento
cont cont +1
fim_se
fim_enquanto
Escreva (A quantidade de nmeros entre 100 e 300 :, cont)
Fim.

A Figura 10 apresenta um esquema que representa a simulao do algoritmo. A partir da


entrada de dados, em que foi obtido o valor 130, tem-se a inicializao da varivel cont e, em
seguida, a estrutura enquanto. No incio do enquanto h um teste lgico que analisa se num
diferente de 0. Como 130 diferente de 0, a avaliao do teste resulta em verdadeiro, com
isto, tem-se a execuo das instrues que esto dentro da estrutura enquanto. Internamente,

114 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

h um teste lgico que verifica se o nmero maior ou igual a 100 e menor ou igual a 300, a
avaliao deste teste verdadeira. Portanto, tem-se o incremento da varivel cont, que passa
a armazenar o valor 1. Aps o fim_se no temos nenhuma instruo, deste modo a execuo
retomada para a linha do enquanto, em que novamente o teste lgico executado. A varivel
num continua com o valor 130, resultando em verdadeiro o teste lgico, pois 130 diferente
de 0. Na verificao da estrutura condicional o teste, tambm, resulta em verdadeiro, com isto
executada a instruo que incrementa a varivel cont. Novamente a execuo retorna para
a linha do enquanto e o funcionamento do algoritmo ser o mesmo, de modo que apenas a
varivel cont est sendo incrementada a cada execuo. Perceba que se no efetuarmos a
leitura da varivel num dentro da estrutura enquanto, tambm, seu valor no ser alterado e o
cdigo entra em loop, pois sempre a condio num <> 0 satisfeita.

Figura 10- Simulao - Algoritmo conta


ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

115

Lembre-se!!! SEMPRE que voc utilizar uma estrutura de repetio condicional tem que ter uma instruo no interior desta estrutura que modifi que o valor da varivel que utilizada no teste lgico.
Variveis contadoras e acumuladoras precisam ser inicializadas no incio do cdigo.

ESTRuTuRA REPITA
A estrutura Repita uma estrutura do tipo lao condicional, isto , o loop baseia-se na anlise
de uma condio. Essa estrutura utilizada quando temos um nmero indefinido de repeties
e precisamos que o teste condicional seja realizado aps a execuo do trecho de cdigo. Isto
, devemos utilizar essa estrutura quando no sabemos o nmero de vezes que um trecho do
cdigo deve ser repetido (ASCENCIO; CAMPOS, 2010).
A sintaxe da estrutura Repita :
Repita
<instrues>
At_que <condio>
Observe que na estrutura Repita as instrues dentro do lao sero executadas pelo menos
uma vez, pois a anlise condicional executada ao final. Do mesmo modo que na estrutura
condicional enquanto, lembre-se que nas instrues que esto dentro da estrutura de repetio
tem que haver uma instruo que altere o valor da <condio>.
Com o conhecimento que temos sobre a estrutura Repita vamos reescrever o algoritmo que l
vrios nmeros e informa quantos esto no intervalo de 100 a 300. Se for digitado o valor 0, o

116 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

algoritmo encerra sua execuo. Descrevemos os passos da estruturao deste problema no


tpico ESTRUTURA ENQUANTO.
A entrada de dados consiste na leitura de nmeros inteiros repetidas vezes, at que o valor
zero seja digitado. O processamento contar a quantidade de nmero que esto na faixa entre
100 e 300. E a sada informar quantos dos nmeros lidos na entrada so maiores ou iguais
a 100 e menores ou iguais a 300. O Quadro 49 apresenta um algoritmo para este problema
utilizando a estrutura de repetio condicional Repita.
Quadro 49: Pseudocdigo - Algoritmo conta
Algoritmo conta
Var
Num, cont: inteiro
Incio
cont 0
Repita
Escreva (Digite um nmero:)
... Leia (num)
Se (num >=100) e (num <=300) ento
cont cont +1
fim_se
At_ que (num = 0)
Escreva (A quantidade de nmeros entre 100 e 300 :, cont)
Fim.

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

117

Vamos estudar cada linha do algoritmo para entender melhor o funcionamento dessa
estruturao de repetio. Na primeira linha temos a inicializao da varivel cont, que conta
o nmero de valores que esto na faixa entre 100 e 300. Afinal, por que inicializamos essa
varivel? Por exemplo, se efetuamos a leitura de vrios nmeros e nenhum deles estava na
faixa entre 100 e 300, qual o valor de cont? No h como garantir que o valor ser zero. Como
uma varivel um espao em memria, devemos inicializ-lo para que no fique nenhum
lixo.
Aps a inicializao de cont, temos o incio da estrutura Repita. Internamente a essa estrutura
temos a leitura do nmero, o qual armazenado na varivel num. Em seguida, temos a
estrutura condicional se, que analisa se o nmero maior ou igual a 100 e menor ou igual
a 300. O resultado do teste lgico verdadeiro quando as duas expresses relacionais so
verdadeiras e ento cont incrementado em 1. Se o resultado do teste for falso vai diretamente
para a linha que impe a condio para o lao de repetio. Nesta linha, temos a verificao se
o nmero igual a zero, isto , quando o nmero for igual a zero, a repetio do lao finaliza e
executada a instruo escreva.
Observe que na estrutura Repita a leitura da varivel realizada internamente. Isso acontece
porque o teste lgico executado no final. Deste modo, o conjunto de instrues que esto
dentro do lao executada uma ou mais vezes. Na estrutura enquanto o conjunto de instrues
pode no ser executado, pois o teste lgico realizado no incio.

ESTRUTURAS DE REPETIO ENCADEADAS


Do mesmo modo que na estrutura condicional, podemos ter encadeamento das estruturas
de repetio, isto , podemos ter uma estrutura de repetio dentro de outra. Neste caso
necessrio que todas as instrues da construo interna estejam embutidas na construo
externa (MANZANO; OLIVEIRA, 1997; LOPES; GARCIA, 2002).

118 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

No existem regras para o encadeamento das estruturas de repetio. De modo que voc
precisa conhecer cada uma delas para saber quando conveniente encade-las, quais
devem ser utilizadas e como. No se preocupe! Conforme vamos construindo algoritmos
aperfeioamos o nosso raciocnio lgico de modo que automaticamente saberemos o momento
de utilizar essas estruturas (MANZANO; OLIVEIRA, 1997).
A sintaxe para encadeamento da estrutura Para com Para dada por:
para <var1> de <incio> ate <fim> passo <incremento> faa

para <var2> de <incio> ate <fim> passo <incremento> faa

<instrues>

fim_para

fim_para
Podemos utilizar encadeamento utilizando a estrutura Para e Enquanto, em que a sintaxe :
para <varivel> de <incio> at <fim> passo <incremento> faa

enquanto (<condio>) faa

<instrues>
fim_enquanto

fim_para

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

119

No encadeamento da estrutura Para com Repita a sintaxe :


para <varivel> de <incio> at <fim> passo <incremento> faa

repita

<instrues>

At_que (condio)

fim_para
Alguns exemplos de encadeamento de estruturas de repetio utilizando a estrutura Enquanto
so:
enquanto (<condio1>) faa

enquanto (<condio2>) faa

<instrues>

fim_enquanto

fim_enquanto

enquanto (<condio1>) faa


repita

<instrues>

at_que (<condio2>)

fim_enquanto

120 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

enquanto (<condio>) faa


para <var> de <incio> at <fim> passo <incremento> faa

<instrues>

fim_para

fim_enquanto
Nos casos de encadeamento utilizando a estrutura Repita e as demais temos as seguintes
sintaxes:
repita
para <var> de <incio> at <fim> passo <incremento> faa

<instrues>

fim_para

at_que (<condio>)

repita

enquanto (<condio2>) faa

<instrues>

fim_enquanto

at_que (<condio1>)

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

121

repita
repita

<instrues>

at_que (<condio>)

at_que (<condio>)
Fique tranquilo! Veremos a aplicao de estruturas encadeada no PROBLEMA 2.
PROBLEMA 1
Voc se recorda de fatorial? O fatorial de um nmero o produto dos nmeros naturais
comeando em n e descrevendo at 1, isto , o produto de todos os inteiros positivos menores
ou igual a n. O fatorial de um nmero representado por n!
Tomemos como exemplo o fatorial de 7, representado por 7! O clculo de 7! : 7 x 6 x 5 x 4 x
3 x 2 x 1, que igual a 5040.
Agora que recordamos o que o fatorial, vamos escrever um algoritmo para calcular o fatorial
de um nmero qualquer. Seguindo o mtodo de estruturao de problemas, conforme visto na
Unidade I, temos que:

Objetivo do algoritmo: calcular o fatorial de um nmero.

Entrada: ler o nmero que se deseja calcular o fatorial.

Processamento: efetuar o produto de todos os nmeros inteiros positivos menores ou


igual ao nmero lido na entrada.

Sada: imprimir o fatorial.

122 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Na entrada do problema temos a leitura de um nmero inteiro, do qual queremos obter o


fatorial. Precisamos armazenar este nmero em uma varivel inteira, denominarenos num.
O processamento consiste em efetuar a operao aritmtica de multiplicao de todos
os nmeros inteiros positivos menores ou igual a num. Observe que temos operaes de
multiplicao sucessivas, partindo de 7, conforme ilustra a Figura 11. Aqui temos uma
informao importante, a operao de multiplicao tem que comear em 7 e ir at 1, ou seja,
sabemos o nmero de vezes que a multiplicao precisa ser executada. Quando sabemos o
nmero de repeties que deve ocorrer temos um lao contado. Portanto, podemos utilizar a
estrutura Para em nosso algoritmo. Nessa estrutura h uma varivel de controle que delimita
o intervalo para a execuo do lao, no caso temos que partir de 7 e ir at 1, isto , teremos
um incremento de -1 (decremento). No podemos esquecer de declarar mais uma varivel, a
varivel de controle, que do tipo int, chamaremos de cont. Como sada temos que informar o
valor do clculo do fatorial, utilizaremos o comando escreva.

7x6x5x4x3x2x
1
Figura 11: Representao do clculo de 7!
No Quadro 50 temos o algoritmo para o problema do fatorial. Faa voc um teste de mesa
efetuando o clculo do fatorial de 5.

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

123

Quadro 50: Pseudocdigo - Algoritmo fatorial


Algoritmo fatorial
Var
num, fat, cont: inteiro
Incio
Escreva (Digite o nmero que deseja calcular o fatorial:)
Leia (num)
fat 1;
Para cont de num at 1 passo -1 faa
fat fat*cont
fim_para
Escreva (O fatorial : , fat)
Fim.

Ao analisar o algoritmo surge o questionamento: por que a varivel fat foi inicializada com 1?
Podemos inicializ-la com 0? Se a inicializao da varivel for 0, e considerando num como 5,
teramos fat igual a 0, conforme ilustra a Figura 12.

124 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Para cont de num at 1 passo-1 faa

Figura 12: Simulao - Algoritmo Fatorial


Aps a simulao, fica claro que a varivel fat deve ser inicializada com 1. Deste modo,
teramos o resultado correto para o fatorial de 5, que 120.
PROBLEMA 2
A aprovao de um aluno em uma disciplina ocorre quando a mdia das notas maior ou
igual a 7. Para auxiliar o professor em suas atividades elabore um algoritmo, leia o nmero de
notas da disciplina, cdigo do aluno e as notas do aluno. Calcule a mdia final de cada aluno e
informe o nmero de alunos aprovados e reprovados. O algoritmo deve ser executado at que
seja informado um cdigo 0.

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

125

Sistematizando as informaes do problema de acordo com o mtodo, temos que:


Objetivo do algoritmo: calcular o nmero de alunos aprovados e reprovados.

Entrada: ler o nmero de notas da disciplina, cdigo e notas do aluno.

Processamento: calcular a mdia dos alunos e contar o nmero de aprovados e


reprovados.

Sada: imprimir o nmero de aprovados e reprovados.

Na entrada de dados temos que saber inicialmente o nmero de notas da disciplina. Este
valor deve ser armazenado em uma varivel (nnotas). Alm disso, precisamos armazenar o
cdigo do aluno (cod) e nota (nota). O processamento consiste em a partir do nmero de notas
informado para a disciplina, efetuar a repetio da leitura de notas e som-las (varivel soma)
e calcular a mdia aritmtica do aluno (varivel mdia). A mdia deve ser armazenada em uma
varivel do tipo real. Se a mdia for maior ou igual a 7 o aluno est aprovado, seno reprovado.
Para contabilizar o nmero de aprovados e reprovados, precisamos declarar duas variveis do
tipo inteira, aprovados e reprovados, respectivamente. Como sada temos o nmero de alunos
aprovados e reprovados.
No Quadro 51 apresentado o algoritmo para o problema descrito. Neste algoritmo temos a
aplicao de estruturas de repetio encadeada. Por qu? Precisamos saber o nmero de
notas que devem ser lidas e devem ser lidas as notas de vrios alunos at que o cdigo do
aluno seja 0. Como no sabemos quantos alunos teremos que ler as notas, precisamos utilizar
uma estrutura do tipo lao condicional. No primeiro momento optamos por utilizar a estrutura
Enquanto. Nesta estrutura o teste condicional realizado no incio, deste modo temos que
realizar a leitura da informao utilizada no teste condicional fora da estrutura. No caso, a
informao obtida foi o cdigo do aluno.
Se o teste condicional resulta em verdadeiro, ou seja, o cdigo do aluno diferente de 0,

126 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

precisamos ler as notas do aluno. Em seguida, temos a inicializao das variveis soma e
mdia, pois a soma deve acumular as notas de um aluno e no de todos. Para a leitura das
notas utilizamos a estrutura Para, pois sabemos previamente o nmero de notas que precisa
ser lido. Dentro da estrutura Para realizada a soma das notas do aluno. Aps ser finalizada
a leitura de todas as notas (acumuladas na varivel soma) efetuado o clculo da mdia
do aluno. Em seguida, temos o teste condicional que analisa se o aluno est aprovado ou
reprovado. Se a mdia maior ou igual a 7 temos o incremento da varivel aprovados, seno
a varivel reprovados incrementada. As instrues seguintes efetuam a leitura do cdigo do
aluno. Depois do fim_enquanto so apresentados os nmeros de aprovados e reprovados.
Quadro 51: Pseudocdigo - Algoritmo notas
Algoritmo fatorial
Var
nnotas, cod, aprovados, reprovados , cont: inteiro
media, nota, soma

: real

Inciqo
Escreva (Informe o nmero de notas da disciplina:)
Leia (nnotas)
aprovados

reprovados

Escreva (Informe o cdigo do aluno:)


Leia (cod)
Enquanto (cod <> 0) faa
soma 0
media 0
Para cont de 1 at nnotas passo 1 faa
Escreva (Informe a nota:)
Leia (nota)
somaE LGICA
soma + nota;
ALGORITMOS
DE PROGRAMAO I | Educao a Distncia

127

Escreva (Informe a nota:)


Leia (nota)
soma

soma + nota;

fim_para
media

soma/nnotas;

se (media >=7) ento


aprovados

aprovados + 1

seno
reprovados

reprovados + 1

fim_se
Escreva (Informe o cdigo do aluno:)
Leia (cod)
Fim_enquanto
Escreva (O nmero de aprovados :, aprovados )
Escreva (O nmero de reprovados :, reprovados)
Fim.

Em relao ao algoritmo apresentado: o que aconteceria se o clculo da mdia fosse executado


dentro da estrutura Para? Tomemos como exemplo, que foram obtidas quatro notas 7, 8, 7 e
9 respectivamente. Na primeira passagem da estrutura Para teramos mdia igual a 1,75. Na
segunda passada a mdia seria 2, na terceira 1,75 e na quarta 3. Isto , a cada nota obtida
seria efetuada a diviso desta nota pelo nmero de notas (nota/nnotas). Portanto, no interior
da estrutura Para devemos apenas acumular o valor das notas e realizar o clculo da mdia
depois que todas as notas tiverem sido lidas.

128 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Outro questionamento : o que aconteceria se no tivssemos a instruo para leitura do


cdigo do aluno no interior da estrutura Enquanto? O algoritmo entraria em loop, pois o
valor da varivel cdigo nunca seria alterado. Portanto, lembre-se sempre que utilizamos a
estrutura Enquanto devemos efetuar a leitura da varivel utilizada no teste condicional antes
do Enquanto e dentro da estrutura.
No Quadro 52 temos a soluo do problema utilizando o encadeamento com estrutura Repita
e Para.
Quadro 52: Pseudocdigo Algoritmo notas
Algoritmo fatorial
Var
nnotas, cod, aprovados, reprovados , cont: inteiro
media, nota, soma

: real

Incio
Escreva (Informe o nmero de notas da disciplina:)
Leia (nnotas)
aprovados

reprovados 0
Repita
Escreva (Informe o cdigo do aluno:)
Leia (cod)
soma

media 0
Para cont de 1 at nnotas passo 1 faa
Escreva (Informe a nota:)
Leia (nota)
soma

soma + nota

fim_para

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

media soma/nnotas

129

Leia (nota)
soma

soma + nota

fim_para
media soma/nnotas
se (media >=7) ento
aprovados

aprovados + 1

seno
reprovados reprovados + 1
fim_se
At_que (cod = 0)
Escreva (O nmero de aprovados :, aprovados)
Escreva (O nmero de reprovados :, reprovados)
Fim.

Observe que quando utilizamos o Repita no h a leitura da varivel utilizada no teste


condicional antes da estrutura condicional. Isso possvel, pois a estrutura Repita realiza o
teste no final.

CONSIDERAES FINAIS
Nesta unidade voc aprendeu a construir algoritmos utilizando estruturas de repetio, que
permitem a execuo de um trecho de cdigo repetidas vezes. As estruturas de repetio
tambm so chamadas de lao de repetio.
Estudamos os laos de repetio contados e os laos condicionais. Nos laos de repetio
contados conhecemos a estrutura Para, que utilizada nos casos em que sabemos quantas
vezes o trecho de cdigo precisa ser repetido. A estrutura Para tambm conhecida como
estrutura de repetio com varivel de controle, pois utilizamos uma varivel contadora para
controlar o nmero de repeties.
Nos laos de repetio condicionais vimos as estruturas Enquanto e Repita. Vimos que a
estrutura Enquanto utilizada quando no sabemos previamente o nmero de repeties que
deve ser executado e impomos uma condio que realizada no final. Aprendemos que no

130 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

uso desta estrutura devemos utilizar um comando leia ou de atribuio antes do enquanto para
entrar na repetio e um comando leia ou de atribuio (ltima instruo dentro da estrutura de
repetio) para sair da repetio.
Do mesmo modo que a estrutura Enquanto, a estrutura Repita utilizada quando temos
um nmero indefinido de repeties, no entanto, o teste lgico realizado no final. Alm de
estudar as estruturas de repetio conhecemos os conceitos e aplicaes de variveis do tipo
contador e acumulador.
Observamos que as estruturas baseadas em laos condicionais so mais flexveis e que
podem ser substitudas uma pela outra, isto , podemos resolver um problema com algoritmo
utilizando a estrutura Enquanto ou com a estrutura Repita. Destaca-se que a estrutura Para
pode ser substituda pelo uso de estruturas baseadas em laos condicionais. Mas, o contrrio
no verdadeiro.
Vimos que o conceito de encadeamento pode ser aplicado s estruturas de repetio, de
modo anlogo estrutura condicional, vista na Unidade II.
Ao longo desta unidade construmos algoritmos utilizando todos os conceitos aprendidos e,
tambm, discutimos as particularidades de cada estrutura de repetio enfatizando a forma de
uso de cada uma delas e o seu uso encadeado. Para aperfeioar o raciocnio lgico e fixar os
conceitos vistos faa as atividades de autoestudo.

As estruturas mais versteis so Enquanto e Repita, pois podem ser substitudas uma pela outra,
alm de poderem substituir perfeitamente a estrutura Para. Porm, h de considerar-se que nem toda
estrutura Enquanto ou Repita poder ser substituda por uma estrutura Para.

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

131

Para entender um pouco mais sobre a estrutura de repetio, acesse o vdeo disponvel em: <http://
www.youtube.com/watch?v=av5T0y6rwdk>.

ATIvIDADE DE AuTOESTuDO
1. Escreva um algoritmo que leia 20 nomes e imprima o primeiro caractere de cada nome.
2. Formule um algoritmo que entre com o nome do aluno e as notas de quatro provas de 20
alunos. Imprima nome, nota1, nota2, nota3, nota4 e mdia de cada aluno e informe a mdia
geral da turma.
3. Escreva um algoritmo que leia a quantidade de nmeros que se deseja digitar. Em seguida,
leia esses nmeros e encontre o maior e o menor.
4. Construa um algoritmo que leia nmeros inteiros at que seja digitado o 0. Calcule e escreva o nmero de valores lidos, a mdia aritmtica, a quantidade de nmeros pares e a
quantidade de nmeros mpares.
5. Apresentar todos os nmeros divisveis por 5 que sejam menores que 200.
6. Construa um algoritmo que leia nmeros inteiros at que seja digitado um valor negativo.
Ao fi nal, informe a mdia dos nmeros, o maior e o menor valor.
7. Escreva um algoritmo que leia vrios nomes at que seja digitado o valo FIM. Imprima o
primeiro caractere de cada nome. Dica: em uma varivel do tipo caractere, para imprimir o
primeiro caractere utilize o comando Escreva nomevariavel[1].
8. Uma indstria produz e vende vrios produtos e para cada um deles tm-se os seguintes
dados: nome, quantidade produzida e quantidade vendida. Formule um algoritmo que:
Leia a quantidade de produtos que a empresa possui.
Imprima nome e quantidade em estoque para os produtos com estoque menor que 30.
Imprima nome do produto com maior quantidade em estoque.
9. Elabore uma algoritmo que imprima todas as tabuadas do 1 ao 10.

132 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

EXERCCIOS DE FIXAO
1. Escreva um algoritmo que leia o nmero de vezes que se deseja imprimir a palavra ALGORITMOS e imprimir.
Objetivo do algoritmo: informar se a pessoa menor de idade, maior ou idoso.
Entrada: ler um nmero inteiro.
Processamento: no h.
Sada: imprimir a palavra Algoritmos o nmero de vezes informado.
Quadro 53: Pseudocdigo Exerccio 1
Algoritmo palavra
Var
num, i: inteiro
Incio
Escreva (Informe o nmero de vezes que deseja imprimir:)
Leia (num)
Para i de 1 at num passo 1 faa
Escreva (ALGORITMOS)
fim_para
Fim.

2. Elabore um algoritmo que leia cem nmeros inteiros e conte quantos so pares e quantos
so mpares.
Objetivo do algoritmo: ler cem nmeros e contar os pares e mpares.
Entrada: ler cem nmeros inteiros.
Processamento: verificar se o nmero par ou mpar e contar a quantidade de pares e
mpares.
Sada: imprimir o nmero de pares e mpares.
ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

133

Quadro 54: Pseudocdigo Exerccio 2


Algoritmo conta
Var
num, npares, nimpares, i: inteiro

Incio
npares

nimpares

Para i de 1 at 100 passo 1 faa


Escreva (Digite um nmero:)
Leia (num)
Se (num mod 2 = 0) ento
npar

npar + 1

Seno
nimpar nimpar + 1
Fim_se
fim_para
Escreva (A quantidade de nmeros pares :, npar)
Escreva (A quantidade de nmeros mpares :, nimpar)
Fim.

3. Construa um algoritmo que entre com nmeros inteiros enquanto forem positivos e imprima
quantos nmeros foram digitados.
Objetivo do algoritmo: ler vrios nmeros enquanto forem positivos e contar quantos
foram digitados.
Entrada: ler nmeros enquanto forem positivos.

134 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Processamento: contar a quantidade de nmeros digitada.


Sada: imprimir a quantidade de nmeros positivos digitadas.
Quadro 55: Pseudocdigo Exerccio 3
Algoritmo conta
Var
num, qtdade: inteiro
Incio
qtdade 0
Escreva (Informe um nmero:)
Leia (num)
Enquanto (num > 0) faa
qtdade qtdade + 1
Escreva (Informe um nmero:)
Leia (num)
Fim_enquanto
Escreva (O total de nmeros positivos informado :, qtdade)
Fim.

4. Escreva um algoritmo que leia um conjunto de pedidos e calcule o total da compra. O


pedido possui os seguintes campos: nmero, data (dia, ms e ano), preo unitrio e quantidade. A entrada de pedidos encerrada quando o usurio informa zero como nmero do
pedido.
Objetivo do algoritmo: ler vrios pedidos e calcular o total da compra.
Entrada: ler pedidos de compra (nmero, data, preo quantidade) at que o nmero do
pedido seja zero.
Processamento: calcular o preo total de cada pedido e o preo total da compra.

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

135

Sada: imprimir o valor total da compra.


Quadro 56: Pseudocdigo Exerccio 4
Algoritmo compras
Var
pedido, qtdade, data : inteiro
preco, total

: real

Incio
total 0
Escreva (Informe o nmero do pedido:)
Leia (pedido)
Enquanto (num <> 0) faa
Escreva (Informe a data:)
Leia (data)
Escreva (Informe o preo unitrio:)
Leia (preco)
Escreva (Informe a quantidade:)
Leia (qtdade)
total total + (preco * qtdade)
Escreva (O valor da compra :, preco*qtdade)
Escreva (Informe o nmero do pedido ou 0 para finalizar:)
Leia (pedido)
Fim_enquanto
Escreva (O total da compra :, total)
Fim.

136 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

5. Construa um algoritmo que leia nome, sexo, idade, peso e altura dos atletas que participam
de um campeonato at que seja informado o nome FIM e apresente: o nome do atleta do
sexo masculino mais alto, o nome da atleta do sexo feminino mais pesada e a mdia de
idade dos atletas.
Objetivo do algoritmo: ler informaes sobre vrios atletas e apresentar o atleta mais alto,
mais pesado e mdia de idade.
Entrada: ler nome, sexo, idade, peso e altura at que seja digitado o nome FIM.
Processamento: identificar o atleta do sexo masculino mais alto, a atleta do sexo feminino
mais pesada e a mdia de idade dos atletas.
Sada: imprimir o nome do atleta mais alto e da atleta mais pesada e a mdia de idade.
Quadro 57: Pseudocdigo Exerccio 5
Algoritmo atletas
Var
idade, cont
peso, altura, media, alto, pesado, soma

: inteiro
: real

nome, nalto, npesado

: caractere[30]

sexo

: caractere[1]

Incio
media

cont

alto

pesado
nalto

npesado

Escreva (Informe o nome do atleta ou FIM para encerrar:)


Leia (nome)
Enquanto (nome <> FIM) faa
ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Escreva (Informe a idade:)

137

Escreva (Informe o nome do atleta ou FIM para encerrar:)


Leia (nome)
Enquanto (nome <> FIM) faa
Escreva (Informe a idade:)
Leia (idade)
Escreva (Informe o peso:)
Leia (peso)
Escreva (Informe a altura:)
Leia (altura)
Escreva (Informe o sexo:)
Leia (sexo)
soma soma + idade
cont

cont + 1

Se (sexo = M) ou (sexo = m) ento


Se (altura > alto) ento
alto

altura

nalto

nome

Fim_se
Fim_se
Se (sexo = F) ou (sexo = f) ento
Se (peso > pesado) ento
pesado
npesado

peso
nome

Fim_se
Fim_se
Escreva (Informe o nome do atleta ou FIM para encerrar:)
Leia (nome)

138 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia


Fim_enquanto

Fim_se
Fim_se
Escreva (Informe o nome do atleta ou FIM para encerrar:)
Leia (nome)
Fim_enquanto
Escreva (O nome do atleta mais alto :, nalto)
Escreva (O nome da atleta mais pesada :, npesado)

Fim.

6. Faa um algoritmo que calcula a rea de um tringulo e que no permita a entrada de


dados invlidos, ou seja, as medidas devem ser maiores ou iguais a zero.
Objetivo do algoritmo: calcular a rea de um tringulo.
Entrada: ler a base e a altura do tringulo.
Processamento: calcular a rea.
Sada: imprimir o valor da rea.
Quadro 58: Pseudocdigo Exerccio 6

Algoritmo triangulo
Var
base, altura, area: real
Incio
Repita
Escreva (Informe a base:)
Leia (base)
At_que (base >=0)
Repita

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

139

Leia (base)
At_que (base >=0)
Repita
Escreva (Informe a altura:)
Leia (altura)
At_que (altura >=0)
area

(base * altura)/2

Escreva (A rea :, area)


Fim.
7. Construa um algoritmo que receba a idade e o estado civil de vrias pessoas e imprima a
quantidade de pessoas casadas, solteiras, separadas e vivas. O algoritmo finaliza quando
for informado o valor zero para idade.
Objetivo do algoritmo: ler idade e estado civil e contabilizar a quantidade de pessoas por
estado civil.
Entrada: ler idade e estado civil de vrias pessoas.
Processamento: contabilizar o nmero de pessoas casadas, solteiras, separadas e vivas.
Sada: imprimir a quantidade de pessoas casadas, solteiras, separadas e vivas.
Quadro 59: Pseudocdigo Exerccio 7

Algoritmo pessoas
Var
idade, ncasado, nseparado, nsolteiro, nviuva : inteiro
estado

: caractere

Incio
ncasado

nsolteiro

140 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia


nviuva

idade, ncasado, nseparado, nsolteiro, nviuva : inteiro


estado

: caractere

Incio
ncasado

nsolteiro

nviuva

nseparado

Repita
Escreva (Informe a idade:)
Leia (idade)
At_que (idade >= 0)
Enquanto (idade <> 0) faa
Repita
Escreva (Informe o estado civil:)
Leia (estado)
At_que ((estado = C) ou (estado = D) ou (estado = S) ou (estado = V))
Se (estado = C) ento
ncasado ncasado + 1
fim_se
Se (estado = S) ento
nsolteiro

nsolteiro + 1

fim_se
Se (estado = D) ento
nseparado

nseparado + 1

fim_se
Se (estado = V) ento
nviuva
fim_se

nviuva + 1

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Repita

141

nseparado

nseparado + 1

fim_se
Se (estado = V) ento
nviuva

nviuva + 1

fim_se
Repita
Escreva (Informe a idade:)
Leia (idade)
At_que (idade >= 0)
fim_enquanto
Escreva (O nmero de casados :, ncasados)
Escreva (O nmero de solteiros :, nsolteiro)
Escreva (O nmero de separados :, nseparado)
Escreva (O nmero de vivas :, nviuva)
Fim.

VILARIM, G. Algoritmos: Programao para Iniciantes. Editora Cincia Moderna, 2004.

Ttulo: Algoritmos: Programao para Iniciantes


Autor: Gilvan Vilarim

142 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Editora: Cincia Moderna


Ano: 2004
Edio: 1
Nmero de pginas: 288
Sinopse: este livro tem por objetivo apresentar os fundamentos da lgica para a programao de
computadores, capacitando o leitor a construir algoritmos estruturados, e traz assuntos e exerccios
baseados em experincias reais do autor vivenciadas em sala de aula. A leitura no exige maior
conhecimento do assunto por parte do leitor, mas apenas familiaridade com a operao do microcomputador.
Voltado para estudantes dos cursos tcnicos introdutrios em programao de computadores, aplicados nas reas de Informtica, Cincia da Computao, Engenharias, tcnico profi ssionalizante de nvel mdio e outras, o livro apresenta como principais caractersticas uma nova linguagem estruturada
para a construo de algoritmos, texto renovado e atual, fortemente baseado na didtica utilizada em
aulas de programao, intensa carga de exerccios resolvidos e problemas propostos, alm de curiosidades sobre computadores, algoritmos e programao, estimulando o interesse do leitor pelo assunto.

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

143

UNIDADE IV

ESTRUTURAS DE DADOS HOMOGNEAS E


HETEROGNEAS
Professora Me. Gislaine Camila Lapasini Leal
Objetivos de Aprendizagem
Estudar as estruturas de dados homogneas (vetores e matrizes).
Conhecer mtodos de ordenao e pesquisa.
Conhecer estruturas de dados heterogneas (registros).
Construir algoritmos utilizando estruturas de dados homogneas e heterogneas.
Plano de Estudo
A seguir, apresentam-se os tpicos que voc estudar nesta unidade:
Estrutura de Dados Homognea
Vetores
Ordenao de Vetor
Busca em Vetor
Mtodo Sequencial
Matrizes
Estrutura de Dados Heterognea
Registros
Problema

INTRODUO
Estamos chegando ao final do contedo da disciplina de Algoritmos e Lgica de Programao
I. Nesta unidade voc conhecer as estruturas de dados homogneas e heterogneas. Essas
estruturas permitem agrupar diversas informaes em uma nica varivel.
As estruturas de dados homogneas permitem a representao de diversas informaes do
mesmo tipo, sendo divididas em unidimensionais (vetores) e multidimensionais (matrizes).
Estudaremos como atribuir valores, realizar a leitura e entrada de dados nesse tipo de
estrutura. Alm disso, conheceremos um mtodo para a classificao (ordenao segundo
algum critrio) e busca em vetores, especificamente, ordenao com Bubble Sort e pesquisa
sequencial.
Estudaremos as estruturas de dados heterogneas, registros, que agregam informaes de
diversos tipos. Abordando, especificamente, como realizar atribuio, entrada e sada de
dados utilizando registros.
Na construo de algoritmos utilizando estruturas homogneas e heterogneas, utilizaremos
todos os conceitos vistos nas demais unidades, principalmente as estruturas de repetio, pois
elas so utilizadas nas operaes de atribuio, leitura e escrita.
Ao final desta unidade voc saber construir algoritmos utilizando as estruturas de dados
homogneas e heterogneas, as quais permitem representar um agrupamento de informaes
em uma mesma varivel. Entender, tambm, qual a importncia dessas estruturas e como
utiliz-las em aplicaes prticas, aumentando assim a gama de problemas que consegue
resolver utilizando algoritmos. Vamos l?

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

147

ESTUTURAS DE DADOS HOMOGNEAS


Estruturas de dados homogneas so estruturas que agrupam diversas informaes, do
mesmo tipo, em uma nica varivel (FARRER, 1989). Essas estruturas homogneas so
divididas em estruturas unidimensionais (vetores) e multidimensionais (matrizes), as quais
estudaremos a seguir.

VETORES
As estruturas unidimensionais, conhecidas como vetores, consistem em um arranjo de
elementos armazenados na memria principal, sequencialmente, todos com o mesmo nome
(LOPES; GARCIA, 2002).
O vetor segue o mesmo princpio de uma matriz linha da matemtica, como ilustra a Figura
13. Em cada coluna da linha temos uma varivel com mesmo nome, no entanto em diferentes
posies no arranjo. A posio de cada varivel no arranjo indicada por um ndice. No caso
apresentado, temos 5 posies de modo que na posio 1 temos o valor 4, na posio 2 o
valor 7, na posio 3 o valor 10, na posio 4 o valor 1 e na posio 5 o valor 5.

Figura 13: Vetor


Fonte: adaptado de LOPES; GARCIA (2002)

O uso de vetores est associado criao de tabelas, em que temos a definio de uma nica
varivel que dimensionada com um determinado tamanho. Sendo que dimenso deve ser
uma constante inteira e positiva (MANZANO; OLIVEIRA, 1997).

148 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

A declarao de um vetor realizada na seo de variveis (Var) do seguinte modo:


Variavel: vetor [<dimenso>] de <tipo de dado>
Em que:

<dimenso> representa os valores de incio e fim do tamanho do vetor

<tipo de dado> pode ser real, inteiro, lgico ou caractere.

Um exemplo de declarao de vetor :


Media: vetor [1..5] de real
Em que o nome da varivel media, sendo que esta possui cinco posies e do tipo real.
O acesso a cada posio do vetor realizado por meio da especificao do ndice. Isto
media[1] indica o elemento que est na posio 1 do vetor, que no caso da Figura 13 o valor
4.
As operaes de atribuio, leitura e escrita so realizadas para cada elemento do vetor,
de modo que no possvel operar sobre o vetor como um todo. Deste modo, ao utilizar os
comandos de atribuio, leitura e escrita devemos utilizar o nome da varivel mais o ndice.
Note que, como as operaes devem ser realizadas elemento a elemento temos que utilizar
uma estrutura de repetio para a entrada e sada de dados. Das estruturas de repetio vistas
na Unidade III, qual a mais adequada? Como um vetor possui um tamanho fixo, informado no
momento de sua declarao, sabemos previamente o nmero de repeties que precisa ser
realizado. Portanto, a estrutura Para adequada.
Se voc no entendeu como funciona um vetor, fique tranquilo!! Construiremos um algoritmo
para aplicar os conceitos estudados at aqui.
O problema consiste em ler o nome e quatro notas de 10 alunos e imprimir uma relao

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

149

contendo o nome do aluno, notas e a mdia final.


Seguindo o mtodo de estruturao de problemas, temos que:

Objetivo do algoritmo: emitir uma relao contendo nome dos alunos, notas e mdia
final.

Entrada: ler nome e quatro notas de dez alunos.

Processamento: calcular a mdia dos alunos.

Sada: imprimir nome dos alunos, notas e mdia final.

Na entrada de dados temos que efetuar a leitura do nome do aluno e quatro notas. Observe que
a leitura tem que ser realizada para dez alunos. Sem utilizar a estrutura de vetor precisaramos
de dez variveis para armazenar nome, cinquenta variveis para armazenar as quatro notas
dos dez alunos e dez variveis para armazenar a mdia. Com o uso de vetores precisamos
declarar uma varivel para armazenar nome, quatro variveis para armazenar as notas e uma
para armazenar a mdia. O tipo de dado utilizado para armazenar o nome caractere e para
as notas e mdias utilizamos o real. Podemos utilizar inteiro? No, pois tanto para nota quanto
para mdia so admitidos valores decimais. A entrada de dados realizada por meio do
comando leia, no entanto, devemos lembrar que no possvel obter todos os valores do vetor
de uma nica vez, precisamos ler elemento a elemento. O processamento consiste em calcular
a mdia das quatro notas para cada aluno e armazenar na varivel media. Na sada de dados
temos que informar o nome, notas e mdias dos dez alunos. Para isso, utilizaremos o comando
escreva em uma estrutura de repetio, pois temos que escrever elemento a elemento do

150 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

vetor. No Quadro 60 apresentado o algoritmo para o problema descrito.


Quadro 60: Pseudocdigo Algoritmo mdia notas
Algoritmo media
Var
nome: vetor [1..10] de caractere
n1, n2, n3, n4, media : vetor[1..10] de real
cont: inteiro
Incio
Para cont de 1 at 10 passo 1 faa
Escreva (Informe nome do aluno:)
Leia (nome[cont])
Escreva (Informe a nota 1:)
Leia (n1[cont])
Escreva (Informe a nota 2:)
Leia (n2[cont])
Escreva (Informe a nota 3:)
Leia (n3[cont])
Escreva (Informe a nota 4:)
Leia (n4[cont])
media[cont]

(n1[cont] + n2[cont]+n3[cont] + n4[cont])/4

fim_para
Para cont de 1 at 10 passo 1 faa
Escreva (Aluno:, nome[cont])
Escreva (Nota 1:, n1[cont])
Escreva (Nota 2:, n2[cont])
ALGORITMOS
LGICA
DE PROGRAMAO I | Educao a Distncia
EscrevaE(Nota
3:, n3[cont])

151

media[cont]

(n1[cont] + n2[cont]+n3[cont] + n4[cont])/4

fim_para
Para cont de 1 at 10 passo 1 faa
Escreva (Aluno:, nome[cont])
Escreva (Nota 1:, n1[cont])
Escreva (Nota 2:, n2[cont])
Escreva (Nota 3:, n3[cont])
Escreva (Nota 4:, n4[cont])
Escreva (Mdia:, media[cont])
fim_para
Fim.

Observe que nos comandos de entrada, sada e atribuio sempre utilizamos o nome da varivel
seguido do ndice na posio do vetor. Se voc ficou com dvidas quanto ao funcionamento de
vetores elabore o teste de mesa para o algoritmo apresentado.
Fique tranquilo!!! Na prxima seo construiremos mais algoritmos utilizando vetores.

ORDENAO EM VETOR
No dia a dia nos deparamos com uma srie de situaes em que independentemente do modo
que os dados foram informados, precisamos apresent-los seguindo uma ordem. No caso de
variveis do tipo caractere temos que classific-los em ordem alfabtica (A-Z) para facilitar
a localizao de um nome, por exemplo. A ordenao crescente ou decrescente pode ser
utilizada, tambm, para variveis numricas (MANZANO; OLIVEIRA, 1997).
A ordenao o processo de rearranjar os elementos de acordo com um critrio especfico

152 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

com o objetivo de facilitar a localizao (WIRTH, 1999). Na literatura existem diversos mtodos
de ordenao, sendo o mtodo da bolha (Bubble Sort) o mais conhecido.
O mtodo da bolha no o mtodo mais eficiente, mas bastante simples. Portanto, veremos
seu funcionamento. O mtodo consiste em percorrer o vetor repetidas vezes, comparando os
elementos vizinhos. Se eles esto fora de ordem, efetuada uma troca de posio. O nmero
de repeties de varredura dado pelo nmero de elementos do vetor menos 1. Vamos tomar
como exemplo a ordenao (crescente) do vetor apresentado na Figura 14. Primeiramente,
veremos o funcionamento do mtodo passo a passo e, em seguida, a implementao do
algoritmo. Como podemos observar o vetor no est ordenado.

Figura 14: Vetor inicial


Ao iniciar a ordenao estamos na posio 1 (Figura 15), temos que comparar o elemento da
posio 1 com o elemento da posio 2 (Figura 16). Como 4 no maior que 7 no efetuamos
a troca.

Figura 15: Primeiro repetio


4 maior que 7?

Figura 16: Comparao entre os elementos


Agora temos que comparar o elemento da posio 1 com o elemento da posio 3 (Figura 17).

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

153

Como 4 no maior que 10, no h troca. Agora temos que comparar o elemento da posio
1 com o elemento da posio 4 (Figura 18).
4 maior que 10?

Figura 17: Comparao entre os elementos


Como 4 maior do que 1, temos que trocar os elementos de posio, isto o 1 vai para a
posio 1 e o 4 vai para a posio 4. Ainda temos que comparar o elemento da posio 1 com
o elemento da posio 5 (Figura 19).
4 maior que 1?

Figura 18: Comparao entre os elementos


Como 1 no maior que 5, a troca no efetuada.
1 maior que 5?

Figura 19: Comparao entre os elementos


Temos que repetir o processo de comparao, agora comparando o elemento da posio 2
com os demais elementos (Figura 20).

Figura 20: Segunda repetio

154 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Comparando o elemento da posio 2 com o elemento da posio 3 (Figura 21), no h troca,


pois 7 no maior que 10. Vamos ento comparar o elemento da posio 2 com o elemento
da posio 4 (Figura 21).
7 maior que 10?

Figura 21: Comparao entre os elementos


Como 7 maior do que 4, h a troca de posio dos elementos (Figura 23).
7 maior que 4?

Figura 22: Comparao entre os elementos


Prosseguindo com a comparao, agora temos que analisar o elemento da posio 2 e o da
posio 5 (Figura 24).

Figura 23: Ordenao do vetor


4 maior que 5?

Figura 24: Comparao entre os elementos


Como 4 no maior que 5, no h troca. Agora devemos repetir a comparao passando para
a posio 3 (Figura 25).

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

155

Figura 25: Terceira repetio


Comparando o elemento da posio 3 com o elemento da posio 4 (Figura 26) , temos que
10 maior que 7. Portanto, h troca (Figura 27).
10 maior que 7?

Figura 26: Comparao entre os elementos

Figura 27: Ordenao do vetor


Ainda temos que comparar o elemento da posio 3 com o da posio 5 (Figura 28).
7 maior que 5?

Figura 28: Comparao entre os elementos


Comparando 7 e 5, temos que 7 maior que 5. Portanto, os elementos trocam de posio
(Figura 29).

156 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Figura 29: Ordenao do vetor


Repetindo o processo de comparaes, iniciando na quarta posio, conforme ilustra a Figura
30.

Figura 30: Quarta repetio


Comparando o elemento da posio 4 com o da posio 5 (Figura 30), temos que 10 maior
que 7. Os elementos trocam de posio e como no h mais comparaes, temos o vetor
ordenado (Figura 32).

10 maior que 7?

Figura 31: Comparao entre os elementos

Figura 32: Vetor ordenado


Ao final das comparaes temos o vetor ordenado. O processo de percorrer o vetor realizando
comparaes foi repetido quatro vezes, ou seja, o nmero de elementos do vetor menos 1.
De modo que na primeira repetio foram realizadas quatro comparaes, na segunda trs,
na terceira duas e na ltima uma. O algoritmo que l 5 valores e os apresenta em ordem
crescente (utilizando o mtodo da bolha) apresentado no Quadro 61.

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

157

Quadro 61: Pseudocdigo Algoritmo ordenao

Algoritmo ordena
Var
num: vetor[1..5] de inteiro
i, j, aux: inteiro
Incio
Para i de 1 at 5 passo 1 faa
Escreva (Informe um nmero:)
Leia (num[i])
Fim_para
Para i de 1 at 4 passo 1 faa
Para j de i+1 at 5 faa
Se (num[i] > num[j]) ento
uax

num[i]

num[i] num[j]
num[j]

aux

Fim_se
fim_para
fim_para
Para i de 1 at 5 passo 1 faa
Escreva (num[i])
Fim_para
Fim.

158 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

No primeiro lao de repetio temos a leitura de cinco nmeros, os quais so armazenados no


vetor num. Aps a entrada de dados temos o encadeamento de estruturas de repetio Para.
O primeiro Para responsvel por percorrer o vetor da posio 1 at a posio 4 (nmero de
elementos menos 1) e o segundo Para que percorre os elementos da posio i+1 (vizinho)
at a posio 5 (nmero total de elementos). No interior da estrutura Para ocorre a comparao
entre os nmeros se o nmero maior que o vizinho eles trocam de posio. Observe que
neste ponto utilizamos uma varivel denominada aux. Para que serve esta varivel? No
possvel efetuar a troca entre dois elementos sem utilizar uma varivel auxiliar para armazenar
o valor. Se fizemos num[i] num[j] e num[j] num[i], o que teramos como resultado? Nos
duas posies de memria teramos o valor da varivel num[j]. Sempre que for necessrio
efetuar a troca ou permutao entre elementos precisamos de uma estrutura auxiliar, para
armazenar temporariamente o valor de uma das variveis. Ao final da execuo das duas
estruturas de repetio temos o vetor ordenado. Em seguida, realizada a sada de dados,
tambm, utilizando uma estrutura de repetio, em que os valores j ordenados so impressos.
Se voc ainda ficou com dvidas quanto ao funcionamento da ordenao, faa o teste de mesa
do algoritmo utilizando o vetor da Figura 33. Lembre-se no h aprendizado de algoritmos sem
prtica.

Figura 33: Vetor

BUSCA EM VETOR
H situaes em que precisamos buscar por um determinado elemento em um vetor. Se
considerarmos um vetor com cinco elementos fcil realizar essa busca de forma manual.
No entanto, nos casos em que temos muitos elementos este processo manual invivel
(MANZANO; OLIVEIRA, 1997).

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

159

Existem mtodos que permitem verificar a existncia de um valor dentro de um vetor, isto
, procurar dentre os elementos um determinado valor. Estudaremos o mtodo de busca
sequencial.

MTODO SEQUENCIAL
A busca utilizando o mtodo sequencial consiste em percorrer o vetor a partir do primeiro
elemento, sequencialmente, at o ltimo realizando testes lgicos verificando se o elemento
do vetor, posio a posio, igual ao elemento procurado. Neste mtodo, tambm conhecido
como busca linear, a busca termina quando uma das duas condies for satisfeita: o elemento
foi encontrado ou todo o vetor foi analisado, mas o elemento no foi encontrado (WIRTH,
1999).
O algoritmo que realiza a busca sequencial de um nmero qualquer em um vetor apresentado
no Quadro 62.
Quadro 62: Pseudocdigo Algoritmo Busca Sequencial
Algoritmo busca
Var
vnum: vetor[1..20] de inteiro
num: inteiro
acha: lgico
Incio
Para i de 1 at 20 passo 1 faa
Escreva (Informe um nmero:)
Leia (vnum[i])
Fim_para
Escreva (Informe o nmero que deseja buscar:)
Leia (num)

160 ALGORITMOS Ei LGICA


DE PROGRAMAO I | Educao a Distncia
1

Leia (vnum[i])
Fim_para
Escreva (Informe o nmero que deseja buscar:)
Leia (num)
i 1
acha falso
Enquanto (i < = 20) e (acha = falso) faa
se (num = vnum[i]) ento
acha verdadeiro
seno
i i+1
fim_se
fim_enquanto
Se (acha = verdadeiro) ento
Escreva (O elemento foi encontrado na posio, i)
Seno
Escreva (O elemento no foi encontrado)
Fim_se
Fim.

Inicialmente so obtidos os valores e armazenados no vetor vnum. Como utilizamos uma


estrutura de repetio que realiza o teste lgico no incio, o Enquanto, temos que inicializar
as variveis utilizadas na condio. A estrutura Enquanto percorre o vetor, comparando cada
elemento como o nmero pesquisado. Por fim, temos um teste condicional que verifica se o

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

161

nmero foi encontrado no vetor.

MATRIZES
Uma matriz uma varivel homognea multidimensional, formada por uma sequncia de
variveis do mesmo tipo, com o mesmo nome e alocadas sequencialmente na memria.
Para acessar cada elemento da matriz so utilizados ndices, sendo que para cada dimenso
devemos ter um ndice.
A Figura 34 apresenta um exemplo de uma matriz bidimensional, com trs linhas e quatro
colunas.

Figura 34: Matriz


Fonte: adaptado de (ASCENCIO; CAMPOS, 2010)

Da mesma forma que os vetores, a dimenso da matriz formada por constantes inteiras e
positivas. E a nomeao da matriz segue as mesmas regras das variveis. A declarao de
um vetor realizada na seo de variveis (Var) do seguinte modo:
Variavel: vetor [<dimenso1>, <dimenso2>] de <tipo de dado>

162 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Em que:

<dimenso1> e <dimenso2> representam o tamanho da tabela

<tipo de dado> pode ser real, inteiro, lgico ou caractere.

Um exemplo de declarao de matriz :


Notas: vetor [1..8, 1..4] de real
Neste exemplo, temos uma matriz com oito linhas e quatro colunas (Figura 35). Isto , na
primeira dimenso representamos o nmero de linhas e na segunda o nmero de colunas.

Figura 35: Exemplo de matriz


Em uma matriz nas operaes de atribuio, leitura e escrita devemos utilizar o nmero de
repeties relativo ao tamanho das dimenses. Com isto, uma matriz de duas dimenses deve
ser controlada por dois laos de repetio, de trs dimenses trs laos e assim por diante
(MANZANO; OLIVEIRA, 1997).

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

163

Com base nos conceitos sobre matrizes vamos escrever um algoritmo para o seguinte
problema: efetuar a leitura de quatro notas de vinte alunos, calcular a mdia de cada aluno e
a mdia da turma.
Sistematizando o problema temos que:

Objetivo do algoritmo: calcular a mdia de cada aluno e a mdia da turma.

Entrada: ler quatro notas de vinte alunos.

Processamento: calcular a mdia das quatro notas dos alunos e a mdia da turma.

Sada: imprimir a mdia de cada aluno e a mdia da turma.

Na entrada de dados temos que efetuar a leitura de quatro notas de vinte alunos. Para isso,
utilizaremos uma matriz com vinte linhas e quatro colunas, ou seja, a primeira dimenso (linhas)
representa o nmero de alunos e a segunda dimenso (colunas) as notas. O tipo de dado
utilizado para armazenar essas informaes real. Como temos uma matriz bidimensional
utilizaremos dois laos de repetio para efetuar a operao de leitura.
O processamento consiste no clculo da mdia das quatro notas para cada aluno, que
armazenaremos em uma varivel vetor de dimenso vinte. J para o clculo da mdia da
turma utilizaremos uma varivel para acumular os valores das mdias de cada aluno e ao sair
da estrutura de repetio calculamos a mdia. Na sada temos que informar a mdia de cada
aluno e da turma. No Quadro 63 apresentado o algoritmo para o problema descrito.

164 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Quadro 63: Pseudocdigo Algoritmo mdia notas


Algoritmo media
Var
media: vetor [1..20] de real
notas: vetor[1..20, 1...4] de real
somat, soma, mediat: real
: inteiro

i, j
Incio
somat 0
soma 0

Para i de 1 at 20 passo 1 faa


Para j de 1 at 4 passo 1 faa
Escreva (Informe a nota, j, do aluno i)
Leia (notas[i,j])
soma soma + notas[i,j]
Fim_para
media[i] soma/4
somat somat + soma
soma 0
fim_para
mediat somat/20
Para i de 1 at 20 passo 1 faa
Escreva (A mdia do aluno, i , :, media[i])
Fim_para
Escreva (A mdia da turma :, mediat)
Fim.
ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

165

Observe que nos comandos de entrada, sada e atribuio sempre utilizamos o nome da
varivel seguida dos ndices que indicam a linha e a coluna da matriz, respectivamente. Como
a matriz bidimensional a leitura foi realizada dentro de um encadeamento da estrutura Para.
A primeira estrutura Para percorre as linhas (alunos) e a segunda a coluna (notas). No interior
do encadeamento de estrutura Para temos a leitura das notas de cada aluno e acumulamos
a soma das quatro notas do aluno. Ao sair da primeira estrutura Para calculada a mdia
para cada aluno, que armazenada no vetor media e armazenamos o valor individual da
mdia de cada aluno na varivel somat, que utilizamos no clculo da mdia da turma. Ao sair
da estrutura Para externa, aps ter percorrido todos os alunos, calculamos a mdia geral
da turma. E na sada de dados, temos a impresso do vetor media dentro de uma estrutura
Para. Fora do lao de repetio escrevemos o valor da mdia geral da turma, armazenado na
varivel mediat.
Se voc ficou com alguma dvida, elabore o teste de mesa. Bom trabalho!!

ESTRUTURAS DE DADOS HETEROGNEAS


As estruturas de dados heterogneas permitem o agrupamento de informaes de diferentes
tipos de dados, sendo denominadas de registros.

REGISTROS
Os registros so estruturas de dados que agregam diversas informaes, que podem ser de
diferentes tipos. Com essa estrutura possvel gerar novos tipos de dados, alm dos definidos
pelas linguagens de programao (ASCENCIO; CAMPOS, 2010).
Em um registro cada informao denominada de campo, os quais podem ser de diferentes
tipos, ou ainda, representar outros registros.

166 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

A declarao de uma varivel registro deve ocorrer antes das variveis, pois pode ocorrer a
necessidade de declarar uma varivel com tipo registro. A sintaxe para declarao dada por
(MANZANO; OLIVEIRA, 1997):
Tipo
<identificador> = registro

<lista dos campos e seus tipos>

fim_registro
var
<variveis> : <identificador>
Em que:

<identificador>: nome do tipo registro.

<lista dos campos e seus tipos>: relao de variveis que sero usadas como campos e
o tipo de cada uma delas.

Note que na seo Var devemos indicar a varivel como tipo registro e a declarao do seu
tipo de acordo com o identificador definido anteriormente. LEMBRE-SE: a instruo tipo deve
vir antes da instruo Var.
As operaes de atribuio, leitura e escrita so realizadas utilizando o nome da varivel
registro e seu campo correspondente separado por um caractere . (ponto) (MANZANO;
OLIVEIRA, 1997).
J conhecemos os conceitos e sintaxe de registros, mas qual a estrutura de um registro e
como utiliz-los?
Vamos retomar o problema visto na seo Vetores, que consistia em ler o nome e quatro

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

167

notas de 10 alunos e imprimir uma relao contendo o nome do aluno, notas e a mdia final.
Na resoluo deste problema aplicamos o conceito de vetores e utilizamos cinco vetores, um
para armazenar o nome, um para cada uma das notas e outro para armazenar a mdia das
notas. H uma forma mais fcil de resolver esse problema? Sim. Sabemos que um registro
pode conter vrios tipos de dados em uma mesma estrutura, ento fica mais fcil agrupar os
dois tipos de dados (caractere e real) em uma mesma estrutura.
A Figura 36 ilustra o layout de um registro, contendo os campos: nome, primeira nota, segunda
nota, terceira nota e quarta nota.

Figura 36: Registro aluno


Fonte: adaptado de (MANZANO; OLIVEIRA, 1997)

Um algoritmo que realiza a leitura de nome e quatro notas de um aluno utilizando o conceito
de registros apresentado no Quadro 64. Com este exemplo fica mais claro como deve ser
realizada a declarao, atribuio, leitura e escrita utilizando registros.

168 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Quadro 64: Pseudocdigo Algoritmo registro aluno


Algoritmo registroaluno
Tipo
Cad_aluno = registro
Nome: caractere
Nota1: real
Nota2: real
Nota3: real
Nota4: real
fim_registro
Var
Aluno: cad_aluno
Incio
Escreva (Informe nome do aluno:)
Leia (aluno.nome)
Escreva (Informe a nota 1:)
Leia (aluno.nota1)
Escreva (Informe a nota 2:)
Leia (aluno.nota2)
Escreva (Informe a nota 3:)
Leia (aluno.nota3)
Escreva (Informe a nota 4:)
Leia (aluno.nota4)
Fim.

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

169

Note que utilizando registros precisamos declarar apenas uma varivel que do tipo cad_
aluno (identificador do registro). O registro possui cinco campos, sendo eles: nome, nota1,
nota2, nota3 e nota4. Para acessar cada um desses campos utilizamos o nome da varivel que
declaramos como registro seguida de ponto e o nome do campo. Por exemplo, aluno.nome.
Voc imagina outras situaes que podemos aplicar o conceito de registros? No dia a dia
nos deparamos com diversos casos. Se pensarmos em uma empresa temos cadastros
com informaes sobre clientes, produtos e servios. Podemos agrupar as informaes
relacionadas a cada um destes elementos em registros, facilitando o acesso s informaes
relacionadas a um cliente, produto ou servio.
Ao criar registros podemos definir um vetor ou at mesmo uma matriz dentro de um registro.
O algoritmo do Quadro 65 apresenta um registro utilizando vetores para o problema de ler o
nome e as quatro notas de um aluno.
Quadro 65: Pseudocdigo Algoritmo registro aluno
Algoritmo registroaluno
Tipo
notas = vetor [1..4] de real
Cad_aluno = registro
Nome: caractere
Nota: notas
fim_registro
Var
Aluno: cad_aluno
i: inteiro
Incio
Escreva (Informe nome do aluno:)
Leia (aluno.nome)
Para i de 1 at 4 passo 1 faa

Escreva (Informe
a nota,
170 ALGORITMOS
E LGICA
DEi, :)
PROGRAMAO I | Educao a Distncia

Aluno: cad_aluno
i: inteiro
Incio
Escreva (Informe nome do aluno:)
Leia (aluno.nome)
Para i de 1 at 4 passo 1 faa
Escreva (Informe a nota, i, :)
Leia (aluno.nota[i])
fim_para
Fim.

No exemplo apresentado na seo Vetores tnhamos a leitura de nome e notas para dez
alunos. Podemos resolver o mesmo problema utilizando registros? Sim, pois podemos declarar
vetores de registros, conforme apresentado no Quadro 66.
Quadro 66: Pseudocdigo Algoritmo registro aluno
Algoritmo registroaluno
Tipo
notas = vetor [1..4] de real
Cad_aluno = registro
Nome: caractere
Nota: notas
fim_registro
Var
Aluno: vetor [1..10] de cad_aluno
i, j: inteiro
Incio
ParaEi LGICA
de 1 at 10DEfaa
ALGORITMOS
PROGRAMAO I | Educao a Distncia

171

Aluno: vetor [1..10] de cad_aluno


i, j: inteiro
Incio
Para i de 1 at 10 faa
Escreva (Informe nome do aluno:)
Leia (aluno[i].nome)
Para j de 1 at 4 passo 1 faa
Escreva (Informe a nota, j, :)
Leia (aluno[i].nota[j])
Fim_para
Fim_para
Para i de 1 at 10 faa
Escreva (Aluno:, aluno[i].nota[j])
Para j de 1 at 4 passo 1 faa
Escreva (Nota, j, :, aluno[i].nota[j])
Fim_para
Fim_para
Fim.

172 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Se voc ficou com dvidas, no se preocupe!! Vamos escrever mais um algoritmo aplicando
os conceitos aprendidos nesta Unidade na prxima seo.

PROBLEMA
O problema consiste em ler informaes (cdigo, descrio, preo e quantidade em estoque)
de 20 produtos. Alm disso, deve ser permitido executar quantas consultas o operador desejar,
em que ele digita o cdigo do produto e apresentado o preo e o saldo em estoque do
produto. Se o cdigo digitado no existir, informar o usurio.
Sistematizando o problema temos que:

Objetivo do algoritmo: ler informaes sobre 20 produtos e realizar consulta pelo cdigo
do produto.

Entrada: ler cdigo, descrio, preo e quantidade em estoque de 20 produtos e o cdigo


para pesquisa.

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

173

Processamento: encontrar o produto com cdigo informado pelo usurio.

Sada: imprimir o preo e o saldo em estoque do produto, se existir o cdigo informado.


Seno informar ao usurio que no h produto cadastrado com o cdigo digitado.

O Quadro 67 apresenta o algoritmo para o problema descrito. Observe que este algoritmo
envolve o conceito de registros, lao de repetio e busca em vetor.
Quadro 67: Pseudocdigo Algoritmo registro aluno

Algoritmo registroproduto
Tipo
Cad_produto = registro
codigo: inteiro
nome: caractere[30]
preo: real
saldo: inteiro
fim_registro
Var
produto: vetor [1..10] de cad_produto
i, codigo: inteiro
acha: lgico
resp: caractere[3]
Incio
Para i de 1 at 20 faa
Escreva (Informe cdigo do produto:)
Leia (produto[i].codigo)
Escreva (Informe a descrio do produto:)
Leia (produto[i].nome)
174 ALGORITMOS E LGICA
DE PROGRAMAO I | Educao a Distncia

acha: lgico
resp: caractere[3]
Incio
Para i de 1 at 20 faa
Escreva (Informe cdigo do produto:)
Leia (produto[i].codigo)
Escreva (Informe a descrio do produto:)
Leia (produto[i].nome)
Escreva (Informe o preo do produto:)
Leia (produto[i].preco)
Escreva (Informe o saldo em estoque do produto:)
Leia (produto[i].saldo)
Fim_para
Resp

sim

Enquanto (resp = sim) faa


Escreva (Informe o cdigo a ser pesquisado:)
Leia (codigo)
i 1
acha falso
Enquanto (i < = 20) e (acha= falso) faa
Se (produto[i].codigo = cdigo) ento
Acha verdadeiro
Seno
i i+1
fim_se
fim_enquanto
Se (acha=verdadeiro) ento
ALGORITMOS
E LGICA
DE:,
PROGRAMAO
Escreva
(O preo
produto[i].preco) I | Educao a Distncia

175

fim_se
fim_enquanto
Se (acha=verdadeiro) ento
Escreva (O preo :, produto[i].preco)
Escreva (O saldo em estoque :, produto[i].saldo)
Seno
Escreva (No h produto com o cdigo informado)
Fim_se
Escreva (Deseja continuar a pesquisa?)
Leia (resp)
Fim_enquanto
Fim.

CONSIDERAES FINAIS
Nesta unidade voc conheceu as estruturas de dados homogneas e heterogneas. Nas
estruturas de dados homogneas estudamos os vetores e as matrizes.
Vimos que vetores e matrizes so estruturas homogneas que agrupam diversas informaes,
do mesmo tipo, em uma nica varivel. Sendo os vetores unidimensionais e as matrizes
multidimensionais. Em relao aos vetores conhecemos o mtodo de classificao Bubble
Sort, que varre o vetor repetidas vezes, comparando os elementos vizinhos. Se eles esto
fora de ordem, efetuada uma troca de posio. Esse mtodo utilizado quando queremos
rearranjar o vetor segundo algum critrio como, por exemplo, ordem crescente, decrescente
ou alfabtica. Ainda em relao a vetores conhecemos o mtodo de pesquisa sequencial, que
permite verificar se um dado elemento encontra-se no vetor ou no.
Estudamos as estruturas heterogneas, aquelas que agregam diversas informaes, que
podem ser de diferentes tipos, sendo denominadas de registros. Este tipo de estrutura
bastante utilizado para representar cadastros, tais como: produtos, clientes, alunos, servios
e outros.

176 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Na construo de algoritmos utilizando estruturas homogneas e heterogneas utilizamos


todos os conceitos vistos nas demais unidades, revisando, principalmente as estruturas de
repetio, pois elas so utilizadas nas operaes de atribuio, leitura e escrita.
Por fim, elaboramos um algoritmo que envolveu todos os conceitos vistos na Unidade. Agora,
para fixar todos os conceitos importante que voc desenvolva as atividades de autoestudo
propostas. Assim, voc assimila com mais facilidade tudo o que vimos, desenvolve seu
raciocnio lgico e aumenta o poder de resoluo de problemas, afinal, elaboramos algoritmos
com o intuito de resolver problemas.

Para saber um pouco mais sobre o mtodo de ordenao da bolha, acesse os vdeos disponveis em:
<http://www.youtube.com/watch?v=AW5TlqCHV8U>.
<http://www.youtube.com/watch?v=otqltM-ou0o>.

A varivel caractere armazenada na memria principal como sendo um vetor, mesmo sem ser declarada como tal.

ATIvIDADE DE AuTOESTuDO
1. Elabore um algoritmo que leia um vetor de 50 nmeros inteiros e imprima o maior e o menor
nmero.
2. Escreva um algoritmo que leia dois vetores A e B, com 20 nmeros inteiros. Efetue a soma
dos dois vetores em um vetor C e imprima o vetor C em ordem crescente.
3. Construa um algoritmo que leia o preo de compra e o preo de venda de 30 produtos e
imprima o nmero de mercadorias que apresenta lucro < 15% e quantas apresentam lucro
> 30%.
ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

177

4. Formule um algoritmo que leia uma matriz 5 x 5 de nmeros inteiros e imprima os elementos da diagonal principal.
5. Desenvolva um algoritmo que efetua a leitura dos nomes de 5 alunos e tambm de suas
quatro notas bimestrais. Calcule a mdia de cada aluno e apresente os nomes classificados em ordem crescente de mdia.
6. Escreva um algoritmo que recebe duas matrizes inteiras de ordem 5 e imprima a soma e a
diferena entre elas.
7. Formule um algoritmo que receba os valores de contas a pagar de uma ao longo do ano,
de modo que cada linha representa um ms do ano e cada coluna uma semana do ms.
Com isso, temos uma matriz 12 x 4. Calcule e imprima: total de contas a pagar por ms e
o total anual.
8. Escreva a estrutura de um registro para um cadastro de livros contendo as seguintes informaes: ttulo, autor, editora, edio e ano.
9. Elabore um cadastro para 15 professores, contendo as seguintes informaes: matrcula,
nome, formao e salrio. Desenvolva um menu que:
1. cadastre os professores;
2. imprima o nome dos professores por ordem crescente de salrio;
3. pesquise um professor pela matrcula e informe nome e formao, caso exista;
4. saia do programa.
EXERCCIOS DE FIXAO
1. Escreva um algoritmo que leia um vetor com 30 elementos inteiros e escreva-os em ordem
contrria a da leitura.
Objetivo do algoritmo: ler e imprimir um vetor com 30 elementos inteiros.
Entrada: ler um vetor com 30 nmeros inteiros.
Processamento: no h.
Sada: imprimir os 30 elementos em ordem contrria a da leitura.

178 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Quadro 68: Pseudocdigo Exerccio 1


Algoritmo levetor
Var
num: vetor [1..30] de inteiro
: inteiro

i, j
Incio

Para i de 1 at 30 passo 1 faa


Escreva (Informe um nmero:)
Leia (num[i])
fim_para
Para i de 20 at 1 passo -1 faa
Escreva (num[i])
Fim_para
Fim.

2. Elabore um algoritmo que leia duas matrizes de 5x5. Calcule e imprimia a diferena entre
elas.
Objetivo do algoritmo: ler duas matrizes e imprimir a diferena entre elas.
Entrada: ler duas matrizes 5 x 5.
Processamento: calcular a diferena entre as duas matrizes.
Sada: imprimir a matriz diferena.

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

179

Quadro 69: Pseudocdigo Exerccio 2


Algoritmo diferenca
Var
A, B, C

: vetor[1..5, 1...5] de inteiro

i, j

: inteiro

Incio
Para i de 1 at 5 passo 1 faa
Para j de 1 at 5 passo 1 faa
Escreva (Informe o elemento, i, j, da matriz A)
Leia (A[i,j])
Fim_para
fim_para
Para i de 1 at 5 passo 1 faa
Para j de 1 at 5 passo 1 faa
Escreva (Informe o elemento, i, j, da matriz B )
Leia (B[i,j])
C

A[i,j] B[ i,j]

Fim_para
fim_para
Para i de 1 at 5 passo 1 faa
Para j de 1 at 5 passo 1 faa
Escreva (C[i,j])
Fim_para
fim_para
Fim.

180 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

3. Construa um algoritmo para uma agenda telefnica (nome, fone, e-mail) com 20 contatos.
Alm disso, deve ser permitido executar quantas consultas o operador desejar, em que
ele digita o nome do contato e apresentado o telefone. Se o nome digitado no existir,
informar o usurio.
Objetivo do algoritmo: ler informaes sobre 20 contatos e realizar consulta pelo nome.
Entrada: ler nome, fone e e-mail de 20 contatos e o nome para pesquisa.
Processamento: encontrar o nome informado pelo usurio.
Sada: imprimir o telefone se existir o nome informado. Seno, informar ao usurio que no
h contato cadastrado com o nome digitado.
Quadro 70: Pseudocdigo Exerccio 3
Algoritmo registrocontato
Tipo
Cad_agenda = registro
nome: caractere[30]
fone: caractere[15]
e-mail: caractere[20]
fim_registro
Var
contato: vetor [1..20] de cad_agenda
i: inteiro
acha: lgico
nomebusca: caractere[30]
resp: caractere[3]
Incio
Para i de 1 at 20 faa
Escreva (Informe nome do contato:)

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Leia (contato[i].nome)

181

nomebusca: caractere[30]
resp: caractere[3]
Incio
Para i de 1 at 20 faa
Escreva (Informe nome do contato:)
Leia (contato[i].nome)
Escreva (Informe o telefone:)
Leia (contato[i].fone)
Escreva (Informe o e-mail:)
Leia (contato[i].email)
Fim_para
Resp

sim

Enquanto (resp = sim) faa


Escreva (Informe o nome a ser pesquisado:)
Leia (nomebusca)
i 1
acha falso
Enquanto (i < = 20) e (acha= falso) faa
Se (contato[i].nome = nomebusca) ento
Acha verdadeiro
Seno
i i+1
fim_se
fim_enquanto
Se (acha=verdadeiro) ento
Escreva (O fone :, contato[i].fone)
Seno

182 ALGORITMOS E LGICA


DE PROGRAMAO I | Educao a Distncia
Escreva (No h contato com o nome informado)

Se (acha=verdadeiro) ento
Escreva (O fone :, contato[i].fone)
Seno
Escreva (No h contato com o nome informado)
Fim_se
Escreva (Deseja continuar a pesquisa?)
Leia (resp)
Fim_enquanto
Fim.

4. Elabore um algoritmo que leia informaes (matrcula, nome, lotao e salrio) de 30 professores. Deve ser permitido executar quantas consultas o operador desejar, em que ele
digita a matrcula e apresentado a lotao e o salrio do professor. Se a matrcula digitada
no existir, informar o usurio.
Objetivo do algoritmo: ler informaes sobre 30 professores e realizar consulta pela matrcula.
Entrada: ler matrcula, nome, lotao e salrio e a matrcula para pesquisa.
Processamento: encontrar o professor com a matrcula informada pelo usurio.
Sada: imprimir a lotao, se existir a matrcula informada. Seno, informar ao usurio que
no h professor com a matrcula digitada.
Quadro 71: Pseudocdigo Exerccio 4
Algoritmo registroprofessor
Tipo
Cad_professor = registro
matricula: inteiro
nome: caractere[30]
lotacao: caractere[20]
salario: real
fim_registro
Var
ALGORITMOS
E LGICA DE PROGRAMAO I | Educao a Distncia

183

salario: real
fim_registro
Var
professor: vetor [1..30] de professor
i, registro: inteiro
acha: lgico
resp: caractere[3]
Incio
Para i de 1 at 30 faa
Escreva (Informe a matrcula:)
Leia (professor[i].matricula)
Escreva (Informe o nome:)
Leia (professor[i].nome)
Escreva (Informe a lotao:)
Leia (professor[i].lotacao)
Escreva (Informe o salrio:)
Leia (professor[i].salario)
Fim_para
Resp

sim

Enquanto (resp = sim) faa


Escreva (Informe a matricula a ser pesquisado:)
Leia (registro)
i 1
acha

falso

Enquanto (i < = 20) e (acha= falso) faa


Se (professor[i].matricula = registro) ento
Acha

verdadeiro

184 ALGORITMOS E LGICA


DE PROGRAMAO I | Educao a Distncia
Seno

i 1
acha

falso

Enquanto (i < = 20) e (acha= falso) faa


Se (professor[i].matricula = registro) ento
Acha

verdadeiro

Seno
i

i+1

fim_se
fim_enquanto
Se (acha=verdadeiro) ento
Escreva (A lotao :, professor[i].lotacao)
Escreva (O salrio :, professor[i].salario)
Seno
Escreva (No h professor com a matrcula informada)
Fim_se
Escreva (Deseja continuar a pesquisa?)
Leia (resp)
Fim_enquanto
Fim.

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

185

UNIDADE V

SUB-ROTINAS E PROGRAMAO COM


ARQUIVOS
Professora Me. Gislaine Camila Lapasini Leal
Objetivos de Aprendizagem
Conhecer e desenvolver sub-rotinas (procedimentos e funes).
Entender os mecanismos de passagem de parmetros e escopo de variveis.
Compreender algoritmos recursivos.
Estudar organizao, declarao, forma de acesso e operaes em arquivos.
Plano de Estudo
A seguir, apresentam-se os tpicos que voc estudar nesta unidade:
Sub-rotinas
Procedimentos
Escopo de variveis
Passagem de Parmetros
Funes
Recursividade
Trabalhando com arquivos

INTRODUO
Caro aluno, chegamos ltima unidade da disciplina de Algoritmos e Lgica de Programao
I. Nesta unidade voc estudar as sub-rotinas e aprender a trabalhar com a manipulao de
arquivos.
No dia a dia um programador, geralmente, encontra problemas complexos e abrangentes. Para
resolver esse tipo de problema o primeiro passo consiste em decomp-lo em subproblemas
para assim facilitar o processo de entendimento, anlise e resoluo. Na soluo dos
subproblemas so utilizadas sub-rotinas, bloco de instrues que realizam tarefas especficas.
Na literatura encontramos, tambm, os termos subalgoritmo, subprograma e mdulo, que so
equivalentes a sub-rotinas. Existem dois tipos de sub-rotinas: os procedimentos e as funes.
Estudaremos cada uma delas destacando sua sintaxe e modo de aplicao.
Ao trabalhar com sub-rotinas surge a necessidade de entender o conceito de escopo de
variveis, compreender o que so variveis locais e variveis globais e como elas impactam
no algoritmo. O escopo est relacionado visibilidade de uma varivel ao longo do algoritmo,
sendo que uma varivel local aquela que podemos utilizar apenas dentro da sub-rotina e
uma varivel global aquela que est acessvel de qualquer parte do algoritmo.
Ainda no contexto de sub-rotinas estudaremos a passagem de parmetros por valor e por
referncia e o conceito de recursividade. Em relao passagem de parmetros veremos
quando utilizar cada uma delas e qual o seu impacto no algoritmo. Estudaremos funes
recursivas, que so funes que fazem chamadas a si mesmo, como constru-las, quais suas
vantagens e desvantagens.
Conheceremos o conceito de arquivos, modos de concepo e como manipul-los utilizando
operaes que possibilitem consultar, inserir, modificar e eliminar dados.
Ao final desta unidade voc saber construir algoritmos modularizados, utilizar arquivos para

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

189

armazenamento dos dados e responder a questes do tipo: quando utilizar uma funo ou um
procedimento? O que so parmetros? Como deve ser realizada a passagem de parmetros?
Qual a diferena entre passar por valor ou por referncia? Como acessar um arquivo? Como
percorrer um arquivo?

SUB-ROTINAS
Em muitas situaes nos deparamos com problemas complexos e abrangentes. Para resolver
esse tipo de problema temos que dividi-lo em subproblemas mais simples e especficos, dividindo
assim a sua complexidade e facilitando a resoluo (FORBELLONE; EBERSPACHER, 2005).
A decomposio do problema em subproblemas determinante para a reduo da complexidade
e, por conseguinte, na resoluo do problema. Esse processo de decomposio, tambm,
conhecido como refinamento sucessivo ou abordagem top down, em que a anlise parte
do todo para o especfico (FORBELLONE; EBERSPACHER, 2005; MANZANO; OLIVEIRA,
1997).
Na diviso dos problemas complexos utilizamos sub-rotinas para resolver cada subproblema,
permitindo assim possuir a modularizao. Na literatura encontramos, tambm, as terminologias
de subprograma, mdulos e subalgoritmos para designar as sub-rotinas.
E o que vem a ser ento uma sub-rotina? Uma sub-rotina consiste em blocos de instrues
que realizam tarefas especficas. um trecho menor de cdigo, um algoritmo mais simples,
que resolve um subproblema por meio de operaes de entrada, processamento e sada
(ASCENCIO; CAMPOS, 2010; MANZANO; OLIVEIRA, 1997).
Uma sub-rotina carregada apenas uma vez e pode ser executada quantas vezes for
necessrio, podendo ser utilizada para economizar espao e tempo de programao. Em cada
sub-rotina, alm de ter acesso s variveis do programa que o chamou (variveis globais),
pode ter suas prprias variveis (variveis locais), que existem apenas durante sua chamada.

190 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Na chamada de uma sub-rotina possvel passar informaes, as quais so denominadas


parmetros (ASCENCIO; MOURA, 2010; GUIMARES; LAGES, 1994).
Guimares e Lages (1994) destacam que modularizao dos algoritmos apresenta as
seguintes vantagens:

Divide o problema em partes coerentes.

Facilita o teste.

Evita repetio do cdigo.

Maior legibilidade do algoritmo.

H dois tipos de sub-rotinas: os procedimentos e funes. A seguir, estudaremos cada uma


delas.

PROCEDIMENTOS
Um procedimento consiste em um trecho de cdigo (conjunto de instrues) com incio e fim e
identificado por um nome, o qual usado para chamar a rotina de qualquer parte do programa
principal ou em uma sub-rotina qualquer. Quando uma sub-rotina chamada, ela executada
e ao seu trmino o processamento retorna para a linha seguinte a da instruo que a chamou
(MANZANO; OLIVEIRA, 1997).
Uma sub-rotina de procedimento se caracteriza por no retornar valor para quem as chamou
(ASCENCIO; CAMPOS, 2010). E sua sintaxe :

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

191

procedimento <nome do procedimento>


var

<variveis>

incio
<instrues>
fim_procedimento
Outro ponto importante que as sub-rotinas devem ser declaradas antes do programa ou
sub-rotina que as chama.
Para exemplificar o funcionamento de sub-rotinas do tipo procedimento, vamos construir um
programa calculadora que apresenta um menu de opes no programa principal e possibilita
ao usurio escolher as seguintes operaes: adio, subtrao, multiplicao, diviso e sair
(MANZANO; OLIVEIRA, 2997).
Sistematizando as informaes do problema temos que:
Objetivo do algoritmo: criar uma calculadora com as operaes de adio, subtrao,
multiplicao e diviso.
Entrada: ler a opo do usurio. E se for uma operao aritmtica efetuar a operao.
Processamento: efetuar a operao aritmtica selecionada.
Sada: imprimir o resultado da operao aritmtica.
Na construo deste algoritmo vamos aplicar o conceito de procedimentos, de modo que cada
operao aritmtica deve ser realizada por um procedimento especfico. O programa principal
ir ler a opo selecionada pelo usurio e efetuar chamada aos procedimentos. Precisamos
criar variveis para armazenar a opo selecionada pelo usurio, os dois nmeros que o

192 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

usurio deseja efetuar a operao e outra varivel para armazenar o resultado da operao
aritmtica. O processamento consiste em efetuar a operao solicitada e como sada temos
que informar ao usurio o resultado da operao. Lembre-se: as rotinas devem ser declaradas
antes do programa principal.
O Quadro 72 apresenta o algoritmo que efetua as quatro operaes aritmticas. Note que para
cada operao h um procedimento associado.
Quadro 72: Pseudocdigo Algoritmo calculadora
Algoritmo calculadora

Procedimento soma
Var:
A, B, Resultado: real
Incio
Escreva (Procedimento SOMA)
Escreva (Informe o valor de A:)
Leia (A)
Escreva (Informe o valor de B:)
Leia (B)
Resultado A + B
Escreva (O resultado da soma :, resultado)
Fim_procedimento

Procedimento subtracao
Var:
A, B, Resultado: real
Incio
ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Escreva (Procedimento SUBTRAO)

193

Fim_procedimento

Procedimento subtracao
Var:
A, B, Resultado: real
Incio
Escreva (Procedimento SUBTRAO)
Escreva (Informe o valor de A:)
Leia (A)
Escreva (Informe o valor de B:)
Leia (B)
Resultado A - B
Escreva (O resultado da subtrao :, resultado)
Fim_procedimento

Procedimento multiplicacao
Var:
A, B, Resultado: real
Incio
Escreva (Procedimento MULTIPLICAO)
Escreva (Informe o valor de A:)
Leia (A)
Escreva (Informe o valor de B:)
Leia (B)
Resultado A * B
Escreva (O resultado da multiplicao :, resultado)
Fim_procedimento

194 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Fim_procedimento

Procedimento divisao
Var:
A, B, Resultado: real
Incio
Escreva (Procedimento DIVISO)
Escreva (Informe o valor de A:)
Leia (A)
Escreva (Informe o valor de B:)
Leia (B)
Resultado A / B
Escreva (O resultado da diviso :, resultado)
Fim_procedimento

Var
opcao: inteiro

Incio
opcao 0
Enquanto (opcao <> 5) faa
Escreva (1 Soma)
Escreva (2 Subtrao)
Escreva (3 Multiplicao)
Escreva (4 Diviso)
Escreva (5 Sair)
Escreva (Digite a opo:)
ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Leia (opcao)

195

Escreva (4 Diviso)
Escreva (5 Sair)
Escreva (Digite a opo:)
Leia (opcao)
Se (opcao <> 5) faa
Caso (opcao)
Seja 1 faa soma
Seja 2 faa subtracao
Seja 3 faa divisao
Seja 4 faa multiplicacao
Seno escreva (Opo invlida)
fim_caso
fim_se
fim_enquanto
Fim.

Na soluo do problema foram utilizados quatro procedimentos, os quais foram declarados


antes do programa principal. Cada procedimento possui um incio e fim, e declarao de
variveis. As variveis declaradas em uma sub-rotina so ditas variveis locais. Na seo
seguinte estudaremos o escopo das variveis.
Observe que no programa principal ocorre a chamada para cada um dos procedimentos
declarados. O problema calculadora foi dividido em subproblemas (cada operao aritmtica)
e para esses subproblemas foram construdas sub-rotinas do tipo procedimento.

196 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

ESCOPO DE VARIVEIS
As variveis declaradas no interior de uma sub-rotina so chamadas de variveis locais, pois
podem ser utilizadas apenas dentro da sub-rotina. Ao final da execuo da sub-rotina essas
variveis so destrudas e seus contedos so perdidos (ASCENCIO; CAMPOS, 2010). No
exemplo apresentado na seo Procedimentos as variveis A, B e resultado so variveis
locais.
As variveis globais so aquelas declaradas fora das sub-rotinas. Elas esto acessveis em
qualquer parte do algoritmo, inclusive dentro das sub-rotinas e so destrudas apenas ao final
da execuo do algoritmo (ASCENCIO; CAMPOS, 2010). o caso da varivel opo utilizada
no exemplo da calculadora.
O escopo de uma varivel est vinculado a sua visibilidade em relao s sub-rotinas de um
programa. Devemos atentar para o fato de que uma varivel pode ser considerada global para
todas as sub-rotinas inferiores a uma rotina principal, e dentro de uma dessas sub-rotinas a
mesma varivel pode ser utilizada como local.
A Figura 37 ilustra o conceito de escopo de variveis. Temos uma rotina principal que contm
as rotinas 1 e 2. Internamente a rotina 1, temos duas rotinas (1.1 e 1.2) e internamente a
rotina 2, temos a rotina 2.1 Observe que a rotina principal possui duas variveis A, B, que so
variveis globais em relao as sub-rotinas 1 e 2. No entanto, na rotina 1 temos a declarao
de uma varivel A, a qual assume um contexto local para esta sub-rotina mas, global para as
sub-rotinas 1.1 e 1.2 do mesmo modo a varivel X. J as variveis W e Y so variveis locais
que pertencem s rotinas 1.1 e 1.2, respectivamente.
Em relao sub-rotina 2 temos que as variveis A e B so globais para a rotina 2.1 A varivel
M declarada na rotina 2 uma varivel global para a rotina 2.1, que possui uma varivel X que
local e no apresenta nenhuma relao com a varivel X definida na rotina 1.

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

197

Figura 37: Escopo de variveis


Fonte: MANZANO; OLIVEIRA (1997)

Em relao sub-rotina 2 temos que as variveis A e B so globais para a rotina 2.1 A varivel
M declarada na rotina 2 uma varivel global para a rotina 2.1, que possui uma varivel X que
local e no apresenta nenhuma relao com a varivel X definida na rotina 1.
Manzano e Oliveira (1997) destacam que uma varivel declarada antes de uma sub-rotina
uma varivel global para a sub-rotina.

198 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

PASSAGEM DE PARMETROS
Os parmetros servem como um ponto de comunicao bidirecional entre uma sub-rotina e o
programa principal ou outra sub-rotina. Possibilitam a passagem de valores de uma sub-rotina
ou rotina chamadora outra sub-rotina e vice-versa. Devemos fazer distino entre dois tipos
de parmetros, os formais e os reais (MANZANO; OLIVEIRA, 1997).
Os parmetros formais so aqueles declarados por meio de variveis juntamente com a
identificao do nome da sub-rotina. J os parmetros reais so aqueles que substituem
os parmetros formais quando do uso da sub-rotina por um programa principal ou rotina
chamadora.
O Quadro 73 apresenta o algoritmo para o problema da calculadora utilizando o conceito de
parmetros.
Quadro 73: Pseudocdigo Algoritmo calculadora
Algoritmo calculadora

Procedimento soma (A, B: real)


Var:
Resultado: real
Incio
Resultado A + B
Escreva (O resultado da soma :, resultado)
Fim_procedimento

Procedimento subtracao (A, B: real)


Var:
Resultado: real
Incio

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Resultado A - B

199

Escreva (O resultado da soma :, resultado)


Fim_procedimento

Procedimento subtracao (A, B: real)


Var:
Resultado: real
Incio
Resultado A - B
Escreva (O resultado da subtrao :, resultado)
Fim_procedimento

Procedimento multiplicao (A, B: real)


Var:
Resultado: real
Incio
Resultado A * B
Escreva (O resultado da multiplicao :, resultado)
Fim_procedimento

Procedimento diviso (A, B: real)


Var:
Resultado: real
Incio
Resultado

A/ B

Escreva (O resultado da diviso :, resultado)


Fim_procedimento

200 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia


Var

opcao: inteiro

Fim_procedimento

Var
opcao: inteiro
X, Y: real

Incio
opcao 0
Enquanto (opcao <> 5) faa
Escreva (Informe o valor de X:)
Leia (X)
Escreva (Informe o valor de Y:)
Leia (Y)
Escreva (1 Soma)
Escreva (2 Subtrao)
Escreva (3 Multiplicao)
Escreva (4 Diviso)
Escreva (5 Sair)
Escreva (Digite a opo:)
Leia (opcao)
Se (opcao <> 5) faa
Caso (opcao)
Seja 1 faa soma(X,Y)
Seja 2 faa subtracao(X,Y)
Seja 3 faa divisao(X,Y)
Seja 4 faa multiplicacao(X,Y)
Seno escreva (Opo invlida)
ALGORITMOSfim_caso
E LGICA DE PROGRAMAO I | Educao a Distncia

201

Seja 4 faa multiplicacao(X,Y)


Seno escreva (Opo invlida)
fim_caso
fim_se
fim_enquanto
Fim.

Observe que agora temos a leitura das variveis X e Y no programa principal e na identificao
dos procedimentos temos os parmetros que so exigidos pelos mesmos. Os parmetros
reais so os valores de X e Y obtidos na entrada de dados e os parmetros formais so A e B.
A passagem de parmetro ocorre quando realizada a substituio dos parmetros formais
pelos reais no momento da execuo da sub-rotina. A passagem de parmetros ocorre de
duas formas: por valor e por referncia (MANZANO; OLIVEIRA, 1997).
A passagem de parmetro por valor caracterizada pela no alterao do valor do parmetro
real quando o parmetro formal manipulado na sub-rotina. Isto , qualquer alterao na
varivel local da sub-rotina no afetar o valor do parmetro real correspondente. Na passagem
de parmetros por valor a sub-rotina trabalha com cpias dos valores passados no momento
de sua chamada (MANZANO; OLIVEIRA, 1997; ASCENCIO; CAMPOS, 2010).
Na passagem de parmetro por referncia os parmetros passados para a sub-rotina
consistem em endereos de memria ocupados por variveis. O acesso a determinado valor
realizado por apontamento do endereo. Na passagem por referncia o valor do parmetro
real alterado quando o parmetro formal manipulado dentro da sub-rotina (ASCENCIO;
CAMPOS, 2010).
Vamos exemplificar a passagem de parmetro por valor e por referncia utilizando o problema
de calcular o fatorial de um nmero inteiro. No Quadro 74 apresentado o algoritmo utilizando
a passagem de parmetros por valor.

202 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Quadro 74: Pseudocdigo Algoritmo fatorial


Algoritmo calculafatorial

Procedimento fatorial (X: inteiro)


Var:
i, fat: inteiro
Incio
fat

Para i de 1 at x passo 1 faa


fat fat * i
fim_para
Escreva (O fatorial :, fat)
Fim_procedimento

Var
n: inteiro

Incio
Escreva (Informe o nmero que deseja calcular o fatorial:)
Leia (n)
Fatorial(n)
Fim.

Fonte: MANZANO; OLIVEIRA (1997)

Neste caso, temos que a varivel X o parmetro formal que receber o valor da varivel n
por meio do procedimento fatorial. Ao trmino do lao de repetio, o valor da varivel fat
impresso. Lembre-se: a varivel fat vlida apenas dentro do procedimento fatorial.
ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

203

No Quadro 75 temos a passagem de parmetros por referncia, no caso a varivel Fat.


Sempre que a passagem for por referncia devemos inserir a instruo Var na declarao da
sub-rotina. A varivel X continua sendo passada por valor.
Quadro 75: Pseudocdigo Algoritmo fatorial
Algoritmo calculafatorial

Procedimento fatorial (X: inteiro Var Fat: inteiro)


Var:
i: inteiro
Incio
fat 1
Para i de 1 at x passo 1 faa
fat

fat * i

fim_para
Fim_procedimento

Var
n, resultado: inteiro

Incio
Escreva (Informe o nmero que deseja calcular o fatorial:)
Leia (n)
Fatorial(n, resultado)
Escreva (O fatorial :, resultado)
Fim.

Fonte: MANZANO; OLIVEIRA (1997)

204 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Ao final do lao de repetio o resultado do fatorial est armazenado na varivel Fat, que foi
passada para a sub-rotina como referncia, e ao retornar ao programa principal este valor
transferido para a varivel resultado do programa principal, a qual apresenta o valor recebido
dentro da sub-rotina por meio da varivel fat. Este tipo de passagem de parmetro utilizado
para se obter um determinado valor de dentro de uma sub-rotina (MANZANO; OLIVEIRA,
1997).
A Figura 38 ilustra a passagem de parmetros por referncia no clculo do fatorial. No algoritmo
principal temos a leitura do nmero que devemos calcular o fatorial. Este valor armazenado
na varivel n. Em seguida, h o chamado do procedimento fatorial com os parmetros n sendo
passado por valor e resultado por referncia. O valor de n copiado para a varivel x. Para
calcular fatorial utilizado o valor de x para controlar o lao de repetio. Ao trmino da
execuo do procedimento o valor da varivel fat passado por referncia e modifica o valor
da varivel resultado.

Figura 38: Representao da passagem por referncia

FUNES
Uma funo, tambm uma sub-rotina, que tem como objetivo desviar a execuo do programa
principal para realizar uma tarefa especfica, com uma nica diferena: sempre retorna um

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

205

valor (ASCENCIO; CAMPOS, 2010).


A sintaxe dada por:
funcao <nome da funo> (parmetros): <tipo da funo>
var
<variveis>
inicio
<instrues>
retorne <valor>
fim_funcao
Um exemplo de uso de funo apresentado no Quadro 76. Note que o nome da funo
recebe o valor da varivel fat. Observe, tambm, que a funo tem um tipo associado, no caso
inteiro.
Quadro 76: Pseudocdigo Algoritmo fatorial
Algoritmo calculafatorial

Funo fatorial (X: inteiro): inteiro


Var:
i: inteiro
Incio
fat 1
Para i de 1 at x passo 1 faa
fat fat * i
fim_para
retorne fat

206 ALGORITMOSFim_funcao
E LGICA DE PROGRAMAO I | Educao a Distncia

Incio
fat 1
Para i de 1 at x passo 1 faa
fat fat * i
fim_para
retorne fat
Fim_funcao

Var
n, resultado: inteiro

Incio
Escreva (Informe o nmero que deseja calcular o fatorial:)
Leia (n)
Resultado Fatorial(n)
Escreva (O fatorial :, resultado)
Fim.
Fonte: MANZANO; OLIVEIRA (1997)

No algoritmo principal a chamada da funo atribuda a varivel resultado, pois toda funo
retorna um valor.

RECURSIVIDADE
Um objeto dito recursivo se ele for definido em termos de si prprio. Wirth (1999) destaca

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

207

que o conceito de recurso no encontrado apenas na matemtica, podemos encontr-lo


no nosso dia a dia. Como, por exemplo, quando vemos uma imagem que contm a si prpria
(Figura 39).

Figura 39: Imagem recursiva


A recursividade um mecanismo que permite uma funo chamar a si mesma direta ou
indiretamente. Uma funo recursiva quando possui uma chamada a si prpria (ZIVIANE,
2004; GUIMARES; LAGES, 1994).
O princpio da recursividade consiste em diminuir sucessivamente o problema em um problema
menor at que a simplicidade do problema permita resolv-lo de modo direto, isto , sem
recorrer a si mesmo. Deste modo, uma funo recursiva possui um passo bsico e um passo
recursivo. O passo bsico imediatamente conhecido e o passo recursivo tenta resolver um
subproblema do problema inicial (GUIMARES; LAGES, 1994).
Voc conhece algum problema recursivo? Vamos retomar o problema do fatorial, que um
exemplo clssico de recurso. A definio recursiva dada por:

208 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

O Quadro 77 apresenta a funo recursiva para o clculo do fatorial.


Quadro 77: Pseudocdigo Funo Fatorial recursiva
Funo fatorial (x: inteiro):
inteiro
Incio
Se (x= 0) ento
retorne 1
seno
retorne x * fatorial (n-1)
fim_se
Fim_funcao

A Figura 40 ilustra a simulao da funo fatorial para o clculo do fatorial de 5. Observe que
so realizadas chamadas sucessivas funo fatorial at chegar na condio de parada.

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

209

Figura 40: Simulao da Funo Fatorial


Outro exemplo clssico de problema recursivo a srie de Fibonacci [0, 1, 1, 2, 3, 5, 8, 13,
21,...]. A definio recursiva dada por:

No Quadro 78 apresentada a funo que calcula a srie de Fibonacci.


Quadro 78: Pseudocdigo Funo Fibonacci recursiva
Funo Fibonacci (x: inteiro): inteiro
Incio
Se (x= 0) ou (x=1) ento
retorne x
seno
retorne Fibonacci(n-2) + FIbonacci (n-1)
fim_se
Fim_funcao

210 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Ziviane (2004) destaca que a recursividade permite uma descrio mais concisa dos
algoritmos, especialmente, quando o problema tem natureza recursiva ou utiliza estruturas
recursivas. Algumas desvantagens da recurso so: algoritmos recursivos consomem mais
recursos, especialmente memria e so mais difceis de serem depurados.

TRABALHANDO COM ARQUIVOS


At aqui trabalhamos com a manipulao de dados que estavam na memria, ou seja, aps
a execuo do algoritmo esses dados so perdidos. A partir de agora trabalharemos com
arquivos para armazenar e manipular os dados. Voc sabe o que so arquivos? Conhece
algum arquivo?
Quando pensamos em arquivo nos vem em mente aquele armrio com um monte de pastas
para guardar informaes (Figura 41). exatamente essa a ideia de arquivos, um local para
armazenar informaes.

Figura 41: Arquivo

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

211

Formalmente, temos que os arquivos so estruturas de dados manipulados fora do ambiente


do programa (memria principal). Um arquivo um conjunto de registros no qual cada registro
no ocupa uma posio fixa dentro da estrutura (FORBELLONE; EBERSPACHER, 2005).
Os arquivos so utilizados no armazenamento de uma grande quantidade de informaes
por um grande perodo de tempo. Um arquivo pode ser lido ou escrito por um programa,
sendo constitudo por uma coleo de caracteres (arquivo texto) ou bytes (arquivo binrio)
(ASCENCIO; CAMPOS, 2010).
Para exemplificar o conceito de arquivos vamos tomar como exemplo um cadastro de produtos
com as seguintes informaes: cdigo, descrio, unidade, preo e saldo em estoque.
Como um arquivo um conjunto de registros, o primeiro passo definir o registro que compe
o arquivo (Quadro 79).
Quadro 79: Pseudocdigo Estrutura do Registro
Tipo
Cad_produto = registro
Codigo: inteiro
Descricao: caractere
Unidade: caractere
Preco: real
Saldo: inteiro
fim_registro
Tipo
Arq_produto = arquivo composto de Cad_produto
Cadastro: Cad_Produto
Produto: Arq_Produto

Sempre que formos trabalhar com arquivo, primeiro temos que abri-lo, para deix-lo disponvel

212 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

para leitura/gravao. A abertura realizada pelo comando Abra( ). Considerando o exemplo


de cadastro de produtos teramos: Abra (Produto).
Do mesmo modo que precisamos abrir o arquivo antes do processamento, precisamos
fech-lo aps o uso para que as suas informaes no sejam violadas. O fechamento de um
arquivo realizado por meio da instruo Feche( ). Para o exemplo do cadastro de produtos
o fechamento realizado com a instruo Feche(Produto).
Para copiar uma informao que est em um arquivo utilizamos o comando Copie( ), o qual
possui dois parmetros: varivel do arquivo e varivel registro com o mesmo formato do registro
que compe o arquivo. Ou seja, no primeiro parmetro indicamos de onde ser copiado e no
segundo o local que armazenaremos o valor copiado. Lembre-se que o formato da varivel
deve ser igual ao do arquivo. No exemplo de cadastro de produtos a instruo para cpia seria
Copie(Produto, Cadastro).
Para armazenar uma informao no arquivo utilizamos o comando Guarde( ), que possui dois
parmetros, em que o primeiro indica onde ser guardado e o segundo o que ser guardado.
No se esquea de que o formato do registro que ser guardado tem que ser idntico ao do
arquivo. Com isto, para o exemplo do cadastro de produto a instruo : Guarde(Produto,
Cadastro).
Muitas vezes, queremos apagar algumas informaes (registros) do arquivo. Para isso,
utilizamos o comando Elimine( ) que um parmetro, o arquivo pois, elimina sempre o registro
da posio corrente. Para o exemplo, teramos Elimine(Produto).
Ao criar um arquivo definimos a forma como os registros so armazenados. Esta concepo
pode ser sequencial ou direta.
Nos casos de concepo sequencial temos que a gravao dos registros realizada de modo
contnuo, um aps o outro. Com isto, a localizao de um registro obedece sua ordem de

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

213

gravao. Para percorrer o arquivo utilizamos o comando Avance( ), que coloca o arquivo na
posio do prximo registro. Para verificar se o arquivo chegou ao fim utilizamos o comando
Fda( ). Utilizando uma estrutura de repetio o comando Avance e Fda, conseguimos
percorrer o arquivo registro a registro (FORBELLONE; EBERSPACHER, 2005).
Na concepo direta, a localizao de um registro no arquivo est relacionada com algum
campo do arquivo, de modo que por meio deste campo conseguimos localizar o lugar que o
registro est armazenado. O campo que determina a posio do registro no arquivo chamado
de chave. Devemos atentar para o fato de que esse campo deve ser nico (FORBELLONE;
EBERSPACHER, 2005).

CONSIDERAES FINAIS
Nesta unidade voc aprendeu a modularizar os algoritmos utilizando sub-rotinas. A
modularizao uma tcnica bastante utilizada em programao devido complexidade
e tamanho dos problemas que temos que resolver no dia a dia. O princpio desta tcnica
consiste em decompor um problema em subproblemas de menor complexidade com o objetivo
de facilitar o entendimento, anlise e resoluo.
Vimos que na resoluo dos subproblemas so utilizadas sub-rotinas, que consistem em
blocos de instrues que realizam tarefas especficas. Aprendemos que as sub-rotinas podem
ser de dois tipos (procedimentos e funes) e que quando uma sub-rotina chamada, ela
executada e ao seu trmino o processamento retorna para a linha seguinte a da instruo que
a chamou. Estudamos que uma sub-rotina do tipo procedimento no retorna valor para quem
a chamou e j uma funo sempre retorna um valor.
Conhecemos o conceito de escopo de variveis e vimos que as variveis podem ser locais
ou globais. Sendo que uma varivel local aquela que est acessvel apenas dentro da subrotina, enquanto que uma varivel global acessvel de qualquer parte do algoritmo. Alm
disso, estudamos o funcionamento da passagem de parmetros por valor e por referncia.
Na passagem de parmetros por valor no h alterao do valor do parmetro real, pois a
sub-rotina trabalha com cpias dos valores passados no momento de sua chamada. J na
passagem de parmetros por referncia esses valores so alterados, pois os parmetros
passados so endereos de memria.

214 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Estudamos o conceito de recursividade, que um mecanismo que permite uma funo chamar
a si mesma, e aprendemos que toda funo recursiva formada por um passo bsico e um
recursivo. Alm disso, construmos funes recursivas para calcular o fatorial e a srie de
Fibonacci, que so problemas clssicos de recurso.
Por fim, conhecemos os comandos para manipular arquivos e os modos de concepo de
arquivos sequencial e direto. Em relao concepo de arquivos vimos como realizar a
insero, consulta, alterao e excluso de dados.

Para saber um pouco mais sobre recursividade, leia o artigo Ensino de Programao recursiva em
Cincia da Computao, disponvel em: <ftp://ftp.usjt.br/pub/revint/115_45.pdf>.
O artigo destaca a importncia da recursividade e apresenta cenrios de aplicao.

Na passagem de parmetros por referncia o parmetro o endereo de memria e no o valor.

ATIvIDADE DE AuTOESTuDO
1. Desenvolva um cadastro de produtos que contenha cdigo, descrio, unidade e preo
para 20 produtos. Defi na um menu com as seguintes opes:
1. Cadastrar os 20 registros.
2. Pesquisar um produto pelo cdigo.
3. Classifi car por ordem de descrio os registros cadastrados.
4. Classifi car por ordem de cdigo.
ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

215

5. Apresentar todos os registros.


6. Sair do programa de cadastro.
2. Elabore um algoritmo para cadastro de 10 pessoas contendo as seguintes informaes:
nome, idade, altura e peso. O menu deve apresentar as seguintes opes:
1. Cadastrar os 10 registros.
2. Ordenar os registros por idade.
3. Apresentar a mdia de peso das pessoas.
4. Apresentar o nome das pessoas com peso acima de 50kg.
5. Sair do programa.
3. Escreva uma funo que receba um caractere e retorne 1 se for uma consoante e 0 se for
vogal.
4. Elabore um programa com uma sub-rotina que apresente o somatrio dos N primeiros
nmeros pares, definidos por um operador. O valor de N ser informado pelo usurio.
5. Escreva um algoritmo que efetue a leitura de um nmero inteiro e apresente uma mensagem informando se o nmero par ou mpar.
6. Desenvolva um programa que por meio de uma sub-rotina apresente como resultado o
valor absoluto de um nmero.
7. Elabore um algoritmo que por meio de funo efetue e apresente o valor da converso de
um valor em real de um valor lido em euros. Dever ser solicitado por meio do programa
principal o valor da cotao do euro e a quantidade de euro disponvel.
8. Escreva um algoritmo utilizando funo que converta uma dada temperatura lida em Celsius para Fahrnheit.

EXERCCIOS DE FIXAO
1. Escreva uma sub-rotina que apresente o somatrio dos N primeiros nmeros inteiros.
Objetivo do algoritmo: ler um nmero inteiro e apresentar o somatrio dos nmeros no
intervalo de 1 at N.
Entrada: ler um nmero inteiro.

216 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Processamento: efetuar o somatrio de 1 at N.


Sada: imprimir o valor do somatrio.
Quadro 80: Pseudocdigo Exerccio 1
Algoritmo somatorio

Funo soma (X: inteiro): inteiro


Var:
i, total: inteiro
Incio
total 0
Para i de 1 at x passo 1 faa
total total + i
fim_para
retorne total
Fim_funcao

Var
n, resultado: inteiro

Incio
Escreva (Informe o nmero:)
Leia (n)
Resultado soma(n)
Escreva (O somatrio :, resultado)
Fim.
ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

217

2. Elabore uma sub-rotina que receba um nmero e apresenta sua raiz quadrada.
Objetivo do algoritmo: ler um nmero e apresentar sua raiz quadrada.
Entrada: ler um nmero inteiro.
Processamento: calcular a raiz quadrada.
Sada: imprimir o valor da raiz quadrada.
Quadro 81: Pseudocdigo Exerccio 2
Algoritmo raizquadrada

Funo raiz (X: inteiro): real


Incio
retorne sqr(x)
Fim_funcao

Var
num: inteiro
resultado: real

Incio
Escreva (Informe o nmero:)
Leia (num)
resultado raiz(n)
Escreva (A raiz quadrada :, resultado)
Fim.

218 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

3. Elabore uma sub-rotina que receba 3 valores de entrada e retorne o maior valor.
Objetivo do algoritmo: ler trs nmeros inteiros e retornar o maior valor.
Entrada: ler trs nmeros inteiros.
Processamento: comparar os nmeros e selecionar o maior.
Sada: imprimir o valor do maior nmero.
Quadro 82: Pseudocdigo Exerccio 3
Algoritmo raizquadrada

Funo maior (X, Y, Z: inteiro): inteiro


Var
num: inteiro
Incio
Se (x > y) ento
num x
seno
num y
fim_se
Se (z > num) ento
num z
fim_se
retorne num
Fim_funcao

Var
resultado, a, b, c: inteiro

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

219

Fim_funcao

Var
resultado, a, b, c: inteiro

Incio
Escreva (Informe o valor de A:)
Leia (a)
Escreva (Informe o valor de B:)
Leia (b)
Escreva (Informe o valor de C:)
Leia (c)
resultado

maior(a, b, c)

Escreva (O maior valor :, resultado)


Fim.

4. Elabore um procedimento que receba um valor em segundos e converta para horas, minutos e segundos.
Objetivo do algoritmo: ler um valor em segundos e converter para horas, minutos e segundos.
Entrada: ler um nmero inteiro.
Processamento: converter os segundos para horas, dividindo por 3600. O resto da diviso
deve ser dividido por 60 (minutos) e o resto da diviso resultante deve ser dividido por 60
para obter os segundos.
Sada: imprimir as horas, minutos e segundos resultantes da converso.

220 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

Quadro 83: Pseudocdigo Exerccio 4


Algoritmo calculatempo

Procedimento tempo (X: inteiro Var h, m, s: inteiro)


Var:
resto: inteiro
Incio
h

x/3600

resto

x mod 3600

resto/60

resto mod 60

Fim_procedimento

Var
n, hora, minuto, segundo: inteiro

Incio
Escreva (Informe os segundos que deseja converter:)
Leia (n)
tempo(n, hora, minuto, segundo)
Escreva (Horas:, hora)
Escreva (Minutos:, minuto)
Escreva (Segundos:, segundo)
Fim.

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

221

5. Elabore uma sub-rotina que receba o valor antigo de um produto e o percentual de reajuste
e retorne o valor reajustado.
Objetivo do algoritmo: reajustar o valor de um produto.
Entrada: ler o preo do produto e o percentual de reajuste.
Processamento: calcular o reajuste do produto.
Sada: imprimir o valor do produto reajustado.
Quadro 84: Pseudocdigo Exerccio 5
Algoritmo produto

Funo reajuste (precop, percentualp: real): real


Var
valor: real
Incio
valor precop + (precop * (percentualp/100))
retorne valor
Fim_funcao

Var
valor, percentual, resultado: real

Incio
Escreva (Informe o preo do produto:)
Leia (valor)
Escreva (Informe o percentual de reajuste:)
Leia (percentual)
resultado

reajuste(valor, percentual)

Escreva (O valor reajustado :, resultado)


Fim.

222 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

CONCLUSO
Caro(a) aluno(a), chegamos ao fim de parte do nosso trabalho!
Diante dos conceitos que foram apresentados, voc deve estar mais preparado para construir
algoritmos e entender a importncia que eles tm no desenvolvimento de software. Iniciamos
o nosso aprendizado construindo algoritmos simples, que tinham apenas entrada e sada
de dados, e conforme avanamos passamos a construir algoritmos mais complexos, que
envolviam entrada, processamento, sada de dados e modularizao.
Na Unidade I, discutimos o conceito de algoritmos, um conjunto de passos para solucionar
um problema, e estudamos que dado um problema no h um nico algoritmo que soluo,
podemos ter vrios algoritmos. Isto que dizer que um algoritmo um possvel caminho para
a soluo de um problema. Entendemos o processo de anlise de problemas a partir do qual
estruturamos um problema em Entrada, Processamento e Sada. Estudamos os principais
tipos de algoritmos, sendo eles: a descrio narrativa, o fluxograma e o pseudocdigo. O
tipo adotado foi o pseudocdigo em funo da facilidade de converso para uma linguagem
de programao. Vimos o conceito de variveis, os tipos de variveis (inteiro, real, caractere
e lgica), as regras para nomeao de identificadores, palavras reservadas, expresses e
operadores (aritmticos, relacionais e lgicos), comandos de atribuio, entrada e sada de
dados.
A Unidade II tratou das estruturas condicionais, tambm denominadas estruturas de seleo ou
estrutura de controle, que possibilitam a construo de algoritmos com desvios de fluxos. Isto
, algoritmos cuja execuo de uma instruo ou conjunto de instrues est condicionada a
um teste condicional. Estudamos quatro formas de estrutura condicional: estrutura condicional
simples, estrutura condicional composta, estrutura condicional encadeada e estrutura de
deciso mltipla. Revimos a construo de expresses lgicas e a tabela verdade de cada um
dos operadores.
Na Unidade III aprendemos a construir algoritmos utilizando as estruturas de repetio,
utilizando laos contados e laos condicionais. Nos laos de repetio vimos a estrutura Para,
que utilizada nos casos em que sabemos quantas vezes o trecho de cdigo precisa ser
repetido. Nos laos de repetio condicionais estudamos as estruturas Enquanto e Repita.
A estrutura Enquanto utilizada quando no sabemos previamente o nmero de repeties
ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

223

que deve ser executado e impomos uma condio que realizada no final. A estrutura Repita
utilizada quando temos um nmero indefinido de repeties, no entanto, o teste lgico
realizado no final. Foi abordado, tambm, como o conceito de encadeamento pode ser aplicado
s estruturas de repetio.
A Unidade IV discutiu as estruturas de dados homogneas e heterogneas. Nas estruturas de
dados homogneas conhecemos os vetores (unidimensionais) e as matrizes (multidimensionais),
que agrupam diversas informaes, do mesmo tipo, em uma nica varivel. Tratamos, tambm,
como realizar ordenao e busca. Em relao s estruturas heterogneas estudamos os
registros, que agregam diversas informaes, que podem ser de diferentes tipos.
Por fim, na Unidade V aprendemos a construir algoritmos modularizados utilizando sub-rotinas.
Foram abordadas as sub-rotinas de procedimento e funo, sendo que a diferena entre elas
que na sub-rotina do tipo procedimento no h retorno de valor para quem a chamou e j na
funo sempre retorna um valor. Estudamos o conceito de escopo de variveis em que vimos
as variveis globais e locais. Foi tratada, tambm, a passagem de parmetros por valor e por
referncia. Vimos que na passagem de parmetros por valor no h alterao do valor do
parmetro real, pois a sub-rotina trabalha com cpias dos valores passados no momento de
sua chamada. J na passagem de parmetros por referncia esses valores so alterados, pois
os parmetros passados so endereos de memria. Discutimos o conceito de recursividade,
que um mecanismo que permite uma funo chamar a si mesma, e em que situaes pode
ser aplicado. Aprendemos os comandos e operaes para manipular arquivos e como estes
podem ser concebidos.
Em cada uma das unidades apresentamos e construmos algoritmos que possibilitaram
a aplicao prtica dos conceitos e estimularam o desenvolvimento do raciocnio lgico.
Nestas cinco unidades consolidamos a viso de Algoritmos e Lgica de Programao que
imprescindvel para o desenvolvimento de software.
Muito sucesso a voc!
Professora Camila

224 ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

REFERNCIAS
ASCENCIO, A. F. G.; CAMPOS, E. A. V. Fundamentos da programao de computadores.
5. ed. So Paulo: Prentice Hall, 2010.
CORMEN, T. H.; RIVEST, R.; LEISERSON, C. E. Algoritmos: teoria e prtica. Rio de Janeiro:
Campus, 2002.
FARRER, H. Programao Estruturada de Computadores. Rio de Janeiro: Ed. LTC, 1989.
FORBELLONE, A. L. V.; EBERSPACHER, H. F. Lgica de Programao. 3. ed. So Paulo:
Makron Books, 2005.
GUIMARES, A. M.; LAGES, N.A.C. Algoritmos e Estruturas de Dados. Rio de Janeiro:
LTC, 1994.
LOPES, A.; GARCIA, G. Introduo Programao. Rio de Janeiro: Elsevier, 2002.
MANZANO, J. A. N. G.; OLIVEIRA, J. F. Estudo dirigido de algoritmos. 3. ed. So Paulo:
rica, 1997.
SALVETTI, D. D.; BARBOSA, L. M. Algoritmos. So Paulo: Pearson Makron Books, 1998.
WIRTH, N. Algoritmos e Estruturas de Dados. Rio de Janeiro: Editora LTC, 1999.
ZIVIANE, N. Projeto de Algoritmos com implementaes em Pascal e C. 2. ed. So Paulo:
Pioneira Thomson Learning, 2004.

ALGORITMOS E LGICA DE PROGRAMAO I | Educao a Distncia

225