CodeGym /Cursos /C# SELF /Introdução a funções (métodos) em C#

Introdução a funções (métodos) em C#

C# SELF
Nível 8, Lição 2
Disponível

1. Funções/Métodos em C#

Você já aprendeu um monte de comandos em C#, então já consegue escrever programas até que bem complexos. 10, 20, 30 linhas de código num programa — nem é tanto assim, né?

Mas um programa com 100+ linhas já é grandinho, e entender o código pode ser complicado. Será que dá pra facilitar a escrita e leitura de programas grandes?

Dá sim, e quem salva a gente são os métodos (funções).

O que é um método? Simplificando muito, método é um grupo de comandos que tem um nome único. Ou seja, a gente junta vários comandos numa "caixinha" e dá um nome pra ela. Pronto, virou método.

Imagina que você tem um código pra desenhar um gato:

Console.WriteLine("  |\\__/,|   (`\\");
Console.WriteLine("  |o_o  |__ _) )");
Console.WriteLine("  (____/   (_/ ");
Código pra desenhar um gato

Olha o que ele mostra:

  |\__/,|   (`\
  |o_o  |__ _) )
  (____/   (_/

Você pode jogar esse código num método separado e desenhar quantos gatos quiser:

void WriteCat()
{
    Console.WriteLine("  |\\__/,|   (`\\");
    Console.WriteLine("  |o_o  |__ _) )");
    Console.WriteLine("  (____/   (_/ ");    
}

//desenha três gatos
WriteCat();
WriteCat();
WriteCat();
Usando método pra mostrar o gato várias vezes

Quando o programa roda, toda vez que você chama WriteCat() ele executa todos os comandos dentro do método WriteCat(). A gente basicamente criou um novo comando (método), juntando vários comandos num só grupo.

Pra que servem as funções:

  • Dividem o programa em partes, cada uma faz sua tarefa.
  • Facilitam o reuso: escreveu uma vez, usa quantas vezes quiser.
  • Diminuem a chance de bugs: se der ruim numa função, arruma num lugar só.
  • Dão "nomes" pra ações complicadas — o código fica muito mais legível.

Termos: função, método, procedimento

Em C#, função e método geralmente são a mesma coisa, mas tem uns detalhes.

  • Método — função que pertence a uma classe ou objeto (em C# quase tudo é método).
  • Procedimento — função que não retorna nada (void-métodos).
  • Função — no geral, qualquer parte do programa com nome que pode ser chamada.

Oficialmente em C# tudo isso é chamado de método, mas se você ver "função" por aí, relaxa!

2. Sintaxe de declaração de método: explicando cada parte

Bora ver uma função simples, o clássico "Hello, World!", só que colocando o print num método separado:

using System;

class Program
{
    static void Main()
    {
        PrintHello();
    }

    static void PrintHello()	// mostra o texto Hello, World!
    {
        Console.WriteLine("Hello, World!");
    }
}
Exemplo de declaração e chamada de método

Explicando a sintaxe:

Parte Exemplo Descrição
Modificador
static
Diz que o método pertence à classe (mais sobre isso depois)
Tipo de retorno
void
Diz que o método não retorna nada
Nome do método
PrintHello
Nome do método, usado pra chamar ele
Parâmetros
()
Argumentos (vazio — sem argumentos)
Corpo do método
{ ... }
Código que roda quando o método é chamado

Analogia:
Pensa no método como uma máquina de café: você coloca o dinheiro (argumentos), aperta o botão (chama o método), a máquina faz o café (corpo do método), e te dá o resultado (valor de retorno) — ou não dá nada, se for um void-método!

3. Como chamar métodos

Chamar um método é só escrever o nome dele e parênteses, pronto:

PrintHello(); // Método sem parâmetros

int sum = Add(2, 3); // Método com parâmetros e retorno

Importante: só dá pra chamar um método depois que ele foi declarado (ou se a declaração tá "acima" no código, ou no mesmo classe).

4. Métodos com parâmetros

Dá pra passar parâmetros pro método. Isso deixa o método flexível e adaptável pra várias situações. Na real, parâmetros são variáveis do método, que recebem valores na hora da chamada. Tem que declarar os parâmetros quando cria o método.

static void Greet(string name)
{
    Console.WriteLine($"Oi, {name}!");
}

// Usando:
Greet("Alice");
Greet("Bob");
Método com parâmetro

Parâmetros — são variáveis que você passa pro método quando chama ele.

Parte Exemplo Descrição
Tipo do parâmetro
string
Tipo do valor recebido
Nome do parâmetro
name
Nome pra usar dentro do método

Chamadas:
Greet("Alice"); — name recebe o valor "Alice".

Vários parâmetros

Dá pra declarar vários parâmetros separados por vírgula:

static void PrintSum(int a, int b)
{
    Console.WriteLine($"Soma: {a + b}");
}

// Usando:
PrintSum(5, 7); // Soma: 12
Método com vários parâmetros

5. Parâmetros-valor e parâmetros-referência

Parâmetros de função são variáveis normais, e valem as mesmas regras das outras variáveis.

Então fica ligado: quando você passa um array pro método, você tá passando uma referência pro array, ou seja, o método pode mudar o conteúdo do array. Pros tipos simples (int, double), o valor é copiado.

static void ZeroFirstGrade(int[] grades)
{
    grades[0] = 0; // Muda o array original!
}

// Usando:
int[] a = {1, 2, 3, 4, 5};
ZeroFirstGrade(a);
Console.WriteLine(a[0]);	//vai mostrar 0
Passando array por referência — o método muda os dados originais

O que rola aqui é basicamente isso:

static void ZeroFirstGrade(int[] grades)
{
    grades[0] = 0; // Muda o array original!
}

// Usando:
int[] a = {1, 2, 3, 4, 5};

//ZeroFirstGrade(a);
int[] grades = a;
grades[0] = 0;

Console.WriteLine(a[0]);	//vai mostrar 0
Analogia de passar array por referência
2
Tarefa
C# SELF, nível 8, lição 2
Bloqueado
Criação de um método sem parâmetros
Criação de um método sem parâmetros
2
Tarefa
C# SELF, nível 8, lição 2
Bloqueado
Criação de um método com parâmetro
Criação de um método com parâmetro
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION