Pular para o conteúdo principal

Condicionais

Instruções condicionais permitem que seu programa tome decisões. Veja como if/else e switch funcionam em diferentes linguagens.

Instruções If/Else​

// Basic if/else
if (age >= 18) {
console.log("Adult");
} else {
console.log("Minor");
}

// Ternary operator
const status = age >= 18 ? "Adult" : "Minor";

// Nested ternary
const result = x > 0 ? (y > 0 ? "Both positive" : "X positive") : "X not positive";

// Chained ternary
const grade = score >= 90 ? "A" : score >= 80 ? "B" : "C";

// Else if
if (score >= 90) {
grade = "A";
} else if (score >= 80) {
grade = "B";
} else {
grade = "C";
}

Instruções Switch/Case​

// Switch statement
switch (day) {
case 1:
console.log("Monday");
break;
case 2:
console.log("Tuesday");
break;
default:
console.log("Other day");
}

// Switch expression (no break needed)
switch (day) {
case 1: return "Monday";
case 2: return "Tuesday";
default: return "Other";
}

Principais Conclusões​

  • Sintaxe if/else -- Linguagens da família C (C, C++, Java, JavaScript, C#) usam chaves e else if; Python usa elif com dois-pontos e indentação; Ruby usa elsif e end; PHP usa elseif (uma palavra). O estilo Python if cond: sem chaves reduz ruído visual, mas exige indentação consistente. Se você prefere delimitadores de bloco explícitos e vem de C/Java, escolha uma linguagem baseada em chaves; se valoriza concisão e legibilidade, Python ou Ruby podem parecer mais limpos.

  • Switch vs match -- O switch estilo C (C, C++, Java, JavaScript, PHP) exige break para evitar fallthrough; esquecê-lo é um bug comum. O match de Rust é baseado em expressões — retorna um valor e não tem fallthrough, então let x = match n { 1 => "one", _ => "other" }; é idiomático. Python 3.10+ e C# 8+ adicionam expressões match/switch com pattern matching. Para lógica com múltiplas ramificações, prefira match de Rust ou Swift quando a exaustividade importa; use switch estilo C quando precisar de fallthrough explícito ou trabalhar em bases de código legado.

  • Operadores ternários -- A maioria das linguagens usa cond ? a : b (C, C++, Java, JavaScript, C#, Swift, PHP). Go deliberadamente omite ?: e usa if cond { a } else { b } para atribuição, favorecendo clareza sobre brevidade. Python usa a if cond else b (condição no meio). Rust e Zig usam if como expressões: let x = if cond { a } else { b };. Se você quer condicionais inline compactas, use ternário; se prefere a explicitude do estilo Go, evite ternários aninhados e favoreça blocos if/else simples.

  • Expressão vs instrução -- Em Rust, Zig e Ruby, if pode ser uma expressão que produz um valor; C, Java e Go tratam if apenas como instrução. JavaScript usa ternário para expressões. Isso afeta como você atribui condicionalmente: Rust permite let grade = if score >= 90 { "A" } else { "B" }; sem uma variável separada e múltiplas atribuições. Escolha linguagens baseadas em expressões quando quiser evitar estado mutável e escrever código mais declarativo.

  • Quando escolher qual -- Para programação de sistemas ou máxima explicitude, o if/else de Go e a ausência de ternário reduzem surpresas. Para código funcional e orientado a expressões, Rust e Zig se destacam. Para prototipagem rápida e legibilidade, o elif e a if cond else b de Python são acessíveis. Para backends empresariais ou web, C#, Java e PHP oferecem condicionais familiares no estilo C com boas ferramentas.