Вы находитесь на странице: 1из 21

Atualizao Tcnica e Pedaggica de Professores no componente

de Lgica de Programao com C# (console)

Semana 3
Mtodos/Funes
Prof. Tiago Jesus de Souza

Introduo
Nesta semana iremos abordar um assunto muito interessante que poder ajudar e muito
no desenvolvimento organizado de um projeto.

Funes so as estruturas que permitem ao usurio separar seus programas em blocos.


Para conseguirmos desenvolver programas grandes e complexos, temos de constru-los
bloco a bloco.

Em linguagem de programao estruturada o nome utilizado so funes e


procedimentos.
Agora, em linguagem de programao orientada a objetos, que o caso do nosso curso,
chamaremos de mtodos, pois o nome dado quando usado este paradigma.

Os mtodos so criados apenas uma vez e podem ser executados vrias vezes em um
programa, ou seja, podem ser reutilizados.

SINTAXE: Mtodos
static tipo_de_retorno nome_do_mtodo (declarao_de_parmetros)
{
corpo do mtodo
}
O tipo-de-retorno o tipo de varivel que a funo vai retornar. Caso tenha algum valor
para ser retornado, usa-se o comando return.
A declarao de parmetros uma lista com a seguinte forma geral:
tipo var1, tipo var2, ... , tipo varN
O tipo deve ser especificado para cada uma das N variveis de entrada. na declarao de
parmetros que informamos ao compilador quais sero as entradas do mtodo.

O corpo do mtodo onde as entradas so processadas, sadas so geradas ou outras


instrues so realizadas.

Comando return
O comando return possui a seguinte forma geral:

return valor_de_retorno;

Digamos que uma funo est sendo executada. Quando se chega a uma instruo return,
o mtodo encerrado imediatamente e, se o valor de retorno informado, a funo
retorna este valor.
importante lembrar que o valor de retorno fornecido tem que ser compatvel com o tipo
de retorno declarado para a funo.
Caso o tipo de retorno for void (vazio), no usada a instruo return no corpo da
funo, caso contrrio, o uso obrigatrio.

Exemplo 1 Mtodo sem retorno de valor


Neste exemplo, estaremos usando trs mtodos:
O main() j conhecido por ns, pois o mtodo principal, por onde a execuo do
programa se inicia.
O mtodo digite() que ser responsvel apenas por exibir uma mensagem na tela.
E o mtodo dobro(int n), que ser responsvel por receber um nmero inteiro por
parmetro, calcular e exibir o resultado do dobro de um nmero qualquer digitado pelo
usurio.
O que estes dois novos mtodos tm em comum?
Ambos no retornam valor, ou seja, o tipo de retorno void.

Exemplo 1 Mtodo sem retorno de valor Cdigo fonte

Mtodo main

Mtodo digite

Mtodo dobro

Exemplo 1 Mtodo sem retorno de valor Resultado

O usurio digitou um nmero inteiro e o programa exibiu o resultado do calculo do dobro


deste nmero.
Estes so apenas exemplos simples para mostrar como so realizadas as criaes e
chamadas para a execuo de mtodos. Veremos que a utilizao de mtodos
fundamental para organizao e reduo de linhas de cdigo.

Exemplo 1 Mtodo sem retorno de valor Analisando


Quando este programa executado, so executadas as seguintes instrues na sequencia:
1. Declarao da varivel a do tipo int.
2. realizada a chamada do mtodo digite(). Quando feito isso, sero executadas as
instrues que foram desenvolvidas dentro deste mtodo, ou seja, ser exibida a
mensagem Digite um nmero: e na sequencia, continua a executar as instrues que esto
dentro do mtodo, retornar para o main().
3. Na sequncia o usurio digitar um nmero que ser armazenado na varivel a.
4. O prximo passo realizada a chamada do mtodo dobro(a), ou seja, como o mtodo dobro
foi criado para receber um nmero inteiro, calcular e exibir o resultado do calculo, podemos
dizer que esta chamada significa calcular e exibir o dobro do valor que est na varivel a.
5. Sendo assim sero executadas as instrues que esto dentro do mtodo dobro, que
calcular e exibir o resultado.
6. Finalizando as instrues do mtodo dobro, dada sequencia da execuo das instrues do
mtodo main.

Fazendo uma analogia


Observem que foram criados sub-rotinas especializadas em realizar instrues especficas e
com isso o mtodo principal, ficou com menos responsabilidades, ou seja, ele apenas realizou
uma chamada para a execuo de um mtodo, mas ele no precisa saber quais so as
sequencias de comandos que este mtodo vai executar.
Fazendo uma analogia: Voc trabalha em uma empresa e seu chefe manda voc ir comprar um
chocolate. Voc como funcionrio obediente vai comprar o chocolate e retorna entregando o
chocolate para seu chefe.
Analisando este cenrio, o chefe seria o main e voc seria o mtodo comprar. Interessou para o
chefe saber onde voc foi comprar o chocolate? O que importa para o chefe que a tarefa foi
executada com sucesso. E como ele sabe que voc vai resolver isso para ele, o mesmo no
precisa se preocupar como voc realizou a tarefa, se foi no bar, padaria, mercado, ou ainda se
pagou em dinheiro, carto, cheque, ou se foi de carro, nibus ou trem. Simplesmente ele
mandou executar.

Passagem de parmetros por valor


A linha de cabealho do mtodo dobro : static void dobro(int n)
Quando foi realizada a chamada do mtodo dobro, foi colocado entre parnteses a
varivel a. Pois o dobro do valor desta varivel que o mtodo ir calcular.
Observem que no cabealho desta funo existe uma varivel declarada. Esta varivel n
quem receber uma cpia do valor da varivel a e assim o mtodo ser executado.
Caso acontea algum problema com a varivel n, como por exemplo ela mudar de valor
por conta de algum erro de programao, no afetar a varivel a, mantendo o valor
original desta varivel.

Exemplo 2 Mtodo com retorno de valor


Neste exemplo, estaremos usando trs mtodos:
O main() j conhecido por ns, pois o mtodo principal, por onde a execuo do
programa se inicia.
O mtodo digite() que ser responsvel apenas por exibir uma mensagem na tela.
E o mtodo int tamanho(string x), que ser responsvel por receber uma string por
parmetro, calcular e retornar a quantidade de caracteres que possui esta string digitada
pelo usurio.
O que estes dois novos mtodos tm de diferentes?
Um no retornar valor (void) e o outro retornar um valor inteiro (int).

Exemplo 2 Mtodo com retorno de valor Cdigo fonte

Exemplo 2 Mtodo com retorno de valor Resultado

Neste exemplo foi digitada uma palavra e na sequencia foi exibida a quantidade de
caracteres que possui esta palavra.

Poderia ser implementado sem usar o mtodo tamanho? Sim, poderia. Mas lembrando
que est apenas sendo demonstrado como realizado o trabalho com mtodos.

Exemplo 2 Mtodo com retorno de valor Analisando


Quando este programa executado, so executadas as seguintes instrues na sequencia:
1. Declarao das variveis p e t.
2. realizada a chamada do mtodo digite(). Quando feito isso, sero executadas as
instrues que foram desenvolvidas dentro deste mtodo, ou seja, ser exibida a
mensagem Digite uma palavra: e na sequencia, continua a executar as instrues que
esto dentro do mtodo, retornar para o main().
3. Na sequncia o usurio digitar uma palavra que ser armazenado na varivel p.
4. O prximo passo realizada a chamada do mtodo tamanho(p), ou seja, como o
mtodo tamanho foi criado para receber uma string, verificar e retornar o resultado do
calculo, podemos dizer que esta chamada significa verificar e retornar a quantidade de
caracteres da string que est na varivel p.
5. Sendo assim sero executadas as instrues que esto dentro do mtodo tamanho.
6. Finalizando as instrues do mtodo tamanho, dada sequencia da execuo das
instrues do mtodo main, exibindo a mensagem para o usurio.

Mtodos - Esclarecimentos
Agora com alguns exemplos j mostrados, ficou mais claro o objetivo da criao de
mtodos.

Com eles podemos organizar melhor o cdigo fonte, ele pode ser chamado a qualquer
momento e vrias vezes durante a execuo de um programa,mas bvio que vai
depender da lgica de programao para o desenvolvimento.
Algumas instrues que utilizamos at agora, vo ficar mais claras para entender o que
no mtodos, pois o tempo todo estamos utilizando-os, como por exemplo:
Console.Write(), Console.Clear(), Console.ReadLine() e Console.ReadKey()
Observem que o que est em destaque, so todos mtodos j pr-definidos pela classe
Console, e no importa para ns como que o Clear() faz para limpar a tela, o importante
que ele faz, ou seja, no precisamos nos preocupar quanto as instrues utilizadas por
ele para realizar tal ao. E com isso agiliza o desenvolvimento.

Exemplo 3 Mtodo com tipos de Parmetros Diferentes


Neste exemplo, o
usurio ter que
digitar o nome e a
idade de duas pessoa.
Um mtodo chamado
PessoaMaisVelha
receber estas
informaes e retornar
uma string informando
o nome da pessoa mais
velha.

Exemplo 3-Mtodo com tipos de Parmetros Diferentes-Resultado


Sempre quando forem executar um programa, onde
existem vrias possibilidades de resposta, testem
todas elas para verificar se esto coerentes, pois uma
resposta incorreta ou incompleta, pode causar vrios
Transtornos, seja para um usurio, uma empresa
ou at mesmo um outro sistema.

Exemplo 3 Tipos de Parmetros Diferentes Comentrios


As informaes que foram digitadas, foram armazenadas nas variveis nome1 e idade1
para referenciar a 1 pessoa e nas variveis nome2 e idade2 para referenciar a 2 pessoa.

Logo aps as entradas de dados, o mtodo PessoaMaisVelha invocado e so passadas


por parmetros cpia dos valores das variveis nome1, idade1, nome2, idade2 para as
variveis declaradas no cabealho do mtodo que so n1, id1, n2, id2, respectivamente.
Este mtodo ir realizar testes para saber quem a pessoa mais velha e retornar uma
string informando o ocorrido, sendo ela armazenada na varivel texto. No enunciado no
consta a informao que deve ser tratado o caso das idade forem iguais, porm isso deve
ser pensado e tratado mesmo assim por quem est resolvendo este problema.
Estes detalhes devem sim serem interpretados e analisados para resoluo de problemas,
pois se no houver tratamento, o usurio poder receber uma resposta errada do
programa.

Exemplo 4 Teste de Condio com retorno de mtodo


Neste exemplo, o usurio ter que digitar um nmero inteiro e o programa informar se
este nmero digitado pelo usurio par ou mpar.

Exemplo 4 Teste de Condio com retorno de mtodo-Resultado


Logo aps o usurio digitar o nmero, foi realizado um teste condicional.
Para este teste, o mtodo RestoPorDois foi invocado passado num como parmetro.
Este mtodo retorna um valor inteiro (0 ou 1) que ser comparado com o valor 0 (zero) da
condio (if).
Se o valor que o mtodo retornar for 0 (zero), significa que o nmero par, caso contrrio,
o nmero impar.

Bibliografia

Manzano, Jos Augusto N. G., Estudo Dirigido de Microsoft Visual C# 2010 Express.
So Paulo, SP, Editora rica, 2010.

MSDN, Microsoft. Guia de Programao C#. Disponvel:


<http://msdn.microsoft.com/pt-br/library/67ef8sbd(v=vs.80).aspx>. Acesso em 31
jan 2013

http://pt.wikipedia.org/wiki/Indenta%C3%A7%C3%A3o

Вам также может понравиться