Sunteți pe pagina 1din 90

TableofContents

1. Apresentação1.1

2. Licença1.2

3. ToDo1.3

4. Algoritmo1.4

5. VisuAlg1.5

6. Portugol1.6

1. OCódigoEstruturado1.6.1

2. NomesePalavrasReservadas1.6.2

3. Variáveis,ConstanteseTiposdeDados1.6.3

4. SaídadeDados1.6.4

5. EntradadeDados1.6.5

6. Fluxograma1.6.6

7. InstruçõesdeControleeOperadoresLógicos1.6.7

8. OperaçõeseFunçõesMatemáticas1.6.8

9. TabeladaVerdadeeDepuração1.6.9

10. RelaçãodeComandosPortugolparaVisuAlg3.01.6.10

7. QuestõesparafixaçãodaPrimeiraParte1.7

8. C/C++-IntroduçãoaLinguagem1.8

1. HistóriadaLinguagemCeC++1.8.1

2. NossaIDEparaaprendermosC1.8.2

3. EstruturaBásicadeumAlgortimoemC1.8.3

4. CompilandoouInterpretando,comooCétratado?1.8.4

5. TiposdeDadosemC1.8.5

6. EstrturadeControleemC1.8.6

7. BibliotecasImportantesdoCeSuasFunções1.8.7

8. ComunicandocomoMundoExerno1.8.8

9. Arduino1.9

1. IntroduçãoaoArduino1.9.1

2. ExemplosBásicosdeUsodoArduino1.9.2

1. KeyboardeArduino1.9.2.1

3. ArduinoeSeuControladorAVR1.9.3

4. AlgoritmosparaArduino1.9.4

10. SugestãodeLeitura1.10

Apresentação

Apresentação

IntroduçãoaLinguagemdeProgramação

Com VisuAlg, Portugol e C/C++ para os primeiros passos na ProgramaçãoparaArduino

ATENÇÃO: Esta apostila está sendo escrita, portanto está em constante alteração, visite regularmenteositeparaobternovasatualizações

Sugestões e Correções: Para enviar sugestões e correções, envie por e-mail consultoria@carlosdelfino.eti.brdescrevanoassuntooquesetrata,elembre-sedesitarolinke capítulo,procuredardetalhes.Suasugestãoserábemvinda.

ApostilaVersão:0.1

ApostilaVersão:0.1 Image1.1.1-CreativeCommonsLicense This work is licensed

Image1.1.1-CreativeCommonsLicense

VejaMaisinformaçõessobrealicençaclicandoaqui

Sejambemvindos,acreditoquefizeramumaboaescolhaemcomeçaraleituradestaapostilapela

introdução,vejamosentãonossoobjetivocomela.

Nesta apostila iremos aprender a programar para Arduino, porém adotaremos a abordagem do aprendizadodepequenosalgortimosatravésdoVisuAlgumainterfacedeaprendizadobaseadana linguagemPortugolquetornaoentendimentodasestruturasdecódigomaisintuitivaparaquem nunca programou antes. Uma vez dominado tais algoritmos partiremos para o aprendizado da

linguagemC/C++usandooArduino,atravésdeemuladornosite123DdaAutoDeskquepodeser

encontradonositehttps://circuits.io/,masnadaimpedequeuseumArduinoreal,seotivereclaro

pequenoscomponentescomoleds,resistores,epotênciometros.

Note"OVisualgéumprogramaqueedita,interpretaeexecutaalgoritmoscomumalinguagem próxima do português estruturado como um programa normal de computador." (fonte:

Wikipedia)

ComoveremosoVisuAlgéumprograma,umsoftware,umainterfacededesenvolvimentopara aprendizadodeprogramação,enãoalinguagempropriamente,alinguagemusadanosprimeiros

passosseráoPortugolecomelaaprenderemossobreoalgoritmonocapítulo1massomenteno

capítulo3veremosoPortugol.PorhoraésuficientesabermosqueoPortugoléumalinguagem

estruturadatotalmentebaseadanoPortuguês,ondeseucomandosefunçõessãoverbosdenosso

idioma,noinfinitivoouimperativo("se","escrever"ou"escreva","calcular"ou"calcule").

Apresentação

UsaremosoVisuAlgparaaprenderapensareescreverdeformaqueocomputadornosentenda.No

capitulo2veremosainterfacedoVisuAlg,seusmenus,ferramentas,eseçõesdajanela,apenaso

básico,seráumcapítulodereferênciaqueusaremosparaentende-laesabermosoquecadajanela,

seçãoemenurepresentaenosofere.

Nocapítulo3, estudando o Portugol, aprenderemos os comandos da linguagem, o conceito de funções,tiposdedadosdoPortugolusadosempreo"VisuAlg",aprederemossobreestruturasde repetiçãoecontrole.EntradaeSaídadedados,atribuiçãodevaloreseoperaçõesmatemáticas.

JáalinguagemC/C++énecessáriaparaquepossamosprogramardiretamenteparaoArduino,

iremosconhecermelhoroArduinonocapitulo5,porémantesdissoiremosestudaralinguagem

C/C++suahistóriaseustiposdedadosbásicosecomoelalidacomamemória,issoserávistono

capítulo4,veremostambémumpoucodoGCCeusaremosumaversãosemIDE,usandoumeditor

simplesealinhadecomandoparacompilarnossoaplicativo.

Comoditoocapitulo5teremosumaintroduçãoaoArduino,veremosoqueaprendemosecomo

adaptaraoArduinonossoalgortimos,permitindoassimcontrola-lo,omotivodeusarmosalinguagem

C/C++serádesvendadonestecapítulo,atravésdepequenasdicasparaseterqualidadenoquesefaz

comoArduinoecomoescreverbonscódigos.

Bemparafechardeixaremosumcapítulodebonus,ocapítulo6,ondeveremosoutrosalgortimos

comooPIDqueserámuitoútilparausoemrobóticaecontrolesautonomos.

Download

Parabaixarestaapostila,cliquenasoçõesabaixo:

PDF PDF

Boasorte,vocêéumprivilegiadoseleuestainstrodução,sinalqueestáprofundamenteinteressadoe

terásucessocomestaapostila.

Atualizado:09/07/2016-18:56|Revisado:SatJul23201621:17:26GMT+0000(UTC)|Compilado:

SatJul23201621:15:21GMT+0000(UTC)

Licença

Licença

ApostilaVersão:0.1

Licença Licença ApostilaVersão:0.1 Image1.2.1-CreativeCommonsLicense This work is licensed under a Creative Commons

Image1.2.1-CreativeCommonsLicense

NoteNote

Seestetrabalhoestábomosuficienteparausa-locomercialmenteemseusprojetos,entãome

ajudeamande-loecontribuacomapenasR$10,00.

Euescolhiliberarestetrabalhoparaquepudessesercopiadoportodos,epermitiseuusocomercial,

poistenhoaintençãoqueelesejautilatodosdeformajusta,porémamanutençãodestetrabalhoé

ardua,eexigebomtempo,queindependentedacontribuiçãodeterceiros,tenhooprazeremdedicar

paraquesejadequalidade,ereflitameuestilodeensinar,aprenderecompartilharconhicmento.

Todo profissional sabe o quanto custa sua hora de trabalho, e o quanto é valiosa para sua subexistência,porissoconvidoatodosaestareflexãoemeajudeacontinuartendotempoparame dedicaraconstruçãoecompartilhamentodeconhecimentoscomoeste.

Atualizado:09/07/2016-16:20|Revisado:SatJul23201621:17:26GMT+0000(UTC)|Compilado:

SatJul23201621:15:21GMT+0000(UTC)

ToDo

ToDo

Oquefaltaescrever.

Abaixolistareioquefaltaescrever,esugestõescoletadasdecolegasparamelhorianaapostila.

Revernomesdearquivosdoscapítulos,mudandoparaotítuloresumidodocapítulo,evitando transtornosaosemudaraordemdecapítulos,jáquecomousodenúmerosaordemobrigaa

mudançadonome,paraversão1.0

Reescrevernomedasimagens,paraversão0.3

Reverortografiadaapostilaparaversão0.2

ReveroCapítulosobreFluxogramadandomaisdetalhessobresuacriaçãoesignificadodos

simbolos,antesdaversão1.0

ReverIntruçõesdecontroleeoperaçõesparaincluirexemplosdefluxogramas,antesdaversão

1.0

Atualizado:09/07/2016-16:20|Revisado:SatJul23201621:17:26GMT+0000(UTC)|Compilado:

SatJul23201621:15:21GMT+0000(UTC)

Algoritmo

Algoritmo

Se você perguntar ao google "define algorito" ele irá lhe responder o que é, e nos adiantamos publicandoaquiarespostaqueelenosdácombasenodicionário:

substantivomasculino

1. mat.sequênciafinitaderegras,raciocíniosouoperaçõesque,aplicadaaumnúmerofinito

dedados,permitesolucionarclassessemelhantesdeproblemas.

2. inf.conjuntodasregraseprocedimentoslógicosperfeitamentedefinidosquelevamà

soluçãodeumproblemaemumnúmerofinitodeetapas.

Bemtantoadefiniçãoparaamatemática(mat.)comoparaainformática(inf.),elanosajudaaenteder perfeitamente o que é um Algoritmo, são sequências de comandos, operações matemáticas que quando ordenadas lógicamente atingem nosso objetivo que é instruir o computador para uma determinadaatividadefinita,mesmoqueinfinitamenterepetitiva.

Ouseja,mesmoqueocomputadorsejainstruidoaesperarumcomando,sequênciafinita,elepoderá

serinstruidoqueofaçainfinitamente,repetindoestasequênciaenquantoouverenergiaparaseu

funcionamento.Diantedestaatividadeconcluidaeleiráexecutarnovasatividadesqueserãodecididas

emsequência.

VejacomissopercebemosqueamelhorformadeprogramarumAlgoritimonãoimportaalinguagem

étravésdeblocosdesequênciadecomandos,assimficainclusivefácilparadiagnosticarproblemas.

Cadalinguagemadotaumanomenclaturaparaestesblocosdecódigo,usaremosaquianomeclatura

doC/C++,cadablocodecódigopodeseridentificadoeacionadocomofunção,recebendoounão

umalistadedadosqueéchamadoparâmetros.

EoqueéLinguagemdeProgramação?

Bemantesdecontinuarmostemosqueentenderbemóqueéumalinguagemdeprogramação.

Linguagem de Programação é um método padronizado de se inscrever instruções para um microcomputador, através da linguagem de programação escolhida, conseguimos informar ao computadoroquedeveserfeito.

Temoslinguagensdebaixonível,quesãoaquelaslinguagensquesãoescritasemumformato,uma

sintaxebempróximadasoperaçõesdemanipulaçãodebytesebitsdoscomputadores,comopor

exemplooAssembly,etemoslinguagensdeprogramaçãodealtonívelcomoporexemplooCobol

queusatextosdeclarativos,eumaestruturamuitobemestabelecidaparaserescritaealtamente

legívelatéporumleigocomboacapacidadedeinterpretação.

Outraslinguagensquepodemossitarnestemesmocontextossão:

BasicOutraslinguagensquepodemossitarnestemesmocontextossão: Fotran Pascal C# Java CeC++ JavaScript Python 6

FotranOutraslinguagensquepodemossitarnestemesmocontextossão: Basic Pascal C# Java CeC++ JavaScript Python 6

PascalOutraslinguagensquepodemossitarnestemesmocontextossão: Basic Fotran C# Java CeC++ JavaScript Python 6

C#Outraslinguagensquepodemossitarnestemesmocontextossão: Basic Fotran Pascal Java CeC++ JavaScript Python 6

JavaOutraslinguagensquepodemossitarnestemesmocontextossão: Basic Fotran Pascal C# CeC++ JavaScript Python 6

CeC++Outraslinguagensquepodemossitarnestemesmocontextossão: Basic Fotran Pascal C# Java JavaScript Python 6

JavaScriptOutraslinguagensquepodemossitarnestemesmocontextossão: Basic Fotran Pascal C# Java CeC++ Python 6

PythonOutraslinguagensquepodemossitarnestemesmocontextossão: Basic Fotran Pascal C# Java CeC++ JavaScript 6

Algoritmo

Nonossocursoiremosestudarlinguagensdealtonível,masnãotalaltonívelassim,inicialmenteo

Portugol,eposteriormenteumalinguagemmeiotermoentrealtonívelebaixonível,masaindaassim

altonível,poisserábemlegívelporumespecialista,comovocêserádepoisdestadissiplina.

ProgramaçãoEstruturada

Aprogramação estruturada é uma forma de programação de computadores que estabelece uma disciplinadedesenvolvimentodealgoritmos,criandoassimpadrõeseestruturassejamsimplesou complexasquepodemseragrupadasemblocosdecódigos,reaproveitaveiserepetiveis.

Naprogramaçãoestruturada,temosumconjuntodepalavrasreservadasutilizadasparaidentificaras

seçõesdenossocódigo,agrupandoassimasações,permitindoassimquehajaestruturasdetomadas

dedecisão,estruturasderepetição,emodularizaçãodecódigos.

AProgramaçãoestruturada,presapelalegibilidadedocódigousandorecursosdeformataçãocomoa

identaçãoparaqueocódigoseapresentedeformaorganizadaelegível.

LinguagensEspecializadas

Emcadasetordeatuaçãopodehaverlinguagensespecializadasaocontextodosetor,porexemplo paraoArduinoapesardetermosalinguagemC/C++temosoWirequeéumdialetodoC/C++na verdade é um framework que nos traz diversas funções, constantes e macros que permite ao programadorprogramaroArduinodeumaformamaisamigável.

TambémtemoslinguagensespecializadasemRobôtica,podemosdizerqueparacadafabricantede

grandesrobôstemosumalinguagem,listamosalgumasabaixo:

Unimation™grandesrobôstemosumalinguagem,listamosalgumasabaixo: VAL® AdeptV+® AML®daIBM MilacronT3

VAL®Unimation™ AdeptV+® AML®daIBM MilacronT3 CompiladovsInterpretado

AdeptV+®Unimation™ VAL® AML®daIBM MilacronT3 CompiladovsInterpretado

AML®daIBMUnimation™ VAL® AdeptV+® MilacronT3 CompiladovsInterpretado

MilacronT3Unimation™ VAL® AdeptV+® AML®daIBM CompiladovsInterpretado

CompiladovsInterpretado

Aslinguagensdecomputadorpodemsertantocompiladasousejatransformadasprimeiramenteem

umcódigoqueocomputadorentendadiretamente,oupodemserInterpretadas,assimsendoum

programalêoarquivoondeestáseualgortimoeinterpretacadalinhaecadacomandoemtemporeal,

analisanoasintaxeeapontandoemtempodeexecuçãooserrosencontrados.

HálinguagensquesãoprécompiladascomooJavaeC#,estaslinguagens,geramumpseudo-código

sejaemtemporeal,ounumprocessoseparadoeemseguidaestepseudo-códigoéinterpretadoparase

obteroresultadodesejadocomocomputador.

