Você está na página 1de 28

FLP (Fundamentos de Introduo a

Informtica)
Tcnicas de
Desenvolvimento da Lgica
2
Sumrio
Sumrio.................................................................................................................................................................3
Introduo.............................................................................................................................................................3
As dificuldades de programar...............................................................................................................4
A metodologia de aprendizagem..........................................................................................................5
Variveis x ados.................................................................................................................................................!
"so das Variveis no Algoritmo............................................................................................................!
#scol$endo o %I&' do Identificador da Varivel..................................................................................(
%ipo inteiro............................................................................................................................(
%ipo real................................................................................................................................(
%ipo )iteral............................................................................................................................(
%ipo )*gico............................................................................................................................+
%aman$o das Variveis........................................................................................................................+
eclarao de Variveis.......................................................................................................................+
,omando #,)A-#............................................................................................................+
'peradores............................................................................................................................................
'peradores /um0ricos..........................................................................................................
'peradores -elacionais .......................................................................................................
'peradores )*gicos............................................................................................................12
#ntendendo -epresenta3es de Sintaxes.........................................................................................................12
Atri4uio de Valores a Variveis.......................................................................................................11
#struturao do Algoritmo...................................................................................................................................11
#ntrada e Sa5da de ados..................................................................................................................16
,omando )#IA....................................................................................................................16
,omando #S,-#VA 7lista informa3es no v5deo8.............................................................16
9anipulaao de valores......................................................................................................................................13
,onceitos :undamentais....................................................................................................................................14
,ontador x Acumulador......................................................................................................................14
&ercentuais.........................................................................................................................................14
9aior Valor..........................................................................................................................................15
9enor Valor.........................................................................................................................................15
#struturas ,ondicionais......................................................................................................................................1!
#strutura ,ondicional S# 7S5mples8...................................................................................................1!
#strutura ,ondicional S# 7,omposta8................................................................................................1(
#strutura ,ondicional S# 7#ncadeada8..............................................................................................1(
#xerc5cios de Aprendizagem..............................................................................................................1+
#struturas de -epetio......................................................................................................................................61
,omando #/;"A/%'.......................................................................................................................61
,omando &A-A..................................................................................................................................66
#xerc5cios de Aprendizagem..............................................................................................63
%0cnicas de Algoritmizao................................................................................................................................64
icas so4re -esoluo de Algoritmos................................................................................................64
%0cnica para extrair os dados de um enunciado................................................................................64
esafios -esolvidos............................................................................................................................................6!
Introduo
3
rogramar um computador no uma tarefa to difcil. Difcil programar as
nossas cabeas.
O computador, na realidade, uma rplica bastante simplificada de nossa
mente, com apenas uma diferena essencial: a AUO!"#O$#A%A&'O. "
Ao longo de nossas (idas, aprendemos coisas a partir de alguns elementos fundamentais
como cores, smbolos, sons, c)eiros, e sentimentos. *sses elementos (o se
combinando atra(s de um processo con)ecido como aprendi+ado.
O processo de aprendi+ado nada mais do ,ue uma auto!programao de nossas
mentes. -Algum. di+ para nosso crebro o ,ue ele tem ,ue fa+er ao se deparar com
uma situao especfica, tal como: dobrar uma es,uina, parar ao perceber o sinal
(ermel)o, esco(ar os dentes ao acordar, em fim ! tudo o ,ue fa+emos regido por
programas ,ue, um dia, n/s mesmos desen(ol(emos.
Ora, se somos capa+es de desen(ol(er programas para um aparel)o to comple0o e
genial como o nosso crebro, por ,ue no um simples computador1
*ste o nosso desafio. Desen(ol(er as tcnicas necess2rias para conseguirmos codificar
programas em um computador digital.
As dificuldades de programar
"rogramar um computador, assim como a nossa mente, re,uer duas e0ig3ncias b2sicas:
,on$ecer a linguagem na <ual se vai programar=
#struturar o racioc5nio de forma a sa4er com4inar os comandos desta linguagem> dentro
de uma se<?@ncia l*gica> ou seAa> de modo a atingirmos o o4Aetivo perseguido.
A linguagem de programao utili+ada pelas nossas mentes composta de comandos
4ol)e, escute, memori+e, decida, sinta, ame, odeie...5, elementos 4cores, tipos de c)eiros,
notas musicais, smbolos sonoros, smbolos (isuais...5 e capa+ de recon)ecer e utili+ar
os recursos dispon(eis no organismo 4ol)o, ou(ido, crebro, nari+, boca...5, sem os
,uais torna!se imposs(el a e0ecuo de um programa.
A linguagem de programao utili+ada pelos computadores composta tambm por
comandos 4receba, escre(a, some, multipli,ue...5 e elementos 4n6meros, pala(ras e
smbolos5, e tambm capa+ de recon)ecer e utili+ar os recursos dispon(eis no
computador e perifricos 4impressora, monitor de (deo, mouse, teclado, mem/ria...5.
Ao aprendermos uma receita de bolo, colocamos uma poro de comandos em nossa
mente. *stes comandos so gra(ados de uma forma anal/gica e, logo em seguida,
consolidamos o processo de aprendi+agem atra(s da e0ecuo da,uele programa.
7laro, da primeira (e+ ,ue fa+emos algo podemos cometer erros, ,ue so
automaticamente a8ustados pela nossa mente para ,ue, da pr/0ima (e+, no (oltem a
acontecer.
Da mesma maneira, sempre ,ue um programador desen(ol(e a primeira (erso de seu
programa, )2 uma fase de testes, ,uando os erros aparecem e so a8ustados 9
necessidade do usu2rio. A esta fase damos o nome de D*"U#A&'O.
:
A metodologia de aprendizagem
7omo (emos, a programao de computadores bastante semel)ante a programao de
nossas mentes, o ,ue torna suas dificuldades e caractersticas tambm
similares.Aplicaremos as tcnicas e recursos e0istentes aos elementos inerentes a
computadores, interagindo com (ari2(eis de mem/ria, comandos de entrada e sada de
dados, alm de comandos ,ue controlaro a repetio de blocos de comandos.
*struturas como (etores, matri+es, listas, filas, pil)as, 2r(ores, entre outras, sero
ministrados em outras disciplinas.
"ara representar as a;es 4comandos5, utili+aremos uma linguagem no comercial ! o
pseudoc/digo, con)ecido como Algoritmo. Uma linguagem ,ue l)e poupe de comandos
em ingl3s, e ,ue no apresente grandes sofistica;es. A linguagem de programao
e0perimental ,ue utili+aremos para e0ercitar a l/gica de programao ser2 na nossa
pr/pria linguagem: a lngua portuguesa.
"ara facilitar o processo de aprendi+agem, os temas ,ue abordaremos podero ser
con(ertidos para a linguagem "ascal, ,ue tem em suas origens, o ob8eti(o de ensinar os
alunos a interagirem com o computador de forma pr2tica.
<
ariveis ! Dados
Varivel o local de mem/ria onde sero arma+enados os dados de forma
temporria. *m nossos algoritmos no nos preocuparemos com o endereo real dessas
(ari2(eis, pois a maioria das linguagens de programao tornam estes endereos
transparentes ao programador.
"ara e0emplificarmos a diferena entre dados
4constantes5 e (ari2(eis, bem como entender
mel)or o endereamento de (ari2(eis, podemos
citar o e0emplo de uma estante de prateleiras,
onde esto guardados li(ros ou ,uais,uer outros
ob8etos 4(e8a figura5.
Os li(ros e ob8etos podem ser c)amados de
dados, conte6do das (ari2(eis. "ara nos referenciarmos 9 (ari2(el necess2rio darmos
um nome 9 mesma, pois no trabal)aremos com endereo de mem/ria propriamente
dito, e sim com identificadores.
= aconsel)2(el ,ue o nome da varivel e0presse o ,ue (ai ser arma+enado dentro dela,
p.e. nomeAluno, quantidade_alunos.
As (ari2(eis podem ainda ser simples ou compostas. As (ari2(eis simples so a,uelas
,ue recebem um 6nico dado por (e+, en,uanto ,ue as compostas podem arma+enar
(2rios dados de uma s/ (e+, porm, esta 6ltima no ob8eto de nossa apostila.
>uando declaramos uma (ari2(el, temos ,ue associar a ela algumas caractersticas:
?O%* ou @D*?@A@7ADO#
@"O do dado
7omo dissemos anteriormente, o endereo fsico da (ari2(el no precisa ser declarado, a
menos ,ue este8amos programando em alguma linguagem de bai0o n(el, como o
ABB*%CD*#. As linguagens de alto n(el procuram espaos li(res na mem/ria do
computador para associarem bEtes 9 (ari2(el declarada.
Uso das Variveis no Algoritmo
O nome a ser associado 9 (ari2(el 4e0.: F, G, H@3:5, no importante para o
computador, pois este ser(ir2 apenas como uma mera refer3ncia. *ntretanto para outros
programadores ,ue possam (ir a analisar os seus programas, ou at para (oc3 mesmo
ap/s algum tempo, necess2rio ,ue esses nomes se8am e0pressi(os, simples e
ob8eti(os.
Ie8amos agora alguns e0emplos de identificadores:
SALARIO "m 4om nome para varivel <ue ir armazenar um valor salarial=
CONT "m 4om nome para varivel <ue ir registrar uma contagem=
TOTAL "m 4om nome para variveis acumuladoras de somas=
DATANASC "m 4om nome para variveis usadas para armazenar uma data de
nascimento.
De(emos e(itar nomes do tipo: F, H, 7J, AC7, etc... a menos ,ue eles e0pressem
algo real.
?omes de (ari2(el, na maioria das linguagens, NO devem:
K
Iniciar por nmeros: J72, LA?OB, JMM, :7A?OB, etc...
Ser descontnuos: DAA ?AB7, AO?* 7O%*#7, etc...
Outros re,uisitos podem aparecer dependendo de cada linguagem. O 7OCOD por
e0emplo permite nomes longos para (ari2(eis, 82 o 7D@""*#, com apenas JM bEtes. O
7OCOD permite separadores como )fens, barras, entre outros. Dinguagens deri(adas
do DCAB* permitem apenas o UnderDine 4?omeNAluno5 como caracter separador. A
maioria das linguagens apresenta certas restri;es 9 li(re escol)a dos nomes das
(ari2(eis. A mais e(idente a impossibilidade da utili+ao de pala(ras reser(adas da
pr/pria linguagem. "or e0emplo, a pala(ra MOVE representa um comando para o
COBOL. ?o poss(el utili+armos este nome como identificador de ,ual,uer (ari2(el
nesta linguagem. O2 para o CLIPPER, o %OI* pode ser um identificador.
Outras (e+es, a linguagem tra+ consigo algumas (ari2(eis reser(adas. ratam!se de
algumas (ari2(eis ,ue so automaticamente declaradas pela linguagem. ?ormalmente
elas registram a data e a )ora do sistema operacional, ou algumas informa;es internas
como c/digos de perifricos, endereos de mem/ria para buffers, etc.
Escolhendo o TIPO do Identificador da Varivel
O segundo argumento presente na declarao de uma (ari2(el o seu tipo. O tipo de
uma (ari2(el define ,ue tipos de dados podero ser arma+enados nela. A declarao
4definio das (ari2(eis5 ser2 feita no incio do algoritmo.
Tipo inteiro
Binali+a ,ue o conte6do ser2 de n6meros e ,ue no ter2 a parte decimal em sua
composio.
*0.: J2MMP !J2P MP etc
Tipo real
Binali+a ,ue o conte6do ser2 de n6meros e ,ue permitida a digitao da parte decimal.
*0.: J2MM,MMP !J2,QQP MP etc
Tipo Literal
Sinaliza <ue o conteBdo a<ui armazenado ser toda a rede de caracteres alfanum0ricos e os
ditos caracteres especiais. 's conteBdos destas variveis S#9&-# sero demonstrados entre
aspas 7simples ou dupla> dependendo da linguagem8=
-Bo (ari2(eis ,ue aceitam conte6dos de ,ual,uer nature+a, portanto: n6meros, letras e
smbolos em geral, no podendo estes n6meros ser utili+ados para opera;es
aritmticas..
*0.: R%A#@A OOB*RP R#ecifeRP RJ23RP R?O%*BR
Observaes:
a) No !on"undir os valores num#ri!os !om os literais ou entre os literais$ Ve%amos
os !asos a se&uir$
Caso '$
S
() *inteiro) # di"erente de +(), *literal) - Os ti.os so di"erentes/ lo&o/ seus
valores em mem0rias so di"erentes1
Caso )$
+2',*literal) # di"erente de +', *literal) - Os ti.os so i&uais/ mas a
re.resentao em mem0ria # di"erente$
Tipo Lgico
*ste tipo de (ari2(el no permite o registro de dados numricos ou literais. Uma
(ari2(el l/gica s/ arma+ena um entre dois (alores: I*#DAD*@#O ou AADBO.
*m nossa disciplina, no nos ateremos ao como e0atamente, o computador registra esta
informao na mem/ria. "ode ser por bEtes +erados e no +erados, pelas letras I ou A,
ou por um outro mecanismo ,ual,uer. O ,ue nos interessa de fato ,ue este tipo de
(ari2(el no registra outro tipo de informao e0ceto Ierdadeiro ou Aalso.
"ara efeito de representao, diremos ,ue o conte6do de uma (ari2(el l/gica ser2
representado pelas letras V e F, representando respecti(amente, Ierdadeiro e Aalso:
Tamanho das Variveis
>uando declaramos uma (ari2(el no precisamos delimitar o bEte inicial e final ,ue
esta ir2 ocupar na mem/ria do computador, entretanto imprescind(el entendermos
,ue elas ocupam um espao na mem/ria e ,ue os ti.os de dados tra+em defini;es sobre
as (ari2(eis, inclusi(e o ,ue pode arma+enar e os seus limites.
Outros tipos de (ari2(eis tambm so tratados por no(as linguagens, tais como: TO#A,
%*%O#A?DO, OCO*O. *ntretanto a,ui s/ trataremos os tipos mencionados
anteriormente, ou se8a: Diteral, @nteiro, #eal e D/gico..
eclara!"o de Variveis
ODAB as (ari2(eis ,ue o programa (ier a utili+ar t3m ,ue e0istir antes de serem
referenciadas. "or esse moti(o, necessitamos de!larar estas. 7omo fa+er isso1 Atra(s
do comando DECLARE.
Comando DECLARE
DECLARE <Nome da varivel>[,<Nome da varivel>]: <tipo>
<Nome da varivel> /ome ou identificador da varivel
<Tipo> %ipo da varivel definidaC )iteral> Inteiro> -eal e )*gico.
#xemplosC #,)A-# /'9# C )iteral=
#,)A-# IA# C Inteiro=
#,)A-# A)%"-AC -eal=
#,)A-# #&#/#/%#C )'DI,'=
"odemos declarar di(ersas (ari2(eis utili+ando apenas um comando D*7DA#*.
#xemplosC #,)A-# /'9# C )iteral=
IA# C Inteiro=
A)%"-AC -eal=
#&#/#/%#> )'DI,'=
Ou ainda, em uma mesma lin)a, desde ,ue se8am do mesmo tipo de dados.
#xemploC
Q
#,)A-# IDADE, CONTADORCinteiro= 7o4s.C tipo e taman$o iguaisE
'4servaoC As vezes su4stitu5mos o comando eclare por Var ou efina> dependendo da
linguagem <ue estamos <uerendo nos aproximar. 'utros comandos
podero sofrer varia3es. ,a4endo ao professor da disciplina fazer os
aAustes 4aseados no direcionamento <ue <ueira dar F disciplina.
Operadores
"odemos atribuir a uma (ari2(el o resultado de uma e0presso numrica. Atribui uma
ao ,ue as linguagens possuem e ,ue representa o ato de preenc)er o espao da
(ari2(el com um conte6do, conforme o tipo de dado 4(eremos mais detal)adamente em
t/pico especfico5. *ntendemos por e0presso numrica um con8unto de opera;es
aritmticas combinadas entre o.erandos e o.eradores. %as alm das e0press;es
numricas, e0istem e0press;es ,ue e0igem tratamentos particulares, como (eremos a
seguir.
Operadore! N"m#ri$o!
Bo elementos 4smbolos5 utili+ados para representar uma operao de cun)o aritmtico.
% indica S'9A
& indica S"G%-AHI'
' indica 9")%I&)I,AHI'
( indica IVISI'
#elembrando um pouco a matem2tica elementar, a ordem de e0ecuo de uma
e0presso aritmtica segundo as prioridades de opera;es :
&ar@ntesisC 7 8
9ultiplicao e ivisoC J > K
Soma e Su4traoC L > M
O)!*: ,aso existam numa mesma sentena operadores de mesma ordem de prioridade> a
execuo ser feita da es<uerda para direita.
Operadore! Rela$ionai!
Bo elementos 4smbolos5 utili+ados para reali+armos opera;es de compara;es,
recebendo como resposta o (alor (erdadeiro ou falso.
+ igual a
#xemplosC
ados A N 3> G N 6> , N OPoseQ > N OPoseQ> /'9# N OP'S#Q
A R G Retorna V
, N Retorna V
/'9# N SP'S#S Retorna V (Est sendo comparado o contedo da varivel NOME com a
string JOSE.
/'9# N Retorna F (esto sendo comparados os contedos das variveis NOME e
!".
R maior <ue T menor <ue N igual a
RN maior ou igual a TN menor ou igual a TR diferente
L
A ! " # $ % &
'"
(
Os operadores relacionais incidem sobre dados e (ari2(eis numricas e caracteres.
Assim sendo, podemos comparar no apenas n6meros, mas tambm pala(ras. ?este
sentido, a comparao respeitar2 a ordem alfabtica das iniciais de cada uma.
#xemplosC
S9A-IAS R SA/AS Retorna V
S9A-IAS T S9A-I'S Retorna V
o#serva$o% as compara$&es s' podem ser (eitas com elementos dos mesmos tipos.
Operadore! L,-i$o!
#stes elementos so necessrios <uando voc@ deseAa realizar compara3es entre resultados
l*gicos o4tendo como resposta outro valor l*gico. #stran$o> noU 9as 0 exatamente isso <ue
ocorre. &or exemploC se voc@ ler um anuncio so4re emprego <ue ten$am as seguintes
solicita3esC
Precisa#se de pessoas do se$o feminino e com idade m$ima %& anos' ' <ue voc@
consegue extrair deste anuncioU A resposta seriaC d)as e*ig+ncias> a sa4er> o SE.O da
pessoa deve ser igual a feminino 7V:W8 e a IDADE deve ser menor ou igual a 42 anos. )ogo>
estamos diante de duas sentenas> <ue> dependendo do <ue seAa colocado como dados na
comparao> poderemos ter a possi4ilidade do resultado ser falso ou verdadeiro. Se o S#X'
for igual a V9W 7masculino8> a primeira sentena ser falsa. &ara voc@ poder ocupar a vaga
oferecida> necessrio <ue seAas do sexo feminino e sua idade esteAa na faixa etria solicitada.
&ara o programa> o racioc5nio 0 exatamente igual.
&ara <ue gerenciarmos esta etapa da l*gica> utilizaremos os operadores a seguirC
Operador Detal/amento 0rioridade
de e1e$"23o
O4
5Op$ionalidade6
A sentena <ue contiver este operador ser verdadeira se pelo
menos uma das express3es nela contida retornar valor verdadeiro.
7
8
E
5Sim"ltaneidade6
A sentena <ue contiver este operador ser verdadeira se as
express3es nela contida resultarem valores verdadeiros.
9
8
N:O
5Ne-a23o6
;uando <ueremos inverter 7negar8 o resultado de uma condio ou
expresso l*gica.
;
8
Observao: caso sejam colocados os parnteses na sentena, a prioridade de execuo ser alterada
iniciando-se pelos elementos contidos dentro destes. Caso exista mais de uma sentena
nesta condio, observar-se-, alm do exposto acima, a execuo dos comandos da
esquerda para a direita da expresso.
VeAamos a VTA<ELA =ERDADEW a seguir para entendermos mel$or.
E O4
= = = = = =
> = > > = =
= > > = > =
> > > > > >
#xemplosC
X N .2 # Y N 122
A RN !( '" A TN 622
/'9# TR SA/AS # /A' 7/'9# N S9A-IAS8
7/'9# TR SA/AS8 # 7/A' 7/'9#NS9A-IAS8 '" 7/'9#NS&#-'S88
"ntendendo #e$resenta%es de Sinta!es
Agora ,ue (oc3 82 aprendeu o primeiro comando de nossa linguagem algortmica,
importante aprender a forma sinttica de se representar um comando. ?ote ,ue, ao
enunciarmos o comando D*7DA#*, n/s utili+amos algumas nomenclaturas e
JM
simbologias ,ue (oc3, certamente, encontrar2 em ,ual,uer li(ro sobre ,uais,uer
linguagens.
Assim, (amos elucidar algumas delas:
#epetindo o comando,
DECLARE <Nome da varivel>[,<Nome da varivel>]: <tipo>
T R elimita o espao reservado para inserirmos um parZmetro do comando. A
maioria dos comandos das linguagens possui parZmetros.
[ \ elimita o espao reservado para inserirmos um par(metro opcional do
comando> ou seAa> tudo o <ue vier entre colc$etes nem sempre precisar
ser especificado no comando.
#xC #,)A-# S'9A C Inteiro=
#,)A-# S'9A> ;"A/%IA#]A)"/'SCinteiro=
Obser(e ainda ,ue os colc)etes U V e os delimitadores maiorWmenor X Y podem
acumular!se entre si, ou se8a, dentro de um grupo de parZmetros opcionais U V,
poderemos ter outros U U..V V, dependendo apenas da caracterstica do comando.
Atri)ui!"o de Valores a Variveis
At agora, (imos conceitos e e0emplos de (ari2(eis. Agora (amos aprender a utili+2!las
em algoritmos.
#epresentaremos o comando de atri)ui*+o pela combinao de dois smbolos do
teclado, ,ue so dois pontos e o sinal de igual, sem espaos entre eles4!,. *ste smbolo
representar2 a atribuio de um dado a uma (ari2(el.
<varivel> :+ <dado a !er arma?enado>
#xemplosC
/'9# CN SP'I'S= !ados ,iteral t+m -)e vir entre aspas
IA# CN 65= !ados .nteiros no precisam de aspas
A)%"-A CN 1>!(= ados tipo -eal> possuem uma v/rg)la como delimitador entre a parte
decimal e a parte inteira (ling)agens comerciais adotam o ponto".
#&#/# CN := !ados ,O0.1O devem vir entre pontos
ambm podemos atribuir, a uma (ari2(el, o (alor de outra:
#xemploC A)%"-A CN IA#= a varivel 2,34R2 rece#e o valor de .!2!E
ambm podemos atribuir o resultado de uma e0presso numrica, ou de outro tipo, a
uma (ari2(el:
BO%A :[ >UO*A \ 4IADO# ] JM5 W D@I@BO#P
"struturao do &lgoritmo
*0istem alguns formatos para organi+ar um algoritmo, porm adotaremos o mais global,
facilitando assim o aprendi+ado. Ie8amos a seguir:
Algoritmo <nome do programa>;
Declare {Local para declarao das variveis}
Incio
{Local para inicializao das variveis / mensagens montando a
tela}
{Local para receber dados, processar dados e dar sada nos dados
/ mensagens}
Fim
JJ
Entrada e *a+da de ados
At a,ui n/s (imos como atribuir um (alor a uma (ari2(el dentro de um programa.
%as este (alor foi atribudo pelo pr/prio programa, no 1
%as como fa+er com ,ue um programa, em um dado momento, receba um (alor
digitado pelo usu2rio1
7omo receber este dado atra(s do teclado1
7omo e0ibir o resultado de uma operao ,ual,uer no monitor1
*0istem nas linguagens de programao, comandos de entrada e sada de dados. ?o
caso do algoritmo, estes comandos so os seguintes: Leia 4entrada5, Es!reva 4sada !
tela5.
,omando LEIA
Leia <varivel>
O"
Leia 5<varivel>6
TvarivelR M Varivel <ue rece4er os dados digitados pelo usurio.
Algoritmo
Declare wnome:literal;
Widade:nteiro;
Inicio
Leia wnome;
Leia widade;
!se"#$ncia de comandos%;
Fim
A e0ecuo do comando LEIA pro(oca uma pausa na e0ecuo do programa. O
programa fica em estado de espera, aguardando a digitao de algo ,ue de(a ser
atribudo 9s (ari2(eis especificadas na sinta0e do comando. - )om dei.ar claro /ue o
LEIA0 permite um preenc1imento por ve23 Se voc4 dese5ar di6itar vrias
informa*7es referente a mesma varivel0 ter /ue utili2ar uma estrutura de
repeti*+o 8veremos mais adiante, e fa2er com /ue o flu.o do pro6rama passe pelo
mesmo local onde o LEIA est posicionado
?o e0emplo acima, (e8a ,ue o computador aguarda ,ue o usu2rio digite dois (alores
distintos atra(s do teclado. *stes dois (alores iro ocupar, respecti(amente, as
(ari2(eis ?O%* e @DAD*.
,omando ESCRE=A 5li!ta in@orma2Ae! no vBdeo6
E!$reva <!trin->[, <varivel>][, <opera23o>]
O"
E!$reva 5<!trin->[, <varivel>][, <opera23o>] 6
ImportanteC &elo menos um dos parZmetros deve ser informado <uando da utilizao deste
comando.
TstringR M %exto <ue est sendo encamin$ado para tela.
TvarivelR M ;ual<uer varivel utilizada no programa.
ToperaoR M Algum clculo executado durante a exi4io. /este caso o processador
realiza a operao de clculo e depois li4era o resultado para a exi4io na
tela.
Por dentro dos termos, string - con.unto de caracteres dentro de uma mesma varivel'
#xemploC
Algoritmo e&emplo;
J2
'eclare wnome:Literal;
INICIO
ESCREVA ( )*+, --:.;
LEIA wnome;
ESCREVA /0e1 nome 2 /, )*+,;
FIM;
>uando estudamos l/gica algortmica no nos preocupamos em ,ue coordenada ou
posio a informao ser2 e0ibida, mas sim com o fato de ,ue de(e ser dado o comando
de sada dos dados.
?o e0emplo acima, teremos o conte6do da (ari2(el 9:;E e0ibido no (deo logo ap/s
a mensagem -Beu nome ., como mostra a ilustrao abai0o.
NOME ! "arla Sil#a
Se$ nome % "arla Sil#a
'ani$ulaao de valores
18 ados 6 nBmeros digitados via teclado> faa um algoritmo capaz de exi4ir a soma deles no v5deo.
Algoritmo soma;
Declare 3:nteiro;
4:nteiro;
0*+5:nteiro;
Inicio
Leia 3;
Leia 6;
0*+5 :7 3 8 4;
E&cre#a 0*+5;
Fim
Comentrio a soluo acima, declaramos ! variveis de mem"ria. # e $ %oram criadas para
arma&enar os dois n'meros que seriam di(itados pelo usurio, e )O*+ serviu para
arma&enar o resultado %inal da operao com essas duas variveis.
%as ,uase sempre e0iste mais de uma maneira de solucionarmos um problema, no 1
7om algoritmos no diferente. ente repensar o algoritmo acima utili+ando apenas 2
(ari2(eis, em (e+ de 3 ^ 7omo (oc3 pode obser(ar, e0istem no mnimo duas solu;es
para este problema:
Algoritmo soma;
Declare 3:nteiro;
4:nteiro;
0*+5:nteiro;
Inicio
Leia 3;
Leia 6;
3 :7 3 8 4;
E&cre#a 3;
Fim
Ou ainda:
Algoritmo soma;
Declare 3:nteiro;
4:nteiro;
0*+5:nteiro;
Inicio
Leia 3;
Leia 6;
4 :7 3 8 4;
E&cre#a 4;
Fim
>ual a soluo mais eficiente das duas1
Bomente o fato de economi+ar uma (ari2(el torna ,ual,uer uma dessas solu;es bem
mais eficiente ,ue a primeira. O mesmo caso, sem precisar utili+ar as (ari2(eis para
J3
guardar o resultado, agili+a ainda mais o processamento. %as este caso de(e ser
utili+ado s/ ,uando (oc3 no precisar do (alor resultante da operao.
Algoritmo soma;
Declare 3:nteiro;
4:nteiro;
0*+5:nteiro;
Inicio
Leia 3;
Leia 6;
E&cre#a 9384:;
Fim
(onceitos Fundamentais
/ontador $ Acumulador
*stes nomes so dados a e0press;es ,ue reali+am adio de dados, porm, no primeiro
caso, C:9<AD:R, a e0presso de adio ,ue contabili+a (alores fi0os e
predeterminados. ?o segundo caso, AC=;=LAD:R, a e0presso de adio ,ue
contabili+a (alores (ari2(eis.
E.emplo de Contador
>tdAem :[ >tdAem ] ' 8note /ue o valor adicionado a /uantidade de femininos ser
sempre ',
E.emplo de Acumulador
Boma@dade :[ Boma@dade ] Idade 8note /ue o valor adicionado a soma das idades
ser varivel,
:)serva*+o na maioria das ve2es0 estes elementos s+o iniciados com o > 82ero,3
Percentuais
*ncontramos algumas dificuldades ,uando tratamos estes temas. A,ui daremos algumas
regras b2sica para ,ue (oc3 se sinta a (ontade no momento do c2lculo.
Encontrando um valor percentual
Ve5a esta contin1a simples
?> )olas '>> @ 8?> ! <odo,
"? )olas . @ 8"? ! Parte do <odo,
7)egaremos a concluso:
A @ ! "? . '>> % ?>
*stas informa;es nos le(am a f/rmula:
BpercC ! B Parte do <odoC # '>> % B <odoC
Encontrando um valor final apDs aplica*+o do percentual
B9ovo valorC ! Bvalor anteriorC # '0Bvalor do percentualCE
E.3 adicionar < _ sobre o sal2rio e informar o (alor do no(o sal2rio.
J:
9sal ! Salario # '0>?E
Encontrando um valor adicionado percentualmente a uma varivel
B9ovo valorC ! Bvalor anteriorC # >0Bvalor do percentualCE
E.3 adicionar < _ sobre o sal2rio e informar o (alor acrescido ao sal2rio.
Rea5uste ! Salario # >0>?E
:)serva*+o /uando voc4 n+o sa)e o valor a ser aplicado pois vem dentro de uma
varivel0 n+o podemos fa2er a aplica*+o literal do /ue e.plicamos neste tDpico0 mas
precisamos tradu2ir em termos de pro6rama este processo3 Vamos fa2er os
mesmos e.emplos anteriores0 mas ima6inando /ue o percentual vir em variveis3
a, 9sal ! Salario # 8' F perc % '>>,E
), 9sal ! Salario # 8perc % '>>,E
0aior Valor
*0istiro momentos em ,ue (oc3 sentir2 necessidade de identificar o maior elemento
dentro de um con8unto de dados processados. B/ e0iste uma forma de sabermos ,ual o
maior (alor: comparando as grande+as do con8unto. "ara descobrirmos ,ual ser2 o
maior elemento, iniciali+aremos uma (ari2(el, ,ue arma+enar2 o maior (alor do
con8unto, com um (alor )em pe/ueno para a situao, e, cada dado e0istente no
con8unto iremos comparar com esta dita (ari2(el. 7aso o (alor encontrado se8a superior,
este ser2 colocado como conte6do da (ari2(el maior, 82 ,ue este no(o dado representa a
maior grande+a neste momento do processamento.
Encontrando o maior valor dentro de um con5unto
Obs.: para entender mel)or esse e0emplo, bom estar familiari+ado com a estrutura de
repetio comentada mais adiante.
Algoritmo maior;
Declare +5*;<':nteiro;
dade:nteiro;
=ont:nteiro;
Inicio
+5*;<' :7 >;
'ara cont :7 ? at% ?> Fa(a
Inicio
Leia dade;
Se dade % +5*;<' ent)o
Inicio
+5*;<' :7 dade;
Fim
Fim
E&cre#a (5 maior idade 2 (, +5*;<';
Fim
0enor Valor
De igual forma iremos trabal)ar para encontrar o elemento ,ue possui o menor (alor.
"ara tanto, iremos iniciali+ar uma (ari2(el, ,ue arma+enar2 o menor (alor do con8unto,
com um (alor )em alto ade,uado para a situao, e, cada dado e0istente no con8unto
iremos comparar com esta dita (ari2(el. 7aso o (alor encontrado se8a inferior, este ser2
colocado como conte6do da (ari2(el menor, 82 ,ue este no(o dado representa a menor
grande+a neste momento do processamento.
Encontrando o menor valor dentro de um con5unto
J<
Algoritmo +enor;
Declare menor<':nteiro;
dade:nteiro;
=ont:nteiro;
Inicio
menor<' :7 @@@;
'ara cont :7 ? at% ?> Fa(a
Inicio
Leia dade;
Se dade ! +enor<' ent)o
Inicio
menor<' :7 dade;
Fim
Fim
E&cre#a (5 menor idade 2 (, +enor<';
Fim
"struturas (ondicionais
Babemos ,ue as lin)as de um programa estruturado so e0ecutadas de cima para bai0o
de forma se,`encial 4na orientao ao ob8eto, apenas os mtodos seguem este conceito5.
%as fre,`entemente precisamos mudar este curso natural de acordo com decis;es a
serem tomadas.
"or e0emplo, imagine se dentro de um con8unto de alunos (oc3 dese8asse (erificar a
,uantidade de )omens. B/ e0istiria uma forma para sabermos o resultado: fa+endo uma
pergunta sobre se os dados processados contin)am na (ari2(el B*FO o conte6do igual a
-%..
O comando ,ue reali+a esta -pergunta. o SE, ,ue possui tr3s situa;es bem definidas
dentro da programao: *strutura 7ondicional Simples, Composta ou
Encadeadas4?in)os de B*as5.
Estrutura /ondicional *E 1*+mples2
Se <$ondi23o> ent3o
ini$io
<!eD"En$ia de $omando!>
>im
T$ondi23oR M #xpresso l*gica <ual<uer.
T!eD"En$ia de $omando!R So comandos <ue sero executados caso o resultado da
expresso l*gica seAa verdadeira. #sses comandos devem ser escritos
entre as delimita3es da ger@ncia do comando> ou seAa> entre as palavras
In+cio e fim.
*m tempo de e0ecuo, se a e0presso l/gica retornar (erdadeiro ento a se,`3ncia de
comandos ser2 e0ecutada.
"ara fi0ar esta idia, tente depurar o seguinte algoritmo:
Algoritmo e&emplo0,?;
DECLARE dade, )1m2rico, A
)ome, =aracter , AB
0e&o, =aracter , ?
Inicio
Leia )ome;
Leia 0e&o;
Leia dade;
Se 0e&o 7 (+. ento
Inicio
E&cre#a /5 idade de /, )ome, ( 2 (, dade;
Fim
E&cre#a /Cim da transacao/;
Fim
JK
Estrutura /ondicional *E 1/omposta2
Se <$ondi23o> ent3o
Ini$io
<!eD"En$ia de $omando! ;>
>im
!en3o
ini$io
<!eD"En$ia de $omando! 9>
>im
'ndeC
T$ondi23oR M #xpresso l*gica <ual<uer.
T!eD"En$ia de $omando! ;R So comandos <uais<uer <ue sero executados caso o
resultado da expresso l*gica seAa verdadeira 5=6.
T!eD"En$ia de $omando! 9R So comandos <uais<uer <ue sero executados caso o
resultado da expresso l*gica seAa @al!a 5>6
Sen3o & Variao do comando> para atender o tratamento de informao <ue no foi
contemplada na TcondioR> por ser falso o resultado. S* deve ser
utilizado para otimizar ou se precisar tratar a negativa da TcondioR.
"ara fi0ar esta idia, tente depurar o seguinte algoritmo:
Algoritmo e&emplo0,D;
DECLARE dade: nteiro;
)ome : Literal;
0e&o : Literal;
Inicio
Leia )ome;
Leia 0e&o;
Leia dade;
Se 0e&o 7 (+. ento
Inicio
ESCREVA /5 idade de /, )ome, ( 2 (, dade, (0e&o +asc1lino.;
Fim
&en)o
Inicio
SE 0e&o 7 (C. EN*AO
Inicio
ESCREVA /5 idade de /, )ome, ( 2 (, dade, (0e&o Ceminino.;
Fim
Fim
E&cre#a /Cim da transacao/;
Fim
Estrutura /ondicional *E 1Encadeada2
A,ui (ale comentar ,ue esta estrutura no algo preestabelecido, mas sim, uma
estrutura formada de (2rias condi;es, separando informa;es e dando os tratamentos
de a!ordo !om a ne!essidade da questo. Abai0o segue um modelo )ipottico de uma
estrutura B* 4*ncadeada5.
Se !condio ?% ent)o
Inicio
!se"1$ncia de comandos ?%;
Se !condio D% ent)o
Inicio
!se"1$ncia de comandos D% ;
Fim
Fim
Sen)o
Inicio
Se !condio A% ent)o
Inicio
!se"1$ncia de comandos A% ;
Fim
Sen)o
JS
Inicio
!se"1$ncia de comandos E% ;
Fim
!se"1$ncia de comandos B%;
Fim
Fim
"ara e0emplificarmos mel)or, (e8amos o e0emplo:
J5 #eceber dois n6meros 4?umJ e ?um25.
25 #eali+e a soma dos dois (alores.
2.J5 7aso a soma se8a maior ,ue +ero, mostrar na tela o (alor da soma e a mensagem:
-(alor positi(o.P
"3", 7aso contr2rio, (erifi,ue:
2.2.J5 se o (alor calculado igual a +ero. Be for, informar R(alor igual a +eroR, senoP
2.2.25 informar, R(alor negati(oR. 4De ,ual,uer maneira, em "3", e0ibir os dois n6meros
en(ol(idos na soma5.
Algoritmo Fositivo)egativo;
Declare )1m?:nteiro;
)1mD:nteiro;
0*+5:nteiro;
Inicio
Leia )1m?, )1mD;
0*+5:7 )1m? 8 )1mD;
Se 0*+5 % > ,)G5*
Inicio
E&cre#a 0*+5, (Halor Fositivo.;
Fim
Sen)o
Inicio
E&cre#a n1m?, n1mD;
SE 0*+5 7 > ent)o
Inicio
E&cre#a /Halor g1al a Iero/;
Fim
Sen)o
Inicio
E&cre#a /Halor )egativo/;
Fim
Fim
Fim
Bobre esta soluo, importante salientar o seguinte:
/ote <ue a est0tica> apesar de no influenciar no resultado da execuo do programa> 0
de extrema importZncia para o 4om entendimento do mesmo. &erce4a <ue todos os comandos
su4ordinados ao primeiro *E ficam descolados na mesma margem. Apenas a clusula
*E3AO fica na mesma margem do *E. ' mesmo ocorre com o segundo *E e com todos os
<ue vierem. A isto damos o nome de EE3TA45O.
VeAa <ue o comando E!$reva n"m;, n"m9 0 executado independente da condio do
segundo *E. ^ por isto <ue eles foram escritos ap*s o *E35O do primeiro *E.
E$erc+cios de Aprendizagem
18 ados 6 nBmeros digitados via teclado> faa um algoritmo capaz de exi4ir no v5deo o maior deles.
Algoritmo maior;
Declare 3:nteiro;
4:nteiro;
Inicio
Leia 3;
Leia 4;
Se 3 % 4 Ent)o
JQ
Inicio
E&cre#a 3;
Fim
Sen)o
Inicio
E&cre#a 4;
Fim
Fim
68 ados 3 nBmeros distintos> digitados via teclado> faa um algoritmo capaz de exi4ir no v5deo o maior
deles.
Algoritmo maior;
Declare 3:nteiro;
4:nteiro;
I:nteiro;
Inicio
Leia 3;
Leia 4;
Leia I;
Se 93 % 4: E 93 % I: Ent)o
Inicio
E&cre#a 3;
Fim
Sen)o
Inicio
Se 94 % I: E 94 % 3: Ent)o
Inicio
E&cre#a 4;
Fim
Sen)o
Inicio
E&cre#a I;
Fim
Fim
Fim
Comentrio: ote que, para descobrirmos qual o maior entre trs n'meros, precisamos codi%icar ,
comandos )- encadeados. )e %ossem . variveis, seriam ! )-/s.
38 ados 6 nBmeros distintos digitados via teclado> faa um algoritmo capaz de exi4iMlos em ordem
crescente.
Algoritmo *rdenacao;
Declare 5:nteiro;
J:nteiro;
Inicio
Leia 5;
Leia J;
SE 5 % J Ent)o
Inicio
E&cre#a J, 5;
Fim
Sen)o
Inicio
E&cre#a 5, J;
Fim
Fim
7omo (oc3 solucionaria este problema se ti(ssemos de utili+ar apenas um comando
*B7#*IA 1
A primeira imagem ,ue nos (em 9 mente ,ue seria imposs(el, tendo em (ista ,ue
uma informao ao ser colocada em uma (ari2(el simples ir2 -ocupar. o lugar da
informao 82 e0istente na outra (ari2(el. %as em inform2tica podemos utili+ar todas as
tcnicas dispon(eis para solucionarmos um problema, e(itando solu;es e0tensas ou
complicadas.
JL
O recurso ,ue (amos dispor nesse momento a utili+ao de uma (ari2(el au.iliar.
Iari2(el au0iliar a,uela ,ue n/s utili+amos como apoio. Ie8a ,ue para reali+ar a troca
de dados e0posta a seguir, s/ com esse recurso.
Algoritmo troca;
Declare 5:nteiro;
J:nteiro;
3:nteiro;
Inicio
Leia 5;
Leia J;
Se 5 % J Ent)o
Inicio
3 :7 5;
5 :7 J;
J :7 3;
Fim
E&cre#a 5 , J;
Fim
Comentrio: 0ara economi&armos comandos -)C1-2+, observe que invertemos os valores de A e B
toda ve& que a varivel A %osse maior que B. +ssim, independente dos valores de A e
B, sempre exibiremos A e B nesta ordem. 0ara propiciar esta inverso utili&amos uma
varivel auxiliar #.
Be (oc3 no entendeu muito bem o por,ue da (ari2(el A ter sido utili+ada no algoritmo
acima, preste bastante ateno agora:
Dese8a!se trocar os (alores de duas (ari2(eis: A e C, por e0emplo.
A C
'> '?
Be fi+ermos simplesmente A ! G, apagaremos o (alor original de A colocando o
conte6do de G em seu lugar. Assim, as (ari2(eis ficariam com o (alor '?. "ara
(iabili+ar o processo da troca, temos ,ue recorrer a uma (ari2(el au0iliar ,ue conter2
pro(isoriamente o (alor de uma das (ari2(eis a fim de de(ol(3!lo para a outra.

F

'> '?
'>
2M
1_ passo
6_ passo
3_ passo
XCNA
ACNG
GCNX
"struturas de #e$etio
Algumas (e+es, sentimos necessidade de escre(ermos repetidamente o mesmo
comando. *m alguns casos, a ,uantidade de (e+es ,ue temos de escre(er
indeterminada ou depende de uma condio.
*0istem algumas formas de definir as estruturas de repeti;es. Algumas lembram at
esta ou a,uela linguagem. *m nosso curso iremos no ater a duas estruturas, as ,uais
podemos representar tran,`ilamente em ,ual,uer ambiente de programao.
As estruturas so: En/uanto e Para. 7ada uma delas possui uma caracterstica ,ue l)e
peculiar. = normal ou(ir a pergunta: -,uando iremos utili+ar esta ou a,uela estrutura1..
A resposta simples, pois depende da )abilidade de cada um. *0istem momentos ,ue
podemos resol(er a mesma ,uesto com todas as duas formas, mas e0istem momentos
,ue no poss(el. "or isso o segredo encontra!se no e0ercitar.
Cem, (amos desmistificar estas estruturas.
/omando E36UA3TO
O comando E9H=A9<: prende um trec)o do programa a um lao 4looping5, ou se8a,
podemos determinar ,ue um certo bloco de comandos se8a e0ecutado repetidamente
en,uanto uma condio for (erdadeira.
.
En+$anto !condio% Fa(a { se!condio% Kor verdadeira}
Inicio { sero e&ec1tados os comando deste bloco}
! comandos %;
Fim
#sta estrutura possui duas formas de aplicao dentro de uma l*gicaC
a8 %estando sempre uma condio de sa5da no pr*prio comando> ou=
48 eixando este controle de sa5da da estrutura por conta de uma condio executada
internamente.
;o* Ca!o
S* entra no lao de repetio> se e somente se> a condio for verdadeira. &ara sair da
repetio> a condio tem <ue ser satisfeita.
En+$anto !condio% Fa(a
incio
! comandos % ;
Fim
9o* Ca!o
#ntra no lao independente da condio> mas para sair> a condio 6 tem <ue ser verdadeira.
,aso a condio no seAa satisfeita> dizemos <ue o programa Ventrou em loopW.
En+$anto !condio% Fa(a
incio
Se ! condio D % Ent)o
Incio
&air
Fim
! comandos % ;
Fim;
2J
/omando PA7A
O comando PARA e0ecuta um bloco de comandos, gerenciando esta e0ecuo em cima
de uma contagem. *n,uanto ela no for satisfeita, ou se8a, o (alor final no for
ultra.assado, os comandos do bloco sero repetidos a cada no(a (erificao da
condio e obteno de resultado falsoP
'ara !var% !, !valor<inicial% at% !Halor<Kinal% incr-./0 <#alor>1
Fa(a
Inicio
! comandos % ;
Fim
Be (oc3 utili+ar este comando, ir3 .ou.ar a ini!iali4ao da vari3vel, pois esta
assumir2 como (alor inicial o declarado como BvalorIinicialCP no .re!isar3 !ontar a
quantidade de ve4es que o lao "oi e5e!utado, pois esta estrutura tem como uma de
suas caractersticas, o adicionar um determinado (alor a (ari2(el BvarC baseado no
(alor utili+ado como incremento 4F5 ou decremento 4J5 utili+ado no parZmetro incrK333L
estabelecendo uma contagem at ,ue o (alor declarado como BvalorIfinalC se8a
alcanado e reali+ando a 6ltima e0ecuo dos comandos e0istentes entre o 6ni!io e o
Fim. Be o parZmetro @ncr U ]W! (alorV for omitido, o programa assumir2 por Default
sempre o incremento de ] J.
Iamos utili+ar um e0emplo para esclarecer cada uma dessas instru;es dentro de suas
respecti(as estruturas de repeti;es. Digamos ,ue temos de fa+er o computador escre(er
o somat/rio de < idades informadas na tela. Usaremos os comandos aprendidos at
agora.
Com a estrutura E9H=A9<:
Algoritmo
Declare widade:nteiro;
Wcont:nteiro;
Wsomaid:nteiro;
Inicio
Wcont :7 >;
Wsomaid :7 >;
Leia widade;
En+$anto wcont ! B Caa
Inicio
Wcont :7 wcont 8 ?;
Wsomaid :7 wsomaid 8 widade;
Leia widade;
Fim
E&cre#a 2* total das idades 2 (, wsomaid;
Fim
Com a estrutura PARA
Algoritmo
Declare widade:nteiro;
Wcont:nteiro;
Wsomaid:nteiro;
Inicio
Wsomaid :7 >;
'ara wcont :7 ? at2 B Caa
Inicio
Leia widade;
Wsomaid :7 wsomaid 8 widade;
Fim
E&cre#a 2* total das idades 2 (, wsomaid;
22
Fim
E1er$B$io! de Aprendi?a-em
18 #la4ore um algoritmo capaz de exi4ir todos os nBmeros inteiros> desde o 1 at0 o 12.
Algoritmo e&emplo?;
Declare )L+,;*:nteiro;
Inicio
)L+,;* :7 ?;
En+$anto )L+,;* !7 ?> Fa(a
Inicio
E&cre#a )L+,;*;
)L+,;* :7 )L+,;* 8 ?;
Fim
Fim
Comentrio: ote que, utili&amos uma varivel numrica c3amada 4*-1O que recebeu,
inicialmente, o valor 5, e da6 em diante %oi ciclicamente incrementada de 5
74*-1O:84*-1O95: at que a condio imposta pelo -;4+<O tornasse
%alsa.
68 #la4ore um algoritmo capaz de rece4er um nBmero e> em seguida> listar todos os nBmeros de 1 at0
ele.
Algoritmo e&emploD;
Declare )L+,;*:nteiro;
L+G,:nteiro;
Inicio
Leia L+G,;
)L+,;*:7?
EN34AN*O )L+,;* !7 L+G, FA5A
Inicio
E&cre#a )L+,;*;
)L+,;* :7 )L+,;* 8 ?;
Fim
Fim
Comentrio: -ste pro(rama similar ao anterior. + 'nica so%isticao implementada %oi a
%lexibili&ao do limite. =sto tornou o al(oritmo mais (enrico, servindo para listar a
seq>ncia de qualquer n'mero, e no apenas a do 5?. 0ara alcanar esta so%isticao,
%oi necessrio o uso da varivel @=*=<- que de %ato limitou o lao do Enquanto ao seu
conte'do, conte'do este que %ora recebido lo(o no in6cio da execuo do pro(rama,
com o comando Leia @=*=<-.
38 Sofisticando ainda mais o programa da 3
`
<uesto> vamos fazer com <ue> al0m de listar todos os
nBmeros de 1 at0 um determinado nBmero digitado via teclado> ele mostre a soma de todos esses
nBmeros no final da listagem.
Algoritmo e&emploD;
Declare )L+,;* :nteiro;
L+G, :nteiro;
0*+5 :nteiro;
Inicio
Leia L+G,;
)L+,;* :7 ?;
0*+5 :7 >;
En+$anto )L+,;* !7 L+G, Fa(a
Inicio
E&cre#a )L+,;*;
0*+5 :7 0*+5 8 )L+,;*;
)L+,;* :7 )L+,;* 8 ?;
Fim
E&cre#a 0*+5;
Fim
Comentrio: 0erceba que, para acumular os valores parciais assumidos pela varivel 4*-1O,
precisamos lanar mo de uma outra varivel, a qual c3amamos de )O*+. +ssim, a
cada ciclo do Enquanto acrescentamos ao valor de )O*+ o novo valor de 4*-1O
7)O*+ :8)O*+94*-1O:.
Obser(e tambm ,ue ao declaramos BO%A, na pr2tica das linguagens, temos ,ue tomar
o cuidado dela ter capacidade de absor(er o resultado da e0presso. = f2cil entender por
,ue^ 7omo BO%A ser2 um -Acumulador. dos (alores de ?U%*#O, ela sempre ter2
23
(alores maiores ,ue ?U%*#O, podendo seu montante, e0ceder a capacidade definida
em ?U%*#O.
Tcnicas de &lgoritmi)ao
7omo dissemos anteriormente, no )2 ,ual,uer receita de bolo para resol(ermos um
determinado problema atra(s da algoritmi+ao. 7ada caso um caso bem particular.
*ntretanto, alguns procedimentos sistem2ticos podem au0iliar a elucidao de alguns
problemas.
icas so)re 7esolu!"o de Algoritmos
?unca d3 um algoritmo por encerrado antes de testar todas as possibilidades
condicionais. B/ o teste garante a efic2cia do programa. este sempre as situa;es
e0tremas. *m algoritmos utili+e di(ersas condi;esP teste ao menos uma situao ,ue
se en,uadre em cada condio pre(ista pelo algoritmo.
?o tente decorar algoritmos. 7ada caso um caso, por mais ,ue se assemel)em.
T2 sempre uma forma mel)or de fa+er a mesma coisa. Ap/s o b*#O *##O, e0amine
se o seu algoritmo eficiente, isto , se ele no usa (ari2(eis demais, se ele facilmente
compreendido por uma terceira pessoa, se os nomes de (ari2(eis so auto!e0pressi(os,
se o usu2rio no ter2 dificuldade em utili+2!lo, e se o computador no passar2 muito
tempo para process2!lo 4performance5.
?o tente ar,uitetar, ainda ,ue mentalmente, a soluo de um problema sem antes
entender perfeitamente o ,ue pede no enunciado.
?o inicie a algoritmi+ao sem ter claramente a soluo ar,uitetada na sua cabea.
?o dei0e a curiosidade afetar a sua criati(idade. Durante o desen(ol(imento do seu
algoritmo, no pesas orientao sobre o como fa+er, sem antes ter c)egado a algum
resultado, ainda ,ue errado.
?unca desista de uma soluo. 7onclu!a. 7)egue at o fim. este!a, e somente ,uando
os testes sinali+arem a sua inefic2cia, tente modific2!la ou refa+3!la.
T8cnica para e$trair os dados de um enunciado
>uando nos deparamos com um enunciado pe,ueno, nos sentimos a (ontade para
resol(e!lo pois os dados e0istentes neste so poucos. "orm, ,uando nos deparamos
com um enunciado mais comple0o, e0iste a tend3ncia natural de pensarmos ,ue algo
muito difcil de resol(er. %as, por incr(el ,ue parea, o maior problema encontra!se
em nosso lidar com o desafio e o encarar -friamente.. Oustamente para mel)or l)e
capacitar a interpretar um te0to ,ue estamos te dando esta dica.
odos os programas possuem 3 fases bem definidas e nestas, os seus dados necess2rios.
>uando (oc3 ti(er domnio sobre estas tr3s fases, o algoritmo fluir2 naturalmente.
2:
"rocure identificar a J
c
fase ,ue a da identificao dos dados de entradaP a 2
c
fase e a
,ue (erifica os dados relati(os ao processamento 4condi;es de encerramento, c2lculos,
mensagens, etcP a 3
c
fase a,uela aonde (oc3 descobre ,uais os dados de sada, ou se8a,
ap/s o processamento, aonde iro ser colocado estes dados1
Iamos e0emplificar.
Ela)orar um al6oritmo /ue rece)a a matrcula0 o nome e o salrio de ?>
funcionrios0 imprimindo ao final0 o somatDrio dos salrios e a mMdia salarial3
Iamos por em pr2tica nosso aprendi+ado.
'
N
fase 8Dados de Entrada,
Ber2 lido na tela a %A#@7UDA, ?O%* * BADd#@OP
Leia %atriculaP
Leia ?omeP
Leia Bal2rioP
"
N
fase 8Processamentos,
Bero processados dados de <M funcion2rios. 4isto implica di+er ,ue
precisaremos de uma (ari2(el para contabili+ar e gerenciar este
processo5P O mel)or comando para gerenciar um (alor predefinido
o PARA.
7ada elemento ,ue for processado, ser2 acumulado o (alor do sal2rio
4somat/rio dos sal2rios5.
AcumSal ! AcumSal F SalrioE
Obser(e ,ue para c2lculo da mdia salarial necess2rio sabermos o
somat/rio dos sal2rios e di(idir o mesmo pela ,uantidade de pessoas
,ue os possuem. 7omo sabemos ,ue e0istiro <M pessoas, para
encontrar a mdia super simples.
7alcular a mdia dos sal2rios.
;edia ! AcumSal % ?>E
&
N
fase 8Dados de Sada,
Dar sada no (alor da mdia calculada.
Escreva -A mdia salarial -, %ediaP
;ontando o Al6oritmo
Algoritmo e&emplo;
Declare 5c1m0al:;eal;
=ont :nteiro;
0alrio: ;eal;
+edia :;eal;
)ome :Literal;
Inicio
5c1m0al :7 >
'ara cont :7 ? at% B> 6a(a
Inicio
Leia +atric1la;
Leia )ome;
2<
Leia 0alrio;
5c1m0al :7 5c1m0al 8 0alrio;
Fim
+edia :7 5c1m0al / B>;
E&cre#a (5 m2dia 0alarial 2 (, +edia;
Fim
Aaclimo, no^
7om estas compet3ncias ad,uiridas nesse m/dulo, (oc3 de(e e0ercitar e c)egar num
est2gio de )abilidade ,ue l)e permitir2 obter sucesso nas demais compet3ncias ,ue
sero ministradas a (oc3 em sala de aula.
Dembre!se: Os e0erccios ,ue esto na apostila dedicada s/ para este fim, de(em ser
praticados e esgotados, pois isto o far2 crescer em situa;es as mais ad(ersas dentro do
mundo da programao.
Bucesso a todos^
Desafios #esolvidos
7omo fa+er para descobrir a ,uantidade de elementos iguais ao
maior do con8unto1
Bimples. "rimeiro, (oc3 de(er2 encontrar o maiorP
*m segundo lugar, (erificar ,uais os elementos so iguais a
este maior encontrado.
A,ui damos uma dica. Ao encontrar um elemento cu8o (alor
se8a superior 9,uele ,ue representa o maior, temos duas tarefas
a fa+er. Uma atribuir o (alor do elemento para ser o maior e
em seguida iniciali+ar a ,uantidade com o numeral J 4um5.
%as por,ue J 4um51 "elo fato de ,ue acabamos de encontrar
um n6mero maior e com certe+a, nesse momento ele 6nico.
7omo fa+er para contabili+ar todos os iguais1 A pr/pria
pergunta 82 a resposta: cada (e+ ,ue (oc3 encontrar algum
(alor igual ao maior, contabili+aremos mais um.
Iamos ao *0emplo1
A-laborar um al(oritmo que receba idade de B? pessoas e
in%orme ao %inal, a maior delas e quantas pessoas a possuem.C
Algoritmo resolvidos?;
Declare +a<idade:nteiro;
Mt<maid :nteiro;
=ont :nteiro;
Widade :nteiro;
Inicio
+a<idade :7 >;
Mt<maid :7 >;
'ara cont !, ? at% B> 6a(a
Inicio
Leia widade;
2K
Se widade % +a<idade ent)o
Inicio
+a<idade :7 widade;
Mt<maid :7 ?;
Fim
Sen)o
Inicio
Se widade 7 +a<idade ent)o
Inicio
Mt<maid :7 Mt<maid 8 ?;
Fim
Fim
Fim
E&cre#a (5 maior idade 2 --------------------------: (, +a<idade;
E&cre#a (M1antidade de pessoas com a maior idade---: (, Mt<maid;
Fim
7omo fa+er para descobrir a ,uantidade de elementos iguais aos
dois maiores elementos do con8unto1
Agora ficou mais f2cil. "recisamos atentar para um pe,ueno
detal)e: ,uando encontrarmos um elemento ,ue superior ao
primeiro, este 6ltimo passa a ser o segundo maior. "ara no
perdermos o conte6do original do maior, passaremos seus
conte6dos para as respecti(as (ari2(eis e depois procederemos
naturalmente colocando o elemento maior no seu referido
lugar. Ie8amos parte do c/digo a seguir.
+a<idadeD :7 +a<idade?;
Mt<maidD :7 Mt<maid?;
+a<idade? :7 widade;
Mt<maid? :7 ?;
"ercebeu como simples1 @sso fa+emos em todos os
momentos em ,ue ,ueremos (erificar o maior e o segundo
maior. ?o demais tomar cuidado com o segundo maior, pois
apesar do (alor as (e+es, ser inferior ao primeiro, nada garante
,ue ele o se8a em relao ao segundo. Desta forma, precisamos
fa+er a comparao para termos certe+a.
Iamos ao *0emplo1
A-laborar um al(oritmo que receba idade de B? pessoas e
in%orme ao %inal, as duas maiores idades e quantas pessoas as
possuem.C
Algoritmo
Declare +a<idade?:nteiro;
+a<idadeD:nteiro;
Mt<maid? :nteiro;
Mt<maidD :nteiro;
=ont :nteiro;
Widade :nteiro;
Inicio
+a<idade? :7 >;
+a<idadeD :7 >;
Mt<maid? :7 >;
Mt<maidD :7 >;
'ara cont !, ? at% B> 6a(a
Inicio
Leia widade;
Se widade % +a<idade? ent)o
Inicio
+a<idadeD :7 +a<idade?;
Mt<maidD :7 Mt<maid?;
+a<idade :7 widade;
2S
Mt<maid :7 ?;
Fim
Sen)o
Inicio
Se widade 7 +a<idade? ent)o
Inicio
Mt<maid? :7 Mt<maid? 8 ?;
Fim
Sen)o
Inicio
Se widade % +a<idadeD ent)o
Inicio
+a<idadeD :7 widade;
Mt<maidD :7 ?;
Fim
Sen)o
Inicio
Se widade 7 +a<idadeD ent)o
Inicio
Mt<maidD :7 Mt<maidD 8 ?;
Fim
Fim
Fim
Fim
Fim
E&cre#a (5 maior idade 2 --------------------------: (, +a<idade?;
E&cre#a (M1ant- de pessoas com a maior idade-------: (, Mt<maid?;
E&cre#a (5 seg1nda maior idade 2 ------------------: (, +a<idadeD;
E&cre#a (M1ant- de pessoas com 0eg- maior idade----: (, Mt<maidD;
Fim
2Q
2L

Você também pode gostar