
Postado originalmente por
Mist
Agora que eu irei tentar aprender a programar, preparem para ver várias perguntas noobs.
Galera, eu estou com uma dúvida. Estou ainda no começo
dessa apostila de programação e não entendi algumas coisas:
- Funções;
- Argumentos;
- Retornar valores;
Não seria mais simples colocar tudo dentro do "int main()" do que criar uma nova "função"??

Postado originalmente por
Mist
Obrigado Victor.
Cloud~ Deu uma boa clareada aqui, mas eu fiquei com dúvida na parte do retorno. Ok, toda função irá retornar um valor, mas vão retornar pra que e pra onde?
Vejam se fiz certo por favor.
Uma
função, jogando a grosso modo, é um meio de organizar e reaproveitar um código. O qual faz algum tipo de processo, emcima de objetos(por exemplo, números). Depois de processar os objetos e transformar em um novo(ou novos), ele retorna esses objetos pra quem o chamou, numa determinada linha/parte do código.
Mas para uma função processar alguma coisa(que é seu objetivo), ele precisa das coisas pra processar, certo?
Essas coisas são os
Argumentos.
Argumentos são as variáveis(objetos) que serão responsáveis por receber os valores que foram enviados, quando a função, foi chamada.
Após a função receber seus
argumentos, eles serão processados, da forma que o programador quiser. Na sua parte final, a
função então devolve(
retorna) o(s) objeto(s) resultantes do processo, para onde ela foi chamada.
No caso:
#include <stdio.h>
int soma (int a, int b)
{
return (a+b);
}
int main ()
{
int x,y;
x=1;
y=2;
printf("%d",
soma(x,y));
// note que aqui, o valor a ser impresso será o retorno da função soma.
return(0);
}
A parte em negrito, nessa linha do código,
é onde ela foi chamada.No caso, o que será exibido na tela, será
3, porque a função retornou o valor 3 naquele ponto.
No caso da função que você criou(soma), a função, recebe os argumentos
a e
b, que terão os valores de
x e
y que você tinha colocado(1 e 2). O processo, que você definiu, foi de somá-los. E então, depois de somá-los, você
retornou o valor processado, que foi 3.
Não seria mais simples colocar tudo dentro do "int main()" do que criar uma nova "função"??
Da certo também. Mas...
Essa é uma dúvida muito, muito frequente de iniciantes. Isso é uma coisa que você só entenderá melhor quando criar programas mais complexos.
Vou dar um exemplo bem clássico,
Veja bem:
#include <stdio.h>
Você tem alguma idéia do que essa linha faz?
Ela inclui uma biblioteca, chamada de
stdio.h.Mas o que é uma biblioteca? Uma biblioteca, a grosso modo, é um lugar onde tem um monte de
funções, pré-programadas.
Se você for perceber bem, o próprio
printf,
É uma função. No caso, pré-programada.Os
argumentos, seriam no caso aquele %d, e o outro seria um valor.
Pensou se você não tivesse pronta a função printf? Você teria que aprender a fazer a função, e ainda, refazê-la todas as vezes em todos os programas, se quisesse mostrar algo na tela.
Mas com a biblioteca, você ja a tem pronta.
E então, você não economizou tempo e código?
É justamente para isso que ela serve.
Agora pensa em um programa mais complexo. Tipo um sistema operacional. Onde um processo é utilizado 100 vezes. É melhor, eu copiar e colar o código do processo 100 vezes, e explodir a hd de tantos gigabytes de linhas de código ou re-aproveitar esse processo?
Quando você entrar de cabeça mesmo em programação orientada a objeto avançada, você entenderá muito bem isso.
Na verdade é imprescindível que você entenda sobre esse assunto, para quando for mexer com
classes, metodos, propriedades e etc.
E isso ae, espero que tenha ficado claro
Ufa.