Instruções Gerais:

  • Resolva as atividades em ordem progressiva de maturidade.
  • Cada nível adiciona requisitos técnicos, tratamento de erros e casos de borda reais.
  • Consulte o gabarito comentado ao final de cada questão para autoavaliação.

🎯 Nível 1: Fundamentos

Problema 07.1 — Sintaxe C# Moderna: Top-Level Statements e Records

Contexto: Sintaxe C# Moderna: Top-Level Statements e Records no contexto de Linguagem C# e Ecossistema .NET: Records, LINQ e Async/Await.

Requisitos de Execução:

  1. Declarar record imutável public record Funcionario(int Id, string Nome, decimal Salario);.

Resultado Esperado

Record instanciado com imutabilidade e igualdade por valor.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_07_1_SeuNome
  2. Envie na tarefa: Atividade Cap 07 - Linguagem C# e Ecossistema .NET: Records, LINQ e Async/Await
🔑 Gabarito de Código & Solução Comentada
public record Funcionario(int Id, string Nome, decimal Salario);

var f1 = new Funcionario(1, "Carlos", 5000m);
var f2 = f1 with { Salario = 6000m };

Console.WriteLine($"Funcionario original: {f1.Nome} - R$ {f1.Salario}");
Console.WriteLine($"Funcionario atualizado: {f2.Nome} - Salario: R$ {f2.Salario}");
Console.WriteLine($"Imutabilidade garantida: {f1 != f2}");

🔍 Nível 2: Prática

Problema 07.2 — Consultas Declarativas com LINQ to Objects

Contexto: Consultas Declarativas com LINQ to Objects no contexto de Linguagem C# e Ecossistema .NET: Records, LINQ e Async/Await.

Requisitos de Execução:

  1. Filtrar lista de pedidos com valor > 100 e ordenar por data decrescente.

Resultado Esperado

Pipeline LINQ processando dados em memória com alta expressividade.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_07_2_SeuNome
  2. Envie na tarefa: Atividade Cap 07 - Linguagem C# e Ecossistema .NET: Records, LINQ e Async/Await
🔑 Gabarito de Código & Solução Comentada
var pedidos = new[] {
    new { Id = 1, Total = 150.0 },
    new { Id = 2, Total = 45.0 },
    new { Id = 3, Total = 320.0 }
};

var filtrados = pedidos.Where(p => p.Total > 100.0).OrderByDescending(p => p.Total);
foreach (var p in filtrados) {
    Console.WriteLine($"Pedido #{p.Id}: R$ {p.Total}");
}

⚡ Nível 3: Integração

Problema 07.3 — Programação Assíncrona com Task, async e await

Contexto: Programação Assíncrona com Task, async e await no contexto de Linguagem C# e Ecossistema .NET: Records, LINQ e Async/Await.

Requisitos de Execução:

  1. Executar chamada de I/O assíncrona não-bloqueante utilizando Task.Delay.

Resultado Esperado

Método assíncrono executado na thread pool do .NET.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_07_3_SeuNome
  2. Envie na tarefa: Atividade Cap 07 - Linguagem C# e Ecossistema .NET: Records, LINQ e Async/Await
🔑 Gabarito de Código & Solução Comentada
async Task<string> ConsultarStatusServicoAsync() {
    await Task.Delay(50);
    return "ONLINE (200 OK)";
}

string status = await ConsultarStatusServicoAsync();
Console.WriteLine($"Status do microsservico: {status}");
Console.WriteLine("Execucao assincrona concluida com sucesso.");

🏆 Nível 4: Desafio Corporativo

Problema 07.4 — Pattern Matching Avançado e Switch Expressions

Contexto: Pattern Matching Avançado e Switch Expressions no contexto de Linguagem C# e Ecossistema .NET: Records, LINQ e Async/Await.

Requisitos de Execução:

  1. Classificar transações com pattern matching posicional e condicional em switch expressions.

Resultado Esperado

Regras de negócio corporativas modeladas com Pattern Matching do C# 12.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_07_4_SeuNome
  2. Envie na tarefa: Atividade Cap 07 - Linguagem C# e Ecossistema .NET: Records, LINQ e Async/Await
🔑 Gabarito de Código & Solução Comentada
string ClassificarDesconto(double valor, bool clienteVip) => (valor, clienteVip) switch {
    ( >= 1000.0, true) => "Desconto 20% Especial",
    ( >= 500.0, true) => "Desconto 15%",
    ( >= 500.0, false) => "Desconto 10%",
    _ => "Sem Desconto"
};

var res = ClassificarDesconto(1200.0, true);
Console.WriteLine($"Resultado da regra: {res}");
Console.WriteLine("Validacao de Pattern Matching C# 12 concluida.");