Vous êtes sur la page 1sur 236

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

NEAD - Ncleo de Educao a Distncia


Direo Operacional de Ensino
Ktia Coelho
Direo de Planejamento de Ensino
Fabrcio Lazilha
Direo de Operaes
Chrystiano Mincoff
Direo de Mercado
Hilton Pereira
Direo de Polos Prprios
James Prestes
Direo de Desenvolvimento
Dayane Almeida
Direo de Relacionamento
Alessandra Baron
Head de Produo de Contedos
Rodolfo Encinas de Encarnao Pinelli
Gerncia de Produo de Contedos
Gabriel Arajo
Superviso do Ncleo de Produo de
Materiais
Ndila de Almeida Toledo
Coordenador de contedo
Danillo Xavier Saes
Qualidade Editorial e Textual
Daniel F. Hey, Hellyery Agda
C397 CENTRO UNIVERSITRIO DE MARING. Ncleo de Educao a Design Educacional
Distncia; LEAL, Gislaine Camila Lapasini. Ndila de Almeida Toledo, Camila Zaguini Silva
Algoritmos e Lgica de programao I. Gislaine Camila
Fernando Henrique Mendes,
Lapasini Leal. Rossana Costa Giani
(Reimpresso revista e atualizada) Projeto Grfico
Maring-Pr.: UniCesumar, 2017. Jaime de Marchi Junior
236 p.
"Graduao - EaD". Jos Jhonny Coelho
Editorao
1. Algoritmos 2. Programao . 4. EaD. I. Ttulo. Thayla Daiany Guimares Cripaldi
ISBN 978-85-8084-322-4 Reviso Textual
CDD - 22 ed. 005.1 Jaquelina Kutsunugi, Keren Pardini, Maria
CIP - NBR 12899 - AACR/2 Fernanda Canova Vasconcelos, Nayara
Valenciano, Rhaysa Ricci Correa e Susana Incio
Ficha catalogrfica elaborada pelo bibliotecrio Ilustrao
Joo Vivaldo de Souza - CRB-8 - 6828 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 so-
luo de problemas com eficincia tornou-se uma
questo de sobrevivncia no mundo do trabalho.
Cada um de ns tem uma grande responsabilida-
de: as escolhas que fizermos por ns e pelos nos-
sos far grande diferena no futuro.
Com essa viso, o Centro Universitrio Cesumar
assume o compromisso de democratizar o conhe-
cimento 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 Universi-
trio Cesumar busca a integrao do ensino-pes-
quisa-extenso com as demandas institucionais
e sociais; a realizao de uma prtica acadmica
que contribua para o desenvolvimento da consci-
ncia 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 al-
meja ser reconhecido como uma instituio uni-
versitria de referncia regional e nacional pela
qualidade e compromisso do corpo docente;
aquisio de competncias institucionais para
o desenvolvimento de linhas de pesquisa; con-
solidao da extenso universitria; qualidade
da oferta dos ensinos presencial e a distncia;
bem-estar e satisfao da comunidade interna;
qualidade da gesto acadmica e administrati-
va; compromisso social de incluso; processos de
cooperao e parceria com o mundo do trabalho,
como tambm pelo compromisso e relaciona-
mento permanente com os egressos, incentivan-
do a educao continuada.
Seja bem-vindo(a), caro(a) acadmico(a)! Voc est
iniciando um processo de transformao, pois quan-
do investimos em nossa formao, seja ela pessoal
ou profissional, nos transformamos e, consequente-
Diretoria de
mente, transformamos tambm a sociedade na qual
Planejamento de Ensino
estamos inseridos. De que forma o fazemos? Criando
oportunidades e/ou estabelecendo mudanas capa-
zes de alcanar um nvel de desenvolvimento compa-
tvel com os desafios que surgem no mundo contem-
porneo.
O Centro Universitrio Cesumar mediante o Ncleo de
Diretoria Operacional
Educao a Distncia, o(a) acompanhar durante todo
de Ensino
este processo, pois conforme Freire (1996): "Os homens
se educam juntos, na transformao do mundo".
Os materiais produzidos oferecem linguagem dial-
gica e encontram-se integrados proposta pedag-
gica, contribuindo no processo educacional, comple-
mentando sua formao profissional, desenvolvendo
competncias e habilidades, e aplicando conceitos
tericos em situao de realidade, de maneira a inse-
ri-lo no mercado de trabalho. Ou seja, estes materiais
tm como principal objetivo "provocar uma aproxi-
mao entre voc e o contedo", desta forma possi-
bilita o desenvolvimento da autonomia em busca dos
conhecimentos necessrios para a sua formao pes-
soal e profissional.
Portanto, nossa distncia nesse processo de cres-
cimento e construo do conhecimento deve ser
apenas geogrfica. Utilize os diversos recursos peda-
ggicos que o Centro Universitrio Cesumar lhe possi-
bilita. Ou seja, acesse regularmente o AVA Ambiente
Virtual de Aprendizagem, interaja nos fruns e en-
quetes, assista s aulas ao vivo e participe das discus-
ses. 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 tranqui-
lidade e segurana sua trajetria acadmica.
AUTOR

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 ni-
ca 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 algorit-
mos. 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 apren-
dizado de algoritmos e lgica de programao. Em cada unidade construiremos algorit-
mos 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 va-
riveis, 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, aninhada e es-
trutura 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 des-
vios 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 reescre-
ver 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.
APRESENTAO

A Unidade IV trata sobre as estruturas de dados homogneas e heterogneas, as


quais permitem agrupar diversas informaes em uma nica varivel. Em relao
s estruturas de dados homogneas unidimensionais (vetores) e multidimensionais
(matrizes) estudaremos como realizar a atribuio de valores, leitura, entrada e sada
de dados neste tipo de estrutura. Conheceremos mtodos que nos permitem clas-
sificar 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 procedi-
mento 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 recur-
so. Trataremos, tambm, o conceito de arquivos, modos de concepo e como ma-
nipul-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 momen-
to de reflexo denominado REFLITA, que permite que voc pense com calma sobre
um determinado subtema. importante que voc desenvolva as atividades de au-
toestudo, pois o momento que voc tem para colocar em prtica os conhecimen-
tos 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
SUMRIO

UNIDADE II

ESTRUTURA CONDICIONAL

57 Introduo

58 Estrutura Condicional

59 Estrutura Condicional Simples

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


10 - 11

SUMRIO

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

140 Mtodo Sequencial

142 Matrizes

145 Estruturas de Dados Heterogneas

146 Registros

151 Problema

154 Consideraes Finais


SUMRIO

UNIDADE V

SUB-ROTINAS E PROGRAMAO COM ARQUIVOS

165 Introduo

166 Sub-Rotinas

167 Procedimentos

171 Escopo de Variveis

172 Passagem de Parmetros

178 Funes

179 Recursividade

182 Trabalhando com Arquivos

185 Consideraes Finais

193 CONCLUSO
195 REFERNCIAS
Professora Me. Gislaine Camila Lapasini Leal

I
UNIDADE
CONCEITOS BSICOS

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

INTRODUO

Nesta unidade voc aprender os princpios bsicos de algoritmos e lgica de pro-


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

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 informa-
es para a construo de algoritmos.
Ao formular algoritmos precisamos guardar algumas informaes do pro-
blema. 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 ques-
tes 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 vari-
vel devo utilizar? Como exibo um resultado ao usurio? Qual o resultado da
simulao do algoritmo?

Introduo
I

Alm disto, voc aprender os conceitos de variveis, constantes, expresses, fun-


es, atribuio, comando de entrada, comando de sada e tcnicas de raciocnio
lgico para a soluo de problemas. Todo esse conhecimento voc poder utili-
zar para construir os primeiros algoritmos que resolvem problemas! Vamos l?!

CONCEITUANDO ALGORITMOS

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Para dar incio a nossa disciplina de Algoritmos e Lgica de Programao I pre-
cisamos 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 pro-
gramao. 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 algo-
ritmo nada mais do que um conjunto de passos que
resolvem um determinado problema. Isto quer dizer
que empiricamente j conhecemos diversos algorit-
mos. Tomemos como exemplo o problema de ir para
o trabalho (Quadro 1)

shutterstock

CONCEITOS BSICOS
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
7. Tomar caf da manh
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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 ins-
trues. 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, tro-
camos 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
I

A sequncia de passos a ser seguida para realizar uma ligao telefnica apre-
sentada no Quadro 3.

1. Inserir o nmero
2. Apertar o boto para fazer ligao
3. Esperar atender
4. Falar no telefone
5. Apertar o boto para desligar ligao

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


samos 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 lingua-
gem de programao (C, Pascal, Java, Fortran etc.) (ZIVIANE, 2004; SALVETTI;
BARBOSA, 2004).

CONCEITOS BSICOS
18 - 19

COMO CONSTRUIR ALGORITMOS

Sabemos que a construo de algoritmos requer prtica. Para facilitar nosso pro-
cesso de aprendizagem. Ascencio e Campos (2010) descrevem alguns passos que
devemos seguir, sendo eles:
Compreender o problema: definir qual o objetivo do algoritmo.
Definir as informaes de entrada: que informaes precisamos obter
do usurio.
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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


I

interpretaes e dificultar a converso do algoritmo em um programa de com-


putador (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 deve-
mos somar.
Processamento: efetuar a operao de soma com os dois nmeros obtidos.

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
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 utiliza-
dos para construir o fluxograma so apresentados no Quadro 6.

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

Representa a sada de dados.


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

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


blema 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 por-
tugol ou portugus estruturado, que consiste em representar o problema por
meio de regras pr-definidas. uma linguagem restrita que descreve o signifi-
cado 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 espe-
cfico. Notem que todo algoritmo possui um nome e uma sequncia finita,
sendo delimitado por um incio e por um fim.

Tipos de Algoritmos
I

Algoritmo soma
Var n1, n2, s: inteiro
Incio
Leia n1, n2
sn1 + n2
Escreva(s)
Fim.

Quadro 7: Pseudocdigo Algoritmo Soma

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

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
a passagem do algoritmo para o programa quase imediata, bastando conhe-
cer as palavras reservadas da linguagem, conforme destaca Ascencio e Campos
(2010). A desvantagem est relacionada ao fato de ter que aprender as regras do
pseudocdigo.

ESTUDANDO VARIVEIS

Para elaborar algoritmos precisamos guardar algumas informaes e para isto


utilizamos as variveis. Uma varivel um espao na memria principal do com-
putador 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, carac-
tere, 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 arma-
zenado 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.

CONCEITOS BSICOS
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998. 22 - 23

shutterstock

importante ter cincia de que a varivel armazena apenas um contedo por


vez. Na Figura 3, nossa caixa denominada Idade recebe uma sequncia de valo-

x
res 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.
25 casa
As variveis so definidas logo no
incio do algoritmo para que a rea Idade Idade
na memria seja alocada. A defini-
Figura 2: Varivel
o de variveis realizada utilizando
Fonte: a autora
o comando VAR, primeiro definimos o
nome e, em seguida, o tipo, do seguinte modo:
Var <nome da varivel> : <tipo da varivel> 36
Ao declarar variveis devemos tomar alguns cuidados: a 13
palavra VAR usada uma nica vez na definio de vari-
60
veis; mais de uma varivel do mesmo tipo pode ser definida
em uma mesma linha, basta separar cada uma delas por
25
vrgula; e, se h diferentes tipos de variveis, cada tipo
deve ser declarado em linhas diferentes. Idade
Os identificadores so os nomes das variveis, pro-
Figura 3: Varivel
gramas, rotinas, constantes etc. Para nomear esses Fonte: a autora

Estudando Variveis
I

identificadores devemos seguir algumas regras (ASCENCIO; CAMPOS, 2010):


O nome deve iniciar SEMPRE com letra. Isto indica que nossas variveis
podem ser chamadas de media, altura, idade, cidade. Mas, no pode ser
2cidade, 4x etc.
O nome no pode conter espaos, ou seja, no podemos denominar uma
varivel de altura media.
O nome no pode conter caracteres especiais ($, #, @, ?, !, *).
Nenhuma palavra reservada poder ser nome de varivel. As palavras

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
reservadas tm uso especfico no pseudocdigo. Alguns exemplos so:
Var, tipo, incio, fim, se, ento, seno, enquanto, repita, faa, caso, at,
procedimento, funo e outros. No se assuste com todos esses termos,
iremos v-los no decorrer desta unidade e com a prtica logo voc estar
familiarizado com todos eles.

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


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

IDENTIFICADORES VLIDOS IDENTIFICADORES INVLIDOS


A 2
a 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
24 - 25

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

Var
Idade : Inteiro

Outro tipo de varivel numrica a real, que armazena componentes deci-


mais 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 con-
junto 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 alo-
carmos 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 arma-
zenar 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
I

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 com-
primento corresponde ao nmero de caracteres que a varivel possui. Ao declarar
uma varivel do tipo caractere podemos definir o tamanho mximo de caracte-

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
res que ela poder armazenar, para tanto basta inserir o tamanho entre colchetes.
A declarao de uma varivel do tipo caractere realizada da seguinte forma:
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 realiza-
mos 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 cons-
tantes devem ser definidas no incio do algoritmo. O comando utilizado para
definir constantes o CONST e sua definio dada por:

CONST

CONCEITOS BSICOS
26 - 27

<nome da constante> = <valor>

EXPRESSES

De acordo com Lopes e Garcia (2002), as expresses esto diretamente relacio-


nadas ao conceito de frmula matemtica, em que um conjunto de variveis e
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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 num-
ricas (inteiro e real) podem ser utilizados em expresso desse tipo.
O Quadro 9 apresenta os operadores aritmticos, destacando suas repre-
sentaes, 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 OPERADOR SIGNIFICADO PRIORIDADE

Utilizado para efetuar a soma de duas


ou mais variveis. Dada uma varivel
Soma + 4
A e outra B, temos que a soma delas
representada por A + B.
Simboliza a subtrao do valor de
duas variveis.
Subtrao - 4
Supondo uma varivel A e B, a diferen-
a entre elas dada por: A - B.
O produto entre duas variveis A e B
Multiplicao * 3
representado por A * B.
A diviso entre duas variveis A e B
dada por:
Diviso / A/B. Em relao diviso importante 3
lembrar que no existe diviso por
zero.

Expresses
I

OPERAO OPERADOR SIGNIFICADO PRIORIDADE

representada por ** mais o


nmero que se quer elevar. Se qui-
Exponenciao ** sermos elevar o valor da varivel A 2
ao quadrado, representamos por:
A ** 2.
Usado quando se deseja encontrar
o resto da diviso entre duas vari-
veis A e B. A
Resto mod 2
representao dada por A mod
B. Supondo A = 3 e B = 2, temos

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
que A mod B = 1.
Representa o quociente da diviso
entre dois nmeros. Tomando
Diviso inteira div 2
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 pos-
svel 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
28 - 29

Operador Smbolo Explicao Prioridade

Disjuno OU A disjuno entre duas variveis resulta em um valor 3


verdadeiro quando pelo menos uma das variveis
verdadeira.
Conjuno E A conjuno entre duas variveis resulta em um valor 2
verdadeiro somente quando as duas variveis so
verdadeiras.
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Negao NO A negao inverte o valor de uma varivel. Se a varivel A 1


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 conte-
do 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 reali-
zada 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 prece-
dncia de operadores na seo Construindo Algoritmos.

Expresses
I

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.

Funo Objetivo

ABS(varivel) Retorna o valor absoluto de um nmero qualquer.

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

ATRIBUIO

J sabemos o que so variveis, quais os tipos de variveis e expresses que pode-


mos associar a elas, agora precisamos entender como armazenar um dado em
uma varivel. A atribuio consiste no processo de fornecer um valor a uma vari-
vel, 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
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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
I

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 disponibi-
liza por meio de um dispositivo de sada (monitor ou impressora).
A sintaxe do comando de sada :
escreva <varivel> ou <literal>

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


que ao estamos esperando ou enviar resultados dos dados processados. Um

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
literal deve ser escrito sempre entre aspas, por exemplo:
Escreva "Estou estudando Algoritmos e Lgica de Programa-
o I"

Podemos imprimir diversas variveis ou combinar variveis com literais em


um nico comando, basta separ-las por vrgula. Por exemplo:
Escreva "A idade :", idade
Escreva n1, "x", n2, " igual a", produto

CONSTRUINDO ALGORITMOS

J vimos o conceito de variveis, constantes,


expresses, conhecemos os operadores, fun-
es, comandos de atribuio, entrada e sada
de dados. Nesta seo reuniremos todos esses
conhecimentos na construo de algoritmos.
shutterstock

CONCEITOS BSICOS
32 - 33

PROBLEMA 1

Formular um algoritmo que leia e apresente as seguintes informaes de uma


pessoa: nome, idade, peso, altura e telefone.
Antes de partir para a elaborao do algoritmo dividiremos o problema tal
como aprendemos na seo "COMO CONSTRUIR ALGORITMOS", em obje-
tivo do algoritmo, entrada, processamento e sada. Deste modo, temos que:
Objetivo do algoritmo: ler e apresentar o nome, idade, peso, altura e tele-
fone de uma pessoa.
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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 deve-
mos 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 tele-
fone. Desta forma, temos uma varivel associada a cada um. Sabemos que idade,
peso e altura so variveis numricas, sendo que a idade inteiro e os demais
real. Para armazenar o nome e telefone, uma informao literal, utilizaremos a
varivel do tipo caractere.
Iniciando a formulao do algoritmo, temos que ele precisa de um nome o
qual denominaremos de problema1. Portanto, a primeira linha ser:
Algoritmo problema

Em seguida, temos a declarao das variveis, que dada por:


Var
Idade : inteiro
Peso, altura : real
Nome : caractere[50]
Telefone : caractere[15]

Construindo Algoritmos
I

Note que as variveis do mesmo tipo podem ser declaradas na mesma linha,
como o caso de peso e altura. Se as variveis do tipo caractere tivessem o mesmo
tamanho poderamos declar-las de modo anlogo. Declarar como caractere[50]
indica que o tamanho mximo que a varivel ir armazenar de 50 caracteres.
Todo algoritmo delimitado pela instruo de Incio, logo:
Incio

Na entrada de dados precisamos obter as informaes definidas por meio do


comando leia. No entanto, importante enviar sempre uma mensagem infor-
mando ao usurio que dado est sendo solicitado, deste modo utilizamos o

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
comando escreva. Com isto, temos:
Escreva ("Informe o nome:")
Leia (nome)
Escreva ("Informe a idade:")
Leia (idade)
Escreva ("Informe o peso:")
Leia (peso)
Escreva ("Informe a altura:")
Leia (altura)
Escreva ("Informe o telefone:")
Leia (telefone)

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


escreva:
Escreva ("O nome :", nome)
Escreva ("A idade :", idade)
Escreva ("O peso :", peso)
Escreva ("A altura :", altura)
Escreva ("O telefone :", telefone)

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


Fim.

O algoritmo inteiro apresentado no Quadro 13. Observe que as palavras


destacadas (negrito) so palavras reservadas, ou seja, no podemos utiliz-las
como nome de varivel, constante, algoritmo e outros.

CONCEITOS BSICOS
34 - 35

Algoritmo problema1
Var
Idade : inteiro
Peso, altura : real
Nome : caractere[50]
Telefone : caractere[15]
Incio
Escreva ("Informe o nome:")
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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

Quadro 13: Pseudocdigo - Problema1

O resultado da execuo do algoritmo apresentado no Quadro 14.

Construindo Algoritmos
I

Informe o nome: Maria da Silva


Informe a idade: 30
Informe o peso: 60.3
Informe a altura: 1.58
Informe o telefone: 3011-1212
O nome : Maria da Silva
A idade : 30
O peso : 60.3

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
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 qua-
tro ngulos retos. Elabore um algoritmo para calcular L
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 L
dos quatro lados (pontilhado). Figura 4: Quadrado
No iremos elaborar o pseudocdigo diretamente, Fonte: a autora

primeiro vamos dividir o problema tal como aprendemos na seo "COMO


CONSTRUIR ALGORITMOS", em objetivo do algoritmo, entrada, processa-
mento e sada. Com isso, temos que:
Objetivo do algoritmo: calcular o permetro e rea de um quadrado.

CONCEITOS BSICOS
36 - 37

Entrada: para calcular o permetro e a rea precisamos saber qual o com-


primento do lado do quadrado, ou seja, temos que saber o valor de l.
Processamento: clculo do permetro e da rea. O permetro (P) a
soma dos quatro lados, pode ser representado por P = 4 x l. A rea (A)
dada por A = l x l.
Sada: informar o valor do permetro (P) e o valor da rea (A).

Essa estruturao facilita o entendimento sobre o problema, tornando explcitas


as informaes que precisamos, o que devemos fazer e que resultado devemos
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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, pode-
mos 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 nme-
ros, 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
I

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 limi-
tes. Portanto:
Incio

Na entrada de dados precisamos obter o valor do lado (L), portanto utilizamos


o comando leia. importante fornecer ao usurio uma mensagem informando
qual ao esperada antes de utilizar o comando leia. Com isso, temos:

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


tado da expresso que definimos.
Passamos pela entrada e processamento, agora temos que informar o resul-
tado, 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 pode-
mos utiliz-las para nomear os identificadores (programas, variveis, constantes
e outros).

CONCEITOS BSICOS
38 - 39

Algoritmo quadrado
Var
L,A,P: real
Incio
Escreva("Informe o valor do lado do quadrado:")
Leia(L)
AL*L
P4*L
Escreva("O permetro :", P)
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Escreva("A rea :", A)


Fim.

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


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

Construindo Algoritmos
I

PROBLEMA 3

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

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

Algoritmo salario

Var

htrabalhadas, hextra, vhora, sbruto,

inss, fgts, sliquido: real

phoraextra: inteiro

Const

phoraextra = 100

Incio

Escreva("informe o nmero de horas trabalhadas:")


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

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

Escreva("o salrio bruto :", sbruto)

Escreva("O salrio lquido:", sliquido)

Escreva("O INSS :", inss)

Escreva("O FGTS :", fgts)

Fim.

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, primei-
ramente realizada a operao que est dentro deles e, em seguida, as demais,

Construindo Algoritmos
I

observando tambm a precedncia.


Vamos tomar como exemplo os seguintes valores para a entrada de dados: Horas
trabalhadas = 20, horas extras = 5 e valor da hora = 10. Substituindo esses valo-
res na expresso para clculo do salrio bruto teramos que:
sbruto (20 + 5*(1+(100/100)))*10

Para facilitar o entendimento acompanhe a resoluo deste clculo fazen-


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

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

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

sentado no Quadro 18.


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

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 pas-
sos para realizar uma tarefa.
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Entendemos o processo de anlise de problemas, que consiste na diviso


do problema em trs partes: Entrada (dados que precisamos solicitar ao usu-
rio), 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 compreen-
so 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 vari-
veis numricas (inteiro e real), lgicas (boolean) e literais (caractere).
Em relao s regras para nomear identificadores (nomes das variveis, pro-
gramas, 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 aque-
las que possuem uso especfico no pseudocdigo, tais como: var, tipo, incio, fim,
se, ento, seno, enquanto, repita, faa, caso, at, procedimento, funo, e outros.

Consideraes Finais
I

Estudamos as expresses e os operadores aritmticos (soma, subtrao, divi-


so, multiplicao, exponenciao, diviso inteira e resto), relacionais (igual,
diferente, maior, menor que, maior ou igual a, menor ou igual a) e lgicos (con-
juno, disjuno e negao) que utilizamos em sua construo. No que se refere
aos operadores lgicos, a conjuno retorna verdadeiro somente se as duas vari-
veis 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, lem-

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
brando 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 utiliza-
mos o comando de sada escreva.
Por fim, colocamos em prtica a construo de alguns algoritmos utilizando
pseudocdigo. Na construo desses algoritmos aplicamos os conceitos aprendi-
dos no decorrer desta unidade. importante que agora voc pratique um pouco
sozinho fazendo as atividades de autoestudo. No se esquea de dividir o pro-
blema em Entrada-Sada-Processamento para facilitar a construo do algoritmo.

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


em:
<http://www.techtudo.com.br/platb/desenvolvimento/2011/06/20/histo-
ria-da-programacao-como-tudo-comecou/>.
Para entender melhor como elaborar o teste de mesa ou simulao de um
algoritmo.
Veja: <http://www.univasf.edu.br/~marcelo.linder/arquivos_ap/material_
semestre_passado/teorica/aula4.pdf>.
O aprendizado de algoritmos exige prtica. No se pode aprender copiando
ou simplesmente olhando.

CONCEITOS BSICOS
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 incor-
retos. 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
3. Elabore um algoritmo que leia, calcule e escreva a mdia aritmtica entre quatro
nmeros.
4. Formule um algoritmo para ler um nmero positivo qualquer e apresentar o
quadrado e a raiz quadrada deste nmero. Dica: utilize as funes apresentadas.
5. Analise os algoritmos abaixo e escreva o resultado de sua execuo.

Algoritmo exe5a Algoritmo exe5a


Var Var
A,B,C: inteiro A,B,C: inteiro
Incio 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
Incio
Escreva ("Informe um nmero inteiro:")
Leia (num)
Escreva ("O antecessor :", num -1)
Escreva ("O nmero :", num )
Escreva ("O sucessor :", num +1)
Fim.

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
Incio
Escreva ("Informe a base do tringulo:")
Leia (base)
Escreva ("Informe a altura do tringulo:")
Leia (altura)
area (base * altura)/2
Escreva ("A rea do tringulo :", area)
Fim.

Quadro 20: Pseudocdigo Exerccio 2

3. Construa um algoritmo que leia o preo de um produto, o percentual de descon-


to 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
Inicio
Escreva ("informe o preo do produto:")
Leia(preco)
Escreva("Informe o percentual do desconto:")
Leia(pdesconto)
Vdesconto (preco*pdesconto)/100
Vpagar preco vdesconto
Escreva ("O valor a pagar :", vpagar)
Escreva ("O valor do desconto :", vdesconto)
Fim.

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) fatu-
ramento 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 loca-
dora de livros.
Entrada: ler a quantidade de livros e o valor do aluguel.
Processamento: calcular o faturamento mensal considerando que todos os li-
vros 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: inteiro
Incio
Escreva("Informe a quantidade de livros:")
Leia(qidade)
Escreva("Informe o valor da locao:")
Leia(valor)
fmensal qidade*valor
fanual ((qidade*0,8)*valor)*12
Escreva("O faturamento mensal de:", fmensal)
Escreva("O faturamento anual considerando
a locao de 80% dos livros :", fanual)
Fim.

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 pro-
fessor.
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
Incio
Escreva ("informe o valor da hora aula:")
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
Escreva ("O valor do salrio bruto :", sbruto)
Escreva("O valor do salrio lquido :", sliquido)
Fim.

Quadro 23: Pseudocdigo Exerccio 5

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


Objetivo do algoritmo: calcular a rea e o permetro de um crculo.
Entrada: ler o valor do raio.
Processamento: calcular a rea que dada por: e permetro que
dado por .
Sada: imprimir o valor da rea e do permetro.
50 - 51

Algoritmo circulo
Var
area, perimetro, raio: real
Incio
Escreva("Informe o valor do raio:")
Leia(raio)
perimetro 2 * Pi * r
area Pi * (sqr(raio))
Escreva ("A rea :", area)
Escreva ("O permetro :", perimetro)
Fim.

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.
Algoritmo funcoes
Var
raiz: real
num, quadrado: inteiro
Incio
Escreva("Informe um nmero inteiro:")
Leia(num)
Raiz sqrt(num)
Quadrado sqr(num)
Escreva ("A raiz quadrada :", raiz)
Escreva ("A O nmero elevado ao quadrado :", quadrado)
Fim.

Sada: imprimir raiz quadrada e o valor do nmero elevado ao 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
Professora Me. Gislaine Camila Lapasini Leal

II
UNIDADE
ESTRUTURA CONDICIONAL

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 aninhada
Estrutura de deciso mltipla
56 - 57

INTRODUO

Nesta unidade voc estudar a estrutura condicional conhecendo a estrutura


condicional simples, composta, aninhada e de deciso mltipla. Com os conhe-
cimentos adquiridos na Unidade I conseguamos construir algoritmos que a
partir da entrada, os dados eram processados e apresentavam algumas infor-
maes 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 con-
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

dies para a execuo das instrues. Se pararmos para pensar em diversas


situaes temos que realizar uma verificao, analisar o resultado desta verifica-
o 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 con-
ceitos de variveis, tipos de variveis, constantes, comando de atribuio, entrada
e sada de dados. Precisamos de uma estrutura que nos permita impor condi-
es 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 pode-
mos 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 com-
posta 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 rela-
cionais 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 revisa-
remos 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.

ESTRUTURA CONDICIONAL

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
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 necessi-
tamos 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 sele-
o 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 exe-
cutar 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
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>
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
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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 pri-
meira 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 execu-
tada a instruo entre o se e o fim_se.

Algoritmo exemplo
Var
A : inteiro
Incio
Leia (A)
Se (A > 10) ento
Escreva ("A maior que 10")
Fim_se
Fim.

Quadro 26: Pseudocdigo - Exemplo Estrutura Condicional Simples

Estrutura Condicional Simples


II

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

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
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 fal-
sas, como pode ser visualizado no Quadro 28.

ESTRUTURA CONDICIONAL
60 - 61

OPERADOR OU
Condio 1 Condio 2 Resultado
Verdadeiro Verdadeiro Verdadeiro
Verdadeiro Falso Verdadeiro
Falso Verdadeiro Verdadeiro
Falso Falso Falso
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


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

resultado lgico. Segundo Manzano (2000), esse operador utilizado em situ-


aes em que se necessita estabelecer que uma dada condio deve no ser
verdadeira ou deve no ser falsa. A tabela verdade para este operador apre-
sentada no Quadro 29. Observe que o NO um operador unrio, ou seja, tem
apenas uma condio.

OPERADOR NO
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 relacio-


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

O que um nmero par? Um nmero par um nmero inteiro mltiplo de 2,

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
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 denomi-
naremos 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 pode-
mos visualizar o uso da estrutura condicional simples.

algoritmo par
Var
n, resto, metade:inteiro
Incio
Escreva("Digite um nmero")
Leia(n)
resto n mod2
Se(resto=0)ento
Escreva("A metade do nmero",metade)
Fim_se
Fim.

Quadro 30: Pseudocdigo - Algoritmo Par

ESTRUTURA CONDICIONAL
62 - 63

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


variveis, atribuio, comando de entrada e sada de dados), agregando a estru-
tura 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 nor-
malmente, sendo executada instruo a instruo.
Por que a varivel metade foi declarada como inteira e no como real? A
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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 dessa varivel denominada metade? E a varivel resto? No, pode-
mos 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
Incio
Escreva ("Digite um nmero:")
Leia (n)
Se (n mod 2 = 0) ento
Escreva ("A metade do nmero :", n/2)
Fim_se
Fim.

Quadro 31: Pseudocdigo - Algoritmo Par

Estrutura Condicional Simples


II

ESTRUTURA CONDICIONAL COMPOSTA

Na estrutura condicional composta realizada a avaliao de uma nica expres-


so 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 instru-
es entre o seno e o fim_se (MANZANO; OLIVEIRA, 1997).
A sintaxe da estrutura condicional composta :
Se (<Condio>) ento

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
<instrues para condio verdadeira>
Seno
<instrues para condio falsa>
fim_se

Agora que voc conhece a estrutura condicional composta, podemos cons-


truir 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
Incio
Escreva ("Digite um nmero:")
Leia (n)
Se (n mod 2 = 0) ento
Escreva ("O nmero par")
Seno
Escreva ("O nmero mpar")
Fim_se
Fim.

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

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 expres-
ses 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
Incio
Escreva ("Digite um nmero inteiro:")
Leia (n)
Se (n > 20) e (n < 90) ento
Escreva ("O nmero est na faixa entre 20 e 90")

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
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 expres-
ses 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 expres-
so temos 20 < 90, que resulta em verdadeiro. Essas expresses esto unidas pelo

ESTRUTURA CONDICIONAL
66 - 67

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

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 uti-
lizada 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, esta-
belecer 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 relacio-
nais 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.

Algoritmo maior

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Var
a, b, c, max: inteiro
Incio
Escreva ("Digite o primeiro nmero inteiro:")
Leia (a)
Escreva ("Digite o segundo nmero inteiro:")
Leia (b)
Escreva ("Digite o terceiro nmero inteiro:")
Leia (c)
Se (a > b) ento
Se (a > c) ento
max a
Seno
max c
Fim_se
seno
Se (b>c) ento
max b
seno
max c
Fim_se
Fim_se
Escreva("O maior nmero :", max)
Fim.

Quadro 36: Pseudocdigo - Algoritmo maior

ESTRUTURA CONDICIONAL
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 repre-
sentam 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 relacio-
nal falso. Note que tanto no trecho 1 quanto no trecho 2, temos outra estrutura
condicional, representada
pelos trechos 3 e 4. A estru- Se (a > b) ento
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

tura condicional do trecho


Se ( a > c) ento
3 s executada se A > B max a
resultar em verdadeiro. Em 1 3 seno
seguida, verificado se A max c
> C, em caso verdadeiro fimse
executada a instruo em seno
que atribudo o valor de
A para a varivel max. Se A Se ( b > c ) ento
> C for avaliado como falso max b
executada a instruo em
2 4 seno
max c
que o valor de C atribu-
fimse
do para a varivel max.
Podemos resolver o fimse
Figura 5: Estrutura condicional aninhada
problema de encontrar o
maior nmero dentre trs nmeros sem utilizar a estrutura condicional ani-
nhada? 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
Incio
Escreva ("Digite o primeiro nmero inteiro:")
Leia (a)
Escreva ("Digite o segundo nmero inteiro:")
Leia (b)

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Escreva ("Digite o terceiro nmero inteiro:")
Leia (c)
Se (a > c) ento
Se (a > b) ento
max a
Seno
max b
Fim_se
seno
se (c > max) ento
max c
Fim_se
Fim_se
Escreva("O maior nmero :", max)
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, exe-
cutar um menor nmero de passos para chegar soluo do problema.

ESTRUTURA CONDICIONAL
70 - 71

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

caso <varivel>
seja <valor 1> faa <instruo 1>
seja <valor 2> faa <instruo 2>
seja <valor 3> faa <instruo 3>
seno < instruo >
Fim_caso

Nesta estrutura o termo <variavel> 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 con-
siste 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 bas-
tante 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.

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Algoritmo Ms
Var
num: inteiro
Incio
Escreva ("Digite um nmero de 1 a 12:")
Leia (num)
Caso (num)
Seja 1 faa Escreva ("Janeiro")
Seja 2 faa Escreva ("Fevereiro")
Seja 3 faa Escreva ("Maro")
Seja 4 faa Escreva ("Abril")
Seja 5 faa Escreva ("Maio")
Seja 6 faa Escreva ("Junho")
Seja 7 faa Escreva ("Julho")
Seja 8 faa Escreva ("Agosto")
Seja 9 faa Escreva ("Setembro")
Seja 10 faa Escreva ("Outubro")
Seja 11 faa Escreva ("Novembro")
Seja 12 faa Escreva ("Dezembro")
Seno Escreva ("Ms invlido")
Fim_caso
Fim.

Quadro 38: Pseudocdigo - Algoritmo ms

ESTRUTURA CONDICIONAL
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 pro-
grama. Lembre-se no podemos ter nome de identificados
(varivel, constante, programa, rotinas e outros) repetidos.
Ainda analisando o algoritmo que utiliza a estrutura de deci-
photos
so mltipla, voc acha que podemos escrev-lo de outra forma?
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Como ficaria o algoritmo se utilizssemos apenas a estrutura condicional simples?


H pelo menos mais duas formas de resolv-lo utilizando a estrutura condi-
cional 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
Incio
Escreva ("Digite um nmero de 1 a 12:")
Leia (num)
Se (num = 1) ento
Escreva ("Janeiro")
Fim_se
Se (num = 2) ento
Escreva ("Fevereiro")
fim_se
Se (num = 3) ento
Escreva ("Maro")
Fim_se
Se (num = 4) ento
Escreva ("Abril")
Fim_se

Estrutura de Deciso Mltipla


II

Se (num = 5) ento
Escreva ("Maio")
Fim_se
Se (num = 6) ento
Escreva ("Junho")
Fim_se
Se (num = 7) ento
Escreva ("Julho")

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Fim_se
Se (num = 8) ento
Escreva ("Agosto")
Fim_se
Se (num = 9) ento
Escreva ("Setembro")
Fim_se
Se (num = 10) ento
Escreva ("Outubro")
Fim_se
Se (num = 11) ento
Escreva ("Novembro")
Fim_se
Se (num = 12) ento
Escreva ("Dezembro")
Fim_se

Se (num < > 1 ) e (num < > 2) e (num < >3) e (num <
>4) e (num < >5) e (num< >6) e (num< >7) e (num< >8) e (num
< > 9) e (num < > 10) e (num< >11) e (num< >12) ento
Escreva ("Ms invlido")
fim_se
Fim.

Quadro 39: Pseudocdigo - Algoritmo ms

ESTRUTURA CONDICIONAL
74 - 75

Os algoritmos apresentados no Quadro 38 e Quadro 39 so soluo para o pro-


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

cientes. 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 efi-
cincia 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 aninhada ou de escolha ml-
tipla, 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 determi-
nada 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 condicio-
nal 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 verda-
deira. A sintaxe dessa estrutura sintaxe dada por:

Consideraes Finais
II

Se (<Condio>) ento
<instrues para condio verdadeira>
fim_se

Na estrutura condicional composta vimos que realizada a avaliao de


uma nica condio. No entanto, temos dois caminhos para seguir, um quando
o resultado da instruo verdadeiro e outro quando falso. A sintaxe da estru-
tura condicional composta :
Se (<Condio>) ento
<instrues para condio verdadeira>

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Seno
<instrues para condio falsa>
fim_se

Aprendemos que a estrutura aninhada usada quando temos que estabe-


lecer 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 estru-
tura 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 rela-


cionais 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 concei-
tos aprendidos e, tambm, discutimos que estrutura condicional mais adequada
para cada situao. Como o aprendizado de algoritmos requer prtica, impor-
tante que voc faa as atividades de autoestudo para exercitar o raciocnio lgico.

ESTRUTURA CONDICIONAL
76 - 77

Para facilitar a leitura de um algoritmo, normalmente so adicionados es-


paos em branco no incio de um bloco de comandos para mostrar quais
instrues esto dentro dele, a este recurso denominamos identao. Para
saber um pouco mais, leia o contedo disponvel em:
<http://pt.wikipedia.org/wiki/Indenta%C3%A7%C3%A3o>.
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Na soluo de um problema fundamental estudar as vrias opes de al-


goritmos a serem utilizados, pois os aspectos de tempo e espao so con-
sideraes 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 nega-
tivos.
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 in-


forme 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 cal-
cule o valor que pode ser concedido ao cliente e imprima-o. Os clientes com sal-
do 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]
Incio
Escreva ("Digite o nome:")
Leia (nome)
Escreva ("Digite a idade:")
Leia (idade)
Se (idade > = 65) ento
Escreva ("Idoso")
Seno
Se (idade < 18) ento
Escreva ("Menor de idade")
Seno
Escreva ("Maior de idade")
Fim_se
Fim_se
Fim.

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 facul-
tativo).
Sada: escrever a classe eleitoral.
Algoritmo classeeleitoral
Var
idade: inteiro
Incio
Escreva ("Digite a idade:")
Leia (idade)
Se (idade < 16) ento
Escreva ("No eleitor")
Seno
Se (idade > 65) ou (idade < 18) ento
Escreva ("Eleitor facultativo")
Seno
Escreva ("Eleitor obrigatrio")
Fim_se
Fim_se
Fim.

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 exces-
so 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
Incio
Escreva ("Digite o peso:")
Leia (peso)
Escreva ("Digite a altura:")
Leia (altura)
imc peso/sqr(altura)
Se (imc < 20) ento
Escreva ("Abaixo do peso")
Seno
Se (imc <= 25) ento
Escreva ("Normal")
Seno
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
1 Servios gerais 50%
2 Vigia 30%
3 Recepcionista 25%
4 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
Incio
Escreva ("Digite a cargo:")
Leia (cargo)
Escreva ("Digite a salario:")
Leia (salario)
Se (cargo = 1) ento
Escreva ("Cdigo do cargo:", cargo)
Escreva ("Servios gerais")
aumento salario*(50/100)
reajuste salario+aumento
Escreva ("O aumento de:", aumento)
Escreva ("O novo salrio :", reajuste)
Seno
Se (cargo = 2) ento
Escreva ("Digite a cargo:", cargo)
82 - 83

aumento salario*(30/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*(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 existe raiz real; se = 0 existe uma raiz real que dada por x = (- b ; se > 0
(

existem duas razes reais 2xa

-b + e -b -
x1 = 2xa x1 = 2xa
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.
84 - 85

Algoritmo raiz
Var
a, b, c, delta, x1, x2: real
Incio
Escreva ("Digite o valor de a:")
Leia (a)
Escreva ("Digite o valor de b:")
Leia (b)
Escreva ("Digite o valor de c:")
Leia (c)
Se (a = 0) ento
Escreva ("No uma equao do segundo grau")
Seno
delta <- sqr (b) - 4 * a * c
Se (delta < 0) ento
Escreva ("No existe raiz real")
Seno
Se (delta = 0) ento
Escreva ("Existe raiz real")
x1 <- (-b) / (2 * a)
Escreva ("A raiz : ", x1)
Seno
Se (delta > 0) ento
Escreva ("Existem duas razes reais")
x1 <- (-b + sqrt(delta)) / (2 * a)
Escreva ("A raiz x1 : ", x1)
x2 <- (-b - sqrt(delta)) / (2 * a)
Escreva ("A raiz x2 : ", x2)
Fim_se
Fim_se
Fim_se
Fim_se
Fim

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.
Professora Me. Gislaine Camila Lapasini Leal

III
UNIDADE
ESTRUTURA DE REPETIO

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

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 condicio-
nais. O uso de laos contados restrito a situaes em que sabemos previamente
quantas vezes as instrues precisam ser executadas. Neste caso, abordaremos
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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 con-
ceitos 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 construire-
mos 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

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 usu-
rio informe "SIM", validar um dado de entrada e outras (SALVETTI; BARBOSA,

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
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 necess-
rias. 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 lei-
tura 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 usu-
rio 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 correspon-
dente ao nmero digitado pelo usurio? Naquele caso, se o usurio informasse
um nmero fora da faixa 1 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 defi-
nida continuamos solicitando que ele informe um nmero.

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

que recebe um valor inicial antes de iniciar a estrutura de repetio e no inte-


rior 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 vari-
vel 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 utili-
zado 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.
<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.
<incremento> representa o valor que ser incrementado ou decremen-
tado (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 coman-


dos igual ao nmero de termos da srie delimitada pelos termos <incio> e
<fim>. A varivel contadora no deve aparecer em um comando de leitura den-
tro do bloco de repetio.
Agora que voc conheceu a teoria sobre a estrutura
de repetio para, vamos resolver um problema utili-
zando-a para tornar mais clara a sua aplicao prtica.
Voc se lembra da tabuada? A Figura 6 apresenta a tabu-
ada 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 tabu-
ada de um nmero qualquer?
O primeiro passo estruturar o nosso problema
seguindo os passos descritos na Unidade I:
Objetivo do algoritmo: calcular a tabuada de um Figura 6: Tabuada do nmero 5
nmero inteiro.

ESTRUTURA DE REPETIO
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 pre-
cisamos declarar uma varivel do tipo inteira para armazenar o nmero digitado
pelo usurio. Denominaremos essa vari-
vel de num.
Nmero obtido
O processamento consiste em mul-
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

na 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 3 x 0
7. Criaremos uma varivel chamada
mult para armazenar o resultado da 3 x 1
multiplicao. Observe que temos a 3 x 2
repetio de uma expresso aritm-
tica de multiplicao (num x i), em
3 x 3
que sabemos previamente o nmero 3 x 4
de repeties. Portanto, podemos uti- 3 x 5
lizar a estrutura Para. Lembre-se que ao
utilizar esta estrutura precisamos decla- 3 x 6
rar uma varivel contadora que deve 3 x 7
ser do tipo inteiro, nomearemos de i.
A varivel i deve ter incio em 0 e fim
3 x 8
em 10, pois queremos mostrar a tabu- 3 x 9
ada de 0 a 10. O passo a ser utilizado 3 x 10
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

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 ope-
raes 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.
Algoritmo tabuada
Var
Num, i, mult: inteiro
Incio
Escreva ("Digite um nmero:")
Leia (num)
Para i de 1 at 10 passo 1 faa
mult num*i
Escreva (num, "x", i, "=", mult)
fim_para
Fim.

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. 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 tabu-
ada? 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 colo-
car 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
Incio
Escreva ("Digite um nmero:")
Leia (num)
Para i de 1 at 10 passo 1 faa
Escreva (num, "x", i, "=", num*i)

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

Quadro 46: Pseudocdigo - Algoritmo tabuada

Nesta seo estudamos a estrutura de repetio controlada, que utiliza uma vari-
vel 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 con-
dicional no incio.
A sintaxe da estrutura Enquanto :
Enquanto <condio> faa
<instrues>
fim_enquanto

Na estrutura para tnhamos uma varivel de controle (contador) para contro-


lar o nmero de repeties do algoritmo. Na estrutura Enquanto no h varivel

ESTRUTURA DE REPETIO
96 - 97

de controle, sendo imposta uma condio para controlar a repetio do algoritmo.


Devemos tomar cuidado para garantir que em algum momento a condio ser
satisfeita, seno o algoritmo pode entrar em loop (no parar nunca). Para impe-
dir 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 exe-
cutadas. Isso acontece quando o teste condicional da estrutura resulta em falso
logo na primeira comparao (ASCENCIO; CAMPOS, 2010).
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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 repeti-
das 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 atribu-
do 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 vari-
vel fora da estrutura de repetio e dentro. Observe o algoritmo do Quadro 47.

Estrutura Enquanto
III

Algoritmo conta

Var

Num, cont: inteiro

Incio

Escreva ("Digite um nmero:")

Leia (num)

cont 0

Enquanto (num <> 0) faa

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Se (num >=100) e (num <=300) ento

cont cont +1

fim_se

Escreva ("Digite um nmero:")

Leia (num)

fim_enquanto
Escreva ("A quantidade de nmeros entre 100 e 300 :", cont)
Fim.

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 vari-
vel 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 ana-
lisa se o nmero diferente de 0. Se o resultado for verdadeiro, temos a execuo
das instrues que esto dentro do lao, seno vai para a instruo aps o fim_
enquanto. No lao de repetio temos a verificao se o nmero est ou no na
faixa estabelecida. Para isso usada a estrutura condicional Se, em que temos duas
expresses relacionais unidas por uma expresso lgica com o operador E. Se o

ESTRUTURA DE REPETIO
98 - 99

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

o 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

Incio

Escreva ("Digite um nmero:")

Leia (num)

cont 0

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Enquanto (num <> 0) faa

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

cont cont +1

fim_se

fim_enquanto
Escreva ("A quantidade de nmeros entre 100 e 300 :", cont)
Fim.

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 instru-
es 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 ava-
liao 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 estru-
tura 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
100 - 101

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

Figura 10- Simulao - Algoritmo conta

Lembre-se!!! SEMPRE que voc utilizar uma estrutura de repetio condicio-


nal tem que ter uma instruo no interior desta estrutura que modifique o
valor da varivel que utilizada no teste lgico. Variveis contadoras e acu-
muladoras precisam ser inicializadas no incio do cdigo.

Estrutura Enquanto
III

ESTRUTURA REPITA

A estrutura Repita uma estrutura do tipo lao condicional, isto , o loop baseia-
se na anlise de uma condio. Essa estrutura utilizada quando temos um
nmero indefinido de repeties e precisamos que o teste condicional seja reali-
zado 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 repe-
tido (ASCENCIO; CAMPOS, 2010).
A sintaxe da estrutura Repita :

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Repita
<instrues>
At_que <condio>

Observe que na estrutura Repita as instrues dentro do lao sero execu-


tadas pelo menos uma vez, pois a anlise condicional executada ao final. Do
mesmo modo que na estrutura condicional enquanto, lembre-se que nas instru-
es 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
102 - 103

Algoritmo conta

Var

Num, cont: inteiro

Incio

cont 0

Repita

Escreva ("Digite um nmero:")


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

Leia (num)

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

cont cont +1

fim_se

At_que (num = 0)

Escreva ("A quantidade de nmeros entre 100 e 300 :", cont)

Fim.

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 vari-
vel 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 ver-
dadeiro quando as duas expresses relacionais so verdadeiras e ento cont

Estrutura Repita
III

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

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
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
para <var2> de <incio> ate <fim> passo <incremento> faa
<instrues>
fim_para
fim_para

ESTRUTURA DE REPETIO
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>
fim_enquanto
fim_para

No encadeamento da estrutura Para com Repita a sintaxe :


para <varivel> de <incio> at <fim> passo <incremento> faa
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

repita
<instrues>
At_que (condio)
fim_para

Alguns exemplos de encadeamento de estruturas de repetio utilizando a estru-


tura Enquanto so:
enquanto (<condio1>) faa
enquanto (<condio2>) faa
<instrues>
fim_enquanto
fim_enquanto

enquanto (<condio1>) faa


repita
<instrues>
at_que (<condio2>)
fim_enquanto

enquanto (<condio>) faa


para <var> de <incio> at <fim> passo <incremento> faa
<instrues>
fim_para
fim_enquanto

Estruturas de Repetio Encadeadas


III

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


seguintes sintaxes:
repita
para <var> de <incio> at <fim> passo <incremento> faa
<instrues>
fim_para
at_que (<condio>)

repita

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

Agora que recordamos o que o fatorial, vamos escrever um algoritmo para cal-
cular o fatorial de um nmero qualquer. Seguindo o mtodo de estruturao de
problemas, conforme visto na Unidade I, temos que:
Objetivo do algoritmo: calcular o fatorial de um nmero.
Entrada: ler o nmero que se deseja calcular o fatorial.
Processamento: efetuar o produto de todos os nmeros inteiros positi-
vos menores ou igual ao nmero lido na entrada.
Sada: imprimir o fatorial.
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Na entrada do problema temos a leitura de um nmero inteiro, do qual quere-


mos obter o fatorial. Precisamos armazenar este nmero em uma varivel inteira,
denominarenos num. O processamento consiste em efetuar a operao aritm-
tica 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 opera-
o 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 uti-
lizar 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!

Estruturas de Repetio Encadeadas


III

No Quadro 50 temos o algoritmo para o problema do fatorial. Faa voc um


teste de mesa efetuando o clculo do fatorial de 5.

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 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 inicia-
lizada 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
108 - 109

Algoritmo fatorial
Var
num, fat, cont: inteiro

Incio

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

Leia (num)
cont = 5
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

fat 0; fat = 0*5


Para cont de num at 1 passo -1 faa cont = 4
fat = 0*4
fat fat*cont
cont = 3
fim_para fat = 0*3
Escreva (O fatorial :, fat) cont = 2
fat = 0*2
Fim.
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 algo-
ritmo, 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 apro-
vados e reprovados.
Sada: imprimir o nmero de aprovados e reprovados.

Na entrada de dados temos que saber inicialmente o nmero de notas da dis-


ciplina. Este valor deve ser armazenado em uma varivel (nnotas). Alm disso,

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
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 arit-
mtica 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 repro-
vado. 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 iniciali-
zao 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 estru-
tura 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

ESTRUTURA DE REPETIO
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 apresenta-
dos os nmeros de aprovados e reprovados.

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

nnotas, cod, aprovados, reprovados, cont: inteiro


media, nota, soma: real
Incio
Escreva ("Informe o nmero de notas da disciplina:")
Leia (nnotas)
aprovados 0
reprovados 0
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
Fim_para
media soma/nnotas;
se (media >=7) ento
aprovados aprovados + 1
seno
reprovados reprovados + 1
Fim_se
Escreva ("Informe o cdigo do aluno:")
Leia (cod)

Estruturas de Repetio Encadeadas


III

fim_enquanto
Escreva ("O nmero de aprovados :, aprovados")
Escreva ("O nmero de reprovados :", reprovados)
Fim.

Quadro 51: Pseudocdigo - Algoritmo notas

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


fosse executado dentro da estrutura Para? Tomemos como exemplo, que foram

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
obtidas quatro notas 7, 8, 7 e 9 respectivamente. Na primeira passagem da estru-
tura 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.

Algoritmo fatorial
Var
nnotas, cod, aprovados, reprovados, cont: inteiro
media, nota, soma: real
Incio
Escreva ("Informe o nmero de notas da disciplina:")
Leia (nnotas)
aprovados 0

ESTRUTURA DE REPETIO
112 - 113

reprovados 0
Repita
Escreva ("Informe o cdigo do aluno:")
leia (cod)
soma 0
media 0
Para cont de 1 at nnotas passo 1 faa
Escreva ("Informe a nota:")
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Leia (nota)
soma soma + nota
Fim_para
media soma/nnotas
se (media>=7) ento
aprovados aprovados + 1
seno
reprovados reprovados + 1
fim_se
ate_que (cod = 0)
Escreva ("O nmero de aprovados :", aprovados)
Escreva ("O nmero de reprovados :", reprovados)
Fim.

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 estru-
tura Repita realiza o teste no final.

Estruturas de Repetio Encadeadas


III

CONSIDERAES FINAIS

Nesta unidade voc aprendeu a construir algoritmos utilizando estruturas de


repetio, que permitem a execuo de um trecho de cdigo repetidas vezes. As
estruturas de repetio tambm so chamadas de lao de repetio.
Estudamos os laos de repetio contados e os laos condicionais. Nos laos
de repetio contados conhecemos a estrutura Para, que utilizada nos casos em
que sabemos quantas vezes o trecho de cdigo precisa ser repetido. A estrutura
Para tambm conhecida como estrutura de repetio com varivel de controle,

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
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 repeti-
o) 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 fle-
xveis e que podem ser substitudas uma pela outra, isto , podemos resolver
um problema com algoritmo utilizando a estrutura Enquanto ou com a estru-
tura 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 concei-
tos 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 ativida-
des de autoestudo.

ESTRUTURA DE REPETIO
114 - 115

As estruturas mais versteis so Enquanto e Repita, pois podem ser subs-


titudas uma pela outra, alm de poderem substituir perfeitamente a estru-
tura Para. Porm, h de considerar-se que nem toda estrutura Enquanto ou
Repita poder ser substituda por uma estrutura Para.
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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


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

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. Cal-
cule 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. Im-
prima o primeiro caractere de cada nome. Dica: em uma varivel do tipo caracte-
re, 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 me-
nor 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 pala-
vra "ALGORITMOS" e imprimir.
Objetivo do algoritmo: ler um nmero de vezes que se deseja imprimir a pala-
vra "ALGORITMOS".
Entrada: ler um nmero inteiro.
Processamento: no h.
Sada: imprimir a palavra "Algoritmos" o nmero de vezes informado.
116 - 117

Algoritmo palavra
Var
num, i: inteiro
Incio
Escreva ("Informe o nmero de vezes que deseja imprimir:")
Leia (num)
Para i de 1 at num passo 1 faa
Escreva ("ALGORITMOS")
fim_para
Fim.

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

Senpares,
num, (num mod 2 = 0) ento
nimpares, i: inteiro

Incio
npar npar + 1


Seno
npares 0

nimparesnimpar
0 nimpar + 1

Fim_se
Para i de 1 at 100 passo 1 faa
fim_para
Escreva ("Digite um nmero:")
Escreva
Leia ("A quantidade de nmeros pares :", npar)
(num)
Escreva ("A quantidade de nmeros mpares :", nimpar)

Fim.
Quadro 54: Pseudocdigo Exerccio 2

3. Construa um algoritmo que entre com nmeros inteiros enquanto forem positi-
vos 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

Incio

qtdade 0

Escreva ("Informe um nmero:")

Leia (num)

Enquanto (num > 0) faa

qtdade qtdade + 1
Fim_enquanto
Escreva ("Informe um nmero:")
Escreva ("O total de nmeros positivos informado :", qtdade)
Leia (num)
Fim.

Quadro 55: Pseudocdigo Exerccio 3

4. Escreva um algoritmo que leia um conjunto de pedidos e calcule o total da com-


pra. O pedido possui os seguintes campos: nmero, data (dia, ms e ano), preo
unitrio e quantidade. A entrada de pedidos encerrada quando o usurio infor-
ma 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 n-
mero do pedido seja zero.
Processamento: calcular o preo total de cada pedido e o preo total da com-
pra.
Sada: imprimir o valor total da compra.
118 - 119

Algoritmo compras

Var

pedido, qtdade, data: inteiro

preco, total : real

Incio

total 0

Escreva ("Informe o nmero do pedido:")

Leia (pedido)

Enquanto (num > 0) faa

Escreva ("Informe a data:")

Leia (data)

Escreva ("Informe a unitrio:")

Leia (preco)

Escreva ("Informe a quantidade:")

Leia (qtdade)

total total + (preco*qtdade)

Escreva ("O valor da compra :", preco*qtdade)

Escreva ("Informe o nmero do pedido ou 0 para finalizar:")

Leia (pedido)

Fim_enquanto

Escreva ("O total da compra :", total)

Fim.

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 apre-
sente: 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 atle-
ta 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: caractere[1]

Incio

media 0

cont 0

alto 0
120 - 121

pesado 0

nalto " "

npesado " "


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

Leia (nome)

Enquanto (num <> "FIM") faa

Escreva ("Informe a idade:")

Leia (idade)

Escreva ("Informe o peso:")

Leia (peso)

Escreva ("Informe a altura:")

Leia (altura)

Escreva ("Informe a sexo:")

Leia (sexo)

soma soma+idade

cont cont+1

se (sexo = "M") ou (sexo = "m") ento

se (altura>alto) ento

alto altura

nalto nome

Fim_se

Fim_se

se (sexo = "F") ou (sexo = "f") ento

se (peso>pesado) ento

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


trada 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
Incial
Repita
Escreva ("Informe a base:")
Leia (base)
At_que (base>0)
Repita
Escreva ("Informe a altura:")
Leia (altura)
At_que (altura >=0)
area (base*altura)/2
Escreva ("A rea :", area)
Fim.

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, sol-
teiras, separadas e vivas. O algoritmo finaliza quando for infor-
mado 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, se-
paradas e vivas.

Algoritmo pessoas

Var

idade, ncasado, nseparado, nsolteiro, nviuva : inteiro

estado : caractere

Incio

ncasado 0

nsolteiro 0

nviuva 0

nseparado 0

Repita

Escreva ("Informe a idade:")

Leia (idade)

At_que (idade >= 0)

Enquanto (idade <> 0) faa

Repita

Escreva ("Informe o estado civil:")

Leia (estado)
At_que((estado = "C") ou (estado = "D") ou (estado = "S") ou
(estado = "V"))

Se (estado = "C") ento

ncasado ncasado + 1

fim_se
Se (estado = "S") ento

nsolteiro nsolteiro + 1

fim_se

Se (estado = "D") ento

nseparado nseparado + 1

fim_se

Se (estado = "V") ento

nviuva nviuva + 1

fim_se

Repita

Escreva ("Informe a idade:")

Leia (idade)

At_que (idade >= 0)

fim_enquanto

Escreva ("O nmero de casados :", ncasados)

Escreva ("O nmero de solteiros :", nsolteiro)

Escreva ("O nmero de separados :", nseparado)

Escreva ("O nmero de vivas :", nviuva)

Fim.

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
Professora Me. Gislaine Camila Lapasini Leal

IV
ESTRUTURAS DE DADOS

UNIDADE
HOMOGNEAS E
HETEROGNEAS

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

INTRODUO

Estamos chegando ao final do contedo da disciplina de Algoritmos e Lgica de


Programao I. Nesta unidade voc conhecer as estruturas de dados homog-
neas e heterogneas. Essas estruturas permitem agrupar diversas informaes
em uma nica varivel.
As estruturas de dados homogneas permitem a representao de diver-
sas informaes do mesmo tipo, sendo divididas em unidimensionais (vetores)
e multidimensionais (matrizes). Estudaremos como atribuir valores, realizar a
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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 atri-
buio, entrada e sada de dados utilizando registros.
Na construo de algoritmos utilizando estruturas homogneas e heterog-
neas, 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 estru-
turas 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 algo-
ritmos. Vamos l?

Introduo
IV

ESTUTURAS DE DADOS HOMOGNEAS

Estruturas de dados homogneas so estruturas que agrupam diversas informa-


es, do mesmo tipo, em uma nica varivel (FARRER, 1989). Essas estruturas
homogneas so divididas em estruturas unidimensionais (vetores) e multidi-
mensionais (matrizes), as quais estudaremos a seguir.

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

As estruturas unidimensionais, conhecidas como vetores, consistem em um


arranjo de elementos armazenados na memria principal, sequencialmente,
todos com o mesmo nome (LOPES; GARCIA, 2002).
O vetor segue o mesmo princpio de uma matriz linha da matemtica, como
ilustra a Figura 13. Em cada coluna da linha temos uma varivel com mesmo
nome, no entanto em diferentes posies no arranjo. A posio de cada vari-
vel 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 7 10 1 5
1 2 3 4 5
Figura 13: Vetor
Fonte: adaptado de LOPES; GARCIA (2002)

O uso de vetores est associado criao de tabelas, em que temos a defini-


o 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


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 :


Media: vetor [1..5] de real

Em que o nome da varivel media, sendo que esta possui cinco posies
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

e do tipo real. O acesso a cada posio do vetor realizado por meio da espe-
cificao 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 rea-
lizadas 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

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, cin-
quenta variveis para armazenar as quatro notas dos dez alunos e dez variveis
para armazenar a mdia. Com o uso de vetores precisamos declarar uma vari-
vel 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

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

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

ESTRUTURAS DE DADOS HOMOGNEAS E HETEROGNEAS


132 - 133

Escreva ("Informe a nota 3:")


Leia (n3[cont])
Escreva ("Informe a nota 4:")
Leia (n4[cont])
media[cont] (n1[cont] + n2[cont]+n3
[cont] + n4[cont])/4
fim_para
Para cont de 1 at 10 passo 1 faa
Escreva ("Aluno", nome[cont])
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Escreva ("Nota1:", n1[cont])


Escreva ("Nota2:", n2[cont])
Escreva ("Nota3:", n3[cont])
Escreva ("Nota4:", n4[cont])
Escreva ("Media:", media[cont])
Fim_para
Fim

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 algo-
ritmo apresentado.
Fique tranquilo!!! Na prxima seo construiremos mais algoritmos utili-
zando vetores.

Vetores
IV

ORDENAO EM VETOR

No dia a dia nos deparamos com uma srie de situaes em que independen-
temente do modo que os dados foram informados, precisamos apresent-los
seguindo uma ordem. No caso de variveis do tipo caractere temos que classi-
fic-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

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
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, vere-
mos o funcionamento do mtodo passo a passo e, em seguida, a implementao
do algoritmo. Como podemos observar o vetor no est ordenado.

4 7 10 1 5
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 7 10 1 5
1 2 3 4 5
Figura 15: Primeiro repetio

ESTRUTURAS DE DADOS HOMOGNEAS E HETEROGNEAS


134 - 135

4 maior que 7?
4 7 10 1 5
Figura 16: Comparao entre os elementos

Agora temos que comparar o elemento da posio 1 com o elemento da posi-


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

4 7 10 1 5
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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 ele-
mento da posio 1 com o elemento da posio 5 (Figura 19).
4 maior que 1?

4 7 10 1 5
Figura 18: Comparao entre os elementos

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


4 maior que 5?

1 7 10 4 5
Figura 19: Comparao entre os elementos

Temos que repetir o processo de comparao, agora comparando o elemento da


posio 2 com os demais elementos (Figura 20).

1 7 10 4 5
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?

1 7 10 4 5
Figura 21: Comparao entre os elementos

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


4 maior que 4?

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
1 7 10 4 5
Figura 22: Comparao entre os elementos

Prosseguindo com a comparao, agora temos que analisar o elemento da posi-


o 2 e o da posio 5 (Figura 24).

1 4 10 7 5
Figura 23: Ordenao do vetor

4 maior que 5?

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

1 4 10 7 5
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


136 - 137

10 maior que 7?
1 4 10 7 5
Figura 26: Comparao entre os elementos

1 4 7 10 5
Figura 27: Ordenao do vetor

Ainda temos que comparar o elemento da posio 3 com o da posio 5 (Figura


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

7 maior que 5?

1 4 7 10 5
Figura 28: Comparao entre os elementos

Comparando 7 e 5, temos que 7 maior que 5. Portanto, os elementos trocam


de posio (Figura 29).

1 4 5 10 7
Figura 29: Ordenao do vetor

Repetindo o processo de comparaes, iniciando na quarta posio, conforme


ilustra a Figura 30.

1 4 5 10 7
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 compa-
raes, temos o vetor ordenado (Figura 32).
10 maior que 7?

1 4 5 10 7
Figura 31: Comparao entre os elementos

Ordenao em Vetor
IV

1 4 5 7 10
Figura 32: Vetor ordenado

Ao final das comparaes temos o vetor ordenado. O processo de percorrer o


vetor realizando comparaes foi repetido quatro vezes, ou seja, o nmero de
elementos do vetor menos 1. De modo que na primeira repetio foram reali-
zadas 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.
Algoritmo ordena
Var
num: vetor[1..5] de inteiro
i, j, aux: inteiro
Incio
Para i de 1 at 5 passo 1 faa
Escreva ("Informe um nmero:")
Leia (num[i])
Fim_para
Para i de 1 at 4 passo 1 faa
Para j de i+1 at 5 faa
Se (num[i] > num[j]) ento
uax num[i]
num[i] num[j]
num[j] aux
Fim_se
fim_para
fim_para
Para i de 1 at 5 passo 1 faa
Escreva (num[i])
Fim_para
Fim.

Quadro 61: Pseudocdigo Algoritmo ordenao

ESTRUTURAS DE DADOS HOMOGNEAS E HETEROGNEAS


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

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 ter-
amos o valor da varivel num[j]. Sempre que for necessrio efetuar a troca ou
permutao entre elementos precisamos de uma estrutura auxiliar, para arma-
zenar 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 valo-
res 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 3 8 1 15
Figura 33: Vetor

Ordenao em Vetor
IV

BUSCA EM VETOR

H situaes em que precisamos buscar por um determinado elemento em um


vetor. Se considerarmos um vetor com cinco elementos fcil realizar essa busca
de forma manual. No entanto, nos casos em que temos muitos elementos este
processo manual invivel (MANZANO; OLIVEIRA, 1997).
Existem mtodos que permitem verificar a existncia de um valor den-
tro de um vetor, isto , procurar dentre os elementos um determinado valor.
Estudaremos o mtodo de busca sequencial.

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


140 - 141

Leia (vnum[i])
Fim_para
Escreva ("Informe o nmero que deseja buscar:")
Leia (num)
i 1
acha falso
Enquanto (i < = 20) e (acha = falso) faa
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

se (num = vnum[i]) ento


acha verdadeiro
seno
i i + 1
fim_se
fim_enquanto
Se (acha = verdadeiro) ento
Escreva ("O elemento foi encontrado na posio", i)
Seno
Escreva ("O elemento no foi encontrado")
Fim_se
Fim.

Quadro 62: Pseudocdigo Algoritmo Busca Sequencial

Inicialmente so obtidos os valores e armazenados no vetor vnum. Como utiliza-


mos 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 sequen-
cialmente 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.
1 2 3 4

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
1 x [1,4]
2
3

x [1,1] x [2,3]
Figura 34: Matriz
Fonte: adaptado de (ASCENCIO; CAMPOS, 2010)

Da mesma forma que os vetores, a dimenso da matriz formada por cons-


tantes 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


142 - 143

Coluna

1 2 3 4
Linha 1
2
3
4
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

5
6
7
8
Figura 35: Exemplo de matriz

Em uma matriz nas operaes de atribuio, leitura e escrita devemos utili-


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

Matrizes
IV

(colunas) as notas. O tipo de dado utilizado para armazenar essas informaes


real. Como temos uma matriz bidimensional utilizaremos dois laos de repe-
tio 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.
Algoritmo media
Var
media: vetor[1..20] de real
notas: vetor[1..20, 1...4] de real
somat, soma, mediat: real
i, j : inteiro
Incio
somat 0
soma 0
Para i de 1 at 20 passo 1 faa
Para j de 1 at 4 passo 1 faa
Escreva ("Informe a nota",
j, "do aluno" i)
Leia (notas[i,j])
soma soma + notas[i,j]
Fim_para
media[i] soma/4
somat somat + soma
soma 0

ESTRUTURAS DE DADOS HOMOGNEAS E HETEROGNEAS


144 - 145

fim_para
mediat somat/20
Para i de 1 at 20 passo 1 faa
Escreva ("A mdia do aluno", i , " :", media[i])
Fim_para
Escreva ("A mdia da turma :", mediat)
Fim.
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Quadro 63: Pseudocdigo Algoritmo mdia notas

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 indi-
vidual 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 impres-
so 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.

Estruturas de Dados Heterogneas


IV

REGISTROS

Os registros so estruturas de dados que agregam diversas informaes, que


podem ser de diferentes tipos. Com essa estrutura possvel gerar novos tipos
de dados, alm dos definidos pelas linguagens de programao (ASCENCIO;
CAMPOS, 2010).
Em um registro cada informao denominada de campo, os quais podem ser
de diferentes tipos, ou ainda, representar outros registros.
A declarao de uma varivel registro deve ocorrer antes das variveis, pois

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
pode ocorrer a necessidade de declarar uma varivel com tipo registro. A sin-
taxe para declarao dada por (MANZANO; OLIVEIRA, 1997):
Tipo
<identificador> = registro
<lista dos campos e seus tipos>
fim_registro
var
<variveis> : <identificador>

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

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

ESTRUTURAS DE DADOS HOMOGNEAS E HETEROGNEAS


146 - 147

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, pri-
meira 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 utili-


zando 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

Algoritmo registroaluno
Tipo
cad_aluno = registro
nome: caractere
nota1: real
nota2: real
nota3: real

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
nota4: real
fim_registro
Var
Aluno: cad_aluno
Incio
Escreva ("Informe nome do aluno:")
Leia (aluno.nome)
Escreva ("Informe a nota 1:")
Leia (aluno.nota1)
Escreva ("Informe a nota 2:")
Leia (aluno.nota2)
Escreva ("Informe a nota 3:")
Leia (aluno.nota3)
Escreva ("Informe a nota 4:")
Leia (aluno.nota4)
Fim.

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


148 - 149

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

Algoritmo registroaluno
Tipo
notas = vetor [1..4] de real
cad_aluno = registro
nome: caractere
nota: notas
fim_registro
Var
aluno: cad_aluno
i: inteiro
Incio
Escreva ("Informe nome do aluno:")
Leia (aluno.nome)
Para i de 1 at 4 passo 1 faa
Escreva ("Informe a nota", i, ":")
Leia (aluno.nota[i])
fim_para
Fim.

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

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

Aluno: vetor [1..10] de cad_aluno

i, j: inteiro

Incio

Para i de 1 at 10 faa

Escreva ("Informe nome do aluno:")

Leia (aluno[i].nome)

Para j de 1 at 4 passo 1 faa

Escreva ("Informe a nota", j,":")

Leia (aluno[i].nota[j])

Fim_para

Fim_para

Para i de 1 at 10 faa

Escreva ("Aluno:", aluno[i].nota[j])

Para j de 1 at 4 passo 1 faa


Escreva ("Nota", j, ":", aluno[i].nota[j])
Fim_para

Fim_para

Fim.

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


150 - 151

PROBLEMA

O problema consiste em ler informaes (cdigo,


descrio, preo e quantidade em estoque) de 20
produtos. Alm disso, deve ser permitido exe-
cutar quantas consultas o operador desejar, em
que ele digita o cdigo do produto e apresen-
tado o preo e o saldo em estoque do produto. Se
o cdigo digitado no existir, informar o usurio.
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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 pro-
dutos 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 cadas-
trado 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]
Incio
Para i de 1 at 20 faa
Escreva ("Informe cdigo do produto:")
Leia (produto[i].codigo)

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Escreva ("Informe a descrio do produto:")
Leia (produto[i].nome)
Escreva ("Informe o preo do produto:")
Leia (produto[i].preco)
Escreva ("Informe o saldo em estoque do produto:")
Leia (produto[i].saldo)
Fim_para
Resp "sim"
Enquanto (resp = "sim") faa
Escreva ("Informe o cdigo a ser pesquisado:")
Leia (codigo)
i 1
acha falso
Enquanto (i < = 20) e (acha= falso) faa
Se (produto[i].codigo = cdigo) ento
Acha verdadeiro
Seno
i i + 1
fim_se

ESTRUTURAS DE DADOS HOMOGNEAS E HETEROGNEAS


152 - 153

fim_enquanto
Se (acha=verdadeiro) ento
acha falso
Escreva ("O preo :", produto[i].preco)
Escreva ("O saldo em estoque :", produto[i].saldo)
Seno
Escreva ("No h produto com o cdigo informado")
Fim_se
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Escreva ("Deseja continuar a pesquisa?")


Leia (resp)
Fim_enquanto
Fim.

Quadro 67: Pseudocdigo Algoritmo registro aluno

Problema
IV

CONSIDERAES FINAIS

Nesta unidade voc conheceu as estruturas de dados homogneas e heterog-


neas. 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 conhe-
cemos o mtodo de classificao Bubble Sort, que varre o vetor repetidas vezes,
comparando os elementos vizinhos. Se eles esto fora de ordem, efetuada uma

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
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 sequen-
cial, que permite verificar se um dado elemento encontra-se no vetor ou no.
Estudamos as estruturas heterogneas, aquelas que agregam diversas infor-
maes, que podem ser de diferentes tipos, sendo denominadas de registros. Este
tipo de estrutura bastante utilizado para representar cadastros, tais como: pro-
dutos, clientes, alunos, servios e outros.
Na construo de algoritmos utilizando estruturas homogneas e hetero-
gneas 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 facili-
dade tudo o que vimos, desenvolve seu raciocnio lgico e aumenta o poder de
resoluo de problemas, afinal, elaboramos algoritmos com o intuito de resol-
ver problemas.

ESTRUTURAS DE DADOS HOMOGNEAS E HETEROGNEAS


154 - 155

A varivel caractere armazenada na memria principal como sendo um


vetor, mesmo sem ser declarada como tal.
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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. Efe-
tue a soma dos dois vetores em um vetor C e imprima o vetor C em ordem cres-
cente.
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 se-
guintes 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.

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 dife-
rena 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
Incio
Para i de 1 at 5 passo 1 faa
Para j de 1 at 5 passo 1 faa
Escreva ("Informe o elemento", i, j, "da matriz A")
Leia (A[i,j])
Fim_para
fim_para
Para i de 1 at 5 passo 1 faa
Para j de 1 at 5 passo 1 faa
Escreva ("Informe o elemento", i, j, "da matriz B ")
Leia (B[i,j])
C A[i,j] B[ i,j]
Fim_para
fim_para
Para i de 1 at 5 passo 1 faa
Para j de 1 at 5 passo 1 faa
Escreva (C[i,j])
Fim_para
fim_para
Fim.

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 consulta
pelo nome.
Entrada: ler nome, fone e e-mail de 20 contatos e o nome para pesquisa.
Processamento: encontrar o nome informado pelo usurio.
Sada: imprimir o telefone se existir o nome informado. Seno, informar ao usu-
rio 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]
Incio
Para i de 1 at 20 faa
Escreva ("Informe nome do contato:")
Leia (contato[i].nome)
Escreva ("Informe o telefone:")
Leia (contato[i].fone)
Escreva ("Informe o e-mail:")
Leia (contato[i].email)
Fim_Para
Resp "sim"
Enquanto (resp= "sim") faa
Escreva ("Informe o nome 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
Escreva ("Deseja contunuar a pesquisa?")
Leia (nestp)
Fim_enquanto
Fim.

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]
Incio
Para i de 1 at 30 faa
Escreva ("Informe a matrcula:")
Leia (professor[i].matricula)
Escreva ("Informe o nome:")
Leia (professor[i].nome)
Escreva ("Informe a lotao:")
Leia (professor[i].lotacao)
Escreva ("Informe o salrio:")
Leia (professor[i].salario)
Fim_para
Resp "sim"
Enquanto (resp = "sim") faa
Escreva ("Informe a matricula a ser pesquisado:")
Leia (registro)
i 1
acha falso
Enquanto (i < = 20) e (acha= falso) faa
Se (professor[i].matricula = registro) ento
Acha verdadeiro
Seno
i i + 1
fim_se
fim_enquanto
Se (acha=verdadeiro) ento
Escreva ("A lotao :", professor[i]. lotacao)
Escreva ("O salrio :", professor[i]. salario)
Seno
Escreva ("No h professor com a matrcula informada")
Fim_se
Escreva ("Deseja continuar a pesquisa?")
Leia (resp)
Fim_enquanto
Fim.

Quadro 71: Pseudocdigo Exerccio 4


162 - 163

Professora Me. Gislaine Camila Lapasini Leal

V
SUB-ROTINAS E

UNIDADE
PROGRAMAO COM
ARQUIVOS

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

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

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 fun-
es. 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 chama-
das a si mesmo, como constru-las, quais suas vantagens e desvantagens.
Conheceremos o conceito de arquivos, modos de concepo e como mani-
pul-los utilizando operaes que possibilitem consultar, inserir, modificar e
eliminar dados.
Ao final desta unidade voc saber construir algoritmos modularizados, uti-
lizar 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
V

SUB-ROTINAS

Em muitas situaes nos deparamos com problemas complexos e abrangentes.


Para resolver esse tipo de problema temos que dividi-lo em subproblemas mais
simples e especficos, dividindo assim a sua complexidade e facilitando a reso-
luo (FORBELLONE; EBERSPACHER, 2005).
A decomposio do problema em subproblemas determinante para a redu-
o da complexidade e, por conseguinte, na resoluo do problema. Esse processo
de decomposio, tambm, conhecido como refinamento sucessivo ou aborda-

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
gem 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 subalgo-
ritmos para designar as sub-rotinas.
E o que vem a ser ento uma sub-rotina? Uma sub-rotina consiste em blo-
cos 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 apre-
senta as seguintes vantagens:
Divide o problema em partes coerentes.
Facilita o teste.

SUB-ROTINAS E PROGRAMAO COM ARQUIVOS


166 - 167

Evita repetio do cdigo.


Maior legibilidade do algoritmo.

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


mos cada uma delas.
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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 processa-
mento 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>
incio
<instrues>
fim_procedimento

Outro ponto importante que as sub-rotinas devem ser declaradas antes do pro-
grama 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
V

Sistematizando as informaes do problema temos que:


Objetivo do algoritmo: criar uma calculadora com as operaes de adi-
o, subtrao, multiplicao e diviso.
Entrada: ler a opo do usurio. E se for uma operao aritmtica efe-
tuar a operao.
Processamento: efetuar a operao aritmtica selecionada.
Sada: imprimir o resultado da operao aritmtica.

Na construo deste algoritmo vamos aplicar o conceito de procedimentos, de modo

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

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

SUB-ROTINAS E PROGRAMAO COM ARQUIVOS


168 - 169

Procedimento subtracao
Var:
A, B, Resultado: real
Incio
Escreva ("Procedimento SUBTRAO")
Escreva ("Informe o valor de A:")
Leia (A)
Escreva ("Informe o valor de B:")
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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

Procedimentos
V

Escreva ("Informe o valor de A:")


Leia (A)
Escreva ("Informe o valor de B:")
Leia (B)
ResultadoA / B
Escreva ("O resultado da diviso :", resultado)
Fim_procedimento

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Var
opcao: inteiro
Incio
opcao 0
Enquanto (opcao <> 5) faa
Escreva ("1 Soma")
Escreva ("2 Subtrao")
Escreva ("3 Multiplicao")
Escreva ("4 Diviso")
Escreva ("5 Sair")
Escreva ("Digite a opo:")
Leia (opcao)
Se (opcao <> 5) faa
Caso (opcao)
Seja 1 faa soma
Seja 2 faa subtracao
Seja 3 faa divisao
Seja 4 faa multiplicacao
Seno escreva ("Opo invlida")
fim_caso
fim_se
fim_enquanto
Fim.

Quadro 72: Pseudocdigo Algoritmo calculadora

SUB-ROTINAS E PROGRAMAO COM ARQUIVOS


170 - 171

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 subpro-
blemas (cada operao aritmtica) e para esses subproblemas foram construdas
sub-rotinas do tipo procedimento.
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

ESCOPO DE VARIVEIS

As variveis declaradas no interior de uma sub-rotina so chamadas de vari-


veis 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 utili-
zada 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 roti-
nas (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
V

qual assume um contexto local para


esta sub-rotina mas, global para A,B
as sub-rotinas 1.1 e 1.2 do mesmo
Rotina 1
modo a varivel X. J as variveis W e
Y so variveis locais que pertencem A, X
s rotinas 1.1 e 1.2, respectivamente. Rotina 1.1
Em relao sub-rotina 2 temos
W
que as variveis A e B so globais
para a rotina 2.1. A varivel M decla- Rotina 1.2

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
rada na rotina 2 uma varivel global
para a rotina 2.1, que possui uma
Y
varivel X que local e no apresenta
nenhuma relao com a varivel X Rotina 2
definida na rotina 1.
M
Manzano e Oliveira (1997) des- Rotina 2.1
tacam que uma varivel declarada
antes de uma sub-rotina uma vari- X
vel global para a sub-rotina.
Figura 37: Escopo de variveis
Fonte: MANZANO; OLIVEIRA (1997)

PASSAGEM DE PARMETROS

Os parmetros servem como um ponto de comunicao bidirecional entre uma


sub-rotina e o programa principal ou outra sub-rotina. Possibilitam a passagem
de valores de uma sub-rotina ou rotina chamadora outra sub-rotina e vice-
-versa. Devemos fazer distino entre dois tipos de parmetros, os formais e os
reais (MANZANO; OLIVEIRA, 1997).
Os parmetros formais so aqueles declarados por meio de variveis jun-
tamente com a identificao do nome da sub-rotina. J os parmetros reais so

SUB-ROTINAS E PROGRAMAO COM ARQUIVOS


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 utili-
zando o conceito de parmetros.

Algoritmo calculadora
Procedimento soma (A, B: real)
Var:
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

Resultado: real
Incio
ResultadoA + B
Escreva ("O resultado da soma :", resultado)
Fim_procedimento
Procedimento subtracao (A, B: real)
Var:
Resultado: real
Incio
ResultadoA - B
Escreva ("O resultado da subtrao :", resultado)
Fim_procedimento

Procedimento multiplicao (A, B: real)


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

Passagem de Parmetros
V

Procedimento diviso (A, B: real)


Var:
Resultado: real
Incio
ResultadoA / B
Escreva ("O resultado da diviso :", resultado)
Fim_procedimento
Var
opcao: inteiro

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
X, Y: real
Incio
opcao0
Enquanto (opcao <> 5) faa
Escreva ("Informe o valor de X:")
Leia (X)
Escreva ("Informe o valor de Y:")
Leia (Y)
Escreva ("1 Soma")
Escreva ("2 Subtrao")
Escreva ("3 Multiplicao")
Escreva ("4 Diviso")
Escreva ("5 Sair")
Escreva ("Digite a opo:")
Leia (opcao)
Se (opcao <> 5) faa
Caso (opcao)
Seja 1 faa soma(X,Y)
Seja 2 faa subtracao(X,Y)
Seja 3 faa divisao(X,Y)
Seja 4 faa multiplicacao(X,Y)
Seno escreva ("Opo invlida")
fim_caso
fim_se
fim_enquanto
Fim.

Quadro 73: Pseudocdigo Algoritmo calculadora

SUB-ROTINAS E PROGRAMAO COM ARQUIVOS


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

valor do parmetro real quando o parmetro formal manipulado na sub-ro-


tina. 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 uti-
lizando 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:
i, fat: inteiro
Incio
fat1
Para i de 1 at x passo 1 faa
fat fat * i
fim_para

Passagem de Parmetros
V

Escreva ("O fatorial :", fat)


Fim_procedimento
Var
n: inteiro
Incio
Escreva ("Informe o nmero que deseja calcular o fatorial:")
Leia (n)
Fatorial(n)

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

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 den-
tro do procedimento fatorial.
No Quadro 75 temos a passagem de parmetros por referncia, no caso a vari-
vel 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


176 - 177

Var
n, resultado: inteiro
Inicio
Escreva ("Informe o nmero que deseja calcular o fatorial")
Leia(n)
fatorial(n,resultado)
Escreva("O fatorial :",resultado)
Fim
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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 cha-
n x
mado do procedimento fatorial com os parmetros
n sendo passado por valor e resultado por refern-
cia. O valor de n copiado para a varivel x. Para Fatorial (n, resultado)

calcular fatorial utilizado o valor de x para contro-


lar o lao de repetio. Ao trmino da execuo do Resultado fat
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
V

FUNES

Uma funo, tambm uma sub-rotina, que tem como objetivo desviar a execu-
o 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>

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


178 - 179

Incio
Escreva ("Informe o nmero que deseja calcu
lar o fatorial:")
Leia (n)
resultado fatorial(n)
Escreva ("O fatorial :", resultado)
Fim.
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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 mate-
mtica, 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 pro-
blema 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
V

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Figura 39: Imagem recursiva

Voc conhece algum problema recursivo? Vamos retomar o problema do fato-


rial, 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 (x-1)
fim_se
Fim_funcao

Quadro 77: Pseudocdigo Funo Fatorial recursiva

SUB-ROTINAS E PROGRAMAO COM ARQUIVOS


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

Fatorial (1-1)

Fatorial (2-1)
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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
V

Funo Fibonacci (x: inteiro): inteiro


Incio
Se (x= 0) ou (x=1) ento
retorne x
seno
retorne Fibonacci(x-2) + Fibonacci (x-1)
fim_se
Fim_funcao

Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Quadro 78: Pseudocdigo Funo Fibonacci recursiva

Ziviane (2004) destaca que a recursividade permite uma descrio mais con-
cisa dos algoritmos, especialmente, quando o problema tem natureza recursiva
ou utiliza estruturas recursivas. Algumas desvantagens da recurso so: algorit-
mos 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 arqui-
vos? Conhece algum arquivo?
Quando pensamos em arquivo nos vem em
mente aquele armrio com um monte de pastas
para guardar informaes (Figura 41). exa-
tamente essa a ideia de arquivos, um local para
armazenar informaes. Figura 41: Arquivo

SUB-ROTINAS E PROGRAMAO COM ARQUIVOS


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 caracte-
res (arquivo texto) ou bytes (arquivo binrio) (ASCENCIO; CAMPOS, 2010).
Para exemplificar o conceito de arquivos vamos tomar como exemplo um
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.

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 dei-
x-lo disponvel para leitura/gravao. A abertura realizada pelo comando Abra(
). Considerando o exemplo de cadastro de produtos teramos: Abra (Produto).

Trabalhando com Arquivos


V

Do mesmo modo que precisamos abrir o arquivo antes do processamento, pre-


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

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

SUB-ROTINAS E PROGRAMAO COM ARQUIVOS


184 - 185

Na concepo direta, a localizao de um registro no arquivo est relacionada


com algum campo do arquivo, de modo que por meio deste campo consegui-
mos localizar o lugar que o registro est armazenado. O campo que determina
a posio do registro no arquivo chamado de chave. Devemos atentar para o
fato de que esse campo deve ser nico (FORBELLONE; EBERSPACHER, 2005).
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-roti-


nas. 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 subproble-
mas 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 proces-
samento 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 cha-
mou 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 aces-
svel de qualquer parte do algoritmo. Alm disso, estudamos o funcionamento
da passagem de parmetros por valor e por referncia. Na passagem de par-
metros 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 par-
metros passados so endereos de memria.

Consideraes Finais
V

Estudamos o conceito de recursividade, que um mecanismo que permite


uma funo chamar a si mesma, e aprendemos que toda funo recursiva for-
mada por um passo bsico e um recursivo. Alm disso, construmos funes
recursivas para calcular o fatorial e a srie de Fibonacci, que so problemas cls-
sicos 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.

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.

SUB-ROTINAS E PROGRAMAO COM ARQUIVOS


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 in-
formaes: 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 pri-
meiros 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 re-
sultado 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:
i, total: inteiro
Incio
total0
Para i de 1 at x passo 1 faa
total total + i
fim_para
retorne total
Fim_funcao
Var
n, resultado: inteiro
Incio
Escreva ("Informe o nmero:")
Leia (n)
resultado soma(n)
Escreva ("O somatrio :", resultado)
Fim.

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
Incio
Escreva ("Informe o nmero:")
Leia (num)
resultado raiz(num)
Escreva ("A raiz quadrada :", resultado)
Fim.

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 maiorvalor
Funo maior (X, Y, Z: inteiro): inteiro
Var
num: inteiro
Incio
Se (x > y) ento
num x
seno
num y
fim_se
Se (z > num) ento
num z
fim_se
retorne num
Fim_funcao
Var
resultado, a, b, c: inteiro
Incio
Escreva ("Informe o valor de A:")
Leia (a)
Escreva ("Informe o valor de B:")
Leia (b)
Escreva ("Informe o valor de C:")
Leia (c)
resultado maior(a, b, c)
Escreva ("O maior valor :", resultado)
Fim.

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


nutos 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: real)

Var:

resto: inteiro

Incio

hx/3600

restox mod 3600

mresto/60

sresto mod 60

Fim_procedimento

Var

n, hora, minuto, segundo: inteiro

Incio

Escreva ("Informe os segundos que deseja converter:")

Leia (n)

tempo(n, hora, minuto, segundo)

Escreva ("Horas:", hora)

Escreva ("Minutos:", minuto)

Escreva ("Segundos:", segundo)

Fim.

Quadro 83: Pseudocdigo Exerccio 4


5. Elabore uma sub-rotina que receba o valor antigo de um produ-
to 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
valor: real
Incio
valor precop + (precop * (percentualp/100))
retorne valor
Fim_funcao
Var
valor, percentual, resultado: real
Incio
Escreva ("Informe o preo do produto:")
Leia (valor)
Escreva ("Informe o percentual de reajuste:")
Leia (percentual)
resultadoreajuste(valor, percentual)
Escreva ("O valor reajustado :", resultado)
Fim.

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 cons-
truir 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 so-
lucionar um problema, e estudamos que dado um problema no h um nico algo-
ritmo que soluo, podemos ter vrios algoritmos. Isto que dizer que um algorit-
mo 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 pseudoc-
digo 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 ope-
radores (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 com-
posta, 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 repe-
tio, 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 sabe-
mos 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 estru-
turas de repetio.
A Unidade IV discutiu as estruturas de dados homogneas e heterogneas. Nas
estruturas de dados homogneas conhecemos os vetores (unidimensionais) e as
matrizes (multidimensionais), que agrupam diversas informaes, do mesmo tipo,
em uma nica varivel. Tratamos, tambm, como realizar ordenao e busca. Em
relao s estruturas heterogneas estudamos os registros, que agregam diversas
informaes, que podem ser de diferentes tipos.
CONCLUSO

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 possibili-
taram a aplicao prtica dos conceitos e estimularam o desenvolvimento do racio-
cnio 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.
196 - 197

GABARITO

UNIDADE I
1.
Entrar na fila
Aguardar at chegar a minha vez
Inserir o carto no caixa eletrnico
Selecionar a opo de pagamento de conta
Ler o cdigo de barras
Digitar a senha
Imprimir o comprovante

2.

(C) cidade
(I) endereo_nr tem um caractere especial invlido
(I) media_peso% tem um caractere especial invlido %
(I) aluno-nota sinal de operao aritmtica -
(I) media idade no pode conter espao
(C) a3
(I) endereo.cep tem um caractere especial invlido .
(C) B5
(C) nome2
(I) 4cidade no pode comear com nmero
(C) cliente_nome
(I) 1234P no pode comear com nmero
GABARITO

3.

Algoritmo exe3
Var
num1, num2, num3, num4 : Inteiro
media : Real
Inicio
Escreva "o 1. numero"
Leia num1
Escreva "o 2. numero"
Leia num2
Escreva "o 3. numero"
Leia num3
Escreva "o 4. numero"
Leia num4
media (num1 + num2 + num3 + num4) / 4
Escreva "A mdia ", media
Fim.

4.

Algoritmo exe4
Var
num : Inteiro
Inicio
Escreva "Digite o valor:"
Leia num
Escreva "O nmero ", num
Escreva "A raiz ", sqrt(num)
Escreva "O quadrado ", sqr(num)
Fim.
198 - 199

GABARITO

5.

exce5a: exce5b:
5 30
5 5
5 5

UNIDADE II
1.

Algoritmo uni2exe1
Var
matricula : inteiro
nome : caractere[64]
salrio, vendas, total : real
Incio
Escreva("Informe o nome do funcionrio:")
Leia(nome)
Escreva("Informe o salrio do funcionrio:")
Leia(salrio)
Escreva("Informe o valor das vendas do funcionrio:")
Leia(vendas)
Se (vendas < 1500) ento
total salrio + (salrio * 0.02)
Seno
total salrio + (salrio * 0.04)
Fim_se
Escreva("Vendedor: ", nome)
Escreva("Matrcula: ", matricula)
Escreva("Salrio fixo: ", salrio)
Escreva("Salrio total: ", total)
Fim.
GABARITO

2.

Algoritmo uni2exe2

Var

numero : inteiro

Incio

Escreva("Informe o nmero:")

Leia(numero)

Se (((numero MOD 3)=0) E ((numero MOD 7)=0)) ento

Escreva("O nmero ", numero, " divisvel por 3 e por 7")

Seno

Escreva("O nmero ", numero, " NO divisvel por 3 e por 7")

Fim_se

Fim.

3.

Algoritmo uni2exe3

Var

num1, num2, num3, num4, num5, qtd : inteiro

Incio

Escreva("Informe o primeiro nmero:")

Leia(num1)

Escreva("Informe o segundo nmero:")

Leia(num2)

Escreva("Informe o terceiro nmero:")

Leia(num3)

Escreva("Informe o quarto nmero:")

Leia(num4)

Escreva("Informe o quinto nmero:")

Leia(num5)

Se (num1 < 0) ento

qtd qtd + 1

Fim_se
200 - 201

GABARITO

Se (num2 < 0) ento

qtd qtd + 1

Fim_se

Se (num3 < 0) ento

qtd qtd + 1

Fim_se

Se (num4 < 0) ento

qtd qtd + 1

Fim_se

Se (num5 < 0) ento

qtd qtd + 1

Fim_se

Fim.

4.

Algoritmo uni2exe4

Var

sexo : caractere[1]

altura, peso_ideal : real

Incio

Escreva("Informe o sexo [M/F]:")

Leia(sexo)

Escreva("Informe a altura:")

Leia(altura)
Se (sexo = 'M') ento

peso_ideal (72.7 * altura) -58

Seno

peso_ideal (62.1 * altura) -44.7

Fim_se

Escreva("Seu peso ideal : ", peso_ideal)

Fim.
GABARITO

5.

Algoritmo uni2exe5

Var

moto : caractere[1]

percurso, consumo: real

Incio

Escreva("Informe o tipo da moto [A/B/C]:")

Leia(moto)

Escreva("Informe o tamanho o percurso:")

Leia(percurso)

caso (moto)

seja "A" faa

consumo = percurso / 26

seja "B" faa

consumo = percurso / 20

seja "C" faa

consumo = percurso / 7

Fim_caso

Escreva("O consumo estimado de combustvel : ", consumo)

Fim.
202 - 203

GABARITO

6.

Algoritmo uni2exe6

Var

saldo: real

Incio

Escreva("Informe o saldo mdio do correntista:")

Leia(saldo)

Se (saldo < 500) ento

Escreva("Linha de crdito indisponvel.")

Fim_se

Se ((saldo > 501) E (saldo < 1000)) ento

Escreva("Linha de crdito disponvel no valor de:" saldo * 0.35)

Fim_se

Se ((saldo > 1001) E (saldo < 3000)) ento

Escreva("Linha de crdito disponvel no valor de:" saldo * 0.50)

Fim_se

Se (saldo > 3001) ento

Escreva("Linha de crdito disponvel no valor de:" saldo * 0.75)

Fim_se

Fim.
GABARITO

UNIDADE III
1.

Algoritmo uni3exe1

Var

nome : vetor[1..20] de caractere

num : inteiro

Incio

Para num de 1 at 20 passo 1 faa

Escreva("Informe o ", num, " nome: ")

Leia(nome[num])

Fim_para

Para num de 1 at 20 passo 1 faa

Escreva(nome[num][1])

Fim_para

Fim.
204 - 205

GABARITO

2.

Algoritmo uni3exe2

Var

nome : vetor[1..20] de caractere

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

media: vetor[1..20] de real

num1, num2 : inteiro

media_turma : real

Incio

Para num1 de 1 at 20 passo 1 faa

Escreva("Informe o ", num1, " nome: ")

Leia(nome[num1])

Para num2 de 1 at 4 passo 1 faa

Escreva("Informe a nota ", num2)

Leia(notas[num1, num2])

media[num1] media[num1] + notas[num1, num2]

Fim_para

media[num1] media[num1] / 4

media_turma media_turma + media[num1]

Fim_para

media_turma := media_turma / 20

Para num1 de 1 at 20 passo 1 faa

Escreva("Aluno", nome[num1])

Para num2 de 1 at 4 passo 1 faa

Escreva("Nota ", num2, " :", notas[num1, num2])

Fim_para

Escreva("A mdia do aluno ", nome[num1], " foi: ", media[num1])

Fim_para

Escreva("A mdia da turma : ", media_turma)

Fim.
GABARITO

3.

Algoritmo uni3exe3

Var

qtd, contador, numero, maior, menor : inteiro

Incio

Escreva("Informe quantos nmeros deseja ler:")

Leia(qtd)

Enquanto (contador < qtd) faa

Leia(numero)

Se (numero > maior) ento

maior numero

Fim_se

Se (numero < menor) ento

menor numero

Fim_se

contador contador + 1

Fim_enquanto

Escreva("O maior nmero lido foi: ", maior)

Escreva("O menor nmero lido foi: ", menor)

Fim.
206 - 207

GABARITO

4.

Algoritmo uni3exe4

Var

numero, contador, pares, impares : inteiro

media : real

Incio

Escreva("Digite um nmero para efetuar o clculo ou 0 para finalizar:")

Enquanto (numero <> 0) faa

Leia(numero)

Se ((numero MOD 2) = 0) ento

pares pares + 1

Seno

impares impares + 1

Fim_se

media media + numero

contador contador + 1

Fim_enquanto

media media / contador


Escreva("Foram lidos ", contador, " nmeros, dos quais ", pares ", eram pares.")
Escreva("Tambm foram encontrados ", impares, " nmeros mpares.")

Escreva("E a mdia aritmtica dos nmeros lidos : ", media)

Fim.
GABARITO

5.

Algoritmo uni3exe5

Var

num: inteiro

Incio

Para num de 0 at 199 passo 1 faa

Se ((num MOD 5)= 0) ento

Escreva(num)

Fim_se

Fim_para

Fim.
208 - 209

GABARITO

6.

Algoritmo uni3exe6

Var

contador, numero, maior, menor : inteiro

media : real

Incio

Escreva("Informe os valores:")

Enquanto (numero >= 0) faa

Leia(numero)

Se (numero > maior) ento

maior numero

Fim_se

Se (numero < menor) ento

menor numero

Fim_se

media media + numero

contador contador + 1

Fim_enquanto

media media / contador

Escreva("O maior nmero lido foi: ", maior)

Escreva("O menor nmero lido foi: ", menor)

Escreva("A mdia dos nmeros lidos : ", media)

Fim.
GABARITO

7.

Algoritmo uni3exe7

Var

nome : caractere[64]

Incio

Repita

Escreva("Digite o nome, digite FIM para sair:")

Leia(nome)

Escreva(nome[1])

At_que (nome ="FIM")

Fim.
210 - 211

GABARITO

8.

Algoritmo uni3exe8

Var

qtd, contador, num, maior, maior_valor : inteiro

nome : vetor[1..100] de caractere

qtd_prod: vetor[1..100] de inteiro

qtd_vend: vetor[1..100] de inteiro

Incio

Escreva("Informe a quantidade de produtos, limite de 100: ")

Leia(qtd)

Enquanto (contador < qtd) faa

Escreva("Informe o nome do produto: ")

Leia(nome[contador])

Escreva("Informe a quantidade produzida: ")

Leia qtd_prod[contador]

Escreva("Informe a quantidade vendida: ")

Leia qtd_vend[contador]

Se ((qtd_prod[contador] - qtd_vend[contador]) > maior_valor) ento

maior_valor qtd_prod[contador] - qtd_vend[contador])

maior contador

Fim_se

contador contador + 1

Fim_enquanto

Para num de 1 at qtd passo 1 faa

Se ((qtd_prod[num] - qtd_vend[num]) < 30) Ento

Escreva("Produto: ", nome[num])

Escreva("Estoque: ", qtd_prod[num] - qtd_vend[num])

Fim_se

Fim_para

Escreva("O produto com o maior estoque : ", nome[maior])

Fim.
GABARITO

9.

Algoritmo uni3exe9
Var
num1, num2: inteiro
Incio
Para num1 de 1 at 10 passo 1 faa
Escreva("Tabuada do ", num1)
Para num2 de 1 at 10 passo 1 faa
Escreva(num1, " * ", num2, " = ", num1 * num2)
Fim_para
Fim_para
Fim.

UNIDADE IV
1.

Algoritmo uni4exe1
Var
num , maior, menor : inteiro
numeros : vetor[1..50] de inteiro
Incio
Escreva("Digite os 50 nmeros")
Para num de 1 at 50 passo 1 faa
Leia(numeros[num])
Se (numeros[num] > maior) Ento
maior numeros[num]
Fim_se
Se (numeros [num]< menor) Ento
menor numeros[num]
Fim_se
Fim_para
Escreva("O maior nmero lido foi: ", maior)
Escreva("O menor nmero lido foi: ", menor)
Fim.
212 - 213

GABARITO

2.

Algoritmo uni4exe2
Var
num : inteiro
a, b, c : vetor[1..20] de inteiro
Incio
Escreva("Digite os 20 nmeros do Vetor A")
Para num de 1 at 20 passo 1 faa
Escreva("Digite o nmero ", num)
Leia(a[num])
Fim_para
Escreva("Digite os 20 nmeros do Vetor B")
Para num de 1 at 20 passo 1 faa
Escreva("Digite o nmero ", num)
Leia(b[num])
Fim_para
Escreva("Calculando o vetor C = A x B")
Para num de 1 at 20 passo 1 faa

c[num] a[num] + b[num]


Fim_para
Escreva("Os valores do vetor C = A x B so: ")
Para num de 1 at 20 passo 1 faa
Escreva(num, ") ", c[num])
Fim_para
Fim.
GABARITO

3.

Algoritmo uni4exe3

Tipo

cad_produto = registro

nome: caractere[64]

p_compra : real

p_venda : real

Fim_registro

Var

num, lucro_maior, lucro_menor : inteiro

produto : vetor[1..30] de cad_produto

Incio

Escreva("Cadastre os 30 produtos ")

Para num de 1 at 30 passo 1 faa

Escreva("Digite o nome do produto ", num)

Leia(produto[num].nome)

Escreva("Digite o preo de compra do produto ", produto[num].nome)

Leia(produto[num].p_compra)

Escreva("Digite o preo de venda do produto ", produto[num].nome)

Leia(produto[num].p_venda)

Se (((produto[num].p_venda - produto[num].p_compra)/ produto[num].p_compra)


< 0.15) ento

lucro_menor lucro_menor + 1

Fim_se

Se (((produto[num].p_venda - produto[num].p_compra)/produto[num].p_compra)
> 0.30) ento

lucro_maior lucro_maior + 1

Fim_se

Fim_para

Escreva("Existem ", lucro_menor, " produtos com lucro menor do que 15%")

Escreva("Existem ", lucro_maior, " produtos com lucro maior do que 30%")

Fim.
214 - 215

GABARITO

4.

Algoritmo uni4exe4
Var
num1, num2 : inteiro
matrix: vetor[1..5, 1..5] de inteiro
Incio
Escreva("Entre com os valores da matriz 5x5 ")
Para num1 de 1 at 5 passo 1 faa
Para num2 de 1 at 5 passo 1 faa
Escreva("Digite o valor ", num1, " x ", num2)
Leia(matrix[num1, num2])
Fim_para
Fim_para
Escreva("Os valores da diagonal da matriz ", num1, " x ", num2,"so:")
Para num1 de 1 at 5 passo 1 faa
Escreva("Posio ", num1, " x ", num1, " = " matrix[num1, num1])
Fim_para
Fim.

5.

Algoritmo uni4exe5
Tipo
cad_aluno = registro
nome: caractere[64]
notas : vetor[1..4] de real
media: real
Fim_registro
Var
n1, n2 : inteiro
alunos : vetor[1..5] de cad_aluno
temp : cad_aluno
GABARITO

Incio

Escreva("Entre com os dados dos alunos")

Para n1 de 1 at 5 passo 1 faa

Escreva("Digite o nome do aluno: ")

Leia(alunos[n1].nome)

Para n2 de 1 at 4 passo 1 faa

Escreva("Digite a nota ", n2 )

Leia(alunos[n1].notas[n2])

alunos[n1].media alunos[n1].media + alunos[n1].notas[n2]

Fim_para

Fim_para

Para n1 de 1 at 5 passo 1 faa

Para n2 de n1+1 at 5 passo 1 faa

Se (alunos[n1].media > alunos[n2].media) ento

temp.nome alunos[n1].nome

temp.media alunos[n1].media

temp.notas[1] alunos[n1].notas[1]

temp.notas[2] alunos[n1].notas[2]

temp.notas[3] alunos[n1].notas[3]

temp.notas[4] alunos[n1].notas[4]

alunos[n1].nome alunos[n2].nome

alunos[n1].media alunos[n2].media

alunos[n1].notas[1] alunos[n2].notas[1]

alunos[n1].notas[2] alunos[n2].notas[2]

alunos[n1].notas[3] alunos[n2].notas[3]

alunos[n1].notas[4] alunos[n2].notas[4]

alunos[n2].nome temp[n2].nome

alunos[n2].media temp[n2].media

alunos[n2].notas[1] temp[n2] .notas[1]

alunos[n2].notas[2] temp[n2] .notas[2]

alunos[n2].notas[3] temp[n2] .notas[3]

alunos[n2].notas[4] temp[n2] .notas[4]


216 - 217

GABARITO

Fim_se

Fim_para

Fim_para

Escreva("A classificao dos alunos por mdia crescente :")

Para n1 de 1 at 5 passo 1 faa

Escreva(alunos[n1].nome, "mdia: ", alunos[n1].media)

Fim_para

Fim.

6.

Algoritmo uni4exe6

Var

num1, num2 : inteiro

a, b, soma, dif : vetor[1..5, 1..5] de inteiro

Incio

Escreva("Entre com os valores da primeira matriz 5x5 ")

Para num1 de 1 at 5 passo 1 faa

Para num2 de 1 at 5 passo 1 faa

Escreva("Digite o valor ", num1, " x ", num2)

Leia(a[num1, num2])

Fim_para

Fim_para

Escreva("Entre com os valores da segunda matriz 5x5 ")


Para num1 de 1 at 5 passo 1 faa

Para num2 de 1 at 5 passo 1 faa

Escreva("Digite o valor ", num1, " x ", num2)

Leia(b[num1, num2])

soma[num1,num2] a[num1, num2] + b[num1, num2]

dif[num1,num2] a[num1, num2] - b[num1, num2]

Fim_para
GABARITO

Escreva("A matriz resultante da soma das matrizes ", num1, " x


", num2, ": ")

Para num1 de 1 at 5 passo 1 faa

Para num2 de 1 at 5 passo 1 faa

Escreva("Posio ", num1, " x ", num2, soma[num1, num2])

Fim_para

Fim_para

Escreva("A matriz resultante da diferena das matrizes ", num1,


" x ", num2, ": ")

Para num1 de 1 at 5 passo 1 faa

Para num2 de 1 at 5 passo 1 faa

Escreva("Posio ", num1, " x ", num2, dif[num1, num2])

Fim_para

Fim_para

Fim.
218 - 219

GABARITO

7.

Algoritmo uni4exe7
Var
num1, num2 : inteiro
contas: vetor[1..12, 1..4] de real
mensal: vetor[1..12] de real
total: real
Incio
Escreva("Entre com os valores das contas a pagar")
Para num1 de 1 at 12 passo 1 faa
Para num2 de 1 at 4 passo 1 faa
Escreva("Digite o valor do ms ", num1, ", semana ", num2)
Leia(contas[num1, num2])
mensal[num1] mensal[num1] + contas[num1, num2]
Fim_para

total total + mensal[num1]


Fim_para
Escreva("O total de contas a pagar, por ms :")
Para num1 de 1 at 12 passo 1 faa
Escreva("Total a pagar no ms ", num1, " : ", mensal[num1])
Fim_para
Escreva("O total de contas a pagar no ano :", total)
Fim.

8.

Tipo
cad_livro = registro
titulo : caractere[256]
autor : caractere[128]
editora : caractere[64]
edicao : inteiro
ano : inteiro
Fim_registro
GABARITO

9.

Algoritmo uni4exe9
Tipo
cad_prof = registro
matricula : inteiro
nome : caractere[128]
formacao : caractere[64]
salario : real
Fim_registro
Var
opt, n1, n2, matricula, contador, achou : inteiro
profs: vetor[1..15] de cad_prof
temp : cad_prof
Incio
Repita
Escreva("Escolha uma das opes:")
Escreva("1 - Cadastrar professores")
Escreva("2 - Listar professores por ordem de salrio")
Escreva("3 - Pesquisar professor por matrcula")
Escreva("4 - Sair")
Leia(opt)
//1 - Cadastrar professores
Se (opt = 1) ento
Escreva("Opo escolhida: 1 - Cadastrar professores")
Escreva("Iniciando entrada de dados...")
Para n1 de 1 at 15 passo 1 faa
Escreva("Digite a matrcula do professor: ")
Leia(profs[n1].matricula)
Escreva("Digite o nome do professor: ")
Leia(profs[n1]. nome)
Escreva("Digite a formao do professor: ")
Leia(profs[n1]. formacao)
Escreva("Digite o salrio do professor: ")
Leia(profs[n1]. salario)
Fim_para
Fim_se
220 - 221

GABARITO

//2 - Listar professores por ordem de salrio

Se (opt = 2) ento

Escreva("Opo escolhida: 2 - Listar professores em ordem")

Para n1 de 1 at 15 faa

Para n2 de n1+1 at 15 faa

Se (profs[n1].salario > profs[n2].salario) ento

temp.matricula profs[n1].matricula

temp. nome profs[n1]. nome

temp. formacao profs[n1]. formacao

temp. salario profs[n1]. salario

profs[n1].matricula profs[n2].matricula

profs[n1]. nome profs[n2]. nome

profs[n1]. formacao profs[n2]. formacao

profs[n1]. salario profs[n2]. salario

profs[n2].matricula temp.matricula

profs[n2]. nome temp. nome

profs[n2]. formacao temp. formacao

profs[n2]. salario temp. salario

Fim_se

Fim_para

Fim_Para

Para n1 de 1 at 15 faa

Escreva("Matrcula: ", profs[n1].matricula)

Escreva("Nome: ", profs[n1].nome)

Escreva("Formao: ", profs[n1].formacao)

Escreva("Salrio: ", profs[n1].salario)

Fim_para

Fim_se
GABARITO

//3 - Pesquisar professor por matrcula

Se (opt = 3) Ento

Escreva("Opo escolhida: 3 - Pesquisar por matrcula")

Escreva("Digite a matrcula para a pesquisa")

Leia(matricula)

achou 0

contador 1

Enquanto ((achou = 0) OU (contador <=15)) faa

Se (matricula = profs[contador].matricula ento

achou 1

contador contador -1

Fim_se

contador contador + 1

Fim_enquanto

Se (achou = 0) Ento

Escreva("Matrcula no encontrada")

Seno

Escreva("Matrcula: ", profs[contador].matricula)

Escreva("Nome: ", profs[contador].nome)

Escreva("Formao: ", profs[contador].formacao)

Escreva("Salrio: ", profs[contador].salario)

Fim_se

Fim_se

At_que(opt = 4)

Fim.
222 - 223

GABARITO

UNIDADE V
1.

#include <stdio.h>

#include <stdlib.h>

#include <strings.h>

struct CadProduto {

int codigo;

char descricao[50];

char unidade[5];

float preco;

};

CadProduto produtos[20];

CadProduto prodTemp;

int opt=0;

int qtdProd=0;

void mostrarMenu(void);

void produtoCadastrar(void);

void produtoBuscar(void);

void produtoOrdenar(int tipo);

void troca(int i, int j);

void produtoMostrar(int pos);

int main(void){

while(opt != 6){

switch(opt){

//Cadastrar

case 1:

produtoCadastrar();

break;

//Pesquisar

case 2:

produtoBuscar();

break;
GABARITO

case 3:

produtoOrdenar(2);

break;

//Classificar Codigo

case 4:

produtoOrdenar(1);

break;

//Mostrar registro

case 5:

produtoMostrar(-1);

break;

system("cls");

mostrarMenu();

scanf("%d",&opt);

return(0);

void mostrarMenu(void){

printf("1 - Cadastrar registro;\n");

printf("2 - Pesquisar um produto pelo codigo;\n");

printf("3 - Classificar por ordem de descricao;\n");

printf("4 - Classificar por ordem de codigo;\n");

printf("5 - Apresentar todos os registros;\n");

printf("6 - Sair do programa de cadastro;\n");

void produtoCadastrar(void){

if(qtdProd<20){

printf("Digite o codigo: ");

scanf("%d",&produtos[qtdProd].codigo);

printf("Digite a descricao: ");

scanf("%s",produtos[qtdProd].descricao);
224 - 225

GABARITO

printf("Digite a unidade: ");

scanf("%s",produtos[qtdProd].unidade);

printf("Digite o preco: ");

scanf("%f",&produtos[qtdProd].preco);

qtdProd++;

printf("Produto cadastrado com sucesso!!!\n\n");

}else{

printf("Limite de 20 produtos cadastrados!!!\n\n");

opt=0;

system("pause");

void produtoBuscar(void){

int i = 0, achou = 0, codigo = 0;

printf("Digite o codigo: ");

scanf("%d",&codigo);

while (i < qtdProd){

if(produtos[i].codigo == codigo){

produtoMostrar(i);

return;

i++;

printf("Poduto nao encontrado...\n\n");

system("Pause");

}
GABARITO

void produtoOrdenar(int tipo){

for(int i=0; i<qtdProd-1; i++){

for(int j=i+1; j<qtdProd; j++){

switch (tipo){

//por codigo

case 1:

if(produtos[i].codigo > produtos[j].codigo){

troca(i, j);

break;

//por descricao

case 2:

if(produtos[i].descricao > produtos[j].descricao){

troca(i, j);

break;

printf("Ordenacao finalizada com sucesso...\n\n");

system("Pause");

void troca(int i, int j){

prodTemp.codigo = produtos[i].codigo;

strcpy(prodTemp.descricao, produtos[i].descricao);

strcpy(prodTemp.unidade, produtos[i].unidade);

prodTemp.preco = produtos[i].preco;

produtos[i].codigo = produtos[j].codigo;

strcpy(produtos[i].descricao, produtos[j].descricao);

strcpy(produtos[i].unidade, produtos[j].unidade);
226 - 227

GABARITO

produtos[i].preco = produtos[j].preco;

produtos[j].codigo = prodTemp.codigo;

strcpy(produtos[j].descricao, prodTemp.descricao);

strcpy(produtos[j].unidade, prodTemp.unidade);

produtos[j].preco = prodTemp.preco;

void produtoMostrar(int pos){

if(pos >=0){

printf("Codigo: %d\n",produtos[pos].codigo);

printf("Descricao: %s\n",produtos[pos].descricao);

printf("Unidade: %s\n",produtos[pos].unidade);

printf("Preco: %.2f\n",produtos[pos].preco);

}else{

for(int i=0; i<qtdProd;i++){

printf("Codigo: %d\n",produtos[i].codigo);

printf("Descricao: %s\n",produtos[i].descricao);

printf("Unidade: %s\n",produtos[i].unidade);

printf("Preco: %.2f\n\n",produtos[i].preco);

system("pause");

}
GABARITO

2.

#include <stdio.h>

#include <stdlib.h>

#include <strings.h>

struct CadPessoa {

char nome[50];

int idade;

float altura;

float peso;

};

CadPessoa pessoas[10];

CadPessoa pessoaTemp;

int opt=0;
int qtdPessoas=0;

void mostrarMenu(void);

void pessoaCadastrar(void);

void pess oaOrdenar(void);

void troca(int i, int j);

void pessoaMediaPeso(void);

void pessoaPeso(float peso);

int main(void){

while(opt != 5){

switch(opt){

//Cadastrar

case 1:

pessoaCadastrar();

break;

//Classificar Idade

case 2:

pessoaOrdenar();

break;
228 - 229

GABARITO

//Calcular media

case 3:

pessoaMediaPeso();

break;

//Pessoas peso acima de 50

case 4:

pessoaPeso(50);

break;

system("cls");

mostrarMenu();

scanf("%d",&opt);

return(0);

void mostrarMenu(void){

printf("1 - Cadastrar pessoa;\n");

printf("2 - Classificar por ordem de idade;\n");

printf("3 - Calcular media de peso;\n");

printf("4 - Mostrar quem estah acima do limite de 50;\n");

printf("5 - Sair do programa de cadastro;\n");

void pessoaCadastrar(void){

if(qtdPessoas<10){

printf("Digite o nome: ");

scanf("%s",pessoas[qtdPessoas].nome);

printf("Digite a idade: ");

scanf("%d",&pessoas[qtdPessoas].idade);

printf("Digite a altura: ");

scanf("%f",&pessoas[qtdPessoas].altura);

printf("Digite o peso: ");


GABARITO

scanf("%f",&pessoas[qtdPessoas].peso);
qtdPessoas++;
printf("Pessoa cadastrado com sucesso!!!\n\n");
}else{
printf("Limite de 10 pessoas cadastrados!!!\n\n");
}
opt=0;
system("pause");
}
void pessoaOrdenar(void){
for(int i=0; i<qtdPessoas-1; i++){
for(int j=i+1; j<qtdPessoas; j++){
if(pessoas[i].idade > pessoas[j].idade){
troca(i, j);
}
}
}
printf("Ordenacao finalizada com sucesso...\n\n");
system("Pause");
}
void troca(int i, int j){
strcpy(pessoaTemp.nome, pessoas[i].nome);
pessoaTemp.idade = pessoas[i].idade;
pessoaTemp.altura = pessoas[i].altura;
pessoaTemp.peso = pessoas[i].peso;
strcpy(pessoas[i].nome, pessoas[j].nome);
pessoas[i].idade = pessoas[j].idade;
pessoas[i].altura = pessoas[j].altura;
pessoas[i].peso = pessoas[j].peso;
strcpy(pessoas[j].nome, pessoaTemp.nome);
pessoas[j].idade = pessoaTemp.idade;
pessoas[j].altura = pessoaTemp.altura;
pessoas[j].peso = pessoaTemp.peso;
}
230 - 231

GABARITO

void pessoaMostrar(int pos){


printf("Nome: %s\n",pessoas[pos].nome);
printf("Idade: %d\n",pessoas[pos].idade);
printf("Altura: %.2f\n",pessoas[pos].altura);
printf("Peso: %.2f\n\n",pessoas[pos].peso);
}
void pessoaMediaPeso(void){
float media = 0;
for (int i = 0;i < qtdPessoas;i++){
media += pessoas[i].peso;
}
media /= qtdPessoas;
printf("A media do peso foi %.2f\n\n", media);
system("pause");
}
void pessoaPeso(float peso){
for(int i = 0 ; i < qtdPessoas; i++){
if(pessoas[i].peso > peso){
pessoaMostrar(i);
}
}
system("pause");
}
GABARITO

3.

#include <stdio.h>

int checaChar(char c);

char letra;

int main(void){

printf("Digite um caractere: ");

scanf("%c",&letra);

if(checaChar(letra)==0){

printf("Voce digitou uma VOGAL: %c\n\n", letra);

}else if(checaChar(letra)==1){

printf("Voce digitou uma CONSOANTE: %c\n\n", letra);

}else {

printf("Voce digitou um NUMERO: %c\n\n", letra);

return(0);

int checaChar(char c){

switch(c){

case 'a':

case 'e':

case 'i':

case 'o':

case 'u':

case 'A':

case 'E':

case 'I':

case 'O':

case 'U':

return(0);

break;
232 - 233

GABARITO

case '1':

case '2':

case '3':

case '4':

case '5':

case '6':

case '7':

case '8':

case '9':

return(2);

default:

return(1);

}
GABARITO

4.

#include <stdio.h>
int somador(int limite);
int num;
int main(void){
printf("Ate qual numero voce quer somar os pares? ");
scanf("%d",&num);
printf("A soma dos pares ateh %d eh: %d\n\n",num,somador(num));
return(0);
}
int somador(int limite){
int soma = 0;
for(int i=0; i<=num;i++){
if(i % 2 == 0){
soma += i;
}
}
return soma;
}

5.

#include <stdio.h>
int num;
int main(void){
printf("Digite um numero inteiro: ");
scanf("%d",&num);
if(num % 2 == 0){
printf("O numero %d eh PAR!\n\n",num);
} else {
printf("O numero %d eh IMPAR!\n\n",num);
}
return(0);
}
234 - 235

GABARITO

6.

#include <stdio.h>
#include <stdlib.h>
int verificador(int num);
int num;
int main(void){
printf("Digite um numero: ");
scanf("%d",&num);
printf("O valor absoluto de %d eh %d.\n\n",num,verificador(num));
return(0);
}
int verificador(int num){
return abs(num);
}

7.

#include <stdio.h>
float conversor(float valor, float taxa);
float euros, cotacao, reais;
int main(void){
printf("Digite o quantidade de Euros: ");
scanf("%f",&euros);
printf("Digite a cotacao do Euro: ");
scanf("%f",&cotacao);
reais = conversor(euros, cotacao);
printf("O valor de %.2f Euros em R$ na cotacao de R$ %.2f eh:
%.2f\n\n",euros,cotacao,reais);
return(0);
}
float conversor(float valor, float taxa){
return valor * taxa;
}
GABARITO

8.

#include <stdio.h>
float conversor(float tempCelsius);
float celsius, fahrnheit;
int main(void){
printf("Digite a temperatura em Celsius: ");
scanf("%f",&celsius);
fahrnheit = conversor(celsius);
printf("O valor de %.2f Celsius em Fahrnheit eh: %.2f\n\n",cel-
sius,fahrnheit);
return(0);
}
float conversor(float tempCelsius){
return (tempCelsius * 1.8 + 32);
}