Sie sind auf Seite 1von 39

Manual de sobr evi vnc i a em

Lgi c a de pr ogr ama o




- Marcelo Garcia

2

Copyright (c) 2013, Marcelo Garcia.
Todos os direitos reservados

Redistribuio e uso destes documentos, com ou sem modificaes, so
permitidos desde que observadas as seguintes condies:

* Redistribuies ou modificaes precisam manter a licena de copyright
mencionada acima, esta lista de condies e a iseno de responsabilidade a
seguir.

* Nem o nome de Marcelo Garcia nem o nome de seus colaboradores
podem ser usados para endossar ou promover documentos ou textos
derivados deste documento a menos que com expressa autorizao por
escrito.

ESTA DOCUMENTACAO E PROVIDA PELOS DETENTORES DOS DIREITOS
AUTORAIS E COLABORADORES "COMO ESTA" E QUAISQUER GARANTIAS
EXPRESSAS E IMPLICITAS, INCLUINDO, MAS NAO LIMITADO A, AS
GARANTIAS IMPLICITAS DE MERCABILIDADE E AJUSTE PARA ALGUM
PROPOSITO ESPECIFICO SAO DESCARTADAS.

EM MOMENTO NENHUM DEVERAO OS DETENTORES DOS DIREITOS
AUTORAIS OU SEUS COLABORADORES SER RESPONSAVEIS POR QUAISQUER
DANOS DIRETOS, INDIRETOS, ACIDENTAIS, ESPECIAIS, EXEMPLIFICADOS OU
CONSEQUENTES (INCLUINDO, MAS NAO LIMITADO A, BUSCA DE PRODUTOS
OU SERVICOS SUBSTITUTOS; PERDAS DE USO, DADOS OU RENDIMENTOS;
OU INTERRUPCAO DE NEGOCIOS) DE QUALQUER MANEIRA COMO SEJAM
CAUSADOS E POR QUAISQUER TEORIAS DE RESPONSABILIDADE, QUER EM
CONTRATO, RESPONSABILIDADE ESTRITA, OU DANOS (INCLUINDO
NEGLIGENCIA OU OUTRO QUALQUER) CAUSADOS POR INFORMACOES
PROVIDAS POR ESTA DOCUMENTACAO, MESMO SE ADVERTIDO DE TAIS
DANOS.



3
Algumas palavras


Este manual visa servir de texto base para os alunos da disciplina de
lgica de programao do curso tcnico em Informtica para Internet,
mbito Ead / e-Tec Brasil.

Deixo aqui o meu agradecimento a duas pessoas fundamentais para
a criao desde manual. O Eduardo Wenzel Brio, coordenador do curso no
momento em que escrevo este manual. Agradeo a toda motivao e
abertura de portas na rede e-Tec.

A segunda pessoa para outro coordenador do e-Tec, o Alexandre
Leite. Apesar de no ter muito contato com ele no curso, ele foi meu
professor de lgica de programao h uns 20 anos atrs. Ento parte do
que eu escrevo aqui, aprendi com o Alexandre!

A ideia deste manual no ser definitivo, ou uma bblia no assunto.
At por que no sou pesquisador ou doutor no tema. A ideia ser
minimalista. Servir de apoio para o aluno em inicio de aprendizagem, para
que possa de maneira rpida e segura entender o esqueleto logico que
precisamos ter para desenvolver qualquer programa.

Espero que seja realmente til



E vamos aos estudos!






4
Sumrio
1- Lgica ....................................................................................... 5
1.2-Lgica de programao ............................................................... 6
1.3-Algoritmo ..................................................................................10
1.4-Algoritmo Humanizado ..............................................................13
1.5-Algoritmo Computacional ..........................................................16
1.5.1-Anatomia bsica .....................................................................16
1.5.2-Comandos de entrada e sada .................................................18
1.5.2-Comentrios ...........................................................................19
1.5.3-Variaveis .................................................................................20
1.5.4-Declarando variveis ...............................................................22
1.5.5-Tipagem de variveis ..............................................................23
1.5.6-Constantes..............................................................................26
1.5.7-Nomenclatura de variveis e constantes .................................27
1.5.8-Operaes com variveis ........................................................28
1.5.9-Variaveis Lgicas .....................................................................29
2-Fluxo de um algoritmo ..................................................................34
2.1.1-Estruturas de repetio ...........................................................36
REFERENCIAS ...................................................................................39








5
1- Lgi c a

A lgica est intrinsecamente ligada ao ser humano. Filsofos
gregos j praticavam exerccios de logica. Definir lgica algo
complexo. Os puristas e entendidos que me perdoem, mas gosto de
pensar que lgica a capacidade de organizar o pensamento
buscando o entendimento dos fatos, da situao observada. Lgica
para mim faz parte do mtodo cientifico. Lgica raciocnio. Lgica
pensar. observar, entender.

O bom da lgica que podemos reproduzir resultados. Se
seguirmos os passos do que aprendemos e reproduzi-los novamente,
podemos esperar o mesmo resultado. No acredita? Jogue um tijolo
de cima da mesa. Jogue outro. Outro. Outro. Todos caram? Se no
caram ou voc no est neste planeta, ou esta fazendo isto muito
errado!

Ficaremos ento com este conceito simplista de lgica:


6
1.2-Lgi c a de pr ogr ama o

Quando pensamos em programao o que nos vem mente?
O guia de programao de sua tv a cabo? Ou a programao da festa
anual de sua cidade? Que tal a programao de cinema do ms?
Embora o leque de pensamentos possa ser imenso, temos algum
conceito pessoal para a palavra PROGRAMAO Nos exemplos
citados podemos compreender programao como organizao. No
caso de um festival, montar um programa com todos os eventos que
iro ocorrer exige alguma ou muita logstica. Quem da cidade,
quem pode fazer apresentao no determinado horrio, quem
precisa de transporte, como trataremos as excees. Podemos
pensar em diversos fatores, ou (guarde esta palavra
usaremos em breve). E LOGISTICA, deve ser uma derivao sufixal de
LGICA (LOGOS EM GREGO)!

