Você está na página 1de 195

ALGORITMOS

E LGICA DE
PROGRAMAO I

Professora Me. Gislaine Camila Lapasini Leal

Graduao

Unicesumar

Reitor
Wilson de Matos Silva
Vice-Reitor
Wilson de Matos Silva Filho
Pr-Reitor de Administrao
Wilson de Matos Silva Filho
Pr-Reitor de EAD
Willian Victor Kendrick de Matos Silva
Presidente da Mantenedora
Cludio Ferdinandi

CENTRO UNIVERSITRIO DE MARING. Ncleo de Educao a


Distncia:
C397
Algoritmos e lgica de programao I / Gislaine Camila Lapasini
Leal.
Reimpresso revista e atualizada, Maring - PR, 2014.

195 p.
Graduao - EaD.


1. Algoritmos 2. Programao . 4. EaD. I. Ttulo.
ISBN 978-85-8084-295-1

CDD - 22 ed. 005.1


CIP - NBR 12899 - AACR/2

Ficha catalogrfica elaborada pelo bibliotecrio


Joo Vivaldo de Souza - CRB-8 - 6828

NEAD - Ncleo de Educao a Distncia


Direo de Operaes
Chrystiano Mincoff
Coordenao de Sistemas
Fabrcio Ricardo Lazilha
Coordenao de Polos
Reginaldo Carneiro
Coordenao de Ps-Graduao, Extenso e
Produo de Materiais
Renato Dutra
Coordenao de Graduao
Ktia Coelho
Coordenao Administrativa/Servios
Compartilhados
Evandro Bolsoni
Coordenao de Curso
Danillo Xavier Saes
Gerncia de Inteligncia de Mercado/Digital
Bruno Jorge
Gerncia de Marketing
Harrisson Brait
Superviso do Ncleo de Produo de
Materiais
Nalva Aparecida da Rosa Moura
Superviso de Materiais
Ndila de Almeida Toledo
Design Educacional
Camila Zaguini Silva
Fernando Henrique Mendes
Rossana Costa Giani
Projeto Grfico
Jaime de Marchi Junior
Jos Jhonny Coelho
Editorao
Thayla Daiany Guimares Cripaldi
Reviso Textual
Jaquelina Kutsunugi, Keren Pardini, Maria
Fernanda Canova Vasconcelos, Nayara
Valenciano, Rhaysa Ricci Correa e Susana Incio
Ilustrao
Robson Yuiti Saito
Nara Emi Tanaka Yamashita

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 Centro Universitrio Cesumar
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 Centro Universitrio Cesumar busca a integrao do ensino-pesquisa-extenso 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 Centro Universitrio 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;
bem-estar 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.

Seja bem-vindo(a), caro(a) acadmico(a)! Voc est


iniciando um processo de transformao, pois quando investimos em nossa formao, seja ela pessoal
ou profissional, nos transformamos e, consequentemente, transformamos tambm a sociedade na qual
estamos inseridos. De que forma o fazemos? Criando
oportunidades e/ou estabelecendo mudanas capazes de alcanar um nvel de desenvolvimento compatvel com os desafios que surgem no mundo contemporneo.
O Centro Universitrio Cesumar mediante o Ncleo de
Educao a Distncia, o(a) acompanhar durante todo
este processo, pois conforme Freire (1996): Os homens
se educam juntos, na transformao do mundo.
Os materiais produzidos oferecem linguagem dialgica e encontram-se integrados proposta pedaggica, contribuindo no processo educacional, complementando sua formao profissional, desenvolvendo
competncias e habilidades, e aplicando conceitos
tericos em situao de realidade, de maneira a inseri-lo no mercado de trabalho. Ou seja, estes materiais
tm como principal objetivo provocar uma aproximao entre voc e o contedo, desta forma possibilita o desenvolvimento da autonomia em busca dos
conhecimentos necessrios para a sua formao pessoal e profissional.
Portanto, nossa distncia nesse processo de crescimento e construo do conhecimento deve ser
apenas geogrfica. Utilize os diversos recursos pedaggicos que o Centro Universitrio Cesumar lhe possibilita. Ou seja, acesse regularmente o AVA Ambiente
Virtual de Aprendizagem, interaja nos fruns e enquetes, assista s aulas ao vivo e participe das discusses. Alm disso, lembre-se que existe uma equipe de
professores e tutores que se encontra disponvel para
sanar suas dvidas e auxili-lo(a) em seu processo de
aprendizagem, possibilitando-lhe trilhar com tranquilidade e segurana sua trajetria acadmica.

autores

Professora Me. Gislaine Camila Lapasini Leal


Graduada em Engenharia de Produo - Software pela Universidade Estadual
de Maring (2007) e em Processamento de Dados pelo Centro Universitrio de
Maring (2004), com mestrado em Cincia da Computao pela Universidade
Estadual de Maring (2010). Atualmente professora do Departamento de
Engenharia de Produo da Universidade Estadual de Maring atuando
na rea de Apoio Tomada de Deciso (Pesquisa Operacional e Gesto de
Tecnologia da Informao).

Apresentao

ALGORITMOS E LGICA DE PROGRAMAO I


Seja bem-vindo(A)!
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 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

Apresentao
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!

8-9

sumrio

UNIDADE I

CONCEITOS BSICOS
15 Introduo
16 Conceituando Algoritmos
19 Como Construir Algoritmos
19 Tipos de Algoritmos
22 Estudando Variveis
25 Tipos de Variveis
26 Constante
27 Expresses
30 Funes Intrnsecas
31 Atribuio 
31 Entrada de Dados
32 Sada de Dados
32 Construindo Algoritmos
43 Consideraes Finais

UNIDADE II

ESTRUTURA CONDICIONAL
57 Introduo
58 Estrutura Condicional 
59 Estrutura Condicional Simples

sumrio
64 Estrutura Condicional Composta
67 Estrutura Condicional Aninhada
71 Estrutura de Deciso Mltipla
75 Consideraes Finais

UNIDADE III

ESTRUTURA DE REPETIO
89 Introduo
90 Estrutura de Repetio 
91 Estrutura Para
96 Estrutura Enquanto
102 Estrutura Repita
104 Estruturas de Repetio Encadeadas
114 Consideraes Finais

UNIDADE IV

ESTRUTURAS DE DADOS HOMOGNEAS E HETEROGNEAS


129 Introduo
130 Estuturas de Dados Homogneas
130 Vetores
134 Ordenao em Vetor
140 Busca em Vetor

10 - 11

sumrio
140 Mtodo Sequencial 
142 Matrizes
145 Estruturas de Dados Heterogneas
145 Registros
151 Problema
154 Consideraes Finais

UNIDADE V

SUB-ROTINAS E PROGRAMAO COM ARQUIVOS


167 Introduo
168 Sub-Rotinas
169 Procedimentos
173 Escopo de Variveis
174 Passagem de Parmetros
180 Funes
181 Recursividade
184 Trabalhando com Arquivos
187 Consideraes Finais

195 Concluso
197 Referncias

CONCEITOS BSICOS

UNIDADE

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

14 - 15

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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 so de sada? Que tipo de varivel devo utilizar? Como exibo um resultado ao usurio? Qual o resultado da
simulao do algoritmo?

Introduo

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?!

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

shutterstock

CONCEITOS BSICOS

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Conceituando Algoritmos

16 - 17

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
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

7. Tomar caf da manh


8. Pegar o carro
9. Estacionar o carro
10. Entrar no escritrio
Quadro 1: Algoritmo para ir ao trabalho

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).
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).
1. Colocar 2/3 de gua em um copo
2. Dissolver o sal de frutas
3. Esperar o efeito efervescente
4. Tomar a soluo
Quadro 2: Algoritmo para tomar sal de frutas

Conceituando Algoritmos

A sequncia de passos a ser seguida para realizar uma ligao telefnica apresentada no Quadro 3.
1. Inserir o nmero
2. Apertar o boto para fazer ligao
3. Esperar atender
4. Falar no telefone

Quadro 3: Algoritmo para fazer ligao telefnica


Fonte: adaptado de (LOPES; GARCIA, 2002)

Uma soluo para o problema de trocar uma lmpada representada por


cinco instrues, como pode ser visto no Quadro 4.
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
Quadro 4: Algoritmo para trocar lmpada
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).

CONCEITOS BSICOS

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

5. Apertar o boto para desligar ligao

18 - 19

Como Construir Algoritmos


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

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Compreender o problema: definir qual o objetivo do algoritmo.


Definir as informaes de entrada: que informaes precisamos obter
do usurio.
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

Como Construir Algoritmos

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.

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.

1. Obter dois nmeros


2. Somar os dois nmeros
3. Mostrar o resultado da soma
Quadro 5: Descrio Narrativa Algoritmo 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.

CONCEITOS BSICOS

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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

20 - 21

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.

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Representa a sada de dados.


Indica que deve ser tomada uma deciso, h possibilidade de desvio do fluxo.

Quadro 6: Simbologia de Fluxograma


Fonte: adaptado de MANZANO; OLIVEIRA (1997)

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.
Tipos de Algoritmos

Algoritmo soma
Var n1, n2, s: inteiro
Incio
Leia n1, n2


sn1 + n2
Escreva(s)
Fim
Quadro 7: Pseudocdigo Algoritmo Soma

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.
Em um algoritmo o contedo de uma varivel pode ser modificado, consultado ou apagado quantas vezes forem necessrias. importante ter cincia de

CONCEITOS BSICOS

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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.

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

22 - 23

shutterstock

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.
casa
25
As variveis so definidas logo no
incio do algoritmo para que a rea
Idade
Idade
na memria seja alocada. A definio de variveis realizada utilizando
Figura 2: Varivel
o comando VAR, primeiro definimos o
Fonte: a autora
nome e, em seguida, o tipo, do seguinte
modo:

Var <nome da varivel> : <tipo da varivel>

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

36
13
60
25

Idade
Figura 3: Varivel
Fonte: a autora

Estudando Variveis

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 ($, #, @, ?, !, *).

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

Identificadores invlidos

b@

media

media idade

altura2

caso

media_idade

se

x36

x*y

Quadro 8: Exemplo de identificadores

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.

CONCEITOS BSICOS

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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.

24 - 25

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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

Tipos de Variveis

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:

CONCEITOS BSICOS

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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:

26 - 27

CONST
<nome da constante> = <valor>

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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 relaciona-se 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.
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.
Operao

Soma

Operador

Significado

Prioridade

Utilizado para efetuar a soma de duas


ou mais variveis. Dada uma varivel
A e outra B, temos que a soma delas
representada por A + B.

Subtrao

Multiplicao

Simboliza a subtrao do valor de


duas variveis.
Supondo uma varivel A e B, a diferena entreelas dada por: A - B.
O produto entre duas variveis A e B
representado por A * B.

A diviso entre duas variveis A e B


dada por:
Diviso

A/B. Em relao diviso importante


lembrar que no existe diviso por
zero.

Expresses

Operao

Operador

Significado

Prioridade

**

representada por ** mais o nmero


que se quer elevar. Se quisermos elevar o valor da varivel A ao quadrado,
representamos por: A ** 2.

Exponenciao

Resto

inteira

mod

representao dada por A mod B.


Supondo A = 3 e B = 2, temos que A
mod B = 1.

Representa o quociente da diviso entre


div

dois nmeros. Tomando A = 7 e B = 2,

temos que A div B resulta em 3.

Quadro 9: Operadores aritmticos

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, smbolo associado e forma de uso.
Operao

Operador

Significado

Igual

A =1

Diferente

<>

A <> B

Maior

>

A>5

Menor que

<

B < 12

Maior ou igual a

>=

A >= 6

Menor ou igual a

<=

B <=7

Quadro 10: Operadores relacionais


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.

CONCEITOS BSICOS

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Diviso

Usado quando se deseja encontrar o


resto da diviso entre duas variveis
A e B. A

28 - 29

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

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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.


Quadro 11: Operadores lgicos
Fonte: adaptado de (LOPES; GARCIA, 2002)

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.

Expresses

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.

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.

Quadro 12: Funes


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

CONCEITOS BSICOS

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Funo

30 - 31

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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

Atribuio

Sada de Dados
A sada de dados permite mostrar dados aos usurios. O comando utilizado o
escreva, que 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>

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

shutterstock

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.

CONCEITOS BSICOS

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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:

32 - 33

PROBLEMA 1

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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 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:
Quadro 64: Pseudocdigo Algoritmo registro alunoEm seguida, temos a declarao das variveis, que dada por:

Var

Idade : inteiro

Peso, altura : real

Nome : caractere[50]

Telefone : caractere[15]

Construindo Algoritmos

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

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) so palavras reservadas, ou seja, no podemos utiliz-las
como nome de varivel, constante, algoritmo e outros.

CONCEITOS BSICOS

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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 sendo solicitado, deste modo utilizamos o
comando escreva. Com isto, temos:

34 - 35

Algoritmo problema1
Var


Peso, altura : real

Nome : caractere[50]

Telefone : caractere[15]

Escreva (Informe o nome:)

Incio
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Idade : inteiro

Fim.

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)

Quadro 13: Pseudocdigo - Problema1

O resultado da execuo do algoritmo apresentado no Quadro 14.

Construindo Algoritmos

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
A altura : 1.58
O telefone : 3011-1212
Quadro 14: Resultado da execuo - Problema 1

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
1
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
1
dos quatro lados (pontilhado).
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.

CONCEITOS BSICOS

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

O peso : 60.3

36 - 37

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.

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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

Construindo Algoritmos

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:
Incio

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.

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

CONCEITOS BSICOS

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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:

38 - 39

Algoritmo quadrado
Var

L,A,P: real

Escreva(Informe o valor do lado d quadrado:)

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Incio

Leia(L)

AL*L

P4*L

Fim

Escreva(O permetro :, P)
Escreva(A rea :, A)

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

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.
Informe o valor do lado do quadrado: 3
O permetro : 12
A rea : 9
Quadro 16: Resultado da execuo - Problema 2

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

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

CONCEITOS BSICOS

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

shutterstock

40 - 41

Algoritmo salario
Var

Htrabalhadas, hextra, vhora, sbruto,


inss, fgts, sliquido: real

Phoraextra = 10

Escreva(informe o nmero de horas tra


balhadas:)

Const

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Incio

Leia(htrabalhadas)

Escreva(Informe o nmero de horas


extras:)
Leia(hextra)

Escreva(informe o valor da hora)


Leia(vhora)

sbruto (htrabalhadas+hextra*(1+(phoraextra/100)))*vhora
inss sbruto*(9/100)
FGTS sbruto*(8/100)
sliquido sbruto-inss



Fim

Escreva(o salrio bruto :, sbruto)

Escreva(O salrio lquido:, sliquido)


Escreva(O INSS :, inss)
Escreva(O FGTS :, FGTS)

Quadro 17: Pseudocdigo Problema 3

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

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

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

Quadro 18 - Resultado da execuo - Problema 3

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.

CONCEITOS BSICOS

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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.

42 - 43

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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).
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,
Consideraes Finais

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.

CONCEITOS BSICOS

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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 construo do algoritmo.

44 - 45

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
( ) media idade
( ) nome2
( ) endereo_nr
( ) a3
( ) 4cidade
( ) media_peso%
( ) endereo.cep
( ) cliente_nome
( ) aluno-nota
( ) B5
( ) 1234P
Elabore um algoritmo que leia, calcule e escreva a mdia aritmtica entre quatro
nmeros.
3. Formule um algoritmo para ler um nmero positivo qualquer e apresentar o
quadrado e a raiz quadrada deste nmero. Dica: utilize as funes apresentadas.
4. Analise os algoritmos abaixo e escreva o resultado de sua execuo.
Algoritmo exe5a

Algoritmo exe5a

Var

Var

A,B,C: inteiro
Incio

A,B,C: inteiro
Incio

A 5

A 5

B 30

B 30

C A

C A

B C

A B

A B

B C

Escreva A

Escreva A

Escreva B

Escreva B

Escreva C

Escreva C

Fim

Fim

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).
Sada: apresentar o antecessor, o nmero e o sucessor.

Algoritmo numero
Var

num: inteiro

Escreva (Informe um nmero inteiro:)

Incio



Fim.

Leia (num)

Escreva (O antecessor :, num -1)


Escreva (O nmero :, num )

Escreva (O sucessor :, num +1)

Quadro 19: Pseudocdigo Exerccio 1

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.

46 - 47

Algoritmo triangulo
Var

