Вы находитесь на странице: 1из 41

Prof.

MarcoAurlioThompson

Cursodeprogramaoparainiciantes

Copyright2008ABSIAssociaoBrasileiradeSegurananaInternet
Prof.MarcoAurlioThompson

[2] www.absi.org.br

Capa,ProjetoEditorial,DiagramaoeReviso:MarcoAurlioThompson
CCursodeprogramaoparainiciantes

www.absi.org.br [3]

Copyright2008daABSIAssociaoBrasileiradeSegurananaInternet
Thompson, Marco Aurlio
C Curso de programao para iniciantes / Marco
Aurlio Thompson. -- 1. Ed. -- Salvador : ABSI
Associao Brasileira de Segurana na Internet, 2008.

ISBN: 85-98941-04-2

1. C 2. Linguagem de programao 3. Softwares I.
Ttulo.

Todososdireitosreservados.Proibidaareproduototalouparcial,porqualquer
meio ou processo, especialmente por sistemas grficos, microflmicos,
fotogrficos,reprogrficos,fonogrficos,videogrficos,Internet,eBooks.Vedada
a memorizao e/ou recuperao total ou parcial em qualquer sistema de
processamento de dados e a incluso de qualquer parte da obra em qualquer
programa jusciberntico. Essas proibies aplicamse tambm s caractersticas
grficas da obra e sua editorao. A violao dos direitos autorais punvel
comocrime(art.184epargrafos,doCdigoPenal,cf.Lein6.895/80)compena
deprisoemulta,conjuntamentecombuscaeapreensoeindenizaesdiversas
(artigos 102, 103 pargrafo nico, 104, 105, 106 e 107 itens 1, 2 e 3 da Lei n
9.610/98,LeidosDireitosAutorais).
Acreditamosquetodasasinformaesaquiapresentadasestocorretasepodem
ser utilizadas para qualquer fim legal. Entretanto, no existe qualquer garantia,
explcita ou implcita, de que o uso de tais informaes conduzir sempre ao
resultado desejado. Os nomes de sites e empresas, porventura mencionados,
foramutilizadosapenasparailustrarosexemplos,notendovnculonenhumcom
o livro, no garantindo sua existncia nem divulgao. Eventuais erratas estaro
disponveis no site da ABSI. O autor tambm se coloca disposio para dirimir
dvidasediscutirquaisquerdosassuntostratadosnaobra.
ABSIAssociaoBrasileiradeSegurananaInternet
CaixaPostal:5017,Salvador,BA,Cep:40026970,Brasil
atendimento@absi.org.br

Prof.MarcoAurlioThompson

[4] www.absi.org.br


CCursodeprogramaoparainiciantes

www.absi.org.br [5]

Sobreoautor
MarcoAurlioThompsoncarioca,nascidonoRiodeJaneiroeainda
crianamanifestavaseuinteressepelaqumica,fsica,eletrnicae
posteriormente,pelainformtica.
ComeouaprogramaremlinguagemBasiceAssemblynummicroda
linhaSinclair,umTK85.Foinestapoca,quandoserviaaoExrcitocomo
praquedistamilitar,queavocaoparaadocnciafoidespertada,
atravsdosinmerospedidosdeaulasparticularesquerecebia.
Tambmnestapocaviudespertadaavocaoparaaescrita,quando
colaboroucomartigossobreinformticaeeletrnica,publicadosna
revistaAntennaEletrnicaPopular(www.anep.com.br).
EmNilpolis(RJ),cidadeondeviveuamaiorpartedesuavida,realizou
inmerosprojetos,entreelesumaTVcomunitriaquefaziatransmisses
decurtadistncianafreqnciade60MHz.Esteprojetodurouapenas
algunsmeses,poisnopermitidofazertransmissesdeTVsemuma
concessodoPoderPblico.
FoitambmemNilpolisquecriouemantevedurantemuitosanoso
ProjetoInfo2000Informticaparatodos,queformoumaisdeoitomil
alunosnosseisanosemquedurouoprojeto.
Apartirde2003passouadedicarsequasequeexclusivamenteao
projetodelivros,palestras,minisitesefomentaodegruposdeestudo.
AtualpresidentedaABSIAssociaoBrasileiradeSeguranana
Internet,autordoslivrosJava&BancodeDados,ProteoeSegurana
naInternet,AdministraoderedescomWindows2003Server,OLivro
ProibidodoCursodeHacker,Invaso.BR,OLivroVermelhodoHacker
Brasileiro,entreoutros.

Prof.MarcoAurlioThompson

[6] www.absi.org.br


CCursodeprogramaoparainiciantes

www.absi.org.br [7]

Eviutudoquantotinhafeito,eeisqueeramuitobom.
Genesis1:31
Prof.MarcoAurlioThompson

[8] www.absi.org.br


CCursodeprogramaoparainiciantes

www.absi.org.br [9]

Sumrio
Introduo
Captulo1:
AquivocdecidesequeraprenderC
Captulo2:
Aquivocconheceosalgoritmosdocurso
Captulo3:
Aquivoccriaoambientededesenvolvimento
Captulo4:
Aquivocdescobreagramticadalinguagem
Captulo5:
Aquipraticamosaentradaesadadedados
Captulo6:
Aquitrabalhamoscomvariveis
Captulo7:
Aquivocaprendesobrevetoresematrizes
Captulo8:
Aquivocentendeocontroledefluxo
Captulo9:
Aquiapartechatasobreponteirosefunes
Captulo10:
Aquiquandofalamosdeexploits
Concluso
Prof.MarcoAurlioThompson

[10] www.absi.org.br


CCursodeprogramaoparainiciantes

www.absi.org.br [11]

Introduo
EstelivrosurgiucomocomplementoaoCursodeHackerque
mantenhonaInternet(www.cursodehacker.com.br).As
pessoasmeprocuramparaaprendertcnicashackereem
algummomentoqueremsabercomotrabalharcomexploits
edesenvolverasprpriasferramentas.
NoqueaprenderprogramaremCtornealgumhacker.
MasseguramentesaberCvaifazeradiferena,almde
permitiraeshackermuitosuperioresasdequemnose
sabeprogramar.
umlivrodeCparainiciantes.Pensonoleitorqueest
dandoosprimeirospassoseprecisadeinformaesbsicas
paracomear.EsendoumlivroqueensinaC,servir
tambmaquemdesejaaprenderaprogramarnesta
linguagem,independentedetambmterinteresseem
tcnicashacker.
Osexemplosdolivrotendemainstigaramentehackere
tambmincluumcaptulosobreexploits,oquegeralmente
nofazpartedoscursostradicionaisdeC.
Queroagradeceraoportunidadedeseroseuorientador
nestetreinamentoeestareiaquiquandoprecisar.

Prof.MarcoAurlioThompson
Salvador,janeirode2008.
Prof.MarcoAurlioThompson

[12] www.absi.org.br


CCursodeprogramaoparainiciantes

www.absi.org.br [13]

Materialdeapoio
FazpartedestelivroumCDRomouDVDcontendo:
Vdeoaulasdemonstrandoapreparaodoambiente
etodososexerccios
Dezenasdetextosdedistribuiolivre,noformato
PDF,paralernateladocomputador
DiversosprogramasdeauxlioaoprogramadorC
Milharesdecdigosprontosparauso,incluindo
exploitsevrusparaestudo

Prof.MarcoAurlioThompson

[14] www.absi.org.br





Captulo 1
Aqui voc decide se quer aprender C


Prof.MarcoAurlioThompson

[16] www.absi.org.br


CCursodeprogramaoparainiciantes

www.absi.org.br [17]

Captulo 1
Aqui voc decide se quer aprender C

Perguntasdestecaptulo:

OqueC?
Comoequandosurgiu?
ExisteumalinguagemA,B,D,E?
OquealinguagemCcapazdefazer?
MostremeumprogramafeitoemC.
OquevocsercapazdefazerusandoC?
LeiosobreimplementaeseANSIC.Quala
diferena?
EadiferenaentreC,C++,C#eC?
Porqueaspessoasquelidamcomeletrnica,
mecatrnicaerobticaprecisamentenderC?
PorqueCpopularentreosusuriosavanadosde
Linux(harduser)?
UmhackerprecisasaberprogramaremC?
ConsigoumempregoseaprenderC?
JtenteiaprenderCenoconsegui.Serqueagora
vai?


Prof.MarcoAurlioThompson

[18] www.absi.org.br