Vejam quantas conexes e inter-relaes podem ser
estabelecidas, e s vezes no nos damos por conta! Podemos ainda
pensar em outro tipo de programao. Quando vamos ajudar o modo
desligar de nosso aparelho de TV, por exemplo, estamos
programando. E um exemplo mais interessante ainda Micro-ondas.
Aquela caixa magica. Quando vamos descongelar algo, por exemplo,
temos que informar a /BOTO descongelar, e em seguida o
peso do que queremos descongelar, e ento apertar o start/iniciar.

Provavelmente voc nunca parou para pensar que SIM, voc
programa o seu micro-ondas. algo do nosso dia a dia, to banal que
usamos de maneira rotineira e automtica, que perdemos a
contextualizao do fato, perdemos a noo de quanta coisa
(informao) nos usamos para programar o micro-ondas por
exemplo. Seguindo no exemplo do descongelamento, veja o
esquema a seguir:

7


Em uma atividade cotidiana temos envolvidos diversos
conceitos de programao. E neste momento estamos carentes de
um conceito mais computacional de programao, e aqui vai um
conceito pouco ortodoxo, no melhor estilo minimalista sobre
programao:








Sim programa em uma abstrao RESOLVER, SOLUCIONAR,
EQUACIONAR uma situao ou problema proposto. Seja algo simples
como calcular uma mdia, ou algo complexo como calcular dados
balsticos (uma das primeiras aplicaes dos computadores).

Ent o pr ogr amar f c i l ?
EQUIVALE

8
Sim. E no. Neste momento precisamos de um conceito mais
slido de programao. Atualmente programar escrever um cdigo
em uma linguagem de computador. Esta linguagem ser processada
de alguma maneira por um computador. O nosso trabalho escrever
instruo por instruo detalhadamente, pois a mquina burra. E
a organizao destas instrues crucial. Aqui entra a LGICA.
Lembrando-se do conceito visto - OBSERVAR, ANALISAR e
DESMONTAR o processo em etapas/aes/atividades, capazes de
serem executadas, em uma sequencia logica de instrues. Portanto
programar um cdigo para um clculo de mdia aritmtica uma
tarefa trivial. Programar um cdigo para simular projees de
balstica j uma tarefa herculana! Quanto maior a complexidade do
cenrio/problema existe mais nuances a serem identificadas e
convertidas em linhas de cdigo.
E aqui comeamos a ver conceitos recorrentes. Programao
esta intrinsecamente ligada a lgica. Programao pertence ao
mundo lgico.

Uma das linguagens que iremos trabalha no curso chama-se
PHP. E como falamos tanto que fcil construir um cdigo
(programar) para calculo de mdias, abaixo vai um pequeno cdigo
em PHP que resolve esta questo, e o resultado de sua execuo:


Pequeno programa em PHP que calcula a mdia


9
Executando o pequeno cdigo, temos como sada (resultado
do processamento).

Em javascript, podemos ter o seguinte cdigo-fonte para
resolvermos o problema da mdia:

Embora a linguagem seja diferente, o resultado produzido
pelo nosso processamento (sada), o mesmo!
Mas antes de entrarmos nos meandres de aprendermos uma
linguagem de programao, precisamos fortalecer a nossa lgica.
Precisamos reaprender a pensar termos domnio sobre o
pensamento, e em como pensar. Precisamos enxergar a sequencia
logica de eventos.
Papel, lpis e borracha a postos, pois iremos programar no
papel. Sim exatamente isto, no papel!

10
1.3-Al gor i t mo

Algoritmo programar?!?!?!?







programar em papel.
determinar a logica principal do
problema proposto. Nesta
modalidade a sintaxe no to
importante.
Vrias consideraes que
faramos em um programa
escrito em uma linguagem de
programao, no so feitas.
No escrevemos um cdigo
realmente e sim um
pseudocdigo, de alto nvel. Este
cdigo pode ser traduzido para
qualquer linguagem de
programao.

Algoritmo por sua natureza um pseudocdigo, embora
existam softwares voltados para seu ensino, como o visualg que
executa um algoritmo. o registro LGICO e cadenciado e em
ALTO NIVEL dos passos a serem executados para resolver um
problema. Algoritmo esta intimamente ligado a programao. E
programao esta intimamente ligada a logica. Portanto podemos
entender algoritmo como:
Uma srie limitada de etapas com objetivo de executar
(Resolver) determinada tarefa. Estas etapas tem que estar
ordenadas de maneira logica.
SIM NO

11
De maneira bem simplista, podemos pensar que o algoritmo
uma receita de bolo. Para o mesmo problema neste caso fazer um
bolo, podemos ter diversas maneiras ou receitas de faz-lo. Abaixo
um exemplo de duas receitas de bolo de baunilha, retiradas da
internet.

2 xcaras de farinha de trigo
1 xcara de acar
1 colher fermento qumico em
p
4 unidades de ovo
1/2 xcara de leite
1/2 colher (sopa) de essncia
de baunilha

Numa tigela, misture a farinha e o
fermento. No liquidificador, coloque os
ovos, o acar, a margarina, e o leite.
Bata por 2 minutos e despeje sobre a
farinha com fermento. Misture bem, junte
a baunilha e misture mais um pouco.
Coloque a massa em frma de cone
untada e enfarinhada. Asse por 35
minutos em forno pr-aquecido.

3 ovos grandes
1/2 xcara de leo
1 colher (ch) de
essncia de baunilha
2 xcaras de acar
250 ml de leite
3 xcaras de trigo
1 colher (sobremesa) de
fermento em p

1.Em uma batedeira, bata os ovos at ficarem
bem clarinhos

