Funções e procedimentos em C#

Richard Lucas de Oliveira Marques

vocÊ vai aprender

Conceitos de função e procedimento

Tipos de função

Como criar e utilizar uma função em C#

pré-requisitos

Conhecimento básico de programação em C#

Conceitos de função e procedimento

Funções (e procedimentos) são basicamente um conjunto de instruções desenhadas para cumprir uma tarefa específica e agrupadas em uma unidade com um nome para referenciá-la. O principal objetivo de uma função é dividir a tarefa original do programa em outras pequenas tarefas que simplificam e organizam o programa como um todo. Às vezes, as funções utilizam parâmetros, que são valores necessários para o seu funcionamento, por exemplo: Um número para uma função que calcula raiz quadrada.

Também é necessário também escolher o nível de acessibilidade de cada função. Sendo eles:

tipos de acessibilidade

Função versus procedimento

Funções sempre retornam algum resultado/valor através do comando return. Também devem ser de algum tipo (int, double, char, etc.).

VS

Procedimentos nunca retornam valores. Sempre serão tipo void e não é necessário usar nenhum comando específico.

Tipos de função: função sem retorno e sem parâmetro

Essa função resolve sozinha toda a tarefa proposta, pois não recebe nenhuma informação no momento de sua chamada (parâmetros) e também não retorna nenhum valor para quem a chamou. Para identificar quando uma função não retorna algum valor é só observar se ela é do tipo Void. A função é chamada na Main pelo nome seguido da abertura de parênteses sem nenhum parâmetro que no caso do exemplo abaixo é multiplica(). Sintaxe representada abaixo:

função1

class Program
{
    public static void multiplica()
   {
        int a, b, multiplicar;
        Console.WriteLine("Digite dois números: ");
        a = int.Parse(Console.ReadLine());
        b = int.Parse(Console.ReadLine());
        multiplicar = a * b;
        Console.WriteLine("A multiplicação dos números é:" + multiplicar);
    }
    static void Main(string[] args)
    {
        multiplica();
        Console.ReadKey();
    }
}


fragmento de código widget

tipos de função: função sem retorno e com parâmetro

Esse tipo de função não retorna nenhum valor para quem as chamou por ser do tipo Void e ela recebe valores no momento em que são chamadas (parâmetros), que são usadas como meio de comunicação entre as funções, esses parâmetros podem ser do tipo int, string, char, etc. Uma observação importante é que a ordem e o tipo de parâmetros deverão ser respeitados na chamada de função. Sintaxe representada abaixo:

função2

class Program
{
    public static void soma(int x, int y)
    {
        int soma;
        soma = x + y;
        Console.WriteLine("O resultado da soma é: " + soma);
    }
    static void Main(string[] args)
    {
        int num, num1;
        Console.WriteLine("Digite dois números: ");
        num = int.Parse(Console.ReadLine());
        num1 = int.Parse(Console.ReadLine());
        soma(num, num1);
        Console.ReadKey();
    }
}


fragmento de código widget

tipos de função: função com retorno e sem parâmetro

Para ser com retorno a função precisa ter um tipo diferente de void e deve ser do tipo do seu retorno (int, double, char ...) Esse tipo de função não recebe valores no momento em que são chamadas mas retornam um valor para quem a chamou (retorno), esse tipo de retorno é feito atráves do comando return e esse comando pode ser usado mais de uma vez e a informação retornada deverá ser do mesmo tipo da função. Sintaxe representada abaixo:

função3

class Program
{
    public static int subtrai()
    {
        int z, y, subtracao;
        Console.WriteLine("Digite dois números");
        z = int.Parse(Console.ReadLine());
        y = int.Parse(Console.ReadLine());
        subtracao = z - y;
        return subtracao;
    }
    static void Main (string[] args)
    {
        int x;
        x = subtrai();
        Console.WriteLine("O resultado da subtração é: "+ x);
        Console.ReadKey();
    }
}


tipos de função: função com retorno e com parâmetro

Essa função retorna algum valor e também recebe valores como parâmetro. Sintaxe representada abaixo:função4

class Program
{
    public static int divide(int y, int z)
    {
        int dividir;
        dividir = y / z;
        return dividir;
    }
    static void Main (string[] args)
    {
        int d, e, x;
        Console.WriteLine("Digite dois números");
        d = int.Parse(Console.ReadLine());
        e = int.Parse(Console.ReadLine());
         x = divide(d, e);
        Console.WriteLine("O resultado da divisão é: " + x);
        Console.ReadKey();
    }
}


tipos de função: funções com/sem retorno e com/sem parâmetros

Nesse exemplo encontramos uma função que retorna um valor pra Main através do comando Return e que tem passagem de parâmetro, inclusive uma passagem por referência, que irá alterar na Main qualquer mudança feita dentro dessa função, mas isso veremos logo abaixo em "valor e referência", a segunda função é sem retorno e sem passagem de parâmentro, ela irá fazer toda a tarefa e será chamada na Main. Sintaxe representada abaixo:

função5

class Program
{
    public static int somanum(int x, ref int y)
    {
        int somar;
        y = 2;
        somar = x + y;
        x = 1;
        return somar;
    }
    public static void multiplicanum() 
    {
        int multiplica;
        int i, j;
        Console.WriteLine("Digite dois números para multiplicar:");
        i = int.Parse(Console.ReadLine());
        j = int.Parse(Console.ReadLine());
        multiplica = i * j;
        Console.WriteLine("A multiplicação é: " + multiplica);
    }
    static void Main(string[] args)
    {
        int a, b, c;
        Console.WriteLine("Digite dois números para somar: ");
        a = int.Parse(Console.ReadLine());
        b = int.Parse(Console.ReadLine());
        c = somanum(a, ref b);
        Console.WriteLine("A soma é: " + c);
        multiplicanum();
        Console.ReadKey();
   }
}


passagem de parâmetros: valor e referência

Existem dois tipos de passagem de parâmetros, por valor e por referência. A passagem de parâmetro por valor é quando os valores da Main passa para a função com os nomes das variáveis diferentes, mas os valores são passados respectivamente. Já na passagem por referência as alterações realizadas nos parâmetros que estão dentro das funções vão ser trocadas na Main de acordo com sua mudança dentro da função.

passagem por referência X passagem por valor

valoreref

links úteis

Vídeo tutorial 1 - Funções em C#

Vídeo tutorial 2 - Funções em C#


Este tutorial foi adaptado do tutorial Usando funções em C# desenvolvido por Daniela Menezes.

Voltar