[TUTORIAL] Primeiro programa "complexo" em C# para iniciantes
SchultzGames :: UNITY 3D :: C# .NET
Página 1 de 1
[TUTORIAL] Primeiro programa "complexo" em C# para iniciantes
Existem milhares de tópicos iguais esse na internet, entretanto estou a criar mais um :-)
A intenção é que sirva como uma especie indíce prático, para que você entenda os comandos básicos do C# e linguagens parecidas.
Você pode compilar os códigos pelo Visual Studio, ou qualquer outro programa/compilador.
Note que você precisa entender os conceitos da linguagem, esse é um exemplo prático do uso, também há explicação do que é feito, entretanto é de forma vaga.
Continua abaixo
A intenção é que sirva como uma especie indíce prático, para que você entenda os comandos básicos do C# e linguagens parecidas.
Você pode compilar os códigos pelo Visual Studio, ou qualquer outro programa/compilador.
Note que você precisa entender os conceitos da linguagem, esse é um exemplo prático do uso, também há explicação do que é feito, entretanto é de forma vaga.
- Explicando o Hello World:
O C# funciona a partir de bibliotecas, utilizaremos a biblioteca mais básica que ele nos oferece para isso digitaremos o código abaixo:- Código:
using System;
Agora iremos declarar o primeiro namespace, numa analogia imagine uma estante de livros organizada nomes, vários deles escreveram livros com nomes iguais, para conseguirmos saber qual livro é, precisaremos do nome do autor, portanto o namespace é como se fosse o autor.- Código:
using System;
namespace Calculadora {}
Depois de declarado o namespace, iremos iniciar o programa, declarando a classe como Programa e chamando a função Main.- Código:
using System; // Biblioteca utilizada
namespace Calculadora // Namespace utilizado
{
class Programa // Classe
{
// Essa será sempre a primeira função chamada, é a mesma coisa que a void Start() no Unity.
static void Main()
{
Console.WriteLine("Hello World!");// Escreve no console
}
}
}
Novamente fazendo uma analogia, "Programa" seria o primeiro capitulo do livro do autor, e "Main" seria o primeiro paragráfo, para termos um texto inserimos
o writeline, como se fosse a primeira linha.
Continua abaixo
Re: [TUTORIAL] Primeiro programa "complexo" em C# para iniciantes
- Criando uma calculadora de equacoes fisicas:
Agora que você entende completamente como o Hello World funciona, seguiremos fazendo um exemplo prático de uso de entrada e saida de texto, funções, for, while e if.
Faremos uma calculadora que conseguirá calcular Peso ou a variação do espaço numa velocidade constante.
Na física sabemos que
P = m * g; Peso é igual a massa vezes gravidade;
S = S0 + v * t; S é o espaço, S0 espaço inicial, v velocidade, t tempo;
Nomearemos o namespace como calculadora- Código:
using System;
namespace Calculadora
{
class Programa
{
static void Main()
{
}
}
}
Primeiro criaremos a interface inicial do usuario.- Código:
using System;
namespace Calculadora
{
class Programa
{
static string mss = " "; // mss vai ser a massa da primeira saida, voltaremos pra declarar mais variaveis.
static void Main()
{
Console.WriteLine("Bem vindo a Calculadora Fisica");
Console.WriteLine("Digite se você quer calcular o Peso(A) ou a variação do espaço(B)");
string tipo = Console.ReadLine();
if(tipo == "a" || tipo == "A") // Usamos o operador "||" como se fosse "Ou" (OR de outras linguagens)
{
//algo acontece
}
if(tipo == "b" || tipo == "B") // Se o tipo for igual a "b" ou "B"
{
//algo acontece
}
}
}
}
Agora iremos precisar fazer que o programa funcione, para isso iremos declarar uma classe chamada Fisica, que conterá as equações citadas no começo do tópico, fiz uma diagrama de blocos para esclarecer melhor o que faremos a seguir: https://prnt.sc/1c70z34
Programa é a nossa classe interface e entrada.
Fisica será nossa classe de manipulação e saida.- Código:
// Omissão do resto do código para melhor leitura, Escrava depois da fechadura da classe Programa
class Fisica
{
public void Peso(float m) // void é uma função sem retorno
{
// Const declara uma constante, não pode ser setada novamente após o inicio da mesma.
const float GRAVIDADE = 9.8f;
Console.WriteLine(m * GRAVIDADE);
}
}
Agora temos a função do Peso, entretanto não fizemos a conexão para o Programa, para isso iremos voltar ao código e escrever:- Código:
class Programa
{
static string mss = " "; // Massa
static void Main()
{
Fisica equacoes = new Fisica(); // Declaramos uma classe Fisica chamada equacoes, e instanciamos a mesma.
Console.WriteLine("Bem vindo a Calculadora Fisica");
Console.WriteLine("Digite se você quer calcular o Peso(A) ou a variação do espaço(B)");
string tipo = Console.ReadLine();
if(tipo == "a" || tipo == "A") // Usamos o operador "||" como se fosse "Ou" (OR de outras linguagens)
{
Console.WriteLine("Digite a massa do objeto:");
mss = Console.ReadLine();
int massa = Convert.ToInt32(mss); // Conversão do input
equacoes.Peso(massa); // Chama nossa função da equação de peso
}
}
}
Até aqui metade do código deveria estar funcionando corretamente, compile e veja se isso ocorre. Use estritamente a funcionalidade "a"- Codigo:
Seu código deveria se parecer com isso:- Código:
using System;
namespace Calculadora
{
class Programa
{
static string mss = " "; // Massa
static void Main()
{
Fisica equacoes = new Fisica(); // Declaramos uma classe Fisica chamada equacoes, e instanciamos a mesma.
Console.WriteLine("Bem vindo a Calculadora Fisica");
Console.WriteLine("Digite se você quer calcular o Peso(A) ou a variação do espaço(B)");
string tipo = Console.ReadLine();
if(tipo == "a" || tipo == "A") // Usamos o operador "||" como se fosse "Ou" (OR de outras linguagens)
{
Console.WriteLine("Digite a massa do objeto:");
mss = Console.ReadLine();
int massa = Convert.ToInt32(mss); // Conversão do input
equacoes.Peso(massa); // Chama nossa função da equação de peso
}
}
}
class Fisica
{
public void Peso(float m)
{
// Const declara uma constante, não pode ser setada após o inicio da mesma.
const float GRAVIDADE = 9.8f;
Console.WriteLine(m * GRAVIDADE);
}
}
}
Digitaremos a função B do código, onde realmente há complicação.
O que teremos que fazer:- Receber a entrada do espaço, velocidade e do tempo
- Verificar a quantidade de entradas que tempo obteve
- Converter as entradas
- Usar a formula fisica para conseguir o espaço na variação do tempo
- Imprimir no console a reposta
Criaremos uma função chamada VariacaoEspaco, dentro da classe Fisica, que fará todo o calculo necessário- Código:
// S = S0 + v * t
public void VariacaoEspaco(int contagem,int velocidade, int[] tempo, int inicio = 0)
{
int retorno = 0;
int indice = 0;
bool condicao = true;
while(condicao == true)
{ // S = retorno | S0 = inicio | v = velocidade | t = tempo
retorno = inicio + (velocidade * tempo[indice]);
Console.WriteLine("Espaço: " + retorno);
indice = indice + 1;
if(indice == contagem)
condicao = false;
}
}
Tudo em teoria funcionará perfeitamente, se você inserir os dados manualmente, mas isso é um programa, precisamos automizar colocando a entrada.
Dito isso prosseguiremos primeiramente declarando todas as variaveis que utilizaremos no código, são entradas, logo estarão dentro da classe Programa:- Código:
static string mss = " "; // Massa
static string ini = " "; // Posição inicial
static string vel = " "; // Valor da velocidade
static string[] tmp = new string[10]; // Guarda os tempos
static bool adicionar = true; // Para verificar se precisa adicionar mais tempos
static int contagem = 0; // Conta até onde a array foi
Todas são static para termos flexibilidade entre diferentes funções, são variaveis globais dentro do escopo Programa.
Abaixo da função Main, escreveremos nossa função Dados, que coletará todos os dados necessários para a nossa formula.- Código:
static void Dados()
{
if (contagem == 0) // Se não houver nada na nossa array tmp
{
Console.WriteLine("Digite o ponto inicial");
ini = Console.ReadLine();
Console.WriteLine("Digite a velocidade");
vel = Console.ReadLine();
}
if (adicionar == true) // Adicionar inicialmente é verdadeiro
{
Console.WriteLine("Digite o tempo");
tmp[contagem] = Console.ReadLine(); // Adiciona o primeiro elemento da nossa array
contagem += 1; // Diz que há um elemento em tmp
adicionar = false; // Adicionar se torna falso
Dados(); // Chama nossa função novamente
}else if (contagem < 11) // Se a contagem da nossa array tmp for menor que 10
{
Console.WriteLine("Deseja adicionar outro ?" + "(s/n)");
string resposta = Console.ReadLine();
if (resposta == "s") // Se a resposta for sim, repete a condição "adicionar == true"
{
adicionar = true;
Dados();
}
else adicionar = false; // Caso não, finaliza a void
}
}
Agora iremos setar a condição de B.- Código:
if (tipo == "b" || tipo == "B")
{
Dados();
// Conversões
int velocidade = Convert.ToInt32(vel);
int[] tempo = new int[10];
// Declara uma variavel i começando em 0, se a variavel i for menor que o tamanho de tmp, então i recebe + 1
for(int i = 0; i < tmp.Length; i++)
{
tempo[i] = Convert.ToInt32(tmp[i]);
}
int inicio = Convert.ToInt32(ini);
equacoes.VariacaoEspaco(contagem,velocidade, tempo, inicio);
}
Pronto, agora tudo deveria estar funcionando.
Codigo completo abaixo
Re: [TUTORIAL] Primeiro programa "complexo" em C# para iniciantes
Ficou um tópico gigante ao ponto de ultrapassar o limite, mas enfim, eis aqui o código final. Provavelmente deve ter dado algum erro na hora de dividir o tópico, então me alertem se encontrarem.
- Spoiler:
- Código:
/*
Código escrito na intenção de facilitar para o iniciante,
demonstrando alguns conceitos importantes, não é a melhor forma de se escrever tal programa.
*/
using System;
namespace Calculadora
{
class Programa
{
static string mss = " "; // Massa
static string ini = " "; // Posição inicial
static string vel = " "; // Valor da velocidade
static string[] tmp = new string[10]; // Guarda os tempos
static bool adicionar = true; // Para verificar se precisa adicionar mais tempos
static int contagem = 0; // Conta até onde a array foi
static void Main()
{
Fisica equacoes = new Fisica();
Console.WriteLine("Bem vindo a Calculadora Fisica");
Console.WriteLine("Digite se você quer calcular o Peso(A) ou a variação do espaço(B)");
string tipo = Console.ReadLine();
//Para calcular o Peso
if (tipo == "a" || tipo == "A")
{
Console.WriteLine("Digite a massa do objeto:");
mss = Console.ReadLine();
int massa = Convert.ToInt32(mss);
Console.WriteLine(equacoes.Peso(massa));
}
//Para calcular a variação do espaço
if (tipo == "b" || tipo == "B")
{
Dados();
// Conversões
int velocidade = Convert.ToInt32(vel);
int[] tempo = new int[10];
for(int i = 0; i < tmp.Length; i++)
{
tempo[i] = Convert.ToInt32(tmp[i]);
}
int inicio = Convert.ToInt32(ini);
equacoes.VariacaoEspaco(contagem,velocidade, tempo, inicio);
}
}
static void Dados()
{
if (contagem == 0)
{
Console.WriteLine("Digite o ponto inicial");
ini = Console.ReadLine();
Console.WriteLine("Digite a velocidade");
vel = Console.ReadLine();
}
if (adicionar == true)
{
Console.WriteLine("Digite o tempo");
tmp[contagem] = Console.ReadLine();
contagem += 1;
adicionar = false;
Dados();
}else if (contagem < 11)
{
Console.WriteLine("Deseja adicionar outro ?" + "(s/n)");
string resposta = Console.ReadLine();
if (resposta == "s")
{
adicionar = true;
Dados();
}
else adicionar = false;
}
}
}
class Fisica
{
// Na física peso é igual a massa vezes gravidade
public float Peso(float m)
{
const float GRAVIDADE = 9.8f; // Const declara uma constante, não pode ser setada após o inicio da mesma.
return m * GRAVIDADE;
}
// S = S0 + v * t
public void VariacaoEspaco(int contagem,int velocidade, int[] tempo, int inicio = 0)
{
int retorno = 0;
int indice = 0;
bool condicao = true;
while(condicao == true)
{
retorno = inicio + (velocidade * tempo[indice]); // S = retorno | S0 = inicio | v = velocidade | t = tempo
Console.WriteLine("Espaço: " + retorno);
indice = indice + 1;
if(indice == contagem)
condicao = false;
}
}
}
}
Tópicos semelhantes
» [TUTORIAL] Scripts Básicos para Iniciantes
» [Curso Grátis para iniciantes] Um Ótimo Lugar para aprender Unity
» [TUTORIAL] Sistema de carro complexo.
» Para Iniciantes - Nível 0
» [TUTORIAL] Programa simples em C# que faz báskara
» [Curso Grátis para iniciantes] Um Ótimo Lugar para aprender Unity
» [TUTORIAL] Sistema de carro complexo.
» Para Iniciantes - Nível 0
» [TUTORIAL] Programa simples em C# que faz báskara
SchultzGames :: UNITY 3D :: C# .NET
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos