Cuiab-MT
2014
Equipe de Reviso
Universidade Federal de Mato Grosso
UFMT
Coordenao Institucional
Carlos Rinaldi
Direo-Geral
Miguel Fabrcio Zamberlan
Designer Educacional
Neusa Blasques
Ilustrao
Tatiane Hirata
Diagramao
Tatiane Hirata
1SPKFUP(SmDP
Rede e-Tec Brasil / UFMT
Lgica de Programao - Informtica para Internet
L131l
Indicao de cones
0T DPOFT TP FMFNFOUPT HSmDPT VUJMJ[BEPT QBSB BNQMJBS BT GPSNBT EF
linguagem e facilitar a organizao e a leitura hipertextual.
Ateno: indica pontos de maior relevncia no texto.
Contents
Indicao de cones
Apresentao da Disciplina
11
Sumrio
13
Aula 1. Lgica
15
15
16
17
Aula 2. Algoritmos
21
21
22
27
3.1 Introduo
27
28
33
4.1 Introduo
33
$PNPEFmOJSVNBMHPSJUNP
43
5.1 Introduo
43
5.2 Variveis
43
45
46
Palavra da Professora-autora
Caro(a) estudante,
Voc est prestes a entrar em um mundo fantstico onde homens e mquinas interagem para resolver problemas que antes eram difceis e at mesmo
impossveis. Ele tem evoludo de maneira alucinante e alguns o consideram
NHJDPPNVOEPEBT5FDOPMPHJBTEF*OGPSNBPF$PNVOJDBPo5*$T
ou, simplesmente, TI.
Tecnologias de Informao um termo abrangente que engloba vrias reas, e neste caderno vamos abordar uma das mais importantes, que a Programao.
"JNQPSUODJBEFTTBSFBKVTUJmDBEBQFMPGBUPEFBMHJDBEFQSPHSBNBP
TFSBCBTFEFUPEBBJOGPSNUJDB1PSNFJPEFMBPTDJSDVJUPTMHJDPTTPQSPgramados, so criados os sistemas operacionais e todos os aplicativos que
usamos quando estamos em frente a qualquer dispositivo eletrnico, sejam
celulares, tablets, computadores e muitos outros.
/FTUF DBEFSOP TFSP BCPSEBEPT PT DPODFJUPT CTJDPT EB -HJDB F EB -JOguagem de Programao, como fazer com que o computador execute os
DPNBOEPTRVFEFTFKBNPTQBSBFYFDVUBSVNBUBSFGBFTQFDmDBF
QSJODJQBMmente, entender como todo esse processo.
" -HJDB EF 1SPHSBNBP QPEF TFS DPOTJEFSBEB DPNP B QPSUB EF FOUSBEB
para esse mundo fantstico que permite uma profunda interao entre o hoNFNFBNRVJOB
OPDBTP
PDPNQVUBEPS4FOEPBTTJN
mDBGDJMFOUFOEFS
QPSRVFNVJUPTmDBNBQBJYPOBEPTFNBSBWJMIBEPTDPNFTTBSFBFTQFDmDB
da informtica.
Bons estudos.
Professores-autores.
Apresentao da Disciplina
"EJTDJQMJOBEF-HJDBEF1SPHSBNBPDPNQSFFOEFPGVOEBNFOUPUFSJDPF
prtico necessrio para desenvolver programas, apresentando as principais
estruturas de dados e de linguagem necessrias para a resoluo de problemas computacionais.
As aulas esto estruturadas de forma a capacit-lo(a) na construo de alHPSJUNPTFQSPHSBNBTBQBSUJSEPFOUFOEJNFOUPEBMHJDBQBSBSFTPMVPEF
problemas de complexidade limitada.
0PCKFUJWPEBEJTDJQMJOBGB[MP B
DPNQSFFOEFSPTNFDBOJTNPTMHJDPTF
matemticos da programao, relacionando problemas e elaborando solues atravs do uso de metodologias e ferramentas que envolvam os elementos bsicos da construo de algoritmos e programas de computador.
Para alcanar esse objetivo, a disciplina foi estrutura em dez aulas. A primeiSBBCPSEBBMHJDBOPEJBBEJBFOBJOGPSNUJDB/BTFHVOEB
USBUBSFNPTEPT
algoritmos e as formas de represent-lo. Na terceira aula, mostraremos as
ferramentas usadas para a criao dos algoritmos. J na quarta aula, discorSFSFNPTTPCSFBFTUSVUVSBCTJDBEFVNBMHPSJUNP
FNQTFVEPDEJHPDPN
VisualG, e em Java com Eclipse. Na sequncia, veremos o conceito de variveis, sua nomenclatura e os tipos primitivos de dados. Na sexta aula, estudaremos os conceitos de operadores e expresses, como empregar operadores
BSJUNUJDPT
SFMBDJPOBJT F MHJDPT QBSB DSJBS FYQSFTTFT DPNQMFYBT F
mOBMNFOUF
OBT RVBUSP MUJNBT BVMBT
USBUBSFNPT EBT FTUSVUVSBT EF TFRVODJB
deciso, seleo e repetio.
1PSmN
QPEFNPTEJ[FSRVFVNQSPHSBNBOBEBNBJTEPRVFJOTUSVFTQBSB
armazenar, processar e recuperar dados em computador, e as tcnicas usadas
QBSBFTDSFWFSFTTBTJOTUSVFTJOnVJEJSFUBNFOUFOBRVBMJEBEFEPQSPHSBNB
FTTFODJBMRVFWPDEFEJRVFVNBQBSDFMBTJHOJmDBUJWBEFTFVUFNQPQBSB
BTTJNJMBS UPEP P DPOUFEP BCPSEBEP
QPJT FTUB EJTDJQMJOB B CBTF QBSB BT
QSYJNBTEJTDJQMJOBTSFMBDJPOBEBTBQSPHSBNBP
FNBJTBJOEB
BQPSUBEF
entrada do mundo das Tecnologias de Informao e Comunicao.
Bons estudos!
11
12
Lgica de Programao
Sumrio
Aula 1. Lgica
15
0RVFMHJDB
15
-HJDBOPEJBBEJB
16
-HJDBOB*OGPSNUJDB
17
Aula 2. Algoritmos
21
0RVFVNBMHPSJUNP
21
22
27
3.1 Introduo
27
28
33
4.1 Introduo
33
$PNPEFmOJSVNBMHPSJUNP
34
43
5.1 Introduo
43
5.2 Variveis
43
45
46
51
6.1 Introduo
51
52
55
61
7.1 Introduo
61
62
67
13
71
71
71
83
9.1 Introduo
83
83
89
10.1 Introduo
89
90
99
Palavras Finais
101
Guia de Solues
102
Referncias
120
Obras Consultadas
120
#JCMJPHSBmB#TJDB
121
122
14
Aula 1. Lgica
Objetivos:
t DPODFJUVBSSBDJPDOJPMHJDP
t EJGFSFODJBSBSHVNFOUPTJOEVUJWPTEFBSHVNFOUPTEFEVUJWPTF
t VUJMJ[BSMHJDBOPEFTFOWPMWJNFOUPEFQSPHSBNBT
Caro(a)estudante,
Usamos a razo e o senso comum, mesmo que intuitivamente, na execuo
das tarefas do dia a dia, seja nas tomadas de deciso ou na resoluo de problemas. No decorrer da aula, iremos apresentar os conceitos fundamentais
QPSUSTEFTTBSB[P
RVFBQBSUJSEFBHPSBDIBNBSFNPTEFMHJDB7FSFNPT
tambm como aplic-la na resoluo de problemas computacionais.
Aula 1 - Lgica
15
Fonte: www.ahistoria.com.br
16
Lgica de Programao
Aula 1 -Lgica
17
Ou,
Para X = Pedro e Y = sortudo, temos:
Pedro passou no vestibular.
Todos que passam no vestibular so sortudos.
Logo, Pedro sortudo.
Resumo
7PDUFWFPQSJNFJSPDPOUBUPDPNPTDPODFJUPTEFMHJDBFDPOTUBUPVRVFFMB
a base para a resoluo de problemas computacionais. Vimos, tambm,
que, para realizarmos uma atividade com sucesso (resoluo de um problema), executamos vrios passos de acordo com uma ordem, seguindo um
SBDJPDOJP MHJDP
SBDJPDOJP FTTF RVF QPEF TFS SFQSFTFOUBEP GPSNBMNFOUF
para resolver outros problemas semelhantes.
Atividades de aprendizagem
1. A partir do que leu nesta aula, explique com suas palavras a importncia
EBMHJDBQBSBB*OGPSNUJDB
2. D um exemplo de um argumento indutivo cujo resultado verdadeiro e
de outro que seja falso.
3. D um exemplo de um argumento dedutivo diferente do que foi mostrado nesta aula.
4. %FBDPSEPDPNPTTJMPHJTNPTBTFHVJS
BTTJOBMFBBmSNBPRVFBQSFTFOUF
uma concluso vlida:
*o(BUPTTPNBNGFSPT.BNGFSPTOPCPUBNPWP-PHP
a) Todos os mamferos so gatos.
18
Lgica de Programao
Aula 1 -Lgica
19
Estado inicial
Estado final
Fonte: autores
Caro(a) estudante,
Finalizamos a nossa primeira aula. Nela, trabalhamos conceitos importantes
QBSBPFOUFOEJNFOUPEBTQSYJNBT&TQFSBNPTRVFFTUFKBNPUJWBEP B
QBSB
TFHVJSFNGSFOUF%BOEPDPOUJOVJEBEFBPTFTUVEPT
OBQSYJNBBVMBUSBUBSFNPTEFVNBTTVOUPNVJUPJNQPSUBOUFQBSBBMHJDBEFQSPHSBNBPPT
algoritmos. Vamos l!
20
Lgica de Programao
Aula 2. Algoritmos
Objetivos:
t DPODFJUVBSBMHPSJUNPT
t JEFOUJmDBS PT UST UJQPT EF BMHPSJUNPT FTUVEBEPT
TVBT WBOUBHFOTFEFTWBOUBHFOTF
t FTDSFWFSBMHPSJUNPOBTGPSNBTEFEFTDSJPOBSSBUJWB
nVYPHSBNBFQTFVEPDEJHP
Caro(a) estudante,
A base do desenvolvimento dos programas modernos o algoritmo. Nesta
aula, voc ir conhecer os principais conceitos relacionados a ele e ter a
oportunidade de aprender a resolver os mais diversos problemas computacionais. Para tanto, dever aprender a pensar de forma algortmica, isto ,
pensar em ordem, da maneira que vimos na aula anterior.
Aula 2 - Algoritmos
21
22
Lgica de Programao
2.2.2 Fluxograma
0nVYPHSBNBVNBSFQSFTFOUBPHSmDBEFVNBMHPSJUNP6UJMJ[BBMHVOT
TNCPMPTQSEFmOJEPT
NPTUSBEPTOB5BCFMB
QBSBJEFOUJmDBSPTQBTTPTB
serem seguidos para chegar ao resultado.
5"#&-"$POKVOUPEFTNCPMPTVUJMJ[BEPTOPnVYPHSBNB
Indica o incio e o fim do algoritmo.
Aula 2 - Algoritmos
23
Vantagens:
"MHJDBVTBEBNBJTQSFDJTBOPEBOEPNBSHFNBNMUJQMBTJOUFSQSFUBFT
FDPOTFRVFOUFNFOUF
mDBNBJTGDJMBNJHSBPEPBMHPSJUNPQBSBVNBMJOguagem de programao real.
Desvantagens:
muito mais trabalhoso fazer um desenho do que simplesmente escrever,
mesmo considerando o auxlio de programas especializados. Alm disso, a
SFQSFTFOUBP HSmDB EPT BMHPSJUNPT UFOEF B mDBS NVJUP FYUFOTB F
DPOTFRVFOUFNFOUF
NBJTEJGDJMEFTFSBOBMJTBEBFNPEJmDBEB JNBHJOFSFGB[FS
UPEPPEFTFOIPQPSDBVTBEFVNBNVEBOBOBMHJDB
Exemplo:
Vamos descrever o algoritmo que some dois
ONFSPTOBGPSNBEFnVYPHSBNB
Fonte: Autores.
24
Lgica de Programao
2.2.3 Pseudocdigo
0QTFVEPDEJHPEFTDSFWFBTPMVPEFVNQSPCMFNBBMHPSUNJDPEFNBOFJSB
UFYUVBMFQPSNFJPEFSFHSBTQSFEFmOJEBT&MFVUJMJ[BVNBMJOHVBHFNFTUSVUVrada que lembra o Pascal, uma linguagem de programao que j foi muito
usada.
"QBMBWSBQTFVEPDEJHPTJHOJmDBiGBMTPDEJHPw"MHVOTBVUPSFTDIBNBN
PQTFVEPDEJHPEFportugus estruturado ou portugol, bem sugestivo,
j que podemos consider-lo como uma linguagem intermediria entre a
linguagem natural e a de programao.
Vantagens:
"MNEFBTJOUBYFTFSCFNQSYJNBEBMJOHVBHFNOBUVSBM
BNJHSBPEF
VNQTFVEPDEJHPQBSBVNBMJOHVBHFNEFQSPHSBNBPRVBTFRVFJNFdiata.
Desvantagens:
1TFVEPDEJHPT
BTTJNDPNPMJOHVBHFOTEFQSPHSBNBP
QPTTVFNBMHVNBT
regras (mesmo que sejam bem mais simples do que a de uma linguagem de
programao completa). necessrio aprend-las e aplic-las corretamente.
Exemplo:
7BNPTEFTDSFWFSVNQTFVEPDEJHPRVFTPNFEPJTONFSPT
ALGORITMO
DECLARE N1, N2, SOMA: NUMRICO;
ESCREVA Digite dois nmeros;
LEIA N1, N2;
ESCREVA O resultado da soma igual a: , SOMA;
FIM_ALGORITMO.
Resumo
No desenvolvimento desta aula, voc teve a oportunidade de aprender o
que um algoritmo. Discorremos sobre os tipos de algoritmo. Os trs mais
VUJMJ[BEPTTPBEFTDSJPOBSSBUJWB
PnVYPHSBNBFPQTFVEPDEJHP.PTUSBmos tambm as vantagens e as desvantagens de cada um desses algoritmos.
Esperamos que voc esteja apto a escrev-los ou desenh-los, mesmo sem
Aula 2 - Algoritmos
25
Atividades de aprendizagem
1. Descreva qual a principal funo dos algoritmos.
2. Faa um algoritmo na forma de descrio narrativa que descreva os
passos de uma pessoa para abrir um documento do Word armazenado no
seu e-mail.
3.'BBVNBMHPSJUNPOBGPSNBEFinVYPHSBNBwRVFNPTUSFPTBMSJPUPUBMEF
VNGVODJPOSJP
EBEPPTBMSJPRVFFMFSFDFCF
PONFSPEFmMIPTRVFQPTTVJ
FTBCFOEPRVF
QBSBDBEBmMIP
FMFSFDFCFVNBBKVEBEFDVTUPEF3
4.'BBVNBMHPSJUNPOBGPSNBEFiQTFVEPDEJHPwRVFDBMDVMFPDVCPEF
VNEFUFSNJOBEPONFSPJOGPSNBEP
Caro(a) estudante,
Esperamos que tenha achado interessante o estudo dos algoritmos, pois
FMFTGBDJMJUBNNVJUPBTPMVPEFBMHVOTQSPCMFNBT7BNPTDPOUJOVBS "JOEB
UFNPTNVJUPBTTVOUPMFHBMQBSBFTUVEBS/BQSYJNBBVMB
BCPSEBSFNPTBT
ferramentas de criao de algoritmos.
26
Lgica de Programao
Caro(a) estudante,
Atualmente existem centenas, seno milhares de programas especializados
em criar outros programas. Eles so chamados de ambiente integrados de
desenvolvimento (do ingls: Integrated Development Environment o *%&
Iremos utilizar em nossas aulas uma ferramenta bem simples, o VisualG,
RVFOPDIFHBBTFSVNB*%&DPNQMFUB
NBTPTVmDJFOUFQBSBBQSFOEFSF
exercitar a criao de algoritmos.
Veremos que, para cada exemplo dado em VisualG, teremos o equivalente
em Java, que uma linguagem de programao completa e tem vrias IDEs
QSPmTTJPOBJTRVFEPTVQPSUFBFTTBMJOHVBHFN
3.1 Introduo
Qualquer dispositivo eletrnico que manipula informaes, seja de pequeno
QPSUF
DPNPVNDFMVMBSEFNEJPQPSUF
DPNPVNDPNQVUBEPSdesktopPV
de grande porte, como os servidores de datacenters, todos eles executam
basicamente trs aes:
t FOUSBEBEFEBEPT
t QSPDFTTBNFOUPEFEBEPT
t sada de dados.
27
28
Lgica de Programao
29
30
Lgica de Programao
Perceba que a interface do Eclipse bem mais complexa, com muitas opFTFKBOFMBT
JTTPQPSRVFP&DMJQTFVNBGFSSBNFOUBEFVTPQSPmTTJPOBM
que permite desde a criao de programas bem simples at programas para
Web, celulares, tablets e muitos outros.
A priori, para voc conseguir trabalhar com o Eclipse, vamos descrever apenas algumas reas do mesmo:
t Menu de comandosoUFNUPEBTBTPQFTEJTQPOWFJTOPQSPHSBNB
desde salvar e recuperar projetos em Java at execut-los e test-los.
t Botes de atalhooDPNPPQSQSJPOPNFKEJ[
TPBUBMIPTQBSBPT
principais comandos do menu.
t rea de trabalhooPMPDBMPOEFFTDSFWFNPTPTQSPHSBNBTFN+BWB
t Explorador de arquivosoQFSNJUFHFSFODJBSUPEPTPTBSRVJWPTRVFGBzem parte do meu projeto de software (isso mesmo, um programa em
Java pode ser composto por vrios arquivos).
t Janela de execuooTFSWFQBSBNPTUSBSBTBEBEPTJTUFNBVTVBMmente chamado de console ou output.
Para cada problema dado, a partir de agora vamos resolv-los de duas forNBT
DPNBTEPCSBEJOIBT7JTVBM(QTFVEPDEJHPF&DMJQTF+BWB
Resumo
No decorrer da aula, tratamos das ferramentas que iremos usar para criar
nossos algoritmos ao longo da disciplina. Desenvolvemos algoritmos com
QTFVEPDEJHPTVTBOEPPWJTVBM(FFN+BWBDPNP&DMJQTF
VNBGFSSBNFOUB
EFVTPQSPmTTJPOBMRVFQFSNJUFEFTEFBDSJBPEFQSPHSBNBTCFNTJNQMFT
at os mais complexos.
Agora, vamos s atividades.
Atividades de aprendizagem
1. Alm das IDEs citadas na aula, pesquise mais quatro usadas para prograNBPFJEFOUJmRVFBTMJOHVBHFOTRVFFMBTVUJMJ[BN
2. Instale as IDEs citadas nesta aula e escreva um algoritmo em cada uma
31
delas (pode ser uma variao dos que foram utilizados como exemplo).
3. Salve e recupere os algoritmos criados no exerccio anterior. Analise as
estruturas das pastas e dos arquivos criados por cada uma das plataformas
QTFVEPDEJHPDPN7JTVBM(F+BWBDPN&DMJQTF
4.%TVBPQJOJPTPCSFFTDSFWFSBMHPSJUNPTFNQTFVEPDEJHPTFFNVNB
linguagem de programao verdadeira. Discorra sobre sua experincia nas
atividades anteriores.
Caro(a) estudante,
&OUP
HPTUPVEP7JTVBM(FEP&DMJQTF $PNFTTFTEPJTQSPHSBNBT
WPDJS
fazer coisas incrveis. Na Aula 4, mostraremos as estruturas bsicas de um
BMHPSJUNP$POUJOVFFTUVEBOEPDPNBmODPOPTTBTBVMBT"UBQSYJNB
32
Lgica de Programao
Objetivo:
t criar uma estrutura bsica para desenvolver um algoritmo em
QTFVEPDEJHPFVNBMHPSJUNPFN+BWB
Caro(a) estudante,
"QBSUJSEFBHPSB
WBNPTDPNFBSBDSJBSOPTTPTQSQSJPTBMHPSJUNPT
FTQBP
onde acontece toda a mgica do mundo da programao. Mas precisamos
primeiramente entender como funciona a estrutura bsica do mesmo, que
muito simples e fcil, para depois test-los nos ambientes integrados de
desenvolvimentos vistos na aula passada.
4.1 Introduo
Os algoritmos so feitos para serem executados por mquinas, e sabemos
que as mquinas ainda esto muito longe de ter uma inteligncia comparada do ser humano.
Voc, ao estabelecer uma conversa com outra pessoa, usando a lngua portuguesa, pode no seguir todas as regras gramaticais que ela exige, mas,
mesmo assim, o dilogo acontece.
Veja o exemplo:
33
$PNPEFmOJSVNBMHPSJUNP
6NBMHPSJUNPNOJNPUFNQFMPNFOPTVNOPNF
VNBEFTDSJP
BJEFOUJmDBPEPJODJPFEPmNEPNFTNPF
MHJDP
VNDPNBOEP VNQBTTPBTFS
executado), pelo menos.
34
Lgica de Programao
t /PJOJDJBSPOPNFDPNVNONFSP
t Evitar uso de acentos e cedilhas.
A seguir temos alguns exemplos de nomes de algoritmos vlidos e no vlidos:
TABELA 4.1 - Exemplos de nomes de algoritmos
Objetivo do algoritmo
Nome no vlido
Calcular mdia
Nome vlido
CalcularMedia
VerificarMaiorNota
VerificarEndereco
Verificar endereo
Verificar-Endereo
2NmerosSoma
Soma2Numeros
Calcular $ da venda
Calcular$Venda
CalcularValorVenda
AlMundo
AloMundo
Fonte: Autores.
"TJOUBYFVTBEBQFMPQTFVEPDEJHPFQFMP+BWBQBSBEFmOJSPOPNFEFVN
BMHPSJUNPGPJWJTUPOBTmHVSBTF
SFTQFDUJWBNFOUF
NBTWBNPTSFW-los lado a lado agora:
5"#&-"%FmOJOEPPOPNFEPBMHPSJUNP
Pseudocdigo
Java
algoritmo "AloMundo"
Fonte: Autores.
Java
Escopo do
algoritmo
Escopo do
algoritmo
Fonte: Autores.
35
1FSDFCBRVFOPQTFVEPDEJHPFTUFYQMDJUBBEFMJNJUBPEPJODJPFEPmN
EPBMHPSJUNP+FN+BWBGPSBNVTBEBTBTDIBWFTQBSBEFmOJSPFTDPQP
Java
public class AloMundo
{
public static void main(String[] args)
{
System.out.print(Al mundo!);
}
}
Fonte: Autores.
36
Lgica de Programao
"QSJNFJSBEFmOFPOPNFclasse
NBTFTTFDPODFJUPEFDMBTTFTTFSWJTUP
na disciplina de Programao Orientada a Objetos. Neste momento, vamos
FOUFOEFSRVFTFKBBQFOBTBJEFOUJmDBPEPQSPHSBNB
OPDBTP$OR0XQGR.
A segunda estrutura um mtodo cujo conceito tambm ser abordado
a fundo somente em Orientao a Objetos. Neste momento, vamos considerar como sendo um subprograma, isto , um programa dentro de outro
programa.
Ento, no programa AloMundo em Java, mostrado na Tabela 4.4, temos um
subprograma chamado main (principal, em ingls) interno a ele e dois escoQPTEJTUJOUPT
KRVFBNCPTUNVNJODJPFmN EFMJNJUBEPTQPS\^
DPOTJEFSBEBVNBCPBQSUJDBEFQSPHSBNBPRVF
BPTFEFmOJSVNFTDPpo interno a outro, como aconteceu no exemplo, dar um espaamento direita (3 espaos ou mais) para deixar explcito que a estrutura main pertence
ao escopo de class. Isso o que chamamos de indentao:
TABELA 4.5 - Escopos e indentao em um cdigo Java
Escopo do
programa
AloMundo
Escopo do
subprograma
Main
Fonte: Autores.
4.2.4 Comentrios
Imagine que voc tenha desenvolvido um algoritmo bem complexo h um
ano, e, por acaso, voc precisa us-lo para resolver outro problema. Se o algoritmo no estiver documentado, voc certamente ter um trabalho enorme em compreend-lo novamente, perdendo assim um tempo precioso.
.BT
DBTPWPDPUFOIBEPDVNFOUBEP
TFSQPTTWFMJEFOUJmDBSPRVFFMFGB[
as estruturas de programao que foram usadas e o porqu, entre muitas
PVUSBT JOGPSNBFT UFJT BDFSDB EFMF
EF TVBT BMUFSBFT IJTUSJDP
F EPT
autores do mesmo.
6NBEBTNBOFJSBTNBJTTJNQMFT NBTOPBOJDB
EFEPDVNFOUBSTFVD-
37
38
Lgica de Programao
Fonte: Autores.
Fonte: Autores.
Resumo
Voc acaba de adquirir novos conhecimentos, pois, nesta aula, apontamos
DPNPEFmOJSVNBMHPSJUNP7JNPTRVF
QBSBDSJBSVNBMHPSJUNP
QSFDJTBNPT
dar um nome a ele dependendo do seu objetivo, e que esse nome deve estar
de acordo com os padres internacionais de nomenclatura de smbolos para
39
Atividades de aprendizagem
1. Crie um algoritmo que fornea a seguinte sada na tela do computador
(seria interessante para seu aprendizado, criar o algoritmo tanto em pseudoDEJHPRVBOUPFN+BWB
| Programa Al Mundo
|
| mundo da programao.
|
|
|
| Aproveite!!!
|
2. %PDVNFOUFPDEJHPDSJBEPBDJNBVTBOEPDPNFOUSJPT
3. Baseado(a) nas funes de algoritmos descritas abaixo, determine o possvel nome para cada um deles:
Funo do algoritmo
Nome
40
Lgica de Programao
Caro(a) estudante,
$PNPTFTFOUJVDSJBOEPFFYFDVUBOEPTFVQSJNFJSPQSPHSBNB /BQSYJNB
aula, trataremos das variveis e dos tipos de dado. Esperamos voc l!
41
Objetivos:
t DPODFJUVBSWBSJWFMFUJQPTEFEBEPT
t EJGFSFODJBSEBEPEFJOGPSNBP
t BQMJDBSBTSFHSBTQBSBBOPNFODMBUVSBEFWBSJWFJTF
t JEFOUJmDBS PT UJQPT EF EBEPT QSJNJUJWPT FYJTUFOUFT F VUJMJ[MPT
FNBMHPSJUNPT
TFKBFNQTFVEPDEJHP
TFKBFN+BWB
Caro(a) estudante,
Nesta aula, veremos um conceito primordial para o processamento de dados, que o de variveis. Vamos entender os mecanismos de funcionamento
das variveis nas linguagens de programao, mostrar como dar nome a elas
FEFmOJSPUJQPEFEBEPRVFFMBTBSNB[FOBN5BNCNWBNPTEFNPOTUSBSP
VTPEFWBSJWFJTUBOUPFNQTFVEPDEJHPRVBOUPFN+BWB
5.1 Introduo
Antes de iniciar os estudos sobre variveis, precisamos entender o conceito
de dado na computao. Segundo Puga e Rissetti (2009), dados so valores
que sero utilizados pelo algoritmo para a resoluo de um problema. Esses
valores podem ser fornecidos pelo usurio atravs de dispositivos de entrada
EFEBEPT
PVPSJHJOBEPTBQBSUJSEFPVUSPTQSPHSBNBT JODMVTJWFFMFQSQSJP
5.2 Variveis
Os dados de um algoritmo, para serem utilizados e processados, precisam
FTUBSQSFWJBNFOUFBSNB[FOBEPTOBNFNSJBEPDPNQVUBEPS"WBSJWFMFOUPTFSJBPOPNFEBEPBVNFTQBPEBNFNSJBRVFDPOUNPEBEPBTFS
utilizado pelo algoritmo.
43
Quando usamos uma varivel, na verdade, estamos buscando aquela inforNBPEBNFNSJBFQBTTBOEPBQBSBPQSPDFTTBEPSEPDPNQVUBEPS
QBSB
que este realize as operaes necessrias com aquele dado.
1PEFNPTBmSNBS
FOUP
RVFBTWBSJWFJTTPVUJMJ[BEBTQBSBSFQSFTFOUBSWBMPSFTHFOSJDPT
RVFQPEFSPTFSBDFTTBEPTFNPEJmDBEPTEFBDPSEPDPNB
MHJDBEPBMHPSJUNP
Proposta de nome
Nome
Nomenclatura vlida
Endereo de um cliente
endereo
Saldo da conta
contaSaldo
Nome do 2 dependente
2dependente
Email do funcionrio
Nome invlido, j que no pode ter caracteres especiais, no caso o -. O certo poderia
ser: email ou apenas mail.
A nota de um aluno
Situao
Fonte: Autores.
44
Lgica de Programao
Exemplo de dado
00000000
10010101
Varivel X
11000010
Varivel Z
00000000
11111111
...
...
1.073.741.824 bytes
ou
1 Gbyte
10101010
Exemplo de nomenclatura
Varivel Y
Fonte: Autores.
4FHVOEPB5BCFMB
PFOEFSFPEBNFNSJBBSNB[FOBBWBSJWFMDVKP
nome X. Esse endereo contm apenas bits F
NBT
QBSBOT
IVNBOPT
PRVFFMFTSFQSFTFOUBN 6NDPOKVOUPEFbitsQPEFSFQSFTFOUBSVNOmero, um texto, um som, uma imagem, entre muitos outros tipos de dado.
QPSFTTFNPUJWPRVF
RVBOEPEFmOJNPTVNBWBSJWFM
OFDFTTSJPEJ[FS
de que tipo ela para que o programa consiga converter esses bits no dado
que desejamos. O byte 10010101 pode tanto representar a letra A quanto
PONFSPPVPONFSP PQSJNFJSPbit pode representar o sinal positivo ou negativo).
*TUP
OPFYFNQMPBDJNB
VNOJDPbyte pode representar trs valores diferentes, dependendo do tipo de dado.
" EFmOJP EP UJQP EF EBEP EF VNB WBSJWFM QSJNPSEJBM QBSB HBSBOUJS B
resoluo do algoritmo. As linguagens de programao tm alguns tipos j
EFmOJEPTFNTVBFTUSVUVSBoFMFTTPDIBNBEPTEFUJQPTEFEBEPTQSJNJUJWPT
Os tipos de dados primitivos so:
t Literal:UJQPEFEBEPRVFQPEFSFDFCFSMFUSBT
ONFSPTFTNCPMPT&TTFT
tipos de dados no podem ser usados para fazer clculos, apenas para
45
Em Java
char
String
Lgico
byte
short
Inteiro
Real
Capacidade
Armazena um nico caractere
int
long
double
boolean
Fonte: http://docs.oracle.com/javase/7/docs/.
5.4.1 Pseudocdigo
&NQTFVEPDEJHP
t "EFDMBSBPEFWBSJWFJTEFWFTFSGFJUBBOUFTEFTFJOJDJBSPBMHPSJUNP
46
Lgica de Programao
t )VNBQBMBWSBSFTFSWBEBQBSBJEFOUJmDBSBEFDMBSBPEBTWBSJWFJT&N
VisualG var
t O nome da varivel que deve seguir as regras de nomenclatura explicaEBTBOUFSJPSNFOUF
t 0TJOBMEFEPJTQPOUPT
TFSWFQBSBTFQBSBSPUJQPEPOPNFEBWBSJWFM
t 5FNPTPUJQPEBWBSJWFM
t Cada varivel deve estar declarada em uma linha.
Seguindo essas premissas, temos a seguinte sintaxe e alguns exemplos para
TFEFDMBSBSWBSJWFMFNQTFVEPDEJHP
TABELA 5.3 - Sintaxe e exemplos de declarao de variveis em pseudocdigo.
Sintaxe
var
nomeDaVarivel: tipoDaVariavel
Exemplos
var
nome: caractere
idade: inteiro
salario: real
casado: logico
Fonte: autores
5.4.2 Java
Em Java:
t /PFYJTUFVNBQBMBWSBFTQFDmDBQBSBEFmOJSBEFDMBSBPEFVNBWBSJWFM6NBWBSJWFMQPEFTFSDSJBEBFNRVBMRVFSQBSUFEPDEJHP
NBTBT
boas prticas de programao recomendam que as variveis principais
TFKBNDSJBEBTBOUFSJPSNFOUFFEPDVNFOUBEBT
t Ao se declarar uma varivel, o tipo de dado vem antes do nome da vaSJWFM
t O nome da varivel deve seguir as regras de nomenclatura explicadas
BOUFSJPSNFOUF
t possvel declarar diversas variveis em uma linha, desde que sejam seQBSBEBTQPSQPOUPFWSHVMB
47
t 4FEJWFSTBTWBSJWFJTQPTTVFNPNFTNPUJQP
CBTUBEFmOJMPFFOVNFSBS
o nome de cada uma das variveis separado por vrgula.
Seguindo essas premissas, temos a seguinte sintaxe e alguns exemplos para
se declarar varivel em Java:
TABELA 5.4 - Sintaxe e exemplos de declarao de variveis em Java.
Sintaxe
tipoDaVariavel nomeDaVariavel;
Exemplos
String nome;
byte idade;
salario;
boolean casado;
int populacao, rebanho;
double resultado; int dias;
Fonte: autores
Resumo
Acabamos de estudar o conceito de variveis e tipos de dado, primordiais
para a elaborao de algoritmos. Juntamente com eles, mostramos como
nomear uma varivel, distinguir os tipos de dados primitivos existentes e,
QSJODJQBMNFOUF
DPNP VTMPT FN BMHPSJUNPT
TFKB FN QTFVEPDEJHP
TFKB
em Java.
Vamos praticar!
Atividades de aprendizagem
1. Assinale os nomes de variveis vlidas e invlidas. Quando invlida, informar o porqu:
a) XXX
b) a123
c) (A)
d) NOME
e) #66
f) dia/ano/ms
48
Lgica de Programao
g) 1abc
h) Ol Pessoal
i) a.b
j) c*d
2. Baseado(a) na representao da informao do que ser armazenado em
uma varivel, sugira um nome para a mesma e para o tipo de dado. Para
DBEBVN
VTFBTJOUBYFEPQTFVEPDEJHPFEP+BWB
O que ser armazenado?
Sintaxe pseudocdigo
Sintaxe Java
O salrio de um funcionrio
A nota e a mdia de um aluno
Os dias de atraso de uma prestao
O CPF de uma pessoa
Se a famlia tem casa prpria
Uma carta
O endereo completo do cliente
Se o produto novo ou usado
Caro(a) estudante,
Parabns! Esta foi a quinta aula da disciplina. Esperamos ter contribudo
QBSBTFVBQSFOEJ[BEP/BQSYJNBBVMB
BCPSEBSFNPTPTPQFSBEPSFTFFYpresses que envolvem as variveis. No perca!
49
Objetivos:
t SFDPOIFDFSPQFSBEPSFTBSJUNUJDPT
SFMBDJPOBJTFMHJDPT
t FNQSFHBSDPSSFUBNFOUFFTTFTPQFSBEPSFT
t EJTUJOHVJSFYQSFTTFTBSJUNUJDBTEFFYQSFTTFTMHJDBTF
t DSJBSFSFTPMWFSFYQSFTTFTBSJUNUJDBTFMHJDBT
Caro(a) estudante,
0VTPEFFYQSFTTFTNBUFNUJDBTFMHJDBTNVJUPJNQPSUBOUFQBSBTFSFsolver determinados problemas algortmicos. As expresses so formadas
por valores, variveis (operando) e operadores. Vamos explicar como criar
FTTBTFYQSFTTFT
EFmOJSPTPQFSBOEPTFPTPQFSBEPSFTFNVNBMHPSJUNPF
principalmente, como analisar previamente tais expresses.
6.1 Introduo
Um processador basicamente uma mquina que processa instrues de
armazenamento e recuperao de valores, faz clculos matemticos e efetua
comparao de valores.
Mas, para dizer ao computador como executar essas instrues necessrio
VUJMJ[BSPQFSBEPSFTFTQFDmDPTQBSBDSJBSFYQSFTTFTRVFQPTTBNTFSDBMDVMBdas pelo processador.
A seguir, iremos apresentar todos os tipos de operadores e como us-los
para formar expresses.
51
Atribuio em Java
String nome;
byte idade;
boolean casado;
int populacao, rebanho;
double resultado; int dias;
nome = "Joo & Silva";
idade = 40;
salario = 620.37;
casado = true;
populacao = 1200; rebanho = 80;
resultado = 8.5; dias = 10;
Fonte: autores
"HPSB
WBNPTGB[FSBMHVNBTDPOTJEFSBFTTPCSFPDEJHPBDJNB
t Por que o tipo literal (caractere e String) recebe valores entre aspas duplas?
52
Anlise de Sistemas
O uso de aspas duplas serve para delimitar um texto, que pode ter espaos
ou caracteres especiais. Usar um delimitador de texto uma prtica comum
nas linguagens de programao. No caso do Pascal so usadas as aspas
simples.
t Por que no uso aspas no nmero?
4FWPDVTBSBTQBTOPONFSP
PDPNQVUBEPSWBJFOUFOEFSRVFVNUFYUPF
OPVNONFSP
EPJTUJQPTEFEBEPDPNQMFUBNFOUFEJGFSFOUFT
t Por que o salrio tem um ponto (.) e no uma vrgula (,) no nmero?
Geralmente as linguagens de programao usam a lngua inglesa como
CBTF
F
M
PDBSBDUFSFRVFEFmOFPEFDJNBMPQPOUPFOPBWSHVMB
t O que aconteceria se tentasse atribuir um texto a um nmero ou
vice-versa?
7BSJWFJT EF VN UJQP EF EBEP T EFWFN SFDFCFS WBMPSFT EBRVFMF UJQP /B
maioria das linguagens de programao existem comandos que permitem
DPOWFSUFSVNUJQPQBSBPVUSP
QPSFYFNQMP
DPOWFSUFSVNUFYUPFNVNONFSPFWJDFWFSTB OTJSFNPTWFSJTTPNBJTBEJBOUF
Existem linguagens de
programao que possuem o
conceito de variveis dinmicas,
isto , podem receber valores de
diversos tipos fazendo, inclusive,
a converso automtica de um
para outro. Entretanto, via de
regra, recomendado definir
tipos nas variveis. Linguagens
que obrigam a definio de tipos
em variveis so chamadas de
fortemente tipificadas.
Exemplo de expresso
Funo
Soma o valor de a e b
a * b
Multiplica a por b
a / b
Divide a por b
mod
a MOD b (pseudocdigo)
a % b (Java)
53
(Java)
Incrementa o valor de a em 1.
retorna o valor de a antes de incrementar. primeiro incrementa
para depois retornar o valor de a.
(Java)
Fonte: autores
Nem todos os operadores aritmticos podem ser representados por um smbolo em linguagens de programao. Funes como exponenciao, raiz,
TFOP
DPTTFOP
UBOHFOUF
FOUSFNVJUPTPVUSPT
TPEFmOJEBTQPSJOTUSVFT
FTQFDmDBTFNDBEBMJOHVBHFN
Exemplo de expresso
Funo
>
a > b
>=
a >= b
<
a < b
<=
a <= b
a = b (pseudocdigo)
a == b (Java)
<>
a <> b (pseudocdigo)
a != b (Java)
Fonte: autores
QPTTWFMDPODBUFOBSFYQSFTTFTMHJDBTDSJBOEPPVUSBTFYQSFTTFTMHJDBT
NBJT DPNQMFYBT 1BSB DPODBUFOBS OFDFTTSJP VUJMJ[BS PQFSBEPSFT MHJDPT
que podem ser:
54
Lgica de Programao
Exemplo de expresso
Funo
a E b (pseudocdigo)
a && b (Java)
OU
a OU b (pseudocdigo)
a || b (Java)
NO
NAO a (pseudocdigo)
!a (Java)
Fonte: autores
55
"PSEFNEFQSFDFEODJBFOUSFPTPQFSBEPSFTBSJUNUJDPTFMHJDPT
TABELA 6.5 - Ordem de precedncia
Prioridade
Operador aritmtico
Operador lgico
NO
MOD
OU
Fonte: autores
Operadores
Parnteses
Operadores aritmticos
Operadores relacionais
Operadores lgicos
Fonte: autores
56
Lgica de Programao
(;(03/2
(3 + 3
6 * 2 <= 9 E (3 + 2 <= 15) OU 15 MOD 3 = 0
6 * 2 <= 9 E (5 <= 15) OU 15 MOD 3 = 0
6 * 2 <= 9 E falso OU 15 MOD 3 = 0
12 <= 9 E falso OU 15 MOD 3 = 0
12 <= 9 E falso OU 0 = 0
falso E falso OU 0 = 0
falso E falso OU verdadeiro
falso OU verdadeiro
verdadeiro
(;(03/2
Os conceitos de operadores, operando e expresses sero de suma imporUODJBQBSBBFMBCPSBPEFBMHPSJUNPTNBJTDPNQMFYPT RVFQSFWFFNJOmeras possibilidades de execuo dependendo de cada caso analisado. Vamos ao resumo.
Resumo
Nesta aula, estudamos os conceitos de operadores, operandos e expresses,
RVFQPEFNTFSBSJUNUJDBT
SFMBDJPOBJTFMHJDBT
FPNBJTJNQPSUBOUFNPTtramos como resolv-las. Agora sua vez praticar! Vamos l!
57
Atividades de aprendizagem
1.0RVFPQFSBOEP
PQFSBEPSFVNBFYQSFTTP &YFNQMJmRVF
2. 2VBJTPTUJQPTEFFYQSFTTPFYJTUFOUFT %VNFYFNQMPEFDBEBVNB
3. Sabendo que a = 2, b = 5 e c = 3, calcule o valor resultante das seguintes
expresses:
a) b * 2 a * c
b)
c)
d)
e)
4. Sabendo v = verdadeiro e f = falso, calcule o valor resultante das seguintes
expresses:
a) v E f OU f E v
b) (v E f) OU (f E v)
c) (NO (v E f)) E (f E v)
d) NO ((v E f) OU (f E v))
e) NO ((NO(v E f)) E (NO(f E v)))
5. Sabendo que a = 1, b = 2 e c = 3, demonstre a execuo passo a passo
da seguinte expresso:
!
= 1 E 4 MOD a = 0)
58
Lgica de Programao
Caro(a) estudante,
'JOBMJ[BNPTNBJTVNBBVMBEBEJTDJQMJOB-HJDBEF1SPHSBNBP
/BQSYJNB
BCPSEBSFNPTBTFTUSVUVSBTTFRVFODJBJT
59
Objetivos:
t DSJBSVNBFTUSVUVSBTFRVFODJBMFNVNBMHPSJUNPF
t reconhecer e usar corretamente os comandos de entrada e de
sada.
Caro(a) estudante,
Finalmente lhe ser oportunizada a criao de um programa completo,
VTBOEPWBSJWFJT
BUSJCVJOEPFMFOEPTFVTSFTQFDUJWPTWBMPSFT
EFmOJOEPFYQSFTTFT BSJUNUJDBT F MHJDBT F
QPS mN
WPD BQSFOEFS B FTUSVUVSBS TFquencialmente um algoritmo em VisualG e Java, a ler dados do usurio e a
mostrar o resultado do processamento para o mesmo (a informao resultante). Aproveite bem a aula e se prepare, pois teremos muitas atividades.
7.1 Introduo
A arquitetura bsica dos computadores, baseada na arquitetura de John von
/FVNBOO
BUIPKFUFNJOnVODJBEJSFUBOBTMJOHVBHFOTEFQSPHSBNBP
Entretanto, o estilo (modelo ou paradigma) de programao sofreu algumas
evolues, de um formato simples (sem muitos recursos e de difcil percepo por parte dos leigos) da dcada de 50, para um formato mais completo
(com muitos recursos e de fcil entendimento) nos dias atuais.
De acordo com Manzano e Oliveira (2009, p. 437), os paradigmas de programao passaram por cinco fases evolucionrias, sendo elas:
t 1SPHSBNBPUSBEJDJPOBM
t 1SPHSBNBPFTUSVUVSBEB
t 1SPHSBNBPNPEVMBS
61
t 1SPHSBNBPDPNBCTUSBPEFEBEPTF
t Programao orientada a objetos.
A programao estruturada
uma das variantes da linguagem
imperativa, que baseada na
arquitetura von Neumann, na
qual tanto os dados quanto os
programas so armazenados na
mesma memria, que, por sua
vez, separada da CPU (Unidade
de Processamento de Dados),
necessitando, assim, que tanto
os dados quanto as instrues
sejam transmitidos da memria
para a CPU e vice-versa.
62
Lgica de Programao
muito comum.
Nesse momento, subtende-se que o comando de sada o monitor do computador.
0OPNFEPDPNBOEPEFTBEBQBESPFNQTFVEPDEJHPEscreva() e
em Java System.out.print(). Existem outras variantes desse comando.
As principais so:
TABELA 7.1 - Variantes do comando Escreva
Funo
Pseusocdigo
Java
Escreve o dado
Escreva()
print().
Escreval()
println().
printf().
Fonte: autores
63
7FKBPDEJHPFBOBMJTFBTJOTUSVFTQBTTBEBTOBSFBEFUSBCBMIPFBTBEB
do mesmo na janela de execuo. Perceba que:
t Quando usei o comando Escreval, ele escreve o texto na sada e pula
VNBMJOIB
t Quando usei o comando Escreva, ele escreve o texto na sada, mas no
QVMBVNBMJOIB
t 1BSBFTDSFWFSPUFYUP
EFMJNJUFJPNFTNPDPNBTQBTEVQMBT iw
t 2VBOEPOPVTPBTBTQBTEVQMBT
TJHOJmDBRVFRVFSPFTDSFWFSPWBMPSEF
VNBWBSJWFMF
t Quando quero mesclar texto com variveis, fao a concatenao deles
com o sinal de adio (+).
"HPSB
WBNPTFTDSFWFSFTTFNFTNPDEJHPFN+BWB
OP&DMJQTF
64
Lgica de Programao
65
66
Lgica de Programao
Percebeu que, para cada tipo de dado que voc for ler em Java, voc precisa
EFVNDPNBOEPEJGFSFOUF &Pprintf
RVFBHPSBQPEFNPTEFmOJSFNVN
OJDPUFYUPDPNQBSNFUSPT TQBSBUFYUP
EQBSBJOUFJSP
GQBSBSFBM
que sero substitudos por valores de variveis.
67
Figura 7.6: Algoritmo completo em Java que calcula o salrio lquido de um funcionrio.
Fonte: Autores.
"QFOBTVNDPNFOUSJPOPDEJHPEB'JHVSBPDBSBDUFSF=O
OPDPNBOEP
de sada printf, faz com que pule uma linha.
Agora, voc poder criar os algoritmos usando a estrutura de sequncia
(instrues em uma sequncia linear) e aplicar todas as premissas necessrias
de um programa padro: a entrada, o processamento e a sada de dados.
Resumo
Voc complementou seus conhecimentos bsicos acerca da elaborao de
algoritmos. Nesta aula, tratamos da estrutura sequencial em um algoritmo,
ou seja, um conjunto de aes executadas em sequncia linear. Vimos tamCNPTDPNBOEPTEFTBEBFFOUSBEBEFEBEPTFNQTFVEPDEJHPFFN+BWB
&
mOBMNFOUF
NPTUSBNPTVNBMHPSJUNPDPNQMFUPRVFDBMDVMBPTBMSJPMRVJEPEFVNGVODJPOSJP
FNQTFVEPDEJHPFFN+BWB
/BTBUJWJEBEFTEFBQSFOEJ[BHFNEFTUBBVMB
UFNPTVNONFSPCFNNBJPS
de exerccios para que voc possa praticar. Lembre-se: aprender a progra-
68
Lgica de Programao
Atividades de aprendizagem
1.'BBVNBMHPSJUNPFN7JTVBM(PVFN+BWBRVFSFDFCBUSTONFSPTJOUFJros e calcule a soma deles.
2.'BBVNBMHPSJUNPFN7JTVBM(PVFN+BWBRVFSFDFCBRVBUSPONFSPT
reais e calcule a mdia deles.
3. Faa um algoritmo em VisualG ou em Java que receba duas notas de prova, seus respectivos pesos e calcule a mdia ponderada deles.
4. Faa um algoritmo em VisualG ou em Java que receba o salrio inicial, a
porcentagem de aumento e calcule o novo salrio.
5. Faa um algoritmo em VisualG ou em Java que receba o salrio-base e a
quantidade de dependentes, e calcule o salrio lquido sabendo que, para
DBEB mMIP
P GVODJPOSJP SFDFCF P TBMSJP GBNMJB EF 3
F
BP mOBM
QBHBJNQPTUPEFSFOEBEF
TPCSFPTBMSJPCSVUP
6. Faa um algoritmo em VisualG ou em Java que receba os valores antigo
e novo de um produto, e calcule a porcentagem de aumento que o mesmo
teve.
7. Faa um algoritmo em VisualG ou em Java que receba o tamanho do
raio de um crculo e faa o clculo do dimetro, do permetro e da rea do
crculo. Calcule tambm o volume se esse crculo fosse a base para se criar
uma esfera.
8. Faa um algoritmo em VisualG ou em Java que receba a velocidade de
um veculo em Km/h (quilmetros por hora) e a transforme em m/s (metros
por segundo).
Caro(a) estudante,
Parabns por ter completado seus conhecimentos bsicos acerca da elaborao de algoritmos. Agora, poder cri-los usando a estrutura de sequncia
(instrues em uma sequncia linear) e aplicar todas as premissas necessrias
de um programa padro: a entrada, o processamento e a sada de dados. Na
QSYJNBBVMB
BCPSEBSFNPTBTFTUSVUVSBTEFEFDJTP"UM
69
Caro(a) estudante,
Nas aulas anteriores resolvemos problemas de complexidade bem limitada,
baseadas em estruturas sequenciais simples. Nesta aula, voc ir estudar
a elaborao de algoritmos mais complexos, saindo do tradicional passo a
QBTTPMJOFBSQBSBnVYPTEFFYFDVPRVFQPEFNTPGSFSEFTWJPTOBTFRVODJB
CBTFBEPTFNFYQSFTTFTMHJDBT
JTUP
PDPNQVUBEPSTFSDBQB[EFUPNBS
VNBEFDJTPTPCSFPRVFTFSFYFDVUBEPPVOP*OUFSFTTBOUF
OP &OUP
WBNPTFTUVEBSDPNCBTUBOUFBmODPFTUBBVMB
8.1 Introduo
Estrutura de deciso ou estrutura condicional basicamente um mecanismo
DBQB[ EF WFSJmDBS QSFWJBNFOUF EFUFSNJOBEBT DPOEJFT
CBTFBEBT FN FYQSFTTFTMHJDBT
QBSBBSFBMJ[BPEFVNBPVNBJTJOTUSVFT
"FYQSFTTPMHJDBFNVNBFTUSVUVSBEFEFDJTPPNFDBOJTNPVTBEPQBSB
RVFPDPNQVUBEPSUPNFTVBEFDJTP$BTPFMBTFKBWFSEBEFJSB
PnVYPEF
FYFDVPEPBMHPSJUNPTFHVFVNDBNJOIPDBTPTFKBGBMTB
TFHVFPVUSP
71
72
Lgica de Programao
"TJOUBYFEBFTUSVUVSBDPOEJDJPOBM4F4FOPUBOUPFNQTFVEPDEJHPRVBOto em Java :
TABELA 8.1 - Sintaxe da estrutura condicional Se
Pseudocdigo
Se (expresso lgica) Ento
Comando ou Bloco de Comandos
Fimse
Java
// Um nico comando a ser controlado
if(expresso lgica)
Comando;
// Vrios comandos a serem
// controlados
if(expresso lgica) {
Bloco de Comandos;
}
Fonte: Autores.
73
"OBMJTFPDEJHPFWFSJmRVFRVF
t $BTP B FYQSFTTP MHJDB salarioBruto > 1500) seja verdadeira,
FOUPPJNQPTUPEFSFOEBTFSDBMDVMBEP MJOIBTB
t $BTPBFYQSFTTPMHJDB salarioBruto > 1500) seja falsa, ento o
imposto de renda no ser calculado, e ele continuar sendo zero (da
maneira que ele foi inicializado na linha 12).
/PTFHVOEPDBTP
RVBOEPBFYQSFTTPMHJDBGBMTB
PDPSSFVNEFTWJPEP
nVYPEPBMHPSJUNP
GB[FOEPDPNRVFPDPNBOEPEBMJOIBOPTFKBFYFDVtado de acordo com a sequncia do algoritmo. Muito legal esse mecanismo
EFDPOUSPMFEFnVYP
OP "HPSBWBNPTWFSPNFTNPBMHPSJUNPFN+BWB
74
Lgica de Programao
5BOUPPBMHPSJUNPFNQTFVEPDEJHPRVBOUPFN+BWBEFWFSPUFSBTNFTNBT
sadas:
TABELA 8.2 - Exemplos de sada de um algoritmo com a estrutura condicional Se.
(salarioBruto > 1500) for:
Falso
Verdadeiro
Fonte: Autores.
75
Java
if (expresso lgica)
Comando1;
else
Comando2;
if (expresso lgica) {
Bloco de Comandos 1;
} else {
Bloco de Comandos 2;
}
Fonte: Autores.
"OBMJTFPDEJHPFWFSJmRVF
76
Lgica de Programao
t 1BSBTBCFSTFVNONFSPQBS
CBTUBVTBSVNBQSPQSJFEBEFNBUFNUJDB
DBTPPSFTUPEBEJWJTPEFTTFONFSPQPSTFKB
FOUPFMFQBS
t "OBMPHJDBNFOUF
TFPSFTUPEBEJWJTPEFRVBMRVFSONFSPQPSGPS
TJHOJmDBRVFFMFNQBS
O mesmo algoritmo em Java seria:
77
&N QTFVEPDEJHP
FTTB FTUSVUVSB FODBEFBEB OBEB NBJT EP RVF VN 4F
dentro de outro Se, mas, em Java, possvel aninhar as estruturas Se como
TFGPTTFNVNTDPNBOEP7FKBPFYFNQMPBTFHVJS
TABELA 8.4 - Sintaxe da estrutura condicional Se Seno - Se.
Pseudocdigo
Se (expresso lgica 1) Ento
Bloco de Comandos 1
Seno
Se (expresso lgica 2) Ento
Bloco de Comandos 2
Seno
...
...
Se (expresso lgica N) Ento
Bloco de Comandos N
Seno
Bloco de Comandos Seno
Fimse
Fimse
Fimse
Java
if (expresso lgica 1) {
Bloco de Comandos 1;
} else if (expresso lgica 2) {
Bloco de Comandos 2;
} else if (expresso lgica 3) {
Bloco de Comandos 3;
} else if (expresso lgica 4) {
Bloco de Comandos 4;
} else if... {
...
} else if(expresso lgica N) {
Bloco de Comandos N;
} else {
Bloco de Comandos Seno
}
Fonte: Autores.
78
Lgica de Programao
79
80
Lgica de Programao
Resumo
Adicionamos nesta aula conhecimentos importantssimos para a elaborao
de algoritmos mais complexos. Tratamos das estruturas de deciso simples,
compostas e encadeadas. Vimos que a estrutura Se a mais simples, pois
IBQFOBTVNEFTWJPEFnVYPOBFYFDVPEPBMHPSJUNP&TTFEFTWJPFTU
condicionado a uma expresso booleana: quando verdadeira, no h desvio,
mas, caso seja falsa, o desvio efetuado. A estrutura de deciso composta
Se EntowNBJTDPNQMFUB
QPJTQFSNJUFEPJTnVYPTEFFYFDVPEPBMHPritmo, um quando a expresso booleana for verdadeira e outra para quando
for falsa. J a estrutura encadeada Se - Seno - Se a mais complexa,
QPJTQFSNJUFPFODBEFBNFOUPEFVNTFMPHPBQTPSeno de outro Se,
isto, possvel encadear um Se dentro de outro, formando, assim, uma
OJDBFTUSVUVSB
"TTJNDPNPOBBVMBBOUFSJPS
UFNPTVNONFSPNBJPSEFFYFSDDJPT7BNPT
praticar!
Atividades de aprendizagem
1. 'BB VN BMHPSJUNP FN 7JTVBM( PV FN +BWB RVF
EBEPT EPJT ONFSPT
mostre qual o maior deles.
2. 'BBVNBMHPSJUNPFN7JTVBM(PVFN+BWBRVF
EBEPVNONFSP
WFSJmque se o mesmo divisvel por 3.
3. Faa um algoritmo em VisualG ou em Java que, dado o tamanho de trs
retas, seja possvel construir um tringulo com elas.
4. 'BBVNBMHPSJUNPFN7JTVBM(PVFN+BWBRVFEBEPVNONFSP
WFSJmque se o mesmo divisvel por 3 e 4, mas que no seja divisvel por 5.
5. 'BB VN BMHPSJUNP FN 7JTVBM( PV FN +BWB RVF
EBEPT UST ONFSPT
mostre-os -em ordem crescente.
6. Faa um algoritmo em VisualG ou em Java que, dado o salrio bruto de
uma pessoa, calcule o salrio lquido sabendo que h o desconto de dois
impostos, de acordo com a tabela abaixo:
81
Tabela IRPF
Salrio at R$ 1.500,00: 0% de imposto,
Salrio at R$ 3.000,00: 15% de imposto,
Salrio acima de R$ 3.000,00: 27,5% de imposto,
Tabela INSS
Imposto fixo de 11% do salrio, sendo que o total do
imposto no pode ser superior a R$ 400,00.
Ol, viu como possvel um computador tomar decises e assim executar taSFGBTNBJTDPNQMFYBT .VJUPMFHBM
OP /BQSYJNBBVMB
WPDJSDPNQMFmentar os seus conhecimentos de algoritmos com as estruturas de seleo,
VNDPODFJUPCFNQBSFDJEPDPNPEBFTUSVUVSBEFEFDJTP"UBQSYJNB
82
Lgica de Programao
Objetivos:
t SFDPOIFDFSVNBFTUSVUVSBEFTFMFPF
t aplicar estruturas de seleo em algoritmos.
Caro(a) estudante,
Trataremos agora da estrutura de seleo, que uma estrutura complemenUBSTFTUSVUVSBTEFEFDJTP
JTTPQPSRVFFMBDBQB[EFEFDJEJSRVBMnVYPEF
comandos executar, mas usando como parmetro o valor de uma varivel,
FNWF[EPSFTVMUBEPEFVNBFYQSFTTPMHJDB
9.1 Introduo
A estrutura de seleo muito utilizada em programao, pois serve para
controlar vrias aes diferentes, de acordo com o valor de um parmetro
WBSJWFM
EFmOJEPEFOUSPEFMF%JGFSFOUFNFOUFEBTFTUSVUVSBTEFEFDJTP
B
EFTFMFPUFNONFSPQSEFmOJEPEFFTDPMIBTQPTTWFJT
F
DPOTFRVFOUFmente, de caminhos possveis.
"JOTUSVPVTBEBQBSBEFmOJSVNBFTUSVUVSBEFTFMFP
t &TDPMIBOP7JTVBM(
t switch no Java.
83
1"
1
2"
2
3"
3
N"
N
OutroCaso
Java
switch (variavel) {
case valorInteiro1:
Bloco de Comandos
break;
case valorInteiro2:
Bloco de Comandos
break;
case ...:
case valorInteiroN:
Bloco de Comandos
break;
default:
Bloco de Comandos
break;
}
1;
1;
N;
default;
Fonte: Autores.
84
Lgica de Programao
85
$PN FTTB FTUSVUVSB
mDB GDJM NBOJQVMBS WSJPT nVYPT EF DPNBOEPT
EFTEF RVF DPOTJHBNPT RVBOUJmDBS BT PQFT QPTTWFJT EF FYFDVP TFN VTBS
FYQSFTTFTMHJDBT
VTBOEPTPNFOUFWBMPSFTEFWBSJWFJT"HPSB
WBNPTBP
resumo da aula.
Resumo
Nesta aula, vimos mais uma estrutura de linguagem, a de seleo. MostraNPTRVFBFTUSVUVSBEFTFMFPQFSNJUFNBOJQVMBSWSJPTnVYPTEFDPNBOdos, usando como parmetro o valor de uma varivel. Agora sua vez de
praticar.
86
Lgica de Programao
Atividades de aprendizagem
1. Faa um algoritmo em VisualG ou em Java que use a estrutura de seleo
OBTFHVJOUFTJUVBPEBEPVNONFSPEFB
NPTUSBSPOPNFEPNT
DPSSFTQPOEFOUF$BTPPVTVSJPOPEJHJUFFTTFONFSP
NPTUSBSVNBNFOsagem de erro.
2. Faa um algoritmo em VisualG que use a estrutura de seleo neste caso:
EBEPPOPNFEFVNB6OJEBEF'FEFSBUJWBEP#SBTJMo6'
FTDSFWBBDBQJUBM
dessa UF. Caso o usurio informe uma UF no existente, mostrar uma mensagem de erro.
3. Faa um algoritmo em VisualG ou em Java que, sabendo sua posio em
um campeonato, escreva as seguintes mensagens:
t 1 colocado: Parabns, voc o melhor.
t 2 colocado: Parabns, voc conseguiu.
t 3 colocado: Parabns, voc quase chegou l.
t 4 colocado em diante: Parabns, o importante competir.
4. 'BB VN BMHPSJUNP FN 7JTVBM( PV FN +BWB RVF EBEPT EPJT ONFSPT
mostre um menu de opes em que voc possa fazer as seguintes escolhas:
t 4PNBSPTEPJTONFSPT
t .VMUJQMJDBSPTEPJTONFSPT
t 4VCUSBJSPTEPJTONFSPT
t %JWJEJSPTEPJTONFSPTF
t $BMDVMBSPONFSPFMFWBEPBP QPTTWFMTPNFOUFFN+BWBoOFDFTsrio pesquisar sobre as funes matemticas na linguagem).
87
Caro(a) estudante,
&TUBNPTDIFHBOEPBPmOBMEBEJTDJQMJOB-HJDBEF1SPHSBNBP"HPSB
T
GBMUBNBJTVNBBVMBQBSBGFDIBSPDPOUFEPOFDFTTSJPQBSBRVFWPDDPOTJHBEFTFOWPMWFSBMHPSJUNPEFBMUBRVBMJEBEF/BQSYJNBBVMB
WFSFNPTVNB
estrutura muito importante na programao, que permite executar um conjunto de comandos mais de uma vez. At mais!
88
Lgica de Programao
Objetivos:
t SFDPOIFDFSVNBFTUSVUVSBEFSFQFUJP
t JEFOUJmDBSPTUJQPTEFFTUSVUVSBTEFSFQFUJPF
t aplicar estruturas de repetio em algoritmos.
Caro(a)estudante,
+UJWFNPTBPQPSUVOJEBEFEFFTUVEBSBMHPSJUNPTTPmTUJDBEPT7BNPT
OFTUF
momento, ampliar ainda mais seus conhecimentos, apresentando algumas
tcnicas de programao que possibilitem repetir um bloco de comandos
WSJBTWF[FT7BNPTBPDPOUFEP
10.1 Introduo
Em nosso cotidiano comum executarmos a mesma ao repetitivamente
BUDIFHBSBVNPCKFUJWP
QPSFYFNQMP
mYBSVNQSFHPOBNBEFJSB
RVBOEP
UFNPTRVFCBUFSOPQSFHPSFQFUJEBTWF[FTBURVFFMFFTUFKBmYPPTVmDJFOUF
para no cair.
Esse tipo de situao tambm muito comum na programao, onde se faz
necessrio executar o mesmo conjunto de comandos mais de uma vez para
chegar ao resultado desejado.
Se precisssemos calcular a mdia mais de uma vez, por exemplo, teramos
que executar (reiniciar) o programa CalcularMedia vrias vezes, uma ao
invivel ou, no mnimo, inconveniente.
Para resolver problemas como esse que as linguagens de programao
oferecem as estruturas de repetio (ou looping).
89
H um tempo, o programa
rodava no mesmo espao de
memria e consumia o mesmo
conjunto de recursos que o
sistema operacional. Essa
arquitetura de gerenciamento
de processos (programas)
era complicada, pois um
determinado problema no seu
programa poderia afetar todo o
computador.
Atualmente, nos sistemas
operacionais modernos, os
programas rodam em uma rea
protegida (mquinas virtuais) e,
caso haja algum problema nele,
apenas o programa em questo
afetado, deixando o resto do
ambiente computacional seguro
(pelo menos deveria ser assim
o funcionamento, mas at hoje
vemos alguns travamentos em
nossos computadores).
A quantidade de vezes a ser repetido pode ser ou no previamente conheciEB
NBTDFSUBNFOUFEFWFUFSVNMJNJUF TFSmOJUP
4FWPDOPHBSBOUJSRVF
a repetio termine em algum momento, o seu algoritmo entra em loop
JOmOJUP, isto , ele para de funcionar, podendo at travar o computador, j
que consume muitos recursos do equipamento.
10.2.1 Para
A principal caracterstica da estrutura de repetio Para que ela executa
VNMBPEFSFQFUJPQPSVNONFSPQSFEFmOJEPEFWF[FT1BSBUBOUP
BFTtrutura ParaUFNPBVYMJPEBmHVSBEPcontador, uma varivel inteira, que
UFNVNWBMPSJOJDJBMFEFWFDIFHBSBVNWBMPSmOBM
1BSB FYFNQMJmDBS FTTF DPODFJUP
JNBHJOF RVF TFV USFJOBEPS QFB QBSB RVF
voc faa 10 abdominais. O que mais importante para voc conseguir fa[FSFTTFFYFSDDJP 4FWPDSFTQPOEFViFTUBSFNGPSNBw
BQFTBSEFUFSDFSUB
relevncia, essa no a resposta correta. O mais importante nesse caso
saber contar at 10.
Outro aspecto importante do contador a forma de contar. Na estrutura
Para possvel contar em ordem crescente (1, 2, 3..., 10), em forma decrescente (10, 9, 8,..., 1), pulando alguns passos (0, 2, 4, 6), entre muitas outras
maneiras.
A sintaxe da estrutura de repetio ParaFNQTFVEPDEJHP
para <contador> de <valorInicial> ate <valorFinal> [passo] faca
<bloco de comandos>
90
Lgica de Programao
Onde:
t contadorVNBWBSJWFMEPUJQPJOUFJSPRVFDPOUSPMBPONFSPEFSFpeties do lao.
t valorInicial:JEFOUJmDBPWBMPSJOJDJBMEPDPOUBEPS
t valorFinal:JEFOUJmDBPWBMPSmOBMEPDPOUBEPS
OPNPNFOUPRVFPMBP
interrompido.
t passo: opcional, mas, quando presente, precedida pela palavra passo,
VNBFYQSFTTPRVFFTQFDJmDBPJODSFNFOUPRVFTFSBDSFTDFOUBEP
varivel contadora em cada repetio do lao. Exemplo: passo 1 (a cada
QBTTPJODSFNFOUBPWBMPSEPDPOUBEPSoFTTFPQBESP
QPSJTTPQPEF
TFSPNJUJEPpasso 5 (a cada passo incrementa em 5 o valor do contaEPS
PV (a cada passo diminui em 2 o valor do contador).
Como exemplos de sintaxe, temos:
Algoritmo "ExemplosPara"
var i: inteiro
inicio
// contar de 1 at 10
para i de 1 ate 10 faca
escreva (j:3)
// contar de 10 at 1
para i de 10 ate 1 passofaca
escreva (j:3)
91
Onde:
t valor inicial: uma varivel (contador) do tipo inteiro que controla o
ONFSPEFSFQFUJFTEPMBP
t condio de parada:VNBFYQSFTTPMHJDBRVF
FORVBOUPGPSWFSEBdeira, o lao (loop) acontece. Quando a expresso booleana for falsa, a
repetio para.
t incremento: uma expresso aritmtica que indica o incremento ou
decremento da varivel contadora.
Como exemplos de sintaxe, temos:
// contar de 1 at 10
for
System.out.println(i);
}
// contar 10 vezes
for
System.out.println(i);
}
// contar de 10 at 1
for
System.out.println(i);
}
// mostrar os nmeros pares menores que 100
for
System.out.println(i);
}
Figura 10.4: Exemplos da estrutura Para em Java.
Fonte: Autores.
92
Lgica de Programao
&N+BWB PQSPHSBNBEBmHVSBmDBSJBEBTFHVJOUFNBOFJSB
93
10.2.2 Enquanto
A estrutura de repetio EnquantoDPNVNFOUFVTBEBRVBOEPPONFSP
de vezes que um bloco de comandos dever ser executado no conhecido,
diferentemente do Para
RVFQSFEFmOJEP
Explicando melhor, o comando Para do tipo faa 10 abdominais e o En
quanto do tipo faa abdominais enquanto no estiver cansado. Perceba
que, no segundo tipo, no possvel precisar a quantidade de abdominais
que a pessoa ir fazer.
&TTFUJQPEFFTUSVUVSBTQPTTWFMQPSRVFFYJTUFVNUFTUFMHJDPOPJODJPEP
comando EnquantoFTTFDPNBOEPQSJNFJSPBWBMJBVNBFYQSFTTPMHJDBo
DBTPFMBTFKBWFSEBEFJSB
GB[BSFQFUJPEPDEJHPDBTPTFKBGBMTB
FMBQBSB
a repetio, saindo, assim, do loop.
A sintaxe da estrutura de repetio EnquantoFNQTFVEPDEJHP
Enquanto <expresso lgica> faca
<bloco de comandos>
FimEnquanto
Figura 10.7: Sintaxe do comando Enquanto.
Fonte: Autores.
Onde:
t Expresso lgica: uma expresso que, enquanto for verdadeira, perNJUFBFYFDVPEPCMPDPEFDPNBOEPT
NBT
BPmDBSGBMTB
PnVYPEF
execuo do algoritmo sai da estrutura de repetio, parando essa atividade.
Como exemplos de sintaxe, temos:
94
Lgica de Programao
Algoritmo "ExemplosEnquanto"
var a, b: inteiro
Inicio
a := 10
b := 20
// o loop ir executar enquanto a for menor ou igual a b
0QBQFMEBFYQSFTTPMHJDBOPGVODJPOBNFOUPEBFTUSVUVSBwhile segue os
NFTNPTQSJODQJPTNPTUSBEPTOBWFSTPFNQTFVEPDEJHP
Como exemplos de sintaxe, temos:
int a = 10;
int b = 20;
// o loop ir executar enquanto a for menor ou igual a b
while(a <= b) {
// incrementa o valor de a em 1
// decrementa o valor de b em 1
}
95
&N+BWB PQSPHSBNBEBmHVSBmDBSJBEBTFHVJOUFNBOFJSB
96
Lgica de Programao
Onde:
t Expresso lgica: uma expresso que, enquanto for falsa permite a
FYFDVP EP CMPDP EF DPNBOEPT
NBT
BP mDBS WFSEBEFJSB
P nVYP EF
execuo do algoritmo sai da estrutura de repetio.
A seguir temos um exemplo da sintaxe do comando Faa no Java.
97
do {
<bloco de comandos>;
} while (expresso lgica); // repete enquanto a ex
presso for verdadeira
Figura 10.14: Sintaxe do comando do.
Fonte: Autores.
Onde:
t Expresso lgica: uma expresso que, enquanto for verdadeira, perNJUFBFYFDVPEPCMPDPEFDPNBOEPT
NBT
BPmDBSGBMTB
JOUFSSPNQJEBFPnVYPEFFYFDVPEPBMHPSJUNPTBJEBFTUSVUVSBEFSFQFUJP
Para entender melhor as estruturas de repetio Repita e Faa, vamos a
um exemplo prtico:
Baseado no exemplo mostrado no item 9.2.2, crie um menu de comandos
que mostre trs mensagens, de acordo com a opo escolhida: Bom dia, Boa
Tarde ou Boa Noite, e tenha uma 4 opo perguntando se o usurio deseja
sair do programa.
98
Lgica de Programao
&N+BWB PQSPHSBNBmDBSJBEBTFHVJOUFNBOFJSB
99
Para
Enquanto
Faa
Repita
Usa contador
Sim
Opcional
Opcional
Opcional
Sim
Depende
Depende
Depende
Sim
Sim
No
No
No
No
Sim
Sim
Sim
Sim
Sim
No
No
No
No
Sim
Fonte: Autores.
Resumo
&TTBGPJBOPTTBMUJNBBVMB7PDFTUVEPVBTFTUSVUVSBTEFSFQFUJPQBSB
aperfeioar determinados tipos de processo. Mostramos que, na estrutura
de deciso, o computador executa o mesmo bloco de comando quantas
WF[FTGPSFNOFDFTTSJBT
CBTFBEPFNDPOUSPMFTCFNEFmOJEPTEFSFQFUJP
para se chegar ao resultado pretendido.
/PTFFTRVFBEFSFBMJ[BSBTBUJWJEBEFTFTQFDmDBTEFTUBBVMBQBSBVNNFlhor entendimento do assunto abordado.
Atividades de aprendizagem
1. Faa um algoritmo em VisualG ou em Java que calcule o saldo atual de
uma poupana, dado o total depositado, a porcentagem do rendimento
NFOTBMFPONFSPEFNFTFTRVFPWBMPSFTUOPCBODP
2. Faa um algoritmo em VisualG ou em Java que calcule a soma dos N priNFJSPTONFSPT
POEF/JOGPSNBEPQFMPVTVSJP&YQBSB/
FOUP
calcular 1 + 2 + 3 + 4 + 5.
3. Faa um algoritmo em VisualG ou em Java que calcule o fatorial de um
ONFSPJOUFJSP
4.'BBVNBMHPSJUNPFN7JTVBM(PVFN+BWBRVFMFJB"F#
BNCPTONFSPT
inteiros e positivos, e calcule AB.
5. Faa um algoritmo em VisualG ou em Java que leia um valor N inteiro e
QPTJUJWP
DBMDVMFFNPTUSFPWBMPSEF&
DPOGPSNFBGSNVMBBTFHVJS
E = 1 + 1/1! + 1/2! + 1/3! + ... + 1/N!
100
Lgica de Programao
Palavras Finais
Caro(a) estudante,
Primeiramente, gostaramos de parabeniz-lo(la) por ter concludo esta disciplina do curso Tcnico em Informtica. Estamos felizes por ter completado
mais uma importante etapa na busca da aprendizagem e, consequentemenUF
EPDPOIFDJNFOUP$IFHBNPTBPmOBMEBEJTDJQMJOBFDFSUBNFOUFOPGPJ
um percurso fcil, entretanto, durante nossa caminhada, adquirimos informaes e pudemos realizar trocas de experincias, com isso estamos mais
QSFQBSBEPTQBSBTFHVJSFNGSFOUFFTVQFSBSPTOPWPTEFTBmPTRVFWJSP
"MHJDBEFQSPHSBNBPVNQPOUPEFQBSUJEB/PQPEFNPTFTRVFDFS
que a busca pelo conhecimento contnua, portanto, vamos praticar, e,
DPNPEJDB
QPSRVFOPDSJBSBMHPSJUNPTQBSBSFTPMWFSQSPCMFNBTSFBJT "
QSUJDBFNQSPHSBNBPPEJGFSFODJBMEBTVBWJEBQSPmTTJPOBMoFOTB
adquirimos com exerccios e simulaes de problemas reais.
A voc que chegou at aqui o nosso parabns.
101
Guia de Solues
Aula 1
1. Resposta pessoal.
2.
Resultado verdadeiro:
O ferro conduz eletricidade.
O ouro conduz eletricidade.
O chumbo conduz eletricidade.
A prata conduz eletricidade.
Logo, todo metal conduz eletricidade.
Resultado falso:
At agora, nenhuma mulher foi Presidente da Repblica
no Lbano.
Logo, nenhuma mulher ser Presidente da Repblica no
Lbano.
3. 4INPWJNFOUPOPDBSSPTFIPVWFSDPNCVTUWFM
O carro est em movimento.
Logo, h combustvel no carro.
4.
I-B
II - B
III - C
5. Dona Rosa est de branco.
Dona Branca est de violeta.
Dona Violeta est de rosa.
6. IUUQXXXZPVUVCFDPNXBUDI W66EDVDN-"
Aula 2
1. Descrever passo a passo a resoluo de um problema.
102
Lgica de Programao
2. Ligar o computador.
Abrir o navegador.
Acessar o site do e-mail.
Digitar o usurio e a senha.
Procurar e-mail com o documento.
Se encontrar o documento, abri-lo.
3.
4. '(&/$5(QXPHURFXER,17(,52
,1&,2
/(,$QXPHUR
FXERQXPHUR
QXPHUR
QXPHUR
(6&5(9$FXER
),0
103
Aula 3
1. 7JTVBM4UVEJPo$
7#
$
/FU#FBOTo+BWB
%FMQIJo1BTDBM
9$PEFo0CKFDUJWF$
2. Visual Studio com C#:
using System;
namespaceMeusProjetos
{
classProgram
{
staticvoid Main(string[] args)
{
Console.Write("Digiteseunome: ");
string nome = Console.ReadLine();
Console.WriteLine("Seja bem vindo {0}", nome);
Console.ReadKey();
}
}
}
NetBeans com Java
Por ser um compilador Java, pode ser usado os mesmos algoritmos do Eclipse.
Delphi com Pascal
ProgramOla_Mundo;
begin
WriteLn('Ol, Mundo!');
end.
XCode com Objective-C
#import <stdio.h>
int main(void)
{
puts("Ol, Mundo!");
return 0;
}
Rede e-Tec Brasil
104
Lgica de Programao
Aula 4
1 e 2.
algoritmo "Mensagem"
// Autor: Liluyoud, Sara e Jos Marcio
var
// declarao de variveis
Inicio
// Algoritmo para mostrar uma mensagem
Escreva("| Programa Al, Mundo
|")
Escreva("| mundo da programao.
|")
Escreva("|
|")
Escreva("| Aproveite!!!
|")
Fimalgoritmo
3.
Funo do Algoritmo
Nome
Cambio
CalculoIMC
AreaTriangulo
ContaSaque
105
4.
algoritmo "Cambio"
var
valorReal, valorDolar, cotacao: real
Inicio
Escreva("Informe o valor em Dolar: ")
Leia(valorDolar)
Escreva("Informe a cotao do dia: ")
Leia(cotacao)
valorReal := valorDolar * cotacao
Escreva("O valor em real ", valorReal)
Fimalgoritmo
algoritmo "CalculoIMC"
var
peso, altura, imc: real
Inicio
Escreva("Informe seu Peso: ")
Leia(peso)
Escreva("Informe sua Altura: ")
Leia(altura)
imc := peso / (altura * altura)
Escreva("Seu IMC ", imc)
Fimalgoritmo
algoritmo "AreaTriangulo"
var
base, altura, area: real
Inicio
Escreva("Informe o largura da base do tringulo: ")
Leia(base)
Escreva("Informe sua Altura: ")
Leia(altura)
area := (base * altura) / 2
Escreva("A rea do tringulo ", area)
Fimalgoritmo
algoritmo "ContaSaque"
var
saldo, valorSaque: real
Inicio
Escreva("Informe o saldo atual da conta: ")
Leia(saldo)
Escreva("Informe o valor do Saque: ")
Leia(valorSaque)
Escreva("O novo saldo de ", saldo)
106
Lgica de Programao
Aula 5
1. a) XXX vlido
b) a123 vlido
c) (A) invlido
No podemos usar caracteres especiais no nome, nesse caso foram usados
os ( ).
d) NOME invlido
No podemos usar caracteres especiais no nome, nesse caso foram usadas
as .
e) #66 invlido
No podemos usar caracteres especiais no nome, nesse caso foi usado o #.
f) dia/ano/ms invlido
No podemos usar caracteres especiais no nome, nesse caso foi usada a /.
g) 1abc invlido
/PQPEFNPTJOJDJBSVNBWBSJWFMDPNONFSP
h) Ol Pessoal invlido
No pode haver espaos em uma varivel, e recomenda-se que no sejam
usado acentos tambm.
i) a.b invlido
No podemos usar caracteres especiais no nome, nesse caso foi usado o ..
j) c*d invlido
No podemos usar caracteres especiais no nome, nesse caso foi usado o *.
107
2.
Sintaxe Pseudocdigo
Sintaxe Java
salario: real
double salario;
nota, media: real
double nota, media;
diasEmAtraso: inteiro
intdiasEmAtraso;
cpf: caractere
stringcpf;
casaPropria: lgico
booleancasaPropria;
carta: caractere
string carta;
endereco: caractere
stringendereco;
novo: lgico
boolean novo;
Aula 6
1. Operando: so os argumentos de um operador, isto , as informaes
necessrias para um operador realizar sua funo.
Operador:GVOPDPNEPNOJPFTQFDmDP
Expresso: uma combinao de operandos e operadores.
Exemplo: a * b
a e b so os operandos
* o operador
a * b a expresso
2. Expresses matemticas ou aritmticas
(a + b) / 2
&YQSFTTFTMHJDBT
108
Lgica de Programao
BC
BC
3. Sendo a = 2, b = 5 e c = 3, temos:
a) b * 2 a * c=>5 * 2 2 * 3=>
10 6
=> 4
b)
c)
d)
e)
4.
a) v E f OU f E v=>f OU f E v=>
b) (v E f) OU (f E v)=>
f E v
(f) OU (f)
=>
=> f
109
!
NO (6<> 8 OU (2<= 9)) OU (f E v)
NO (6<> 8 OU v) OU (f)
NO (v OU v) OU (f)
NO (v) OU (f)
f OU f
f
Aula 7
1.
Algoritmo "Prog_7_1"
Var
n1, n2, n3, soma: Inteiro
Inicio
Leia(n1)
Leia(n2)
Leia(n3)
Escreva(soma)
FimAlgoritmo
2.
Algoritmo "Prog_7_2"
Var
n1, n2, n3, n4, media: Real
Inicio
Leia(n1)
Leia(n2)
Leia(n3)
Leia(n4)
Escreva(media)
FimAlgoritmo
110
Lgica de Programao
3.
Algoritmo "Prog_7_3"
Var
n1, n2, p1, p2, media: Real
Inicio
Leia(n1)
Leia(n2)
Leia(p1)
Leia(p2)
Escreva(media)
FimAlgoritmo
4.
Algoritmo "Prog_7_4"
Var
salario, porcentagem: Real
Inicio
Leia(salario)
Leia(porcentagem)
Escreva(salario)
FimAlgoritmo
5.
Algoritmo "Prog_7_5"
Var
salario, imposto: Real
dependentes: Inteiro
Inicio
Leia(salario)
Leia(dependentes)
imposto := salario * 0.275
Escreva(salario)
FimAlgoritmo
111
6.
Algoritmo "Prog_7_6"
Var
valorAntigo, valorNovo, diferenca: Real
Inicio
Leia(valorAntigo)
Leia(valorNovo)
diferenca := diferenca * 100
Escreva(diferenca, "%")
FimAlgoritmo
7.
Algoritmo "Prog_7_7"
Var
raio, diametro, perimetro, area, volume: Real
Inicio
Leia(raio)
diametro := 2 * raio
perimetro := 2 * 3.1415 * raio
area := 3.1415 * raio * raio
volume := 4 / 3 * 3.1415 * raio * raio *raio
Escreval(diametro)
Escreval(perimetro)
Escreval(area)
Escreval(volume)
FimAlgoritmo
8.
Algoritmo "Prog_7_8"
Var
valocidadeKM, velocidadeMS: Real
Inicio
Leia(valocidadeKM)
velocidadeMS := valocidadeKM * 1000 / (60 * 60)
Escreval(velocidadeMS)
FimAlgoritmo
112
Lgica de Programao
Aula 8
1.
Algoritmo "Prog_8_1"
Var
n1, n2: inteiro
Inicio
Leia(n1)
Leia(n2)
Se (n1 > n2) Entao
Escreva("O primeiro nmero maior")
Senao
Escreva("O segundo nmero maior")
FimSe
FimAlgoritmo
2.
Algoritmo "Prog_8_2"
Var
n: inteiro
Inicio
Leia(n)
Se (n mod 3 = 0) Entao
Escreva(" divisvel por 3")
Senao
Escreva("No divisvel por 3")
FimSe
FimAlgoritmo
3.
Algoritmo "Prog_8_3"
Var
lado1, lado2, lado3: inteiro
Inicio
Leia(lado1)
Leia(lado2)
Leia(lado3)
Escreva(" possvel criar um tringulo")
Senao
Escreva("No possvel criar um tringulo")
FimSe
FimAlgoritmo
113
4.
Algoritmo "Prog_8_1"
Var
n: inteiro
Inicio
Leia(n)
Se (n % 3 = 0) E (n % 4 = 0) E (n % 5 <> 0) Entao
Escreva(" divisvel por 3 e 4 e no por 5")
Senao
Escreva("No obedece as regras")
FimSe
FimAlgoritmo
5.
Algoritmo "Prog_8_5"
Var
n1, n2, n3, aux: inteiro
Inicio
Leia(n1)
Leia(n2)
Leia(n3)
Se (n1 > n2) Entao
aux := n1
n1 := n2
n2 := aux
FimSe
Se (n2 > n3) Entao
aux := n2
n2 := n3
n3 := aux
FimSe
Se (n1 > n2) Entao
aux := n1
n1 := n2
n2 := aux
FimSe
Escreva(n1, n2, n3)
FimAlgoritmo
114
Lgica de Programao
6.
Algoritmo "Prog_8_6"
Var
salarioBruto, irpf, inss, salarioLiquido: Real
Inicio
Leia(salarioBruto)
irpf := 0
inss := salarioBruto * 0.11
Se (inss> 400) Entao
inss := 400
FimSe
Se (salarioBruto>= 3000) Entao
irpf := salarioBruto * 0.275
Senao
Se (salarioBruto>= 1500) Entao
irpf := salarioBruto * 0.15
FimSe
FimSe
Escreval(irpf)
Escreval(inss)
Escreval(salarioLiquido)
FimAlgoritmo
Aula 9
1.
Algoritmo "Prog_9_1"
Var
numero: Inteiro
Inicio
Leia(numero)
Escolha numero
Caso 1
Escreva("Janeiro")
Caso 2
Escreva("Fevereiro")
Caso 3
Escreva("Maro")
Caso 4
Escreva("Abril")
Caso 5
Escreva("Maio")
Caso 6
Escreva("Junho")
Caso 7
115
Escreva("Julho")
Caso 8
Escreva("Agosto")
Caso 9
Escreva("Setembro")
Caso 10
Escreva("Outubro")
Caso 11
Escreva("Novembro")
Caso 12
Escreva("Dezembro")
OutroCaso
Escreva("Ms Invlido")
FimEscolha
FimAlgoritmo
2.
Algoritmo "Prog_9_2"
Var
uf: caractere
Inicio
Leia(uf)
Escolha uf
Caso "RO"
Escreva("Porto Velho")
Caso "AC"
Escreva("Rio Branco")
Caso "AM"
Escreva("Manaus")
Caso "AP"
Escreva("Amap")
OutroCaso
Escreva("UF Inexistente")
FimEscolha
FimAlgoritmo
3.
Algoritmo "Prog_9_3"
Var
posicao: Inteiro
Inicio
Leia(posicao)
Escolha posicao
Caso 1
Escreva("Parabns, voc o melhor.")
116
Lgica de Programao
&DVR
Escreva("Parabns, voc conseguiu.")
Caso 3
Escreva("Parabns, voc quase chegou l.")
OutroCaso
Escreva("Parabns, o importante competir.")
FimEscolha
FimAlgoritmo
4.
Algoritmo "Prog_9_4"
Var
n1, n2, resultado: Real
opcao: Caractere
Inicio
Leia(n1)
Leia(n2)
Leia(opcao)
Escolha opcao
Caso "*"
resultado := n1 * n2
Caso "/"
FimEscolha
Escreva(resultado)
FimAlgoritmo
Aula 10
1.
Algoritmo "Prog_10_1"
Var
valor, rendimento: Real
i, meses: inteiro
Inicio
Leia(valor)
Leia(rendimento)
Leia(meses)
Para i de 1 ate meses faca
FimPara
Escreva(valor)
FimAlgoritmo
117
2.
Algoritmo "Prog_10_2"
Var
i, n, soma: inteiro
Inicio
Leia(n)
soma := 0
Para i de 1 ate n faca
FimPara
Escreva(soma)
FimAlgoritmo
3.
Algoritmo "Prog_10_3"
Var
i, n, fatorial: inteiro
Inicio
Leia(n)
fatorial := 1
fatorial := fatorial * i
FimPara
Escreva(fatorial)
FimAlgoritmo
4.
Algoritmo "Prog_10_4"
Var
i, a, b, potencia: inteiro
Inicio
Leia(a)
Leia(b)
potencia := 1
Para i de 1 ate b faca
potencia := potencia * a
FimPara
Escreva(potencia)
FimAlgoritmo
118
Lgica de Programao
5.
Algoritmo "Prog_10_5"
Var
n, fatorial, i, j: inteiro
neper: real
Inicio
Leia(n)
neper := 1
Para i de 1 ate n faca
fatorial := 1
Para j de 1 ate i faca
fatorial := fatorial * i
FimPara
FimPara
Escreva(neper)
FimAlgoritmo
119
Referncias
ASCENCIO, Ana Fernanda Gomes; CAMPOS, Edilene Aparecida Veneruchida.
Fundamentos de programao de computadores: algoritmos, Pascal e C/C++. 2.
ed. So Paulo: Pearson Prentice Hall, 2005.
FORBELLONE, Andr Luiz Villar. Lgica de programao: a construo de algoritmos e
estrutura de dados. 3. ed. So Paulo: Brochura, 2005.
PUGA, Sandra; RISSETTI, Gerson. Lgica de programao e estruturas de dados:
com aplicaes em Java. 2. ed. So Paulo: Pearson Prentice Hall, 2009.
MANZANO, Jos Augusto N. G; OLIVEIRA, Jayr Figueiredo de. Algoritmos: lgica para
desenvolvimento de programao de computadores. 22. ed. So Paulo: Erica, 2009.
SEBESTA, Robert W. Conceitos de linguagem de programao. 9. ed. Porto Alegre:
Bookman, 2011.
INFOPEDIA. Enciclopdias e Dicionrios Porto Editora. Dicionrio de Lngua Portuguesa
da Porto Editora com acordo ortogrfico. Disponvel em <.http://www.infopedia.
pt/lingua-portuguesa/lgica> Acesso em: 03 set. 2013.
Obras Consultadas
ARAJO, Everton Coimbra. Algoritmos: fundamento e prtica. 3. ed. So Paulo: Visual
Books, 2007.
CARBONI, Irenice de Ftima. Lgica de programao. So Paulo: Thomson, 2003.
GOODRICH, Michael T; TAMASSIA, Roberto. Estruturas de dados e algoritmos em
Java. 4. ed. Porto Alegre: Bookman, 2007.
LAFORE, R. Estruturas de dados e algoritmos em Java. [S.l.]: Cincia Moderna,
2005.
LOPES, Anita; GARCIA, Guto. Introduo programao: 500 algoritmos resolvidos.
Rio de Janeiro: Campus, 2002.
SOARES, Mrcio Vieira; GOMES, Marcelo Marques; SOUZA, Marco Antnio. Algoritmos
e Lgica de Programao. 2. ed. So Paulo: Cengage Learning, 2011.
SZWARCFITER, J. L.; MARKENZON, L. Estruturas de dados e seus algoritmos. 3. ed.
[S.l.]: LTC, 2010.
120
Lgica de Programao
#JCMJPHSBmB#TJDB
CORMEN, Thomas H. et al. Algoritmos: teoria e prtica. 3. ed. So Paulo: rica, 2012.
FARRELL, Joyce. Lgica e design de programao. So Paulo: Cengage Learning,
2009.
121
122
Lgica de Programao
123