Não foi possível atualizar as configurações de digitação. Recarregue a página para tentar novamente.
Exercício de digitação: Programação em linguagem C#
As regras de cálculo da precisão mudaram. Este exercício recomeça do início.
Não foi possível confirmar que a sessão concluída foi guardada. Tente guardá-la novamente sem voltar a escrever o texto.
Exercício de digitação: Programação em linguagem C#
A datilografia é importante na programação. Você será mais eficiente ao usar técnicas de digitação rápida para escrever código na linguagem de programação C#.
Programação em C# e datilografia
C# começou como uma linguagem voltada para aplicações de desktop no Windows, mas evoluiu para se tornar uma linguagem multiparadigma central no ecossistema .NET. Hoje é usada em aplicações web, APIs, programas de desktop, aplicativos móveis, desenvolvimento de jogos (especialmente com Unity) e microsserviços em nuvem. O design da linguagem enfatiza legibilidade, produtividade e integração estreita com ferramentas de desenvolvimento. Ao mesmo tempo, a sintaxe de C# é repleta de palavras-chave e símbolos, o que exige digitação precisa. Por isso, a digitação com dez dedos em C# (touch typing) não é apenas uma conveniência, mas uma base prática para evitar erros pequenos, porém críticos, em generics Ing.: generics - parâmetros de tipo, atributos, sistema de nulabilidade, expressões lambda e consultas LINQ. A digitação rápida em C# facilita a escrita e a edição do código durante a refatoração, especialmente em declarações longas com muitos símbolos. Ainda é necessário verificar o código e corrigir erros de compilação.
Convenções e estilo idiomático em C#
O estilo de C# segue convenções claras. Classes, structs e enums usam PascalCase. Métodos e propriedades também usam PascalCase, enquanto variáveis locais e parâmetros usam camelCase. Campos privados geralmente começam com underscore, como _value. Constantes costumam ser PascalCase, embora alguns times usem UPPER_SNAKE_CASE. Por convenção, os nomes das interfaces começam com "I", como IEnumerable e IDisposable. Essas convenções aumentam a legibilidade, mas tornam os identificadores longos. A prática da digitação com dez dedos em C# ajuda a digitar nomes como GetCustomerInvoicesAsync sem erros, e a digitação rápida em C# garante que o ritmo do trabalho não se perca.
Diretivas using, namespaces e estrutura
Um arquivo típico em C# começa com diretivas using, seguido de uma declaração de namespace. Versões mais recentes da linguagem permitem namespaces em escopo de arquivo, reduzindo a indentação. Ainda assim, nomes longos como System.Collections.Generic são propensos a erros. A digitação com dez dedos em C# ajuda a tornar essas sequências automáticas, e a digitação rápida em C# facilita a reorganização de imports.
namespace Demo.Utilities;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
Classes, structs e records
C# suporta classes (semântica de referência), structs (semântica de valor) e records Ing.: record - tipos compactos com igualdade baseada em valores. Records fornecem sintaxe concisa, mas exigem parênteses e vírgulas corretos. Structs podem usar modificadores como readonly ou ref. Um único símbolo mal colocado causa erro de compilação. A digitação com dez dedos em C# garante consistência, enquanto a digitação rápida em C# torna mais ágil expandir um record para uma classe complexa.
public record Invoice(Guid Id, string Customer, decimal Total);
public readonly struct Point
{
public int X { get; }
public int Y { get; }
public Point(int x, int y) { X = x; Y = y; }
}
Propriedades e membros de expressão
Propriedades são centrais em C#. Além das auto-implemented properties, existem propriedades init-only e membros de expressão (expression-bodied members) que usam =>. A sintaxe é curta, mas exige precisão. A digitação com dez dedos em C# ajuda a inserir => sem esforço, e a digitação rápida em C# facilita escrever rapidamente propriedades semelhantes.
public class Account
{
public decimal Balance { get; private set; }
public void Deposit(decimal amount) => Balance += amount;
}
Generics e restrições where
Generics fornecem segurança de tipo e reutilização. Exemplos incluem List<T> e Dictionary<TKey,TValue>, frequentemente com restrições where. Tipos aninhados como Dictionary<string, List<int>> são fáceis de errar. A digitação com dez dedos em C# torna natural usar parênteses angulares corretamente, enquanto a digitação rápida em C# acelera edições de constraints.
public class Repository<T> where T : class, new()
{
private readonly List<T> _items = new();
public void Add(T item) => _items.Add(item);
public IEnumerable<T> All() => _items;
}
Overloading, operadores e indexadores
Overloading Ing.: overloading - métodos com o mesmo nome mas parâmetros diferentes é amplamente usado em C#. É possível também sobrecarregar operadores e usar indexadores Ing.: indexer - propriedades acessadas como arrays. A sintaxe exige precisão com operator e parênteses. A digitação com dez dedos em C# garante consistência, e a digitação rápida em C# facilita a criação de várias sobrecargas rapidamente.
public readonly record struct Point(int X, int Y)
{
public static Point operator +(Point a, Point b) => new(a.X + b.X, a.Y + b.Y);
}
Lambda, delegates e eventos
Delegates Ing.: delegates - assinaturas de função tipadas e eventos são a base do modelo orientado a eventos em C#. Lambdas permitem funções anônimas concisas. Símbolos como => e ?. são pequenos, mas críticos. A digitação com dez dedos em C# ajuda a memorizá-los, e a digitação rápida em C# mantém o fluxo na implementação de handlers e funções curtas.
public event Action? Updated;
public void Raise() => Updated?.Invoke();
var square = (int x) => x * x;
LINQ e sintaxe de consultas
LINQ (Language Integrated Query) é um marco do C#. Pode ser escrito em cadeias de métodos ou em sintaxe semelhante a SQL. Pontos, parênteses e setas precisam de cuidado. A digitação com dez dedos em C# torna cadeias longas mais fluidas, e a digitação rápida em C# ajuda a experimentar filtros e transformações rapidamente.
var results = orders.Where(o => o.Total > 100)
.Select(o => o.Customer)
.OrderBy(n => n)
.ToList();
async/await e programação assíncrona
A programação assíncrona é uma força do C#. Com async e await a leitura do código é clara, mas esquecer um await pode alterar o comportamento radicalmente. Assinaturas Task<T> combinam generics e parênteses. A prática de digitação com dez dedos em C# permite treinar a escrita precisa dessas sequências, e a digitação rápida em C# facilita alterações nas assinaturas e a inclusão de tokens de cancelamento.
static async Task<string> FetchAsync(HttpClient http, string url)
{
using var resp = await http.GetAsync(url);
return await resp.Content.ReadAsStringAsync();
}
Pattern matching e switch expressions
Pattern matching reduz código redundante. Switch expressions usam setas e underscores e exigem precisão. A prática de digitação com dez dedos em C# ajuda a escrever essas construções com precisão, enquanto a digitação rápida em C# facilita testar variações.
static string Describe(object? x) => x switch
{
null => "null",
int n and >= 0 => "non-negative",
string s and { Length: > 3 } => "string",
_ => "other"
};
Nulabilidade e estilo defensivo
O sistema de nulabilidade torna explícita a possibilidade de null. Operadores como ?, ?? e ?. aparecem em todo o código. A digitação com dez dedos em C# reduz erros, enquanto a digitação rápida em C# torna rápidas as anotações e padrões defensivos em bases grandes.
public string Normalize(string? input)
{
return (input?.Trim() ?? string.Empty).ToUpperInvariant();
}
Atributos e metadados
Atributos adicionam metadados ao código e são escritos entre colchetes. Um único símbolo errado interrompe a build. Os exercícios de digitação com dez dedos em C# permitem treinar a sintaxe dos atributos, e a digitação rápida em C# acelera a sua aplicação em vários locais.
[Obsolete("Use NewApi")]
public void OldMethod() { }
Strings e formatação
C# suporta interpolação de strings $"", verbatim strings @"" e raw string literals """. Nas interpoladas, o uso correto de chaves é essencial. A digitação com dez dedos em C# ajuda a manter a consistência, e a digitação rápida em C# facilita a escrita de blocos de texto ou JSON.
var msg = $"Hello {name}, today is {DateTime.Now:yyyy-MM-dd}";
var path = @"C:\logs\app.log";
var json = """
{ "status": "ok", "active": true }
""";
Range, indexadores e Span
.. e ^ permitem slicing, enquanto Span<T> oferece manipulação eficiente de memória. São símbolos pequenos mas de grande impacto. A digitação com dez dedos em C# os torna naturais, e a digitação rápida em C# agiliza o uso repetido.
var middle = numbers[1..^1];
Documentação e analisadores
Comentários de documentação em XML começam com /// e incluem tags como <summary>. Analisadores Ing.: analyzers - regras de análise estática ajudam a manter estilo e qualidade. A digitação com dez dedos em C# torna a documentação fluida, e a digitação rápida em C# reduz o peso da escrita de grandes APIs.
/// <summary>Representa um usuário no sistema.</summary>
public class User { }
Erros comuns
Erros comuns incluem parênteses angulares mal fechados em generics, falta de await, confusão entre => e =, mau uso de operadores de null e ponto e vírgula esquecidos. A digitação com dez dedos em C# reduz essas falhas, e a digitação rápida em C# torna a correção rápida.
Comparação com C++ e Java
C# se inspirou em C++ e Java, mas fez escolhas diferentes. Ao contrário do C++, o código C# comum usa gerenciamento automático de memória e não exige arquivos de cabeçalho separados. Ponteiros explícitos continuam disponíveis no código unsafe. Isso reduziu símbolos como * e &, mas aumentou o uso de parênteses angulares e pontos de interrogação. A digitação com dez dedos em C# mantém ritmo constante, e a digitação rápida em C# assegura eficiência mesmo em sintaxes como LINQ ou async/await.
C# e Java diferem no "açúcar sintático" que oferecem e na notação das suas construções. Em C#, há, por exemplo, expression-bodied members, lambdas, pattern matching, atributos, anotações de nulabilidade e interpolação de strings. Essas construções exigem atenção aos símbolos; a prática de digitação com dez dedos em C# ajuda a escrevê-los com precisão, e a digitação rápida em C# preserva produtividade.
Por que a habilidade de digitar importa
A sintaxe de C# está repleta de símbolos: parênteses angulares em generics, colchetes em atributos e indexadores, setas em lambdas e switch, interrogações para nulabilidade, pontos em method-chains e tags XML para documentação. Eles aparecem constantemente e exigem precisão. A digitação com dez dedos em C# reduz erros, e a digitação rápida em C# permite que o fluxo de trabalho continue sem interrupções.
Resumo
C# é expressivo, estruturado e rico em recursos. Sua elegância não vem de evitar símbolos, mas de dar-lhes significado: setas em lambdas e switch, interrogações para nulabilidade, colchetes em atributos e parênteses angulares para generics. A digitação com dez dedos em C# transforma esses padrões em reflexo, e a digitação rápida em C# torna rotinas como sobrecargas, LINQ e documentação mais fluidas e produtivas. A habilidade de digitar facilita a escrita e a edição rápida do código C#. Para produzir código correto e fácil de manter, também é necessário compreender a linguagem, planejar o programa e verificar seu comportamento.