Estatísticas de hoje

Exercícios concluídos
-
Caracteres digitados Palavras digitadas
-
Tempo de exercício
-

Estatísticas gerais

Exercícios concluídos
-
Caracteres digitados Palavras digitadas
-
Tempo de exercício
-

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#.

Vamos aprender mais sobre a linguagem C# e a datilografia ao programar em 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.

Próximo texto
Próxima lição
Tarefa Voltar ao teste
cs
Gráfico Ocultar