A declaração break é utilizada para sair imediatamente do corpo de um loop (laço de repetição), e a execução do programa continua na próxima instrução do programa. Em outras palavras, ele é usado para interromper um loop de repetição.
Veja um exemplo logo abaixo:
using System;
namespace DeclaracaoBreak {
class Program {
static void Main(string[] args) {
int numero;
while(true) {
Console.Write("Digite um número: ");
numero = int.Parse(Console.ReadLine());
if(numero == 15) {
break;
}
else {
Console.WriteLine("Número digitado: {0}.", numero);
}
}
Console.WriteLine("Esta mensagem aparece após o loop!");
Console.Read();
}
}
}
No código acima, ele sairá do loop após digitar o número 15.
PS: O laço while com true gera um loop infinito, que só é interrompido com o break, nesse caso.
Assim com o break, podemos usar o continue para interromper um loop, só que este continua a execução do loop, ignorando os comandos que estão após ele antes de repetir novamente.
Veja um exemplo abaixo:
using System;
namespace DeclaracaoContinue {
class Program {
static void Main(string[] args) {
int numero;
while(true) {
Console.Write("Digite um número: ");
numero = int.Parse(Console.ReadLine());
if(numero < 10 || numero > 20) {
continue;
}
else {
Console.WriteLine("Número: {0}.", numero);
}
}
Console.WriteLine("Esta mensagem aparece após o loop!");
Console.Read();
}
}
}
Pode ver no código acima, que apenas números entre 10 e 20 são mostrados, os outros são ignorados com o continue.
PS: Podemos usar um if aninhado dentro do else com o break, para podermos encerrar o programa, dessa forma:
if(numero < 10 || numero > 20) {
continue;
}
else {
if(numero == 15) {
break;
}
Console.WriteLine("Número: {0}.", numero);
}
É muito fácil trabalhar com datas em C#, desde que usemos a biblioteca Datetime, dessa forma:
DateTime atual = DateTime.Now;
string formataData = atual.ToString("dd/MM/yy"); // Dia, mês e ano, MM exibe o número do mês, MMM exibe abreviado. YY exibe só os dois dígitos do ano
string formataExt = atual.ToString("dd 'de' MMMM 'de' yyyy',' ddd"); // O que está nas aspas simples é identificado como texto, MMMM exibe o mês completo, YYYY exibe o ano completo
string formataHora = atual.ToString("HH:mm:ss"); // Hora, minuto e segundo, HH exibe no formato 24 H, hh exibe no formato 12 H
string formataSem = atual.ToString("dddd"); // Dia da semana, ddd exibe abreviado, dddd exibe inteiro
Console.WriteLine(formataData);
Console.WriteLine(formataExt);
Console.WriteLine(formataHora);
Console.WriteLine(formataSem);
Para exibir no formato 12 horas com AM/PM, utilize o tt nas máscaras, assim:
string formataHora = atual.ToString("hh:mm:ss tt");
Como visto acima, basta usarmos máscaras para formatar a data como queremos.
Um array é uma sequência não-ordenada de itens. Todos os itens de um array são do mesmo tipo. Os itens em um array são armazenados em um bloco contíguo da memória RAM e são acessados por meio de um número de índice. Podemos criar array de qualquer tipo, tanto de valor quanto de referência.
Os arrays são tipos de referência, independentemente do tipo de seus elementos, ou seja, uma variável array faz referência a um bloco de memória que armazenará os elementos do array no heap. Assim como com as variáveis de classe, a memória não é alocada para o array até que criemos uma instância dele usando o operador new (ou seja, o array é um objeto em C#). O array soment recebe espaço na memória quando a instância é criada, e é quanto especificamos o tamanho do array.
PS: Como a memória para a instância do array é alocada dinamicamente, o tamanho do array pode ser calculado pelo tempo de execução.
Basicamente, a instanciação de array em C# é assim:
int[] numerosLoteria; // Declaração do vetor.
numerosLoteria = new int[6]; // Criação da quantidade de casas do nosso vetor
PS: os colchetes são colocados no tipo, e não no nome da variável. Atenção para isso. E ao declarar as casas, sempre use o new com o tipo dos elementos do array (por exemplo, int, float, string ou classe invólucro).
Podemos inicializar os elementos de um array fornecendo uma lista de elementos separados por vírgulas, entre chaves, assim:
int[] numerosLoteria = new int[6]{2, 23, 34, 12, 29, 44};
Podemos também usar essa sintaxe:
int[] numerosLoteria = {2, 23, 34, 12, 29, 44};
Omitindo a palavra new int, o compilador calcula o tamanho do array a partir da lista de elementos inicializadores e gera o código que cria o array.
Veja um exemplo prático de exibição de array:
using System;
namespace ArrayAtribuicaoELeitura {
class Program {
static void Main(string[] args) {
int[] numerosLoteria = new int[6] {2, 23, 34, 12, 29, 44};
int valor;
valor = numerosLoteria[3];
Console.WriteLine("O elemento é {0}.", valor.ToString());
Console.Read();
}
}
}
PS: Lembre-se que arrays se contam a partir do 0.
Podemos também alterar o valor de uma das casas do array assim:
int[] numerosLoteria = new int[6] {2, 23, 34, 12, 29, 44};
int valor;
valor = numerosLoteria[3];
valor = 40;
numerosLoteria[3] = valor;
Console.WriteLine("O elemento é {0}.", valor.ToString());
Console.Read();
Ou alterando um valor pelo teclado:
int[] numerosLoteria = new int[6] {2, 23, 34, 12, 29, 44};
int valor;
valor = numerosLoteria[3];
Console.Write("Digite um número: ");
valor = int.Parse(Console.ReadLine());
numerosLoteria[3] = valor; // Pode ser atribuida diretamente ao Console.ReadLine()
Console.WriteLine("O elemento é {0}.", valor.ToString());
Console.Read();
Para vermos a quantidade de elementos de uma lista, usamos o Length
, assim:
Console.WriteLine(numerosLoteria.Length);
Para ordenar os elementos da lista, usamos o Sort()
assim:
Array.Sort(numerosLoteria);
E para exibir invertido, podemos usar ele em conjunto com o Reverse()
, assim:
Array.Sort(numerosLoteria);
Array.Reverse(numerosLoteria);
Para exibir os elementos da lista, podemos usar o foreach, dessa forma:
foreach(int n in numerosLoteria) {
Console.WriteLine(n);
}
Da mesma forma, declaramos e lemos matrizes (arrays bidimensionais) assim:
int[,] numeros = new int[2,5] {{0, 2, 4, 6, 8},
{1, 3, 5, 7, 9}};
for(int l = 0; l < 2; l++) {
for(int c = 0; c < 5; c++) {
if(c < 5 - 1) {
Console.Write(numeros[l,c] + " ");
}
else {
Console.WriteLine(numeros[l,c]);
}
}
}
Assim como os vetores, as matrizes não precisam ter o new se forem inicializadas, ele só é necessário ao declararmos ela sem inicialização:
int[,] numeros = {{0, 2, 4, 6, 8},
{1, 3, 5, 7, 9}};
Só pra inicializar:
int[,] numeros = new int[2,5];
PS: Cuidado com o uso de matrizes em C#, o vício de outras linguagens pode nos levar a cometer erros, pois na declaração e exibição usamos apenas um par de colchetes, com uma vírgula dentro deles, tanto pra declaração quanto pra exibição.
Podemos consultar a propriedade Length para descobrir quantos elementos um array possui, e assim iterar por eles usando um laço for.
Veja um exemplo de exibição logo abaixo:
using System;
namespace ArrayIteracaoComForEForeach {
class Program {
static void Main(string[] args) {
int[] meuArray = {2, 4, 6, 3, 5, 9};
for(int i = 0; i < meuArray.Length; i++) {
Console.WriteLine(meuArray[i]);
}
Console.Read();
}
}
}
Veja outro exemplo, pedindo números do teclado:
using System;
namespace ArrayIteracaoComForEForeach {
class Program {
static void Main(string[] args) {
int[] meuArray = new int[5];
for(int i = 0; i < meuArray.Length; i++) {
Console.Write("Digite um número: ");
meuArray[i] = Convert.ToInt32(Console.ReadLine());
}
Console.WriteLine();
for(int i = 0; i < meuArray.Length; i++) {
Console.WriteLine("Posição {0}: {1}", i, meuArray[i]);
}
Console.Read();
}
}
}
Podemos iterar pelos elementos de um array para retornar seus elementos sem nos preocuparmos em determinar seu tamanho, usando a estrutura foreach.
Veja como usar ele logo abaixo:
using System;
namespace ArrayIteracaoComForEForeach {
class Program {
static void Main(string[] args) {
int[] meuArray = {2, 4, 6, 3, 5, 9};
foreach(int elemento in meuArray) {
Console.WriteLine(elemento);
}
Console.Read();
}
}
}
PS: A variável iterativa tem que ser do mesmo tipo do array.