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, comoprintf().
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
intindica 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 bibliotecastdio.hque 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 retorno0da funçãomainé uma convenção que sinaliza que o programa terminou corretamente.
}
- Fecha o bloco da função
main.
Compilação e Execução
-
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.
- Suponha que o código esteja salvo em um arquivo chamado
-
Execução:
- No Linux/macOS:
./programa - No Windows (cmd ou PowerShell):
programa.exe
- No Linux/macOS:
Compilando na IDE Code::Blocks

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.

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 quenum2. -
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
num1for menor quenum2, 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
ifverifica seidadeé maior ou igual a18. 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çãoidade >= 18é falsa, e o bloco doelseé 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
ifverifica se a idade é suficiente. - O segundo
ifverifica 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
- Livros
- “The C Programming Language” – Brian W. Kernighan & Dennis M. Ritchie.
- “C: Como Programar” – Deitel & Deitel.
- Sites
- 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çãoprintf(), 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 (
num1enum2) são declaradas e inicializadas com valores fixos. - No exemplo,
num1recebe o valor25enum2recebe40. 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áveisnum1enum2.- 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)→ Senum1for maior quenum2, então ele será exibido como o maior número.else if (num2 > num1)→ Senum2for maior quenum1, então ele será exibido como o maior número.else→ Senum1enum2forem iguais, uma mensagem indicará que os dois números são idênticos.
5. Finalização do Programa
return 0;
- O retorno
0indica 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
-
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); -
Implementação com
switch-case- Embora a estrutura
if-elseseja ideal aqui, podemos utilizarswitch-casepara algumas variantes do problema.
- Embora a estrutura
-
Criação de uma Função Separada
- Criar uma função específica para comparar os números e modularizar o código.
