• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

mike_c23

Passagem de Parâmetros

9 mensagens neste tópico

Pessoal, eu estou a iniciar-me na programação e queria que alguem me explicasse como fazer passagem de parâmetros, penso eu que é assim que se diz :)

Isto é, tenho uma função do tipo:

int soma(int x,int y)
{
  return x+y;
}


main(){

      int i=0;
   int a,b;

      puts("Exemplo de uma função");
      printf("Insira o %d. numero inteiro: ", i+1);
      i++;
      scanf("%d", &a);
      printf("Insira o %d. numero inteiro: ", i+1);
      scanf("%d", &b);
      printf("O resultado da soma dos numeros introduzidos e: \n\n\t", soma);
//    return soma(); // isto parece não funcionar --> sei que me falta algo aqui... Se alguem me puder ajudar fico muito agradecido!
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tens os valores que queres passar à função nas variáveis a e b. Tens que os colocar dentro dos parêntesis quando chamas a função, senão ela não adivinha quais são. Faz assim:

printf("O resultado da soma dos numeros introduzidos e: \n\n\t", soma(a, b) );

Quanto ao return, em vez de

main()

, utiliza

int main()

Mas sabes o que faz o return na função main?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Que burro que eu sou.  :wallbash: Eu sabia que não seria muito dificil, mas o óbvio para quem ainda não sabe nada como eu é bastante dificil às vezes. Obrigadão pela ajuda! :(

Quanto ao return eu apenas coloquei lá porque era uma tentativa desesperada para que funcionasse!!

Mas já agora se puderes explicar o que o return faz na função main... É diferente do que quando se faz return numa função que não a main?

Quando dizes para colocar:

int main(){

...

}

, queres garantir que a função te vai devolver um valor inteiro? É isso?

Porque experimentei das duas maneiras e funcionou na mesma!!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não é burrice, é iniciação :(

É diferente do que quando se faz return numa função que não a main?

Quando sais de um programa, podes dizer ao sistema operativo se o programa saiu bem, mal, ou assim assim :D Isto era utilizado no tempo do DOS sobretudo para tarefas batch, para que por exemplo um programa que mostrava um menu pudesse dizer qual tinha sido a opção escolhida. No tempo do DOS era chamado errorlevel... não sei se o Windows modificou esse nome, mas continua a ser válido. Nesse aspecto é quase como o return noutra função qualquer, excepto que estás a retornar para o sistema operativo.

Quando dizes para colocar:

int main(){

...

}

, queres garantir que a função te vai devolver um valor inteiro? É isso?

Porque experimentei das duas maneiras e funcionou na mesma!!

É porque o compilador assume int quando não especificas nada. Não tinha a certeza nesse ponto; assim sendo só dava erro porque não colocaste parâmetros dentro dos parêntesis.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Apenas uma nota em vez do printf e scanf (tipicos de C) podes usar o cin e o cout que são mais usado em C++, apesar de os 2 fazerem a mesma coisa.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O que é que é mais lento?

cin e cout são em geral mais rápidos.

printf usado com parametros requer um parser em run time.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

E um cout com vários parâmetros requer várias chamadas a construtores. Falo por experiência própria, experimenta este código:

void main() {
DWORD tempo1=GetTickCount();
for (int i=0; i<10000; ++i)
	std::cout << i << '\n';

tempo1=GetTickCount()-tempo1;

DWORD tempo2=GetTickCount();
for (int i=0; i<10000; ++i)
	printf("%d\n", i);

tempo2=GetTickCount()-tempo2;
std::cout << "Tempo com cout: " << tempo1 << "\nTempo com printf: " << tempo2 << std::endl;
}

No meu computador os resultados foram:

Tempo com cout: 1078
Tempo com printf: 297

em debug e

Tempo com cout: 984
Tempo com printf: 282

em release.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora