SchultzGames
Para tirar dúvidas, crie um tópico especifico na área "Dúvidas em Geral" e aguarde ser respondido. Evite comentar em tópicos não relacionados a sua dúvida :D
TÓPICOS RECENTES:
Tópico:
Postado em:
Postado por:
[DUVIDA] UV MAPPING EM VÁRIOS OBJETOS - BLENDER
Loop Event Onclick
[Em Desenvolvimento] Battles of Worlds
[DÚVIDA] Modelo do Sketchup não importa corretamente
Tem como texturizar apenas uma face do cubo no Unity?
problemas com movimentação do personagem com root motion
[TUTORIAL] Sistema de DIA E NOITE completo, com luzes noturnas e SISTEMA DE NUVENS
Como fazer pro meu tiro matar o inimigo?
[DUVIDA] Perlin Noise 3d?
POSSO PUBLICAR MEUS JOGOS USANDO VERSÃO GRATUITA DESSA ENGINE...
The freddy krueger's pie (Game)
Novo Trailer do jogo 13º Andar
Como Configurar a Unity, para que modifique o seu Eixo?
Como fazer um sistema de conetar objetos 3d ao passar proximo de um Trigger?
Árvores sem billboard
distancia
Porque meu objeto não está sendo ativado? unity 2D
[TUTORIAL] Third Person Shooter
Como ativar som ao passar por cima de um objeto?
[PROJETO] A ULTIMA CASA DA RUA
Meu novo game
[DUVIDA SIMPLES]
Projeto Game de Terror
probleminha ao usar o Platform Effector2d
Criar game multi player unity 3d
Volleyguys - jogo de vôlei
[TUTORIAL] Banco de dados || MySQL
Touch para 2 Jogadores
Set Height do terreno
XML, suporte e utilização.
Travar animação
[DIVULGAÇÃO DE AULA] Como criar jogos sem saber programação
[RESOLVIDO] Como fazer o canvas ficar atrás do personagem? Unity 2D
[TUTORIAL] Controlador em Primeira Pessoa "compacto" FPS
Tem como modificar a textura em tempo real?
TEXTO DO BUTTON
ALTERAR A VELOCIDADE APENAS DE UMA ANIMAÇÃO VIA SCRIPT
Valor de App de Realidade Aumentada.
Como Fasso Para O HingeJoint Virar em Duas Direçoes?
Pegar objeto tocado em dispositivo mobile
[TUTORIAL] Criar Analógico Virtual UI Para Mobile.
Arquivos com Casa, arvores, Gramas, Objetos3d Etc...
Unity 2019.1.1 não entra em Modo Play
Fazer personagem descer uma tirolesa
Duvida script de loading com controle
Como implementar Gyroscope no FPSController ?
Bug de Iluminação Unity 2019
Não consigo dar dano nem destruir um objeto
SCRIPT DE MOVIMENTAÇÃO E CÂMERA
[PEDIDO DE TUTORIAL] Schultz fazer uma série *jogo de corrida*
[FAZER TUTORIAL] Como faço para clicar em um objeto e visualizar, girar...
Como finalizar a textura no blender
É possivel detectar colisão de um objeto filho pelo objeto pai?
Como atrasar uma animação Unity 2D
AJUDA COM SCRIPT DE LOAD DE CENA
[RESOLVIDO] Como mudar a cor do Text?
[PEDIDOS DE TUTORIAIS]
saber se os objetos colidiram
navmeshagent Duvida sobre a distancia percorrida
[TUTORIAL] Mover objetos 2D e conectar em lugares específicos
Balão de Conversação
[TUTORIAL] Como usar FREE EASY CRIATURA CONTROLE IA
Vale apena colocar esse Asset na Asset Store?
Como faço para que mostre algo que vai instanciar?
TRANSFORM DA POSIÇÃO NÃO SEGUE A ANIMAÇÃO
[TUTORIAL] Sistema de Lanterna com Pilhas
[TUTORIAL] Sistema simples para VOLTAR NO TEMPO, Unity 3D
UNITY, TRANSFORM.TRANSLATE ATRAVESSA PAREDES
Como Fazer Agregação via script do Unity?
( Ajuda) gráficos longe ruim
Verificar se objeto ja existe em um Lista
Fog of War
Scope Script
Animar um Número de Vezes
AJUDA COM MUDANÇA DE CENA
Porque meu aúdio não funciona na colisao do player com o objeto?
[RESOLVIDO] UNITY OBJETOS COM MESMO SCRIPT DE FORMA INDEPENDENTE
Comunicação entre scripts
[TUTORIAL] Script de pulo para jogos 3D em geral (Unity - C#)
[____TÓPICO LIVRE____] FALE O QUE QUISER (Parte 2)
Esse erro de código é da Unity ou da versão do Script?
Game Take All
PRESSIONAR BOTÃO TOUCH NO ANDROID SERÁ O MESMO QUE PRESSIONAR UMA TECLA DO TECLADO REAL
PROBLEMAS AO DAR BUILD
PRESSIONAR BOTÃO TOUCH NO ANDROID SERÁ O MESMO QUE PRESSIONAR UMA TECLA DO TECLADO FÍSICO
Duvida seleção de personagemsn
Como faço para distanciar um objeto do outro pelo script?
Ajuda com Ragdoll (Ta muito bugado)!!!
AJUDA - TUTORIAL Unity 2017 - Mover e rotacionar para a POSIÇÃO do MOUSE
Touch movendo objeto através duma Layer
[RESOLVIDO] Tentando fazer interação com botão do Mouse(1) nos slots!
[TUTORIAL] Unity 2019 - Lanterna e pilhas, com UI
Mecânica estilingue Angry Birds.
Sobre o StreamLabs OBS e o baixo FPS
[____APOIE O FÓRUM E O CANAL E GANHE RECOMPENSAS____]
Loja de Roupa estilo GTA V
duvida em desenho
[TUTORIAL] GameObject.Find ( achar objetos pelo nome )
[RESOLVIDO] Como faço pro inimigo dar dano no personagem (jogo 2D de plataforma)
Hoje à(s) 1:44 am
Hoje à(s) 1:13 am
Ontem à(s) 11:46 pm
Ontem à(s) 11:27 pm
Ontem à(s) 9:24 pm
Ontem à(s) 9:03 pm
Ontem à(s) 8:28 pm
Ontem à(s) 7:44 pm
Ontem à(s) 7:15 pm
Ontem à(s) 7:10 pm
Ontem à(s) 7:10 pm
Ontem à(s) 7:09 pm
Ontem à(s) 6:24 pm
Ontem à(s) 9:59 am
Ontem à(s) 9:57 am
Ontem à(s) 9:11 am
Ontem à(s) 9:04 am
Ontem à(s) 5:54 am
Dom Maio 19, 2019 10:34 pm
Dom Maio 19, 2019 7:57 pm
Dom Maio 19, 2019 2:51 pm
Sab Maio 18, 2019 10:26 pm
Sab Maio 18, 2019 9:45 pm
Sab Maio 18, 2019 2:27 pm
Sab Maio 18, 2019 1:59 pm
Sab Maio 18, 2019 9:24 am
Sex Maio 17, 2019 10:30 am
Qui Maio 16, 2019 8:14 pm
Qui Maio 16, 2019 8:10 pm
Qui Maio 16, 2019 6:46 pm
Qui Maio 16, 2019 5:31 pm
Qui Maio 16, 2019 4:08 pm
Qui Maio 16, 2019 12:14 pm
Qui Maio 16, 2019 9:30 am
Qua Maio 15, 2019 4:13 pm
Qua Maio 15, 2019 3:03 pm
Qua Maio 15, 2019 10:17 am
Qua Maio 15, 2019 12:45 am
Seg Maio 13, 2019 7:34 pm
Seg Maio 13, 2019 3:06 pm
Dom Maio 12, 2019 7:52 pm
Dom Maio 12, 2019 7:13 pm
Dom Maio 12, 2019 1:27 pm
Sab Maio 11, 2019 2:03 pm
Sab Maio 11, 2019 1:12 pm
Sab Maio 11, 2019 12:58 pm
Sab Maio 11, 2019 9:06 am
Sex Maio 10, 2019 6:46 pm
Sex Maio 10, 2019 1:34 pm
Sex Maio 10, 2019 12:39 pm
Sex Maio 10, 2019 9:47 am
Qui Maio 09, 2019 8:18 pm
Qui Maio 09, 2019 7:41 pm
Qui Maio 09, 2019 11:44 am
Qui Maio 09, 2019 10:38 am
Qua Maio 08, 2019 9:49 pm
Qua Maio 08, 2019 1:56 pm
Qua Maio 08, 2019 12:55 pm
Qua Maio 08, 2019 9:33 am
Qua Maio 08, 2019 9:23 am
Qua Maio 08, 2019 8:52 am
Qua Maio 08, 2019 7:24 am
Ter Maio 07, 2019 11:00 pm
Ter Maio 07, 2019 6:46 pm
Ter Maio 07, 2019 5:06 pm
Ter Maio 07, 2019 3:23 pm
Ter Maio 07, 2019 12:50 am
Seg Maio 06, 2019 11:58 pm
Seg Maio 06, 2019 9:27 pm
Seg Maio 06, 2019 2:06 pm
Seg Maio 06, 2019 1:52 pm
Seg Maio 06, 2019 9:43 am
Dom Maio 05, 2019 9:41 pm
Dom Maio 05, 2019 9:00 pm
Dom Maio 05, 2019 7:41 pm
Dom Maio 05, 2019 10:53 am
Sab Maio 04, 2019 4:30 pm
Sab Maio 04, 2019 1:33 pm
Sex Maio 03, 2019 8:41 pm
Sex Maio 03, 2019 4:59 pm
Sex Maio 03, 2019 4:34 pm
Sex Maio 03, 2019 3:40 pm
Sex Maio 03, 2019 4:59 am
Qui Maio 02, 2019 11:23 pm
Qui Maio 02, 2019 8:41 pm
Qui Maio 02, 2019 8:13 pm
Qui Maio 02, 2019 7:23 pm
Qui Maio 02, 2019 6:11 pm
Qui Maio 02, 2019 1:52 pm
Qua Maio 01, 2019 9:33 pm
Qua Maio 01, 2019 8:47 pm
Qua Maio 01, 2019 6:29 pm
Ter Abr 30, 2019 2:22 am
Seg Abr 29, 2019 10:16 pm
Seg Abr 29, 2019 10:12 pm
Seg Abr 29, 2019 7:56 pm
Seg Abr 29, 2019 2:46 pm
Sab Abr 27, 2019 7:20 pm
Sab Abr 27, 2019 3:38 pm
osiasbezerra
ffabim
dkrazor
gcs13
diegopds
artplayer
fabricadegame
hendrick22
NKKF
GameLACK
Patrick
Patrick
glauco
diegopds
diegopds
diegopds
diegopds
fabricadegame
diegopds
guimaraf
thales.ulisses
rafaelllsd
thales.ulisses
nando07
artplayer
Daniel Pires da Silva
Khrys
GabriG07
SuperGamer
Tegh
MarcioGSouza
igorsp3
darkrj
gabrieldeelay
glauco
lTHINGl
artplayer
numb123
williangamesbr4021
Marcelo Santos
Édipo
Callyde Jr
ronigleydson
SergioDB
loganout
loganout
MarcosSchultz
NKKF
JohnRambo
JohnRambo
lidog
diegopds
LucasRangel
darkrj
Diego Felix
dkrazor
Gabryellx007
rafaelholanda
UesleiUsl
eljkb
artplayer
kraulim
glauco
NKKF
osiasbezerra
robertodf
guimaraf
ronigleydson
osiasbezerra
deikson
numb123
Valakinhas
NKKF
osiasbezerra
BrazaTattoo
dstaroski
diegodiego01
Callyde Jr
jogador432
glauco
Tegh
Tegh
richardfalcos
BrazaTattoo
richardfalcos
Tonny3DM
NKKF
joveem
daniel123163
edvanmelo
BanaNiao
MarcosSchultz
rafaelllsd
lesgoy
MarcosSchultz
Callyde Jr
diegopds
MarcosSchultz
darkrj

[TUTORIAL] O que são métodos/funções

Ir em baixo

TUTORIAL [TUTORIAL] O que são métodos/funções

Mensagem por MayLeone em Sab Jun 02, 2018 4:22 pm

O que são métodos?
Métodos são sequências de instruções, essas instruções são definidas a partir de uma lista de comandos que poderão ser executadas em ordem, assim que o método for solicitado.
Os métodos são úteis para otimizar o seu código de forma que seu trabalho se torne dinâmico e prático, pois eles tem como função organizar seu programa em partes, separadas por blocos de tarefas.
Por exemplo, digamos que esteja programando um jogo de cartas. Esse jogo precisará de instruções para iniciar, definir os jogadores, embaralhar as cartas e distribuí-las, correto?
Ao invés de você programar todas essas instruções tudo de uma vez, o mais interessante e prático seria separar cada “função” do programa a partir de métodos, por exemplo:

[TUTORIAL] O que são métodos/funções E0VkeUC

Outra vantagem de utilizar os métodos em sua programação é a produtividade no código.
Você pode criar um método para executar uma sequência de instruções que poderão ser utilizadas em diversos momentos da sua programação, ou seja, ao invés de programar novamente aquela mesma sequência, você simplesmente a programa uma vez dentro do método, e a partir disto apenas o chama para que ele execute a lista de comandos quantas vezes forem necessárias.





Como criar métodos?
Os métodos são criados a partir de um nome antecedido por alguns atributos, por exemplo:

[TUTORIAL] O que são métodos/funções 0G1ATte

Vamos por partes, onde será explicado o que cada atributo significa:

[TUTORIAL] O que são métodos/funções D3YEEW3


  • Acesso:


A palavra “public” é o modificador de acesso do seu método, ou seja, onde seu método poderá ser chamado e acessado.
Se for public (público) este método poderá ser chamado a partir de qualquer classe externa (ou seja, que não contém este método definido).
Se for private (privado) o método só poderá ser chamado dentro da classe que ele foi criado.
Não se preocupe em pensar nisto agora, o final deste documento trará uma breve explicação e exemplo prático da diferença entre esses tipos de acesso.
O método nem sempre precisa ser definido com esta informação, você pode escrever o seu método sem as palavras reservadas de acesso, por exemplo:

[TUTORIAL] O que são métodos/funções Jquo1mg


  • Instância do método:


A palavra “static” (estático) ao ser utilizada na definição do seu método, faz com que o mesmo não necessite ser instanciado (criar uma “cópia” dele dentro de um objeto) para que ele possa ser chamado.
Normalmente definimos métodos estáticos quando estamos utilizando o console de aplicações do Visual Studio, onde não existe a necessidade de instanciamento de métodos para que sejam utilizados.
Porém, este assunto sobre instâncias será melhor abordado em aulas futuras, então não fique com receio se não compreendeu muito bem esta explicação por agora.
Esse atributo também pode ser omitido no momento da criação do método, fazendo com que o mesmo não seja estático, bastando não escrever essa palavra reservada no momento de criação do método:

[TUTORIAL] O que são métodos/funções WtqcuO6


  • Tipo de retorno:


Quando um método for criado é importante que seja definido seu tipo de retorno, ou seja, qual o tipo de objeto que ele vai retornar para seu chamador.
Os tipos de retornos podem ser definidos como as variáveis: int para inteiros, float/decimal/double para números quebrados, char ou string para textos ou caractere e também bool, que retornará um valor verdadeiro (true) ou falso (false).
O retorno de um método é como se fosse o “resultado final” do seu processo que será devolvido dentro de uma variável, por exemplo.
Não se preocupe, pois no exemplo prático sobre a utilização de métodos você entenderá melhor este conceito de “retorno”.
Sempre que definir um método que possui algum valor a ser retornado, é indispensável a utilização da palavra reservada “return” em algum momento do seu método, fazendo com que este comando retorne o valor desejado.
Às vezes um método não vai ter a necessidade de retornar um valor, então quando for este o caso, o tipo de retorno deve ser vazio (void):

[TUTORIAL] O que são métodos/funções COaYrXE


  • Nome do método:


O nome para o método é obviamente obrigatório no momento de sua criação, pois será a partir deste nome que ele será identificado pelo compilador.
A nomeação do método fica a cargo do programador, e segue as mesmas regras de “nomeação” de variáveis:
1. Não iniciar com números e caracteres especiais;
2. Não conter acentuações;
3. Não utilizar espaços nem pontos para separar suas palavras;




  • Parâmetros:


Os métodos após seu nome devem sempre possuir os parênteses “()” para que funcionem corretamente.
Dentro desses parênteses devem conter os parâmetros do seu método, que nada mais são que as informações que serão passadas para o método, indicando com o que ele vai trabalhar.
Os parâmetros devem ter um tipo (assim como os tipos de retornos) e devem ser separados por vírgulas caso forem mais de um:

[TUTORIAL] O que são métodos/funções Buf9IAz

Nem sempre o método precisa possuir parâmetros, nesse caso os parênteses devem estar vazios:

[TUTORIAL] O que são métodos/funções WSKYIns

Como já dito neste documento, os métodos não são nada mais que uma sequência de instruções (blocagem de códigos), portanto devem iniciar com uma chave aberta “{“ e terminar com a chave fechada “}”, assim como fazemos com as estruturas condicionais e de repetições.





Utilizando Métodos:
Agora vamos utilizar todos os conceitos apresentados acima com alguns exemplos da aplicação dos métodos e o seu uso na programação.
Vamos abrir o console de aplicação do Visual Studio para que possamos trabalhar com nossos códigos.
O primeiro exemplo seria criar uma calculadora bem simples que apenas calcula com duas variáveis. Essa calculadora vai solicitar o valor das variáveis e qual operação será realizada.
Você poderia criar este programa sem o uso dos métodos, porém se desejasse calcular mais de duas variáveis distintas iria ter de realizar o processo de cálculo novamente, porém com o método você só o programa uma vez e o reutiliza para outras variáveis:
Dentro do método Main crie as duas varáveis que serão calculadas:




Código:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
float var1 = 0, var2 = 0;
}
}
}

Agora vamos criar nosso método fora do método Main (não se cria métodos dentro de outros métodos).
Como estamos no console de aplicações, o método deve ser estático.
Ele não vai nos retornar valor algum e seus parâmetros devem ser do tipo float (assim como as variáveis que criamos) para que o método realize as operações com elas:



Código:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
float var1 = 0, var2 = 0;
}
static void Calculadora(float numero1, float numero2)
{
}
}
}

Agora devemos cobrar do usuário os valores a serem calculados e a operação matemática a ser realizada. Faremos isto dentro do método através dos consoles de entrada e saída de dados (ReadLine e WriteLine):




Código:
using System;[size=10][/size]
using System.Collections.Generic;[size=10][/size]
using System.Linq;[size=10][/size]
using System.Text;[size=10][/size]
namespace ConsoleApplication1[size=10][/size]
{[size=10][/size]
class Program[size=10][/size]
{[size=10][/size]
static void Main(string[] args)[size=10][/size]
{[size=10][/size]
float var1 = 0, var2 = 0;[size=10][/size]
}[size=10][/size]
static void Calculadora(float numero1, float numero2)[size=10][/size]
{[size=10][/size]
string operacao = "";[size=10][/size]
float resultado = 0;[size=10][/size]
Console.WriteLine("Informe o primeiro valor");[size=10][/size]
numero1 = float.Parse(Console.ReadLine());[size=10][/size]
Console.WriteLine("Informe a operação matemática a ser realizada");[size=10][/size]
operacao = Console.ReadLine();[size=10][/size]
Console.WriteLine("Informe o segundo valor");[size=10][/size]
numero2 = float.Parse(Console.ReadLine());[size=10][/size]
}[size=10][/size]
}[size=10][/size]
}

Podemos criar uma estrutura condicional para verificar qual operação foi solicitada, e dentro dela executar as operações de soma, subtração, multiplicação e divisão.
Também podemos exibir no final do método o resultado da operação, finalizando seu bloco:




Código:
using System;[size=10][/size]
using System.Collections.Generic;[size=10][/size]
using System.Linq;[size=10][/size]
using System.Text;[size=10][/size]
namespace ConsoleApplication1[size=10][/size]
{[size=10][/size]
class Program[size=10][/size]
{[size=10][/size]
static void Main(string[] args)[size=10][/size]
{[size=10][/size]
float var1 = 0, var2 = 0;[size=10][/size]
}[size=10][/size]
static void Calculadora(float numero1, float numero2)[size=10][/size]
{[size=10][/size]
string operacao = "";[size=10][/size]
float resultado = 0;[size=10][/size]
Console.WriteLine("Informe o primeiro valor");[size=10][/size]
numero1 = float.Parse(Console.ReadLine());[size=10][/size]
Console.WriteLine("Informe a operação matemática a ser realizada");[size=10][/size]
operacao = Console.ReadLine();[size=10][/size]
Console.WriteLine("Informe o segundo valor");[size=10][/size]
numero2 = float.Parse(Console.ReadLine());[size=10][/size]
switch (operacao)[size=10][/size]
{[size=10][/size]
case "+":[size=10][/size]
resultado = numero1 + numero2;[size=10][/size]
break;[size=10][/size]
case "-":[size=10][/size]
resultado = numero1 - numero2;[size=10][/size]
break;[size=10][/size]
case "*":[size=10][/size]
resultado = numero1 * numero2;[size=10][/size]
break;[size=10][/size]
case "/":[size=10][/size]
if (numero2 != 0){resultado = numero1 / numero2;}[size=10][/size]
else { Console.WriteLine("Não é possível dividir por zero!"); }[size=10][/size]
break;[size=10][/size]
default:[size=10][/size]
Console.WriteLine("ERRO: Não foi informado um operador");[size=10][/size]
Console.ReadLine();[size=10][/size]
Console.Clear();[size=10][/size]
return;[size=10][/size]
}[size=10][/size]
Console.WriteLine("{0} {1} {2} = {3}", numero1, operacao, numero2, resultado);[size=10][/size]
Console.ReadKey();[size=10][/size]
}[size=10][/size]
}[size=10][/size]
}

