25 de setembro de 2008

Argumentos

Olá! Finalmente, a última parte de funções: os argumentos. =]

Lembra quando eu disse que poderíamos dizer para uma função: "Ei função, pega esses dois números inteiros aqui, soma e me devolve a soma deles"?
Quando fazemos isso, jogamos algo com o que a função vai trabalhar, chamamos essas informações de parâmetros.

E então você pergunta: "Mas então porque você falou que iríamos falar sobre argumentos?". Eu respondo:
Quando se constrói uma função, você pode deixar determinado quais informações ela está aguardando para trabalhar: os argumentos.

Ou seja, Uma função tem seus argumentos, e uma chamada de função tem seus parâmetros.
Bom, vou mostrar um exemplo comentado:



Conclusão: Quando falamos que vamos jogar algo pra função, chamamos de parâmetros, e quando temos uma função que espera determinadas informações, chamamos de argumentos.

E assim, chegamos ao fim da estrutura das funções!
Nos próximos posts vou começar a postar alguns algoritmos, funções, de treino. Tudo comentado. =]
Até la!

22 de setembro de 2008

Mais sobre Funções

Olá! Vamos para a 2ª parte sobre funções.
No final do último post, deixei escrito que "Pode-se construir uma função que faça alguma coisa apenas (do tipo void) ou uma função que faça alguma coisa e te traga de volta o resultado (do tipo int, string, double, etc..)" , e vou explicar agora como funciona isso.

Para começar, vou lembrar um pouco das variáveis.
Quando vamos escrever algum algoritmo, usamos muito as famosas váriaveis. Por exemplo, num algoritmo de soma. Ele pega dois números, a e b e traz a soma deles. Esses números não são sempre os mesmos certo? São as váriaveis a e b, ou seja, podem admitir diversos valores, sendo eles vindo diretamente do código, vindo de algum input pro usuário, etc.

Mas porque falei das variáveis? Porque ao declarar uma variável, você tem que dizer de qual tipo ela é, para o computador saber como representá-la na memória. Há vários tipos de representação de dados para o computador, os principais são: Boolean, Char, String, Int, Double e Float, onde são, respectivamente: Verdadeiro ou Falso, um Caractere, Um conjunto de caracteres ( uma palavra, uma frase ), um número inteiro, um número decimal de certo tamanho, número com ponto flutuante de certo tamanho.

E é quase a mesma coisa para as funções. Toda função, ao ser declarada, tem que ser de um tipo especifico. Só que o tipo da função determina qual o tipo de retorno que eu estou aguardando dela, ou até mesmo se eu não preciso aguardar nenhum retorno. Além dos tipos de representação de dados que mostrei acima, há mais um para funções: O tipo void. Que seria o tipo sem retorno.

Então, é como eu disse no começo, pode-se construir uma função que faça alguma coisa apenas (que retone um tipo void, ou seja, nada) ou uma função que faça alguma coisa e te traga de volta o resultado (que retorne algo do tipo int, string, double, etc..).
Vou descrever três funções, uma com tipo de retorno void , uma com int e outra com string:

Obs.: Vamos adotar essas funções como se estivessem dentro de uma classe, na orientação a objetos, só para o "public" não ficar errado.

As três funções não possuem argumentos, ou seja, não precisam de nenhum dado para executar.
A primeira, quando chamada, apenas escreve na tela (com a sintaxe de Console Application do C#) a palavra Void. A segunda, quando chamada, apenas traz o número 4. A terceira traz a sigla PP. E perceba que a primeira é a única que não possue a palavra return. As outras se não possuirem essa palavra, estariam erradas, ja que foram declaradas com tipos de retorno diferentes do void.

Agora, para ficar mais claro: Eu poderia escrever um código para escrever na tela a sigla PP do tipo void, da mesma forma que a primeira função, ou escrever um Console.WriteLine(ex3()) que daria o mesmo resultado, ja que a sua instrução diz: "Eu quero escrever na tela o que a função ex3 tem para me retornar".

E é isso ai! Fica então que, além de executar um bloco de instruções, as funções podem trazer retornos, que são importantes quando se precisa trabalhar com eles.
Até o próximo post!

obs.: Obrigado aos meus amigos de trabalho, Marcos Sabino e Érico Neto, que me alertaram quanto ao uso do termo "função do tipo tal", porque na realidade o tipo especifica o tipo do retorno, e não da função. As funções não possuem tipos, apesar do costume de se falar "função do tipo tal". =D

17 de setembro de 2008

Métodos, Funções

Olá! Vamos começar pra valer com o PP agora.
Vou falar um pouco sobre métodos e/ou funções.
Afinal, o que são métodos? O que são funções? Qual a diferença?

A verdade é a seguinte: É a mesma coisa dizer função ou método. O que muda é se ela está sendo usada numa linguagem orientada a objetos ou não. Então, não há muito com o que se preocupar com isso, quando falar função ou método, vai estar certo do mesmo jeito. ( Você acaba entendendo o porquê de ficar como método na orientação a objeto, mas isso é um assunto para depois )

E o que são dentro da programação? São fundamentais. É algo que define um bloco de instruções para resolver algum problema, menor que o original.
Acho que fica melhor entender com um exemplo. Se nós quisermos somar 2 números e imprimir na tela, o que seria melhor?
- Fazer um bloco de instruções direto de onde o programa executa;
- ou fazer um bloco menor, onde eu posso simplesmente jogar os numeros a serem somados e impressos pra ele e pedir "Ei, função Somar, pega esses dois números inteiros a e b, soma pra mim e depois imprimi na tela, please?"

Bom, se você escolheu a primeira opção, de por tudo direto na execução do programa para ler, somar e imprimir, tem que saber: vai funcionar, sim. Mas e quando você for precisar fazer 5 vezes uma coisa do tipo: ler 5 números inteiros, verificar qual é o maior e imprimir na tela, não seria melhor ter um bloco de código só para pegar esses números lidos, fazer a verificação dentro dele e já imprimir na tela?

Pra ficar mais claro, vou dar um exemplo de uma função que soma e imprime dois números inteiros dados a ela:

( Aqui não tem ctrl+c e ctrl+v =P)

O que está descrito na folha: Uma classe Programa, que seria nosso programa mesmo, com dois métodos (funções): O método main() e o método somaEimprima(int a, int b). O método main é o bloco de instruções a serem lidas com a execução do programa, e o método somaEimprima é implementado abaixo, podendo ser usado na main, ou não. É importante lembrar que todo programa tem apenas UM método main.
No nosso caso, a função somaEimprima recebe dois números inteiros a e b e imprime a soma deles. Chamando no main com os parâmetros (2, 2), ele entende como a = 2 e b = 2, logo imprime 4.

Pode-se construir uma função que faça alguma coisa apenas (do tipo void) ou uma função que faça alguma coisa e te traga de volta o resultado (do tipo int, string, double, etc..)
Mas isso vou falar no próximo post!

Por hoje, ficou a definição de funções e/ou métodos, esses blocos de instruções que nos ajudam a transformar um grande problema em vários pequenos e estruturados, que podem ou não trazer de volta algum resultado ou que executam o bloco e pronto.

Agora, pra você treinar um pouco, é só pegar um papel, um lápis e uma borracha e tentar construir algumas funções! Coisas do tipo: "Uma função que receba um inteiro n e imprima 2n"

Boa diversão!
[]'s

16 de setembro de 2008

O Começo !

Olá! Esse é o primeiro post do novo blog "Programação de Papel", ou simplesmente "PP" !
Tenho o intuito de com esse blog compartilhar todos os meus aprendizados sobre a - porque não - arte da programação e construção de algoritmos com vocês, sempre utilizando os melhores equipamentos que nós podemos ter - Um lápis e uma borracha bem macia!

É isso ai, nada de ctrl+c e ctrl+v com dicas de códigos aqui! Vamos tentar começar a pensar e entender o que está acontecendo! (Nem que leve muito tempo, acontece muito hehe )

Então, espero que eu consiga cumprir esse intuito, de mostrar que não há nada melhor do que entender um algoritmo, seja em qual linguagem for, se for com o seu compilador natural: Você!

E é isso! Até o próximo post!
[]'s !