Escolar Documentos
Profissional Documentos
Cultura Documentos
Page 1 of 4
http://www.apoioinformatica.inf.br/visualg/linguagem4.htm
20/1/2012
Page 2 of 4
seja, ser obtido o resultado 13) que o programa principal imprimir em seguida. No primeiro caso, um procedimento sem parmetros utiliza uma varivel local aux para armazenar provisoriamente o resultado deste clculo (evidentemente, esta varivel desnecessria, mas est a apenas para ilustrar o exemplo), antes de atribu-lo varivel global res: procedimento soma var aux: inteiro inicio // n, m e res so variveis globais aux <- n + m res <- aux fimprocedimento No programa principal deve haver os seguintes comandos: n <- 4 m <- -9 soma escreva(res) A mesma tarefa poderia ser executada atravs de um procedimento com parmetros, como descrito abaixo: procedimento soma (x,y: inteiro) inicio // res varivel global res <- x + y fimprocedimento No programa principal deve haver os seguintes comandos: n <- 4 m <- -9 soma(n,m) escreva(res) A passagem de parmetros do exemplo acima chama-se passagem por valor. Neste caso, o subprograma simplesmente recebe um valor que utiliza durante sua execuo. Durante essa execuo, os parmetros passados por valor so anlogos s suas variveis locais, mas com uma nica diferena: receberam um valor inicial no momento em que o subprograma foi chamado. Funes Em VisuAlg, funo um subprograma que retorna um valor (corresponde ao function do Pascal). De modo anlogo aos procedimentos, sua declarao deve estar entre o final da declarao de variveis e a linha inicio do programa principal, e segue a sintaxe abaixo: funcao <nome-de-funo> [(<seqncia-de-declaraes-de-parmetros>)]: <tipo-de-dado> // Seo de Declaraes Internas inicio // Seo de Comandos fimfuncao O <nome-de-funo> obedece as mesmas regras de nomenclatura das variveis. Por outro lado, a <seqncia-de-declaraes-de-parmetros> uma seqncia de [var] <seqncia-de-parmetros>: <tipo-de-dado>
http://www.apoioinformatica.inf.br/visualg/linguagem4.htm
20/1/2012
Page 3 of 4
separadas por ponto e vrgula. A presena (opcional) da palavra-chave var indica passagem de parmetros por referncia; caso contrrio, a passagem ser por valor. Por sua vez, <seqncia-de-parmetros> uma seqncia de nomes de parmetros (tambm obedecem a mesma regra de nomenclatura de variveis) separados por vrgulas. O valor retornado pela funo ser do tipo especificado na sua declarao (logo aps os dois pontos). Em alguma parte da funo (de modo geral, no seu final), este valor deve ser retornado atravs do comando retorne. De modo anlogo ao programa principal, a seo de declarao internas comea com a palavra-chave var, e continua com a seguinte sintaxe: <lista-de-variveis> : <tipo-de-dado> Voltando ao exemplo anterior, no qual calculamos e imprimimos a soma entre os valores 4 e 9, vamos mostrar como isso poderia ser feito atravs de uma funo sem parmetros. Ela tambm utiliza uma varivel local aux para armazenar provisoriamente o resultado deste clculo, antes de atribu-lo varivel global res: funcao soma: inteiro var aux: inteiro inicio // n, m e res so variveis globais aux <- n + m retorne aux fimfuncao No programa principal deve haver os seguintes comandos: n <- 4 m <- -9 res <- soma escreva(res) Se realizssemos essa mesma tarefa com uma funo com parmetros passados por valor, poderia ser do seguinte modo: funcao soma (x,y: inteiro): inteiro inicio retorne x + y fimfuncao No programa principal deve haver os seguintes comandos: n <- 4 m <- -9 res <- soma(n,m) escreva(res) Passagem de Parmetros por Referncia H ainda uma outra forma de passagem de parmetros para subprogramas: a passagem por referncia. Neste caso, o subprograma no recebe apenas um valor, mas sim o endereo de uma varivel global. Portanto, qualquer modificao que for realizada no contedo deste parmetro afetar tambm a varivel global que est associada a ele. Durante a execuo do subprograma, os parmetros passados por referncia so anlogos s variveis globais. No VisuAlg, de forma anloga a Pascal, essa passagem feita atravs da palavra var na declarao do parmetro.
http://www.apoioinformatica.inf.br/visualg/linguagem4.htm
20/1/2012
Page 4 of 4
Voltando ao exemplo da soma, o procedimento abaixo realiza a mesma tarefa utilizando passagem de parmetros por referncia: procedimento soma (x,y: inteiro; var result: inteiro) inicio result <- x + y fimprocedimento No programa principal deve haver os seguintes comandos: n <- 4 m <- -9 soma(n,m,res) escreva(res) Recurso e Aninhamento A atual verso do VisuAlg permite recurso, isto , a possibilidade de que um subprograma possa chamar a si mesmo. A funo do exemplo abaixo calcula recursivamente o fatorial do nmero inteiro que recebe como parmetro: funcao fatorial (v: inteiro): inteiro inicio se v <= 2 entao retorne v senao retorne v * fatorial(v-1) fimse fimfuncao Em Pascal, permitido o aninhamento de subprogramas, isto , cada subprograma tambm pode ter seus prprios subprogramas. No entanto, esta caracterstica dificulta a elaborao dos compiladores e, na prtica, no muito importante. Por este motivo, ela no permitida na maioria das linguagens de programao (como C, por exemplo), e o VisuAlg no a implementa. Anterior Prxima Objetivos Tela principal Menu A linguagem do VisuAlg recursos Referncias da linguagem do VisuAlg Mais
http://www.apoioinformatica.inf.br/visualg/linguagem4.htm
20/1/2012