As linguagens compiladas tendem ser bem mais rápidas pois geram primeiro um código que é interpretadodiretamentepelomicrocontrolador,estecódigoaindapodeserotimizadoparaseobter umresultadomuitomaiseficiênte.

Jáaslinguagnesinterpretadas,mesmoqueprécompiladas,dificilmenteserãotãorápídasquantoas compiladas, mas semdúvida poderão oferecer recursos dinâmicos muito mais avançados que as compiladas, algumas linguagens compiladas tem desepenho próximo as compiladas quando a compiladanãoéumalinguagemnaturalmenteeficiente,comoporexemplolinguagemBASIC,pois temmuitosprocedimentosdeproteçãodocódigoparavitardanosinadivertidoscausadospeloerrodo programador,linguagenscomooCeC++sãomuitoeficientesporquenãotemestruturasdeproteção,

Algoritmo

sendoderesponsabilidadeintegraldoprogramadorprovidênciartodasasproteçõesnecessárias,e

dandoaelesrecursossingularescomoponteirosereferênciasquedãoacessodiretoamémoria.

MascomopossocriarmeusprópriosAlgoritmos?

OquemaisnosimportaagoraéoAlgoritmopropriamente,everemosentãocomoconstrui-lo,não

usaremosatéestecapítulonenhumaferramentaquepossanosajudar,jáquequeremosdesenvolver

mentalmenteestahabilidade.

Começemos com exercícios simples, vamos descrever como fazemos para ir a padaria quando sentimosvontadedetomaraquelecaféquejáestácheirandonacozinha.

Semprequandosentimosocheirodocafé,édisparadoumasequenciadeações,entãoparamos tudoqueestamosfazendoevamosacozinhaverificamossejáhápãesquentes,senãopegamos a chave da casa, verificamos onde está nossa carteira, nos dirigimos a saída da casa mais próxima,seguimosemdireçãoapadariamaispróximaequetemosocostumedeir,entramosem direção ao balcão de pães, solicitamos alguns pãezinhos, então a atendente nos entrega, e dirigimos ao caixa para efetuar o pagamento, voltamos rapidamente para nossa casa, e proseguimoscomnossocafé,quandosatisfeitosouaoterminodenossotempoparaocafé, voltamosanossaatividadeanterior.

Bemvamosfazerumapequenaanálisedadescriçãoacima:

Primeiroumprogramadormaisexperienteemmicrocontroladoresvaiperceberquesetratadeuma

açãoqueédisparadaporumeventoespecialidentificadaporumdenossossensores,onariz,este

sensordisparaumalgoritmoquenoslevaatomarcafé.

Oalgortimoacimanãoestáestruturado,estáapenasdescritodeformaquequalquerserhumanoseja

capazdeentende-lo,atémesmoporqueéumaaçãobemhumanatomarcafé,futuramenteiremosver

ançõessimilaresmaishumanoides,quetal?

Continuandonossaanálise,vemosqueéprecisodescrevercomomáximodedetalhes,eondenãohá

detalhes,maspercebemossuanecessidade,precisamosconsiderarachamadadeumnovoblocode

codigo,ousejaumafunção.Porexemplonãodescrevemosemdetalhescomo"verificamossehápães

quentes"issoéumafunçãoquenosretornamentalmentesehápãesounão,(verdadeirooufalso),em

seguidanãohavendopãesquentes(sejaqualomotivofor),"pegamosachavedacasa","verificamos

nossacarteira"estáaidoiscoamndosquenãoprecisamestarnamesmaordem,eassimcontinuamos

nossaslistadeaçõesatéchegaraobalcãodapadaria,consideramosassimquejáhajapãesprontose

quentesnapadaria,aipodemosidentificarmaisumafunção:"solicitamosalgunspãezinhos",esta

funçãopodedemorararetornar,jáquenãohavendopãesteremosqueesperarficarprontos,caso

contrárioelaretornaimediatamentecomaquantidadesolicitada,vejaai,játemosumvalorpassado

paraestafunçãocomoparametro,aquantidadedepães.Eentãoassimcontinuamosnossasaçõesaté

quenostenhamossatisfeitonossodesejodetomarcafé.

Vemoscomissoqueaoestudarmosalgortimojáiniciamosoentendimentodediversosconceitos

muitoimportantesparaaprogramaçãodemicrocontroladores,eassimamadurecemososuficiente

paradesenvolvermosexcelentescódigosemqualquerlinguagem.

Entãoésóisso?

Porhorasim,agorairemospráticaremsaladeaulaaconstruçãodealgoritmos,nãotrabalharemos aindacomnenhummétodoestruturado,apenaspráticaremosaconstruçãotextualdeaçõessejaquais forem para que nosso celebro passe a pensar nos detalhes necessários para executar tarefas

Algoritmo

corriqueiras.

Quetaltentarseguimentarsuapernaetentardescrevercomovocêanda,ouseusbrasoseassim

descrevercomofariaparadeslocarumobjeto.

Queralgomaissimplesquetaldescrevercomotrocaropneudeseucarro.

AlgumasdicasparaescreverseusprimeirosAlgoritmos

AlgumasdicasparaescreverseusprimeirosAlgoritmos

Sejasucintoeprocurenãoentraremdetalhesdeaçõesquenãosejaespecificamenteligadasa atividade; Usecomentáriosseprecisodetalharaexecuçãoedeixaroalgoritmomaisclaro; Açõesauxiliarespodemserdescritasporfrasescurtas,como"verificarsehápãesquentes",ou "pegar a chave de boca", estas ações auxiliares serão outros algoritimos que podem ser reutilizados; Useosverbososverbosnoinfinitivoeiperativo,"pegar","andar","corra"; Procure identificar parametros que auxiliem a tomada de decisão "exist~encia de pães", "Quentesounão","Pneufurado";

Procureidentificarcomexatidãoeemformaquantitativa,"existeounãoexiste",ouseja0ou

maiorquezero,"20unidades";

Evitemuitasinformações,edadosaseremguardados.

OPróximoCapítulo

IremosagorapartirparaoestudodaferramentaVisualAlg,comelairemosaprenderaescrever AlgoritmosutiliznadooPortugol,umaformamaisestruturadaparadescrevernossasatividades,ainda não usaremos o Portugol em detalhes, apenas tereos este capítulo como fonte de referência da interfaceparanosajudaralembrarondeéencontradocadacoisa.

Atualizado:09/07/2016-16:20|Revisado:SatJul23201621:17:26GMT+0000(UTC)|Compilado:

SatJul23201621:15:21GMT+0000(UTC)

VisuAlg

VisuAlg

OVisuAlgnãoéumalinguagemdeprogramação,masumaferramentaqueauxilianoaprendizadoda linguagem "Portugol", VisuAlg tem algumas peculiaridades, que torna esta versão do Portugol proprietárioemaisadequadoaousocomsuaInterface.Issonãoéumproblemaparanós,jáqueo aprendizado desta versão do Portugal tem como objetivo panea o desenvolvimento de nossa capacidadedepensardeformaestruturada,enãousaremosestalinguagempormuitotempo,éapenas umestágioemnossoparendizado.

A partir deste ponto chamaremos a Ferramenta ou Interface do VisuAlg de IDE (Integrated DevelopmentEnvironment)emportuguêsAmbientedeDesenvolvimentoIntegrado,umsoftwareque possuitodasferramentaseviabilizaainteraçãocomoutrasferramentasdedesenvolvimentodeforma totalmenteintegradaetransparente.

ComousodeumaIDE,nãoprecisamosnospreocuparcomoeditorusadoparaescrevernosso

código,nemcomapáginadecodificaçãodoscaracteresaseradotada,nãoprecisamosnospreocupar

comaferramentausadaparanosajudaraencontrarerrosdeescritas,muitomenoscomaferramenta

usadaparaconverternossocódigoemumformatomaispróximoparaoentendimentodocomputador,

compilaçãoouinterpretação,emuitomenoscomafasefinaldeligaçãodonossocódigocomas

instruçõeseposiçõesdemémoriadocomputadorquesedestinaocódigo.

AIDEéresponsávelportertodasasferramentasqueprecisamos,totalmenteintegradasetotalmente

deformatransparente.

TelaprincipaldoVisuAlg

AbaixoapresentamosatelainicialdoVisuAlg:

deformatransparente. TelaprincipaldoVisuAlg Abaixoapresentamosatelainicialdo VisuAlg : 10

VisuAlg

Image1.5.1-InterfaceprincipaldoVisuAlg3.0

Comopodeservistonaimagemajanelaédivididaem3seçõesmuitoimportantes:

Áreadeprograma ÁreasdasVáriáveisdeMémoria

Áreadeprograma

ÁreasdasVáriáveisdeMémoria

ÁreadeVisualizaçãodeResultados

Alémdestas3seções,temostambémo"Menu"notopodatela,logoabaixo"BarradeFerramentas"e

nabaseouroda-pédajanelaprincipaltemosa"BarradeEstatus".

Teremostambémumajanelasecundáriaquesempreseabrequandoexecutamosnossoalgoritmoque

representaoprogramaquandoexecutado,chamaremosde"Console".

vejamosalgunsdetalhesdecadaumdeles.

Menu

ComotodosoftwareparasistemasoperacionaisbaseadosemjanelacomoWindows,MACouLinux Gráfico com base em XWindows ou X86, é comum ter um menu que nos dá acesso a ações, agrupadosconformefuncionalidades

AbaixovemosomenudoVisuAlgVersão3.0:

Abaixovemosomenudo VisuAlg Versão3.0: Image1.5.2-Menudo VisuAlg V3.0

Image1.5.2-MenudoVisuAlgV3.0

Asduasprimeirasopçõesdomenusnãotemmuitanovidade,apenasocomumemqualquereditorde

texto,noMenu"Arquivo"iremosencontraraçõesreferentesaabrir,salvarefechararquivo,alémde

fecharoIDEfinalizandoassimoVisuAlg,nomenu"Editar"açõesrelacionadasaedçãocomocopiar,

colar,recortar,pesquisarnocódigoporstringsdetextoesubstituição.

Stringdetexto,éumasequênciadeletras,caracteres,quandoformosestudarestartiposde

dados,entenderemosmelhoresteconceito.

Jáomenu"Run(Executar)"énovidadeparamuitos,comeleteremosaopçãotestarnossoalgoritmo

solicitandoaoVisuAlgquepreparenossoalgoritmoparaexecução,verificandoerroseexecutando

sequêncialmente,ousedesejarmospassoapassocomnossototalcontrole.

Veremosemdetalhesousodecadaopçãodomenuduranteaspráticasdeaula.Nãodeixedeestudar estemenu,epráticarousodasteclasdeatalho,indicadasadireitadecadaopção,aquemais

usaremosé[CTRL]+[S]parasalvare[F9]paraexecutarnossocódigoe[F8]paraexecutarnosso

códigopassoapasso.

Oqueestasletrasentre"colchetes"?usamosestarepresentaçãoparaindicarteclasaserem

usadascomoatalhos,nocasode[CTRL]+[S]representaousoemsequenciacombinadadas

teclas"Control"eatecla"s",ouseja,devemserprecionadasemconjunto,semprenasequência

VisuAlg

sugerida,assimseapertaatecla"Control",mantem,eemconjuntoapertaatecla"s",soltando

logoemseguida,observequemesmoestandorepresentadaemmaiúsculanãousaremosatecla

"Shift"muitomenosatecla"CapsLock"paradeixaremmaiúscula.

MenuRun(Executar)

VamosdarumaatençãoespecialaomenuRun(Executar),semdúvidaeleéomenumaisutilizado

emumaIDE,comeletestamosnossocódigoecorrigimososerrosquepossamexistir.

Image1.5.3-MenuRun(Executar)do VisuAlg 3.0

Image1.5.3-MenuRun(Executar)doVisuAlg3.0

Comodissemosadireitadecadaopçãodomenu,ainterfacedoVisuAlgnosinformaqualéateclade

atalhoparaaceleraroacessoaestaopção.

Nestemenuencontramosduasaçõesmuitoimoprtanteparatestarmosnossoalgoritmo,aprimeira

maiscomum,é"RodaroAlgoritmo",podeseracessadasimplesmenteteclando[F9],estaopção

executaoprogramasemnenhumtipodeinterrupção(anãoserquehajaumpontodeparadapara

depuraçãodecódigo-Breakpoint,veremosmaisafrente),ouasprogramadaspeloprogramador

atravésdecomandosdalinguagemPortugal,como"Leia()"oupausa.

OBS.:Quandoaexecuçãodealgortimoencontraocomandopause eleiráaguardaratéquevocê tecle[F9]ou[F8]paracontinuaraexecução.Nãouse pause parasubstituirpontosdeparada (Breakpoints)paradepuração.

Jáaação"RodarPassoapasso"tambémdisponívelatravésdatecla[F8],iráexecutarseuprograma

linhaporlinha,cadalinhaéexecutadaacadavezque[F8]éprecionado.

Comoirdiretoaumalinhadeexecuçãoeparar

Há outras opções muito interessantes e úteís para diagnosticar seu algortimo, por exemplo

"Liga/Desligabreakpoint"tambémdisponívelpelatecladeatalho[F5]permitequemarquealinha

VisuAlg

selecionadaparaquesejaumpontodeparadaparadiagnostico,assimaoexecutarseuprogramama

atravésde[F9]("RodaroAlgoritmo")eleiráexecutaratéestalinhaeirápararaguardandoque

mandecontinuaratravésde[F9]oupassoatravésde[F8],assimvocêpodedarumgrandesautoentre

muitasinstruçõesepararexatamentenolocalondeseualgorritimoparecenãofuncionarbem.

Paradesmarcarumbreakpointvánalinhaondeelefoiimposto(linhamarcadanacorvermelha),tecle

novamente[F5].

Meualgoritmotomouvidapropriaenãoquerparar

Parainterromperseualgoritimosejaporquemotivofor,emespecialdevidoaummalfuncionamento,

vocêpodeusaracombinaçãodeteclas[CTRL]+[F2]durantesuaexecução,sejacontinua,oupassoa

passo.

Estaopçãoapenasestádisponívelquandooalgortimoestáemexecução.

BarradeFerramentas

Nossabarradeferramentaséumatalhoasaçõesdisponíveisnomenu,aliseencontraasaçõesdaIDE

maisutilizadaeestãorepresentadasporiconesparafacilitarseuuso,vejanaimagemabaixoelaestá

logoabaixodomenu:

logoabaixodomenu: Image1.5.4-MenueBarradeFerramentasdo VisuAlg V3.0

Image1.5.4-MenueBarradeFerramentasdoVisuAlgV3.0

Bemnãoprecisamosentraremdetalhes,sobreousodabarra,durantenossaspráticasemaulairemos

entede-la.

Emversõesfuturasdestaapostila,iremosampliaradescriçãodabarradeferramentasparafins

didaticos.

BarradeEstatus

Abarrade"estatus",ousepreferirbarradestatus,apresentainformaçõesrelevantesaoprogramador

duranteacodificação.

duranteacodificação. Image1.5.5-BarradeStatusdo VisuAlg 3.0 Nabarrado VisuAlg

Image1.5.5-BarradeStatusdoVisuAlg3.0

