jmnr Posted April 27, 2006 at 09:07 PM Report #24689 Posted April 27, 2006 at 09:07 PM Boas! Tenho uma "grande" dúvida que se me podessem esclarecer ficava agradecido... Qual é a grande diferença entre Procedures e Functions em Pascal?? E em que situações devemos utilizar ou 1 ou outro?? Desde já grato pela atenção...
[AM]Higor Posted April 27, 2006 at 09:53 PM Report #24704 Posted April 27, 2006 at 09:53 PM Procedimento é como se fosse um "mini programa" dentro do seu programa... Mas, esse "mini programa" não retorna valor algum para quem o chamou... Já a Função é como se fosse um "procedimento" que retornasse um valor ao programa chamador ou função... Basicamente é isso ^__^ Marianna *TE AMO*Não! Não irei arrumar o seu computador...
maiden Posted April 28, 2006 at 10:33 AM Report #24763 Posted April 28, 2006 at 10:33 AM As funções (functions) são mais utilizadas para trabalhar com valores numéricos. As funções têm de ser definidas como as variáveis, ou seja, com o respectivo tipo de dados: Function Soma : Integer; begin codigo; end; Ao contrário dos procedimentos: Procedure Soma; begin codigo; end; E uma função tem de ter sempre dentro dela uma variável com o nome da função: Function Soma : Integer; begin Soma:=num1+num2; end; Dentro do programa principal (main), basta colocares o nome do procedimento/função para a chamares: begin Soma; end. Espero que tenhas ficado mais esclarecido Cumps,
Tiago Salgado Posted April 28, 2006 at 10:45 AM Report #24765 Posted April 28, 2006 at 10:45 AM Para complementar, terá que existir um Return nas funções para poder devolver um valor, senao trata-se de um procedimento.
Delta Posted April 28, 2006 at 12:33 PM Report #24771 Posted April 28, 2006 at 12:33 PM Sempre disse e volto a insistir... Programar é preciso ter noções básicas de MATEMÁTICA.. O que é uma Função matemática ? O que é a lógica do BOOLE ? O que são valores inteiros, reais e etc...?
jmnr Posted April 29, 2006 at 06:59 PM Author Report #24855 Posted April 29, 2006 at 06:59 PM Obrigado pessoal foram uma grande ajuda! 😛 Para complementar, terá que existir um Return nas funções para poder devolver um valor, senao trata-se de um procedimento. Como assim?? Não basta apenas "chamar" a função e ela devolve-nos o valor da mesma?? Mais uma vez obrigado pela ajuda 😛
[AM]Higor Posted April 29, 2006 at 07:09 PM Report #24859 Posted April 29, 2006 at 07:09 PM Não não... Pois a chamada de uma função é igual a chamada de um procedimento. Ou seja, o que difere uma da outra é que uma retorna um valor e a outra não. Então, como uma função necessariamente deve retornar algum valor. Precisamos dar um return no que queremos que ela retorne. Ja o procedimento, não precisamos dar return algum. Já que o procedimento é um "mini programa" Espero ter ajudado. Marianna *TE AMO*Não! Não irei arrumar o seu computador...
jmnr Posted April 29, 2006 at 07:38 PM Author Report #24869 Posted April 29, 2006 at 07:38 PM Ok acho que entendi.... Chamar procedimento: ... Begin procedimento; End. chamar função: ... Begin função(x,y); End. Muito obrigado! 😛
Warrior Posted May 1, 2006 at 11:30 AM Report #25078 Posted May 1, 2006 at 11:30 AM Nada disso... O (x,y) são os parametros. Tanto as funções como os procedimentos podem ter parametros. Ve um procedimento como uma porção de código que necessitas de repetir várias vezes por um qualquer motivo. Por exemplo, se tinhas que escrever o teu nome 20 vezes ao longo do codigo, porquê fazer "writeln('Chamo-me.. (blablabla)');" se posso fazer simplesmente "nome;" e o programa automaticamente o pode escrever? Já uma função, apesar de poder ser usada com o mesmo fim (daí que em C não existam procedimentos, só mesmo funções com ou sem retorno de valor, mas isto já vais perceber mais à frente o que significa) tem como principal objectivo devolver um valor. Imagina que no teu programa, necessitavas de, variadas vezes, achar o resultado de uma potencia. Podias criar uma função para esse fim (por exemplo:) Function pot(a,b:integer):Integer; var produto,i:integer; begin produto:=1; for i:=1 to b do produto:=produto*a; pot:=produto; end; (estou enferrujado em pascal, é possivel que existam erros no codigo) ao longo do programa, depois, a função seria usada da seguinte forma: writeln('2^3=',pot(2,3)); ou entao writeln('3^5=',pot(3,5)); repara que em todas as ocurrencias de "pot", o programa irá substituir por um valor. Que valor é esse? Aquele que a função retorna, ou seja, o valor que a variavel com o nome da função (no nosso caso, pot) termina a sua execução. (pot:=produto);
GpL Posted May 1, 2006 at 11:52 AM Report #25084 Posted May 1, 2006 at 11:52 AM Ei.. grande confusão aqui vai.. ainda confundem mais o homem.. função tem de ter return ? não existe return em pascal :S .. existe algo parecido.. mas nada de return.. A explicação do warrior foi a mais correcta.. procedimento é para fazer algo que faças muitas vezes,tipo para te poupar trabalho.. por exemplo,fazes um desenho qualquer com caracteres da tabela ascii ou que, queres usar mais que uma vez.. para não teres trabalho de tar sempre a escrever isso ou para não teres um programa com "milhentas" linhas de codigo metes isso num procedimento.. queres fazer tipo um "copyright" para meter nos programas todos, como o teu nome e essas coisas todas,metes num procedimento.. Agora função é diferente.. não é só para valores numéricos,como alguem disse aí.. Uma função é para te devolver um valor,como o warrior disse e bem.. mas esse valor tanto pode ser um valor numérico como uma string,etc .. espero que tenhas ficado esclarecido.. cumps 🙂
jmnr Posted May 7, 2006 at 09:37 PM Author Report #26240 Posted May 7, 2006 at 09:37 PM Já comecei a pegar na coisa e vai indo para a frente 🙂 Uma questão: Procedure qualquer_coisa ( var a,b : integer; c,d : string); * * * Chamo-o assim: Begin qualquer_coisa(a,b); qualquer_coisa(c,d); End. ???? :dontgetit: Ou seja, dentro de um procedimento preciso de analizar 4 das variáveis externas (globais). 2 delas são do tipo Integer e outras 2 dos tipo string. O meu interesse é atribuir valores às diferentes variaveis globais do tipo Integer ao correr este procedimento sempre que precisar. Não sei se me consegui explicar mto bem mas agradecia mais uma ajuda 🙂
maiden Posted May 7, 2006 at 10:20 PM Report #26266 Posted May 7, 2006 at 10:20 PM Boas, Não tenho a certeza, mas ao colocares esses parâmetros, acho que ao chamares a função/procedimento vais ter de colocar algo em cada variável: Begin qualquer_coisa(a,b,c,d); End. Não percebi muito bem o que pretendes, se pudesses ser mais explicito ? E não percebi muito bem a que variáveis é que te estavas a referir, mas a variáveis que se encontram dentro de um procedimento/função são variáveis locais. Cumps,
jmnr Posted May 8, 2006 at 11:29 AM Author Report #26304 Posted May 8, 2006 at 11:29 AM Acredita que se conseguisse ser mais explicito fazia isso mesmo 😄 ainda nao tentei mas vou exprimentar como dizes.. Begin qualquer_coisa(a,b,c,d); End. O restante do que disse é pra esquecer 👍 so preciso mesmo é de ver se posso chamar um procedimento ou uma funçao com vários parâmetros (neste caso 4 e de tipos diferentes) 😛
M6 Posted May 8, 2006 at 03:19 PM Report #26345 Posted May 8, 2006 at 03:19 PM Aqui ficam os meus 5 tostões: 👍 - Procedimentos: rotinas que contêm código que é usado várias vezes ao longo de um programa. - Funções: rotinas que calculam algo e retornam o valor calculado. As funções são usdas para calcular algo e devolver o resultado que é depois usado como valor numa expressão. Exemplo: function soma (a: int, b: int): int; begin result = a + b; end; [...] valor_da_soma = soma(1, 2); Já os procedimentos são usados para factorizar uma aplicação. Essa factorização efectua-se, tipicamente, por duas razões: redução de código escrito e sanidade mental. A redução de código escrito acontece quando num programa tenho dois pedaços de código que fazem a mesma coisa. Ora em vez de ter esses dois pedaços de código, construo um procedimento com esse código e invoco-o em substituição desses dois bocados de código. Estando assim centralizado é mais fácil corrigir qualquer problema que apareça, é mais fácil reutilizar esse código noutros programas e o programa torna-se mais pequeno. A sanidade mental vem do facto dos procedimentos nos permitirem efectuar uma limpeza e reduzir o grau de complexidade do programa através da passagem de certos blocos para procedimentos. Imaginem que têm um programa que lê valores numéricos de um ficheiro de texto, adiciona uma unidade a cada valor e por fim escreve de novo o ficheiro com os dados actualizados. Isto pode ser feito em "código corrido" na rotina principal do programa, ou pode ser agrupado em procedimentos, ficando assim a casa arrumada e ficando a rotina principal mais simples e fácil de ler e manter. Uma vez factorizado o código, o mesmo torna-se mais fácil de usar noutros programas. Por exemplo, imaginem que necessitavam de ler de novo ficheiros com dados numéricos, em vez de fazerem copy-paste do programa, usam apenas o procedimento já escrito anteriormente (para tal é necessário colocar as rotinas em Units). Espero ter ajudado. 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar."
Cypher Posted May 26, 2006 at 10:32 PM Report #29656 Posted May 26, 2006 at 10:32 PM ora faz é sem funções 😁 Cypher 👍
boss4ever_444 Posted June 2, 2006 at 10:25 PM Report #30775 Posted June 2, 2006 at 10:25 PM o que o M6 disse esta correcto, só quero acrescentar, que sempre que usas uma Função/Procedimento com parametros, sempre que a chamares no programa principal, tens de introduzir dados, ou seja valores para os parametros. Por exemplo: Function soma (x,y:integer):integer; Begin soma:=x+y; End. ------------------------------------------- assim sendo quando fores chamar a função no programa principal tens sempre se dar valores aos parametros que introduziste na função, Exemplo: { Programa Principal} Begin soma(1,2); End. ------------------------------------------- como uma das razões para usar parametros, é dar mais funcionalidades as funções/procedimentos, até podes fazer isto: {Programa Principal} Begin writeln('Introduza o valor de x e y'); readln(valor1,valor2) { depois terias de declarar estas variaveis } Temporaria:=soma(valo1,valor2); Temporaria2:=soma(3,9); End. --como reparaste uma das vantagens de usar parametros é que podes chamar funções/procedimentos, e estar sempre a abribuir valores diferentes, o que o parametro vai fazer, é que cada vez que chamares a Função/Procedimento em questão, tens de introduzir os dados consuante o tipo de variaveis declaradas no parametro. PS: se não souberes as {} não são entrepetadas pelo programa com codigo, são só para fazer comentarios 😄 Espero ter ajudado 😉
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now