A Tela Principal do VISUALG 3.0.5.2 (MADEIRA) · A linha e a coluna do editor em que o cursor está...
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.
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