OqueC?
Cumalinguagemdeprogramaodeusogeralcriadapara
desenvolverosistemaoperacionalUNIX,quefoi
originalmenteescritoemAssembly.Desdeento,espalhou
sepormuitosoutrossistemas,etornouseumadas
linguagensdeprogramaomaisusadasmomundo,
influenciandomuitasoutraslinguagens,especialmenteC++,
quefoioriginalmentedesenvolvidacomoextensodaC.
Umcursodeprogramaoamesmacoisaqueumcursode
idiomas.umcursoparaaprenderasecomunicaremoutra
linguagem.Quemaprendeinglspretendecomunicarse
comoutraspessoasemingls.Cumalinguagemde
programaodecomputadores.Aslinguagenssocomo
idiomasqueocomputadorentende.Quemaprendeuma
linguagemdeprogramao,aprendeacomunicarsecomo
computadornaquelalinguagem.
Esteumcursodecomoconversarcomocomputador
usandoalinguagemC.

Comoequandosurgiu?
Cfoicriadaem1972,porDennisRitchie.Odesenvolvimento
inicialocorreunoAT&TBellLabs,entre1969e1973.
SegundoRitchie,operodomaiscriativoocorreuem1972.
Deuseonome"C"linguagemporquemuitasdesuas
caractersticasderivaramdesualinguagemantecessora,
chamada"B".
SendooinventordalinguagemdeprogramaoCeoco
inventor(juntamentecomKenThompson)dosistema
operacionalUNIX,Ritchieganhouumlugarimportantena
histriadaindstriainformtica.AlinguagemCcontinuaa
CCursodeprogramaoparainiciantes

www.absi.org.br [19]

serlargamenteutilizadanodesenvolvimentodeaplicaese
sistemasoperacionaiseasuainflunciapodeservistaem
linguagensdeprogramaomaisrecentes,taiscomoC++,
Java,C#eJavaScript.

ExisteumalinguagemA,B,D,E?
Anoexistiucomercialmente,maspodemosconsiderar
comoantecessoradoBalinguagemAssembly.
Bumalinguagemdeprogramaodesenvolvidaem1969
noslaboratriosBell.Predecessoradalinguagemde
programaoC,foicriadaporKenThompsoncom
contribuiesdeDennisRitchie.
DumalinguagemcriadaporWalterBright,
desenvolvedordecompiladoresparaaslinguagensCeC++e
fundadordaDigitalMars.Elafoiconcebidaemdezembrode
1999paraserumasucessoradaslinguagensCeC++,masat
omomentonoconseguiusepopularizarenemmesmo
substituirqualqueroutralinguagememlargaescala.
NoexistelinguagemE,Fouqualquerseqnciade
letras.

OquealinguagemCcapazdefazer?
Calinguagembsicadeprogramaodemaioruso
atualmente.VimosnotextoanteriorquealinguagemCfoi
usadaparacriarosistemaUNIX.Ctambmfoiusadana
criaodoLinux,Windowsediversosoutrossistemas
operacionais.
Prof.MarcoAurlioThompson

[20] www.absi.org.br

Noespereencontrarprogramasdecontroledeestoqueou
agendasescritasemC.Opoderdestalinguagemestem
manipularosistemaemseunvelmaisbaixo.
AlgunsexemplosdoquepossvelfazercomC:
Desenvolverumsistemaoperacionalapartirdozero
Desenvolverdrivesdedispositivo
Desenvolverjogos
Desenvolveraplicaesdeservidor(CGI)
ProgramardispositivosembarcadoseaplicaesPIC
Desenvolverexploitscapazesdeinterferirno
funcionamentodequalquersistema
TambmdevemoslevaremcontaqueaaprendizagemdeC
preparaoestudanteparaaslinguagenssucessoras,como
Java,JavaScript,C++eC#eoprofissionaldeseguranapara
lidarcomataquesde
bufferoverflows.

Mostremeumprograma
feitoemC.
Vejanafiguraaoladoum
trechodecdigoem
linguagemC.Nose
preocupesevocno
entendernada,ainda
estamosnoinciodeste
treinamento.

CCursodeprogramaoparainiciantes

www.absi.org.br [21]

OquevocsercapazdefazerusandoC?
Estarespostaeunotenho.Porquejvimosqueaprendera
programaromesmoqueaprenderumidioma.Vamos
compararcomoaprendizadodalnguaportuguesa.Como
umprofessorpodepreveroqueoalunosercapazde
escrever?
Escreverprogramasomesmoqueescrevertextos.O
mesmoconhecimentodoidiomanogaranteomesmo
desempenhoentreosconhecedoresdoidioma.
AutorescomoMachadodeAssiseAugustodosAnjosse
utilizamdasmesmas26letrasdoalfabetoquevoctem
acesso.Mascertamenteasuaproduoliterriadeveestar
bemlongedoqueproduziuestesautores.
Omesmoocorrecomquemaprendelinguagensde
programao.Sdependedasuacapacidadecriativaa
respostaparaaperguntasobreoquevocsercapazde
fazeraprendendoC.