NabarradoVisuAlgtemosumapequenaseçãoquenosmostraaalinhaecolunaondeseencontrao cursor, informação muito útil para encontrarmos a posição onde estamos editando e auxilar na identaçãoeformtaçãodenossocódigo.

VisuAlg

Naproximaseçãodabarradeestatus,vemosoestadododocumento,sevazioeleestásalvo,se

modificadotemaindicação"Modificado",seempesquisaaindicação"Pesquisando",comousoda

ferramentairáidentificarnovos"Status"paraseudomento.

Naproximaseçãovemumtextoqueinstruicomomelhorusarasteclasnaseçãoativa,efinalmetnea

ultimaseçãoqueapresentamensagensrelevantessobreosprocessossolicitados,porexemplocoloque

omousesobrecadaseçãodajanela,evejaamesangemapresentada.Vocêveráqueelelheapresentaa

seçãoecomoelapodeserútilparavocê.

Seção"ÁreadeVisualizaçãodeResultados"

ASeção de visualização de resultados apresenta mensagens relativas a execução do programa, mantendoumhistóricodaexecução,principalmenteinicioefim,éprecisocuidadopoisespera-seque ainteraçãosejapeloconsole,masnoVisuagaintarçãoocorreumpoucodiferente,sendodonesta etelaapresentadaasmensagensdoprograma,eemjanelasespecificasassolicitaçõesdedadosao usuário,aconsoleserávistamaisafrente

usuário,aconsoleserávistamaisafrente Image1.5.6-SeçãodeVisualizaçãodosResultadosdo VisuAlg

Image1.5.6-SeçãodeVisualizaçãodosResultadosdoVisuAlg3.0

Aseguirvejaaseção"Áreadevisualizaçãodosresultados",aposexecutarmosumsimplesalgortimo

conceitualquesugereofuncionamentodeumsistemadecaixa.

conceitualquesugereofuncionamentodeumsistemadecaixa. 14

VisuAlg

Image1.5.7-SeçãodeVisualizaçãodosResultadosdoAlgoritmo"caixa"doVisual3.0

Seção"ÁreadasVariáveisdeMemória"

NestaseçãoépossívelveroconteúdodecadavariáveldemémoriaGlobalouLocal(entederemos

issomaisafrente).VejaabaixocomoestaseçãoficaaousarmosoAlgoritmo"Caixa".

Algoritmo "Caixa". Image1.5.8-SeçãodeVisualizaçãodasVariáveisdeMemóriado

Image1.5.8-SeçãodeVisualizaçãodasVariáveisdeMemóriadoVisuAlg3.0

Estaseçãopossui3colunas,aprimeiracontemonomedasvariáveis,cadavariávelemumalinha,a

segundacolunaoTipodevariável(C=Caracter,R=Real,I=Inteiro,Etc).Naterceiracolunao

valorqueseencontranoexatomomentonavariável.

Vejaqueestacaixaduranteaexecuçãodeseualgortimotemosvaloresemcontantemudança,e

quandoseusistematerminaaexecuçãoelaguardaosultimosvaloresutilizados.Issoémuitoutilpara

depurar(buscardefeitos,bugs)emsuaaplicação.

PróximoCapítulo

porhoraéoqueestudaremosdeformateóricareferenteaIDEdoVisuAlg,jánopróximocapítulo

iremosestudara"Portugol"comenfasenoqueoVisuAlgnosoferececomorecursos.

Atualizado:09/07/2016-16:25|Revisado:SatJul23201621:17:26GMT+0000(UTC)|Compilado:

SatJul23201621:15:21GMT+0000(UTC)

VisuAlg

Portugol

Portugol

Conformeodicionáriodosite/serviçoSensagent:

Portugoléumapseudo-linguagemdeprogramação,criadaparademonstrarousodealgoritmose

programaçãoestruturada.Estápresenteemmuitosmateriaisdidáticosdeprogramação,porém

mesmoassimnãoexisteumpadrãosintáticoouléxicoparaessalinguagem.

OPortugolpodeserencontradoemdiversasferramentasdeensino,cadaumcomsuaspeculiaridades,

etambémserchamadoporoutrosnomescomopseudo-código.

MuitosconfundemalinguagemAlgol(AlgoritmLanguage)comaversãooriginaldoPortugol,ou

pensamserumapseudo-linguagemdidaticaeminglês,porémAlgolnãoéumapseudo-linguagem,

masumalinguagemdealtonívelutilizadaemprojetoscientíficos,Algolémaisumafamiliade

linguagens,tendosuaprimeiraversãooAlgol58criadoporJohnBackusatravésdaBNF(Backus-

NaurForm),umameta-sintaxeparaexpressargramáticaslivresdecontexto,ousejaummodoformal

dedescreveroutraslinguagens.OAlgol60foiumalinguagemimparemseutempo,etransformouo

conceito de linguagem de programação influênciando todas as linguagens desde então criadas, nenhuma oura linguagem teve a fluência que Algol 60 que é tida como a primeira linguagem estruturada.

EmnossoestudosveremosaLinguagemPortugolapenas,comoumaformadidática,everemosa versão compátivel com o VisuAlg, sendo apenas um passo de entrada no universo da lógica e programaçãodecomputadores,depoisdedominadooconceitodeestruturaçãodecódigo,nãomais usaremos esta linguagem, passando então ao aprendizado a Linguagem C/C++ em um capítulo especialmenteparasuaintrodução.

NofinaldestecapítuloháumarelaçãodetodososcomandosdoVisuAlg3.0parareferência,será

baseadonomaterialfornecidopeloautordoVisuAlg,portantodependerádoconteúdodisponívele

testesrealizados.

PróximoPasso(PróximoSubcapítulo)

Estuaremos no próximo capítulo o código estruturado, veremos rápidamente como devem ser delimitadosnossosalgoritmosecomofaze-locomoPortugol.

Atualizado:09/07/2016-16:25|Revisado:SatJul23201621:17:26GMT+0000(UTC)|Compilado:

SatJul23201621:15:21GMT+0000(UTC)

OCódigoEstruturado

OCódigoEstruturado

Para começarmos a estudar o Portugol, propriamente, precisamos entender o que é um código estruturado,eparaissoéimportantedestacarqueparaseterumbomcódigoestruturadoépreciso seguiralgumasregras:

Cadacomandodeveocuparumalinha;

Todasaspalavraschavessãoimplementadassemacentosecedilha;

Nãohádiferenciaçãoentremaúsculaseminúsculas,vejaaobservaçãoabaixosobreanotação

CamelCase;

Palavrasnãoreconhecidasserãotratadascomonomesdevariáveis;

Qualquertextoprecedidode//éignorado,atéseatingirofinaldalinha;

AseguirapresentamosoprimeiroexemplodepseudocódigoemPortugol:

algoritmo "MeuPrimeiroPseudoCodigo" // Função: Demonstrar como se escreve um código estruturado // Autor: Carlos Delfino <consultoria@carlosdelfino.eti.br> // Data: 01/07/2016

//Seção de Declarações Variáveis Globais Var

//Seção de Declaração de Procedimentos e Funções

// Inico do código principal inicio // Seção de Comandos

Fimalgoritmo

Comopodemosver,ocódigoéseparadoemseções,tendonaprimeiralinhaonomedo"'algoritmo'"

queéomesmonomeusadonoarquivo,postoentreaspas.

Emseguidatemosalgunscomentáriosquenosajudamaentenderocódigo,procuresempredescrever

seucódigocomumaboadocumentação,omelhorquepudereprocurededicarbomtempoaisso,

vocêselembradequandofizemosapráticadeescreverdeformatextualnossoalgoritmo?façaisso

nadescriçãodeseucódigo,issoiráajudararesolverfalhas(bugs).

Idenfiqueclaramenteoautorenãodeixedecolocarpelomenosoe-maildecontato,sepossívelo

telefonetambém,assimemcasodedúvidaoproximoprogramadorpoderáconsultartrechosde

códigosdedifícilentendimento,esebasearnadocumentaçãoparaoptimiza-lo.

Feitoisso,façaaseguiradeclaraçãodesuasvariáveisglobais,veremosafrenteoquesãovariáveis

globaiselocais,porhoradeclareapósadocumentaçãoinicialtodasasvariáveisquejulgarnecessário

emseualgoritmo,aseçãodedeclaraçãodasvariáveiséprecidopeladiretiva"'Var'".Estaseção

terminaquandoapróximaseçãodecódigoiniciar,existindoumadiretivaparafinaliza-la.

Dependendodacomplexidadedeseucódigoapósasvariáveisglobais,épossíveldeclararfunçõese

procedimentos,oquenãoiremosverainda.Somenteveremosestesconceitos,apósdominarmosos

conceitosbásicosdecontroleeviáveiseemespecialFunções.

OCódigoEstruturado

Finalmentedamosinicioaonossoalgoritmo,usandoapalavrareservada"'inicio'",estecódigoserá

executadoprimeiro,eterminaráquandoencontraralgumcomandoqueinterropaaexecuçãoouao

chegaratéapalavra"'fimalgoritmo'"

Umgrandeerrocometidopelosprogramadoresinciantes,éanãoidentaçãodocódigo,assim,blocos

decódigosficamilegíveisededifícilcorreção.NoPortugol,adelimitaçãodebloossedásemprepelo

usodapalavrachaverespectivaaotipodeblocodecontroleefinalizadopelapalavrachavede

finalização,veremosemdetalhesmaisafrentequandoformostratarcadablocodecódigo.

OqueéIndentação?

Identaçãoéoatodeorganizarcadalinhaemníveis,inserindoespaçosnoiniciodalinhaparaqueesta

linhafiquesubordinaaanterior,ouseja,pertenceaoblocoqueestejamaisadentronaestrutura.

NoPortugolusaremostrêsespaços,aslinguagensnãoobrigamumaquantidadeespecificadeespaço, sendoaquantidade,sempreacordadoentreosprogramadoresantesdeinciaroprojeto,porémjáse

tornouumaconvençãodeboapráticaousodetrês(3)espaço,emalgunscasosquadro(4)espaços,

podendonestecasosersubstituidoporumatabulaçãoparacadaintentação.

vejaoexemploabaixo:

'''inicioescrever("entreseunome"leia(nome)senome==""entaoescreva("éprecisoumnomepara

identifica-lo")interrompafimseescreval("Obrigadoporinformarseunome:",nome)fimalgoritmo'''

Comopodemverocódigoestruturadoéindentado,edefácilleitura,erápidamenteidentificamoso

inicioefimdecadablocodecódigos,independentedoseuobjetivo.

Próximopasso

VeremosaseguircomodarnomesasvariáveisefunçõesnoPortugol,porémusaremosapráticade

CamelCase,quenãoéobrigatórianoPortugol,muitomenosnoVisuAlg,maséumaboaprática

importanteparaoamadurecimentocomodesenvolvedor.

Atualizado:09/07/2016-16:25|Revisado:SatJul23201621:17:26GMT+0000(UTC)|Compilado:

SatJul23201621:15:21GMT+0000(UTC)

NomesePalavrasReservadas

NomesePalavrasReservadas

Emtodalinguagemdeprogramaçãoépossívelusarnomesespeciais,tantoparachamarcomandos,

funções,quandoprocedimentosquandoouveroconceito.Nãoveremosaindaemdetalhesoquesão

procedimentos,masaprenderemosdesdecedocomocriarnomesdevariáveisefunções(senocaso

doPortugolProcedimetnostambém)

NomeandoVariáveis

Aindanãoestudamosoquesãovariáveis,porhorabastasaberquesãoespaçosnocomputador,onde

dadossãogravados,epodemserreutilizadosealterados.

Osnomesdasvariáveisdevemobrigatoriamentecomeçarporumaletra.Apósaprimeiraletra,poderá

conterletras,númerosouunderline(_),atéumlimitede30caracteres.Asvariáveispodemser

simplesouestruturadas(vetoresdeumaouduasdimensões).

Variáveisnãopodemternomesiguais.

Comojáfoiditoanteriormenteasdeclaraçõesdevariáveisdevemobrigatoriamenteseridentificadas comotermo var, seguir com os nomes das variáveis separados por “,”, colocar o sinal “:” e finalmenteinformarotipodaquelavariáveloulistadevariáveis.Vejaoexemploaseguir:

var

a: inteiro nome_aluno : caractere numeroDeMaterias: inteiro av1, av2 : real

Comopodeveroblocodedeclaraçãodasvariáveisnãoprecisaserfinalizado,eleterminaquando

iniciaoutrobloco,sejadefunção,procedimentooudoalgoritmoprincipal.

NotaçãoCamelCase

UmapráticamuitoimportantenaprogramaçãoéousodanotaçãoCamelCase,comelapodemos

aceleraroentendimentodocódigoealeituradosnomesusados.

ANotaçãoCamelCase é amplamente utilizada e já virou uma prática comum e há apenas uma pequenacontroverciaseumanomedevecomeçarounãocomaprimeiraletradaprimeirapalavraem maiúsculaounão.

AtémesmoemC/C++nãoháomalcostumedeunirpráticasdenomeaçãoantigascomNovas,

deixandoocódigopoucoelegante,emC++apenasépercepitveloconstanteusodaNotação,jáemC

puro,émuitopoucousado,masnestecursoiremosusarsempreanotaçãocamelcomodescrito

abaixo.

Usaremossempreaprimeiraletradecadapalavraemmaiúscula,comasseguintesexecessões:

Quandonomedevariáveisaprimeirapalavraserátodaemminúscula

Quandonomedevariáveis,nãousaremostraçobaixo,anãoserqueauxilioentendimentode

variáveiscomnomesmaiscomplexos,esteusodeveseracordadocomaequipe,eclarmente

documentadocomousaremcasodeseprecisarcriarnovasvariáveis.

Quandonomedeconstantes,todasaspalavrasserãoescritascomtodasasletrasemmaiúsculas,

NomesePalavrasReservadas

sendocadapalavraseparadadaoutraportraçobaixo;

Quandonomedefunçõesdeveráseradotadoomesmocritériousadoparaasvariáveis;

Quandonomedeprocedimentosdeveráserusadocadaprimeiraletraemmaiúsculo,mesmono

primeirapalavra,podendoquandonegociadocomaequipe,emcasodenomesmaiscomplexos

usarotraçobaixoparaauxiliarnacriaçãodonome;

Quandonomedeclassesdeverãoseguiromesmocritérioparaprocedimentos;

Emtodososcasospoderãoserusadosnúmeros;

Mesmoquealinguagempermita,"nunca"useacentosesimbolosespeciais;

paraconhecerahistóriadaNotaçãoCamelCase e conhecer melhor como adota-la, visite o link

http://c2.com/cgi/wiki?CamelCase,C2vemdeCunninghamandCunningham,epresacriadaporWard

Cunningham e sua filha para consultoria em desenvolvimento de softwares, são os principais influênciadoresdaengenhariadedesenvolvimentodesoftwarenomundo,juntamenecomErikEvans (ErikJ.Evans)eMartimFowler.

PalavrasReservadas

AlgumaspalavrasnãopodemserusadasalémdaformadefininapeloPortugol,sendoassimsão

consideradasreservadas,noVisuAlgoportugoltemasseguintespalavrascomoreservadas:

