Académique Documents
Professionnel Documents
Culture Documents
E LGICA DE
PROGRAMAO I
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
autores
Apresentao
Apresentao
permitem agrupar diversas informaes em uma nica varivel. Em relao s estruturas de dados homogneas unidimensionais (vetores) e multidimensionais (matrizes) estudaremos como realizar a atribuio de valores, leitura, entrada e sada de
dados neste tipo de estrutura. Conheceremos mtodos que nos permitem classificar as informaes de acordo com um critrio e realizar pesquisa. Discutiremos,
tambm, as estruturas de dados heterogneas, abordando como realizar atribuio,
entrada e sada de dados utilizando registros.
Por fim, na Unidade V, estudaremos a modularizao de algoritmos utilizando sub-rotinas e a manipulao de arquivos. Conheceremos as sub-rotinas do tipo procedimento e funo, sua sintaxe, peculiaridades e como utiliz-las. Veremos os conceitos
relacionados ao escopo de variveis e a passagem de parmetros por valor e por
referncia, recursividade, construo de funes recursivas e aplicaes de recurso. Trataremos, tambm, o conceito de arquivos, modos de concepo e como manipul-los utilizando operaes de que possibilitem consultar, inserir, modificar e
eliminar dados.
Ao longo deste livro voc encontrar indicaes de leitura complementar as quais
enriquecero o seu conhecimento com mais exemplos de algoritmos. H o momento de reflexo denominado REFLITA, que permite que voc pense com calma sobre
um determinado subtema. importante que voc desenvolva as atividades de autoestudo, pois o momento que voc tem para colocar em prtica os conhecimentos adquiridos e identificar eventuais dificuldades.
Desejo a voc um bom estudo!
8-9
sumrio
UNIDADE I
CONCEITOS BSICOS
15 Introduo
16 Conceituando Algoritmos
19 Como Construir Algoritmos
19 Tipos de Algoritmos
22 Estudando Variveis
25 Tipos de Variveis
26 Constante
27 Expresses
30 Funes Intrnsecas
31 Atribuio
31 Entrada de Dados
32 Sada de Dados
32 Construindo Algoritmos
43 Consideraes Finais
UNIDADE II
ESTRUTURA CONDICIONAL
57 Introduo
58 Estrutura Condicional
59 Estrutura Condicional Simples
sumrio
64 Estrutura Condicional Composta
67 Estrutura Condicional Aninhada
71 Estrutura de Deciso Mltipla
75 Consideraes Finais
UNIDADE III
ESTRUTURA DE REPETIO
89 Introduo
90 Estrutura de Repetio
91 Estrutura Para
96 Estrutura Enquanto
102 Estrutura Repita
104 Estruturas de Repetio Encadeadas
114 Consideraes Finais
UNIDADE IV
10 - 11
sumrio
140 Mtodo Sequencial
142 Matrizes
145 Estruturas de Dados Heterogneas
145 Registros
151 Problema
154 Consideraes Finais
UNIDADE V
195 Concluso
197 Referncias
CONCEITOS BSICOS
UNIDADE
Objetivos de Aprendizagem
Conhecer os princpios bsicos de lgica de programao.
Entender os passos para a construo de algoritmos.
Aperfeioar o raciocnio lgico.
Conhecer os tipos de dados.
Conhecer os comandos de atribuio, entrada e sada de dados.
Plano de Estudo
A seguir, apresentam-se os tpicos que voc estudar nesta unidade:
Conceituando algoritmos
Como construir algoritmos
Tipos de algoritmos
Estudando variveis
Tipos de variveis
Constantes
Expresses
Funes Intrnsecas
Atribuio
Entrada de dados
Sada de dados
Construindo algoritmos
Problema 1
Problema 2
Problema 3
14 - 15
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Introduo
Nesta unidade voc aprender os princpios bsicos de algoritmos e lgica de programao. Algoritmos constituem o conceito central da programao e a atividade
de programar envolve a construo de algoritmos. Em geral, so utilizados para
a soluo de um problema, contudo, no se constituem em nica soluo para
um problema e podemos ter vrios algoritmos que resolvem o mesmo problema.
Primeiramente, ser abordado o conceito de algoritmos e voc descobrir
que empiricamente j conhece e utiliza algoritmos no seu cotidiano. Estudaremos
tipos de algoritmos e as formas que podemos utilizar para representar a soluo
do problema e, especificamente, trataremos sobre a representao por meio de
linguagem natural, simbologia e linguagem restrita.
Para facilitar o processo de ensino-aprendizagem ser apresentado um mtodo
para a construo de algoritmos que divide os problemas em trs partes: Entrada
Processamento Sada. Esse mtodo nos auxiliar a sistematizar as informaes para a construo de algoritmos.
Ao formular algoritmos precisamos guardar algumas informaes do problema. Para isso veremos o conceito de variveis e constantes. Conheceremos os
tipos de variveis numricas, literais e lgicas e a caracterstica da informao
que cada uma delas pode armazenar. Alm de guardar informaes precisaremos
obter dados, mostrar mensagens e resultados de processamento. Desta forma,
estudaremos os comandos relacionados entrada de dados que nos permitem
interagir como usurio; atribuio que possibilita atribuir valor s variveis; e,
sada de dados que viabiliza o envio de mensagens e a exibio dos resultados
do processamento.
Construiremos trs algoritmos para visualizar a aplicao de cada um dos
conceitos abordados. Aps estudar esta unidade voc poder responder s questes relacionadas com o tema de Algoritmos e Lgica de Programao I, tais
como: Que informaes so de entrada e quais so de sada? Que tipo de varivel devo utilizar? Como exibo um resultado ao usurio? Qual o resultado da
simulao do algoritmo?
Introduo
Alm disto, voc aprender os conceitos de variveis, constantes, expresses, funes, atribuio, comando de entrada, comando de sada e tcnicas de raciocnio
lgico para a soluo de problemas. Todo esse conhecimento voc poder utilizar para construir os primeiros algoritmos que resolvem problemas! Vamos l?!
Para dar incio a nossa disciplina de Algoritmos e Lgica de Programao I precisamos entender o conceito de algoritmos. O que vem a ser um algoritmo? Voc
j ouviu esse termo?
Um algoritmo consiste em uma sequncia finita de passos (instrues) para
solucionar um problema. Podemos ter vrios algoritmos que resolvem um mesmo
problema, desta forma um algoritmo no a nica soluo de um problema.
Um algoritmo um caminho para a soluo de um problema, visto que podem
existir diversos caminhos que conduzem soluo (LOPES; GARCIA, 2002).
Ao resolver algoritmos vamos construindo a nossa prpria lgica de programao. No h receita mgica e o aprendizado de algoritmos requer prtica.
Mas no se preocupe! No decorrer deste livro teremos contato com diversos
exemplos e atividades de autoestudo.
Se pararmos um pouco para pensar, em nosso
cotidiano encontramos uma srie de problemas
os quais demandam por uma soluo. E um algoritmo nada mais do que um conjunto de passos que
resolvem um determinado problema. Isto quer dizer
que empiricamente j conhecemos diversos algoritmos. Tomemos como exemplo o problema de ir para
o trabalho (Quadro 1)
shutterstock
CONCEITOS BSICOS
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Conceituando Algoritmos
16 - 17
1. Desligar o despertador
2. Ir para o banheiro
3. Lavar o rosto
4. Escovar os dentes
5. Tirar o pijama
6. Colocar uma roupa
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Conceituando Algoritmos
A sequncia de passos a ser seguida para realizar uma ligao telefnica apresentada no Quadro 3.
1. Inserir o nmero
2. Apertar o boto para fazer ligao
3. Esperar atender
4. Falar no telefone
Como j sabemos o que um algoritmo, outro conceito importante que precisamos compreender o de programa de computador. Um programa nada mais
que uma sequncia de instrues codificada em uma linguagem que pode ser
seguida por um computador. a representao de um algoritmo em uma linguagem de programao (C, Pascal, Java, Fortran etc.) (ZIVIANE, 2004; SALVETTI;
BARBOSA, 2004).
CONCEITOS BSICOS
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
18 - 19
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
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
CONCEITOS BSICOS
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
20 - 21
Smbolo
Descrio
Indica o incio e o fim do algoritmo.
Indica o sentido do fluxo de dados.
Indica a realizao de clculos e operaes de atribuio.
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Para melhor compreenso, apresenta-se na Figura 1, fluxograma para o problema de somar dois nmeros.
Incio
N1, N2
S = N1+N2
S
Fim
Algoritmo soma
Var n1, n2, s: inteiro
Incio
Leia n1, n2
sn1 + n2
Escreva(s)
Fim
Quadro 7: Pseudocdigo Algoritmo Soma
Estudando Variveis
Para elaborar algoritmos precisamos guardar algumas informaes e para
isto utilizamos as variveis. Uma varivel um espao na memria principal
do computador que pode conter diferentes valores a cada instante de tempo
(LOPES;GARCIA, 2002).
Uma varivel pode ser vista como uma caixa que armazena pertences. Esta
caixa tem um nome e somente guarda objetos do mesmo tipo. Uma varivel
possui um nome e seu contedo pode ser de vrios tipos: inteiro, real, caractere, lgico entre outros.
Na Figura 2 temos uma varivel com nome Idade. Essa varivel pode guardar
apenas valores inteiros. Com isto, temos que o valor Casa no pode ser armazenado nesta caixa, visto que se trata de um conjunto de caracteres.
Em um algoritmo o contedo de uma varivel pode ser modificado, consultado ou apagado quantas vezes forem necessrias. importante ter cincia de
CONCEITOS BSICOS
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
22 - 23
shutterstock
que a varivel armazena apenas um contedo por vez. Na Figura 2, nossa caixa
denominada Idade recebe uma sequncia de valores sendo eles 25, 60, 13 e 36.
Sabemos que uma varivel armazena apenas um contedo por vez, desta forma
quando realizarmos uma consulta obteremos o valor 36 para a varivel Idade.
casa
25
As variveis so definidas logo no
incio do algoritmo para que a rea
Idade
Idade
na memria seja alocada. A definio de variveis realizada utilizando
Figura 2: Varivel
o comando VAR, primeiro definimos o
Fonte: a autora
nome e, em seguida, o tipo, do seguinte
modo:
36
13
60
25
Idade
Figura 3: Varivel
Fonte: a autora
Estudando Variveis
Identificadores invlidos
b@
media
media idade
altura2
caso
media_idade
se
x36
x*y
CONCEITOS BSICOS
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
24 - 25
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Tipos de Variveis
Como sabemos, as nossas variveis s podem armazenar dados do mesmo tipo.
Os tipos de variveis so: inteiro, real, caractere e lgico.
Uma varivel inteira armazena dados numricos que no possuem componentes decimais ou fracionrios. Podendo o nmero ser positivo ou negativo
(ASCENCIO; CAMPOS, 2010). Alguns exemplos de nmeros inteiros so:
-3, -1, 0, 4, 7. Desta forma, a declarao de uma varivel inteira realizada da
seguinte forma:
Var
Idade : Inteiro
Outro tipo de varivel numrica a real, que armazena componentes decimais ou fracionrios, podendo estes ser positivos ou negativos. Alguns exemplos
de nmeros reais so: 15.02, 4.5, 6.07 e outros. A declarao de uma varivel do
tipo real dada por:
Var
Altura : Real
Neste ponto voc pode estar se perguntando: que diferena faz declarar uma
varivel como inteira ou real? Declaro todas as variveis como real j que o conjunto dos inteiros est incluso nos reais?
A diferena est no tamanho do espao de memria utilizado. Normalmente,
uma varivel inteira pode ocupar 1, 2 ou 4 bytes. Enquanto uma varivel real
poder ocupar 4 ou 8 bytes (LOPES; GARCIA, 2002). Isto nos indica que se alocarmos todas as variveis como real, estaremos alocando um espao de memria
desnecessrio e sabemos que uma srie de informaes no assumem valores
decimais ou fracionrios. Por exemplo, quando perguntamos a idade para uma
pessoa, obtemos como resposta 26 anos e no 26,3 anos. Desta forma, para armazenar a idade utilizamos sempre variveis do tipo inteiro. Do mesmo modo,
existem informaes que so necessariamente do tipo real, tais como altura,
peso, notas, mdias e outras.
At o momento conhecemos as variveis numricas, no entanto existem
dados literais que devemos processar, para tanto utilizamos as variveis do tipo
Tipos de Variveis
Var
Nome :
Caractere [tamanho]
Ocupado : Lgico
Constante
Uma constante armazena informaes que no variam com o tempo, ou seja, o
seu contedo um valor fixo. Da mesma forma que as variveis, todas as constantes devem ser definidas no incio do algoritmo. O comando utilizado para
definir constantes o CONST e sua definio dada por:
CONCEITOS BSICOS
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
26 - 27
CONST
<nome da constante> = <valor>
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Expresses
De acordo com Lopes e Garcia (2002), as expresses esto diretamente relacionadas ao conceito de frmula matemtica, em que um conjunto de variveis e
constantes relaciona-se por meio de operadores. As expresses dividem-se em:
aritmticas, relacional, lgicas e literais.
As expresses aritmticas so aquelas em que o resultado consiste em um
valor numrico. Desta forma, apenas operadores aritmticos e variveis numricas (inteiro e real) podem ser utilizados em expresso desse tipo.
O Quadro 9 apresenta os operadores aritmticos, destacando suas representaes, forma de uso e prioridade. A prioridade entre operadores define a
ordem em que os mesmos devem ser avaliados dentro de uma mesma expresso.
Operao
Soma
Operador
Significado
Prioridade
Subtrao
Multiplicao
Expresses
Operao
Operador
Significado
Prioridade
**
Exponenciao
Resto
inteira
mod
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
CONCEITOS BSICOS
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Diviso
28 - 29
Operador
Disjuno
Smbolo
Explicao
Prioridade
OU
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
NO
As expresses literais consistem em expresses cujo resultado um caractere. H um nico operador literal, o +, que utilizado na concatenao de duas
ou mais variveis do tipo caractere. Esse operador utilizado para acrescentar
o contedo de uma varivel ao final de outra. Por exemplo, a concatenao de
ALGO + RITMO resulta em ALGORITMO.
Em uma expresso podemos ter mais de um operador. Em situaes que h
um nico operador a avaliao da expresso realizada de forma direta. Quando
h mais de um operador necessria a avaliao da expresso passo a passo, ou
seja, um operador por vez. A precedncia das operaes realizada por meio de
parnteses e de acordo com a prioridade dos operadores.
Por exemplo, temos: x + y * 25. Neste caso, a primeira operao a ser realizada a multiplicao de y por 25, visto que o operador de multiplicao tem
prioridade 3 e a soma prioridade 4. Se quisermos multiplicar o produto da soma
de x e y por 25 temos que representar a expresso do seguinte modo: (x+y) *
25. Neste caso, primeiro executada a operao que est entre os parnteses e
depois a multiplicao, ou seja, os parnteses tm precedncia.
Fique tranquilo! Colocaremos em prtica as questes relacionadas precedncia de operadores na seo Construindo Algoritmos.
Expresses
Funes Intrnsecas
As funes so frmulas matemticas prontas que podemos utilizar em nossos
algoritmos. O Quadro 12 apresenta as principais funes, destacando o comando
associado e o que ela faz.
Objetivo
ABS(varivel)
ARCTAN(varivel)
COS(varivel)
EXP(varivel)
FRAC(varivel)
LN(varivel)
PI
SIN(varivel)
SQR(varivel)
SQRT(varivel)
CONCEITOS BSICOS
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Funo
30 - 31
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Atribuio
J sabemos o que so variveis, quais os tipos de variveis e expresses que podemos associar a elas, agora precisamos entender como armazenar um dado em
uma varivel. A atribuio consiste no processo de fornecer um valor a uma varivel, em que o tipo desse valor tem que ser compatvel com a varivel (LOPES;
GARCIA, 2002).
O smbolo utilizado para a atribuio e a representao dada por:
identificador expresso
O identificador representa a varivel a qual ser atribudo um valor e o termo
expresso o que ser atribudo, podendo ser uma expresso aritmtica, lgica
ou literal. Tomemos como exemplo atribuir a uma varivel denominada idade
o valor 26. Para isso, temos que:
idade 26
A leitura dessa instruo realizada do seguinte modo: a varivel idade recebe
o valor 26.
Entrada de Dados
A entrada de dados permite receber os dados digitados pelo usurio e realizada
por meio do comando leia. Os dados recebidos so armazenados em variveis
(ASCENCIO; CAMPOS, 2010).
A sintaxe do comando :
leia
<varivel>
Atribuio
Sada de Dados
A sada de dados permite mostrar dados aos usurios. O comando utilizado o
escreva, que busca as informaes na memria e posteriormente as disponibiliza por meio de um dispositivo de sada (monitor ou impressora).
A sintaxe do comando de sada :
escreva
<varivel> ou <literal>
Construindo Algoritmos
shutterstock
CONCEITOS BSICOS
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
32 - 33
PROBLEMA 1
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Var
Idade : inteiro
Nome : caractere[50]
Telefone : caractere[15]
Construindo Algoritmos
Note que as variveis do mesmo tipo podem ser declaradas na mesma linha,
como o caso de peso e altura. Se as variveis do tipo caractere tivessem o mesmo
tamanho poderamos declar-las de modo anlogo. Declarar como caractere[50]
indica que o tamanho mximo que a varivel ir armazenar de 50 caracteres.
Todo algoritmo delimitado pela instruo de Incio, logo:
Incio
CONCEITOS BSICOS
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
34 - 35
Algoritmo problema1
Var
Nome : caractere[50]
Telefone : caractere[15]
Incio
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Idade : inteiro
Fim.
Leia (nome)
Construindo Algoritmos
PROBLEMA 2
Um quadrado (Figura 4) uma figura geomtrica
com quatro lados de mesmo comprimento (l) e quatro ngulos retos. Elabore um algoritmo para calcular
1
a rea e o permetro de um quadrado. Observando
a Figura 4, a rea dada pela superfcie (laranja) e o
permetro a medida do contorno do objeto, a soma
1
dos quatro lados (pontilhado).
Figura 4: Quadrado
Fonte: a autora
No iremos elaborar o pseudocdigo diretamente,
primeiro vamos dividir o problema tal como aprendemos na seo COMO
CONSTRUIR ALGORITMOS, em objetivo do algoritmo, entrada, processamento e sada. Com isso, temos que:
Objetivo do algoritmo: calcular o permetro e rea de um quadrado.
CONCEITOS BSICOS
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
O peso : 60.3
36 - 37
Entrada: para calcular o permetro e a rea precisamos saber qual o comprimento do lado do quadrado, ou seja, temos que saber o valor de l.
Processamento: clculo do permetro e da rea. O permetro (P) a
soma dos quatro lados, pode ser representado por P = 4 x l. A rea (A)
dada por A = l x l.
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Construindo Algoritmos
Var
L, A, P: real
Sabemos que o algoritmo uma sequncia finita de passos, delimitada por Incio
e Fim, com as instrues de entrada, processamento e sada dentro desses limites. Portanto:
Incio
Estas instrues indicam que a varivel A e a varivel P armazena o resultado da expresso que definimos.
Passamos pela entrada e processamento, agora temos que informar o resultado, ou seja, a sada de dados, que realizada pelo comando escreva. O objetivo
informar o valor da rea e do permetro, portanto:
Escreva (O permetro :, P)
Escreva (A rea :, A)
Note que a instruo Fim possui um ponto final. O algoritmo completo que
formulamos encontra-se no Quadro 15. Note que as palavras-chave esto em
negrito. Lembre-se que essas palavras so reservadas, desta forma no podemos utiliz-las para nomear os identificadores (programas, variveis, constantes
e outros).
CONCEITOS BSICOS
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
38 - 39
Algoritmo quadrado
Var
L,A,P: real
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Incio
Leia(L)
AL*L
P4*L
Fim
Escreva(O permetro :, P)
Escreva(A rea :, A)
Neste problema, colocamos em prtica o conceito de variveis, tipos de variveis, expresses aritmticas, entrada, processamento e sada de dados. E, ao
final, testamos o algoritmo.
Construindo Algoritmos
PROBLEMA 3
Elaborar um algoritmo que apresente o salrio bruto, salrio lquido, INSS e FGTS
de um funcionrio, sabendo que o salrio bruto dado por (Horas Trabalhadas
+ Horas Extras*(1+Porcentagem Hora Extra))*Valor por Hora. A Porcentagem
de Hora Extra 100%. O valor do INSS dado por Salrio Bruto * 9% e o FGTS
Salrio Bruto * 8%. Por fim, o salrio lquido dado pelo salrio bruto INSS.
Estruturando o problema em objetivo, entrada, processamento e sada,
temos que:
Objetivo do algoritmo: apresentar o valor do salrio bruto, salrio lquido,
INSS e FGTS.
Entrada: para calcular o salrio bruto do funcionrio precisamos obter
o nmero de horas, nmero de horas extras e o valor da hora trabalhada.
Processamento: calcular o salrio bruto, INSS, FGTS e salrio lquido.
Sada: informar o salrio bruto, salrio lquido, INSS e FGTS.
A partir das informaes da entrada de dados e do processamento possvel
determinar as variveis do problema, sendo elas: htrabalhadas, hextra, vhora,
sbruto, inss, fgts e sliquido. Essas variveis so numricas e do tipo real.
O pseudocdigo para o problema descrito apresentado no Quadro 17.
CONCEITOS BSICOS
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
shutterstock
40 - 41
Algoritmo salario
Var
Phoraextra = 10
Const
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Incio
Leia(htrabalhadas)
sbruto (htrabalhadas+hextra*(1+(phoraextra/100)))*vhora
inss sbruto*(9/100)
FGTS sbruto*(8/100)
sliquido sbruto-inss
Fim
A constante phoraextra foi definida pelo fato do valor ser invarivel, neste
caso, sendo 100%. Aps a entrada de dados foi efetuado o processamento, composto por quatro expresses, em que podemos observar o uso de parnteses.
Esses parnteses servem para indicar a precedncia das operaes, ou seja, primeiramente realizada a operao que est dentro deles e, em seguida, as demais,
observando tambm a precedncia.
Construindo Algoritmos
Vamos tomar como exemplo os seguintes valores para a entrada de dados: Horas
trabalhadas = 20, horas extras = 5 e valor da hora = 10. Substituindo esses valores na expresso para clculo do salrio bruto teramos que:
sbruto (20 + 5*(1+(100/100)))*10
CONCEITOS BSICOS
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Para facilitar o entendimento acompanhe a resoluo deste clculo fazendo-o no papel. A prioridade de execuo o conjunto de parnteses interno,
ou seja, a diviso resultando em 1. Aps a realizao da diviso ser executada
a operao de soma cujo resultado 2. Continuando a ordem de precedncia
temos que ser realizada a multiplicao entre 5 e 2, resultando em 10, o qual
ser somado com o valor 20, tendo como resultado 30. Por fim, ser realizada a
multiplicao de 30 e 10, resultando em 300.
Ao final da execuo do algoritmo obteremos os resultados, conforme apresentado no Quadro 18.
42 - 43
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Consideraes Finais
Nesta unidade foi introduzido o conceito central da disciplina, algoritmo. O
algoritmo consiste em um conjunto de instrues para solucionar um problema.
Enfatizando, dado um problema, podemos ter vrios algoritmos que o resolvem,
ou seja, temos o algoritmo como um possvel caminho para a soluo. Alm
disso, voc pde perceber que o termo algoritmo est presente no nosso dia a
dia nas mais diversificadas situaes, sempre que temos uma sequncia de passos para realizar uma tarefa.
Entendemos o processo de anlise de problemas, que consiste na diviso
do problema em trs partes: Entrada (dados que precisamos solicitar ao usurio), Processamento (operaes que devemos efetuar) e Sada (informaes
que devemos mostrar ao usurio). Percebemos que esses passos nos auxiliam
na construo do algoritmo e raciocnio lgico e facilitam a nossa compreenso sobre o problema.
Dentre os tipos de algoritmos estudamos a descrio narrativa, o fluxograma
e o pseudocdigo. Vimos que na descrio narrativa o problema representado
por meio da linguagem natural, o fluxograma apresenta uma notao grfica
especfica para representao e o pseudocdigo utiliza regras pr-definidas. Ao
longo de nossa disciplina adotaremos a representao em pseudocdigo devido
a facilidade de converso para uma linguagem de programao.
Aprendemos a armazenar os dados obtidos utilizando variveis, que so
espaos na memria principal e que contm diversos valores a cada instante de
tempo. Fizemos a analogia de variveis com caixas, de modo que essas caixas s
podem armazenar pertences do mesmo tipo. Com isto, vimos os tipos de variveis numricas (inteiro e real), lgicas (boolean) e literais (caractere).
Em relao s regras para nomear identificadores (nomes das variveis, programas, rotinas, constantes etc.) aprendemos que: devem iniciar com letras, nunca
nmeros; no podem conter espaos; no podem conter caracteres especiais; e,
no podem ser utilizadas palavras reservadas. As palavras reservadas so aquelas que possuem uso especfico no pseudocdigo, tais como: var, tipo, incio, fim,
se, ento, seno, enquanto, repita, faa, caso, at, procedimento, funo, e outros.
Estudamos as expresses e os operadores aritmticos (soma, subtrao,
Consideraes Finais
CONCEITOS BSICOS
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
44 - 45
Algoritmo exe5a
Var
Var
A,B,C: inteiro
Incio
A,B,C: inteiro
Incio
A 5
A 5
B 30
B 30
C A
C A
B C
A B
A B
B C
Escreva A
Escreva A
Escreva B
Escreva B
Escreva C
Escreva C
Fim
Fim
EXERCCIOS DE FIXAO
1. Elabore um algoritmo que leia um nmero inteiro e apresente o antecessor, o
nmero e o sucessor.
Objetivo do algoritmo: apresentar o antecessor e o sucessor de um nmero.
Entrada: ler um nmero inteiro.
Processamento: calcular o valor do nmero menos um (antecessor) e o valor do
nmero mais um (sucessor).
Sada: apresentar o antecessor, o nmero e o sucessor.
Algoritmo numero
Var
num: inteiro
Incio
Fim.
Leia (num)
46 - 47
Algoritmo triangulo
Var
Incio
Leia (base)
Leia (altura)
Fim.
3. Construa um algoritmo que leia o preo de um produto, o percentual de desconto e calcule o valor a pagar e o valor do desconto.
Objetivo do algoritmo: calcular o valor a pagar de um produto.
Entrada: ler o preo de um produto e o percentual de desconto.
Processamento: calcular o valor do desconto e subtrair do preo do produto.
Sada: imprimir o valor a pagar do produto e o valor do desconto.
Algoritmo produto
Var
Inicio
Leia(preco)
Leia(pdesconto)
Vdesconto (preco*pdesconto)/100
Vpagar preco vdesconto
Fim
4. Elabore um algoritmo que leia a quantidade de livros que uma locadora de livros
possui e o valor do aluguel por livro. Apresente as seguintes informaes: a) faturamento mensal se todos os livros forem locados; b) faturamento anual se 20%
dos livros no forem locados todo ms.
Objetivo do algoritmo: calcular o faturamento mensal e o anual de uma locadora de livros.
Entrada: ler a quantidade de livros e o valor do aluguel.
Processamento: calcular o faturamento mensal considerando que todos os livros foram locados e o faturamento anual considerando que 20% dos livros no
sero locados.
Sada: imprimir o valor do faturamento mensal e o valor do faturamento anual.
48 - 49
Algoritmo faturamento
Var
qidade: interio
Incio
Leia(qidade)
Leia(valor)
fmensal qidade*valor
fanual ((qidade*0,8)*valor)*12
Fim
5. Escreva um algoritmo que leia o valor da hora aula, o nmero de aulas dadas no
ms e o percentual de desconto do INSS. Calcule e apresente o salrio lquido e
o salrio bruto.
Objetivo do algoritmo: calcular o salrio lquido e o salrio bruto de um professor.
Entrada: ler o valor da hora aula, o nmero de aulas dadas no ms e o percentual
de desconto do INSS.
Processamento: calcular o salrio bruto que dado pelo produto do nmero de
aulas pelo valor da aula e calcular o salrio lquido que o salrio bruto menos
o desconto do INSS.
Sada: imprimir o valor do salrio bruto e o valor do salrio lquido.
Algoritmo salario
Var
Incio
Leia(vhora)
Leia(pdesconto)
sbruto vhora*naulas
Fim
e permetro que
50 - 51
Algoritmo circulo
Var
Incio
Leia(raio)
area 2 * pi*raio
Fim
Algoritmo funcoes
Var
raiz: real
Leia(num)
Incio
Raiz sqrt(num)
Quadrado sqrt(num)
Fim
52 - 53
MATERIAL COMPLEMENTAR
Material Complementar
ESTRUTURA CONDICIONAL
UNIDADE
II
Objetivos de Aprendizagem
Conhecer a estrutura condicional simples.
Conhecer a estrutura condicional composta.
Conhecer a estrutura condicional aninhada.
Conhecer a estrutura de deciso mltipla.
Elaborar algoritmos utilizando estrutura condicional.
Plano de Estudo
A seguir, apresentam-se os tpicos que voc estudar nesta unidade:
Estrutura condicional
Estrutura condicional simples
Estrutura condicional composta
Estrutura condicional aninha
Estrutura de deciso mltipla
56 - 57
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Introduo
Nesta unidade voc estudar a estrutura condicional conhecendo a estrutura
condicional simples, composta, aninhada e de deciso mltipla. Com os conhecimentos adquiridos na Unidade I conseguamos construir algoritmos que a
partir da entrada, os dados eram processados e apresentavam algumas informaes na sada, isto , algoritmos sequenciais.
Nos algoritmos sequenciais o fluxo seguido de modo sequencial, ou seja,
todas as instrues eram executadas uma a uma. No conseguamos impor condies para a execuo das instrues. Se pararmos para pensar em diversas
situaes temos que realizar uma verificao, analisar o resultado desta verificao para saber que caminho seguir, ou seja, temos desvios de fluxo. Isso acontece
quando vamos comprar um carro, por exemplo, dependendo do valor da entrada
a taxa de juros pode ser maior ou menor. Quando temos que apresentar a mdia
escolar de um aluno e tomar a deciso se ele est aprovado, reprovado ou de
exame. No conseguimos tratar essas duas situaes utilizando apenas os conceitos de variveis, tipos de variveis, constantes, comando de atribuio, entrada
e sada de dados. Precisamos de uma estrutura que nos permita impor condies para a execuo de uma determinada instruo, ou ainda, criar condies
que possibilitem desviar o fluxo.
Estudaremos a estrutura condicional simples que nos permite tomar uma
deciso. A estrutura condicional composta que a partir de uma expresso podemos seguir dois caminhos, um quando o resultado do teste verdadeiro e outro
quando o resultado falso. A estrutura condicional aninhada ou encadeada
que nos permite estabelecer verificao de condies sucessivas. E a estrutura
de deciso mltipla que uma generalizao da estrutura condicional composta em que pode haver uma ou mais condies a serem testadas e cada uma
delas pode ter uma instruo diferente associada. Alm disso, veremos a tabela
verdade para cada um dos operadores lgicos e como construir expresses relacionais e lgicas. Os operadores e expresses foram vistos na Unidade I, se voc
ficou com alguma dvida no se preocupe, pois ao longo desta unidade revisaremos estes conceitos.
Introduo
II
ESTRUTURA CONDICIONAL
reproduo proibida. art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
ESTRuTuRA CONDICIONAL
58 - 59
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
fim_se
A : inteiro
Leia (A)
Incio
Fim.
Fim_se
II
De acordo com Lopes e Garcia (2002), a condio uma expresso lgica, portanto ao ser testada devolve como resposta o valor verdadeiro ou falso. Uma
condio pode ser representada por uma expresso relacional ou por uma expresso lgica formada por pelo menos duas expresses relacionais. Os operadores
relacionais vistos na Unidade I so >, <, =, >=, <= e <>. J os operadores lgicos so E, OU e NO.
Agora fica mais clara a aplicao dos operadores relacionais e como eles so
utilizados em nossos algoritmos. Alguns exemplos de expresso relacional so:
A < B
Sexo = F
Resposta <> Sim
Quando nossa condio uma expresso lgica temos pelo menos duas
expresses relacionais que esto ligadas por um operador lgico. Voc se recorda
do funcionamento dos operadores lgicos? O operador E resulta em verdadeiro
somente quando as duas condies so verdadeiras, como pode ser visto na tabela
verdade apresentada no Quadro 27.
Operador E
Condio 1
Condio 2
Resultado
Verdadeiro
Verdadeiro
Verdadeiro
Verdadeiro
Falso
Falso
Falso
Verdadeiro
Falso
Falso
Falso
Falso
O operador OU resulta em verdadeiro quando pelo menos uma das condies verdadeira. Sendo o resultado falso apenas quando as duas condies so
falsas, como pode ser visualizado no Quadro 28.
ESTRUTURA CONDICIONAL
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
X > 16
60 - 61
Operador OU
Condio 1
Condio 2
Resultado
Verdadeiro
Verdadeiro
Verdadeiro
Verdadeiro
Falso
Verdadeiro
Falso
Verdadeiro
Verdadeiro
Falso
Falso
Falso
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Condio
Resultado
Verdadeiro
Falso
Falso
Verdadeiro
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)
II
algoritmo par
Var
n, resto, metade:inteiro
Escreeva(Digite um nmero);
Incio
Leia(n)
reston mod2
Se(resto=0)ento
Fim_se
Escreva(A metade do
Fim.
ESTRUTURA CONDICIONAL
nmero,metade)
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
62 - 63
n: inteiro
Incio
Leia (n)
Se (n mod 2 = 0) ento
Fim_se
Fim.
II
Seno
fim_se
Agora que voc conhece a estrutura condicional composta, podemos construir um algoritmo para verificar se um nmero inteiro par ou mpar. O Quadro
32 apresenta o pseudocdigo para verificar se um nmero par ou mpar.
Algoritmo parimpar
Var
n: inteiro
Incio
Leia (n)
Se (n mod 2 = 0) ento
ESTRUTURA CONDICIONAL
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Se (<Condio>) ento
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
64 - 65
nmero par. Caso o resultado do teste seja falso executada a instruo que
se encontra em o seno e o fim_se, escreve O nmero mpar. Por exemplo,
se o nmero obtido na entrada for 5 temos que 5 mod 2 igual a 1, ou seja, o
teste da expresso resulta em falso, logo ser impresso que O nmero mpar.
Na estrutura condicional composta podem ser utilizadas expresses relacionais e expresses lgicas, tal como na estrutura condicional simples.
Antes de conhecer outros tipos de estrutura condicional vamos praticar mais
a construo de algoritmos utilizando expresses lgicas. O problema consiste
em: dado um nmero inteiro verificar se ele est compreendido entre 20 e 90.
No processo de resoluo seguiremos os seguintes passos:
Objetivo do algoritmo: verificar se o nmero est compreendido entre
20 e 90.
Entrada: obter um nmero inteiro.
Processamento: verificar se o nmero est entre 20 e 90.
Sada: imprimir se o nmero est dentro ou fora da faixa de 20 a 90.
Para identificar o nmero de variveis devemos observar o que requerido na
entrada e no processamento, neste caso temos que a entrada um nmero inteiro
(denominadores varivel n do tipo inteiro) e o processamento pode ser realizado
usando apenas expresses lgicas, portanto no precisamos de mais variveis.
A verificao se o nmero est na faixa entre 20 e 90, pode ser descrita como:
n tem que ser maior que 20 e menor do que 90. Com isto, temos duas expresses relacionais: n > 20 e n < 90.
A sada de dados consiste em imprimir se o nmero est ou no dentro dos
limites dessa faixa. O Quadro 33 apresenta o algoritmo para o problema descrito.
II
Algoritmo faixa
Var
n: inteiro
Incio
Leia (n)
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
ESTRUTURA CONDICIONAL
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
90)
66 - 67
pelo operador E sendo uma delas falsa e a outra verdadeira, o resultado do teste
lgico falso. Com isto, temos a execuo da instruo compreendida entre o
seno e o fim_se, O nmero est fora da faixa.
Operador E
Condio 1
Condio 2
Resultado
20 > 20
20 < 90
Falso
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
II
Var
a, b, c, max: inteiro
Incio
Leia (a)
Leia (b)
Se (a > b) ento
Se (a > c) ento
Seno
Fim_se
Se (b>c) ento
seno
Fim_se
max b
max c
seno
max b
max c
Fim_se
Fim.
ESTRUTURA CONDICIONAL
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Algoritmo maior
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
68 - 69
II
Algoritmo maior
Var
a, b, c, max: inteiro
Incio
Leia (b)
Leia (c)
Se (a > c) ento
Se (a > b) ento
max a
max b
Seno
Fim_se
seno
max c
Fim_se
Fim_se
Fim.
Teste o funcionamento dos dois algoritmos supondo a=5, b=3 e c=12. Qual
a vantagem de utilizar a estrutura condicional aninhada? A grande vantagem
que o uso destes encadeados melhora o desempenho do algoritmo, isto , torna
o algoritmo mais rpido por realizar menos testes e comparaes. Ou ainda, executar um menor nmero de passos para chegar soluo do problema.
ESTRUTURA CONDICIONAL
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Leia (a)
70 - 71
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Fim_caso
II
Var
num: inteiro
Incio
Leia (num)
Caso (num)
Seno Escreva (O nmero digitado no corresponde a nenhum ms)
Fim_caso
Fim.
ESTRUTURA CONDICIONAL
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Algoritmo Ms
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
72 - 73
num: inteiro
Incio
Leia (num)
Se (num = 1) ento
Fim_se
Escreva (Janeiro)
Se (num = 2) ento
fim_se
Escreva (Fevereiro)
Se (num = 3) ento
Fim_se
Escreva (Maro)
Se (num = 4) ento
Fim_se
Escreva (Abril)
II
Se (num = 5) ento
Fim_se
Escreva (Maio)
Se (num = 6) ento
Fim_se
Escreva (Junho)
Se (num = 7) ento
Fim_se
Escreva (Julho)
Se (num = 8) ento
Fim_se
Escreva (Agosto)
Se (num = 9) ento
Fim_se
Escreva (Setembro)
Fim_se
Escreva (Outubro)
Fim_se
Escreva (Novembro)
Fim_se
Escreva (Dezembro)
Se (num < > 1 ) e (num < > 2) e (num < >3) e (num <
>4) e (num < >5) e (num< >6) e (num< >7) e (num< >8)
e (num < > 9) e (num < > 10) e (num< >11) e (num< >12)
ento
Escreva (O nmero digitado no corresponde a
nenhum ms)
fim_se
Fim.
ESTRUTURA CONDICIONAL
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
74 - 75
Os algoritmos apresentados no Quadro 38 e Quadro 39 so soluo para o problema. Voc sabe qual a diferena entre eles? Supondo que o nmero digitado
tenha sido 3. No primeiro algoritmo acontecesse a verificao Caso 1, Caso 2
e Caso 3. Como Caso 3 verdadeiro ocorre a execuo da instruo Escreva
Maro e o fluxo de execuo segue para o fim_caso, isto , os demais casos no
so testados. No segundo algoritmo temos que todas as instrues sero verificadas. Desta forma, a diferena entre os dois algoritmos est no desempenho, no
nmero de instrues que ser executada e isso impacta no tempo de execuo
dos nossos programas. Portanto, importante que voc escreva algoritmos eficientes. Voc j se perguntou como fazer um algoritmo eficiente? Um algoritmo
eficiente utiliza apenas o nmero necessrio de variveis j que cada varivel
consiste um espao de memria reservado. Alm disso, podemos associar a eficincia com o nmero de instrues que o algoritmo executa para resolver um
problema. Com isto, temos que no devemos declarar variveis que no sero
utilizadas e dar preferncia estrutura condicional aninha ou de escolha mltipla, ao invs de construir vrias estruturas simples.
Consideraes Finais
Nesta unidade voc aprendeu a construir algoritmos com desvios de fluxo, isto
, algoritmos em que podemos impor condies execuo de uma determinada instruo a um teste. Essa estrutura que nos possibilita desviar o fluxo do
programa conhecida na literatura como estrutura condicional, estrutura de
seleo ou estrutura de controle.
Estudamos quatro formas de estrutura condicional: estrutura condicional simples, estrutura condicional composta, estrutura condicional encadeada
e estrutura de deciso mltipla. Na estrutura condicional simples vimos que as
instrues s sero executadas se a condio que est sendo avaliada for verdadeira. A sintaxe dessa estrutura sintaxe dada por:
Consideraes Finais
II
Se (<Condio>) ento
fim_se
Seno
fim_se
Aprendemos que a estrutura aninhada usada quando temos que estabelecer verificaes sucessivas, isto , quando uma ao s poder ser executada
se um conjunto anterior de condies for satisfeito. Alm disso, estudamos que
o uso desta estrutura torna o algoritmo mais rpido devido ao fato de executar
um menor nmero de passos para chegar soluo do problema.
Vimos tambm a estrutura de deciso mltipla, uma generalizao da estrutura Se, em que pode haver uma ou mais condies a serem testadas e um comando
associado a cada uma delas. A sintaxe dessa estrutura :
Caso <varivel>
Fim_caso
Alm da estrutura condicional, trabalhamos a construo de expresses relacionais e lgicas, as quais so utilizadas na construo de condies. Entendemos,
tambm, a tabela verdade dos operadores lgicos E, OU e NO.
Ao longo desta unidade construmos algoritmos utilizando todos os conceitos aprendidos e, tambm, discutimos que estrutura condicional mais adequada
para cada situao. Como o aprendizado de algoritmos requer prtica, importante que voc faa as atividades de autoestudo para exercitar o raciocnio lgico.
ESTRUTURA CONDICIONAL
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
76 - 77
Para facilitar a leitura de um algoritmo, normalmente so adicionados espaos em branco no incio de um bloco de comandos para mostrar quais
instrues esto dentro dele, a este recurso denominamos identao. Para
saber um pouco mais, leia o contedo disponvel em:
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
<http://pt.wikipedia.org/wiki/Indenta%C3%A7%C3%A3o>.
Na soluo de um problema fundamental estudar as vrias opes de algoritmos a serem utilizados, pois os aspectos de tempo e espao so consideraes importantes que devem ser vistas com ateno (ZIVIANE, 2004).
Consideraes Finais
Para mulheres
5. Elabore um algoritmo que leia o percurso em quilmetros, o tipo de moto e informe o consumo estimado de combustvel, sabendo que uma moto do tipo A
faz 26 km com um litro de gasolina, uma moto do tipo B faz 20 km e o tipo C faz
7 km.
6. Uma instituio financeira conceder crdito a uma taxa de juros de 3% aos seus
clientes de acordo com o saldo mdio do perodo. Elabore um algoritmo que calcule o valor que pode ser concedido ao cliente e imprima-o. Os clientes com saldo mdio inferior a R$ 500,00 no tm direito a crdito. J os clientes com saldo
entre R$ 501,00 e R$ 1000,00 podem obter crditos de 35% em relao ao saldo
mdio. Clientes com saldo entre R$ 1001,00 a R$ 3000,00 podem obter crditos
de 50% em relao ao saldo mdio. E para aqueles clientes com saldo superior a
R$ 3001,00 pode ser concedido crdito de 75% do valor do saldo.
EXERCCIOS DE FIXAO
1. Construa um algoritmo que receba o nome e a idade de uma pessoa e informe
se menor de idade, maior de idade ou idoso.
Objetivo do algoritmo: informar se a pessoa menor de idade, maior ou idoso.
Entrada: ler nome e idade.
Processamento: verificar se a idade menor que 18 (menor de idade), entre 18
e 64 anos (maior de idade) ou maior ou igual a 65 anos (idoso).
Sada: escrever se a pessoa menor de idade, maior ou idoso.
78 - 79
Algoritmo verificaidade
Var
idade: inteiro
nome: caractere[30]
Incio
Leia (nome)
Leia (idade)
Escreva (Idoso)
Seno
Fim_se
Seno
2. Elabore um algoritmo que receba a idade de uma pessoa e identifique sua classe
eleitoral: no eleitor (menor que 16 anos de idade), eleitor obrigatrio (entre 18
e 65 anos) e eleitor facultativo (entre 16 e 18 anos e maior que 65 anos).
Objetivo do algoritmo: verificar a classe eleitoral de uma pessoa.
Entrada: ler idade.
Processamento: verificar se a idade menor que 16 (no eleitor), entre 18 e 65
anos (eleitor obrigatrio) ou entre 16 e 18 ou maior que 65 anos (eleitor facultativo).
Sada: escrever a classe eleitoral.
Algoritmo classeeleitoral
Var
idade: inteiro
Incio
Leia (idade)
Seno
Fim_se
Seno
3. Escreva um algoritmo que calcule o IMC de uma pessoa e identifique se a pessoa est abaixo do peso (IMC menor que 20), normal (IMC entre 20 e 25), com
excesso de peso (IMC entre 26 e 30), obesa (IMC entre 31 e 35) ou com obesidade
mrbida (acima de 35). O clculo do IMC dado por:
.
Objetivo do algoritmo: verificar a faixa de risco de uma pessoa a partir do IMC.
Entrada: ler peso e altura.
Processamento: verificar se o IMC menor que 20 (abaixo do peso), entre 20 e
25 (normal), entre 26 e 30 (excesso de peso), entre 31 e 35 (obesidade) ou acima
de 35 (obesidade mrbida).
Sada: imprimir a faixa de risco da pessoa.
80 - 81
Algoritmo calculaimc
Var
Incio
Leia (peso)
Leia (altura)
imc peso/sqn(altura)
Se (imc < 20) ento
Seno
Seno
Escreva (Normal)
Se (imc <= 30) ento
Seno
Escreva (Obesidade)
Seno
Fim_se
Fim_se
Fim.
Cdigo
Cargo
Percentual do aumento
Servios gerais
50%
Vigia
30%
Recepcionista
25%
Vendedor
15%
Algoritmo reajuste
Var
cargo: inteiro
Incio
Leia (cargo)
Leia (salario)
Se (cargo = 1) ento
aumento salario*(50/100)
reajuste salario+aumento
Se (cargo = 2) ento
Seno
82 - 83
aumento salario*(30/100)
reajuste salario+aumento
Seno
Se (cargo = 3) ento
aumento salario*(25/100)
reajuste salario+aumento
Se (cargo = 3) ento
aumento salario*(15/100)
reajuste salario+aumento
Fim_se
Fim_se
Fim_se
Fim_se
Fim.
5. Escreva um algoritmo para resolver equaes do segundo grau (ax2 +bx + c).
Sendo que: a varivel a deve ser diferente de zero; = b2 - 4 x a x c; Se < 0 no
^- bh
existe raiz real; se = 0 existe uma raiz real que dada por
x = 2 xa ; se > 0
existem duas razes reais
^- b - T h
^- b + T h e
6.
x1 =
x1 =
2 xa
2 xa
Algoritmo raiz
Var
Incio
Leia (a)
Leia (b)
Leia (c)
Se (a = 0) ento
Seno
Se (delta = 0) ento
Seno
Seno
84 - 85
se (delta = 0) ento
Escreva (Existe uma raiz real)
Seno
se (delta = 0) ento
x1 (-b)/(2*a)
Seno
Se (delta = 0) ento
x1 (-b + )
Seno
Se (delta = 0) ento
Seno
Seno
se (delta = 0) ento
x1 (-b + sqrt(delta))/(2*a)
x2 (-b + sqrt(delta))/(2*a)
Fim-se
Fim-se
Fim-se
Fim-se
Fim
MATERIAL COMPLEMENTAR
ESTRUTURA DE REPETIO
UNIDADE
III
Objetivos de Aprendizagem
Estudar as estruturas de repetio controladas e condicionais.
Conhecer as estruturas de repetio encadeadas.
Construir algoritmos utilizando estruturas de repetio.
Plano de Estudo
A seguir, apresentam-se os tpicos que voc estudar nesta unidade:
Estrutura Para
Estrutura Enquanto
Estrutura Repita
Estruturas de Repetio Encadeadas
Problema 1
Problema 2
88 - 89
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Introduo
Nesta unidade voc aprender a construir algoritmos com repetio de um trecho
de cdigo. A repetio permite executar um conjunto de instrues quantas vezes
forem necessrias sem ter que ficar reescrevendo trechos de cdigos idnticos.
Ser abordado o conceito de estrutura de repetio e sua aplicao.
Estudaremos as estruturas de repetio com laos contados e laos condicionais. O uso de laos contados restrito a situaes em que sabemos previamente
quantas vezes as instrues precisam ser executadas. Neste caso, abordaremos
especificamente a Estrutura Para.
Nos laos condicionais no sabemos previamente o nmero de execues
e atrelamos a repetio a uma condio. Trataremos os casos com condio no
incio e no final do lao, estudando as estruturas: Enquanto e Repita.
Ao construir algoritmos utilizando estruturas de repetio, muitas vezes,
precisaremos utilizar variveis contadoras e acumuladoras. Aprenderemos os conceitos relacionados a essas variveis, como utiliz-las e qual a diferena entre elas.
Estudaremos as estruturas de repetio (Para, Enquanto e Repita), destacando
seu funcionamento, sintaxe e aplicao. Para facilitar o aprendizado construiremos algoritmos utilizando cada uma dessas estruturas.
Ao final desta unidade voc saber construir algoritmos com estruturas de
repetio e poder responder as questes relacionadas com o tema de Algoritmos
e Lgica de Programao I, tais como: como repetir um trecho de cdigo um
nmero determinado de vezes? Como repetir um trecho de cdigo com base em
uma condio? Que estrutura de repetio mais adequada para cada problema?
Quando utilizar varivel contadora e acumuladora? Quando utilizar estruturas
de repetio encadeadas?
Introduo
III
Estrutura de Repetio
ESTRUTURA DE REPETIO
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
90 - 91
Estrutura Para
A estrutura Para uma estrutura do tipo lao contado, utilizada para um nmero
definido de repeties. Isto , devemos utilizar essa estrutura quando sabemos o
nmero de vezes que o trecho de cdigo precisa ser repetido. Outro termo utilizado para essa estrutura de repetio o de estrutura de repetio com varivel
de controle, pois utilizada uma varivel contadora para controlar o nmero de
repeties. A sintaxe da estrutura Para :
Estrutura Para
III
<instrues>
fim_para
Em que:
<varivel>: a varivel contadora utilizada para controlar a estrutura de
repetio. Esta varivel tem que ser do tipo inteiro.
<incremento> representa o valor que ser incrementado ou decrementado (se for um valor negativo) a cada passagem do lao, isto , como ser
a variao da varivel de controle (contador).
Esse termo pode ser representado por uma constante ou uma varivel.
Lopes e Garcia (2002) destacam que o nmero de repeties do bloco de comandos igual ao nmero de termos da srie delimitada pelos termos <incio> e
<fim>. A varivel contadora no deve aparecer em um
comando de leitura dentro do bloco de repetio.
Agora que voc conheceu a teoria sobre a estrutura
de repetio para, vamos resolver um problema utilizando-a para tornar mais clara a sua aplicao prtica.
Voc se lembra databuada? A Figura 6 apresenta a tabuada para o nmero 5, em que temos o produto entre o
nmero 5 e os nmeros compreendidos entre 0 e 10.
Que tal construir um algoritmo para efetuar a tabuada de um nmero qualquer?
O primeiro passo estruturar o nosso problema
seguindo os passos descritos na Unidade I:
Figura 6: Tabuada do nmero 5
Objetivo do algoritmo: calcular a tabuada de um
nmero inteiro.
ESTRUTURA DE REPETIO
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
92 - 93
Estrutura Para
III
Algoritmo tabuada
Var
Incio
Leia (num)
mult num*i
Fim.
fim_para
ESTRUTURA DE REPETIO
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
94 - 95
Estrutura Para
III
Algoritmo tabuada
Var
Num, i: inteiro
fim_para
Incio
Leia (num)
Fim.
Estrutura Enquanto
A estrutura Enquanto uma estrutura do tipo lao condicional, isto , o loop
baseia-se na anlise de uma condio. Essa estrutura utilizada quando temos
um nmero indefinido de repeties e se caracteriza por realizar um teste condicional no incio.
A sintaxe da estrutura Enquanto :
Enquanto <condio> faa
<instrues>
fim_enquanto
Na estrutura para tnhamos uma varivel de controle (contador) para controlar o nmero de repeties do algoritmo. Na estrutura Enquanto no h varivel
de controle, sendo imposta uma condio para controlar a repetio do algoritmo.
ESTRUTURA DE REPETIO
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
96 - 97
Devemos tomar cuidado para garantir que em algum momento a condio ser
satisfeita, seno o algoritmo pode entrar em loop (no parar nunca). Para impedir o loop do algoritmo utilizamos uma expresso condicional, tal como vimos
na Unidade II, para parar a repetio (LOPES; GARCIA, 2002).
Outra situao que como o teste condicional executado no incio, podem
ocorrer casos em que as instrues da estrutura de repetio nunca sejam executadas. Isso acontece quando o teste condicional da estrutura resulta em falso
logo na primeira comparao (ASCENCIO; CAMPOS, 2010).
Agora que conhecemos os conceitos relacionados estrutura enquanto,
vamos construir um algoritmo para o seguinte problema: ler vrios nmeros e
informar quantos se encontram no intervalo de 100 a 300. Se for digitado o valor
0, o algoritmo encerra sua execuo.
Seguindo o mtodo de estruturao de problemas visto na Unidade I, temos:
Objetivo do algoritmo: ler vrios nmeros e informar quantos esto no
intervalo entre 100 e 300.
Entrada: ler nmeros inteiros at que seja digitado o nmero zero.
Processamento: contar quantos nmeros esto no intervalo entre 100 e 300.
Sada: imprimir a quantidade de nmeros entre 100 e 300.
Na entrada de dados temos que realizar a leitura de nmeros inteiros repetidas vezes, at que o valor zero seja digitado. O processamento consiste em contar
a quantidade de nmero que esto na faixa entre 100 e 300, para isso utilizaremos
uma varivel do tipo contador, que nomearemos como cont. Para saber quantos
valores esto dentro da faixa utilizaremos a estrutura condicional Se, conforme
visto na Unidade II. Como sada temos que informar o valor da varivel cont.
Na construo de algoritmos utilizando a estrutura enquanto temos que o
teste lgico realizado no incio, deste modo precisamos ter um valor atribudo para a varivel usada na condio antes de entrar na estrutura enquanto.
Alm disso, no conjunto de instrues dentro do lao de repetio deve haver
uma instruo que modifique o valor dessa varivel, seno entraremos em um
loop. Isto nos indica que ao utilizar laos do tipo enquanto temos que ler a varivel fora da estrutura de repetio e dentro. Observe o algoritmo do Quadro 47.
Estrutura Enquanto
III
Algoritmo conta
Var
cont 0
Incio
Leia (num)
fim_se
Fim.
ESTRUTURA DE REPETIO
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
98 - 99
E. Se o resultado do teste lgico for verdadeiro temos que cont recebe o valor
que ele tem mais um, ou seja, incrementado em uma unidade. Se o teste lgico
resultar em falso a execuo segue para a linha posterior ao fim_se. Note que
aps o fim_se temos a leitura da varivel novamente. Por que isso acontece? Se
a leitura da varivel fosse realizada apenas fora do lao de repetio teramos
que o lao entraria em loop, uma vez que teramos o mesmo valor para num. As
instrues dentro do lao sero repetidas at que na entrada seja obtido o valor
zero. Quando este valor for obtido tem-se a execuo do comando aps o fim_
enquanto, que exibe na tela o valor armazenado na varivel cont. Na Figura 9
podemos visualizar a simulao do algoritmo descrito.
Estrutura Enquanto
III
Algoritmo conta
Var
cont 0
Incio
cont cont +1
fim_se
fim_enquanto
ESTRUTURA DE REPETIO
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Leia (num)
100 - 101
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Lembre-se!!! SEMPRE que voc utilizar uma estrutura de repetio condicional tem que ter uma instruo no interior desta estrutura que modifique o
valor da varivel que utilizada no teste lgico. Variveis contadoras e acumuladoras precisam ser inicializadas no incio do cdigo.
Estrutura Enquanto
III
Estrutura Repita
Repita
<instrues>
At_que <condio>
Observe que na estrutura Repita as instrues dentro do lao sero executadas pelo menos uma vez, pois a anlise condicional executada ao final. Do
mesmo modo que na estrutura condicional enquanto, lembre-se que nas instrues que esto dentro da estrutura de repetio tem que haver uma instruo
que altere o valor da <condio>.
Com o conhecimento que temos sobre a estrutura Repita vamos reescrever
o algoritmo que l vrios nmeros e informa quantos esto no intervalo de 100 a
300. Se for digitado o valor 0, o algoritmo encerra sua execuo. Descrevemos os
passos da estruturao deste problema no tpico ESTRUTURA ENQUANTO.
A entrada de dados consiste na leitura de nmeros inteiros repetidas vezes,
at que o valor zero seja digitado. O processamento contar a quantidade de
nmero que esto na faixa entre 100 e 300. E a sada informar quantos dos
nmeros lidos na entrada so maiores ou iguais a 100 e menores ou iguais a 300.
O Quadro 49 apresenta um algoritmo para este problema utilizando a estrutura
de repetio condicional Repita.
ESTRUTURA DE REPETIO
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
A estrutura Repita uma estrutura do tipo lao condicional, isto , o loop baseiase na anlise de uma condio. Essa estrutura utilizada quando temos um
nmero indefinido de repeties e precisamos que o teste condicional seja realizado aps a execuo do trecho de cdigo. Isto , devemos utilizar essa estrutura
quando no sabemos o nmero de vezes que um trecho do cdigo deve ser repetido (ASCENCIO; CAMPOS, 2010).
A sintaxe da estrutura Repita :
102 - 103
Algoritmo conta
Var
cont 0
Incio
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Repita
Fim.
fim_se
cont cont +1
Vamos estudar cada linha do algoritmo para entender melhor o funcionamento dessa estruturao de repetio. Na primeira linha temos a inicializao da
varivel cont, que conta o nmero de valores que esto na faixa entre 100 e 300.
Afinal, por que inicializamos essa varivel? Por exemplo, se efetuamos a leitura
de vrios nmeros e nenhum deles estava na faixa entre 100 e 300, qual o valor
de cont? No h como garantir que o valor ser zero. Como uma varivel um
espao em memria, devemos inicializ-lo para que no fique nenhum lixo.
Aps a inicializao de cont, temos o incio da estrutura Repita. Internamente
a essa estrutura temos a leitura do nmero, o qual armazenado na varivel
num. Em seguida, temos a estrutura condicional se, que analisa se o nmero
maior ou igual a 100 e menor ou igual a 300. O resultado do teste lgico verdadeiro quando as duas expresses relacionais so verdadeiras e ento cont
Estrutura Repita
III
<instrues>
fim_para
ESTRUTURA DE REPETIO
fim_para
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
104 - 105
<instrues>
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
fim_para
fim_enquanto
<instrues>
fim_para
At_que (condio)
<instrues>
fim_enquanto
fim_enquanto
repita
<instrues>
fim_enquanto
at_que (<condio2>)
faa
<instrues>
III
fim_para
fim_enquanto
faa
<instrues>
fim_para
at_que (<condio>)
repita
<instrues>
fim_enquanto
at_que (<condio1>)
repita
repita
<instrues>
at_que (<condio>)
at_que (<condio>)
PROBLEMA 1
Voc se recorda de fatorial? O fatorial de um nmero o produto dos nmeros
naturais comeando em n e descrevendo at 1, isto , o produto de todos os inteiros positivos menores ou igual a n. O fatorial de um nmero representado por n!
Tomemos como exemplo o fatorial de 7, representado por 7! O clculo de
7! : 7 x 6 x 5 x 4 x 3 x 2 x 1, que igual a 5040.
ESTRUTURA DE REPETIO
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
106 - 107
Agora que recordamos o que o fatorial, vamos escrever um algoritmo para calcular o fatorial de um nmero qualquer. Seguindo o mtodo de estruturao de
problemas, conforme visto na Unidade I, temos que:
Objetivo do algoritmo: calcular o fatorial de um nmero.
Entrada: ler o nmero que se deseja calcular o fatorial.
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Processamento: efetuar o produto de todos os nmeros inteiros positivos menores ou igual ao nmero lido na entrada.
Sada: imprimir o fatorial.
Na entrada do problema temos a leitura de um nmero inteiro, do qual queremos obter o fatorial. Precisamos armazenar este nmero em uma varivel inteira,
denominarenos num. O processamento consiste em efetuar a operao aritmtica de multiplicao de todos os nmeros inteiros positivos menores ou igual a
num. Observe que temos operaes de multiplicao sucessivas, partindo de 7,
conforme ilustra a Figura 11. Aqui temos uma informao importante, a operao de multiplicao tem que comear em 7 e ir at 1, ou seja, sabemos o nmero
de vezes que a multiplicao precisa ser executada. Quando sabemos o nmero
de repeties que deve ocorrer temos um lao contado. Portanto, podemos utilizar a estrutura Para em nosso algoritmo. Nessa estrutura h uma varivel de
controle que delimita o intervalo para a execuo do lao, no caso temos que
partir de 7 e ir at 1, isto , teremos um incremento de -1 (decremento). No
podemos esquecer de declarar mais uma varivel, a varivel de controle, que
do tipo int, chamaremos de cont. Como sada temos que informar o valor do
clculo do fatorial, utilizaremos o comando escreva.
7x6x5x4x3x2x
1
Figura 11: Representao do clculo de 7!
III
Algoritmo fatorial
Var
Incio
Escreva (Digite o nmero que deseja calcular o fa
torial:)
Leia (num)
fat 1;
fim_para
Ao analisar o algoritmo surge o questionamento: por que a varivel fat foi inicializada com 1? Podemos inicializ-la com 0? Se a inicializao da varivel for 0,
e considerando num como 5, teramos fat igual a 0, conforme ilustra a Figura 12.
ESTRUTURA DE REPETIO
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
108 - 109
Algoritmo fatorial
Var
num, fat, cont: inteiro
Incio
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
cont = 5
fat = 0*5
cont = 4
fat = 0*4
cont = 3
fat = 0*3
cont = 2
fat = 0*2
cont = 1
fat = 0*1
Aps a simulao, fica claro que a varivel fat deve ser inicializada com 1.
Deste modo, teramos o resultado correto para o fatorial de 5, que 120.
PROBLEMA 2
A aprovao de um aluno em uma disciplina ocorre quando a mdia das notas
maior ou igual a 7. Para auxiliar o professor em suas atividades elabore um algoritmo, leia o nmero de notas da disciplina, cdigo do aluno e as notas do aluno.
Calcule a mdia final de cada aluno e informe o nmero de alunos aprovados e
reprovados. O algoritmo deve ser executado at que seja informado um cdigo 0.
Sistematizando as informaes do problema de acordo com o mtodo, temos que:
Estruturas de Repetio Encadeadas
III
ESTRUTURA DE REPETIO
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Na entrada de dados temos que saber inicialmente o nmero de notas da disciplina. Este valor deve ser armazenado em uma varivel (nnotas). Alm disso,
precisamos armazenar o cdigo do aluno (cod) e nota (nota). O processamento
consiste em a partir do nmero de notas informado para a disciplina, efetuar a
repetio da leitura de notas e som-las (varivel soma) e calcular a mdia aritmtica do aluno (varivel mdia). A mdia deve ser armazenada em uma varivel
do tipo real. Se a mdia for maior ou igual a 7 o aluno est aprovado, seno reprovado. Para contabilizar o nmero de aprovados e reprovados, precisamos declarar
duas variveis do tipo inteira, aprovados e reprovados, respectivamente. Como
sada temos o nmero de alunos aprovados e reprovados.
No Quadro 51 apresentado o algoritmo para o problema descrito. Neste
algoritmo temos a aplicao de estruturas de repetio encadeada. Por qu?
Precisamos saber o nmero de notas que devem ser lidas e devem ser lidas as
notas de vrios alunos at que o cdigo do aluno seja 0. Como no sabemos
quantos alunos teremos que ler as notas, precisamos utilizar uma estrutura do
tipo lao condicional. No primeiro momento optamos por utilizar a estrutura
Enquanto. Nesta estrutura o teste condicional realizado no incio, deste modo
temos que realizar a leitura da informao utilizada no teste condicional fora da
estrutura. No caso, a informao obtida foi o cdigo do aluno.
Se o teste condicional resulta em verdadeiro, ou seja, o cdigo do aluno
diferente de 0, precisamos ler as notas do aluno. Em seguida, temos a inicializao das variveis soma e mdia, pois a soma deve acumular as notas de um
aluno e no de todos. Para a leitura das notas utilizamos a estrutura Para, pois
sabemos previamente o nmero de notas que precisa ser lido. Dentro da estrutura Para realizada a soma das notas do aluno. Aps ser finalizada a leitura de
todas as notas (acumuladas na varivel soma) efetuado o clculo da mdia do
110 - 111
aluno. Em seguida, temos o teste condicional que analisa se o aluno est aprovado
ou reprovado. Se a mdia maior ou igual a 7 temos o incremento da varivel
aprovados, seno a varivel reprovados incrementada. As instrues seguintes
efetuam a leitura do cdigo do aluno. Depois do fim_enquanto so apresentados os nmeros de aprovados e reprovados.
Algoritmo fatorial
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Var
aprovadas 0
reprovada 0
Leia (nnotas)
soma 0
media 0
Fimpara
media soma/nnotas;
seno
aprovados aprovados + 1
reprovados reprovados + 1
Fim-se
III
fimenquanto
Escreva (O nmero de aprovados :,
aprovados)
Escreva (O nmero de reprovados :,
reprovados)
Fim.
Algoritmo fatorial
Var
aprovadas 0
ESTRUTURA DE REPETIO
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
112 - 113
reprovada 0
Repita
leia (cod)
soma 0
media 0
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Leia (nota)
Fimpara
se (media>=7) ento
seno
aprovados aprovados + 1
reprovados reprovados + 1
ate_que (cod = 0)
Fim
media soma/nnotas
fim-se
Observe que quando utilizamos o Repita no h a leitura da varivel utilizada no teste condicional antes da estrutura condicional. Isso possvel, pois a
estrutura Repita realiza o teste no final.
III
Consideraes Finais
ESTRUTURA DE REPETIO
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
114 - 115
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
As estruturas mais versteis so Enquanto e Repita, pois podem ser substitudas uma pela outra, alm de poderem substituir perfeitamente a estrutura Para. Porm, h de considerar-se que nem toda estrutura Enquanto ou
Repita poder ser substituda por uma estrutura Para.
Consideraes Finais
EXERCCIOS DE FIXAO
1. Escreva um algoritmo que leia o nmero de vezes que se deseja imprimir a palavra ALGORITMOS e imprimir.
Objetivo do algoritmo: informar se a pessoa menor de idade, maior ou idoso.
Entrada: ler um nmero inteiro.
Processamento: no h.
116 - 117
num, i: inteiro
Incio
Leia (num)
Escreva (ALGORITMOS)
Fim.
fim_para
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
npares 0
nimpares 0
Incio
npar npar + 1
nimpar nimpar + 1
fim_para
Seno
Fim_se
Fim.
3. Construa um algoritmo que entre com nmeros inteiros enquanto forem positivos e imprima quantos nmeros foram digitados.
Objetivo do algoritmo: ler vrios nmeros enquanto forem positivos e contar
quantos foram digitados.
Entrada: ler nmeros enquanto forem positivos.
Processamento: contar a quantidade de nmeros digitada.
Sada: imprimir a quantidade de nmeros positivos digitadas.
Algoritmo conta
Var
qtdade 0
Leia (num)
Incio
qtdade qtdade + 1
118 - 119
Fim.
Fim_enquanto
4. Escreva um algoritmo que leia um conjunto de pedidos e calcule o total da compra. O pedido possui os seguintes campos: nmero, data (dia, ms e ano), preo
unitrio e quantidade. A entrada de pedidos encerrada quando o usurio informa zero como nmero do pedido.
Objetivo do algoritmo: ler vrios pedidos e calcular o total da compra.
Entrada: ler pedidos de compra (nmero, data, preo quantidade) at que o nmero do pedido seja zero.
Processamento: calcular o preo total de cada pedido e o preo total da compra.
Sada: imprimir o valor total da compra.
Algoritmo compras
Var
total 0
Incio
Leia (pedido)
Leia (preco)
Leia (qtdade)
Escreva (O valor da compra :, pre
co*qtdade)
Fim.
Fim-enquanto
5. Construa um algoritmo que leia nome, sexo, idade, peso e altura dos atletas que
participam de um campeonato at que seja informado o nome FIM e apresente: o nome do atleta do sexo masculino mais alto, o nome da atleta do sexo feminino mais pesada e a mdia de idade dos atletas.
Objetivo do algoritmo: ler informaes sobre vrios atletas e apresentar o atleta mais alto, mais pesado e mdia de idade.
Entrada: ler nome, sexo, idade, peso e altura at que seja digitado o nome FIM.
Processamento: identificar o atleta do sexo masculino mais alto, a atleta do
sexo feminino mais pesada e a mdia de idade dos atletas.
Sada: imprimir o nome do atleta mais alto e da atleta mais pesada e a mdia
de idade.
Algoritmo atletas
Var
sexo: caracter[1]
media 0
cont 0
alto 0
Incio
120 - 121
pesado 0
nalto
npesado
Leia (nome)
soma soma+idade
cont cont+1
Leia (peso)
Leia (altura)
Leia (sexo)
alto altura
nalto nome
Fim-se
Fim-se
se (peso>pesado) ento
pesadop peso
npesado nome
Fim-se
Fim-se
Fim
6. Faa um algoritmo que calcula a rea de um tringulo e que no permita a entrada de dados invlidos, ou seja, as medidas devem ser maiores ou iguais a zero.
Objetivo do algoritmo: calcular a rea de um tringulo.
Entrada: ler a base e a altura do tringulo.
Processamento: calcular a rea.
Sada: imprimir o valor da rea.
Algoritmo triangulo
Var
Repita
Incial
Leia (base)
At_que (base>0)
Repita
Fim
area (base*altura)/2
122 - 123
idade, ncasado, nseparado, nsolteiro, nviuva
: inteiro
estado : caractere
ncasado 0
nsolteiro 0
nviuva 0
nseparado 0
Incio
Repita
Repita
Se (estado = C) ento
fim_se
ncasado ncasado + 1
Se (estado = S) ento
nsolteiro nsolteiro + 1
fim_se
fim_se
Se (estado = V) ento
Repita
Se (estado = D) ento
fim_se
nseparado nseparado + 1
nviuva nviuva + 1
124 - 125
MATERIAL COMPLEMENTAR
Material Complementar
ESTRUTURAS DE DADOS
HOMOGNEAS E
HETEROGNEAS
UNIDADE
IV
Objetivos de Aprendizagem
Estudar as estruturas de dados homogneas (vetores e matrizes).
Conhecer mtodos de ordenao e pesquisa.
Conhecer estruturas de dados heterogneas (registros).
Construir algoritmos utilizando estruturas de dados homogneas e
heterogneas.
Plano de Estudo
A seguir, apresentam-se os tpicos que voc estudar nesta unidade:
Estrutura de Dados Homognea
Vetores
Ordenao de Vetor
Busca em Vetor
Mtodo Sequencial
Matrizes
Estrutura de Dados Heterognea
Registros
Problema
128 - 129
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Introduo
Estamos chegando ao final do contedo da disciplina de Algoritmos e Lgica de
Programao I. Nesta unidade voc conhecer as estruturas de dados homogneas e heterogneas. Essas estruturas permitem agrupar diversas informaes
em uma nica varivel.
As estruturas de dados homogneas permitem a representao de diversas informaes do mesmo tipo, sendo divididas em unidimensionais (vetores)
e multidimensionais (matrizes). Estudaremos como atribuir valores, realizar a
leitura e entrada de dados nesse tipo de estrutura. Alm disso, conheceremos
um mtodo para a classificao (ordenao segundo algum critrio) e busca
em vetores, especificamente, ordenao com Bubble Sort e pesquisa sequencial.
Estudaremos as estruturas de dados heterogneas, registros, que agregam
informaes de diversos tipos. Abordando, especificamente, como realizar atribuio, entrada e sada de dados utilizando registros.
Na construo de algoritmos utilizando estruturas homogneas e heterogneas, utilizaremos todos os conceitos vistos nas demais unidades, principalmente
as estruturas de repetio, pois elas so utilizadas nas operaes de atribuio,
leitura e escrita.
Ao final desta unidade voc saber construir algoritmos utilizando as estruturas de dados homogneas e heterogneas, as quais permitem representar um
agrupamento de informaes em uma mesma varivel. Entender, tambm,
qual a importncia dessas estruturas e como utiliz-las em aplicaes prticas,
aumentando assim a gama de problemas que consegue resolver utilizando algoritmos. Vamos l?
Introduo
IV
4
4
Figura 13: Vetor
Fonte: adaptado de LOPES; GARCIA (2002)
O uso de vetores est associado criao de tabelas, em que temos a definio de uma nica varivel que dimensionada com um determinado tamanho.
Sendo que dimenso deve ser uma constante inteira e positiva (MANZANO;
OLIVEIRA, 1997).
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Vetores
130 - 131
Em que:
<dimenso> representa os valores de incio e fim do tamanho do vetor
<tipo de dado> pode ser real, inteiro, lgico ou caractere.
Um exemplo de declarao de vetor :
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Em que o nome da varivel media, sendo que esta possui cinco posies
e do tipo real. O acesso a cada posio do vetor realizado por meio da especificao do ndice. Isto media[1] indica o elemento que est na posio 1 do
vetor, que no caso da Figura 13 o valor 4.
As operaes de atribuio, leitura e escrita so realizadas para cada elemento
do vetor, de modo que no possvel operar sobre o vetor como um todo. Deste
modo, ao utilizar os comandos de atribuio, leitura e escrita devemos utilizar
o nome da varivel mais o ndice. Note que, como as operaes devem ser realizadas elemento a elemento temos que utilizar uma estrutura de repetio para
a entrada e sada de dados. Das estruturas de repetio vistas na Unidade III,
qual a mais adequada? Como um vetor possui um tamanho fixo, informado no
momento de sua declarao, sabemos previamente o nmero de repeties que
precisa ser realizado. Portanto, a estrutura Para adequada.
Se voc no entendeu como funciona um vetor, fique tranquilo!! Construiremos
um algoritmo para aplicar os conceitos estudados at aqui.
O problema consiste em ler o nome e quatro notas de 10 alunos e imprimir
uma relao contendo o nome do aluno, notas e a mdia final.
Seguindo o mtodo de estruturao de problemas, temos que:
Objetivo do algoritmo: emitir uma relao contendo nome dos alunos,
notas e mdia final.
Entrada: ler nome e quatro notas de dez alunos.
Processamento: calcular a mdia dos alunos.
Sada: imprimir nome dos alunos, notas e mdia final.
Vetores
IV
Algoritmo media
Var
cont: inteiro
Incio
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
132 - 133
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
fim_para
Fim
Fim_para
Observe que nos comandos de entrada, sada e atribuio sempre utilizamos o nome da varivel seguido do ndice na posio do vetor. Se voc ficou
com dvidas quanto ao funcionamento de vetores elabore o teste de mesa para
o algoritmo apresentado.
Fique tranquilo!!! Na prxima seo construiremos mais algoritmos utilizando vetores.
Vetores
IV
Ordenao em Vetor
10
4
1
10
5
4
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
No dia a dia nos deparamos com uma srie de situaes em que independentemente do modo que os dados foram informados, precisamos apresent-los
seguindo uma ordem. No caso de variveis do tipo caractere temos que classific-los em ordem alfabtica (A-Z) para facilitar a localizao de um nome, por
exemplo. A ordenao crescente ou decrescente pode ser utilizada, tambm, para
variveis numricas (MANZANO; OLIVEIRA, 1997).
A ordenao o processo de rearranjar os elementos de acordo com um
critrio especfico com o objetivo de facilitar a localizao (WIRTH, 1999). Na
literatura existem diversos mtodos de ordenao, sendo o mtodo da bolha
(Bubble Sort) o mais conhecido.
O mtodo da bolha no o mtodo mais eficiente, mas bastante simples.
Portanto, veremos seu funcionamento. O mtodo consiste em percorrer o vetor
repetidas vezes, comparando os elementos vizinhos. Se eles esto fora de ordem,
efetuada uma troca de posio. O nmero de repeties de varredura dado
pelo nmero de elementos do vetor menos 1. Vamos tomar como exemplo a
ordenao (crescente) do vetor apresentado na Figura 14. Primeiramente, veremos o funcionamento do mtodo passo a passo e, em seguida, a implementao
do algoritmo. Como podemos observar o vetor no est ordenado.
134 - 135
4 maior que 7?
10
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Agora temos que comparar o elemento da posio 1 com o elemento da posio 3 (Figura 17). Como 4 no maior que 10, no h troca. Agora temos que
comparar o elemento da posio 1 com o elemento da posio 4 (Figura 18).
4 maior que 10?
10
10
10
10
Ordenao em Vetor
IV
10
10
10
10
4 maior que 5?
Como 4 no maior que 5, no h troca. Agora devemos repetir a comparao passando para a posio 3 (Figura 25).
10
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
136 - 137
10 maior que 7?
10
10
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
10
Comparando 7 e 5, temos que 7 maior que 5. Portanto, os elementos trocam de posio (Figura 29).
10
Repetindo o processo de comparaes, iniciando na quarta posio, conforme ilustra a Figura 30.
10
10
Ordenao em Vetor
IV
10
Algoritmo ordena
Var
Incio
Fim_para
num[i] num[j]
num[j] aux
Fim_se
Fim_para
fim_para
fim_para
Escreva (num[i])
Fim.
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Ao final das comparaes temos o vetor ordenado. O processo de percorrer o vetor realizando comparaes foi repetido quatro vezes, ou seja, o nmero
de elementos do vetor menos 1. De modo que na primeira repetio foram realizadas quatro comparaes, na segunda trs, na terceira duas e na ltima uma.
O algoritmo que l 5 valores e os apresenta em ordem crescente (utilizando o
mtodo da bolha) apresentado no Quadro 61.
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
138 - 139
11
15
Ordenao em Vetor
IV
Busca em Vetor
Mtodo Sequencial
A busca utilizando o mtodo sequencial consiste em percorrer o vetor a partir
do primeiro elemento, sequencialmente, at o ltimo realizando testes lgicos
verificando se o elemento do vetor, posio a posio, igual ao elemento procurado. Neste mtodo, tambm conhecido como busca linear, a busca termina
quando uma das duas condies for satisfeita: o elemento foi encontrado ou
todo o vetor foi analisado, mas o elemento no foi encontrado (WIRTH, 1999).
O algoritmo que realiza a busca sequencial de um nmero qualquer em um
vetor apresentado no Quadro 62.
Algoritmo busca
Var
acha: lgico
Incio
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
140 - 141
Leia (vnum[i])
Fim_para
Leia (num)
i 1
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
acha falso
i i + 1
fim_se
fim_enquanto
Fim.
Fim_se
Mtodo Sequencial
IV
Matrizes
Uma matriz uma varivel homognea multidimensional, formada por uma
sequncia de variveis do mesmo tipo, com o mesmo nome e alocadas sequencialmente na memria. Para acessar cada elemento da matriz so utilizados
ndices, sendo que para cada dimenso devemos ter um ndice.
A Figura 34 apresenta um exemplo de uma matriz bidimensional, com trs
linhas e quatro colunas.
4
x [4,1]
1
2
3
x [1,1]
x [3,2]
Da mesma forma que os vetores, a dimenso da matriz formada por constantes inteiras e positivas. E a nomeao da matriz segue as mesmas regras das
variveis. A declarao de um vetor realizada na seo de variveis (Var) do
seguinte modo:
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.
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
142 - 143
Coluna
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Linha
1
2
3
4
5
6
7
8
Em uma matriz nas operaes de atribuio, leitura e escrita devemos utilizar o nmero de repeties relativo ao tamanho das dimenses. Com isto, uma
matriz de duas dimenses deve ser controlada por dois laos de repetio, de
trs dimenses trs laos e assim por diante (MANZANO; OLIVEIRA, 1997).
Com base nos conceitos sobre matrizes vamos escrever um algoritmo para
o seguinte problema: efetuar a leitura de quatro notas de vinte alunos, calcular
a mdia de cada aluno e a mdia da turma.
Sistematizando o problema temos que:
Objetivo do algoritmo: calcular a mdia de cada aluno e a mdia da turma.
Entrada: ler quatro notas de vinte alunos.
Processamento: calcular a mdia das quatro notas dos alunos e a mdia
da turma.
Sada: imprimir a mdia de cada aluno e a mdia da turma.
Na entrada de dados temos que efetuar a leitura de quatro notas de vinte
alunos. Para isso, utilizaremos uma matriz com vinte linhas e quatro colunas, ou
seja, a primeira dimenso (linhas) representa o nmero de alunos e a segunda
Matrizes
IV
Algoritmo media
Var
i, j : inteiro
somat 0
soma 0
Incio
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
144 - 145
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).
IV
<identificador> = registro
var
<variveis> : <identificador>
Em que:
<identificador>: nome do tipo registro.
<lista dos campos e seus tipos>: relao de variveis que sero usadas
como campos e o tipo de cada uma delas.
Note que na seo Var devemos indicar a varivel como tipo registro e a declarao
do seu tipo de acordo com o identificador definido anteriormente. LEMBRE-SE:
a instruo tipo deve vir antes da instruo Var.
As operaes de atribuio, leitura e escrita so realizadas utilizando o nome
da varivel registro e seu campo correspondente separado por um caractere .
(ponto) (MANZANO; OLIVEIRA, 1997).
J conhecemos os conceitos e sintaxe de registros, mas qual a estrutura de
um registro e como utiliz-los?
Vamos retomar o problema visto na seo Vetores, que consistia em ler
o nome e quatro notas de 10 alunos e imprimir uma relao contendo o nome
do aluno, notas e a mdia final. Na resoluo deste problema aplicamos o conceito de vetores e utilizamos cinco vetores, um para armazenar o nome, um para
cada uma das notas e outro para armazenar a mdia das notas. H uma forma
mais fcil de resolver esse problema? Sim. Sabemos que um registro pode conter vrios tipos de dados em uma mesma estrutura, ento fica mais fcil agrupar
os dois tipos de dados (caractere e real) em uma mesma estrutura.
A Figura 36 ilustra o layout de um registro, contendo os campos: nome,
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
fim_registro
146 - 147
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Segunda nota:__________
Terceira nota:___________
Figura 36: Registro aluno
Fonte: adaptado de (MANZANO; OLIVEIRA, 1997)
Um algoritmo que realiza a leitura de nome e quatro notas de um aluno utilizando o conceito de registros apresentado no Quadro 64. Com este exemplo
fica mais claro como deve ser realizada a declarao, atribuio, leitura e escrita
utilizando registros.
Registros
IV
Var
Nome: caractere
Nota1: real
Nota2: real
Nota3: real
Nota4: real
fim_registro
Aluno: cad_aluno
Incio
Fim.
Leia (aluno.nome)
Leia (aluno.nota1)
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.
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Cad_aluno = registro
148 - 149
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Nome: caractere
Nota: notas
fim_registro
Var
Aluno: cad_aluno
i: inteiro
Incio
Leia (aluno.nome)
Fim.
fim_para
IV
Algoritmo registroaluno
Tipo
Nome: caractere
Nota: notas
fim_registro
i, j: inteiro
Para i de 1 at 10 faa
Incio
Fim_para
Para i de 1 at 10 faa
Fim.
Fim_para
Se voc ficou com dvidas, no se preocupe!! Vamos escrever mais um algoritmo aplicando os conceitos aprendidos nesta Unidade na prxima seo.
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Var
150 - 151
reproduo proibida. art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
PRObLEMA
O problema consiste em ler informaes (cdigo,
descrio, preo e quantidade em estoque) de 20
produtos. Alm disso, deve ser permitido executar quantas consultas o operador desejar, em
que ele digita o cdigo do produto e apresentado o preo e o saldo em estoque do produto. Se
o cdigo digitado no existir, informar o usurio.
Sistematizando o problema temos que:
Objetivo do algoritmo: ler informaes sobre
20 produtos e realizar consulta pelo cdigo do produto.
Entrada: ler cdigo, descrio, preo e quantidade em estoque de 20 produtos e o cdigo para pesquisa.
Processamento: encontrar o produto com cdigo informado pelo usurio.
Sada: imprimir o preo e o saldo em estoque do produto, se existir o
cdigo informado. Seno informar ao usurio que no h produto cadastrado com o cdigo digitado.
O Quadro 67 apresenta o algoritmo para o problema descrito. Observe que
este algoritmo envolve o conceito de registros, lao de repetio e busca em vetor.
Algoritmo registroproduto
Tipo
Cad_produto = registro
codigo: inteiro
nome: caractere[30]
preo: real
saldo: inteiro
fi m_registro
Var
Problema
IV
i, codigo: inteiro
acha: lgico
resp: caractere[3]
Para i de 1 at 20 faa
Incio
Resp sim
i 1
acha falso
Acha verdadeiro
i i + 1
fim_enquanto
Seno
fim_se
Se (acha=verdadeiro) ento
acha falso
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Leia (produto[i].codigo)
152 - 153
fim_enquanto
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
fim_se
i i + 1
Se (acha=verdadeiro) ento
Seno
Fim_se
Fim.
Fim_enquanto
Problema
IV
Consideraes Finais
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Nesta unidade voc conheceu as estruturas de dados homogneas e heterogneas. Nas estruturas de dados homogneas estudamos os vetores e as matrizes.
Vimos que vetores e matrizes so estruturas homogneas que agrupam
diversas informaes, do mesmo tipo, em uma nica varivel. Sendo os vetores
unidimensionais e as matrizes multidimensionais. Em relao aos vetores conhecemos o mtodo de classificao Bubble Sort, que varre o vetor repetidas vezes,
comparando os elementos vizinhos. Se eles esto fora de ordem, efetuada uma
troca de posio. Esse mtodo utilizado quando queremos rearranjar o vetor
segundo algum critrio como, por exemplo, ordem crescente, decrescente ou
alfabtica. Ainda em relao a vetores conhecemos o mtodo de pesquisa sequencial, que permite verificar se um dado elemento encontra-se no vetor ou no.
Estudamos as estruturas heterogneas, aquelas que agregam diversas informaes, que podem ser de diferentes tipos, sendo denominadas de registros. Este
tipo de estrutura bastante utilizado para representar cadastros, tais como: produtos, clientes, alunos, servios e outros.
Na construo de algoritmos utilizando estruturas homogneas e heterogneas utilizamos todos os conceitos vistos nas demais unidades, revisando,
principalmente as estruturas de repetio, pois elas so utilizadas nas operaes
de atribuio, leitura e escrita.
Por fim, elaboramos um algoritmo que envolveu todos os conceitos vistos na
Unidade. Agora, para fixar todos os conceitos importante que voc desenvolva
as atividades de autoestudo propostas. Assim, voc assimila com mais facilidade tudo o que vimos, desenvolve seu raciocnio lgico e aumenta o poder de
resoluo de problemas, afinal, elaboramos algoritmos com o intuito de resolver problemas.
154 - 155
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Consideraes Finais
156 - 157
EXERCCIOS DE FIXAO
1. Escreva um algoritmo que leia um vetor com 30 elementos inteiros e escreva-os
em ordem contrria a da leitura.
Objetivo do algoritmo: ler e imprimir um vetor com 30 elementos inteiros.
Entrada: ler um vetor com 30 nmeros inteiros.
Processamento: no h.
Sada: imprimir os 30 elementos em ordem contrria a da leitura.
Quadro 68: Pseudocdigo Exerccio 1
Algoritmo levetor
Var
: inteiro
Incio
fim_para
Fim_para
Fim.
2. Elabore um algoritmo que leia duas matrizes de 5x5. Calcule e imprimia a diferena entre elas.
Objetivo do algoritmo: ler duas matrizes e imprimir a diferena entre elas.
Entrada: ler duas matrizes 5 x 5.
Algoritmo diferenca
Var
i, j : inteiro
Incio
fim_para
fim_para
C A[i,j] B[ i,j]
Fim_para
Fim.
fim_para
158 - 159
3. Construa um algoritmo para uma agenda telefnica (nome, fone, e-mail) com 20
contatos. Alm disso, deve ser permitido executar quantas consultas o operador
desejar, em que ele digita o nome do contato e apresentado o telefone. Se o
nome digitado no existir, informar o usurio.
Objetivo do algoritmo: ler informaes sobre 20 contatos e realizar consultazelo nome.
Entrada: ler nome, fone e e-mail de 20 contatos e o nome para pesquisa.
Processamento: encontrar o nome informado pelo usurio.
Sada: imprimir o telefone se existir o nome informado. Seno, informar ao usurio que no h contato cadastrado com o nome digitado.
Algoritmo registrocontato
Tipo
Cad_agenda = registro
nome: caractere[30]
fone: caractere[15]
e-mail: caractere[20]
Fim_registro
Var
acha: lgico
nomebusca: caractere[30]
resp:caractere[3]
Para i de 1 at 20 faa
Incio
Leia (contato[i].email)
Fim_Para
Resp sim
Escreva (Informe o nome ser
pesquisado:)
Leia (nomebusca)
i 1
acha falso
acha verdadeiro
seno
i i+ 1
fim_se
Fim_Enquanto
Fim_se
Fim
Leia (nestp)
Fim_enquanto
160 - 161
Cad_professor = registro
matricula: inteiro
nome: caractere[30]
lotacao: caractere[20]
salario: real
fim_registro
Var
resp: caractere[3]
Para i de 1 at 30 faa
Incio
Fim_para
Resp sim
i 1
acha falso
Leia (registro)
Se (professor[i].matricula = registro)
ento
Acha verdadeiro
Seno
fim_enquanto
fim_se
i i + 1
Se (acha=verdadeiro) ento
Seno
Fim_se
Fim.
Fim_enquanto
162 - 163
SUB-ROTINAS E
PROGRAMAO COM
ARQUIVOS
UNIDADE
Objetivos de Aprendizagem
Conhecer e desenvolver sub-rotinas (procedimentos e funes).
Entender os mecanismos de passagem de parmetros e escopo de
variveis.
Compreender algoritmos recursivos.
Estudar organizao, declarao, forma de acesso e operaes em
arquivos.
Plano de Estudo
A seguir, apresentam-se os tpicos que voc estudar nesta unidade:
Sub-rotinas
Procedimentos
Escopo de variveis
Passagem de Parmetros
Funes
Recursividade
Trabalhando com arquivos
164 - 165
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Introduo
Caro aluno, chegamos ltima unidade da disciplina de Algoritmos e Lgica de
Programao I. Nesta unidade voc estudar as sub-rotinas e aprender a trabalhar com a manipulao de arquivos.
No dia a dia um programador, geralmente, encontra problemas complexos
e abrangentes. Para resolver esse tipo de problema o primeiro passo consiste em
decomp-lo em subproblemas para assim facilitar o processo de entendimento,
anlise e resoluo. Na soluo dos subproblemas so utilizadas sub-rotinas,
bloco de instrues que realizam tarefas especficas. Na literatura encontramos,
tambm, os termos subalgoritmo, subprograma e mdulo, que so equivalentes
a sub-rotinas. Existem dois tipos de sub-rotinas: os procedimentos e as funes. Estudaremos cada uma delas destacando sua sintaxe e modo de aplicao.
Ao trabalhar com sub-rotinas surge a necessidade de entender o conceito de
escopo de variveis, compreender o que so variveis locais e variveis globais e
como elas impactam no algoritmo. O escopo est relacionado visibilidade de
uma varivel ao longo do algoritmo, sendo que uma varivel local aquela que
podemos utilizar apenas dentro da sub-rotina e uma varivel global aquela que
est acessvel de qualquer parte do algoritmo.
Ainda no contexto de sub-rotinas estudaremos a passagem de parmetros
por valor e por referncia e o conceito de recursividade. Em relao passagem
de parmetros veremos quando utilizar cada uma delas e qual o seu impacto no
algoritmo. Estudaremos funes recursivas, que so funes que fazem chamadas a si mesmo, como constru-las, quais suas vantagens e desvantagens.
Conheceremos o conceito de arquivos, modos de concepo e como manipul-los utilizando operaes que possibilitem consultar, inserir, modificar e
eliminar dados.
Ao final desta unidade voc saber construir algoritmos modularizados, utilizar arquivos para armazenamento dos dados e responder a questes do tipo:
quando utilizar uma funo ou um procedimento? O que so parmetros? Como
deve ser realizada a passagem de parmetros? Qual a diferena entre passar por
valor ou por referncia? Como acessar um arquivo? Como percorrer um arquivo?
Introduo
Sub-Rotinas
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
166 - 167
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
H dois tipos de sub-rotinas: os procedimentos e funes. A seguir, estudaremos cada uma delas.
Procedimentos
Um procedimento consiste em um trecho de cdigo (conjunto de instrues)
com incio e fim e identificado por um nome, o qual usado para chamar a
rotina de qualquer parte do programa principal ou em uma sub-rotina qualquer.
Quando uma sub-rotina chamada, ela executada e ao seu trmino o processamento retorna para a linha seguinte a da instruo que a chamou (MANZANO;
OLIVEIRA, 1997).
Uma sub-rotina de procedimento se caracteriza por no retornar valor para
quem as chamou (ASCENCIO; CAMPOS, 2010). E sua sintaxe :
procedimento <nome do procedimento>
var
<variveis>
<instrues>
incio
fim_procedimento
Outro ponto importante que as sub-rotinas devem ser declaradas antes do programa ou sub-rotina que as chama.
Para exemplificar o funcionamento de sub-rotinas do tipo procedimento,
vamos construir um programa calculadora que apresenta um menu de opes
no programa principal e possibilita ao usurio escolher as seguintes operaes:
adio, subtrao, multiplicao, diviso e sair (MANZANO; OLIVEIRA, 2997).
Procedimentos
Algoritmo calculadora
Procedimento soma
Var:
Incio
A, B, Resultado: real
ResultadoA + B
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
168 - 169
Fim_procedimento
Procedimento subtracao
Var:
Incio
A, B, Resultado: real
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
ResultadoA - B
Procedimento multiplicacao
Var:
Incio
A, B, Resultado: real
ResultadoA * B
Var:
Incio
Resultado: real
Escreva (Procedimento DIVISO)
Procedimentos
ResultadoA / B
opcao: inteiro
opcao 0
Escreva (1 Soma)
Escreva (3 Multiplicao)
Incio
Escreva (2 Subtrao)
Escreva (4 Diviso)
Escreva (5 Sair)
Caso (opcao)
fim_enquanto
fim_se
fim_caso
Fim
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Fim_procedimento
170 - 171
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Escopo de Variveis
As variveis declaradas no interior de uma sub-rotina so chamadas de variveis locais, pois podem ser utilizadas apenas dentro da sub-rotina. Ao final
da execuo da sub-rotina essas variveis so destrudas e seus contedos so
perdidos (ASCENCIO; CAMPOS, 2010). No exemplo apresentado na seo
Procedimentos as variveis A, B e resultado so variveis locais.
As variveis globais so aquelas declaradas fora das sub-rotinas. Elas esto
acessveis em qualquer parte do algoritmo, inclusive dentro das sub-rotinas e so
destrudas apenas ao final da execuo do algoritmo (ASCENCIO; CAMPOS,
2010). o caso da varivel opo utilizada no exemplo da calculadora.
O escopo de uma varivel est vinculado a sua visibilidade em relao s
sub-rotinas de um programa. Devemos atentar para o fato de que uma varivel
pode ser considerada global para todas as sub-rotinas inferiores a uma rotina
principal, e dentro de uma dessas sub-rotinas a mesma varivel pode ser utilizada como local.
A Figura 37 ilustra o conceito de escopo de variveis. Temos uma rotina
principal que contm as rotinas 1 e 2. Internamente a rotina 1, temos duas rotinas (1.1 e 1.2) e internamente a rotina 2, temos a rotina 2.1 Observe que a rotina
principal possui duas variveis A, B, que so variveis globais em relao as sub-rotinas 1 e 2. No entanto, na rotina 1 temos a declarao de uma varivel A, a
Escopo de Variveis
Passagem de Parmetros
Os parmetros servem como um ponto de comunicao bidirecional entre uma
sub-rotina e o programa principal ou outra sub-rotina. Possibilitam a passagem
de valores de uma sub-rotina ou rotina chamadora outra sub-rotina e viceversa. Devemos fazer distino entre dois tipos de parmetros, os formais e os
reais (MANZANO; OLIVEIRA, 1997).
Os parmetros formais so aqueles declarados por meio de variveis juntamente com a identificao do nome da sub-rotina. J os parmetros reais so
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
qual assume um contexto local para esta sub-rotina mas, global para as sub-rotinas 1.1 e 1.2 do mesmo modo a varivel X. J as variveis W e Y so variveis
locais que pertencem s rotinas 1.1 e 1.2, respectivamente.
Em relao sub-rotina 2 temos que as variveis A e B so globais para a
rotina 2.1 A varivel M declarada na rotina
2 uma varivel global para a rotina 2.1,
A,B
que possui uma varivel X que local e
Rotina 1
no apresenta nenhuma relao com a
A, X
varivel X definida na rotina 1.
Rotina 1.1
Em relao sub-rotina 2 temos que as
W
variveis A e B so globais para a rotina
Rotina 1.2
2.1 A varivel M declarada na rotina 2
Y
uma varivel global para a rotina 2.1, que
possui uma varivel X que local e no
Rotina 2
apresenta nenhuma relao com a variM
vel X definida na rotina 1.
Rotina 2.1
Manzano e Oliveira (1997) destacam
X
que uma varivel declarada antes de uma
sub-rotina uma varivel global para a
Figura 37: Escopo de variveis
Fonte: MANZANO; OLIVEIRA (1997)
sub-rotina.
172 - 173
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Var:
Incio
Resultado: real
ResultadoA + B
Var:
Incio
Resultado: real
ResultadoA - B
Var:
Incio
Resultado: real
ResultadoA * B
Escreva (O resultado da
multiplicao :, resultado)
Fim_procedimento
Passagem de Parmetros
Var:
Incio
Resultado: real
ResultadoA / B
opcao: inteiro
X, Y: real
Incio
opcao0
Leia (X)
Leia (Y)
Escreva (2 Subtrao)
Escreva (3 Multiplicao)
Escreva (5 Sair)
Escreva (4 Diviso)
Caso (opcao)
fim_se
fim_caso
fim_enquanto
Fim.
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
174 - 175
Var:
Incio
i, fat: inteiro
fat1
fat fat * i
fim_para
Passagem de Parmetros
n: inteiro
Fatorial(n)
Incio
Fim.
Leia (n)
Neste caso, temos que a varivel X o parmetro formal que receber o valor da
varivel n por meio do procedimento fatorial. Ao trmino do lao de repetio,
o valor da varivel fat impresso. Lembre-se: a varivel fat vlida apenas dentro do procedimento fatorial.
No Quadro 75 temos a passagem de parmetros por referncia, no caso a varivel Fat. Sempre que a passagem for por referncia devemos inserir a instruo
Var na declarao da sub-rotina. A varivel X continua sendo passada por valor.
Algoritmo calculafatorial
Var:
i:inteiro
Incio
fat1
fatfat*i
fim_para
Fim_procedimento
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
176 - 177
Var
n, resultado: inteiro
Inicio
Leia(n)
Fabiana(n,resultado)
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Fim
deseja calcu
Passagem de Parmetros
fat
Funes
Uma funo, tambm uma sub-rotina, que tem como objetivo desviar a execuo do programa principal para realizar uma tarefa especfica, com uma nica
diferena: sempre retorna um valor (ASCENCIO; CAMPOS, 2010).
A sintaxe dada por:
funcao <nome da funo> (parmetros): <tipo da funo>
var
<variveis>
inicio
<instrues>
retorne <valor>
fim_funcao
Var:
Incio
i: inteiro
fat1
fat fat * i
fim_para
retorne fat
Fim_funcao
Var
n, resultado: inteiro
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
178 - 179
Incio
Resultado Fatorial(n)
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Fim.
Leia (n)
No algoritmo principal a chamada da funo atribuda a varivel resultado, pois toda funo retorna um valor.
Recursividade
Um objeto dito recursivo se ele for definido em termos de si prprio. Wirth
(1999) destaca que o conceito de recurso no encontrado apenas na matemtica, podemos encontr-lo no nosso dia a dia. Como, por exemplo, quando
vemos uma imagem que contm a si prpria (Figura 39).
A recursividade um mecanismo que permite uma funo chamar a si mesma
direta ou indiretamente. Uma funo recursiva quando possui uma chamada
a si prpria (ZIVIANE, 2004; GUIMARES; LAGES, 1994).
O princpio da recursividade consiste em diminuir sucessivamente o problema em um problema menor at que a simplicidade do problema permita
resolv-lo de modo direto, isto , sem recorrer a si mesmo. Deste modo, uma
funo recursiva possui um passo bsico e um passo recursivo. O passo bsico
imediatamente conhecido e o passo recursivo tenta resolver um subproblema
do problema inicial (GUIMARES; LAGES, 1994).
Recursividade
inteiro
Incio
Se (x= 0) ento
retorne 1
seno
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
180 - 181
Condio de parada
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Fatorial (1-1)
Fatorial (2-1)
Fatorial (3-1)
Fatorial (4-1)
Fatorial (5-1)
Fatorial (5)
Figura 40: Simulao da Funo Fatorial
Recursividade
Incio
retorne x
seno
fim_se
Ziviane (2004) destaca que a recursividade permite uma descrio mais concisa dos algoritmos, especialmente, quando o problema tem natureza recursiva
ou utiliza estruturas recursivas. Algumas desvantagens da recurso so: algoritmos recursivos consomem mais recursos, especialmente memria e so mais
difceis de serem depurados.
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Fim_funcao
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
182 - 183
Cad_produto = registro
Codigo: inteiro
Descricao: caractere
Unidade: caractere
Preco: real
Saldo: inteiro
fim_registro
Tipo
Cadastro: Cad_Produto
Produto: Arq_Produto
Sempre que formos trabalhar com arquivo, primeiro temos que abri-lo, para
deix-lo disponvel para leitura/gravao. A abertura realizada pelo comando
Abra( ). Considerando o exemplo de cadastro de produtos teramos: Abra
(Produto).
Trabalhando com Arquivos
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Do mesmo modo que precisamos abrir o arquivo antes do processamento, precisamos fech-lo aps o uso para que as suas informaes no sejam violadas.
O fechamento de um arquivo realizado por meio da instruo Feche( ). Para
o exemplo do cadastro de produtos o fechamento realizado com a instruo
Feche(Produto).
Para copiar uma informao que est em um arquivo utilizamos o comando
Copie( ), o qual possui dois parmetros: varivel do arquivo e varivel registro
com o mesmo formato do registro que compe o arquivo. Ou seja, no primeiro
parmetro indicamos de onde ser copiado e no segundo o local que armazenaremos o valor copiado. Lembre-se que o formato da varivel deve ser igual
ao do arquivo. No exemplo de cadastro de produtos a instruo para cpia seria
Copie(Produto, Cadastro).
Para armazenar uma informao no arquivo utilizamos o comando Guarde(
), que possui dois parmetros, em que o primeiro indica onde ser guardado e o
segundo o que ser guardado. No se esquea de que o formato do registro que
ser guardado tem que ser idntico ao do arquivo. Com isto, para o exemplo do
cadastro de produto a instruo : Guarde(Produto, Cadastro).
Muitas vezes, queremos apagar algumas informaes (registros) do arquivo.
Para isso, utilizamos o comando Elimine( ) que um parmetro, o arquivo
pois, elimina sempre o registro da posio corrente. Para o exemplo, teramos
Elimine(Produto).
Ao criar um arquivo definimos a forma como os registros so armazenados.
Esta concepo pode ser sequencial ou direta.
Nos casos de concepo sequencial temos que a gravao dos registros
realizada de modo contnuo, um aps o outro. Com isto, a localizao de um
registro obedece sua ordem de gravao. Para percorrer o arquivo utilizamos o
comando Avance( ), que coloca o arquivo na posio do prximo registro. Para
verificar se o arquivo chegou ao fim utilizamos o comando Fda( ). Utilizando
uma estrutura de repetio o comando Avance e Fda, conseguimos percorrer o
arquivo registro a registro (FORBELLONE; EBERSPACHER, 2005).
Na concepo direta, a localizao de um registro no arquivo est relacionada
com algum campo do arquivo, de modo que por meio deste campo conseguimos localizar o lugar que o registro est armazenado. O campo que determina
184 - 185
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
Consideraes Finais
Nesta unidade voc aprendeu a modularizar os algoritmos utilizando sub-rotinas. A modularizao uma tcnica bastante utilizada em programao devido
complexidade e tamanho dos problemas que temos que resolver no dia a dia.
O princpio desta tcnica consiste em decompor um problema em subproblemas de menor complexidade com o objetivo de facilitar o entendimento, anlise
e resoluo.
Vimos que na resoluo dos subproblemas so utilizadas sub-rotinas, que
consistem em blocos de instrues que realizam tarefas especficas. Aprendemos
que as sub-rotinas podem ser de dois tipos (procedimentos e funes) e que
quando uma sub-rotina chamada, ela executada e ao seu trmino o processamento retorna para a linha seguinte a da instruo que a chamou. Estudamos
que uma sub-rotina do tipo procedimento no retorna valor para quem a chamou e j uma funo sempre retorna um valor.
Conhecemos o conceito de escopo de variveis e vimos que as variveis
podem ser locais ou globais. Sendo que uma varivel local aquela que est
acessvel apenas dentro da sub-rotina, enquanto que uma varivel global acessvel de qualquer parte do algoritmo. Alm disso, estudamos o funcionamento
da passagem de parmetros por valor e por referncia. Na passagem de parmetros por valor no h alterao do valor do parmetro real, pois a sub-rotina
trabalha com cpias dos valores passados no momento de sua chamada. J na
passagem de parmetros por referncia esses valores so alterados, pois os parmetros passados so endereos de memria.
Estudamos o conceito de recursividade, que um mecanismo que permite
uma funo chamar a si mesma, e aprendemos que toda funo recursiva formada por um passo bsico e um recursivo. Alm disso, construmos funes
Consideraes Finais
recursivas para calcular o fatorial e a srie de Fibonacci, que so problemas clssicos de recurso.
Por fim, conhecemos os comandos para manipular arquivos e os modos de
concepo de arquivos sequencial e direto. Em relao concepo de arquivos
vimos como realizar a insero, consulta, alterao e excluso de dados.
Para saber um pouco mais sobre recursividade, leia o artigo Ensino de Programao recursiva em Cincia da Computao, disponvel em: <ftp://ftp.
usjt.br/pub/revint/115_45.pdf>.
O artigo destaca a importncia da recursividade e apresenta cenrios de
aplicao.
Reproduo proibida. Art. 184 do Cdigo Penal e Lei 9.610 de 19 de fevereiro de 1998.
186 - 187
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
Var:
Incio
total0
retorne total
i, total: inteiro
total total + i
fim_para
Fim_funcao
Var
n, resultado: inteiro
Resultado soma(n)
Incio
Fim.
Leia (n)
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
Incio
retorne sqr(x)
Fim_funcao
Var
num: inteiro
resultado: real
resultadoraiz(n)
Incio
Fim.
Leia (num)
3. Elabore uma sub-rotina que receba 3 valores de entrada e retorne o maior valor.
Objetivo do algoritmo: ler trs nmeros inteiros e retornar o maior valor.
Entrada: ler trs nmeros inteiros.
Processamento: comparar os nmeros e selecionar o maior.
Sada: imprimir o valor do maior nmero.
Algoritmo raizquadrada
Var
Incio
numx
num: inteiro
Se (x > y) ento
seno
fim_se
fim_se
numy
numz
retorne num
Fim_funcao
Var
resultado, a, b, c: inteiro
resultadomaior(a, b, c)
Incio
Fim.
Leia (a)
Leia (b)
Leia (c)
190 - 191
Algoritmo calculatempo
Var:
Incio
mresto/60
sresto mod 60
resto: inteiro
hx/3600
Fim_procedimento
Var
Incio
Fim.
Leia (n)
5. Elabore uma sub-rotina que receba o valor antigo de um produto e o percentual de reajuste e retorne o valor reajustado.
Objetivo do algoritmo: reajustar o valor de um produto.
Entrada: ler o preo do produto e o percentual de reajuste.
Processamento: calcular o reajuste do produto.
Sada: imprimir o valor do produto reajustado.
Algoritmo produto
Var
Incio
valor: real
valorprecop + (precop * (percentu
alp/100))
retorne valor
Fim_funcao
Var
resultadoreajuste(valor, percentual)
Incio
Fim.
Leia (valor)
Leia (percentual)
192 - 193
192 - 193
Concluso
Caro(a) aluno(a), chegamos ao fim de parte do nosso trabalho!
Diante dos conceitos que foram apresentados, voc deve estar mais preparado para
construir algoritmos e entender a importncia que eles tm no desenvolvimento
de software. Iniciamos o nosso aprendizado construindo algoritmos simples, que
tinham apenas entrada e sada de dados, e conforme avanamos passamos a construir algoritmos mais complexos, que envolviam entrada, processamento, sada de
dados e modularizao.
Na Unidade I, discutimos o conceito de algoritmos, um conjunto de passos para solucionar um problema, e estudamos que dado um problema no h um nico algoritmo que soluo, podemos ter vrios algoritmos. Isto que dizer que um algoritmo um possvel caminho para a soluo de um problema. Entendemos o processo
de anlise de problemas a partir do qual estruturamos um problema em Entrada,
Processamento e Sada. Estudamos os principais tipos de algoritmos, sendo eles: a
descrio narrativa, o fluxograma e o pseudocdigo. O tipo adotado foi o pseudocdigo em funo da facilidade de converso para uma linguagem de programao.
Vimos o conceito de variveis, os tipos de variveis (inteiro, real, caractere e lgica),
as regras para nomeao de identificadores, palavras reservadas, expresses e operadores (aritmticos, relacionais e lgicos), comandos de atribuio, entrada e sada
de dados.
A Unidade II tratou das estruturas condicionais, tambm denominadas estruturas de
seleo ou estrutura de controle, que possibilitam a construo de algoritmos com
desvios de fluxos. Isto , algoritmos cuja execuo de uma instruo ou conjunto
de instrues est condicionada a um teste condicional. Estudamos quatro formas
de estrutura condicional: estrutura condicional simples, estrutura condicional composta, estrutura condicional encadeada e estrutura de deciso mltipla. Revimos a
construo de expresses lgicas e a tabela verdade de cada um dos operadores.
Na Unidade III aprendemos a construir algoritmos utilizando as estruturas de repetio, utilizando laos contados e laos condicionais. Nos laos de repetio vimos
a estrutura Para, que utilizada nos casos em que sabemos quantas vezes o trecho
de cdigo precisa ser repetido. Nos laos de repetio condicionais estudamos as
estruturas Enquanto e Repita. A estrutura Enquanto utilizada quando no sabemos previamente o nmero de repeties que deve ser executado e impomos uma
condio que realizada no final. A estrutura Repita utilizada quando temos um
nmero indefinido de repeties, no entanto, o teste lgico realizado no final. Foi
abordado, tambm, como o conceito de encadeamento pode ser aplicado s estruturas de repetio.
A Unidade IV discutiu as estruturas de dados homogneas e heterogneas. Nas
estruturas de dados homogneas conhecemos os vetores (unidimensionais) e as
matrizes (multidimensionais), que agrupam diversas informaes, do mesmo tipo,
em uma nica varivel. Tratamos, tambm, como realizar ordenao e busca. Em
relao s estruturas heterogneas estudamos os registros, que agregam diversas
Concluso
informaes, que podem ser de diferentes tipos.
Por fim, na Unidade V aprendemos a construir algoritmos modularizados utilizando
sub-rotinas. Foram abordadas as sub-rotinas de procedimento e funo, sendo que
a diferena entre elas que na sub-rotina do tipo procedimento no h retorno
de valor para quem a chamou e j na funo sempre retorna um valor. Estudamos
o conceito de escopo de variveis em que vimos as variveis globais e locais. Foi
tratada, tambm, a passagem de parmetros por valor e por referncia. Vimos que
na passagem de parmetros por valor no h alterao do valor do parmetro real,
pois a sub-rotina trabalha com cpias dos valores passados no momento de sua
chamada. J na passagem de parmetros por referncia esses valores so alterados,
pois os parmetros passados so endereos de memria. Discutimos o conceito de
recursividade, que um mecanismo que permite uma funo chamar a si mesma,
e em que situaes pode ser aplicado. Aprendemos os comandos e operaes para
manipular arquivos e como estes podem ser concebidos.
Em cada uma das unidades apresentamos e construmos algoritmos que possibilitaram a aplicao prtica dos conceitos e estimularam o desenvolvimento do raciocnio lgico. Nestas cinco unidades consolidamos a viso de Algoritmos e Lgica de
Programao que imprescindvel para o desenvolvimento de software.
Muito sucesso a voc!
Professora Camila
194 - 195
Referncias
ASCENCIO, A. F. G.; CAMPOS, E. A. V. Fundamentos da programao de computadores. 5. ed. So Paulo: Prentice Hall, 2010.
CORMEN, T. H.; RIVEST, R.; LEISERSON, C. E. Algoritmos: teoria e prtica. Rio de Janeiro: Campus, 2002.
FARRER, H. Programao Estruturada de Computadores. Rio de Janeiro: Ed. LTC,
1989.
FORBELLONE, A. L. V.; EBERSPACHER, H. F. Lgica de Programao. 3. ed. So Paulo:
Makron Books, 2005.
GUIMARES, A. M.; LAGES, N.A.C. Algoritmos e Estruturas de Dados. Rio de Janeiro: LTC, 1994.
LOPES, A.; GARCIA, G. Introduo Programao. Rio de Janeiro: Elsevier, 2002.
MANZANO, J. A. N. G.; OLIVEIRA, J. F. Estudo dirigido de algoritmos. 3. ed. So Paulo: rica, 1997.
SALVETTI, D. D.; BARBOSA, L. M. Algoritmos. So Paulo: Pearson Makron Books,
1998.
WIRTH, N. Algoritmos e Estruturas de Dados. Rio de Janeiro: Editora LTC, 1999.
ZIVIANE, N. Projeto de Algoritmos com implementaes em Pascal e C. 2. ed. So
Paulo: Pioneira Thomson Learning, 2004.