Você está na página 1de 132

2801

Fundamentos do C#
Escopo de um programa
Notas Importantes

Definições
- Não utilize espaços nem caracteres especiais na criação do programa
- Bons: MeuApp, Pedidos, MinhaApp
- Ruins: “Meu App”, $APP, App #Teste
- Tente utilizar caminhos curtos e sem caracteres especiais
- Bons: C:\dev, C:\apps
- Ruins: C:\Caminho Com Espaços e Caracteres Especiais\Meu App
- Evite caminhos de rede
- Se possível, utilize o C:\
- O C# é Code Sensitive
- Isto significa que ele diferencia maiúsculas de minúsculas
- Teste é diferente de teste
Escopo de um programa

Definições
- Importações
- Namespace
- Classe
- Método Principal
2801

Fundamentos do C#
Namespaces
Namespace

Definições
- Enquanto as pastas são as divisões físicas
- Os namespaces são as divisões lógicas
- Assim como não podemos ter dois arquivos com mesmo nome nas pastas
- Não podemos ter duas classes com mesmo nome em um namespace
- O ideal é ter apenas um namespace e uma classe por arquivo
- O escopo de um namespace é definido entre CHAVES
- Classes e métodos também
- Um namespace pode ser reutilizado
- Pode estar presente em diversos arquivos
Namespace

Definições
- Podemos criar quantos namespaces quisermos
- Não devem conter espaços ou caracteres especiais
- Toda palavra no namespace começa com maiúsculo
- Podemos ter um namespace dentro de outro usando “.”
- A importação que vimos anteriormente é feita pelos namespaces
- Normalmente acompanham os nomes das pastas
Namespace

Definições
- Durante a execução, todos os arquivos do C# serão unificados
- A divisão física se perderá
- Sobrará apenas a divisão lógica, que são os namespaces
2801

Fundamentos do C#
Using
Importações

Definições
- Importações definem as bibliotecas que nosso programa irá utilizar
- Por padrão só o básico vem incluso
- Precisamos importar o que desejamos para poder trabalhar
- Isto é feito no começo do programa
- Utilizamos a palavra reservada using para isto
Notas Importantes

Definições
- Organizar nosso código em pastas e namespaces é fundamental
- Em aplicações grandes, o volume de código é alto
- A quantidade de arquivos é alta
- E o número de pessoas trabalhando no mesmo projeto também
- Entender bem esta organização é fundamental
- Use e abuse da criação de arquivos e namespaces
2801

Fundamentos do C#
Variáveis
Variáveis

Definições
- Uma variável é algo que utilizamos para armazenar uma informação
- Ser variável significa que seu valor pode ser alterado a qualquer momento
- Ou seja, ele pode variar
- Sempre que “criamos” uma variável, dizemos que estamos inicializando ela
Variáveis

Definições
- Podemos usar um TIPO ou a palavra reservada var para criar uma variável
- Vamos aprender ainda sobre tipo de dados
- No C# o tipo vem sempre antes do nome da variável
- Podemos informar um valor já na criação da variável
- Se não informado o valor padrão será aplicado

intidade; // Correto inicia com ZERO


intidade = 25; // Correto inicia com 25
var idade = 25; // Correto inicia com 25
var idade; // Errado
Padronização de Nomes

Definições
- Utilize nomes coesos
- Não utilize caracteres especiais ou espaços
- Não comece com números
- A primeira letra de cada palavra é SEMPRE minúscula
2801

Fundamentos do C#
Constantes
Constantes

Definições
- Também utilizamos uma constante para armazenar uma informação
- As constantes NÃO PODEM ser alteradas
- Uma vez criadas somos obrigados a atribuir um valor
- Feito isto elas não poderão ser modificadas novamente
- Não funcionam com a utilização de var
- São mais otimizadas que as variáveis
- Recomendadas para usos frequentes
Constantes

Definições
- A definição de constante é dada pela palavra reservada const antes do tipo
- Caso não seja informado um valor, o valor padrão será atribuido

constintIDADE_MINIMA; // Correto inicia com ZER O


constintIDADE_MINIMA = 25; // Correto inicia com 25
const var IDADE_ MINIMA = 25;// Errado
const var IDADE_ MINIMA; // Errado
Padronização de Nomes

