Você está na página 1de 142

Algoritmos e Programao

Adolfo Jos Gonalves Stavaux Baudson


Francisco Csar Rodrigues de Arajo

Ouro Preto - MG
2013

Presidncia da Repblica Federativa do Brasil


Ministrio da Educao
Secretaria de Educao Profissional e Tecnolgica
Instituto Federal de Educao, Cincia e Tecnologia de Minas Gerais
Este caderno foi elaborado em parceria entre o Instituto Federal de Educao,
Cincia e Tecnologia de Minas Gerais Campus Ouro Preto e a Universidade Federal
de Santa Maria para a Rede e-Tec Brasil.
Equipe de Elaborao
Instituto Federal de Educao, Cincia e
Tecnologia de Minas Gerais IFMG-Ouro Preto
Reitor
Caio Mrio Bueno Silva/IFMG-Ouro Preto
Direo Geral
Arthur Versiani Machado/IFMG-Ouro Preto
Coordenao Institucional
Sebastio Nepomuceno/IFMG-Ouro Preto
Coordenao de Curso
Cristiano Lcio Cardoso Rodrigues/IFMG-Ouro Preto
Professor-autor
Adolfo Jos Gonalves Stavaux Baudson/IFMG-Ouro Preto
Francisco Csar Rodrigues de Arajo/IFMG-Ouro Preto

Equipe de Acompanhamento e Validao


Colgio Tcnico Industrial de Santa Maria CTISM
Coordenao Institucional
Paulo Roberto Colusso/CTISM
Coordenao Tcnica
Iza Neuza Teixeira Bohrer/CTISM
Coordenao de Design
Erika Goellner/CTISM
Reviso Pedaggica
Andressa Rosemrie de Menezes Costa/CTISM
Fabiane Sarmento Oliveira Fruet/CTISM
Janana da Silva Marinho/CTISM
Marcia Migliore Freo/CTISM
Reviso Textual
Ana Paula Cantarelli/CTISM
Tatiana Rehbein/UNOCHAPEC
Reviso Tcnica
Guilherme Dhein/CTISM
Ilustrao
Gabriel La Rocca Cser/CTISM
Marcel Santos Jacques/CTISM
Rafael Cavalli Viapiana/CTISM
Ricardo Antunes Machado/CTISM
Diagramao
Cssio Fernandes Lemos/CTISM
Leandro Felipe Aguilar Freitas/CTISM

CIP-Brasil. Catalogao na fonte

INSTITUTO
FEDERAL
RIO GRANDE
DO SUL

Apresentao e-Tec Brasil


Prezado estudante,
Bem-vindo a Rede e-Tec Brasil!
Voc faz parte de uma rede nacional de ensino, que por sua vez constitui uma
das aes do Pronatec Programa Nacional de Acesso ao Ensino Tcnico e
Emprego. O Pronatec, institudo pela Lei n 12.513/2011, tem como objetivo
principal expandir, interiorizar e democratizar a oferta de cursos de Educao
Profissional e Tecnolgica (EPT) para a populao brasileira propiciando caminho
de o acesso mais rpido ao emprego.
neste mbito que as aes da Rede e-Tec Brasil promovem a parceria entre
a Secretaria de Educao Profissional e Tecnolgica (SETEC) e as instncias
promotoras de ensino tcnico como os Institutos Federais, as Secretarias de
Educao dos Estados, as Universidades, as Escolas e Colgios Tecnolgicos
e o Sistema S.
A educao a distncia no nosso pas, de dimenses continentais e grande
diversidade regional e cultural, longe de distanciar, aproxima as pessoas ao
garantir acesso educao de qualidade, e promover o fortalecimento da
formao de jovens moradores de regies distantes, geograficamente ou
economicamente, dos grandes centros.
A Rede e-Tec Brasil leva diversos cursos tcnicos a todas as regies do pas,
incentivando os estudantes a concluir o ensino mdio e realizar uma formao
e atualizao contnuas. Os cursos so ofertados pelas instituies de educao
profissional e o atendimento ao estudante realizado tanto nas sedes das
instituies quanto em suas unidades remotas, os polos.
Os parceiros da Rede e-Tec Brasil acreditam em uma educao profissional
qualificada integradora do ensino mdio e educao tcnica, capaz
de promover o cidado com capacidades para produzir, mas tambm com
autonomia diante das diferentes dimenses da realidade: cultural, social,
familiar, esportiva, poltica e tica.
Ns acreditamos em voc!
Desejamos sucesso na sua formao profissional!
Ministrio da Educao
Maro de 2013
Nosso contato
etecbrasil@mec.gov.br

e-Tec Brasil

Indicao de cones
Os cones so elementos grficos utilizados para ampliar as formas de
linguagem e facilitar a organizao e a leitura hipertextual.
Ateno: indica pontos de maior relevncia no texto.

Saiba mais: oferece novas informaes que enriquecem o


assunto ou curiosidades e notcias recentes relacionadas ao
tema estudado.
Glossrio: indica a definio de um termo, palavra ou expresso
utilizada no texto.
Mdias integradas: sempre que se desejar que os estudantes
desenvolvam atividades empregando diferentes mdias: vdeos,
filmes, jornais, ambiente AVEA e outras.
Atividades de aprendizagem: apresenta atividades em diferentes
nveis de aprendizagem para que o estudante possa realiz-las e
conferir o seu domnio do tema estudado.

e-Tec Brasil

e-Tec Brasil

Tecnologia da Informtica

Sumrio
Palavra do professor-autor

Apresentao da disciplina

11

Projeto instrucional

13

Aula 1 Conceitos
1.1 O computador

15
15

1.2 Algoritmo

15

1.3 Linguagem de programao

15

1.4 Conceitos bsicos

16

Aula 2 Variveis e constantes


2.1 Uma pseudolinguagem

19
19

2.2 Elemento bsico de qualquer linguagem: identificador (nome)19


2.3 Declarao e definio de variveis e constantes

19

2.4 Comentrio

22

2.5 Comandos bsicos

22

Aula 3 Comandos de entrada e sada e estruturas condicionais 31


3.1 Comandos de entrada e sada
31
3.2 Estruturas de controle e fluxogramas

34

Aula 4 Estruturas de repetio


4.1 Estrutura de repetio (enquanto ... faa)

45
45

4.2 Estrutura de repetio (para ... faa)

51

4.3 Estrutura de repetio (repita ... at)

53

Aula 5 Procedimento
5.1 Definio

61
61

5.2 Caractersticas

61

5.3 Sintaxe

62

5.4 Exerccios resolvidos

63

e-Tec Brasil

Aula 6 Funo
6.1 Definio
6.2 Caractersticas e diferenas em relao a procedimento

69

6.3 Sintaxe

70

6.4 Exerccios resolvidos

71

Aula 7 Ambiente de programao Lazarus


7.1 Linguagem de programao

75
75

7.2 Ambiente de desenvolvimento

75

7.3 Arquivos que compem uma aplicao Lazarus

89

7.4 Elementos da linguagem Pascal/Object Pascal

89

7.5 Aplicao

92

Aula 8 Estruturas condicionais


8.1 Tomada de deciso

101
101

Aula 9 Estruturas de repetio


9.1 Repetio

121
121

9.2 Estrutura while ... do (enquanto ... faa)

121

9.3 Estrutura for ... do (para ... faa)

124

9.4 Estrutura repeat ... until (repita ... at)

127

Aula 10 Procedimentos
10.1 Estruturas modulares
10.2 Mdulo procedimento
Aula 11 Funes
11.1 Mdulo funo
11.2 Exerccio resolvido

e-Tec Brasil

69
69

131
131
131
137
137
137

Referncias

141

Currculo do professor-autor

142

Palavra do professor-autor
A rea de Automao Industrial, desde que foi constituda, tem sido objeto
de constante evoluo tecnolgica no sentido de se aperfeioar processos
em termos de qualidade e custo. Ao longo deste processo de constante
procura pelo timo, solues ainda no estabelecidas vo sendo propostas
e efetivamente criadas.
Desta forma, o profissional de automao precisa ter, alm de conhecimentos tericos e prticos bem consolidados, grande capacidade de iniciativa e
imaginao. a unio da imaginao para propor solues aos problemas
apresentados, baseado em uma consolidada fundamentao terica, que
procuramos abordar na disciplina de Algoritmos e Programao.
A primeira metade da disciplina procura desenvolver nos futuros profissionais
o pensamento lgico, por meio do ensino de algoritmos estruturados. Em
cada problema proposto, h uma sistemtica que, unida ao raciocnio lgico,
procura estabelecer uma estratgia de soluo.
A proposta da segunda metade da disciplina estabelecer o contato do aluno
com uma ferramenta de programao comercial utilizada no mercado de
trabalho. Ferramenta esta que ser utilizada posteriormente para estabelecer
a comunicao entre os diversos sistemas de automao.
Desejamos que vocs tenham sucesso, no somente na disciplina, mas como
profissionais da rea que escolheram para sua formao e acreditamos que
o estudo e a dedicao necessrios ao profissional contemporneo esteja
sempre presente na vida de todos.
Adolfo Jos Gonalves Stavaux Baudson e
Francisco Csar Rodrigues de Arajo

e-Tec Brasil

Apresentao da disciplina
Ol, alunas e alunos
com muita alegria que comeamos hoje o estudo dos algoritmos e de uma
linguagem de programao. Como vocs podero perceber, trata-se de um
contedo muito interessante, atraente, envolvente e muito utilizado nos
dias de hoje. de fcil compreenso e de uma aplicabilidade imensa, ainda
mais em Automao. No mundo informatizado e automatizado de hoje h
a necessidade de se elaborar programas que desenvolvam tarefas para fins
diversos, como movimentar mquinas ou partes delas com um simples toque
em um boto, por exemplo.
Veja: dissemos que vocs estudaro os algoritmos. Mas, o que isso? Bom,
se dissermos a vocs que algoritmo uma receita de bolo, acreditariam? Pois
verdade. Se dissermos que o relato de sua caminhada at o trabalho ou
escola um algoritmo, tambm estamos falando a verdade. Ento pessoal,
isso mesmo. Os passos para se fazer um bolo ou uma caminhada at o
trabalho exigem certa lgica, no ?
Por isso, pelo fato de se ter uma lgica, isto , um conjunto de normas ou
regras, estamos falando de algoritmos. isso que iremos estudar nesta fase:
lgica de programao, ou seja, os algoritmos.
Em seguida, iremos aplicar esses conhecimentos em uma linguagem de programao para que vocs possam sentir como interessante a aplicabilidade
dos conceitos adquiridos.
Desejamos a todas e a todos um timo curso e colocamo-nos disposio
de vocs. Com alegria, sejam bem vindos!
Professores Adolfo Baudson e Francisco Csar Arajo

11

e-Tec Brasil

Palavra instrucional
Projeto
do professor-autor
Disciplina: Algoritmos e Programao (carga horria: 75h).
Ementa: Conceitos. Variveis e constantes. Comandos de entrada e sada.
Estruturas condicionais. Estruturas de repetio. Procedimento e funo.
Ambiente de programao Lazarus. Estruturas condicionais. Estruturas de
repetio. Procedimentos e funes.

AULA

OBJETIVOS DE
APRENDIZAGEM

MATERIAIS

CARGA
HORRIA
(horas)

1. Conceitos

Conceituar algoritmo.
Conceituar lgica de programao.
Estudar outros conceitos de informtica.

Ambiente virtual:
plataforma Moodle.
Apostila didtica.
Recursos de apoio: links,
exerccios.

01

2. Variveis e
constantes

Conceituar e identificar variveis e


constantes.
Resolver pequenos exerccios de lgica.

Ambiente virtual:
plataforma Moodle.
Apostila didtica.
Recursos de apoio: links,
exerccios.

06

3. Comando de
entrada, sada
e estruturas
condicionais

Entender as primeiras estruturas de


controle para o desenvolvimento de
algoritmos.
Estudar as estruturas de entrada e sada
de dados.
Entender como funcionam as estruturas
condicionais.
Desenvolver os primeiros programas
de computador utilizando uma
pseudolinguagem.

Ambiente virtual:
plataforma Moodle.
Apostila didtica.
Recursos de apoio: links,
exerccios.

07

4. Estruturas de
repetio

Compreender as estruturas de repetio


enquanto ... faa, para ... faa e repita ...
at e suas diferenas.
Desenvolver algoritmos utilizando cada
uma das estruturas citadas.

Ambiente virtual:
plataforma Moodle.
Apostila didtica.
Recursos de apoio: links,
exerccios.

08

5. Procedimento

Conhecer estruturas modulares.


Aplicar novas maneiras para se
desenvolver algoritmos, atravs da
modularizao de programas utilizando
procedimento.

Ambiente virtual:
plataforma Moodle.
Apostila didtica.
Recursos de apoio: links,
exerccios.

08

6. Funo

Desenvolver algoritmos, atravs da


modularizao de programas utilizando
funo.
Conhecer as diferenas entre
procedimento e funo.

Ambiente virtual:
plataforma Moodle.
Apostila didtica.
Recursos de apoio: links,
exerccios.

07

13

e-Tec Brasil

AULA

e-Tec Brasil

OBJETIVOS DE
APRENDIZAGEM

MATERIAIS

CARGA
HORRIA
(horas)

7. Ambiente de
programao
Lazarus

Conceituar a ferramenta de
programao Lazarus/Free Pascal.
Conceituar os principais termos
associados aos objetos utilizados
num ambiente grfico.
Instalar e configurar o Lazarus.
Conhecer o ambiente de
desenvolvimento Lazarus (IDE).
Desenvolver as primeiras aplicaes
dentro do IDE Lazarus para o
compilador Free Pascal.

Ambiente virtual:
plataforma Moodle.
Apostila didtica.
Recursos de apoio: links,
exerccios.

08

8. Estruturas
condicionais

Conhecer as estruturas condicionais


para o compilador Free Pascal.
Aplicar essas estruturas condicionais
dentro do IDE do Lazarus.
Desenvolver programas de
computador na linguagem do
Lazarus/Free Pascal que se utilizam
dessas estruturas, para a soluo de
problemas que envolvam a tomada
de decises.

Ambiente virtual:
plataforma Moodle.
Apostila didtica.
Recursos de apoio: links,
exerccios.

08

9. Estruturas de
repetio

Entender como funcionam as


estruturas de repetio no ambiente
de programao visual (Lazarus).
Elaborar programas utilizando
estruturas de repetio.

Ambiente virtual:
plataforma Moodle.
Apostila didtica.
Recursos de apoio: links,
exerccios.

07

10.
Procedimentos

Desenvolver programas no IDE


do Lazarus utilizando estruturas
modulares, elaboradas pelo prprio
programador procedure.

Ambiente virtual:
plataforma Moodle.
Apostila didtica.
Recursos de apoio: links,
exerccios.

08

11. Funes

Desenvolver programas no IDE


do Lazarus utilizando estruturas
modulares, elaboradas pelo prprio
programador function.

Ambiente virtual:
plataforma Moodle.
Apostila didtica.
Recursos de apoio: links,
exerccios.

07

14

Aula 1 Conceitos
Objetivos
Conceituar algoritmo.
Conceituar lgica de programao.
Estudar outros conceitos de informtica.

1.1 O computador
Computador uma mquina que processa informaes de forma automtica, sob
o controle de grupos de instrues previamente definidas, com grande eficcia.

1.2 Algoritmo
1.2.1 Conceito

Um algoritmo nada mais que um texto contendo comandos (instrues)


que devem ser executados numa determinada ordem. Esse texto em si no
nos interessa, mas, sim, seu significado, ou seja, aquilo que ele representa
(GUIMARES; LAGES, 1994).

1.2.2 Definio
Algoritmo um conjunto de instrues, como uma receita de bolo, constitudo
de um nmero finito de passos.

1.3 Linguagem de programao


Para que os dados sejam processados, h a necessidade de se utilizar uma
linguagem de programao, pois os computadores no executam diretamente
os algoritmos. Eles precisam ser transformados para uma linguagem de programao que, posteriormente, sero traduzidos para uma linguagem de mquina.
Atravs desta linguagem, os dados e programas podem ser entendidos
pelocomputador.

Aula 1 - Conceitos

15

e-Tec Brasil

Uma das primeiras dessas linguagens de programao foi a Fortran, adequada


para problemas de natureza tcnica e cientfica. Na rea comercial, surgiu a
linguagem Cobol logo em seguida. Depois vieram outras linguagens como
Basic, Pascal, C, as linguagens visuais e outras.

1.4 Conceitos bsicos

Bit (binary digit) menor poro de informao entendvel pelo computador. So os zeros e uns.

Byte (binary term) conjunto de 8 bits. Memrias so medidas em bytes.


Cada caractere um byte. Ex.: A

Hardware componentes fsicos e eletrnicos do computador. a parte


fsica do computador. Ex.: O computador ou parte dele.

Software so programas de computador.

Compilador so programas capazes de transformar cdigos-fonte


em cdigos-objeto, ou seja, capazes de transformar programas escritos
em uma linguagem de programao mais acessvel ao homem (PASCAL,
DELPHI, etc.) em linguagem de mquina (a nica entendida pelo computador). Ex.: PASCAL compilador linguagem de mquina

Resumo
Nessa aula, voc teve o primeiro contato com alguns conceitos de informtica.
Dentre eles, o de algoritmo e linguagem de programao. O entendimento
desses conceitos ser muito bom para a sequncia do aprendizado.
Esperamos t-lo ajudado a compreender, atravs desses conceitos, um pouquinho daquilo que pretendemos ao longo desse curso.
Ento, vamos continuar?

e-Tec Brasil

16

Algoritmos e Programao

Atividades de aprendizagem
1. Defina algoritmo e linguagem de programao.
2. Conceitue:
a) Bit
b) Byte
c) Compilador

Aula 1 - Conceitos

17

e-Tec Brasil

Aula 2 Variveis e constantes


Objetivos
Conceituar e identificar variveis e constantes.
Resolver pequenos exerccios de lgica.

2.1 Uma pseudolinguagem


Conjunto de tcnicas e comandos construdos na lngua portuguesa com o
objetivo de facilitar a programao e o entendimento dos programas principalmente daqueles que ainda no dominam nenhuma linguagem de programao.
Algoritmos desenvolvidos numa pseudolinguagem no so executados diretamente pelo computador. Necessitam ser transcritos para uma linguagem
de programao (PASCAL, C++, por exemplo).

2.2 Elemento bsico de qualquer linguagem:


identificador (nome)
O objetivo desse elemento identificar, na memria, variveis e constantes.
formado por um ou mais caracteres, sendo que o primeiro deve, obrigatoriamente, ser uma letra e os caracteres seguintes, letras e/ou dgitos, sublinhado
(_), no sendo permitido o uso de smbolos especiais.
Identificadores vlidos: A, X, SOMA, B34Y1, C4, SOMA_A.
Identificadores invlidos: 2YC, ?AB, -AYB, 55CDE, SOMA-A.

2.3 Declarao e definio de variveis e constantes


2.3.1 Variveis

Nos algoritmos, cada varivel corresponde a uma posio na memria, cujo


contedo pode variar ao longo do tempo durante a execuo de um programa.

Aula 2 - Variveis e constantes

19

e-Tec Brasil

Embora uma varivel possa assumir diferentes valores, ela s pode armazenar um
nico valor a cada instante. Toda varivel identificada por um nome ou identificador.
As variveis s podem armazenar valores de um tipo, sendo quatro os tipos
bsicos, mostrados a seguir:

2.3.1.1 Tipos bsicos

Inteiro qualquer nmero inteiro positivo, negativo ou nulo. Ex.: 3, -3, 0.

Real qualquer nmero real positivo, negativo ou nulo. Ex.: 3.4, -3.4, 0.0.

Caractere qualquer conjunto de caracteres desde que entre aspas. Nos


algoritmos, no faremos distino quanto ao tipo das variveis que armazenam um ou mais caracteres. Ex.: ABC, sorriso, abacate, X.

Lgico conjunto de valores falso ou verdadeiro em proposies lgicas.


Ex.: tem, achou (contendo falso ou verdadeiro).

Observao
Quando declaramos uma varivel, significa dizer que criamos (definimos)
locais na memria do computador rotulados com os nomes das variveis
(identificadores).
Exemplo
Inteiro: X, SOMA, CONT
Real: MEDIA, A, B
Caractere: NOME
Lgico: TEM
Assim, X o nome de um local (endereo) de memria que pode conter
valores do tipo inteiro.

2.3.2 Constantes
Constante, como o prprio nome sugere, algo que no se modifica ao longo
do tempo de execuo de um programa. Uma constante pode ser: um valor
numrico, um valor lgico ou uma sequncia de caracteres quaisquer que
possua alguma relevncia para o problema em estudo. Conforme o seu tipo,
a constante classificada como sendo numrica, lgica ou caractere.

e-Tec Brasil

20

Algoritmos e Programao

2.3.2.1 Constante numrica


A representao de uma constante numrica nos algoritmos feita no sistemadecimal.
Exemplo
10, -8, 5.3, 2.02 102

2.3.2.2 Constante lgica


um valor lgico, isto , s pode conter valores do tipo falso ou verdadeiro.

2.3.2.3 Constante caractere


Uma constante caractere pode ser qualquer sequncia de caracteres. Toda
constante do tipo caractere que aparece no algoritmo ser colocada entre
aspas, para que no seja confundida com outro item qualquer.
Nos algoritmos definiremos como sendo do tipo caractere qualquer constante
que contenha um ou mais caracteres, desde que estejam entre aspas e no
sofram modificaes ao longo do algoritmo.
Exemplo
ABCD, RS, IFMG, X.

2.3.3 Exerccios resolvidos


1. Identificar o tipo de cada uma das constantes a seguir:
a) 12

numrica

b) AMOR

caractere

c) falso

caractere

d) 3,81 102

numrica

e) Verdadeiro

lgica

Talvez tenha surgido uma dvida na letra c. Veja, a palavra falso est entre
aspas. Portanto, independente do contedo, as aspas indicam ser um contedo
de constante caractere.

Aula 2 - Variveis e constantes

21

e-Tec Brasil

2. Marque com um X os identificadores vlidos:


a) ( X ) SOMA
b) (

) XY

c) (

) 3N

d) ( X ) N3
e) (

) pai de santo

Veja que nas letras a e d, os identificadores possuem apenas letras e nmero,


comeando sempre por letra. Portanto, so identificadores vlidos. Em relao
s letras b, c e e, alguns caracteres inviabilizam o uso destes identificadores
como as aspas ( ) na letra b, o nmero 3 iniciando o identificador na letra
c e os espaos vazios (em branco) na letra e.

2.4 Comentrio
um instrumento utilizado para facilitar o entendimento do algoritmo. um
texto, ou simplesmente uma frase, que aparece delimitado por chaves em
qualquer parte do programa. No interpretado pelo compilador.

2.5 Comandos bsicos

2.5.1 Comando de atribuio


Este comando permite que se fornea um valor a certa varivel, onde a
natureza deste valor tem que ser compatvel com o tipo de varivel na qual
est sendo armazenado.
O comando de atribuio tem a seguinte forma geral:
Identificador expresso
Onde: identificador o nome da varivel
expresso pode ser uma expresso aritmtica, lgica ou do tipo
caractere, de cuja avaliao obtido o valor a ser atribudo varivel

e-Tec Brasil

22

Algoritmos e Programao

Exemplo
NOTA 7,5
X 2
B X+1
NOME Ensino a distncia

2.5.2 Expresses aritmticas e operadores


As expresses aritmticas nos algoritmos so formadas com operadores e funes
cujos operandos so constantes e/ou variveis do tipo numrico (inteiro, real).
Exemplo
A B + 2 * C + ABS(B)
Onde: A varivel
B varivel
2 constante
C varivel
ABS( ) funo
+ operador de adio
* operador de multiplicao
sinal de atribuio
Os operadores aritmticos so: a adio (+), a subtrao (), a multiplicao
(*), a diviso (/), a potenciao (^) e a radiciao ().
A seguir so consideradas algumas funes utilizadas nos algoritmos.
Quadro 2.1: Funes
Nome

Resultado fornecido

log (A)

Logaritmo de A na base 10

ln (A)

Logaritmo neperiano de A

Exp (A)

O nmero e elevado a A

ABS (A)

O valor absoluto de A

Trunca (A)

A parte inteira de um nmero fracionrio

Arredonda (A)

Transforma por arredondamento um nmero fracionrio em inteiro

Quociente (A, B)

Quociente inteiro da diviso de A por B

Resto (A, B)

Resto da diviso inteira de A por B

Fonte: Guimares e Lages, 1994

Aula 2 - Variveis e constantes

23

e-Tec Brasil

2.5.3 Expresses lgicas e operadores


Nas expresses lgicas os operadores so lgicos ou relacionais.

2.5.3.1 Operadores lgicos


Os operadores lgicos considerados nos algoritmos so os conectivos de
conjuno, disjuno e negao.

Conjuno e

Disjuno ou

Negao no
Quadro 2.2: Operadores lgicos
E
V

OU
V

NO
No V

No F

Fonte: Autores

2.5.3.2 Operadores relacionais


Os operadores relacionais indicam a comparao a ser realizada entre os
termos da relao.
So eles:
> , < , >= , <= , < > (), =

2.5.3.3 Tabela de prioridades para operaes mistas


a) Parnteses e funes
b) Potenciao (^) e radiciao ()
c) Multiplicao (*) e diviso (/)

e-Tec Brasil

24

Algoritmos e Programao

d) Adio (+) e subtrao ()


e) Relacionais (> , < , >= , <= , < > (), =)
f) no
g) e
h) ou

2.5.4 Exerccios resolvidos


1. Supondo que as variveis X, Y, K sejam numricas e possuam os valores 3,
6.7 e 7, respectivamente, a varivel ENDER seja do tipo caractere e possua
o contedo Rua Alfa e a varivel Z seja do tipo lgico e possua o contedo falso, resolva as expresses a seguir obedecendo a tabela de prioridades
para operaes mistas. Indique se o resultado ser falso ou verdadeiro para
as alneas a e b. Para as demais, fornea o resultado numrico.
a) ENDER = Rua Alfa e Z
b) X + Y = 9 ou no Z
c) quociente (K, X), resto (K, X)
d) arredonda (Y X), trunca (Y X)
e) ABS (X K)
Soluo
a) Substituindo os valores das variveis na expresso:
Rua Alfa = Rua Alfa e falso
Veja, entre o operador relacional igual (=) e o lgico (e), resolve-se primeiro
o relacional. A expresso fica assim, ento:
Verdadeiro e falso
Agora temos dois operandos lgicos e um operador tambm lgico. Como
resposta, temos falso (veja Quadro 2.2).

Aula 2 - Variveis e constantes

25

e-Tec Brasil

b) Substituindo os valores das variveis na expresso:


3 + 6.7 = 9 ou no falso
Segundo a ordem de prioridades, resolvemos primeiro a soma:
9.7 = 9 ou no falso
Em seguida, o relacional =:
Falso ou no falso
Depois, a negao:
Falso ou verdadeiro
E, por ltimo, o tipo lgico ou:
Verdadeiro
c) Quociente (K , X)
Substituindo os valores das variveis na expresso:
Quociente (7, 3)
Faz-se a diviso inteira de 7 por 3 obtendo 2 como quociente.
Resto (K, X)
Substituindo os valores das variveis na expresso:
Resto (7, 3)
Faz-se a diviso inteira de 7 por 3 obtendo 1 como resto.
d) Arredonda (Y X)
Substituindo os valores das variveis na expresso:
Arredonda (6.7 3)

e-Tec Brasil

26

Algoritmos e Programao

Arredonda (3.7)
4
Portanto, a resposta 4 por arredondamento.
e) Trunca (Y X)
Substituindo os valores das variveis na expresso:
Trunca (6.7 3)
Trunca (3.7)
3
Portanto, a resposta 3. O nmero truncado na sua parte decimal.
f) ABS (X K)
Substituindo os valores das variveis na expresso:
ABS (3 7)
ABS (4)
4
O absoluto de um nmero ele prprio em mdulo, ou seja, sem sinal.

Resumo
Nessa etapa de grande importncia para o aprendizado de programao, voc
pde ver alguns conceitos muito importantes como identificador, varivel e
constante. Foram apresentados, tambm, alguns comandos bsicos como
o de atribuio de valores s variveis. Voc pde tomar conhecimento de
como resolver uma expresso aritmtica. Aprendeu a utilizar os conectivos e
(conjuno), ou (disjuno) e no (negao) numa expresso lgica e, ainda,
utilizar os operadores relacionais.
Ento, continue firme e vamos passar prxima aula estudando novos conceitos.

Aula 2 - Variveis e constantes

27

e-Tec Brasil

Atividades de aprendizagem
1. Identificar o tipo de cada uma das constantes a seguir:
a) Verdadeiro
b) 3.1416
c) falso
d) Maria
2. Marque com um X os identificadores vlidos:
(

) X

) X1Y

)N

) ?VB

) casa branca

3. Sendo as variveis A, B e C numricas e contendo os valores 3, 6 e 9,


respectivamente, a varivel caractere NOME, contendo JOAO e a varivel lgica TEM, contendo o valor lgico falso, responda informando se o
resultado da expresso ser verdadeiro ou falso:
a) A + B > C e NOME = JOAO
b) TEM ou B > = A
c) no TEM e quociente (C, B) + 1 = A
d) NOME = MARCOS e TEM ou A^2 < C + 10
4. Dadas as variveis A, B, X e Y do tipo numrico (inteiro, real) contendo
os valores 10, 3, 2.5 e 1.2, quais os resultados fornecidos em cada uma
das funes a seguir:

e-Tec Brasil

28

Algoritmos e Programao

a) quociente (A, B), resto (A, B)


b) arredonda (A X), arredonda (B + Y), arredonda (Y X)
c) trunca (B^2 + X), trunca (A/3 + 1), trunca (X 3.2)
d) ABS (A B^3), ABS (A 3)

Aula 2 - Variveis e constantes

29

e-Tec Brasil

Aula 3 Comandos de entrada e sada


e estruturas condicionais
Objetivos
Entender as primeiras estruturas de controle para o desenvolvimento de algoritmos.
Estudar as estruturas de entrada e sada de dados.
Entender como funcionam as estruturas condicionais.
Desenvolver os primeiros programas de computador utilizando
uma pseudolinguagem.

3.1 Comandos de entrada e sada


Apresentaremos, a seguir, o comando para entrada de dados no algoritmo.
Tambm, o comando para impresso de dados ou resultados dos algoritmos.
Podemos imprimir na tela do computador ou na impressora.
Entrada de dados (leia)
Entrar com um dado nesse momento significa digitar alguma informao
no teclado. Esse dado ser armazenado em um local na memria. Isto ser
efetuado por um comando escrito no algoritmo.

O comando utilizado para se entrar com dados o leia. Portanto, sempre


que se quiser entrar com uma informao, um dado no algoritmo, utiliza-se
a seguinte sintaxe:
Sintaxe
leia (identificador(es))
Exemplo
leia (NOTA)

Neste exemplo anterior, o algoritmo espera que se digite uma nota. Assim
que for digitada, ela ser armazenada na varivel cujo identificador NOTA.

Aula 3 - Comandos de entrada e sada e estruturas condicionais

31

e-Tec Brasil

Sada de dados (no vdeo ou na impressora)


A sada de dados feita para que se possa visualizar o resultado do algoritmo.
Deve-se imprimir na tela do computador ou na impressora o que foi solicitado
pelo algoritmo. O comando utilizado no algoritmo para se fazer isto, o
escreva ou imprima. A sintaxe desse comando a seguinte:

Sintaxe
escreva (identificador(es))

Exemplo
escreva (MEDIA)

ou
escreva (A mdia : , MEDIA)

No exemplo anterior, o valor armazenado na varivel MEDIA ser mostrado


no vdeo ou na impressora. Pode-se imprimir (escrever) apenas o contedo da
varivel MEDIA ou, ento, esse contedo acompanhado de um texto escrito
entre aspas.

3.1.1 Exerccios resolvidos


1. Fazer um algoritmo para imprimir dois nomes que devero ser lidos atravs de uma unidade de entrada de dados qualquer.
Soluo
incio
caractere: NOME1, NOME2
escreva (Digite um nome: )
leia (NOME1)
escreva (Digite outro nome: )
leia (NOME2)
escreva (NOME1, NOME2)

fim

Explicando
Todo algoritmo comea com a palavra incio e termina com a palavra fim.
Em seguida palavra incio, faz-se a declarao das variveis do programa,
ou seja, do algoritmo. Neste exemplo, temos duas variveis do tipo caractere,
pois iro armazenar na memria do computador dois nomes. Declarando as
variveis, o computador reconhece a existncia de tais variveis e elas podem
ser utilizadas em todo o programa a partir desse momento. Sendo assim,

e-Tec Brasil

32

Algoritmos e Programao

pode-se entrar com os dados, isto , as informaes para NOME1 e NOME2. O


comando utilizado para isto o leia. Mas, seria interessante que aparecesse
uma mensagem na tela antes de entrar com cada informao para que o
usurio deste programa possa ter certeza de qual informao, qual dado
ele dever digitar. Para isto, utiliza-se o comando de sada escreva j que
esse texto dever ser impresso na tela do computador. Em seguida, faz-se a
leitura da varivel, ou seja, digitam-se os nomes desejados, um de cada vez,
pressionando enter assim que digitar cada um deles. Por fim, atravs do
comando escreva, so mostrados na tela os nomes digitados.
2. Fazer um algoritmo para calcular e imprimir a mdia aritmtica das notas
de um grupo de trs alunos. As notas devero ser lidas, uma para cada aluno, atravs de uma unidade de entrada qualquer, por exemplo, o teclado.
Soluo
incio
real: NOTA1, NOTA2, NOTA3, MEDIA
escreva (Digite uma nota: )
leia (NOTA1)
escreva (Digite a segunda nota: )
leia (NOTA2)
escreva (Digita a terceira nota: )
leia (NOTA3)
MEDIA (NOTA1 + NOTA2 + NOTA3) / 3
escreva (MDIA= , MEDIA)
fim

Explicando
Veja que neste exerccio tivemos que criar trs variveis para receber as notas e
outra para fazer o clculo da mdia. Todas so do mesmo tipo, real, porque so
nmeros fracionrios. Seguindo o critrio adotado no exerccio anterior, fizemos
a leitura dos dados. Em seguida, efetuamos o clculo solicitado e a impresso
do mesmo. Para facilitar ainda mais o entendimento, vamos fazer a simulao
completa do exerccio anterior, tambm conhecida como teste de mesa,
chins ou simulao. Como exemplo, vamos supor os seguintes valores
para as notas que devero ser lidas: NOTA1 = 5.0, NOTA2=8.5,NOTA3= 7.5.

Aula 3 - Comandos de entrada e sada e estruturas condicionais

33

e-Tec Brasil

Simulao
NOTA1
5.0

NOTA2
8.5

NOTA3
7.5

MEDIA
7.0

Valor escrito (impresso): MDIA = 7.0

3.2 Estruturas de controle e fluxogramas


3.2.1 Estrutura sequencial

Essa estrutura mostra uma sequncia de comandos, um por linha, como nos
dois exemplos vistos anteriormente (item 3.1.1).

Figura 3.1: Fluxogramas NS e tradicional estrutura sequencial


Fonte: Guimares e Lages, 1994

Os algoritmos podem ser expressos em forma de fluxogramas tambm. Existem


alguns tipos de fluxogramas e, de forma rpida, iremos mostrar dois tipos:
o NS (Nassi-Shneiderman) e o tradicional. So utilizados principalmente para
documentao de programas ou sistemas, porm, hoje em dia, so pouco
utilizados devido s novas ferramentas existentes para esse fim. Vamos ver
como ficaria o primeiro exerccio do item 3.1.1 utilizando-se fluxogramas.

e-Tec Brasil

34

Algoritmos e Programao

Figura 3.2 Estrutura sequencial


Fonte: Autores

3.2.2 Alternativa simples


A estrutura condicional permite a escolha do grupo de aes e estruturas a
ser executado quando determinadas condies representadas por expresses
lgicas so ou no satisfeitas (MANZANO; OLIVEIRA, 2005).
A estrutura alternativa simples nos permite executar aes apenas se a(s)
condio(es) for(em) verdadeira(s). Caso seja(m) falsa(s), no se executa
essa estrutura.

Figura 3.3: Alternativa simples


Fonte: Guimares e Lages, 1994

Aula 3 - Comandos de entrada e sada e estruturas condicionais

35

e-Tec Brasil

Exemplo de um trecho de algoritmo:

Figura 3.4: Alternativa simples


Fonte: Guimares e Lages, 1994

3.2.2.1 Exerccios resolvidos


1. Fazer um algoritmo que leia 2 nmeros inteiros A e B. Imprimir uma mensagem informando que A maior que B.
Soluo
incio
inteiro: A, B
escreva (Digite um nmero inteiro: )
leia (A)
escreva (Digite outro nmero inteiro: )
leia (B)
se A > B
ento escreva (A maior que B)
fim se
fim

e-Tec Brasil

36

Algoritmos e Programao

Explicando
Inicialmente, declaramos as variveis A e B do tipo inteiro, como foi dito no
enunciado. Em seguida, fizemos a leitura dos dados. Posteriormente, utilizamos a estrutura condicional simples para verificar se o valor armazenado
na varivel A maior do que o armazenado na varivel B. Portanto, s ser
impresso a mensagem A maior que B se a condio for verdadeira, ou
seja, se A for maior que B.
2. Ler o sexo de uma pessoa (M, F) e imprimir a mensagem homem
caso seja do sexo masculino.
Soluo
incio
caractere: SEXO
escreva (Digite o sexo (M=masculino, F=feminino): )
leia (SEXO)
se SEXO = M
ento escreva ( homem)
fim se
fim

3. Ler a altura em centmetros de uma garota e imprimir uma mensagem


caso esteja acima de 1,80 m.
Soluo
incio
real: ALTURA
escreva (Digite a altura da garota em centmetros: )
leia (ALTURA)
ALTURA ALTURA / 100 {para transformar a altura para metros}
se ALTURA > 1.80
ento escreva (Essa garota muito alta)
fim se
fim

4. Fazer um algoritmo que leia o raio de um crculo, determine e imprima


a rea correspondente. Imprimir a mensagem rea pequena se for
menor que 5 cm2. Dado: A = R.

Aula 3 - Comandos de entrada e sada e estruturas condicionais

37

e-Tec Brasil

Soluo
incio
real: AREA, RAIO
escreva (Digite o raio do crculo em centmetros: )
leia (RAIO)
AREA 3.1416 * (RAIO * RAIO) { = 3.1416, aproximado}
escreva (rea = , AREA)
se AREA < 5
ento escreva (rea pequena)
fim se
fim

3.2.3 Alternativa composta


A estrutura alternativa composta nos permite executar aes caso a condio
seja verdadeira ou no.
Se a condio for verdadeira, executam-se os comandos que esto depois da
palavra ento. Caso a condio seja falsa, executam-se os comandos que
esto depois da palavra seno.

Figura 3.5: Alternativa composta


Fonte: Guimares e Lages, 1994

e-Tec Brasil

38

Algoritmos e Programao

Exemplo de um trecho de algoritmo:

Figura 3.6: Alternativa composta


Fonte: Guimares e Lages, 1994

3.2.3.1 Exerccios resolvidos


1. Fazer um algoritmo que leia 2 nmeros inteiros A e B. Imprimir uma mensagem informando qual dos dois o maior. Suponha que so nmeros
diferentes.
Soluo
incio
inteiro: A, B
escreva (Digite um nmero inteiro: )
leia (A)
escreva (Digite outro nmero inteiro: )
leia (B)
se A > B
ento escreva (A maior que B)
seno escreva (B maior que A)
fim se
fim

Aula 3 - Comandos de entrada e sada e estruturas condicionais

39

e-Tec Brasil

Explicando
Inicialmente, declaramos as variveis A e B do tipo inteiro, como foi dito no
enunciado. Em seguida, fizemos a leitura dos dados. Posteriormente, utilizamos
a estrutura condicional composta para verificar se o valor armazenado na
varivel A maior do que o armazenado na varivel B ou se o valor armazenado na varivel B maior do que o armazenado na varivel A. Portanto, s
ser impressa a mensagem A maior que B se a condio for verdadeira,
ou seja, se A for maior que B. Caso contrrio, isto , se a condio for falsa,
ser impresso a mensagem B maior que A.
2. Fazer um algoritmo que leia 2 nmeros inteiros A e B. Imprimir uma mensagem informando qual dos dois o maior ou se so iguais.
Soluo
incio
inteiro: A, B
escreva (Digite um nmero inteiro: )
leia (A)
escreva (Digite outro nmero inteiro: )
leia (B)
se A > B
ento escreva (A maior que B)
seno se B > A
ento escreva (B maior que A)
seno escreva (Iguais)
fim se
fim se
fim

Explicando
Declaramos as variveis A e B do tipo inteiro. Em seguida, fizemos a leitura dos
dados. Posteriormente, utilizamos a estrutura condicional composta encadeada
para verificar se o valor armazenado na varivel A maior do que o armazenado na varivel B ou se o valor armazenado na varivel B maior do que o
armazenado na varivel A ou se so iguais. Portanto, sempre que se tiver mais
de duas opes para serem testadas, pode-se utilizar a estrutura encadeada
que nada mais que um se dentro de outro se. No exemplo anterior, o
encadeamento foi feito aps o comando seno, mas, se necessrio, pode
ser feito tambm aps o ento.

e-Tec Brasil

40

Algoritmos e Programao

3. Ler o sexo de uma pessoa (M, F) e imprimir uma mensagem informando


se homem ou se mulher .
Soluo
incio
caractere: SEXO
escreva (Digite o sexo (M=masculino, F=feminino): )
leia (SEXO)
se SEXO = M
ento escreva ( homem)
seno escreva ( mulher)
fim se
fim

4. Elaborar um algoritmo que leia o sexo e a altura de uma pessoa e imprima o peso ideal. (GUIMARES; LAGES, 1994).
Dados: Peso ideal para o sexo masculino: altura (cm) * 0.95 95
Peso ideal para o sexo feminino: altura (cm) * 0.85 85
Soluo
incio
real: ALTURA, PESO
caractere: SEXO
escreva (Digite a altura (cm): )
leia (ALTURA)
escreva (Digite o sexo (M, F): )
leia (SEXO)
se SEXO = M
ento PESO ALTURA * 0.95 - 95
seno PESO ALTURA * 0.85 - 85
fim se
escreva (Peso Ideal: , PESO)
fim

Aula 3 - Comandos de entrada e sada e estruturas condicionais

41

e-Tec Brasil

Resumo
Vimos nessa aula, como se faz para entrar com uma informao atravs
de uma unidade de entrada qualquer (teclado, por exemplo). Utilizamos o
comando leia para isso. Vimos tambm, como se retira uma informao, um
resultado, do algoritmo proposto atravs do comando escreva. Tambm foram
abordadas, atravs das estruturas condicionais, maneiras de se trabalhar com
a informao dependendo do valor (verdadeiro ou falso) de uma condio.
Voc pde perceber que muito parecido com a forma como a gente fala,
conversa, no dia-a-dia.
Nesse momento, caso necessrio, refaa a leitura das aulas anteriores bem
como refaa todos os exerccios propostos at ento. Se necessrio, procure
por outras bibliografias, mdias, etc.
Veja que estamos avanando e estudaremos, a seguir, como fazer para tratar
de uma grande variedade de dados num algoritmo. Vamos l, ento?

Atividades de aprendizagem
1. Elaborar um algoritmo que leia 3 nmeros inteiros. Calcule e imprima a
soma desses nmeros.
2. Fazer um algoritmo que calcule e imprima a mdia de 4 nmeros inteiros
que devero ser lidos atravs de uma unidade de entrada qualquer.
3. Fazer um algoritmo que leia os lados (A, B, C) do paraleleppedo, determine e imprima o volume (V) e a rea superficial (S) e, imprima uma
mensagem informando se o volume superior a 20 cm3.
Dados: V = A * B * C
S = 2 * (A * B + A * C + B * C)
4. Executando-se o algoritmo a seguir, que valores sero escritos:
incio
inteiro: A, C, I
real: B, J, K
A 32
C 2
I 5
B A ^ (1/5) {a elevado a um quinto ou raiz quinta de a}

e-Tec Brasil

42

Algoritmos e Programao

J C * 3/4
se (B > J)
ento K A + I / A - I
fim se
escreva (B, J, K)
fim

5. Sendo dadas 2 variveis (A e B) do tipo caractere, verificar se as mesmas


possuem os contedos AGUA e TERRA, respectivamente. Se isto
ocorrer, imprimir a mensagem TUDO OK.
6. O que est errado no algoritmo a seguir?
incio
inteiro: N, PAR, X
leia (N)
X resto (N, 2)
se (X = 0)
ento PAR verdadeiro
seno PAR falso
fim se
fim

7. O que ser impresso depois de executado o algoritmo se NUM = -3.


incio
caractere: VALOR
inteiro: NUM
leia (NUM)
se (NUM > 0)
ento VALOR nmero positivo
seno se (NUM < 0)
ento VALOR nmero negativo
seno VALOR zero
fim se
fim se
escreva (VALOR)
fim

8. Sendo dadas 2 variveis (A e B) do tipo caractere, verificar se as mesmas


possuem os contedos gua e terra, respectivamente. Se isto ocorrer, imprimir a mensagem tudo ok, caso contrrio, imprimir a mensagem problemas.

Aula 3 - Comandos de entrada e sada e estruturas condicionais

43

e-Tec Brasil

9. Implementar um algoritmo que leia uma letra. Se a letra for uma vogal,
imprimir a mensagem vogal, caso contrrio, imprimir a mensagem
consoante.
10. Elaborar um algoritmo que leia dois valores numricos diferentes e apresente a diferena do maior pelo menor.

e-Tec Brasil

44

Algoritmos e Programao

Aula 4 Estruturas de repetio


Objetivos
Compreender as estruturas de repetio enquanto ... faa, para ...
faa e repita ... at e suas diferenas.
Desenvolver algoritmos utilizando cada uma das estruturas citadas.

4.1 Estrutura de repetio (enquanto ... faa)


A estrutura de repetio enquanto ... faa permite que uma sequncia
de comandos seja executada repetidamente enquanto uma determinada
condio for verdadeira.

Figura 4.1: Estrutura de repetio


Fonte: Guimares e Lages, 1994

Aula 4 - Estruturas de repetio

45

e-Tec Brasil

Exemplo de um trecho de algoritmo:

Figura 4.2: Estrutura de repetio


Fonte: Guimares e Lages, 1994

4.1.1 Exerccios resolvidos


1. Indique os valores impressos pelo algoritmo a seguir.
Soluo
incio
inteiro: I, S
S 0
I 1
enquanto I <= 10 faa
S S + I
I I + 1
escreva (I)
fim enquanto
escreva (S)
fim

Explicando
Primeiramente so declaradas as variveis I e S que sero utilizadas no algoritmo. Em seguida, inicializamos as variveis S e I com os valores zero e um,
respectivamente. Pretendemos fazer o comando de repetio (lao de repetio)

e-Tec Brasil

46

Algoritmos e Programao

executar dez vezes as instrues internas a ele. Por isso, ele dever variar de
1 a 10. No final, quando a condio I <= 10 no for mais satisfeita, ou seja,
quando a varivel I atingir o valor 11, abandona-se o comando de repetio
e passa-se para a prxima instruo (escreva (S)).
Como podemos perceber, este programa no imprime o primeiro contedo
da varivel I, ou seja, o nmero 1. Isso acontece porque esta varivel incrementada antes do comando escreva (I), dentro do comando enquanto
... faa. Sendo assim, o primeiro valor da varivel I impresso 2. Portanto,
a cada repetio ser somado varivel S o contedo anterior desta varivel
com o valor atual da varivel I, isto , aps as dez repeties, teremos a soma
dos nmeros inteiros de 1 a 10.
Na varivel I acrescentado o valor 1 (um) a cada repetio e impresso este
valor. Esta varivel, cujo valor inicial 1 (um) variar de 1 a 10 dentro do
comando de repetio e, quando atingir o valor 11 este valor ser impresso,
pois o comando escreva (I) encontra-se depois de se incrementar o valor
de I e a condio I <= 10 se tornar falsa fazendo com que o comando seja
abandonado.
Por ltimo, ser impresso o valor armazenado na varivel S.
2. Construir um algoritmo para calcular a mdia de um conjunto de 100
valores inteiros fornecidos em uma unidade de entrada qualquer (GUIMARES; LAGES, 1994).
Soluo
incio
inteiro: NUM, I, SOMA
real: MEDIA
I 1
SOMA 0
enquanto I <= 100 faa
escreva (Digite um nmero )
leia (NUM)
SOMA SOMA + NUM
I I + 1
fim enquanto
MEDIA SOMA / 100
escreva (Mdia = , MEDIA)
fim

Aula 4 - Estruturas de repetio

47

e-Tec Brasil

Explicando
Observe que necessrio declarar todas as variveis que sero utilizadas
no algoritmo. Em seguida faz-se a inicializao dessas variveis. A partir
da, trabalha-se o lao de repetio. quase sempre assim. Neste exerccio,
temos de somar todos os nmeros. Por isso, essa etapa feita dentro do
comando de repetio. Ento temos que ler o nmero, som-lo com o que
se tinha, ou seja, com aquele valor que estava armazenado na varivel SOMA
e incrementar o contador I somando mais 1 (um). Este contador serve para
contarmos quantos nmeros sero lidos. Quando atingir 101, a condio se
tornar falsa e o comando de repetio ser abandonado. Saindo do lao de
repetio, calcula-se a mdia aritmtica e a imprime em seguida.
3. Fazer um algoritmo que calcule e escreva o valor de S.
S = 1/1 + 3/2 + 5/3 + 7/4 + ... + 99/50 (50 termos)
Soluo
incio
inteiro: NUM, I
real: S
I 1
NUM 1
S 0
enquanto I <= 50 faa
S S + NUM / I
NUM NUM + 2
I I + 1
fim enquanto
escreva (Soma = , S)
fim

Explicando
Neste exerccio temos de somar fraes. Veja que h uma lgica entre elas. O
numerador incrementado de 2 e o denominador de 1. Temos 50 fraes e
no temos que ler nada neste exerccio. A cada iterao alteramos os valores
das variveis NUM (numerador) e I (contador de termos e denominador). Ao
final, imprimimos o valor da soma (S).
4. O departamento de Educao Fsica deseja informatizar este setor e colocou disposio os seguintes dados de 40 alunos:

e-Tec Brasil

48

Algoritmos e Programao

Matrcula, sexo (M, F), altura (cm) e status fsico (1 bom, 2 regular, 3 ruim)
Estes dados devero ser lidos atravs de uma unidade de entrada qualquer.
Calcular e imprimir:
a) A quantidade de alunos do sexo feminino com altura superior a 170 cm.
b) A % de alunos do sexo masculino (em relao ao total de alunos do sexo
masculino) cujo status fsico seja bom.
Soluo
incio
inteiro: ALTURA, STATUS, CONTF170, CONTH, CONTHB, I
caractere: SEXO, MATRCULA
real: P
CONTF170 0; CONTH 0; CONTHB 0; I 1
enquanto I < = 40 faa
escreva (Digite a matrcula neste formato (999.999-99): )
leia (MATRCULA)
escreva (Digite a altura (cm): )
leia (ALTURA)
escreva (Digite o status fsico (1bom, 2regular, 3ruim): )
leia (STATUS)
escreva (Digite o sexo (M, F): )
leia (SEXO)
se (SEXO = F) e (ALTURA > 170)
ento CONTF170 CONTF170 + 1
fim se
se SEXO = M
ento CONTH CONTH + 1
fim se
se (SEXO = M) e (STATUS = 1)
ento CONTHB CONTHB + 1
fim se
I I + 1
fim enquanto
P (CONTHB / CONTH) * 100
escreva (Quantidade de alunos do sexo feminino com altura
superior a 170 cm: , CONTF170)

Aula 4 - Estruturas de repetio

49

e-Tec Brasil

escreva (Porcentagem de alunos do sexo masculino com


status fsico bom: , P)
fim

5. Construir um algoritmo para calcular a mdia de um conjunto de valores


inteiros fornecidos em uma unidade de entrada qualquer.
Soluo
incio
inteiro: NUM, SOMA, CONT
real: MEDIA
caractere: OP
SOMA 0; CONT 0; OP S
enquanto OP = S faa
escreva (Digite um nmero )
leia (NUM)
SOMA SOMA + NUM
CONT CONT + 1
escreva (Deseja continuar? (S/N): )
leia (OP)
fim enquanto
MEDIA SOMA / CONT
escreva (Mdia = , MEDIA)
fim

Explicando
Neste exerccio, no sabemos quantos elementos existem. Introduzimos,
ento, o conceito de flag. Flag um artifcio, uma forma de se interromper o
comando de repetio. Por isso, criamos uma varivel (OP) do tipo caractere
(OP lembra opo) inicializada com o valor S. A cada lao de repetio,
perguntamos ao usurio se ele quer continuar entrando com dados (qual a
sua opo?), ou seja, digitando novas informaes. Se sim, digita-se S,
caso contrrio, digita-se N. Portanto, a condio ser em funo desta
varivel (OP). Digitando S o lao continua. Digitando N encerra-se o
lao de repetio e passa-se para a prxima instruo depois do fim do lao.
Como no sabemos quantos dados existem, temos de criar uma varivel
contadora (CONT, por exemplo) para que possamos calcular a mdia. Saindo
do lao de repetio, calcula-se a mdia aritmtica e a imprime em seguida.

e-Tec Brasil

50

Algoritmos e Programao

4.2 Estrutura de repetio (para ... faa)


Sintaxe
para i de a at b faa
<comando 1>
<comando 2>
<comando 3>
<comando n>
fim para

A semntica do comando a seguinte: i uma varivel de controle (ser


inicializada e incrementada pelo prprio para ... faa) e no deve ser
modificada nos comandos <comando 1>, <comando 2>, ..., <comando n>; a
e b podem ser constantes ou variveis e tambm no devem ser modificadas
nos comandos <comando 1>, <comando 2>, ..., <comando n>.
O comando para ... faa , na verdade, o comando enquanto utilizando
uma varivel de controle, escrito numa notao compacta. Neste caso, existir
sempre uma inicializao da varivel de controle, um teste para verificar se a
varivel atingiu o limite e um acrscimo na varivel de controle.
Portanto, esta estrutura de repetio no pode ser aplicada em algoritmos
que no informem quantos dados devero ser utilizados. Neste caso, utiliza-se
a estrutura enquanto ... faa ou a estrutura repita ... at que
ser mostrada mais adiante.
No exemplo a seguir calculado o quadrado do contedo armazenado na
varivel I e o resultado atribudo varivel X. Em seguida, imprime-se
o valor contido na varivel X. Isso ser feito 5 vezes com o I variando
de 1 a 5.
Exemplo
para I de 1 at 5 faa
X I ^ 2
escreva (X)
fim para

Observao
Neste exemplo a varivel (I) inicializada pelo para ... faa com o valor
1 (um) e toda vez que o fim para encontrado, a varivel de controle (I)
incrementada de 1 (um) automaticamente e o teste feito.

Aula 4 - Estruturas de repetio

51

e-Tec Brasil

4.2.1 Exerccios resolvidos


1. Elaborar um algoritmo que leia 40 notas e calcule a mdia aritmtica das
mesmas.
Soluo
incio
inteiro: I
real: SOMA, NOTA, MEDIA
SOMA 0
para I de 1 at 40 faa
escreva (Digite uma nota: )
leia (NOTA)
SOMA SOMA + NOTA
fim para
MEDIA SOMA / 40
escreva (Mdia da turma: , MEDIA)

fim

Explicando
Neste exerccio, temos de somar as notas para depois calcularmos a mdia.
Ento temos que ler a nota, som-la com o que se tinha, ou seja, com aquele
valor que estava armazenado na varivel SOMA. Veja que no necessrio
inicializar a varivel de controle I. Isso feito automaticamente. No devemos
incrementar a varivel de controle dentro do lao de repetio, pois isso
tambm automtico, ou seja, essa varivel (I) ser incrementada de 1 (um)
automaticamente. Saindo do lao de repetio, calcula-se a mdia aritmtica
e a imprime em seguida.
2. Fazer um algoritmo que calcule e escreva o valor de S.
S = 1 / 1 + 2 / 2 + 4 / 3 + 8 / 4 + ... (100 termos)
Soluo
incio
inteiro: NUM, I
real: S
NUM 1
S 0
para I de 1 at 100 faa
S S + NUM / I
NUM NUM * 2

e-Tec Brasil

52

Algoritmos e Programao

fim para
escreva (Soma = , S)
fim

Explicando
Neste exerccio temos de somar fraes. O numerador multiplicado por 2
e o denominador incrementado de 1. So 100 fraes e no temos que
ler nada neste exerccio. A cada iterao alteramos o valor da varivel NUM
(numerador). Como a varivel de controle I varia de 1 a 100, assim como o
denominador da expresso proposta, utilizamos esta varivel (I) como denominador. A varivel I incrementada automaticamente pelo comando para
... faa. Ao final, imprimimos o valor da soma (S).

4.3 Estrutura de repetio (repita ... at)


Essa estrutura nos permite fazer o teste da condio no final do comando repita.
Sintaxe
repita
<sequncia de comandos>

at <condio>

Para sair do comando de repetio, a condio tem de se tornar verdadeira,


ou seja, os comandos pertencentes estrutura de repetio repita ...
at sero executados at que a condio se torne verdadeira.
Exemplo de um trecho de algoritmo:
I 1
repita
escreva (I = , I)
I I + 1
at I > 3

Portanto, as diferenas em relao s duas estruturas vistas anteriormente so:

Os comandos sero executados pelo menos uma vez.

O teste feito no final da estrutura.

Os comandos sero executados at que a condio se torne verdadeira.

Aula 4 - Estruturas de repetio

53

e-Tec Brasil

4.3.1.1 Exerccios resolvidos


1. Construir um algoritmo para calcular a mdia de um conjunto de 100 valores inteiros fornecidos em uma unidade de entrada qualquer utilizando
o comando repita ... at.
Soluo
incio
inteiro: NUM, I, SOMA
real: MEDIA
I 1
SOMA 0
repita
escreva (Digite um nmero )
leia (NUM)
SOMA SOMA + NUM
I I + 1
at I > 100
MEDIA SOMA / 100
escreva (Mdia = , MEDIA)
fim

Explicando
Veja como se escreve a estrutura de repetio. Os comandos internos estrutura so os mesmos do comando enquanto ... faa. A mudana est
na condio que, no comando repita, escrita e analisada no final. E, por
causa disso, os comandos que ficam no lao de repetio so executados
pelo menos uma vez, diferentemente das outras duas estruturas de repetio
vistas anteriormente. Neste exerccio, temos de somar todos os nmeros. Por
isso essa etapa feita dentro do comando de repetio. Ento temos que
ler o nmero, som-lo com o que se tinha, ou seja, com aquele valor que
estava armazenado na varivel SOMA e incrementar o contador I somando
mais 1 (um). Este contador serve para contarmos quantos nmeros sero
lidos. Quando atingir 101, a condio se tornar verdadeira e o comando de
repetio ser abandonado. Saindo do lao de repetio, calcula-se a mdia
aritmtica e a imprime em seguida.
2. Utilizando o comando repita ... at, fazer um algoritmo para calcular e imprimir a seguinte soma.
S = (37 * 38) / 1 + (36 * 37) / 2 + (35 * 36) / 3 + ... + (1 * 2) / 37

e-Tec Brasil

54

Algoritmos e Programao

Soluo
incio
inteiro: NUM1, NUM2, I
real: S
I 1
NUM1 37
NUM2 38
S 0
repita
S S + (NUM1 * NUM2) / I
NUM1 NUM1 - 1
NUM2 NUM2 - 1
I I + 1
at I > 37
escreva (Soma = , S)

fim

3. Fazer um algoritmo que leia comprimento e largura de vrios terrenos


retangulares. Calcular e imprimir a rea de cada um. Utilize o comando
de repetio repita ... at
Soluo
incio
real: COMP, LARG, AREA
caractere: OP
repita
escreva (Digite o comprimento do terreno: )
leia (COMP)
escreva (Digite a largura: )
leia (LARG)
AREA COMP * LARG
escreva (rea = , AREA)
escreva (Deseja continuar?(s/n): )
leia (OP)
at OP = N
fim

Aula 4 - Estruturas de repetio

55

e-Tec Brasil

Resumo
Vimos nessa aula o conceito de estrutura de repetio. Aprendemos como se
faz para repetir uma determinada tarefa vrias vezes. Apresentamos exemplos,
exerccios resolvidos e sugerimos alguns outros. Se achar necessrio, leia este
captulo novamente. Refaa os exerccios.
Essa estrutura (repetio) muito importante para a elaborao de algoritmos,
pois podemos executar um determinado conjunto de comandos mais de uma
vez sem repetir as linhas de cdigos.

Atividades de aprendizagem
1. Fazer um algoritmo, utilizando o comando enquanto ... faa, que:
Leia um conjunto de 150 fichas contendo cada uma, a idade de um indivduo e calcule e escreva a idade mdia deste grupo de indivduos.
2. Fazer um algoritmo, utilizando o comando enquanto ... faa, que
calcule e escreva a seguinte soma:
S = 21 / 50 + 22 / 49 + 23 / 48 + ... + 70 / 1.
3. Fazer um algoritmo, utilizando o comando enquanto ... faa, que leia
os seguintes dados referentes a cada um dos vrios habitantes de uma
determinada cidade, para serem analisados:

Sexo (M ou F).

Cor dos cabelos (1 = pretos, 2 = loiros, 3 = castanhos, 4 = outra cor).

Cor dos olhos (1 = castanhos, 2 = pretos, 3 = verdes, 4 = outra cor).

Idade (em anos).

Calcule e escreva:
a) A quantidade de pessoas do sexo feminino com idade acima de 60 anos.
b) A porcentagem de indivduos cuja idade est entre 18 e 35 anos (inclusive) e que tenha olhos verdes e cabelos loiros.

e-Tec Brasil

56

Algoritmos e Programao

4. Sendo H = 1 + 1/2 + 1/3 + 1/4 + ... + 1/N, fazer um algoritmo, utilizando


o comando para ... faa, para gerar o nmero H. O nmero N lido
atravs de uma unidade de entrada qualquer uma nica vez.
5. Fazer um algoritmo, utilizando o comando para ... faa, que calcule
e escreva a soma dos 50 primeiros termos da seguinte srie :
S = 1000 / 1 - 997 / 2 + 994 / 3 - 991 / 4 + ...
6. Fazer um algoritmo, utilizando o comando para ... faa, que leia o
sexo (M, F) e a resposta das pessoas (sim ou no) sobre uma pesquisa que
tratava da opinio sobre um cosmtico lanado no mercado. Sabendo-se
que foram entrevistadas 2000 pessoas, calcule e imprima:
a) O nmero de pessoas que responderam sim.
b) O nmero de pessoas que responderam no.
c) A porcentagem de mulheres que responderam sim (em relao ao total
de mulheres).
d) A porcentagem de homens que responderam no (em relao ao total de
homens).
7. O sistema de avaliao da disciplina Introduo Internet obedece aos
seguintes critrios:

Durante o semestre so dadas trs notas.

A nota final obtida pela mdia aritmtica das notas dadas durante o curso.

Para ser aprovado, o aluno tem que obter a nota final superior ou igual a
6,0 e ter comparecido a um mnimo de 80% das aulas. Considere aulas
dadas = 100.

Fazer um algoritmo, utilizando o comando para ... faa, que:


a) Leia um conjunto de dados contendo o nmero de matrcula, as trs notas e a frequncia (nmeros de aulas frequentadas) de 100 alunos.

Aula 4 - Estruturas de repetio

57

e-Tec Brasil

b) Calcule e imprima a nota final de cada aluno (mdia do aluno).


c) Calcule e imprima a nota mdia da turma (mdia da turma).
d) Calcule e imprima o total de alunos reprovados.
e) Imprima para cada aluno o nmero de matrcula, a frequncia, a nota
final e o cdigo (aprovado ou reprovado).
8. Fazer um algoritmo que leia os lados (A, B, C) de 30 paraleleppedos.
Calcule e imprima:
a) O volume (V) e a rea superficial (S) de cada paraleleppedo.
Dados: V = A B C; S = 2 (A B + A C + B C)
b) A mdia das reas.
9. Fazer a simulao completa do algoritmo a seguir:
incio
inteiro: A, C, D, E
real: X
A 1
C 4
E 1
D C / 2 - E
X 0
enquanto A <= 3 faa
X X + (A + D) / 2
D D * 2
A A + 1
fim enquanto
C C * 2
escreva (D = , D)
escreva (C = , C)
escreva (X = , X)
fim

e-Tec Brasil

58

Algoritmos e Programao

Exerccio 9.1: Simulao


Fonte: Autores

10. Escreva um algoritmo que leia as notas de vrios alunos. Calcule e imprima a mdia da turma, bem como a situao (mensagem) de cada um
deles, conforme critrio apresentado a seguir:

Aprovado: caso a nota seja superior a 6,0.

Final: se a nota estiver compreendida entre 4,0 e 6,0.

Reprovado: se a nota for inferior a 4,0.

Aula 4 - Estruturas de repetio

59

e-Tec Brasil

Aula 5 Procedimento
Objetivos
Conhecer estruturas modulares.
Aplicar novas maneiras para se desenvolver algoritmos, atravs da
modularizao de programas utilizando procedimento.

5.1 Definio
Um procedimento um bloco de programa, contendo incio e fim e ser
identificado por um nome, atravs do qual ser referenciado em qualquer
parte do programa principal. (GUIMARES; LAGES, 1994).

5.2 Caractersticas

um subprograma dentro do programa principal.

Pode usar as variveis do programa variveis globais (*).

Pode ter suas prprias variveis variveis locais (**).

Pode ter todas as partes de um programa inclusive outro procedimento.

Todo procedimento possui um nome.

Um mesmo procedimento pode ser chamado em locais diferentes no


algoritmo.

(*) varivel global quando declarada no incio de um programa principal,


podendo ser utilizada por qualquer sub-rotina subordinada (procedimento e
funo).
(**) varivel local quando declarada dentro de uma sub-rotina (procedimento e funo) e somente vlida dentro da rotina qual est declarada.

Aula 5 - Procedimento

61

e-Tec Brasil

5.3 Sintaxe
procedimento <nome> [(parmetros: tipos)] {cabealho}
[variveis locais: tipos]
incio
<instrues>
fim {<nome>}

Exemplo
{passagem de parmetro por valor}
procedimento SOMAR (A, B: inteiro)
R: inteiro
incio
R A + B
escreva (Resultado = , R)
fim {SOMAR}

ou
{passagem de parmetro por referncia}
procedimento SOMAR (A, B: inteiro; var R: inteiro)
AUX: inteiro
incio
AUX A + B
R AUX
fim {SOMAR}

Explicando
Veja que existem dois tipos de construo de procedimentos. O primeiro com
passagem de parmetro(s) por valor e o outro, com passagem de parmetro(s)
por referncia.
Nos algoritmos em que se utiliza procedimento(s) com passagem de parmetro(s)
por valor, as variveis globais que esto trabalhando como parmetros de
entrada do procedimento passam seus valores para os parmetros locais, isto
, aqueles que se encontram no cabealho do procedimento.
Naqueles algoritmos em que se utiliza procedimento(s) com passagem de
parmetro(s) por referncia, veja que tudo que acontece com os parmetros
da chamada do procedimento, acontece tambm com os parmetros do
cabealho do procedimento. Por este motivo, no h a necessidade de se
imprimir o resultado dentro do procedimento. Isso pode ser feito no programa principal, ou seja, logo depois da chamada do procedimento. Para

e-Tec Brasil

62

Algoritmos e Programao

que um parmetro seja por referncia, basta colocar a palavra var antes do
parmetro, no cabealho do procedimento. Veja os exerccios resolvidos a
seguir. Lembre-se: um procedimento s executado quando for chamado e
ele pode ser chamado em partes diferentes do mesmo programa.

5.4 Exerccios resolvidos


1. Ler 3 pares de nmeros inteiros, calcular e imprimir a soma de cada par
separadamente. Em seguida, fazer a soma entre os nmeros relativos
sua idade e idade de um colega. Utilizar procedimento com passagem
de parmetros por valor para calcular a soma de 2 nmeros.
incio
inteiro X, Y, I {variveis globais}
procedimento SOMAR (A, B: inteiro)
R: inteiro {varivel local}
incio
R A + B
escreva (Resultado= , R)
fim {SOMAR}
{Programa Principal}
I 1
enquanto I <= 3 faa
escreva (Digite 2 nmeros inteiros: )
leia (X, Y)
SOMAR (X, Y) {passagem de parmetro por valor}
I I + 1
fim enquanto
escreva (Digite a sua idade: )
leia (X)
escreva (Digite a idade do colega: )
leia (Y)
SOMAR (X, Y)
fim

Explicando
Neste exerccio foi criado um procedimento por valor para calcularmos a soma
de dois nmeros quaisquer. Primeiramente, declaramos as variveis globais,
aquelas que podem ser utilizadas em todo o programa (X, Y, I). Em seguida,
declaramos o procedimento que foi denominado de SOMAR. Ele possui dois
parmetros (A, B), j que pretendemos somar dois nmeros inteiros. Estes
parmetros, portanto, devem ser do tipo inteiro.

Aula 5 - Procedimento

63

e-Tec Brasil

No procedimento, criamos uma varivel local (R) para armazenar o resultado


da soma dos valores contidos nos parmetros A e B. Aps o clculo da soma,
imprimimos o resultado.
Tudo que for calculado dentro de um procedimento com passagem de
parmetro(s) por valor e que voc quiser imprimir tem que ser impresso dentro
do referido procedimento. No pode ser devolvido ao programa principal. O
mesmo no ocorre quando a passagem de parmetro por referncia.
Ainda neste exerccio, podemos verificar que o mesmo procedimento chamado
em partes diferentes do programa caracterizando, assim, o reaproveitamento
de cdigo que uma das vantagens de se utilizar procedimento.
2. Resolver o exerccio anterior utilizando passagem de parmetro por referncia.
incio
inteiro X, Y, Z, I
procedimento SOMAR (A, B: inteiro; var R: inteiro)
AUX: inteiro
incio
AUX A + B
R AUX
fim {SOMAR}
{Programa Principal}
I 1
enquanto I <= 3 faa
escreva (Digite 2 nmeros inteiros: )
leia (X, Y)
SOMAR (X, Y, Z)
escreva (RESULTADO = , Z)
I I + 1
fim enquanto
escreva (Digite a sua idade: )
leia (X)
escreva (Digite a idade do colega: )
leia (Y)
SOMAR (X, Y, Z)
escreva (IDADE TOTAL = , Z)
fim

e-Tec Brasil

64

Algoritmos e Programao

Explicando
Observe que, diferentemente do exerccio anterior, onde o procedimento
era com passagem de parmetro(s) por valor, criamos um parmetro com
passagem por referncia (var R: inteiro). O parmetro R ir corresponder
com o parmetro Z, da chamada do procedimento. Os dois apontam para a
mesma referncia na memria. Por isso, o que acontece com um, acontece com
o outro. Tudo por causa daquela palavrinha var que precede o parmetro R.
Ento, no h necessidade de se imprimir o clculo da soma dentro do procedimento. Isso pode ser feito no corpo do programa principal atravs do
parmetro Z.
Uma vantagem de se utilizar procedimento com passagem de parmetro(s)
por referncia que se pode utilizar no programa principal o resultado de
clculos efetuados dentro do procedimento. Imagine se quisssemos acumular
o resultado de todas as somas? Isso seria perfeitamente possvel neste algoritmo. Bastaria criar uma varivel global inteira S, por exemplo, e, no programa
principal, aps a chamada do procedimento, fazer o clculo (S S + Z). No
poderia se esquecer de zerar a varivel S antes do comando de repetio
enquanto ... faa.
Tambm nessa modalidade de procedimento podemos fazer o reaproveitamento
de cdigo. Se necessrio, podemos chamar o procedimento em qualquer
parte do programa, como mostrado anteriormente.

Resumo
A modularizao de programas atravs de procedimentos facilita a elaborao,
o entendimento e a manuteno dos mesmos. Tratar um problema em partes
quase sempre mais fcil que trat-lo no todo. Outra vantagem o reaproveitamento de cdigos. Pode-se chamar o procedimento vrias vezes dentro
do mesmo programa sem ter que escrever todos os cdigos pertencentes ao
procedimento novamente.
Procedimento deve ser utilizado quando no se deseja retornar valor. Quando
for necessrio retornar um valor mais interessante se utilizar funo que
ser mostrada no prximo captulo.
Nesta aula, vimos os procedimentos com passagem de parmetros por valor
e por referncia. A seguir, algumas atividades para que voc possa fixar estes
conhecimentos.

Aula 5 - Procedimento

65

e-Tec Brasil

Atividades de aprendizagem
1. Fazer um algoritmo que leia 100 nmeros inteiros calcule e imprima o
cubo de cada um deles. Utilizar procedimento com passagem de parmetros por valor (FARRER et al, 1999).
2. Fazer um algoritmo que leia 100 nmeros inteiros, dois a dois (50 pares),
e faa a troca do primeiro pelo segundo, em cada par, utilizando procedimento com passagem de parmetros por referncia (GUIMARES;
LAGES, 1994).
3. Fazer a simulao completa do exerccio a seguir, utilizando procedimento com passagem de parmetros por valor:
incio
inteiro: X, Y, Z, I
procedimento Menorde3 (A, B, C: inteiro)
AUX: inteiro
incio
se (A < B) e (A < C)
ento AUX A
seno se (B < C) e (B < A)
ento AUX B
seno AUX C
fim se
fim se
escreva(Menor dos 3:, aux)
fim
para I de 1 at 10 faa
escreva (Digite um nmero inteiro: )
leia (X)
escreva (Digite um nmero inteiro: )
leia (Y)
escreva (Digite um nmero inteiro: )
leia (Z)
menorde3 (X, Y, Z)
fim para
X 10
Y 3
Z 20
menorde3 (X, Y, Z)
X 12

e-Tec Brasil

66

Algoritmos e Programao

Y 13
Z 14
menorde3 (X, Y, Z)
fim

4. Fazer um algoritmo que leia o valor do comprimento e da largura de 20


retngulos. Calcule a rea de cada um, utilizando procedimento com
passagem de parmetro(s) por referncia, e imprima a mdia das reas.
5. Fazer um algoritmo que leia 30 nmeros inteiros, 3 a 3, e, utilizando
procedimento com passagem de parmetros por referncia, coloque-os
ordenados de forma crescente imprimindo-os em seguida. Posteriormente, leia o ano de fundao de 3 instituies de ensino de seu estado e,
utilizando o mesmo procedimento, coloque-os ordenados de forma crescente imprimindo apenas o ano de fundao da instituio mais antiga.
6. Fazer um algoritmo que leia os coeficientes A, B e C de 10 equaes do
segundo grau. No programa principal, calcule o valor de DELTA para cada
equao. Elaborar um procedimento que receba os valores de A, B e C e
tambm o valor de DELTA e calcule as razes da equao e imprima-as no
programa principal (passagem de parmetros por referncia).

Aula 5 - Procedimento

67

e-Tec Brasil

Aula 6 Funo
Objetivos
Desenvolver algoritmos, atravs da modularizao de programas
utilizando funo.
Conhecer as diferenas entre procedimento e funo.

6.1 Definio
Assim como procedimento, uma funo um bloco de programa, contendo
incio e fim e ser identificado por um nome, atravs do qual ser referenciado
em qualquer parte do programa principal (GUIMARES; LAGES, 1994).
Difere de procedimento basicamente por poder fazer parte de um comando
ou de uma expresso. Difere, tambm, por devolver (retornar) ao local da
chamada um determinado valor.

6.2 Caractersticas e diferenas em relao


a procedimento

Uma funo sempre devolver um resultado.

Um procedimento usado como um comando qualquer.

Uma funo sempre far parte de um comando ou de uma expresso.

Uma mesma funo pode ser chamada em mais de um lugar no mesmo


algoritmo, assim como procedimento.

Aula 6 - Funo

69

e-Tec Brasil

6.3 Sintaxe
funo <nome> [(parmetros:tipos)]: <tipo da funo>
[(variveis: tipos)]
incio
<instrues>
<nome> <expresso ou resultado>
fim {<nome>}

Exemplo
funo ABSOL (X: inteiro): inteiro
AUX: inteiro
incio
se X < 0
ento AUX X (-1)
seno AUX X
fim se
ABSOL AUX
fim

Explicando
A funo difere do procedimento principalmente na maneira como chamada.
Vimos que para se chamar um procedimento, basta colocar o seu nome e os
parmetros. Em se tratando de funo, no bem assim. A funo sempre
vir acompanhada de um comando ou uma expresso. Por exemplo, escreva
(SOMAR (X, Y)). Ou ainda: 3 SOMAR (X, Y)/2. Isso possvel com funo.
No primeiro exemplo, seria impresso o valor da soma de X com Y. No segundo,
veja que a funo faz parte da expresso. O resultado da soma de X com Y
seria multiplicado por 3 e, depois, o resultado dividido por 2.
Utilizando-se procedimento, isso no seria possvel, pois o procedimento no pode
fazer parte de uma expresso. Ele chamado sem a companhia de ningum.
E como seria com procedimento? Deveramos criar uma terceira varivel
(parmetro), por referncia, chamar o procedimento e utilizar a varivel global,
que corresponde com este parmetro, na expresso.
Veja tambm que o resultado da funo sempre atribudo ao nome da
funo, que trabalha como se fosse um parmetro de sada de dados.

e-Tec Brasil

70

Algoritmos e Programao

6.4 Exerccios resolvidos


1. Ler 3 pares de nmeros inteiros, calcular e imprimir a soma de cada par
separadamente. Utilizar funo para calcular a soma de 2 nmeros.
incio
inteiro: X, Y, I
funo SOMAR (A, B: inteiro): inteiro
AUX: inteiro
incio
AUX A + B
SOMAR AUX
fim {SOMAR}
{programa principal}
I 1
enquanto I <= 3 faa
escreva (Digite 2 nmeros inteiros: )
leia (X, Y)
escreva (RESULTADO = , SOMAR (X, Y))
I I + 1
fim enquanto
fim

Explicando
Observe que a forma de se escrever uma funo um pouco diferente de
procedimento. H a declarao do tipo da funo j que o seu nome funciona
como uma varivel. No final da funo, h a devoluo do resultado para o
nome da funo.
Neste exerccio, possvel fazer o clculo da soma de A por B e armazenar o
resultado diretamente no nome da funo. Com isso, eliminaramos a varivel
AUX. Assim, ficaria: SOMAR A + B.
No programa principal, faz-se a chamada da funo junto com o comando
escreva.
2. Fazer um algoritmo que leia 30 nmeros inteiros e imprimir o valor absoluto de cada um deles. Utilizar funo para calcular ABSOL.
incio
inteiro: A, I
funo ABSOL (X: inteiro): inteiro
AUX: inteiro
incio

Aula 6 - Funo

71

e-Tec Brasil

se X < 0
ento AUX X * (-1)
seno AUX X
fim se
ABSOL AUX
fim
para I de 1 at 30 faa
escreva (Digite um nmero inteiro:)
leia (A)
escreva (Absoluto =, ABSOL(A))
fim para
fim

Resumo
Nesta aula, estudamos as funes, ou seja, as estruturas modulares. Voc
pde ver que, subdividindo o algoritmo em blocos menores, fica mais fcil a
sua manuteno. O entendimento tambm facilitado. Voc pode perceber
que uma funo um pequeno algoritmo inserido no algoritmo principal.
A modularizao utilizada no algoritmo nos permite tratar apenas parte do
cdigo sem nos preocupar com o todo o que facilita muito a sua manuteno.
A partir de agora, voc ir aplicar esses conceitos numa linguagem de programao tornando os estudos bem mais agradveis. Voc ir ver como
fantstico programar. Parabns por chegar at aqui.

Atividades de aprendizagem
1. Fazer um algoritmo que leia 100 nmeros inteiros, calcule e imprima o cubo
de cada um deles. Utilizar funo para calcular o cubo (FARRER et al, 1999).
2. Fazer um algoritmo que leia 50 pares de nmeros inteiros, referentes
a catetos de tringulos retngulos. Calcule e imprima a hipotenusa de
cada um dos tringulos. Utilizar funo para calcular hipotenusa (GUIMARES; LAGES, 1994).
3. Fazer um algoritmo que leia 10 pares (N e P) de nmeros inteiros, sendo
o primeiro (N) sempre maior que o segundo (P). Calcule e imprima o valor
de S, dado pela frmula a seguir:
S = N! / (P! (N - P)!)

e-Tec Brasil

72

Algoritmos e Programao

Utilizar funo para se calcular o fatorial de um nmero inteiro.


Obs.: o fatorial de um nmero, representado pelo ponto de exclamao
(!), a multiplicao sucessiva de inteiros entre o nmero 1 e o prprio
nmero. Exemplo: 5! = 1 2 3 4 5 = 120
4. Fazer um algoritmo que leia 40 notas, sendo 4 por aluno. Calcule, utilizando funo, a mdia (aritmtica) de cada aluno imprimindo-a no programa principal. Calcule e imprima, tambm, a mdia da turma.
5. Fazer um algoritmo que leia 20 notas, sendo uma por aluno. Utilizando
funo, verifique se o aluno foi aprovado ou no. Para ser aprovado, o
aluno tem que ter nota superior ou igual a 6. Portanto, a funo receber
por parmetro uma nota e devolver um texto (aprovado ou no est
aprovado) informando a situao do aluno.
6. Fazer um algoritmo que leia o valor do comprimento e da largura de 20 retngulos. Calcule a rea de cada um utilizando funo, imprimindo-a em seguida. Calcule e imprima tambm, no programa principal, a mdia das reas.

Aula 6 - Funo

73

e-Tec Brasil

Aula 7 Ambiente de
programao Lazarus
Objetivos
Conceituar a ferramenta de programao Lazarus/Free Pascal.
Conceituar os principais termos associados aos objetos utilizados
num ambiente grfico.
Instalar e configurar o Lazarus.
Conhecer o ambiente de desenvolvimento Lazarus (IDE).
Desenvolver as primeiras aplicaes dentro do IDE Lazarus para o
compilador Free Pascal.

7.1 Linguagem de programao


Prezado(a) aluno(a), nesta aula, iniciaremos o estudo de uma linguagem de
programao, que lhe permitir desenvolver solues computacionais para os
problemas que voc encontra em seu cotidiano. Com base neste objetivo, lhe ser
apresentado o Lazarus, que um IDE (Integrated Development Environment), ou
Ambiente de Desenvolvimento Integrado, o qual permitir desenvolver aplicaes
com interfaces grficas para o compilador Free Pascal.
Dentre as vrias linguagens de programao disponveis no mercado, optou-se
pelo Lazarus/Free Pascal pelo fato de os mesmos serem projetos de cdigo aberto
(open source), o que significa, segundo Almeida (2010), que eles no so de
propriedade exclusiva de uma empresa ou de um nico desenvolvedor, podendo
ser utilizado por qualquer pessoa, sem a necessidade de se pagar por sua utilizao.

7.2 Ambiente de desenvolvimento


7.2.1 Conceitos
7.2.1.1 Lazarus
Conforme Almeida (2010), o Lazarus (nome do personagem bblico que foi
ressucitado por Jesus) a continuao de um projeto que havia sido encerrado,

Aula 7 - Ambiente de programao Lazarus

75

e-Tec Brasil

o projeto Megido, o qual tinha por objetivo ser um clone do Delphi. O Lazarus
um ambiente de desenvolvimento integrado que utiliza o Free Pascal como
compilador. Foi desenvolvido para ser uma alternativa linguagem de programao Delphi, cujos direitos pertencem empresa Embarcadero, e que devido
a sua grande semelhana com este software em sua verso 7, considerado
por muitos, como um clone do mesmo.

7.2.1.2 Free Pascal


O compilador Free Pascal (FPC) um compilador de cdigo aberto de 32/64 bits,
usado na programao de computadores atravs das linguagens de programao
Pascal e Object Pascal, desde meados da dcada de 1990. Permite gerar cdigo
nativo em diferentes sistemas operacionais, tais como: Windows, Linux, MacOs,
OS/2 entre outros.

7.2.1.3 Eventos, propriedades e mtodos


a) Eventos os programas feitos no Lazarus so desenvolvidos atravs de
eventos, os quais podem ser entendidos como todas as maneiras que o
usurio pode interagir com os objetos, durante a utilizao de um programa. Alguns desses eventos, associados aos componentes, so descritos a seguir:

OnClick ocorre quando o usurio clica sobre o objeto.

OnMouseMove ocorre quando o usurio movimenta o ponteiro do mouse.

OnKeyPress este evento chamado quando cada tecla pressionada,

sendo executado antes da tecla que foi pressionada chegar a seu destino.

OnKeyDown ocorre quando o usurio pressiona uma tecla.

OnEnter este evento chamado quando o objeto recebe o foco.

OnExit este evento chamado quando o objeto perde o foco.

OnChange este evento chamado cada vez que o contedo de um de-

terminado objeto alterado.


OnMouseDown ocorre quando o usurio pressiona o boto do mouse.

e-Tec Brasil

76

OnMouseUp ocorre quando o usurio libera o boto do mouse.

Algoritmos e Programao

importante ressaltar que, no desenvolvimento de uma aplicao, os cdigos


so escritos atravs de procedimentos, os quais so gerados para cada um dos
eventos utilizados na elaborao do projeto. A criao desses procedimentos
ser detalhada mais adiante.
b) Propriedades determinam a maneira como os objetos de sua aplicao funcionam, em outras palavras, representam as caractersticas de um
determinado objeto. Podemos exemplificar como propriedades de um
objeto a sua altura, largura, cor, tipo de fonte usada, entre outras caractersticas. Sendo assim, para manipul-las durante o desenvolvimento
do cdigo de um programa, deve-se, primeiramente, informar o nome
do componente (objeto) seguido de um ponto e, por ltimo, o nome da
propriedade, conforme sintaxe a seguir: <componente>.<propriedade>.
Exemplo
Atribuir a informao e-Tec Brasil propriedade Text do componente Edit1.
Resposta
Edit1.Text:= e-Tec Brasil;

c) Mtodos so procedimentos ou funes embutidos nos componentes


e formulrios, definidos pela linguagem de programao em questo.

7.2.2 Download do Lazarus


Neste curso, utilizaremos a ferramenta de programao Lazarus que seja compatvel com o sistema operacional Windows. Sendo assim, para se acessar a verso
disponvel para download, v ao endereo: <www.lazarus.freepascal.org>
e, em seguida, clique em Downloads, conforme apresentado na Figura 7.1.

Aula 7 - Ambiente de programao Lazarus

77

e-Tec Brasil

Figura 7.1: Download Lazarus


Fonte: http://www.lazarus.freepascal.org/

Na janela seguinte, Figura 7.2, clique no link ao lado da pergunta Looking


for the latest version?

Figura 7.2: Link download Lazarus


Fonte: http://sourceforge.net/projects/lazarus/files/

Na sequncia, na caixa de dilogo que exibida, clique no boto Salvar. A


Figura 7.3 apresenta essa caixa de dilogo.

Figura 7.3: Caixa de dilogo referente ao download do Lazarus


Fonte: http://sourceforge.net/projects/lazarus/files/Lazarus%20Windows%2032%20bits/Lazarus%200.9.30/lazarus-0.9.30-fpc-2.4.2-win32.exe/download

e-Tec Brasil

78

Algoritmos e Programao

Por ltimo, escolha uma pasta para armazenar o arquivo referente ao download,
conforme apresentado na Figura 7.4 e clique em Salvar.

Figura 7.4: Caixa de dilogo Salvar como


Fonte: Sistema operacional Windows

7.2.3 Instalao e configurao do Lazarus


O processo de instalao do Lazarus bastante simples. Os passos so apresentados a seguir:
a) D um duplo clique no arquivo lazarus-0.9.30-fpc-2.4.2-win32.exe ou
na verso mais recente, que est salvo em seu computador, referente ao
download do tpico anterior, o qual representa o programa instalador do
Lazarus. Em seguida, clique no boto Executar.
b) Escolha o idioma a ser utilizado na instalao do programa, conforme
exibido na Figura 7.5, clicando em seguida no boto OK.

Figura 7.5: Tela para escolha do idioma do instalador


Fonte: Software Lazarus

c) Na janela inicial do assistente de instalao, clique em Avanar e, depois,


escolha a pasta em seu computador no qual o programa ser instalado.
De preferncia mantenha o local sugerido pelo instalador (C:\Lazarus) e,
em seguida, clique em Avanar.

Aula 7 - Ambiente de programao Lazarus

79

e-Tec Brasil

d) Na janela Selecionar Componentes (Figura 7.6), desmarque a opo: Associar Lazarus com a extenso de arquivo.pas, para evitar conflitos de
arquivos.pas associados ao Delphi, e, logo a seguir, clique em Avanar.

Figura 7.6: Tela instalao personalizada do Lazarus


Fonte: Software Lazarus

e) Nas janelas seguintes, escolha avanar, at que surja a janela Pronto para
Instalar, na qual se deve clicar no boto Instalar;
f) Por ltimo, ser mostrada a janela para finalizar o assistente de Instalao
do Lazarus, bastando clicar em Concluir.

7.2.4 Elementos do IDE


Aps instalado o Lazarus, podemos inicializ-lo clicando no cone correspondente que se encontra na rea de trabalho (desktop), caso voc tenha optado
por cri-lo durante a instalao do software, ou ento, acessando o menu
Iniciar > Programas > Lazarus e escolhendo o item de programa Lazarus.
A Figura 7.7 ilustra o IDE do Lazarus.

Figura 7.7: IDE do Lazarus


Fonte: Software Lazarus

e-Tec Brasil

80

Algoritmos e Programao

A seguir, so apresentados os principais elementos que compem o IDE,


conforme numerao apresentada na Figura 7.7:
1. Janela principal constituda basicamente de trs sees: barra de
menu, barra de botes e paleta de componentes.
Barra de menu (Figura 7.8) fornece as ferramentas necessrias ao desenvolvimento da aplicao, bem como os recursos para se configurar o
IDE do Lazarus.

Figura 7.8: Barra de menu


Fonte: Software Lazarus

Barra de botes (Figura 7.9) fornece um atalho para os comandos frequentemente utilizados no desenvolvimento de uma aplicao.

Figura 7.9: Barra de botes


Fonte: Software Lazarus

Paleta de componentes (Figura 7.10) contm o conjunto de componentes existentes na biblioteca de componentes, os quais possibilitam a
implementao de diversas funcionalidades no desenvolvimento de um
projeto. constituda por uma srie de abas, que dividem e agrupam
diversos componentes de acordo com suas funes.

Figura 7.10: Paleta de componentes


Fonte: Software Lazarus

2. Form Designer a parte principal do IDE do Lazarus a rea de trabalho.


Essa rea exibe o form designer, o qual permite a criao dos formulrios
de uma aplicao. Esses formulrios podem representar a janela principal
do projeto, uma caixa de dilogo ou qualquer outro tipo de janela.
3. Editor de cdigo rea do IDE onde voc ir desenvolver o cdigo (lgica) de sua aplicao.

Aula 7 - Ambiente de programao Lazarus

81

e-Tec Brasil

4. Object Inspector painel que apresenta as propriedades (aba Properties)


e os cdigos (aba Events) associados ao componente atualmente selecionado no formulrio.
5. Janela de mensagens apresenta informaes referentes compilao
do projeto, tais como: erros do cdigo (sintaxe), informaes do compilador FPC, entre outros.
A partir de agora, tendo em vista que voc j foi apresentado ao IDE do
Lazarus, retomaremos um ponto citado anteriormente, que sobre a sua
configurao. Para termos um ambiente adequado (produtivo) ao desenvolvimento de nossos projetos, podemos ajustar algumas opes do IDE. O
Lazarus apresenta vrios parmetros de configurao desse ambiente, dentre
os quais podemos destacar alguns bem interessantes:
Caso queira-se trabalhar com o IDE em Portugus, deve-se configur-lo da
seguinte maneira: acesse o menu Environment > Options > Environment
> Desktop > Language e escolha <Portuguese [pb]>. Em seguida, feche
o Lazarus e o inicialize novamente, para que as configuraes sejam aplicadas. A partir deste momento, o IDE se apresenta em portugus.

Observao
Caro estudante, apesar de ser mais cmodo usarmos o IDE em portugus,
neste material trabalharemos no idioma original, ou seja, o ingls, tendo em
vista que a maioria das linguagens de programao se encontra em ingls e,
alm disso, permitir a voc uma maior afinidade com esse idioma.

e-Tec Brasil

82

Ao usarmos o formulrio do Lazarus para elaborao da interface grfica


de um determinado aplicativo e, ao clicarmos na janela de mensagens
por algum motivo, o foco da operao ser levado ao editor de cdigo do
IDE, o que ocasiona uma perda de produtividade no desenvolvimento da
operao em questo. Sendo assim, podemos ajustar o IDE de maneira a
no redirecionar o foco da operao apenas com um clique mas, quando
realmente se fizer necessrio, a partir de um duplo clique, da seguinte maneira: Em Environment > Options > Environment > Desktop, acesse o
quadro Misc Options e marque a primeira opo Jump from message
to source line on double click, conforme Figura 7.11.

Algoritmos e Programao

Figura 7.11: Opes diversas


Fonte: Software Lazarus

Uma opo importante a ser configurada no IDE quanto remoo de


mtodos vazios existentes no editor de cdigos. Os mtodos representam os procedimentos ou funes criados para a realizao de tarefas
especficas na soluo de um problema, mas quando se encontram vazios, no fazem sentido. Sendo assim, podemos configurar o IDE para
eliminarmos tais mtodos do sistema, da seguinte forma: Environment
> Options > Editor > Completion and Hints e marque a opo Auto
remove empty methods.

Caso queira que na inicializao do Lazarus seja apresentado um novo projeto, e no o projeto manipulado na ltima vez em que voc usou o IDE,
utilize o seguinte procedimento: acesse o menu Environment > Options
> Environment e desmarque a opo Open last Project at start.

A partir dos ajustes (configuraes) do IDE j apresentados, constata-se que


existe uma variedade enorme de outros parmetros que podem ser configurados. Entretanto, voc perceber a necessidade de realiz-los, quando voc
se sentir mais familiarizado com o ambiente de programao que estamos
estudando, bem como quando no desenvolvimento das solues para os
problemas que lhe sero apresentados ao longo deste curso.

7.2.5 Biblioteca de componentes Lazarus


O Lazarus permite o desenvolvimento rpido de aplicaes grficas (RAD)
de maneira semelhante ao Delphi, o que significa ter uma biblioteca de
componentes (LCL) muito parecida com a do Delphi (VCL). Essa biblioteca de
componentes representa um conjunto de classes que seguem uma determinada
hierarquia. Entretanto, no quer dizer que essas bibliotecas sejam idnticas,
pois, muitos dos controles existentes na VCL podem no existir na LCL ou
vice-versa. Para ilustrar esse fato, tem-se que a VCL contm componentes
visuais e no visuais, j a LCL apresenta apenas componentes visuais, tendo
em vista que grande parte dos componentes no visuais provida por outra
biblioteca, a FLC (Free Component Library), a qual mantida pela equipe do
Free Pascal. Adicionalmente, at mesmo para controles que sejam comuns s
duas bibliotecas, devero ser feitas alteraes nas aplicaes, componentes
e controles para migr-los de um ambiente para o outro (LAZARUS WIKI).

Aula 7 - Ambiente de programao Lazarus

83

classes
a definio de um conjunto de
caractersticas e comportamentos
que os elementos (objetos)
devero seguir.

e-Tec Brasil

tempo de projeto
Etapa em que o programador
desenvolve o projeto (aplicao)
no IDE, tal como: elaborao da
interface grfica/codificao do
programa.

Conceitos componentes visuais representam os componentes utilizados


no desenvolvimento de uma aplicao, ou seja, em tempo de projeto, e
que possibilitam modificarem seus comportamentos visuais nesse estado.
Podemos citar, por exemplo, a utilizao de uma caixa de texto, na qual
alterando o tipo de fonte ou seu tamanho, refletir instantaneamente no
projeto. J os componentes no visuais caracterizam-se como elementos de
apoio ao desenvolvimento do projeto, mas que no aparecem em tempo
de execuo do mesmo. Eles podero, portanto, serem vistos, apenas em
tempo de projeto, atravs dos cones que os representam. Como exemplo,
podemos citar o uso do componente MainMenu, o qual utilizado para a
criao de menus dentro de uma aplicao, mas que no exibido quando
o projeto executado.

tempo de execuo
Etapa no qual o programa
encontra-se em execuo.

7.2.6 Trabalhando com componentes


Na montagem da interface grfica de um aplicativo, devemos utilizar os componentes existentes na paleta de componentes, j citada anteriormente, os quais se
encontram organizados, funcionalmente, por meio de abas. Voc ver ao longo
deste curso, que bastante simples e intuitivo trabalhar com esses elementos.
A seguir, so apresentadas as abas mais comuns desta paleta, juntamente com
os componentes mais usuais, utilizados na criao de um programa.

7.2.6.1 Paleta de componentes (abas)


Standard (Figura 7.12) fornece os componentes mais comuns em nvel
de interface grfica.

Figura 7.12: Aba Standard


Fonte: Software Lazarus

Quadro 7.1: Componentes mais usuais da aba Standard


cone

Nome
TMainMenu

TButton

e-Tec Brasil

84

Finalidade
Permite a criao de menus suspensos dentro de uma aplicao.
Usado na criao de botes que permitem ao usurio interagir com a
aplicao por meio de aes especficas, atravs do acionamento (clique)
desses botes.

TLabel

Permite a insero de textos no formulrio, os quais no podem ser


alterados pelo usurio.

TEdit

Componente usado para a entrada/sada de dados num programa.

TMemo

Usado para a insero de texto por meio de vrias linhas numa caixa de
edio.

Algoritmos e Programao

TCheckBox

Possibilita por meio do clique do mouse habilitar/desabilitar uma


determinada opo de sua aplicao.

TRadioButton

Controle que permite ao usurio escolher apenas uma opo de um


conjunto de opes disponveis.

TListBox

Usado para exibir informaes dentro de uma caixa de listagem, bem


como permite que o usurio possa selecionar um ou mais itens desta
caixa de listagem.

TComboBox

uma combinao de uma caixa de listagem e uma caixa de texto que


permite ao usurio digitar a informao no prprio controle ou escolh-la
da caixa de listagem.

TGroupBox

Componente que se apresenta na forma de uma moldura, com o objetivo


de agrupar um conjunto de controles, tais como um conjunto de opes
como RadioButtons.

TRadioGroup

TPanel

Representa um container de botes de rdio, ou seja, combina as


caractersticas do GroupBox com o RadioButton.
um container genrico para agrupamento de controles.

Fonte: Adaptado de Squadra Tecnologia em Software, 2000

Additional (Figura 7.13) nesta aba encontramos alguns componentes


de interface um pouco mais elaborados e com alguns recursos a mais.

Figura 7.13: Aba Additional


Fonte: Software Lazarus

Quadro 7.2: Componentes mais usuais da aba Additional


cone

Nome
TBitBtn

Finalidade
Semelhante ao Button da aba Standard, mas com a possibilidade de se
adicionar uma imagem bitmap.

TImage

Controle usado para adicionar imagens ao programa.

TShape

Usado para se desenhar alguns tipos de figuras geomtricas (quadrado,


crculo, etc.).

TMaskEdit
TStringGrid

Controle usado para formatao dos dados em diferentes formatos.


Apresenta/edita dados do tipo string atravs de linhas e colunas.

Fonte: Adaptado de Squadra Tecnologia em Software, 2000

Common Controls (Figura 7.14) apresenta componentes que permitem acompanhar a execuo de rotinas (aes) especficas do programa,
atravs do controle do tempo, bem como definir atalhos para recursos
do aplicativo ou sistema.

Aula 7 - Ambiente de programao Lazarus

85

e-Tec Brasil

Figura 7.14: Aba Common Controls


Fonte: Software Lazarus

Quadro 7.3: Componentes mais usuais da aba Common Controls


cone

Nome
TTrackBar
TProgressBar

Finalidade
Barra de controle deslizante que fornece uma guia a partir da qual o
usurio pode moviment-la por toda sua regio.
Controle usado para representar uma operao em andamento como, por
exemplo, o download ou transferncia de um arquivo.

TStatusBar

Usado para exibir informaes referentes a uma interface grfica e que


permite ser dividida em vrias sees ou painis.

TToolBar

Utilizado na criao de uma barra de ferramentas dentro da aplicao.

TPageControl

Controle usado para se criar guias que exibem pginas, as quais podem
conter outros componentes.

TImageList

Permite o agrupamento de imagens que sero utilizadas numa


determinada aplicao.

Fonte: Adaptado de Squadra Tecnologia em Software, 2000

Dialogs (Figura 7.15) contm componentes que possibilitam a criao


de caixas de dilogo em uma aplicao.

Figura 7.15: Aba Dialogs


Fonte: Software Lazarus

Quadro 7.4: Componentes mais usuais da aba Dialogs


cone

Nome

Finalidade

TOpenDialog

Controle usado para se gerar caixa de dilogo para a seleo do arquivo


que ser aberto.

TSaveDialog

Fornece caixa de dilogo para que se informe o nome e o destino do


arquivo a salvar.

TFontDialog

Controle usado para fornecer caixa de dilogo para a seleo de fontes.

TPrintDialog

Fornece a caixa de dilogo para se configurar opes de impresso.

Fonte: Adaptado de Squadra Tecnologia em Software, 2000

e-Tec Brasil

86

System (Figura 7.16) fornece componentes para se configurar HTML,


XML e o tempo necessrio execuo de rotinas especficas de uma
aplicao.

Algoritmos e Programao

Figura 7.16: Aba System


Fonte: Software Lazarus

Quadro 7.5: Componentes mais usuais da aba System


cone

Nome

Finalidade

TTimer

Controle usado para se executar cdigos especficos de uma aplicao, de


tempo em tempo.

Fonte: Autores

Um primeiro exemplo
Agora, ser mostrado como usar o IDE do Lazarus atravs de um exemplo
bem simples. Os programas aqui desenvolvidos sero chamados de projetos.
Sendo assim, este nosso primeiro projeto ter por objetivo exibir a mensagem:
Bem-vindo ao e-Tec Brasil!
Abra o Lazarus e observe que se apresenta um projeto vazio juntamente com
seu formulrio (pressione F12 se o mesmo no estiver visvel). Caso voc j
tenha um projeto aberto e deseja iniciar um novo projeto, basta escolher a
seguinte opo: Project > New Project > Application.
Antes de iniciar a elaborao da interface grfica do nosso projeto, importante
observar que, para cada projeto desenvolvido no sistema, faz-se necessrio
armazen-lo numa pasta especfica. Portanto, minimize o IDE e crie, em seu
sistema, essa pasta. Logo em seguida, restaure o IDE e torne ativa a aba
Standard clicando sobre a mesma. Neste momento, vamos inserir um boto no
formulrio: clique no cone TButton e depois clique na posio do formulrio
onde se deseja inserir esse componente. Neste boto, altere o seu rtulo
para EAD, ou seja, altere a propriedade Caption. Para isso, faa o seguinte:
selecione o boto clicando uma vez sobre ele, e no Object Inspector, que
se encontra esquerda do formulrio, ative a aba Properties (provavelmente
ela j se encontre ativa) clicando sobre a mesma. Por ltimo, substitua o valor
da propriedade Caption de Button1 para EAD. A Figura 7.17 ilustra como
ficou o formulrio.

Aula 7 - Ambiente de programao Lazarus

87

e-Tec Brasil

Figura 7.17: Formulrio primeiro exemplo


Fonte: Software Lazarus

Aps elaborar a parte grfica da aplicao, que por sinal ficou bastante simples,
salve o projeto da seguinte maneira: clique no menu File > Save All. Na caixa
de dilogo, selecione a pasta que voc criou anteriormente para o projeto
a partir da opo Save in. Em seguida, na caixa de texto Name, mantenha
a sugesto informada (project1.lpi) e clique em Save. Na sequncia, surge
outra caixa de dilogo na qual dever ser informado o nome da Unit. Da
mesma forma, mantenha o nome sugerido (Unit1.pas) e clique em Save, e
assim, conclumos a operao de gravao do projeto. O passo seguinte
montarmos o cdigo correspondente soluo do problema.
D um duplo clique no boto para acionarmos o mtodo padro deste componente, o qual est associado ao evento OnClick. Tenha em mente que,
o mtodo pode ser entendido como um conjunto de instrues que, por
enquanto, voc pode considerar como sendo uma funo ou procedimento,
os quais j foram estudados em algoritmos. Em seguida, a declarao do
mtodo criada dentro do editor de cdigos do Lazarus e o cursor posicionado
dentro do bloco do procedimento. Para finalizarmos nosso programa, digite o
seguinte comando: Show e aperte Ctrl + Space, para que o IDE apresente
todos os itens iniciados por esse comando. Complete a operao escolhendo
no menu suspenso pelo comando ShowMessage e aperte Enter em seguida.
Por fim, o comando dever ficar da seguinte forma: ShowMessage (Bem-vindo
ao e-tec Brasil!). Para executar a aplicao, clique no boto Run da barra de
botes ou pressione F9. O resultado apresentado na Figura 7.18.

e-Tec Brasil

88

Algoritmos e Programao

Figura 7.18: Execuo primeiro exemplo


Fonte: Software Lazarus

7.3 Arquivos que compem uma aplicao Lazarus


Um projeto desenvolvido atravs do Lazarus gera arquivos de diferentes tipos
(extenses) quando o mesmo gravado numa pasta. Segundo Almeida (2010),
os arquivos mais comuns de um projeto so:
Quadro 7.6: Tipos de extenses do Lazarus
Extenso Arquivo

Finalidade

*.LPI

Arquivo que contm as informaes (configuraes especficas) do projeto.

*.LPR

Arquivo de projeto do Lazarus, ou seja, contm o cdigo fonte do programa principal


do projeto.

*.LFM

Contm informaes da configurao de todos os objetos do formulrio. Est sempre


associado a um arquivo de extenso PAS.

*.PAS *PP

Arquivo que possui o cdigo da Unit, em Pascal, normalmente associado a um


determinado formulrio da aplicao.

*.LRS

Arquivo de resource (recursos) do Lazarus, o qual geralmente gerado durante a


compilao do projeto.

*.PPU

Para cada Unit do projeto, durante o processo de compilao, gerado esse tipo de
arquivo (Unit compilada) atravs do FPC.

*.LPK

Arquivo que contm informaes especficas do pacote (Package).

Fonte: Adaptado de Almeida, 2010

7.4 Elementos da linguagem Pascal/Object Pascal


Os programas em Lazarus so desenvolvidos para o Free Pascal atravs das
linguagens Pascal e Object Pascal, originria do Pascal, sendo que esta foi
desenvolvida por volta de 1968 a 1970 por Niklaus Wirth, professor da Universidade de Zurique (Sua). O nome Pascal foi dado em homenagem ao
filsofo e matemtico Blaise Pascal, que viveu entre os anos de 1623 e 1662.

Aula 7 - Ambiente de programao Lazarus

89

e-Tec Brasil

Nesse tpico, sero apresentadas algumas caractersticas dessa linguagem,


bem como seus tipos bsicos de dados e principais operadores.

7.4.1 Caractersticas da linguagem


a) As instrues em Pascal so case insensitive, ou seja, no h diferenciao
entre maisculas e minsculas.
b) As instrues devem ser seguidas por ponto-e-vrgula.
c) Utiliza-se := para se atribuir um valor a uma varivel.
d) Os comentrios realizados dentro de um programa, com o objetivo de
facilitar o entendimento de trechos especficos do cdigo, podem ser
realizados da seguinte maneira:
Utilize os delimitadores de comentrios (*...*) ou entre chaves {...},
de forma a envolver o texto explicativo. O exemplo a seguir demonstra o
uso desses delimitadores.

Exemplo
(*Programa para o clculo da mdia das idades de um um grupo de indivduos*)
ou
{Programa para o clculo da mdia das idades de um grupo de indivduos}
Utilize o delimitador // quando se desejar fazer comentrios para uma
nica linha.

e) O Free Pascal reconhece um grupo de palavras como sendo especficas


(reservadas) da linguagem, ou seja, tm um significado para o compilador
e que, portanto, no podem ser redefinidas pelo programador, ou seja,
no podem ser nomes de variveis e/ou constantes. Maiores informaes
sobre essas palavras reservadas so apresentadas por Canneyt (2011),
em seu guia de referncia para Free Pascal, que poder ser acessado em:
<ftp.freepascal.org/pub/fpc/docs-pdf/ref.pdf>.
f) Os identificadores so nomes atribudos pelo programador s variveis,
constantes, procedimentos, funes e tipos definidos. Portanto, todos os
nomes definidos no cdigo fonte do programa, exceto palavras reservadas, caracterizam identificadores. As regras de construo dos identificadores seguem as apresentadas em algoritmos.

e-Tec Brasil

90

Algoritmos e Programao

g) END seguido de ponto indica ao compilador o final de uma Unit.

7.4.2 Tipos de dados


Os dados a serem processados por um programa devem ser armazenados por
meio de variveis. O Free Pascal disponibiliza para o programador um conjunto
de tipos de dados predefinidos, dentre os quais sero apresentados os tipos
inteiro, real, caractere e lgico.

7.4.2.1 Tipos de dados inteiros


Quadro 7.7: Tipos inteiros
Tipo inteiro
Byte

Intervalo
0 .. 255

Shortint

-128 .. 127

Smallint

-32768 .. 32767

Word

0 .. 65.535

Integer

Mapeia para Longint em Object Free Pascal

Cardinal

Mapeia para Longword

LongInt

-2147483648 .. 2147483647

Longword
Int64
QWord

0 .. 4294967295
-9223372036854775808 .. 9223372036854775807
0 .. 18446744073709551615

Fonte: Santos, 2011

7.4.2.2 Tipos de dados reais


Quadro 7.8: Tipos reais
Tipo real
Real

Intervalo
Depende da plataforma operacional

Single

1.5-45 .. 3.438

Double

5.0-324 .. 1.7308

Extended

1.9-4932 .. 1.14932

Comp

-264+1 .. 263-1

Currency

-922337203685477.5808 .. 922337203685477.5807

Fonte: Santos, 2011

7.4.2.3 Tipos de dados caractere


O Free Pascal suporta o tipo Char, o qual ocupa 1 byte em tamanho e armazena um nico caractere. Caso seja necessrio armazenar um conjunto de
caracteres, faz-se o uso do tipo string.

7.4.2.4 Tipos de dados lgicos


Pode-se trabalhar no Free Pascal com o tipo Boolean, que pode armazenar
um dos dois possveis valores pr-definidos: True ou False.

Aula 7 - Ambiente de programao Lazarus

91

e-Tec Brasil

7.4.3 Operadores
Quadro 7.9: Operadores aritmticos/relacionais/lgicos
Tipo de operadores

Smbolo

Aritmticos

+ (adio)
(subtrao)
* (multiplicao)
/ (diviso de pontos flutuantes)
Div (diviso Inteira)
Mod (resto da diviso de inteiros)

Relacionais

= (igual)
< > (diferente)
> (maior)
< (menor)
>= (maior ou igual)
<= (menor ou igual)

Lgicos

Not (negao)
And (E lgico)
Or (OU lgico)

Fonte: Autores

7.5 Aplicao
Neste tpico ser desenvolvida uma aplicao, na qual faremos apenas o uso
de comandos de entrada e sada para a soluo do problema a ser apresentado.
Entretanto, antes de passarmos ao enunciado do problema, importante
ressaltar algumas etapas necessrias ao desenvolvimento da soluo do mesmo.
Segundo Manzano e Mendes (1999), a primeira etapa compreende o entendimento por completo do problema em questo, no qual devemos identificar
os dados fornecidos, bem como o que se deseja calcular, de maneira a se
chegar soluo final. A segunda etapa caracteriza-se pela elaborao do
algoritmo. Com o algoritmo pronto, passa-se montagem da interface grfica
do programa; e, por ltimo, desenvolve-se o conjunto de instrues associado
aos eventos (procedimentos) para cada um dos componentes existentes em
seu formulrio que iro sofrer uma ao direta do usurio. Diante dessas
observaes, passamos, agora, ao desenvolvimento do programa.
Problema
Um funcionrio trabalha 5 dias por semana, 8 horas por dia. Fazer uma
aplicao para calcular o salrio semanal desse funcionrio sendo que o
valor da hora deve ser digitado via teclado. Apresentar o resultado em um
componente Edit (caixa de texto).

e-Tec Brasil

92

Algoritmos e Programao

Soluo
1 etapa aps entendido o problema exposto, devemos observar quais so
os dados fornecidos no enunciado, bem como o que se pede para calcular.
De acordo com uma primeira anlise do problema, constatamos que nos
fornecido o valor de cada hora trabalhada pelo funcionrio e que o mesmo
trabalha 8 horas por dia durante os cinco dias da semana. Observamos,
tambm, que, com base nessas informaes, devemos calcular o salrio
desse funcionrio. Sendo assim, podemos apresentar um pequeno resumo
com essas informaes:
Dados: Valor da hora trabalhada.
Trabalha 5 dias por semana sendo 8 horas por dia.
Pede-se: Salrio que o funcionrio ir receber, ao final de uma semana de trabalho.
2 etapa no nos preocuparemos em apresentar o algoritmo para essa
aplicao, tendo em vista que esse assunto j foi bastante abordado em aulas
anteriores, alm do que, dedicaremos uma ateno especial para o cdigo que
ser desenvolvido no IDE do Lazarus. Contudo, prezado aluno, importante
que nessa fase inicial da elaborao dos nossos primeiros programas em
Lazarus, voc realize essa atividade antes de passar etapa seguinte.
3 etapa essa etapa consiste em se elaborar a interface grfica do aplicativo.
Sendo assim, abra o Lazarus e inicie um novo projeto (Project > New Project
> Application). No formulrio da aplicao iremos inserir alguns componentes
que se encontram na aba Standard. Portanto, selecione essa aba e adicione
ao formulrio dois componentes do tipo Label, um abaixo do outro; e dois
componentes do tipo Edit, sendo que cada um deles dever ficar direita
de cada um dos labels. Em seguida, insira trs Buttons no formulrio. A
Figura 7.19 ilustra essa operao.

Aula 7 - Ambiente de programao Lazarus

93

e-Tec Brasil

Figura 7.19: Interface inicial clculo salrio semanal


Fonte: Software Lazarus

O passo seguinte alterar algumas das propriedades desses componentes


atravs do Object Inspector. Os valores a serem informados s propriedades
so inseridos direita de cada propriedade, na coluna de valores. Veja o
exemplo aplicado propriedade Caption de um componente TButton.

Figura 7.20: Propriedade Caption


Fonte: Software Lazarus

Para inserir outro valor nessa propriedade, exclua o valor existente, que no caso
Button1, e digite, por exemplo, Calcular. O resultado apresentado a seguir.

Figura 7.21: Alterao do valor da propriedade Caption


Fonte: Software Lazarus

Propriedades
Form1

Propriedade Caption altere para Clculo do Salrio Semanal


Label1

Propriedade Caption altere para Digite o valor da hora trabalhada:

e-Tec Brasil

94

Algoritmos e Programao

Label2

Propriedade Caption altere para Salrio =


Edit1

Propriedade Text deixe em branco


Edit2

Propriedade Text deixe em branco


Button1

Propriedade Caption altere para Calcular


Button2

Propriedade Caption altere para Limpar


Button3

Propriedade Caption altere para Sair


Observe como ficou a interface final (Figura 7.22).

Figura 7.22: Interface final clculo salrio semanal


Fonte: Software Lazarus

Neste momento, salve o seu projeto numa nova pasta (File > Save All).
4 etapa nesta etapa, ser feita a codificao do programa. O cdigo
desenvolvido de acordo com as aes que o usurio poder realizar quando
estiver usando o programa, tais como: clicar sobre um objeto, mover o mouse,
alterar o contedo de um componente da aplicao, etc. Dessa forma, toda vez
que quisermos escrever um cdigo em nosso aplicativo, associado a alguma
ao realizada pelo usurio, utilizaremos o evento correspondente daquele
componente com qual o usurio interagir.
Portanto, na soluo deste problema, vamos, inicialmente, escolher o evento
OnClick do boto Calcular, pois, a partir desse evento que sero executadas

Aula 7 - Ambiente de programao Lazarus

95

e-Tec Brasil

as instrues para o clculo do salrio do funcionrio. Sendo assim, selecione


no Object Inspector a aba Events, localize o evento OnClick e, em seguida,
d um duplo clique na coluna direita desse nome. Ao realizarmos essa
operao, o Lazarus gera automaticamente duas aes. A primeira delas
a de criar a declarao de um procedimento dentro da Unit, a qual est
associada o formulrio, conforme mostrado a seguir:
{TForm1}
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
private
{private declarations}
public
{public declarations}
end;
var
Form1: TForm1;

A segunda ao a de inserir dentro da Unit1, aps a seo Implementation,


a estrutura bsica (corpo) do procedimento Button1Click, de forma que
possamos escrever as instrues necessrias realizao da operao desejada
que, no caso, a de calcular o salrio. A Figura 7.23 ilustra essa ao.

Figura 7.23: Estrutura bsica do procedimento Button1Click


Fonte: Software Lazarus

e-Tec Brasil

96

Algoritmos e Programao

A seguir apresentado o procedimento, com o cdigo completo, para se


calcular o salrio semanal do funcionrio:
procedure TForm1.Button1Click(Sender: TObject);
var
VH, SALARIO: real;

Segundo Santos (1998), so


apresentadas algumas funes
de converso de tipos diferentes
de dados:
StrToFloat (Valor-Texto):
devolve o valor em real, o qual
foi passado como texto atravs
de parmetro.

begin
VH:= StrToFloat(Edit1.Text);
SALARIO:= VH * 8 * 5;

FloatToStr (Valor-Real):
retorna o valor em string (texto)
correspondente ao valor real
passado como parmetro.

Edit2.Text:= FloatToStr(SALARIO);
Edit1.SetFocus;
end;

Explicando
Inicialmente, declaramos as variveis VH e SALARIO como sendo do tipo
real, pois, as mesmas podero receber valores fracionrios. Como exemplo,
podemos citar o caso do usurio informar o valor da hora igual a 12,50 e, a, o
programa calcular R$ 500,00 para o salrio do funcionrio. Como a frmula
para clculo do salrio contm o valor da hora que real, assim, tambm, a
varivel SALARIO o ser, apesar de o resultado encontrado ser exato. Observe
que, antes da declarao dessas variveis, existe o identificador var, que tem
por objetivo indicar que logo aps a mesma, sero criadas as variveis do
procedimento. Em seguida, fizemos a converso do dado de entrada informado
pelo usurio no Edit1 que, neste caso, o valor da hora e o atribumos
varivel VH. Essa converso foi necessria, pois, qualquer dado contido num
componente Edit do tipo texto e, como o valor da hora numrico devemos,
dessa forma, convert-lo de texto para real. Ao lado, so apresentadas as
principais funes de converso para nmeros. Retomando nossa explicao,
posteriormente, realizamos o clculo do salrio do funcionrio e, logo aps,
o apresentamos no formulrio por meio do Edit2. Veja que, novamente, foi
necessria a converso de tipos, s que agora, a mesma feita de maneira
contrria, ou seja, de real para texto, pois, o resultado dever ser mostrado
num Edit. Por ltimo, foi usado o mtodo SetFocus que posicionar o cursor
no Edit1 do formulrio.
O prximo passo na soluo deste problema, programarmos os eventos
OnClick dos botes Limpar e Sair, respectivamente. Para isso, criamos os
procedimentos para esses botes de forma anloga ao que foi feito para o
boto Calcular. Outra maneira de gerarmos esses procedimentos padres
dando um duplo clique em cada um dos botes. O cdigo para cada um
desses procedimentos mostrado a seguir.

Aula 7 - Ambiente de programao Lazarus

97

e-Tec Brasil

procedure TForm1.Button2Click(Sender: TObject);


begin
Edit1.Text:= ;
Edit2.Text:= ;
Edit1.SetFocus;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
close;
end;

Explicando
As instrues relativas ao OnClick do boto Limpar, tm por objetivo apagar
os contedos dos componentes Edit1 e Edit2 respectivamente; j o mtodo
SetFocus reposiciona o cursor no Edit1 do formulrio. Quanto ao cdigo
relativo ao procedimento do boto Sair, tem-se que, o mesmo finaliza a
execuo da aplicao.
Agora, salve novamente a aplicao e, em seguida, execute-a (tecle F9).

Resumo
Nesta aula, voc teve a oportunidade de conhecer essa poderosa ferramenta
de programao que o Lazarus/Free Pascal, inicialmente atravs de alguns
conceitos. Posteriormente, aprendendo a fazer a instalao, bem como algumas
configuraes bsicas do Lazarus e, em seguida, foi levado a familiarizar-se
com o seu IDE. Conheceu, tambm, os elementos bsicos da linguagem
Pascal/Object Pascal suportados pelo compilador Free Pascal. Por ltimo, voc
executou o seu primeiro programa usando apenas estruturas sequenciais,
dentro de um ambiente voltado para o desenvolvimento de aplicaes com
interfaces grficas.
Encerramos assim, nossa stima aula, e, esperamos que o assunto apresentado,
tenha lhe estimulado bastante para que voc possa criar, a partir de agora,
programas por meio do uso dessa ferramenta com bastante criatividade e
qualidade. Para auxili-lo nesse processo, a seguir, daremos incio ao estudo
das outras estruturas de controle para o desenvolvimento de solues mais
apuradas. Vamos em frente, ento?

e-Tec Brasil

98

Algoritmos e Programao

Atividades de aprendizagem
1. Elaborar um projeto para calcular o salrio lquido de um funcionrio.
Para isto, so fornecidos o valor da hora trabalhada, o nmero de horas
trabalhadas no ms e o percentual de desconto a ser aplicado sobre o salrio base desse funcionrio. Sendo assim, o programa dever apresentar
o salrio lquido. Implementar, tambm, as rotinas de limpar os componentes do formulrio e de sair da aplicao, ou seja, inserir no formulrio
mais dois botes e programar o evento OnClick dos mesmos (adaptado
de Manzano; Mendes, 1999).
2. Fazer um projeto em Lazarus que leia os lados (A, B, C) do paraleleppedo, determine e imprima o volume (V) e a rea superficial (S).
Dados: V = A B C
S = 2 (A B + A C + B C)
3. Fazer um projeto em Lazarus que leia o raio de um crculo, determine e
imprima a rea correspondente.
Dado: A = R2
Onde: = 3.1416

Aula 7 - Ambiente de programao Lazarus

99

e-Tec Brasil

Aula 8 Estruturas condicionais


Objetivos
Conhecer as estruturas condicionais para o compilador Free Pascal.
Aplicar essas estruturas condicionais dentro do IDE do Lazarus.
Desenvolver programas de computador na linguagem do Lazarus/
FreePascal que se utilizam dessas estruturas, para a soluo de problemas que envolvam a tomada de decises.

8.1 Tomada de deciso


A linguagem Pascal/Object Pascal permite o uso de duas estruturas para a
tomada de deciso. Essas estruturas so:
IF ... then ... else

(Se ... ento ... seno)

Case ... of ... else ... end

(Caso ... seja ... seno ... fim do comando)

8.1.1 Estrutura condicional simples


Conforme visto em algoritmos, essa estrutura tem por finalidade analisar o valor
de uma expresso lgica e, caso o mesmo seja verdadeiro, executar a instruo
correspondente; caso contrrio, essa estrutura condicional abandonada e a
execuo do programa passa para o comando seguinte. A sintaxe (conjunto
de regras formais, usadas pela linguagem, para a definio dos comandos)
apresentada a seguir.
Sintaxe
if <expresso lgica> then

<instruo>;

Exemplo
if A > B then

ShowMessage (O valor de A maior que B!);

Aula 8 - Estruturas condicionais

101

e-Tec Brasil

Caso ocorra a necessidade de se usar mais de uma instruo para quando a


condio for verdadeira, devemos coloc-las num bloco de comandos, o qual
delimitado pelas palavras begin ... end; veja como fica a nova sintaxe:
Sintaxe
if <expresso lgica> then
begin
<instruo1>;
<instruo2>;
:
<instruoN>;
end;

No bloco de comandos anterior, foram inseridas vrias instrues, sendo essas


representadas pelas instruo1, instruo2 at instruoN. Essas instrues
podem ser entendidas como quaisquer dos comandos j estudados at o
momento, sendo inclusive outro comando if.
Exemplo
if A > B then

Segundo Santos (1998),


so apresentadas algumas
funes de converso de tipos
diferentesde dados:

begin
A:= B + 2;
B:= B 1;

IntToStr (Valor-Inteiro):
retorna o valor em string (texto)
correspondente ao valor inteiro
passado como parmetro.

Edit1.Text := IntToStr(A);
Edit2.Text := IntToStr(B);

end;

Com o objetivo de aplicarmos o uso dessa estrutura condicional na soluo


de um problema, passemos ento ao seu enunciado.

8.1.1.1 Aplicao
Problema
Fazer um projeto em Lazarus que leia os lados A e B de um terreno retangular.
Em seguida, calcule e imprima a rea desse terreno, apresentando-a atravs
de um componente TLabel. Apresentar, tambm, a mensagem: Terreno
espaoso, caso a rea calculada seja superior a 360 m2.
Observao
A rea de um terreno retangular dada pela frmula: rea = A B

e-Tec Brasil

102

Algoritmos e Programao

Soluo
a) Dados do problema:

Valores dos lados do terreno (A e B).


b) O que se pede:

Calcular a rea do terreno retangular e exibir uma mensagem.


c) Elaborao do algoritmo ou do fluxograma.
d) Elaborao da interface grfica.
Abra um novo projeto e insira no formulrio, dois componentes do tipo
Label, um embaixo do outro; dois componentes do tipo Edit, um ao lado
de cada componente Label; abaixo do segundo componente Label, insira
um componente Button; e, por ltimo, abaixo deste componente, insira dois
outros componentes Label, um ao lado do outro. O ltimo Label (Label4) ser
usado para exibir o valor da rea calculado. A Figura 8.1 ilustra essa interface.

Figura 8.1: Formulrio inicial do clculo da rea de um terreno


Fonte: Software Lazarus

A partir da, altere as propriedades desses componentes conforme apresentado


no Quadro 8.1.
Quadro 8.1: Propriedade modificadas dos componentes do formulrio inicial
Componente

Propriedade

Valor

Form1

Caption

Clculo da rea de um Terreno

Label1

Caption

Informe um lado do terreno:

Label2

Caption

Informe o outro lado do terreno:

Edit1

Text

Obs.: apagar o contedo desta propriedade.

Edit2

Text

Obs.: apagar o contedo desta propriedade.

Button1

Caption

Calcular

Label3

Caption

rea =

Fonte: Autores

Aula 8 - Estruturas condicionais

103

e-Tec Brasil

A Figura 8.2 ilustra como ficou a interface grfica final do projeto.

Figura 8.2: Formulrio final do clculo da rea de um terreno


Fonte: Software Lazarus

Agora, selecione o Label4 e apague o valor da propriedade Caption. Em


seguida, salve o projeto numa nova pasta.
e) Cdigo do projeto.
Agora, vamos programar no evento OnClick do boto Calcular. Para isso,
d um duplo clique no boto Calcular e digite dentro do procedimento, o
cdigo a seguir:
procedure TForm1.Button1Click(Sender: TObject);
var
A, B, AREA: real;
begin
A:= StrToFloat(Edit1.Text);
B:= StrToFloat(Edit2.Text);
AREA:= A * B;
Label4.Caption:= FloatToStr(AREA);
if AREA > 360 then
ShowMessage(Terreno espaoso);
end;

Explicando
Inicialmente, declaramos as variveis A, B e AREA como sendo do tipo real,
pois, as mesmas podero receber valores fracionrios. Em seguida, solicitada
a leitura dos dois lados do terreno, os quais foram atribudos s variveis A e
B, respectivamente. Conforme explicado anteriormente, observe que feita
a converso de tipos de dados. Posteriormente, realizamos o clculo da rea

e-Tec Brasil

104

Algoritmos e Programao

do terreno o qual atribudo varivel AREA e, logo aps, o apresentamos


no formulrio por meio de um componente do tipo TLabel, sendo este, o
Label4. Veja que, novamente, foi necessria a converso de tipos, s que
agora, a mesma feita de maneira contrria inicial, ou seja, de real para
texto, pois, o resultado dever ser guardado na propriedade Caption. Por
ltimo, atravs da estrutura condicional simples, verificamos se possvel
exibir a mensagem desejada, caso a rea seja maior que 360. Portanto, s
ser impresso a mensagem Terreno espaoso se a condio for verdadeira,
ou seja, se AREA > 360.
Para concluir esse programa, vamos inserir no formulrio dois novos componentes do tipo TButton, colocando-os ao lado do boto Calcular. Em seguida,
altere a propriedade Caption desses botes para Limpar e Sair, respectivamente,
e no evento OnClick de cada um deles, insira os seguintes cdigos: (D um
duplo clique no boto Limpar).
procedure TForm1.Button2Click(Sender: TObject);
begin
Edit1.Text:= ;
Edit2.Text:= ;
Label4.Caption:= ;
Edit1.SetFocus;
end;

Agora, d um duplo clique no boto Sair:


procedure TForm1.Button3Click(Sender: TObject);
begin
close;
end;

Grave novamente o seu projeto (File > Save All) e, em seguida, execute (tecla
F9) o programa para ver seu funcionamento.

8.1.2 Estrutura condicional composta


Esta estrutura tem por objetivo analisar o resultado de uma expresso lgica,
de tal forma que, caso o valor seja verdadeiro, ser executado a instruo que
se encontra aps a opo then e antes do else; caso contrrio, executa-se a
outra instruo, a qual se situa aps a opo else. A sintaxe desta estrutura
apresentada a seguir.

Aula 8 - Estruturas condicionais

105

e-Tec Brasil

Sintaxe
if <expresso lgica>
then <instruo>
else <outra instruo>;

Num comando if, a instruo que precede o else no possui ponto-e-vrgula


ao final, pois, o else faz parte do comando if, sendo assim, este comando
s poder ser finalizado aps a execuo da instruo else.
Caso seja necessrio utilizar mais de uma instruo quando o resultado da
expresso lgica for verdadeiro ou, ento, falso, devemos coloc-las num
bloco de comandos, o qual delimitado pelas palavras begin ... end.
Veja como fica a nova sintaxe:
Sintaxe
if <expresso lgica> then
begin
<instruo1>;
<instruo2>;
:
<instruoN>;
end
else
begin
<instruo1>;
<instruo2>;
:
<instruoN>;
end;

8.1.2.1 Aplicao
Fazer um projeto em Lazarus que leia a altura (em metros) e o sexo (masculino
ou feminino) de uma pessoa. Com base nesses dados, calcular e imprimir o
peso ideal desse indivduo, de acordo com a seguinte frmula:

e-Tec Brasil

Para homens o peso ideal : 72 ALTURA 60;

Para mulheres o peso ideal : 62 ALTURA 50.

106

Algoritmos e Programao

Soluo
a) Dados do problema:

Valor da altura (em metros).

Sexo (Masculino ou Feminino).


b) O que se pede:

Peso ideal de uma pessoa.


c) Elaborao do algoritmo ou do fluxograma.
d) Elaborao da interface grfica.
Os componentes que formam essa interface so apresentados na Figura 8.3.

Figura 8.3: Formulrio do clculo do peso ideal


Fonte: Software Lazarus

Veja que nesta aplicao so usados dois novos tipos de componentes: TGroupBox
e TRadioButton, ambos da aba Standard. A utilizao desses componentes na
interface feita da seguinte maneira: insira o componente do tipo TGroupBox
no formulrio e altere o seu Caption para Sexo; em seguida, insira dentro
deste componente GroupBox1, dois componentes do tipo TRadioButton,
sendo estes representados por RadioButton1 e RadioButton2, respectivamente. Altere a propriedade Caption do RadioButton1 para Masculino
e do RadioButton2 para Feminino. Selecione novamente, o componente
RadioButton1 e altere a propriedade ChecKed para True. Esta alterao tem
por objetivo deixar previamente marcada a opo Masculino para o sexo
de uma pessoa, quando a aplicao for executada. Os demais componentes
do formulrio devero ser configurados da maneira como j foi apresentada
em exerccios anteriores.

Aula 8 - Estruturas condicionais

107

e-Tec Brasil

Depois de implementada a interface, podemos ainda, assim, alterar a propriedade


ReadOnly do componente Edit2, para o valor True, de maneira que este componente s exibir o resultado, bloqueando qualquer modificao no mesmo.
Por fim, grave o projeto numa nova pasta (File > Save All).
e) Cdigo do projeto.
Agora, vamos programar no evento OnClick do boto Calcular. Para isso,
d um duplo clique no boto Calcular e digite dentro do procedimento o
cdigo a seguir:
procedure TForm1.Button1Click(Sender: TObject);
var
ALTURA, PESOID: real;
begin
ALTURA:= StrToFloat(Edit1.Text);
if RadioButton1.Checked then
PESOID:= 72 * ALTURA - 60
else PESOID:= 62 * ALTURA - 50;
Edit2.Text:= FloatToStr(PESOID);
end;

Explicando
Inicialmente, declaramos as variveis ALTURA e PESOID como sendo do tipo real.
Em seguida, solicitada a leitura da altura da pessoa, sendo seu valor atribudo
varivel ALTURA. Observe que, nesta aplicao no foi necessria a criao
de uma varivel para se guardar o sexo da pessoa, pois, a atribuio desta
informao ser feita mediante escolha de uma opo dentro do componente
GroupBox1, ou seja, quando o usurio clicar no valor desejado para o sexo,
ser atribudo o valor True propriedade Checked do RadioButton escolhido. Baseado nesta escolha, atravs de uma estrutura condicional composta,
verificamos se o valor contido na propriedade ChecKed do RadioButton1
verdadeiro (True). Caso seja, aplicamos a frmula para o peso ideal masculino;
caso contrrio, calculamos o peso ideal feminino. Em seguida, exibimos atravs
do componente Edit2, o resultado encontrado.
Outra forma de se usar a estrutura condicional neste projeto apresentada a
seguir. Entretanto, observe que se trata apenas de um exemplo para ilustrar
o uso do bloco de comandos delimitado por begin ... end tanto no
then quanto no else, j que a insero do mesmo comando (Edit2.Text:=
FloatToStr(PESOID);) em dois blocos mutuamente excludentes um
contrassenso, ou seja, no uma boa prtica.

e-Tec Brasil

108

Algoritmos e Programao

procedure TForm1.Button1Click(Sender: TObject);


var
ALTURA, PESOID: real;
begin
ALTURA:= StrToFloat(Edit1.Text);
if RadioButton1.Checked then
begin
PESOID:= 72 * ALTURA - 60;
Edit2.Text:= FloatToStr(PESOID);
end
else
begin
PESOID:= 62 * ALTURA - 50;
Edit2.Text:= FloatToStr(PESOID);
end;
end;

Como atividade complementar, programe os cdigos dos botes Limpar e


Sair. Por ltimo, grave o projeto novamente e execute a aplicao para testar
seu funcionamento.

8.1.3 Estrutura condicional encadeada


Esse tipo de estrutura necessrio quando se deseja tomar uma deciso (caminho),
mediante uma srie de possibilidades apresentadas num problema. representada
atravs de uma estrutura condicional que se encontra contida dentro de outra.
Essa estrutura pode estar localizada internamente ao then (ento) ou ao else
(seno). Por existirem vrias maneiras de se aplicar esta estrutura, faremos a
seguir uma aplicao para uma melhor compreenso da mesma.

8.1.3.1 Aplicao
Fazer um projeto em Lazarus para ler o valor total que um cliente pagou no
abastecimento de seu veculo e a quantidade de litros abastecida. Em seguida,
calcular e imprimir o valor do litro da gasolina. Caso o valor seja inferior a
R$ 2,00, escrever a seguinte mensagem: Combustvel muito barato. Se o
valor estiver compreendido entre R$ 2,00 e R$ 2,40, escrever Promoo e
caso seja maior que R$ 2,40, escrever Sem Promoo. A Figura 8.4 ilustra
a interface grfica desse projeto.

Aula 8 - Estruturas condicionais

109

e-Tec Brasil

Observao
a) Utilizar a propriedade ReadOnly para proteger os contedos de Edit3 e
Edit4.
b) Neste projeto ser utilizado um novo tipo de componente TlistBox que
se encontra na aba Standard. Esse objeto permite apresentar informaes
dentro de uma caixa de listagem. Para este projeto, o componente ser
usado para exibir o valor do litro de gasolina calculado em cada operao
realizada pelo usurio, desde que este clique no boto ADICIONAR.

Figura 8.4: Formulrio clculo do valor do litro de gasolina


Fonte: Software Lazarus

Soluo
a) Dados do problema:

Valor pago no abastecimento de um veculo (em R$).

Quantidade de litros abastecida.


b) O que se pede:

Valor do litro da gasolina.

Mensagem, de acordo com os seguintes critrios:


Valor do litro < 2,00: Combustvel muito barato.
2,00 < valor do litro < 2,40: Promoo.
Valor do litro > 2,40: Sem Promoo.
c) Elaborao do algoritmo ou do fluxograma.
d) Elaborao da interface grfica.
Para introduzir o componente Listbox1 dentro do formulrio, basta localiz-lo
na aba Standard, em seguida selecion-lo e depois inseri-lo no local desejado
dentro do formulrio. Os demais componentes devero ser configurados da
maneira como j foi apresentada em exerccios anteriores.

e-Tec Brasil

110

Algoritmos e Programao

e) Cdigo do projeto.
Aps a elaborao do formulrio do projeto, salve a aplicao numa nova
pasta. Em seguida, d um duplo clique no boto PROCESSAR e digite o cdigo
a seguir, dentro do procedimento.
procedure TForm1.Button1Click(Sender: TObject);
var
VP, QL, PL: real;
begin
VP:= StrToFloat(Edit1.Text);
QL:= StrToFloat(Edit2.Text);
PL:= VP/QL;
Edit3.Text:= FloatToStr(PL);
if PL < 2.00 then
Edit4.Text:= Combustvel muito barato
else if (PL >= 2.00) and (PL <= 2.40) then
Edit4.Text:= Promoo
else Edit4.Text:= Sem Promoo;
end;

Explicando
Inicialmente, declaramos as variveis de entrada VP e QL, bem como a varivel
de sada PL, todas como sendo do tipo real. Em seguida, solicitada a leitura do
valor gasto no abastecimento do veculo e da quantidade de litros abastecida
no mesmo, sendo os valores atribudos s variveis VP e QL, respectivamente.
Logo aps, feito o clculo do preo do litro de gasolina, sendo seu valor
atribudo varivel PL. Na sequncia, o resultado exibido no formulrio atravs
do componente Edit3. Posteriormente, utilizamos a estrutura condicional
encadeada para verificar dentre os diferentes critrios apresentados, qual deles
torna o resultado da expresso lgica verdadeiro. A partir do momento no
qual esse resultado encontrado, o comando correspondente a essa condio
executado, ou seja, a mensagem atribuda ao componente Edit4 e a
estrutura condicional encadeada finalizada.
Veja que, nesta aplicao, o uso do operador and na expresso lgica:
(PL >= 2.00) and (PL <= 2.40), faz com que o resultado da mesma somente

seja verdadeiro, se ambos os testes forem verdadeiros.


Cdigo do boto ADICIONAR (evento OnClick):

Aula 8 - Estruturas condicionais

111

e-Tec Brasil

procedure TForm1.Button2Click(Sender: TObject);


begin
ListBox1.Items.Add(Edit3.Text);
end;

Explicando
O comando desta procedure tem por finalidade adicionar no ListBox1 uma
string (texto), atravs do mtodo Add da propriedade Items.
A seguir, so apresentadas as instrues do boto LIMPAR associadas ao
evento OnClick.
procedure TForm1.Button3Click(Sender: TObject);
begin
Edit1.Clear;
Edit2.Clear;
Edit3.Clear;
Edit4.Clear;
ListBox1.Clear;
Edit1.SetFocus;
end;

Explicando
O mtodo Clear do componente do tipo TEdit, tem a finalidade de limpar
o valor contido na propriedade Text deste objeto, de maneira semelhante ao
comando Editx.Text := ; que ns j utilizamos em exerccios anteriores.
O uso do mtodo Clear junto ao ListBox1, tambm, limpa o contedo da
caixa de listagem.
Observao
O x indica o nmero de um determinado componente Edit.
Agora, programe o cdigo do boto SAIR. Em seguida, grave o projeto (File
> Save All), execute a aplicao e faa uma simulao de todos os recursos
disponveis na mesma.

8.1.4 Estrutura seletiva case ... of


Esta estrutura nos permite selecionar uma opo dentre as vrias que se
apresentam, baseado no valor de uma expresso ou varivel, ou seja, caso o
valor da expresso ou varivel corresponda a algum dos valores disponveis
dentro da estrutura, o bloco de comandos referente a esse valor (opo)

e-Tec Brasil

112

Algoritmos e Programao

ser executado e, logo em seguida, o comando finalizado; caso contrrio, se


nenhuma das opes disponveis for igual ao valor da expresso ou varivel
do case e, caso a estrutura possua a opo else, pois, esta opcional, a
mesma ser executada.
Sintaxe
case <expresso ou varivel> of
<opo 1>: <instruo1>;
<opo 2>: <instruo2>;
<opo 3>: <instruo3>;
:

<opo N>: <instruoN>;


else
<outra instruo>;
end;

Explicando

A expresso ou varivel do comando case, tem de resultar, obrigatoriamente, num valor ordinal, normalmente do tipo Char ou Integer. O
resultado jamais poder ser do tipo real.

Caso uma determinada opo do comando case possua mais de uma instruo, estas devero ser colocadas dentro de um bloco: begin ... end.

O comando case se assemelha estrutura condicional encadeada, porm, se apresenta de uma maneira mais simples e eficiente.

As opes (opo 1, opo 2, ..., opo N) contidas na sintaxe, no necessariamente devem ser definidas como um valor, mas podem especificar intervalos. Veja o exemplo:

valor ordinal
Os tipos ordinais so
representados por conjuntos
ordenados de valores ou que
estejam emsequncia.

case key of
0..9: s:= dgito;
else s:= outro caractere qualquer;
end;

8.1.4.1 Aplicao
Com base no Quadro 8.2, escreva um projeto em Lazarus que leia o cdigo
de um sanduche e a quantidade comprada do mesmo. Em seguida, calcule
e mostre o valor a pagar. Apresentar, tambm, num componente do tipo
TListBox, o nome do sanduche e o valor a pagar.

Aula 8 - Estruturas condicionais

113

e-Tec Brasil

Quadro 8.2: Dados referentes aplicao da estrutura case ... of


Cdigo

Nome

Preo unitrio (R$)

Hambrguer

5.00

X-Picanha

9.90

X-Salada

8.00

Outros

7.50

Fonte: Autores

Soluo
a) Dados do problema:

Cdigo do sanduche e quantidade comprada que devero ser lidos.

Tabela contendo nome e preo unitrio do sanduche que dever ser


utilizada no programa.
b) O que se pede:

Valor a pagar na compra de um determinado tipo de sanduche.


c) Elaborao do algoritmo ou do fluxograma.
d) Elaborao da interface grfica.
Os componentes do formulrio desta aplicao devero ser configurados da
maneira como j foi apresentada em exerccios anteriores. A Figura 8.5 ilustra
esse formulrio.

Figura 8.5: Formulrio aplicao lanchonete


Fonte: Software Lazarus

Aps a elaborao do formulrio, salve a aplicao numa nova pasta.


e) Cdigo do projeto.

e-Tec Brasil

114

Algoritmos e Programao

Explicando
Na resoluo desta aplicao, devemos verificar qual o cdigo do sanduche
informado pelo usurio para que possamos calcular o preo a pagar, tendo
em vista que cada sanduche tem um preo diferente. Como existem vrios
cdigos, temos que fazer vrias comparaes, de tal forma que para cada um
deles seja realizado um clculo. Dessa forma, podemos utilizar uma estrutura
condicional encadeada ou aplicarmos o comando case ... of, pois, o valor
que representa o cdigo do sanduche do tipo inteiro.
Para que voc possa comparar essas duas estruturas, sero apresentadas duas
solues, sendo a primeira com o uso da estrutura condicional encadeada e a
segunda com o comando case ... of. Entretanto, no seu projeto, desenvolva
apenas o cdigo referente segunda soluo, pois contm a estrutura que
estamos aprendendo no momento.
1 soluo
procedure TForm1.Button1Click(Sender: TObject);
var
COD,QUANT: byte;
VP: real;
NOME: string;
begin
COD:= StrToInt(Edit1.Text);

Segundo Santos (1998),


so apresentadas algumas
funes de converso de tipos
diferentesde dados:

QUANT:= StrToInt(Edit2.Text);
if COD = 1 then
begin

StrToInt (Valor-Texto):
devolve o valor em inteiro,
correspondente ao texto
passadocomoparmetro.

VP:= QUANT * 5.00;


NOME:= Hambrguer;
end
else
if COD = 2 then
begin
VP:=
QUANT * 9.90;
NOME:= X-Picanha;
end
else
if COD = 3 then
begin
VP:=
QUANT * 8.00;
NOME:= X-Salada;
end

Aula 8 - Estruturas condicionais

115

e-Tec Brasil

else
if COD = 4 then
begin
VP:=
QUANT * 7.50;
NOME:= Outros;
end
else
begin
ShowMessage(Cdigo do sanduche invlido);
Edit1.SetFocus;
Exit;
end;
Edit3.Text:= FloatToStr(VP);
ListBox1.Items.Add(NOME + R$ + Edit3.Text);
Edit1.SetFocus;
end;

2 soluo
procedure TForm1.Button1Click(Sender: TObject);
var
COD,QUANT: byte;
VP: real;
NOME: string;
begin
COD:= StrToInt(Edit1.Text);
QUANT:= StrToInt(Edit2.Text);
case COD of
1: begin
VP:=
QUANT * 5.00;
NOME:= Hambrguer;
end;
2: begin
VP:=
QUANT * 9.90;
NOME:= X-Picanha;
end;
3: begin
VP:=
QUANT * 8.00;
NOME:= X-Salada;
end;

e-Tec Brasil

116

Algoritmos e Programao

4: begin
VP:=
QUANT * 7.50;
NOME:= Outros;
end;
else
begin
ShowMessage(Cdigo do sanduche invlido);
Edit1.SetFocus;
Exit;
end;
end;
Edit3.Text:= FloatToStr(VP);
ListBox1.Items.Add(NOME + R$ + Edit3.Text);
Edit1.SetFocus;
end;

Explicando
Nesta soluo no se criou uma varivel para se guardar o preo de determinado sanduche tendo em vista que ele se encontra fixo para cada cdigo
apresentado no Quadro 8.2 no enunciado do problema.
Foi necessria a criao da varivel nome para que se pudesse exibi-lo no
componente Listbox1. Observe, tambm, que o uso excessivo de instrues
encadeadas na primeira soluo torna o entendimento do problema um
pouco confuso.
Tendo em vista que ambas as solues buscam resolver o mesmo problema,
a segunda soluo, com o uso do comando case, ficou mais simples de se
entender, pois as vrias comparaes existentes na primeira soluo foram
substitudas neste comando pelos possveis valores que o cdigo de um sanduche pode ter. Desta forma, o valor informado pelo usurio referente ao
cdigo, que armazenado na varivel COD, comparado com os diversos
valores discriminados na estrutura, de tal forma que se houver algum valor
que satisfaa a igualdade, as instrues referentes mesma sero executadas
e o comando finalizado.
Outro ponto a ser observado quanto ao uso da opo else. Assim sendo,
caso no seja informado um cdigo vlido para o sanduche, as instrues
desse bloco sero executadas. O uso do exit ao final dessa clusula tem por
objetivo abandonar a execuo do procedimento naquele ponto.

Aula 8 - Estruturas condicionais

117

e-Tec Brasil

Ainda sobre a clusula else, veja que permitido o uso do ponto e vrgula (;)
antes do mesmo, no comando case ... of, diferentemente do que ocorre
no comando if ... then ... else.
Por ltimo, veja que a instruo que faz uso do componente ListBox1 visa
concatenar (agrupar) dentro do componente trs strings que so: o nome
do sanduche, o smbolo monetrio R$ e o valor armazenado na propriedade
Text do Edit3 que o valor a pagar. Portanto, lembre-se que para concatenar
strings no Free Pascal, deve-se usar o sinal de +.

Resumo
Nesta aula, voc aprendeu como usar as estruturas condicionais dentro do
IDE do Lazarus. Agora, veja que, com o uso dessas estruturas, conseguimos
fazer programas mais interessantes, no mesmo? Entretanto, no iremos
parar por aqui, pois ainda teremos que trabalhar com as demais estruturas
de controle abordadas em algoritmos. Dessa forma, caso voc tenha alguma
dvida nessa lio, refaa-a, pois precisaremos muito desses comandos nas
prximas lies, certo? Ento, vamos adiante?

Atividades de aprendizagem
1. Fazer um projeto em Lazarus para ler o peso (kg) e a altura (m) de uma
pessoa e determinar se o indivduo est com um peso favorvel (situao). Essa situao determinada atravs do clculo do IMC (ndice de
Massa Corprea), que definida como sendo a relao entre o peso e o
quadrado da altura do indivduo. Ou seja,

A situao do peso determinada a seguir:


Condio

Situao

IMC abaixo de 20

Abaixo do peso

IMC de 20 at 25

Peso Normal

IMC acima de 25

Acima do peso

Observao
Desenvolver o layout do formulrio usando sua criatividade.

e-Tec Brasil

118

Algoritmos e Programao

2. Fazer um projeto em Lazarus para ler o ano e o ms de nascimento


(1 a 12) de uma pessoa, bem como o ms atual. Caso o ms atual seja
igual ao ms de nascimento, escrever a mensagem: ms referente a
seu aniversrio, caso contrrio, escrever a mensagem no o ms do
seu aniversrio. Calcular e mostrar a idade dessa pessoa levando-se em
conta apenas o ms e o ano.
3. Fazer um projeto em Lazarus que leia um valor numrico inteiro, o qual
representa um determinado dia da semana (1 domingo, 2 segunda-feira, ... , 7 sbado). Baseado neste valor, apresentar por extenso, qual o
nome correspondente a esse dia. Caso o valor informado no represente
nenhum dos dias da semana, apresentar a mensagem: valor invlido.
Observao
Utilizar o comando case ... of usando sua criatividade.

Aula 8 - Estruturas condicionais

119

e-Tec Brasil

Aula 9 Estruturas de repetio


Objetivos
Entender como funcionam as estruturas de repetio no ambiente
de programao visual (Lazarus).
Elaborar programas utilizando estruturas de repetio.

9.1 Repetio
Nesta aula sero apresentadas as estruturas de repetio abordadas em algoritmos e que so utilizadas no IDE do Lazarus, ou seja, suportadas pelo compilador
Free Pascal. importante observar que, o entendimento do funcionamento
das estruturas apresentadas nesta aula o mesmo do que foi aprendido em
algoritmos. Sendo assim, o que se diferencia apenas a sintaxe, pois essas
estruturas devem ser escritas da maneira que o compilador as reconhea.

9.2 Estrutura while ... do (enquanto ... faa)


Nesta estrutura, os comandos internos mesma sero executados repetidamente, enquanto a condio permanecer verdadeira, sendo que esses
comandos devem ser colocadas num bloco definido com as instrues begin
... end. Veja como fica a sintaxe dessa estrutura.

Segundo Santos (1998),


so apresentadas algumas
funes de converso de tipos
diferentesde dados:
DateToStr (Valor-Data):
devolve a string correspondente
ao valor da data passada como
parmetro.
StrToDate (Valor-Texto):
retorna uma data
correspondente ao texto passado
como parmetro.

Sintaxe
while <condio> do
begin
<instruo1>;
<instruo2>;
<instruoN>;

end;

Explicando
Nesta estrutura de repetio, o uso do begin ... end ser necessrio
apenas, quando houver mais de um comando interno ao lao.

Aula 9 - Estruturas de repetio

121

e-Tec Brasil

9.2.1 Aplicao
Desenvolver um projeto em Lazarus que apresente num componente do tipo
TListBox, os nmeros inteiros que sejam pares e que estejam compreendidos
entre 0 e 30. Calcular e imprimir, tambm, a soma desses nmeros pares.
Observao
Para que um nmero inteiro seja par, o resto da diviso inteira desse nmero
por dois, tem de resultar zero.
Soluo
a) Dados do problema:

Valores inteiros situados na faixa de 0 a 30.


b) O que se pede:

Exibir cada um dos valores pares contidos no intervalo fornecido.

Calcular o somatrio dos nmeros pares desse intervalo.


c) Elaborao do algoritmo ou do fluxograma.
d) Elaborao da interface grfica.
Na elaborao do formulrio desta aplicao no necessrio usar componentes para receber os dados de entrada, pois esses valores j foram definidos
a partir do enunciado do problema, ou seja, so valores numricos inteiros
que vo de zero a trinta. Sendo assim, logo aps iniciar um novo projeto
(Project > New Project > Application), mude a propriedade Caption do
formulrio para: Nmeros Pares. Adicione na parte superior do formulrio
trs componentes do tipo TButton, sendo um ao lado do outro. Em seguida,
altere a propriedade Caption de cada um deles para: Processar, Limpar
e Sair, respectivamente. Abaixo desses Buttons, insira um componente do
tipo TGroupBox, o qual representado por GroupBox1 e altere sua propriedade
Caption para: Respostas. A seguir, insira dentro deste componente: um
Label1, de forma a ter sua propriedade Caption alterada para: Nmeros
Pares na faixa de 0 a 30:; abaixo deste, um ListBox1; e, abaixo do ListBox1,
um Label2, o qual ter sua propriedade Caption alterada para: Somatrio
dos nmeros pares no intervalo de 0 a 30 = e, por ltimo, direita deste,
um Edit1. A Figura 9.1 ilustra esse formulrio.

e-Tec Brasil

122

Algoritmos e Programao

Figura 9.1: Formulrio nmeros pares


Fonte: Software Lazarus

e) Cdigo do projeto.
Aps a elaborao do formulrio do projeto, salve a aplicao numa nova
pasta. Em seguida, d um duplo clique no boto Processar e digite o cdigo
dentro do procedimento.
procedure TForm1.Button1Click(Sender: TObject);
var
I: integer;
SOMA: integer;
begin
I:= 0;
SOMA:= 0;
while I <= 30 do
begin
if (I MOD 2) = 0 then
begin

ListBox1.Items.Add(IntToStr(I));

SOMA:= SOMA + I;

end;
I:= I + 1;
end;
Edit1.Text:= IntToStr(SOMA);
end;

Explicando
Primeiramente so declaradas as variveis I e SOMA que sero utilizadas no
programa. Em seguida, inicializamos cada uma dessas variveis com o valor

Aula 9 - Estruturas de repetio

123

e-Tec Brasil

zero. Nesta soluo necessrio percorrer o intervalo fornecido de maneira a


verificar se cada nmero contido nesse intervalo par. Para isso fazemos uso
do comando de repetio (while ... do), o qual ir executar trinta e uma
vezes as instrues internas a ele, pois o intervalo dever variar de 0 a 30. No
final, quando a condio I <= 30 no for mais satisfeita, ou seja, quando a
varivel I atingir o valor 31, abandona-se o comando de repetio e passa-se
para a prxima instruo que a de exibir atravs de um componente Edit1
o valor da soma de todos os nmeros pares desse intervalo.
Sendo assim, este programa ir a cada lao de repetio, por meio de uma
estrutura condicional simples, verificar se o valor da varivel I, que representa
um nmero desse intervalo, par. Essa verificao feita com o uso do
operador MOD, o qual devolve o resultado do resto da diviso inteira do valor
da varivel I por 2. Dessa forma, caso a condio seja verdadeira, ou seja,
o resultado do resto seja igual a zero, o valor de I exibido no ListBox1,
pois o mesmo par. Na sequncia, o valor de I somado ao valor que j se
encontrava em SOMA, resultando num novo valor para SOMA, de maneira
que, ao final da estrutura de repetio, teremos o resultado acumulado de
todos os nmeros pares nesta varivel.
Por fim, programe os cdigos dos botes Limpar e Sair e, em seguida, salve
o projeto novamente.

9.3 Estrutura for ... do (para ... faa)


Esta estrutura faz uso de uma varivel de controle, de tal forma a executar
um nmero determinado de repeties (iteraes).
Sendo assim, este comando s poder ser utilizado quando se conhece o
valor inicial e final da varivel de controle. Esta varivel de controle ser
incrementada ou decrementada de um em um, automaticamente. A sintaxe
dessa estrutura apresentada a seguir.
Sintaxe
for <varivel>:= <valor inicial> to (downto) <valor final> do
begin
<instruo1>;
<instruo2>;
<instruoN>;
end;

e-Tec Brasil

124

Algoritmos e Programao

Explicando
bom observar que o comando for ... do pode ser utilizado tanto com o
valor inicial da varivel de controle menor que o valor final como o contrrio,
ou seja, com o valor inicial da varivel de controle maior que o valor final
desta varivel. Para a primeira situao a sintaxe a seguinte: for ... to
... do. Para a segunda, a sintaxe : for ... downto ... do.
De maneira semelhante estrutura de repetio anterior (while ... do), o
uso do begin ... end ser necessrio apenas, quando houver mais de
um comando interno ao lao.

9.3.1 Aplicao
Elaborar um projeto em Lazarus que calcule e imprima o resultado do fatorial
de um nmero inteiro positivo. O fatorial de um nmero N pode ser entendido
como sendo multiplicaes sucessivas a partir do nmero 1 at o nmero
para o qual se deseja calcular seu fatorial, sendo o fatorial desse nmero
expresso por N!.
Exemplo
6! = 1 2 3 4 5 6 = N!
Observao
a) No se calcula fatorial para nmeros negativos.
b) 0! = 1.
Soluo
a) Dados do problema:

Nmero inteiro positivo.


b) O que se pede:

Calcular o fatorial do nmero fornecido.


c) Elaborao do algoritmo ou do fluxograma.
d) Elaborao da interface grfica.
Abra um novo projeto (Project > New Project > Application), mude a
propriedade Caption do formulrio para: Fatorial de um nmero. Adicione na parte superior do formulrio um Label1 e altere sua propriedade
Caption para: Fatorial de qual nmero?. direita deste Label, insira um

Aula 9 - Estruturas de repetio

125

e-Tec Brasil

componente Edit1. Abaixo desses dois componentes insira um Button1 e


altere sua propriedade Caption para: Processar. A seguir, insira abaixo
desse Button um Label2, de forma a ter sua propriedade Caption alterada
para: Fatorial=; e, por ltimo, direita deste Label, insira um Edit2. A
Figura 9.2 ilustra esse formulrio.

Figura 9.2: Formulrio fatorial de um nmero


Fonte: Software Lazarus

e) Cdigo do projeto.
Aps a elaborao da interface do projeto, salve a aplicao numa nova pasta.
Em seguida, d um duplo clique no boto Processar e digite o cdigo dentro
do procedimento.
procedure TForm1.Button1Click(Sender: TObject);
var
I, N, FAT: integer;
begin
N:= StrToInt(Edit1.Text);
FAT:= 1;
for I:= 1 to N do
begin
FAT:= FAT * I;
end;
Edit2.Text:= IntToStr(FAT);
Edit1.SetFocus;
end;

Explicando
Primeiramente so declaradas as variveis I, N e FAT que sero utilizadas no
programa. Em seguida, solicitado o dado de entrada para o qual se deseja
calcular seu fatorial. A partir da, inicializamos a varivel FAT com o valor
um, pois a mesma ter por objetivo, acumular as multiplicaes sucessivas
de 1 at o valor de N e sendo assim, no poder ser inicializada com zero.

e-Tec Brasil

126

Algoritmos e Programao

Na sequncia, fazemos uso da estrutura de repetio (for ... do) que ter
a quantidade de iteraes de acordo com o valor informado para o fatorial
desejado, ou seja, se o nmero para o qual se deseja calcular o fatorial for
cinco, a estrutura de repetio executar os comandos internos, mesma,
cinco vezes; se for dez, os comandos sero executados dez vezes e assim por
diante. Dessa forma, este programa ir a cada lao de repetio, acumular na
varivel FAT o produto da varivel I pelo valor j armazenado anteriormente
em FAT, resultando num novo valor para FAT e, assim sucessivamente, at
que o valor da varivel de controleI exceda o valor da varivel N. Por fim,
apresentamos o valor encontrado para o fatorial atravs do componente Edit2.

9.4 Estrutura repeat ... until (repita ... at)


Diferentemente da estrutura de repetio while ... do, o teste da condio
na estrutura repeat ... until realizada apenas ao final da repetio, o
que garante que o bloco de comandos internos a essa estrutura seja executado
ao menos uma vez. Outro ponto a ser lembrado que os comandos contidos
nessa estrutura so executados enquanto a condio permanecer falsa.
Veja a seguir como se apresenta a sintaxe para essa estrutura.
Sintaxe
repeat
<instruo1>;
<instruo2>;
<instruoN>;
until <condio>;

9.4.1 Aplicao
Fazer um projeto em Lazarus que mostre a srie de Fibonacci at o vigsimo
termo da srie. A sequncia desta srie formada da seguinte maneira: 1,
1, 2, 3, 5, 8, 13, 21, ... . Por definio, essa srie apresenta os dois primeiros
termos com valor igual a 1 (um) e os demais so calculados como a soma dos
seus dois antecessores (adaptado de GUIMARES; LAGES, 1994).
Soluo
a) Dados do problema: .
b) O que se pede:

Gerar a srie de Fibonacci at o vigsimo termo.

Aula 9 - Estruturas de repetio

127

e-Tec Brasil

c) Elaborao do algoritmo ou do fluxograma.


d) Elaborao da interface grfica.
Abra um novo projeto (Project > New Project > Application), mude a
propriedade Caption do formulrio para: Srie de Fibonacci. Adicione na
parte superior do formulrio um Label1 e altere sua propriedade Caption
para: Fibonacci at o vigsimo termo:. Abaixo deste Label, insira um componente ListBox1. Em seguida, adicione dois componentes do tipo TButton,
identificados por Button1 e Button2, respectivamente. A partir da, altere a
propriedade Caption do primeiro Button para: Processar e do segundo
para: Limpar. A Figura 9.3 ilustra esse formulrio.

Figura 9.3: Formulrio srie de Fibonacci


Fonte: Software Lazarus

e) Cdigo do projeto.
Aps a elaborao da interface do projeto, salve a aplicao numa nova pasta.
Em seguida, d um duplo clique no boto Processar e digite o cdigo dentro
do procedimento.
procedure TForm1.Button1Click(Sender: TObject);
var
I, T1, T2, ATUAL: integer;
begin
ListBox1.clear;
T1:= 1;
T2:= 1;
ListBox1.Items.Add(IntToStr(T1));
ListBox1.Items.Add(IntToStr(T2));
I:= 3;

e-Tec Brasil

128

Algoritmos e Programao

repeat
ATUAL:= T1 + T2;
ListBox1.Items.Add(IntToStr(ATUAL));
T1:= T2;
T2:= ATUAL;
I:= I + 1;
until I > 20;
end;

Explicando
A lgica para se gerar os termos da srie de Fibonacci consiste no fato de
que, um determinado termo a partir do terceiro (inclusive) obtido atravs
da soma dos seus dois antecessores. Por isso, aps declararmos as variveis
do programa, inicializamos as variveis T1 e T2 com os dois primeiros termos
da srie e os exibimos no ListBox1. Em seguida, tendo em vista que esses
dois primeiros termos j foram mostrados, inicializamos a varivel I com o
valor trs para que, a partir da, seja feito o controle do prximo termo da
srie, pois, neste problema queremos gerar a srie at o vigsimo termo. Na
sequncia, fazemos uso da estrutura de repetio (repeat ... until) de
maneira a guardarmos na varivel ATUAL a soma dos dois termos anteriores e o exibimos, em seguida, no ListBox1. Ainda dentro dessa estrutura,
atualizamos as variveis da seguinte maneira: T1 recebendo o valor de T2 e
T2 recebendo o valor da varivel ATUAL, de forma que na sequncia esses
comandos sejam repetidos novamente, e a gerao do prximo termo se
d corretamente. Por fim, a estrutura ser abandonada quando o valor da
condio I > 20 se tornar verdadeiro.

Resumo
Vimos, nesta aula, como desenvolver aplicaes grficas no IDE do Lazarus,
utilizando diferentes estruturas de repetio. De maneira que, a escolha de
qual estrutura utilizar depender bastante do problema que se apresenta e
da forma como se deseja apresentar sua soluo.
Sendo assim, muito importante que voc tenha o completo domnio dessas
estruturas na soluo de um problema, para que possa aplic-las da melhor
maneira possvel. Para auxili-lo neste objetivo, foram desenvolvidos nas
aulas de algoritmos, bem como nesta aula, vrias atividades e sugeridas
outras. Portanto, caso seja necessrio, leia novamente este captulo e refaa
as atividades.

Aula 9 - Estruturas de repetio

129

e-Tec Brasil

No podemos deixar de parabeniz-lo neste momento, pois, avanamos


bastante em nossas atividades e voc continua firme conosco! Assim, vamos
em frente!

Atividades de aprendizagem
1. Fazer um projeto em Lazarus para ler um nmero inteiro e apresentar o
resultado de sua tabuada.
2. Elaborar um projeto em Lazarus para calcular a soma dos nmeros inteiros de 1 a 50.
3. Fazer um projeto em Lazarus que leia um nmero inteiro positivo e apresente as potncias desse nmero, variando de 0 a 10.

e-Tec Brasil

130

Algoritmos e Programao

Aula 10 Procedimentos
Objetivos
Desenvolver programas no IDE do Lazarus utilizando estruturas modulares, elaboradas pelo prprio programador procedure.

10.1 Estruturas modulares


Prezado estudante, nesta aula e na prxima iremos, atravs do IDE do Lazarus,
desenvolver programas que se utilizam de procedimentos e funes que sero
elaborados por ns mesmos (programadores), pois os procedimentos utilizados
at aqui, no IDE do Lazarus, foram gerados por meio de eventos decorrentes
do uso do prprio ambiente de programao, de maneira a apresentar rotinas
especficas como parte da soluo de um problema maior.
Tendo em vista que esse assunto j lhe foi apresentado em algoritmos e que,
com certeza, encontra-se bem consolidado no seu aprendizado, buscaremos
aqui, apresentar-lhe as principais sintaxes dessas rotinas suportadas pelo
compilador Free Pascal, bem como resolver algumas atividades e propor
outras, ao longo deste estudo.

10.2 Mdulo procedimento


Conforme visto anteriormente, uma procedure um bloco de programa,
contendo incio e fim e que identificada por um nome, podendo ser chamada
(acionada) a partir da Unit na qual foi declarada. Veja a sintaxe dessa estrutura.
Sintaxe
procedure <nome> [(parmetros: tipos);]
[var variveis locais: tipos;]
begin
<instrues>;
end;

Na sintaxe apresentada, o colchete ([) informa que tanto os parmetros quanto


as variveis locais no so obrigatrios, contudo, voc ver no dia-a-dia que
o uso de parmetros muito comum em procedimentos e funes.

Aula 10 - Procedimentos

131

e-Tec Brasil

Outro ponto a ser destacado quanto construo das procedures. No IDE


do Lazarus, poderemos utilizar procedures com passagem de parmetros
por valor e por referncia.

10.2.1 Exerccios resolvidos


1. Faa um projeto em Lazarus que leia dois valores inteiros, referentes aos catetos de um tringulo retngulo, calcule e imprima a hipotenusa desse tringulo. Utilizar passagem de parmetros por valor para o clculo da hipotenusa.
Frmula da hipotenusa: hip=
Onde: b e c representam os catetos do tringulo retngulo.
Soluo
a) Dados do problema:

Os valores dos dois catetos (b e c).


b) O que se pede:

Valor da hipotenusa (procedimento por valor).


c) Elaborao do algoritmo ou do fluxograma.
d) Elaborao da interface grfica.
Abra um novo projeto (Project > New Project > Application) e desenvolva
o formulrio, conforme apresentado na Figura 10.1.

Figura 10.1: Formulrio clculo da hipotenusa


Fonte: Software Lazarus

e-Tec Brasil

132

Algoritmos e Programao

e) Cdigo do projeto.
Aps a elaborao da interface do projeto, salve a aplicao numa nova
pasta. Em seguida, d um duplo clique no boto Processar e digite o cdigo
dentro da procedure.
procedure TForm1.Button1Click(Sender: TObject);
var
CAT1, CAT2: integer;
begin
CAT1:= StrToInt(Edit1.Text);
CAT2:= StrToInt(Edit2.Text);
HIPOT(CAT1,CAT2);
Edit1.SetFocus;
end;

Explicando
Nesta procedure foi inserida uma instruo que faz a chamada da sub-rotina
HIPOT na qual so passados, atravs de parmetros, os dois valores dos
catetos informados pelo usurio. Assim, ao ser feito sua chamada, a mesma
executada e, logo aps sua execuo, o fluxo de processamento retorna para
a linha subsequente chamada dessa sub-rotina e o cursor ser posicionado
no primeiro Edit (Edit1) do formulrio em funo da execuo do comando
Edit1.SetFocus.
A seguir, exibido o cdigo completo da procedure referente sub-rotina
HIPOT. Observe que, a implementao dessa rotina dever ser realizada antes
da procedure TForm1.Button1Click; caso contrrio o programa no a
reconhecer.
procedure HIPOT(B,C: integer);
var HIP: real;
begin
HIP:= SQRT(SQR(B) + SQR(C));
Form1.Edit3.Text:= FloatToStr(HIP);
end;

Explicando
Inicialmente, antes de passarmos explicao desse tpico, observe o uso das
funes: SQRT() e SQR(). A primeira tem por finalidade extrair a raiz quadrada
do argumento da funo, o qual representado pela expresso ou valor que
se encontra dentro dos parnteses; a segunda eleva ao quadrado o valor do
argumento desta funo. Como exemplo, veja: SQRT(16) = 4; SQR(2) = 4.

Aula 10 - Procedimentos

133

e-Tec Brasil

Voltando a nossa procedure, perceba que a mesma recebe por meio dos
parmetros locais B e C, os valores referentes s variveis CAT1 e CAT2, os quais
foram passados como parmetros por valor, quando da chamada da rotina HIPOT.
Na procedure, criamos uma varivel local para armazenar o clculo da hipotenusa
(HIP). Em seguida, fizemos esse clculo e exibimos o resultado, atravs do componente Edit3. Veja que antes de usarmos o Edit3, foi preciso indicar o objeto
Form1, no qual se encontra o referido componente. Isto se fez necessrio, pelo fato
da rotina HIPOT se encontrar fora da rotina chamadora (TForm1.Button1Click).
Por ltimo, implemente os cdigos dos botes Limpar e Sair, grave o projeto
novamente e execute a aplicao.
2. Refaa o exerccio anterior, de maneira que o clculo da hipotenusa se d
pela passagem de parmetros por referncia.
Soluo
a) Cdigo do projeto.
Abra um novo projeto (Project > New Project > Application) e desenvolva
o formulrio, conforme apresentado no exerccio anterior.
Aps a elaborao da interface do projeto, salve a aplicao numa nova pasta.
Em seguida, d um duplo clique no boto Processar e digite o cdigo dentro
da procedure (rotina chamadora).
procedure TForm1.Button1Click(Sender: TObject);
var
CAT1, CAT2: integer;
H1: real;
begin
CAT1:= StrToInt(Edit1.Text);
CAT2:= StrToInt(Edit2.Text);
HIPOT(CAT1,CAT2,H1);
Edit3.Text:= FloatToStr(H1);
Edit1.SetFocus;
end;

Em seguida, apresentado o cdigo da procedure HIPOT, o qual dever ser


digitado antes da procedure TForm1.Button1Click, conforme j explicado
anteriormente.

e-Tec Brasil

134

Algoritmos e Programao

procedure HIPOT(B,C: integer; var H: real);


var HIP: real;
begin
HIP:= SQRT(SQR(B) + SQR(C));
H:= HIP;
end;

Explicando
Observe que, diferentemente do exerccio anterior, onde a procedure era com
passagem de parmetros por valor, criamos um parmetro com passagem por
referncia (var H: real). O parmetro H ir corresponder com o parmetro
H1, da rotina chamadora. Os dois apontam para a mesma referncia na
memria. Por isso, o que acontece com um, acontece com o outro. Tudo por
causa daquela palavrinha var que precede o parmetro H.
Ento, no h necessidade de se exibir o valor da hipotenusa dentro desta
procedure. Isso pode ser feito no corpo da rotina chamadora atravs do
parmetro H1.

Resumo
Nesta aula, voc aprendeu a desenvolver suas prprias rotinas dentro do IDE do
Lazarus. Veja que, at ento, estvamos usando procedures geradas pelo prprio
ambiente de programao. Portanto, como nossa programao dentro desse
ambiente se deu a partir da gerao de eventos, constatamos que o IDE do Lazarus
totalmente modularizado, pois para cada evento teremos um procedimento.
Tenha sempre em mente que a modularizao dos programas, nos permite
que a partir de um problema complexo, apresentemos solues para partes
especficas do mesmo, de tal forma que ao final consigamos resolver o problema em seu todo.
Assim, terminamos aqui a aula sobre procedimentos e, a seguir, apresentaremos
o uso de funes na modularizao dos programas. Portanto, vamos em frente!

Atividades de aprendizagem
1. Fazer um projeto em Lazarus que leia um nmero inteiro, calcule e imprima o cubo desse nmero. Utilizar procedimento com passagem de
parmetros por valor.

Aula 10 - Procedimentos

135

e-Tec Brasil

2. Fazer um projeto em Lazarus que leia dois nmeros inteiros e faa a troca
do primeiro pelo segundo, utilizando procedimento com passagem de
parmetros por referncia.
3. Fazer um projeto em Lazarus para ler a base e a altura de um tringulo
retngulo e, atravs de um procedimento, calcular a rea do tringulo.
Dado: rea = (base altura) / 2
4. Fazer um projeto em Lazarus que leia os coeficientes A, B e C de uma
equao do segundo grau. No programa principal, calcule o valor de
DELTA. Elaborar um procedimento que receba os valores de A, B e C e
tambm o valor de DELTA e calcule as razes da equao e imprima-as no
programa principal (passagem de parmetros por referncia).

e-Tec Brasil

136

Algoritmos e Programao

Aula 11 Funes
Objetivos
Desenvolver programas no IDE do Lazarus utilizando estruturas modulares, elaboradas pelo prprio programador function.

11.1 Mdulo funo


Uma funo sempre devolver um resultado atravs de seu nome. O tipo
do valor devolvido definido na estrutura da funo. importante lembrar,
tambm, que a funo faz parte de um comando (expresso), sendo que sua
chamada dentro deste se dar pelo nome da funo, seguido dos respectivos
parmetros (maiores explicaes, ver Aula 6). A sintaxe dessa estrutura
apresentada a seguir.
Sintaxe
function <nome> [(parmetros: tipos)]: <tipo da funo>;
[var variveis locais : tipos;]
begin
<instrues>;
<nome>: = <expresso ou resultado>;
end;

11.2 Exerccio resolvido


1. Faa um projeto em Lazarus para ler o raio de uma esfera. O programa
principal dever fazer uso de uma funo que recebe por parmetro o raio
de uma esfera, calcula o seu volume (v = 4/3 R3) e o devolve ao local
da chamada da funo (rotina chamadora), o qual dever ser exibido.
Soluo
a) Dados do problema:

Valor do raio de uma esfera.


b) O que se pede:

Volume da esfera (atravs de uma funo).


c) Elaborao do algoritmo ou do fluxograma.

Aula 11 - Funes

137

e-Tec Brasil

d) Elaborao da interface grfica.


Abra um novo projeto (Project > New Project > Application) e desenvolva
o formulrio, conforme apresentado na Figura 11.1.

Figura 11.1: Clculo do volume da esfera


Fonte: Software Lazarus

e) Cdigo do projeto.
Aps a elaborao da interface do projeto, salve a aplicao numa nova
pasta. Em seguida, d um duplo clique no boto Processar e digite o cdigo
dentro da procedure.
procedure TForm1.Button1Click(Sender: TObject);
var RAIO: real;
begin
RAIO:= StrToFloat(Edit1.Text);
Edit2.Text:= FloatToStr(VOLUME(RAIO));
Edit1.SetFocus;
end;

Explicando
Nesta procedure feita a chamada da funo VOLUME que recebe atravs
de par metro o valor do raio. Observe que a funo foi acionada a partir de
um comando que faz uso de outra funo, no caso, de converso de tipos
(real para texto), sendo assim, um argumento da mesma.
Aps a chamada desta sub-rotina, ela executada e, ao trmino, o resultado
devolvido na prpria funo, ou seja, ao local de onde foi feito seu acionamento. Em seguida, o valor convertido para string e apresentado atravs
do componente Edit2.

e-Tec Brasil

138

Algoritmos e Programao

A seguir, exibido o cdigo completo da funo referente sub-rotina volume,


o qual dever ser inserido por ns, antes da rotina principal do programa, ou
seja, antes da procedure TForm1.Button1Click; caso contrrio o programa
no a reconhecer.
function VOLUME(R: real): real;
var V: real;
begin
V:= 4/3 * 3.1416 * (R * R * R);
VOLUME:= V;
end;

Explicando
Veja que ao final da function, o resultado encontrado atribudo ao nome
da funo que o devolver rotina principal do programa.

Resumo
Conclumos aqui o estudo da aplicao de procedimentos e funes atravs
de uma linguagem de programao. Dessa forma, importante que voc
saiba usar corretamente, durante a elaborao da soluo de um problema,
essas sub-rotinas, lembrando que as principais diferenas entre elas quanto
ao retorno de valores e a forma como so chamadas.
Assim, encerramos nossos primeiros passos no uso de uma linguagem de
programao, certos de que, o que lhe foi apresentado, ser de grande
utilidade para que voc possa caminhar a passos largos no aprofundamento
desse tema, daqui pra frente!
Parabns por chegar at aqui!

Atividades de aprendizagem
1. Fazer um projeto em Lazarus para ler a altura (em metros) e o sexo
(1 masculino, 2 feminino) de uma pessoa e, atravs de uma funo,
calcular e escrever o peso ideal. Portanto, a funo dever receber atravs de parmetros a altura e o sexo de uma pessoa, calcular o peso ideal
e devolv-lo ao local da chamada da funo, o qual ser impresso. Para
os homens a frmula do peso ideal a seguinte: 72 altura 60. Para
as mulheres: 62 altura 50.

Aula 11 - Funes

139

e-Tec Brasil

2. Fazer um projeto em Lazarus para ler um nmero inteiro e, atravs


de uma funo, verificar se o nmero lido encontra-se no intervalo:
10 < NUM < 150; retornando ao local da chamada da funo a mensagem No intervalo e Fora do intervalo em caso contrrio (adaptado
de Manzano; Mendes, 1999).
3. Fazer um projeto em Lazarus para ler 3 nmeros inteiros e, atravs de
uma funo, calcular e escrever o menor dos 3 nmeros lidos.
4. Fazer um projeto em Lazarus que leia a temperatura em graus Fahrenheit de uma cidade e, utilizando funo, faa a converso para graus
Celsius. A temperatura em Fahrenheit o dado de entrada e a temperatura em Celsius o valor a ser calculado pela funo. Utilize a frmula
C=(F32) 5 / 9, onde F a temperatura em Fahrenheit e C a temperatura em Celsius.

e-Tec Brasil

140

Algoritmos e Programao

Referncias
ALMEIDA, Daniel Simes. Lazarus e Free Pascal. ClubeDelphi, Rio de Janeiro, ano 9, n.
122, 123, 2010.
CANNEYT, Michal Van. Reference guide for Free Pascal, version 2.6.0. Disponvel
em: <ftp://ftp.freepascal.org/pub/fpc/docs-pdf/ref.pdf>. Acesso em: dez. 2011.
FARRER, Harry e outros. Programao estruturada de computadores: algoritmos
estruturados. Rio de Janeiro: Guanabara Dois, 1999.
GUIMARES, ngelo de Moura; LAGES, Alberto de Castilho. Algoritmos e estruturas de
dados. Rio de Janeiro : LTC Editora S.A., 1994.
LAZARUS WIKI. Open Source GUI RAD IDE for Free Pascal. Disponvel em: <http://
wiki.lazarus.freepascal.org/Lazarus_For_Delphi_Users>. Acesso em: 23 nov. 2010.
MANZANO, Jos Augusto N. G.; MENDES, Sandro S. V. Estudo dirigido: Delphi 4. So
Paulo: rica, 1999.
MANZANO, Jos Augusto N. G.; OLIVEIRA, Jayr Figueredo de. Algoritmos: lgica para
desenvolvimento de programao. So Paulo: rica, 2005.
SANTOS, Jean Patrick Figueiredo dos. Desenvolvendo aplicativos com Lazarus. 1. ed.
[S.l.: s.n.], 2011.
SANTOS, Luciano Andr dos. O caminho das pedras para o Delphi 4. Rio de Janeiro:
Book Express, 1998.
Squadra Tecnologia em Software. Delphi 5: mdulo bsico. Belo Horizonte, 2000. Apostila.

141

e-Tec Brasil

Currculo do professor-autor
Adolfo Jos Gonalves Stavaux Baudson possui graduao em Engenharia
de Minas pela Universidade Federal de Ouro Preto (1988), especializao em
Administrao de Sistemas de Informao pela Faculdade de Cincias Gerenciais
da UNA (1993) e mestrado em Engenharia Mineral pela Universidade Federal
de Ouro Preto (2008).
professor concursado na rea de Informtica no Instituto Federal de Minas
Gerais (IFMG), campus Ouro Preto, desde o ano de 1991, lecionando as
disciplinas: Sistemas Operacionais, Banco de Dados, Algoritmos e Linguagem
de Programao.

Francisco Csar Rodrigues de Arajo possui graduao em Engenharia


de Minas pela Universidade Federal de Ouro Preto (1990), especializao em
Informtica Educativa Formar III pela Escola Tcnica Federal de Ouro Preto
(1992) em convnio com a Escola Tcnica Federal de Gois e mestrado em
Engenharia Mineral pela Universidade Federal de Ouro Preto (2008).
Publicou na revista REM da Universidade Federal de Ouro Preto (UFOP), juntamente com seu orientador, professor Marcone J. F. Souza, em maro de
2011, artigo denominado Uma heurstica para o planejamento de lavra com
alocao dinmica de caminhes.
Participou do IV e do V Congresso Brasileiro de Mina a Cu Aberto e Mina
Subterrnea apresentando 2 artigos (2006 e 2008).
Atuou como programador de computador na UFOP no perodo de 1982 a 1991.
professor concursado na rea de Informtica no Instituto Federal de Minas
Gerais (IFMG), campus Ouro Preto, desde o ano de 1991, lecionando, atualmente, as disciplinas Algoritmos e Linguagem de Programao.

e-Tec Brasil

142

Algoritmos e Programao

Você também pode gostar