Jump to content
Yamix

Parâmetros Procedure/Function

Recommended Posts

Yamix

Olá,

Estou a criar minha própria Unit, a fim de aprimorar meu conhecimento, então enquanto criava minhas procedures, de repente vem à cabeça:

  - Como posso criar várias procedures/functions com os mesmos nomes, porém com números diferentes de parâmetros, fazendo com que o programe escolha as procedures/functions corretas, a partir do número de parâmetros apresentados?

// Exemplo:

Unit Comida;

Interface;

Procedure Arroz(Feijao: Boolean);
Procedure Arroz(Bife, Feijao: Boolean);

Implementation

...

É possível fazer isso? E como?

Share this post


Link to post
Share on other sites
nunopicado

Sim, é possível. 
A isso se chama overloads
Tem a característica de não poderes nunca teres dois procedimentos/funções com parâmetros de tipos iguais (mesmo que tenham nomes diferentes).

Para usar, basta:
 

// Exemplo:

Unit Comida;

Interface;

Procedure Arroz(Feijao: Boolean); overload;
Procedure Arroz(Bife, Feijao: Boolean); overload;

Implementation

...

 

Ou seja, adicionar a directiva overload à frente da declaração do procedimento ou função.

Nota que nem todos os compiladores suportam isto. Nos melhores, como Delphi e FPC, não terás problema, mas outros como PZim, por exemplo, poderás não ter acesso a isso.

  • Vote 1

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
Yamix

Muito obrigado, por esclarecer minha dúvida!

1 hora atrás, nunopicado disse:

Nota que nem todos os compiladores suportam isto. Nos melhores, como Delphi e FPC, não terás problema, mas outros como PZim, por exemplo, poderás não ter acesso a isso.

Ainda bem que aprendi a usar o FPC, sabendo disso me sinto ainda mais livre. :D:D

Álias, aproveitando esse tópico, é possível fazer grandes projetos, como, jogos ou outras coisas, talvez na mesma, ou quase perfomance de outras linguagens? 

Estou a estudar C# e Phyton, mas eu adoro mesmo é programar em Pascal. 

Edited by Gabriel Gomes

Share this post


Link to post
Share on other sites
nunopicado

Os compiladores Pascal geram alguns dos códigos mais rápidos que há. 
Ao contrário de outras linguagens, como Java e C# por exemplo, que têm estágios intermediários que embora tragam vantagens noutros pontos, são um pouco problemáticos a nível de performance, os compiladores Pascal geram código nativo, que corre o mais próximo do hardware e SO.

Não quer isto dizer que não possas fazer um programa em C# que corra mais rápido que um em Pascal. Tudo depende da optimização do código.
Mas em condições ideais para ambas as linguagens, dificilmente um programa em Pascal é superado em performance em relação a um programa feito noutra qualquer linguagem de alto nível.

  • Vote 1

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
Yamix
16 horas atrás, nunopicado disse:

Os compiladores Pascal geram alguns dos códigos mais rápidos que há. 
Ao contrário de outras linguagens, como Java e C# por exemplo, que têm estágios intermediários que embora tragam vantagens noutros pontos, são um pouco problemáticos a nível de performance, os compiladores Pascal geram código nativo, que corre o mais próximo do hardware e SO.

Realmente, eu não sabia disso, fico até surpreso.

16 horas atrás, nunopicado disse:

Não quer isto dizer que não possas fazer um programa em C# que corra mais rápido que um em Pascal. Tudo depende da optimização do código.
Mas em condições ideais para ambas as linguagens, dificilmente um programa em Pascal é superado em performance em relação a um programa feito noutra qualquer linguagem de alto nível.

Estou a pensar que a linguagem Pascal, mesmo sendo muito antiga, ainda é capaz de fazer qualquer coisa que as outras linguagens fazem, porém com um nível de dificuldade bem maior. Não sei se, meu pensamento está certo ou errado, talvez seja só uma intuição minha.. 

Edited by Gabriel Gomes

Share this post


Link to post
Share on other sites
nunopicado
1 hora atrás, Gabriel Gomes disse:

Realmente, eu não sabia disso, fico até surpreso.

Muitos ficam. Há um problema generalizado na comunidade de programação, que é confundirem o Pascal standard com o Pascal que os compiladores trazem hoje em dia.
A linguagem Pascal foi estandardizada em 1983, e esse standard foi actualizado pela última vez em 1990. 
Muitos na comunidade consideram portanto que a linguagem Pascal não é actualizada desde 1990.

Isto não podia estar mais longe da verdade.

A primeira situação é que a versão estandardizada em 1990 era extremamente limitada, normal visto que foi criado com o intuito de ser uma linguagem puramente académica, para ser usada para dar ensinamentos básicos de programação.

Mas a linguagem não se restringiu ao seu Standard. Cresceu, e cresceu muito.

