Escolar Documentos
Profissional Documentos
Cultura Documentos
Ouro Preto - MG
2013
INSTITUTO
FEDERAL
RIO GRANDE
DO SUL
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.
e-Tec Brasil
e-Tec Brasil
Tecnologia da Informtica
Sumrio
Palavra do professor-autor
Apresentao da disciplina
11
Projeto instrucional
13
Aula 1 Conceitos
1.1 O computador
15
15
1.2 Algoritmo
15
15
16
19
19
19
2.4 Comentrio
22
22
34
45
45
51
53
Aula 5 Procedimento
5.1 Definio
61
61
5.2 Caractersticas
61
5.3 Sintaxe
62
63
e-Tec Brasil
Aula 6 Funo
6.1 Definio
6.2 Caractersticas e diferenas em relao a procedimento
69
6.3 Sintaxe
70
71
75
75
75
89
89
7.5 Aplicao
92
101
101
121
121
121
124
127
Aula 10 Procedimentos
10.1 Estruturas modulares
10.2 Mdulo procedimento
Aula 11 Funes
11.1 Mdulo funo
11.2 Exerccio resolvido
e-Tec Brasil
69
69
131
131
131
137
137
137
Referncias
141
Currculo do professor-autor
142
Palavra do professor-autor
A rea de Automao Industrial, desde que foi constituda, tem sido objeto
de constante evoluo tecnolgica no sentido de se aperfeioar processos
em termos de qualidade e custo. Ao longo deste processo de constante
procura pelo timo, solues ainda no estabelecidas vo sendo propostas
e efetivamente criadas.
Desta forma, o profissional de automao precisa ter, alm de conhecimentos tericos e prticos bem consolidados, grande capacidade de iniciativa e
imaginao. a unio da imaginao para propor solues aos problemas
apresentados, baseado em uma consolidada fundamentao terica, que
procuramos abordar na disciplina de Algoritmos e Programao.
A primeira metade da disciplina procura desenvolver nos futuros profissionais
o pensamento lgico, por meio do ensino de algoritmos estruturados. Em
cada problema proposto, h uma sistemtica que, unida ao raciocnio lgico,
procura estabelecer uma estratgia de soluo.
A proposta da segunda metade da disciplina estabelecer o contato do aluno
com uma ferramenta de programao comercial utilizada no mercado de
trabalho. Ferramenta esta que ser utilizada posteriormente para estabelecer
a comunicao entre os diversos sistemas de automao.
Desejamos que vocs tenham sucesso, no somente na disciplina, mas como
profissionais da rea que escolheram para sua formao e acreditamos que
o estudo e a dedicao necessrios ao profissional contemporneo esteja
sempre presente na vida de todos.
Adolfo Jos Gonalves Stavaux Baudson e
Francisco Csar Rodrigues de Arajo
e-Tec Brasil
Apresentao da disciplina
Ol, alunas e alunos
com muita alegria que comeamos hoje o estudo dos algoritmos e de uma
linguagem de programao. Como vocs podero perceber, trata-se de um
contedo muito interessante, atraente, envolvente e muito utilizado nos
dias de hoje. de fcil compreenso e de uma aplicabilidade imensa, ainda
mais em Automao. No mundo informatizado e automatizado de hoje h
a necessidade de se elaborar programas que desenvolvam tarefas para fins
diversos, como movimentar mquinas ou partes delas com um simples toque
em um boto, por exemplo.
Veja: dissemos que vocs estudaro os algoritmos. Mas, o que isso? Bom,
se dissermos a vocs que algoritmo uma receita de bolo, acreditariam? Pois
verdade. Se dissermos que o relato de sua caminhada at o trabalho ou
escola um algoritmo, tambm estamos falando a verdade. Ento pessoal,
isso mesmo. Os passos para se fazer um bolo ou uma caminhada at o
trabalho exigem certa lgica, no ?
Por isso, pelo fato de se ter uma lgica, isto , um conjunto de normas ou
regras, estamos falando de algoritmos. isso que iremos estudar nesta fase:
lgica de programao, ou seja, os algoritmos.
Em seguida, iremos aplicar esses conhecimentos em uma linguagem de programao para que vocs possam sentir como interessante a aplicabilidade
dos conceitos adquiridos.
Desejamos a todas e a todos um timo curso e colocamo-nos disposio
de vocs. Com alegria, sejam bem vindos!
Professores Adolfo Baudson e Francisco Csar Arajo
11
e-Tec Brasil
Palavra instrucional
Projeto
do professor-autor
Disciplina: Algoritmos e Programao (carga horria: 75h).
Ementa: Conceitos. Variveis e constantes. Comandos de entrada e sada.
Estruturas condicionais. Estruturas de repetio. Procedimento e funo.
Ambiente de programao Lazarus. Estruturas condicionais. Estruturas de
repetio. Procedimentos e funes.
AULA
OBJETIVOS DE
APRENDIZAGEM
MATERIAIS
CARGA
HORRIA
(horas)
1. Conceitos
Conceituar algoritmo.
Conceituar lgica de programao.
Estudar outros conceitos de informtica.
Ambiente virtual:
plataforma Moodle.
Apostila didtica.
Recursos de apoio: links,
exerccios.
01
2. Variveis e
constantes
Ambiente virtual:
plataforma Moodle.
Apostila didtica.
Recursos de apoio: links,
exerccios.
06
3. Comando de
entrada, sada
e estruturas
condicionais
Ambiente virtual:
plataforma Moodle.
Apostila didtica.
Recursos de apoio: links,
exerccios.
07
4. Estruturas de
repetio
Ambiente virtual:
plataforma Moodle.
Apostila didtica.
Recursos de apoio: links,
exerccios.
08
5. Procedimento
Ambiente virtual:
plataforma Moodle.
Apostila didtica.
Recursos de apoio: links,
exerccios.
08
6. Funo
Ambiente virtual:
plataforma Moodle.
Apostila didtica.
Recursos de apoio: links,
exerccios.
07
13
e-Tec Brasil
AULA
e-Tec Brasil
OBJETIVOS DE
APRENDIZAGEM
MATERIAIS
CARGA
HORRIA
(horas)
7. Ambiente de
programao
Lazarus
Conceituar a ferramenta de
programao Lazarus/Free Pascal.
Conceituar os principais termos
associados aos objetos utilizados
num ambiente grfico.
Instalar e configurar o Lazarus.
Conhecer o ambiente de
desenvolvimento Lazarus (IDE).
Desenvolver as primeiras aplicaes
dentro do IDE Lazarus para o
compilador Free Pascal.
Ambiente virtual:
plataforma Moodle.
Apostila didtica.
Recursos de apoio: links,
exerccios.
08
8. Estruturas
condicionais
Ambiente virtual:
plataforma Moodle.
Apostila didtica.
Recursos de apoio: links,
exerccios.
08
9. Estruturas de
repetio
Ambiente virtual:
plataforma Moodle.
Apostila didtica.
Recursos de apoio: links,
exerccios.
07
10.
Procedimentos
Ambiente virtual:
plataforma Moodle.
Apostila didtica.
Recursos de apoio: links,
exerccios.
08
11. Funes
Ambiente virtual:
plataforma Moodle.
Apostila didtica.
Recursos de apoio: links,
exerccios.
07
14
Aula 1 Conceitos
Objetivos
Conceituar algoritmo.
Conceituar lgica de programao.
Estudar outros conceitos de informtica.
1.1 O computador
Computador uma mquina que processa informaes de forma automtica, sob
o controle de grupos de instrues previamente definidas, com grande eficcia.
1.2 Algoritmo
1.2.1 Conceito
1.2.2 Definio
Algoritmo um conjunto de instrues, como uma receita de bolo, constitudo
de um nmero finito de passos.
Aula 1 - Conceitos
15
e-Tec Brasil
Bit (binary digit) menor poro de informao entendvel pelo computador. So os zeros e uns.
Resumo
Nessa aula, voc teve o primeiro contato com alguns conceitos de informtica.
Dentre eles, o de algoritmo e linguagem de programao. O entendimento
desses conceitos ser muito bom para a sequncia do aprendizado.
Esperamos t-lo ajudado a compreender, atravs desses conceitos, um pouquinho daquilo que pretendemos ao longo desse curso.
Ento, vamos continuar?
e-Tec Brasil
16
Algoritmos e Programao
Atividades de aprendizagem
1. Defina algoritmo e linguagem de programao.
2. Conceitue:
a) Bit
b) Byte
c) Compilador
Aula 1 - Conceitos
17
e-Tec Brasil
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:
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
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
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.
21
e-Tec Brasil
) 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.
e-Tec Brasil
22
Algoritmos e Programao
Exemplo
NOTA 7,5
X 2
B X+1
NOME Ensino a distncia
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)
Arredonda (A)
Quociente (A, B)
Resto (A, B)
23
e-Tec Brasil
Conjuno e
Disjuno ou
Negao no
Quadro 2.2: Operadores lgicos
E
V
OU
V
NO
No V
No F
Fonte: Autores
e-Tec Brasil
24
Algoritmos e Programao
25
e-Tec Brasil
e-Tec Brasil
26
Algoritmos e Programao
Arredonda (3.7)
4
Portanto, a resposta 4 por arredondamento.
e) Trunca (Y X)
Substituindo os valores das variveis na expresso:
Trunca (6.7 3)
Trunca (3.7)
3
Portanto, a resposta 3. O nmero truncado na sua parte decimal.
f) ABS (X K)
Substituindo os valores das variveis na expresso:
ABS (3 7)
ABS (4)
4
O absoluto de um nmero ele prprio em mdulo, ou seja, sem sinal.
Resumo
Nessa etapa de grande importncia para o aprendizado de programao, voc
pde ver alguns conceitos muito importantes como identificador, varivel e
constante. Foram apresentados, tambm, alguns comandos bsicos como
o de atribuio de valores s variveis. Voc pde tomar conhecimento de
como resolver uma expresso aritmtica. Aprendeu a utilizar os conectivos e
(conjuno), ou (disjuno) e no (negao) numa expresso lgica e, ainda,
utilizar os operadores relacionais.
Ento, continue firme e vamos passar prxima aula estudando novos conceitos.
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
e-Tec Brasil
28
Algoritmos e Programao
29
e-Tec Brasil
Neste exemplo anterior, o algoritmo espera que se digite uma nota. Assim
que for digitada, ela ser armazenada na varivel cujo identificador NOTA.
31
e-Tec Brasil
Sintaxe
escreva (identificador(es))
Exemplo
escreva (MEDIA)
ou
escreva (A mdia : , MEDIA)
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
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.
33
e-Tec Brasil
Simulao
NOTA1
5.0
NOTA2
8.5
NOTA3
7.5
MEDIA
7.0
Essa estrutura mostra uma sequncia de comandos, um por linha, como nos
dois exemplos vistos anteriormente (item 3.1.1).
e-Tec Brasil
34
Algoritmos e Programao
35
e-Tec Brasil
e-Tec Brasil
36
Algoritmos e Programao
Explicando
Inicialmente, declaramos as variveis A e B do tipo inteiro, como foi dito no
enunciado. Em seguida, fizemos a leitura dos dados. Posteriormente, utilizamos a estrutura condicional simples para verificar se o valor armazenado
na varivel A maior do que o armazenado na varivel B. Portanto, s ser
impresso a mensagem A maior que B se a condio for verdadeira, ou
seja, se A for maior que B.
2. Ler o sexo de uma pessoa (M, F) e imprimir a mensagem homem
caso seja do sexo masculino.
Soluo
incio
caractere: SEXO
escreva (Digite o sexo (M=masculino, F=feminino): )
leia (SEXO)
se SEXO = M
ento escreva ( homem)
fim se
fim
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
e-Tec Brasil
38
Algoritmos e Programao
39
e-Tec Brasil
Explicando
Inicialmente, declaramos as variveis A e B do tipo inteiro, como foi dito no
enunciado. Em seguida, fizemos a leitura dos dados. Posteriormente, utilizamos
a estrutura condicional composta para verificar se o valor armazenado na
varivel A maior do que o armazenado na varivel B ou se o valor armazenado na varivel B maior do que o armazenado na varivel A. Portanto, s
ser impressa a mensagem A maior que B se a condio for verdadeira,
ou seja, se A for maior que B. Caso contrrio, isto , se a condio for falsa,
ser impresso a mensagem B maior que A.
2. Fazer um algoritmo que leia 2 nmeros inteiros A e B. Imprimir uma mensagem informando qual dos dois o maior ou se so iguais.
Soluo
incio
inteiro: A, B
escreva (Digite um nmero inteiro: )
leia (A)
escreva (Digite outro nmero inteiro: )
leia (B)
se A > B
ento escreva (A maior que B)
seno se B > A
ento escreva (B maior que A)
seno escreva (Iguais)
fim se
fim se
fim
Explicando
Declaramos as variveis A e B do tipo inteiro. Em seguida, fizemos a leitura dos
dados. Posteriormente, utilizamos a estrutura condicional composta encadeada
para verificar se o valor armazenado na varivel A maior do que o armazenado na varivel B ou se o valor armazenado na varivel B maior do que o
armazenado na varivel A ou se so iguais. Portanto, sempre que se tiver mais
de duas opes para serem testadas, pode-se utilizar a estrutura encadeada
que nada mais que um se dentro de outro se. No exemplo anterior, o
encadeamento foi feito aps o comando seno, mas, se necessrio, pode
ser feito tambm aps o ento.
e-Tec Brasil
40
Algoritmos e Programao
4. Elaborar um algoritmo que leia o sexo e a altura de uma pessoa e imprima o peso ideal. (GUIMARES; LAGES, 1994).
Dados: Peso ideal para o sexo masculino: altura (cm) * 0.95 95
Peso ideal para o sexo feminino: altura (cm) * 0.85 85
Soluo
incio
real: ALTURA, PESO
caractere: SEXO
escreva (Digite a altura (cm): )
leia (ALTURA)
escreva (Digite o sexo (M, F): )
leia (SEXO)
se SEXO = M
ento PESO ALTURA * 0.95 - 95
seno PESO ALTURA * 0.85 - 85
fim se
escreva (Peso Ideal: , PESO)
fim
41
e-Tec Brasil
Resumo
Vimos nessa aula, como se faz para entrar com uma informao atravs
de uma unidade de entrada qualquer (teclado, por exemplo). Utilizamos o
comando leia para isso. Vimos tambm, como se retira uma informao, um
resultado, do algoritmo proposto atravs do comando escreva. Tambm foram
abordadas, atravs das estruturas condicionais, maneiras de se trabalhar com
a informao dependendo do valor (verdadeiro ou falso) de uma condio.
Voc pde perceber que muito parecido com a forma como a gente fala,
conversa, no dia-a-dia.
Nesse momento, caso necessrio, refaa a leitura das aulas anteriores bem
como refaa todos os exerccios propostos at ento. Se necessrio, procure
por outras bibliografias, mdias, etc.
Veja que estamos avanando e estudaremos, a seguir, como fazer para tratar
de uma grande variedade de dados num algoritmo. Vamos l, ento?
Atividades de aprendizagem
1. Elaborar um algoritmo que leia 3 nmeros inteiros. Calcule e imprima a
soma desses nmeros.
2. Fazer um algoritmo que calcule e imprima a mdia de 4 nmeros inteiros
que devero ser lidos atravs de uma unidade de entrada qualquer.
3. Fazer um algoritmo que leia os lados (A, B, C) do paraleleppedo, determine e imprima o volume (V) e a rea superficial (S) e, imprima uma
mensagem informando se o volume superior a 20 cm3.
Dados: V = A * B * C
S = 2 * (A * B + A * C + B * C)
4. Executando-se o algoritmo a seguir, que valores sero escritos:
incio
inteiro: A, C, I
real: B, J, K
A 32
C 2
I 5
B A ^ (1/5) {a elevado a um quinto ou raiz quinta de a}
e-Tec Brasil
42
Algoritmos e Programao
J C * 3/4
se (B > J)
ento K A + I / A - I
fim se
escreva (B, J, K)
fim
43
e-Tec Brasil
9. Implementar um algoritmo que leia uma letra. Se a letra for uma vogal,
imprimir a mensagem vogal, caso contrrio, imprimir a mensagem
consoante.
10. Elaborar um algoritmo que leia dois valores numricos diferentes e apresente a diferena do maior pelo menor.
e-Tec Brasil
44
Algoritmos e Programao
45
e-Tec Brasil
Explicando
Primeiramente so declaradas as variveis I e S que sero utilizadas no algoritmo. Em seguida, inicializamos as variveis S e I com os valores zero e um,
respectivamente. Pretendemos fazer o comando de repetio (lao de repetio)
e-Tec Brasil
46
Algoritmos e Programao
executar dez vezes as instrues internas a ele. Por isso, ele dever variar de
1 a 10. No final, quando a condio I <= 10 no for mais satisfeita, ou seja,
quando a varivel I atingir o valor 11, abandona-se o comando de repetio
e passa-se para a prxima instruo (escreva (S)).
Como podemos perceber, este programa no imprime o primeiro contedo
da varivel I, ou seja, o nmero 1. Isso acontece porque esta varivel incrementada antes do comando escreva (I), dentro do comando enquanto
... faa. Sendo assim, o primeiro valor da varivel I impresso 2. Portanto,
a cada repetio ser somado varivel S o contedo anterior desta varivel
com o valor atual da varivel I, isto , aps as dez repeties, teremos a soma
dos nmeros inteiros de 1 a 10.
Na varivel I acrescentado o valor 1 (um) a cada repetio e impresso este
valor. Esta varivel, cujo valor inicial 1 (um) variar de 1 a 10 dentro do
comando de repetio e, quando atingir o valor 11 este valor ser impresso,
pois o comando escreva (I) encontra-se depois de se incrementar o valor
de I e a condio I <= 10 se tornar falsa fazendo com que o comando seja
abandonado.
Por ltimo, ser impresso o valor armazenado na varivel S.
2. Construir um algoritmo para calcular a mdia de um conjunto de 100
valores inteiros fornecidos em uma unidade de entrada qualquer (GUIMARES; LAGES, 1994).
Soluo
incio
inteiro: NUM, I, SOMA
real: MEDIA
I 1
SOMA 0
enquanto I <= 100 faa
escreva (Digite um nmero )
leia (NUM)
SOMA SOMA + NUM
I I + 1
fim enquanto
MEDIA SOMA / 100
escreva (Mdia = , MEDIA)
fim
47
e-Tec Brasil
Explicando
Observe que necessrio declarar todas as variveis que sero utilizadas
no algoritmo. Em seguida faz-se a inicializao dessas variveis. A partir
da, trabalha-se o lao de repetio. quase sempre assim. Neste exerccio,
temos de somar todos os nmeros. Por isso, essa etapa feita dentro do
comando de repetio. Ento temos que ler o nmero, som-lo com o que
se tinha, ou seja, com aquele valor que estava armazenado na varivel SOMA
e incrementar o contador I somando mais 1 (um). Este contador serve para
contarmos quantos nmeros sero lidos. Quando atingir 101, a condio se
tornar falsa e o comando de repetio ser abandonado. Saindo do lao de
repetio, calcula-se a mdia aritmtica e a imprime em seguida.
3. Fazer um algoritmo que calcule e escreva o valor de S.
S = 1/1 + 3/2 + 5/3 + 7/4 + ... + 99/50 (50 termos)
Soluo
incio
inteiro: NUM, I
real: S
I 1
NUM 1
S 0
enquanto I <= 50 faa
S S + NUM / I
NUM NUM + 2
I I + 1
fim enquanto
escreva (Soma = , S)
fim
Explicando
Neste exerccio temos de somar fraes. Veja que h uma lgica entre elas. O
numerador incrementado de 2 e o denominador de 1. Temos 50 fraes e
no temos que ler nada neste exerccio. A cada iterao alteramos os valores
das variveis NUM (numerador) e I (contador de termos e denominador). Ao
final, imprimimos o valor da soma (S).
4. O departamento de Educao Fsica deseja informatizar este setor e colocou disposio os seguintes dados de 40 alunos:
e-Tec Brasil
48
Algoritmos e Programao
Matrcula, sexo (M, F), altura (cm) e status fsico (1 bom, 2 regular, 3 ruim)
Estes dados devero ser lidos atravs de uma unidade de entrada qualquer.
Calcular e imprimir:
a) A quantidade de alunos do sexo feminino com altura superior a 170 cm.
b) A % de alunos do sexo masculino (em relao ao total de alunos do sexo
masculino) cujo status fsico seja bom.
Soluo
incio
inteiro: ALTURA, STATUS, CONTF170, CONTH, CONTHB, I
caractere: SEXO, MATRCULA
real: P
CONTF170 0; CONTH 0; CONTHB 0; I 1
enquanto I < = 40 faa
escreva (Digite a matrcula neste formato (999.999-99): )
leia (MATRCULA)
escreva (Digite a altura (cm): )
leia (ALTURA)
escreva (Digite o status fsico (1bom, 2regular, 3ruim): )
leia (STATUS)
escreva (Digite o sexo (M, F): )
leia (SEXO)
se (SEXO = F) e (ALTURA > 170)
ento CONTF170 CONTF170 + 1
fim se
se SEXO = M
ento CONTH CONTH + 1
fim se
se (SEXO = M) e (STATUS = 1)
ento CONTHB CONTHB + 1
fim se
I I + 1
fim enquanto
P (CONTHB / CONTH) * 100
escreva (Quantidade de alunos do sexo feminino com altura
superior a 170 cm: , CONTF170)
49
e-Tec Brasil
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
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.
51
e-Tec Brasil
fim
Explicando
Neste exerccio, temos de somar as notas para depois calcularmos a mdia.
Ento temos que ler a nota, som-la com o que se tinha, ou seja, com aquele
valor que estava armazenado na varivel SOMA. Veja que no necessrio
inicializar a varivel de controle I. Isso feito automaticamente. No devemos
incrementar a varivel de controle dentro do lao de repetio, pois isso
tambm automtico, ou seja, essa varivel (I) ser incrementada de 1 (um)
automaticamente. Saindo do lao de repetio, calcula-se a mdia aritmtica
e a imprime em seguida.
2. Fazer um algoritmo que calcule e escreva o valor de S.
S = 1 / 1 + 2 / 2 + 4 / 3 + 8 / 4 + ... (100 termos)
Soluo
incio
inteiro: NUM, I
real: S
NUM 1
S 0
para I de 1 at 100 faa
S S + NUM / I
NUM NUM * 2
e-Tec Brasil
52
Algoritmos e Programao
fim para
escreva (Soma = , S)
fim
Explicando
Neste exerccio temos de somar fraes. O numerador multiplicado por 2
e o denominador incrementado de 1. So 100 fraes e no temos que
ler nada neste exerccio. A cada iterao alteramos o valor da varivel NUM
(numerador). Como a varivel de controle I varia de 1 a 100, assim como o
denominador da expresso proposta, utilizamos esta varivel (I) como denominador. A varivel I incrementada automaticamente pelo comando para
... faa. Ao final, imprimimos o valor da soma (S).
at <condio>
53
e-Tec Brasil
Explicando
Veja como se escreve a estrutura de repetio. Os comandos internos estrutura so os mesmos do comando enquanto ... faa. A mudana est
na condio que, no comando repita, escrita e analisada no final. E, por
causa disso, os comandos que ficam no lao de repetio so executados
pelo menos uma vez, diferentemente das outras duas estruturas de repetio
vistas anteriormente. Neste exerccio, temos de somar todos os nmeros. Por
isso essa etapa feita dentro do comando de repetio. Ento temos que
ler o nmero, som-lo com o que se tinha, ou seja, com aquele valor que
estava armazenado na varivel SOMA e incrementar o contador I somando
mais 1 (um). Este contador serve para contarmos quantos nmeros sero
lidos. Quando atingir 101, a condio se tornar verdadeira e o comando de
repetio ser abandonado. Saindo do lao de repetio, calcula-se a mdia
aritmtica e a imprime em seguida.
2. Utilizando o comando repita ... at, fazer um algoritmo para calcular e imprimir a seguinte soma.
S = (37 * 38) / 1 + (36 * 37) / 2 + (35 * 36) / 3 + ... + (1 * 2) / 37
e-Tec Brasil
54
Algoritmos e Programao
Soluo
incio
inteiro: NUM1, NUM2, I
real: S
I 1
NUM1 37
NUM2 38
S 0
repita
S S + (NUM1 * NUM2) / I
NUM1 NUM1 - 1
NUM2 NUM2 - 1
I I + 1
at I > 37
escreva (Soma = , S)
fim
55
e-Tec Brasil
Resumo
Vimos nessa aula o conceito de estrutura de repetio. Aprendemos como se
faz para repetir uma determinada tarefa vrias vezes. Apresentamos exemplos,
exerccios resolvidos e sugerimos alguns outros. Se achar necessrio, leia este
captulo novamente. Refaa os exerccios.
Essa estrutura (repetio) muito importante para a elaborao de algoritmos,
pois podemos executar um determinado conjunto de comandos mais de uma
vez sem repetir as linhas de cdigos.
Atividades de aprendizagem
1. Fazer um algoritmo, utilizando o comando enquanto ... faa, que:
Leia um conjunto de 150 fichas contendo cada uma, a idade de um indivduo e calcule e escreva a idade mdia deste grupo de indivduos.
2. Fazer um algoritmo, utilizando o comando enquanto ... faa, que
calcule e escreva a seguinte soma:
S = 21 / 50 + 22 / 49 + 23 / 48 + ... + 70 / 1.
3. Fazer um algoritmo, utilizando o comando enquanto ... faa, que leia
os seguintes dados referentes a cada um dos vrios habitantes de uma
determinada cidade, para serem analisados:
Sexo (M ou F).
Calcule e escreva:
a) A quantidade de pessoas do sexo feminino com idade acima de 60 anos.
b) A porcentagem de indivduos cuja idade est entre 18 e 35 anos (inclusive) e que tenha olhos verdes e cabelos loiros.
e-Tec Brasil
56
Algoritmos e Programao
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.
57
e-Tec Brasil
e-Tec Brasil
58
Algoritmos e Programao
10. Escreva um algoritmo que leia as notas de vrios alunos. Calcule e imprima a mdia da turma, bem como a situao (mensagem) de cada um
deles, conforme critrio apresentado a seguir:
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
Aula 5 - Procedimento
61
e-Tec Brasil
5.3 Sintaxe
procedimento <nome> [(parmetros: tipos)] {cabealho}
[variveis locais: tipos]
incio
<instrues>
fim {<nome>}
Exemplo
{passagem de parmetro por valor}
procedimento SOMAR (A, B: inteiro)
R: inteiro
incio
R A + B
escreva (Resultado = , R)
fim {SOMAR}
ou
{passagem de parmetro por referncia}
procedimento SOMAR (A, B: inteiro; var R: inteiro)
AUX: inteiro
incio
AUX A + B
R AUX
fim {SOMAR}
Explicando
Veja que existem dois tipos de construo de procedimentos. O primeiro com
passagem de parmetro(s) por valor e o outro, com passagem de parmetro(s)
por referncia.
Nos algoritmos em que se utiliza procedimento(s) com passagem de parmetro(s)
por valor, as variveis globais que esto trabalhando como parmetros de
entrada do procedimento passam seus valores para os parmetros locais, isto
, aqueles que se encontram no cabealho do procedimento.
Naqueles algoritmos em que se utiliza procedimento(s) com passagem de
parmetro(s) por referncia, veja que tudo que acontece com os parmetros
da chamada do procedimento, acontece tambm com os parmetros do
cabealho do procedimento. Por este motivo, no h a necessidade de se
imprimir o resultado dentro do procedimento. Isso pode ser feito no programa principal, ou seja, logo depois da chamada do procedimento. Para
e-Tec Brasil
62
Algoritmos e Programao
que um parmetro seja por referncia, basta colocar a palavra var antes do
parmetro, no cabealho do procedimento. Veja os exerccios resolvidos a
seguir. Lembre-se: um procedimento s executado quando for chamado e
ele pode ser chamado em partes diferentes do mesmo programa.
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
e-Tec Brasil
64
Algoritmos e Programao
Explicando
Observe que, diferentemente do exerccio anterior, onde o procedimento
era com passagem de parmetro(s) por valor, criamos um parmetro com
passagem por referncia (var R: inteiro). O parmetro R ir corresponder
com o parmetro Z, da chamada do procedimento. Os dois apontam para a
mesma referncia na memria. Por isso, o que acontece com um, acontece com
o outro. Tudo por causa daquela palavrinha var que precede o parmetro R.
Ento, no h necessidade de se imprimir o clculo da soma dentro do procedimento. Isso pode ser feito no corpo do programa principal atravs do
parmetro Z.
Uma vantagem de se utilizar procedimento com passagem de parmetro(s)
por referncia que se pode utilizar no programa principal o resultado de
clculos efetuados dentro do procedimento. Imagine se quisssemos acumular
o resultado de todas as somas? Isso seria perfeitamente possvel neste algoritmo. Bastaria criar uma varivel global inteira S, por exemplo, e, no programa
principal, aps a chamada do procedimento, fazer o clculo (S S + Z). No
poderia se esquecer de zerar a varivel S antes do comando de repetio
enquanto ... faa.
Tambm nessa modalidade de procedimento podemos fazer o reaproveitamento
de cdigo. Se necessrio, podemos chamar o procedimento em qualquer
parte do programa, como mostrado anteriormente.
Resumo
A modularizao de programas atravs de procedimentos facilita a elaborao,
o entendimento e a manuteno dos mesmos. Tratar um problema em partes
quase sempre mais fcil que trat-lo no todo. Outra vantagem o reaproveitamento de cdigos. Pode-se chamar o procedimento vrias vezes dentro
do mesmo programa sem ter que escrever todos os cdigos pertencentes ao
procedimento novamente.
Procedimento deve ser utilizado quando no se deseja retornar valor. Quando
for necessrio retornar um valor mais interessante se utilizar funo que
ser mostrada no prximo captulo.
Nesta aula, vimos os procedimentos com passagem de parmetros por valor
e por referncia. A seguir, algumas atividades para que voc possa fixar estes
conhecimentos.
Aula 5 - Procedimento
65
e-Tec Brasil
Atividades de aprendizagem
1. Fazer um algoritmo que leia 100 nmeros inteiros calcule e imprima o
cubo de cada um deles. Utilizar procedimento com passagem de parmetros por valor (FARRER et al, 1999).
2. Fazer um algoritmo que leia 100 nmeros inteiros, dois a dois (50 pares),
e faa a troca do primeiro pelo segundo, em cada par, utilizando procedimento com passagem de parmetros por referncia (GUIMARES;
LAGES, 1994).
3. Fazer a simulao completa do exerccio a seguir, utilizando procedimento com passagem de parmetros por valor:
incio
inteiro: X, Y, Z, I
procedimento Menorde3 (A, B, C: inteiro)
AUX: inteiro
incio
se (A < B) e (A < C)
ento AUX A
seno se (B < C) e (B < A)
ento AUX B
seno AUX C
fim se
fim se
escreva(Menor dos 3:, aux)
fim
para I de 1 at 10 faa
escreva (Digite um nmero inteiro: )
leia (X)
escreva (Digite um nmero inteiro: )
leia (Y)
escreva (Digite um nmero inteiro: )
leia (Z)
menorde3 (X, Y, Z)
fim para
X 10
Y 3
Z 20
menorde3 (X, Y, Z)
X 12
e-Tec Brasil
66
Algoritmos e Programao
Y 13
Z 14
menorde3 (X, Y, Z)
fim
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.
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
Explicando
Observe que a forma de se escrever uma funo um pouco diferente de
procedimento. H a declarao do tipo da funo j que o seu nome funciona
como uma varivel. No final da funo, h a devoluo do resultado para o
nome da funo.
Neste exerccio, possvel fazer o clculo da soma de A por B e armazenar o
resultado diretamente no nome da funo. Com isso, eliminaramos a varivel
AUX. Assim, ficaria: SOMAR A + B.
No programa principal, faz-se a chamada da funo junto com o comando
escreva.
2. Fazer um algoritmo que leia 30 nmeros inteiros e imprimir o valor absoluto de cada um deles. Utilizar funo para calcular ABSOL.
incio
inteiro: A, I
funo ABSOL (X: inteiro): inteiro
AUX: inteiro
incio
Aula 6 - Funo
71
e-Tec Brasil
se X < 0
ento AUX X * (-1)
seno AUX X
fim se
ABSOL AUX
fim
para I de 1 at 30 faa
escreva (Digite um nmero inteiro:)
leia (A)
escreva (Absoluto =, ABSOL(A))
fim para
fim
Resumo
Nesta aula, estudamos as funes, ou seja, as estruturas modulares. Voc
pde ver que, subdividindo o algoritmo em blocos menores, fica mais fcil a
sua manuteno. O entendimento tambm facilitado. Voc pode perceber
que uma funo um pequeno algoritmo inserido no algoritmo principal.
A modularizao utilizada no algoritmo nos permite tratar apenas parte do
cdigo sem nos preocupar com o todo o que facilita muito a sua manuteno.
A partir de agora, voc ir aplicar esses conceitos numa linguagem de programao tornando os estudos bem mais agradveis. Voc ir ver como
fantstico programar. Parabns por chegar at aqui.
Atividades de aprendizagem
1. Fazer um algoritmo que leia 100 nmeros inteiros, calcule e imprima o cubo
de cada um deles. Utilizar funo para calcular o cubo (FARRER et al, 1999).
2. Fazer um algoritmo que leia 50 pares de nmeros inteiros, referentes
a catetos de tringulos retngulos. Calcule e imprima a hipotenusa de
cada um dos tringulos. Utilizar funo para calcular hipotenusa (GUIMARES; LAGES, 1994).
3. Fazer um algoritmo que leia 10 pares (N e P) de nmeros inteiros, sendo
o primeiro (N) sempre maior que o segundo (P). Calcule e imprima o valor
de S, dado pela frmula a seguir:
S = N! / (P! (N - P)!)
e-Tec Brasil
72
Algoritmos e Programao
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.
75
e-Tec Brasil
o projeto Megido, o qual tinha por objetivo ser um clone do Delphi. O Lazarus
um ambiente de desenvolvimento integrado que utiliza o Free Pascal como
compilador. Foi desenvolvido para ser uma alternativa linguagem de programao Delphi, cujos direitos pertencem empresa Embarcadero, e que devido
a sua grande semelhana com este software em sua verso 7, considerado
por muitos, como um clone do mesmo.
sendo executado antes da tecla que foi pressionada chegar a seu destino.
e-Tec Brasil
76
Algoritmos e Programao
77
e-Tec Brasil
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.
79
e-Tec Brasil
d) Na janela Selecionar Componentes (Figura 7.6), desmarque a opo: Associar Lazarus com a extenso de arquivo.pas, para evitar conflitos de
arquivos.pas associados ao Delphi, e, logo a seguir, clique em Avanar.
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.
e-Tec Brasil
80
Algoritmos e Programao
Barra de botes (Figura 7.9) fornece um atalho para os comandos frequentemente utilizados no desenvolvimento de uma aplicao.
Paleta de componentes (Figura 7.10) contm o conjunto de componentes existentes na biblioteca de componentes, os quais possibilitam a
implementao de diversas funcionalidades no desenvolvimento de um
projeto. constituda por uma srie de abas, que dividem e agrupam
diversos componentes de acordo com suas funes.
81
e-Tec Brasil
Observao
Caro estudante, apesar de ser mais cmodo usarmos o IDE em portugus,
neste material trabalharemos no idioma original, ou seja, o ingls, tendo em
vista que a maioria das linguagens de programao se encontra em ingls e,
alm disso, permitir a voc uma maior afinidade com esse idioma.
e-Tec Brasil
82
Algoritmos e Programao
Caso queira que na inicializao do Lazarus seja apresentado um novo projeto, e no o projeto manipulado na ltima vez em que voc usou o IDE,
utilize o seguinte procedimento: acesse o menu Environment > Options
> Environment e desmarque a opo Open last Project at start.
83
classes
a definio de um conjunto de
caractersticas e comportamentos
que os elementos (objetos)
devero seguir.
e-Tec Brasil
tempo de projeto
Etapa em que o programador
desenvolve o projeto (aplicao)
no IDE, tal como: elaborao da
interface grfica/codificao do
programa.
tempo de execuo
Etapa no qual o programa
encontra-se em execuo.
Nome
TMainMenu
TButton
e-Tec Brasil
84
Finalidade
Permite a criao de menus suspensos dentro de uma aplicao.
Usado na criao de botes que permitem ao usurio interagir com a
aplicao por meio de aes especficas, atravs do acionamento (clique)
desses botes.
TLabel
TEdit
TMemo
Usado para a insero de texto por meio de vrias linhas numa caixa de
edio.
Algoritmos e Programao
TCheckBox
TRadioButton
TListBox
TComboBox
TGroupBox
TRadioGroup
TPanel
Nome
TBitBtn
Finalidade
Semelhante ao Button da aba Standard, mas com a possibilidade de se
adicionar uma imagem bitmap.
TImage
TShape
TMaskEdit
TStringGrid
Common Controls (Figura 7.14) apresenta componentes que permitem acompanhar a execuo de rotinas (aes) especficas do programa,
atravs do controle do tempo, bem como definir atalhos para recursos
do aplicativo ou sistema.
85
e-Tec Brasil
Nome
TTrackBar
TProgressBar
Finalidade
Barra de controle deslizante que fornece uma guia a partir da qual o
usurio pode moviment-la por toda sua regio.
Controle usado para representar uma operao em andamento como, por
exemplo, o download ou transferncia de um arquivo.
TStatusBar
TToolBar
TPageControl
Controle usado para se criar guias que exibem pginas, as quais podem
conter outros componentes.
TImageList
Nome
Finalidade
TOpenDialog
TSaveDialog
TFontDialog
TPrintDialog
e-Tec Brasil
86
Algoritmos e Programao
Nome
Finalidade
TTimer
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.
87
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 o projeto
a partir da opo Save in. Em seguida, na caixa de texto Name, mantenha
a sugesto informada (project1.lpi) e clique em Save. Na sequncia, surge
outra caixa de dilogo na qual dever ser informado o nome da Unit. Da
mesma forma, mantenha o nome sugerido (Unit1.pas) e clique em Save, e
assim, conclumos a operao de gravao do projeto. O passo seguinte
montarmos o cdigo correspondente soluo do problema.
D um duplo clique no boto para acionarmos o mtodo padro deste componente, o qual est associado ao evento OnClick. Tenha em mente que,
o mtodo pode ser entendido como um conjunto de instrues que, por
enquanto, voc pode considerar como sendo uma funo ou procedimento,
os quais j foram estudados em algoritmos. Em seguida, a declarao do
mtodo criada dentro do editor de cdigos do Lazarus e o cursor posicionado
dentro do bloco do procedimento. Para finalizarmos nosso programa, digite o
seguinte comando: Show e aperte Ctrl + Space, para que o IDE apresente
todos os itens iniciados por esse comando. Complete a operao escolhendo
no menu suspenso pelo comando ShowMessage e aperte Enter em seguida.
Por fim, o comando dever ficar da seguinte forma: ShowMessage (Bem-vindo
ao e-tec Brasil!). Para executar a aplicao, clique no boto Run da barra de
botes ou pressione F9. O resultado apresentado na Figura 7.18.
e-Tec Brasil
88
Algoritmos e Programao
Finalidade
*.LPI
*.LPR
*.LFM
*.PAS *PP
*.LRS
*.PPU
Para cada Unit do projeto, durante o processo de compilao, gerado esse tipo de
arquivo (Unit compilada) atravs do FPC.
*.LPK
89
e-Tec Brasil
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-Tec Brasil
90
Algoritmos e Programao
Intervalo
0 .. 255
Shortint
-128 .. 127
Smallint
-32768 .. 32767
Word
0 .. 65.535
Integer
Cardinal
LongInt
-2147483648 .. 2147483647
Longword
Int64
QWord
0 .. 4294967295
-9223372036854775808 .. 9223372036854775807
0 .. 18446744073709551615
Intervalo
Depende da plataforma operacional
Single
1.5-45 .. 3.438
Double
5.0-324 .. 1.7308
Extended
1.9-4932 .. 1.14932
Comp
-264+1 .. 263-1
Currency
-922337203685477.5808 .. 922337203685477.5807
91
e-Tec Brasil
7.4.3 Operadores
Quadro 7.9: Operadores aritmticos/relacionais/lgicos
Tipo de operadores
Smbolo
Aritmticos
+ (adio)
(subtrao)
* (multiplicao)
/ (diviso de pontos flutuantes)
Div (diviso Inteira)
Mod (resto da diviso de inteiros)
Relacionais
= (igual)
< > (diferente)
> (maior)
< (menor)
>= (maior ou igual)
<= (menor ou igual)
Lgicos
Not (negao)
And (E lgico)
Or (OU lgico)
Fonte: Autores
7.5 Aplicao
Neste tpico ser desenvolvida uma aplicao, na qual faremos apenas o uso
de comandos de entrada e sada para a soluo do problema a ser apresentado.
Entretanto, antes de passarmos ao enunciado do problema, importante
ressaltar algumas etapas necessrias ao desenvolvimento da soluo do mesmo.
Segundo Manzano e Mendes (1999), a primeira etapa compreende o entendimento por completo do problema em questo, no qual devemos identificar
os dados fornecidos, bem como o que se deseja calcular, de maneira a se
chegar soluo final. A segunda etapa caracteriza-se pela elaborao do
algoritmo. Com o algoritmo pronto, passa-se montagem da interface grfica
do programa; e, por ltimo, desenvolve-se o conjunto de instrues associado
aos eventos (procedimentos) para cada um dos componentes existentes em
seu formulrio que iro sofrer uma ao direta do usurio. Diante dessas
observaes, passamos, agora, ao desenvolvimento do programa.
Problema
Um funcionrio trabalha 5 dias por semana, 8 horas por dia. Fazer uma
aplicao para calcular o salrio semanal desse funcionrio sendo que o
valor da hora deve ser digitado via teclado. Apresentar o resultado em um
componente Edit (caixa de texto).
e-Tec Brasil
92
Algoritmos e Programao
Soluo
1 etapa aps entendido o problema exposto, devemos observar quais so
os dados fornecidos no enunciado, bem como o que se pede para calcular.
De acordo com uma primeira anlise do problema, constatamos que nos
fornecido o valor de cada hora trabalhada pelo funcionrio e que o mesmo
trabalha 8 horas por dia durante os cinco dias da semana. Observamos,
tambm, que, com base nessas informaes, devemos calcular o salrio
desse funcionrio. Sendo assim, podemos apresentar um pequeno resumo
com essas informaes:
Dados: Valor da hora trabalhada.
Trabalha 5 dias por semana sendo 8 horas por dia.
Pede-se: Salrio que o funcionrio ir receber, ao final de uma semana de trabalho.
2 etapa no nos preocuparemos em apresentar o algoritmo para essa
aplicao, tendo em vista que esse assunto j foi bastante abordado em aulas
anteriores, alm do que, dedicaremos uma ateno especial para o cdigo que
ser desenvolvido no IDE do Lazarus. Contudo, prezado aluno, importante
que nessa fase inicial da elaborao dos nossos primeiros programas em
Lazarus, voc realize essa atividade antes de passar etapa seguinte.
3 etapa essa etapa consiste em se elaborar a interface grfica do aplicativo.
Sendo assim, abra o Lazarus e inicie um novo projeto (Project > New Project
> Application). No formulrio da aplicao iremos inserir alguns componentes
que se encontram na aba Standard. Portanto, selecione essa aba e adicione
ao formulrio dois componentes do tipo Label, um abaixo do outro; e dois
componentes do tipo Edit, sendo que cada um deles dever ficar direita
de cada um dos labels. Em seguida, insira trs Buttons no formulrio. A
Figura 7.19 ilustra essa operao.
93
e-Tec Brasil
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
e-Tec Brasil
94
Algoritmos e Programao
Label2
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
95
e-Tec Brasil
e-Tec Brasil
96
Algoritmos e Programao
begin
VH:= StrToFloat(Edit1.Text);
SALARIO:= VH * 8 * 5;
FloatToStr (Valor-Real):
retorna o valor em string (texto)
correspondente ao valor real
passado como parmetro.
Edit2.Text:= FloatToStr(SALARIO);
Edit1.SetFocus;
end;
Explicando
Inicialmente, declaramos as variveis VH e SALARIO como sendo do tipo
real, pois, as mesmas podero receber valores fracionrios. Como exemplo,
podemos citar o caso do usurio informar o valor da hora igual a 12,50 e, a, o
programa calcular R$ 500,00 para o salrio do funcionrio. Como a frmula
para clculo do salrio contm o valor da hora que real, assim, tambm, a
varivel SALARIO o ser, apesar de o resultado encontrado ser exato. Observe
que, antes da declarao dessas variveis, existe o identificador var, que tem
por objetivo indicar que logo aps a mesma, sero criadas as variveis do
procedimento. Em seguida, fizemos a converso do dado de entrada informado
pelo usurio no Edit1 que, neste caso, o valor da hora e o atribumos
varivel VH. Essa converso foi necessria, pois, qualquer dado contido num
componente Edit do tipo texto e, como o valor da hora numrico devemos,
dessa forma, convert-lo de texto para real. Ao lado, so apresentadas as
principais funes de converso para nmeros. Retomando nossa explicao,
posteriormente, realizamos o clculo do salrio do funcionrio e, logo aps,
o apresentamos no formulrio por meio do Edit2. Veja que, novamente, foi
necessria a converso de tipos, s que agora, a mesma feita de maneira
contrria, ou seja, de real para texto, pois, o resultado dever ser mostrado
num Edit. Por ltimo, foi usado o mtodo SetFocus que posicionar o cursor
no Edit1 do formulrio.
O prximo passo na soluo deste problema, programarmos os eventos
OnClick dos botes Limpar e Sair, respectivamente. Para isso, criamos os
procedimentos para esses botes de forma anloga ao que foi feito para o
boto Calcular. Outra maneira de gerarmos esses procedimentos padres
dando um duplo clique em cada um dos botes. O cdigo para cada um
desses procedimentos mostrado a seguir.
97
e-Tec Brasil
Explicando
As instrues relativas ao OnClick do boto Limpar, tm por objetivo apagar
os contedos dos componentes Edit1 e Edit2 respectivamente; j o mtodo
SetFocus reposiciona o cursor no Edit1 do formulrio. Quanto ao cdigo
relativo ao procedimento do boto Sair, tem-se que, o mesmo finaliza a
execuo da aplicao.
Agora, salve novamente a aplicao e, em seguida, execute-a (tecle F9).
Resumo
Nesta aula, voc teve a oportunidade de conhecer essa poderosa ferramenta
de programao que o Lazarus/Free Pascal, inicialmente atravs de alguns
conceitos. Posteriormente, aprendendo a fazer a instalao, bem como algumas
configuraes bsicas do Lazarus e, em seguida, foi levado a familiarizar-se
com o seu IDE. Conheceu, tambm, os elementos bsicos da linguagem
Pascal/Object Pascal suportados pelo compilador Free Pascal. Por ltimo, voc
executou o seu primeiro programa usando apenas estruturas sequenciais,
dentro de um ambiente voltado para o desenvolvimento de aplicaes com
interfaces grficas.
Encerramos assim, nossa stima aula, e, esperamos que o assunto apresentado,
tenha lhe estimulado bastante para que voc possa criar, a partir de agora,
programas por meio do uso dessa ferramenta com bastante criatividade e
qualidade. Para auxili-lo nesse processo, a seguir, daremos incio ao estudo
das outras estruturas de controle para o desenvolvimento de solues mais
apuradas. Vamos em frente, ento?
e-Tec Brasil
98
Algoritmos e Programao
Atividades de aprendizagem
1. Elaborar um projeto para calcular o salrio lquido de um funcionrio.
Para isto, so fornecidos o valor da hora trabalhada, o nmero de horas
trabalhadas no ms e o percentual de desconto a ser aplicado sobre o salrio base desse funcionrio. Sendo assim, o programa dever apresentar
o salrio lquido. Implementar, tambm, as rotinas de limpar os componentes do formulrio e de sair da aplicao, ou seja, inserir no formulrio
mais dois botes e programar o evento OnClick dos mesmos (adaptado
de Manzano; Mendes, 1999).
2. Fazer um projeto em Lazarus que leia os lados (A, B, C) do paraleleppedo, determine e imprima o volume (V) e a rea superficial (S).
Dados: V = A B C
S = 2 (A B + A C + B C)
3. Fazer um projeto em Lazarus que leia o raio de um crculo, determine e
imprima a rea correspondente.
Dado: A = R2
Onde: = 3.1416
99
e-Tec Brasil
<instruo>;
Exemplo
if A > B then
101
e-Tec Brasil
begin
A:= B + 2;
B:= B 1;
IntToStr (Valor-Inteiro):
retorna o valor em string (texto)
correspondente ao valor inteiro
passado como parmetro.
Edit1.Text := IntToStr(A);
Edit2.Text := IntToStr(B);
end;
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:
Propriedade
Valor
Form1
Caption
Label1
Caption
Label2
Caption
Edit1
Text
Edit2
Text
Button1
Caption
Calcular
Label3
Caption
rea =
Fonte: Autores
103
e-Tec Brasil
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
Grave novamente o seu projeto (File > Save All) e, em seguida, execute (tecla
F9) o programa para ver seu funcionamento.
105
e-Tec Brasil
Sintaxe
if <expresso lgica>
then <instruo>
else <outra instruo>;
8.1.2.1 Aplicao
Fazer um projeto em Lazarus que leia a altura (em metros) e o sexo (masculino
ou feminino) de uma pessoa. Com base nesses dados, calcular e imprimir o
peso ideal desse indivduo, de acordo com a seguinte frmula:
e-Tec Brasil
106
Algoritmos e Programao
Soluo
a) Dados do problema:
Veja que nesta aplicao so usados dois novos tipos de componentes: TGroupBox
e TRadioButton, ambos da aba Standard. A utilizao desses componentes na
interface feita da seguinte maneira: insira o componente do tipo TGroupBox
no formulrio e altere o seu Caption para Sexo; em seguida, insira dentro
deste componente GroupBox1, dois componentes do tipo TRadioButton,
sendo estes representados por RadioButton1 e RadioButton2, respectivamente. Altere a propriedade Caption do RadioButton1 para Masculino
e do RadioButton2 para Feminino. Selecione novamente, o componente
RadioButton1 e altere a propriedade ChecKed para True. Esta alterao tem
por objetivo deixar previamente marcada a opo Masculino para o sexo
de uma pessoa, quando a aplicao for executada. Os demais componentes
do formulrio devero ser configurados da maneira como j foi apresentada
em exerccios anteriores.
107
e-Tec Brasil
Explicando
Inicialmente, declaramos as variveis ALTURA e PESOID como sendo do tipo real.
Em seguida, solicitada a leitura da altura da pessoa, sendo seu valor atribudo
varivel ALTURA. Observe que, nesta aplicao no foi necessria a criao
de uma varivel para se guardar o sexo da pessoa, pois, a atribuio desta
informao ser feita mediante escolha de uma opo dentro do componente
GroupBox1, ou seja, quando o usurio clicar no valor desejado para o sexo,
ser atribudo o valor True propriedade Checked do RadioButton escolhido. Baseado nesta escolha, atravs de uma estrutura condicional composta,
verificamos se o valor contido na propriedade ChecKed do RadioButton1
verdadeiro (True). Caso seja, aplicamos a frmula para o peso ideal masculino;
caso contrrio, calculamos o peso ideal feminino. Em seguida, exibimos atravs
do componente Edit2, o resultado encontrado.
Outra forma de se usar a estrutura condicional neste projeto apresentada a
seguir. Entretanto, observe que se trata apenas de um exemplo para ilustrar
o uso do bloco de comandos delimitado por begin ... end tanto no
then quanto no else, j que a insero do mesmo comando (Edit2.Text:=
FloatToStr(PESOID);) em dois blocos mutuamente excludentes um
contrassenso, ou seja, no uma boa prtica.
e-Tec Brasil
108
Algoritmos e Programao
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.
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.
Soluo
a) Dados do problema:
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
111
e-Tec Brasil
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.
e-Tec Brasil
112
Algoritmos e Programao
Explicando
A expresso ou varivel do comando case, tem de resultar, obrigatoriamente, num valor ordinal, normalmente do tipo Char ou Integer. O
resultado jamais poder ser do tipo real.
Caso uma determinada opo do comando case possua mais de uma instruo, estas devero ser colocadas dentro de um bloco: begin ... end.
O comando case se assemelha estrutura condicional encadeada, porm, se apresenta de uma maneira mais simples e eficiente.
As opes (opo 1, opo 2, ..., opo N) contidas na sintaxe, no necessariamente devem ser definidas como um valor, mas podem especificar intervalos. Veja o exemplo:
valor ordinal
Os tipos ordinais so
representados por conjuntos
ordenados de valores ou que
estejam emsequncia.
case key of
0..9: s:= dgito;
else s:= outro caractere qualquer;
end;
8.1.4.1 Aplicao
Com base no Quadro 8.2, escreva um projeto em Lazarus que leia o cdigo
de um sanduche e a quantidade comprada do mesmo. Em seguida, calcule
e mostre o valor a pagar. Apresentar, tambm, num componente do tipo
TListBox, o nome do sanduche e o valor a pagar.
113
e-Tec Brasil
Nome
Hambrguer
5.00
X-Picanha
9.90
X-Salada
8.00
Outros
7.50
Fonte: Autores
Soluo
a) Dados do problema:
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);
QUANT:= StrToInt(Edit2.Text);
if COD = 1 then
begin
StrToInt (Valor-Texto):
devolve o valor em inteiro,
correspondente ao texto
passadocomoparmetro.
115
e-Tec Brasil
else
if COD = 4 then
begin
VP:=
QUANT * 7.50;
NOME:= Outros;
end
else
begin
ShowMessage(Cdigo do sanduche invlido);
Edit1.SetFocus;
Exit;
end;
Edit3.Text:= FloatToStr(VP);
ListBox1.Items.Add(NOME + R$ + Edit3.Text);
Edit1.SetFocus;
end;
2 soluo
procedure TForm1.Button1Click(Sender: TObject);
var
COD,QUANT: byte;
VP: real;
NOME: string;
begin
COD:= StrToInt(Edit1.Text);
QUANT:= StrToInt(Edit2.Text);
case COD of
1: begin
VP:=
QUANT * 5.00;
NOME:= Hambrguer;
end;
2: begin
VP:=
QUANT * 9.90;
NOME:= X-Picanha;
end;
3: begin
VP:=
QUANT * 8.00;
NOME:= X-Salada;
end;
e-Tec Brasil
116
Algoritmos e Programao
4: begin
VP:=
QUANT * 7.50;
NOME:= Outros;
end;
else
begin
ShowMessage(Cdigo do sanduche invlido);
Edit1.SetFocus;
Exit;
end;
end;
Edit3.Text:= FloatToStr(VP);
ListBox1.Items.Add(NOME + R$ + Edit3.Text);
Edit1.SetFocus;
end;
Explicando
Nesta soluo no se criou uma varivel para se guardar o preo de determinado sanduche tendo em vista que ele se encontra fixo para cada cdigo
apresentado no Quadro 8.2 no enunciado do problema.
Foi necessria a criao da varivel nome para que se pudesse exibi-lo no
componente Listbox1. Observe, tambm, que o uso excessivo de instrues
encadeadas na primeira soluo torna o entendimento do problema um
pouco confuso.
Tendo em vista que ambas as solues buscam resolver o mesmo problema,
a segunda soluo, com o uso do comando case, ficou mais simples de se
entender, pois as vrias comparaes existentes na primeira soluo foram
substitudas neste comando pelos possveis valores que o cdigo de um sanduche pode ter. Desta forma, o valor informado pelo usurio referente ao
cdigo, que armazenado na varivel COD, comparado com os diversos
valores discriminados na estrutura, de tal forma que se houver algum valor
que satisfaa a igualdade, as instrues referentes mesma sero executadas
e o comando finalizado.
Outro ponto a ser observado quanto ao uso da opo else. Assim sendo,
caso no seja informado um cdigo vlido para o sanduche, as instrues
desse bloco sero executadas. O uso do exit ao final dessa clusula tem por
objetivo abandonar a execuo do procedimento naquele ponto.
117
e-Tec Brasil
Ainda sobre a clusula else, veja que permitido o uso do ponto e vrgula (;)
antes do mesmo, no comando case ... of, diferentemente do que ocorre
no comando if ... then ... else.
Por ltimo, veja que a instruo que faz uso do componente ListBox1 visa
concatenar (agrupar) dentro do componente trs strings que so: o nome
do sanduche, o smbolo monetrio R$ e o valor armazenado na propriedade
Text do Edit3 que o valor a pagar. Portanto, lembre-se que para concatenar
strings no Free Pascal, deve-se usar o sinal de +.
Resumo
Nesta aula, voc aprendeu como usar as estruturas condicionais dentro do
IDE do Lazarus. Agora, veja que, com o uso dessas estruturas, conseguimos
fazer programas mais interessantes, no mesmo? Entretanto, no iremos
parar por aqui, pois ainda teremos que trabalhar com as demais estruturas
de controle abordadas em algoritmos. Dessa forma, caso voc tenha alguma
dvida nessa lio, refaa-a, pois precisaremos muito desses comandos nas
prximas lies, certo? Ento, vamos adiante?
Atividades de aprendizagem
1. Fazer um projeto em Lazarus para ler o peso (kg) e a altura (m) de uma
pessoa e determinar se o indivduo est com um peso favorvel (situao). Essa situao determinada atravs do clculo do IMC (ndice de
Massa Corprea), que definida como sendo a relao entre o peso e o
quadrado da altura do indivduo. Ou seja,
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
119
e-Tec Brasil
9.1 Repetio
Nesta aula sero apresentadas as estruturas de repetio abordadas em algoritmos e que so utilizadas no IDE do Lazarus, ou seja, suportadas pelo compilador
Free Pascal. importante observar que, o entendimento do funcionamento
das estruturas apresentadas nesta aula o mesmo do que foi aprendido em
algoritmos. Sendo assim, o que se diferencia apenas a sintaxe, pois essas
estruturas devem ser escritas da maneira que o compilador as reconhea.
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.
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:
e-Tec Brasil
122
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
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
123
e-Tec Brasil
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:
125
e-Tec Brasil
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.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:
127
e-Tec Brasil
e) Cdigo do projeto.
Aps a elaborao da interface do projeto, salve a aplicao numa nova pasta.
Em seguida, d um duplo clique no boto Processar e digite o cdigo dentro
do procedimento.
procedure TForm1.Button1Click(Sender: TObject);
var
I, T1, T2, ATUAL: integer;
begin
ListBox1.clear;
T1:= 1;
T2:= 1;
ListBox1.Items.Add(IntToStr(T1));
ListBox1.Items.Add(IntToStr(T2));
I:= 3;
e-Tec Brasil
128
Algoritmos e Programao
repeat
ATUAL:= T1 + T2;
ListBox1.Items.Add(IntToStr(ATUAL));
T1:= T2;
T2:= ATUAL;
I:= I + 1;
until I > 20;
end;
Explicando
A lgica para se gerar os termos da srie de Fibonacci consiste no fato de
que, um determinado termo a partir do terceiro (inclusive) obtido atravs
da soma dos seus dois antecessores. Por isso, aps declararmos as variveis
do programa, inicializamos as variveis T1 e T2 com os dois primeiros termos
da srie e os exibimos no ListBox1. Em seguida, tendo em vista que esses
dois primeiros termos j foram mostrados, inicializamos a varivel I com o
valor trs para que, a partir da, seja feito o controle do prximo termo da
srie, pois, neste problema queremos gerar a srie at o vigsimo termo. Na
sequncia, fazemos uso da estrutura de repetio (repeat ... until) de
maneira a guardarmos na varivel ATUAL a soma dos dois termos anteriores e o exibimos, em seguida, no ListBox1. Ainda dentro dessa estrutura,
atualizamos as variveis da seguinte maneira: T1 recebendo o valor de T2 e
T2 recebendo o valor da varivel ATUAL, de forma que na sequncia esses
comandos sejam repetidos novamente, e a gerao do prximo termo se
d corretamente. Por fim, a estrutura ser abandonada quando o valor da
condio I > 20 se tornar verdadeiro.
Resumo
Vimos, nesta aula, como desenvolver aplicaes grficas no IDE do Lazarus,
utilizando diferentes estruturas de repetio. De maneira que, a escolha de
qual estrutura utilizar depender bastante do problema que se apresenta e
da forma como se deseja apresentar sua soluo.
Sendo assim, muito importante que voc tenha o completo domnio dessas
estruturas na soluo de um problema, para que possa aplic-las da melhor
maneira possvel. Para auxili-lo neste objetivo, foram desenvolvidos nas
aulas de algoritmos, bem como nesta aula, vrias atividades e sugeridas
outras. Portanto, caso seja necessrio, leia novamente este captulo e refaa
as atividades.
129
e-Tec Brasil
Atividades de aprendizagem
1. Fazer um projeto em Lazarus para ler um nmero inteiro e apresentar o
resultado de sua tabuada.
2. Elaborar um projeto em Lazarus para calcular a soma dos nmeros inteiros de 1 a 50.
3. Fazer um projeto em Lazarus que leia um nmero inteiro positivo e apresente as potncias desse nmero, variando de 0 a 10.
e-Tec Brasil
130
Algoritmos e Programao
Aula 10 Procedimentos
Objetivos
Desenvolver programas no IDE do Lazarus utilizando estruturas modulares, elaboradas pelo prprio programador procedure.
Aula 10 - Procedimentos
131
e-Tec Brasil
e-Tec Brasil
132
Algoritmos e Programao
e) Cdigo do projeto.
Aps a elaborao da interface do projeto, salve a aplicao numa nova
pasta. Em seguida, d um duplo clique no boto Processar e digite o cdigo
dentro da procedure.
procedure TForm1.Button1Click(Sender: TObject);
var
CAT1, CAT2: integer;
begin
CAT1:= StrToInt(Edit1.Text);
CAT2:= StrToInt(Edit2.Text);
HIPOT(CAT1,CAT2);
Edit1.SetFocus;
end;
Explicando
Nesta procedure foi inserida uma instruo que faz a chamada da sub-rotina
HIPOT na qual so passados, atravs de parmetros, os dois valores dos
catetos informados pelo usurio. Assim, ao ser feito sua chamada, a mesma
executada e, logo aps sua execuo, o fluxo de processamento retorna para
a linha subsequente chamada dessa sub-rotina e o cursor ser posicionado
no primeiro Edit (Edit1) do formulrio em funo da execuo do comando
Edit1.SetFocus.
A seguir, exibido o cdigo completo da procedure referente sub-rotina
HIPOT. Observe que, a implementao dessa rotina dever ser realizada antes
da procedure TForm1.Button1Click; caso contrrio o programa no a
reconhecer.
procedure HIPOT(B,C: integer);
var HIP: real;
begin
HIP:= SQRT(SQR(B) + SQR(C));
Form1.Edit3.Text:= FloatToStr(HIP);
end;
Explicando
Inicialmente, antes de passarmos explicao desse tpico, observe o uso das
funes: SQRT() e SQR(). A primeira tem por finalidade extrair a raiz quadrada
do argumento da funo, o qual representado pela expresso ou valor que
se encontra dentro dos parnteses; a segunda eleva ao quadrado o valor do
argumento desta funo. Como exemplo, veja: SQRT(16) = 4; SQR(2) = 4.
Aula 10 - Procedimentos
133
e-Tec Brasil
Voltando a nossa procedure, perceba que a mesma recebe por meio dos
parmetros locais B e C, os valores referentes s variveis CAT1 e CAT2, os quais
foram passados como parmetros por valor, quando da chamada da rotina HIPOT.
Na procedure, criamos uma varivel local para armazenar o clculo da hipotenusa
(HIP). Em seguida, fizemos esse clculo e exibimos o resultado, atravs do componente Edit3. Veja que antes de usarmos o Edit3, foi preciso indicar o objeto
Form1, no qual se encontra o referido componente. Isto se fez necessrio, pelo fato
da rotina HIPOT se encontrar fora da rotina chamadora (TForm1.Button1Click).
Por ltimo, implemente os cdigos dos botes Limpar e Sair, grave o projeto
novamente e execute a aplicao.
2. Refaa o exerccio anterior, de maneira que o clculo da hipotenusa se d
pela passagem de parmetros por referncia.
Soluo
a) Cdigo do projeto.
Abra um novo projeto (Project > New Project > Application) e desenvolva
o formulrio, conforme apresentado no exerccio anterior.
Aps a elaborao da interface do projeto, salve a aplicao numa nova pasta.
Em seguida, d um duplo clique no boto Processar e digite o cdigo dentro
da procedure (rotina chamadora).
procedure TForm1.Button1Click(Sender: TObject);
var
CAT1, CAT2: integer;
H1: real;
begin
CAT1:= StrToInt(Edit1.Text);
CAT2:= StrToInt(Edit2.Text);
HIPOT(CAT1,CAT2,H1);
Edit3.Text:= FloatToStr(H1);
Edit1.SetFocus;
end;
e-Tec Brasil
134
Algoritmos e Programao
Explicando
Observe que, diferentemente do exerccio anterior, onde a procedure era com
passagem de parmetros por valor, criamos um parmetro com passagem por
referncia (var H: real). O parmetro H ir corresponder com o parmetro
H1, da rotina chamadora. Os dois apontam para a mesma referncia na
memria. Por isso, o que acontece com um, acontece com o outro. Tudo por
causa daquela palavrinha var que precede o parmetro H.
Ento, no h necessidade de se exibir o valor da hipotenusa dentro desta
procedure. Isso pode ser feito no corpo da rotina chamadora atravs do
parmetro H1.
Resumo
Nesta aula, voc aprendeu a desenvolver suas prprias rotinas dentro do IDE do
Lazarus. Veja que, at ento, estvamos usando procedures geradas pelo prprio
ambiente de programao. Portanto, como nossa programao dentro desse
ambiente se deu a partir da gerao de eventos, constatamos que o IDE do Lazarus
totalmente modularizado, pois para cada evento teremos um procedimento.
Tenha sempre em mente que a modularizao dos programas, nos permite
que a partir de um problema complexo, apresentemos solues para partes
especficas do mesmo, de tal forma que ao final consigamos resolver o problema em seu todo.
Assim, terminamos aqui a aula sobre procedimentos e, a seguir, apresentaremos
o uso de funes na modularizao dos programas. Portanto, vamos em frente!
Atividades de aprendizagem
1. Fazer um projeto em Lazarus que leia um nmero inteiro, calcule e imprima o cubo desse nmero. Utilizar procedimento com passagem de
parmetros por valor.
Aula 10 - Procedimentos
135
e-Tec Brasil
2. Fazer um projeto em Lazarus que leia dois nmeros inteiros e faa a troca
do primeiro pelo segundo, utilizando procedimento com passagem de
parmetros por referncia.
3. Fazer um projeto em Lazarus para ler a base e a altura de um tringulo
retngulo e, atravs de um procedimento, calcular a rea do tringulo.
Dado: rea = (base altura) / 2
4. Fazer um projeto em Lazarus que leia os coeficientes A, B e C de uma
equao do segundo grau. No programa principal, calcule o valor de
DELTA. Elaborar um procedimento que receba os valores de A, B e C e
tambm o valor de DELTA e calcule as razes da equao e imprima-as no
programa principal (passagem de parmetros por referncia).
e-Tec Brasil
136
Algoritmos e Programao
Aula 11 Funes
Objetivos
Desenvolver programas no IDE do Lazarus utilizando estruturas modulares, elaboradas pelo prprio programador function.
Aula 11 - Funes
137
e-Tec Brasil
e) Cdigo do projeto.
Aps a elaborao da interface do projeto, salve a aplicao numa nova
pasta. Em seguida, d um duplo clique no boto Processar e digite o cdigo
dentro da procedure.
procedure TForm1.Button1Click(Sender: TObject);
var RAIO: real;
begin
RAIO:= StrToFloat(Edit1.Text);
Edit2.Text:= FloatToStr(VOLUME(RAIO));
Edit1.SetFocus;
end;
Explicando
Nesta procedure feita a chamada da funo VOLUME que recebe atravs
de par metro o valor do raio. Observe que a funo foi acionada a partir de
um comando que faz uso de outra funo, no caso, de converso de tipos
(real para texto), sendo assim, um argumento da mesma.
Aps a chamada desta sub-rotina, ela executada e, ao trmino, o resultado
devolvido na prpria funo, ou seja, ao local de onde foi feito seu acionamento. Em seguida, o valor convertido para string e apresentado atravs
do componente Edit2.
e-Tec Brasil
138
Algoritmos e Programao
Explicando
Veja que ao final da function, o resultado encontrado atribudo ao nome
da funo que o devolver rotina principal do programa.
Resumo
Conclumos aqui o estudo da aplicao de procedimentos e funes atravs
de uma linguagem de programao. Dessa forma, importante que voc
saiba usar corretamente, durante a elaborao da soluo de um problema,
essas sub-rotinas, lembrando que as principais diferenas entre elas quanto
ao retorno de valores e a forma como so chamadas.
Assim, encerramos nossos primeiros passos no uso de uma linguagem de
programao, certos de que, o que lhe foi apresentado, ser de grande
utilidade para que voc possa caminhar a passos largos no aprofundamento
desse tema, daqui pra frente!
Parabns por chegar at aqui!
Atividades de aprendizagem
1. Fazer um projeto em Lazarus para ler a altura (em metros) e o sexo
(1 masculino, 2 feminino) de uma pessoa e, atravs de uma funo,
calcular e escrever o peso ideal. Portanto, a funo dever receber atravs de parmetros a altura e o sexo de uma pessoa, calcular o peso ideal
e devolv-lo ao local da chamada da funo, o qual ser impresso. Para
os homens a frmula do peso ideal a seguinte: 72 altura 60. Para
as mulheres: 62 altura 50.
Aula 11 - Funes
139
e-Tec Brasil
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.
e-Tec Brasil
142
Algoritmos e Programao