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:
Acrescentei algumas linhas em um Script feito pelo nosso M.Schultz, funcionou +ou-...
tem como excluir uma( ou várias ) contas do fórum?
[DÚVIDA] TIRANOSSAURO REX no UNITY?
Jumper boy
Duvida com animação
[TUTORIAL] Criar jogo Colors/Genius com C#
Utilizar o mesmo botão para duas ações. (if e else)
[____ADMINISTRAÇÃO____] PRECISO DE AJUDA [DICA PARA SER AJUDADO]
[____APOIE O FÓRUM E O CANAL E GANHE RECOMPENSAS____]
Ajuda com AI Inimigo.
[Script] Mudar a orientação em runtime
Como mover dois objetos juntos.
[TUTORIAL] Third Person Shooter
[PEDIDOS DE TUTORIAIS]
Google Play Games
Como fazer um jogo nesse estilo?
Como apagar Proceduram material da pista, quando for recarregar a cena?
PROBLEMA NULL REFERENCE EXCEPTION
Calculo de previsão de coordenada
[____TÓPICO LIVRE____] FALE O QUE QUISER (Parte 2)
Unity - Rodar 2 cenas ao mesmo tempo
Sons na Unity 2017
| AJUDA DISCORD | Descubra aqui como fazer para o link do seu servidor nunca expirar.
Servidores sem limite por usuário.
Trigger detectando apenas o character controller
seguir 2 objetos com a mesma tag
Zezin Na Copa da Russia Realidade Aumentada
[PROJETO MOBILE] Defeat the Illuminatis
DISCORD
Novo jogo - Astero - PlayStore
Variável receber valor de uma array
erro no script
[RESOLVIDO] Bug de wallpaper preto no windows.
[TUTORIAL] Movimento de camera em primeira pessoa e sons de passos ou HeadBob
Tomar dano do inimigo e causar dano no mesmo
[RESOLVIDO] Texto se encaixar dentro de uma imagem.
[Projeto] Line Battle
Jogo Maria Bella
Spawner de Inimigo n preenche todas as posições
[TUTORIAL] AI Enemy ( Jogos de terror )
Como corrigir o box collider do unity?
SPAWN Baseado na Posição (UNITY)
[RESOLVIDO] Problema em um script
Unity - executável não roda banco de dados
Como criar um sistema de Ranking simples.
Animação Humanoid
Blender - Erro ao aplicar influência automática nos ossos de personagem
Objetos duplicados ao instanciar
Duvida com collider
[RESOLVIDO] Problemas com API
Pegar e Jogar armas no chão (estilo CS 1.6)
[RESOLVIDO] Projeteis Online
[TUTORIAL] Zone Wall - ESTILO BATTLE ROYALE
| DÚVIDA | - Como aprender C#?
Como criar um ranking online na Unity usando a PlayFab e o Facebook?
Dúvida sobre método de acesso as variáveis
checkpoint
Como faço para otimizar meu projeto da Unity 3D?
[RESOLVIDO] Alguém me explica isso? (Animator script)
[RESOLVIDO] Duvida com GameManager
duvidas com marcas reais em jogos
Objeto na UI
Minimap/Radar/GPS Estilo GTA V
Problemas com a câmera
PROBLEMAS COM O NAVIGATION
[TUTORIAL] Serialização - JSON
Textura de luzes rosa
Banco de dados android
Girar arma
Qual o melhor meio de iluminar essa scene?
[Jogo] Flap OCO (Android & PC)
[TUTORIAL] Android - Sistema de controle third person shooter, Joystick + Swipe camera
ANIMAÇÃO INIMIGO AI
[RESOLVIDO] Menu Pause Dúvida
Unity 5: Object reference not set to an instance of an object
Como saber se o controle foi conectado?
[ENQUETE OFICIAL] Você está vendo o CHAT DO FÓRUM?????
Onde posso aprender a fazer uma IA estilo a do jogo de tabuleiro Zombicide?
[RESOLVIDO] Erro -> Android SDK is missing required API level 23
Sprites com mesmas cores.
[Formação de Equipe] Battles of Worlds
Como fazer para sair do jogo apertando uma tecla?
VAGA MODELADOR
[Em Desenvolvimento] Battles of Worlds
[RESOLVIDO]Colocar dois fundos diferentes em um mesmo canvas dependendo do menu carregado.
[TUTORIAL] 42 ÓTIMAS DICAS DE OTIMIZAÇÃO PARA JOGOS MOBILE (Android)
[____REGRAS DO FÓRUM____]
SetPartner
Como eu posso criar uma rede social semelhante ao NEAKI?
Como colocar dois backgrounds diferentes para dois canvas diferentes?
Botões Android
[TUTORIAL] MENU PRINCIPAL - UNITY 5 (5.3 ou superior) (Com UI)
problema com Script
Efeitos de particulas
Duvidas/ideias sobre o forum
[RESOLVIDO] Camera e posição do sprite animator
VAGA EM EQUIPE PARA APREDIZAGEM
Como criar sombra em objeto transparente?
Modificação de scripts em cenas diferentes
Hoje à(s) 7:15 am
Hoje à(s) 12:32 am
Ontem à(s) 11:37 pm
Ontem à(s) 10:51 pm
Ontem à(s) 9:46 pm
Ontem à(s) 7:35 pm
Ontem à(s) 7:29 pm
Ontem à(s) 6:46 pm
Ontem à(s) 6:45 pm
Ontem à(s) 6:43 pm
Ontem à(s) 6:38 pm
Ontem à(s) 4:36 pm
Ontem à(s) 3:42 pm
Ontem à(s) 3:33 pm
Ontem à(s) 1:26 pm
Ontem à(s) 1:10 pm
Ontem à(s) 7:23 am
Dom Jun 17, 2018 11:54 pm
Dom Jun 17, 2018 11:50 pm
Dom Jun 17, 2018 9:44 pm
Dom Jun 17, 2018 8:49 pm
Dom Jun 17, 2018 6:23 pm
Dom Jun 17, 2018 5:21 pm
Dom Jun 17, 2018 4:40 pm
Dom Jun 17, 2018 2:37 pm
Dom Jun 17, 2018 12:48 pm
Dom Jun 17, 2018 11:34 am
Dom Jun 17, 2018 11:20 am
Sab Jun 16, 2018 10:40 pm
Sab Jun 16, 2018 9:43 pm
Sab Jun 16, 2018 9:28 pm
Sab Jun 16, 2018 8:48 pm
Sab Jun 16, 2018 5:13 pm
Sab Jun 16, 2018 5:05 pm
Sab Jun 16, 2018 4:51 pm
Sab Jun 16, 2018 4:33 pm
Sab Jun 16, 2018 4:14 pm
Sab Jun 16, 2018 3:39 pm
Sab Jun 16, 2018 1:48 pm
Sex Jun 15, 2018 10:15 pm
Sex Jun 15, 2018 8:31 pm
Sex Jun 15, 2018 8:24 pm
Sex Jun 15, 2018 8:02 pm
Sex Jun 15, 2018 5:08 pm
Sex Jun 15, 2018 2:46 pm
Sex Jun 15, 2018 12:08 pm
Sex Jun 15, 2018 10:46 am
Qui Jun 14, 2018 6:41 pm
Qui Jun 14, 2018 4:25 pm
Qui Jun 14, 2018 2:34 pm
Qui Jun 14, 2018 6:19 am
Qua Jun 13, 2018 10:08 pm
Qua Jun 13, 2018 9:59 pm
Qua Jun 13, 2018 6:48 pm
Qua Jun 13, 2018 3:16 pm
Qua Jun 13, 2018 3:11 pm
Qua Jun 13, 2018 9:12 am
Qua Jun 13, 2018 6:25 am
Qua Jun 13, 2018 1:00 am
Qua Jun 13, 2018 12:40 am
Ter Jun 12, 2018 11:08 pm
Ter Jun 12, 2018 8:00 pm
Ter Jun 12, 2018 5:17 pm
Ter Jun 12, 2018 2:25 pm
Ter Jun 12, 2018 9:00 am
Seg Jun 11, 2018 11:57 pm
Seg Jun 11, 2018 7:17 pm
Seg Jun 11, 2018 2:51 pm
Seg Jun 11, 2018 2:42 pm
Seg Jun 11, 2018 10:18 am
Seg Jun 11, 2018 10:05 am
Dom Jun 10, 2018 10:52 pm
Dom Jun 10, 2018 7:18 pm
Dom Jun 10, 2018 6:29 pm
Dom Jun 10, 2018 6:23 pm
Dom Jun 10, 2018 3:53 pm
Dom Jun 10, 2018 12:32 pm
Dom Jun 10, 2018 9:32 am
Sab Jun 09, 2018 5:36 pm
Sab Jun 09, 2018 5:14 pm
Sab Jun 09, 2018 5:09 pm
Sab Jun 09, 2018 11:44 am
Sab Jun 09, 2018 10:49 am
Sab Jun 09, 2018 8:27 am
Sex Jun 08, 2018 4:23 pm
Sex Jun 08, 2018 3:35 pm
Sex Jun 08, 2018 3:22 pm
Sex Jun 08, 2018 8:24 am
Sex Jun 08, 2018 1:02 am
Qui Jun 07, 2018 11:48 pm
Qui Jun 07, 2018 9:09 pm
Qui Jun 07, 2018 8:56 pm
Qui Jun 07, 2018 8:47 pm
Qui Jun 07, 2018 5:24 pm
Qua Jun 06, 2018 11:22 pm
Qua Jun 06, 2018 7:49 pm
Qua Jun 06, 2018 4:33 pm
Qua Jun 06, 2018 3:32 pm
Qua Jun 06, 2018 8:51 am
richardfalcos
Zack2
gcs13
SuperGamer
Zack2
NKKF
DevTerror
dstaroski
dstaroski
dstaroski
dstaroski
Dom3000
Phph09
Zack2
NKKF
Callyde Jr
guimaraf
fecirineu
fecirineu
FelipeSouza11
ismarspn
thancor
SuperGamer
MRX
MRX
NKKF
natanael.olimpio
dstaroski
Carlos Mesquita
Édipo
Flávio
dstaroski
M4theuz
dstaroski
kenau
NKKF
MRX
foxtenn
NKKF
BrazaTattoo
lesgoy
dstaroski
Dom3000
Midoriiiiii
BRGC
Dom3000
Dom3000
Dom3000
Zack2
yVIEIRA
Phph09
fecirineu
IanLuan
IanLuan
natanael.olimpio
guimaraf
NyeTiSS
francisco barroso
MRX
Zack2
dstaroski
MRX
Duarte
NKKF
dstaroski
igorobm
JonathanDiego
mafipt
Zack2
fecirineu
Dom3000
francisco barroso
bertarele
Magnatah
ZeroTuhnder
FelipeSouza11
francisco barroso
YmKx
francisco barroso
NKKF
Dom3000
Isabela
Dom3000
Dom3000
kenau
FelipeSouza11
FelipeSouza11
NyeTiSS
Callyde Jr
FelipeSouza11
dstaroski
kenau
kenau
Phph09
Zack2
NKKF
Carlos Mesquita
lesgoy
fecirineu

[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:



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:



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



  • 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:



  • 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:



  • 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):



  • 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:



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



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:



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



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:


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:



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:



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:



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:



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”:



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:



avatar
MayLeone
ProgramadorMaster

Feminino Posts : 77
Pontos : 217
Reputação : 83
Registro : 18/05/2018
Áreas de atuação : Unity, Rpg Maker, Scratch, C#, PHP, HTML, CSS, JS, MYSQL, Blender
Respeito as regras :

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.
avatar
NKKF
ProgramadorMaster

Masculino Posts : 997
Pontos : 1573
Reputação : 324
Registro : 24/01/2018
Idade : 13
Áreas de atuação : Não uso foto de perfil porque não tenho autoestima suficiente.
Respeito as regras :

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...
avatar
BRGC
Programador

Masculino Posts : 183
Pontos : 648
Reputação : 42
Registro : 10/08/2017
Idade : 13
Áreas de atuação : C# intermediário.
Respeito as regras :

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?
avatar
MayLeone
ProgramadorMaster

Feminino Posts : 77
Pontos : 217
Reputação : 83
Registro : 18/05/2018
Áreas de atuação : Unity, Rpg Maker, Scratch, C#, PHP, HTML, CSS, JS, MYSQL, Blender
Respeito as regras :

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)
avatar
PauloFR
Instrutor

Masculino Posts : 779
Pontos : 1716
Reputação : 348
Registro : 25/01/2017
Idade : 15
Áreas de atuação : Oque será uma área de atuação, senão um modo de manter-nos presos ao sistema

Respeito as regras :

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.
avatar
NKKF
ProgramadorMaster

Masculino Posts : 997
Pontos : 1573
Reputação : 324
Registro : 24/01/2018
Idade : 13
Áreas de atuação : Não uso foto de perfil porque não tenho autoestima suficiente.
Respeito as regras :

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

Voltar ao Topo Ir em baixo

Voltar ao Topo


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