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 Equipe de Acompanhamento e Validao
Instituto Federal de Educao, Cincia e Colgio Tcnico Industrial de Santa MariaCTISM
Tecnologia de Minas Gerais IFMG-Ouro Preto
Coordenao Institucional
Reitor Paulo Roberto Colusso/CTISM
Caio Mrio Bueno Silva/IFMG-Ouro Preto
Coordenao Tcnica
Direo Geral Iza Neuza Teixeira Bohrer/CTISM
Arthur Versiani Machado/IFMG-Ouro Preto
Coordenao de Design
Coordenao Institucional Erika Goellner/CTISM
Sebastio Nepomuceno/IFMG-Ouro Preto
Reviso Pedaggica
Coordenao de Curso Andressa Rosemrie de Menezes Costa/CTISM
Cristiano Lcio Cardoso Rodrigues/IFMG-Ouro Preto Fabiane Sarmento Oliveira Fruet/CTISM
Janana da Silva Marinho/CTISM
Professor-autor Marcia Migliore Freo/CTISM
Adolfo Jos Gonalves Stavaux Baudson/IFMG-Ouro Preto
Francisco Csar Rodrigues de Arajo/IFMG-Ouro Preto 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

B342a Baudson, Adolfo Jos Gonalves Stavaux


Algoritmos e programao / Adolfo Jos Gonalves Stavaux
Baudson, Francisco Csar Rodrigues de Arajo. Ouro Preto: IFMG, 2013.
142 p. : il.
ISBN 978-85-86473-10-4

Caderno elaborado em parceria entre o Instituto Federal de
INSTITUTO Educao, Cincia e Tecnologia de Minas Gerais (IFMG) Campus
FEDERAL Ouro Preto e a Universidade Federal de Santa Maria UFSM para
RIO GRANDE
DO SUL o Sistema Escola Tcnica Aberta do Brasil Rede e-Tec Brasil.

1. Programao (Computadores). 2. Algoritmos. 3. Linguagem
de programao (Computadores). I. Arajo, Francisco Csar
Rodrigues de. II. Ttulo.
CDU: 004.42
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

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

5 e-Tec Brasil
e-Tec Brasil 6 Tecnologia da Informtica
Sumrio

Palavra do professor-autor 9

Apresentao da disciplina 11

Projeto instrucional 13

Aula 1 Conceitos 15
1.1 O computador 15
1.2 Algoritmo 15
1.3 Linguagem de programao 15
1.4 Conceitos bsicos 16

Aula 2 Variveis e constantes 19


2.1 Uma pseudolinguagem 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 45


4.1 Estrutura de repetio (enquanto ... faa) 45
4.2 Estrutura de repetio (para ... faa) 51
4.3 Estrutura de repetio (repita ... at) 53

Aula 5 Procedimento 61
5.1 Definio 61
5.2 Caractersticas 61
5.3 Sintaxe 62
5.4 Exerccios resolvidos 63

7 e-Tec Brasil
Aula 6 Funo 69
6.1 Definio 69
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 75


7.1 Linguagem de programao 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 101


8.1 Tomada de deciso 101

Aula 9 Estruturas de repetio 121


9.1 Repetio 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 131


10.1 Estruturas modulares 131
10.2 Mdulo procedimento 131

Aula 11 Funes 137


11.1 Mdulo funo 137
11.2 Exerccio resolvido 137

Referncias 141

Currculo do professor-autor 142

e-Tec Brasil
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 conhecimen-


tos 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

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


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

CARGA
OBJETIVOS DE
AULA MATERIAIS HORRIA
APRENDIZAGEM
(horas)
Ambiente virtual:
Conceituar algoritmo. plataforma Moodle.
1. Conceitos Conceituar lgica de programao. Apostila didtica. 01
Estudar outros conceitos de informtica. Recursos de apoio: links,
exerccios.
Ambiente virtual:
Conceituar e identificar variveis e plataforma Moodle.
2. Variveis e
constantes. Apostila didtica. 06
constantes
Resolver pequenos exerccios de lgica. Recursos de apoio: links,
exerccios.
Entender as primeiras estruturas de
controle para o desenvolvimento de
algoritmos.
Ambiente virtual:
3. Comando de Estudar as estruturas de entrada e sada
plataforma Moodle.
entrada, sada de dados.
Apostila didtica. 07
e estruturas Entender como funcionam as estruturas
Recursos de apoio: links,
condicionais condicionais.
exerccios.
Desenvolver os primeiros programas
de computador utilizando uma
pseudolinguagem.
Compreender as estruturas de repetio Ambiente virtual:
enquanto ... faa, para ... faa e repita ... plataforma Moodle.
4. Estruturas de
at e suas diferenas. Apostila didtica. 08
repetio
Desenvolver algoritmos utilizando cada Recursos de apoio: links,
uma das estruturas citadas. exerccios.
Conhecer estruturas modulares. Ambiente virtual:
Aplicar novas maneiras para se plataforma Moodle.
5. Procedimento desenvolver algoritmos, atravs da Apostila didtica. 08
modularizao de programas utilizando Recursos de apoio: links,
procedimento. exerccios.
Desenvolver algoritmos, atravs da Ambiente virtual:
modularizao de programas utilizando plataforma Moodle.
6. Funo funo. Apostila didtica. 07
Conhecer as diferenas entre Recursos de apoio: links,
procedimento e funo. exerccios.

13 e-Tec Brasil
CARGA
OBJETIVOS DE
AULA MATERIAIS HORRIA
APRENDIZAGEM
(horas)
Conceituar a ferramenta de
programao Lazarus/Free Pascal.
Conceituar os principais termos
associados aos objetos utilizados Ambiente virtual:
7. Ambiente de num ambiente grfico. plataforma Moodle.
programao Instalar e configurar o Lazarus. Apostila didtica. 08
Lazarus Conhecer o ambiente de Recursos de apoio: links,
desenvolvimento Lazarus (IDE). exerccios.
Desenvolver as primeiras aplicaes
dentro do IDE Lazarus para o
compilador Free Pascal.
Conhecer as estruturas condicionais
para o compilador Free Pascal.
Aplicar essas estruturas condicionais
Ambiente virtual:
dentro do IDE do Lazarus.
plataforma Moodle.
8. Estruturas Desenvolver programas de
Apostila didtica. 08
condicionais computador na linguagem do
Recursos de apoio: links,
Lazarus/Free Pascal que se utilizam
exerccios.
dessas estruturas, para a soluo de
problemas que envolvam a tomada
de decises.
Entender como funcionam as Ambiente virtual:
estruturas de repetio no ambiente plataforma Moodle.
9. Estruturas de
de programao visual (Lazarus). Apostila didtica. 07
repetio
Elaborar programas utilizando Recursos de apoio: links,
estruturas de repetio. exerccios.
Ambiente virtual:
Desenvolver programas no IDE
plataforma Moodle.
10. do Lazarus utilizando estruturas
Apostila didtica. 08
Procedimentos modulares, elaboradas pelo prprio
Recursos de apoio: links,
programador procedure.
exerccios.
Ambiente virtual:
Desenvolver programas no IDE
plataforma Moodle.
do Lazarus utilizando estruturas
11. Funes Apostila didtica. 07
modulares, elaboradas pelo prprio
Recursos de apoio: links,
programador function.
exerccios.

e-Tec Brasil 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 progra-
mao 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 compu-
tador. 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 compu-
tador). 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 pou-


quinho 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 principal-
mente daqueles que ainda no dominam nenhuma linguagem de programao.

Algoritmos desenvolvidos numa pseudolinguagem no so executados dire-


tamente 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, obrigatoria-


mente, 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 arma-
zenam 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 sis-
temadecimal.

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 V V
V F F
F V F
F F F

OU
V V V
V F V
F V V
F F F

NO
No V F
No F V
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 conte-
do 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)

Portanto, a resposta 4 por arredondamento.

e) Trunca (Y X)

Substituindo os valores das variveis na expresso:

Trunca (6.7 3)

Trunca (3.7)

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)

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


to 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 atra-
vs 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 alu-
no, 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 NOTA2 NOTA3 MEDIA
5.0 8.5 7.5 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 men-
sagem 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, utili-
zamos 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 men-
sagem 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 armaze-
nado 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 men-


sagem 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 armaze-
nado 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 impri-


ma 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, de-


