Escolar Documentos
Profissional Documentos
Cultura Documentos
Algoritmos Programacao PDF
Algoritmos Programacao PDF
Ouro Preto - MG
2013
Presidncia da Repblica Federativa do Brasil
Ministrio da Educao
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
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
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 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
Referncias 141
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.
9 e-Tec Brasil
Apresentao da disciplina
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.
11 e-Tec Brasil
Palavra instrucional
Projeto do professor-autor
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.
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.
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.
2. Conceitue:
a) Bit
b) Byte
c) Compilador
Objetivos
Real qualquer nmero real positivo, negativo ou nulo. Ex.: 3.4, -3.4, 0.0.
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
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.
Exemplo
10, -8, 5.3, 2.02 102
Exemplo
ABCD, RS, IFMG, X.
a) 12 numrica
b) AMOR caractere
c) falso caractere
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.
a) (X) SOMA
b) ( ) XY
c) ( ) 3N
d) (X) N3
e) ( ) pai de santo
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.
Identificador expresso
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
Conjuno e
Disjuno ou
Negao no
OU
V V V
V F V
F V V
F F F
NO
No V F
No F V
Fonte: Autores
So eles:
> , < , >= , <= , <> (), =
f) no
g) e
h) ou
b) X + Y = 9 ou no Z
e) ABS (X K)
Soluo
a) Substituindo os valores das variveis na expresso:
Veja, entre o operador relacional igual (=) e o lgico (e), resolve-se primeiro
o relacional. A expresso fica assim, ento:
Verdadeiro e falso
3 + 6.7 = 9 ou no falso
9.7 = 9 ou no falso
Em seguida, o relacional =:
Falso ou no falso
Depois, a negao:
Falso ou verdadeiro
Verdadeiro
c) Quociente (K , X)
Quociente (7, 3)
Resto (K, X)
Resto (7, 3)
d) Arredonda (Y X)
Arredonda (6.7 3)
e) Trunca (Y X)
Trunca (6.7 3)
Trunca (3.7)
f) ABS (X K)
ABS (3 7)
ABS (4)
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.
a) Verdadeiro
b) 3.1416
c) falso
d) Maria
( ) X
( ) X1Y
( )N
( ) ?VB
( ) casa branca
b) TEM ou B > = A
Objetivos
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.
Sintaxe
escreva (identificador(es))
Exemplo
escreva (MEDIA)
ou
escreva (A mdia : , MEDIA)
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,
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.
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
Soluo
incio
caractere: SEXO
escreva (Digite o sexo (M=masculino, F=feminino): )
leia (SEXO)
se SEXO = M
ento escreva ( homem)
fim se
fim
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
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
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.
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
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
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.
Dados: V = A * B * C
S = 2 * (A * B + A * C + B * C)
10. Elaborar um algoritmo que leia dois valores numricos diferentes e apre-
sente a diferena do maior pelo menor.
Objetivos
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)
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
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).
Estes dados devero ser lidos atravs de uma unidade de entrada qualquer.
Calcular e imprimir:
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)
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.
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.
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.
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
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).
Sintaxe
repita
<sequncia de comandos>
at <condio>
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.
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
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.
S = 21 / 50 + 22 / 49 + 23 / 48 + ... + 70 / 1.
Sexo (M ou F).
Calcule e escreva:
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.
Dados: V = A B C
S = 2 (A B + A C + B C)
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:
Objetivos
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.
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.
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.
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.
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).
Objetivos
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).
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.
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.
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.
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).
S = N! / (P! (N - P)!)
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.
Objetivos
Exemplo
Atribuir a informao e-Tec Brasil propriedade Text do componente Edit1.
Resposta
Edit1.Text:= e-Tec Brasil;
e) Nas janelas seguintes, escolha avanar, at que surja a janela Pronto para
Instalar, na qual se deve clicar no boto Instalar.
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.
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).
Usado para a insero de texto por meio de vrias linhas numa caixa de
TMemo
edio.
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
TFontDialog Controle usado para fornecer caixa de dilogo para a seleo de fontes.
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!
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.
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}
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.
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).
Para inserir outro valor nessa propriedade, exclua o valor existente, que no caso
Button1, e digite, por exemplo, Calcular. O resultado apresentado a seguir.
Propriedades
Form1
Propriedade Caption altere para Clculo do Salrio Semanal
Label1
Propriedade Caption altere para Digite o valor da hora trabalhada:
Neste momento, salve o seu projeto numa nova pasta (File > Save All).
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.
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.
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.
Dados: V = A B C
S = 2 (A B + A C + B C)
Dado: A = R2
Onde: = 3.1416
Objetivos
Case ... of ... else ... end (Caso ... seja ... seno ... fim do comando)
Sintaxe
if <expresso lgica> then
<instruo>;
Exemplo
if A > B then
ShowMessage (O valor de A maior que B!);
Sintaxe
if <expresso lgica> then
begin
<instruo1>;
<instruo2>;
:
<instruoN>;
end;
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;
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
b) O que se pede:
Calcular a rea do terreno retangular e exibir uma mensagem.
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
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;
Grave novamente o seu projeto (File > Save All) e, em seguida, execute (tecla
F9) o programa para ver seu funcionamento.
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:
b) O que se pede:
Peso ideal de uma pessoa.
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.
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.
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.
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.
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.
(PL>= 2.00) and (PL <= 2.40), faz com que o resultado da mesma somente
seja verdadeiro, se ambos os testes forem verdadeiros.
Explicando
O comando desta procedure tem por finalidade adicionar no ListBox1 uma
string (texto), atravs do mtodo Add da propriedade Items.
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.
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.
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.
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.
e) Cdigo do projeto.
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
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;
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.
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.
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,
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.
Observao
No exerccio 3, utilizar o comando case ... of usando sua criatividade.
Objetivos
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.
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.
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
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.
Sintaxe
for <varivel>:= <valor inicial> to (downto) <valor final> do
begin
<instruo1>;
<instruo2>;
<instruoN>;
end;
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.
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.
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.
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;
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.
Atividades de aprendizagem
1. Fazer um projeto em Lazarus para ler um nmero inteiro e apresentar o
resultado de sua tabuada.
Objetivos
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.
Sintaxe
procedure <nome> [(parmetros: tipos);]
[var variveis locais: tipos;]
begin
<instrues>;
end;
Soluo
a) Dados do problema:
Os valores dos dois catetos (b e c).
b) O que se pede:
Valor da hipotenusa (procedimento por valor).
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.
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.
Por ltimo, implemente os cdigos dos botes Limpar e Sair, grave o projeto
novamente e execute a aplicao.
Soluo
a) Cdigo do projeto.
Abra um novo projeto (Project > New Project > Application) e desenvolva
o formulrio, conforme apresentado no exerccio anterior.
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.
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.
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.
Objetivos
Sintaxe
function <nome> [(parmetros: tipos)]: <tipo da funo>;
[var variveis locais : tipos;]
begin
<instrues>;
<nome>: = <expresso ou resultado>;
end;
Soluo
a) Dados do problema:
Valor do raio de uma esfera.
b) O que se pede:
Volume da esfera (atravs de uma funo).
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.
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.
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.
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.
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.; 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.