A Tela Principal do VISUALG 3.0.5.2 (MADEIRA) · A linha e a coluna do editor em que o cursor está...

35
A Tela Principal do VISUALG 3.0.5.2 (MADEIRA) A tela do Visualg compõe-se da barra de tarefas, do editor de textos (que toma toda a sua metade superior), do quadro de variáveis (no lado esquerdo da metade inferior), do simulador de saída (no correspondente lado direito) e da barra de status. Quando o programa é carregado, já apresenta no editor um "esqueleto" de pseudocódigo, com a intenção de poupar trabalho ao usuário e de mostrar o formato básico que deve ser seguido. Explicaremos a seguir cada componente da interface do VisuAlg.

Transcript of A Tela Principal do VISUALG 3.0.5.2 (MADEIRA) · A linha e a coluna do editor em que o cursor está...

ATelaPrincipaldoVISUALG3.0.5.2(MADEIRA)

AteladoVisualgcompõe-sedabarradetarefas,doeditordetextos(quetomatodaasuametadesuperior),doquadrodevariáveis(noladoesquerdodametadeinferior),dosimuladordesaída(nocorrespondenteladodireito)edabarradestatus.Quandooprogramaécarregado,jáapresentanoeditorum"esqueleto"depseudocódigo,comaintençãodepoupartrabalhoaousuárioedemostraroformatobásicoquedeveserseguido.ExplicaremosaseguircadacomponentedainterfacedoVisuAlg.

ABarradeTarefas(mudou)

ContémoscomandosmaisutilizadosnoVisuAlg(estescomandostambémpodemseracessadospelomenuouporatalhosnoteclado).

Abrir(Ctrl-A):Abreumarquivoanteriormentegravado,substituindootextopresentenoeditor.Seestetiversidomodificado,oVisuAlgpedirásuaconfirmaçãoparasalvá-loantesquesejasobreposto.Novo(Ctrl-N):Criaumnovo"esqueleto"depseudocódigo,substituindootextopresentenoeditor.Seestetiversidomodificado,oVisuAlgpedirásuaconfirmaçãoparasalvá-loantesquesejasobreposto.Salvar(Ctrl-S):Gravaimediatamenteotextopresentenoeditor.Naprimeiravezqueumnovotextoégravado,oVisuAlgpedeseunomeelocalização.Imprimir:Imprimeimediatamentenaimpressorapadrãootextopresentenoeditor.Paraconfiguraraimpressão,useocomandoImprimirdomenuArquivo(acessíveltambémpeloatalhoCtrl-P).Cortar(Ctrl-X):Apagatextoselecionado,armazenando-oemumaáreadetransferência.Copiar(Ctrl-C):Copiaotextoselecionadoparaaáreadetransferência.Colar(Ctrl-V):Copiatextodaáreadetransferênciaparaolocalemqueestáocursor.Gravarblocodetexto:Permiteagravaçãoemarquivodeumtextoselecionadonoeditor.Aextensãosugeridaparaonomedoarquivoé.inc.Inserirblocodetexto:Permiteainserçãodoconteúdodeumarquivo.Aextensãosugeridaparaonomedoarquivoé.inc.Desfazer(Ctrl-Z):Desfazúltimocomandoefetuado.Refazer(Shift-Ctrl-Z):Refazúltimocomandodesfeito.Localizar(Ctrl-L):Localizanotextopresentenoeditordeterminadapalavraespecificada.Substituir(Ctrl-U):Localizanotextopresentenoeditordeterminadapalavraespecificada,

substituindo-aporoutra.CorrigirIndentação(Ctrl-G):Corrigeautomaticamenteaindentação(outabulação)dopseudocódigo,tabulandocadacomandointernocomespaçosàesquerda.Numerarlinhas:Ativaoudesativaaexibiçãodosnúmerosdaslinhasnaáreaàesquerdadoeditor.Alinhaeacolunadoeditoremqueocursorestáemumdeterminadomomentotambémsãomostradasnabarradestatus(parteinferiordatela).Pormotivostécnicos,estaopçãoéautomaticamentedesativadaduranteaexecuçãodopseudocódigo,masvoltaaserativadalogoemseguida.Mostrarvariáveismodificadas:Ativaoudesativaaexibiçãodavariávelqueestásendomodificada.Comoonúmerodevariáveispodesergrande,muitaspodemestarforadajaneladevisualização;quandoestacaracterísticaestáativada,oVisuAlgrolaagradedeexibiçãodemodoquecadavariávelfiquevisívelnomomentoemestásendomodificada.Esterecursoéespecialmenteútilquandoseexecutaumpseudocódigopassoapasso.Porquestõesdedesempenho,aconfiguraçãopadrãodestacaracterísticaédesativada,quandoopseudocódigoestásendoexecutadoautomaticamente.Noentanto,bastaclicarestebotãoparaexecutá-loautomaticamentecomaexibiçãoativada.Nofinaldaexecução,aconfiguraçãovoltaaserdesativada.

Executar(F9):Inicia(oucontinua)aexecuçãoautomáticadopseudocódigo.Executarcomtimer(Shift-F9)::Insereumatraso(quepodeserespecificadonointervaloaolado)antesdaexecuçãodecadalinha.Tambémrealçaemfundoazulocomandoqueestásendoexecutado,damesmaformaquenaexecuçãopassoapasso.Intervalodotimer:Atrasoemcadalinha,paraquandosedesejaexecutaropseudocódigocomtimer.Passo(F8):Inicia(oucontinua)aexecuçãolinhaporlinhadopseudocódigo,dandoaousuárioaoportunidadedeacompanharofluxodeexecução,osvaloresdasvariáveiseapilhadeativaçãodossubprogramas.Parar(Ctrl-F2):Terminaimediatamenteaexecuçãodopseudocódigo.Evidentemente,estebotãoficadesabilitadoquandoopseudocódigonãoestásendoexecutado.Liga/desligabreakpoint(F5):Insere/removeumpontodeparadanalinhaemqueestejaocursor.Estespontosdeparadasãoúteisparaadepuraçãoeacompanhamentodaexecuçãodospseudocódigos,poispermitemaverificaçãodosvaloresdasvariáveisedapilhadeativaçãodesubprogramas.Desmarcartodososbreakpoints(Ctrl-F5):Desativatodososbreakpointsqueestejamativadosnaquelemomento.ExecutaremmodoDOS:Comestaopçãoativada,tantoaentradacomoasaída-padrãopassaaserumajanelaqueimitaoDOS,simulandoaexecuçãodeumprogramanesteambiente.Gerarvaloresaleatórios:Ativaageraçãodevaloresaleatóriosquesubstituemadigitaçãodedados.Afaixapadrãodevaloresgeradoséde0a100inclusive,maspodesermodificada(bastaalterarintervaloaolado).Paraageraçãodedadosdotipocaractere,nãoháumafaixapré-estabelecida:osdadosgeradosserãosemprestringsde5letrasmaiúsculas.

Intervalodosvaloresaleatórios:Faixadevaloresqueserãogeradosautomaticamente,quandoestaopçãoestiverativada.Perfil(F7):Apósaexecuçãodeumpseudocódigo,exibeonúmerodevezesquecadaumasdassuaslinhasfoiexecutada.Éútilparaaanálisedeeficiência(porexemplo,nosmétodosdeordenação).Mostrarpilhadeativação(Ctrl-F3):Exibeapilhadesubprogramasativadosnumdadomomento.Convémutilizarestecomandoemconjuntocombreakpointsoucomaexecuçãopassoapasso.Ajuda(F1):PossibilitaacessoàspáginasdeajudaeàsinformaçõessobreoVisuAlg.

QuadrodeVariáveis

Éformadoporumagradenaqualsãomostradosoescopodecadavariável(sefordoprogramaprincipal,seráglobal;seforlocal,seráapresentadoonomedosubprogramaondefoideclarada),seusnomes(tambémcomosíndices,noscasosemquesejamvetores),seutipo("I"parainteiro,"R"parareal,"C"paracaracteree"L"paralógico)eoseuvalorcorrente.AversãoatualdoVisuAlgpermiteavisualizaçãodeaté500variáveis(contandoindividualmentecadaelementodosvetores).

ABarradeStatus

Situadanaparteinferiordatela,estabarracontémdoispainéis:oprimeiromostraalinhaeacolunaondeocursorestá,eosegundomostraapalavraModificadonocasoemqueopseudocódigotenhasidoalteradodesdequefoicarregadoousalvopelaúltimavez.Nestabarra,

