apostila lógica scratch python e-jovem

20
 Lógica de programação Fortaleza, Dezembro de 2009.

Upload: rafael-gomes

Post on 10-Oct-2015

234 views

Category:

Documents


29 download

TRANSCRIPT

  • Lgica de programao

    Fortaleza, Dezembro de 2009.

  • SumrioCaptulo1.LgicadeComputadores......................................................................................1

    1.1.Introduo...................................................................................................................11.2.PrincipaiselementosdeHardware..............................................................................1

    1.2.1.MemriaPrincipal................................................................................................11.2.2.ProcessadorouUnidadeCentraldeProcessamento(CPU)..................................21.2.3.Unidadesdeentradaesada...............................................................................2

    1.3.Lgicadeprogramao...............................................................................................21.3.1.Sequncialgica(Passoslgicos)......................................................................21.3.2.Oquesoinstrues?..........................................................................................2

    1.4.Definiodealgoritmo................................................................................................31.4.1.Exemplodeumalgoritmo(Sequncialgicadodiaadia).................................31.4.2.FazendoalgoritmosPraticandoalgoritmosdodiaadia....................................4

    1.5.Pseudocdigo(Formagenricadeescreverumalgoritmo,utilizandoumalinguagemsimples)............................................................................................................41.6.Regrasparaconstruodoalgoritmo.........................................................................4

    1.6.1.Estruturaprincipaldeumalgoritmo..................................................................41.6.2.Fases....................................................................................................................5

    1.7.TiposdeDados............................................................................................................51.8.Identificadores.............................................................................................................5

    1.8.1.Formaodeidentificadores................................................................................51.9.Literais(ouconstantes)...............................................................................................61.10.Variveis...................................................................................................................6

    1.10.1.Declaraodevariveis......................................................................................61.11.Atribuiodevalores.................................................................................................71.12.ComandodeEntradaesada....................................................................................71.13.DiagramadeBloco....................................................................................................71.14.OperadoresRelacionais.............................................................................................81.15.OperadoresLgicos...................................................................................................91.16.EstruturasdeDecisoeRepetio..........................................................................10

    1.16.1.EstruturaSE...FAAISSO/SENO.................................................................101.16.2.EstruturaEnquanto.........................................................................................111.16.3.EstruturaPARADEATFAA..............................11

    Captulo2.Scratch...............................................................................................................132.1.IntroduoaoScratch...............................................................................................132.2.AmbienteouInterfacedeprogramaodoScratch..................................................13

    2.2.1.MenuGeral........................................................................................................142.2.2.AlgunsElementosdoScratch.............................................................................15

    2.2.2.1.readecomandooureadeScript.............................................................152.2.2.2.Palco............................................................................................................152.2.2.3.Mostrandosistemadecoordenadaseorientaes.......................................162.2.2.4.Sprite..........................................................................................................162.2.2.5.Opesderotao.......................................................................................162.2.2.6.Informaesdoobjeto.................................................................................162.2.2.7.Opesparareadescript..........................................................................162.2.2.8.Encolher/Crescer/Apagar/DuplicarObjeto...........................................172.2.2.9.ModosdeApresentao...............................................................................17

    2.2.3.Categoriadecomandos......................................................................................172.3.TiposdecomandosdoScratch..................................................................................172.4.MudandooSprite(ListadeSprites)..........................................................................18

  • Projeto eJovem Mdulo II: Lgica de Computadores 3

    2.5.Movendoumcomandoeexecutandoo...................................................................182.6.TrabalhandocomaabaMovimento.........................................................................19

    2.6.1.Trabalhandocomomova...................................................................................192.6.2.Trabalhandocomovire.....................................................................................192.6.3.Alterandoonumerodegrausepassosnocomando..........................................202.6.4.Movendoevirando............................................................................................202.6.5.Mostrandocomovoltarparaaposioinicial..................................................202.6.6.Trabalhandomaiscomaposioeaorientao................................................21

    2.7.Trabalhandoemblocos.............................................................................................212.8.Retirandoumaaodeumbloco..............................................................................212.9.Removendoumaao...............................................................................................212.10.Renomeandoumobjeto..........................................................................................212.11.Trabalhandocomabaaparncia.............................................................................22

    2.11.1.TrabalhandocomTrajes...................................................................................222.11.2.TrabalhandocomDigaePense..................................................................222.11.3.Mudandoosefeitos........................................................................................222.11.4.Modificandoostamanhos................................................................................232.11.5.Aparecendo/desaparecendo...........................................................................232.11.6.Trabalhandocomcamadas..............................................................................23

    2.12.Trabalhandocomaabadesom(adicionandosom)................................................232.12.1.TrabalhandocomocomandoToqueosom......................................................232.12.2.TrabalhandocomToqueotamboreToqueanota...........................................242.12.3.Trabalhandocomvolumeeritmo...................................................................24

    2.13.Ensaiandoumpdedana.....................................................................................242.14.Trabalhandocomaabacaneta................................................................................24

    2.14.1.UsandooAbaixar,levantar,carimbeelimpe...................................................252.14.2.Mudandoacor,otomeotamanhodacaneta.................................................25

    2.15.Trabalhandocomaabacontrole.............................................................................252.15.1.Usandooquando.............................................................................................252.15.2.Usandooscontrolesse/seseno....................................................................252.15.3.Usodocontrolesempre...................................................................................262.15.4.Usandooscontrolesrepita/repitaat/semprese........................................262.15.5.Usandoopareeespere....................................................................................26

    2.16.Iniciandoeparandoumprograma..........................................................................262.17.UsandoTeclasDetectandoteclaspressionadas....................................................272.18.Mudandoacordeobjetoquandopressionadadeterminadatecla..........................272.19.Mudandoostrajescomcontrole.............................................................................272.20.Tocarnabordaevoltar...........................................................................................282.21.Desenhandoumaestrada........................................................................................282.22.Desenhandoumquadrado......................................................................................282.23.TrabalhandocomaabaSensores............................................................................29

    2.23.1.Comandostocandoem/tocandona/tocandocor........................................292.23.2.Comandospergunteeresposta........................................................................292.23.3.Comandosmousexemousey........................................................................292.23.4.Comandosmousepressionado/teclapressionada/temporizador................29

    2.24.MovimentandoSpriteporSensores........................................................................292.25.Movendosecomrelaoaotemporizador..............................................................302.26.FalaeCalcular.........................................................................................................30

  • Projeto eJovem Mdulo II: Lgica de Computadores 4

    2.27.TrabalhandocomaabaVariveis............................................................................302.27.1.Usandovariveis..............................................................................................312.27.2.Listas................................................................................................................31

    2.28.Caracteres...............................................................................................................312.29.Criandoumpequenoaplicativo..............................................................................322.30.Abrindoprojetosjexistentes.................................................................................332.31.Compartilhando......................................................................................................33

    Captulo3.Python................................................................................................................343.1.IntroduoaoPython................................................................................................343.2.OqueoPython.......................................................................................................343.3.IniciandoousodoPython.........................................................................................353.4.UtilizandooPromptdopython.................................................................................35

    3.4.1.UtilizandooPythoncomoumacalculadora(utilizandonmeroseoperadoresaritmticossimples).....................................................................................................353.4.2.Inserindocomentrios(#);................................................................................363.4.3.Tipodevariveis/TiposdeDados....................................................................36

    Variveis......................................................................................................363.4.4.Atribuiodevariveis.......................................................................................373.4.5.UtilizaodeconstantesevariveisnoPython..................................................373.4.6.UtilizandoStrings............................................................................................383.4.7.Visualizandootipodevariveltrabalhada(type())..........................................383.4.8.Imprimindoresultados(print())........................................................................393.4.9.Utilizandoaquebradelinha(\n)......................................................................40

    3.5.Trabalhandocomblocodeinstruesefazendoumprograma................................403.6.Rodandonoshelloprograma..................................................................................413.7.Docstrings(quandoprecisaseinserirumcomentriomaior,comoumadocumentao);...............................................................................................................413.8.Trabalhandocomabibliotecaoumdulomath.......................................................423.9.Maisstring:...............................................................................................................43

    3.9.1.OperadoreseStrings..........................................................................................443.9.2.AlinhamentodeStrings.....................................................................................44

    3.10.Entradadedados(raw_input);...............................................................................463.11.OperadoresAritmticoseExpressesLgicas.........................................................473.12.OperadoresLgicoseOperadoresRelacionais.......................................................48

    3.12.1.Trabalhandonoshellcomoperadoreslgicos.................................................483.12.2.ExpressesLgicas...........................................................................................49

    3.13.EstruturadeSeleo(DecisoouCondioif).....................................................493.13.1.SeleoComposta(if..else)..............................................................................503.13.2.SeleoEncadeadaouDecisoAninhada........................................................503.13.3.Aconstruoif..elif..elseaninhados.................................................................51

    3.14.Controledeescopoporidentao...........................................................................523.15.CriandoFunes......................................................................................................52

    3.15.1.DefinindoumaFuno.....................................................................................523.15.2.EscopodeVariveis..........................................................................................533.15.3.ArgumentosRequeridos...................................................................................543.15.4.ArgumentoPadro...........................................................................................543.15.5.Criandoeutilizandoseuprpriomdulo........................................................55

    3.16.Listas.......................................................................................................................55

  • Projeto eJovem Mdulo II: Lgica de Computadores 5

    3.16.1.Introduo.......................................................................................................553.16.2.Listas................................................................................................................553.16.3.AcessandoosvaloresdeumaListas.................................................................563.16.4.OperaesbsicasdaLista...............................................................................563.16.5.AtualizandoosvaloresdaLista.......................................................................563.16.6.DeletandovaloresdaLista..............................................................................57

    3.17.EstruturadeRepetio...........................................................................................573.18.EstruturaderepetioFOR;....................................................................................57

    3.18.1.Funorange()................................................................................................583.19.ComandodeRepetiowhile.................................................................................59

    3.19.1.OLaoInfinito................................................................................................603.19.2.Adeclaraobreak..........................................................................................603.19.3.Adeclaraocontinue......................................................................................613.19.4.Adeclaraopass.............................................................................................61

    3.20.UtilizandoArquivos.................................................................................................623.20.1.Afunoopen()...............................................................................................623.20.2.Afunoclose()...............................................................................................63

    3.21.Escrevendonosarquivoscomafunowrite().......................................................643.22.Lendoinformaesdoarquivocomafunoopen().............................................64

    3.22.1.Posiodocursor.............................................................................................65

  • Projeto eJovem Mdulo II: Lgica de Computadores 1

    Captulo1. LgicadeComputadores

    1.1. Introduo

    O computador uma mquina que realiza uma variedade de tarefas de acordo cominstrues especficas. uma mquina de processamento de dados, que recebe dadosatravs deumdispositivodeentradae o processador os manipuladeacordocomumprograma.Ocomputadortemdoiscomponentesprincipais.OprimeirooHardwarequeapartepalpvel (que se pode tocar) do computador. Ele composto de partes eletrnicas emecnicas.OsegundocomponenteprincipaloSoftwarequeaparteimpalpvel(nosepodetocar)docomputador.Elecompostodedadosedosprogramasdecomputador.Osoftwareumprogramaqueocomputadorusaparafuncionar.Elearmazenadoemalgumdispositivodehardwarecomoumdiscorgido,masemsimesmointangvel.Osdados que o computador usa podem ser qualquer coisa que o programa precise. Osprogramasagemcomoinstruesparaoprocessador.Algunstiposdeprogramasdecomputador:1. ProgramasdeSistemas: Programasnecessrios paraqueohardwaree osoftware

    funcionem juntos corretamente. Exemplos: Sistemas Operacionais como Linux eoutros.

    2. Aplicativos: Programas que as pessoas usam para realizar determinado trabalho.Exemplos:ProcessadoresdeTextos,Jogos,PlanilhasEletrnicasentreoutros.

    3. Compiladores: O computador entende apenas uma linguagem: linguagem demquina.Linguagemdemquinaestnaformadezeroseuns.Jquetotalmenteimpraticvelparaaspessoascriaremprogramasusandozeroseuns,precisohaverumamaneiradetraduzirouconverteralinguagemqueentendemosemlinguagemdemquina,paraisto,existemoscompiladores.

    1.2. PrincipaiselementosdeHardware

    Comearemosafalarumpoucosobreoprincipalparaocomputadorfuncionar,ouseja,apartefsicadele.Semesteselementosfsicosocomputadornopoderiafuncionar.Elasinterligadasformamocomputador.

    1.2.1. MemriaPrincipal

    Amemria,ondeseencontramosdadoseasinstruesqueaCPUprecisapararealizarsuastarefas,divididaemdiversoslocaisdearmazenamentoquepossuemseusrespectivosendereoslgicos.ACPUacessaamemriapelousodestesendereos.

  • Projeto eJovem Mdulo II: Lgica de Computadores 2

    1.2.2. ProcessadorouUnidadeCentraldeProcessamento(CPU)Aunidadecentral deprocessamento(CPUCentral ProcessingUnit), quecomumentechamada de Processador, o crebro do computador. Ele possui milhes de parteseltricasmuitopequenas.Elefazasoperaesfundamentaisdentrodosistema.AlgunsexemplosdeprocessadoresmodernossoPentium4,Core2Duo,Athlon,entreoutros.

    1.2.3. UnidadesdeentradaesadaOsdispositivos deentradaesadapermitemqueocomputador interaja comomundoexteriorpelamovimentaodedadosparadentroeparaforadosistema.Exemplosdedispositivosdeentradassoteclados,mouses,microfones,etc.Exemplosdedispositivosdesadasomonitores,impressoras,altofalantes,etc.

    1.3. Lgicadeprogramao

    A lgica de programao necessria para pessoas que desejam trabalhar comdesenvolvimentodesistemaseprogramas,elapermitedefinirasequencialgicaparaodesenvolvimento.Entooquelgica?Lgicadeprogramao a tcnicadeencadearpensamentosparaatingir determinadoobjetivo.

    1.3.1. Sequncialgica(Passoslgicos)

    Agora,veremosoqueseriaasequncialgica.Ospensamentosencadeadosparaatingirdeterminadoobjetivopodemserdescritoscomoumasequenciadeinstrues,quedevemserseguidasparasecumprirumadeterminadatarefa.Podemosentofalarquesequencialgicasopassosexecutadosatatingirumobjetivoousoluodeumproblema.

    1.3.2. Oquesoinstrues?

    Nalinguagemcomum,entendeseporinstruesumconjuntoderegrasounormasdefinidasparaarealizaoouempregodealgo.Eminformtica,porm,instruoainformaoqueindicaaumcomputadorumaaoelementaraexecutar.Convmressaltarqueumaordemisoladanopermiterealizaroprocessocompleto,paraissonecessrioumconjuntodeinstruescolocadasemordemsequenciallgica.Porexemplo,sequisermosfazerumaomeletedebatatas,precisaremoscolocaremprticaumasriedeinstrues:descascarasbatatas,baterosovos,fritarasbatatas,etc...evidentequeessasinstruestemqueserexecutadasemumaordemadequadanosepodedescascarasbatatasdepoisdefritlas.Dessa maneira, uma instruo tomada em separado no tem muito sentido; paraobtermosoresultado,precisamoscolocaremprticaoconjuntodetodasasinstrues,naordemcorreta.

  • Projeto eJovem Mdulo II: Lgica de Computadores 3

    Instruessoum conjuntode regras ounormas definidas paraa realizaoouempregodealgo.Eminformtica,oqueindicaaumcomputadorumaaoelementaraexecutar.

    1.4. Definiodealgoritmo

    Umalgoritmo formalmenteumasequencia finitadepassosque levamaexecuodeuma tarefa. Podemos pensar em algoritmo como uma receita, uma sequencia deinstruesquedocabodeumametaespecfica.Estastarefasnopodemserredundantesnemsubjetivasnasuadefinio,devemserclaraseprecisas.Comoexemplos dealgoritmos podemos citar os algoritmos paraa realizaodeoperaes bsicas (adio, multiplicao, diviso e subtrao) de nmeros reaisdecimais. Outros exemplos seriam os manuais de aparelhos eletrnicos, como umvideocassete,queexplicampassoapassocomo,porexemplo,gravarumevento.Atmesmoascoisasmaissimples,podemserdescritasporsequnciaslgicas.Emoutraspalavras,podemosfalartambmqueumprocessodeclculomatemticoouderesoluodeumgrupodeproblemassemelhantes,emqueseestipulam,comgeneralidadeesemrestries.Podemosdizertambm,quesoregrasformaisparaobtenodeumresultadooudasoluodeumproblema,englobandofrmulasdeexpressesaritmticas.

    1.4.1. Exemplodeumalgoritmo(Sequncialgicadodiaadia)Osalgoritmosestopresentesnonossodiaadiaemcoisassimples,comoporexemplo,aoescrever,ouabrirumaporta.Temoscomoexemplodeumalgoritmo:1. Abrirumaporta.

    Aproximardaporta;Abaixaramaaneta;Puxaramaanetacomelaabaixada.

    2. Somardoisnmerosquaisquer.Escrevaoprimeironmeronoprimeiroretngulo;Escrevaosegundonmeronosegundoretngulo; Someoprimeironmerocomo segundonmero ecoloqueoresultadono

    terceiroretngulo.Observequecadaumdoscasos, temos3aes, quedevemserseguidaspassoapassomesmo,poisonoseguimentodeumadelas,causarumerro.Porexemplo,imaginequeconstrudoumbraomecnicodeumrobparaquetodavezquealgumdeaproxime,elemesmoabraaporta.Seporacasoopasso2nosejacolocadonoalgoritmo,nominimoonossobraomecniconoconseguirabriaporta,ounopiordoscasos,elecolocarforaquepuxaramaanetaeaquebrar,ouaprpriaporta.Por isso notamos uma grande importncia os algoritmos e que eles sejam declaradoscuidadosamentepassoapasso.claroquenovamoscomearconstruindoumbraomecnico(nemovamosfazer)ououtracoisamaiscomplicada,masantesdeaprenderarealutilidadedosalgoritmos,iremosconstruirmaisalgunsalgoritmosdodiaadia.

  • Projeto eJovem Mdulo II: Lgica de Computadores 4

    1.4.2. FazendoalgoritmosPraticandoalgoritmosdodiaadia

    Vistootpicoacimavamostentarresolveredebateralgunstpicosemsaladeaulacomalgunstpicosdodiaadia:1. Crieumasequencialgicaparatomarbanho.2. Faaumalgoritmopararealizaramdiaentredoisnmeros.3. Crieumasequencialgicaparatrocarumpneudeumcarro.4. Crieumasequencialogicaparafazerumsanduchedequeijo.5. Faaumalgoritmoparatrocarumalmpada.

    1.5. Pseudocdigo(Formagenricadeescreverumalgoritmo,utilizandoumalinguagemsimples)

    Osalgoritmossodescritosemumalinguagemchamadapseudocdigo.Estenomeumaaluso posterior implementaoemumalinguagemdeprogramao,ouseja,quandoformosprogramaremumalinguagem,porexemploPython,estaremosgerandocdigoemPython. Por isso os algoritmos so independentes das linguagens de programao. Aocontrriodeumalinguagemdeprogramaonoexisteumformalismorgidodecomodeveserescritooalgoritmo.Oalgoritmodeveserfcildeseinterpretarefcil decodificar.Ouseja,eledeveserointermedirioentrealinguagemfaladaealinguagemdeprogramao.

    1.6. Regrasparaconstruodoalgoritmo

    Paraescreverumalgoritmoprecisamosdescreverasequenciadeinstrues,demaneirasimpleseobjetiva.Paraissoutilizaremosalgumastcnicas:

    Usarsomenteumverboporfrase; Imaginar que voc est desenvolvendo um algoritmo para pessoas que no

    trabalhamcominformtica;Usarfrasescurtasesimples;Serobjetivo;Procurarusarpalavrasquenotenhamsentidodbio.

    1.6.1. Estruturaprincipaldeumalgoritmo

    inciofim

  • Projeto eJovem Mdulo II: Lgica de Computadores 5

    1.6.2. Fases

    AnteriormentevimosqueALGORITMOumasequencialgicadeinstruesquepodemserexecutadas.importanteressaltarquequalquertarefaquesigadeterminadopadropodeserdescritaporumalgoritmo,comoporexemplo:

    Comofazersanduche,ouento,comocalcularasomadedoisnmeros.Entretantoaomontarumalgoritmo,precisamosprimeirodividiroproblemaapresentadoemtrsfasesfundamentais:1. ENTRADA:Soosdadosdeentradadoalgoritmo;2. PROCESSAMENTO:Soosprocedimentosutilizadosparachegaraoresultadofinal;3. SADA:Soosdadosjprocessados

    1.7. TiposdeDados

    Osprincipaistiposdedadosso:inteiro,real,caractere,lgico. Os do tipo inteiro qualquer numero inteiro, negativo, nulo ou positivo (

    125,0,5,3456);Osdotiporealqualquernumeroreal,negativo,nulooupositivo(0.27,0.01); Os do tipo lgico so conjunto de valores Falso ou verdadeiro (FALSO,

    VERDADEIRO);OsdotipoCaracterequalquerconjuntodecaracteresalfanumricosesmbolos

    colocadosentreaspasduplas(InstitutoFederal,Ejovem,7,FALSO).

    1.8. Identificadores

    Osidentificadores soos elementosbsicos deuma linguagemondetemcomofunoidentificardeformanicavariveis,funes,constantesentreoutro

    1.8.1. Formaodeidentificadores

    Asregrasparaaformaodosidentificadoresso:1. Os caracteres que voc pode utilizar so: os nmeros, as letras maisculas e

    minsculaseounderline;2. Oprimeirocaracteredevesersempreumaletra;3. Nosopermitidosespaosembrancoecaracteresespeciais(@,$,+,&,%,!);4. No podemos usar palavras reservadas nos identificadores, ou seja, palavras que

    pertenamaumalinguagemdeprogramao.Exemplodeidentificadoresvlidos:

    A a nota

    NOTA a32 NoTa1

    MATRICULA nota_1 IDADE_FILHO

  • Projeto eJovem Mdulo II: Lgica de Computadores 6

    Exemplodeidentificadoresinvlidos:5b porcomearcomnmero

    e12 porconterespaoembranco

    xy porconterespaoembrancoecaractereespecial

    prova2n porconterespaoembranco

    nota(2) porcontercaracteresespeciais()

    para porserpalavrareservada

    se porserpalavrareservada

    algoritmo porserpalavrareservada

    1.9. Literais(ouconstantes)

    Constanteumdeterminadovalorfixoquenosemodificaaolongodotempo,duranteaexecuodeumprograma.Conformeoseutipo,aconstante classificadacomosendonumrica,lgicaeliteral.

    1.10. Variveis

    Varivelarepresentaosimblicadoselementosdeumcertoconjunto.Cadavarivelcorrespondeaumlocal, ouseja, aumaposiodememria, ondepodesearmazenarqualquervalordoconjuntodevalorespossveisdotipobsicoassociado,cujocontedopodesealteradoaolongodotempoduranteaexecuodeumprograma.Emboraumavarivelpossaassumirdiferentesvalores,elaspodearmazenarumvaloracadainstante.Onomedavariveldeveserumidentificadorvlido.

    1.10.1. Declaraodevariveis

    Asvariveisspodemarmazenarvaloresdeummesmotipo,demaneiraquetambmsoclassificadascomosendonumricas,lgicaseliterais.Correspondeareservadelocaisnamemria rotulada com o nome da varivel (identificador) e cujo contedo serinterpretadoconformeotipodeclarado.Exemplodedeclaraodevariveis:

    inteiro idade,dias

    real altura

    caracter nome

    lgico filho_unico

  • Projeto eJovem Mdulo II: Lgica de Computadores 7

    1.11. Atribuiodevalores

    Para atribuir valores a uma varivel, usaremos o operador de atribuio (lserecebe),quetemumcarterimperativo.Exemplosdeatribuio:

    idade 19; altura 1.80; nome Fulano

    Erroscomunsnasatribuies: Incompatibilidadesdetipos Tentaratribuirumtipodedadoaumavarivelde

    outrotipo; PerdadePreciso atribuirvaloresreaisavariveisdotipointeiro,perdendoa

    partedecimaldonmero; Atribuiodevalorasvariveisnodeclaradas.

    1.12. ComandodeEntradaesada

    ComandosdeEntradaesadasoinstruesquenospermitem,oureceberdados(Entrada)ouinformardados(Sada).OpadrodeEntradaparaoscomputadoresbsicosoteclado,delequensinformamosoqueoprogramanossolicita.JopadrodeSadaomonitor,todasasinformaesmostradasaousurioseropassadasporestedispositivodesada.Nopseudocdigonsreservamosapalavralerparasolicitardados,eapalavraescreverparaenviarumamensagemoudadoparaomonitor,soexemplosdeusocorreto:

    escreverDigiteumnmero:;#Mostranomonitoramensagementreaspaslernumero;#Esperaousuriodigitarumnmero

    1.13. DiagramadeBloco

    Umaoutramaneirademostrarumblocodecdigosseriaporumdiagramabsico,muitoutilizadopoisumaformasimpleseeficazparademonstrarquaispassoslgicosdevemserseguidospeloprogramadorparachegaraumresultado.Com o diagrama podemos definir uma sequencia de smbolos, com significado bemdefinido,portanto,suaprincipalfunoadefacilitaravisualizaodospassosdeumprocessamento.Existemdiversossmbolosdeumdiagramadebloco.Aseguirveremosalgunssmbolosbsicos.

    TERMINALIndicaINCIOouFIMdeumprocessamento

    PROCESSAMENTO

    Processamentoemgeral

    ENTRADADEDADOMANUAL

    Indicaentradadedadosatravsdoteclado.Ex.:Digiteanota1doaluno

  • Projeto eJovem Mdulo II: Lgica de Computadores 8

    EXIBIR

    MostraInformaesouresultados.Ex.:Mostrandooresultadodoclculo:

    Nointeriordosmbolo,escrevemosalgumtipodeinformao,casocontrrioossmbolosnonosdizemnada,vejaoexemploaseguir:

    Calculandoamdiadedoisnmeros:

    Percebaqueseseguirmosofluxodesetas,podemossemproblemaalgum,teroresultado,quenocaso,amdiadasnotas.

    1.14. OperadoresRelacionais

    OsoperadoresrelacionaissoutilizadosparacompararStringdecaracteresenmeros.Osvaloresaseremcomparadospodemsercaracteresouvariveis.Estesoperadoressempreretornamvaloreslgicos(verdadeirooufalso/TrueouFalse) Paraestabelecerprioridadesnoquedizrespeitoaqualoperaoexecutarprimeiro,utilizeosparnteses.Osoperadoresrelacionaisso:

    > Verificaseumtipodedadomaiorqueoutrotipo< Verificaseumtipodedadomenorqueoutrotipo== Verificaseumtipodedadoigualaumoutrotipo>= Verificaseumtipodedadomaiorouigualaumoutrotipo

  • Projeto eJovem Mdulo II: Lgica de Computadores 9

    Comoexemplotemos:

    a 10;b 20;a>b #retornafalsoac FALSO

    Exerccio: Sabendo que A=3, B=7 e C=4, informe se as expresses abaixo soverdadeirasoufalsas.

    (a)(A=C)or(B>C) ()(b)not(B=A)and((A+1)=C) ()(c)(C=(BA))orB ()

  • Projeto eJovem Mdulo II: Lgica de Computadores 10

    1.16. EstruturasdeDecisoeRepetio

    1.16.1. EstruturaSE...FAAISSO/SENO

    Comoconhecimentodotpicoacima,nspodemosagora,comentarsobreinstruesquerealizamtestesentrecaracteresevariveisetambmsobrelaos.Nonossopseudocdigoapalavrareservadaparaumainstruoquerealizaumtesteose,seuuso:

    sefaaisso:

    seno:

    NOTA:Percebaqueainstruoseno,noobrigatria,poisemalgunscasovocpodenecessitarfazersomenteumtestequenotenhanenhumcdigoaserexecutadoseotesteforfalso.Osmbologrficoquerepresentaumaestruturadedecisosimplesmostradonafiguraaseguir. Por um lado, o algoritmo segue se a condio testada dentro do smbolo forverdadeira,seforfalsa,oalgoritmoseguirporoutrocaminho,oqualcontmumdiferenteblocodecomando.

    DECISO

    Representaumtesteaserfeito

    Aestruturadedecisosenormalmentevemacompanhadadeumcomando,ouseja,sedeterminada condio for satisfeita pelo comando se ento execute determinadocomando, se tal condio no for satisfeita, execute outro determinado comando.Imagineumalgoritmoquedeterminadoalunosomenteestaraprovadosesuamdiaformaiorouiguala5.0,vejanoexemplodealgoritmocomoficaria.

    semedia>=5.0faaisso:escreverAlunoAprovado

    seno:escreverAlunoReprovado

    NoFluxogramanstemosaseguintesequncialgica:

  • Projeto eJovem Mdulo II: Lgica de Computadores 11

    Exerccio:Elaboreumdiagramaquesatisfaaosseguintespontos: Leia4(quatro)nmeros; Someoprimeirocomosegundonmero; Someoterceirocomoquartonmero; Seaprimeirasomaformaiorqueasegundasomaescrevaoresultadoefinalizeo

    programa; Seno,imprimaasegundasomaefinalizeoprograma.

    1.16.2. EstruturaEnquantoUtilizamos os comandos de repetio neste caso a instruo enquanto quandodesejamosqueumdeterminadoconjuntodeinstruesoucomandossejamexecutadosumnmerodefinidoou indefinidodevezes,ouenquantoumdeterminadoestadodecoisasprevalecerouatquesejaalcanado.Empseudocdigosuasintaxe:

    enquantofaa:;

    fim_enquanto;

    Nestecaso,oblocodeoperaesserexecutadoenquantoacondioxforverdadeira.Otestedacondiosersemprerealizadoantesdequalqueroperao.Enquantoacondioforverdadeiraoprocessoserepete.Podemosutilizaressaestruturaparatrabalharmoscomcontadores.Emdiagramadeblocoaestruturaaseguinte:

    1.16.3. EstruturaPARADEATFAAOslaoscontadossoteisquandoseconhecepreviamenteonmerodevezesquesedesejaexecutarumdeterminadoconjuntodecomandos.Ento,estetipodelaonadamaisqueumaestruturadotadademecanismosparacontaronmerodevezesqueocorpodolao(ouseja,oblocodecomandos)executado.Asintaxeusadaempseudocdigoparalaoscontadosmostradaaseguir:

    paradeatfaa:

    fim_para

    SupomosquenossoPARA,irfazerumincrementonade1umaunidadeatquesejaatingidoovalor.

  • Projeto eJovem Mdulo II: Lgica de Computadores 12

    Emtermosdefluxograma, j vriasrepresentaespossveise, at omomentonohconsensoquantoformamaisconveniente.

    Algumasobservaesinteressantesaseremcomentadas: necessariamente umavarivel, umavez que seu valor alterado a cada

    iterao(voltadolao); epodemserconsideradasconstantesouvariveis.Nosegundocaso

    (variveis), algumas linguagensdeprogramaoprobemqueseusvalores sejammodificadosduranteaexecuodolao;

  • Projeto eJovem Mdulo II: Lgica de Computadores 13

    Captulo2. Scratch

    2.1. IntroduoaoScratch

    ScratchumanovalinguagemdeprogramaodesenvolvidapeloLifelongKindergartenGroupnoMITMediaLab(http://llk.media.mit.edu),comoapoiofinanceirodaNationalScienceFoundation,Microsoft, IntelFoundation,Nokia,econsrciosdeinvestigaodoMITMediaLab.OScratchpermitecriarastuasprpriashistriasinterativas,animaes,jogos,msicaearteecompartilharlasatravsdewebsites.Aprogramao efetuadaatravs dacriaodesequnciasdecomandossimples, quecorrespondem a blocos de vrias categorias, encaixados e encadeados de forma aproduziremasaesdesejadas.OsprojetosScratchsobaseadosemobjetosgrficoschamadosSprites.PodesemudaraaparnciadeumSprite,dandolheumnovotraje,oufazloparecersecomumapessoa,umobjetoouatmesmoumanimal.Ainda,Podeusarqualquerimagemcomotraje:podesdesenharno"EditordePintura",importarumaimagemdodiscorgido,ouarrastarumaimagemapartirdeumsite.Podesedar instruesaumSprite, indicandolheparasemover,reproduzirmsicaoureagir a outros Sprites. Para isso basta criar sequncias de comandos, arrastandoos eencaixandoosemblocos,talcomosefossempeasdeLegooudeumpuzzle. Quandoclicarduasvezes(duploclique),oScratchexecutaosblocosapartirdotopodoscriptparaofinal.Em resumo, o Scratch um software que permite criar histrias, jogos e animaes.Istotudodeformasimples,animandoomovimentodeobjetos.

    2.2. AmbienteouInterfacedeprogramaodoScratch

    OambientedeprogramaodoScratch,umambientequepermiteamontagemdeumalgoritmodeprogramaoatravsdediagramadeblocos,onde,diferentementedasoutraslinguagensqueseensinalgica,ondetemqueserdigitadocomandos,ousuriodoscratchtemcomoverasequnciadeaestendomuitomaiscontrolesobreoquepoderfazer.

  • Projeto eJovem Mdulo II: Lgica de Computadores 14

    QuandoabrimosoScratch,entramosdiretamenteparaomododeEdio,quenospermitecriaroumodificarprojetos.VeremosagoraumpoucosobreateladoScratcheosseusprincipaisFunes.ObserveafiguraaseguirareadetrabalhodoScratch.Categoriadecomandos Oscomandossodivididosemcategoriasesoelas:Movimento,aparncia,som,caneta,controle,sensores,operadores,variveis;Blocos de comandos Onde esto agrupados os comandos de uma determinadacategoria;OpesparareadeScripts OpesprincipalmenteparareadeScripts,trajesesons;readeedioeconexodeScripts(readeScriptsoureadecomandos) Ediodoobjetoselecionado:Nestareafeitaaprogramaoeauniodosblocos;Palco ondeosobjetossocolocadoseondepossvelveroresultadodaprogramaocriada.Oobjetoinicialqueaparecenopalcoogato;Modosdevisualizao Soostiposdevisualizaodopalco;IniciareParar SoosbotesparainiciarepararosScripts;BotesdenovoSprite Criaumnovopersonagemouobjetoparaoprojeto;Objetos usadosnaanimao(Lista deSprites) Aparecemminiaturas de todos osSprites.CliqueparaescolheseeditarumSprite.Oobjetoemedioficaselecionado.

    2.2.1. MenuGeralVeremosalgunsdetalhesdomenugeralcomomostradonatelaabaixo:

    Seleodeidioma alterarparaoidiomadeprefernciadousurio;Salvarprojeto salvandooprojetodeformarpida;Compartilhar projeto compartilhamento do projeto para a comunidade de formarpida,colocandooonline.

  • Projeto eJovem Mdulo II: Lgica de Computadores 15

    Dentrodomenugeraltemososseguintesmenus.MenuArquivo:Novo Abreumnovoprojeto;Abrir Abreumprojeto;Salvar SalvaroProjetoSalvarcomo SalvaroprojetocomoutronomeImportarprojeto Importaumprojetojexistenteparaumprojeto atual;Exportarprojeto Exportaoprojetoatual;Notasdoprojeto Inserenotassobreoprojeto;Sair FechaajaneladoScratch;MenuEditar:Desfazerapagar Permiterecuperaroltimocomando,blocoouSpriteeliminado.Iniciar passo a passo Mostra o passo a passo da execuo do programa.Marcarpassosimples... Fazcomqueopassoapassopossaserfeito maisrpidooumaislento.Comprimirsons comprimeossonsusadosnoprojeto,parareduzirotamanhodoprojeto.ExibirBlocosdeMotor:MenuCompartilhar:Compartilharoarquivoonline permitefazerouploaddoprojetopara o site, para ficar disponvel a todos os seus visitantes.IraositedoScratch VaiatapginadoScratch

    2.2.2. AlgunsElementosdoScratchFalaremosagoramaisdetalhadosobrealgunsdoselementosimportantesdentrodajanela:

    2.2.2.1. readecomandooureadeScript

    Area decomandoser ondemontaremosos nossos scripts quedarovidaanossaprogramaoquepodesetornarporexemploumjogo.Ao ladotemosumexemplodeumgrupodecomandosqueforam agrupadas e montado dentro da rea de comandos. Maisadianteaprenderemoscomomontarumblococomoeste.

    2.2.2.2. Palco

    Opalcoondeficaremostrarashistrias,jogoseanimaes.OsSpritespodemmoverseeinteragirunscomosoutrosnopalco.Opalcotem480unidadesdelargurae360unidadesdealturaeestdivididoentreascoordenadasXeY.Ocentrodopalcotemascoordenadas0em"X"e0em"Y".Parasaberaposiodeumdeterminadopontodentrodopalco,movaomouseatopontodesejadoeobservelogoabaixodopalconocantoinferiordireito.Pela imagemabaixo,indicasequeocursorestnopontoX:100eY:50.

  • Projeto eJovem Mdulo II: Lgica de Computadores 16

    2.2.2.3. Mostrandosistemadecoordenadaseorientaes

    Comofaladoacima,opalcotem480unidadesdelargura.e360unidadesdealturaedadopelosistemaortogonalXY.Podemosperceberistomelhoratravsdafiguraaoladoquemostrabemmelhorestesistemadecoordenadas.Este sistema, o centro dado a posio X:0 Y:0. Sepercebermos bemna figura, notamos que, para cima, o YficarpositivoeparabaixooYficarnegativo.AmesmacoisaocorresemelhantementeparaacoordenadaY.Paraaesquerda,ficaroXnegativoeparadireitaficarpositivo.Para sistema de direes, como mostra a figura ao lado, mostra omovimentoemgraus.atravsdasdireesquevamosgiraronossoobjeto dentro do palco. Guarde bemestes duas ultimas figuras quemostramtantoosistemadecoordenadascomoosistemadedirees.Iremosperceberparaoqueelasrealmenteservemnaprticalogologo.

    2.2.2.4. Sprite

    OSpritequalquerobjetodoScratch.ObservequeonossoSpriterepresentadoporumgato,portanto,todavezqueabrirmosoScratch,aparecerestafigura.Podemos ter vrios Sprites dentro do palco, onde eles podem aparecer,desaparecerefazerdiversasaesondeenvolvemoutrosSpritesparaformarumaanimaoouumjogo.Maisafrenteaprenderemosmelhordecomotrabalharcomosobjetos,podendoaumentalosoudiminuilos,duplicalosouapagalos,ouat outrasaesimportantes.

    2.2.2.5. Opesderotao

    Asopes de rotaodeterminamcomoo Traje vai secomportar.PorexemploseelepodegiraramedidaqueoTraje muda de direo, ou ser s para a direita ouesquerdaouseelenovaiterrotaoalguma(oTrajenuncaroda,mesmoqueoSpritemudededireo)

    2.2.2.6. Informaesdoobjeto

    Informaprincipalmentesobreonomedoobjeto,aposiodeleemXeemY,assimcomoadireo.

    2.2.2.7. Opesparareadescript

    compostodetrsabasqueseroestudadasposteriormente:Estasabasso:Comando(ondeficarooscomandoparaonossoSprite),Trajes(Ondeficaroostrajeseondepodemosacrescentaroutiralos)eSons(ondeficaroossonsquepodemosusar).

  • Projeto eJovem Mdulo II: Lgica de Computadores 17

    2.2.2.8. Encolher/Crescer/Apagar/DuplicarObjeto

    Comomostranafiguraao ladopodemoscrescerouencolherumobjeto assim como apagalo ou duplicalo. Clique emumdestasopeseemseguidacliquenospriteevejaoqueacontece.

    2.2.2.9. ModosdeApresentao

    Define comoo palco ser apresentado, assimele poder ser apresentadoempequenotamanho,comopalcocheioouemmodoapresentaoondeeleteremtodasuatelaaapresentaodopalco.

    2.2.3. Categoriadecomandos

    Comofoiditoanteriormente,temosumgrupode8categoriasdecomandoseelasso:Movimento DeterminaomovimentooSprite,fazendoelesemovimentarpararea.Aparncia Serve para principalmente substituio dos trajes, fazer aparecer oudesaparecerouaindafazerquequeapareadilogos.Som Temcomoprincipalfinalidadeimportarsonsoumsicas.Caneta Responsvel pelos traos deixados pelo objeto que est se movimentando,podendosermodificadocor,espessuraetonalidade.Controle Possuicomandosprdefinidos,responsveispelaestruturalgicadeconexoentreoutroscomandos.Sensores Serveparapercebercores, distncias e sonormalmentecombinadoscomoutroscomandos.Operadores Serveparafazeroperaesmatemticasentreoutros.Variveis Serveparacriar variveis paraarmazenar umdeterminadovalor paraserusadoposteriormenteassimcomotambmaquestodecriaodelistas.

    2.3. TiposdecomandosdoScratch

    DentrodasoitocategoriasdisponveisnaPaletedeComandos,htrstiposprincipaisdecomandos:

    ComandosSimples Estescomandostmencaixesnotopoenofundo,como .Algunsdestescomandostmreasondesepodeescrevernmeros(comoporexemploo

    "10"docomando )ouescolherumitemapartirdomenupulldown(talcomo"miau"nobloco).Algunsdestescomandostmumformatoemformade"C",onde

    podesinseriroutroscomandos,comoporexemplo .

    Cabea Estescomandostmumtopoarredondado,p.ex. .Destinamseasercolocadosnotopodeblocosdecomandosaguardandoporocorrnciastalcomo"clicarnabandeiraverde",paraqueassimsejamexecutadososrespectivosblocosdecomandos.

  • Projeto eJovem Mdulo II: Lgica de Computadores 18

    Valores Estes comandos, tais como e destinamse aseremencaixadosemcertasreasdoscomandossimples.Valoresdeformatoarredondado

    (como ou)indicamnmerosoulistas,epodemserusadosemcomandoscomreasarredondadasouretangulares(comoou).

    Osvalorescomextremidadespontiagudas(como )indicamvaloresbooleanos (verdadeiro ou falso) e podem ser inseridos em comandos com espaos

    pontiagudosouretangulares(como e ).

    Algunsvalorestmumacheckboxjuntoaosmesmos.Assinalandoacheckbox,ovalorficavisvelnoPalco,sendoatualizadodinamicamentemedidaqueformudando.Osvalorespodemsermostradosemdiversosformatos:

    umpequenomostradorcomonomedoindicador; ummostradorlargo,semqualquernome; comumsliderquepermitealterarovalor(apenasdisponvelparavariveis).

    2.4. MudandooSprite(ListadeSprites)

    QuandooScratchaberto,nopalcojestaparecendoogato.Masnemsempresedesejausaloeentopossvelinseriroucriarumnovoobjeto.Damesmaforma,possveltervriosobjetosemumaprogramao.Vejaaoladocomoapareceumnovoobjetonopalco:Paracriarouinserirumnovoobjetovoc deveclicaremumadasseguintesopes:Pintar umnovo objeto Abre umeditor que permite pintar edesenharumobjeto.EscolhaumSpritedoarquivo Permiteinserirumarquivodeimagemdocomputador.Pegarobjetosurpresa Clicandonesteboto,surgeumobjetosurpresanopalco,ouseja,apessoanodeterminaoobjetoquesurgir.OsSpritesficaronalistadeSprites, ondepodemosvisualizalosemodificarconformedesejarmos.

    2.5. Movendoumcomandoeexecutandoo

    De agora em diante vamos comear a estudarprimeiramente os comandos bsicos do scratch edepoispassaraconhecermelhorsuasfunes.Primeiramente devemos (como mostra a figura aolado)mover,ouarrastarumcomandoparaareadescripts.Paraissosclicaremcimadoobjetodesejado,seguraremovloparaareadeScript.Quando abrimos o Scratch ele abre diretamente naABAMovimento.Observeafiguraacimaetentefazeromesmo!Cliquenocomandomova10passosesoltenareadescript.

  • Projeto eJovem Mdulo II: Lgica de Computadores 19

    Para executar este simples comando, cliquesobre ele. Observar que aps o clique nocomandomova10passos,nossoSpritesemover.Observequeascoordenadasmudarotambm.Observequealgunscomandos, comoosdoexemploacimatemcamposdeedio,porexemplo eparaalterarovalor,clicasenanoespaodareabrancaeescreveonovonmero.Portantopratiqueclicandononumero10,ealterepara10.PressionenovamenteocomandoeperceberquenossoSpriteeascoordenadasvoltaroparaolugardeorigem.

    2.6. TrabalhandocomaabaMovimento

    J que sabemos agora como mover umcomandoparaareadescriptsesabemoscomoexecutalo vamos agora aprender sobre cadaumadasabas,eseusrespectivoscomandos.Conforme nossa progresso no contedo,faremos exerccios que pegar elementos deoutras abas para aprimorar mais nossosconhecimentos. Comearemos pela abaMovimento.Esta aba realmente onde podemos fazernossos Sprites andarem, ou seja semovimentarempelopalco.

    2.6.1. TrabalhandocomomovaComearemos a usar o comando mais comume primordial para o Scratch, ou seja omova.Ocomandomova,comovistoacima,ocomandoquedomovimentoparafrenteouparatrsdonossoSprite.Seforparafrente, colocaropassopositivo,porexemplomova10passos, casoparatrs,ouseja, decostasnocasodonossoSpritepadro,colocasemova10passos.Paratestar,altereonmerodepassosdocomandoqueestnareadeScripteobserveoqueacontecenareadosistemadecoordenadas.Paraalteralo,cliqueumavezemcimadonumeral10esubstituapor10.

    2.6.2. TrabalhandocomovirePercebesequecomomova,onossoobjetosomentesemovimentanoeixoX(ouseja,parafrente e para trs). Precisamos de alguma ferramente que faa com que ele faa omovimentoentreoeixoYtambm.ParaissoiremosutilizararotaoatravsdocomandoVire.Lembrese que temos umsistemade coordenadas e de direo. Visto estes 2 sistemasanteriormente,podemosdizerqueocomandomovaestdiretamenteligadoaosistemadecoordenadaseocomandovireestligadodiretamenteligadoaosistemadedireo,ouseja,comoviretrabalhamosogiro.Estegiroserdadoemgraus.Paratestar,movaosdoiscomandosdevire(Figuraaolado)paraareadeScript.FaaotesteclicandoalgumasvezesnoprimeirovireeobservequenossoSpritevaigirando.ObservetambmemquantosgrausestoobjetonasinformaesdoSprite.

  • Projeto eJovem Mdulo II: Lgica de Computadores 20

    Ateno:VolteparaotpicoMostrandosistemadecoordenadaseorientaesepercebaqueosistemadegraus,nocorrespondeaoquenormalmenteusamos.Tentegiraroraparaumlado,horaparaooutroevejaporfimoqueacontece.Apsfazerostestes,deixeoSpritenadireo90.

    Dica:Podemostestarousodeumcomandosemcolocarnareadescript.Paraisso, somente clique em cima em um dos dois comando( Pode clicarprimeiramentedodecimaedepoisnodebaixo). Observeoqueaconteceedepoisvolteparaadireo90.

    2.6.3. AlterandoonumerodegrausepassosnocomandoComojfoicimentadonotpico2.4.1,podemosalterarouonumerodepassosouonumerodegraus.Aprimeiraalternativamodificaronumerodiretamentenoprprioblocodecomandos.AsegundaalterardentrodareadeScript.Adiferenaentreaprimeiraeasegundaque,semodificarmosdentrodoblocodecomandos,searrastarmosocomandopara dentro da rea de Script, todos eles sairocomaquele numero. Por exemplo, setrocarmos o 10 de mova10passos por 20, qualquer comando igual a este quearrastarmos para rea de Script, sair no mais com o 10 e sim com o 20.Diferentemente , se alterarmosumque j est dentrodareadeScript, ser alteradosomente aquele comando. Estas alteraes serviropara outros comandos que usamomesmoconceito.

    2.6.4. MovendoevirandoJquetemosanooinicialdomovanpassoseviremgraus,ondeNeMsonumeraisquaisquerquevosimbolizaronmerodegrausepassodados,vamoscomearadarumamovimentaomaioraonossoSprite.Movadiversoscomandodemova10passosevire15graus,modificandoparavaloresdiferentes.CliquenelesevobservandoocomportamentodoSpritesemovimentandonatela.

    2.6.5. MostrandocomovoltarparaaposioinicialPossivelmentecomoseuSpritedevetersemovimentadobastantenoexerccioanterior,eledeveestartotalmentedesorientado,porexemplo, imaginequenossoSpriteest com:x:191y:177direo: 130(Faao teste paraver ondenossoSprite vai estar). Se forobservar,podenotarquenossoobjetoesttotalmenteperdido.SeriaumadasmaneiradearrumarmelhornossoSprite,clicarneleearrastarparax:0y:0,poremiriaficartrabalhoso,terqueficarmudandoonumerodegraus,eaindasimumpoucodasvariveisXeYparachegarnadireoecoordenadasexatasx:0y:0direo:90.Vamos facilitar as coisas usando mais comandos dentro da abamovimento.Observeafiguraaoladoevejaestescomandos.ArrasteosparaareadeScriptecliqueemambos.Comopercebe,aformafcildevoltaraposioinicial.Veremos que daqui para frente, alguns comandos tem "pulldown", por exemplo umcomandoqueveremosmaisafrentecomo.Cliquenasetadocomandoaponteparaadireoparaveromenu.Escolhaaopodesejadaclicandonela.

  • Projeto eJovem Mdulo II: Lgica de Computadores 21

    2.6.6. Trabalhandomaiscomaposioeaorientao

    Podemosexploraroutrosblocosaindadentrodemovimento,comoporexemplo: FazercomqueonossoSpritedeslizeporumacertaquantidadedesegundospelo

    palco; Fazercomqueelemudeovalordexe/ouyandandoumacertaquantidadedepassos; Fazercomqueelemudeaposiodoxe/ouypelovalordeterminado; FazercomquesejamostradodentrodopalcoaposiodeXe/ouYe/oudireo; FazercomqueseoObjetotocarnabordaelevolte;

    Volteaotpico2.4.etentedescobrirquiassooscomandosqueexecutamcadaumadasaesacima.DialoguejuntocomseuscolegasejuntocomoseuInstrutoramelhormaneiradeutilizalos

    2.7. Trabalhandoemblocos

    Atagora,trabalhamospraticamentecomcomandoindividuais,porem,teremosqueagoracomearaaprendercomojuntalosparaformarumScript.Ouseja,paraficarmaisclaro,umScript vai ser umconjunto de aes que vamos reunir para fazer nosso Sprite semovimentar.Paraissovamosabrirumnovoprojetosemsalvaroanterior.CliqueemArquivo Novo. Aparecerumajanelaparasalvaroprojetoatual,poremcomonovamosutilizalo,cliqueemnoeaparecerumnovoprojeto.Agora,arraste2blocosdeaesecoloqueumbemprximoaooutro.Quandosoltamos,perceberquecomosefosseumimos2ficarogrudados.Observeafiguraaoladoemonteestegrupodeaeseexecute.Percebaoqueacontece.

    2.8. Retirandoumaaodeumbloco

    Paraaretiradadeumaaodoblocosimples,segureestaaoepuxeaparabaixo,porexemploeperceberqueelevaisedesprenderdobloco.

    2.9. Removendoumaao

    DigamosquenoqueremosmaisumaaoouumScript(quecomoj sabemos umconjuntodeaes).PararemoverdareadeScript,simplesmentepegamosaaoouobloconomaisdesejadaepuxamosdevoltaparaoblocodeaes.Comisso,perceberqueogrupoouaaovaidesaparecer.

    2.10. Renomeandoumobjeto

    ObservedentrodareadeinformaesdeScriptquetemosescritoobjeto1.Paraalteraronome,porexemplo,queremoscolocaronomedoobjetocomogato.Cliqueemcimaedumduploclique. Modifiqueparaonomedesejado. Observedentrodareadeobjetosusadosquetambmmodificouonome.

  • Projeto eJovem Mdulo II: Lgica de Computadores 22

    2.11. Trabalhandocomabaaparncia

    2.11.1. TrabalhandocomTrajes

    Cada Sprite pode ter diferentes aspectos que so como de fossem partes de ummovimentos,oquechamasedeTrajes.ClicandosenaabaTrajes.Clicandonoseparador"Trajes"podesverquantosaspectosoSpritetem.Podemosatravsdisso,PintarumnovoTraje,Importarumnovotrajeouaindausaracmera(Webcam)parafotografarparaotraje.CasoqueiraseMexernoSprite,podemos,EditarouCopiar,ouApagaroSprite.Com os trajes e os comandos do exemplo abaixo, podes criaranimaes.Paraaopodetrajetemososcomandosmudeparaoprximotrajeeprximotraje,almdepodermostrarnopalcoqualotrajequeestsendousado(Observeosnaabaaparnciaetentemanipulaloscomeles).PosteriormenteabordaremosmelhorsobrecomomanipularmelhorcomosSprites.

    2.11.2. TrabalhandocomDigaePensePodemos fazer nossos objetos FalaremouPensarematravs dos comandosdiga epenseondepodeserfaladorapidamenteouporalgunssegundos.Arrasta para a rea de Blocos umdos quatro comandos da categoria "Aparncia" quepermitemacriaodebalescomasfalas.Podesalteraroquequeresqueospritedigaoupensenoprpriocomando.Podesdefinirotempodeduraodasfalas,ouusarcomandossemtempodefinido.

    2.11.3. MudandoosefeitosPodemostervriostiposdeefeitosparaalteraronossosprite:Cor ModificaacordonossospriteOlhodepeixe Modificaoformato,fazendocomqueseovalorcolocadoformuitogrande,ficacomaformadeumolhodepeixeGirar Deforma nosso sprite em forma deredemoinhoPixelar FazcomquenossospritededeformeatdesaparecerdependendodoqueforfeitoMosaico FaznossoobjetosemultiplicarempequenostamanhosBrilho ModificaobrilhodonossospriteFantasma Fazcomquenossospritevdesaparecendo.Pararealizarumdestasaesacima,arrasteparaareadescriptMudeoefeitoeescolhaoquequeresqueacontea,usandoomenu"pulldown"(Observeafiguraaolado).Caso esteja s testando, ou no seu projeto queira tirar(limpar) os efeitos, clique nocomando

  • Projeto eJovem Mdulo II: Lgica de Computadores 23

    Dica:Tantonestesblocosdeefeitocomoemoutros,podemosterblocoscomporeoutroscompara.Porexemplo:Naabamovimentotemosobloco mudexporemudexpara.Nesteprimeirocaso,cadavezqueclicamosnobloco,ovalordexvaisendoincrementado,dependendodoseuvalor,ouseja,digamosque temos mude x por 10, ento toda vez que clicamos, o x vai sendoincrementadoem10. Comomudexparaovalor dex ser constanteparaaquelevalordeterminado,ousejasecolocarmosumblocomudexpara10,noimportaquantasvezesclicamos,poiselesempreficarnaposio10.

    2.11.4. Modificandoostamanhos

    Modifica o tamanho do nosso Sprite. Estes comandosequivalem ao crescer objeto e encolher o objeto(vistoanteriormente).PodemosmostrarnoPalcoaporcentagemqueeleest,alterarparacertaporcentagemotamanho,ouqueelevaumentandoaoclicar.

    2.11.5. Aparecendo/desaparecendo

    EstescomandosfazemcomqueoScriptapareaedesaparea.

    2.11.6. Trabalhandocomcamadas

    Para os casos que precisase alterar a ordem dos sprites, porexemplo,umsobreporooutroouumaforma,temosaopodefazerissoatravsdosdoiscomandosaolado,ondepodemosfazercomqueonossoobjetosubaumacamada(primeira ao), oupodemosdeterminaronumerodecamadasaseremalteradas(atravsdasegundaao)

    2.12. Trabalhandocomaabadesom(adicionandosom)

    Japrendemosatagoracomodarmovimentoparaonossoobjetoemodificarparmetrosdaaparnciadele.Vamoscomearacolocarsonsnestenossoobjeto.PodemosprimeiramenteimportarumarquivojexistentedaprpriabibliotecadoScratchougravarumsom,podendoexecutar,pararouexcluir.

    2.12.1. TrabalhandocomocomandoToqueosom

    Comearemoscomocomandotoqueosomondetocarosomquequeremos,sejaeleumagravaofeitaouumsomjgravado.Parausarosomescolhidonasuaprogramaoescolhaoblocotoqueosomeencaixenoseuscript.

    Ateno:seosomnofuncionar,verifiqueseesterecursofuncionanoseucomputador(seosomestligadoeexistemcaixasdesomfuncionando).

  • Projeto eJovem Mdulo II: Lgica de Computadores 24

    2.12.2. TrabalhandocomToqueotamboreToqueanotaParacolocarsomnoscript(umsomdeinstrumentoou outro), voc pode usar o comando Toque otambor.Eleficadisponvelnacategoriasom.Voc podeusaresteblocodecomandosozinhoouagrupado com outros comandos, como mostradoanteriormenteemoutrosscripts.ComojsabemosesclicarearrastaroblocoparaareadeediodeScripts.Seforocaso,encaixeesteblococomosjexistentesnoscript.Para ver o funcionamento, d um duplo cliquesobreogrupodeblocos.Para escolher o som desejado, clique na setadestacadaeescolhaentreasopesdomenu.

    2.12.3. Trabalhandocomvolumeeritmo

    2.13. Ensaiandoumpdedana

    Aprendemos anteriormente os recursos de movimento e toque. Usaremos estesconhecimentosparafazerummovimentoqueenglobamovimentoesom.Primeiramentearraste2comandosmovaeumcomandotoqueotambor.Altereumdosmovaparaovalor10,comomostraafiguraabaixo.

    Depoistambm possvelacrescentaroutroblocodetoqueotamborapsosegundomovimento.Vamosentoincrementarumpoucomais,ecolocarumoutrotoque,comomostraaimagemabaixo.DumduplocliquesobreoScriptepercebaoqueacontece.

    Agora, implemente o Script semelhante aoda figuraao lado,introduzindo oblocosemprelocalizadonasecoControle.Cliqueemcimaevejaoqueacontece.Parainterromperoprogramauseobotovermelhonocantosuperiordireitodopalco,oucliquenovamentesobreoscript.

    2.14. Trabalhandocomaabacaneta

    Atagoraaprendemoscomomodificaraaparnciadonossopersonagem,fazelofalareattocar umsom.Agora importantecomear a pensar: comoseria fazer comque fiqueregistadonatelaalgoquandoonossoelementosemexer?Porexemplo,podemosquererdesenharfigurasgeomtricas,comoquadradostringulos,entreoutros.Porissovamosaprenderumpouquinhosobreaabacanetaeseuscomponentes.

  • Projeto eJovem Mdulo II: Lgica de Computadores 25

    2.14.1. UsandooAbaixar,levantar,carimbeelimpe

    Estassoasprincipaisaesdestaaba.Atravsdelaspodemosfazercomqueonossoobjetoaopassar,deixealgumrastrodasuapassagem,ouemdeterminadomomentodeixedepassar(comonaconstruodeumcaminho), usar o carimbe, que marca a passagem do elemento(marcadonopalcoumaimagemdoelemento)ouaindalimpartudo,deixandoarealimpa.

    2.14.2. Mudandoacor,otomeotamanhodacaneta

    Podemosalemdefazernossoobjetodesenharnatela,podemosalterarosparmetrosdestalinha,porexemplo,mudaracordacaneta para uma cor especifica, ou variar o valor dacaneta(utilizaros3primeiroscomandoaolados).possvelaindafazeramodificaodotomdestacaneta(paraisso, utilize os 2 blocos seguintes ao lado), onde vai variar atonalidadedacorescolhidaparamaisescuraoumaisclara.Por ultimo, mudar o tamanhodo trao, podendoser maior oumenor,dependendodovalorregistrado.

    2.15. Trabalhandocomaabacontrole

    Comoprprionomejsugere,aabacontrolepermiteaquemestfazendoosscriptsumcontrole maior sobre o que est fazendo, onde poder fazer comque um bloco sejainicializadoaopressionarumatecla, oudesdea inicializaodetodooprograma.Atoutras aes comoexecutar vrias vezes umadeterminadaao. Veremos abaixo maissobre.

    2.15.1. Usandooquando

    Atravsdestescomandos,possvelnormalmenteiniciarumbloco quando por exemplo, o programa for iniciado, ouquando o objeto for pressionado, ou ainda quando forpressionadoumatecla(determinadaporquemfezoscript).Aoladotemososprincipaiscomandosqueficamnotopodecadascript.

    2.15.2. Usandooscontrolesse/seseno

    Atravsdestesblocospossvelfazerotestedecondies,porexemplo,umcasobemclssicoseriafazeraverificaoseumobjetoesttocandonooutro,ou na borda (Ser visto mais a frente). Portanto nestes comandosnormalmente existemumconjunto deoutros dentro, ondese satisfazer acondio,realizaroscomandosdentro,seno,norealizar.

  • Projeto eJovem Mdulo II: Lgica de Computadores 26

    2.15.3. Usodocontrolesempre

    Comofoivistoanteriormente, possvelprogramarnoScratchqueumaoumaisaescontinuem acontecendo e se repetindo por tempo indeterminado. Para isso se usa ocomandoSEMPRE,disponvelnacategoriaControle.Clique e arraste o bloco SEMPREpara a rea de edio descripts.EncaixeogrupodecomandosdentrodoblocoSEMPRE.Paraarrastarumconjuntodeblocos, cliquesobreoprimeirobloco(notopodoconjunto)earrastetudo.ParapararaprogramaoapsusarocomandoSEMPRE,cliquenobotovermelhoquesignificaPararTudo.

    2.15.4. Usandooscontrolesrepita/repitaat/semprese

    Ocomandosemprese,realizadosemprequeacondioseguinteforverdade.Porexemplo,seriadizerSempreseteclaxforpressionada,ouseja, s ser executadoo que tiver dentro se o que tiver depois forsatisfeito. Neste caso, diferente do caso acima, pois o bloco serexecutadosempre,masnestecaso,elevaiexecutaroquetemdentrodoblococadavezqueateclaforpressionada.Acondiorepitajumpoucodiferente.Orepitafazcomqueumaao dentro do bloco seja realizada N vezes, ou por exemplo, sejarepetida at (repita at) uma tecla for pressionada(neste caso quando a tecla forpressionadaaaoirparar)

    2.15.5. Usandoopareeespere

    Estes comandos (pare e espere) normalmente servem, comoo prprionomejdizparapararouparaqueespereatumadeterminadaao.Oesperepodeservirparaqueseesperetantossegundos,ouparaesperaratqueumadeterminadacoisasejafeita(pressionadoobotodomouseoupressionadoumatecla.)

    2.16. Iniciandoeparandoumprograma

    Umadasmaneirasdeiniciaroupararosprogramas atravsdosbotes onde,abandeiraverde,iniciaoprogramaeobotovermelhoparaumprograma.OScratchtambmpossuicontrolesparaoinciodaexecuodosscripts.Umexemploabandeiraverdequeficasobreateladevisualizaodasprogramaes:elapodeserusadaparainiciarofuncionamentodeumscript. Paraisso necessrioquesejacolocadono

    scriptoblocodecontrolequeindica .

    Cliquenoblocoe arraste paraa readeediodescripts.Encaixeoblocosobreoconjuntojexistente,seforocaso.Estecontroledeveseroprimeiroemumgrupodeblocos,poiselequedeterminaoinciodestaexecuo.

  • Projeto eJovem Mdulo II: Lgica de Computadores 27

    Paratestar,cliquesobreabandeiraverdequesignificaIniciarScripts.A BandeiraVerde forneceumamaneiraconvenientedeiniciarvriosscriptsaomesmotempo. Clica na Bandeira Verde para iniciar todos os blocos com no topo.No"MododeApresentao"aBandeiraVerde,surgecomoumpequeno conenocantosuperior direito do ecr. Pressionar a tecla "Enter" temo mesmo efeito que clicar naBandeiraVerde.

    2.17. UsandoTeclasDetectandoteclaspressionadas

    Parainiciarumscript,almdeusarabandeiraverdepossveldeterminarumatecladoteclado que funcione como disparadora do script. Desta forma, quando a tecla forpressionadaoscriptiniciasuaexecuo.Paradeterminarqueo inciodaexecuoser definidoporumatecla,vocprecisacolocarnoinciodeumscriptocontrole.Arrasteoblocoparaareadeediodescripteoencaixenoinciodeumconjuntodeblocos.Para determinar qual tecla do teclado ser usada para iniciar oscript, clique na seta(ver imagem ao lado) e escolha a opodesejada.Voc podeusarumcontrole inicialdeScriptdiferenteparacadaconjuntodeblocos. assimquesefazparadeterminarmovimentosdiferentesdeumobjetodeacordocomocliquenassetasdedireodoteclado.

    2.18. Mudandoacordeobjetoquandopressionadadeterminadatecla

    IremosverdeformaprticaamudanadecoremumpequenoScript. Nafiguraaoladotemos2blocos. Oprimeiromudaoefeito de cor, enquanto o segundo ir retornar para a corprimria.Monteosblocosevejaoqueacontece.EmvezdeescolherateclaApodeescolheroutrateclaqualquer.Bastaselecionarateclapretendidanasopesdoprpriobloco.

    2.19. Mudandoostrajescomcontrole

    Parafazerumaanimao,noScratchbastantesimples.JvimosalgosobreissonotpicoTrabalhandocomtrajes,agoraveremosmelhorcomoautomatizarascoisasatravsdocontrole. O efeito final o mesmo de uma imagem gif, ou seja,imagensquesemechem,ondeaparecemdiferentesposiesdeumpersonageme a trocadas imagens das posies produza ideia deanimao.Escolhaoobjetoqueseranimadoecliqueemtrajes.Vocpodecriarasdiferentesposiesdoobjetodesenhandoonovoapartirdoinicial(fazerumacpiadooriginaleeditar)ouimportarasposies.Depoisfaaoscriptdoobjetoqueseranimado.UseoblocoSEMPREedentrodeleoblocoprximotraje.Esteblocofazoobjetoalternarentreseustrajesjcriados.

  • Projeto eJovem Mdulo II: Lgica de Computadores 28

    importantecolocarumtempoapsatrocadetrajeparaquesejapossvelvisualizaratroca,ouissoacontecermuitorpido.Exerccio:ColoqueosdoisScriptsnareaetenteanalisalos.Vejasetemounooutraspossibilidadesdefazerisso.AltereestesScriptsparaoutrasformasediscutaemsaladeaulacomoscolegasecomoinstrutoroquefoiaprendido.

    2.20. Tocarnabordaevoltar

    QuandovocfazalgumasprogramaesnoScratch,importantequeoobjetoaotocarnabordadopalcovolte.Umexemplodissopodeserumabolaquerola,batenabordaevolta.PuxeoblocomovaparaareadeediodeScripts.PegueoblocosempreecoloquenareadeediodeScripts.Encaixeomovadentrodosempre.Pegue o bloco se tocar na borda, voltena categoria Movimento e coloque dentro doSEMPRE.Sevocquiserqueabolacomeceaandarquandoforpressionadapelomouse(clicada),useocontroleabaixo:

    VoctambmpodedeterminarqueoScriptiniciequandoabandeiraverdeforpressionada.

    2.21. Desenhandoumaestrada

    O Sprite, ao moverse, pode deixar rasto. Para tal, antes de mandar executar oscomandosdemovimento,precisoselecionar oblocoabaixe acaneta.ParaqueoSpritedeixededesenhar,useoblocolevante acaneta.Paralimparosefeitosgrficosdopalco,utilizeoblocolimpe.

    2.22. Desenhandoumquadrado

    ObserveoScriptaoladoetentefazeromesmoparacriarquadrados. Altere este Script de modo a desenharquadradosdediferentestamanhos.Lembrese queparaalterar a a posio e orientao doSpriteutilizeoscomandos indicadosnoblocoseparado .

  • Projeto eJovem Mdulo II: Lgica de Computadores 29

    Exerccio:ApartirdoScript anterior,faaasalteraesqueacharnecessriasparadesenharumtringulo,umpentgono,umhexgono,umacircunferncia.

    2.23. TrabalhandocomaabaSensores

    2.23.1. Comandostocandoem/tocandona/tocandocor

    Atravsdestescomandosagorapodemosutilizarmelhorosnossoscomandosdecontrole,porexemplo,podemosagorasaberseonossoobjetoest tocandoemumadeterminadacor,ounoponteirodemouseounabordaporexemplo,ouseuma cor est tocando em outra cor. Para testar, construaalgumscriptusandooblocoaoladocomocontroleSE.

    2.23.2. Comandospergunteeresposta

    possvel tambm fazer perguntas e exibir as respostas poralgumtempononosso palco. Vamosconstruir a estruturaaoladoevejaoresultado.

    2.23.3. Comandosmousexemousey

    Estesdoiscomandostemcomocaractersticainformarosvaloresdexey.Digamosquesequeiraaomoveromouseacordonossospritesejamodificada, ouutilizaroutroefeitoquandoomousesemoverpelatela.Observeoblocoaoladoetentefazeralteraescomoutrosefeitos.Outra maneira que podemos utilizar praticamente com omesmobloco,masaoinvsdeutilizaroMudeoefeito,utilizeodiga

    2.23.4. Comandosmousepressionado/teclapressionada/temporizador

    Estes comandos vo identificar alguma ao do teclado ou domouse. Assimcomoos exemplos anteriores, temos que ter umcomando de controle que normalmente o sempre. Porem,vamosmodificarumpoucoefazerautilizaodocomandosemprese,ouseja,atravsdisso,aaonoserfeitasempre,esimsseateclaouomouseforpressionado.Observe os blocos ao lado e faaos e tente ver o queacontece.J o temporizador funciona como um cronometro, ondedesdeaaberturadoprograma,vaicorrendootempo.

    2.24. MovimentandoSpriteporSensores

    ParamelhormovimentarnossoSprite,observeoaoladoTentefazloeexecutar.Evejaoqueacontece.Observequeestescript s vai emuma direo, ou seja , ele move 10 passossomenteparaadireita.

  • Projeto eJovem Mdulo II: Lgica de Computadores 30

    Combasenisso,faaomesmoportodososlados(parabaixo,paraesquerdaeparacima).ColoquetambmumaaoparaquequandopressionadaateclaP,pareoScript.

    TrabalhandocomaabaOperadoresDentro da abra de operadores, temos primeiramente os operadores de operaesmatemticas(comosoma,subtrao),depoisosoperadoresdecomparao(maior,menoreigual),operaodepalavras(mostraronumerodeletras,ouparajuntarpalavras), arredondamento ou mostrar o resto de uma diviso entre outros.Observeaasfigurasdecomandosabaixoetenteusarelescomosblocosestudadosatagora.

    2.25. Movendosecomrelaoaotemporizador

    Esteexemplodaideiadecomovamosusarotemporizador.DesdequeoScratchiniciado,otemporizadorcomeaafuncionar.Poremtemosaopozeretemporizadorsequisermosrecomearacontagem.Observeoexemploaoladoeoimplemente.Discutacomos colegas o que ele faz e tente ver outras maneiras de usar otemporizadorcomosconhecimentosadquiridosataqui.

    2.26. FalaeCalcular

    Comovistoanteriormente,onossospritepodefalaratravsdocomandodiga.Comojfoivisto,nelepodersedeterminaroquserditoeotempoqueessamensagemficaraparecendo.Vamos usar um simples script que faa um simples calculo j prdeterminado:Monteoblocoabaixoparaelefalarecalcular

    2.27. TrabalhandocomaabaVariveis

    A aba variveis, vai nos proporcionar trabalhar com valores quevariam com o tempo, fazendo com que um certo valor sejaarmazenadotemporariamenteparaserusadofuturamente.Atravsdaaba varivel, podemos inicialmente criar uma, especificando emseguidaonomedestavarivel.NOcasoaolado,denominamosnossavariveiscomonomevariveis,ondepodesemudarovalordavarivelparaumvalor,ouporumvalor(nestesegundocaso,oquetememvarivelcasosejaumvalor,serincrementadoacadapassagem,ouclique,pelobloco)

  • Projeto eJovem Mdulo II: Lgica de Computadores 31

    2.27.1. Usandovariveis

    Construa um Script que desenhe quadrados cujos ladospodemvariar decomprimento.Para tal, recorra seco Variveis e defina a varivelcomprimento que,neste caso,podeassumir osvaloresde0a100.Antes demandar executar oprograma, faa duplocliquesobre a caixa correspondente varivel fazendo surgirumamenudeslizante.Arrasteabolinhabranca,selecionandoumvalorparaocomprimento.

    2.27.2. Listas

    No Scratch possvel criar e manipular listas de itenscompostaspornmerosefrases.Paracriarumalista, precisoirnoblocodeVariveis edepoisem"CriarumaLista"dandoumnomeaela.Umavezalistacriada,vriosblocosirosurgir.Quandocriaseumalistaelaficavisvelnopalco,mostrandotodos os seus itens. possvel editar os itens da listadiretamentenopalco.A lista criada vazia, coma indicaode "itens: 0". Paraadicionaritenslista,clicanosmbolo"mais",nocantoinferioresquerdodomostrador.Como alternativa, podese adicionar itens usando comandos simples (exemplo:

    ).

    possvelajustarotamanhodoespaodalistar,arrastandolheocantoinferiordireito.PodeseaindateraopodequererexportaralistaparaumdocumentoTXTclicandocomobotodireitoquesercriadodiretamentenapastadeinstalaodoScratch.Inversamentepodesusaraopodisponvelparaimportardadosparaumalistaapartirdequalquerficheiro.TXTcomumitemporlinha.

    2.28. Caracteres

    Podemformarseconjuntosdecaracteresusandoletras,algarismosououtroscaracteres.Osconjuntosdecaracterespodemserguardadosemvariveisoulistas.Podescompararconjuntosdecaracteresatravsdosseguintescomandos:

    A comparao feita a comear nos primeiros caracteres. Os algarismos so os maispequenos,seguidosdoscaracteresespeciais,dasletrasmaisculasefinalmentedasletrasminsculas,porestaordem.Nocasodosprimeiroscaracteresseremiguais,socomparadosossegundoscaractereseassimsucessivamente;pormseumdosconjuntosapenastiveralgarismos,entosertratadocomonmeroeacomparaonopossvel.

  • Projeto eJovem Mdulo II: Lgica de Computadores 32

    2.29. Criandoumpequenoaplicativo

    Usandotodosos conhecimentosanteriores, vamoscriar umminiaplicativoqueter osseguinteselementos:umabola,afiguradedoisjogadores(Jog1eJog2)eondecadaumpodefazergolnooutro.Primeiramente,vamosescolherosnossosSprites, portanto,escolhaoSpritedoarquivobeachball1dentrodapastathings.Depois,encolhaoobjetoparaficaremumtamanhorelativamentepequenoerenomeieparaonomeBola.Onossoobjeto1seronossojuiz,entonomeieparaJuiz.Escolha tambm os Scriptes bat1a e bat1b, renomeandorespectivamenteparaJog.1eJog.2.Diminuatodososobjetosparaficarpraticamentedomesmotamanhodabola. Observeafiguraaoladootamanhorealeoreduzidocomobase.Naimagemabaixotemosaideiadecomoficarosnossoselementos.

    Vamoscomearaprogramaodanossabola.Primeiramentevamosdaromovimentoaestabola,portanto,cliquenabolanareadeSpritesecoloqueoScriptaolado.Paramuitasprogramaes,jogosehistriasimportanteusartestes.Podemosfazerumabolabateremumobjetoequandoelabater,voltar.Mascomoelavaisaberquebateu?Comodeterminaroqueacontecequandoelabate?VamoscomearpelaprogramaodoJogador1(Jog1).EparaissomonteoScriptaolado. Apsmontado,dupliqueoScriptetroqueJog1porJog2eadireo45peladireo45.CliquenaBandeiraVerde e veja o que acontece. Perceba quequandoabola toca noJogador1,elavainadireo45equandotocanoJogador2elevainadireo45.Podemostambmfazercomqueabolassemovimentequandoclicadanela,paraisso,useocontrolequandoBolaclicado.No Script perceba que como tem o se tocar na borda,volte, quando toca na borda(qualquerbordadopalco)elavoltanadireocontrria.VejaqueforamfeitostrsScriptsseparados:umparaomovimentodabolaeoutrosparaomovimento dos jogadores. Tambm possvel fazer tudo junto, usando apenas umcontroledeinciodoScripteapenasumblocoSEMPRE.Exerccio:ModificarosScripts,paraqueostrstornemsesum.Agoravamoscomplementaronossoprojeto.Odesafiofazerumabolairnadireodogolopostoesebaternele,dizerPontoparaoJogador1ouPontoparaoJogador2.

  • Projeto eJovem Mdulo II: Lgica de Computadores 33

    ParaesteexemploforamimportadososobjetosbuttonebuttonPressed e chamados de Gol 1 e Gol 2.Rotacionamososbotesparaficarcomomostraafiguraaolado.Vamosagorafazercomquenossabolasemprepartadeumponto especifico, ou seja, que parta toda vez queiniciar do ponto x:0 y:0 apontando para a direo 0graus.Implementeissoentreooscomandosquandoeosempre.Agora,devemosfazercomquequandotocaremumdosGols,eledigaisso.AcrescentenareadeediodeScriptsoblocose,senoqueficanacategoriaControle.Coloquenoespaodoseosensortocandoem....eselecioneoGol1.VocpodecolocardentrodosenoocomandoMOVAparaqueabolaandesenotocarnoGol1.Massedeixarosenovazio,apenasnoacontecernadaquandoabolanotocarnoGol1.Dentrodoblocosecoloqueaaoquedeveocorrerquandoabolatocarogol,ouseja,coloqueoblocoPontoparaoJogador2por2segundos.ColoqueoblocodentrodeumblocoSEMPREparaqueestetestesejafeitootempotodo.DepoiscoloqueumcontrolequedetermineoinciodoScript.Observeoexemplodafiguraaolado.DupliqueoblocoetroqueGol1porGol2ePontoparaoJogador2porPontoparaoJogador1

    Exerccio:Faacomqueelesemovimenteparatodososladosequefiquemudandodetraje

    2.30. Abrindoprojetosjexistentes

    Podemosaindavisualizarprojetosjexistentes.Paraisso,clicamosnomenuarquivo Abrir...Clicaseemexemplos,entosescolheroquedesejar

    2.31. Compartilhando

    Parafazerocompartilhamento,devesecolocarologineasenhacomqueseregistrounoScratch e, tambm,o nomedo projeto. Podese assinalar vrias etiquetas, para que oprojetosejalocalizadodeformamaisrpida.Depoispodestambmescreveralgumasnotassobreoprojeto,porexemploinstruesdeutilizao.FinalmenteclicasemOKparaenvialo.

  • Projeto eJovem Mdulo II: Lgica de Programao 34

    Captulo3. Python

    3.1. IntroduoaoPython

    Devemoslembrarprimeiramente,antesdeentrarnestalinguagemdeprogramaoalgunsconceitosimportantes.Temosoalgoritmoqueummtodoparasolucionarproblemas.Apartirdoalgoritmogeradooprograma.Osprogramastipicamenteprocessamdadosdeentradaeproduzemdadosdesada.

    3.2. OqueoPython

    Python uma linguagemdeprogramaopoderosa e de fcil aprendizado. Ela possuiestruturasdedadosdealtonveleficientes,bemcomoadotaumaabordagemsimpleseefetivaparaaprogramaoorientadaaobjetos.Suasintaxeeleganteetipagemdinmica,emadio sua natureza interpretada, tornamoPython ideal para scripting e para odesenvolvimentorpidodeaplicaesemdiversasreasenamaioriadasplataformas.OinterpretadordePythonesuaextensabibliotecapadroestodisponveisnaformadecdigo fonte ou binrio para a maioria das plataformas a partir do site,http://www.python.org/, e deve ser distribudos livremente. No mesmo stio estodisponveisdistribuiese refernciasparadiversos mdulos, programas, ferramentasedocumentaoadicionalcomacontribuiodeterceiros.OinterpretadordePythonfacilmenteextensvelincorporandonovasfunesetiposdedadosimplementadosemCouC++(ouqualqueroutralinguagemacessvelapartirdeC).Pythontambmseadequacomolinguagemdeextensoparacustomizaraplicaes.EstaapostilaintroduzoleitorinformalmenteaosconceitosbsicoseaspectosdosistemaelinguagemPython.aconselhvelteruminterpretadorPythondisponvelparasepoderpor a mo na massa, porm todos os exemplos so autocontidos, assim a apostilatambmpodeserlidasemquehajaanecessidadedeseestaronline.Para uma descrio dos mdulos e objetos padro, veja o documento Referncia daBiblioteca Python. O Manual de Referncia Python oferece uma definio formal dalinguagem.ParaseescreverextensesemCouC++,leia EstendendoeEmbutindooInterpretador Python e Manual de Referncia da API Python/C. Existem tambmdiversoslivrosabordandoPythonemmaiorprofundidade.Estaapostilanoalmejaserabrangenteouabordartodososaspectos,nemmesmotodososmaisfrequentes.Aoinvsdisso,eleintroduzmuitasdascaractersticasdignasdenotaemPython,eforneceravocumaboaideiasobreoestiloeosabordalinguagem.Apsaleitura,vocdevesercapazdelereescreverprogramasemdulosemPython,eestarprontoparaaprendermaissobreosdiversosmdulosdebibliotecadescritosnaRefernciadaBibliotecaPython.Nofinaldestaapostilahalgunslinksdereferncia,comosquaisvocdeveacessarcasoseinteresseporsabermaissobrealinguagemPython.

  • Projeto eJovem Mdulo II: Lgica de Programao 35

    3.3. IniciandoousodoPython

    Por Python ser uma linguagemde fcil entendimento, a sua curva de aprendizado bastante curta. Inicialmente utilizaremos como base para o aprendizado de lgica deprogramao,masPythonpodeserusadoemdiversosscriptsdeautomatizaodetarefasbsicasnocomputador,passarporaplicativos desktopscominterfacesgrficasechegarasistemasparainternetbastantecomplexos.

    3.4. UtilizandooPromptdopython

    Vamos tentar utilizar alguns comandos bsicos em Python. Quando o prompt estiverpreparadopararecebercomandoselevailheindicarcomopromptprimrio'>>>'.Emumoutromomentoiremosvisualizartambmopromptsecundrio'...'.Suafunoservistamaisafrente.Vamos tentar alguns comandos simples emPython. Inicie o interpretador e aguarde opromptprimrio,>>>.Agoravamoscomearaexecutarcomandossimples:

    >>>1010

    Exerccio: Executevriosnumerais emseguidaparacomearausaropromptdoPython.

    3.4.1. UtilizandooPythoncomoumacalculadora(utilizandonmeroseoperadoresaritmticossimples)

    Ointerpretadoratuacomoumacalculadorabemsimples:vocpodedigitarumaexpressoeovalorresultanteserapresentadoapsaavaliaodaexpresso.Asintaxedaexpressoausual:operadores +, , * e / funcionamdamesmaformaqueemoutraslinguagenstradicionais(porexemplo,PascalouC):Percebaaprecednciadosoperadores,senoutilizarmosparentesesnoprimeiroexemploamultiplicaoserrealizadaantesdasubtraoeovalortalveznosejaoesperado.

    >>>23*513>>>(23)*55>>>12/34

    Exerccio: Resolvaalgumasoperaes levandoemconsideraoaprecednciadosoperadoresefazendousodeparntesespararesolverospossveisproblemas.

    InterfaceGrficasojanelasqueajudamnausabilidadedeumprograma.Oseueditordetextosumprogramacomumainterfacegrfica.

  • Projeto eJovem Mdulo II: Lgica de Programao 36

    3.4.2. Inserindocomentrios(#);

    Podemosaindafazercomentrioscomocaractere#,todocomentrioprecedidodestecaractere,podeserutilizadotantonoinciodalinhacomonomeiodalinha,logoapsumainstruo vlida. Quando fazemos um comentrio no cdigo, esta linha se tornaimperceptvel para o interpretador Python. Comentrios comoestes deixamseucdigomaislegvelparaoutrosprogramadoreseajudamnoentendimentodecertostrechosdoseuprograma.

    >>>#Issoumcomentrio....2+24>>>2+3#Comentriotambm!5

    Notrechoemvermelhodocdigoacimaobservamosopromptsecundrio,comentadonaseo 3.4. O prompt secundrio est esperando alguma ao do programador (nestemomentovocpodeincrementarseucdigo,mesmoestandonointerpretadorPython)sejaumasimplesequaoouopressionardoEnter.

    Exerccio:Escrevacomentriosnointerpretador,mesclecomcomentriosnomeiodalinha(apsoperaesaritmticas).

    3.4.3. Tipodevariveis/TiposdeDados

    TiposdeDadossocategoriasdevalores, ondedentrodecadacategoriaosdados(dacategoriaX)soprocessadosdeformasemelhante.Porexemplo,nmerosinteirossoprocessadosdeformadiferentedosnmerosdepontoflutuante(decimais)edosnmeroscomplexos.Temsetiposdedadosprimitivosquesoaquelesjembutidosnoncleodalinguagem,ondenormalmentesodivididosentresimplesecompostos.Ossimplessonormalmenteosnmeros(int,long,float,complex)ecadeiasdecaracteres(strings).Oscompostossoporexemploaslistas,dicionrios,tuplaseconjuntos.Existem tambmos tipos definidos pelo usurio que so correspondentes a classes naorientaoaoobjeto.

    Variveis

    Asvariveissonomesdadosareasdememriaondeosnomespodemsercompostosdealgarismos,letrasou_;Poremoprimeirocaracterenopodeserumalgarismo;Deveseterocuidadocomousodepalavrasreservadas(if,while,etc)poissoproibidasuslascomovarivel.Asvariveisservemparaguardarvaloresintermedirios,construirestruturasdedados.Umavarivelmodificadausandoocomandodeatribuio:

    Var=expresso

  • Projeto eJovem Mdulo II: Lgica de Programao 37

    possveltambmatribuirvaloresavriasvariveissimultaneamente:

    var1,var2,...,varN=expr1,expr2,...,exprN

    3.4.4. Atribuiodevariveis

    Umavarivelmodificadausandoocomandodeatribuio,noPythoncaracterizadapelosinaldeigual(=).Variveis so criadas dinamicamente e destrudas quando no mais necessrias, porexemplo,quandosaemdoescopodeumblocodeinstrues.OtipodeumavarivelemPythonmudaconformeovaloratribudo.Setratandodogeralemtermosdelinguagensdeprogramaotemosalgunstiposdedadoscomunsatodaselas(int,float,string).

    Dica:Emalgumaslinguagensdeprogramaootipodavarivel definidanoinciodocdigo,eestavarivelsiraceitarvaloresdotipodefinido!

    Observealgunsexemplos:

    >>>a="1">>>b=1

    Observequeasduasvariveisacimaforamdeclaradascomtiposdiferentes,aotentarmossomarosvaloresdavarivelacomavarivelb,temososeguinteerro:

    >>>a+bTraceback(mostrecentcalllast):File"",line1,in?TypeError:cannotconcatenate'str'and'int'objects

    Oerroinformaquenopossvelconcatenar(ousomar)doistiposdedadosdiferentes.Nesteexemplosoeles:StringeInteiro.

    3.4.5. UtilizaodeconstantesevariveisnoPython

    Podemosentotambmcomearaatribuirvaloresavariveisevisualizarosseusvalores:

    >>>a=1>>>a1>>>a=2*a>>>a2>>>a,b=3*a,a>>>a,b(6,2)>>>a,b=b,a>>>a,b(2,6)

    (

  • Projeto eJovem Mdulo II: Lgica de Programao 38

    3.4.6. UtilizandoStrings

    As linguagens de programao fornecemmeios de manipular Strings. Python tambmtrabalhacomelasdediversasformas,elaspodemserdelimitadascomaspassimplesouaspasduplas.

    >>>'stringcomaspassimples''stringcomaspassimples'

    >>>s=stringcomaspasduplas

    PodemosaindatrabalharcomumasequnciadeStrings,paraisso,fazemosusodetrs(3)aspas(simplesouduplas)juntas.'''ou

    >>>texto=Essetextoserimpressodamaneiracomofoi

    escrito

    Maisafrenteveremosemumtpicoseparado,overdadeirousodesteoutrotipodestringcomentadoacima.

    3.4.7. Visualizandootipodevariveltrabalhada(type())

    Muitasvezesnecessitamossaberotipodevarivelcomaqualestamostrabalhandoeparaissoutilizamosomtodotype().Noexemploaseguir,declaramosumavariveldenomeaeatribumosaelaovalornmero2inteiro.

    >>>a=2>>>type(a)

    Aomudarmosovalordavarivelaparaumoutrotipo,comoporexemplo,umvalorreal.

    A=2.0type(a)

    Verificamoscomafunotype(),queamodificaoaconteceusemerros.EsseresultadosemerrosumaparticularidadedalinguagemPythoneoutraslinguagensdealtonvel.RelembrarNOTAnaseo3.4.4.Exerccio:Declareoutrasvariveiseutilizeocomandotype(varivel)paravisualizarotipodamesma,procureutilizarvariveisdeoutrostiposquenoInteirasedepontoflutuante.

    3.4.8. Imprimindoresultados(print())

    Atomomento,aindanoimprimimosnenhumainformaonatela.Pythonnosforneceafunoprint()pararesolveressaquesto.Asuasintaxebemsimples:print(variavel)(semasaspas).Comestafuno,nsimprimimostodosostiposdedadosnasadapadrodocomputador,queomonitor.

  • Projeto eJovem Mdulo II: Lgica de Programao 39

    Supondoadeclaraodeumavarivel,temososeguinteexemplo:

    >>>print(b)2.0>>>print(imprimindoumastring)imprimindoumastring

    Podemosformatarasadadafunoprint()comalgunsparmetros,paraimprimirmosnatelaasexpresses:

    a+b=5c+d=7.4MeunomeJooeeutenho21anos.

    Contandoqueoprogramador j tenha, anteriormente, declaradoas variveis, temos oseguinteresultado:

    >>>print(a+b=%d%(a+b))a+b=5>>>print(c+d=%.1f%(c+d))c+d=7.4>>>print(Meunome%seeutenho%danos.%(nome,idade))MeunomeJooeeutenho21anos.

    Percebaa diferenaentre uma instruoeoutra (emvermelho), noprimeirocaso%dindicaqueserimpressoumvalorinteiro,jnosegundocasoo%1.fdarlugaraumvalorde ponto flutuante com apenas uma casa decimal. J no terceiro exemplo, temos autilizaodeduasvariveis(uma String eoutradotipointeiro)emumamesmafunoprint().Existemaindaoutrasformasdeimpressoformatada.Paracadatipodedado,existeumsmbolocorrespondente,vejaatabelaabaixo.

    %d Imprimeumvalorinteiro.

    %s ImprimeumavariveldotipoString.

    %X ImprimeavarivelinteiranaformadeHexadecimal.

    %o ImprimeavarivelinteiranaformadeOctal.

    %f/%.nf Imprimeumvalordepontoflutuante/Imprimeumvalordepontoflutuantecomncasasdecimais.

    3.4.9. Utilizandoaquebradelinha(\n)

    Nofinaldetodaimpressoutilizandoafunoprint(),ocursorvaiparaumanovalinha.Issosedeveaocaractereespecial(noimpresso)\n(semaspas),suafunoquebraralinha.BasicamenteequivalenteaoescrevermosumalinhanoeditordetextoseemseguidaapertaroEnter.

  • Projeto eJovem Mdulo II: Lgica de Programao 40

    Suautilizaoexplcitapodeserfeitadaseguintemaneira:

    >>>var1=oi,>>>var2=\n>>>var3=tudobem?>>>print(%s%s%s)oi,tudobem?

    Tambm possvel escreverconstantes String emvrias linhas incluindoasquebrasdelinhausandotrsaspasduplasousimplescomodelimitadores,vejaoexemplo:

    >>>print"""ProjetoEjovemLgicadeProgramaoPython"""ProjetoEjovemLgicadeProgramaoPython

    Exerccio:TrabalharcomostiposdevariveisnoPython,tentandoveraspossveisformasdeseutilizaraquebradelinha.

    3.5. Trabalhandocomblocodeinstruesefazendoumprograma

    Nostpicospassados,trabalhamosapenascomointerpretadordoPython,ecomisso,todavezquesaamosdointerpretador,asvariveisutilizadasdesapareciam,isso,otrabalhoeraperdido.Seprecisarmoscriarumscriptparaautomatizaralgumatarefanosistema,ouatmesmoumprogramaparacalcularumaexpressomatemtica,precisamoslidarcomarquivoscontendocdigoPython.TodoarquivoPython,temaextenso.py.Existeaindaalgumasparticularidadesqueserocomentadasaseguir.

    1#!/usr/bin/envpython2#*coding:utf8*

    umaboaprticacolocarestasduaslinhasnoinciodearquivosPython.Aprimeiraindicaao script ondeest o interpretador Pythonnoambiente Linux. Asegundanospermitecolocarcaracteresacentuadosnestesprogramas/scripts.Podemosagoraescreveroprimeiroprograma.Abraoeditordetextosedigiteoseguintetrechodecdigo:

    1#!/usr/bin/envpython2#*coding:utf8*3#exemplo1.py45a=26b=57c=(a+b)*a89print(Ovalorde(2+5)*2iguala%d%c)

  • Projeto eJovem Mdulo II: Lgica de Programao 41

    3.6. Rodandonoshelloprograma

    Feitoisso,devemosexecutaroprogramanoshelldoLinux.AbriremosentooterminaldoLinux.PressioneacombinaodeteclasALT+F2edigitekonsole(semaspas).Dirijaseao local onde foi salvo o arquivo exemplo1.py utilizando seu conhecimento em linux(utilizecd/pasta).Executamosoarquivocomoseguintecomando:

    coordenador@cord06:~$pythonexemplo1.pyOvalorde(2+5)*2iguala14

    Percebaquenossoprogramanonadacomplexo,comotempovamosincorporarmaiscdigoaonossoexemploefazendonovosprogramas.

    3.7. Docstrings(quandoprecisaseinserirumcomentriomaior,comoumadocumentao);

    Utilizamosdocstringsquandoprecisamosinserirumcomentriomaior,comoporexemplo,umadocumentao,ondeexplicamosmaisdetalhadamentealgumapartedenossocdigo.Nsiremosusarmuitoestaprticadedocumentao.Comelairemoscriaradocumentaodeumprogramadeformamaisprofissionaleprtica.Aofinalizarmosatarefadedocumentaodocdigo,podemosgerarumarquivo.html,outalvezumarquivo .pdf,paraservirdeestudoouatmesmoparamanutenodocdigoescrito.Pormestaparticularidadenoservistanessaapostila.Editeoarquivoexemplo1.pyedeixedaseguinteforma.

    1#!/usr/bin/envpython2#*coding:utf8*3#exemplo1.py45'''Esteprogramacalculaaexpresso6(a_b)*2