Criando Projeto
No terminal digite dotnet new console
.
Isso criara a estrutura do projeto:
- Pasta obj
- Arquivo C-sharp.csproj
- Arquivo Program.cs
Executando projeto
Para execução utilize o comando no terminal dotnet run
Entendendo a Sintaxe
No arquivo principal:
using System;
namespace aguradorInstruções
{
Class ModeloObjto
{
static void Main(String[] args)
{
Console.WhiteLine("Code Programa...")
}
}
Class Outra
{
}
}
Interessante notar que no C# tudo são classes.
Para o funcionamento do programa é necessário declarar a função Main
.
Essa é uma função estatic
a e retorna nenhum valor (void
).
Ainda a mesma recebe parâmetros do tipo strings[]
Instruções no C# são sinalizadas com seu final em ";".
Cada Instrução é executada uma após a outra.
Para desenvolver em qualquer lugar acesse Repl
Declarando Variáveis
Para declarar uma variável basta informar o tipo seguido do Nome exemplo:
float Quant = 9.36 ;
Tipo de Dados
TIPO |
REPRESENTAÇÃO |
RANGE |
VALOR PADRÃO |
---|---|---|---|
Bool | Boolean | True or False | False |
Byte | 8-bit unsigned | Integer 0 to 255 | 0 |
Char | 16-bit Unicode character | U +0000 to U +ffff | '\0' |
decimal | 128-bit precise decimal values with 28-29 significant digits | (-7.9 x 1028 to 7.9 x 1028) / 100 to 28 | 0.0M |
double | 64-bit double-precision floating point type | (+/-)5.0 x 10-324 to (+/-)1.7 x 10308 | 0.0D |
Float | 32-bit single-precision floating point type | -3.4 x 1038 to + 3.4 x 1038 | 0.0F |
Int | 32-bit signed integer type | -2,147,483,648 to 2,147,483,647 | 0 |
Long | 64-bit signed integer type | 923,372,036,854,775,808 to 9,223,372,036,854,775,807 | 0L |
Sbyte | 8-bit signed integer type | -128 to 127 | 0 |
Short | 16-bit signed integer type | -32,768 to 32,767 | 0 |
Uint | 32-bit signed integer type | 0 to 4,294,967,295 | 0 |
Ulong | 64-bit signed integer type | 0 to 18,446,744,073,709,551,615 | 0 |
Ushort | 16-bit signed integer type | 0 to 65,535 | 0 |
Ainda caso a variável ser definida na compilação utilize o tipo var.
Para valores que não devem ser alterados utilize o tipo const seguido do tipo. A principal utilização é em elementos que devem ser protegidos dentro do programa.
Enumeradores
Para pré definir uma lista de valores aceitáveis utilize o tipo
É necessário toda vez que a conversão de valores for Explicita, o implícito é feito de maneira automática uma vez que a conversão não apresenta nenhum risco de alteração de valores. enum
seguido do nome do mesmo com chaves contendo os valores aceitos.
enum diasSemana{Domingo, Segunda, Terça, Quarta, Quinta, Sexta, Sábado};
A posição desses valores serão representados por índice. Basta fazer um cast informando o enumerador entre parênteses seguido do numero do índice.
Console.WriteLine((diasSemana)5)
Resultado da execução: >> Sexta
Convertendo valor em numero
Console.WriteLine((int)diasSemana.Sexta);
Resultado da execução: >> 5
typecast
Exemplos:
Implícito
De int para float são acrescido zeros ao final então não existe risco de alteração valores uma vez que o zero representa a ausência de valor fracionado.
Explicito
Já ao contrario, de float para int o valor vai ser alterado em parte, uma vez que perderá seu valor fracional.
Atribuindo valores
Input através do teclado Console.ReadLine();
String variavel = Console.ReadLine();
Boas praticas de nomenclatura
COMPONENTE |
PREFIXO |
EXEMPLO |
---|---|---|
Formulário | frm | frmCadastro |
Caixa de Figura (PictureBox) | pic | picImagens |
Label | lbl | lblNome |
Caixa de Texto (TextBox) | txt | txtNome |
Botão de Comando – Button | btn | btnSalvar |
Caixa de Verificação (CheckBox) | chk | chkData |
ComboBox | cbo | cboEstado |
ListBox | lst | lstFornecedor |
Timer | tmr | tmrRelogio |
Grid | grd | grdClientes |
Menu | mnu | mnuExibir |
Identificando
Podemos identificar uma variável, funções, classes etc.
Palavras Reservadas
PALAVRAS-CHAVE RESERVADAS | |||||
---|---|---|---|---|---|
abstract | as | ||||
base | bool | break | byte | ||
case | catch | char | checked | class | const |
continue | |||||
decimal | default | delegate | do | double | |
else | enum | event | explicit | extern | |
false | finally | fixed | float | for | foreach |
goto | |||||
if | implicit | in | int | interface | internal |
is | |||||
lock | long | ||||
namespace | new | null | |||
object | operator | out | override | ||
params | private | protected | public | ||
readonly | ref | return | |||
sbyte | sealed | short | sizeof | stackalloc | static |
string | struct | switch | |||
this | throw | true | try | typeof | |
uint | ulong | unchecked | unsafe | ushort | using |
virtual | void | volatile | |||
while | |||||
add | alias | ascending | |||
descending | dynamic | ||||
from | |||||
get | global | group | |||
into | |||||
join | |||||
let | |||||
orderby | |||||
partial | |||||
remove | |||||
select | set |
Convertendo variáveis
A conversão de variáveis se da a partir da declaração da variável que salvara o valor convertido seguido do processo novo_tipo.Parse
();
string variavel = 3;
b = int.Parse(variável);
ou
b = Covert.ToInt32(variável);
Escopo
Até onde a variável é visível de onde ela foi declarada para onde ela pode ser acessada.
class exemplo
{
string variavel_global = "I'm global";
Arrays
São um conjuntos de dados do mesmo tipo atribuído a uma variavel.
unidimensional
vetores
Declarando array basta informar o tipo com colchetes de dados que o mesmo ira suportar, seguido do nome e depois o operador new informando o tipo com as posições dentro do colchete.
int nomeArray[] = new int[3];
Atribuindo valores;
Na criação:
int[] exemplo = new int[3]{0,1,2};
ou
int[] exemplo = {0,1,2...};
↑ sem especificar o tamanho o mesmo sera preenchido na compilação de acordo com a quantidade de elementos declarados.
Declarando elementos:
int[] exemplo = new int[3];
exemplo[0]= 0;
exemplo[1]= 1;
exemplo[2]= 2;
bidimensional
matrizes
A unica diferença é colocar uma virgula entre os colchetes depois do tipo, assim informando que a matriz ira conter dois números de índice respectivamente linhas
e colunas
.
int[,] exemplo = new int[2,3];
Na criação:
int[,] exemplo = new int[2,3]{{1,2,3},{4,5,6}};
Declarando elementos:
matriz[0,0]=1;
matriz[0,1]=2;
matriz[0,2]=3;
matriz[1,0]=4;
matriz[1,1]=5;
matriz[1,2]=6;
Métodos para Arrays
Métodos que manipulam vetores ou matrizes.
Set Value
Insere um valor em uma posição de um conjunto de dados.
nome_vetor.SetValue("valor", 0);
Binary Search
Retorna a posição do elemento no tipo primitivo int.
int resposta = Array.BinarySearch(nome_vetor,valorProcurado);
Copy
Copia o conteúdo de um array para outro.
Array.Copy(nome_vetor,vetor_destino, tamanho);
Copy To
Copia o conteúdo de um array para outro. Mas este é a partir do vetor e não a partir do método Array.
nome_vetor.CopyTo(vetor_destino, idexInicio);
Get Long Length
Retorna o tamanho de um conjunto de valores.
long elementosVetor = nome_vetor.GetLongLength(0);
Get Low Bound
Retorna a menor indice de um conjunto de dados.
int menorIndiceVetor = nome_vetor.GetLowerBound(0);
ou
int menorIndiceMatriz = nome_matriz.GetLowerBound(1);
Get Upper Bound
Retorna a maior índice de um conjunto de dados.
int maiorIndiceVetor = nome_vetor.GetLowerBound(0);
ou
int maiorIndiceMatriz = nome_matriz.GetLowerBound(1);
Get Value
Retorna a valores em formade objeto a partir do índice de um conjunto de dados. Por isso o Convert entra fazendo o do valor.
int buscaVetor = Convert.ToInt32(nome_vetor.GetValue(2));
ou
int buscaMatriz = Convert.ToInt32(nome_matriz.GetValue(0,2));
IndexOf
Retorna o índice do primeiro um elemento correspondente ao indicado nos parâmetros.
int buscaIndex = Array.IndexOf(nome_vetor,"elemento");
Last IndexOf
Retorna o índice do ultimo um elemento correspondente ao indicado nos parâmetros.
int buscaIndex = Array.LastIndexOf(nome_vetor,"elemento");
Reverse
Retorna o vetor com os itens na ordem invertida.
Array.Reverse(nome_vetor);
Sort
Retorna o vetor com os itens na ordem crescente.
Array.Sort(nome_vetor);
Para retornar a ordem decrescente organize e depoiis utilize o reverse.
Comentários
Para comentar uma linha use //.
Para comentar varias linhas abra com /* e feche com */.
Operadores
Aritimeticos
Relacionado a operações matemáticas.
Relacionais
Retorna um valor booleano.
Logicos
Une Operadores ou nega. ! nega. && todos verdadeiro. || um verdadeiro.
BitWise
Dobra ou gera Metade do valor manipulado. Os comandos são respectivamente << e >>.
A ordem do comando é variavel alterada operador bitwise seguido da quantidade de casas binárias a se manipular.
Ternarios
?caso verdadeiro :caso falso
Condicionais
if
Para decidir entre uma condição ou outra utilize a if
.
Estrutura de seleção unilateral:
if (true)
{
comandos para verdadeiro();
}
Por ter apenas uma opção pode ser marcada sem as chaves.
exemplo;
int x = 10;
if(x > 2)
x = 25;
else
Estrutura bilateral:
if ( TESTE )
{ Comandos caso verdadeiro }
else
{ Comandos caso falso }
else if
Para aumentar a quantidade de verificações é só declarar o else if
seguido do novo teste.
if ( TESTE1 )
{ Comandos caso verdadeiro }
else if ( TESTE2 )
{ Comandos caso verdadeiro }
else
{ Comandos caso falso }
Condições aninhadas
Consiste em incluir condições dentro de condições criando uma árvore de execução.
if(teste1)
{
Switch
Testa uma variavel e com os valores correspondentes as constantes das cases. Estrutura basica do switch
:
char teste = 'y'
Cada case deve terminar com um break a fim evitar a quebra de execução.
Go-to
Desvia a execução para um ponto especifico (label). Geralmente é usado estruturas de repetição.
A label é marcado com um nome simples seguido de ':' ex: nome:
Já a chamada é feita através do comando goto nome;
O mesmo pode ser colocado como opção através de um if etc...
Estruturas de Iteração
Propósito, repetir uma ação ou uma sequencia delas.
For
Utilização destinada a quando sei a quantidade de vezes que a ação deve ser repetida.
Estrutura:
for(contador;regra;incremento)
{
comandos ou ações a serem repetidas
}
Exemplo pratico
for(int i=0; i < 9; i++)
{
Console.WriteLine("Contador correspondendo {0}", i);
}
For Each
Ele itera itens de uma coleção e executa uma determinada ação.
Estrutura:
foreach(type cont_item in nomeArray)
{
comandos a serem executados
}
While
Utilização destinada a quando não se sabe a quantidade de vezes que será repetido.
Estrutura:
int contador = y;
while(contador < x)
{
contador ++
ou comandos...
contador ++
}
Do While
Utilização destinada a quando não se sabe a quantidade de vezes que será repetido, Porém garantindo que o comando será executado ao menos uma vez, já que o teste se encontra ao final.
Estrutura:
int contador = y;
do
{
contador ++
ou comandos...
contador ++
}while(contador < x)
Métodos
São conjuntos de instruções que pode ser chamado a qualquer momento durante a execução de uma programa.
Ao utilizar
O retorno só pode voltar um valor, o argumento
Permite criar funções sem a necessidade de expressar todas os parâmetros de entrada.
Métodos podem trabalhar a partir de paramentos de entrada, ou simplesmente retornam valores.
resultado da operação >> 3
Passagem Referencia
ref
em parâmetro de operação esta sendo feito a indicação de qual memoria deve ser utilizada. Isso implicara diretamente na variavel de origem.
Argumento Out
out
.
o resultado será: >> O quociente foi 4 e o resto foi 1
Argumento Params