2.Adicione o leo sem parar de bater

3.Coloque o acar de uma s vez e continue
batendo

4.Adicione a baunilha

5.Aos poucos despeje o trigo e o leite

6.Depois de bem batido, adicione o fermento e
misture s por alguns segundos, pois, se bater
muito depois de colocar o fermento o bolo no
crescer

7.Despeje a mistura em uma forma mdia,
untada com margarina e trigo

8.Asse em forno mdio, por aproximadamente
40 minutos, ou at dourar



12
No testei nenhuma das receitas. E NO requisito para esta
disciplina que vocs as testem. Mas qual o nosso problema nesta
receita? PRODUZIR UM BOLO DE BAUNILHA. Notem que para o
mesmo PROBLEMA, temos SOLUES diferentes. Ambas as receitas
so de um bolo de baunilha com ingredientes e modo de fazer
diferente. E ambas RESPONDEM ao questionamento/problema, ou
seja, produzir um bolo de baunilha.
E por que so diferentes? Talvez as pessoas que escreveram a
receita tenham experincias diferentes, ou at mesmo ingredientes
diferentes. Mas gosto de pensar que temos VISES diferentes do
mesmo assunto. E a maneira de pensar muito individual. E isto faz
diferena para a logica. A maneira como abordamos o problema
neste momento no importa, desde que sejamos capazes de
DECOMPOR AS ETAPAS PRINCIPAIS DE UM PROCESSO, E
CANDENCIALAS DE MANEIRA QUE RESPONDAM AO QUE FOI
PERGUNTANDO! E isto fazer um algoritmo!










13
1.4-Al gor i t mo Humani zado

Quando comeamos a estudar lgica de programao e
algoritmos, usualmente usamos exemplos do cotidiano do aluno para
introduzir o assunto. Eu chamo este tipo de algoritmo de Algoritmo
Humanizado. De fato nunca vi este termo, ento posso ter criado
um conceito para a posteridade!
Eu particularmente no gosto de trabalhar muito tempo com
algoritmos humanizados. Considero um mal necessrio, e j
respondo por qu. Uma das caractersticas dos algoritmos serem
finitos, ou seja, terem cabea, corpo e p, como no esquema a seguir:

Esta uma caracterstica presente nos algoritmos e herdado
do conceito de processo que tem inicio (cabea), meio (corpo) e fim
(p). Um processo pode ser repetido zilhes de vezes, se mantidas as
condies inicio->meio->fim teremos sempre o mesmo resultado.
Vamos tornar este conceito mais palpvel. J fizemos bolo de
baunilha neste livreto despretensioso. Para mantermos o interesse
Inicio
Meio
Fim

14
de quem no gosta de bolo, vamos ilustrar o conceito de processo
com um exemplo digamos mais salgado, como um extrato de tomate.
Vamos imaginar uma fabrica de extrato de tomate. De um
lado entram os tomatinhos colhidos, so lavados, esmagados e etc., e
sai uma bela latinha de extrato de tomate do outro lado. Se
repetirmos todas as tarefas na mesma sequencia, ou seja, repetirmos
este processo sob as mesmas condies ns teremos o mesmo
resultado no nosso exemplo uma bela latinha de extrato de tomate.
Acompanhe o esquema:
Tomate Fbrica Extrato






ENTRADA PROCESSAMENTO SAIDA

E aqui temos outra caracterstica importante que os
algoritmos e a prpria logica de programao herdam do conceito de
processo: Entrada->Processamento->Sada. Este conceito confunde-
se com o Inicio->Meio->Fim. Quando escrevermos algoritmos
computacionais, ser de extrema importncia retomar esta trinca E-
>P->S.
Continuando o meu desencanto por algoritmos humanizados,
e respondendo o por qu do meu desencanto que em um exemplo
de uma situao humana as possibilidades de
podem ser inmeras. Vamos imaginar e vamos escrever um
algoritmo humanizado para que um autmato (ou robozinho) suba
em uma escada. Ele lera instruo por instruo e executara uma por
vez. Ento vamos a nossa primeira tentativa de escrever um

15
algoritmo que comande este autmato obediente, sempre
lembrando que a responsabilidade pelo sucesso do processo sua
(ou minha?) bem como a segurana do meu novo amigo autmato!
Tenha em mente que um autmato nada sabe, e seguira a risca as
nossas instrues (algoritmo). Ai vamos a tentativa 1:
1 - Inicio
2- Pegue a escada
3- Suba na escada
4- Fim

Notem que as aes (VERBOS) PEGAR e SUBIR podem ter
algumas conotaes e entendimentos possveis. Pegar e trazer?
Pegar e largar? Ora um ser humano entenderia perfeitamente o
algoritmo acima. Mas o autnomo tem a mente vazia. Ele pode
entender por subir num sentido diferente do nosso. Veja abaixo




Algoritmo concludo. Mas no solucionou o problema certo?
Subir (e at mesmo pegar) rene um subconjunto de instrues. Fixar
a escada, segurar ela, erguer a perna direita at a altura do outro
joelho, impulsionar para frente, fixar o p no degrau, segurar a
escada e impulsionar a outra perna. isto ou quase isto. E este um
problema dos algoritmos humanizados. Podemos ter muitas etapas
em um processo simples, ou que simples para um ser humano. Mas
no para o autmato.
Chefe j subi!

16
1.5-Al gor i t mo Comput ac i onal

