Seja Bem-Vindo. Este site tem recursos de leitura de texto, basta marcar o texto e clicar no ícone do alto-falante   Click to listen highlighted text! Seja Bem-Vindo. Este site tem recursos de leitura de texto, basta marcar o texto e clicar no ícone do alto-falante

Linguagem de Programação C – Aula 04

Assunto

Nesta aula abordaremos os primeiros exemplos de código.

Quebrando a maldição do Hello World!

Nessa aula veremos alguns exemplos de algoritmos desenvolvidos em C e executaremos o passo a passo de cada exemplo para podermos avançar no assunto.

// arquivo: programa.c

#include <stdio.h>
int main()
{
   printf("Hello world!\n");
   return 0;
}

O código apresentado é um exemplo clássico de um programa escrito em C que exibe a mensagem “Hello world!” na saída padrão. Vamos analisá-lo detalhadamente:

Explicação do Código

// arquivo: programa.c
  • Esse é um comentário de linha em C. O compilador ignora tudo o que está após //, servindo apenas para documentar o código.
#include <stdio.h>
  • Esse é um pré-processador que inclui a biblioteca stdio.h (Standard Input Output). Essa biblioteca contém funções para entrada e saída padrão, como printf().
int main()
  • Declaração da função principal do programa. O padrão da linguagem C define que a execução sempre começa pela função main().
  • O tipo de retorno int indica que a função deve retornar um número inteiro ao sistema operacional.
{
  • Início do bloco de código da função main.
   printf("Hello world!\n");
  • printf() é uma função da biblioteca stdio.h que imprime mensagens na tela.
  • A string "Hello world!\n" contém:
    • "Hello world!" → O texto a ser exibido.
    • \n → Uma quebra de linha para que o cursor vá para a próxima linha após a exibição.
   return 0;
  • Retorna 0, indicando que o programa foi executado com sucesso. Em C, um retorno 0 da função main é uma convenção que sinaliza que o programa terminou corretamente.
}
  • Fecha o bloco da função main.

Compilação e Execução

  1. Compilação:

    • Suponha que o código esteja salvo em um arquivo chamado programa.c.
    • Para compilar no terminal (usando GCC):
      gcc programa.c -o programa
      
    • O comando acima gera um executável chamado programa.
  2. Execução:

    • No Linux/macOS:
      ./programa
      
    • No Windows (cmd ou PowerShell):
      programa.exe
      

Compilando na IDE Code::Blocks

Hello World! No CodeBlocks

Problema 01

Construa um algoritmo em C que dado dois números descubra qual é o maior e imprima em tela, os números são fornecidos no código do programa.


Abordagem do problema

Números:

num1 = 25

num2 = 40

Como saber qual o maior? Todo computador tem em seu processador instruções capazes de executar operações aritméticas simples, operações de comparação, além de outras funções que não discutiremos agora.

Se pedirmos para o computador imprimir o resultado da operação:

num1 > num2

teremos como resposta:

Falso

Pois o computador pegará os valores armazenados nos endereços de memória num1 (25) e no endereço de memória num2 (40), substituirá os valores na operação num1 > num2 tornando 25 > 40 que é uma comparação lógica que tem como resposta o resultado Falso (operações lógicas tem apenas Verdadeiro ou Falso como respostas). Uma vez que temos o resultado da operação, precisamos dar continuidade ao programa. Veja abaixo o fluxograma desse nosso programa.

Fluxograma

Explicação do Fluxograma

1. Início

  • O programa começa sua execução.

  • No fluxograma, o início é representado por um elipse com a palavra "Início".

2. Definir os valores de num1 e num2

  • Os valores dos dois números são previamente definidos no código.

  • No fluxograma, essa etapa é representada por um paralelogramo com "Definir
    num1 e num2"
    .

3. Comparação entre num1 e num2

  • O programa verifica se num1 é maior que num2.

  • No fluxograma, essa decisão é representada por um losango com a condição "num1 > num2?".

4. Se num1 for maior

  • Se a condição for verdadeira (Sim), o programa imprime "num1
    é o maior número."
    .

  • No fluxograma, essa etapa é representada por um paralelogramo.

5. Se num1 não for maior (num2 é maior ou igual)

  • Se a condição for falsa (Não), há uma segunda verificação:

    • Se num1 for menor que num2, imprime "num2
      é o maior número."
      .

    • Caso contrário (num1 == num2), imprime "Os números são iguais.".

6. Fim

  • O programa encerra a execução.

  • No fluxograma, o fim do programa é representado por um elipse com a palavra "Fim".

O Comando if na Linguagem C – Explicação Detalhada

O comando if em C é uma estrutura de controle de fluxo condicional que permite que um bloco de código seja executado somente se uma determinada condição for verdadeira (true). Ele é essencial para a tomada de decisões dentro dos programas e pode ser combinado com outras estruturas, como else e else if, para lidar com múltiplos cenários.


1. Sintaxe Básica do if

A sintaxe geral do if é a seguinte:

if (condição) {
    // Bloco de código executado se a condição for verdadeira
}
  • A condição é uma expressão lógica que retorna um valor verdadeiro (true) ou falso (false).
  • Se a condição for verdadeira (true), o bloco de código dentro das chaves {} será executado.
  • Se a condição for falsa (false), o bloco de código será ignorado.

Exemplo Simples

#include <stdio.h>

int main() {
    int idade = 18;

    if (idade >= 18) {
        printf("Você é maior de idade.\n");
    }

    return 0;
}

Saída no console:

Você é maior de idade.
  • O bloco if verifica se idade é maior ou igual a 18. Como a condição é verdadeira, a mensagem é exibida.

2. Usando if com else

Quando queremos executar um bloco alternativo caso a condição do if seja falsa, usamos o else.

Sintaxe do if-else

if (condição) {
    // Executado se a condição for verdadeira
} else {
    // Executado se a condição for falsa
}

Exemplo com else

#include <stdio.h>

int main() {
    int idade = 16;

    if (idade >= 18) {
        printf("Você é maior de idade.\n");
    } else {
        printf("Você é menor de idade.\n");
    }

    return 0;
}

Saída no console:

Você é menor de idade.
  • Como idade é 16, a condição idade >= 18 é falsa, e o bloco do else é executado.

3. Usando if, else if e else

Quando temos múltiplas condições a serem testadas, podemos utilizar else if entre if e else.

Sintaxe do if-else if-else

if (condição1) {
    // Executado se condição1 for verdadeira
} else if (condição2) {
    // Executado se condição1 for falsa e condição2 for verdadeira
} else {
    // Executado se nenhuma das condições anteriores for verdadeira
}

Exemplo com else if

#include <stdio.h>

int main() {
    int nota = 75;

    if (nota >= 90) {
        printf("Sua nota é A.\n");
    } else if (nota >= 80) {
        printf("Sua nota é B.\n");
    } else if (nota >= 70) {
        printf("Sua nota é C.\n");
    } else {
        printf("Você foi reprovado.\n");
    }

    return 0;
}

Saída no console:

Sua nota é C.
  • O programa avalia cada condição sequencialmente até encontrar uma verdadeira.

4. Usando Operadores Lógicos no if

Podemos combinar múltiplas condições em um único if utilizando operadores lógicos:

Operador Significado Exemplo Avaliação
&& E lógico (AND) (a > 10 && b < 20) Verdadeiro apenas se ambas as condições forem verdadeiras
`   ` OU lógico (OR)
! NÃO lógico (NOT) !(a == b) Inverte o valor lógico

Exemplo com &&

#include <stdio.h>

int main() {
    int idade = 25;
    int temCarteira = 1; // 1 representa verdadeiro

    if (idade >= 18 && temCarteira) {
        printf("Você pode dirigir.\n");
    } else {
        printf("Você não pode dirigir.\n");
    }

    return 0;
}

Saída no console:

Você pode dirigir.
  • O programa verifica duas condições ao mesmo tempo: se a idade é maior ou igual a 18 E se temCarteira é verdadeiro.

5. Usando if sem chaves {}

Se houver apenas uma linha de código dentro do if, as chaves {} podem ser omitidas. Porém, essa prática não é recomendada por questões de legibilidade.

Exemplo sem {}

if (idade >= 18)
    printf("Você é maior de idade.\n");

Se precisarmos adicionar outra instrução no bloco, é obrigatório usar as chaves:

if (idade >= 18) {
    printf("Você é maior de idade.\n");
    printf("Agora você pode tirar sua carteira de motorista.\n");
}

6. if Aninhado (Nested if)

Podemos colocar um if dentro de outro if, criando condições mais específicas.

Exemplo de if aninhado

#include <stdio.h>

int main() {
    int idade = 20;
    char possuiCNH = 'S';

    if (idade >= 18) {
        if (possuiCNH == 'S') {
            printf("Você pode dirigir legalmente.\n");
        } else {
            printf("Você tem idade, mas precisa tirar a CNH.\n");
        }
    } else {
        printf("Você ainda não tem idade para dirigir.\n");
    }

    return 0;
}

Saída no console:

Você pode dirigir legalmente.
  • O primeiro if verifica se a idade é suficiente.
  • O segundo if verifica se a pessoa já possui CNH.

 

Conclusão

O if é um dos pilares da programação em C e em qualquer outra linguagem. Ele permite a criação de programas dinâmicos, que podem tomar decisões baseadas em entradas e variáveis.

Materiais para Estudo

  1. Livros
    • “The C Programming Language” – Brian W. Kernighan & Dennis M. Ritchie.
    • “C: Como Programar” – Deitel & Deitel.
  2. Sites
  3. Vídeos

Se precisar de mais detalhes, posso aprofundar qualquer ponto! 🚀

 

Código em C

#include <stdio.h>

int main() {
    // Declaração e inicialização das variáveis com valores fixos
    int num1 = 25;
    int num2 = 40;

    // Exibe os números fornecidos
    printf("Número 1: %d\n", num1);
    printf("Número 2: %d\n", num2);

    // Comparação entre os dois números
    if (num1 > num2) {
        printf("O maior número é: %d\n", num1);
    } else if (num2 > num1) {
        printf("O maior número é: %d\n", num2);
    } else {
        printf("Os números são iguais.\n");
    }

    return 0;
}

Explicação Detalhada

1. Inclusão da Biblioteca

#include <stdio.h>
  • A biblioteca stdio.h (Standard Input Output) é fundamental para permitir o uso da função printf(), que será utilizada para exibir mensagens na tela.

2. Declaração e Inicialização de Variáveis

int num1 = 25;
int num2 = 40;
  • Aqui, duas variáveis inteiras (num1 e num2) são declaradas e inicializadas com valores fixos.
  • No exemplo, num1 recebe o valor 25 e num2 recebe 40. Esses valores podem ser alterados para testar diferentes cenários.

3. Impressão dos Números na Tela

printf("Número 1: %d\n", num1);
printf("Número 2: %d\n", num2);
  • printf() é usado para exibir os valores armazenados nas variáveis num1 e num2.
  • O especificador de formato %d é utilizado para imprimir números inteiros.

4. Estrutura de Decisão para Comparação

if (num1 > num2) {
    printf("O maior número é: %d\n", num1);
} else if (num2 > num1) {
    printf("O maior número é: %d\n", num2);
} else {
    printf("Os números são iguais.\n");
}
  • if (num1 > num2) → Se num1 for maior que num2, então ele será exibido como o maior número.
  • else if (num2 > num1) → Se num2 for maior que num1, então ele será exibido como o maior número.
  • else → Se num1 e num2 forem iguais, uma mensagem indicará que os dois números são idênticos.

5. Finalização do Programa

return 0;
  • O retorno 0 indica que o programa foi executado com sucesso.

Exemplo de Saída no Terminal

Quando executado com os valores num1 = 25 e num2 = 40, o programa produzirá a seguinte saída:

Número 1: 25
Número 2: 40
O maior número é: 40

Se os valores fossem num1 = 100 e num2 = 50, a saída seria:

Número 1: 100
Número 2: 50
O maior número é: 100

Se num1 e num2 forem iguais, como num1 = 30 e num2 = 30, o programa exibirá:

Número 1: 30
Número 2: 30
Os números são iguais.

Possíveis Melhorias

  1. Permitir entrada do usuário

    • Modificar o código para que o usuário possa digitar os números em tempo de execução:
    printf("Digite o primeiro número: ");
    scanf("%d", &num1);
    printf("Digite o segundo número: ");
    scanf("%d", &num2);
    
  2. Implementação com switch-case

    • Embora a estrutura if-else seja ideal aqui, podemos utilizar switch-case para algumas variantes do problema.
  3. Criação de uma Função Separada

    • Criar uma função específica para comparar os números e modularizar o código.

 

Click to listen highlighted text!