base, altura, area: real

Escreva (Informe a base do tringulo:)

Incio

Leia (base)

Escreva (Informe a altura do tringulo:)

Leia (altura)

area (base * altura)/2

Fim.

Escreva (A rea do tringulo :, rea)

Quadro 20: Pseudocdigo Exerccio 2

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.

Algoritmo produto
Var

Preco, pdesconto, vdesconto, vpagar; real

Escreva (informe o preo do produto:)

Inicio


Leia(preco)

Escreva(Informe o percentual do desconto:)

Leia(pdesconto)

Vdesconto (preco*pdesconto)/100
Vpagar preco vdesconto

Fim

Escreva (O valor a pagar :, vpagar)

Escreva (O valor do desconto :, vdesconto)

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.

48 - 49

Algoritmo faturamento
Var

valor, fmensal, fanual: real

qidade: interio

Escreva(Informe a quantidade de livros:)

Incio

Leia(qidade)

Escreva(Informe o valor da locao:)

Leia(valor)

fmensal qidade*valor

fanual ((qidade*0,8)*valor)*12

Fim

Escreva(O faturamento mensal de:, fmen


sal)
Escreva(O faturamento anual considerando
a locao de 80% dos livros :, faunal)

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.

Algoritmo salario
Var

vhora, naulas, pdesconto, sliquido, sbruto: real

Escreva (informe o valor da hora aula:)

Incio



Leia(vhora)

Escreva(Informe o nmero de aulas dadas no ms:)


Leia(naulas)

Escreva(Informe o percentual de desconto do INSS:)

Leia(pdesconto)

sbruto vhora*naulas

Sliquido sbruto (sbruto*pdesconto)/100

Fim

Escreva (O valor do salrio bruto :, sbruto)

Escreva(O valor do salrio lquido :, sliquido)

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:
dado por
.
Sada: imprimir o valor da rea e do permetro.

e permetro que

50 - 51

Algoritmo circulo
Var

area, perimetro raio: real

Escreva(Informe o valor do raio:)

Incio

Leia(raio)

area 2 * pi*raio

Fim

Escreva (A rea :, area)

Escreva (O permetro :, permetro)

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.

Algoritmo funcoes
Var

raiz: real

num, quadrado; inteiro

Escreva(Informe um nmero inteiro:)

Leia(num)

Incio

Raiz sqrt(num)
Quadrado sqrt(num)


Fim

Escreva (A raiz quadrada ;, raiz)

Escreva (O nmero elevado ao quadrado :,


quadrado)

Quadro 25: Pseudocdigo Exerccio 6

52 - 53

MATERIAL COMPLEMENTAR

Lgica de Programao A Construo de


Algoritmos e Estruturas de Dados
ForBELLoNE, a.; EBErSPaCHEr, H
editora: Makron Books
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.

Lgica e Design de Programao


Joyce Farrell
editora: Cengage Learning
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 usada 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.

Material Complementar

ESTRUTURA CONDICIONAL

UNIDADE

Professora Me. Gislaine Camila Lapasini Leal

II

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

56 - 57

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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.

Introduo

II

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.

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

ESTRUTURA CONDICIONAL

reproduo proibida. art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

ESTRuTuRA CONDICIONAL

58 - 59

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>

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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. Deste modo, no executada a instruo entre o se e o fim_se.
Algoritmo exemplo
Var

A : inteiro

Leia (A)

Incio

Se (A > 10) ento

Escreva (A maior que 10)


Fim.

Fim_se

Quadro 26: Pseudocdigo - Exemplo Estrutura Condicional Simples

Estrutura Condicional Simples

II

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:
A < B
Sexo = F
Resposta <> Sim

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

Condio 1

Condio 2

Resultado

Verdadeiro

Verdadeiro

Verdadeiro

Verdadeiro

Falso

Falso

Falso

Verdadeiro

Falso

Falso

Falso

Falso

Quadro 27: Tabela Verdade - Operador E


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.

ESTRUTURA CONDICIONAL

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

X > 16

60 - 61

Operador OU

Condio 1

Condio 2

Resultado

Verdadeiro

Verdadeiro

Verdadeiro

Verdadeiro

Falso

Verdadeiro

Falso

Verdadeiro

Verdadeiro

Falso

Falso

Falso

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Quadro 28: Tabela Verdade - Operador OU


Fonte: adaptado de (MANZANO; OLIVEIRA, 1997)

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

Condio

Resultado

Verdadeiro

Falso

Falso

Verdadeiro

Quadro 29: Tabela Verdade - Operador NO


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.
Estrutura Condicional Simples

II

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.

algoritmo par
Var

n, resto, metade:inteiro

Escreeva(Digite um nmero);

Incio

Leia(n)

reston mod2

Se(resto=0)ento

Fim_se

Escreva(A metade do

Fim.

Quadro 30: Pseudocdigo - Algoritmo Par

ESTRUTURA CONDICIONAL

nmero,metade)

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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.

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

62 - 63

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.
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.
Algoritmo par
Var

n: inteiro

Escreva (Digite um nmero:)

Incio

Leia (n)

Se (n mod 2 = 0) ento

Fim_se

Escreva (A metade do nmero :, n/2)

Fim.

Quadro 31: Pseudocdigo - Algoritmo Par

Estrutura Condicional Simples

II

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 :

<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.
Algoritmo parimpar
Var

n: inteiro

Escreva (Digite um nmero:)

Incio

Leia (n)

Se (n mod 2 = 0) ento

Escreva (O nmero par)


Seno

Escreva (O nmero mpar)


Fim_se
Fim.

Quadro 32: Pseudocdigo - Algoritmo parimpar

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

ESTRUTURA CONDICIONAL

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Se (<Condio>) ento

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

64 - 65

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

Estrutura Condicional Composta

II

Algoritmo faixa
Var

n: inteiro

Escreva (Digite um nmero inteiro:)

Incio

Leia (n)

Se (n > 20) e (n < 90) ento

Escreva (O nmero est na faixa entre 20 e


Seno

Escreva (O nmero est fora da faixa)


Fim_se
Fim.

Quadro 33: Pseudocdigo - Algoritmo faixa

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

Condio 1

Condio 2

Resultado

27 > 20

27 < 90

Verdadeiro

Quadro 34: Representao da Expresso Lgica

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

ESTRUTURA CONDICIONAL

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.


90)

66 - 67

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

Condio 1

Condio 2

Resultado

20 > 20

20 < 90

Falso

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Quadro 35: Representao da Expresso Lgica

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 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
Estrutura Condicional Aninhada

II

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.

Var

a, b, c, max: inteiro

Escreva (Digite o primeiro nmero inteiro:)

Escreva (Digite o segundo nmero inteiro:)

Incio



Leia (a)
Leia (b)

Escreva (Digite o terceiro nmero inteiro:)


Leia (c)

Se (a > b) ento

Se (a > c) ento

Seno

Fim_se

Se (b>c) ento

seno

Fim_se

Escreva(O maior nmero :, max)

max b

max c

seno

max b

max c

Fim_se
Fim.

Quadro 36: Pseudocdigo - Algoritmo maior

ESTRUTURA CONDICIONAL

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Algoritmo maior

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

68 - 69

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
Se (a > b) ento
pelos trechos 3 e 4. A estrutura condicional do trecho
Se ( a > c) ento
3 s executada se A > B
max:= a
resultar em verdadeiro. Em
seno
max:=c
seguida, verificado se A
fimse
> C, em caso verdadeiro
executada a instruo em
seno
que atribudo o valor de
Se ( b > c ) ento
a para a varivel max. Se A
max:=b
> C for avaliado como falso
seno
executada a instruo em
max:=c
que o valor de C atribufimse
do para a varivel max.
fimse
Podemos resolver o
Figura 5: Estrutura condicional aninhada
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.

Estrutura Condicional Aninhada

II

Algoritmo maior
Var

a, b, c, max: inteiro

Escreva (Digite o primeiro nmero inteiro:)

Escreva (Digite o segundo nmero inteiro:)

Escreva (Digite o terceiro nmero inteiro:)

Incio

Leia (b)
Leia (c)

Se (a > c) ento

Se (a > b) ento

max a

max b

Seno

Fim_se

se (c > max) ento

seno

max c

Fim_se

Escreva(O maior nmero :, max)

Fim_se
Fim.

Quadro 37: Pseudocdigo - Algoritmo maior

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 CONDICIONAL

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Leia (a)

70 - 71

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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

Estrutura de Deciso Mltipla

II

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.

Var

num: inteiro

Escreva (Digite um nmero de 1 a 12:)

Incio

Leia (num)

Caso (num)

Seja 1 faa Escreva (Janeiro)

Seja 3 faa Escreva (Maro)

Seja 2 faa Escreva (Fevereiro)


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.

Quadro 38: Pseudocdigo - Algoritmo ms

ESTRUTURA CONDICIONAL

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Algoritmo Ms

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

72 - 73

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 deciphotos
so 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.
Algoritmo mes2
Var

num: inteiro

Escreva (Digite um nmero de 1 a 12:)

Incio

Leia (num)

Se (num = 1) ento

Fim_se

Escreva (Janeiro)

Se (num = 2) ento

fim_se

Escreva (Fevereiro)

Se (num = 3) ento

Fim_se

Escreva (Maro)

Se (num = 4) ento

Fim_se

Escreva (Abril)

Estrutura de Deciso Mltipla

II

Se (num = 5) ento

Fim_se

Escreva (Maio)

Se (num = 6) ento

Fim_se

Escreva (Junho)

Se (num = 7) ento
Fim_se

Escreva (Julho)

Se (num = 8) ento

Fim_se

Escreva (Agosto)

Se (num = 9) ento

Fim_se

Escreva (Setembro)

Se (num = 10) ento


Fim_se

Escreva (Outubro)

Se (num = 11) ento


Fim_se

Escreva (Novembro)

Se (num = 12) ento


Fim_se

Escreva (Dezembro)

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.

Quadro 39: Pseudocdigo - Algoritmo ms

ESTRUTURA CONDICIONAL

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

74 - 75

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.

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:

Consideraes Finais

II

Se (<Condio>) ento

fim_se

<instrues para condio verdadeira>

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

ESTRUTURA CONDICIONAL

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

76 - 77

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:

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

<http://pt.wikipedia.org/wiki/Indenta%C3%A7%C3%A3o>.

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

Consideraes Finais

1. Formule um algoritmo que leia a matrcula e nome de um vendedor, seu salrio


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

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.

78 - 79

Algoritmo verificaidade
Var

idade: inteiro

nome: caractere[30]

Escreva (Digite o nome:)

Escreva (Digite a idade:)

Incio

Leia (nome)

Leia (idade)

Se (idade > = 65) ento


Escreva (Idoso)

Se (idade < 18) ento

Seno

Fim_se

Seno

Escreva (Menor de idade)


Escreva (Maior de idade)
Fim_se
Fim.

Quadro 40: Pseudocdigo Exerccio 1

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.

Algoritmo classeeleitoral
Var

idade: inteiro

Escreva (Digite a idade:)

Incio

Leia (idade)

Se (idade < 16) ento


Escreva (No eleitor)

Se (idade > 65) ou (idade < 18) ento

Seno

Fim_se

Seno

Escreva (Eleitor facultativo)


Escreva (Eleitor obrigatrio)
Fim_se
Fim.

Quadro 41: Pseudocdigo Exerccio 2

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.

80 - 81

Algoritmo calculaimc
Var

peso, altura, imc: real

Escreva (Digite o peso:)

Escreva (Digite a altura:)

Incio

Leia (peso)

Leia (altura)

imc peso/sqn(altura)
Se (imc < 20) ento

Escreva (Abaixo do peso)

Se (imc <= 25) ento

Seno

Seno

Escreva (Normal)
Se (imc <= 30) ento

Escreva (Excesso de peso)


Seno

se (imc <=35) ento

Escreva (Obesidade)
Seno

Escreva (obesidade mrbida)


Fim_se
Fim_se

Fim_se

Fim_se
Fim.

Quadro 42: Pseudocdigo Exerccio 3

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.

Algoritmo reajuste
Var

cargo: inteiro

salario, reajuste, aumento: real

Escreva (Digite a cargo:)

Escreva (Digite a salario:)

Incio

Leia (cargo)

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)

Se (cargo = 2) ento

Seno

Escreva (Digite a cargo:, cargo)

82 - 83

aumento salario*(30/100)

reajuste salario+aumento

Seno

Escreva (O aumento de:, aumento)

Escreva (O novo salrio :, reajuste)

Se (cargo = 3) ento

Escreva (Digite a cargo:, cargo)


Escreva (Vigia)

aumento salario*(25/100)

reajuste salario+aumento

Escreva (O aumento de:, aumento)

Escreva (O novo salrio :, reajuste)


Seno

Se (cargo = 3) ento

Escreva (Digite a cargo:, cargo)


Escreva (Vigia)

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.

Quadro 43: Pseudocdigo Exerccio 4

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
^- bh
existe raiz real; se = 0 existe uma raiz real que dada por
x = 2 xa ; se > 0
existem duas razes reais
^- b - T h
^- b + T h e
6.

x1 =

x1 =

2 xa

2 xa

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.

Algoritmo raiz
Var

a, b, c, delta, x1, x2: inteiro

Escreva (Digite o valor de a:)

Escreva (Digite o valor de b:)

Escreva (Digite o valor de c:)

Incio


Leia (a)
Leia (b)
Leia (c)

Se (a = 0) ento

Escreva (No uma equao do segundo grau)

Seno

delta delta sqr(b)*4*a*c

Se (delta = 0) ento

Seno

Escreva (No existe raiz real)


se (delta = 0) ento
Escreva (Existe uma raiz real)

Seno

84 - 85

se (delta = 0) ento
Escreva (Existe uma raiz real)

Seno

se (delta = 0) ento

Escreva (Existe uma raiz real)

x1 (-b)/(2*a)

Escreva (A raiz :, x1)


Seno

Se (delta = 0) ento

Escreva (Existem duas razes reais)

x1 (-b + )

Seno

delta delta sqr(b)*4*a*c

Se (delta = 0) ento

Seno

Escreva (No existe raiz real)


se (delta = 0) ento
Escreva (Existe uma raiz real)

Seno

se (delta = 0) ento

Escreva (Existe uma raiz real)

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

Quadro 44: Pseudocdigo Exerccio 5

MATERIAL COMPLEMENTAR

Algoritmos e Estruturas de Dados


Lages e Guimares
editora: LTC
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.

ESTRUTURA DE REPETIO

UNIDADE

Professora Me. Gislaine Camila Lapasini Leal

III

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

88 - 89

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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?

Introduo

III

Estrutura de Repetio

ESTRUTURA DE REPETIO

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

90 - 91

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 para controlar o nmero de
repeties. A sintaxe da estrutura Para :

Estrutura Para

III

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.

<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.
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:
Figura 6: Tabuada do nmero 5
Objetivo do algoritmo: calcular a tabuada de um
nmero inteiro.

ESTRUTURA DE REPETIO

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

92 - 93

Entrada: obter um nmero inteiro.


Processamento: efetuar a operao de multiplicao do nmero nformado
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.
Nmero obtido
O processamento consiste em mulna entrada
tiplicar 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
0
3
x
7. Criaremos uma varivel chamada
x
1
3
mult para armazenar o resultado da
multiplicao. Observe que temos a
2
3
x
repetio de uma expresso aritm3
3
x
tica de multiplicao (num x i), em
4
x
3
que sabemos previamente o nmero
de repeties. Portanto, podemos uti5
x
3
lizar a estrutura Para. Lembre-se que ao
6
x
3
utilizar esta estrutura precisamos declarar uma varivel contadora que deve
7
x
3
ser do tipo inteiro, nomearemos de i.
8
x
3
A varivel i deve ter incio em 0 e fim
9
x
3
em 10, pois queremos mostrar a tabuada de 0 a 10. O passo a ser utilizado
10
x
3
1. Como sada do algoritmo temos que
imprimir o resultado da operao de
multiplicao.
Operao aritmtica
a ser executada
Figura 7: Processamento a ser executado
Fonte: a autora

Estrutura Para

III

Algoritmo tabuada
Var

Num, i, mult: inteiro

Escreva (Digite um nmero:)

Para i de 1 at 10 passo 1 faa

Incio

Leia (num)

mult num*i

Escreva (num, x, i, =, mult)


Fim.

fim_para

Quadro 45: Pseudocdigo - Algoritmo tabuada

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

ESTRUTURA DE REPETIO

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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


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

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

94 - 95

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

Estrutura Para

III

Algoritmo tabuada
Var

Num, i: inteiro

Escreva (Digite um nmero:)

Para i de 1 at 10 passo 1 faa

fim_para

Incio

Leia (num)

Fim.

Quadro 46: Pseudocdigo - Algoritmo tabuada

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.

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.

ESTRUTURA DE REPETIO

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Escreva (num, x, i, =, mult*i)

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

96 - 97

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

Estrutura Enquanto

III

Algoritmo conta
Var

Num, cont: inteiro

Escreva (Digite um nmero:)

cont 0

Incio

Leia (num)

Se (num >=100) e (num <=300) ento


cont cont +1

fim_se

Escreva (Digite um nmero:)


Leia (num)
fim_enquanto

Fim.

Escreva (A quantidade de nmeros entre 100


e 300 :, cont)

Quadro 47: Pseudocdigo - Algoritmo conta

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

ESTRUTURA DE REPETIO

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Enquanto (num <> 0) faa

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

98 - 99

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 da estrutura de repetio. Note que a leitura est sendo realizada apenas antes da estrutura de repetio.

Estrutura Enquanto

III

Algoritmo conta
Var

Num, cont: inteiro

Escreva (Digite um nmero:)

cont 0

Incio

Enquanto (num <> 0) faa

Se (num >=100) e (num <=300) ento

cont cont +1

fim_se

fim_enquanto

Escreva (A quantidade de nmeros



Fim.

entre 100 e 300 :, cont)

Quadro 48: Pseudocdigo - Algoritmo conta

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

ESTRUTURA DE REPETIO

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Leia (num)

100 - 101

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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

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

Estrutura Enquanto

III

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

ESTRUTURA DE REPETIO

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

A estrutura Repita uma estrutura do tipo lao condicional, isto , o loop baseiase 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 :

102 - 103

Algoritmo conta
Var

Num, cont: inteiro

cont 0

Incio

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Repita

Escreva (Digite um nmero:)

Se (num >=100) e (num <=300) ento

At_ que (num = 0)

... Leia (num)

Fim.

fim_se

cont cont +1

Escreva (A quantidade de nmeros entre 100


e 300 :, cont)

Quadro 49: Pseudocdigo - Algoritmo conta

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

Estrutura Repita

III

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

mento> faa

para <var2> de <incio> ate <fim> passo <incre-

<instrues>

fim_para

ESTRUTURA DE REPETIO

fim_para

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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.

104 - 105

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>

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

fim_para

fim_enquanto

No encadeamento da estrutura Para com Repita a sintaxe :

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


faa
repita

<instrues>

fim_para

At_que (condio)

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>

fim_enquanto

at_que (<condio2>)

enquanto (<condio>) faa


faa

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

<instrues>

Estruturas de Repetio Encadeadas

III

fim_para

fim_enquanto

Nos casos de encadeamento utilizando a estrutura Repita e as demais temos


as seguintes sintaxes:
repita


faa

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

<instrues>

fim_para

at_que (<condio>)
repita

enquanto (<condio2>) faa

<instrues>

fim_enquanto

at_que (<condio1>)
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.

ESTRUTURA DE REPETIO

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

106 - 107

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.

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Processamento: efetuar o produto de todos os nmeros inteiros positivos menores ou igual ao nmero lido na entrada.
Sada: imprimir o fatorial.
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.

Estruturas de Repetio Encadeadas

III

Algoritmo fatorial
Var

num, fat, cont: inteiro

Incio
Escreva (Digite o nmero que deseja calcular o fa
torial:)
Leia (num)
fat 1;

Para cont de num at 1 passo -1 faa


fat fat*cont

fim_para

Escreva (O fatorial : , fat)


Fim.
Quadro 50: Pseudocdigo - Algoritmo fatorial

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.

ESTRUTURA DE REPETIO

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

108 - 109

Algoritmo fatorial
Var
num, fat, cont: inteiro
Incio

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Escreva (digite o nmero que deseja calcular o fatorial:)


Leia (num)
fat 0;
Para cont de num at 1 passo -1 faa
fat fat*cont
fimpara
Escreva (O fatorial :, fat)
Fim.

cont = 5
fat = 0*5
cont = 4
fat = 0*4
cont = 3
fat = 0*3
cont = 2
fat = 0*2
cont = 1
fat = 0*1

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.
Sistematizando as informaes do problema de acordo com o mtodo, temos que:
Estruturas de Repetio Encadeadas

III

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.

ESTRUTURA DE REPETIO

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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

110 - 111

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.
Algoritmo fatorial
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Var

nnotas, cod, aprovados, reprovados, cont: inteiro


media, nota, soma: real
Incio

Escreva (Informe o nmero de notas da disci


plina:)

aprovadas 0

reprovada 0

Leia (nnotas)

Enquanto (cod <> 0) faa

soma 0

media 0

Para cont de 1 at nnotas passo 1 faa

Escreva (Informe a nota:)


leia (nota)

soma soma + nota

Fimpara

media soma/nnotas;

se (media >=7) ento

seno

aprovados aprovados + 1

reprovados reprovados + 1

Fim-se

Escreva (Informe o cdigo do


aluno:)
Leia (cod)

Estruturas de Repetio Encadeadas

III

fimenquanto


Escreva (O nmero de aprovados :,
aprovados)

Escreva (O nmero de reprovados :,
reprovados)
Fim.

Quadro 51: 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)

aprovadas 0

ESTRUTURA DE REPETIO

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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

112 - 113

reprovada 0
Repita

leia (cod)

soma 0

media 0


Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Escreva (Informe o cdigo do aluno:)

Para cont de 1 at nnotas passo 1 faa

Escreva (Informe a nota:)

Leia (nota)

soma soma + nota

Fimpara

se (media>=7) ento

seno

aprovados aprovados + 1

reprovados reprovados + 1

ate_que (cod = 0)

Fim

media soma/nnotas

fim-se

Escreva (O nmero de aprovados :, aprova


dos)
Escreva (O nmero de reprovados :, repro
vados)

Quadro 52: Pseudocdigo Algoritmo notas

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.

Estruturas de Repetio Encadeadas

III

Consideraes Finais

ESTRUTURA DE REPETIO

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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

114 - 115

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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.

Para entender um pouco mais sobre a estrutura de repetio, acesse o vdeo


disponvel em:
<http://www.youtube.com/watch?v=av5T0y6rwdk>.

Consideraes Finais

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

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.

116 - 117

Sada: imprimir a palavra Algoritmos o nmero de vezes informado.


Algoritmo palavra
Var

num, i: inteiro

Escreva (Informe o nmero de vezes que


deseja imprimir:)

Para i de 1 at num passo 1 faa

Incio

Leia (num)

Escreva (ALGORITMOS)

Fim.

fim_para

Quadro 53: Pseudocdigo Exerccio 1

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.
Algoritmo conta
Var

num, npares, nimpares, i: inteiro

npares 0

nimpares 0

Incio

Para i de 1 at 100 passo 1 faa

Escreva (Digite um nmero:)


Leia (num)

Se (num mod 2 = 0) ento


npar npar + 1

nimpar nimpar + 1

fim_para

Seno
Fim_se



Fim.

Escreva (A quantidade de nmeros pares :,


npar)

Escreva (A quantidade de nmeros mpares


:, nimpar)

Quadro 54: Pseudocdigo Exerccio 2

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.
Processamento: contar a quantidade de nmeros digitada.
Sada: imprimir a quantidade de nmeros positivos digitadas.
Algoritmo conta
Var

num, qtdade: inteiro

qtdade 0

Leia (num)

Incio


Escreva (Informe um nmero:)


Enquanto (num > 0) faa

qtdade qtdade + 1

Escreva (Informe um nmero:)


Leia (num)

118 - 119

Fim.

Fim_enquanto

Escreva (O total de nmeros positivos


informado :, qtdade)

Quadro 55: Pseudocdigo Exerccio 3

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.
Sada: imprimir o valor total da compra.
Algoritmo compras
Var

pedido, qtidade, data: inteiro

preco, total : real

total 0

Incio

Escreva (Informe o nmero do pedido:)

Enquanto (num > 0) faa

Leia (pedido)

Escreva (Informe a data:)


Leia (data)

Escreva (Informe a unitrio:)

Escreva (Informe a quantidade:)

Leia (preco)

Leia (qtdade)

total total + (preco*qtdade)


Escreva (O valor da compra :, pre
co*qtdade)





Fim.

Escreva (Informe o nmero do pedido


ou 0 para finalizar:)
Leia (pedido)

Fim-enquanto

Escreva (O total da compra :, total)

Quadro 56: Pseudocdigo Exerccio 4

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.
Algoritmo atletas
Var

idade, cont: inteiro

peso, altura, media, alto, pesado, soma: real

nome, nalto, npesado: caractere[30]

sexo: caracter[1]

media 0

cont 0

alto 0

Incio

120 - 121

pesado 0

nalto

npesado

Escreva (Informe o nome do atleta ou FIM


para encerrar:)

Enquanto (num <> FIM) faa

Leia (nome)

Escreva (Informe a idade:)


Leia (idade)

Escreva (Informe o peso:)

Escreva (Informe a altura:)

Escreva (Informe a sexo:)

soma soma+idade

cont cont+1

Leia (peso)

Leia (altura)
Leia (sexo)

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

pesadop peso

npesado nome
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

Quadro 57: Pseudocdigo Exerccio 5

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.
Algoritmo triangulo
Var

base, altura, area: real

Repita

Incial

Escreva (Informe a base:)



Leia (base)

At_que (base>0)

Repita

At_que (altura >=0)


Fim

area (base*altura)/2

Escreva (A rea :, area)

Quadro 58: Pseudocdigo Exerccio 6

122 - 123

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.
Algoritmo pessoas
Var


idade, ncasado, nseparado, nsolteiro, nviuva
: inteiro

estado : caractere

ncasado 0

nsolteiro 0

nviuva 0

nseparado 0

Incio

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
fim_se

ncasado ncasado + 1

Se (estado = S) ento

nsolteiro nsolteiro + 1

fim_se

fim_se

Se (estado = V) ento

Repita

Se (estado = D) ento

fim_se

nseparado nseparado + 1

nviuva nviuva + 1

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.

Quadro 59: Pseudocdigo Exerccio 7

124 - 125

MATERIAL COMPLEMENTAR

Algoritmos: Programao para Iniciantes


Gilvan Vilarim
editora: Cincia Moderna
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 profissionalizante
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.

Material Complementar

ESTRUTURAS DE DADOS
HOMOGNEAS E
HETEROGNEAS

UNIDADE

Professora Me. Gislaine Camila Lapasini Leal

IV

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

128 - 129

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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?

Introduo

IV

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.

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.

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

ESTRUTURAS DE DADOS HOMOGNEAS E HETEROGNEAS

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Vetores

130 - 131

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 :
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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

Vetores

IV

Algoritmo media
Var

nome: vetor [1..10] de caractere

n1, n2, n3, n4, media : vetor[1..10] de real

cont: inteiro

Para cont de 1 at 10 passo 1 faa

Incio

Escreva (Informe nome do aluno:)


Leia (nome[cont])

Escreva (Informe a nota 1:)


Leia (n1[cont])

Escreva (Informe a nota 2:)


Leia (n2[cont])

ESTRUTURAS DE DADOS HOMOGNEAS E HETEROGNEAS

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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 vetor. No Quadro 60 apresentado o algoritmo para o
problema descrito.

132 - 133

Escreva (Informe a nota 3:)


Leia (n3[cont])

Escreva (Informe a nota 4:)


Leia (n4[cont])

Para cont de 1 at 10 passo 1 faa

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

fim_para

Fim

media[cont] (n1[cont] + n2[cont]+n3


[cont] + n4[cont])/4

Escreva (Aluno, nome[cont])


Escreva (Nota1:, n1[cont])
Escreva (Nota2:, n2[cont])

Escreva (Nota3:, n3[cont])


Escreva (Nota4:, n4[cont])

Escreva (Media:, media[cont])

Fim_para

Quadro 60: Pseudocdigo Algoritmo mdia notas

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.

Vetores

IV

Ordenao em Vetor

10

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.

4
1

10

Figura 15: Primeiro repetio

ESTRUTURAS DE DADOS HOMOGNEAS E HETEROGNEAS

5
4

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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

134 - 135

4 maior que 7?

10

Figura 16: Comparao entre os elementos

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Agora temos que comparar o elemento da posio 1 com o elemento da posio 3 (Figura 17). 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?

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?

10

Figura 18: Comparao entre os elementos

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


4 maior que 5?

10

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

10

Figura 20: Segunda repetio

Ordenao em Vetor

IV

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?

10

Figura 21: Comparao entre os elementos

10

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

10

10

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

10

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

ESTRUTURAS DE DADOS HOMOGNEAS E HETEROGNEAS

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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


4 maior que 4?

136 - 137

10 maior que 7?

10

10

Figura 26: Comparao entre os elementos

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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?

10

Figura 28: Comparao entre os elementos

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

10

Figura 29: Ordenao do vetor

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

10

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?

10

Figura 31: Comparao entre os elementos

Ordenao em Vetor

IV

10

Figura 32: Vetor ordenado

Algoritmo ordena
Var

Incio

num: vetor[1..5] de inteiro


i, j, aux: inteiro

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

Para i de 1 at 5 passo 1 faa

Fim_para

fim_para

fim_para

Escreva (num[i])
Fim.

Quadro 61: Pseudocdigo Algoritmo ordenao

ESTRUTURAS DE DADOS HOMOGNEAS E HETEROGNEAS

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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.

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

138 - 139

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.

11

15

Figura 33: Vetor

Ordenao em Vetor

IV

Busca em Vetor

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

ESTRUTURAS DE DADOS HOMOGNEAS E HETEROGNEAS

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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

140 - 141

Leia (vnum[i])
Fim_para

Escreva (Informe o nmero que deseja buscar:)

Leia (num)

i 1

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

acha falso

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



faa
se (num = vnum[i]) ento
acha verdadeiro
seno

i i + 1

Se (acha = verdadeiro) ento

fim_se

fim_enquanto

Escreva (O elemento foi encontrado na


posio, i)
Seno

Escreva (O elemento no foi encon


trado)

Fim.

Fim_se

Quadro 62: Pseudocdigo Algoritmo Busca Sequencial

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 nmero foi
encontrado no vetor.

Mtodo Sequencial

IV

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.

4
x [4,1]

1
2
3
x [1,1]

x [3,2]

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>

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.

ESTRUTURAS DE DADOS HOMOGNEAS E HETEROGNEAS

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

142 - 143

Coluna

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Linha

1
2
3
4
5
6
7
8

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

IV

Algoritmo media
Var

media: vetor [1..20] de real

notas: vetor[1..20, 1...4] de real

somat, soma, mediat: real

i, j : inteiro

somat 0

soma 0

Incio

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)

fim_para
Leia (notas[i,j])

mediat somat/20



soma soma + notas[i,j]

Para i de 1 at 20 passo 1 faa
Fim_para
Escreva (A mdia do aluno, i , :,
media[i] soma/4
media[i])


somat somat + soma

Fim_para
soma

Escreva (A 0mdia da turma :, mediat)
Fim.

Quadro 63: Pseudocdigo Algoritmo mdia notas

ESTRUTURAS DE DADOS HOMOGNEAS E HETEROGNEAS

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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.

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

144 - 145

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

Estruturas de Dados Heterogneas

IV

Em um registro cada informao denominada de campo, os quais podem ser


de diferentes tipos, ou ainda, representar outros registros.
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

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

ESTRUTURAS DE DADOS HOMOGNEAS E HETEROGNEAS

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

fim_registro

<lista dos campos e seus tipos>

146 - 147

primeira nota, segunda nota, terceira nota e quarta nota.

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Nome do aluno: __________________________

Segunda nota:__________
Terceira 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.

Registros

IV

Quadro 64: Pseudocdigo Algoritmo registro aluno


Algoritmo registroaluno
Tipo




Var

Nome: caractere
Nota1: real
Nota2: real
Nota3: real
Nota4: real
fim_registro

Aluno: cad_aluno

Escreva (Informe nome do aluno:)

Escreva (Informe a nota 1:)

Incio







Fim.

Leia (aluno.nome)

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)

Quadro 64: Pseudocdigo Algoritmo registro aluno

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.

ESTRUTURAS DE DADOS HOMOGNEAS E HETEROGNEAS

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Cad_aluno = registro

148 - 149

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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.
Algoritmo registroaluno
Tipo



notas = vetor [1..4] de real


Cad_aluno = registro

Nome: caractere
Nota: notas

fim_registro
Var

Aluno: cad_aluno

i: inteiro

Escreva (Informe nome do aluno:)

Para i de 1 at 4 passo 1 faa

Incio

Leia (aluno.nome)

Escreva (Informe a nota, i, :)


Leia (aluno.nota[i])

Fim.

fim_para

Quadro 65: Pseudocdigo Algoritmo registro aluno

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

IV

Algoritmo registroaluno

Tipo



notas = vetor [1..4] de real


Cad_aluno = registro

Nome: caractere
Nota: notas

fim_registro

Aluno: vetor [1..10] de cad_aluno

i, j: inteiro

Para i de 1 at 10 faa

Incio

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, :, alu


no[i].nota[j])
Fim_para

Fim.

Fim_para

Quadro 66: Pseudocdigo Algoritmo registro aluno

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

ESTRUTURAS DE DADOS HOMOGNEAS E HETEROGNEAS

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Var

150 - 151

reproduo proibida. art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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.
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.
Algoritmo registroproduto
Tipo

Cad_produto = registro

codigo: inteiro

nome: caractere[30]
preo: real

saldo: inteiro

fi m_registro
Var

produto: vetor [1..10] de cad_produto

Problema

IV

i, codigo: inteiro
acha: lgico

resp: caractere[3]

Para i de 1 at 20 faa

Incio

Escreva (Informe cdigo do produto:)


Escreva (Informe a descrio do pro
duto:)
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 pes


quisado:)
Leia (codigo)

i 1

acha falso

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

Se (produto[i].codigo = cdigo) ento


Acha verdadeiro

i i + 1

fim_enquanto

Seno

fim_se

Se (acha=verdadeiro) ento

acha falso

ESTRUTURAS DE DADOS HOMOGNEAS E HETEROGNEAS

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Leia (produto[i].codigo)

152 - 153

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

Se (produto[i].codigo = cdigo) ento


Acha verdadeiro
Seno

fim_enquanto

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

fim_se

i i + 1

Se (acha=verdadeiro) ento

Escreva (O preo :, produto[i].preco)

Escreva (O saldo em estoque :, pro


duto[i].saldo)

Seno

Fim_se

Escreva (No h produto com o cdigo


informado)
Escreva (Deseja continuar a pesquisa?)
Leia (resp)

Fim.

Fim_enquanto

Quadro 67: Pseudocdigo Algoritmo registro aluno

Problema

IV

Consideraes Finais

ESTRUTURAS DE DADOS HOMOGNEAS E HETEROGNEAS

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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

154 - 155

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

A varivel caractere armazenada na memria principal como sendo um


vetor, mesmo sem ser declarada como tal.

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

Consideraes Finais

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

156 - 157

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.
Quadro 68: Pseudocdigo Exerccio 1
Algoritmo levetor
Var

num: vetor [1..30] de inteiro


i, j

: inteiro

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.

Quadro 68: Pseudocdigo Exerccio 1

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.

Algoritmo diferenca
Var

A, B, C : vetor[1..5, 1...5] de inteiro

i, j : inteiro

Para i de 1 at 5 passo 1 faa

Incio

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

fim_para

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

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.

fim_para

Quadro 69: Pseudocdigo Exerccio 2

158 - 159

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

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]

Para i de 1 at 20 faa

Incio

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

escreva (No h contato com


o nome informado)

Fim_se

Fim

Escreva (Deseja contunuar a pesquisa?)

Leia (nestp)

Fim_enquanto

Quadro 70: Pseudocdigo Exerccio 3

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.

160 - 161

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.
Algoritmo registroprofessor
Tipo




Cad_professor = registro

matricula: inteiro

nome: caractere[30]

lotacao: caractere[20]
salario: real

fim_registro
Var


professor: vetor [1..30] de professor


i, registro: inteiro
acha: lgico

resp: caractere[3]

Para i de 1 at 30 faa

Incio

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

Escreva (Informe a matricula a ser pesqui


sado:)

i 1

acha falso

Enquanto (resp = sim) faa

Leia (registro)

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

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

fim_enquanto

fim_se

i i + 1

Se (acha=verdadeiro) ento

Escreva (A lotao :, professor[i].


lotacao)
Escreva (O salrio :, professor[i].
salario)

Seno

Fim_se

Escreva (No h professor com a matr


cula informada)
Escreva (Deseja continuar a pesquisa?)
Leia (resp)

Fim.

Fim_enquanto

Quadro 71: Pseudocdigo Exerccio 4

162 - 163

SUB-ROTINAS E
PROGRAMAO COM
ARQUIVOS

UNIDADE

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

164 - 165

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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

Introduo

Sub-Rotinas

Divide o problema em partes coerentes.


Facilita o teste.

SUB-ROTINAS E PROGRAMAO COM ARQUIVOS

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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

166 - 167

Evita repetio do cdigo.


Maior legibilidade do algoritmo.

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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 :
procedimento <nome do procedimento>
var

<variveis>

<instrues>

incio

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

Procedimentos

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.

Algoritmo calculadora
Procedimento soma

Var:

Incio

A, B, Resultado: real

Escreva (Procedimento SOMA)

Escreva (Informe o valor de A:)


Leia (A)

Escreva (Informe o valor de B:)


Leia (B)

ResultadoA + B

Escreva(O resultado da soma :,


resultado)

SUB-ROTINAS E PROGRAMAO COM ARQUIVOS

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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

168 - 169

Fim_procedimento
Procedimento subtracao

Var:

Incio

A, B, Resultado: real

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Escreva (Procedimento SUBTRAO)


Escreva (Informe o valor de A:)
Leia (A)

Escreva (Informe o valor de B:)


Leia (B)

ResultadoA - B

Escreva (O resultado da subtrao


:, resultado)
Fim_procedimento

Procedimento multiplicacao

Var:

Incio

A, B, Resultado: real

Escreva (Procedimento MULTIPLICAO)


Escreva (Informe o valor de A:)
Leia (A)

Escreva (Informe o valor de B:)


Leia (B)

ResultadoA * B

Escreva (O resultado da multiplica



o :, resultado)
Fim_procedimento

Procedimento multiplicao (A, B: DIVISO)

Var:

Incio

Resultado: real
Escreva (Procedimento DIVISO)

Procedimentos

Escreva (Informe o valor de A:)


Leia (A)

Escreva (Informe o valor de B:)


Leia (B)

ResultadoA / B

Escreva (O resultado da diviso :,


resultado)
Var

opcao: inteiro

opcao 0

Escreva (1 Soma)

Escreva (3 Multiplicao)

Incio

Enquanto (opcao <> 5) faa






Escreva (2 Subtrao)
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 inv


lida)

fim_enquanto

fim_se

fim_caso

Fim

Quadro 72: Pseudocdigo Algoritmo calculadora

SUB-ROTINAS E PROGRAMAO COM ARQUIVOS

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Fim_procedimento

170 - 171

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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.

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
Escopo de Variveis

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

SUB-ROTINAS E PROGRAMAO COM ARQUIVOS

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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,
A,B
que possui uma varivel X que local e
Rotina 1
no apresenta nenhuma relao com a
A, X
varivel X definida na rotina 1.
Rotina 1.1
Em relao sub-rotina 2 temos que as
W
variveis A e B so globais para a rotina
Rotina 1.2
2.1 A varivel M declarada na rotina 2
Y
uma varivel global para a rotina 2.1, que
possui uma varivel X que local e no
Rotina 2
apresenta nenhuma relao com a variM
vel X definida na rotina 1.
Rotina 2.1
Manzano e Oliveira (1997) destacam
X
que uma varivel declarada antes de uma
sub-rotina uma varivel global para a
Figura 37: Escopo de variveis
Fonte: MANZANO; OLIVEIRA (1997)
sub-rotina.

172 - 173

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

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Procedimento soma (A, B: real)


Var:

Incio

Resultado: real
ResultadoA + B

Escreva (O resultado da soma :,


resultado)
Fim_procedimento

Procedimento subtracao (A, B: real)


Var:

Incio

Resultado: real
ResultadoA - B

Escreva (O resultado da subtrao



:, resultado)
Fim_procedimento

Procedimento multiplicao (A, B: real)


Var:

Incio

Resultado: real
ResultadoA * B

Escreva (O resultado da

multiplicao :, resultado)
Fim_procedimento

Passagem de Parmetros

Procedimento diviso (A, B: real)

Var:

Incio

Resultado: real

ResultadoA / B

Escreva (O resultado da diviso :,


resultado)
Fim_procedimento
Var

opcao: inteiro
X, Y: real

Incio

Enquanto (opcao <> 5) faa

opcao0

Escreva (Informe o valor de X:)


Leia (X)

Leia (Y)

Escreva (Informe o valor de Y:)


Escreva (1 Soma)

Escreva (2 Subtrao)

Escreva (3 Multiplicao)

Escreva (5 Sair)

Escreva (4 Diviso)

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)



fim_se

fim_caso

fim_enquanto
Fim.

Quadro 73: Pseudocdigo Algoritmo calculadora


SUB-ROTINAS E PROGRAMAO COM ARQUIVOS

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

174 - 175

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

Procedimento fatorial (X: inteiro)


Var:

Incio

i, fat: inteiro
fat1

Para i de 1 at x passo 1 faa

fat fat * i

fim_para

Passagem de Parmetros

Escreva (O fatorial :, fat)


Fim_procedimento
Var

n: inteiro

Escreva (Informe o nmero que deseja calcu


lar o fatorial:)

Fatorial(n)

Incio

Fim.

Leia (n)

74: Pseudocdigo Algoritmo fatorial


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

Procedimento fatorial(X:inteiro Var Fat: inteiro)


Var:

i:inteiro

Incio

fat1

Para i de 1 at x passo 1 faa

fatfat*i

fim_para

Fim_procedimento

SUB-ROTINAS E PROGRAMAO COM ARQUIVOS

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

176 - 177

Var

n, resultado: inteiro

Escreva (Informe o nmero que


lar o fatorial)

Inicio

Leia(n)

Fabiana(n,resultado)

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Fim

deseja calcu

Escreva(O fatorial :,resultado)

Quadro 75: Pseudocdigo Algoritmo fatorial


Fonte: MANZANO; OLIVEIRA (1997)

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 chan
mado do procedimento fatorial com os parmetros
n sendo passado por valor e resultado por refernFatorial (n, resultado)
cia. O valor de n copiado para a varivel x. Para
calcular fatorial utilizado o valor de x para controResultado
lar 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

Passagem de Parmetros

fat

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

Funo fatorial (X: inteiro): inteiro


Var:

Incio

i: inteiro
fat1

Para i de 1 at x passo 1 faa



fat fat * i

fim_para

retorne fat
Fim_funcao
Var

n, resultado: inteiro

SUB-ROTINAS E PROGRAMAO COM ARQUIVOS

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

178 - 179

Incio

Escreva (Informe o nmero que deseja calcu


lar o fatorial:)

Resultado Fatorial(n)

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Fim.

Leia (n)

Escreva (O fatorial :, resultado)

Quadro 76: Pseudocdigo Algoritmo fatorial


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

Recursividade

Voc conhece algum problema recursivo? Vamos retomar o problema do


fatorial, que um exemplo clssico de recurso. A definio recursiva dada por:

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


Funo fatorial (x: inteiro):

inteiro
Incio

Se (x= 0) ento

retorne 1
seno

retorne x * fatorial (n-1)


fim_se
Fim_funcao

Quadro 77: Pseudocdigo Funo Fatorial recursiva

SUB-ROTINAS E PROGRAMAO COM ARQUIVOS

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Figura 39: Imagem recursiva

180 - 181

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.

Condio de parada

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Fatorial (1-1)
Fatorial (2-1)
Fatorial (3-1)
Fatorial (4-1)
Fatorial (5-1)
Fatorial (5)
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.

Recursividade

Funo Fibonacci (x: inteiro): inteiro


Incio

retorne x

Se (x= 0) ou (x=1) ento

seno

retorne Fibonacci(n-2) + FIbonacci (n-1)


fim_se

Quadro 78: Pseudocdigo Funo Fibonacci recursiva

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.

SUB-ROTINAS E PROGRAMAO COM ARQUIVOS

Figura 41: Arquivo

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Fim_funcao

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

182 - 183

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

Quadro 79: Pseudocdigo Estrutura do Registro

Sempre que formos trabalhar com arquivo, primeiro temos que abri-lo, para
deix-lo disponvel para leitura/gravao. A abertura realizada pelo comando
Abra( ). Considerando o exemplo de cadastro de produtos teramos: Abra
(Produto).
Trabalhando com Arquivos

SUB-ROTINAS E PROGRAMAO COM ARQUIVOS

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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

184 - 185

a posio do registro no arquivo chamado de chave. Devemos atentar para o


fato de que esse campo deve ser nico (FORBELLONE; EBERSPACHER, 2005).

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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 sub-rotina, 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.
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
Consideraes Finais

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.

SUB-ROTINAS E PROGRAMAO COM ARQUIVOS

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Na passagem de parmetros por referncia o parmetro o endereo de


memria e no o valor.

186 - 187

1. Desenvolva um cadastro de produtos que contenha cdigo, descrio, unidade


e preo para 20 produtos. Defina um menu com as seguintes opes:
1. Cadastrar os 20 registros.
2. Pesquisar um produto pelo cdigo.
3. Classificar por ordem de descrio os registros cadastrados.
4. Classificar por ordem de cdigo.
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.
Processamento: efetuar o somatrio de 1 at N.
Sada: imprimir o valor do somatrio.

Algoritmo somatorio

Funo soma (X: inteiro): inteiro


Var:

Incio

total0

retorne total

i, total: inteiro

Para i de 1 at x passo 1 faa


total total + i

fim_para

Fim_funcao
Var

n, resultado: inteiro

Escreva (Informe o nmero:)

Resultado soma(n)

Incio

Fim.

Leia (n)

Escreva (O somatrio :, resultado)

Quadro 80: Pseudocdigo Exerccio 1

188 - 189

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

Funo raiz (X: inteiro): real


Incio

retorne sqr(x)
Fim_funcao
Var

num: inteiro

resultado: real

Escreva (Informe o nmero:)

resultadoraiz(n)

Incio

Fim.

Leia (num)

Escreva (A raiz quadrada :, resultado)

Quadro 81: Pseudocdigo Exerccio 2

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.

Algoritmo raizquadrada

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


Var

Incio

numx

Se (z > num) ento

num: inteiro

Se (x > y) ento

seno

fim_se

fim_se

numy

numz

retorne num
Fim_funcao
Var

resultado, a, b, c: inteiro

Escreva (Informe o valor de A:)

Escreva (Informe o valor de B:)

Escreva (Informe o valor de C:)

resultadomaior(a, b, c)

Incio

Fim.

Leia (a)

Leia (b)

Leia (c)

Escreva (O maior valor :, resultado)

Quadro 82: Pseudocdigo Exerccio 3

4. Elabore um procedimento que receba um valor em segundos e


converta para horas, minutos e segundos.

190 - 191

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.

Algoritmo calculatempo

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


Var:

Incio

restox mod 3600

mresto/60

sresto mod 60

resto: inteiro
hx/3600

Fim_procedimento
Var

n, hora, minuto, segundo: inteiro

Escreva (Informe os segundos que deseja con


verter:)

tempo(n, hora, minuto, segundo)

Escreva (Minutos:, minuto)

Incio

Fim.

Leia (n)

Escreva (Horas:, hora)

Escreva (Segundos:, segundo)

Quadro 83: Pseudocdigo Exerccio 4

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.

Algoritmo produto

Funo reajuste (precop, percentualp: real): real


Var

Incio

valor: real


valorprecop + (precop * (percentu
alp/100))

retorne valor

Fim_funcao
Var

valor, percentual, resultado: real

Escreva (Informe o preo do produto:)

Escreva (Informe o percentual de reajuste:)

resultadoreajuste(valor, percentual)

Incio

Fim.

Leia (valor)

Leia (percentual)

Escreva (O valor reajustado :, resultado)

Quadro 84: Pseudocdigo Exerccio 5

192 - 193
192 - 193

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

Concluso
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

194 - 195

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.

Você também pode gostar