Definições
- Utilize nomes coesos
- Não utilize caracteres especiais ou espaços
- Não comece com números
- É comum vermos constantes todas em maiúsculas, separadas por “_”
- A ideia é bater o olho no código e saber que aquilo é uma constante
2801

Fundamentos do C#
Nomes Reservados
Nomes Reservados

Definições
- Também chamados de keywords
- São palavras de uso exclusivo do C#
- Não podemos utilizar como nomes de variáveis ou constantes
- O Visual Studio Code vai te avisar sobre eles
2801

Fundamentos do C#
Comentários
Comentários

Definições
- Em diversos cenários você precisará deixar uma mensagem
- Esta mensagem não deve ser executada pelo programa
- É comum utilizarmos comentários em linhas que não desejamos executar também
- Podemos ter comentários de
- Uma linha
- Múltiplas linhas
- XML (Metadata)
Comentários

// Comentário em uma linha

/*
Co mentário em várias
linhas
*/

/// Notação XML (Metadata)


2801

Fundamentos do C#
Tipos Primitivos
Tipos Primitivos

Definições
- Também conhecidos como built-in types
- São tipos base cujo outros tipos (Complexos) irão derivar
- Definir o tipo correto otimiza a execução do programa
- São chamados de Tipos de Valor
- Armazenam o valor e não a referência para um item na memória
- São classificados em
- Tipos Simples (Simple Types)
- Enumeradores (Enums)
- Estruturas (Structs)
- Tipos Nulos (Nullable Types)
Tipos Primitivos

Definições
- Cada tipo possui uma capacidade
- Caso esta capacidade exceda, o programa gera um erro
- Esta capacidade pré-definida ajuda na otimização do seu programa
- Por exemplo o int que usamos previamente:
- -2,147,483,648 até 2,147,483,647
2801

Fundamentos do C#
System
System

Definições
- No .NET tudo começa de um tipo base chamado system
- Todo e qualquer tipo, seja built-in ou complexo deriva dele
- Ele é a base de todos os objetos no .NET
- Não precisamos nos preocupar em usá-lo ou qualquer coisa similar
- Seu uso já é implícito
2801

Fundamentos do C#
Byte
Byte

Definições
- O tipo byte é utilizado para representar um byte de fato
- Em diversos casos precisamos da cadeia de bytes de um arquivo por exemplo
- Também chamado de byte array
- Temos também o sbyte, que permite valores negativos

Signed e Usigned
Valores com sinal como “-” por exemplo, são chamados de signed.
Byte

Definições
- byte (8-bit)
- 0 até 255
- sbyte (8-bit)
- -128 até 127

- Note que o sbyte permite valores negativos, por isto no nome sbyte, que significa Signed Byte
2801

Fundamentos do C#
Números Inteiros
Números Inteiros

Definições
- Numeros inteiros, ou seja, sem pontuação, podem ser definidos pelos tipos
- short/ushort
- int/uint
- long/ulong
- Assim como temos o signed nos bytes, nos números por padrão são permitidos valores negativos
- Então usamos o unsigned para definir que o mesmo não pode receber valores negativos
- O tipo int é o mais comum a ser encontrado
Números Inteiros

Definições
- short (16-bit)
- -32,768 to 32,767
- ushort (16-bit)
- 0 até 65.535
- int (32-bit)
- -2,147,483,648 até 2,147,483,647
- uint (32-bit)
- 0 até 4,294,967,295
- long (64-bit)
- -9,223,372,036,854,775,808 até 9,223,372,036,854,775,807
- ulong (64-bit)
- 0 até 18,446,744,073,709,551,615
2801

Fundamentos do C#
Números Reais
Números Reais

Definições
- Numeros que exigem uma maior precisam, ou seja, com pontuação
- float(Notação F)
- double
- decimal (Notação M)
- Possuem assimilação negativa e positiva por padrão, dispensando uso do signed/unsigned em seus tipos.
Números Inteiros

Definições
- float (32-bit)
- -3.402823e38 até 3.402823e38
- double (64-bit)
- -1.79769313486232e308 até 1.79769313486232e308
- decimal (128-bit)
- (+ ou -)1.0 x 10e-28 até 7.9 x 10e28
2801

Fundamentos do C#
Bool
Boolean

Definições
- Tipo booliano, armazena apenas true ou false (Verdadeiro ou Falso)
- Definido pela palavra reservada bool
- bool (8-bit)
- true ou false
2801

Fundamentos do C#
Char
Char

Definições
- Utilizado para armazenar apenas um caractere no formato Unicode
- Definido pela palavra reservada char
- A atribuição de um valor char é dada por aspas simples
- char (16-bit)
- Qualquer caractere
2801

Fundamentos do C#
String
String

Definições
- Armazena uma cadeia de caracteres
- Podemos pensar nele como uma lista de char
- Definido pela palavra reservada string
- A atribuição de um valor string é dada por aspas duplas
- string (?)
- Uma cadeia de caracteres
2801

Fundamentos do C#
Var
Var

Definições
- Substitui o nome de um tipo
- Será do tipo do primeiro valor atribuído
- Recomendado o uso
- Deixe para usar var quando já dominar os tipos

var idade = 25; // Será to tipo int


var nome = “André”; // Será to tipo string
2801

Fundamentos do C#
Object
Object

Definições
- Tipo genérico que recebe qualquer valor ou objeto
- Caso não saiba o tipo da informação ou ela seja de vários tipos diferentes
- Não possui intelisense (Ajuda dos editores) por ser um tipo desconhecido
- Evite usar

objectidade = 25; // Será to tipo object


object nome = “André”; // Será to tipo object
2801

Fundamentos do C#
Nullable Types
Null

Definições
- Significa vazio, nada
- Diferente de zero ou uma string vazia
- Todo tipo, primitivo ou complexo pode receber o valor null
- O tipo deve ser marcado como Nullable Type
Null

Definições
- Podemos atribuir null a um objeto
- Desde que o mesmo seja marcado como nullable
- Usando interrogação na frente do tipo
- Se uma chamada a um valor nulo for feita um erro será apresentado

int?idade = null;
2801

Fundamentos do C#
Alias
Alias

Definições
- Alias é um apelido que todo tipo no .NET tem
- Por exemplo
- System.String tem o alias string
- Vimos anteriormente os alias
Alias

Definições
- Como o C# é Case Sensitive, tanto faz escrevermos um ou outro
- Porém, o recomendado é sempre o usar o alias
- No caso abaixo o resultado é o mesmo
- Com alias escrevemos menos

intidade = 25; // Alias


Int32 idade = 25; // Tipo
2801

Fundamentos do C#
Valores Padrões
Valores Padrões

Definições
- Todo tipo built-in, já possui um valor padrão
- Se nenhum valor for informado, seu valor padrão será utilizado
- int => 0
- float => 0
- decimal => 0
- bool => false
- char => '\0’
- String => “”
2801

Fundamentos do C#
Conversão Implícita
Conversão Implícita

Definições
- É comum precisarmos transformar um dado de tipo X para tipo Y
- Existem dois tipos de conversão, as implícitas e as explícitas
- As implícitas são conversões que
- Podem ser executadas apenas com passagem de dados
- Possuem tipos compatíveis

float valor = 25.8F;


int outro = 25;

valor = outro; // Conversão implícita


Conversão Implícita

Definições
- A conversão anterior ocorreu pois um número real pode receber um número inteiro
- Porém, ao contrário não aconteceria
- Um número inteiro não tem pontuação
- Logo ele não poderia receber um número real
- A conversão só ocorrerá se
- O tipo de dado for compatível
- O tamanho do dado for compatível
- Em caso de números a precisão pode ser alterada
- Qualquer situação adversa causará erro
Conversão Implícita

Definições
- sbyte
- short, int, long, float, double, decimal
- byte
- short, ushort, int, uint, long, ulong, float, double, decimal
- short
- int, long, float, double, or decimal
- ushort
- int, uint, long, ulong, float, double, or decimal
- int
- long, float, double, or decimal.
Conversão Implícita

Definições
- uint
- long, ulong, float, double, or decimal
- long
- float, double, or decimal
- ulong
- float, double, or decimal
- char
- ushort, int, uint, long, ulong, float, double, or decimal
- float
- double
2801

Fundamentos do C#
Conversão Explícita
Conversão Explícita

Definições
- Ocorre quando os tipos não são compatíveis
- É dada pelo uso do tipo entre parênteses antes da atribuição
- Segue as mesmas regras anteriores

intinteiro = 100;
uintinteiroSemSinal = (uint)inteiro;// Conversão explícita
2801

Fundamentos do C#
Parse
Parse