termine 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 ocor-
rer, imprimir a mensagem tudo ok, caso contrrio, imprimir a mensa-
gem 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 apre-
sente 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 algo-
ritmo. 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 incre-
mentada 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 (GUI-
MARES; 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 co-


locou disposio os seguintes dados de 40 alunos:

e-Tec Brasil 48 Algoritmos e Programao


Matrcula, sexo (M, F), altura (cm) e status fsico (1bom, 2regular, 3ruim)

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 deno-
minador. 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 va-
lores 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 estru-
tura 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 cal-


cular 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 indi-
vduo 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 (inclusi-


ve) 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 no-


tas 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 im-
prima 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 (procedi-


mento 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 pro-
grama 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 re-


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


cedimento. 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 algo-
ritmo. Bastaria criar uma varivel global inteira S, por exemplo, e, no programa
principal, aps a chamada do procedimento, fazer o clculo (SS+ 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 reapro-
veitamento 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 par-
metros 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 pro-
cedimento com passagem de parmetros por referncia (GUIMARES;
LAGES, 1994).

3. Fazer a simulao completa do exerccio a seguir, utilizando procedimen-


to 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. Posteriormen-
te, leia o ano de fundao de 3 instituies de ensino de seu estado e,
utilizando o mesmo procedimento, coloque-os ordenados de forma cres-
cente 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 abso-


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


gramao 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 (GUI-
MARES; 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, utili-
zando funo, a mdia (aritmtica) de cada aluno imprimindo-a no pro-
grama 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 re-


tngulos. Calcule a rea de cada um utilizando funo, imprimindo-a em se-
guida. 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 progra-
mao 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 pro-
grama. Alguns desses eventos, associados aos componentes, so descri-
tos 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.

OnMouseUp ocorre quando o usurio libera o boto do mouse.

e-Tec Brasil 76 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 aplica-


o 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 ca-
ractersticas. 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>. Em seguida, no quadro Recent Announcements, clique no link
Lazarus 1.0.10 release available for download ou numa verso mais
recente. Na janela seguinte, 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 apre-
sentados 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: As-
sociar 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 correspon-
dente 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 de-


senvolvimento 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 fre-


quentemente 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 compo-


nentes 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 (l-


gica) 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 selecio-
nado no formulrio.

5. Janela de mensagens apresenta informaes referentes compilao


do projeto, tais como: erros do cdigo (sintaxe), informaes do compi-
lador 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 desen-
volvimento 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 Tools > Options > Environment
Desktop > Language e escolha <Brazilian Portuguese [pt_BR]>. Em se-
guida, 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.

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 Tools > Options > Environment > Desktop, acesse o qua-
dro Misc Options e marque a primeira opo Jump from message to
source line on double click, conforme Figura 7.11.

e-Tec Brasil 82 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 represen-
tam os procedimentos ou funes criados para a realizao de tarefas es-
pecficas na soluo de um problema, mas quando se encontram vazios,
no fazem sentido. Sendo assim, podemos configurar o IDE para elimi-
narmos tais mtodos do sistema, da seguinte forma: Tools > 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 Tools > 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 configu-
rados. 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, classes
pois, muitos dos controles existentes na VCL podem no existir na LCL ou a definio de um conjunto de
caractersticas e comportamentos
vice-versa. Para ilustrar esse fato, tem-se que a VCL contm componentes que os elementos (objetos)
visuais e no visuais, j a LCL apresenta apenas componentes visuais, tendo devero seguir.

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 e-Tec Brasil


Conceitos componentes visuais representam os componentes utilizados
no desenvolvimento de uma aplicao, ou seja, em tempo de projeto, e
tempo de projeto que possibilitam modificarem seus comportamentos visuais nesse estado.
Etapa em que o programador Podemos citar, por exemplo, a utilizao de uma caixa de texto, na qual
desenvolve o projeto (aplicao)
no IDE, tal como: elaborao da alterando o tipo de fonte ou seu tamanho, refletir instantaneamente no
interface grfica/codificao do projeto. J os componentes no visuais caracterizam-se como elementos de
programa.
apoio ao desenvolvimento do projeto, mas que no aparecem em tempo
tempo de execuo
Etapa no qual o programa de execuo do mesmo. Eles podero, portanto, serem vistos, apenas em
encontra-se em execuo. 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.

7.2.6 Trabalhando com componentes


Na montagem da interface grfica de um aplicativo, devemos utilizar os compo-
nentes 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 Finalidade

TMainMenu Permite a criao de menus suspensos dentro de uma aplicao.

Usado na criao de botes que permitem ao usurio interagir com a


TButton aplicao por meio de aes especficas, atravs do acionamento (clique)
desses botes.
Permite a insero de textos no formulrio, os quais no podem ser
TLabel
alterados pelo usurio.

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

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

e-Tec Brasil 84 Algoritmos e Programao


Possibilita por meio do clique do mouse habilitar/desabilitar uma
TCheckBox
determinada opo de sua aplicao.

Controle que permite ao usurio escolher apenas uma opo de um


TRadioButton
conjunto de opes disponveis.
Usado para exibir informaes dentro de uma caixa de listagem, bem
TListBox como permite que o usurio possa selecionar um ou mais itens desta
caixa de listagem.
uma combinao de uma caixa de listagem e uma caixa de texto que
TComboBox permite ao usurio digitar a informao no prprio controle ou escolh-la
da caixa de listagem.
Componente que se apresenta na forma de uma moldura, com o objetivo
TGroupBox de agrupar um conjunto de controles, tais como um conjunto de opes
como RadioButtons.
Representa um container de botes de rdio, ou seja, combina as
TRadioGroup
caractersticas do GroupBox com o RadioButton.

TPanel 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 Finalidade
Semelhante ao Button da aba Standard, mas com a possibilidade de se
TBitBtn
adicionar uma imagem bitmap.

TImage Controle usado para adicionar imagens ao programa.

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


TShape
crculo, etc.).

TMaskEdit Controle usado para formatao dos dados em diferentes formatos.

TStringGrid 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 permi-


tem 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 Finalidade
Barra de controle deslizante que fornece uma guia a partir da qual o
TTrackBar
usurio pode moviment-la por toda sua regio.
Controle usado para representar uma operao em andamento como, por
TProgressBar
exemplo, o download ou transferncia de um arquivo.
Usado para exibir informaes referentes a uma interface grfica e que
TStatusBar
permite ser dividida em vrias sees ou painis.

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

Controle usado para se criar guias que exibem pginas, as quais podem
TPageControl
conter outros componentes.
Permite o agrupamento de imagens que sero utilizadas numa
TImageList
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
Controle usado para se gerar caixa de dilogo para a seleo do arquivo
TOpenDialog
que ser aberto.

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


TSaveDialog
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

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


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

e-Tec Brasil 86 Algoritmos e Programao


Figura 7.16: Aba System
Fonte: Software Lazarus

Quadro 7.5: Componentes mais usuais da aba System


cone Nome Finalidade

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


TTimer
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
salvar o projeto. Em seguida, na caixa de texto Nome, mantenha a sugesto
informada (project1.lpi) e clique em Salvar. 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 Salvar, 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 com-


ponente, 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.
Arquivo de projeto do Lazarus, ou seja, contm o cdigo fonte do programa principal
*.LPR
do projeto.
Contm informaes da configurao de todos os objetos do formulrio. Est sempre
*.LFM
associado a um arquivo de extenso PAS.
Arquivo que possui o cdigo da Unit, em Pascal, normalmente associado a um
*.PAS *PP
determinado formulrio da aplicao.
Arquivo de resource (recursos) do Lazarus, o qual geralmente gerado durante a
*.LRS
compilao do projeto.
Para cada Unit do projeto, durante o processo de compilao, gerado esse tipo de
*.PPU
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 Uni-
versidade 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 reserva-
das, caracterizam identificadores. As regras de construo dos identifica-
dores 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 Intervalo
Byte 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 0 .. 4294967295
Int64 -9223372036854775808 .. 9223372036854775807
QWord 0 .. 18446744073709551615
Fonte: Santos, 2011

7.4.2.2 Tipos de dados reais


Quadro 7.8: Tipos reais
Tipo real Intervalo
Real 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 arma-
zena 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
+ (adio)
(subtrao)
* (multiplicao)
Aritmticos
/ (diviso de pontos flutuantes)
Div (diviso Inteira)
Mod (resto da diviso de inteiros)
= (igual)
< > (diferente)
> (maior)
Relacionais
< (menor)
>= (maior ou igual)
<= (menor ou igual)
Not (negao)
Lgicos 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 enten-


dimento 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: Segundo Santos (1998), so
procedure TForm1.Button1Click(Sender: TObject); apresentadas algumas funes
de converso de tipos diferentes
var de dados:
VH, SALARIO: real;
StrToFloat (Valor-Texto):
begin devolve o valor em real, o qual
foi passado como texto atravs
VH:= StrToFloat(Edit1.Text);
de parmetro.
SALARIO:= VH * 8 * 5;
FloatToStr (Valor-Real):
Edit2.Text:= FloatToStr(SALARIO); retorna o valor em string (texto)
Edit1.SetFocus; correspondente ao valor real
passado como parmetro.
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 deve-
mos, dessa forma, convert-lo de texto para real. Ao lado, so apresentadas
algumas 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 sa-
lrio base desse funcionrio. Sendo assim, o programa dever apresentar
o salrio lquido. Implementar, tambm, as rotinas de limpar os compo-
nentes 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 paraleleppe-


do, 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 pro-
blemas 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 begin
funes de converso de tipos
diferentesde dados: A:= B + 2;
B:= B 1;
IntToStr (Valor-Inteiro):
retorna o valor em string (texto) Edit1.Text := IntToStr(A);
correspondente ao valor inteiro
Edit2.Text := IntToStr(B);
passado como parmetro.
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 compo-
nentes 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:

Para homens o peso ideal : 72 ALTURA 60;

Para mulheres o peso ideal : 62 ALTURA 50.

e-Tec Brasil 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, respectiva-
mente. 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 com-
ponente 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 esco-
lhido. 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, obrigato-
riamente, num valor ordinal, normalmente do tipo Char ou Integer. O
resultado jamais poder ser do tipo real.
valor ordinal
Caso uma determinada opo do comando case possua mais de uma ins- Os tipos ordinais so
representados por conjuntos
truo, estas devero ser colocadas dentro de um bloco: begin ... end. ordenados de valores ou que
estejam emsequncia.

O comando case se assemelha estrutura condicional encadeada, po-


rm, se apresenta de uma maneira mais simples e eficiente.

As opes (opo 1, opo 2, ..., opo N) contidas na sintaxe, no ne-


cessariamente devem ser definidas como um valor, mas podem especifi-
car intervalos. Veja o exemplo:
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$)
1 Hambrguer 5.00
2 X-Picanha 9.90
3 X-Salada 8.00
4 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),
QUANT:= StrToInt(Edit2.Text); so apresentadas algumas
funes de converso de tipos
if COD = 1 then diferentesde dados:
begin
StrToInt (Valor-Texto):
VP:= QUANT * 5.00; devolve o valor em inteiro,
correspondente ao texto
NOME:= Hambrguer; passadocomoparmetro.
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 deter-
minado 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 san-
duche 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 (situa-
o). 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
(1a12) 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 (1domingo, 2segunda-fei-
ra, ... , 7sbado). 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
No exerccio 3, 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 algorit-
mos e que so utilizadas no IDE do Lazarus, ou seja, suportadas pelo compilador Segundo Santos (1998),
Free Pascal. importante observar que, o entendimento do funcionamento so apresentadas algumas
funes de converso de tipos
das estruturas apresentadas nesta aula o mesmo do que foi aprendido em diferentesde dados:
algoritmos. Sendo assim, o que se diferencia apenas a sintaxe, pois essas
DateToStr (Valor-Data):
estruturas devem ser escritas da maneira que o compilador as reconhea. devolve a string correspondente
ao valor da data passada como
parmetro.

StrToDate (Valor-Texto):
9.2 Estrutura while ... do (enquanto ... faa) retorna uma data
Nesta estrutura, os comandos internos mesma sero executados repeti- correspondente ao texto passado
como parmetro.
damente, 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.

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 compo-
nentes 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. Adi-
cione 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 com-
ponente 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 anterio-
res 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 intei-


ros de 1 a 50.

3. Fazer um projeto em Lazarus que leia um nmero inteiro positivo e apre-


sente 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 mo-


dulares, 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 cate-
tos de um tringulo retngulo, calcule e imprima a hipotenusa desse tringu-
lo. 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 com-
ponente 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 pro-
blema 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 im-
prima 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 mo-


dulares, 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 aciona-
mento. 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
(1masculino, 2feminino) de uma pessoa e, atravs de uma funo,
calcular e escrever o peso ideal. Portanto, a funo dever receber atra-
vs 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 mensa-
gem 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 Fahre-


nheit de uma cidade e, utilizando funo, faa a converso para graus
Celsius. A temperatura em Fahrenheit o dado de entrada e a tempe-
ratura 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 tem-
peratura 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), jun-


tamente 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, atual-
mente, as disciplinas Algoritmos e Linguagem de Programao.

e-Tec Brasil 142 Algoritmos e Programao

Você também pode gostar