háaindaumterceiropaineldisponível,queaindanãotemumusoespecíficonaatualversão.

ObjetivosTelaprincipalMenuAlinguagemdoVisuAlgReferênciasdalinguagemdoVisuAlgMaisrecursos

Auto-digitaçãoeSugestãodeDigitação

Auto-digitação

OVisuAlgtemumacaracterísticaparaacriaçãodepseudocódigosquepodeaumentararapidezdadigitaçãoetambémdiminuirapossibilidadedeerros:éaauto-digitação.Parautilizarestacaracterística,bastaescreverumaabreviaturadapalavra-chaveoudocomandoaserdiigtadoeteclarCtrl-Espaço.OVisuAlgcompletaentãoocomandoautomaticamente,colocandoocursornopontoadequadoparasecontinuaradigitação(nosexemplosabaixo,estepontoéindicadoatravésdeum*).Eisalistadeabreviaturascomosrespectivoscomandos:

!-(Pontodeexclamação)Criaummodelodepseudocódigo.

algoritmo"semnome"*iniciofimalgoritmo

#-Criaumcabeçalhodeprograma.

//Algoritmo:*//Função://Autor://Data:

ale,aof,aon-Inseremoscomandosaleatorio,aleatoriooffoualeatorioon,respectivamente.

alg-Inserealinhaalgoritmoepedeadigitaçãodoseunome.

algoritmo"*"

arq-Insereocomandoarquivoepedeadigitaçãodoseunome.

arquivo"*"

cof,con-Inseremoscomandoscronometrooffoucronometroon,respectivamente.

dcc-Insereumadeclaraçãodevariáveiscaracteres.

var*:caractere

dcl-Insereumadeclaraçãodevariáveislógicas.

var*:logico

dcr-Insereumadeclaraçãodevariáveisreais.

var*:real

deb-Insereocomandodebug.

eof,eon-Inseremoscomandosecooffouecoon,respectivamente.

esc-Insereocomandoescreva.

escl-Insereocomandoescolha(semacláusulaoutrocaso).

escolha*casofimescolha

esco-Insereocomandoescolha(comacláusulaoutrocaso).

escolha*casooutrocasofimescolha

enq-Insereocomandoenquanto.

enquanto*facafimenquanto

fal-Inserealinhafimalgoritmo.

ini-Inserealinhainicio.

int-Insereocomandointerrompa.

lep-Insereocomandoleia.

leia(*)

par-Insereocomandopara.

para*de1atefacafimpara

parp-Insereocomandoparacompasso.

para*deatepassofacafimpara

rep-Insereocomandorepita.

repita*

ate

repf-Insereocomandorepitacomfimrepita.

repita*fimrepita

see-Insereocomandosesemaalternativasenao.

se*entaofimse

ses-Insereocomandosecompleto.

se*entaosenaofimse

tim-Insereoscomandostimeronetimeroff.

timeron*timeroff

tof,ton-Inseremoscomandostimeronoutimeroff,respectivamente.

SugestãodeDigitação

AsugestãodedigitaçãoédisponibilizadaatravésdasteclasCtrl-J.BastacomeçaradigitaçãodeumapalavraeteclarCtrl-JparaqueoVisuAlgmostreumalistacomsugestõesdepalavras-chavequecompletamoquefoidigitado.Paraescolher,énecessáriodarumduplo-cliquesobreaopçãodesejada,ouentãoselecioná-lacomassetaseteclarEnter.SeousuáriocontinuaescrevendodepoisqueoVisuAlgapresentoualistadesugestões,oprogramacontinuaráprocurandopalavrasqueaindacomplementemoquefoidigitado.AoseteclarEscouclicar"foradalista",eladesaparece.

ObjetivosTelaprincipalMenuAlinguagemdoVisuAlgReferênciasdalinguagemdoVisuAlgMaisrecursos

AsFunçõesdoVisualgVersão2.0

Todalinguagemdeprogramaçãojávemcomumgrupodefunçõesquefacilitamavidadoprogramador.Estasfunçõesrealizamoscálculosaritméticos,trigonométricosedemanipulaçãoeconversãodedadosmaiscomuns;assim,oprogramadornãotemquereinventararodaacadaprogramaquefaz.Aestegrupodefunçõesdá-seàsvezesonomedebiblioteca.

Comousarumafunção?Emtermossimples,umafunçãopodeserusadaemqualquerlugarondeumavariáveltambémpode,anãoser,naturalmente,no"ladoesquerdodaseta"emumcomandodeatribuição-umafunçãoproduz(diz-senolinguajardosprogramadoresretorna)umvalor,enãoorecebe.

Funçõesnuméricas,algébricasetrigonométricas

Abs(expressão)-Retornaovalorabsolutodeumaexpressãodotipointeirooureal.Equivalea|expressão|naálgebra.ArcCos(expressão)-Retornaoângulo(emradianos)cujoco-senoérepresentadoporexpressão.ArcSen(expressão)-Retornaoângulo(emradianos)cujosenoérepresentadoporexpressão.ArcTan(expressão)-Retornaoângulo(emradianos)cujatangenteérepresentadaporexpressão.Cos(expressão)-Retornaoco-senodoângulo(emradianos)representadoporexpressão.CoTan(expressão)-Retornaaco-tangentedoângulo(emradianos)representadoporexpressão.Exp(base,expoente)-Retornaovalordebaseelevadoaexpoente,sendoambosexpressõesdotiporeal.GraupRad(expressão)-Retornaovaloremradianoscorrespondenteaovaloremgrausrepresentadoporexpressão.Int(expressão)-Retornaaparteinteiradovalorrepresentadoporexpressão.Log(expressão)-Retornaologaritmonabase10dovalorrepresentadoporexpressão.LogN(expressão)-Retornaologaritmoneperiano(basee)dovalorrepresentadoporexpressão.Pi-Retornaovalor3.141592.Quad(expressão)-Retornaquadradodovalorrepresentadoporexpressão.RadpGrau(expressão)-Retornaovaloremgrauscorrespondenteaovaloremradianosrepresentadoporexpressão.RaizQ(expressão)-Retornaaraizquadradadovalorrepresentadoporexpressão.Rand-Retornaumnúmerorealgeradoaleatoriamente,maiorouigualazeroemenorqueum.RandI(limite)-Retornaumnúmerointeirogeradoaleatoriamente,maiorouigualazeroemenorquelimite.Sen(expressão)-Retornaosenodoângulo(emradianos)representadoporexpressão.Tan(expressão)-Retornaatangentedoângulo(emradianos)representadoporexpressão.

Osvaloresqueestãoentreparênteses,representadospelaspalavrascomoexpressão,baseeexpoente,sãoosparâmetros,oucomodizemalgunsautores,osargumentosquepassamosparaafunçãoparaquerealizeseuscálculoseretorneumoutro,queusaremosnoprograma.Algumasfunções,comoPieRand,nãoprecisamdeparâmetros,masamaioriatemumoumais.Ovalordosparâmetrosnaturalmentealteraovalorretornadopelafunção.

Aseguirtemosalgunsexemplosqueilustramousodestasfunções.

algoritmo"exemplo_funcoes"

vara,b,c:real

inicio

a<-2b<-9escreval(b-a)//seráescrito7natelaescreval(abs(a-b))//tambémseráescrito7natelac<-raizq(b)//crecebe3,araizquadradadeb,queé9//Afórmuladaáreadocírculoépi(3.1416)vezesraioaoquadrado...escreval("Aáreadocirculocomraio",c,"é",pi*quad(c))//Umpoucodetrigonometria...escreval("Umângulode90graustem",grauprad(90),"radianos")escreval(exp(a,b))//escreve2elevadoà9ª,queé512//escreve1,queéaparteinteirade1.8,resultadode9/(3+2)escreval(int(b/(a+c)))

fimalgoritmo

Funçõesparamanipulaçãodecadeiasdecaracteres(strings)