Felizmente o nosso objeto de estudo so os algoritmos
computacionais. So bem lgicos e com possibilidades menores em
muitos casos se comparados ao universo humano. Executar um
clculo de mdia muito mais fcil do que subir uma escada. Ao
menos o autmato acha isto!
Para escrevermos um algoritmo computacional precisamos
definir algumas regras e critrios de sintaxe, ou seja, a forma de
escrita correta para algoritmos. Vamos definindo a nossa sintaxe
durante este livro. No se preocupe se as coisas acelerarem um
pouco, mas para criarmos um algoritmo computacional, vamos
precisar sedimentar conceitos chaves como variveis e operadores,
por exemplo. Mas vamos guia-lo de uma maneira no to ortodoxa,
mas por um caminho que ir fazer sentido. como o lego da capa
deste livro. No inicio as peas de lego parecem desconexos. Mas em
breve iremos sequencia-los e conecta-los criando verdadeiras
maravilhas da logica!
1.5.1-Anat omi a bsi c a
Neste momento vamos mostras como espero que vocs
escrevam um algoritmo formalmente. No se preocupe muito com
isto agora. No momento certo vamos dissecar parte por parte de um
algoritmo!
O algoritmo no uma linguagem de programao de fato.
Ela comumente chamada de pseudocdigo. Portanto ela admite
diversas sintaxes. Sempre que possvel eu particularmente prefiro ser
minimalista. Estou preocupado com a lgica em si para resolver o
problema. Mais do que com o formalismo da escrita do algoritmo.
Neste livro irei utilizar uma sintaxe objetivando num segundo

17
momento transcrever os nossos algoritmos em linguagem PHP. Esta
medida ira familiarizar um pouco a sintaxe da primeira linguagem de
programao que iremos trabalhar. A seguir um corpo de
algoritmo.









Neste momento chamo a ateno para algo importante, e
que ir melhorar a legibilidade de nossos cdigos (ou
pseudocdigos). A EDENTAO. No sei o que o dicionrio diz sobre
o verbete indentao. Mas eu escreveria ato ou efeito de edentar
produzir marcas ou retrancas dentadas.. Com uma definio destas
pouco provavelmente irei escrever um dicionrio nesta vida. Mas
edentar significa isto mesmo. Fazer dentes. Que dentes?? Olhe que
entre a declarao de inicio e fim do algoritmo acima, nos temos um
espao nas prximas declaraes. Isto ajuda na legibilidade de leitura
e depurao do cdigo. Se no ficou claro agora no se preocupe em
breve isto fara todo o sentido!
Algoritmo <NomeDoAlgoritmo>;
Const
/* declarao das constantes */
var
/* declarao das variveis*/
inteiro: var1, var2;
real: var3;
string: nome;
inicio
/* comandos */
comando 1;
comando 2;
..........
comando n;
fim

18
1.5.2-Comandos de ent r ada e sada
J falamos na trinca entrada ->processamento ->Sada,
conceito advindo de processos. Em algoritmos computacionais a
entrada ser uma informao, um DADO. No exemplo da fabrica de
extrato de tomate, a entrada eram... Tomates!
Precisamos ter um comando, uma instruo que nos permita
inserir estes dados de entrada. Vou mostrar o comando de entrada e
o de sada, e ai voltaremos a falar sobre variveis. Para entrar com
uma informao (do teclado, por exemplo) iremos usar o poderoso
comando LEIA. O comando leia l um dado, e armazena-lo em uma
varivel de memoria. Meio obvio no? O leia l!
E para comando de sada (impresso), que a maneira que
iremos apresentar o(s) resultado(s) de nosso processamento, iremos
usar o comanda escreva. Ou imprima se preferir. to simples. Mas
para fixar, vamos fazer um pequeno exemplo. Neste exemplo irei
omitir a declarao de variveis, propositadamente.




Temos um belssimo exemplo de um algoritmo, que l e
escreve. Simulando o seu funcionamento teramos um prompt
piscando. E eu digitaria o nome. Logo a seguir receberia a mensagem:
Lindo nome senhor Marcelo
incio
/* declarao das constantes e variveis*/
Leia nome;
Escreva Lindo nome senhor - +nome;
fim

19
Isto logica. O autmato executou o comando leia e depois o
comando imprima. E claro, qualquer autmato sabe que Marcelo
um lindo nome!
1.5.2-Coment r i os
Comentrios servem, pasmem - Para fazermos comentrios!
A logica infalvel realmente. E para que fazer comentrios? Para
chamar ateno ou documentar algo por exemplo. O comentrio
inicia pela sequencia /* e termina pela sequencia invertida */
Comentrios no so e nunca sero executados! Veja
exemplos abaixo?
/* Isto um comentrio */
/* Este um bloco de comentrio.
Vejam que esta linha no tem caracter especial para comentrios
Ento quando eu abro a marcao do comentrio ele espera
encontrar seu fechamento em algum momento */


Tenha em mente que TUDO que
estiver dentro de um
comentrio...


NO SER EXECUTADO
Trechos de cdigo, mesmo que correto, estando comentado jamais
ser executado!
/* Escreva Nunca serei executado...Entendeu?; */


20
1.5.3-Var i avei s
J sabemos como ler um dado, e como imprimir mensagens.
Mas antes de avanarmos muito importante sabermos como
iremos armazenar e manipular estas informaes (Dados), que sero
digitados no teclado por exemplo. Vamos criar uma abstrao de
dado e da memria RAM (Random Access Memory). Vamos imaginar
que a memoria uma forma de silicone para chocolate destas bem
bacanas que vem da China ou do mercado livre. (j temos receita de
bolo, ento um bombom esta intimamente relacionada, no
mesmo?)


E
S
F

R
I
C
A

C
U
B
I
C
A

21


R
E
T
A
N
G
U
L
A
R


Olhando as formas de silicone, percebemos trs formatos
distintos. A primeira pode guardar bombons esfricos, a segunda
bombons cbicos e a terceira bombons retangulares. Simples no
mesmo? Cada bombom em uma posio da forma. Se voc observar
bem, cada forma pode armazenar 15 bombons. E cada bombom
pode VARIAR. No de FORMA, mas de sabor, recheio, cor, entre
outras caractersticas. Cada bombom OBJETO (voc ainda vai ouvir
falar em objetos novamente) nico, ou no. Podemos ter a forma
toda preenchida de bombons de morango por exemplo. Ou com trs
bombons de canela, dois brancos, um de avela e nove de doce de
leite. Com estas observaes simples do dia a dia, chamo a ateno
para trs concluses:
Cada forma capaz de armazenar UM TIPO de bombom. Um
bombom esfrico no pode ser guardado na forma
retangular. E vice e versa.
O contedo das formas pode ser VARIADO. Todos do mesmo
formato, mas de sabores diversos. E posso comer um, e repor
com outro bombom diferente.

22
Cada bombom de um RTULO, uma ETIQUETA, um NOME.
Este um bombom de avel, aquele o bombom de
morango.
Encerrando a abstrao, identificamos as algumas das
caractersticas de uma varivel. Varivel uma poro de memoria
(FORMA DE BOMBOM) capaz de guardar/armazenar um DADO
(bombom). A varivel pode ter o seu contedo acrescido, alterado,
modificado e removido, situaes anlogas que ocorrem com a forma
de bombom. Cada varivel guarda um TIPO de dado, assim como a
forma de bombom cubica capaz de guardar apenas bombons
cbicos. E cada varivel tem um nome. Rapaz pegue o bombom de
avel na forma esfrica, por favor!
1.5.4-Dec l ar ando var i vei s
Baseado nas caractersticas que levantamos sobre variveis, o
mnimo que uma varivel precisa para existir um tipo e um
nome/rotulo. O dado (bombom) pode ser armazenado depois.

Vamos usar o critrio de especificar o tipo, e depois a lista de
variveis. H outra notao corrente, de especificar primeiro o nome
das variveis e no final o tipo. Entretanto como algoritmo esta
associado a papel e caneta, mais pratico escrever primeiro o tipo,

23
e depois a varivel. Assim variveis podem ser acrescidas facilmente,
caso haja a necessidade.
1.5.5-Ti pagem de var i vei s
Algum tempo atrs, o tipo de variveis tinha uma relao
direta com a arquitetura do computador. Este paradigma, entretanto
foi superado e temos uma diversidade de tipos de dado. Entretanto
para escrever algoritmos, quanto mais simples melhor. Seguindo este
preceito minimalista, apresento quatro tipos de dados. E iremos
resolver uma diversidade de problemas com eles.
Tipo de varivel O que armazena
String String em ingls, esta relacionado com corda.
Por corda podemos entender CADEIA ou
SEQUENCIA. E uma string no sentido
computacional exatamente isto. um tipo de
dados que guarda letras, smbolos e nmeros.
Mas entende tudo como caractere literal.
prprio para sequencias de caracteres, como
um nome, um endereo, um telefone, por
exemplo,
Inteiro Poderamos ter um tipo numrico, que
armazenaria nmeros em geral. Entretanto um
problema clssico em computao armazenar
nmeros de ponto flutuante (nmeros reais).
Ento usaremos o tipo INTEIRO para armazenar
nmeros INTEIROS ou seja, nmeros que no
tenham vrgula como 1, 2, 1024, 293092309.
Real um tipo numrico especifico para nmeros
reais ou fracionrios. Admite inteiros? Sim. Mas
eles so armazenados como se tivessem parte
decimal. Neste caso a parte decimal
preenchida com zeros
Logico Varivel lgica (booleana). Admite ou
representa dois estados. Verdadeira ou Falsa.

24
Agora sim conseguimos declarar variveis. Vamos fazer um
algoritmo de exemplo. Nosso algoritmo deve ler o nome de um
aluno, e seu ano de nascimento. Em seguida deve mostrar uma
mensagem de boas vindas e dizer a sua idade. Aqui vai uma das
inmeras possibilidades de soluo deste algoritmo.
Al gor i t mo BoasVi ndas;
var
i nt ei r o: i dade, ano_nasci ment o;
st r i ng: nome;
i ni ci o
escr eva Di gi t e seu nome: ;
l ei a nome;
escr eva Di gi t e seu ano de nasci ment o;
l ei a ano_nasci ment o;
i dade = 2014 ano_nasci ment o;
escr eva Ol a + nome + sej a bemvi ndo! ;
escr eva voc t emapenas + i dade;
f i m
Opt ei por usar uma var i avel par a
ar mazenar a i dade. Poder i a si mpl esment e t e
f ei t o assi m:
escr eva voc t emapenas + 2014 ano_nasci ment o;

Mas neste momento no estamos preocupados com as
possibilidades de variaes do algoritmo. Cabe aqui introduzir uma
pergunta reveladora O algoritmo proposto RESOLVE a situao
exposta/solicitada?
Responder esta pergunta implica em outra Como testar um
algoritmo? Simples. Vamos executando linha a linha. De cima para
baixo. E a cada execuo vamos anotando em um cantinho da folha o
contedo das variveis. Se a sada (resultado) foi o que foi pedido,

25
ento nosso algoritmo funciona. Pode no estar otimizado, mas esta
funcional.
Algoritmo Execuo
i ni ci o
escr eva Di gi t e seu nome: ;
l ei a nome;
escr eva Di gi t e seu ano de
nasci ment o: ;
l ei a ano_nasci ment o;
i dade = 2014 ano_nasci ment o;
escr eva Ol a + nome + sej a bem
vi ndo! ;
escr eva voc t em apenas +
i dade;
f i m


Di gi t e t eu nome:
Mar cel o
Di gi t e seu ano de
nasci ment o:
1973
I dade = 41
Ol a Mar cel o sej a bem
vi ndo
Voc t emapenas 41


Este um algoritmo bastante simples; As variveis acabam
no sendo alteradas aps termos digitado seus valores. Mas
basicamente assim que testamos, linha a linha, anotando as
modificaes que os comandos fazem no contedo das variveis. E
neste exemplo,
E vendo a sua sada. Imprimei uma mensagem amigvel, o
nome digitado, e a idade de acordo com o ano digitado. Sim ele
funciona.
Ao menos em 2014. J em 2015... Sei no!!!



26
1.5.6-Const ant es
Depois de entendermos o conceito e utilidade de uma
varivel, entender o conceito de constante fica bastante simplificado.
Constante um espao de memoria alocado para guardar um
determinado tipo de dado. At aqui nada diferente de variavel.
Exceto por um detalhe Varivel, como o prprio nome sugere,
pode, e geralmente sobre mutaes em seu contedo. Pode ser
acessado, modificado, alterado livremente. Diferente de uma
constante que como o prprio nome sugere mantem o seu valor
inalterado durante a execuo do algoritmo.
Em nossa sintaxe iremos utilizar uma rea especifica para
declarao de constantes. Em algumas linguagens atuais no existe
uma rea formal para declarao de constantes. Dai bate saudades
da linguagem de programao chamada Pascal. Ela tinha a sintaxe
extremamente parecida com um algoritmo, foi muito utilizada para
alunos iniciais em programao.
Antes da rea das variveis, existe a rea para declarao de
constantes.
Algoritmo <NomeDoAlgoritmo>;
const
/* declarao das constantes */
var
/* declarao das variveis*/
inicio
/* comandos */
fim
Importante frisar que ao declararmos uma constante, nos
no declaramos um tipo. Simplesmente o rotulo (nome) e fazemos a
atribuio direta do valor para a constante. O tipo sera definido pelo

27
tipo de informao (dado) que estamos atribuindo a constante. Veja
alguns exemplos:
Al gor i t mo Const ant es;
Const
I dade=41; / * Const ant e i nt ei r a */
Nome=Mar cel o Gar ci a; / * St r i ng */
Sal ar i o=18976, 82; / * Real */
i ni ci o
escr eva Est e al gor i t mo no f az nada t i l
r eal ment e! ;
escr eva Voc t em + I dade + anos;
escr eva Seu nome e + Nome;
escr eva E voc ganha apenas + Sal ar i o;
f i m
1.5.7-Nomenc l at ur a de var i vei s e
c onst ant es
Precisamos ter alguns critrios para dar nomes a constantes e
variveis. verdade que algoritmo uma linguagem de papel. Mas
no mundo real usaremos alguma linguagem de programao. E ela
ter de entender o nome das variveis. Ns fixaremos aqui as
regrinhas bsicas

1 - Caracteres validos para nome de variveis
- Letras, nmeros e _ (underline).
2- JAMAIS iniciar uma varivel com um
nmero. O processador sinttico ira
entender como uma expresso matemtica
3- Procure usar nomes significativos,
para melhorar a legibilidade do seu cdigo.



28
Com estas regrinhas em mente vamos criar exemplos e
contraexemplos.

Exemplos
Nome1
Quatro
_4
Quiabo
Nome_Aluno
_Aluno

Contraexemplos
2o_Nome
4_serie
Nome-Aluno
4

1.5.8-Oper a es c om var i vei s
ATRIBUIO

Atribuio: Podemos preencher o valor de uma
varivel, usando o operador de atribuio =
Na pagina anterior j usamos este operador

Idade=41;

A varivel Idade PASSAR A SER 41. O valor 41
atribudo a varivel Idade.

Aritmticos
+
Soma duas variveis, ou nmeros. Exemplo:
Salario +Comissao
-
Subtrai duas variveis, ou nmeros. Exemplo:
AnoAtual - AnoNascimento
*
Multiplica duas variveis, ou nmeros. Exemplo:

Base * Altura

29
/
Divide uma varivel ou numero pela outra. do tipo
REAL. Exemplo:

Salario / 3
DIV
Diviso INTEIRA. Retorna um tipo INTEIRO. Exemplo:

5 DIV 2

Resultado 2
MOD
Retorna o resto da diviso INTEIRA. Retorna um tipo
inteiro. Exemplo

5 MOD 2
Resultado - 1
%

^
Exponenciao. Ela a primeira varivel ou numero ao
expoente

3 ^2
Resultado - 9

Hierarquia de execuo
Primeiro os parentes
Segundo exponenciao
Terceiro multiplicao ou diviso
Quarto soma ou subtrao
Se os operadores forem de mesma ordem sero resolvidos da
esquerda para a direita.
1.5.9-Var i avei s Lgi c as
Variveis logicas, ou booleanas, esto mais relacionadas a
estados do que a contedos. Lembramos aqui de bits. Um bit tem
dois estados possveis ligado ou desligado, acesso ou apagado, on

30
ou off, 0 ou 1, verdadeiro ou falso. E variveis logicas tem este
mesmo sentido. Representam dois estados possveis, basicamente
verdadeiro ou falso. Declaramos variveis logicas da seguinte forma:
Al gor i t mo Const ant es;
Var
Logi ca : St at us, st s_quebr ou;
i ni ci o
St at us = V;
St s_quebr ou = F;
escr eva Seu St at us + St at us;
escr eva Quebr ou al go? + st s_quebr ou;
f i m
Com o pseudocdigo acima teramos como sada:
Seu St at us V
Quebr ou al go? F

Variveis logicas, ou booleanas so extremamente relacionadas com
as estruturas de deciso.

1.6.0-Var i avei s Cont ador as
Variveis contadoras no um tipo especial de varivel. um
conceito de uma varivel do tipo inteiro que ira ser incrementada de
uma unidade a cada iterao. Esta intimamente relacionada com
estruturas de repetio, que veremos no capitulo 2.
1.6.1-Var i avei s Ac umul ador as
Variveis acumuladoras devem serem encaradas como
TOTALIZADORES. So usadas para totalizar (acumular) um valor
especifico. Se quisermos saber o peso total dos alunos da turma,

31
precisamos TOTALIZAR os pesos individuais. uma tcnica de
programao corriqueiramente no dia a dia.
Faremos um pequeno exemplo para ilustrar o uso de
contadores e acumuladores. Neste momento este exemplo vai
parecer pouco importante. Mas acreditem quanto forem
apresentadas as estruturas de repetio, o exemplo de variveis
contadoras e acumuladoras ser muito mais rico e consistente.
Const r ua um al gor i t mo que l ei a a i dade e peso de
t r s al unos. Depoi s apr esent e a medi a do peso e das
i dades. A t ur ma t em5 al unos.
Al gor i t mo Cont aAl unos
Var
I nt ei r o: Nr oAl uno, I dade, Tot al I dade;
Real : Peso, Tot al Peso;
I ni ci o
Nr oAl uno = 0; / * Aqui i ni ci al i zamos com0 */
Tot al Peso = 0;
Tot al I dade = 0;
Nr oAl uno = Nr oAl uno + 1; / * Var i avel Cont ador
El a cont a de 1 em 1. Como o val or ant er i or del a er a 0,
passa a ser 1 */
Escr eva Al uno + Nr oAl uno + , por f avor ,
di gi t e .
Escr eva Sua i dade : ;
Lei a I dade;
Tot al I dade = Tot al I dade + I dade; / * Var i avel
Acumul ador a Aqui el a acumul a as i dades */
Escr eva Seu Peso : ;
Lei a Peso;
Tot al Peso = Tot al Peso + Peso; / * Aqui acumul a o
peso */
Nr oAl uno = Nr oAl uno + 1; / * 1 + 1 */
Escr eva Al uno + Nr oAl uno + , por f avor ,
di gi t e .
Escr eva Sua i dade : ;

32
Lei a I dade;
Tot al I dade = Tot al I dade + I dade;
Escr eva Seu Peso : ;
Lei a Peso;
Tot al Peso = Tot al Peso + Peso;
Nr oAl uno = Nr oAl uno + 1; / * 2 + 1 */
Escr eva Al uno + Nr oAl uno + , por f avor ,
di gi t e .
Escr eva Sua i dade : ;
Lei a I dade;
Tot al I dade = Tot al I dade + I dade;
Escr eva Seu Peso : ;
Lei a Peso;
Tot al Peso = Tot al Peso + Peso;
Nr oAl uno = Nr oAl uno + 1; / * 3 + 1 */
Escr eva Al uno + Nr oAl uno + , por f avor ,
di gi t e .
Escr eva Sua i dade : ;
Lei a I dade;
Tot al I dade = Tot al I dade + I dade;
Escr eva Seu Peso : ;
Lei a Peso;
Tot al Peso = Tot al Peso + Peso;
Nr oAl uno = Nr oAl uno + 1; / * 4 + 1 */
Escr eva Al uno + Nr oAl uno + , por f avor ,
di gi t e .
Escr eva Sua i dade : ;
Lei a I dade;
Tot al I dade = Tot al I dade + I dade;
Escr eva Seu Peso : ;
Lei a Peso;
Tot al Peso = Tot al Peso + Peso;
I mpr i ma Ti vemos + Nr oAl uno;
I mpr i ma Medi a Peso + Tot al Peso / Nr oAl uno;
I mpr i ma Medi a I dade + Tot al I dade /
Nr oAl uno;

I mpr i ma Peso Tot al Tur ma + Tot al Peso;

33
I mpr i ma Tot al I dade Tur ma + Tot al I dade;
Fi m

O algoritmo ficou extenso porqu tivemos de fazer 5 leituras
de peso e idade. E como ainda no conhecemos nenhuma estrutura
de repetio tem que resolver a situao com conhecimento que
temos at o momento. Ler e Imprimir basicamente. Entretanto estes
algoritmos tm alguns refinamentos. Ele pede o numero do aluno em
questo. E ele usa a varivel contadora NroAluno para calcular as
medias. Se tivermos que ler mais informaes as expresses de
calculo no tero de ser modificadas. Execute no papel este
algoritmo, linha a linha. Faa uma tabela para as variveis, e v
anotando o resultado linha a linha. Entenda o funcionamento das
variveis acumuladoras e contadoras, linha a linha!
1.6.1-Var i avei s Si nal i zador as Fl ag
/* ADICIONAREI EM BREVE */









34





2-Fl ux o de um al gor i t mo

Atravs dos exemplos feitos at agora inclusive com
demonstrao da execuo do algoritmo de BoasVindas,
naturalmente voc j deve ter percebido, que existe uma sequencia
de execuo De cima para baixo. Vamos executando linha a linha,
sem desvios ou interrupes, via de regra.
Se pararmos para pensar, ser possvel termos trechos de
cdigos que no gostaramos de executar em determinada condio?
Ainda em duvida? Proponho como exemplo, desenvolvermos um
algoritmo para a sentena abaixo:
Caso esteja nublado leve o guarda-chuva!
Sentena trivial de nosso dia a dia. Mas como escrever um
algoritmo que resolva esta situao? Sabemos comando de entrada e
sada, expresses e criarmos constantes e variveis. Vamos tentar
ento.
Al gor i t mo Guar daChuva_V1
Var
St r i ng: est achovendo;
I ni ci o
Escr eva Est a nubl ado? ( si m/ no) ;

35
Lei a est achovendo;
Escr eva Leve o guar da- chuva;
f i m

Observe atentamente o algoritmo GuardaChuva_V1. Ele cria
uma varivel estachovendo para ler do teclado um sim ou no;
Em seguida ele imprime a mensagem Leve o guarda-chuva. Mas ele
imprime a mensagem eu digitando sim, ou no. O fluxo vem
executando de cima para baixo!
0 Vamos a outro exemplo mais simples de ser implementado.
Voc ficou de castigo, por no ter trazido uma maa pro seu
professor. Ele mandou voc fazer um algoritmo que escreva 10 vezes
a mensagem Devo trazer uma maa para meu professor!.
Al gor i t mo Maa
I ni ci o
Escr eva Devo t r azer uma maa par a o meu pr of essor ! ;
Escr eva Devo t r azer uma maa par a o meu pr of essor ! ;
Escr eva Devo t r azer uma maa par a o meu pr of essor ! ;
Escr eva Devo t r azer uma maa par a o meu pr of essor ! ;
Escr eva Devo t r azer uma maa par a o meu pr of essor ! ;
Escr eva Devo t r azer uma maa par a o meu pr of essor ! ;
Escr eva Devo t r azer uma maa par a o meu pr of essor ! ;
Escr eva Devo t r azer uma maa par a o meu pr of essor ! ;
Escr eva Devo t r azer uma maa par a o meu pr of essor ! ;
Escr eva Devo t r azer uma maa par a o meu pr of essor ! ;
Fi m

Este foi mais fcil. Esto ai as 10 mensagem de castigo. E se o
professor pedir 20? 50? 100? 1000? Neste exemplo pode ser
absurdo. Mas imagine quando se faz o cadastro dos alunos do etec
por exemplo. Quantas vezes tem que se executar o MESMO trecho
de cdigo?

36
Felizmente no somos os nicos a sofrer deste mal. J
inventaram as solues para nossos problemas. Temos estruturas
capazes de MODIFICAREM o fluxo de execuo, conforme as
condies do problema.



2.1.1-Est r ut ur as de dec i so ou
c ondi c i onal

2.1.2-Est r ut ur as de r epet i o
Relembrando o algoritmo do castigo. Fazer um programa que
escreva a mesma mensagem pode ser impossvel com o que sabemos
at o momento. Imagine fazer um algoritmo que imprima o seu
nome 10.000 vezes. Manualmente no impossvel. Mas invivel.
O pseudocdigo prev estruturas que permitem repetirmos trechos
de cdigo de maneira controlada. Desta forma podemos dimensionar
e resolver problemas de imprimir 10.000 vezes algo, por exemplo.
Vamos dar uma olhada em cada uma delas
2.1.2.1-Par a/f a a
Esta estrutura permite executar um trecho do cdigo um
numero fixo de vezes. No item 1.6.1, nos criamos um algoritmo para
ler a idade e peso de 5 alunos, e depois calcular a sua media. Tivemos
de repetir o trecho do cdigo 5 vezes. Se usarmos uma estrutura de

37
repetio no teremos todo aquele trabalho. Vamos comear pela
sintaxe desta estrutura de repetio.
Para <var i vel > de <val or i ni ci al > at <val or f i nal > [ Passo
<i ncr ement o>] f aa
Lista de comandos;
Fim Para

Talvez no primeiro impacto parea um pouco complexo. Mas
acreditem uma estrutura de fcil entendimento, e de uso comum
em qualquer algoritmo. Vamos dissecar passo a passo
<varivel>- Nome da varivel que ser usada no para. Na verdade
uma varivel contadora. PRECISA SER DECLARADA NA AREA DE
DECLARAO DE VARIAVEIS. uma espcie de INDICE;
<valor inicial>- o valor inicial dela. Geralmente 0 ou 1. Mas pode
ser qualquer valor inteiro.
<valor final> o limite da repetio. Ele ira iniciar no valor inicial e ira
repetir at o valor final.
<incremento> - opcional. Se no informarmos o lao ser
aumentado de 1 em 1, exatamente como em um contador. Mas o
comando flexvel, e podemos modificar este valor.
Al gor i t mo Maca2
Var
I nt ei r o: I ;
I ni ci o
Par a I de 1 at 10 f aa
Escr eva Devo t r azer uma maa par a o meu
pr of essor ! ;
Fi mPar a

38
Fi m

2.1.2.2-Enquant o/f a a
Outra estrutura de repetio bastante interessante a estrutura
enquanto. Ela surge naturalmente nos algoritmos humanizados -
enquanto houver degraus suba. Ela repete um trecho de cdigo,
enquanto a condio especificada no teste seja falsa. Se a condio
nunca tornar-se verdadeira, o trecho de cdigo ser executado
indefinidamente em um looping infinito. Isto muito importante!
A diferena bsica entre o para/faa e o enquanto que o para/faa
eu informo um numero de repeties (embora em algumas
linguagens de programao o uso de expresses no para/faa
permitido). J no enquanto eu colocarei uma condio que ser
testada. E por condio temos vrios exemplos, como enquanto
chover, enquanto no passar, enquanto no tiver frio e por ai
vai. Vamos dar uma olhada na sintaxe da estrutura enquanto/faa
Enquanto <condi o> f aa
Lista de comandos;
Fim Enquanto
De certa feita parece uma estrutura mais simples do que o para/faa.
Mas muito poderosa. Vamos propor um exemplo similiar ao da
maa, feito no para/faa. Mas vamos resolv-lo usando a estrutura
enquanto faa
Al gor i t mo Maca3
Var
I nt ei r o: I ;
I ni ci o
I = 1; / * I ni ci al i zo o cont ador comval or 1 */
Enquant o I <= 10 f aa

39
Escr eva Devo t r azer uma maa par a o meu
pr of essor ! ;
I = I +1;
Fi mEnquant o
Fi m

Olhando o exemplo Maa3, o resultado o mesmo do que o Maa2.
Notem porem que nos temos o controle da condio. Se
esquecermos de incrementar o contador I, a condio ser infinita! O
Lao de repetio ser executado infinitamente, pois atribumos 1
antes da execuo. Este um dos maiores cuidados que temos que
ter com estruturas enquanto A condio de sada dela.





REFERENCI AS

Lgica de programao A construo de algoritmos e estruturas de
dados Andr Forbellone & Henri Eberspcher 3 edio - 2005 -
Pearson Prentice Hall

Curso essencial de lgica de programo Marilane Almeida 1
Edio -2008 Digerati Books

Das könnte Ihnen auch gefallen