Primeiro foi o Extended Pascal, uma versão do Pascal já muito superior ao standard, e plenamente capaz de rivalizar com outras linguagens da época.
Depois, o Object Pascal, que é no fundo o Extended Pascal com ainda mais uma extensão, no caso a possibilidade de programar usando o paradigma de Orientação a Objectos.

O que aqui falhou, se é que se pode dizer assim, é que as empresas que continuam a trabalhar e a fazer evoluir a linguagem Pascal até hoje nunca se entenderam o suficiente para juntar esforços no sentido de actualizar o standard Pascal com o que ele inclui hoje em dia. É uma pena que não o façam, mas não é impeditivo de nada.

 

1 hora atrás, Gabriel Gomes disse:

Estou a pensar que a linguagem Pascal, mesmo sendo muito antiga, ainda é capaz de fazer qualquer coisa que as outras linguagens fazem, porém com um nível de dificuldade bem maior. Não sei se, meu pensamento está certo ou errado, talvez seja só uma intuição minha.. 

Isso é uma impressão que tens, possivelmente por só estares a trabalhar com pouco mais que o standard Pascal. 
Mas quando começares a ver tudo o que o Object Pascal te permite fazer actualmente, seja a versão implementada pelo FPC ou especialmente (para mim) a versão implementada pelo Delphi, verás que a linguagem Pascal ainda é capaz de fazer qualquer coisa que as outras linguagens fazem, porem com um nível de dificuldade bem MENOR. ;)
 

Falando pelo Delphi, que é o que conheço melhor, permite-te criar aplicações CLI ou GUI, com resolução normal ou HD, para PCs, tablets, telefones, developer boards, relógios (smart watches), óculos (estilo Google Glass), em Windows, OSx, iOS, Android e Linux. Boa parte do código é partilhado entre todos os SOs, e o código é nativo para cada plataforma.

Edited by nunopicado
  • Vote 1

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
nunopicado

Note-se no entanto que no Delphi, tudo é tão, mas tão fácil, que até ser mau programador é simples... :P
É muito fácil um programador iniciante perder-se em tanta facilidade e começar a fazer o chamado código Spaghetti.


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
Yamix
16 minutos atrás, nunopicado disse:

Muitos ficam. Há um problema generalizado na comunidade de programação, que é confundirem o Pascal standard com o Pascal que os compiladores trazem hoje em dia.
A linguagem Pascal foi estandardizada em 1983, e esse standard foi actualizado pela última vez em 1990. 
Muitos na comunidade consideram portanto que a linguagem Pascal não é actualizada desde 1990.

Isto não podia estar mais longe da verdade.

A primeira situação é que a versão estandardizada em 1990 era extremamente limitada, normal visto que foi criado com o intuito de ser uma linguagem puramente académica, para ser usada para dar ensinamentos básicos de programação.

Mas a linguagem não se restringiu ao seu Standard. Cresceu, e cresceu muito.

Primeiro foi o Extended Pascal, uma versão do Pascal já muito superior ao standard, e plenamente capaz de rivalizar com outras linguagens da época.
Depois, o Object Pascal, que é no fundo o Extended Pascal com ainda mais uma extensão, no caso a possibilidade de programar usando o paradigma de Orientação a Objectos.

O que aqui falhou, se é que se pode dizer assim, é que as empresas que continuam a trabalhar e a fazer evoluir a linguagem Pascal até hoje nunca se entenderam o suficiente para juntar esforços no sentido de actualizar o standard Pascal com o que ele inclui hoje em dia. É uma pena que não o façam, mas não é impeditivo de nada.

Isso é uma impressão que tens, possivelmente por só estares a trabalhar com pouco mais que o standard Pascal. 
Mas quando começares a ver tudo o que o Object Pascal te permite fazer actualmente, seja a versão implementada pelo FPC ou especialmente (para mim) a versão implementada pelo Delphi, verás que a linguagem Pascal ainda é capaz de fazer qualquer coisa que as outras linguagens fazem, porem com um nível de dificuldade bem MENOR. ;)

Tenho um amigo, que programa em C# e VB.NET, volta em meia ele implica comigo, dizendo para mim começar a estudar outras linguagens, pois Pascal é muito fraco, mas eu sempre continuei com Pascal. Álias, começei a aprender C# de tanto ele me enxer a cabeça. Agora quando ele dizer algo relacionado ao Pascal, vou mostrar esse tópico a ele.. hahaha gostaria de ver a reação boquiaberta dele.

16 minutos atrás, nunopicado disse:

Isso é uma impressão que tens, possivelmente por só estares a trabalhar com pouco mais que o standard Pascal. 
Mas quando começares a ver tudo o que o Object Pascal te permite fazer actualmente, seja a versão implementada pelo FPC ou especialmente (para mim) a versão implementada pelo Delphi, verás que a linguagem Pascal ainda é capaz de fazer qualquer coisa que as outras linguagens fazem, porem com um nível de dificuldade bem MENOR. ;)
 