AlgoritmoVisuAlg o portugol temasseguintespalavrascomoreservadas: var Inicio FimAlgoritmo Cronometro Timer On Off Eco(ECO)

varo portugol temasseguintespalavrascomoreservadas: Algoritmo Inicio FimAlgoritmo Cronometro Timer On Off Eco(ECO)

Inicioportugol temasseguintespalavrascomoreservadas: Algoritmo var FimAlgoritmo Cronometro Timer On Off Eco(ECO)

FimAlgoritmotemasseguintespalavrascomoreservadas: Algoritmo var Inicio Cronometro Timer On Off Eco(ECO) Aleatorio(ALEATÓRIO)

CronometroAlgoritmo var Inicio FimAlgoritmo Timer On Off Eco(ECO) Aleatorio(ALEATÓRIO) Perfil Dos(DOS)

TimerAlgoritmo var Inicio FimAlgoritmo Cronometro On Off Eco(ECO) Aleatorio(ALEATÓRIO) Perfil Dos(DOS)

OnAlgoritmo var Inicio FimAlgoritmo Cronometro Timer Off Eco(ECO) Aleatorio(ALEATÓRIO) Perfil Dos(DOS)

OffAlgoritmo var Inicio FimAlgoritmo Cronometro Timer On Eco(ECO) Aleatorio(ALEATÓRIO) Perfil Dos(DOS) Debug(DEBUG)

Eco(ECO)Algoritmo var Inicio FimAlgoritmo Cronometro Timer On Off Aleatorio(ALEATÓRIO) Perfil Dos(DOS) Debug(DEBUG)

Aleatorio(ALEATÓRIO)var Inicio FimAlgoritmo Cronometro Timer On Off Eco(ECO) Perfil Dos(DOS) Debug(DEBUG) Tipo(TIPO) var(VAR)

PerfilCronometro Timer On Off Eco(ECO) Aleatorio(ALEATÓRIO) Dos(DOS) Debug(DEBUG) Tipo(TIPO) var(VAR) const(CONST)

Dos(DOS)Timer On Off Eco(ECO) Aleatorio(ALEATÓRIO) Perfil Debug(DEBUG) Tipo(TIPO) var(VAR) const(CONST)

Debug(DEBUG)Timer On Off Eco(ECO) Aleatorio(ALEATÓRIO) Perfil Dos(DOS) Tipo(TIPO) var(VAR) const(CONST)

Tipo(TIPO)Eco(ECO) Aleatorio(ALEATÓRIO) Perfil Dos(DOS) Debug(DEBUG) var(VAR) const(CONST)

var(VAR)Perfil Dos(DOS) Debug(DEBUG) Tipo(TIPO) const(CONST)

const(CONST)Perfil Dos(DOS) Debug(DEBUG) Tipo(TIPO) var(VAR)

Eviteusarnomesdefunçõesecomandosinternoscomovariáveisprincipalmente.

PróximoPasso

Veremosaseguirostiposdedadosquepodemosdeclarar.Duranteasnossaspráticasdiscutiremoso conceito prático das variáveis e como isso funciona nos computadores, posteriormente quando estudarmosalinguagemC/C++veremoscomoasvariáveissãoarmazenadasemmemória,issoé importanteparausocomMicrocontroladores.

Atualizado:09/07/2016-16:25|Revisado:SatJul23201621:17:26GMT+0000(UTC)|Compilado:

SatJul23201621:15:21GMT+0000(UTC)

Variáveis,ConstanteseTiposdeDados

Variáveis,ConstanteseTiposdeDados

Vejamosnestecapítulooquesãovariáveiseconstantes,equaisostipospodemserusadosno

Portugol.

Emtodalinguagemdeprogramaçãotemostiposdedados,algumasnãolevamissoemconsideração

deixandoqueousáriotransformeasvariáveisdeumtipoaoutronodecorrerdaexecuçãodecódigo,

issopodeserbom,ouruim,dependedadisciplinadoprogramador,nãoiremosdiscutirestaprática

agora,eusaremoslinguagensfortementetipadas,ouseja,umavezdeclaradooditodedadoqueserá

depositadonavariável,atentativadeusaroutrotipoiráacarretarerros.

Não veremos ainda como os dados são armazenados na memória do microcontrolador ou do computador,apenasentenderemosquetipodedado,seusvaloreslimitesecomolidarcomcadatipo de variável. Tal entendimento será absorvido no decorrer do uso de cada variável, mas quando iniciarmososestudosdalinguagemC/C++seránecessaríocompreendermaisafundocomotais veriáveissãorepresentadasnamemóriaouregistradores.

VariáveisvsConstantes

UmconceitomuitoimportanteasecompreenderéadiferençaentreVariáveiseConstantes,comoo própironomesugere,variávelépassiveldealteraçãojáasconstantesnão,estaultima,umavez atribuida não poderá mais ser alterada, em contra partida as variáveis podem ser alteradas ilimitadamentesemnenhumaperdadesuaqualidade.

Asvariáveisdevemserusadasparaarmazenardadosqueserãoregularmentealteradosounão,que

porexemploseráinformadospelousuário,mesmoquenãosejamalteradosduranteaexecuçaõdo

programa,masseráalteradasdepoisdesuadeclaraçãoporumaentradaporexemplo.

As constantes devem ser usadas para armazenar dados que será regularmente usados no programa,comoporexemploumfatorconstantedeconversãoparaumcalculo,facilitandoassimo usodaformula,umbomexemploseriaovalorde"PI"queficararmazenadonaconstantedemesmo nome.

Eoquesãotiposdedados?

Tiposdedadoséoformatododadoaserarmazenado,estedadopodeserumnúmero,umaletra,ou

umasequênciadeletras,formandoassimumapalavraoufrase.

Os números podem ter diversos tipos, por exemplo, podemos ter números inteiros de 0 a 255,

observandooslimitesdocomputadornocasodecompuadores/microcontroladoresde8bits,podemos

ternúmerosinteirosde0a65536jámaisfacilmentetrabalhadoporcomputadores/microcontroladores

de16bits,etambémpodemostertambémnúmerosfracionados,dotipolongooudepontoflutuante

comoutilizadosnaengenhária.

VejamosentãoquaissãoostiposdedadosqueoPortugolpodetrabalharsemproblemas,lembrando que Portugol é uma pseudo linguagem, portanto ela terá tipos que independem do computador utilizado.

Tiposnúmericos

inteiros

Variáveis,ConstanteseTiposdeDados

Adiretivainteirodefinevariáveisnuméricasdotipointeiro,ousejanúmerosquenãotenhacasas

decimais,podendoarmazenaraproximadamenteovalorentre2147483647e-2147483648

Exemplosdeuso:idade,númerodefilhos,quantidadedeestadosdoBrasil.

Real

Definevariáveisnuméricasdotiporeal,ouseja,comcasasdecimais.ConformenormaIEEE754.

Valormáximo:356xe^-43

Exemplosdeuso:salário,peso,temperatura.

ATENÇÃOAsconstantessãosempreinteiro,nãoexistindootipoRealparaelas,portantomesmo

quevenhausarovalorfracionado,declareasconstantescomosendointeiro

Outrostipos

Caractere

Definevariáveisdotipostring,ouseja,cadeiadecaracteres.

Exemplodeuso:nome,endereço,frase

Lógico

Definevariáveisdotipobooleano,ouseja,comvalorVERDADEIROouFALSO.

OVisuAlgpermitetambémadeclaraçãodevariáveisestruturadasatravésdapalavrachavevetor.

Porhoralidarcomestestiposnosserásuficiente,vamosusa-losparadesenvolvernossahabilidade em escrever algoritimos básicos de tratamento de dados, calculos e conversões conforme circunstãnciasbemcontroladas.

DeclarandoasvariáveiseConstantes.

Vimosanteriormentecomoéaestruturadeumalgoritimo,masvamosrevercomodeclararvariáveis

aquiparafixarmosesteprocedimentonoPortugoldoVisuAlg.

Sempreadeclaçãodeumblocodevariáveis,sejaglobaloulocal,deveserfeitocomadiretivavar

precedendoobloco,seguidodosnomesdasvariáveisseparadosporvirgulaefinalizandocom:

seguidodotipodevariável.

Quandoconstantedeveserutilizadoadiretiva const nofinaldalinha,finalizandoadeclaração, vejamoexemploaseguir:

var x: real y: inteiro a: caractere l: logico c: inteiro

Parasedeclararumaconstant,bastadeclaralasnaseçãoconstante,listandocadaconstanteemuma

linhaatribindoseuvalorcomoperadorigual=

Variáveis,ConstanteseTiposdeDados

const notaMinima = 70 notaMaxima = 100 opcaoFixa = `A`

Definaasconstantesantesdasvariáveis.

AtribuindoValoresasVariáveiseConstantes

AAtribuiçãodevaloresasvariáveis,eainicializaçãodasconstantes,devemserfeitascomosímbolo

&lt;-,simbolodemenorqueseguidodeumífem,semespaçosentreosdois.

Aatribuiçãodenovosvaloresdeveserfeitasemprequeoportunaparaasvariáveis,enocaosdas

constantesdeveserfeitonoiniciodoalgortimosomente.

PróximosPassos(PróximoSubcapítulo)

Opróximopassoéentendercomoosdadossãoapresentadosaousuárioutilizandoo"Portugol"no

VisuAlgeemseguidacomoobterdadosdousuário(lerdadosexternos).

Atualizado:12/07/2016-11:00|Revisado:SatJul23201621:17:26GMT+0000(UTC)|Compilado:

SatJul23201621:15:21GMT+0000(UTC)

SaídadeDados

SaídadeDados

Noportugolépossívelsecomunicarcomomundoesternoapresentandodadosatravésdainterface,

todainformaçãoexternalizadaseráapresentadanaseção"ÁreadeVisualizaçãodeResultados".

Todoprogramaprecisaobterdados,tomardecisçõesoucalcularsobretaisdados,eexternalizarde algumaforma,nãofazsentindoumprogramaquenãoexternalizealgo.ParaissooPortugol do VisuAlgtemcomandosparaleituradetecladoeescritanatela.Futuramentequandoestivermos convertendonossosalgoritmosparaArduinoiremosusarasfunçõeseclassesdoArduinoquenos permiteobterdadosesecomunicarcomomundoesternoconformerecursosdisponíveis.

Vejamosoalgoritmoabaixo:

algoritmo "exemplo" var x: real y: inteiro a: caractere l: logico c: inteiro const

inicio

x

<- 2.5

y

<- 6

a

<- "teste"

l

<- VERDADEIRO

c

<- 5

escreval ("x", x:4:1, y+3:4) //Escreve: x 2.5 9 escreval (a, "ok") //Escreve: conteúdo de a seguido de ok (e depo escreval (a, " ok") //Escreve: conteúdo de a seguido de ok (e dep escreval (a + " ok") //Escreve: conteúdo de a seguido de ok (e de escreva ("valor lógico:", l, ".") // Escreve: VERDADEIRO fimalgoritmo

Observe:fizemosumalgoritmomesmoquedeexemplocomaindentaçãoadequada,sempre

devemosnospreocuparcomisso,nestaapostilairemossemprecuidardestapráticapoisémuito

importante.

Nossofoconestesubcapítulo´eousodainstruçãoescrevaeescreval,poisnossaintençãoé

sempreapresentardadosaousuário.

Ainstruçãoescrevapermiteapresentardadospuramente,oucomcertaformação,vejaaprimeira

linhaondeocorreainstruçãoescreva,elarecebetrêsparametros,("x",x4:1,y+3:4).

Oprimeiroparametro"x",éumasimplesstringeseráimpressocomoé.

Jáosegundoparametro,representaavariávelxeosdoisnumérosseparadospor":"(doispontos) formatamaimpressãonúmerica,dizendoaocomandoescrevaqueeledeveimprimiroxcomoum

numeroreal,ondeoprimeironúmero,quatro(4),dizonúmerodecasasantesdopontodecimal,se

ouvermaiscasasquenúmerosaseremimpressoas,serápreenchidocomespaçoembranco.osegundo

número,dois(2)informaonumerodecasasaserusadoapósoponto,sendopreenchidocomzerosa

direita se ouver mais casas que a parte fracional a ser preenchida. (faça testes e observe o comportamentodoVisuAlgecomente).

SaídadeDados

NãopodemosdeixardeobservarqueaoescrevercomoVisuAlg,inteiros,reaisevaloreslógicos,é

adicionadoumespaçoaesquerdaparaauxiliarnaformataçãoquandoconcatenadocomcaracteres,

massomentesenãoouverousodeformatação.

Efinalmenteoterceiroparametroimprimeavariávely,masantessomaovalor3aela,eovalora

seguirseparadopor2pontosfuncionacomoaformatçãojáexplicadanoparagrafoanterior,nocaso

imprimeovalorempelomenos4casas,preenchendocomespaçoembrancoascasasquenãosão

preenchidascomnúmeros.(façatesteseobserveocomportamentodoVisuAlg,ecomente).

Vejaovalordeyéuminteiro,nestecasonãotempartefracional,setentarformatarapartefracional,

elaserápreenchidacomzerosconformeonúmerodecasassugerido,façaalgunstestescomesta

formatação.

SaltodeLinha.

Comoviramexistedoistiposde escreva,oprimeiroacrescidodeuml,eosegundosemol,o primeiroinsereumsaltodelinhaapósfazeraimpressãodoconteúdosolicitado.

Façatestesdeformtaçãocomambososcomandosdeescritanatela.

PróximoPasso(Próximosubcapítulo)

Agora que vimos como nos comunicar com o mundo externo apresentando dados, veremos no próximocapítulocomosolicitaraomundoexternodados,pedindoaousuárioquedigiteatravésdo tecladoosdadosnecessáriosaonossoalgoritmo.

Atualizado:09/07/2016-16:25|Revisado:SatJul23201621:17:26GMT+0000(UTC)|Compilado:

SatJul23201621:15:21GMT+0000(UTC)

EntradadeDados

EntradadeDados

Raramenteumalgortimonãoprecisainteragircomomundoexterno,eraramenteelenãoteráque

obterdados,poiséatravésdavariaçãodedadosexternosqueoprogramareageeassimapresenta

novasalternativaseresultados.

ParaobtermosdadosdomundoexternosiremosusarumcomandomuitopráticodoPortugolpara VisuAlg,ocomando leia elepodeserconsideradooinversodocomando escrever jáqueao invezdeimprimiroconteúdodeumavariávelnatela,eleirálerdotecladoemumavaríaveloquefor digitadoatéquesetecleenter.

Aousarocomando leia oVisuAlgesperaquesejadigitadoalgumdadocompátivelavariável informadacomoparametro.Vocêpodeinformarmaisdeumavariávelparaquesejamdigitadasem sequência.

Casosejadigitadoumdadoincomátivelcomovaloresperado,esteéignorado,porexemplo,seé

esperadouminteiroeédigitadoumumcaracter,estedadoseráignoradoedescartado,atribindo0

avariávelquefoiinformada.

Vejaoexemploabaixo:

algoritmo "teste" // Autor: Carlos Delfino (consultoria@carlosdelfino.eti.br) // demonstra como usar o comando leia, com uma ou mais variáveis.

// variáveis globais Var

podes aumentar [1

var1, var2, var3: inteiro var4, var5: caracter

?]

pra quantos quiser

inicio escreva("Digite algo e veja o resultado a seguir")

leia(var1)

escreval("Você digitou: ",var1) escreva("Digite 3 dados e enter a seguir)

leia(var2,var3,var4)

escreval("você digitou: ",var2:4,var3:4) escreva("Agora vamos reaproveitar uma das variáveis, insira um br

leia(var5,var1)

escreval("Você digitou: ", var5:10, var1:10) fimalgoritmo

Vamos aproveitar o momento e analisar o comportamento também do comando escreva e escreval,énestesmomentosquedescobrimospeculiaridadesdalinguagemusada.Façatestes.

PróximosPassos

IremosaprenderaseguircomodiagramarnossoAlgoritmousandooconceitodefluxograma,há

diversasformasdesediagramarAlgoritmos,masusaremosapenasomaisconhecidoeprático.

Atualizado:09/07/2016-16:30|Revisado:SatJul23201621:17:26GMT+0000(UTC)|Compilado:

SatJul23201621:15:21GMT+0000(UTC)

EntradadeDados

Fluxograma

Fluxograma

VamosinterrompernossasequênciadeestudonoPortugol,paraaprenderalgomuitoimportantepara

diagramarmosumAlgortimo,eatravésderepresentaçãográficademonstrarcomoapresentarofluxo

denossocódigoquandoestesetornamaiscomplexoeumtextoficadifícildesercompreendido.

Este formato gráfico, é conhecido como fluxograma. Para nos ajudar a fazer nossos primeiros fluxogramaseassimnoscomunicarmosmelhor,iremosusarosoftwareDia,epodeserbaixado clicandoaqui.

Aseguiréapresentadoosprincipaissímbolosqueusaremospararepresentaçãográficadenosso

códigoemportugol.

Início

OSimbolodeiníciocomopodeservistoéumaformaoval,contendoapalavrainíciooumesmoo

nomedoalgortimooufunçãoquesedesejadescrever.

nomedoalgortimooufunçãoquesedesejadescrever.

Emalgunscasospodesersubstituídoporumcirculovazio,emespecialemalgoritmosmaissimples.

Dados

Dados

OSímobolodadosdeveserutilizaodparaidentificardeclaraçãodevariáveisemanipulaçãodas

mesmasdeveserosímboloabaixo:

mesmasdeveserosímboloabaixo: Image1.6.6.1-SimbolonoFluxogramaparaindicarInício

Image1.6.6.1-SimbolonoFluxogramaparaindicarInício

LeituradeDados

Osímbolodeleituradedados,éutilizadoparareceberdadosnormalmentedoteclado,emcasos especiais pode ser considerado receber dados de uma porta serial por exemplo:

Fluxograma

Fluxograma EscritadeDados OSimbolodeescritadedados,éinterpretadodediversasformasemalgunspadrõesdefluxograma,

EscritadeDados

OSimbolodeescritadedados,éinterpretadodediversasformasemalgunspadrõesdefluxograma, comooFluxogramadopadrãoANSI,quepermitepersonalizarestesimboloparaoutrasoperações,no nosso contexto será usado apenas como escrita de dados na tela ou na porta serial.

apenas como escrita de dados na tela ou na porta serial. Processar

Processar

OSimbolodeprocessamentoéutilizadoparachamaroutrofluxograma,ouparaindicarumconjunto

deinstruçõesprecisas,comofazerumdeterminadocalculo,ouposicionarumbraçomecãnico.

Image1.6.6.2-Simboloquerepresentaumpontodeinínio Decisão

Image1.6.6.2-Simboloquerepresentaumpontodeinínio

Decisão

OSimbolodedecisãoéutilizadoparaanalisarumaexpressãológicaeassimdecidirqualfluxotomar,

émuitousadotambémpararepresentaratomadadedecisãodentrodeestruturasdelaçosena

estrutura"Escolha".

estrutura"Escolha". Image1.6.6.3-Simbolodeobtençãodedadosnofluxograma 30

Image1.6.6.3-Simbolodeobtençãodedadosnofluxograma

Fluxograma

PontodeJunção

Um ponto de junção é normalmente usado para unir ramificações no fluxograma gerados pelo simbolo de decisão, o ponto de junção pode também ser usado númerado para unir páginas de fluxogramaquandoesteprecisaserquebradoempartespornãocabernumaúnicavisualização.

Parar

Parar

OsimbolodepararéigualaosimbolodeiniciarporémcomapalavraPararemseuinterior.O

Algortimofinalizaaoencontrarestesimbolo.

emseuinterior.O Algortimofinalizaaoencontrarestesimbolo. Image1.6.6.4-LeituradeDadosemumfluxograma

Image1.6.6.4-LeituradeDadosemumfluxograma

ExemplodeumasequênciagenéricadeFluxograma

Fluxograma

Fluxograma Image1.6.6.5-EscritadeDadosnoFluxograma PróximosPassos 32

Image1.6.6.5-EscritadeDadosnoFluxograma

PróximosPassos

Fluxograma

Vamosveragoracomocontrolaraexecuçãodeumdeterminadoblocodecódigoalémdoprincipal,

veremososoperadoreslógicosparaquepossamosajudarnatomadadedecisão.Apósestepasso

veremososoperadoresmatemáticos.

Atualizado:13/07/2016-00:22|Revisado:SatJul23201621:17:26GMT+0000(UTC)|Compilado:

SatJul23201621:15:21GMT+0000(UTC)

InstruçõesdeControleeOperadoresLógicos

InstruçõesdeControleeOperadoresLógicos

Agoranossoestudovaicomeçaraficarmaisdivertido,enãoéporqueestamosemumcursotécnico

ondeiremosembrevenaprofissãoescolhida,quenãopodemosnosdivertircomnossotrabalho,nos

realiznadocomoprofissionais.

Passaremos agora a ter maior controle sobre o algortimo, é aprenderemos a fazer com que o computador faça exatamente o que queremos, conforme dados forem fornecidos a ele. Este aprendizadoémuitoimportanteeseráusadoaolongodetodaasuavidacomodesenvolvedorde softwaresefirmwares(códigoparamicrocontroladoresehardware).

OperadoresLógicoseRelacionais

Iremosantesdetudoaprenderoquesãooperadoreslógicoserelacionais,assimpoderemosusa-los

comfacilidadecomasinstruçõesdecontrole.

masantesdecontinuarmos,precisamosconhecerduasconstantesmuitoimportantes:

VERDADEIROFALSO

FALSOVERDADEIRO

Sãoautodescritiveisepodemserusadasparaauxiliarnacomposiçãodeexpressõeslógicasem

instruçõesdecontroledefluxo(execuçãodeblocos)einstruçõesdecontroledelaço.

OperadoresRelacionais

Operador descrição Teste Resultado

=

Igual

2=2 verdadeiro 1=5 falso

<>

Diferente

3<>3falso

 

2<>4falso

<

Menor

1<5 verdadeiro 3<2 falso

>

Maior

1>5 falso

 

3>2 verdadeiro

<=

menorouIgual2<=7verdadeiro

 

4<=4verdadeiro

8<=3falso

>=

maiorouIgual 2>=7falso

4>=4verdadeiro

8>=3verdadeiro

OperadoresLógicos

Operador

Nao

descrição

Teste Resultado

Operadorunáriodenegação,temmaiorprecedenciasobreos demaisoperadores,fazainversãodalógica,ouseja,verdaeirose nao2=2 falso

InstruçõesdeControleeOperadoresLógicos

tornafalsoefalsoverdadeiro

Operadorsimilarasomabinária,quandoumdosvaloresfor

ou verdadeiroouambosforem,retornaverdadeiro

verdadeiro

ou

verdadeiro

verdadeiro

falsoou

verdadeiro verdadeiro

falsoou

falso

falso

Operadorsimilaramultiplicaçãobinária,apenasquandoambos verdadeiro

efalso

verdadeiro

e

verdadeiro

verdadeiro

xou

verdadeiro

verdadeiro

xoufalso

falsoxou

falso

Operadorsimilaraoou,porémapenasretornaverdadeirose

somenteumdosvaloresforemverdadeiros

e osvaloresforemverdadeiro,retornaverdadeiro

xou

falso

verdadeiro

falso

verdadeiro

falso

ControlesdeDesvios

Iremosverdoiscontrolesdedesviosdeexecução,quenosajudaráadarmaisinteligênciaaonosso Algortimo.Oprimeiroumdesviopordecisãocombaseemexpressõeslógicas,muitoindicadopara tomadadedecisões,ejádeixoaquiumganchoparapesquisasdealgortimosavançadoscomoo

"C4.5",nãoveremostaisalgortimosemnossocurso,entãovamosaonossoprimeirocontroleose,

emseguidaveremosocomandoescolha,umcontroledeseleçãomultipla.

Se

Ocomandoseesperaemseguênciaumaexpressãológicaqueirádefinir"se"executará"então"um

blocodecódigo,sejadeapenasumalinha,ousejademuitaslinhas,ou"senão"executaráoutro

bloco.

Aestruturapadrãodocomandoé:

se m < 7.0 entao Escreva ("Em EXAME") Senao Escreva ("APROVADO") fimse

Representamosoexemploacimacomofluxograma:

InstruçõesdeControleeOperadoresLógicos

InstruçõesdeControleeOperadoresLógicos Image1.6.7.1-EstruturadeControleSE

Image1.6.7.1-EstruturadeControleSE

Nopedaçodealgortimoacima,temososeguinteaserinterpretado:Se"m"menorqueovalorreal7.0

então escreva "Em EXAME" na tela, agora se "m" não for menor nem igual, então, escreva "APROVADO"natela.

Épossívelinserirumaestruturadedecisãodentrodaoutra,veremostalpráticacomexercícios.

Escolha

o comando escolha em algumas situações é melhor que o comando se, quando temos uma

InstruçõesdeControleeOperadoresLógicos

quantidadedeanalisededecisãomaior,comoporexemploemcódigosdemenu,ouquereceba

caracterescomorespostaeprecisatomardecisões.

Vejamosumexemplodaestruturadousodoescolha:

leia(op) // apenas para auxiliar o entendimento, não faz parte da es escolha op caso "Carioca", "carioca", "CARIOCA" escreverl("preparar café carioca") caso "Expresso", "expresso", "EXPRESSO" escreverl("preparar café expresso") outrocaso escreverl("não tenho este tipo de café.") fimescolha

Ofluxogramaparaocódigoacimapodeserdesenhadodaseguinteforma:

InstruçõesdeControleeOperadoresLógicos

InstruçõesdeControleeOperadoresLógicos Image1.6.7.2-EstruturadeControle"Escolha-Caso" 38

Image1.6.7.2-EstruturadeControle"Escolha-Caso"

InstruçõesdeControleeOperadoresLógicos

Como podem ver o comando escolha permite diversos casos, no Portugol do VisuAlg, não executamumapósoutroapartirdoescolhido,mascuidadoemoutraslinguagemcomooC/C++exige umcomandodeinterrupção.

No comando escolha também podendo ter uma opção outrocaso que será executado caso nenhumaoutraopçaosejaidentificada.

Esemaisdeumaopçãoforpossível,bastainseri-lasseparandocadaumaporvirgula.

ControlesdeLaços(loops)

Algunsblocosdecódigoprecisamserexecutadosduranteumperiododetempoouenquantouma

determiandacondiçãoémantida.ParaissoexistenstrêsinstruçõesnoPortugolquenospermitem

controlardeformadiferenteumblocodecódigo.

Enquanto

Ainstruçãodecontroledelaços enquanto,éusadaparapermitiraexecuçãodeumblocode instruçõesfinitamente,antesdecadaexecuçãodoblocoumacondiçãoéanalisada,enquantoela retornarverdadeiro.

Vejamoscomoéainstruçãodeformacompleta:

algoritmo "demonstracao enquanto" Var

contador: inteiro

inicio continua <- "s" contador <- 1 escreval("Começa?") leia(continua) enquanto continua = "s" faca

escreval("Contador: ", contador) contador = contador + 1

escreval("Contitua ou para?") leia(continua) fimenquanto escreva("Equanto Finalizado:",contador) fimalgortimo

InstruçõesdeControleeOperadoresLógicos

InstruçõesdeControleeOperadoresLógicos 40

InstruçõesdeControleeOperadoresLógicos

Image1.6.7.3-EstruturadecontroleEnquanto

Repita

Jáainstruçãorepitapermiteoblocoserexecutadopelomenosumavez,antesdeverificarsea

condiçãoquepermitearepetiçãosejaanalisada.

algoritmo "demonstracao repita" Var

contador: inteiro

inicio contador <- 1 escreval("Começando Enquanto:",contador) escreval("Contitua ou para?") repita escreval(contatodor) contador = contador + 1 leia(continua) ate continuar = "s" escreva("Equanto Finalizado:",contador) fimenquanto

Comopodeverainstruçãodecontrolerepitaficanolaçoatéqueaopraçãológicaretorneverdadeiro,

ouseja,"repeteatéquesejaverdadeiro".Podemosdizerassimqueocontroledelaçorepitaéa

negaçãodocontroledelaçoenquanto.

Existeumasegundaformadeseusarocontroledelaçorepitaquepermiteinfinitamenteexecutarum

blocodecódigo,emumcasoqueveremosmuitoutilnomundodosmicrocontroladores,eporhora,

seriatambémútilparaumsistemaquecontecomummenu,vejamoscomoficaoprogramaacima

comesteformato,essanovasintaxe:

algoritmo "demonstracao repita infinito" Var

contador: inteiro continua: caracter

inicio contador <- 1 escreval("Começando Enquanto:",contador) escreval("Contitua ou para?") repita escreval(contatodor) contador = contador + 1 leia(continua) se continua = "parar" interrompa fimse fimrepita escreva("Equanto Finalizado:",contador) fimenquanto

InstruçõesdeControleeOperadoresLógicos

Veja,nestecasoousodointerrompa,queseráexplicadoabaixosetornaadequadoenecessário.

Para

Ainstruçãodecontroledelaços para deveserusadaquandoforprecisocontadoresautomático, normalmenteparaacessarvetores.Vejamosumexemplocomaestruturacompleta:

algoritmo: "demonstracao para" Var

contador: inteiro

inicio para contador de 1 ate 10 passo 1 faca escreval("Valor: ",contador); fimpara fimalgoritmo

escreval("Valor: ",contador); fimpara fimalgoritmo Image1.6.7.4-EstruturadeLaço/Loop-Para Interrompa Para as

Image1.6.7.4-EstruturadeLaço/Loop-Para

Interrompa

Para as três instruções de controle de laço, enquanto, repita e para é possível inserir condições

InstruçõesdeControleeOperadoresLógicos

internasseoucasoeassiminterromperolaço,chamandoocomandoInterrompa.

Issonãoéindicadoparaprogramaçãoestruturada,jáquequebramosofluxodonossoAlgoritmo, tornandoocodígoconfusoemuitoramificado.Oidealéqueestrutureseucódigodeformaqueeste flua naturalmente sem o uso do Interrompa então procure buscar melhorias no seu algoritmo, otimizações,eeviteousodoInterrompaomáximoquepuder.

PróximosPassos

Nãohánadamaisimportantenavidatecnologicadahumanidadequantoamatemática,semelanada

doquetemoshojeteriaacontecido.Enopróximopassoveremosrápidamentecomotransformar

nosasformulasmatemáticasemalgoritmos.

Revisado:07/07/2016-12:00|Atualizado:07/07/2016-11:55|Compilado:SatJul23201621:15:21

GMT+0000(UTC)

OperaçõeseFunçõesMatemáticas

OperaçõeseFunçõesMatemáticas

VamosagoratrabalharcomOperaçõeseFunçõesMatemáticaseparaissoéprecisoantesdetudo

aprendermoscomoconvertermosasformulasmatemáticaspresentesnosalgoritmostestuaiseteses

acadêmicasqueteremosacessoparaconstruirocomportamentodenossossistemas.

Paraconvertermosumaformulamatemáticacomoesta:

2

{[ 3

− (5 − 3) + 1

]}

.5

emumAlgoritmocomputacionaléprecisolinearizarasexpressões,ousejatransforma-laemuma

sequênciassimplesdeoperações,veja:

{[(2 ÷ 3) − (5 − 3) + 1]}.5

Eposteriormentesubstituirosoperadoresmatemáticospelosequivalentesnalinguagemescolhida:

(((2 / 3) − (5 − 3) + 1)) ∗ 5

Abaixoapresentamosumatabeladesubstituição:

Descrição

Comum computacional

Multiplicação

Divisão

Soma

- Abrechavesoucolchetes {ou[ Fechachavesoucolchetes}ou]

Subtração

.ouX

*

/ou\div÷/

+

+

-

(

)

sqrt(x)

x

RaizQuadrada

Ponteciação

x

x^y

Prioridades

Como na matemática comum precisamos construir nossas formulas sejam matemáticas ou para operaçõeslógicasobservandoasprecedênciasdosoperadores,ealterandocomousodeparenteses comoécomumserfeito.Abaixoumatabeladeprioridadesparaosoperadores:

|OperadorAritmético|Prioridade||Exponênciação|3(maior)||Multiplicação|2||Divisão|2||

Adição|1||Subtração|1(menor)|

Exemplo:

Porémjáaformulá:

(2 + 2)/2 = 2

2 + 2/2 = 3

OperaçõeseFunçõesMatemáticas

|OperadorLógico|Prioridade||e|3||ou|2||nao|1|

Resultadofalso:

(2 > 3) ou (3 < 2) e (2 < 3) = Falso

Resultadoverdaeiro:

(2 > 3) e (3 < 2) ou (2 < 3) = V erdadeiro

ApesardoVisuAlgnãoaceitarrelacionamentoentretiposdeoperadores,comomatemáticoscom

LógicoseRelacionamento,épossívelusa-losemumaoperaçãoobservandoousocorreto.

|Operador|Prioridade||Aritméticos|3||Relacionais|2||Lógicos|1|

Ousoabaixoestáerrado:

2 ∗ 5 > 3 ou 5 + 1 < 2 e 2 < 7 − 2

Paraqueafórmulaacimafiquecorretadeveserescritadaseguinteforma:+

(2 ∗ 5 > 3) ou (5 + 1 < 2) e (2 < 7 − 2)

PróximoPasso

AquiconcluimosnossoestudosobreAlgortimo,destepontocabeanóspráticarmos,existeaindaum subcapítulo a seguir meramente como referência geral as palavras chaves, comandos e funções proprietáriasdoPortugolparaVisuAlg.

ContinuaremosagoranasegundaparteondeiremosaprenderaLinguagemC,comalgunsganchos

paraaLinguagemC++,umaextençãoquepermiteprogramarorientadoaobjetoscomaaLinguagem

Ceaindaoutrosrecursosavançados,porémnãoiremosestudarnadaquenãosejanecessárioparauso

comoArduinoeseudialetoWiring(tambémconhecidocomoLinguagemdoArduino)

Revisado:07/07/2016-13:00|Atualizado:07/07/2016-13:00|Compilado:SatJul23201621:15:21

GMT+0000(UTC)

TabeladaVerdadeeDepuração

TabeladaVerdadeeDepuração

Adepuraçãodecódigoéumaatividadeimportanteparadescobrirseseualgorítmoestáfuncionando

corretamenteesenão,descobrirondeestáoerro.

JáatabeladaVerdade,nosajudatantonaativdadededepuração,comotambémnoplanejamentoe

otimizaçãodenossocódigo.

AlgunschamamestaTabeladeTestedeMesa.

Atabela da verdade é uma simulação de todos os passos que serão dados no algorimo, porém baseadosnasvariáveispresentes,considerandoseusvalores,leituras,etomadasdedecisão,eassim aferindoosresultadosobtidosedesejados.

Atabeladaverdadepodesetornarbastantecomplexa,equandoforocasoprocureusarumsoftware

comoumaplanilhaeletrônicaparalheajudaraconstrui-laeaferirosvalores,principalmenteseouver

muitoscalculosquesejamnecessáriosparaobterosresultados.

AconstruçãodaTabeladaVerdade,ouTabeladeTestedeMesa,seiniciapelacriaçãodeumacoluna

paracadavariável,ondedevenaprimeiralinhaconterosvaloresesperadosemsuainicialização.

Emseguidadeveseaferiratravédoprocessodedepuração,usandolinhaalinha[F8]ouPontosde

Paradas(Breakpoints)paraconferirseasvariáveisestãocomosvaloresesperados.

Naslinhassubjacentesécolocadoovalordecadavariávelacadainteraçãodocódigo,identificandoa

linhaconformeopontodeparadaouainteraçãonolaçooublocodecódigoqueseestásendo

analisado.

Éindicadotambémcriarumacolunaparacadaoperaçãológicaqueinfluênciaemlaçoseestruturas

deconroles.

RelaçãodeComandosPortugolparaVisuAlg3.0

Relação de Comandos Portugol para VisuAlg

3.0

Este material foi retirado na integra do arquivo "RELAÇÃO DE COMANDOS DO VISUALG

3.0.txt",enodecorrerdodesenvolvimentodestaapostilaseráamadurecidoparamelhorarafluênciae

consolidaçãocomorestantedotexto.

DentrodoVISUALG3.0temestalistaacessivelatravésdasequenciadeteclas[CTRL]+[J],dizo

autor: "mas acho que também está incompleta, é que são tantas coisas, que eu estou ainda me organizando".

AmaioriadelesestãodentrodoHELP.CHM

Seguearelaçãodoscomandos,funções,variáveis,constantesedados:

Funções pré definidas no visualg 3.0 (pseudo-linguagem em portugol)

Funçõesmatemáticas

Abs()

Log()

Div()

Tan()

Sen()

Cos()

Rand()

GeraumvaloraleatóriodotipoReal.Nãoprecisaargumento,ovaloraleatóriogeradoéentre0e1,

sendoaprecisãodede15casasapósavirgula,comonoexemploabaixo:

0.454236520919949

Randi(x)

GeraumnúmeroaleatóriodotipoInteiro,entre0eovalordexinformadocomoparâmetro.

Quad()

Exp()

Pot()

Cotan()

ArcCos()

RelaçãodeComandosPortugolparaVisuAlg3.0

ArcSen()

Raizq()

Mod

usadoparaacharomódulodeumnúmeroemcomparações(omesmoque'%')

Funçõesrelativasaoteclado

Leia

Lêdotecladoecolocaemumavariável'nomeVariavel':

leia(nomeVariavel)

Funçõesespeciaisdeconversões

Pos()

Asc()

Carac()

Copia()

Int()

Compr()

Maiusc()

Minusc()

NumPCarac()

CaracPNum()

FunçõesespeciaisquenãoretornamvaloresparavariáveissócomosPERIFÉRICO

(MONITOR)

Escreva

Escrevenateladomonitordocomputadorficanalinha

escreva(&quot;texto entre aspas, ou variável que terá o conteudo impresso na tela&quot;)

#####Escreval Escreve na tela do monitor do computador mas pulando um linha.

escreval("textoentreaspas,ouvariávelqueteráoconteudoimpressonatelacomumsaltodelinha")

escreval(variavel)

RelaçãodeComandosPortugolparaVisuAlg3.0

##### MudaCor Muda a cor dos caracteres(letras) e do fundo (tela)

mudacor("nomedacor")

Nome de cores possíveis:

* Amarelo

* Branco

* Preto

* Azul

* Verde

* Vermelho

#####Mudacor(Cor, posição) Muda a cor dos caracteres (letras) ou do fundo (tela) conforme a pos

mudacor("nomedacor","posição")

Nome de cores possíveis:

* Amarelo

* Branco

* Preto

* Azul

* Verde

* Vermelho

Posição pode ser entre "aspas" ou:

* FRENTE

* FUNDOS

## Extras (ainda não criadas)

##### Posicionar

##### Tecla

##### Etrim

##### Dtrim

##### Esquerda

##### Direita

##### Replicar

## Comandos do Visualg 3.0 (pseudo-linguagem em portugol)

##### Limpatela Limpa a tela do monitor do computador

RelaçãodeComandosPortugolparaVisuAlg3.0

##### Pausa

##### Arquivo

#### Desvios multiplos condicionais só use variáveis e controles do tipo caracter

Escolhaxvar(caracter)Caso"texto"OutrocasoFimescolha(FIMESCOLHA)

#### Desvios simples e compostos

Se(condição)entãocomandossenãocomandosFimSe

SEEntaoEntão(ENTÃO)Senao,Senão(SENÃO)FimSe

#### Controle de Laços sequenciais e finitos

PARAvariável(inteira)DEinicioATÉfimFAÇAcomandosFIMPARA

ParaDe(DE)Ate(ATE)Até(ATÉ)PassoFaca(FACA)Faça(FAÇA)FimPara(FIMPARA)

#### Controle de Laços sequenciais e infinitos Controla quando um bloco de código deve ser executado.

##### Enquanto "Enquanto" uma determinada condição for verdadeira executa o bloco d

EnquantocondiçãoFAÇAcomandosFimEnquanto

##### Repita Repete o bloco de código infinitamente;

RepitaFimrepita(FIMREPITA)

##### Interrompa Quando usado dentro de um bloco de código dentro de laço (loop), int

```Interrompa

Retorne

Retornaaoiniciodolaço,começandonovamenteobloco.

Retorne

Operadoreslógicos

e

RelaçãodeComandosPortugolparaVisuAlg3.0

Conjunçãologica,verdadeiroapenasseambosascondiçõesforemverdadeiras.

e (E)

ou

Conjunçãologica,verdadeiroseumadascondiçõesforemverdadeiras.

ou (OU)

não

Inversorlógico,inverteacondição,severdadeirapassaaserfalsaeviceversa.

Não (NÃO)

Xou

Conjunçãológica,equivalentea ou porémapenasretornaverdadeiroseumadascondiçõesforem verdaeiras,seambasforemverdadeirasoufalsasretornafalso.Xou (XOU)

Declaração de UDFs (FUNÇÕES DEFINIDAS PELOS USUÁRIOS)

Funcao

Função (FUNÇÃO) Fimfuncao (FIMFUNÇÃO)

Mensagem

Procedimento (PROCEDIMENTO) Fimprocedimento (FIMPROCEDIMENTO)

PalavrasreservadasEspeciais

Algoritmo

Começodetodososalgoritmos

var

declaraçãodostiposdasvariáveis

Inicio

iniciodoprograma(Algoritmo)oufunçãoouprocedimento

FimAlgoritmo

terminodoalgoritmoefimdoprograma

Cronometro

RelaçãodeComandosPortugolparaVisuAlg3.0

Timer

On

Off

Eco (ECO)

Aleatorio (ALEATÓRIO)

Perfil

Dos (DOS)

Debug (DEBUG)

Tipo (TIPO)

var (VAR)

const (CONST)

Declaraçãodeconstantespadrão

const(CONST)ListaPi(PI)

DeclaradoresdeVariáveisnocabeçalhodoprograma(áreadedeclarações)

Var(VAR)Variável(VARIÁVEL)Variavel(VARIAVEL)

Atualizado:09/07/2016-16:30|Revisado:SatJul23201621:17:26GMT+0000(UTC)|Compilado:

SatJul23201621:15:21GMT+0000(UTC)

QuestõesparafixaçãodaPrimeiraParte

QuestõesparafixaçãodaPrimeiraParte

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

FaçaumAlgoritmoparacaclularoestoquemédiodeumapeça,sendoqueESTOQUEMÉDIO

=(QUANTIDADEMÍNIMA+QUANTIDADEMÁXIMA)/2.

Construaumalgoritmoque:

1. LeiaacotaçãodoDólar.

2. LeiaumvaloremDólares.

3. ConvertaessevalorparaReal.

4. Mostreoresultado.

Construaumalgoritmoparapagamentodecomissãodevendedoresdepeças,levando-seem

consideraçãoquesuacomissãoseráde5%dototaldevendaequevocêtemosseguintes

dados:

Calculareexibiramédiaponderadade2notasdadas.(nota1=peso6enota2=peso4)

ConverterumatemperaturaemFahrenheitparaCelsiusemostraroresultado:

F = (C ∗ 1.8) + 32

C = (F − 32)/1.8

K = C + 273.15

Reajustarumsalárioem17,75%

Calcularodescontode23%sobreopreçodeumproduto.

Dadaumataxadecâmbio,transformarumvaloremDolaparaReais.

Dataumataxadecâmbio,transformarumvalordeReaisparaDolar.

Somardoisnúmerosrepresentadospelasletrasaebeescrever.OresultadodaSoma.

Calculareexibiraáreadeumtriângulo.

area =

B H

2

Escrevaocomandodeatribuiçãoeresolvaaexpressãodasseguintesfórmulasmatemáticas.

A+

B

C

E

DF

OndeA=2,B=6,C=3,D=4,E=8,F=4,X=2 X =

Paracadalinhainformarovalordaexprssãoedasvariáveis:

Y =

2 ( 2X −3x x+1) √ X+2 + 2 X
2
(
2X
−3x x+1)
√ X+2
+
2
X

2 X

1.

X ← 5; Y

← 1; Z ← 3

 

;

2.

X ← 5 + Y

Z

 

;

3.

Z X; Y

Z

 

;

4.

Y = X

 

;

QuestõesparafixaçãodaPrimeiraParte

5.

Z X + Y /2 ∗ ∗2

 

;

6.

X = Y

 

;

7.

Z > X

 

;

8.

Y

< Z

 

;

14. QualseráovalorarmazenadoemXseXpossuiovalor15eforamexecuadasasseguintes

instruções?

 

X

X

+ 3

X

X − 6

X X/2

 

X

← 3 ∗ X

X X X + X X/X

15. Supondo que A, B e C são variáveis de tipo inteiro, com valores iguais a 5, 10 e -8,

respectivamente,eumavariávelrealD,comvalorde1,5,quaisosresultadosdasexpressões

aritméticasabaixo:

1. 2 ∗ A mod 3 − c

2. rad (−2 ∗ C) div 4

3. (30 mod 4 ∗ pot (3, 3)) ∗ −1

4. pot(−C, 2) + (D ∗ 10)/A

5. rad(pot(A, B/A)) + C D

16. Elaboreumalgortimoparainformarosaldoatualizado:

1. Deumtrabalhadorque:(1)recebeuseusalárioeodepositouemsuacontacorrente

bancária.

(2)emitiudoischequees.sabe-sequecadaoperaçãobancáriaderetiradapagaCPMFde

0,38%eosaldoinicialdacontaestázerado.

2. Deumtrabalhadorque:(1)Recebeuseusalárioeodepositouemsuacontacorrente

bancária.(2)Emitiuumcheque.Sabe-sequecadaoperaçãobancáriaderetiradapaga

CPMFde0.38%eosaldoinicialdacontaédeR$1.000,00

17. Elaboreumalgortimopararesolvercadaumdosseguintesproblemasusandoalinguagem

algoritmadoVisualg:

1. Lertrêsnumerosinteirosepositivos(A,B,C),calcularemostraroresultadodaseginte

expressão:

QuestõesparafixaçãodaPrimeiraParte

,emque

e

.

D = (R + S)/2

R = (A + B)

S = (A = C)

2

2

2. Calculareexibiraáreadeumacircunferência.Usaraexpressão

area = pi R

2

ondepiéumaconstantenovalorde32,1416

3. Calcularemostraroíndicedemassacorpóreaeumapessoaapartirdesuaalturae

peso,dadopelafórula

IMC = P/H

2

,ondePéopesoemKgeHéalturaemmetros.

18. Convertacadaumadasexpressõesabaixoparaaformaalgorítmicaecalculeovalordavariável

Xutilizandoosvaloresinformadosaseguir:Formulas:

1.

X =

AB

5C

+

CE d

2.

X =

A

B

C

D

E+F

3. (a −2B+1)

X =

2

2(A+B)

Valores:

1. A=10;B=6;C=4;D=2eE=4;X=?

2. A=9;B=3;C=8;D=2eE=4;F=3;X=?

3. AeB=5;X=?

ResultadosEsperados:

1. 14

2. 12

3. 18

19. Fazerumalgortimoparadeterminarseépossívelcalcularounãoumaraizquadrada,caso

positvocalcule-a

20. Fazerumalgortmoqueidentifiqueseonúmerodigitadoéparouimpar:

21. Lerumnúmerorealeescreverseénegativo,nulooupositivo.

22. Desenvolveralgoritmoque,dadaduasnotas,inofrmaseoalunofoiaprovadoounão.

23. Noexemploanterior,informarseoalunofoiaprovado,estáemrecuperaçãooufoireprovado.

24. Desenvolverumalgoritmoquedadoumsalário,calculeonovosalário,sabendo-sequeo

QuestõesparafixaçãodaPrimeiraParte

aumentoédiferenciadodaseguinteforma:quemtemsaláriomenorqueR$500,00vaiterum

aumentode30%equemreceberissooumais,teráumaumentode20%

25. Calcularimpostosobresalário:até1.100nãopagaimposto,até2.200paga11%eacimade

2.200paga20%.

Atualizado:11/07/2016-10:34|Revisado:SatJul23201621:17:26GMT+0000(UTC)|Compilado:

SatJul23201621:15:21GMT+0000(UTC)

C/C++-IntroduçãoaLinguagem

C/C++-IntroduçãoaLinguagem

Iremos agora começar realmente a aprender como dominar o computador, até agora estavamos abrindo horizontes, apenas como um esportistas que vai a academia exercitar seus músculos, estavamoscomoPortugolexercitandonossocelebroparaencararmosoqueérealmenteprogramar umcomputador.

ALinguagem C (ainda não veremos o C++) é a linguagem de auto nível que é de mais fácil entendimentoeaomesmotempomaispróximadocomputador,todasasdemaislinguagénspormaior quesejamsuaspromessas,aindasimnãogeramomelhorcódigoparaumcomputador.

Nodecorrerdenossasvidasprofissionaisconheceremoscadavezmaisnovaslinguagens,algumas

recemcriadaseoutrasjáantigascomooBasic.Nomundodosmicrocontroladores,nossoobjetivo

comestadisciplina,existealinguagemBasicquequalquerprogramadorcomamplosconhecimentos

daengenhariadedesenvolvimentopoderápensarquenãosejapossívelusarparaaprogramaçãode

Microcontroladores,masaplataformaBascomnosfavorecenestemilagretecnologico,umavezque

osmicrocontroladoresforamcriados,emespecialosdeArquiteturaRisc,paraseremprogramados

comalinguagemC,masnãoexclusivamente.

EntãocomopodemveroaprendizadodalinguagemCéfundamentalparaquempretendeprogramar

comexcelenciaparamicrocontroladores,emespecialosquesãodafamiliaARMeAVRjáque

ambossãobaseadosnaarquiteturaRISC.Issosedeveaofatodetaismicrocontroladoresteremsido

construidosparaquefossemprogramadosnativamentenalinguagemC.

PróximoPasso

VamosentãocomeçarnossosestudosdaLinguagemC,edeixaremosasuaextençãoaLinguagem

C++paraumcursomaisavançadodeprogramação,jáqueoC++exigeodomíniodalinguagemCe

conhecimentosdeorientaçãoaobjetos,linguagensdediagramaçãoeanalisecomoUML.

AseguirvejamosumpoucodaHistóriadoCedoC++

Revisado: Sat Jul 23 2016 21:17:26 GMT+0000 (UTC) | Compilado: Sat Jul 23 2016 21:15:21

GMT+0000(UTC)

HistóriadaLinguagemCeC++

HistóriadaLinguagemCeC++

VamoscomeçarcomahistóriadoC,conhecendocomosurgiu.OC++surgiuem1979quandoBjarne

StroustrupfoitrabalharemsuaTesededoutorado,eleiniciouseutrabalhocomalinguagemchamada

Simuladesignadaparasimulações,porémStroustrup,achouSimulamuitolentoparausospráticos.

InicialmenteC++erachamadadeCcomClasses,oquenosrespondequaladiferençabásicaentreC

eC++,jáqueC++éumsuperconjuntodaLinguagemC,seuobjetivoéadicionaralinguagemCos

conceitosdeprogramaçãoorientadaaObjetos,seperderodesempenhodalinguagemC.

Em1983,onomeC++foiadotadoentão,++foiescolhidoporserooperadorquefazumavariável

ser adicionada de uma unidade (somada do valor um), mas apesar deste pequeno incremento a linguagemC++trazmuitosrecursosnovosalinguagemC.

ALinguagemC++passouaserpatronizadaem1998emseuprimeiropadrãointernacionalatravésdo

ISO/IEC 14882:1998, conhecido como C++98, gerando um manual de referência amplamente

utilizadoparaestapadronização,2003umnovocomitêapresentoudiversosproblemasnopadrão

anterior,revisandoegerandoumnovopadrãoentãochamadoC++03

Jáem2005,umrelatóriotécnico,apelidadodeTR1(TecnicalReport-1),detalhoudiversosrecursos

quedeveriamseradicionadosalinguagem,criandoumnovopadrãochamadoC++0x,porémsomente

nosmeadosde2011umnovopadrãofoigeradooC++11,incluindonestenovopadrãoousode

expressõesregularesetambémumapropostaparaumanovasintaxesimilaràlaçosdotipoforeach existentesemoutraslinguagens,criandoumamaiordistânciadalinguagemCoriginal,masnãose tornando incompátivel. Porém sendo preciso identificar para o compilador quando será usado recursosespecificosdaLinguagemC++eCporquestõesdeoptimização.

AlinguagemC,nossoobjetivo,foicriadaporDennisRitchieem1972quandoestetrabalhavanos

LaboratóriosBelldaAT&TparaquefosseumalinguagempadrãodosistemaoperacionalUnixusado

entãonoPDP-11.

AlinguagemC,foibaseadatecnicamentenalinguagemALGOL60,umalinguagemdealtonívelque

jácomentamosaquiquandofalamosdealgortimo,estalinguagemporserumalinguagemdealto

níveltrabalhavalongedosconceitosdamáquina,semterquesepreocuparcomaspectoscomocada

comandooudadoseriaarmazenadoouprocessado,oALGOLnãotevesucesso,talvezportentarser

muitoAutoNível.ALinguagemCfoicriadaparasubstituiralinguagemFORTRAN.

Antes do C, ouve tentativas de criar outras linguagens como a CPL (Combined Programming Language)nauniverdadiedeLondreseCambridge,umalinguagemquetentavatrazeroALGOLa

umarealidade,porémaindaassimnãosetevesucesso,em1967tentaramcriaraBCPL(BasicCPL),

umatentativadeMartinRichardsemCambridge,etambémnãofrutificou.

Em1970ochefedeequipequeprojetouoUNIXparaPDP-11criouumaoutraversãoresumidado

CPLchamadasimplesmenteB,mastantoBquandoBCPLaindaerammuitolimitados,eBtambém

semostroulenta,aindamaisparaescreversoftwaresoperacionaisedealtodesempenho.

EntãoDennisRitchieficouencarregadodecriarumanovalinguagem,queseriaosucessordeB,nada

maisoriginalquechama-ladeC.

AlinguagemCbuscoumantero"contatocomocomputadorreal"eaindasimdaraoprogramador

novascondiçõesparaodesenvolvimentodeprogramasemáreasdiversas,comocomercial,científica

edeengenharia.

HistóriadaLinguagemCeC++

Pormuitosanos(aproximadamente10)asintaxe(formato)tidacomopadrãodalinguagemCfoi

aquelafornecidacomoUNIXversão5.0doBellLabs.Aprincipaldocumentaçãodestepadrão

encontra-senapublicação"TheCProgrammingLanguage",deBrianKernighaneDennisRitchie

(K&R),tidacomoa"bíbliadalinguagemC".

OmaisinteressantedestaversãodeCeraqueosprogramas-fontecriadospararodaremumtipode computador podiam ser transportados e recompilados em outros sem grandes problemas. Aesta característicadá-seonomedeportabilidade.Comela,umaempresaquedesenvolveumprograma podefazê-lorodaremdiferentescomputadoressemterumelevadocustoacadavezqueistoforfeito.

Em 1985, ANSI (American National Standards Institute) estabeleceu um padrão oficial de C o chamado"CANSI",eousuaremosapartirdeagora

PróximosPassos

IremosnopróximocapítuloidentificareinstalarqualferramentairemosusarparaaprendermosoC,e

quaisasopçõesquetemosparaisso.

Revisado: Sat Jul 23 2016 21:17:26 GMT+0000 (UTC) | Compilado: Sat Jul 23 2016 21:15:21

GMT+0000(UTC)

Referencias:

CCompletoeTotal,ColeçãoOsborne,EditoraMakronBooks,AutorHerbertSchildt.

OutrasFontesnaInternet.CCompletoeTotal,ColeçãoOsborne,EditoraMakronBooks,AutorHerbertSchildt. 59

NossaIDEparaaprendermosC

NossaIDEparaaprendermosC

Mesmo nos temos atuais (meados de 2016) onde ferramentas visuais nos permite programar fácilmenteparaoArduinousandobloquinhoscomosebrincacomumquebracabeça,nóscomo profissionais precisamos aprender como realmente programar um computador e usarmos uma linguagem,nocasoC,queexpresserealmentenossodesejo.

Alémdissocomocrescimentodenossoalgoritimo,veremosquemanterumdiagramasetornaum

trabalhocansativo,eaindaémaisfácilmanternossocódigoatravésdemeiostradicionaiscomoa

escritaemumadeterminadaLinguagem.

ParaaprendermosC,precisamosdeumaferramentasimilaraoqueaprendemosoPortugol,algo

comooVisuAlg,edescobrimosenãoqueexisteumaferramentaquelevaonomedeseuautor:

PELLEs C, uma ferramenta criada da mesma forma que todas as boas ferramentas foram, um profissionalquepercebeuumademandaefoiatrásdasoluçãoideal,nãoachandoeleadesenvolveu.

Porém,PellesCnãoéasoluçãodefinitiva,haverãonodecorrerdonossoamadurecimentocomo

programadoresapossiblidadedeusarmosoutrasferramentas.

BaixandoeInstalandooPELLESC

Oprocedimentoésimples,visiteositehttp://pellesc.de/index.php?page=download&lang=en,apesar

deserumsitealemãoestáeminglês,oquefacilitabastanteoentendimento,comopodeverapartirde

agoraoinglêsseránossosegundoidioma.

Escolhaaversão32Bits,querodarábememqualquercomputador.

ApósfazeroDownloaddoPellesC,executeoarquivo setup.exe,eprossigacomainstalação padrão,semalterarnenhumparametro,seguindoclicandonobotãonext,nextatéofim.

AgoraexecuteoPellesCaseguirveremoscomoénossainterface.

AInterface

AInterfacedaIDEPelesCéumpoucodiferentedaIDEVisuAlg3.0,quandoabrimosaaplicação,é

apresetnadoajanela,comopodeservistoabaixo,temosporpadrãoomenu,abarradetarefas,aárea

principalquenocasodoPellesCpermiteaaberturadediversasabascomconteúdosdiferentes,sendo

aprimeiraaabacomonome"StartPage",muitoútilparaquemestáaprendendo.

Nestaaba,sãoapresentadasaçõesmaiscomuns(CommonActions),Projetosrecentementeusados

(RecentProjects)esugestõesdelinksparaaprendizadoeaperfeiçoamento(Links):

NossaIDEparaaprendermosC

NossaIDEparaaprendermosC Image1.8.2.1-Janelaprincipalda IDE PelesC

Image1.8.2.1-JanelaprincipaldaIDEPelesC

VamoscomeçarusandooprimeiroprogramaquetodoprogramadorCfazquandoestádandoseus primeirospassos,oHelloWorld,paraissocliquenolinkhello PPJ.

Veremosentãoumanovaabasendoabertacomoabaixo:

hello PPJ . Veremosentãoumanovaabasendoabertacomoabaixo: Image1.8.2.2-Abrindooprimeiroprograma,HelloWorld,no PellesC

Image1.8.2.2-Abrindooprimeiroprograma,HelloWorld,noPellesC

NossaIDEparaaprendermosC

Não iremos entrar em detalhes como é a linguagem C agora, vamos apenas nos atentar para a interfacedeprogramaçãoecomousa-la.

ConhecendoosMenus

Osmenus"File"(Arquivo),"Edit"(Editar),sãocomunsetempoucadiferençaentreoutrossoftwares

quelidamcomediçãodetexto,temostambémomenu"View"(Visualizar)quenosajudaateracesso

aÁreasdajanelaqueterãoinformaçõesrelevantesaosarquivoserecursosqueestamosutilizandoem

nossoprograma.

Omenumaisimportanteparanósagoraéo"Project"(Projeto),quenosdáacessoatodasasações

relativasaonossocódigoeoprojetoqueestamoscodificiando.

Comopodemvernaimagemaseguir,énomenu"Project"quetemosacessoasaçõesdecompilação

edepuraçãodoprograma,noPellesCasteclasdeatalhosãodiferentesdasusadasnoVisuAlg.

PellesC asteclasdeatalhosãodiferentesdasusadasno VisuAlg . Image1.8.2.3-MenuProjectno PellesC

Image1.8.2.3-MenuProjectnoPellesC

ALinguagemCéumalinguagemcompilada,portantovocêtemaopçãodegerarumcódigobinário compátivel com o computador no qual pretende executar seu aplicativo, então quando usado a sequencia[CTRL]+[B]seuprogramaécompiladoegeradoumarquivoExecutáveldotipoEXE,se desejarexecutarseuprogramavocêdeveusaraopção"Eecute*.EXE",ondeoasteriscoéonomede

seuprojeto,ouasequencia[CTRL]+[F5],vejaquevocêpodedepurarseuprojetousandoatecla[F5]

AtivandoBreakpoints

Esedesejarinserirum"BreakPoint"emseuprojeto,deverápararsobrealinhadesejadacomoponto deparada,clicarcomobotãodireitoeselecionar"ToggleBreakpoint",outraformamaisrápidapara isso é clicar duas vezes ao lado esquerdo da linha na faixa branca, assim irá aparecer o ponto

NossaIDEparaaprendermosC

vermelhoqueindicaquealinhaestámarcadaparadepuração.Paradesativarsigaosmesmopassos

sobrealinhaquejátem"BreakPoint".

sobrealinhaquejátem" BreakPoint ". Image1.8.2.4-AtivandoBreakPointno PellesC

Image1.8.2.4-AtivandoBreakPointnoPellesC

Abaixovemosalinhacomobreakpointativo:

PellesC Abaixovemosalinhacomo breakpoint ativo: Image1.8.2.5-Linhacom BreakPoint Ativono PellesC

Image1.8.2.5-LinhacomBreakPointAtivonoPellesC

PróximosPassos

VeremosagoraaestruturabásicadeumprogramaemC,apenasoqueéimportanteparaentendermos

comotersucessonoHelloWorld,oquejásãodoisnovosconceitosalémdoquejáaprendemos

agora,porémnaóticadalinguagemC.

NossaIDEparaaprendermosC

Revisado: Sat Jul 23 2016 21:17:26 GMT+0000 (UTC) | Compilado: Sat Jul 23 2016 21:15:21

GMT+0000(UTC)

EstruturaBásicadeumAlgortimoemC

EstruturaBásicadeumAlgortimoemC

IremosnestecapítuloentendercomosedeveescreverumcódigoemC,eoqueécadaparte.Iremos

aprenderdoisnovosconceitosmuitoimportantes,"Bibliotecas"e"Funções",comestesdoisconceitos

tornamosnossoalgortimosbemmaissimplesemaisestruturadosainda.

VejamosentãoonossoprimeirocódigoemCquejávimosnocapítuloanterior,o"HelloWorld",

abaixotemosofontequecopiamosdoPellesC.

/*******************************************************************

*

*

Filename: hello.c

*

*

Purpose : Standard C sample for Pelles C for Windows.

*

*

History : Date

Reason

*

02-09-10 Created

*

*******************************************************************

#include <stdio.h>

/* entry point */ int main(void)

{

printf("Hello, world!\n"); return 0;

}

Acimapodemosidentificartrêsseçõesemnossocódigo:

0; } Acimapodemosidentificartrêsseçõesemnossocódigo:

Comentáriosprincipais,relativosadocumentaçãodoprojetoeaoarquivo,

DiretivasdecompilaçãodaAplicação,comoinclusãodeoutrosarquivosoubibliotecase

Finalmentenossocódigo.

ComentáriosdoProjetoeDocumentaçãodoArquivo

Aprimeiraseçãodenossocódigo,setrataapenasdecomentáriosondevemosqueexisteumanova

formadesefazercomantários,alémdousoapenasdeduasbarras//,podemosnoC/C++eemoutras

linguagensusarcomentáriosdemultiplaslinhascomopar/*e*/ousejanaprimeiralinhainiciamos

ocomentáriomultilinhacom/*noiniciodalinhaenaúltimalinhafinalizamosnofinaldalinhacom

*/.

Naprimeiraseção,éfundamentalquedocumentemosnossocódigo,comojáaprendemoscomo

VisuAlgparaalinguagemPortugol.Comopodemver,estaéumapráticamuitosaudávelparao

programadoreosucessodoprojeto,permitindoqueosfuturosmantenedoresentendamtudoque

aconteceuemseucódigo.

Vejamosemdetalhesumasugestãomuitoválidaparaconstruirmosocomentárioqueseráusadocomo

documentaçãodenossoprojeto:

/*******************************************************************

EstruturaBásicadeumAlgortimoemC

*

*

Filename: hello.c

*

*

Purpose : Standard C sample for Pelles C for Windows.

*

*

History : Date

Reason

*

02-09-10 Created

*

*******************************************************************

Filename:, por negociação com a equipe fica então determinado que na primeira linha do comentárioseráonomedoarquivo,podemostambémcolocaraionomedoprojetocomoumtodo,se estetivermuitosarquivos.

Naterceiralinhapodemosteroproposito,adescriçãodoprojetoouespecificamentedoarquivocaso elefaçapartedeumprojetomaiorenãosejaoarquivoprincipal,opontodeentradadenossoprojeto. Esta linha pode se estender por diversas outras, lembrando-se de indentar sempre o texto para melhoraraformataçãodocomentárioeassimnãohaverdificuldadesdeleitura,lembre-setambémde

evitarultrapassarolimitede80colunasemcadalinha.

Eparafinalizarfaçaumaseçãodehistórico(History)emsuadocumentação,apresentandoadata

(Date)eomotivo(Reason)daediçãodeseuarquivo.Oqueajudaráaencontrarerroseretornarseu

códigoaumestadoanteriorparatestes,ejustificarseutrabalhonaesquipe.Estopoderálheajudar

tambémquandoestiverusandosistemadeversionamentocomoGIT,CVSeoutros.

Osasteriscosusadosdeformaextranocomentárioacima,sãoapenasparamelhoraraformatação,

vocêpodeusartambémoutrossímbolosdentrodeseucomentáriodemultiplaslinhasdesdequeinicie

efinalizeoblococorretamentecomospares:/*e*/.

SeçãodeInclussãoeDiretivasdeprograma.

NalinguagemCeC++temosdiretivasdecompilaçãoqueajudamaautomatizaralgunsprocessose

orientarocompiladoraentenderoquedeveserfeitoparasetersucessonamontagemdeseuprojeto,

aindamaisquandoestetivermultiplosarquivos.

Iremosporhoraaprenderapenasumadiretivadecompilação,#include.

#include,dizaocompiladorqueincluaumoutroarquivoaopresente,paraquequandoestefor

compiladosejaencontradotodasasinformaçõesnecessáriasparasuaconstrução.Estadiretivaé

normalmenteusadaparaincluircabeçalhosdebibliotecasondeasassinaturasdasfunçõesfornecidas

porumabibliotecaestarãodescritas.

Nocasodenossoprograma,éincluidooarquivo"stdio.h",queéumcabeçalhoquedefinefunções básicasparaentradaesaidaemC,arquivosdecabeçalhosãosemprecriadoscomextenção .h e contémapenasadescriçãodasfunções(iremosaprendermaisumpoucoafrentesobrefunções,e entenderemosmelhorcomoestearquivofunciona).

Afrenteveremosqueusamosumafunçãochamada printf elaédefinidanesteaquivoqueéo pontodeentradaparaabibliotecademesmonome,STDIO(olinkirálhelevaraumabiblioteca especifica para controladores AVR, como pode ver há diversas versões da STDIO, conforme a plataformaseestátrabalhando,ocompiladorcuidadeescolherabibliotecacorreta),nestebiblioteca hádiversasfunçõesqueajudamtantonaescritadearquivosetambémcomasualeitura.

Note:Note

EstruturaBásicadeumAlgortimoemC

TudonoCeC++étratadocomoarquivo,issoéumaherançadoUnix,procurempesquisarcomo oUnixtratadispositivoserecursosdoSistemaOperacional.Portantoseestiverprogramando paraumcomputadorestabibliotecairáescrevernoarquivo"tela"elerdoarquivo"teclado",se estiver em um microcontrolador, conforme a estrutura do mesmo poderá estar lendo e escrevendonoarquivoquedásaidaparaaportaserial.

SeçãodeCódigo

Como no C/C++ podemos ter arquivos apenas com código de apoio (bibliotecas de funções e parametros)queserãousadosparaseremincluidos(#include)emoutrosarquivos,efinalmenteno arquivoprincipalparaquenossoaplicativosejaconstruidoesetornefuncional,aseçãodecódigo abrangetantoaseçãodedefiniçãodevariáveisquandoaseçaãodecódigospropriamente.

NoC/C++temosumafunçãoprincipaldenome int main(void) quedeveserescritapelo programadoreseráopontodeentradaparaoprogramaEXEouparaoiniciodeexecuçãono microcontrolador,veremosaseguiroqueéumafunção,masporhorairemosentendercomoéeste pontodeentradanocódigoescritoemC/C++.

NoportugolvimosqueprecisamosdefinirumaseçãochamadaInicioondeconteráocódigoprincipal queseráchmadoparadarpartidaemnossaaplicação,jánoC/C++precisamosdefinirumafunçãode nomeint main(void)vamosentãoentenderoqueéumafunção,eentãoemseguidavoltare vermoscomodefinirmosvariáveisglobais,locaiseaordemqueissodeveserfeitonoC/C++.

EntendendooconceitodeFunções

Afunçãoéumdosconceitosmaisimportantesdaprogramação,éatravésdafunçãoqueestruturamos

aindamaisnossocódigo,poispodemosatravésdelas,agruparumconjuntodecomandos,umafunção

emprogramaatuadeformabemsimilarafunçõesmatemáticas,passamosumgrupodeparametros,

umcalculoéfeitoeseretornaoresultado.

EmC/C++funçõespodemretornarounãovalores,vejamoscomoéafunçãoprincipalquedevemos

definirseuconteúdoparaquetenhamosumprogramafuncional:

int main(void)

Temosquatropartesimportantesemumafunção,acimavemos3delas,oqueseretorna,onomeda

função,eoqueelarecebecomoparametroparaaferirsuaexecução,noC/C+++ int éotipode dadosinteiro,eéexatamentecomoemPortugol.portantoafunçãomaindeveretornaraoseufinal uminteiro.

voidéumtipodedadoquenãovalenada,écomonulo,masemCesteconceito void podese tornarbemcomplexo,eporhorairemostrata-locomonenhumainformação.

Portantomain,nãoprecisareceberparametros,quandoforchamadanãorecebenada.

Onomedafunçãodeveseguiroquejáfoiensinadosobrenomeaçãodevariáveis,omesmoévalido

parafunções,portantoeladeveiniciarsemprecompelomenosumcaracterdotipo_(traçobaixo),a

atézouAatéZ(ousejatodasasletrasdoalfamentosejammaíusculasoumínusculas)eemseguida

podemconternúmeros,traçosbaixosemaisletras.

Por exemplo nomes como int \_andar(int), ou bool AtivarSistema(), void

UseAlgortimoC45(),sãonomesválidos.

Note

EstruturaBásicadeumAlgortimoemC

Vejaque,aocitarmosumafunçãoescrevemosonomeincluindooretornoeoqueelarecebede

parâmetro,chamamosissodeassinaturadafunção.Eassimevitamosenganossobrequalfunção

estamosfalando.

Comofoiditoumadeclaraçãodefunçãotemquatroseçõesimportantes,aquaraparteéocódigoque

seráexecutadoquandoestafunçãoforchamado,todoblocodecódigoemC/C++édelimitadopor

chaves{e},issodefineoescopodasvariáveisedelimitaobloco,ajudandoaadministrarnosso

códigoemmemória.

Portantonossafunçãomaincompletaficaassim:

int main(void)

{

printf("Hello, world!\n"); return 0;

}

Vejaqueoblocodecódigoficaindentado,dentrodaschaves,equeoidealéqueachavesseabra

abaixodonomedafunção,enalinhaaseguiraultimalinhadafunção.

Éimportantetambémsaberquetodafunçãoaoterminardevechamarafunçãoreturn,principalmente seretornaalgumvalor,eocomandoreturndeveteroqueseráretornado,nocasodenossafunçãoele

retorna0,umineiro.

Sendomainumafunçãochamadacomopontodeentradadaaplicação,ovalorretornadorepresentao

resultadodenossaaplicação,nocaso0retornaquetudocorreubemnoprograma,qualqueroutro

valorretornadorepresentaumcódigodeerrodoprograma.

Emsetratandodemicrocontroladorumafunçãomainnuncadeveretornar,umavezqueissoaconteça

omicrocontroladorficaráparado,podendoalgunsemcasosespeciaisreinicializarevoltaraexecução

deseufirmwareaoestadozero.

NoteParamaisinformaçõesvejacódigosdeerrosdosaplicativosnoDOSouUNIX/Linux.

VariáveisGlobaiseLocais

Antesdeusarqualquervariávelestasdevemserdeclaradas,iremosverporhoraapenasasfunçõesde

escopoGlobaleLocal.

Asvariáveisdeescopoglobalpodemservistasemqualquerpartedoaplicativo,jáasvariáveis

Locais,apenasdentrodoblocodecódigoondeforamdeclaradas.

Quandodeclararumavariávelglobal,declareantesdetodasasfunçõesdeseuaplicativo,edepoisdas

diretivasdecompilação.

Asvariáveislocaisdevemserdeclaradasnoiniciodoblocodecódigonoqualpertencem.

PalavrasReservadas

AlinguagemC/C++temalgumaspalavrasquesãoreservadasenãopodemserusadasparanomear

funçõesmuitomenosvariáveis,segueabaixo:

alignas, alignof, and, and_eq, asm, auto, bitand, bitor, bool, break, case, catch, char, char16_t,

char32_t,class,compl,const,constexpr,const_cast,continue,decltype,default,delete,do,double,

dynamic_cast,else,enum,explicit,export,extern,false,float,for,friend,goto,if,inline,int,long,

EstruturaBásicadeumAlgortimoemC

mutable, namespace, new, noexcept, not, not_eq, nullptr, operator, or, or_eq, private, protected, public,register,reinterpret_cast,return,short,signed,sizeof,static,static_assert,static_cast,struct, switch, template, this, thread_local, throw, true, try, typedef, typeid, typename, union, unsigned, using,virtual,void,volatile,wchar_t,while,xor,xor_eq

VeremosafrentequeemC,nãotemoscomandos,apenasasinstruçõesdecontrolequemaisse

assemelhamafunções,massãopalavrasreservadasparainstruiralinguagemaumaação.

Issoabreumgrandehorizonteparaestalinguagem,oqueserádescobertoemcursosavançados.

NomedeVariáveiseFunçõesnoC

DamesmaformaquenoPortugoltemosregrasparacriarvariáveisefunções,definindoassimnomes

legíveisequeexpressemsuaverdadeirafunçãonocódigo,éprecisotercuidocomousodecaracteres

espec