Definições
- Método presente em todo tipo primitivo
- Usado para converter um caractere ou string para um tipo qualquer
- Caso haja alguma incompatibilidade, gera um erro

intinteiro = int.Parse("100");
2801

Fundamentos do C#
Convert
Convert

Definições
- Similar ao parse visto anteriormente
- Porém permite converter vários tipos de valor
- Não apenas string
- Devemos informar o tipo na chamada da conversão

intinteiro = Convert.ToInt32("100");
2801

Fundamentos do C#
Operadores Aritméticos
Operações Aritméticas

Definições
- Soma => +
- Subtração => -
- Multiplicação => *
- Divisão => /

- Multiplicação e divisão são executadas primeiro


- Caso queira executar em outra ordem, usar parênteses
- Aceita short, int, float, double e decimal
Operações Aritméticas

Definições
- Em caso de uso de números inteiros
- Se o valor for real, será arredondado
- 4.4 => 5

int soma = 25 + 22; // 47


int subtracao = 25 - 22; // 3
int divisao = 25 * 22; // 550
int multiplicacao = 22 / 5;// 4 – Foi arredondado
Operações Aritméticas

Definições
- Utilizamos parênteses para redefinir a ordem de execução

int x = 2 + 2 * 2; // 6
int y = 2 + (2 * 2);// 6 – Mesmo do anterior
int z = (2 + 2) * 2; // 8 – Executou a soma primeiro
2801

Fundamentos do C#
Operadores de Atribuição
Operações de Atribuição

Definições
- Utilizamos igual para atribuir um valor
- Porém, podemos utilizar igual junto a um operador aritmético
- x += 5 é o mesmo que x = x + 5

int x = 0;// Atribuição


x += 5; // x = x + 5;
x -= 1; // x = x – 1;
x *= 10; // x = x * 10;
x /= 2; // x = x / 2;
2801

Fundamentos do C#
Operadores de Comparação
Operações de Comparação

Definições
- Podemos comparar qualquer tipo de dado
- Números, strings, bytes
- A comparação SEMPRE retorna verdadeiro ou falso
- True ou False
Operações de Comparação

Definições
- Igual
- ==
- Diferente
- !=
- Maior que
- >
- Menor que
- <
- Maior ou igual a
- >=
- Menor ou igual que
- <=
Operações de Comparação

int x = 25;
x == 0;// False
x != 0;// True
x > 0;// True
x < 0;// False
x <= 0;// False
x >= 0;// True
2801

Fundamentos do C#
Operadores Lógicos
Operações Lógicos

Definições
- Usado para operações condicionais
- Retorna SEMPRE verdadeiro ou falso
- E – and
- Deve atenter TODAS as condições
- &&
- OU – or
- Se atender uma condição já retorna verdadeiro
- ||
- NEGAÇÃO - not
- !
Operações Lógicos

int x = 12;
bool entre = (x > 25) && (x < 40);// False
bool ou = (x > 25) || (x < 40);// True
bool negacao = !(x < 25);// False
2801

Fundamentos do C#
Estruturas Condicionais: If
Estrutura Condicional: If

Definições
- Tradução: “SE” ou seja, “caso alguma condição seja atendida”
- Utilizado para tomada de decisões
- Utiliza os operadores lógicos
Estrutura Condicional: Else

Definições
- Complemento ao if
- Caso a condição não seja atendida
- Podemos ter
- else if(condição)
- Não tem limites (Mas cuidado)
- Podemos ter apenas else para executar algo caso a condição seja atendida
Operações Lógicos

if(condicao) { // Caso seja verdadeiro


...
}

if(condicao) // Caso seja verdadeiro


... // Caso só haja uma linha, não precisa de chaves
Operações Lógicos

if(condicao) { // Caso seja verdadeiro


...
} else { // Caso seja falso
...
}

if(condicao) // Caso seja verdadeiro


... // Caso só haja uma linha, não precisa de chaves
else // Caso seja falso
...
Operações Lógicos

if(condicao) { // Caso seja verdadeiro


...
} else if(condicao) { // Senão, testa outra condição
...
} else if(condicao) { // Senão, testa outra condição
...
} else { // Se não acontecer nenhuma das anteriores
...
}
2801

Fundamentos do C#
Estruturas Condicionais: Switch
Estrutura Condicional: Switch

Definições
- Utilizado quando temos muitas decisões
- Executado em cascata
- Devemos parar manualmente a execução com o comando break
- Possui uma execução padrão chamada default
Operações Lógicos

int valor = 1;
switch (valor)
{
case 1: Console.WriteLine("1"); break;
case 2: Console.WriteLine("2"); break;
case 3: Console.WriteLine("3"); break;
default: Console.WriteLine("4"); break; // Se não for 1,2 ou 3
}
2801

Fundamentos do C#
Laços de Repetição: For
Laços de Repetição: For

Definições
- Tradução “para”, ou seja, para cada item em um valor...
- Executa uma determina ação várias vezes
- Definido pela palavra for
- Exige 3 parâmetros
- Contador
- Condição
- Incremento
Laços de Repetição: For

Definições
- for (var i = 0; i <= 5; i++)
Laços de Repetição: For

// Conta de 0 a 5
for (var i = 0;i <= 5;i++)
Console.WriteLine(i);

// Conta de 1 a 5
for (var i = 1;i <= 5;i++)
Console.WriteLine(i);

// Conta de 0 a 4
for (var i = 0;i < 5;i++)
Console.WriteLine(i);

// Conta de 5 a 0
for (var i = 5;i >= 0;i--)
Console.WriteLine(i);
2801

Fundamentos do C#
Laços de Repetição: While
Laços de Repetição: While

Definições
- Tradução: “Enquanto”, ou seja, enquanto uma condição for verdadeira...
- Definido pela palavra while
- Exige apenas uma condição
- Checa a condição ANTES de executar
Laços de Repetição: While

var valor = 0;

// Conta de 0 a 5
// Exibe de 0 a 5 na tela
while (valor <= 5)
{
Console.WriteLine(valor);
valor++;
}
Laços de Repetição: While

valor = 0;

// Conta de 0 a 5
// Exibe de 1 a 6 na tela
while (valor <= 5)
{
valor++;
Console.WriteLine(valor);
}
Laços de Repetição: While

valor = 0;

//Infinito
while (true)
{
valor++;
Console.WriteLine(valor);
}
2801

Fundamentos do C#
Laços de Repetição: Do
Laços de Repetição: Do

Definições
- Tradução: “Faça”, ou seja, realiza uma ação enquanto...
- Definido pela palavra do/while
- Exige apenas uma condição no while
- Checa a condição DEPOIS de executar
Laços de Repetição: Do

var valor = 0;
do
{
Console.WriteLine("Teste");
valor++;
} while (valor < 5);
2801

Fundamentos do C#
Funções ou Métodos
Funções ou Métodos

Definições
- Podemos segmentar nosso programa em funções
- Também conhecidos como métodos
- O main é um exemplo de método
- Possui um retorno, um nome e parâmetros
- Esta composição é camada de assinatura
- Começam sempre com maiúscula
Laços de Repetição: Do

static void Main(string[] args)


{
// Invocação do método
MeuMetodo("C# é legal!");
}

// Definição do método
static void MeuMetodo(string parametro)
{
Console.WriteLine(parametro);
}
Laços de Repetição: Do

// Definição do método
// Retorna uma string e recebe vários parâmetros
static string RetornaNome(string nome, string sobrenome)
{
// Retorna o nome e sobrenome
return nome + " " + sobrenome;
}
Laços de Repetição: Do

static void Main(string[] args)


{
//Invocação do método
// Armazena o resultado em uma variável
var nome = RetornaNome("André", "Baltieri");

//Imprime o nome na tela


Console.WriteLine(nome);
}
2801

Fundamentos do C#
Tipos de Referência e Tipos de Valor
Heap e Stack

Definições
- A memória é dividida em duas partes, Heap e Stack
- Heap armazena os dados
- Stack armazena as referências para os dados
Value Types

Definições
- Qualquer tipo no .NET é tratado como
- Tipo de Referência (Reference Type)
- Tipo de Valor (Value Type)
- Tipos de valor armazenam dados
- São armazenados em um local da memória chamada Stack
Value Types

Definições
- Quando armazenamos um valor, a memória é alocada
- Este espaço armazena o dado criado
- Nossa variável acessa este dado diretamente
- Se assimilarmos uma variável do tipo de valor a outra
- O valor será COPIADO
- Ambas serão independents
- Built-in, Structs, Enums
- Garbage Collector não acessa o Stack
Value Types

int x = 25;
int y = x; // Y é uma cópia de X
Console.WriteLine(x);// 25
Console.WriteLine(y);// 25
x = 32;// Somente X foi alterado
Console.WriteLine(x);// 32
Console.WriteLine(y);// 25
Reference Types

Definições
- Armazenam o endereço do objeto que contém os dados
- Não armazena os dados em si
- São armazenados em um local da memória chamado de Heap
- Ao assimilar uma variável
- Criará uma referência
- Aponta para a mesma informação
- Não são independentes
- Quando não mais utilizados são marcados para exclusão
- Garbage Collector passa removendo todos eles
- Classes, Objects, Arrays…
Reference Types

var arr = new string[2];


arr[0] = "Item 1";
var arr2 = arr; // Não cria uma cópia

Console.WriteLine(arr[0]);
Console.WriteLine(arr2[0]);

// Altera as duas listas


arr[0] = "Item Alterado";
Console.WriteLine(arr[0]);
Console.WriteLine(arr2[0]);
2801

Fundamentos do C#
Structs
Structs

Definições
- Tipos de dado estruturado
- Apenas a estrutura, o esqueleto
- Tipo de valor
- Armazenam apenas outros tipos de dados
- Definido pela palavra struct
- Composto de propriedades e métodos
- Nome sempre com maiúsculo
- O mesmo para propriedades e métodos
- Criado a partir da palavra new
- Neste momento sim temos os valores
Structs

Definições
- A anatomia de uma estrutura normalmente é

struct Product
{
// Propriedades

// Métodos
}
Structs

Definições
- Anatomia de uma propriedade

struct Product
{
// Propriedades
public int Id;

// Métodos
}
Structs

Definições
- Anatomia de um método

struct Product
{
public intId;
public float Price;

public float PriceInDolar(float dolar)


{
return Price * dolar;
}
}
Structs

Definições
- Para criar uma estrutura

static void Main(string[] args)


{
// Cria uma estrutura
var product = new Product();
}
Structs

Definições
- Vem com dados dos tipos padrão
- Para preencher os dados

var product = new Product();


product.Id = 1;
product.Title = "Mouse gamer";
product.Price = 197.23f;
Console.WriteLine(product.Id);
Console.WriteLine(product.Title);
Console.WriteLine(product.Price);
Structs

Definições
- Método construtor é um método com mesmo nome da struct

struct Product
{
public Product(intid, string title, float price)
{
Id = id;
Title = title;
Price = price;
}
}
Structs

Definições
- Eles facilitam a criação de estruturas

var product = new Product(1, "Mouse Gamer", 128.75f);


Console.WriteLine(product.Id);
Console.WriteLine(product.Title);
Console.WriteLine(product.Price);
Console.WriteLine(product.PriceInDolar(5.70f));
2801

Fundamentos do C#
Enumeradores
Enumeradores

Definições
- Usado para fornecer uma melhor visualização do código
- Substituem o uso de inteiros
- Usados em listas curtas
- Usados em dados fixos
- Hard Coded
- Sempre em maiúsculo
- Começar com a letra E
Enums

Definições
- Anatomia de um enumerador

enum EEstadoCivil
{
// Enumeradores
}
Enums

Definições
- Anatomia de um enumerador

enum EEstadoCivil
{
Solteiro = 1,
Casado = 2,
Divorciado = 3
}
Enums

Definições
- Uso de um enumerador

struct Cliente
{
public string Nome;
public EEstadoCivil EstadoCivil;
}
Enums

Definições
- Uso de um enumerador

//Sem enum eradores


//var cliente = new Cliente("João Silva", 1);

//Com enum erador


var cliente = new Cliente("João Silva", EEstadoCivil.Casado);
Enums

Definições
- Exibindo dados de um enumerador

Console.WriteLine(cliente.Nome);
Console.WriteLine(cliente.EstadoCivil);// Escreve Casado
Console.WriteLine((int)cliente.EstadoCivil);// Escreve 2
2801

Fundamentos do C#
Revisão
Revisão

Neste módulo aprendemos


- Console, Variáveis, Constantes
- Tipos de dados
- Conversão de Dados
- Operadores (Aritméticos, Atribuição, Comparação e Lógicos)
- Estruturas Condicionais (If e Sqitch)
- Laços de Repetição (For, While e Do/While)
- Funções e Métodos
- Tipos de Referência e Tipos de Valor
- Estruturas
- Enumeradores

Você também pode gostar