Estou sorrindo, ao ler isso, um sentimento muito bom, o mesmo de quando fiz meu primeiro programa em Pascal. Agora graças a ti sinto uma vontade profunda de estudar Object Pascal. Vou já, procurar vídeo-aulas e exercícios. 

Eu no fundo sabia que Pascal é um mundo infinito :D

Edited by Gabriel Gomes

Share this post


Link to post
Share on other sites
nunopicado

:) E só por curiosidade...

C# foi desenvolvido por Anders Hejlsberg.
Sabes o que mais este génio fez?

Delphi e Turbo Pascal, dois dos maiores impulsionadores da linguagem Pascal.

Fez também o .Net Framework e o TextScript.
O C# é, aliás, uma linguagem com um conceito muito semelhante ao Delphi (Object Pascal).

Se me perguntares qual a melhor, a resposta é simples:
Depende do que queres fazer.

O facto de não haver um vencedor claro para todas as situações mostra que ambas estão em muito boa forma! ;)


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
Yamix
18 minutos atrás, nunopicado disse:

Note-se no entanto que no Delphi, tudo é tão, mas tão fácil, que até ser mau programador é simples... :P
É muito fácil um programador iniciante perder-se em tanta facilidade e começar a fazer o chamado código Spaghetti.

Semana que vem, começo minha faculdade de Ciência da Computação, para o meu futuro espero tudo, menos me tornar um mau programador  :P

Costumo ler alguns tópicos antigos aqui do fórum, sobre os professores desse tipo de curso, li até o seu "depoimento" @nunopicado, ri muito espero vivenciar algo do tipo, para correr aqui no fórum e contar :D:D  

Citação

 E só por curiosidade...

C# foi desenvolvido por Anders Hejlsberg.
Sabes o que mais este génio fez?

Delphi e Turbo Pascal, dois dos maiores impulsionadores da linguagem Pascal.

Fez também o .Net Framework e o TextScript.
O C# é, aliás, uma linguagem com um conceito muito semelhante ao Delphi (Object Pascal).

Se me perguntares qual a melhor, a resposta é simples:
Depende do que queres fazer.

O facto de não haver um vencedor claro para todas as situações mostra que ambas estão em muito boa forma! 

É sério, quero muito aprender Object Pascal! :D 

Edited by Gabriel Gomes

Share this post


Link to post
Share on other sites
nunopicado
Agora, Gabriel Gomes disse:

Semana que vem, começo minha faculdade de Ciência da Computação, para o meu futuro espero tudo, menos me tornar um mau programador  :P

Costumo ler alguns tópicos antigos aqui do fórum, sobre os professores desse tipo de curso, li até o seu "depoimento" @nunopicado, ri muito espero vivenciar algo do tipo, para correr aqui no fórum e contar :D:D  

Qual depoimento? :D Não me lembro disso...
Mostra, para eu me rir também! heheeh


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
Yamix

Vou procurar, mas tinha algo a ver com o professor dizer que você estava errado, mas você sabia que estava certo.. :D

 

Edited by Gabriel Gomes

Share this post


Link to post
Share on other sites
Yamix

Encontrei .. :D:D 

Em 24/11/2013 às 20:15, thoga31 disse:

Uhh, o clássico do ponto e vírgula. Nunca me canso de rir com essa :P

@nunpicado, e a tua do gotoxy? Também é boa :D

------------------------------------------------------------------------------------------------------------------------------------------------------------------

Em 24/11/2013 às 20:23, nunopicado disse:

heheheh

Só para quem não conhece:

Prof a ensinar o GotoXY, teima que os parametros a usar são GotoXY(Y,X);

Aqui o Picado diz que não, que é X,Y, como diz o proprio nome do procedimento.

A prof continua a teimar.

A turma fica contra mim, e diz que eu às tantas penso que sei mais que a prof.

A prof para terminar por ali diz que no fim da aula testamos no PC.

O Picado cala-se.

No fim da aula tudo a sair, o Picado puxa tudo para dentro: Não sai ninguém sem tirarmos a limpo a cena.

Testa-se: Pois é, afinal o Picado tinha razão!

Desculpa da prof: Estou mais habituada ao Locate do Basic...

------------------------------------------------------------------------------------------------------------------------------------------------------------------

Em 24/11/2013 às 20:25, thoga31 disse:

Moral da história: o Picado pica quando é picado... :D

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

Em 24/11/2013 às 20:29, nunopicado disse:

Moral da história: Quando tenho a certeza de estar certo, não me calo nem por decreto!

O que não deixa de ser chato quanto tenho a certeza de estar certo, e depois vai-se a ver e não estou! :D:D

Claro que nesses casos, sou gajo para dar a mão à palmatória!

------------------------------------------------------------------------------------------------------------------------------------------------------------------

kkkkkkkkkkkkk, muito bom!! :D:P 

Caso prefira ver, link aqui.

Edited by Gabriel Gomes

Share this post


Link to post
Share on other sites
nunopicado

loool

Bons tempos! hahaha


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.