Asc(s:caracter):RetornauminteirocomocódigoASCIIdoprimeirocaracterdaexpressão.Carac(c:inteiro):RetornaocaractercujocódigoASCIIcorrespondeàexpressão.Caracpnum(c:caracter):Retornaointeiroourealrepresentadopelaexpressão.CorrespondeaStrToTin()ouStrToFloat()doDelphi,Val()doBasicouClipper,etc.Compr(c:caracter):Retornauminteirocontendoocomprimento(quantidadedecaracteres)daexpressão.Copia(c:caracter;p,n:inteiro):Retornaumvalordotipocaractercontendoumacópiaparcialdaexpressão,apartirdocaracterp,contendoncaracteres.Oscaracteressãonumeradosdaesquerdaparaadireita,começandode1.CorrespondeaCopy()doDelphi,Mid$()doBasicouSubstr()doClipper.Maiusc(c:caracter):Retornaumvalorcaractercontendoaexpressãoemmaiúsculas.Minusc(c:caracter):Retornaumvalorcaractercontendoaexpressãoemminúsculas.Numpcarac(n:inteirooureal):Retornaumvalorcaractercontendoarepresentaçãodencomoumacadeiadecaracteres.CorrespondeaIntToStr()ouFloatToStr()doDelphi,Str()doBasicouClipper.Pos(subc,c:caracter):Retornauminteiroqueindicaaposiçãoemqueacadeiasubcseencontraemc,ouzerosesubcnãoestivercontidaemc.CorrespondefuncionalmenteaPos()doDelphi,Instr()doBasicouAt()doClipper,emboraaordemdosparâmetrospossaserdiferenteemalgumasdestaslinguagens.

Aseguirtemosalgunsexemplosqueilustramousodestasfunções.

algoritmo"exemplo_funcoes2"

vara,b,c:caracter

inicio

a<-"2"b<-"9"escreval(b+a)//seráescrito"92"natelaescreval(caracpnum(b)+caracpnum(a))//seráescrito11natelaescreval(numpcarac(3+3)+a)//seráescrito"62"natelac<-"Brasil"escreval(maiusc(c))//seráescrito"BRASIL"natelaescreval(compr(c))//seráescrito6natelab<-"OmelhordoBrasil"escreval(pos(c,b))//seráescrito13natelaescreval(asc(c))//seráescrito66natela-códigoASCIIde"B"a<-carac(65)+carac(66)+carac(67)escreval(a)//seráescrito"ABC"natela

fimalgoritmo

ALinguagemdeProgramaçãodoVisuAlg(1)

Introdução

AlinguagemqueoVisuAlginterpretaébemsimples:éumaversãoportuguesadospseudocódigoslargamenteutilizadosnoslivrosdeintroduçãoàprogramação,conhecidacomo"Portugol".Tomeialiberdadedeacrescentar-lhealgunscomandosnovos,comointuitodecriarfacilidadesespecíficasparaoensinodetécnicasdeelaboraçãodealgoritmos.Inicialmente,pensavaemcriarumasintaxemuitosimplese"liberal",paraqueousuáriosepreocupasseapenascomalógicadaresoluçãodosproblemasenãocomaspalavras-chave,pontosevírgulas,etc.Noentanto,chegueidepoisàconclusãodequealgumaformalidadeserianãosónecessáriacomoútil,paracriarumsentidodedisciplinanaelaboraçãodo"código-fonte".

AlinguagemdoVisuAlgpermiteapenasumcomandoporlinha:dessemodo,nãohánecessidadedetokensseparadoresdeestruturas,comoopontoevírgulaemPascal.Tambémnãoexisteoconceitodeblocosdecomandos(quecorrespondemaobegineenddoPascaleao{e}doC),nemcomandosdedesvioincondicionalcomoogoto.NaversãoatualdoVisuAlg,comexceçãodasrotinasdeentradaesaída,nãohánenhumsubprogramaembutido,talcomoInc(),Sqr(),Ord(),Chr(),Pos(),Copy()ououtro.

Importante:parafacilitaradigitaçãoeevitarconfusões,todasaspalavras-chavedoVisuAlgforamimplementadassemacentos,cedilha,etc.Portanto,otipodedadoslógicoédefinidocomologico,ocomandose..então..senãoédefinidocomose..entao..senao,eassimpordiante.OVisuAlgtambémnãodistinguemaiúsculaseminúsculasnoreconhecimentodepalavras-chaveenomesdevariáveis.

FormatoBásicodoPseudocódigoeInclusãodeComentários

Oformatobásicodonossopseudocódigoéoseguinte:

algoritmo"semnome"//Função://Autor://Data://SeçãodeDeclaraçõesinicio//SeçãodeComandosfimalgoritmo

Aprimeiralinhaécompostapelapalavra-chavealgoritmoseguidadoseunomedelimitadoporaspasduplas.Estenomeseráusadocomotítulonasjanelasdeleituradedados(nasfuturasversõesdoVisuAlg,talvezutilizemosestedadodeoutrasformas).Aseçãoquesesegueéadedeclaraçãodevariáveis,queterminacomalinhaquecontémapalavra-chaveinicio.Destepontoemdianteestáaseçãodecomandos,quecontinuaatéalinhaemqueseencontreapalavra-chavefimalgoritmo.Estaúltimalinhamarcaofinaldopseudocódigo:todotextoexistenteapartirdelaéignoradopelointerpretador.

OVisuAlgpermiteainclusãodecomentários:qualquertextoprecedidode"//"éignorado,atéseatingirofinaldasualinha.Porestemotivo,oscomentáriosnãoseestendempormaisdeumalinha:quandosedesejaescrevercomentáriosmaislongos,queocupemváriaslinhas,cadaumadelasdeverácomeçarpor"//".

TiposdeDados

OVisuAlgprevêquatrotiposdedados:inteiro,real,cadeiadecaractereselógico(oubooleano).Aspalavras-chavequeosdefinemsãoasseguintes(observequeelasnãotêmacentuação):

inteiro:definevariáveisnuméricasdotipointeiro,ouseja,semcasasdecimais.real:definevariáveisnuméricasdotiporeal,ouseja,comcasasdecimais.caractere:definevariáveisdotipostring,ouseja,cadeiadecaracteres.logico:definevariáveisdotipobooleano,ouseja,comvalorVERDADEIROouFALSO.

OVisuAlgpermitetambémadeclaraçãodevariáveisestruturadasatravésdapalavra-chavevetor,comoseráexplicadoaseguir.

NomesdeVariáveisesuaDeclaração

Osnomesdasvariáveisdevemcomeçarporumaletraedepoisconterletras,númerosouunderline,atéumlimitede30caracteres.Asvariáveispodemsersimplesouestruturadas(naversãoatual,osvetorespodemserdeumaouduasdimensões).Nãopodehaverduasvariáveiscomomesmonome,comanaturalexceçãodoselementosdeummesmovetor.

Aseçãodedeclaraçãodevariáveiscomeçacomapalavra-chavevar,econtinuacomasseguintessintaxes:

<lista-de-variáveis>:<tipo-de-dado><lista-de-variáveis>:vetor"["<lista-de-intervalos>"]"de<tipo-de-dado>

Na<lista-de-variáveis>,osnomesdasvariáveisestãoseparadosporvírgulas.Na<lista-de-intervalos>,os<intervalo>sãoseparadosporvírgulas,etêmaseguintesintaxe:

<intervalo>:<valor-inicial>..<valor-final>

NaversãoatualdoVisuAlg,tanto<valor-inicial>como<valor-final>devemserinteiros.Alémdisso,exige-seevidentementeque<valor-final>sejamaiordoque<valor-inicial>.

Exemplos:

vara:inteiroValor1,Valor2:realvet:vetor[1..10]derealmatriz:vetor[0..4,8..10]deinteironome_do_aluno:caracteresinalizador:logico

Notequenãoháanecessidadedepontoevírgulaapóscadadeclaração:bastapularlinha.AdeclaraçãodevetoreséanálogaàlinguagemPascal:avariávelvetacimatem10elementos,comosíndicesde[1]a[10],enquantomatrizcorrespondea15elementoscomíndices[0,8],[0,9],[0,10],[1,8],[1,9],[1,10],...até[4,10].OnúmerototaldevariáveissuportadopeloVisuAlgé500(cadaelementodeumvetorécontadoindividualmente).

ConstanteseComandodeAtribuição

OVisuAlgtemtrêstiposdeconstantes:

Numéricos:sãovaloresnuméricosescritosnaformausualdaslinguagensdeprogramação.Podemserinteirosoureais.Nesteúltimocaso,oseparadordedecimaiséopontoenãoavírgula,independentedaconfiguraçãoregionaldocomputadorondeoVisuAlgestásendoexecutado.OVisuAlgtambémnãosuportaseparadoresdemilhares.Caracteres:qualquercadeiadecaracteresdelimitadaporaspasduplas(").Lógicos:admiteosvaloresVERDADEIROouFALSO.

Aatribuiçãodevaloresavariáveiséfeitacomooperador<-.Doseuladoesquerdoficaavariávelàqualestásendoatribuídoovalor,eàsuadireitapode-secolocarqualquerexpressão(constantes,variáveis,expressõesnuméricas),desdequeseuresultadotenhatipoigualaodavariável.

Algunsexemplosdeatribuições,usandoasvariáveisdeclaradasacima:

a<-3Valor1<-1.5Valor2<-Valor1+avet[1]<-vet[1]+(a*3)matriz[3,9]<-a/4-5nome_do_aluno<-"JosédaSilva"sinalizador<-FALSO

Próxima

ObjetivosTelaprincipalMenuAlinguagemdoVisuAlgReferênciasdalinguagemdoVisuAlgMaisrecursos

ALinguagemdeProgramaçãodoVisuAlg(2)

OperadoresAritméticos

+,-Operadoresunários,istoé,sãoaplicadosaumúnicooperando.Sãoosoperadoresaritméticosdemaiorprecedência.Exemplos:-3,+x.Enquantoooperadorunário-inverteosinaldoseuoperando,ooperador+nãoalteraovaloremnadaoseuvalor.

\ Operadordedivisãointeira.Porexemplo,5\2=2.Temamesmaprecedênciadooperadordedivisãotradicional.

+,-,*,/Operadoresaritméticostradicionaisdeadição,subtração,multiplicaçãoedivisão.Porconvenção,*e/têmprecedênciasobre+e-.Paramodificaraordemdeavaliaçãodasoperações,énecessáriousarparêntesescomoemqualquerexpressãoaritmética.

MODou%

Operadordemódulo(istoé,restodadivisãointeira).Porexemplo,8MOD3=2.Temamesmaprecedênciadooperadordedivisãotradicional.

^ Operadordepotenciação.Porexemplo,5^2=25.Temamaiorprecedênciaentreosoperadoresaritméticosbinários(aquelesquetêmdoisoperandos).

OperadoresdeCaracteres

+Operadordeconcatenaçãodestrings(istoé,cadeiasdecaracteres),quandousadocomdoisvalores(variáveisouconstantes)dotipo"caractere".Porexemplo:"Rio"+"deJaneiro"="RiodeJaneiro".

OperadoresRelacionais

=,<,>,<=,>=,<>

Respectivamente:igual,menorque,maiorque,menorouiguala,maiorouiguala,diferentede.Sãoutilizadosemexpressõeslógicasparasetestararelaçãoentredoisvaloresdomesmotipo.Exemplos:3=3(3éiguala3?)resultaemVERDADEIRO;"A">"B"("A"estádepoisde"B"naordemalfabética?)resultaemFALSO.

Importante:NoVisuAlg,ascomparaçõesentrestringsnãodiferenciamasletrasmaiúsculasdasminúsculas.Assim,"ABC"éiguala"abc".Valoreslógicosobedecemàseguinteordem:FALSO<VERDADEIRO.

OperadoresLógicos

nao Operadorunáriodenegação.naoVERDADEIRO=FALSO,enaoFALSO=VERDADEIRO.Temamaiorprecedênciaentreosoperadoreslógicos.EquivaleaoNOTdoPascal.

ou OperadorqueresultaVERDADEIROquandoumdosseusoperandoslógicosforverdadeiro.EquivaleaoORdoPascal.

e OperadorqueresultaVERDADEIROsomenteseseusdoisoperandoslógicosforemverdadeiros.EquivaleaoANDdoPascal.

xou OperadorqueresultaVERDADEIROseseusdoisoperandoslógicosforemdiferentes,eFALSOseforemiguais.EquivaleaoXORdoPascal.

ComandosdeSaídadeDados

escreva(<lista-de-expressões>)

Escrevenodispositivodesaídapadrão(istoé,naáreaàdireitadametadeinferiordateladoVisuAlg)oconteúdodecadaumadasexpressõesquecompõem<lista-de-expressões>.Asexpressõesdentrodestalistadevemestarseparadasporvírgulas;depoisdeseremavaliadas,seusresultadossãoimpressosnaordemindicada.ÉequivalenteaocomandowritedoPascal.

DemodosemelhanteaPascal,épossívelespecificaronúmerodeespaçosnoqualsedesejaescreverumdeterminadovalor.Porexemplo,ocomandoescreva(x:5)escreveovalordavariávelxem5espaços,alinhado-oàdireita.Paravariáveisreais,pode-setambémespecificaronúmerodecasasfracionáriasqueserãoexibidas.Porexemplo,considerandoycomoumavariávelreal,ocomandoescreva(y:6:2)escreveseuvalorem6espaçoscolocando2casasdecimais.

escreval(<lista-de-expressões>).

Idemaoanterior,comaúnicadiferençaquepulaumalinhaemseguida.ÉequivalenteaowritelndoPascal.

Exemplos:

algoritmo"exemplo"varx:realy:inteiroa:caracterel:logicoiniciox<-2.5y<-6a<-"teste"l<-VERDADEIROescreval("x",x:4:1,y+3:4)//Escreve:x2.59escreval(a,"ok")//Escreve:testeok(edepoispulalinha)escreval(a,"ok")//Escreve:testeok(edepoispulalinha)escreval(a+"ok")//Escreve:testeok(edepoispulalinha)escreva(l)//Escreve:VERDADEIROfimalgoritmo

NotequeoVisuAlgseparaexpressõesdotiponuméricoelógicocomumespaçoàesquerda,masnãoasexpressõesdotipocaractere,paraqueassimpossahaveraconcatenação.Quandosedesejasepararexpressõesdotipocaractere,énecessárioacrescentarespaçosnoslocaisadequados.

ComandodeEntradadeDados

leia(<lista-de-variáveis>)

Recebevaloresdigitadospelosusuário,atribuindo-osàsvariáveiscujosnomesestãoem<lista-de-variáveis>(érespeitadaaordemespecificadanestalista).ÉanálogoaocomandoreaddoPascal.

Vejanoexemploabaixooresultado:

algoritmo"exemplo1"varx:inteiro;inicioleia(x)escreva(x)fimalgoritmo

Ocomandodeleituraacimairáexibirumajanelacomoaquesevêaolado,comamensagempadrão:"Entrecomovalorde<nome-de-variável>"

SevocêclicaremCancelarouteclarEscdurantealeituradedados,oprogramaseráimediatamenteinterrompido.

ComandodeDesvioCondicional

se<expressão-lógica>entao<seqüência-de-comandos>fimse

Aoencontrarestecomando,oVisuAlganalisaa<expressão-lógica>.SeoseuresultadoforVERDADEIRO,todososcomandosda<seqüência-de-comandos>(entreestalinhaealinhacomfimse)sãoexecutados.SeoresultadoforFALSO,estescomandossãodesprezadoseaexecuçãodoalgoritmocontinuaapartirdaprimeiralinhadepoisdofimse.

se<expressão-lógica>entao<seqüência-de-comandos-1>senao<seqüência-de-comandos-2>fimse

Nestaoutraformadocomando,seoresultadodaavaliaçãode<expressão-lógica>forVERDADEIRO,todososcomandosda<seqüência-de-comandos-1>(entreestalinhaealinhacomsenao)sãoexecutados,eaexecuçãocontinuadepoisapartirdaprimeiralinhadepoisdofimse.SeoresultadoforFALSO,estescomandossãodesprezadoseoalgoritmocontinuaaserexecutadoapartirdaprimeiralinhadepoisdosenao,executandotodososcomandosda<seqüência-de-comandos-2>(atéalinhacomfimse).

Estescomandosequivalemaoif...theneif...then...elsedoPascal.Notequenãohánecessidadededelimitadoresdebloco(comobegineend),poisasseqüênciasdecomandosjáestãodelimitadaspelaspalavras-chavesenaoefimse.OVisuAlgpermiteoaninhamentodessescomandosdedesviocondicional.

ComandodeSeleçãoMúltipla

OVisuAlgimplementa(comcertasvariações)ocomandocasedoPascal.Asintaxeéaseguinte:

escolha<expressão-de-seleção>caso<exp11>,<exp12>,...,<exp1n>

<seqüência-de-comandos-1>caso<exp21>,<exp22>,...,<exp2n><seqüência-de-comandos-2>...outrocaso<seqüência-de-comandos-extra>fimescolha

Vejaoexemploaseguir,queilustrabemoquefazestecomando:

algoritmo"Times"vartime:caractereinicioescreva("Entrecomonomedeumtimedefutebol:")leia(time)escolhatimecaso"Flamengo","Fluminense","Vasco","Botafogo"escreval("Éumtimecarioca.")caso"SãoPaulo","Palmeiras","Santos","Corínthians"escreval("Éumtimepaulista.")outrocasoescreval("Édeoutroestado.")fimescolhafimalgoritmo

AnteriorPróxima

ObjetivosTelaprincipalMenuAlinguagemdoVisuAlgReferênciasdalinguagemdoVisuAlgMaisrecursos

ALinguagemdeProgramaçãodoVisuAlg(3)

ComandosdeRepetição

OVisuAlgimplementaastrêsestruturasderepetiçãousuaisnaslinguagensdeprogramação:olaçocontadopara...ate...faca(similaraofor...to...dodoPascal),eoslaçoscondicionadosenquanto...faca(similaraowhile...do)erepita...ate(similaraorepeat...until).Asintaxedestescomandoséexplicadaaseguir.

Para...faça

Estaestruturarepeteumaseqüênciadecomandosumdeterminadonúmerodevezes.

para<variável>de<valor-inicial>ate<valor-limite>[passo<incremento>]faca<seqüência-de-comandos>fimpara

<variável>Éavariávelcontadoraquecontrolaonúmeroderepetiçõesdolaço.Naversãoatual,devesernecessariamenteumavariáveldotipointeiro,comotodasasexpressõesdestecomando.

<valor-inicial> Éumaexpressãoqueespecificaovalordeinicializaçãodavariávelcontadoraantesdaprimeirarepetiçãodolaço.

<valor-limite> Éumaexpressãoqueespecificaovalormáximoqueavariávelcontadorapodealcançar.

<incremento>

Éopcional.Quandopresente,precedidapelapalavrapasso,éumaexpressãoqueespecificaoincrementoqueseráacrescentadoàvariávelcontadoraemcadarepetiçãodolaço.Quandoestaopçãonãoéutilizada,ovalorpadrãode<incremento>é1.Valeapenateremcontaquetambémépossívelespecificarvaloresnegativospara<incremento>.Poroutrolado,seaavaliaçãodaexpressão<incremento>resultaremvalornulo,aexecuçãodoalgoritmoseráinterrompida,comaimpressãodeumamensagemdeerro.

fimpara

Indicaofimdaseqüênciadecomandosaseremrepetidos.Cadavezqueoprogramacheganesteponto,éacrescentadoàvariávelcontadoraovalorde<incremento>,ecomparadoa<valor-limite>.Seformenorouigual(oumaiorouigual,quando<incremento>fornegativo),aseqüênciadecomandosseráexecutadamaisumavez;casocontrário,aexecuçãoprosseguiráapartirdoprimeirocomandoqueestejaapósofimpara.

<valor-inicial>,<valor-limite>e<incremento>sãoavaliadosumaúnicavezantesdaexecuçãodaprimeirarepetição,enãosealteramduranteaexecuçãodolaço,mesmoquevariáveiseventualmentepresentesnessasexpressõestenhamseusvaloresalterados.

Noexemploaseguir,osnúmerosde1a10sãoexibidosemordemcrescente.

algoritmo"Númerosde1a10"varj:inteiroinicioparajde1ate10faca

escreva(j:3)fimparafimalgoritmo

Importante:Se,logonoiníciodaprimeirarepetição,<valor-inicial>formaiorque<valor-limite>(oumenor,quando<incremento>fornegativo),olaçonãoseráexecutadonenhumavez.Oexemploaseguirnãoimprimenada.

algoritmo"Numerosde10a1(nãofunciona)"varj:inteiroinicioparajde10ate1facaescreva(j:3)fimparafimalgoritmo

Esteoutroexempo,noentanto,funcionaráporcausadopasso-1:

algoritmo"Numerosde10a1(estefunciona)"varj:inteiroinicioparajde10ate1passo-1facaescreva(j:3)fimparafimalgoritmo

Enquanto...faça

Estaestruturarepeteumaseqüênciadecomandosenquantoumadeterminadacondição(especificadaatravésdeumaexpressãológica)forsatisfeita.

enquanto<expressão-lógica>faca<seqüência-de-comandos>fimenquanto

<expressão-lógica> Estaexpressãoqueéavaliadaantesdecadarepetiçãodolaço.QuandoseuresultadoforVERDADEIRO,<seqüência-de-comandos>éexecutada.

fimenquanto

Indicaofimda<seqüência-de-comandos>queserárepetida.Cadavezqueaexecuçãoatingeesteponto,volta-seaoiníciodolaçoparaque<expressão-lógica>sejaavaliadanovamente.SeoresultadodestaavaliaçãoforVERDADEIRO,a<seqüência-de-comandos>seráexecutadamaisumavez;casocontrário,aexecuçãoprosseguiráapartirdoprimeirocomandoapósfimenquanto.

Omesmoexemploanteriorpodeserresolvidocomestaestruturaderepetição:

algoritmo"Númerosde1a10(comenquanto...faca)"varj:inteiroinicioj<-1

enquantoj<=10facaescreva(j:3)j<-j+1fimenquantofimalgoritmo

Importante:Comoolaçoenquanto...facatestasuacondiçãodeparadaantesdeexecutarsuaseqüênciadecomandos,estaseqüênciapoderáserexecutadazerooumaisvezes.

Repita...até

Estaestrutrurarepeteumaseqüênciadecomandosatéqueumadeterminadacondição(especificadaatravésdeumaexpressãológica)sejasatisfeita.

repita<seqüência-de-comandos>ate<expressão-lógica>

repita Indicaoiníciodolaço.

ate<expressão-lógica>

Indicaofimda<seqüência-de-comandos>aseremrepetidos.Cadavezqueoprogramacheganesteponto,<expressão-lógica>éavaliada:seseuresultadoforFALSO,oscomandospresentesentreestalinhaealinharepitasãoexecutados;casocontrário,aexecuçãoprosseguiráapartirdoprimeirocomandoapósestalinha.

Considerandoaindaomesmoexemplo:

algoritmo"Númerosde1a10(comrepita)"varj:inteiroinicioj<-1repitaescreva(j:3)j<-j+1atej>10fimalgoritmo

Importante:Comoolaçorepita...atetestasuacondiçãodeparadadepoisdeexecutarsuaseqüênciadecomandos,estaseqüênciapoderáserexecutadaumaoumaisvezes.

ComandoInterrompa

Astrêsestruturasderepetiçãoacimapermitemousodocomandointerrompa,quecausaumasaídaimediatadolaço.Emboraestatécnicaestejadecertaformaemdesacordocomosprincípiosdaprogramaçãoestruturada,ocomandointerrompafoiincluídonoVisuAlgporserencontradonaliteraturadeintroduçãoàprogramaçãoemesmoemlinguagenscomooObjectPascal(Delphi/Kylix),Clipper,VB,etc.Seuusoéexemplificadoaseguir:

algoritmo"Númerosde1a10(cominterrompa)"varx:inteiro

iniciox<-0repitax<-x+1escreva(x:3)sex=10entaointerrompafimseatefalsofimalgoritmo

OVisuAlgpermiteaindaumaformaalternativadocomandorepita...ate,comaseguintesintaxe:

algoritmo"Númerosde1a10(cominterrompa)II"varx:inteiroiniciox<-0repitax<-x+1escreva(x:3)sex=10entaointerrompafimsefimrepitafimalgoritmo

Comestasintaxealternativa,ousodointerrompaéobrigatório,poiséaúnicamaneiradesesairdolaçorepita...fimrepita;casocontrário,estelaçoseriaexecutadoindeterminadamente.

AnteriorPróxima

ObjetivosTelaprincipalMenuAlinguagemdoVisuAlgReferênciasdalinguagemdoVisuAlgMaisrecursos

ALinguagemdeProgramaçãodoVisuAlg(4)

Subprogramaéumprogramaqueauxiliaoprogramaprincipalatravésdarealizaçãodeumadeterminadasubtarefa.Tambémcostumareceberosnomesdesub-rotina,procedimento,métodooumódulo.

Ossubprogramassãochamadosdentrodocorpodoprogramaprincipalcomosefossemcomandos.Apósseutérmino,aexecuçãocontinuaapartirdopontoondefoichamado.Éimportantecompreenderqueachamadadeumsubprogramasimplesmentegeraumdesvioprovisórionofluxodeexecução.

Háumcasoparticulardesubprogramaquerecebeonomedefunção.Umafunção,alémdeexecutarumadeterminadatarefa,retornaumvalorparaquemachamou,queéoresultadodasuaexecução.Porestemotivo,achamadadeumafunçãoaparecenocorpodoprogramaprincipalcomoumaexpressão,enãocomoumcomando.

Cadasubprograma,alémdeteracessoàsvariáveisdoprogramaqueochamou(sãoasvariáveisglobais),podetersuasprópriasvariáveis(sãoasvariáveislocais),queexistemapenasdurantesuachamada.

Aosechamarumsubprograma,tambémépossívelpassar-lhedeterminadasinformaçõesquerecebemonomedeparâmetros(sãovaloresque,nalinhadechamada,ficamentreosparêntesesequeestãoseparadosporvírgulas).Aquantidadedosparâmetros,suaseqüênciaerespectivostiposnãopodemmudar:devemestardeacordocomoquefoiespecificadonasuacorrespondentedeclaração.

Parasecriarsubprogramas,éprecisodescrevê-losapósadeclaraçãodasvariáveiseantesdocorpodoprogramaprincipal.OVisuAlgpossibilitadeclaraçãoechamadadesubprogramasnosmoldesdalinguagemPascal,ouseja,procedimentosefunçõescompassagemdeparâmetrosporvaloroureferência.Issoseráexplicadoaseguir.

Procedimentos

EmVisuAlg,procedimentoéumsubprogramaquenãoretornanenhumvalor(correspondeaoproceduredoPascal).Suadeclaração,quedeveestarentreofinaldadeclaraçãodevariáveisealinhainiciodoprogramaprincipal,segueasintaxeabaixo:

procedimento<nome-de-procedimento>[(<seqüência-de-declarações-de-parâmetros>)]//SeçãodeDeclaraçõesInternasinicio//SeçãodeComandosfimprocedimento

O<nome-de-procedimento>obedeceasmesmasregrasdenomenclaturadasvariáveis.Poroutrolado,a<seqüência-de-declarações-de-parâmetros>éumaseqüênciade

[var]<seqüência-de-parâmetros>:<tipo-de-dado>

separadasporpontoevírgula.Apresença(opcional)dapalavra-chavevarindicapassagemdeparâmetrosporreferência;casocontrário,apassagemseráporvalor.

Porsuavez,<seqüência-de-parâmetros>éumaseqüênciadenomesdeparâmetros(tambémobedecemamesmaregradenomenclaturadevariáveis)separadosporvírgulas.

Demodoanálogoaoprogramaprincipal,aseçãodedeclaraçãointernascomeçacomapalavra-chavevar,econtinuacomaseguintesintaxe:

<lista-de-variáveis>:<tipo-de-dado>

Nospróximosexemplos,atravésdeumsubprogramasoma,serácalculadaasomaentreosvalores4e–9(ouseja,seráobtidooresultado13)queoprogramaprincipalimprimiráemseguida.Noprimeirocaso,umprocedimentosemparâmetrosutilizaumavariávellocalauxparaarmazenarprovisoriamenteoresultadodestecálculo(evidentemente,estavariávelédesnecessária,masestáaíapenasparailustraroexemplo),antesdeatribuí-loàvariávelglobalres:

procedimentosomavaraux:inteiroinicio//n,meressãovariáveisglobaisaux<-n+mres<-auxfimprocedimento

Noprogramaprincipaldevehaverosseguintescomandos:n<-4m<--9somaescreva(res)

Amesmatarefapoderiaserexecutadaatravésdeumprocedimentocomparâmetros,comodescritoabaixo:

procedimentosoma(x,y:inteiro)inicio//resévariávelglobalres<-x+yfimprocedimento

Noprogramaprincipaldevehaverosseguintescomandos:n<-4m<--9soma(n,m)escreva(res)

Apassagemdeparâmetrosdoexemploacimachama-sepassagemporvalor.Nestecaso,osubprogramasimplesmenterecebeumvalorqueutilizadurantesuaexecução.Duranteessaexecução,osparâmetrospassadosporvalorsãoanálogosàssuasvariáveislocais,mascomumaúnicadiferença:receberamumvalorinicialnomomentoemqueosubprogramafoichamado.

Funções

EmVisuAlg,funçãoéumsubprogramaqueretornaumvalor(correspondeaofunctiondoPascal).Demodoanálogoaosprocedimentos,suadeclaraçãodeveestarentreofinaldadeclaraçãodevariáveisealinhainiciodoprogramaprincipal,esegueasintaxeabaixo:

funcao<nome-de-função>[(<seqüência-de-declarações-de-parâmetros>)]:<tipo-de-dado>//SeçãodeDeclaraçõesInternasinicio//SeçãodeComandosfimfuncao

O<nome-de-função>obedeceasmesmasregrasdenomenclaturadasvariáveis.Poroutrolado,a<seqüência-de-declarações-de-parâmetros>éumaseqüênciade

[var]<seqüência-de-parâmetros>:<tipo-de-dado>

separadasporpontoevírgula.Apresença(opcional)dapalavra-chavevarindicapassagemdeparâmetrosporreferência;casocontrário,apassagemseráporvalor.

Porsuavez,<seqüência-de-parâmetros>éumaseqüênciadenomesdeparâmetros(tambémobedecemamesmaregradenomenclaturadevariáveis)separadosporvírgulas.

Ovalorretornadopelafunçãoserádotipoespecificadonasuadeclaração(logoapósosdoispontos).Emalgumapartedafunção(demodogeral,noseufinal),estevalordeveserretornadoatravésdocomandoretorne.

Demodoanálogoaoprogramaprincipal,aseçãodedeclaraçãointernascomeçacomapalavra-chavevar,econtinuacomaseguintesintaxe:

<lista-de-variáveis>:<tipo-de-dado>

Voltandoaoexemploanterior,noqualcalculamoseimprimimosasomaentreosvalores4e–9,vamosmostrarcomoissopoderiaserfeitoatravésdeumafunçãosemparâmetros.Elatambémutilizaumavariávellocalauxparaarmazenarprovisoriamenteoresultadodestecálculo,antesdeatribuí-loàvariávelglobalres:

funcaosoma:inteirovaraux:inteiroinicio//n,meressãovariáveisglobaisaux<-n+mretorneauxfimfuncao

Noprogramaprincipaldevehaverosseguintescomandos:n<-4m<--9res<-somaescreva(res)

Serealizássemosessamesmatarefacomumafunçãocomparâmetrospassadosporvalor,poderiaserdoseguintemodo:

funcaosoma(x,y:inteiro):inteiroinicio

retornex+yfimfuncao

Noprogramaprincipaldevehaverosseguintescomandos:n<-4m<--9res<-soma(n,m)escreva(res)

PassagemdeParâmetrosporReferência

Háaindaumaoutraformadepassagemdeparâmetrosparasubprogramas:éapassagemporreferência.Nestecaso,osubprogramanãorecebeapenasumvalor,massimoendereçodeumavariávelglobal.Portanto,qualquermodificaçãoqueforrealizadanoconteúdodesteparâmetroafetarátambémavariávelglobalqueestáassociadaaele.Duranteaexecuçãodosubprograma,osparâmetrospassadosporreferênciasãoanálogosàsvariáveisglobais.NoVisuAlg,deformaanálogaaPascal,essapassageméfeitaatravésdapalavravar

nadeclaraçãodoparâmetro.

Voltandoaoexemplodasoma,oprocedimentoabaixorealizaamesmatarefautilizandopassagemdeparâmetrosporreferência:

procedimentosoma(x,y:inteiro;varresult:inteiro)inicioresult<-x+yfimprocedimento

Noprogramaprincipaldevehaverosseguintescomandos:n<-4m<--9soma(n,m,res)escreva(res)

RecursãoeAninhamento

AatualversãodoVisuAlgpermiterecursão,istoé,apossibilidadedequeumsubprogramapossachamarasimesmo.Afunçãodoexemploabaixocalcularecursivamenteofatorialdonúmerointeiroquerecebecomoparâmetro:

funcaofatorial(v:inteiro):inteiroiniciosev<=2entaoretornevsenaoretornev*fatorial(v-1)fimsefimfuncao

EmPascal,épermitidooaninhamentodesubprogramas,istoé,cadasubprogramatambémpodeterseusprópriossubprogramas.Noentanto,estacaracterísticadificultaaelaboraçãodoscompiladorese,naprática,

nãoémuitoimportante.Porestemotivo,elanãoépermitidanamaioriadaslinguagensdeprogramação(comoC,porexemplo),eoVisuAlgnãoaimplementa.

AnteriorPróxima

ObjetivosTelaprincipalMenuAlinguagemdoVisuAlgReferênciasdalinguagemdoVisuAlgMaisrecursos

ALinguagemdeProgramaçãodoVisuAlg(5)

OVisuAlgimplementaalgumasextensõesàslinguagens"tradicionais"deprogramação,comointuitoprincipaldeajudaroseuusocomoferramentadeensino.Elassãomostradasaseguir.

ComandoAleatório

Muitasvezesadigitaçãodedadosparaotestedeumprogramatorna-seumatarefaentediante.ComousodocomandoaleatoriodoVisuAlg,semprequeumcomandoleiaforencontrado,adigitaçãodevaloresnuméricose/oucaracteresésubstituídaporumageraçãoaleatória.Estecomandonãoafetaaleituradevariáveislógicas:comcerteza,umacoisapoucousualemprogramação...

Estecomandotemasseguintessintaxes:

aleatorio[on]

Ativaageraçãodevaloresaleatóriosquesubstituemadigitaçãodedados.Apalavra-chaveonéopcional.Afaixapadrãodevaloresgeradoséde0a100inclusive.Paraageraçãodedadosdotipocaractere,nãoháumafaixapré-estabelecida:osdadosgeradosserãosemprestringsde5letrasmaiúsculas.

aleatorio<valor1>[,<valor2>]

Ativaageraçãodedadosnuméricosaleatóriosestabelecendoumafaixadevaloresmínimosemáximos.Seapenas<valor1>forfornecido,afaixaseráde0a<valor1>inclusive;casocontrário,afaixaseráde<valor1>a<valor2>inclusive.Se<valor2>formenorque<valor1>,oVisuAlgostrocaráparaqueafaixafiquecorreta.Importante:<valor1>e<valor2>devemserconstantesnuméricas,enãoexpressões.

aleatoriooff Desativaageraçãodevaloresaleatórios.Apalavra-chaveofféobrigatória.

ComandoArquivo

Muitasvezesénecessáriorepetirostestesdeumprogramacomumasérieigualdedados.Paracasoscomoeste,oVisuAlgpermiteoarmazenamentodedadosemumarquivo-texto,obtendodelesosdadosaoexecutaroscomandosleia.Estacaracterísticafuncionadaseguintemaneira:1)Senãoexistiroarquivocomnomeespecificado,oVisuAlgfaráumaleituradedadosatravésdadigitação,armazenandoosdadoslidosnestearquivo,naordememqueforemfornecidos.2)Seoarquivoexistir,oVisuAlgobteráosdadosdestearquivoatéchegaraoseufim.Daíemdiante,faráasleiturasdedadosatravésdadigitação.3)Somenteumcomandoarquivopodeserempregadoemcadapseudocódigo,eeledeveráestarnaseçãodedeclarações(dependendodo"sucesso"destacaracterística,emfuturasversõeselapoderásermelhorada...).4)Casonãosejafornecidoumcaminho,oVisuAlgiráprocurarestearquivonapastadetrabalhocorrente(geralmente,éapastaondeoprogramaVISUALG.EXEestá).Estecomandonãoprevêumaextensãopadrão;portanto,aespecificaçãodonomedoarquivodevesercompleta,inclusivecomsuaextensão(porexemplo,.txt,.dat,etc.).

