Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Questões - Conceitos Comuns de Programação


01 - Como você escreveria um comentário de linha única em Rust?

Playground!

Resposta
fn main() {
    // Este é um comentário de linha única    
}

02 - Qual é a sintaxe para comentários de bloco em Rust?

Playground!

Resposta
fn main() {
    /*
      Este é um comentário de
      bloco que abrange várias
      linhas.
    */
}

03 - Você pode aninhar comentários de bloco em Rust? Dê um exemplo.

Playground!

Resposta
fn main() {
    /*
       Inicio do comentário externo
       // Este é um comentário aninhado
       Fim do comentário externo
    */    
}

04 - Qual macro você usaria para imprimir texto na mesma linha, sem adicionar uma quebra de linha no final?

Playground!

Resposta
fn main() {
    print!("Imprimir sem adicionar uma nova linha no final!");
}

05 - Qual macro você usaria para imprimir texto e adicionar automaticamente uma quebra de linha no final?

Playground!

Resposta
fn main() {
    println!("Imprimir e adicionar nova linha no final!");
}

06 - Escreva um código que imprima "Hello" e "World" na mesma linha usando a macro print!.

Playground!

Resposta
fn main() {
    print!("Hello, ");
    print!("World");
}

07 - Como você insere uma quebra de linha explícita dentro de uma string que está sendo impressa com println!?

Playground!

Resposta
fn main() {
    println!("Primeira linha\nSegunda linha");
}

08 - Que outras sequências de escape você pode usar em strings Rust? Dê exemplos de pelo menos 3.

Playground!

Resposta
fn main() {
    println!("Barra invertida: \\");
    println!("Olá \"mundo\"");
    println!(r"C:\Usuários\Snoopy\Documentos\");
}

09 - Como você declara uma variável chamada score e atribui a ela o valor 100?

Playground!

Resposta
fn main() {
    let score = 100;
    println!("Score: {}", score);
}

10 - Escreva uma linha de código que declare uma variável cidade com o valor Recife e a imprima na tela.

Playground!

Resposta
fn main() {
    let cidade = "Recife";
    println!("Cidade: {}", cidade);
}

11 - O que acontece se você tentar usar uma variável antes de declará-la em Rust?

Playground!

Resposta
fn main() {
    // Isto causaria um erro de tempo de compilação:
    println!("{}", x);
    let x = 5;
} 

12 - Você pode declarar uma variável sem inicializá-la em Rust? Se sim, mostre como usá-la com segurança.

Playground!

Resposta
fn main() {
    let x: i32; 
    x = 42;     
    println!("x = {}", x);
}

13 - Declare uma variável mutável chamada contador inicializada com 0. Em seguida, escreva o código para alterar o valor para 5 e imprima.

Playground!

Resposta
fn main() {
    let mut contador = 0;
    println!("Contador = {}", contador);
    
    contador = 5;
    println!("Contador = {}", contador);
}

14 - O que acontece se você tentar modificar uma variável imutável em Rust?

Playground!

Resposta
fn main() {
    let x = 1;    
    x = 2;
    println!("x = {}", x);
}

15 - Como você declara uma constante chamada MAX_SPEED com o valor "9000" do tipo i32?

Playground!

Resposta
const MAX_SPEED: i32 = 9000;

fn main() {
    println!("Max Speed: {}", MAX_SPEED);
}

16 - É possível alterar o valor de uma constante após sua declaração?

Playground!

Resposta
const MAX_SPEED: i32 = 100;

fn main() {    
    MAX_SPEED = 200;
}

17 - Quais são as principais diferenças entre constantes e variáveis imutáveis em Rust?

Playground!

Resposta
const CONSTANTE_GLOBAL: i32 = 100;

fn main() {
    let variavel_imutavel = 200;
    println!("Constante: {}, Variável: {}", CONSTANTE_GLOBAL, variavel_imutavel);

    // Constantes:
    // - Sempre imutáveis (a palavra-chave 'mut' não é permitida);
    // - Tipo explícito (ex: : i32);
    // - Podem ser declaradas em escopo global (fora de funções).
    
    // Variáveis Imutáveis (let):
    // - Podem ser tornadas mutáveis com 'mut';
    // - O tipo pode ser inferido;
    // - Locais ao seu escopo;
    // - Podem ser definidas como o resultado de qualquer expressão.
}

18 - Como você usaria a macro format! para criar a string "O valor é: 42" a partir do número 42?

Playground!

Resposta
fn main() {
    let numero = 42;
    let numero_formatado = format!("O valor é: {}", numero);
    println!("{}", numero_formatado);
}

19 - Como você pode formatar o número "7" para que ele seja exibido como "0007" usando format!?

Playground!

Resposta
fn main() {
    let numero = 7;
    let numero_formatado = format!("{:04}", numero);
    println!("{}", numero_formatado);
}

20 - Como você formataria um número de ponto flutuante para mostrar exatamente 2 casas decimais?

Playground!

Resposta
fn main() {
    let pi = 3.14159265359;
    println!("Pi: {:.2}", pi);

    let pi_formatado = format!("{:.2}", pi);
    println!("Pi: {}", pi_formatado);    
}

21 - Demonstre como usar argumentos posicionais em format strings.

Playground!

Resposta
fn main() {
    let nome = "Snoopy";
    let idade = 8;
    let cidade = "Califórnia";
    
    // Argumentos posicionais
    println!("{0} tem {1} anos e mora na {2}", nome, idade, cidade);
    
    // Argumentos nomeados
    println!("{nome} tem {idade} anos e mora na {cidade}");
             
    // Misturado
    println!("{} tem {idade} anos e mora na {cidade}", nome);
}

22 - O que é shadowing em Rust? Explique com um exemplo de código e qual seria a saída.

Playground!

Resposta
fn main() {
    let x = 5;
    println!("Primeiro x: {}", x);

    let x = x + 1;
    println!("Segundo x: {}", x);

    let x = x * 2;
    println!("Terceiro x: {}", x);

    let x = "Olá";
    println!("Quarto x: {}", x);
}

23 - Qual será a saída do seguinte código?

Playground!

fn main () {
    let x = 5;
    let x = x + 1;
    {
        let x = x * 2;
        println!("O valor interno de x é: {}", x);
    }
    println!("O valor externo de x é: {}", x);
}
Resposta
fn main() {
    let x = 5;
    let x = x + 1; // x = 6
    {
        let x = x * 2; // x = 12 
        println!("O valor interno de x é: {}", x); // Saida: 12
    }
    println!("O valor externo de x é: {}", x); // Saida: 6
}

24 - Qual será a saída do seguinte código? Explique por quê.

Playground!

fn main () {    
    let a = 10;
    {
        let b = 20;
        println!("Dentro do bloco: a = {}, b = {}", a, b);
    }
    println!("Fora do bloco: b = {}", b);
}
Resposta
fn main() {
    let a = 10;
    {
        let b = 20;
        println!("Dentro do bloco: a = {}, b = {}", a, b);
        // Saida: Dentro do bloco: a = 10, b = 20
    }
    // println!("Fora do bloco: b = {}", b);
    // Erro: b não está no escopo
}