Documente Academic
Documente Profesional
Documente Cultură
Lgica de Programao
Rafael Lucchesi
Diretor do Departamento Nacional do SENAI
Alcantaro Corra
Presidente da Federao da Indstria do Estado de Santa Catarina
Lgica de Programao
Helenilson Ricardo Kitzberger
Florianpolis/SC
2011
proibida a reproduo total ou parcial deste material por qualquer meio ou sistema sem o prvio consentimento
do editor.
Autor
Helenilson Ricardo Kitzberger
Fotografias
Banco de Imagens SENAI/SC
http://www.sxc.hu/
http://office.microsoft.com/en-us/ images/
http://www.morguefile.com/
http://www.bancodemidia.cni.org.br/
Ficha catalogrfica elaborada por Luciana Effting CRB14/937 - Biblioteca do SENAI/SC Florianpolis
K62l
Prefcio
Voc faz parte da maior instituio de educao profissional do estado.
Uma rede de Educao e Tecnologia, formada por 35 unidades conectadas e estrategicamente instaladas em todas as regies de Santa Catarina.
No SENAI, o conhecimento a mais realidade. A proximidade com as
necessidades da indstria, a infraestrutura de primeira linha e as aulas
tericas, e realmente prticas, so a essncia de um modelo de Educao
por Competncias que possibilita ao aluno adquirir conhecimentos, desenvolver habilidade e garantir seu espao no mercado de trabalho.
Com acesso livre a uma eficiente estrutura laboratorial, com o que existe
de mais moderno no mundo da tecnologia, voc est construindo o seu
futuro profissional em uma instituio que, desde 1954, se preocupa em
oferecer um modelo de educao atual e de qualidade.
Estruturado com o objetivo de atualizar constantemente os mtodos de
ensino-aprendizagem da instituio, o Programa Educao em Movimento promove a discusso, a reviso e o aprimoramento dos processos
de educao do SENAI. Buscando manter o alinhamento com as necessidades do mercado, ampliar as possibilidades do processo educacional,
oferecer recursos didticos de excelncia e consolidar o modelo de Educao por Competncias, em todos os seus cursos.
nesse contexto que este livro foi produzido e chega s suas mos.
Todos os materiais didticos do SENAI Santa Catarina so produes
colaborativas dos professores mais qualificados e experientes, e contam
com ambiente virtual, mini-aulas e apresentaes, muitas com animaes, tornando a aula mais interativa e atraente.
Mais de 1,6 milhes de alunos j escolheram o SENAI. Voc faz parte
deste universo. Seja bem-vindo e aproveite por completo a Indstria
do Conhecimento.
Sumrio
Contedo Formativo
Apresentao
28 Unidade de estudo 3
Estruturas de
Seleo
11
12 Unidade de estudo 1
Introduo Lgica
de Programao
13
Seo 1 - Conceitos
14
16
16
Seo 4 - Ambiente
20 Unidade de estudo 2
Algoritmos
21
23
Seo 2 - Constantes e
variveis
23
Seo 3 - Expresses
25
Seo 4 - Funes
26
Seo 5 - Atribuio
27
Seo 6 - Comandos de
entrada e sada
48 Unidade de estudo 6
Estruturas
Heterogneas
29
Seo 1 - Introduo
49
Seo 1 - Introduo
29
Seo 2 - Comando Se
49
Seo 2 - Registros
31
32
54 Unidade de estudo 1
Funes
34 Unidade de estudo 4
Estruturas de
Repetio
35
Seo 1 - Introduo
36
37
38
40 Unidade de estudo 5
Estruturas
Homogneas
41
Seo 1 - Introduo
42
Seo 2 - Vetores
45
Seo 3 - Matrizes
55
Seo 1 - Introduo
55
56
Seo 3 - Argumentos e
parmetros
57
Seo 4 - Funes
58
Seo 5 - Procedimentos
58
59
Seo 7 - Argumentos de
subprogramas
61
Finalizando
62
Referncias
64
Contedo Formativo
Carga horria da dedicao
Carga horria: 120 horas
Competncias
Desenvolver algoritmos e programas utilizando tcnicas, lgica e linguagens de
programao para solues computacionais.
Conhecimentos
Estruturas de controle e repetio.
Estruturas de dados heterogneas (registros).
Estruturas de dados homogneas (vetores, matrizes).
Ferramentas de auxlio aprendizagem/interpretador de portugol.
Fluxogramas.
Funes, procedimentos, mtodos.
Matrizes.
Metodologias de testes (teste de mesa).
Programao estruturada.
Pseudocdigo.
Tipos de dados.
Variveis e constantes.
Vetores.
Operadores aritmticos, relacionais e lgicos, expresses lgicas e aritmticas.
Habilidades
Aplicar a lgica de programao.
Aplicar linguagens para construo de algoritmos.
Estruturar solues lgicas.
Elaborar documentao do algoritmo.
Executar testes manuais e automatizados.
Aplicar abstrao.
LGICA DE PROGRAMAO
Atitudes
Organizao e zelo na utilizao de equipamentos.
Foco no contedo trabalhado.
Acesso a stios relacionados ao tema trabalhado.
Organizao e limpeza dos ambientes coletivos.
Dedicao e empenho nas atividades curriculares e extracurriculares.
Capacidade de abstrao.
Trabalho em equipe.
Apresentao de novas solues para situaes-problema.
Cumprimento de prazos.
Anlise crtica de suas produes.
10
Apresentao
Seja bem-vindo unidade curricular de Lgica de Programao!
O objetivo principal demonstrar tcnicas para a resoluo de problemas e, consequentemente, automatizao de tarefas. Voc sabia que o
aprendizado da lgica essencial para a formao de um bom programador? verdade. E os conhecimentos sobre lgica serviro de base
para o aprendizado de todas as linguagens de programao, estruturadas
ou no. De um modo geral, esses conhecimentos sero de suma importncia, pois ajudaro no cotidiano para o desenvolvimento de um
raciocnio rpido.
Nesta unidade curricular voc estudar os conceitos bsicos de lgica de
programao, as formas de representao e, principalmente, os algoritmos, que auxiliam na estruturao de uma sequncia lgica para resoluo de problemas e automatizao de tarefas. Voc ir aprender de que
forma utilizamos os algoritmos para a tomada de decises, repeties e
manipulao de informaes.
Esperamos que, por meio desse contedo, voc conhea em detalhes o
que e como aplicar a lgica de programao em sua vida profissional.
Bons estudos!
Helenilson Ricardo
Kitzberger
Helenilson Ricardo Kitzberger
graduado em Sistemas de Informao pelo Centro Universitrio de Jaragu do Sul. Atualmente trabalha como analista
de sistemas e tambm proprietrio de uma empresa de
desenvolvimento de software
para gesto empresarial. Atua
tambm como pesquisador e
professor no SENAI de Jaragu
do Sul, onde ministra aulas no
curso Tcnico em Informtica.
LGICA DE PROGRAMAO
11
Unidade de
estudo 1
Sees de estudo
Seo 1 Conceitos
Seo 2 Formas de representao
Seo 3 Teste de mesa
Seo 4 Ambiente
Introduo Lgica de
Programao
Seo 1
Conceitos
Lgica de programao
Para Forbellone e Eberspcher
(2005, p. 12), a lgica pode ser
relacionada com a correo do
pensamento. Correo de pensamento? Isso mesmo! Uma de suas
preocupaes determinar quais
operaes so vlidas e quais no
so, fazendo anlises das formas e
leis do pensamento.
Sequncia lgica
Os pensamentos que voc estudou na lgica de programao
podem ser descritos como uma
sequncia de instrues, que devem ser seguidas para cumprir
uma determinada tarefa.
Sequncia lgica so passos
executados at atingir um objetivo
ou soluo de um problema.
Instrues
Na linguagem comum, entende-se por instrues um
conjunto de regras ou normas
definidas para a realizao ou
emprego de algo.
Instrues so um conjunto
de regras ou normas definidas
para a realizao ou emprego
de algo. Em informtica, o
que indica a um computador
uma ao elementar a executar.
LGICA DE PROGRAMAO
13
Algoritmos
Um algoritmo formalmente uma
sequncia finita de passos que levam execuo de uma tarefa.
possvel pensar em algoritmo
como uma receita, uma sequncia de instrues que do cabo de
uma meta especfica. Essas tarefas
no podem ser redundantes nem
subjetivas na sua definio. Elas
devem ser claras e precisas.
Como exemplos de algoritmos
existem os algoritmos das operaes bsicas (adio, multiplicao, diviso e subtrao) de
nmeros reais decimais. Outros
exemplos seriam os manuais de
aparelhos eletrnicos, que explicam passo a passo como utiliz-los.
At mesmo as coisas mais simples
podem ser descritas por sequncias lgicas. Vamos a um exemplo: como chupar bala. Observe!
Os programas de computadores
nada mais so do que algoritmos escritos em uma linguagem
de computador (Pascal, C, Cobol, Fortran, Visual Basic, entre
outras) e que so interpretados
e executados por uma mquina;
no caso, um computador. Com
essa interpretao rigorosa, um
programa , por natureza, muito
especfico e rgido em relao aos
algoritmos da vida real.
Com esses conceitos, certamente
agora voc estar pronto para seguir para a prxima seo. Vamos
l!
Seo 2
Formas de
representao
Retirar o papel.
Chupar a bala.
Pegar a bala.
14
Programas
Fluxograma convencional:
Pseudolinguagem: emprega
uma linguagem intermediria
entre a linguagem natural e uma
linguagem de programao para
descrever os algoritmos.
Descrio narrativa
Como ilustrao de algoritmo em
linguagem natural, considera a seguinte receita.
Providencie manteiga, ovos, 2 Kg
de massa etc.
Misture os ingredientes.
Despeje a mistura na forma
de bolo.
Fluxograma convencional
Essa representao de algoritmos emprega vrias formas geomtricas
para descrever cada uma das possveis aes durante a execuo dos
algoritmos. Existem algumas formas geomtricas empregadas normalmente e que voc poder ver na figura seguinte. Cada uma das formas se
aplica a uma determinada ao, como est indicado. Existem outras formas que podem ser aplicadas, no entanto, essas formas sero suficientes
para os exemplos que sero mostrados nesta unidade curricular.
Como primeiro exemplo de um algoritmo descrito por meio de fluxogramas, considere o exemplo do algoritmo para decidir o que fazer em
um dia de domingo. Veja a prxima figura!
LGICA DE PROGRAMAO
15
Pseudolinguagem
Esse modo de representar algoritmos procura empregar uma
linguagem que esteja o mais prxima possvel de uma linguagem
de programao de computadores
de alto nvel, mas evitando definir regras de construo gramatical muito rgidas. A ideia usar
as vantagens do emprego da linguagem natural, mas restringindo
o escopo da linguagem. Normalmente, essas linguagens so verses ultrarreduzidas de linguagens
de alto nvel do tipo Pascal ou C.
Ficou mais claro agora? Ento
veja a seguir um exemplo de pseudolinguagem.
algoritmoCALCULA_DOBRO
var
varNum, varDobro : inteiro
inicio
leia (varNum)
varDobro 2 * varNum
Escreva (varDobro)
fimalgoritmo
16
O uso da pseudolinguagem, ou
linguagem algortmica, tem inmeras vantagens, como utilizao
do portugus como base e a passagem quase imediata do algoritmo
para uma linguagem de programao qualquer. No entanto, no
tem padro definido, dificultando
a leitura em alguns momentos.
Seo 3
Teste de mesa
Aps desenvolver um algoritmo
preciso test-lo. Esse teste
chamado de TESTE DE MESA,
que significa seguir as instrues
do algoritmo de maneira precisa
para verificar se o procedimento
utilizado est correto ou no. Mas
como esse teste deve ser feito?
Veja na tabela seguinte um exemplo de teste de mesa que valida o
algoritmo CALCULA_DOBRO,
apresentado na seo anterior.
Seo 4
Ambiente
O computador
Os computadores podem ser usados de forma eficiente na soluo
de certos tipos de problemas. Os
problemas que suportam tratamento por computador em geral
envolvem grandes quantidades
de dados ou so problemas de
natureza complexa, exigindo a
execuo de um grande nmero
de passos para alcanar a soluo.
Basicamente, so problemas na
rea de processamento de dados
e na rea cientfica.
varNum
varDobro
12
entendimento do problema;
criao de uma sequncia de operaes (ou aes) que, quando exe-
Programao
Programao a sequncia de planejamento, projeto, escrita e testes de
instrues desempenhados pelo computador. uma arte e uma cincia. Arte porque existem muitas maneiras de se realizar o trabalho de
programao. Existe espao para uma considervel dose de criatividade.
tambm uma cincia, porque existem algumas regras que devem ser
seguidas, porque necessrio o uso de lgica e porque existem alguns
mtodos rigorosos de programao que asseguram a eficincia, economia e a utilidade dos programas gerados.
Para tornar o trabalho de programao mais fcil, divida sistematicamente em partes menos complexas (essa tcnica denomina-se dividir
para conquistar).
E voc sabe quando um programa confivel?
LGICA DE PROGRAMAO
17
Linguagens de programao
Linguagem uma maneira de comunicao que segue uma forma e uma
estrutura com significado interpretvel. Portanto, linguagem de programao um conjunto finito de palavras, comandos e instrues, escritos
com o objetivo de orientar a realizao de uma tarefa pelo computador.
Logicamente, a linguagem utilizada pelos indivduos no cotidiano diferente da linguagem utilizada pela mquina. A mquina trabalha somente
com cdigos numricos (linguagem de mquina), baseados nos nmeros
0 e 1 (sistema binrio), que representam impulsos eltricos, ausente e
presente.
Assim, qualquer linguagem de programao deve estar situada entre dois
extremos: o da linguagem natural do homem (muito clara, porm lenta)
e o da linguagem de mquina (muito rpida, porm complexa).
18
Esse o conceito de nvel de linguagem: alto nvel para as mais prximas da linguagem humana; baixo nvel para as mais semelhantes
linguagem de mquina.
Tradutores
Para que um computador possa entender um programa escrito em
uma linguagem de alto nvel, torna-se necessrio um meio de traduo
entre a linguagem utilizada no programa e a linguagem de mquina. Esse
meio pode ser de dois tipos: compilador e interpretador. Saiba mais sobre cada um deles!
Compilador
Traduz o programa escrito em linguagem de alto nvel (programa-fonte)
para um programa equivalente escrito em linguagem de mquina (programa-objeto).
Interpretador
Traduz e envia para execuo instruo por instruo e o programa permanece na forma de fonte.
Aqui voc finaliza a primeira unidade do curso, onde conheceu conceitos de lgica de programao, sequncia lgica, instrues, algoritmos
e programas. Viu que os algoritmos podem ser representados por
descrio narrativa, fluxograma convencional e pseudolinguagem, alm
do teste de mesa e do ambiente. Agora voc est pronto para seguir para
a prxima etapa: o estudo da seo seguinte, cujo tema ser algoritmos.
Ento, rena motivao e comprometimento e v em busca de novos
saberes!
LGICA DE PROGRAMAO
19
Unidade de
estudo 2
Sees de estudo
Seo 1 Tipos de dados
Seo 2 Constantes e variveis
Seo 3 Expresses
Seo 4 Funes
Seo 5 Atribuio
Seo 6 Comandos de entrada e sada
Algoritmos
Seo 1
Tipos de dados
Como voc j estudou, um algoritmo constitudo de uma
sequncia de instrues a serem
seguidas para a obteno de solues a algum problema. Nessa soluo, so manipulados diversos
dados. Esses dados podem ser os
apresentados pelo problema os
dados intermedirios que so
gerados durante a execuo do
algoritmo, ou os dados que representam a soluo do problema.
Com isso, pode-se concluir
que os dados manipulados
dentro de um algoritmo podem ser classificados em
vrios tipos, com suas caractersticas e operaes. Cada
linguagem de programao
tem sua prpria classificao.
Inteiro
Toda e qualquer informao numrica que pertena ao conjunto dos
nmeros inteiros (negativo, nulo ou positivo).
Exemplos: 39; 0; -56 entre outros.
Real
Toda e qualquer informao numrica que pertena ao conjunto dos
nmeros reais (negativo, nulo ou positivo, inteiro ou fracionrio).
Exemplos: -4, 3; 0, 35; 1,23
Caractere
So caracterizadas como tipos caracteres as sequncias contendo letras,
nmeros e smbolos especiais. Uma sequncia de caracteres deve ser
indicada entre aspas ( ). Esse tipo de dado tambm conhecido como
alfanumrico, string, literal ou texto.
Exemplos: Rua Alfa, 52 Apto 1; Fone: 3276-9988; 04387-456; ; 7.
Lgico
Todo dado a ser tratado em um
algoritmo deve pertencer a algum
tipo, que ir determinar o domnio
de seu contedo. Os tipos mais
comuns de dados so conhecidos
como tipos primitivos de dados.
So eles: inteiro, real, caractere e
lgico. Quer saber o que cada um
deles representa? Vamos adiante!
Tipo
Exemplo
VisuAlg
Java
Inteiro
2 | 45 | 100
inteiro
int
Real
2,456 | 101,19
real
float
Caractere
A | 4 | Teste
caractere
char / string
Lgico
Verdadeiro | Falso
logico
true / false
LGICA DE PROGRAMAO
21
Seo 2
Constantes e variveis
identificador;
Constantes
Constante um determinado valor fixo que no se modifica ao
longo do tempo durante a execuo de um programa. Conforme o
seu tipo, a constante classificada
como sendo inteira, real, caractere
e lgica.
Exemplo: constPI = 3.14
Variveis
Varivel um objeto (uma posio frequentemente localizada na
memria), capaz de armazenar
um valor ou expresso. As variveis s existem em tempo de
execuo, sendo associadas a nomes, chamadas identificadores,
durante a criao dos algoritmos.
Em relao varivel, estamos
tratando de uma regio de memria (do computador) previamente
identificada, cuja finalidade armazenar os dados ou informaes de um programa por um determinado espao de tempo. Para
que voc entenda melhor, pense
que a memria do computador
se organiza tal qual um armrio
com vrias divises. Cada diviso
identificada por um endereo
diferente em uma linguagem que
o computador entende.
Assim, o computador armazena
os dados nessas divises, sendo
que em cada diviso s possvel
armazenar um dado e, toda vez
que o computador armazenar um
dado em uma dessas divises, o
dado que antes estava armazenado eliminado. Mas lembre-se de
que o contedo pode ser alterado,
mas somente um dado pode ser
armazenado por vez naquela diviso.
22
Variveis globais
Uma varivel global uma varivel acessvel em todos os escopos
de um algoritmo. O mecanismo
de interao com variveis globais
chamado ambiente global.
Mas fique atento! O uso de variveis globais geralmente considerado inadequado, pois seu
contedo pode ser potencialmente modificado de qualquer local
e qualquer parte de um cdigo
pode depender dele.
Variveis locais
Variveis locais so aquelas declaradas no incio de um subalgoritmo. So visveis, ou seja, podem
ser utilizadas somente pelo subalgoritmo onde foram declaradas.
Outros subalgoritmos ou mesmo
o algoritmo principal no pode
utiliz-la.
Variveis locais somente permanecem vlidas durante a
execuo da funo ou procedimento e, em seguida, so
reinicializadas em zero.
Constantes X variveis
A diferena primordial entre esses
dois conceitos que constantes
so valores inalterados e varivel
uma entidade capaz de manifestar
diferenas em valor. Diz-se que
a varivel possui qualquer valor
dentro de um campo determinado. Atua como uma gaveta,
onde se pode guardar qualquer
valor, desde que o tipo seja respeitado.
Seo 3
Expresses
aritmticas;
relacionais;
lgicas.
Saiba o que significa cada uma
delas.
Aritmticas
Expresses aritmticas so aquelas que apresentam como resultado um valor numrico que pode
ser um nmero inteiro ou real, dependendo dos operandos e operadores. Observe os operadores
aritmticos na tabela seguinte.
Operadores
Simbologia
Prioridade
Subtrao
Multiplicao
Diviso
Mdulo
Exponenciao
Radiciao
//
Soma
A + B - C
A / B
3.14 * (A + B)
Ficou claro at aqui? Para entender melhor, observe alguns exemplos que mostram como essas
regras so aplicadas. Considere as
seguintes variveis:
A = 2
B = 4
C = 1
LGICA DE PROGRAMAO
23
A*B-C
A * (B - C)
B+A/C+5
(B + A) / (C + 5)
A = 5
B = 3
Expresso
Resultado
A=B
Falso
A <> B
Verdadeiro
A>B
Verdadeiro
A<B
Falso
A >= B
Verdadeiro
A <= B
Falso
Lgicas
Relacionais
As expresses relacionais so utilizadas para comparar caracteres
e nmeros. Os valores a serem
comparados podem ser literais ou
variveis. Esses operadores sempre retornam valores lgicos (verdadeiro ou falso).
Para estabelecer prioridades no
que diz respeito a qual operao
executar primeiro podem ser utilizados os parnteses, conforme
mostrado anteriormente.
Observe os operadores relacionais
disponveis na tabela seguinte.
Tabela 4: Operadores relacionais
Descrio
Simbologia
Igual a
Diferente de
<>
Maior que
>
Menor que
<
Maior ou igual a
>=
24
Descrio
Simbologia
AeB
A ou B
Ou
ou
A xou B
No
nao
Xou
xou
nao A
Primeiro valor
Operador
Segundo valor
Resultado
Verdadeiro
Verdadeiro
Verdadeiro
Verdadeiro
Falso
Falso
Falso
Verdadeiro
Falso
Falso
Falso
Falso
Verdadeiro
ou
Verdadeiro
Verdadeiro
Verdadeiro
ou
Falso
Verdadeiro
Falso
ou
Verdadeiro
Verdadeiro
Falso
ou
Falso
Falso
Verdadeiro
nao
Falso
Falso
nao
Verdadeiro
Seo 4
Funes
Numricas: so aquelas cujo resultado da avaliao do tipo numrico, seja ele inteiro ou real. Somente podem ser efetuadas entre
nmeros propriamente apresentados ou variveis numricas.
Caractere: so aquelas cujo resultado da avaliao do tipo caractere. Somente podem ser efetuadas entre caracteres propriamente
apresentados ou variveis literais do tipo caractere.
Converso de tipos: so aquelas que convertem valores numricos
de um determinado tipo para outro valor numrico de outro tipo.
Entre esses tipos possvel encontrar diversas funes matemticas,
descritas conforme a prxima tabela.
LGICA DE PROGRAMAO
25
Funo
Resultado
sen (x)
Seno de x
cos (x)
Cosseno de x
tg (x)
Tangente de x
arcsen (x)
arccos (x)
arctg (x)
abs (x)
int (x)
A parte inteira de x
frac (x)
A parte fracionria de x
ard (x)
Arredondamento de x
rnd (x)
Valor randmico de x
DICA
Portanto, uma dica avaliar a equivalncia dos comandos apresentados anteriormente com o da linguagem escolhida.
Seo 5
Atribuio
26
Seo 6
Como voc pode ver nesse exemplo, possvel fazer com que o computador fique aguardando que um valor seja digitado. O valor digitado ser
armazenado na varivel varNum.
Ao contrrio de um comando de entrada, um comando de sada utilizado quando necessitamos apresentar valores ao meio externo. Os valores so comumente apresentados na tela do computador.
A seguir, voc ver um algoritmo exemplificando o comando de sada
de dados escreva:
algoritmo CALCULA_DOBRO
var
varNum, varDobro : inteiro
inicio
leia (varNum)
varDobro 2 * varNum
escreva (varDobro)
fimalgoritmo
LGICA DE PROGRAMAO
27
Unidade de
estudo 3
Sees de estudo
Seo 1 Introduo
Seo 2 Comando Se
Seo 3 Ninhos de comando Se
Seo 4 Comando Escolha
Estruturas de Seleo
Seo 1
Introduo
Para iniciar o estudo, importante
ressaltar que existem problemas
que podem ter mais de um caminho para serem resolvidos em
uma seleo correta. Muitas vezes
tambm podem existir restries
nas solues. Portanto, para executar o algoritmo, em dado momento preciso tomar a deciso
do caminho que dever ser seguido para chegar soluo correta
para o problema.
A deciso do caminho a ser seguido precisa estar fundamentada em alguma lgica. E funo
de quem escreve o algoritmo dar
condies para o sujeito que o
executa fazer a escolha correta do
caminho para se chegar soluo
do problema.
Um exemplo simples de problema que pode ter metodologias
diferentes em sua soluo so os
clculos das razes de equaes
polinomiais de 2 grau (ax2 + bx
+ c = 0). Se o termo b2 4ac for
maior ou igual a zero, as razes
sero reais. Caso contrrio, sero
complexas.
No seria correto escrever um algoritmo que resolvesse somente
a parte de razes reais ou a parte
complexa, pois a metodologia que
vai ser usada somente ser conhecida na execuo do algoritmo.
Logo, preciso descrever a soluo por ambas as metodologias,
mas deixando claro para quem ir
execut-la que ser preciso fazer
uma escolha entre os caminhos
possveis.
metodologia de clculo de
razes complexas.
At agora, os algoritmos seguiram
um mesmo padro: entrava-se
com dados, que eram processados
e alguma informao era mostrada na tela.
Na segunda, s recebem as
cestas bsicas as famlias com
pelo menos quatro integrantes.
Na terceira, dependendo
do sexo, recebe-se um ou dois
ingressos.
LGICA DE PROGRAMAO
29
Assim, possvel avaliar a importncia do teste nas duas ltimas afirmativas, pois aes diferentes so executadas de acordo com o resultado.
Seo 2
Comando Se
muito comum ver situaes em programao, assim como na prtica,
em que se decide por um ou por outro procedimento, de acordo com
certas condies. Por exemplo, ao dizer SE estiver chovendo ENTO leve
um guarda-chuva.
Certamente voc j passou por alguma situao como essa, certo? Observe um exemplo de seleo simples.
30
Seo 3
Ninhos de comando Se
Dentro de um comando de seleo (comando Se) possvel colocar qualquer tipo de comando.
Assim, dentro de um comando Se,
pode-se ter outros comandos de
seleo. Veja a seguir.
Quando o interpretador encontra o identificador Se, ele espera em seguida uma condio booleana sob forma de expresso relacional (como
por exemplo, varNum < 10), que pode ser verdadeira ou falsa. Se a
condio verdadeira, o bloco de cdigo seguido de Ento executado.
Caso a condio seja falsa, o bloco de cdigo seguido de Seno executado. Em ambos os casos, aps a execuo do bloco de cdigo, o fluxo
do programa retornado para o ponto indicado por Fim Se. Note que
a parte do Seno opcional e pode ser omitida. Caso seja omitida, a estrutura chamada de seleo simples; caso contrrio, chamada seleo
composta.
algoritmo MAXIMO
var
varNum1, varNum2 : inteiro
inicio
leia (varNum1)
leia (varNum2)
se varNum1 > varNum2
entao
escreva (Maior valor
o primeiro)
seno
escreva (Maior valor
o segundo)
fimse
fimalgoritmo
LGICA DE PROGRAMAO
31
algoritmo MAXIMO
var
varNum1, varNum2 : inteiro
inicio
leia (varNum1)
leia (varNum2)
se varNum1 > varNum2 entao
escreva (Maior valor o primeiro)
seno
se varNum1 < varNum2
escreva (Maior valor o segundo)
seno
escreva (Os dois valores so iguais)
fimse
fimse
fimalgoritmo
Note que, nessa nova verso, caso o valor da expresso varNum1 >
varNum2 seja falso, o fluxo de execuo ir executar o que estiver dentro do Seno do primeiro Se. Dentro do Seno do primeiro Se, um outro
Se executado, sendo ento verificado se o contedo de varNum1
menor que contedo de varNum2. Veja que o comando de seleo
que est colocado dentro do Seno do primeiro Se, s ser executado se
ao executar o primeiro Se, a expresso for falsa. Em seguida, feita a
verificao se o contedo de varNum1 menor que o contedo de
varNum2. Caso positivo, ser definido que o contedo de varNum2
maior, seno definir que ambos so iguais.
E voc j ouviu falar no Comando Escolha? Mesmo que no saiba o que
fique tranquilo, pois esse ser o tema da seo seguinte. At l!
Seo 4
Comando Escolha
Quando um conjunto de valores discretos precisa ser testado e aes
diferentes so associadas a esses valores, estamos diante de uma seleo
com ninhos de comando Se. Como essa situao bastante frequente
na construo de algoritmos que dependem de alternativas, utilizaremos
uma estrutura especfica para esses casos: a seleo de mltipla escolha.
O comando Escolha uma alternativa para os comandos Se aninhados, deixando o algoritmo com uma estrutura melhor.
32
Nota
Conceito
Insuficiente
Regular
Bom
timo
algoritmo CONCEITO
var
varNota : inteiro
varConceito : caractere
inicio
leia (varNota)
se varNota = 1 entao
varConceito Insuficiente
seno
se varNota = 2
varConceito Regular
seno
se varNota = 3
varConceito Bom
seno
varConceito timo
fimse
fimse
fimse
escreva (varConceito)
fimalgoritmo
Perceba que, no algoritmo anterior, vrios testes so feitos sobre o contedo da varivel varNota. Em vez de escrevermos os vrios testes
utilizando Ses aninhados e considerando que todos os testes so realizados sobre uma mesma expresso, possvel utilizar um comando alternativo, que tem essa funo. Trata-se do comando Escolha, cuja funo
tornar possvel a escolha de uma alternativa, entre as vrias disponveis.
Usando o comando Escolha, o problema de determinao do conceito de
um aluno pode ser resolvido conforme apresentado no prximo algoritmo. Acompanhe com ateno!
algoritmo CONCEITO
var
varNota : inteiro
varConceito : caractere
inicio
leia (varNota)
escolha varNota
caso 1
varConceito Insuficiente
caso 2
varConceito Regular
caso 3
varConceito Bom
outrocaso
varConceito timo
fimescolha
escreva (varConceito)
fimalgoritmo
LGICA DE PROGRAMAO
33
Unidade de
estudo 4
Sees de estudo
Seo 1 Introduo
Seo 2 Comando Enquanto
Seo 3 Comando Repita
Seo 4 Comando Para
Estruturas de Repetio
Seo 1
Introduo
Existem situaes em que, para
obter-se a soluo do problema,
necessrio fazer com que um conjunto de instrues seja executado
vrias vezes. Esta unidade de estudo tem por objetivo apresentar
e discutir estruturas que possibilitem a execuo de um conjunto
de instrues por vrias vezes,
com o programador escrevendo
este conjunto apenas uma vez.
Em detalhes, uma estrutura de repetio uma estrutura de desvio
do fluxo de controle que realiza
e repete diferentes aes dependendo se uma condio verdadeira ou falsa, em que a expresso
processada e transformada em
um valor booleano. Esto associadas a uma estrutura de repetio
uma condio (tambm chamada
expresso de controle ou condio de parada) e um bloco de
cdigo: verifica-se a condio e,
caso seja verdadeira, o bloco
executado. Aps o final da execuo do bloco, a condio verificada novamente e, caso ela ainda
seja verdadeira, o cdigo executado novamente.
LGICA DE PROGRAMAO
35
Como voc pde perceber, o problema apresentado consiste em determinar o total arrecadado com a venda de latas de cerveja no ltimo
carnaval. Se desejarmos determinar o total arrecadado em cada um dos
ltimo trs carnavais, o algoritmo poderia ser escrito da forma seguinte:
algoritmo QUANTIDADE_ARRECADADA
var
varQuantidadeVendida : inteiro
varValorArrecadado : real
inicio
// Total arrecadado no ltimo ano
leia (varQuantidadeVendida)
varValorArrecadado varQuantidadeVendida * 1,40
escreva (varValorArrecadado)
// Total arrecadado no penltimo ano
leia (varQuantidadeVendida)
varValorArrecadado varQuantidadeVendida * 1,40
escreva (varValorArrecadado)
// Total arrecadado no antepenltimo ano
leia (varQuantidadeVendida)
varValorArrecadado varQuantidadeVendida * 1,40
escreva (varValorArrecadado)
fimalgoritmo
Seo 2
Comando Enquanto
O comando Enquanto uma estrutura recomendada quando o nmero
de repeties for desconhecido, sendo necessria uma chave (um teste)
para interromper a repetio.
36
Para realizar a repetio com teste no incio, utilizamos a estrutura Enquanto, que permite que um
bloco ou uma ao primitiva seja
repetido enquanto uma determinada Condio for verdadeira. O
modelo genrico desse tipo de repetio o que voc ver a seguir.
algoritmo ENQUANTO
inicio
enquanto <condio> faca
// Trecho a ser repetido
fimenquanto
fimalgoritmo
Preste ateno! Quando o resultado de Condio for falso, o comando de repetio abandonado. Se
j da primeira vez o resultado
falso, os comandos no so executados nenhuma vez, o que representa a caracterstica principal
desse modelo de repetio.
Com isso, possvel concluir que
em algum momento do processo
de repetio das instrues internas ao comando Enquanto ser
necessrio que a expresso lgica assuma o valor falso, pois, do
contrrio, o fluxo jamais sair de
dentro do Enquanto e o conjunto
de instrues ser repetido infinitas vezes.
Para que voc entenda melhor,
veja a seguir um exemplo de anlise de saldo bancrio. Se voc quiser um algoritmo que faa a anlise para dez contas, pode escrever
a soluo conforme o exemplo.
algoritmo ANALISE_BANCARIA
var
varSaldo
: real
varConta, varContador : inteiro
inicio
varContador 0
enquanto varContador < 10 faca
varContador varContador + 1
leia (varConta)
leia (varSaldo)
se varSaldo < 0 entao
escreva (varConta, est estourada)
senao
escreva (varConta, est normal)
fimse
fimenquanto
fimalgoritmo
Observe que no algoritmo anterior utilizamos uma varivel varContador, que inicialmente assume o valor zero. Na primeira vez que o fluxo
de execuo chega ao Enquanto, a expresso lgica varContador < 10
tem o valor verdadeiro. Assim, so executados todos os comandos internos do Enquanto. Observe tambm que no interior do comando Enquanto colocamos o comando varContador varContador + 1, o qual
far com que o contedo da varivel varContador seja incrementado
de uma unidade toda vez que o mesmo for executado.
Mas o que incrementar nesse tipo de clculo?
Incrementar o mesmo que somar um valor constantemente. O ponteiro dos segundos de um relgio um legtimo contador de segundos, que sempre vai incrementando 1 a cada instante de tempo, equivalente a 1 segundo. Quando atinge 60 segundos, a vez do ponteiro
dos minutos ser incrementado e assim por diante.
E o comando Repita, voc sabe qual sua funo? Esse ser o assunto da
prxima seo!
Seo 3
Comando Repita
O comando Repita uma estrutura recomendada quando o nmero de repeties for desconhecido, sendo necessria uma chave
(um teste) para interromper a repetio.
Sua diferena em relao ao Enquanto que ele testa ao final, executando o trecho pelo menos uma
vez.
Essa estrutura tambm precisa de
uma condio para interromper a
repetio. Veja um modelo genrico:
algoritmo REPITA
inicio
repita
// Trecho a ser repetido
ate <condio>
fimalgoritmo
LGICA DE PROGRAMAO
37
algoritmo MELHOR_ALUNO
var
varNota, varMaximo, varQuantidade, varContador : inteiro
varNome, varMelhor
: caractere
inicio
escreval (Entre com a quantidade de alunos)
leia (varQuantidade)
varMaximo -1
varContador 0
repita
escreval (Entre com o nome do aluno)
leia (varNome)
repita
escreval (Digite um valor de 0 a 10)
leia (varNota)
ate (varNota >=0) e (varNota <= 10)
se varNota > varMaximo entao
varMaximo varNota
varMelhor varNome
fimse
varContador varContador + 1
ate varContador = varQuantidade
fimalgoritmo
Ficou mais fcil com o exemplo, no mesmo? Como voc pde ver,
a cada vez que for executado o conjunto de instrues internas ao primeiro comando Repita, um aluno processado. Ou seja, solicitado o
nome e a nota de cada aluno. Cada nota de um aluno comparada com
o contedo da varivel varMaximo e, se o contedo de varNota
for maior que varMaximo, ento possvel concluir que essa nota
a maior entre as que j foram processadas. Portanto, o contedo de
varMaximo deve ser alterado para o valor de varNota. Como o algoritmo se prope a determinar tambm qual o nome do melhor aluno,
ento toda vez que for encontrada uma nota maior que o contedo de
varMaximo, o nome do aluno salvo na varivel varMelhor. Note
que, a cada aluno processado, o contedo da varivel varContador
incrementado em uma unidade, resultando em algum momento do
processo de repetio, que a expresso varContador = varQuantidade
assumir o valor verdadeiro, fazendo com que a repetio seja encerrada.
Ainda no algoritmo, o segundo comando Repita faz com que o valor lido
para nota do aluno esteja no intervalo de 0 a 10. Veja que este Repita s
encerrado se a expresso (varNota >= 0) e (varNota <= 10) tiver
o valor verdadeiro. Sempre que a expresso for avaliada e apresentar o
valor falso, o fluxo retornar ao respectivo Repita e ser solicitado que o
usurio digite novamente a nota.
O ltimo comando dessa unidade o Para. Est pronto para saber mais
sobre ele? Adiante!
38
Seo 4
Comando Para
O comando Para usado quando
o nmero de repeties for conhecido durante a elaborao do
algoritmo ou quando puder ser
fornecido durante a execuo.
Nas estruturas de repetio vistas at agora, ocorrem casos em
que se torna difcil determinar o
nmero de vezes em que o bloco ser executado. Sabemos que
ele ser executado enquanto uma
condio for satisfeita (Enquanto),
ou at que uma condio seja satisfeita (Repita). A estrutura Para
diferente, j que sempre repete
a execuo do bloco durante um
nmero predeterminado de vezes,
pois ela no prev uma condio
e possui limites fixos.
Quer saber qual o modelo genrico para a estrutura de repetio
Para? Ento veja a seguir.
algoritmo PARA
inicio
para <varivel> de <valor
inicial> ate <valor limite> faca
// Trecho a ser repetido
fimpara
fimalgoritmo
Onde:
algoritmo NUMEROS
var
varJ : inteiro
inicio
para varJ de 1 ate 10 faca
escreval (varJ)
fimpara
fimalgoritmo
algoritmo BALANCO
var
varMes
: inteiro
varSoma, varReceita, varDespesa : real
inicio
varSoma 0
para varMes de 1 ate 12 faca
escreval (Digite a receita e a despesa do ms de , varMes)
leia (varReceita)
leia (varDespesa)
varSoma varSoma + (varReceita - varDespesa)
fimpara
escreva(Total arrecadado durante o ano , varSoma)
fimalgoritmo
LGICA DE PROGRAMAO
39
Unidade de
estudo 5
Sees de estudo
Seo 1 Introduo
Seo 2 Vetores
Seo 3 Matrizes
Estruturas Homogneas
Seo 1
Introduo
Para iniciar o estudo, importante destacar que as estruturas de dados
homogneos possibilitam o armazenamento de grupos de valores em
uma nica varivel que ser armazenada na memria do computador.
Mas por que essas estruturas so chamadas de homogneas? Porque os
valores que sero armazenados so de um mesmo tipo de dado.
As estruturas homogneas so divididas em unidimensionais e multidimensionais. Normalmente, as estruturas unidimensionais so chamadas
de vetores e as multidimensionais so chamadas de matrizes. De fato, um
vetor tambm uma matriz, porm varia em somente uma dimenso.
No intuito de compreender as facilidades do processamento de valores
usando adequadamente uma estrutura de dados, observe o algoritmo
a seguir, supondo a necessidade de armazenamento da altura de cinco
atletas.
algoritmo ATLETA
var
varAltura1, varAltura2, varAltura3, varAltura4, varAltura5 : real
inicio
escreval (Informe a altura do primeiro atleta: )
leia (varAltura1)
escreval (Informe a altura do segundo atleta: )
leia (varAltura2)
escreval (Informe a altura do terceira atleta: )
leia (varAltura3)
LGICA DE PROGRAMAO
41
Seo 2
Vetores
ro definido);
42
Mas o que representam os Valores e os ndices? Os Valores correspondem aos contedos lidos pelo usurio, ou seja, so as alturas dos atletas.
Os ndices so as posies que garantem independncia a cada um desses
valores armazenados na estrutura de dados homognea. Por meio desses
ndices, tambm chamados de posies do vetor, seus valores (contedos) podem ser manipulados de forma independente.
Imagine a necessidade de mostrar a altura do maior atleta cadastrado
nesse vetor. Entre essas cinco alturas, a maior a quarta no vetor. Como
o ndice de uma estrutura de dados inicia sempre a partir de zero, a quarta altura est armazenada na terceira posio da estrutura, sendo o contedo dessa posio (3) igual a 2.20 (altura do quarto atleta cadastrado).
Os vetores so chamados de estruturas compostas unidimensionais. E
voc sabe por qu? So compostas pois podem armazenar vrios valores. E unidimensionais, pois s possuem variao em uma dimenso.
Declarao de vetor
A sintaxe correta para declarao de uma estrutura de dados composta
homognea unidimensional (vetor), na representao de portugus estruturado, deve respeitar a seguinte forma geral:
algoritmo VETOR
var
<identificador> : vetor [<valor inicial>..<valor final>] de <tipo de
dado>
inicio
fimalgoritmo
Onde:
Nesse exemplo, so criados somente duas variveis, sendo uma denominada auxiliar e a outra alturas, que consiste em um vetor de cinco
posies (ndice de zero at quatro). Esse vetor possui um nico identificador, mas tem a capacidade de armazenar at cinco valores reais
como seu contedo, similar criao das cinco variveis alturas (altura1,
altura2, altura3, altura4, altura5) da proposta de soluo do algoritmo
anterior.
Suponha que o usurio desse algoritmo digite os seguintes valores: 1.80,
2.03, 1.75, 2.20, 2.12. Uma representao grfica desse vetor seria:
algoritmo VETOR
var
vetValores : vetor [0..2] de
inteiro
inicio
fimalgoritmo
Para armazenar o nome de uma pessoa, por exemplo, deve-se criar uma
estrutura de dados composta homognea do tipo de dado caractere.
Todo nome consiste em um conjunto de caracteres (letras, caracteres especiais e at dgitos numricos, se assim os pais dessa pessoa desejarem).
LGICA DE PROGRAMAO
43
44
Seo 3
Matrizes
Onde:
Veja a seguir a representao grfica para uma matriz que tenha capacidade de armazenar as alturas
dos cinco atletas titulares de uma
equipe de basquete e ainda as cinco alturas de seus reservas.
LGICA DE PROGRAMAO
45
algoritmo ALTURAS
var
vetAlturas : vetor [0..1,0..4] de real
inicio
fimalgoritmo
46
A quantidade de duas linhas sendo multiplicada por cinco colunas resultar em dez posies, independentes de memria para essa estrutura de
dados composta homognea (matriz de alturas), com duas dimenses
(bidimensional).
O mesmo clculo e manipulao so realizados para estruturas de dados
de caracteres (string), o que pode organizar melhor o armazenamento de
vrios nomes de pessoas diferentes, frase e outros dados que correspondam a um conjunto de caracteres.
Puxa, quantas informaes importantes nesta unidade! Voc conheceu
as estruturas homogneas, vetores e matrizes. Foi um aprendizado e tanto, no mesmo? E as estruturas heterogneas? Esse ser o assunto da
prxima unidade. Ento, sinta-se convidado a aprender ainda mais. At
l!
LGICA DE PROGRAMAO
47
Unidade de
estudo 6
Sees de estudo
Seo 1 Introduo
Seo 2 Registros
Estruturas Heterogneas
Seo 1
Seo 2
Introduo
Registros
LGICA DE PROGRAMAO
49
nome;
endereo;
nmero do CPF.
50
Onde:
nente.
LGICA DE PROGRAMAO
51
Ficou mais claro agora? Ento vamos criar um registro para armazenar
os trs componentes diferentes (SEXO, CPF, PESO). Veja!
algoritmo REGISTRO
var
registro = regPessoa
CPF inteiro;
Sexo caracter;
Peso real;
fimregistro
inicio
escreva (Informe o seu CPF: )
leia (regPessoa.CPF)
escreva (Digite F para sexo feminino e M para masculino)
leia (regPessoa.Sexo)
escreva (Digite seu peso: )
leia (regPessoa.Peso)
fimalgoritmo
Suponha que esse cadastro seja feito por uma empresa de publicidade, que est procurando alguns novos modelos. Ela no ir cadastrar
somente um candidato vaga de modelo mas todos os interessados,
que podero ser vrios. Portanto, ser criado um vetor para esse tipo
de estrutura heterognea. Observe o exemplo a seguir, que cria a possibilidade de 1.000 registros serem armazenados na estrutura composta
homognea (vetor).
52
algoritmo REGISTRO
var
varContador : inteiro
registro = regPessoa
CPF inteiro;
Sexo caracter;
Peso real;
fimregistro
inicio
para varAuxiliar de 0 ate 999 faca
escreva (Informe o seu CPF: )
leia (regPessoa[varAuxiliar].CPF)
escreva (Digite F para sexo feminino e M para masculino)
leia (regPessoa[varAuxiliar].Sexo)
escreva (Digite seu peso: )
leia (regPessoa[varAuxiliar].Peso)
fimpara
fimalgoritmo
Esse algoritmo permite o cadastramento de 1.000 fichas com os componentes CPF, SEXO e PESO, sendo cada um para uma pessoa diferente.
Essa estrutura armazenar no algoritmo todos os 1.000 registros, denominados FICHA, sendo ela homognea, pois cada um desses elementos
do vetor do mesmo tipo de dado criado no bloco de declaraes. O
registro criado imediatamente antes dos dados acima do tipo PESSOA.
Muito bem! Aqui terminamos mais uma unidade de estudos, onde voc
aprendeu o que so registros e como deve ser feita uma declarao geral
de registro. Est preparado para mais uma etapa? Na unidade seguinte
voc estudar as funes. Lembre-se de que, para apropriar-se de novos
conhecimentos, indispensvel motivao e interesse. Siga os passos
rumo ao conhecimento!
LGICA DE PROGRAMAO
53
Unidade de
estudo 7
Sees de estudo
Seo 1 Introduo
Seo 2 Utilizao de subprogramas
Seo 3 Argumentos e parmetros
Seo 4 Funes
Seo 5 Procedimentos
Seo 6 mbito de variveis
Seo 7 Argumentos de subprogramas
Seo 8 Erros mais comuns
Funes
Seo 1
Introduo
A complexidade dos algoritmos
est intimamente ligada da
aplicao a que se destinam. Em
geral, problemas complicados
exigem algoritmos extensos para
sua soluo. Lembre-se tambm
de que sempre possvel dividir
um problema grande em problemas menores e de soluo mais
simples.
Assim, pode-se solucionar cada
um desses problemas mais simples e combinar essas solues de
forma que o problema maior seja
resolvido. E voc sabe como? Podemos codificar a soluo desses
problemas simples utilizando os
chamados subalgoritmos ou sub-rotinas.
Subalgoritmo um nome
dado a um trecho de um algoritmo mais complexo e que,
em geral, encerra em si mesmo um pedao da soluo de
um problema maior a que ele
est subordinado.
O subalgoritmo divide-se em
funes e procedimentos. importante observar que existe distino entre funes (possui um
nico retorno) e procedimentos
(no possui retorno algum).
E voc sabia que a ideia de reutilizao de software tem sido adotada h muito tempo por muitos
desenvolvedores de sistemas de
computador? verdade! Isso se
deve economia de tempo e trabalho que proporcionam.
Seu princpio o seguinte: um
conjunto de algoritmos destinado
a solucionar uma srie de tarefas
bastante corriqueiras desenvolvido e vai sendo aumentado com
o passar do tempo, com o acrscimo de novos algoritmos. A esse
conjunto se d o nome de biblioteca.
No desenvolvimento de novos
sistemas, procura-se ao mximo
basear a concepo em subalgoritmos j existentes na biblioteca,
de modo que a quantidade de software realmente novo que venha a
ser desenvolvido seja minimizada.
Mas veja bem! Muitas vezes, os
subalgoritmos so utilizados para
conter certas sequncias de instrues que so repetidas em um
algoritmo. Nesses casos, os subalgoritmos proporcionam uma
diminuio no tamanho dos algoritmos.
Em resumo, os subalgoritmos so
importantes na:
estruturao de algoritmos,
facilitando principalmente a
deteco de erros e a documentao de sistemas;
modularizao de sistemas,
que facilita a manuteno de softwares e a reutilizao de subalgoritmos j implementados.
Aps essa introduo sobre o
tema da unidade, vamos prxima seo, onde o foco de estudos
ser a utilizao de subprogramas.
At l!
Seo 2
Utilizao de subprogramas
Na escrita de um programa de
computador, muitas vezes surge
a necessidade de repetir a mesma
sequncia de instrues em locais
diferentes do programa. Para evitar essa repetio, que implica em
um aumento do nmero de linhas
e um tempo de desenvolvimento
maior, muitas linguagens de programao apresentam o conceito
de subprograma. Esse conceito,
por vezes tambm designado por
sub-rotina, permite escrever um
conjunto de instrues da linguagem identificadas por um nome
determinado. Assim, ao invs de
repetir as instrues sempre que
sejam necessrias no programa,
bastaria indicar o nome do subprograma correspondente a essas
linhas nos locais onde a sequncia
seria repetida.
LGICA DE PROGRAMAO
55
DICA
A utilizao desses mdulos evita a reescrita de subprogramas sempre que um
novo programa necessita de
atualizao, diminuindo o
tempo de desenvolvimento
de programas complexos e
evitando que o programador
se preocupe com detalhes
pouco importantes para a
compreenso do problema.
Esses mdulos so designados por bibliotecas.
56
Seo 3
Argumentos e parmetros
Muitas vezes necessrio indicar
explicitamente ao subprograma
as condies sob as quais a sua
execuo vai ser realizada. Por
essas razes, um subprograma
poder aceitar argumentos que
determinam essas condies. Os
argumentos podero ser variveis,
constantes ou expresses. Na descrio do subprograma, devem
estar definidos os parmetros que
correspondem aos argumentos
que o programa do nvel acima
determinou. Essas consideraes
so vlidas para subprogramas
definidos pelos programadores e
para subprogramas predefinidos.
Vamos entender melhor! Considere, por exemplo, um subprograma, designado por AREA,
para calcular a rea de um retngulo, dados os comprimentos
dos lados. Esse subprograma ir
devolver o valor da rea do retngulo. O subprograma seria
invocado recorrendo a uma instruo do tipo varA = AREA
(varComprimento,varLargura).
Seo 4
Funes
Na seo anterior voc conheceu uma caracterstica importante: o subprograma AREA possui um valor de retorno. Ou seja, devolve um valor
determinado que pode ser utilizado pelo programa que o invocou. Os
subprogramas que apresentam essa caracterstica designam-se por funes. As funes podem ser definidas com ou sem parmetros.
algoritmo QUADRADO
funcao QUADRADO (varX : real) : real
var
varAux : real
inicio
varAux <- varX * varX
retorne varAux
fimfuncao
var
varNumero, varResultado : real
varFim : logico
inicio
enquanto varFim = falso faca
As funes incluem sempre a palavra retorne, seguida do valor a devolver ou de uma expresso que
defina esse valor. Nas funes
tambm necessrio indicar o tipo
do valor de retorno. A linha funcao QUADRADO (varX : real) :
real indica uma funo designada por QUADRADO que aceita
um parmetro varX e retorna um
valor real.
Genericamente, a sintaxe para
definio de uma funo a que
voc ver a seguir.
funcao <nome-de-funo>
[(<seqncia-de-declaraes-de-parmetros>)]:
<tipo-de-dado>
// Seo de Declaraes Internas
inicio
// Seo de Comandos
fimfuncao
leia (varNumero)
se varNumero = 0 entao
varFim = verdadeiro
seno
varResultado QUADRADO (varNumero)
escreva (Quadrado de , varNumero, , varResultado)
fimse
fimenquanto
fimalgoritmo
LGICA DE PROGRAMAO
57
Seo 5
Procedimentos
Os procedimentos so subprogramas que se distinguem das funes pelo
fato de no apresentarem qualquer valor de retorno. Os procedimentos,
tal como as funes, podem apresentar ou no uma lista de parmetros
que definem a forma como o procedimento ir ser executado. Tal como
nas funes, necessrio declarar os parmetros do procedimento, caso
existam. Por exemplo, considere-se o programa que permite o clculo
da rea de um retngulo, escrevendo o valor calculado. Nesse programa
foram definidos dois subprogramas: a funo AREA, que permite o
clculo da rea do retngulo, e o procedimento ESCREVE_AREA, que
apresenta o resultado calculado. O programa termina se for introduzido
um valor negativo para o comprimento de um lado do retngulo.
algoritmo AREA
funcao AREA (varX, varY : real) : real
var
varAux : real
inicio
varAux varX * varY
retorne varAux
fimfuncao
procedimento ESCREVE_AREA (varX : real)
inicio
escreva (O valor da rea , varX)
fimfuncao
var
varX, varY, varA : real
varFim : logico
inicio
repita
leia (varX)
leia (varY)
se varX < 0 ou varY < 0 entao
varFim = verdadeiro
seno
varA AREA (varX, varY)
ESCREVE_AREA(varA)
fimse
ate varFim = falso
fimalgoritmo
58
Seo 6
mbito de variveis
As variveis que representam o
comprimento dos lados de um
retngulo no programa exemplificado tm o mesmo nome no
programa principal e na funo
AREA.
E voc sabe o que aconteceria se a
funo AREA alterasse os valores
dessas variveis? Os novos valores seriam reconhecidos no programa principal, ou esse consideraria apenas os valores iniciais?
Ah, essas so boas perguntas!
Na realidade, em ambos os casos,
as variveis so locais, ou seja,
so variveis que so reconhecidas apenas nas funes onde se
encontram declaradas. Assume-se que o computador cria novas
variveis em cada um dos casos e
as armazena em locais diferentes,
embora os nomes sejam iguais.
Seo 7
Argumentos de subprogramas
Um subprograma definido de
forma a aceitar parmetros, cria
cpias das variveis passadas
como argumentos pelo programa
que invocou o subprograma em
questo. Mas o que isso representa? Significa que os parmetros
definidos para um subprograma vo funcionar como variveis locais desse subprograma.
por esse motivo que no existe
qualquer conflito em invocar um
subprograma cujos argumentos
so variveis com nomes iguais
aos parmetros definidos para o
subprograma. Internamente, o
computador ir reservar reas de
memria diferentes para os seus
parmetros. Acompanhe o seguinte procedimento.
procedimento
SOMA_UM
(varX)
inicio
varX varX + 1
escreva (varX)
fimprocedimento
algoritmo SOMA
procedimento
SOMA_UM
(varX)
inicio
varX varX + 1
escreva (varX)
fimprocedimento
var
varX : real
inicio
varX 3
SOMA_UM (varX)
escreva (varX)
fimalgoritmo
LGICA DE PROGRAMAO
59
Com esse procedimento, pretende-se atribuir varivel varA ao contedo da varivel varB e a esta, o contedo de varA recorrendo a uma
varivel auxiliar varC. Caso esse procedimento fosse utilizado, seria feito
da seguinte maneira. Saiba mais!
algoritmo TROCA
procedimento TROCA (varA, varB)
var
varC : inteiro
inicio
varC varA
varA varB
varB varC
fimprocedimento
var
varX, varY : real
inicio
varX 5
varY 6
TROCA (varX, varY)
escreva (X = , varX, , Y = , varY)
fimalgoritmo
60
algoritmo TROCA
procedimento TROCA (var varA, var varB)
var
varC : inteiro
inicio
varC varA
varA varB
varB varC
fimprocedimento
var
varX, varY : real
inicio
varX 5
varY 6
TROCA (varX, varY)
escreva (X = , varX, , Y = , varY)
fimalgoritmo
O resultado obtido seria X = 6, Y = 5, ou seja, houve troca dos valores das variveis.
Nesse caso, as alteraes efetuadas no procedimento foram reconhecidas no programa que o invocou. Em relao a essa questo, importante
destacar que esses problemas podem ser resolvidos de outra maneira.
Para tal, basta que as variveis envolvidas sejam definidas como variveis
globais, sendo reconhecidas em todo o programa. Assim, no seria necessrio fazer a passagem de argumentos por referncia. Alis, no seria
necessrio passar essas variveis como argumentos aos subprogramas
que atuassem sobre elas, pois todos os subprogramas so capazes de
reconhecer variveis globais.
Mas esse processo no muito aconselhvel. Sabe por qu? Porque ele
limita as potencialidades de utilizao dos subprogramas, que passam a
ter um caractere muito restrito.
As linguagens de programao apresentam formas diversas de efetuar a
distino entre a passagem de argumentos por valor ou por referncia.
Seo 8
LGICA DE PROGRAMAO
61
Finalizando
Parabns, querido aluno!
Como voc viu nesta unidade curricular, a lgica de programao nada mais do que a organizao coerente das instrues do programa para que seu objetivo seja alcanado. Para criar essa
organizao, instrues simples do programa como mudar o valor de uma varivel ou desenhar
uma imagem na tela do computador , so interconectadas a estruturas lgicas que guiam o fluxo
da execuo do programa. Isso muito prximo ao que usamos em nosso cotidiano para realizar
atividades simples, no mesmo?
Alm das atividades que realizamos no dia a dia, h sempre o chamado raciocnio lgico, que
define os passos para que nossa atividade seja completada com sucesso. Quando esse raciocnio
falha, ou seja, no suficientemente preciso, h grandes chances de no alcanarmos nosso objetivo. A mesma coisa acontece com os programas de computador.
Esta unidade curricular teve como principal objetivo fazer com que voc entendesse os conceitos
fundamentais de lgica de programao independentemente da linguagem e introduzi-lo em uma
metodologia de desenvolvimento de programas.
E saiba que conhecer lgica de programao mais importante que conhecer uma linguagem
de programao. Sem saber como se planeja um programa, dificilmente poder ser implantada,
tanto na linguagem de programao mais antiga como nas mais modernas.
Portanto, lembre-se de que um aprendizado efetivo depende do seu empenho e dedicao. Esses
conhecimentos sero teis em vrias ocasies de sua vida.
Boa sorte e muito sucesso!
LGICA DE PROGRAMAO
63
Referncias
ASCENCIO, Ana Fernanda Gomes; CAMPOS, Edilene Aparecida Veneruchi de. Fundamentos da programao de computadores. 2. ed. So Paulo, SP: Pearson Prentice Hall,
2007.
FORBELLONE, Andr Luiz Villar. Lgica de programao A construo de algoritmos e estruturas de dados. So Paulo, SP: Makron, 1993.
FORBELLONE, Andr Luiz Villar; EBERSPCHER, Henri Frederico. Lgica de programao a construo de algoritmos e estrutura de dados. 3. ed. So Paulo, SP: Makron,
2000.
FORBELLONE, Andr Luiz Villar; EBERSPCHER, Henri Frederico. Lgica de programao a construo de algoritmos e estruturas de dados. So Paulo, SP: Pearson
Prentice Hall, 2005.
MORAES, Paulo Srgio de. Curso bsico de lgica de programao. So Paulo, SP:
Unicamp, 2000.
LGICA DE PROGRAMAO
65
Design Educacional
Daiana Silva
Capa, Ilustraes, Tratamento de Imagens
Dimitre Camargo Martins
Diego Fernandes
Luiz Eduardo Meneghel
Diagramao
Daniela de Oliveira Costa
Flavia Akemi Ito
Reviso e Fechamento de Arquivos
Juliana Vieira de Lima
Reviso Ortogrfica e Normatizao
FabriCO
LGICA DE PROGRAMAO
67