Asintaxedocomandoé:

arquivo<nome-de-arquivo>

<nome-de-arquivo>éumaconstantecaractere(entreaspasduplas).Vejaoexemploaseguir:

algoritmo"lendodoarquivo"arquivo"teste.txt"varx,y:inteiroinicioparaxde1ate5facaleia(y)fimparafimalgoritmo

ComandoTimer

EmboraoVisuAlgsejauminterpretadordepseudocódigo,seudesempenhoémuitobom:otempogastoparainterpretarcadalinhadigitadaéapenasumafraçãodesegundo.Entretanto,pormotivoseducacionais,podeserconvenienteexibirofluxodeexecuçãodopseudocódigocomandoporcomando,em"câmeralenta".Ocomandotimerserveparaestepropósito:insereumatraso(quepodeserespecificado)antesdaexecuçãodecadalinha.Alémdisso,realçaemfundoazulocomandoqueestásendoexecutado,damesmaformaquenaexecuçãopassoapasso.

Suasintaxeéaseguinte:

timeron Ativaotimer.

timer<tempo-de-atraso>

Ativaotimerestabelecendoseutempodeatrasoemmilissegundos.Ovalorpadrãoé500,queequivaleameiosegundo.Oargumento<tempo-de-atraso>deveserumaconstanteinteiracomvalorentre0e10000.Valoresmenoresque0sãocorrigidospara0,emaioresque10000para10000.

timeroff Desativaotimer.

Aolongodopseudocódigo,podehavervárioscomandostimer.Todoselesdevemestarnaseçãodecomandos.Umavezativado,oatrasonaexecuçãodoscomandosserámantidoatésechegaraofinaldopseudocódigoouatéserencontradoumcomandotimeroff.

ComandosdeDepuração

Nenhumambientededesenvolvimentoestácompletosenãohouverapossibilidadedeseinserirpontosdeinterrupção(breakpoints)nopseudocódigoparafinsdedepuração.VisuAlgimplementadoiscomandosqueauxiliamadepuraçãoouanálisedeumpseudocódigo:ocomandopausaeocomandodebug.

ComandoPausa

Suasintaxeésimplesmente:

pausa

Estecomandoinsereumainterrupçãoincondicionalnopseudocódigo.Quandoeleéencontrado,oVisuAlgpáraaexecuçãodopseudocódigoeesperaalgumaaçãodoprogramador.Nestemomento,épossível:analisarosvaloresdasvariáveisoudassaídasproduzidasatéomomento;executaropseudocódigopassoapasso(comF8);prosseguirsuaexecuçãonormalmente(comF9);ousimplesmenteterminá-lo(comCtrl-F2).Comexceçãodaalteraçãodotextodopseudocódigo,todasasfunçõesdoVisuAlgestãodisponíveis.

ComandoDebug

Suasintaxeé:

debug<expressão-lógica>

Seaavaliaçãode<expressão-lógica>resultaremvalorVERDADEIRO,aexecuçãodopseudocódigoseráinterrompidacomonocomandopausa.Dessaforma,épossívelainserçãodeumbreakpointcondicionalnopseudocódigo.

ComandoEco

Suasintaxeé:

ecoon|off

Estecomandoativa(ecoon)oudesativa(ecooff)aimpressãodosdadosdeentradanasaída-padrãodoVisuAlg,ouseja,naáreaàdireitadaparteinferiordatela.Estacaracterísticapodeserútilquandohouverumagrandequantidadededadosdeentrada,esedesejaapenasanalisarasaídaproduzida.Convémutilizá-latambémquandoosdadosdeentradaprovêmdeumarquivojáconhecido.

ComandoCronômetro

Suasintaxeé:

cronometroon|off

Estecomandoativa(cronometroon)oudesativa(cronometrooff)ocronômetrointernodoVisuAlg.Quandoocomandocronometroonéencontrado,oVisuAlgimprimenasaída-padrãoainformação"Cronômetroiniciado.",ecomeçaacontarotempoemmilissegundos.Quandoocomandocronometroofféencontrado,oVisuAlgimprimenasaída-padrãoainformação"Cronômetroterminado.Tempodecorrido:xxsegundo(s)exxms".Estecomandoéútilnaanálisededesempenhodealgoritmos(ordenação,busca,etc.).

ComandoLimpatela

Suasintaxeé

limpatela

EstecomandosimplesmentelimpaatelaDOSdoVisualg(asimulaçãodateladocomputador).Elenãoafetaa"tela"queexistenaparteinferiordireitadajanelaprincipaldoVisualg.

Anterior

ObjetivosTelaprincipalMenuAlinguagemdoVisuAlgReferênciasdalinguagemdoVisuAlgMaisrecursos

MenudoVisuAlg

Estemenucompõe-sede7partes:

Arquivo:Possuioscomandosparaseabrir,salvareimprimiralgoritmos:

Novo:Criaumnovo"esqueleto"depseudocódigo,substituindootextoexistentenoeditor.Seestetextoanteriortiversidomodificado,oVisuAlgpedirásuaconfirmaçãoparasalvá-loantesquesejasobreposto.Abrir:Abreotextodeumpseudocódigoanteriormentegravado,substituindootextoexistentenoeditor.Seestetiversidomodificado,oVisuAlgpedirásuaconfirmaçãoparasalvá-loantesquesejasobreposto.Salvar:Salvaimediatamenteotextopresentenoeditor.Casosejaaprimeiravezqueumnovotextoégravado,oVisuAlgpediráonomedoarquivoesualocalização.Salvarcomo:Permitesalvarotextopresentenoeditorexibindoantesumajanelanaqualsepodeescolheronomedoarquivoesualocalização.Enviarporemail:Permiteoenvioporemaildotextopresentenoeditor.Imprimir:Permiteaimpressãodoalgoritmocorrente,mostrandoantesajaneladeconfiguraçãodeimpressão(ocorrespondentebotãodabarradetarefasimprimeimediatamenteotextodopseudocódigonaimpressorapadrão).Sair:AbandonaoVisuAlg.

Alémdestescomandos,háaindaalistados5últimosalgoritmosutilizados,quepodemserabertosdiretamenteaoseescolheroseunome.

Editar:Alémdosconhecidoscomandosdeumeditordetexto(copiar,cortar,colar,desfazer,refazer,selecionartudo,localizar,localizardenovo,substituir),hátambémasseguintesopções:

Corrigirindentação:Corrigeautomaticamenteaindentaçãodopseudocódigo,tabulandocadacomandointernocomespaçosàesquerda.Gravarblocodetexto:Permiteagravaçãoemarquivodeumtextoselecionadonoeditor.Aextensãosugeridaparaonomedoarquivoé.inc.Inserirblocodetexto:Permiteainserçãodoconteúdodeumarquivo.Aextensãosugeridaparaonomedoarquivoé.inc.

Exibir:Possuioscomandosparaativar/desativarasseguintescaracterísticas:

Númerodelinhas:Ativa/desativaaexibiçãodanumeraçãodaslinhasnaáreaàesquerdadoeditor.Anumeraçãocorrentedaposiçãodocursortambémémostradanaprimeirapartedabarradestatus,situadanaparteinferiordatela.Pormotivostécnicas,anumeraçãoédesativadaduranteaexecuçãodopseudocódigo,voltandoàsituaçãoanteriorlogoemseguida.Variáveismodificadas:Ativa/desativaaexibiçãodavariávelqueestásendomodificada.Comoonúmerodevariáveispodesergrande,muitaspodemestarforadajaneladevisualização;quandoestacaracterísticaestáativada,oVisuAlgrolaagradedeexibiçãodemodoquecadavariávelfiquevisívelnomomentoemestásendomodificada.Esterecursoéespecialmenteútilquandoseexecutaumpseudocódigopassoapasso.Porquestõesdedesempenho,aconfiguraçãopadrãodestacaracterísticaédesativada,quandoopseudocódigoestásendoexecutadoautomaticamente.Noentanto,bastaclicarestebotãoparaexecutá-loautomaticamentecomaexibiçãoativada.Nofinaldaexecução,aconfiguraçãovoltaaserdesativada.

Pseudocódigo:Contémoscomandosrelativosàexecuçãodoalgoritmo:

Executar:Inicia(oucontinua)aexecuçãoautomáticadopseudocódigo.Passoapasso:Inicia(oucontinua)aexecuçãolinhaporlinhadopseudocódigo,dandoaousuárioaoportunidadedeacompanharofluxodeexecução,osvaloresdasvariáveiseapilhadeativaçãodossubprogramas.Executarcomtimer:Insereumatraso(quepodeserespecificado)antesdaexecuçãodecadalinha.Tambémrealçaemfundoazulocomandoqueestásendoexecutado,damesmaformaquenaexecuçãopassoapasso.Parar:Terminaimediatamenteaexecuçãodopseudocódigo.Evidentemente,esteitemficadesabilitadoquandoopseudocódigonãoestásendoexecutado.Liga/desligabreakpoint:Insere/removeumpontodeparadanalinhaemqueestejaocursor.Estespontosdeparadasãoúteisparaadepuraçãoeacompanhamentodaexecuçãodospseudocódigos,poispermitemaverificaçãodosvaloresdasvariáveisedapilhadeativaçãodesubprogramas.Desmarcartodososbreakpoints:Desativatodososbreakpointsqueestejamativadosnaquelemomento.ExecutaremmodoDOS:Comestaopçãoativada,tantoaentradacomoasaída-padrãopassaaserumajanelaqueimitaoDOS,simulandoaexecuçãodeumprogramanesteambiente.Gerarvaloresaleatórios:Ativaageraçãodevaloresaleatóriosquesubstituemadigitaçãodedados.Afaixapadrãodevaloresgeradoséde0a100inclusive,maspodesermodificada.Paraageraçãodedadosdotipocaractere,nãoháumafaixapré-estabelecida:osdadosgeradosserãosemprestringsde5letrasmaiúsculas.Perfil:Apósaexecuçãodeumpseudocódigo,exibeonúmerodevezesquecadaumasdassuaslinhasfoiexecutada.Éútilparaaanálisedeeficiência(porexemplo,nosmétodosdeordenação).Pilhadeativação:Exibeapilhadesubprogramasativadosnumdadomomento.Convémutilizarestecomandoemconjuntocombreakpointsoucomaexecuçãopassoapasso.

Linguagens:Permiteatraduçãoautomáticodopseudocódigopresentenoeditorparaoutraslinguagensdeprogramação.Atualmente,apenasatraduçãoparaPascalestáimplementada,masaindaemfasedetestes.

Ferramentas:Nestemenu,épossívelconfiguraralgumasopçõesdoVisuAlg:coresetiposdeletrasnaexibiçãodopseudocódigo,númerodeespaçosparaindentaçãoautomática,etc.

Ajuda:Entreoutrascoisas,possibilitaacessoàspáginasdeajudaeàsinformaçõessobreoVisuAlg.

ObjetivosTelaprincipalMenuAlinguagemdoVisuAlgReferênciasdalinguagemdoVisuAlgMaisrecursos

VisuAlg-EditoreInterpretadordePseudocódigosObjetivos

Aidéiadeescreveresteprogramanasceuapartirdeumanecessidade:umaferramentaquepermitisseaosalunosiniciantesemprogramaçãooexercíciodosseusconhecimentosnumambientepróximodarealidade.Emminhaexperiênciacomoprofessordestadisciplina,tenhonotadoqueaabstraçãode"rodarochinês",ouseja,deexecutarumprogramaapenasnopapel,éumgrandeobstáculo(quaseintransponívelparaalguns)noaprendizadodastécnicasdeelaboraçãodealgoritmos.Poroutrolado,submeteruminicianteaosrigoresdeumalinguagemdeprogramaçãocomoPascalouao“esoterismo”doCtambémmepareciaexagerado.Oidealseriaumalinguagemmaissimples,parecidacomo"Portugol",degrandepopularidadenosmeiosacadêmicosepresentenoslivrosmaisutilizados;comela,osprincípiosbásicosdaprogramaçãoestruturadapoderiamserensinadossemqueacurvadeaprendizagemfosseíngreme.Alémdisso,estaferramentadeveriatambémsercapazdesimularoqueacontecenateladocomputadorcomousodosfamososcomandos"leia"e"escreva",bemcomopossibilitaraverificaçãodosvaloresdasvariáveis,oacompanhamentopassoapassodaexecuçãodeumalgoritmo(peloseugrandevalordidático),eatémesmosuportarummodosimplesdedepuração.Aliadoatudoisto,deveriaestarumeditordetextocomrecursosrazoáveis(taiscomoabriresalvararquivos)equedispusessedetodososprincipaisrecursosdeumambientegráfico.

OVisuAlgéparamimaconcretizaçãodestaidéia.Esperoque,colocando-oemdomíniopúblico(numaversãofreeware),possaajudarprofessoresealunosdeprogramação,etambémserajudadoporelesatravésdesugestõesecríticasquevisemsempreasuamelhoria.AidéiabásicaémanteroVisuAlgsimples:devesercomoasrodinhasdeapoioqueumacriançausaaoaprenderaandardebicicleta,equesãoretiradasquandodeixamdesernecessárias.IstonãoquerdizerqueoVisuAlgnãopossaoudevasermelhorado:contocomacolaboraçãodetodosquevieremautilizá-lo.

InstalaçãoeRequerimentosdeHardware

OVisuAlgéumprogramasimples,quenãodependedeDLLs,OCXsououtroscomponentes.Suainstalaçãonãocopiaarquivosparanenhumaoutrapastaanãoseraquelaemqueforinstalado,eexigecercade1MBdeespaçoemdisco.PodeserexecutadosobWindows95ouposterior,etemmelhoraparênciacomresoluçãodevídeode800x600oumaior.

ConheçaoVisuAlg

Atelaprincipal

Omenudoprograma

AlinguagemdeprogramaçãodoVisuAlg

ReferênciasdalinguagemdoVisuAlg

Auto-digitaçãoesugestãodedigitação