Você está na página 1de 68

Curso Tcnico em Informtica

Lgica de Programao

Robson Braga de Andrade


Presidente da Confederao Nacional da Indstria

Rafael Lucchesi
Diretor do Departamento Nacional do SENAI

Regina Maria de Ftima Torres


Diretora de Operaes do Departamento Nacional do SENAI

Alcantaro Corra
Presidente da Federao da Indstria do Estado de Santa Catarina

Srgio Roberto Arruda


Diretor Regional do SENAI/SC

Antnio Jos Carradore


Diretor de Educao e Tecnologia do SENAI/SC

Marco Antnio Dociatti


Diretor de Desenvolvimento Organizacional do SENAI/SC

Confederao Nacional da Indstria


Servio Nacional de Aprendizagem Industrial

Curso Tcnico em Informtica

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

Kitzberger, Helenilson Ricardo


Lgica de programao / Helenilson Ricardo Kitzberger. Florianpolis :
SENAI/SC, 2011.
67 p. : il. color ; 28 cm.
Inclui bibliografias.
1. Programao (Computadores). 2. Programao lgica. 3. Algoritmos. 4.
Estruturas de dados (Computao). I. SENAI. Departamento Regional de
Santa Catarina. II. Ttulo.
CDU 004.43

SENAI/SC Servio Nacional de Aprendizagem Industrial


Rodovia Admar Gonzaga, 2.765 Itacorubi Florianpolis/SC
CEP: 88034-001
Fone: (48) 0800 48 12 12
www.sc.senai.br

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

Seo 2 - Formas de representao

16

Seo 3 - Teste de mesa

16

Seo 4 - Ambiente

20 Unidade de estudo 2
Algoritmos

21

Seo 1 - Tipos de dados

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

Seo 3 - Ninhos de comando Se

32

Seo 4 - Comando Escolha

54 Unidade de estudo 1
Funes

34 Unidade de estudo 4
Estruturas de
Repetio
35

Seo 1 - Introduo

36

Seo 2 - Comando Enquanto

37

Seo 3 - Comando Repita

38

Seo 4 - Comando Para

40 Unidade de estudo 5
Estruturas
Homogneas
41

Seo 1 - Introduo

42

Seo 2 - Vetores

45

Seo 3 - Matrizes

55

Seo 1 - Introduo

55

Seo 2 - Utilizao de subprogramas

56

Seo 3 - Argumentos e
parmetros

57

Seo 4 - Funes

58

Seo 5 - Procedimentos

58

Seo 6 - mbito de variveis

59

Seo 7 - Argumentos de
subprogramas

61

Seo 8 - Erros mais comuns

Finalizando

62

Referncias

64

CURSOS TCNICOS SENAI

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

CURSOS TCNICOS SENAI

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

Voc j ouviu falar em lgica de programao, sequncia


lgica, instrues, algoritmos
e programas? Esses so alguns
dos conceitos elementares de
lgica que voc ver a seguir.
Em relao aos algoritmos, voc
ver que, relacionados lgica,
eles resultam em programao.
Vamos iniciar? Aperte os cintos e
embarque no mundo da lgica de
programao!

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.

A lgica de programao significa o uso correto das leis do


pensamento e de processos
de raciocnio e simbolizao
formais na programao de
computadores, objetivando
a racionalidade e o desenvolvimento de tcnicas que cooperem para a produo de solues logicamente vlidas e
coerentes, que resolvam com
qualidade os problemas que
se deseja programar.

A lgica de programao necessria para pessoas que desejam


trabalhar com o desenvolvimento de sistemas e programas. Ela
permite definir a sequncia lgica
para o desenvolvimento.
Lgica de programao a tcnica de encadear pensamentos para
atingir determinado objetivo.

E sequncia lgica, voc sabe o


que ? Ento acompanhe!

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.

Em informtica, porm, instruo


a informao que indica a um
computador uma ao elementar
a executar. Convm ressaltar que
uma ordem isolada no permite
realizar o processo completo. Para
isso, necessrio um conjunto de
instrues colocadas em ordem
sequencial lgica.
Por exemplo, para fazer uma
omelete de batatas, preciso colocar em prtica uma srie de
instrues: descascar as batatas,
bater os ovos, fritar as batatas etc.
evidente que essas instrues
precisam ser executadas em uma
ordem adequada no se pode
descascar as batatas depois de
frit-las.
Dessa maneira, uma instruo tomada de forma isolada no tem
muito sentido. Para se obter o
resultado, preciso colocar em
prtica o conjunto de todas as instrues, na ordem correta.

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.

As formas mais comuns de representao de algoritmos so as seguintes. Acompanhe!

Chupar a bala.

Descrio narrativa: os algo-

Pegar a bala.

Jogar o papel no lixo.

Algoritmo a descrio de um conjunto de aes que, obedecidas,


atingem o objetivo esperado.

Segundo Lopes e Garcia (2002),


algoritmo no a soluo de um
problema, pois, se assim fosse,
cada problema teria um nico algoritmo. Algoritmo um conjunto de passos que levam soluo
de um determinado problema e,
em geral, so muitos os caminhos
que levam soluo.

14

Programas

CURSOS TCNICOS SENAI

ritmos so expressos diretamente


em linguagem natural.

Fluxograma convencional:

uma representao grfica que


emprega formas geomtricas
padronizadas para indicar as
diversas aes e decises que devem ser executadas para resolver
o problema.

Pseudolinguagem: emprega
uma linguagem intermediria
entre a linguagem natural e uma
linguagem de programao para
descrever os algoritmos.

Mas veja bem! No existe consenso entre os especialistas sobre


qual seria a melhor maneira de
representar um algoritmo. Atualmente, a maneira mais comum
de representar algoritmos por
meio de uma pseudolinguagem
ou pseudocdigo. Essa forma de
representao tem a vantagem de
fazer com que o algoritmo seja escrito de uma maneira prxima de
uma linguagem de programao
de computadores.

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.

Leve a forma ao forno.


Espere 20 minutos.
Retire a forma do forno.
Deixe esfriar.
Prove.

Essa forma de representao


bastante conhecida, por utilizar
a linguagem natural, porm tem
algumas desvantagens, como impreciso, pouca confiabilidade e
principalmente ser extensa, pois
escreve-se muito para dizer pouca
coisa.

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.

Figura 1: Formas geomtricas

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!

Figura 2: Fluxograma de um domingo

LGICA DE PROGRAMAO

15

A representao grfica por meio


de fluxograma uma das ferramentas mais conhecidas na representao de algoritmos, utiliza um
padro mundial e diz muito mais
do que palavras. Porm, sua utilizao reflete em pouca ateno
aos dados, no oferecendo recursos para descrev-los, e complica-se na medida em que o algoritmo
cresce.
Voc sabe o que uma pseudolinguagem? Vamos descobrir juntos!

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

CURSOS TCNICOS SENAI

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.

Tabela 1: Teste de mesa

varNum

varDobro

12

Nesse exemplo deve-se atribuir


valores a varNum, executar o
clculo descrito no algoritmo e
avaliar se varDobro vai resultar
como na tabela anterior.

O computador uma ferramenta


que permite a realizao do processamento automtico (ou eletrnico) de dados.

Mas o que processamento de


dados?
Define-se por processamento de
dados qualquer atividade que, utilizando informaes (ou dados),
efetua transformaes para obter
novas informaes (ou dados)
como resultado.

Figura 3: Processamento de dados

Porm, a tarefa desempenhada pelos computadores apenas parte do


processo de soluo de problemas. As etapas na soluo de problemas
so:

entendimento do problema;
criao de uma sequncia de operaes (ou aes) que, quando exe-

cutadas, produzem a soluo para o problema;

execuo dessa sequncia de operaes;


verificao da adequao da soluo.
As etapas de entendimento do problema, criao de sequncia de aes
e verificao da adequao da soluo so tarefas desempenhadas por
pessoas. J a execuo das operaes pode ser desempenhada por computadores.
Os computadores tm a capacidade de executar processos complicados
e com grande quantidade de informaes de forma rpida e confivel.

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?

Um programa considerado confivel quando consegue fazer com que


o computador cumpra com o objetivo proposto. Os programas construdos devem ser eficazes, realizando a tarefa definida de forma eficiente,
utilizando os melhores meios para realiz-la.
O maior problema na construo de programas a complexidade. Essa
complexidade representa a quantidade de situaes diferentes que um
problema pode apresentar e que devem ser previstas na soluo do mesmo. Portanto, ao se construir um programa, o objetivo principal vencer a complexidade do problema a ser solucionado.

LGICA DE PROGRAMAO

17

Mas o que fazer para trabalhar com essa complexidade?

Voc poder dividir a programao em duas fases distintas. Acompanhe!

Figura 4: Fases da programao

Para a fase da programao voc ter as seguintes etapas:

Modelizao (ou resoluo) do problema: determinao do modelo


de soluo para o problema proposto na forma de um algoritmo computacional. Assim, a elaborao de um algoritmo o primeiro passo
para a preparao de um programa de computador. Esse algoritmo
deve ser independente da linguagem de programao que ser utilizada.
Implementao: a transformao (ou codificao) do algoritmo

em alguma linguagem de programao adequada ao modelo elaborado.


Linguagem de programao? O que isso? Veja a seguir!

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

CURSOS TCNICOS SENAI

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!

So caracterizados como tipos lgicos os dados com valores verdadeiros


e falsos, sendo que podem representar apenas um desses dois valores.
Ele chamado por alguns de tipo booleano, devido contribuio do
filsofo e matemtico ingls George Boole na rea da lgica matemtica.
A tabela que voc ver a seguir resume os tipos de dados mais comuns
e sua definio nas linguagens utilizadas no decorrer do material. Veja!
Tabela 2: Tipos de dados

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

Uma varivel composta por dois


elementos bsicos:

contedo: valor da varivel e

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

CURSOS TCNICOS SENAI

nome: dado varivel para


possibilitar sua utilizao e localizao.
O contedo de uma varivel pode
ser de vrios tipos: inteiro, real,
caractere ou lgico, entre outros.
Normalmente, quando se ensina algoritmo, trabalha-se com os
quatro tipos citados.
Uma vez definidos o nome e o
tipo de uma varivel, no ser
possvel alter-los no decorrer do
algoritmo. Por outro lado, o contedo de uma varivel um objeto de constante modificao no
decorrer do programa, de acordo
com o fluxo de execuo do mesmo.
Em algoritmos, as variveis sero
definidas no incio, por meio de
um comando definido conforme
o exemplo seguinte.
algoritmo CALCULA_DOBRO
var
varNum, varDobro : inteiro
inicio
fimalgoritmo

Existem duas variveis declaradas.


Uma a varNum e a outra a
varDobro, ambas possuindo o
mesmo tipo de dado, no caso inteiro.
Como pode ser visto, varNum
e varDobro so os nomes das
variveis, e por meio desses nomes que possvel alterar e resgatar o valor presente nela.

Quer saber o que so variveis


globais e variveis locais? Ento
v em frente para saber mais!

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.

Cada vez que a funo chamada,


os valores gerados anteriormente
no esto disponveis.
E voc sabe qual a diferena entre
constantes e variveis? Acompanhe!

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

Para que voc entenda melhor,


possvel ligar o conceito de expresso ao conceito de expresso
(ou frmula) matemtica, onde
um conjunto de variveis e constantes numricas relaciona-se por
meio de operadores, compondo
uma frmula que, uma vez avaliada, resulta em um valor. As expresses dividem-se em:

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.

Tabela 3: Operadores aritmticos

Operadores

Simbologia

Prioridade

Subtrao

Multiplicao

Diviso

Mdulo

Exponenciao

Radiciao

//

Soma

Mas o que representa a prioridade? A prioridade indica a ordem


em que cada operao dever ser
executada. Quanto menor o nmero, maior a prioridade da operao. Observe que o operador de
multiplicao o caractere asterisco, um smbolo que empregado
na maioria das linguagens para
essa operao.
Expresses aritmticas podem
manipular operandos de dois tipos: reais e inteiros. Se todos os
operandos de uma expresso so
do tipo inteiro, ento a expresso fornece como resultado um
nmero inteiro. Caso pelo menos um dos operandos seja real,
o resultado ser real. Isso pode
parecer estranho a princpio, mas
esse procedimento reflete a forma como as operaes so executadas pelos processadores. Por
exemplo, o resultado da operao
1/5 0, porque os dois operadores so inteiros. Caso a expresso
tivesse sido escrita como 1.2/5, o
resultado 0.24 seria o correto. A
seguir temos exemplos de algumas expresses aritmticas. Confira!

A + B - C
A / B
3.14 * (A + B)

Um ponto importante a ordem


de avaliao das expresses. As
prioridades que voc viu na tabela anterior no so suficientes
para resolver todas as situaes.
Para isso, voc precisa conhecer
algumas regras adicionais. Veja a
seguir!

Deve-se observar primeiro a


prioridade dos operadores, conforme a tabela anterior. Ou seja,
operadores com maior prioridade
(nmeros menores) so avaliados
primeiramente. Caso haja empate
na ordem de prioridade, deve-se
resolver a expresso da esquerda
para a direita.
Parnteses servem para mudar

a ordem de prioridade de execuo das operaes. Quando


houver parnteses dentro de
parnteses, as expresses dentro
dos mais internos so avaliadas
primeiro.

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

Vamos ento analisar expresses


com essas variveis e seus resultados.

A*B-C
A * (B - C)
B+A/C+5
(B + A) / (C + 5)

A primeira expresso tem como


resultado o valor 7, como era de
se esperar. Na segunda expresso,
a ordem de avaliao foi alterada
pelos parnteses e primeiro feita a subtrao e o resultado passa
a ser 6. A primeira operao na
terceira expresso a diviso que
tem maior prioridade. Nesse caso,
o resultado final 11. Na ltima
expresso as somas so realizadas
primeiro e, por ltimo, a diviso,
ficando o resultado igual a 1.

Para entender melhor, considere


alguns exemplos que mostram
como possvel utilizar os operadores relacionais. Considere as
seguintes variveis:

No: uma expresso no


inverte o valor da expresso ou
condio; se verdadeira, inverte
para falsa e vice-versa.

A = 5
B = 3

tem resultado verdadeiro se seus


dois operandos lgicos forem
diferentes e falso, se forem iguais.
Os resultados das operaes lgicas so sempre valores lgicos
(verdadeiro ou falso).
Para trabalharmos adequadamente com operadores lgicos, temos
que conhecer a tabela verdade
para cada um dos operadores. Tabela verdade? Isso mesmo! Uma
tabela verdade o conjunto de todas as possibilidades combinatrias entre os valores das variveis
lgicas, conforme voc ver nas
tabelas seguintes.

Vamos ento analisar as expresses com essas variveis e seus


resultados.
Tabela 5: Expresses com variveis e
resultados

Expresso

Resultado

A=B

Falso

A <> B

Verdadeiro

A>B

Verdadeiro

A<B

Falso

A >= B

Verdadeiro

A <= B

Falso

Xou: Uma expresso xou

Tabela 7: Exemplo de tabela verdade

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

>=

Menor ou igual a <=

24

CURSOS TCNICOS SENAI

As expresses lgicas servem para


combinar resultados de expresses, retornando se o resultado
final verdadeiro ou falso. Veja
quais so os operadores lgicos a
seguir.
Tabela 6: Operadores lgicos

Descrio

Simbologia

AeB

A ou B

Ou

ou

A xou B

No

nao

Xou

xou

Puxa! Quantos dados, no mesmo? Saiba o que cada um significa.

E: uma expresso e verda-

deira se todas as condies forem


verdadeiras.

Ou: uma expresso ou

verdadeira se pelo menos uma


condio for verdadeira.

nao A

Veja agora uma tabela com todos


os valores possveis criados pelos
trs operadores lgicos.

Tabela 8: Resultados das operaes lgicas

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

O conceito de funo est intimamente ligado ao conceito de funo


(frmula) matemtica, onde um conjunto de variveis e constantes numricas relaciona-se por meio de operadores, compondo uma frmula
que, uma vez avaliada, resulta em um valor.
Na verdade, as funes ajudam a reduzir a quantidade de expresses
dentro de um algoritmo, j que em uma nica linha possvel obter
resultado de uma frmula matemtica que poderia resultar em muitas
linhas.
E voc sabia que existem vrios tipos de funes? verdade! Entre elas,
podem ser destacadas as seguintes.

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

Tabela 9: Operadores matemticos

Funo

Resultado

sen (x)

Seno de x

cos (x)

Cosseno de x

tg (x)

Tangente de x

arcsen (x)

Arco cujo seno x

arccos (x)

Arco cujo cosseno x

arctg (x)

Arco cuja tangente x

abs (x)

Valor absoluto (mdulo) de 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

Um ponto importante que as funes matemticas variam conforme a


linguagem de programao utilizada.

DICA
Portanto, uma dica avaliar a equivalncia dos comandos apresentados anteriormente com o da linguagem escolhida.

Seo 5
Atribuio

Como o prprio nome diz, um comando de atribuio permite fornecer


um valor a uma varivel (guardar um objeto em uma gaveta), em que o
tipo do dado deve ser compatvel com o tipo da varivel. Isto , somente
podemos atribuir um valor lgico a uma varivel capaz de comport-lo,
ou seja, uma varivel declarada como sendo do tipo lgico.
Veja um exemplo de algoritmo utilizando o comando de atribuio ().
algoritmo CALCULA_DOBRO
var
varNum, varDobro : inteiro
inicio
varNum 3 + 3
varDobro 2 * varNum
fimalgoritmo

26

CURSOS TCNICOS SENAI

Nesse exemplo, o resultado final (valor) da varivel varDobro ser 12.


No computador, no momento em que temos uma atribuio, o espao
em memria que j estava alocado para as variveis varNum e varDobro, porm vazio, receber o valor das expresses.
Nos comandos em que o valor a ser atribudo varivel representado por uma expresso aritmtica ou lgica, esta deve ser resolvida em
primeiro lugar, para que depois o resultado possa ser armazenado na
varivel.

Seo 6

Comandos de entrada e sada


Um comando de entrada (leitura) tem por funo transferir dados do
meio externo para a memria de trabalho do computador. Os dados do
meio externo, na maioria das vezes, entram em nosso computador por
meio do teclado.
Vamos a mais um exemplo? Veja um algoritmo exemplificando o comando de entrada de dados.
algoritmo CALCULA_DOBRO
var
varNum, varDobro : inteiro
inicio
leia (varNum)
fimalgoritmo

Nesse exemplo fazemos com que


o computador aguarde que um
valor seja digitado. Aps, ele efetua um clculo e, por fim, exibe o
resultado desse clculo armazenado na varivel varDobro na tela
do computador.
Mais uma etapa cumprida e
quanto conhecimento novo, no
mesmo? Nesta unidade voc
aprendeu sobre os algoritmos, os
tipos de dados, constantes e variveis, viu o que so as expresses,
as funes, a atribuio e os comandos de entrada e sada. Foi
um estudo muito interessante,
no mesmo? E no para por a.
Na prxima unidade voc estudar sobre estruturas de seleo.
Lembre-se de buscar novas informaes sobre os temas estudados
e praticar. Em frente!

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.

Mas se deixssemos a critrio de


quem executa o algoritmo, ser
que ele sempre escolheria o caminho correto? No se pode arriscar. Por isso, alm de saber que
existe mais de um caminho para
a soluo do problema, preciso
prover subsdios para que o mesmo faa a escolha do caminho
correto.
Assim, o simples fato de informar
que a soluo do problema tem
duas ou mais metodologias diferentes em sua soluo no funcionaria. preciso dizer em quais situaes ele utilizar a metodologia
A e quando utilizar a B.
No caso das razes de polinmio
de 2 grau, possvel utilizar a seguinte descrio narrativa:

se o resultado de b2 4ac for

maior ou igual a zero:

ento utilize a metodologia de clculo de razes


reais;
caso contrrio, utilize a

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.

Dessa forma, o computador mais


parecia uma mquina de calcular.
O aprendizado de novos conceitos, como a estrutura de seleo,
dar uma viso maior da complexidade de tarefas que ele poder
executar.
E que tal agora refletir sobre a
importncia dessa estrutura? Para
isso, leia com ateno as afirmativas seguintes:

Distribuio gratuita de cestas


bsicas.
Distribuio gratuita de cestas
bsicas para as famlias com quatro ou mais componentes.
Distribuio gratuita de ingressos para o teatro, sendo dois
para pessoas do sexo feminino e
um para pessoas do sexo masculino.
O que voc pde concluir com essas afirmaes?
Na primeira, todas as pes-

soas recebem a cesta bsica, o


que equivaleria a um comando
sequencial.

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.

Figura 5: Exemplo de seleo simples

A figura anterior significa que certa ao (levar o guarda-chuva) dever


ser tomada se a condio (estar chovendo) for verdadeira. Caso contrrio, a ao no ser realizada.
Em alguns casos, especifica-se tambm o que dever ser feito caso a
condio no se cumpra, onde: SE a piscina estiver livre ENTO faa
natao, CASO CONTRRIO faa uma caminhada.

30

CURSOS TCNICOS SENAI

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.

Figura 6: Exemplo de seleo composta

Essas situaes so muito comuns em programao, razo pela qual ser


preciso recorrer aos comandos de seleo (ou de deciso).
A condio Se-Ento (-Seno) uma estrutura de seleo comum em diversas linguagens de programao. Sua estrutura bsica a seguinte.
algoritmo SE
var
varNum : inteiro
inicio
se varNum < 10 entao
escreva (Nmero menor que 10)
seno
escreva (Nmero maior ou igual a 10)
fimse
fimalgoritmo

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

Como voc pode perceber, nesse


algoritmo determinado o maior
valor entre dois valores. Se os dois
nmeros forem iguais, o algoritmo informar que o varNum2
o maior valor, o que obviamente
no verdade. Assim, esse algoritmo no est correto. Note que
nesse problema h trs situaes
possveis: varNum1 maior que
varNum2, varNum1 menor
que varNum2 e os dois com valores iguais. Utilizando um nico
comando Se, conseguimos avaliar apenas duas situaes. Para
levar em conta as trs situaes,
outro comando de seleo faz-se
necessrio. Quer saber a seleo
para esse problema? Ento veja o
exemplo seguinte.

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

CURSOS TCNICOS SENAI

Suponha que o conceito de um


aluno seja determinado em funo de sua nota. Suponha tambm
que essa nota seja um valor inteiro
na faixa de 1 a 4. O problema est
na seguinte situao: dada a nota,
determine o respectivo conceito.
Considere ainda os conceitos que
voc ver na tabela seguinte.
Tabela 10: Notas e conceitos

Nota

Conceito

Insuficiente

Regular

Bom

timo

Para resolver o problema, veja a


seguir o algoritmo por meio da
utilizao de Ses aninhados.

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!

Com isso, ao executar o comando


Escolha no algoritmo anterior, ser
avaliada cada uma das opes de
valores de varNota. Portanto,
veja que a opo 1, por exemplo,
significa valor igual a 1. Assim, se
o valor de varNota for igual ao
da comparao, essa opo ser
satisfeita. As opes sero sempre
avaliadas na ordem em que aparecem e ser executada a instruo relativa primeira opo que
satisfazer o valor de varNota.
Caso nenhuma das opes satisfaa o valor da expresso do comando Escolha, sero executadas
as instrues colocadas no Outrocaso.
Quantos comandos importantes
voc aprendeu nesta unidade de
estudo, no mesmo? O comando Se, os ninhos de comando Se e
o comando Escolha certamente sero muito teis para seus clculos!
Existem muitos outros comandos
que voc aprender no decorrer
desta unidade curricular. Ento
no perca tempo. Aplique seus
conhecimentos praticando e siga
com dedicao e disciplina!

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.

Mas ateno! Caso o bloco de cdigo nunca modifique o estado da


condio, observe que a estrutura ser executada para sempre. E
essa ser uma situao chamada
lao infinito. Da mesma forma,
possvel especificar uma estrutura
em que o bloco de cdigo modifica o estado da condio, mas esta
sempre verdadeira.
Algumas linguagens de programao especificam ainda uma palavra
reservada para sair da estrutura de
repetio de dentro do bloco de
cdigo, quebrando a estrutura.
Tambm oferecida por algumas
linguagens uma palavra reservada
para terminar uma iterao especfica do bloco de cdigo, forando uma nova verificao da condio.
Ficou claro at aqui? Esta unidade de estudo uma das mais importantes para o seu estudo! Voc
notar que a partir desse ponto
comear a ter mais dificuldade
na resoluo dos algoritmos em
funo da dificuldade de entender
onde as estruturas de repetio
devero ser colocadas para atender s exigncias dos enunciados.
Portanto, continue atento!

Vamos a um exemplo. Suponha


que um determinado clube social
tenha registrado a quantidade de
latas de cerveja vendidas no ltimo carnaval. Considerando que
cada lata foi vendida a R$ 1,40,
deseja-se saber o total arrecadado
no ltimo carnaval, com a venda
das latas de cerveja. Obviamente
que para esse problema tem-se
como entrada a quantidade de
latas vendidas e deseja-se saber,
como soluo do problema, qual
o total arrecadado. Veja a seguir o
respectivo algoritmo.
algoritmo
QUANTIDADE_
ARRECADADA
var
varQuantidadeVendida : inteiro
varValorArrecadado : real
inicio
leia (varQuantidadeVendida)
varValorArrecadado varQuantidadeVendida * 1,40
escreva (varValorArrecadado)
fimalgoritmo

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

Observe no algoritmo anterior que a soluo do problema a mesma


para cada ano. Assim, as instrues para cada um dos anos podem ser
as mesmas. Veja tambm que, se voc quisesse determinar o total arrecadado em cada um dos ltimos 30 anos, usando a mesma metodologia,
teramos que escrever 30 vezes o mesmo conjunto de instrues, o que
obviamente se tornaria impraticvel.
Considerando que para cada um dos casos as instrues a serem executadas so as mesmas, muito mais adequado que se escreva um conjunto
de instrues apenas uma vez, e que instrua o computador para que
repita a execuo das instrues por um determinado nmero de vezes.
Os laos de repetio tambm so conhecidos por sua traduo em ingls:
loops ou looping. Ganham esse nome por lembrarem uma execuo finita
em crculos, que depois segue seu curso normal.

Nesta unidade, voc estudar trs tipos de estrutura de repetio: com


teste no incio (comando Enquanto), com teste no final (comando Repita)
e automtica (comando Para). Ficou curioso para saber o que cada um
dos comandos representa? Vamos iniciar com o comando Enquanto. Em
frente!

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

CURSOS TCNICOS SENAI

Consiste em uma estrutura de


controle do fluxo de execuo
que permite repetir diversas
vezes um mesmo trecho do
algoritmo, porm, sempre verificando antes de cada execuo se permitido executar
o mesmo trecho.

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

Quando o fluxo de execuo chegar ao Repita, automaticamente


sero executados os comandos
internos ao Repita. Chegando no
ate, ser avaliada a condio. Se a
condio for falsa, ento o fluxo de
execuo retornar ao Repita, e os
comandos internos sero novamente executados. Quando o fluxo de execuo chegar no ate e a
condio for verdadeira, a execuo
sair do Repita.
O algoritmo seguinte utiliza o Repita para determinar o melhor aluno de uma turma. Observe com
ateno!

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

CURSOS TCNICOS SENAI

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:

<varivel >: a varivel contadora que controla o nmero de


repeties;
<valor inicial>: uma expres-

so que especifica o valor de inicializao da varivel contadora


antes da primeira repetio;

<valor limite >: uma expresso que especifica o valor


mximo que a varivel contadora
pode alcanar.

<valor inicial > e <valor limite > so


avaliados uma nica vez antes da
execuo da primeira repetio e
no se alteram durante a execuo
da repetio, mesmo que variveis
eventualmente presentes nessas
expresses tenham seus valores
alterados.
No exemplo a seguir, os nmeros
de 1 a 10 so exibidos em ordem
crescente. Observe!

algoritmo NUMEROS
var
varJ : inteiro
inicio
para varJ de 1 ate 10 faca
escreval (varJ)
fimpara
fimalgoritmo

Para entender melhor, veja mais


um exemplo da utilizao da estrutura Para. O mesmo determina
o total arrecadado para um clube
no final do ano.

Veja que no algoritmo anterior a


varivel de controle do Para a
varMes. A varivel varMes,
conforme especifica o comando,
assume os valores inteiros que
vo de 1 at 12. Para cada valor de
varMes, as instrues internas
ao Para so executadas. O valor
do incremento, quando no especificado, o que possvel incluindo passo <valor do incremento>,
no comando Para antes do faca,
sempre 1.
Vamos assumir que ao chegar no
Para pela primeira vez ser calculado o nmero de vezes que as
instrues internas ao Para sero executadas. A determinao
do nmero de repeties feita
usando-se os valores inicial e limite, combinados com o valor
do incremento para a varivel de
controle. Assim, estamos assumindo tambm que no ser possvel abandonar a repetio das
instrues antes que o nmero de
repeties seja alcanado.

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)

Veja ento, que o comando Para


s pode ser utilizado quando voc
souber o nmero de vezes que se
quer repetir.
Confira a seguir um exemplo do
comando Para, utilizando um incremento diferente do padro.
algoritmo NUMEROS
var
varJ : inteiro
inicio
para varJ de 1 ate 10 passo
2 faca
escreval (varJ)
fimpara
fimalgoritmo

No exemplo anterior, sero escritos somente os valore 1, 3, 5, 7 e


9. Para o valor do passo tambm
possvel definir um valor negativo, que far a repetio subtrair o
valor definido at chegar a 0. Nesse caso, o valor inicial dever ser
maior que o valor final.
Mais uma unidade chega ao final
e agora voc j tem muitos conhecimentos novos. Aqui voc aprendeu sobre as estrutura de repetio, com os comandos Enquanto,
Repita e Para. Siga em frente, pois
tem muita coisa interessante
aguardando por voc! Faa do seu
estudo um momento significativo
e prazeroso!

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)

Esse algoritmo possibilitaria a


leitura de cinco alturas de cinco
atletas diferentes e as armazenaria em cinco variveis distintas
(varAltura1, varAltura2, varAltura3, varAltura4, varAltura5). Uma
instruo de repetio no melhoraria muito essa lgica, pois os
cinco valores precisaro estar disponveis independente dos outros
valores informados. Mas imagine
se a leitura das alturas tivesse que
ser realizada para um time de futebol, ou para uma equipe de futebol americana, por seu algoritmo,
o que seria feito, ento? E se em
um prximo campeonato seu algoritmo fosse usado para registrar
todos os participantes de todas as
equipes que participam da competio?
Em situaes como essa que as
estruturas de dados fazem a diferena, sendo essenciais ao processamento dos dados eficiente por
um computador.

escreval (Informe a altura do quarto atleta: )


leia (varAltura4)
escreval (Informe a altura do quinto atleta: )
leia (varAltura5)
fimalgoritmo

LGICA DE PROGRAMAO

41

Seo 2

nico identificador dessa estrutura de dados = alturas

Vetores

Uma estrutura de dados composta de forma homognea e unidimensional, ou vetor, um arranjo


de elementos (dados) armazenados na memria do computador,
sendo que esses dados so organizados de forma eficiente um aps
o outro, sob um mesmo identificador, cujas regras so as mesmas
para criar um identificador de
uma varivel simples, que possui
capacidade de guardar somente
um valor.
Um vetor uma estrutura de
dados homognea que pode
ser acessado de forma aleatria (qualquer posio que seja
necessria).

Suas principais caractersticas so:

contm vrios valores (nme-

ro definido);

todos os valores so do mesmo tipo de dado (homognea);


possui um nico nome (identificador da varivel);
cada valor do conjunto
acessvel independentemente,
de acordo com o seu ndice (ou
posio na estrutura de dados);
todos os seus elementos, ou
dados armazenados, so igualmente acessveis a qualquer momento do processamento (acesso
aleatrio).
Modificando a forma de soluo
do algoritmo anterior, que possua cinco variveis para guardar
cinco alturas de atletas, possvel
empregar um vetor para armazenar essas cinco alturas.

42

CURSOS TCNICOS SENAI

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:

<tipo de dado> tipo de dado que ser armazenado no vetor;


<identificador> nome definido ao vetor, respeitando as regras de
identificao;

<valor inicial> e <valor final> so os valores inteiros que definem


incio e fim dos ndices do vetor, sendo o seu intervalo a quantidade
exata de elementos do vetor, ou seja, seu tamanho.

Veja mais um exemplo.


algoritmo ALTURAS
var
vetAlturas : vetor [0..4] de
real
inicio
fimalgoritmo

Nesse exemplo ser criado um


vetor chamado alturas, que poder armazenar at cinco nmeros
reais diferentes. E veja bem! Uma
ateno especial deve ser dedicada
na compreenso de que esse tipo
de estrutura de dados tem seu primeiro elemento armazenado na
posio zero e no na um.
Poucas linguagens de programao no seguem esse padro. Ele
comumente adotado pela maioria
das linguagens de desenvolvimento de programas.
O grfico a seguir representa a organizao de um vetor com tamanho trs. Confira!

Normalmente utilizada uma instruo de repetio para guardar e


acessar os dados que so armazenados em um vetor (seu contedo).
Suponha que exista a necessidade de leitura e armazenamento das cinco
alturas de atletas em um vetor que tenha capacidade de realizar esse armazenamento. Saiba mais com um exemplo.
algoritmo ALTURAS
var
varAuxiliar : inteiro
vetAlturas : vetor [0..4] de real
inicio
para varAuxiliar de 0 ate 4 faca
escreval (Informe a altura do , varAuxiliar + 1 , atleta)
leia (vetAlturas[varAuxiliar])
fimpara
fimalgoritmo

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

Figura 8: Representao grfica do vetor

Isso indica que a posio 3 do vetor possui como contedo o valor de


2.20, informado pelo usurio no momento de execuo do algoritmo
anterior. A terceira altura informada 1.75 e est armazenada no ndice
2, que corresponde ao terceiro contedo guardado nesse vetor.

Vetor do tipo de dado caractere


Figura 7: Organizao de um vetor com
tamanho trs

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

Especificamente para esse tipo de vetor, que envolve um conjunto de


caracteres, estabelecida uma expresso que a caracteriza facilmente,
sendo importante na rea de informtica: string ou simplesmente cadeia
de caracteres.
A sintaxe que voc ver a seguir declara um vetor de caracteres com a
capacidade de armazenar at dez conjuntos de caracteres, sendo essa
declarao representada graficamente aps a instruo de criao desse
vetor chamado vetNomes.
algoritmo VETOR
var
vetNomes : vetor [0..9] de caractere
inicio
fimalgoritmo

A representao anterior mostra um vetor de dez elementos. Isto , tem


a capacidade de dez variveis do tipo caractere agrupadas em um identificador, vetNomes , independentes por sua posio dentro do vetor,
indicadas por seu ndice que varia de zero at 9 (nove).
Voc percebeu que existe um espao entre a palavra Ricardo e Henrique (no ndice 5)? Esse espao consiste em um nico caractere especial
(espao em branco), ocupando sua respectiva posio no vetor vetNomes. Para acessar cada uma de suas posies, ser usado o identificador
do vetor, seguido do valor de seu ndice entre colchetes.
Vamos a mais um exemplo.Veja a seguir o algoritmo que l os dez nomes.
algoritmo NOME DA PESSOA
var
varAuxiliar : inteiro
vetNomes : vetor [0..9] de caractere
inicio
para varAuxiliar de 0 ate 9 faca
escreval (Digite o nome: )
leia(vetNomes[varAuxiliar])
fimpara
fimalgoritmo

44

CURSOS TCNICOS SENAI

Nesse exemplo, o usurio digitar


um nome de cada vez, pressionando a tecla ENTER aps cada
nome digitado, sendo que todos
eles so armazenados no vetor
vetNomes.

Seo 3
Matrizes

Um vetor no deixa de ser uma


matriz, porm essa matriz possui
sua representao no algoritmo
com mais de um ndice, variando
a partir do valor inteiro zero em
todas as suas possveis dimenses.
Convencionalmente, na rea de
programao, a variao de seu
primeiro ndice, ou primeira dimenso da matriz, representada como dimenso de linhas nas
quais sero armazenados os respectivos contedos da matriz, enquanto que a segunda dimenso,
ou segundo ndice, corresponderia s colunas em que sero armazenados seus contedos.
J uma terceira dimenso, tambm chamada de matriz tridimensional, seria representada como
pginas de um livro, enquanto outras dimenses teriam maiores dificuldades de uma representao
didtica adequada que facilitaria
sua compreenso. Apesar dessa
dificuldade de representao, uma
matriz possui o limite das dimenses coerentes com a quantidade
de memria disponvel no computador que a estar manipulando.

Similar aos vetores, as matrizes


possuem o primeiro elemento de
cada linha, ou coluna, ou ainda
qualquer outra dimenso iniciada
com ndice 0 (zero). Por exemplo,
o elemento na primeira linha da
primeira coluna de uma matriz de
alturas ter ndice [0,0], enquanto
o elemento na segunda linha da
primeira coluna ter o ndice [1,0].
Repare que as posies do exemplo anterior ([0,0] ou [1,0]) esto
indicando dois valores inteiros
que correspondem exata posio em cada uma das dimenses
dessa matriz bidimensional (varia
em duas dimenses linha e coluna).

Declarando uma matriz


Voc sabia que a declarao de
uma matriz bem parecida com
a declarao de um vetor? verdade! Afinal, o vetor no deixa de
ser uma matriz, mas poder ser
bidimensional,
tridimensional,
entre outras possveis variaes
de dimenses (multidimensional),
possuindo uma definio inteira
para cada uma dessas dimenses
que tero seu tamanho mximo
definido no momento da declarao no algoritmo.
algoritmo MATRIZ
var
<identificador> : vetor [<valor inicial>..<valor
final>,<valor inicial>..<valor
final>] de <tipo de dado>
inicio
fimalgoritmo

Onde:

<tipo de dado> tipo de dado


que ser armazenado na matriz;
<identificador> nome defi-

nido para matriz, respeitando as


regras de definio de identificadores;

<valor inicial>.<valor final> e


<valor inicial>.<valor final> so
os valores inteiros de incio e fim
de cada dimenso definida na
matriz, tendo essa sintaxe geral
somente duas dimenses, que so
separadas por vrgula (,).

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.

Figura 9: Representao grfica para


matriz

A representao que voc acabou


de ver pode ser definida em linguagem algortmica, no bloco de
declaraes do algoritmo, respeitando a forma genrica apresentada anteriormente para declarao
de uma matriz. Observe que essa
matriz tem capacidade de armazenamento de dez alturas independentes, ao invs de somente cinco,
como foi abordado no primeiro
exemplo no estudo de vetores.
Caso tenha dvidas, retorne ao
contedo sobre vetores para relembrar. Veja mais uma situao!

LGICA DE PROGRAMAO

45

algoritmo ALTURAS
var
vetAlturas : vetor [0..1,0..4] de real
inicio
fimalgoritmo

Assim, a manipulao e armazenamento das alturas na memria esto


mais bem organizados, propiciando maior eficincia do computador no
acesso aos seus endereos de memria que guardam essas dez alturas
(todos estes valores esto guardados de maneira consecutiva na memria por estarem definidos para o armazenamento em uma estrutura de
dados matriz ou vetor).
Acompanhe o exemplo seguinte que permite a manipulao dessa matriz bidimensional denominada varAlturas.
algoritmo ALTURAS
var
varLinha, varColuna, varContador : inteiro
varSoma
: real
vetAlturas
: vetor [0..1,0..4] de real
inicio
varContador 1
varSoma 0
escreval(Cadastro das Alturas dos Atletas Titulares)
para varLinha de 0 ate 1 faca
para varColuna de 0 ate 4 faca
escreva(Digite a altura do , varContador , atleta: )
leia(vetAlturas[varLinha,varColuna])
varContador varContador + 1
varSoma varSoma + vetAlturas[varLinha,varColuna]
fimpara
se varLinha = 0 entao
escreval(Cadastro das Alturas dos Atletas Reservas)
fimse
fimpara

46

CURSOS TCNICOS SENAI

// Percorre a matriz novamente para apresentar as alturas cadastradas


para varLinha de 0 ate 1 faca
para varColuna de 0 ate 4 faca
escreval(Altura [, varLinha, ,, varColuna,]=,
vetAlturas[varLinha,varColuna])
fimpara
fimpara
escreval(Mdia da Altura destes Atletas = , (varSoma / (varContador - 1)))
fimalgoritmo
Perceba que, no exemplo anterior, na primeira linha (zero), sero guardadas as alturas dos atletas titulares, enquanto que na segunda linha (um)
sero as dos reservas. Apesar de existir um nico identificador, possvel
armazenar dez valores, como tambm poderia ser feito por um vetor
de dez posies ([0..9]). Porm, a organizao no armazenamento das
alturas dos titulares e reservas no poderia ser feita de maneira lgica
adequada e eficiente para manipulao dos endereos de memria do
computador que estiver executando esse algoritmo.
Note que tanto a quantidade de linhas como a de colunas esto iniciando
de zero e chegando at o valor final definido na declarao da matriz,
onde a multiplicao da quantidade de elementos em cada dimenso
pode ser somada para identificar a capacidade mxima de armazenamento da matriz.

Linhas [0..1] Dimenso com duas linhas


Colunas [0..4] Dimenso com cinco colunas

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

Agora voc j sabe que um conjunto homogneo de dados, tal


como uma alcateia, composto
de variveis do mesmo tipo (lobos), certo? Mas veja bem! Se
voc tivesse um conjunto em que
os elementos no so do mesmo
tipo, teria um conjunto heterogneo de dados. Vamos entender
melhor!
Poderamos ter um conjunto de
animais quadrpedes, formado
por ces (matilha), camelos (cfila), bfalos (manada) etc.
Sendo assim, uma das principais
estruturas de dados o registro.
Imagine uma identificao de
passageiro, aquele formulrio de
informaes que o passageiro
entrega ao motorista antes de embarcar no nibus, junto com sua
passagem. Ela formada por um
conjunto de informaes logicamente relacionadas, porm, de tipos diferentes, tais como nmero
de passagem (inteiro), origem e
destino (caracteres), data (caracteres), horrio (caracteres), poltrona (inteiro), idade (inteiro) e
nome do passageiro (caracteres),
que so subdivises do registro
(elementos do conjunto), tambm
chamadas de campos.
Quer saber mais sobre os registros? Vamos para a prxima seo!

Os registros so agrupamentos de dados, possivelmente heterogneos


(real, inteiro, lgico, caractere), que visam a oferecer meios mais simples
de manipular informaes relacionadas que o projetista do algoritmo
quer manter unidas. Por exemplo, pense em um algoritmo que implemente operaes sobre nmero de empregados, valor do salrio, departamento dos projetos, lucros obtidos de uma empresa. A manipulao
de tais dados se torna trivial com a utilizao dos registros. E sabe por
qu? Pois por meio de um rtulo (identificador do conjunto de dados)
possvel acessar os dados membros do conjunto.

Introduo

Registros

Um registro composto por campos que so partes que especificam


cada uma das informaes que o compe. Uma varivel do tipo registro uma varivel composta, pois engloba um conjunto de dados, e
heterognea, pois cada campo pode ser de um tipo primitivo diferente.

A figura que voc ver a seguir ilustra graficamente um exemplo de uma


hipottica identificao de embarque (registro) em um nibus, com diversas informaes (campos) solicitadas pela companhia de transporte
para o controle dos passageiros embarcados.

Figura 7: Passagem de nibus

LGICA DE PROGRAMAO

49

Todas as operaes concernentes


aos algoritmos podem ser realizadas com as estruturas, atribuies,
operaes lgicas e/ou aritmticas e declaraes de vetores de
estruturas.
Alm dos vetores e matrizes, os
registros permitem a confeco
de algoritmos mais sofisticados,
tendo em vista que fornecem uma
maneira mais cmoda de trabalhar com os dados e facilitam a
vida do projetista do algoritmo
em relao ao planejamento de
como simular os dados do mundo
real para os conceitos abstratos
inerentes aos algoritmos.
Agora vamos imaginar o seguinte
problema: uma empresa vai fornecer o credirio para um cliente
efetuar o pagamento em vrias
parcelas. Mas, para isso, ser necessrio efetivar um cadastro dos
dados mais relevantes para a localizao do cliente, caso algum
problema venha a ocorrer com os
pagamentos.
Voc sabe quais seriam as informaes?
As informaes so estas:

nome;
endereo;
nmero do CPF.

A criao dessas fichas cadastrais conter dados com tipos diferentes e,


por isso, no ser possvel usar uma varivel composta homognea para
guardar todos. Apesar disso, todos esses dados so relacionados, pois
pertencem a uma mesma pessoa. Ou seja, cada ficha possuir diferentes dados (nome, endereo e CPF), mas todos eles so de um mesmo
cliente, sendo que todos esses dados so relacionados logicamente a esse
cliente.
Cada um dos dados que formam essa ficha chamado de componente
ou elemento do registro, sendo que cada ficha completa identificada
como um cdigo de registro. Portanto, nesse exemplo, s ser possvel
conseguir um credirio aps a efetivao do registro do cliente, sendo
esse registro formado pelos componentes nome, endereo e nmero do
CPF. Vamos ver um exemplo? Acompanhe!

Figura 8: Registro de credirio

Essa empresa tambm no far o credirio somente para um cliente,


mas para os vrios clientes que possurem um perfil interessante para o
negcio. Assim, ser necessrio criar uma estrutura de dados que possa
armazenar vrios dados (composta) de tipos diferentes (heterognea).
Essas estruturas (compostas heterogneas) tambm so chamadas de
registros e permitem uma organizao eficiente no armazenamento e
manipulao dos dados que esto implicitamente relacionados.
E que tal, agora, conhecer as caractersticas dos registros? Elas sero
muito importantes. Observe!

Podem conter vrios registros com valores (nmero definido).


Os valores no precisam ser do mesmo tipo de dado.
Um registro possui um nico nome (identificador).

Cada registro acessvel independentemente, sendo seus elementos


tambm independentes, de acordo com o seu nome significativo.

50

CURSOS TCNICOS SENAI

Veja mais um exemplo.

Figura 9: Registro de credirio

No exemplo anterior, voc pde observar dois registros cadastrados. A


primeira ficha contm os dados do Joo Carlos da Silva, enquanto que a
segunda possui os dados da Maria Rita Amaral.
Os componentes desse registro so identificados por meio dos seus nomes, atribudos aps a especificao do registro com o uso do operador
ponto (.).

Declarao geral de registro


Para que voc entenda o que uma estrutura bsica para declarao de
um registro, acompanhe a seguir.
algoritmo REGISTRO
var
registro = <identificador>
<componente> <tipo bsico>;
<componente> <tipo bsico>;
fimregistro
inicio
fimalgoritmo

Onde:

<identificador> o nome do registro (segue as regras de nomenclatura);


<componente> o nome do componente que forma esse registro;
<tipo bsico> o tipo de dado que ser armazenado em cada compo-

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

CURSOS TCNICOS SENAI

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:

subdiviso de algoritmos com-

plexos, facilitando o seu entendimento;

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

Um subprograma controlado por um programa de nvel


superior que determina quando e sob que condies o subprograma deve ser executado
e que pode eventualmente
recolher um valor devolvido
por este.

Outra questo importante que


os subprogramas podem ser chamados a partir de vrias zonas do
programa e sob condies diferentes. O seu uso introduz tambm uma maior flexibilidade no
processo de desenvolvimento de
software, pois permite a substituio fcil de um subprograma por
uma verso mais atual.
A diviso em subprogramas corresponde diviso de um problema em subproblemas mais simples, o que facilita a resoluo do
problema inicial e permite uma
abordagem top-down. A utilizao
de subprogramas tambm uma
forma de facilitar a produo de
software favorecendo o recurso a
mdulos previamente desenvolvidos e constitudos por conjuntos
de subprogramas.

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

CURSOS TCNICOS SENAI

Os subprogramas so normalmente classificados como funes


ou como procedimentos. Em
qualquer subprograma tambm possvel a definio de outros subprogramas. Alguns deles
apresentam ainda uma caracterstica importante e que consiste
na possibilidade de se chamarem
a si prprios, ou seja, um subprograma invocado recursivamente
pelo mesmo subprograma.
Agora que voc j sabe mais sobre
os subprogramas, siga para a prxima seo!

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

A varivel A seria de um tipo compatvel com o valor de retorno do


subprograma. J o comprimento
e a largura seriam variveis usadas
como argumentos. O subprograma seria definido da seguinte maneira. Observe!
funcao AREA (varX, varY :
real) : real
var
varAux : real
inicio
varAux varX * varY
retorne varAux
fimfuncao

No subprograma AREA esto


definidos os parmetros varX e
varY do tipo real. Os parmetros
declaram-se imediatamente antes
da chaveta que marca o incio do
conjunto de instrues que constituem a funo ou procedimento.
Existe uma relao direta entre os
argumentos usados na chamada
de um subprograma e os parmetros definidos para esse subprograma. A esses parmetros iro
ser atribudos os valores dos argumentos. Se o subprograma fosse
invocado como varA = AREA
(10,5), os parmetros varX e
varY passariam a conter os valores 10 e 5, respectivamente. Note
que no precisa existir nenhuma
correspondncia entre os nomes
das variveis definidas como parmetros de um subprograma e
os nomes de eventuais variveis
usadas como argumentos na chamada desse subprograma. Alis,
no exemplo anterior, o subprograma foi invocado com valores
constantes.

Outra possibilidade a utilizao de expresses com significado dentro


do programa a partir do qual o subprograma executado. Por exemplo:
varA = AREA( varX * 2, varLargura / 10 ).
Nesse caso, a varivel varX usada na expresso correspondente ao primeiro argumento tem um significado diferente do parmetro varX usado na definio do subprograma, embora os nomes sejam iguais. Lembre-se de que muito importante ter bem clara a distino entre essas
situaes. Vamos em frente!

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

Mas lembre-se de que a lista de


parmetros e declaraes respectivas so opcionais.

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

CURSOS TCNICOS SENAI

Note que as funes e procedimentos que eventualmente possam existir em um programa so


sempre definidos antes do procedimento especial inicio. Portanto, fique atento!
Genericamente, a sintaxe para definio de um procedimento a
seguinte, veja:
procedimento
<nome-de-procedimento> [(<seqncia-de-declaraes-de-parmetros>)]
// Seo de Declaraes Internas
inicio
// Seo de Comandos
fimprocedimento

Tal como no caso das funes, a


lista de parmetros e declaraes
respectivas so opcionais.

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.

Dessa forma, evitam-se conflitos


entre os valores armazenados nas
duas situaes. Quando termina
uma funo ou procedimento, as
suas variveis locais so destrudas e o espao de memria respectivo libertado, podendo ser
usado pelo programa para outros
fins.
Uma varivel local s reconhecida no subprograma em
que se encontra declarada,
no podendo ser invocada
por outros subprogramas. O
uso de variveis locais diminui o espao na memria do
computador requerido por
um programa, uma vez que
apenas possuem uma rea de
memria reservada durante
a execuo do bloco do programa no qual se encontram
definidas.

Existem, no entanto, muitas situaes em que importante que


uma determinada varivel seja
reconhecida em qualquer ponto
do programa. Isso significa que,
independentemente da funo ou
procedimento que utilizar a varivel, esta estar sempre associada
mesma posio de memria,
no sendo destruda depois de ser
utilizada por um subprograma. A
varivel existir, permanecendo
reservado o espao de memria
respectivo, at que o programa
termine a sua execuo.
Assim, possvel considerar a
existncia de variveis com caractersticas distintas: as variveis
locais ou automticas, que apenas
tm existncia dentro do subprograma em que se encontram declaradas, e as variveis globais ou
estticas, que existem enquanto
o programa no terminar, sendo
reconhecidas por qualquer subprograma.

As variveis globais so declaradas fora de qualquer funo ou


procedimento, incluindo o procedimento especial inicio.
Ficou claro at aqui? Ento siga
para a seo seguinte!

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

Como voc pode perceber, esse


procedimento limita-se apenas a
aceitar um valor inteiro, somar o
valor 1 ao valor recebido e escrever o resultado. Se esse procedimento for chamado em conjunto
com as instrues que voc ver a
seguir, o resultado obtido seria 4 e
sucessivamente 3.

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

Conforme o exemplo anterior, o


procedimento SOMA_UM no
alterou o valor da varivel varX
que continuou a ter o valor 3 aps
a chamada do procedimento. O
valor 4 corresponde ao valor da
varivel varX no procedimento
SOMA_UM.
Mas fique atento! Esse mecanismo de cpia dos argumentos para
variveis locais no subprograma
no desejvel em todas as situaes. Existem muitos casos em
que se pretende que as alteraes
exercidas sobre as variveis correspondentes aos parmetros do
subprograma sejam reconhecidas
no programa ou subprograma de
nvel superior.
Um exemplo tpico consiste na
definio de um subprograma
que permita proceder troca dos
valores de duas variveis. Veja a
seguir um procedimento capaz de
executar essa tarefa.

LGICA DE PROGRAMAO

59

procedimento TROCA (varA, varB)


var
varC : inteiro
inicio
varC varA
varA varB
varB varC
fimprocedimento

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

CURSOS TCNICOS SENAI

E sabe qual o resultado para essa


operao? O resultado obtido seria X = 5, Y = 6, ou seja, no
houve qualquer troca dos valores
das variveis. Para que voc entenda melhor, a explicao simples.
Ao ser invocado, o procedimento
TROCA criou cpias dos argumentos que recebeu, trocou esses
valores entre si e, ao terminar, libertou o espao reservado para os
parmetros que continham o valor dos argumentos. Isso significa
que o procedimento funcionou,
mas apenas em relao s cpias
dos argumentos que recebeu.
Para resolver o problema, ao invs de passar como argumentos
os valores das variveis, deve-se
indicar ao procedimento TROCA
as posies de memria (endereos) ocupadas por essas variveis.
Na prtica, isso significa que os
parmetros do procedimento so
substitudos pelos argumentos
que so passados, fazendo com
que as alteraes efetuadas dentro do procedimento sejam reconhecidas no programa que o invocou. Nesse caso, diz-se que os
argumentos foram passados por
referncia. A situao inicial corresponde a passar os argumentos
por valor.
Mas como ser possvel distinguir
essas duas situaes? Para isso,
feita a colocao do caractere var
antes do nome do argumento que
passado por referncia na instruo correspondente chamada
do procedimento. A palavra var
permite aceder ao endereo da
varivel e no ao seu contedo.
A troca correta de valores das
duas variveis precisa ser efetuada
indicando o endereo dos argumentos do procedimento TROCA. Confira!

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.

Um erro frequente consiste na


utilizao de uma varivel global
como se fosse uma varivel local.
Embora normalmente o computador no acuse qualquer erro,
gera-se uma situao que, em geral, leva a um mau funcionamento
do programa. Essas situaes so
normalmente difceis de detectar.
Por isso, fique atento!
Os erros que ocorrem pela troca
na forma de passagem de argumentos tambm podem ser difceis de detectar e tm como consequncias a alterao de valores
de variveis que se pretendiam
inalterveis (troca da passagem
por valor pela passagem por referncia) ou a no alterao de
contedos de variveis que se
pretendiam modificar (troca da
passagem por referncia pela passagem por valor).
Puxa, foram muitos termos tcnicos, no mesmo? E agora voc
j est mais familiarizado para
aplicar os conhecimentos sobre
lgica de programao. Mas no
pare por aqui. Busque novas informaes para aprimorar ainda
mais o seu trabalho!

Seo 8

Erros mais comuns


A correta compreenso do mbito de uma varivel envolvida em um
programa e a anlise das situaes que permitem a escolha da forma de
passagem de parmetros so fundamentais na elaborao de programas
de computador. Esses aspectos tornam-se mais crticos medida que a
complexidade dos programas aumenta. Os programas complexos podem envolver um nmero elevado de variveis e a utilizao de diversos
subprogramas, implicando maiores cuidados na definio do mbito das
diversas variveis e nas formas de passagem de argumentos.

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.

BOENTE, Alfredo. Aprendendo a programar em Pascal: tcnicas de programao. Rio


de Janeiro, RJ: Brasport, 2003.

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.

LOPES, Anita; GARCIA, Guto. Introduo programao 500 algoritmos resolvidos.


Rio de Janeiro, RJ: Elsevier, 2002.

MORAES, Paulo Srgio de. Curso bsico de lgica de programao. So Paulo, SP:
Unicamp, 2000.

OLIVEIRA, lvaro Borges de. Introduo programao algoritmos. Florianpolis:


Bookstore, 1999.

LGICA DE PROGRAMAO

65

Equipe de Desenvolvimento de Recursos Didticos


Coordenao de Educao a Distncia
Beth Schirmer
Coordenao Projetos EaD
Maristela de Lourdes Alves
Coordenao de Desenvolvimento de Recursos
Didticos
Gisele Umbelino
Projeto Educacional
Angela Maria Mendes
Israel Braglia
Projeto Grfico
Daniela de Oliveira Costa
Jordana Paula Schulka
Juliana Vieira de Lima

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