LeiosobreimplementaeseANSIC.Qualadiferena?
Quandoumalinguagemdeprogramaoadotadaporum
nmeromuitograndedeempresasedesenvolvedores,
precisopadronizlaparaevitarincompatibilidadeentreo
cdigoeocompilador.
Imagineseasregrasgramaticaisparaalnguaportuguesa
fossediferentenasdiferentesregiesdoBrasil?Emuma
provaparaconcursopblicofederal,qualregragramatical
seriausada?
paraevitarproblemascomoestequeexistea
padronizao.QuempadronizoualinguagemC,ouseja,
Prof.MarcoAurlioThompson

[22] www.absi.org.br

quemcriouasregrasdeusoeescritadalinguagem,foio
InstitutoAmericanodePadres,tambmconhecidocomo
ANSI(AmericanNationalStandardsInstitute).
ApadronizaonotemforadeLeiequandoumaempresa
setornamuitoinfluente,comoaMicrosoftporexemplo,
comumeladesrespeitarapadronizao,fazendoalteraes
quesoconhecidascomoimplementaesdalinguagem.
ANSICalinguagempadronizada
ImplementaodeCquandoumaempresainsere
regrasnagramticadalinguagem,noprevistasna
padronizao.

EadiferenaentreC,C++,C#eC?
QuandoCfoilanada,oprogramadorlidavabasicamente
comtextoseescreviapraticamentetodoocdigodeseus
programas.Masainformticaevoluiueosprogramas
passaramalidarcomsom,imagem,conexesderedee
interfacesgrficascadavezmaissofisticadas.
Osproblemasaseremresolvidospelocomputadorse
tornarambastantecomplexos,exigindoumanovaformade
seescreverprogramas(umagramticauniversalemais
avanada).
FoicriadaumaextensochamadadeC++(pronunciase"c
maismais"ou"cplspls").C++umalinguagem
independente,dealtonvel,mascomfacilidadesparaouso
embaixonvel.Tambmumalinguagemdeusogeral.
BjarneStroustrupdesenvolveuoC++em1983noBellLabs,
comoumadicionallinguagemC.Originalmentecomo
CCursodeprogramaoparainiciantes

www.absi.org.br [23]

nomeCwithClasses,queemportugusquerdizerCcom
classes.
AlistaabaixodealgunsprogramasfeitosemC++:
AdobeAcrobat
AdobeIllustrator
AdobePhotoshop
Amazon
BeOS
Blender
DoomIII(motordojogo)
eMule
Google(motoresdebusca)
SrieHalfLife
InternetExplorer
iPod(interfacegrfica)
KDE(ambientegrfico
Linux)
MACOSX(sistema
operacionalusadonoMac)
Maya(softwarede
modelagem)
SondasdaNASA(Mars
Pathfinder,Opportunitye
outras)
MicrosoftOffice
MicrosoftWindows
MozillaFirefox
MySQL
OpenOfficeeBrOffice
OutlookExpress
SymbianOS(sistema
operacionalusadoem
aparelhoscelulare
smartphones)
Winamp

ParasuprirestasnecessidadesalinguagemC++comeoua
darlugarparaoC#(pronunciasecsharp)eJava,linguagens
capazesdecriaraplicaesatmesmoparadispositivos
mveis.
ComosurgimentodalinguagemJava,C++pareceuuma
linguageminsuficienteparaatenderasnecessidadesdas
indstriasedesenvolvedores.
Avessaaidiadeapoiarprodutodosoutros,aMicrosoft
lanouoC#.Umalinguagemdeprogramaoorientadaa
objetoscriadapelaMicrosoft,baseadanalinguagemC++e
Java.
AMicrosofttambmestdesenvolvendoalinguagemC
(pronunciasecmegaoucimega)queumaextensoda
Prof.MarcoAurlioThompson

[24] www.absi.org.br

linguagemC#.Cumatentativadefazerarquivosque
guardaminformaes(comobancodedadosedocumentos
XML)acessveiscomamesmafacilidadeeseguranados
tipostradicionais.

Porqueaspessoasquelidamcomeletrnica,mecatrnicae
robticaprecisamentenderdeC?
PorquealinguagemC,juntocomaAssembly,umadas
principaislinguagensdeprogramaoparadispositivos
embarcados.bemprovvelqueoseumicroondasrodeum
programafeitoemC.

PorqueCpopularentreosusuriosavanadosdeLinux
(harduser)?
VimosqueoUnixfoifeitoemC.OCpermitefazeralteraes
profundasnoncleodosistemaoperacional.Istoinclui
instruessobrereconhecimentodehardware.Amaioria
dosdriversdedispositivosofeitosemC.

UmhackerprecisasaberprogramaremC?
Noprecisa,masdevidoaosrecursosdestalinguagem,ser
capazdedesenvolveraeseferramentasqueasoutras
linguagensnoconseguem.

ConsigoumempregoseaprenderC?
SaberCnogarantiadeemprego.Porqueavagaseriade
programadoreumprogramadorprecisasabermaisqueuma
linguagem.Asvagasdeempregosopreenchidasdeacordo
comoperfildesenhadopelocontratante.Esteperfilpode
incluirconhecimentosdalinguagem,massaberprogramar
apenasemC,insuficienteparagarantirumacontratao.
CCursodeprogramaoparainiciantes

www.absi.org.br [25]

JtenteiaprenderCenoconsegui.Serqueagoravai?
Cconsideradaumalinguagemdedifcilaprendizagem.Na
verdadeCumalinguagemdifcildeserensinada.Quando
vocnoconsegueaprenderCporquenoconseguiramte
ensinarC.Somosconhecidosporsimplificarassuntos
complexoseesperamospoderfazeromesmoaquinoCurso
deC.





Captulo 2
Aqui voc conhece os algoritmos do curso


CCursodeprogramaoparainiciantes

www.absi.org.br [27]


Prof.MarcoAurlioThompson

[28] www.absi.org.br

Captulo 2
Aqui voc conhece os algoritmos do curso

Perguntasdestecaptulo:

Oqueocomputador?
Oqueprogramarumcomputador?
Oquesofluxogramas?
Qualosignificadodossmbolosdofluxograma?
Oquelgica?
Oquealgoritmo?
Mostremealgunsalgoritmoshacker.
Existemalgoritmosbemsimples,parainiciantes?
Precisosabermatemticaparaserprogramador?

CCursodeprogramaoparainiciantes

www.absi.org.br [29]

Oqueocomputador?
Opropsitodocomputadordeumamquinaquepossa
realizarastarefassolicitadaspelohomem.Setiverbraose
pernasrobticos,melhorainda,poisastarefaspodero
incluirarrumaracasa,lavarroupaselevarocopara
passear.Ocomputadoroserhumanodofuturo.
Nsvamosnostransformarnocomputadorouocomputador
vaisetransformaremns,seguindoumadestasprovveis
evolues:
Daquiaalgumasdezenasoucentenasdeanos,todosos
rgosdocorpohumanopodemserreproduzidos
artificialmente.Alegislaodeverdecidirseohomem
continuaaserhumano,casopossuamaisde90%deseu
corposubstitudoporprtese.
Orobumcomputadoremformadegente.Comotempo
osrobsteroformaidnticaadoSerhumano,incluindo
personalidadeprpria,capacidadedeaprenderedese
emocionar.Podersentirdoretodasassensaesdeuma
pessoa.Alegislaodeverdecidirseosrobs,nesteestgio
deevoluo,devemsertratadoscomoumanovaraaou
comoobjeto,passveldedescarte.
Filmesdeficocientficajabordamesteassunto,sendoosmais
famosos:Eu,Rob,OHomemBicentenrioeInteligncia
Artificial.
IssacAsimovautordasmaisimportantesobrassobreaevoluo
doHomemesairelaocomosrobs.Lembresequerobsso
computadoresemformadegente.
Oqueestportrsdointeressedohomememsereproduzirna
formademquina(computador/rob)abuscapelaimortalidade.
Prof.MarcoAurlioThompson

[30] www.absi.org.br

Daquiaalgumasdezenasoucentenasdeanosserpossvel
separaracabeadocorpoemantlavivaatravsde
sistemasdesustentaodavida.Aspossibilidadesincluem
transplantedecabea,corporobticorecebendoacabea
ousistemadesustentaodevidaquemantenhaacabea
viva.Estapossibilidadeaparecenasrieanimada
Futurama.
Daquiaalgumasdezenasoucentenasdeanosserpossvel
transferiramentedeumapessoaparaumcorporobtico
idnticoaocorpofsico.Nesteestgioahumanidadejtema
opopelaimortalidade.
Daquiaalgumasdezenasoucentenasdeanosserpossvel
transferiramentedeumapessoaparadentrodeumsistema
computadorizadoquerecriarsuavidanaformade
realidadevirtual,detalformaqueoSernuncasaberque
seucorponoexistemais.Estaaabordagemdatrilogia
Matrix.
Talvezvoctoraonarizparaestasconjecturas,maselasso
tobviasqueeunoprecisariaterrecorridofilosofiapara
imaginlas.Anotciaabaixodescreveumsistemaembrio
quepermiteocrebrocontrolarumcorporobtico:
Rob controlado pelo crebro d esperana a
deficientes fsicos
Qua, 16 Jan, 11h08
TQUIO (AFP) - Cientistas japoneses e americanos abriram um possvel
caminho para que os deficientes fsicos possam se locomover, ao
conceberem um rob humanide, cujas pernas foram ativadas distncia
pelo crebro de um macaco em movimento, situado a quilmetros da
mquina.
CCursodeprogramaoparainiciantes

www.absi.org.br [31]

Esta proeza, que alia a robtica com a neurocincia, foi anunciada nesta
quarta-feira pela Agncia da Cincia e das Tecnologias japonesas e pela
Universidade Duke dos Estados Unidos.
"Conseguimos transmitir dos Estados Unidos ao Japo os dados
registrados no crebro de um macaco graas deteco de seus influxos
nervosos, que se ocupam do movimento das pernas", explicaram os
pesquisadores.
Atravs desses sinais, possvel controlar as pernas do rob em tempo
real, de forma que ele caminha da mesma maneira que o macaco.
A tcnica se baseia em converter as informaes emitidas pelo animal em
instrues compreensveis para o rob.
Com esses resultados, o grupo cientfico acha que foi dado um grande
passo para a fabricao de prteses neurais que permitiro aos deficientes
fsicos recuperar sua capacidade motora.
Aquestorelevantedestaspossveistransfernciasdamente
paraamquinarelacionadatransfernciadaalma.O
problemaqueaalmanoexistedeformaconcreta,sendo
restritaaocampodareligio.EreligioF.acreditarem
coisasquevocnuncaviuemuitssimoprovvelquenunca
veja.Casoaalmarealmenteexista,ouelaacompanhaa
mentenamigraoparaocorpociberntico,ouaprimeira
experinciadetransfernciamentecorposerumfracasso.

Oqueprogramarcomputador?
Programarcomputadordarordensqueasmquinas
entendamepossamexecutar.Eunopossoordenaraomeu
PCquemesirvaumcaf.Massehouverohardware
adequado,quemsabeumsistemadetrilhoseengrenagens
desdeaminhacozinhaoualgumtipodebraorobtico,ser
possvelaomeumicroPC,servirmeumcaf.
Prof.MarcoAurlioThompson

[32] www.absi.org.br

Usamosocomputadorcomoseguintepropsito:
fazermaisrpido
fazermelhor
fazeremmaiorquantidade
Programamosocomputadorpararealizartarefase
precisamosdarinstruesprecisasparaqueastarefassejam
realizadascorretamente.Olimitedoqueocomputadorpode
fazeracapacidadedoprogramadoremprogramarocomo
fazer.
PROGRAMARDARINSTRUESAMQUINA,USANDOA
LINGUAGEMAPROPRIADAPARACADASITUAO.
Alinguagemdeprogramaooidiomacomoqualvamos
conversarcomocomputador.Possodaraseguinteinstruo
minhasecretria:
_Seobarcovoltar,envieumeMailparaprofessor@marcoaurelio.net.
Paraumcomputadoralinguagemserdiferente:
IFbarco=true
mailto:professor@marcoaurelio.net?SUBJECT=Aviso!&BODY=Obarcochegou.
Oquemudaaformadecomunicarnossasinstrues.Mas
aidiaamesma,conseguirquedeterminadatarefaseja
executada.Ocomputadormuitobomnisto,principalmente
nastarefasrepetitivasqueprecisamserautomatizadas.
Oqueeuprecisoquevocentendaqueaprogramaoso
asinstruesquevocinserenamemriadosistema.
Nstemosdiversasprogramaesdefbrica.Aosentirmuito
frio,temosumprogramainternoqueinjetanamentea
CCursodeprogramaoparainiciantes

www.absi.org.br [33]

necessidadeimediatadaprocuraporabrigo.Damesma
formaqueaovermosumcorponu,seriniciadooprograma
deexcitao.Eocheirodealhorefogado,ativaoprograma
dafome.Soprogramasquejvemconoscodefbrica.
Oidealseriaqueocomputadorouvisseanossavoze
executasseasinstruespedidasverbalmente.Naverdade
istojexiste,chamadodesistemadereconhecimentode
vozebastantecomumemsistemasdeatendimento
telefnico:
_Faleonmerodoseutelefonepausadamente.
_Falepausadamenteostrsprimeirosnmerosdoseu
CPF.
Estatecnologianoavanadaosuficienteparaque
possamossentar(ouno)diantedocomputadorepassaro
diadizendoaeleoquedeverfazer.Imaginevocnafrente
docomputador,debraoscruzados,falando:
_Checarcaixademensagens.
_Leramensagemmaisrecente.
_Marcarcomospameenviarparaalixeira.
_BuscarnaInternetamsicaCrawlingdoLinkinPark.
_Executar.
_Leraprximamensagem.
_Responder:Caroamigo,...
Apesardeparecerinteressantecomandarocomputadorcom
ousodavoz,imagineumescritriocomvriaspessoas
verbalizandosuasnecessidades?Almdoburburinho,tem
Prof.MarcoAurlioThompson

[34] www.absi.org.br

algumasaesqueningumquercompartilharcomos
outros:
_Buscarsitepornhardcore.
_Abriroprimeirolink.
_Exibirfotoemtelacheia.
_Zoom200%.
Oslegisladoresdofuturotambmterodedecidirseouso
dosrobsrepresentaumaformadeescravido.Alguns
exemplosdetarefasparaocomputadordasprximas
dcadas:
Busqueporclientesqueestocomosboletospagos.
Imprimaalistadeetiquetasparaenvio.
MudeocanaldaTV.
Aumenteovolume.
Faaumbifecomfritasigualaoltimoquecomi.
Laveasminhascuecas.
Massageiemeusps.
Relacioneemordemalfabticaonomedos
presidentesdoBrasildesdeapocadoImprio.
Baixedainternetmsicasdoestiloloungeegraveum
Bluraycomelas.
Estoupedindoaquem?Aumcomputador?Aum
empregado?Aumescravo?
Algumascorrentesfilosficasacreditamquenssomosos
robsdeDeus,programadosporEle.Quemsabe?
CCursodeprogramaoparainiciantes

www.absi.org.br [35]

Oquefluxograma?
Fluxogramaoudiagramadefluxoumaformade
representaralgoritmos,usandofiguraspadronizadas.O
fluxogramaajudaoprogramadoraentendermelhoro
problema,podendofazersimulaes,antesmesmode
escreverumaslinhadecdigo.

NOSIM

INCIO
FIM
ACORDAR
Fazsol?

AssistirDVD

Surfar
Prof.MarcoAurlioThompson

[36] www.absi.org.br

Qualosignificadodossmbolosdofluxograma?
Osprincipaissmbolosusadosnofluxogramaso:

Inciooufim

Processo

Deciso

Dados

Conector

Entradamanual

Sada

Lembrese:odiagramadefluxoarepresentaovisualdo
algoritmo.
CCursodeprogramaoparainiciantes

www.absi.org.br [37]

Fluxogramassousadosemdiversasreasparafacilitaro
entendimentodeatividadescomplexas.Vimosum
fluxogramasimples,comsmbolosusadoseminformtica.
Abaixotemosoutrotipodefluxograma,descrevendoo
processodeextraodomrmore:

Fonte:http://egeo.ineti.pt/geociencias/edicoes_online/diversos/marmores_pardais/parte2.htm
Prof.MarcoAurlioThompson

[38] www.absi.org.br

Oquelgica?
Lgicaumaformaderaciocniomuitocomumentreos
cientistas,matemticosealgumascorrentesfilosficas.O
raciocniolgicoestemaltanaSociedadedaInformao.
Bastaolharosprogramasdeestudoparaconcursose
encontraraexignciadoraciocniolgico.
Raciocinarlogicamentepodeparecerfcilprimeira
impresso,masoraciocniolgicoexigetreino,poish
formasdemonstrarlgicaondenoh.
OprincipalorganizadordalgicaclssicafoiAristteles,com
suaobrachamadaOrganon.Eledividealgicaemformale
material.
Umsistemalgicoumconjuntodeaxiomaseregrasque
visamrepresentarformalmenteoraciocniovlido.
Diferentessistemasdelgicaformalforamconstrudosao
longodotempoquernombitoestritodaLgicaTerica,
queremaplicaesprticasnacomputaoeemInteligncia
artificial.
Tradicionalmente,lgicatambmadesignaoparao
estudodesistemasprescritivosderaciocnio,ouseja,
sistemasquedefinemcomose"deveria"realmentepensar
paranoerrar,usandoarazo,dedutivamentee
indutivamente.Aformacomoaspessoasrealmente
raciocinamobjetodeestudodeoutrasreas,comona
psicologiacognitiva.
Parasabermaisvisite:

http://pt.wikipedia.org/wiki/Lgica

CCursodeprogramaoparainiciantes

www.absi.org.br [39]

Oquealgoritmo?
Algoritmoumconjuntodepassospararesolverum
problema.Umbomexemplodealgoritmosoasreceitas
culinrias.Ocomofazeroalgoritmo:

Massa Bsica de Pizza


Ingredientes:
1tabletede15gde
fermentobiolgico
1xcaradefarinhade
trigopeneirada
1xcaradeleitemorno
Salgosto

Comfazer:
1Emumavasilhagrande,dissolvaofermentonoleite
morno;
2Vjuntandoafarinhadetrigoemisturandocomuma
colherdepau;
3Quandonodermaisparamexercomacolher,useas
mos,sovandoamassapordezminutos;
4Acrescenteosaleproveamassaparaacertarotempero;
5Deixeamassadescansarpornomnimotrintaminutos
antesdeusar.
Vocsabefazermassadepizza?No!?Entonosercapaz
decriarumprogramaquefaaouensineafazermassade
pizzas.Oprogramadorsconseguecriarosprogramascujo
algoritmo(passoapassooucomofazer)eleentenda.
Prof.MarcoAurlioThompson

[40] www.absi.org.br

Mostremeumexemplodealgoritmohacker.
Oexemploabaixopressupeaexistnciadeumabasede
dadoscomasassinaturasdasvulnerabilidades.Vamossupor
quevoctenhaumexploitparaexplorarWebDav.Ento
podercriarumprogramaquebusqueosIPscomesta
vulnerabilidade.AbastarusaroexploitnosIPs
selecionados.
Voctambmpodercriarumprograma,scriptoualteraro
exploitparaleralistadeIPspreviamenteselecionados.
AlgoritmoparabuscarIPsvulnerveis
1. Selecioneavulnerabilidadeaserpesquisada;
2. SelecioneafaixadeIPsparaavarredura;
3. Leiadabasededados,aassinaturaselecionadana
opo1;
4. FaaaconexocomoprimeiroIP;
5. Seaconexoforestabelecida,testeaassinatura
recuperadaem3EarmazeneoIPnalistadeIPs
vulnerveis;
6. SeaconexoforrecusadaOUolimitedetempofor
excedido,ignoreesteIP;
7. FaaaconexocomoprximoIPdalista;
8. Faaoitem5,enquantohouverIPsnalista;
9. Fim.
SevocnosabeoqueWebDav,comoformatarum
datagramaclasseBouC,ondeconseguirassinaturade
vulnerabilidades,leresalvaremarquivooucomousaros
recursosdesocketdalinguagem,entonosercapazde
transformarestealgoritmoemprograma.
CCursodeprogramaoparainiciantes

www.absi.org.br [41]

Existemalgoritmosbemsimples,parainiciantes?
Existem.Osmelhoresalgoritmosparainiciantessoosque
usamfrmulassimples,comoclculosdeporcentagem,IMC,
idade,fsica,geometria,converses,funes,equaese
inequaes.

Precisosabermatemticaparaserprogramador?
Vocnoprecisasabermatemticaalmdoqueensinado
noEnsinoFundamental.Oproblemaqueamaioriadas
pessoasnoaprendematemticacomodeveriaepodeser
queasuaformaoescolartenhalacunasnestadisciplina.
Alinguagemdocomputadoralinguagemdalgica
matemtica.Podemosprogramarsemterbaseslidaem
matemtica,masobsicodamatemticaimportanteat
paraasobrevivnciaprofissional,independenteda
programao.
Segueumtestesimplesparasabersevocprecisamelhorar
suaformaoemmatemtica.Resolvadecabeaoucom
lpisepapel,masemhiptesealgumauseacalculadora:
1. 10,5+1,05+0,0105=
2. 10,51,050,0105=
3. 4.0,5=
4. 17%de240=
5. 1(1)=
6. 2:0,25=
Sooperaesdematemticaelementar.Sevocencontrou
dificuldadeemresolvereprecisoudeumacalculadorapara
chegaraoresultado,noquevocprecisaestudar
matemticaparaserprogramador,vocprecisaestudarpara
deixardeseranalfabetofuncional.