Apesar de nosso método estar feito, ele não será executado sozinho. Para que ele possa iniciar seus comandos e suas instruções ele deve ser chamado.
Para chamar seu método, basta escrever seu nome e passar os argumentos a ele que devem estar entre os parênteses após o seu nome.
Como vamos calcular as variáveis “var1” e var2” elas serão nossos argumentos na chamada do método:

[TUTORIAL] O que são métodos/funções Jb0XBso

Ao rodar o debug do seu código, você terá algo mais ou menos dessa forma:

[TUTORIAL] O que são métodos/funções LthWdZv

Perceba que ao chamar o método “Calculadora”, você o executa e tudo o que está dentro de sua blocagem de códigos será executada na sequência em que foi programada.
Note também que você utilizou as variáveis “var1” e “var2” como argumentos de chamada do método.
Quando você define os argumentos, eles automaticamente são substituídos pelos parâmetros do seu método, que seriam “numero1” e “numero2”.

Se for perceber, no método são utilizadas estas variáveis para realizar os cálculos, veja nesta linha do código:
[TUTORIAL] O que são métodos/funções OkbnX8q

Isso significa que não importa quais variáveis você queira calcular, sempre que você chamar o método, o que será calculado serão as variáveis passadas como argumentos, o que nos possibilita utilizar esse método mais de uma vez para várias variáveis diferentes, evitando que você repita o código para executar o mesmo procedimento.
Experimente criar duas novas variáveis do tipo flutuante, passando-as como argumentos ao chamar novamente o método “Calculadora”:




Código:
static void Main(string[] args)[size=10][/size]
{[size=10][/size]
float var1 = 0, var2 = 0, var3 = 0, var4 = 0;[size=10][/size]
Calculadora(var1, var2);[size=10][/size]
Calculadora(var3, var4);[size=10][/size]
}

Veja que ao rodar o debug você poderá utilizar a calculadora duas vezes, com quatro variáveis diferentes, sem ter tido que reprogramar essa calculadora para as novas variáveis:

[TUTORIAL] O que são métodos/funções PGQnpau

Outra coisa que vale a pena notar em nosso código é a condição “default”, onde se o usuário não entrar com algum operador matemático válido, essa linha de código será executada:

[TUTORIAL] O que são métodos/funções H6ZbODT

Uma mensagem de erro será exibida no console de execução, e quando o usuário pressionar a tecla ‘enter’ a tela vai ser limpa através do método Console.Clear();
Veja também que utilizamos o “return” para sair de dentro do método.
Como nosso método não retorna valores (possui retorno vazio [void]), podemos utilizar o return para sair do método assim que ele for chamado, dessa forma, se o usuário não informar o operador matemático, a exibição do resultado da operação não será executada, pois o return foi chamado antes disso, evitando algum tipo de bug, não exibindo nenhum valor de cálculo.

Acho que já conseguiu perceber uma das vantagens de se utilizar métodos em seus programas, não? Pois como vimos aqui, podemos reaproveitar todas as instruções da nossa calculadora a qualquer momento do código em que o método for solicitado, e com diversas variáveis diferentes, apenas bastando passa-las em seu argumento de chamada. Simples, não é verdade?



Métodos com retornos:
Logo acima nós vimos como trabalhar com métodos que não retornam valores e são criados como “void”.
Agora vou mostrar uma aplicação simples de como podemos utilizar um método que retorna algum valor.
Como exemplo, vamos criar um programa que procure pelo maior valor inserido numa array de vetor.
Supondo que por algum motivo em nossa programação nós vamos precisar utilizar esse elemento para alguma validação no código.

Se o método que procura pelo maior elemento no vetor não tivesse um retorno, ele apenas iria processar essa função para nós, mas não poderíamos utilizar esse elemento porque ele estaria apenas dentro do método.
Para que possamos manipular o elemento que foi encontrado dentro do nosso método, sem termos que fazer isso no próprio método, mas sim em qualquer local de nosso código, nós devemos retorná-lo após o método encerrar sua execução, assim podemos utilizá-lo em aplicações futuras em nosso programa.
Vamos então criar uma array de inteiros dentro do nosso método Main, para que ela seja usada como argumento.
Você também pode utilizar o console de saída para que o usuário possa definir o tamanho desse vetor.

Crie nosso método como estático, com tipo de retorno de inteiros (pois ele vai retornar o maior elemento do vetor, que será um inteiro). Passe também o parâmetro que seria o vetor que vai ser verificado:





Código:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Qual será o tamanho do vetor?");
int tamanho = int.Parse(Console.ReadLine());
int[] ConjuntoDeNumeros = new int[tamanho];
}
static int MaiorValor(int[] vetor)
{
}
}
}


Não se preocupe se o tracejado vermelho permanecer abaixo do nome do seu método, ele vai desaparecer assim que você utilizar o “return” no código.
Agora dentro do método vamos utilizar os consoles de entrada e saída de dados para armazenarmos valores dentro dos índices desse vetor, utilizando um laço para que o diálogo seja programado apenas uma vez.

Para que possamos verificar qual o maior elemento inserido neste vetor, precisamos criar um novo laço que cheque cada índice do vetor.
Dentro desse laço criamos uma condição que verifica se o elemento do índice do vetor que está atualmente no contador é maior que o elemento guardado dentro de uma variável que criamos no início do método, a variável “ValorEncontrado”. Se o elemento dentro do índice do vetor for maior que o valor de “ValorEncontrado” essa variável passa a receber o valor do elemento do vetor, caso não, o laço apenas faz um incremento no índice deste vetor.
Após o laço percorrer todas as posições do vetor, o maior valor dentro dele vai ter sido encontrado, então podemos retorná-lo do método através do comando “return”:




Código:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Qual será o tamanho do vetor?");
int tamanho = int.Parse(Console.ReadLine());
int[] ConjuntoDeNumeros = new int[tamanho];
}
static int MaiorValor(int[] vetor)
{
int ValorEncontrado = 0;
for (int loop = 0; loop < vetor.Length; loop++)
{
Console.WriteLine(”Adicione um inteiro no vetor”);
vetor[loop] = int.Parse(Console.ReadLine());
}
for (int i = 0; i < vetor.Length; i++)
{
if (i == 0) { ValorEncontrado = vetor[0]; }
if (vetor[i] > ValorEncontrado)
{
ValorEncontrado = vetor[i];
}
}
return ValorEncontrado;
}
}
}


Agora que terminamos de programar a lógica de nosso método, podemos chama-lo através do método Main.
Já que temos um valor a ser retornado deste método, podemos armazená-lo numa variável no momento de sua chamada, dessa forma essa variável passará a armazenar o valor retornado de nosso método, e assim poderá ser utilizada em algum momento em nosso código.
Para testar a eficiência do nosso método, podemos utilizar o console de saída para exibirmos o maior elemento encontrado em nosso vetor:




Código:
static void Main(string[] args)[size=10][/size]
{[size=10][/size]
Console.WriteLine("Qual será o tamanho do vetor?");[size=10][/size]
int tamanho = int.Parse(Console.ReadLine());[size=10][/size]
int[] ConjuntoDeNumeros = new int[tamanho];[size=10][/size]
int ValorRetornado = MaiorValor(ConjuntoDeNumeros);[size=10][/size]
Console.WriteLine("O maior elemento encontrado neste vetor é: {0}", ValorRetornado);[size=10][/size]
Console.ReadKey();[size=10][/size]
}



Debugue o código, escolha um tamanho qualquer para seu vetor, adicione valores dentro dele e obtenha o resultado do maior valor inserido a ele:

[TUTORIAL] O que são métodos/funções 7IbaElO

Veja que podemos utilizar esse método para quantos vetores quisermos analisar, sendo assim, crie um novo vetor com tamanho qualquer (eu criei com tamanho 3 para exemplificar).

Note que eu posso chamar o mesmo método para dois vetores distintos, apenas passando seus argumentos:




Código:
Console.WriteLine("Qual será o tamanho do vetor?");[size=10][/size]
int tamanho = int.Parse(Console.ReadLine());[size=10][/size]
int[] ConjuntoDeNumeros = new int[tamanho];[size=10][/size]
int[] OutroConjunto = new int[3];[size=10][/size]
int ValorRetornado = MaiorValor(ConjuntoDeNumeros);[size=10][/size]
Console.WriteLine("\n Trabalhando com outro vetor de tamanho 3 \n");[size=10][/size]
int OutroValorRetornado = MaiorValor(OutroConjunto);

Agora veja a utilidade de um retorno do método: Eu posso armazenar na variável do chamador do método o maior elemento encontrado neste vetor e com ele fazer comparações:




Código:
if (ValorRetornado > OutroValorRetornado)
{
Console.WriteLine("O elemento {0} do vetor 1 é maior que o elemento {1} do vetor 2", ValorRetornado, OutroValorRetornado);
}
else if (ValorRetornado < OutroValorRetornado)
{
Console.WriteLine("O elemento {1} do vetor 2 é maior que o elemento {0} do vetor 1", ValorRetornado, OutroValorRetornado);
}
else
{
Console.WriteLine("O elemento {0} do vetor 1 é igual o elemento do vetor 2", ValorRetornado);
}
Console.ReadKey();
}


Debugue mais uma vez este programa e veja o resultado. Ele vai comparar qual dos maiores elementos dos vetores é maior entre eles:

[TUTORIAL] O que são métodos/funções MVU6PVF

Por fim, você quem vai decidir de acordo com a sua necessidade se o método terá retorno, parâmetros e se será estático ou não.



Modificador de acesso do Método:
E como prometido, vou passar uma breve explicação das diferenças entre os acessos dos métodos em suas classes.
Veja um exemplo rápido de acessibilidade de um método:
No código abaixo temos duas classes definidas, uma delas contém o método “Exemplo” criado como public.





Código:
using System;[size=10][/size]
using System.Collections.Generic;[size=10][/size]
using System.Linq;[size=10][/size]
using System.Text;[size=10][/size]
namespace ConsoleApplication1[size=10][/size]
{[size=10][/size]
class Program // Classe program[size=10][/size]
{[size=10][/size]
static void Main(string[] args)[size=10][/size]
{[size=10][/size]
Teste.Exemplo(); /* Chamada do método sem nenhum tipo de erro, mesmo ele estando em outra classe diferente.[size=10][/size]
* Veja que para chamar o método de outra classe eu apenas preciso informar a classe que ele está inserido e chamar por seu nome.[size=10][/size]
* Como o método é estático, não preciso criar uma instância dele para sua chamada! */[size=10][/size]
}[size=10][/size]
}[size=10][/size]
class Teste // Nova classe criada, externa à classe 'Program'[size=10][/size]
{[size=10][/size]
public static void Exemplo() // Método público[size=10][/size]
{[size=10][/size]
// Instruções do método aqui[size=10][/size]
}[size=10][/size]
}
}



