Notas
C# fundaments
Conteúdo das notas (5)
Página 1
Introdução a aprendizagem c#
// A diferença entre Console.WriteLine e Console.Write
// Console.WriteLine() imprime uma mensagem no console de saída, porem, ele quebrara uma linha entre uma mensagem e outra. Já o Console.Write() não quebra linhas, escrevendo tudo na mesma linha.
// diferença entre char literal e string: um char literal é usado com aspas simples e abriga um numero pequeno de letras. Já uma string é usada com "" pois possui muito char literais
// numeros flutuantes: Um número de ponto flutuante é um número que contém decimais, por exemplo, 3,14159. O C# dá suporte a três tipos de dados para representar números decimais: float, double e decimal. Cada tipo dá suporte a diferentes graus de precisão.
// tabelinha de numeros flutuantes:
//Float Type Precision
//----------------------------
//float ~6-9 digits
//double ~15-17 digits
//decimal 28-29 digits
// Para criar um float literal, acrescente a letra F após o número. Nesse contexto, o F é chamado de sufixo literal. O sufixo literal informa ao compilador que você deseja trabalhar com um valor do tipo float. Você pode usar f em letras minúsculas ou F em maiúsculas como o sufixo literal para float.
//Para criar um double literal, basta inserir um número decimal. O compilador usa como padrão o double literal quando um número decimal é inserido sem um sufixo literal.
//Para criar um literal decimal, acrescente a letra m após o número. Nesse contexto, o m é chamado de sufixo literal. O sufixo literal informa ao compilador que você deseja trabalhar com um valor do tipo decimal. Você pode usar m em letras minúsculas ou M em maiúsculas como o sufixo literal para decimal.
// DECLARANDO VARIAVEIS EM C#
//Para criar uma variável, primeiro você deve declarar o tipo de dados que ela armazenará, depois dar um nome a ela.
// exemplo: string firstName;
// regras para nomes de variaveis: Os nomes de variáveis podem conter caracteres alfanuméricos e o caractere de sublinhado. Caracteres especiais como o símbolo de hash # (também conhecido como símbolo de número ou símbolo da libra) ou o símbolo do dólar $ não são permitidos.
//Os nomes de variáveis precisam começar com uma letra alfabética ou um sublinhado, não um número.
//Os nomes de variáveis diferenciam maiúsculas de minúsculas, o que significa que string Value; e string value; são duas variáveis diferentes.
//Nomes de variáveis não podem ser uma palavra-chave do C#. Por exemplo, você não pode usar as seguintes declarações de variável: decimal decimal; ou string string;.
//Os nomes de variáveis devem usar minúsculas concatenadas, que é um estilo de escrita que usa uma letra minúscula no início da primeira palavra e uma letra maiúscula no início de cada palavra subsequente. Por exemplo, string thisIsCamelCase;.
//Os nomes de variáveis devem sempre começar com uma letra alfabética. Os desenvolvedores usam o sublinhado para uma finalidade especial, portanto, tente não usá-lo por enquanto.
//Os nomes de variáveis devem ser descritivos e sugestivos, no contexto do aplicativo. Escolha um nome para a variável que represente o tipo de dados que ela manterá.
//Os nomes de variáveis devem ser uma ou mais palavras inteiras unidas. Não use contrações ou abreviações, pois o nome da variável (e, consequentemente, a finalidade dela) pode não ficar claro para terceiros que lerem o seu código.
//Nomes de variável não devem incluir o tipo de dados da variável. Você poderá ser aconselhado a usar um estilo como string strValue;. Esse conselho não é mais atual.
ATRIBUIÇÃO DE UM VALOR A UMA VARIAVEL NO C#
importante observar que a atribuição ocorre da direita para a esquerda. Em outras palavras, o compilador do C# deve primeiro entender o valor no lado direito do operador de atribuição e, em seguida, ele pode executar a atribuição à variável no lado esquerdo do operador de atribuição. Se inverter a ordem, você confundirá o compilador de C#. importante observar que a atribuição ocorre da direita para a esquerda. Em outras palavras, o compilador do C# deve primeiro entender o valor no lado direito do operador de atribuição e, em seguida, ele pode executar a atribuição à variável no lado esquerdo do operador de atribuição. Se inverter a ordem, você confundirá o compilador de C#.
então, atribuir valor a uma variavel seria da seguinte forma: firstName = "Bob";
COMO QUEBRAR LINHA E ADICIONAR ESPAÇO NO C#
quebrar linha: /n
adicionar espaço: /t
Console.WriteLine("Hello\nWorld!");
Console.WriteLine("Hello\tWorld!");
COLOCANDO CAMINHOS DE PASTAS
se para encontrar um caminho de pasta em c# você utilizar o /, ele não entendera pois o / é usado para caminhos de escape, como ilustrado acima.
mas então como se resolve esse problema? é simples, basta usar //. exemplo: Console.WriteLine("c:\\source\\repos");
E SE EU QUISER QUE A / NÃO CRIE UM ESPAÇO ENTRE OS ELEMENTOS?
Para criar uma cadeia de caracteres textual, use a diretiva @ antes da cadeia de caracteres literal.Para criar uma cadeia de caracteres textual, use a diretiva @ antes da cadeia de caracteres literal.
EXEMPLO:
Console.WriteLine(@" c:\source\repos (this is where your code goes)");
Caracteres de escape Unicode
Você também pode adicionar caracteres codificados em cadeias de caracteres literais usando a sequência de escape \u e, em seguida, um código de quatro caracteres representando algum caractere em Unicode (UTF-16).
// Kon'nichiwa World
Console.WriteLine("\u3053\u3093\u306B\u3061\u306F World!");
COMO CONCATENAR UMA CADEIA DE CARACTERES
string firstName = "Bob";
string message = "Hello " + firstName;
Console.WriteLine(message);
{} EM C#
retorna tudo o que tiver algum valor.
JA O $
A cadeia de caracteres literal se torna um modelo quando ele é prefixado pelo caractere $.
Combinar literais textuais e interpolação de cadeia de caracteres
Suponha que você precise usar um literal textual em seu modelo. Você pode usar o símbolo @ de prefixo literal textual e o símbolo $ de interpolação de cadeia de caracteres juntos.
ex: string projectName = "First-Project";
Console.WriteLine($@"C:\Output\{projectName}\Data");
COMO IMPRIMIR ASPAS DUPLAS NO CONSOLE
é so usar a barra invertida antes das aspas. exemplo: string minhaString = "Ele disse: \"Olá, mundo!\";
O QUE FAZER PARA CONCATENAR INT COM CHAR
se você salvar dados do tipo inteiro e char e invoca-los depois, o compilador tentara transformar o int em uma string temporaria. Agora se você usar essa variavel do tipo int em uma operação, faz se necessario o uso do (), dessa forma o compilador entende que se trata de uma operação e não de uma string.
FAZER OPERAÇÃO DE QUOCIENTE EM C#
se o numero n for inteiro, usa se o tipo de dado decimal, que ficaria da seguinte forma:
decimal decimalQuotient = 7 / 5.0m;
decimal decimalQuotient = 7.0m / 5.0m;
quando se usa o tipo decimal, é obrigatorio o uso do "m" e pelo menos um dos numeros precisa ter o "." alguma coisa.
COMO FAÇO PRA CONVERTER UM INT EM UM DECIMAL?
é so usar parenteses antes de invocar a variavel, com decimal dentro. exemplo:
int first = 7;
int second = 5;
decimal quotient = (decimal)first / (decimal)second;
Console.WriteLine(quotient);
ORDEM DE RESOLUÇÃO DE OPERAÇÕES
Em matemática, PEMDAS é um acrônimo que ajuda os alunos a se lembrar da ordem das operações. A ordem é:
Parêntese (o que estiver dentro do parêntese é executado primeiro)
Exponentes
Multiplicação e Divisão (da esquerda para a direita)
Adição e Subtração (da esquerda para a direita)
Incrementar e decrementar
Com frequência, você precisará incrementar e/ou decrementar valores, especialmente quando estiver escrevendo lógicas de loop ou o códigos que interagem com estruturas de dados.
O operador += adiciona e atribui o valor à direita do operador ao valor à esquerda do operador. Portanto, as linhas dois e três do seguinte snippet de código são equivalentes:
int value = 0; // value is now 0.
value = value + 5; // value is now 5.
value += 5; // value is now 10.
O operador ++ incrementa em uma (1) unidade o valor da variável. Portanto, as linhas dois e três do seguinte snippet de código são equivalentes:
int value = 0; // value is now 0.
value = value + 1; // value is now 1.
value++; // value is now 2.
Página 2
code:
dotnet new console -o ./CsharpProjects/TestProject
A estrutura de um comando CLI consiste nas três partes a seguir:
O driver: dotnet neste exemplo.
O comando: new console neste exemplo.
Os argumentos do comando: -o ./CsharpProjects/TestProjectneste exemplo.
Argumentos de comando são parâmetros opcionais que podem ser usados para fornecer informações adicionais. O comando anterior pode ser executado sem especificar o local da pasta opcional. Por exemplo: dotnet new console. Nesse caso, o novo aplicativo de console seria criado no local da pasta atual.
O dotnet buildcomando constrói o projeto e suas dependências em um conjunto de binários. Os binários incluem o código do projeto em arquivos de linguagem intermediária (IL) com extensão .dll. Dependendo do tipo de projeto e das configurações, outros arquivos também podem ser incluídos. Se estiver curioso, você pode encontrar o arquivo TestProject.dll no painel EXPLORER em um local de pasta semelhante ao seguinte caminho:
Você pode pensar em uma classe como um contêiner para métodos, como as seções da biblioteca pública. Os desenvolvedores normalmente mantêm os métodos relacionados juntos em uma única classe. Como você viu no exemplo anterior, quaisquer métodos que possam enviar ou receber informações de uma janela do console são coletados na System.Consoleclasse da Biblioteca de Classes .NET.
Pela sua experiência anterior com o Console.WriteLine()método, você já deve saber o básico:
Comece digitando o nome da classe. Neste caso, o nome da classe é Console.
Adicione o operador de acesso de membro, o .símbolo.
Adicione o nome do método. Neste caso, o nome do método é WriteLine.
Adicione o operador de invocação de método, que é um conjunto de parênteses ().
Por fim, especifique os argumentos que serão passados ao método, se houver, entre os parênteses do operador de invocação do método. Nesse caso, você especifica o texto que deseja que o Console.WriteLine()método grave no console (por exemplo, "Hello World!").
Pela sua experiência anterior com o Console.WriteLine()método, você já deve saber o básico:
Comece digitando o nome da classe. Neste caso, o nome da classe é Console.
Adicione o operador de acesso de membro, o .símbolo.
Adicione o nome do método. Neste caso, o nome do método é WriteLine.
Adicione o operador de invocação de método, que é um conjunto de parênteses ().
Por fim, especifique os argumentos que serão passados ao método, se houver, entre os parênteses do operador de invocação do método. Nesse caso, você especifica o texto que deseja que o Console.WriteLine()método grave no console (por exemplo, "Hello World!").
Métodos com estado versus métodos sem estado
Em projetos de desenvolvimento de software, o termo estado é usado para descrever a condição do ambiente de execução em um momento específico. À medida que seu código é executado linha por linha, os valores são armazenados em variáveis. A qualquer momento durante a execução, o estado atual da aplicação é a coleção de todos os valores armazenados na memória.
Alguns métodos não dependem do estado atual do aplicativo para funcionar corretamente. Em outras palavras, os métodos sem estado são implementados para que possam funcionar sem fazer referência ou alterar quaisquer valores já armazenados na memória. Os métodos sem estado também são conhecidos como métodos estáticos .
Por exemplo, o Console.WriteLine()método não depende de nenhum valor armazenado na memória. Ele desempenha sua função e finaliza sem impactar de forma alguma o estado da aplicação.
Outros métodos, entretanto, devem ter acesso ao estado do aplicativo para funcionar corretamente. Em outras palavras, os métodos com estado são construídos de forma que dependam de valores armazenados na memória por linhas de código anteriores que já foram executadas. Ou modificam o estado do aplicativo atualizando valores ou armazenando novos valores na memória. Eles também são conhecidos como métodos de instância .
Métodos com estado (instância) controlam seu estado em campos , que são variáveis definidas na classe. Cada nova instância da classe obtém sua própria cópia dos campos nos quais deseja armazenar o estado.
Uma única classe pode suportar métodos com e sem estado. No entanto, quando precisar chamar métodos com estado, você deve primeiro criar uma instância da classe para que o método possa acessar o estado.
Métodos com estado versus métodos sem estado
Em projetos de desenvolvimento de software, o termo estado é usado para descrever a condição do ambiente de execução em um momento específico. À medida que seu código é executado linha por linha, os valores são armazenados em variáveis. A qualquer momento durante a execução, o estado atual da aplicação é a coleção de todos os valores armazenados na memória.
Alguns métodos não dependem do estado atual do aplicativo para funcionar corretamente. Em outras palavras, os métodos sem estado são implementados para que possam funcionar sem fazer referência ou alterar quaisquer valores já armazenados na memória. Os métodos sem estado também são conhecidos como métodos estáticos .
Por exemplo, o Console.WriteLine()método não depende de nenhum valor armazenado na memória. Ele desempenha sua função e finaliza sem impactar de forma alguma o estado da aplicação.
Outros métodos, entretanto, devem ter acesso ao estado do aplicativo para funcionar corretamente. Em outras palavras, os métodos com estado são construídos de forma que dependam de valores armazenados na memória por linhas de código anteriores que já foram executadas. Ou modificam o estado do aplicativo atualizando valores ou armazenando novos valores na memória. Eles também são conhecidos como métodos de instância .
Métodos com estado (instância) controlam seu estado em campos , que são variáveis definidas na classe. Cada nova instância da classe obtém sua própria cópia dos campos nos quais deseja armazenar o estado.
Uma única classe pode suportar métodos com e sem estado. No entanto, quando precisar chamar métodos com estado, você deve primeiro criar uma instância da classe para que o método possa acessar o estado.
Criando uma instância de uma classe
Uma instância de uma classe é chamada de objeto . Para criar uma nova instância de uma classe, você usa o newoperador. Considere a seguinte linha de código que cria uma nova instância da Randomclasse para criar um novo objeto chamado dice:
Criando uma instância de uma classe
Uma instância de uma classe é chamada de objeto . Para criar uma nova instância de uma classe, você usa o newoperador. Considere a seguinte linha de código que cria uma nova instância da Randomclasse para criar um novo objeto chamado dice:
Random dice = new Random();
O newoperador faz várias coisas importantes:
Primeiro ele solicita um endereço na memória do computador grande o suficiente para armazenar um novo objeto baseado na Randomclasse.
Ele cria o novo objeto e o armazena no endereço de memória.
Retorna o endereço da memória para que possa ser salvo no diceobjeto.
Valores de retorno
Alguns métodos são projetados para completar sua função e terminar “silenciosamente”. Em outras palavras, eles não retornam um valor quando terminam. Eles são chamados de métodos void .
Parâmetros e argumentos do método na instrução de chamada
Ao chamar um método, você pode passar valores que o método usará para completar sua tarefa. Esses valores são chamados de argumentos . O método usa os argumentos para atribuir valores aos parâmetros definidos na assinatura do método. Um método pode exigir um ou mais parâmetros para realizar sua tarefa, ou nenhum
Muitas vezes, os termos 'parâmetro' e 'argumento' são usados indistintamente. No entanto, 'parâmetro' refere-se à variável que está sendo usada dentro do método. Um 'argumento' é o valor passado quando o método é chamado.
Métodos sobrecarregados
Muitos métodos na biblioteca de classes .NET têm assinaturas de método sobrecarregadas . Entre outras coisas, isso permite chamar o método com ou sem argumentos especificados na instrução de chamada.
Um método sobrecarregado é definido com múltiplas assinaturas de método. Os métodos sobrecarregados fornecem diferentes maneiras de chamar o método ou fornecer diferentes tipos de dados.
Em alguns casos, versões sobrecarregadas de um método são usadas para definir um parâmetro usando diferentes tipos de dados. Por exemplo, o Console.WriteLine()método possui 19 versões sobrecarregadas diferentes. A maioria dessas sobrecargas permite que o método aceite tipos diferentes e então grave as informações especificadas no console. Considere o seguinte código:
Página 3
O que é um bloco de código?
Um bloco de código é uma coleção de uma ou mais linhas de código definidas por um símbolo de chave de abertura e fechamento { }. Ele representa uma unidade completa de código que possui um único propósito em seu sistema de software. Nesse caso, em tempo de execução, todas as linhas de código do bloco de código serão executadas se a expressão booleana for verdadeira. Por outro lado, se a expressão booleana for falsa, todas as linhas de código no bloco de código serão ignoradas.
Adicione outra instrução if para implementar o bônus de duplas
Em seguida, você pode implementar a regra: "Se dois dados lançados resultarem no mesmo valor, você receberá dois pontos de bônus por lançar duplas". Modifique o código da etapa anterior para corresponder à seguinte listagem de código:
No Editor de código do Visual Studio, localize o cursor na linha de código em branco acima da primeira ifinstrução.
Para criar seu recurso de jogo de “duplas”, insira a seguinte ifdeclaração.
c#cópia de
if ((roll1 == roll2) || (roll2 == roll3) || (roll1 == roll3)) { Console.WriteLine("You rolled doubles! +2 bonus to total!"); total += 2; }
Aqui você combina três expressões booleanas para criar uma expressão booleana composta em uma única linha de código. Isso às vezes é chamado de condição composta . Você tem um conjunto externo de parênteses que combina três conjuntos internos de parênteses separados por duas barras verticais.
Os caracteres de barra dupla ||são o operador lógico OR , que basicamente diz "ou a expressão à minha esquerda OU a expressão à minha direita deve ser verdadeira para que toda a expressão booleana seja verdadeira". Se ambas as expressões booleanas forem falsas, então toda a expressão booleana será falsa. Você usa dois operadores lógicos OR para poder estender a avaliação para uma terceira expressão booleana.
Primeiro você avalia (roll1 == roll2). Se isso for verdade, então toda a expressão é verdadeira. Se for falso, você avalia (roll2 == roll3). Se isso for verdade, então toda a expressão é verdadeira. Se for falso, você avalia (roll1 == roll3). Se isso for verdade, então toda a expressão é verdadeira. Se isso for falso, então toda a expressão é falsa.
SOBRE CARACTERES DE E COMERCIAL &&
Os caracteres de e comercial duplo &&são o operador lógico AND , que basicamente diz "somente se ambas as expressões forem verdadeiras, então a expressão inteira é verdadeira". Nesse caso, se roll1for igual a roll2e roll2for igual a roll3, então, por dedução, roll1deve ser igual a roll3e o usuário rolou triplos.
Atribuir valores aos elementos de um array
Neste ponto, você declarou um array de strings, mas cada elemento do array está vazio. Para acessar um elemento de uma matriz, você usa um índice numérico baseado em zero entre colchetes. Você pode atribuir um valor a um elemento do array usando =como se fosse uma variável regular.
Observe que você está usando o nome do array para acessar os elementos do array. Cada elemento é acessado individualmente especificando o número do índice baseado em zero entre colchetes.
Use a propriedade Length de um array
Dependendo de como o array é criado, você pode não saber antecipadamente quantos elementos um array contém. Para determinar o tamanho de uma matriz, você pode usar a Lengthpropriedade
Observação A Lengthpropriedade de uma matriz não é baseada em zero.
No final do seu arquivo de código, para informar o número de pedidos fraudulentos, digite o seguinte código:
c#cópia de
Console.WriteLine($"There are {fraudulentOrderIDs.Length} fraudulent orders to process.");
Loop através de um array usando foreach
A foreachinstrução fornece uma maneira simples e limpa de iterar pelos elementos de um array. A foreachinstrução processa os elementos da matriz em ordem crescente de índice, começando com o índice 0 e terminando com o índice Length - 1. Ela usa uma variável temporária para armazenar o valor do elemento da matriz associado à iteração atual. Cada iteração executará o bloco de código localizado abaixo da foreachdeclaração.
exemplo de foreach
string[] names = { "Rowena", "Robin", "Bao" };
foreach (string name in names)
{
Console.WriteLine(name);
}
o valor retornado vai ser : "Rowena", "Robin", "Bao"
portanto fica na ordem crescente.
Regras de nomes de variáveis
Existem algumas regras de nomenclatura de variáveis que são aplicadas pelo compilador C#.
Os nomes das variáveis podem conter caracteres alfanuméricos e o caractere de sublinhado (_). Caracteres especiais como libra #, travessão -e cifrão $não são permitidos.
Os nomes das variáveis devem começar com uma letra alfabética ou sublinhado, não um número. Usar um caractere de sublinhado para iniciar um nome de variável normalmente é reservado para campos de instância privada. Um link para leitura adicional pode ser encontrado no resumo do módulo.
Os nomes das variáveis NÃO devem ser uma palavra-chave C#. Por exemplo, estas declarações de nomes de variáveis não serão permitidas: float float;ou string string;.
Os nomes das variáveis diferenciam maiúsculas de minúsculas, o que significa que string MyValue;e string myValue;são duas variáveis diferentes.
Página 4
O que é uma expressão?
Uma expressão é qualquer combinação de valores (literal ou variável), operadores e métodos que retornam um único valor. Uma instrução é uma instrução completa em C# e as instruções são compostas por uma ou mais expressões. Por exemplo, a if instrução a seguir contém uma única expressão que retorna um único valor:
if (myName == "Luiz")
Avaliando igualdade e desigualdade
Uma das avaliações de código mais comuns é verificar se dois valores são iguais. Ao verificar a igualdade, você localizará o operador de igualdade ==entre os dois valores que estão sendo verificados. Se os valores em ambos os lados do operador de igualdade forem equivalentes, a expressão retornará true. Caso contrário, ele retornará false.
Por outro lado, talvez você também precise verificar se dois valores não são iguais. Para verificar a desigualdade, você usará o operador de desigualdade != entre os dois valores.
Antes de verificar a igualdade de dois valores de string, especialmente quando um ou ambos os valores foram inseridos por um usuário, você deve:
Certifique-se de que ambas as strings estejam todas em maiúsculas ou minúsculas usando o método auxiliar ToUpper()ou ToLower()em qualquer valor de string.
Remova quaisquer espaços em branco iniciais ou finais usando o Trim()método auxiliar em qualquer valor de string.
Métodos que retornam um valor booleano
Alguns métodos retornam um valor booleano ( trueou false). No exercício a seguir, você usará um método integrado da Stringclasse para determinar se uma string maior contém ou não uma palavra ou frase específica que seja significativa para seu aplicativo.
string pangram = "The quick brown fox jumps over the lazy dog.";
Console.WriteLine(pangram.Contains("fox"));
Console.WriteLine(pangram.Contains("cow"));
O que é negação lógica?
O termo "Negação Lógica" refere-se ao operador de negação unário !. Algumas pessoas chamam esta operadora de "não operadora". Quando você coloca o !operador antes de uma expressão condicional (ou qualquer código avaliado como trueou false), ele força o código a reverter a avaliação do operando. Quando a negação lógica é aplicada, a avaliação produz true, se o operando for avaliado como false, e false, se o operando for avaliado como true.
// These two lines of code will create the same output
Console.WriteLine(pangram.Contains("fox") == false);
Console.WriteLine(!pangram.Contains("fox"));
Operador de desigualdade versus negação lógica
O operador de desigualdade !=inclui um !caractere, mas não deve ser confundido com negação lógica. O operador de desigualdade retorna truese seus operandos não forem iguais e retorna falsese os operandos forem iguais. Para os operandos dos tipos internos, a expressão x != yproduz o mesmo resultado que a expressão !(x == y)(um exemplo de negação lógica).
O exemplo de código a seguir demonstra o uso do !=operador:
int a = 7;
int b = 6;
Console.WriteLine(a != b); // output: True
string s1 = "Hello";
string s2 = "Hello";
Console.WriteLine(s1 != s2); // output: Falseint a = 7;
int b = 6;
Console.WriteLine(a != b); // output: True
string s1 = "Hello";
string s2 = "Hello";
Console.WriteLine(s1 != s2); // output: False
Qual é o operador condicional?
O operador condicional ?: avalia uma expressão booleana e retorna um de dois resultados dependendo se a expressão booleana é avaliada como verdadeira ou falsa. O operador condicional é comumente referido como operador condicional ternário.
Aqui está o formulário básico:
? :
exemplo de codigo usando o ?
int saleAmount = 1001;
// int discount = saleAmount > 1000 ? 100 : 50;
Console.WriteLine($"Discount: {(saleAmount > 1000 ? 100 : 50)}");
Observe que é necessário colocar toda a instrução do operador condicional entre parênteses. Os parênteses garantem que o tempo de execução entenda sua intenção, que é exibir o resultado condicional em vez do resultado da avaliação da condição (saleAmount > 1000).
Exercício – Implementar uma instrução switch
200 XP
11 minutos
Uma switchinstrução é uma instrução de seleção C# que fornece uma alternativa para uma if-elseif-elseconstrução de ramificação. A switchinstrução oferece vantagens sobre uma if-elseif-elseconstrução ao avaliar um único valor em relação a uma lista de valores correspondentes conhecidos.
Como funciona uma instrução switch?
A switchinstrução escolhe uma seção de código para executar em uma lista de possíveis seções de switch. A seção switch selecionada é escolhida com base em uma correspondência de padrão com a expressão de correspondência da instrução.
Considere o seguinte exemplo de código que mostra a estrutura básica da switchinstrução:
switch (fruit)
{
case "apple":
Console.WriteLine($"App will display information for apple.");
break;
case "banana":
Console.WriteLine($"App will display information for banana.");
break;
case "cherry":
Console.WriteLine($"App will display information for cherry.");
break;
}
A expressão de correspondência (que também pode ser chamada de expressão switch ) é o valor após a switchpalavra-chave, neste caso (fruit). Cada seção de switch é definida por um padrão de caso . Os padrões de caso são construídos usando a palavra-chave caseseguida por um valor. O primeiro padrão de caso neste exemplo é: case "apple":. Os padrões de caso são expressões booleanas avaliadas como trueou false. Cada seção switch inclui um pequeno número de linhas de código que serão executadas se o padrão case corresponder à expressão match. Neste exemplo, se fruit for atribuído um valor "apple", o primeiro padrão de caso será avaliado como truee essa seção switch será executada.
A expressão switch é avaliada em relação aos rótulos case de cima para baixo até que um valor igual à expressão switch seja encontrado. Se nenhum dos rótulos corresponder, a lista de instruções para o defaultcaso será executada. Se nenhum padrão for incluído, o controle será transferido para o ponto final da instrução switch. Cada rótulo deve fornecer um tipo de valor que corresponda ao tipo especificado na expressão switch.
No nosso exemplo:
a expressão switch é(employeeLevel)
cada seção de switch possui um único rótulo de switch ( caseou default).
a seção switch correspondente é definida por case: 200, desde employeeLevel = 200.
Observe que cada seção do switch é separada da próxima.
Apenas uma seção de switch pode ser executada. Isso significa que a execução de uma seção de comutação não pode “passar” para a próxima seção de comutação. A breakpalavra-chave é uma das várias maneiras de encerrar uma seção de troca antes de passar para a próxima seção. Se você esquecer a breakpalavra-chave (ou, opcionalmente, a returnpalavra-chave), o compilador gerará um erro.
Qual é a for afirmação?
A for instrução itera através de um bloco de código um número específico de vezes. Este nível de controle torna a for instrução única entre as outras instruções de iteração. A foreachinstrução percorre um bloco de código uma vez para cada item em uma sequência de dados, como uma matriz ou coleção. A whileinstrução itera através de um bloco de código até que uma condição seja atendida.
Além disso, a forinstrução oferece muito mais controle sobre o processo de iteração, expondo as condições da iteração.
Digite o código a seguir no Editor de código do Visual Studio.
for (int i = 0; i < 10; i++)
{
Console.WriteLine(i);
A fordeclaração inclui as seguintes seis partes:
A forpalavra-chave.
Um conjunto de parênteses que define as condições de foriteração. Os parênteses contêm três partes distintas, separadas pelo operador de final de instrução, um ponto e vírgula.
A primeira parte define e inicializa a variável iteradora. Neste exemplo: int i = 0. Esta seção é chamada de inicializador .
A segunda parte define a condição de conclusão. Neste exemplo: i < 10. Em outras palavras, o tempo de execução continuará a iterar sobre o código no bloco de código abaixo da forinstrução while iis less than 10. Quando ise torna igual a 10, o tempo de execução para de executar o forbloco de código da instrução. Os documentos referem-se a esta seção como a condição .
A terceira parte define a ação a ser executada após cada iteração. Neste caso, após cada iteração, i++incrementará o valor iem 1. Os documentos referem-se a esta seção como iterator .
Finalmente, o bloco de código. O bloco de código contém o código que será executado para cada iteração. Observe que o valor de ié referenciado dentro do bloco de código. Os documentos referem-se a esta seção como body .
Alterar as condições de iteração
Como afirmamos no início, a forinstrução possui duas qualidades únicas entre as instruções de iteração.
A forinstrução deve ser usada quando você sabe quantas vezes precisa iterar um bloco de código com antecedência.
A forinstrução permite controlar a maneira como cada iteração é tratada.
E se precisássemos iterar um bloco de código, mas quiséssemos fazer uma contagem regressiva em vez de uma contagem crescente?
Loop através de cada elemento de uma matriz
Um uso comum para a forinstrução é iterar através de uma matriz de elementos, especialmente se você precisar de algum controle sobre a maneira como a iteração acontece. Enquanto foreachitera por cada elemento do array, a forinstrução pode ser ajustada para fornecer mais personalização.
Use o Editor de código do Visual Studio para atualizar seu código da seguinte maneira:
string[] names = { "Alex", "Eddie", "David", "Michael" };
for (int i = names.Length - 1; i >= 0; i--)
{
Console.WriteLine(names[i]);
}
Reserve um minuto para revisar seu código atualizado.
Primeiramente, observe que instanciamos um array de strings chamado namesque contém quatro nomes.
A seguir, observe que estamos usando a Array.Lengthpropriedade para obter o número de elementos no array e que estamos usando esse valor para inicializar nossa variável iteradora ( int i = names.Length - 1). Subtraímos 1 do valor porque o número do índice dos elementos da matriz é baseado em zero (os números do índice dos quatro elementos são 0-3).
Finalmente, observe que escolhemos iterar no array de trás para frente - algo que não podemos fazer com a foreachinstrução. Usamos o valor da variável de iteração dentro do bloco de código para especificar o número de índice dos elementos do array ( names[i]).
Página 5
Qual é a instrução do-while?
A do-whileinstrução executa uma instrução ou um bloco de instruções enquanto uma expressão booleana especificada é avaliada como verdadeira. Como essa expressão é avaliada após cada execução do loop, um loop do-while é executado uma ou mais vezes.
do
{
// This code executes at least one time
} while (true);
O fluxo de execução começa dentro da chave. O código é executado pelo menos uma vez e, em seguida, a expressão booleana próxima à whilepalavra-chave é avaliada. Se a expressão booleana retornar true, o bloco de código será executado novamente.
Um aprendizado importante para esta primeira tarefa é que o bloco de código de um do-whileloop será executado pelo menos uma vez. Ele poderia iterar um grande número de vezes e é improvável que saibamos antecipadamente quantas iterações haverá.
Random random = new Random();
int current = 0;
do
{
current = random.Next(1, 11);
Console.WriteLine(current);
} while (current != 7);
Como você viu, C# oferece suporte a quatro tipos de instruções de iteração: for, foreach, do-whilee while. A documentação de referência de linguagem da Microsoft descreve essas declarações da seguinte forma:
A forinstrução: executa seu corpo enquanto uma expressão booleana especificada (a 'condição') é avaliada como verdadeira.
A foreachinstrução: enumera os elementos de uma coleção e executa seu corpo para cada elemento da coleção.
A do-whileinstrução: executa condicionalmente seu corpo uma ou mais vezes.
A whileinstrução: executa condicionalmente seu corpo zero ou mais vezes.
Ao usar uma Console.ReadLine()instrução para obter a entrada do usuário, é prática comum usar uma string de tipo anulável (designada string?) para a variável de entrada e depois avaliar o valor inserido pelo usuário. O exemplo de código a seguir usa uma string de tipo anulável para capturar a entrada do usuário. A iteração continua enquanto o valor fornecido pelo usuário for nulo:
string? readResult;
Console.WriteLine("Enter a string:");
do
{
readResult = Console.ReadLine();
} while (readResult == null);
Se quiser usar Console.ReadLine()entrada para valores numéricos, você precisará converter o valor da string em um tipo numérico.
O int.TryParse()método pode ser usado para converter um valor de string em um número inteiro. O método utiliza dois parâmetros, uma string que será avaliada e o nome de uma variável inteira à qual será atribuído um valor. O método retorna um valor booleano. O exemplo de código a seguir demonstra o uso do int.TryParse()método:
// capture user input in a string variable named readResult
int numericValue = 0;
bool validNumber = false;
validNumber = int.TryParse(readResult, out numericValue);
Informações
- Descrição
- Notas sobre C# fundaments , criado por letticia mallory em 16-06-2024.
- Criado por
- letticia mallory · jun 2024
- Atualizado
- 26 jun 2024
- Visualizações
- 1
- Avaliação