Agora vejamos o que acontece se eu trocar o modificador de acesso desse método de “public” para “private”:

[TUTORIAL] O que são métodos/funções W0CDnVq

Note que agora vemos um tracejado vermelho quando chamamos pelo método privado fora da classe de onde ele foi criado.
Perceba que o erro diz algo como “Teste.Exemplo() é inacessível por conta de seu nível de proteção”, ou seja, ele não pode ser chamado nessa classe porque ele é privado, só poderá ser chamado na classe em que foi criado.
Existem outros tipos de modificadores de acesso de um método, mas com certeza os principais são o “public” e “private”, porém no decorrer das aulas nós veremos os outros tipos e também saberemos para o que cada um é utilizado.


Final da aula sobre métodos:
Download PDF deste documento aqui.

Aula em vídeo:



MayLeone
MayLeone
ProgramadorMaster

Feminino PONTOS : 913
REPUTAÇÃO : 244
Áreas de atuação : Unity, C++/C#, HTML, CSS, JS, jQuery, PHP, MySQL, XML, Blender
Respeito as regras : [TUTORIAL] O que são métodos/funções Aad8pUi

Ver perfil do usuário http://compilemosfacil.blogspot.com.br

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] O que são métodos/funções

Mensagem por NKKF em Sab Jun 02, 2018 4:51 pm

AAAAAAARGH, É TÃO GRANDE QUE EU LEIO APENAS O TÍTULO.
NKKF
NKKF
ProgramadorMaster

Masculino PONTOS : 2419
REPUTAÇÃO : 462
Idade : 14
Áreas de atuação : Error 404 Not Found.
Respeito as regras : [TUTORIAL] O que são métodos/funções Aad8pUi

Ver perfil do usuário http://www.projetounity.esy.es

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] O que são métodos/funções

Mensagem por BRGC em Sab Jun 02, 2018 4:53 pm

MDS, O CARA DEMOROU 2 DIAS PRA FAZER ISSO KKKK

Mas vai ser util alguma hora...
BRGC
BRGC
Programador

Masculino PONTOS : 998
REPUTAÇÃO : 44
Idade : 14
Áreas de atuação : C# intermediário.
Respeito as regras : [TUTORIAL] O que são métodos/funções WvDYdlf

Ver perfil do usuário

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] O que são métodos/funções

Mensagem por MayLeone em Sab Jun 02, 2018 5:17 pm

@BRGC escreveu:MDS, O CARA DEMOROU 2 DIAS PRA FAZER ISSO KKKK

Mas vai ser util alguma hora...
Que cara?
MayLeone
MayLeone
ProgramadorMaster

Feminino PONTOS : 913
REPUTAÇÃO : 244
Áreas de atuação : Unity, C++/C#, HTML, CSS, JS, jQuery, PHP, MySQL, XML, Blender
Respeito as regras : [TUTORIAL] O que são métodos/funções Aad8pUi

Ver perfil do usuário http://compilemosfacil.blogspot.com.br

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] O que são métodos/funções

Mensagem por PauloFR em Sab Jun 02, 2018 5:20 pm

@MayLeone escreveu:
@BRGC escreveu:MDS, O CARA DEMOROU 2 DIAS PRA FAZER ISSO KKKK

Mas vai ser util alguma hora...
Que cara?
Se você ler MayLeone e não prestar atenção no perfil, você assemelha o nome com uma pessoa do sexo masculino. por isso ele disse cara(é oque acredito ser)
PauloFR
PauloFR
Instrutor

Masculino PONTOS : 2067
REPUTAÇÃO : 365
Idade : 16
Áreas de atuação : Oque será uma área de atuação, se não um modo de manter-nos presos ao sistema

Respeito as regras : [TUTORIAL] O que são métodos/funções Aad8pUi

Ver perfil do usuário http://www.schultzgames.com/u8329

Voltar ao Topo Ir em baixo

TUTORIAL Re: [TUTORIAL] O que são métodos/funções

Mensagem por NKKF em Sab Jun 02, 2018 7:01 pm

Kkkkkkk, mas acho que não, foi apenas uma confusão.
NKKF
NKKF
ProgramadorMaster

Masculino PONTOS : 2419
REPUTAÇÃO : 462
Idade : 14
Áreas de atuação : Error 404 Not Found.
Respeito as regras : [TUTORIAL] O que são métodos/funções Aad8pUi

Ver perfil do usuário http://www.projetounity.esy.es

Voltar ao Topo Ir em baixo

Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum