Introdução
Neste laboratório, você aprenderá como construir estruturas de tomada de decisão em programação C. Começará compreendendo o conceito fundamental da instrução if, que permite que seu programa tome decisões com base em condições específicas. Em seguida, explorará os operadores de desigualdade, encadeará instruções if-else, combinará expressões com operadores lógicos e praticará a lógica condicional. Ao final deste laboratório, você terá uma sólida compreensão de como criar estruturas de tomada de decisão em seus programas C, permitindo que você escreva um código mais sofisticado e inteligente.
Entenda a Instrução If
Nesta etapa, você aprenderá sobre o conceito fundamental das instruções if em programação C, que são cruciais para criar estruturas de tomada de decisão em seu código. As instruções if permitem que seu programa tome decisões e execute diferentes blocos de código com base em condições específicas.
Vamos começar criando um programa C simples que demonstra a sintaxe básica da instrução if. Abra o editor VSCode e crie um novo arquivo chamado if_statement.c no diretório ~/project:
cd ~/project
touch if_statement.c
#include <stdio.h>
int main() {
int temperature = 25;
if (temperature > 30) {
printf("It's a hot day!\n");
}
if (temperature <= 30) {
printf("The temperature is comfortable.\n");
}
return 0;
}
Compile e execute o programa:
gcc if_statement.c -o if_statement
./if_statement
Exemplo de saída:
The temperature is comfortable.
Vamos analisar a instrução if:
- A palavra-chave
ifé seguida por uma condição entre parênteses() - A condição é uma expressão lógica que avalia como verdadeira ou falsa
- Se a condição for verdadeira, o bloco de código dentro das chaves
{}é executado - Se a condição for falsa, o bloco de código é ignorado
Agora, vamos criar um exemplo mais interativo que demonstra como as instruções if podem tomar decisões com base na entrada do usuário:
#include <stdio.h>
int main() {
int age;
printf("Enter your age: ");
scanf("%d", &age);
if (age >= 18) {
printf("You are eligible to vote.\n");
}
if (age < 18) {
printf("You are not old enough to vote.\n");
}
return 0;
}
Compile e execute o programa:
gcc voting_eligibility.c -o voting_eligibility
./voting_eligibility
Exemplo de saída:
Enter your age: 20
You are eligible to vote.
Pontos-chave para lembrar:
- As instruções
ifpermitem que seu programa tome decisões - A condição é avaliada como verdadeira ou falsa
- Apenas o bloco de código para a condição verdadeira será executado
- Você pode usar operadores de comparação como
>,<,>=,<=,==,!=
Explore os Operadores de Desigualdade
Nesta etapa, você se aprofundará na programação C explorando os operadores de desigualdade, que são essenciais para criar instruções condicionais mais complexas. Os operadores de desigualdade permitem que você compare valores e tome decisões com base em suas relações.
Vamos criar um novo arquivo chamado inequality_operators.c no diretório ~/project para demonstrar diferentes operadores de desigualdade:
cd ~/project
touch inequality_operators.c
#include <stdio.h>
int main() {
int x = 10;
int y = 20;
// Equal to (==) operator
if (x == y) {
printf("x is equal to y\n");
} else {
printf("x is not equal to y\n");
}
// Not equal to (!=) operator
if (x != y) {
printf("x is different from y\n");
}
// Greater than (>) operator
if (y > x) {
printf("y is greater than x\n");
}
// Less than (<) operator
if (x < y) {
printf("x is less than y\n");
}
// Greater than or equal to (>=) operator
if (y >= x) {
printf("y is greater than or equal to x\n");
}
// Less than or equal to (<=) operator
if (x <= y) {
printf("x is less than or equal to y\n");
}
return 0;
}
Compile e execute o programa:
gcc inequality_operators.c -o inequality_operators
./inequality_operators
Exemplo de saída:
x is not equal to y
x is different from y
y is greater than x
x is less than y
y is greater than or equal to x
x is less than or equal to y
Vamos criar outro exemplo que demonstra operadores de desigualdade com entrada do usuário:
#include <stdio.h>
int main() {
int score;
printf("Enter your exam score: ");
scanf("%d", &score);
if (score >= 90) {
printf("Excellent! You got an A.\n");
} else if (score >= 80) {
printf("Good job! You got a B.\n");
} else if (score >= 70) {
printf("Not bad. You got a C.\n");
} else if (score >= 60) {
printf("You passed. You got a D.\n");
} else {
printf("Sorry, you failed the exam.\n");
}
return 0;
}
Compile e execute o programa:
gcc grade_calculator.c -o grade_calculator
./grade_calculator
Exemplo de saída:
Enter your exam score: 85
Good job! You got a B.
Pontos-chave para lembrar:
- Os operadores de desigualdade ajudam a comparar valores
==verifica se os valores são iguais!=verifica se os valores não são iguais>verifica se o valor da esquerda é maior que o valor da direita<verifica se o valor da esquerda é menor que o valor da direita>=verifica se o valor da esquerda é maior ou igual ao valor da direita<=verifica se o valor da esquerda é menor ou igual ao valor da direita
Encadeando Instruções If-Else
Nesta etapa, você aprenderá como encadear instruções if-else para criar estruturas de tomada de decisão mais complexas em programação C. O encadeamento de instruções if-else permite que você lide com múltiplas condições e forneça caminhos de código alternativos quando as condições anteriores não são atendidas.
Vamos criar um arquivo chamado weather_advisor.c no diretório ~/project para demonstrar instruções if-else encadeadas:
cd ~/project
touch weather_advisor.c
#include <stdio.h>
int main() {
int temperature;
char weather_type;
printf("Enter the temperature: ");
scanf("%d", &temperature);
printf("Enter the weather type (S for sunny, R for rainy, C for cloudy): ");
scanf(" %c", &weather_type);
if (temperature > 30 && weather_type == 'S') {
printf("It's a hot and sunny day. Stay hydrated and use sunscreen!\n");
} else if (temperature > 30 && weather_type == 'R') {
printf("It's hot and rainy. Be careful of potential thunderstorms.\n");
} else if (temperature > 30 && weather_type == 'C') {
printf("It's hot and cloudy. Wear light clothing.\n");
} else if (temperature >= 20 && temperature <= 30) {
printf("The temperature is comfortable.\n");
} else if (temperature < 20) {
printf("It's a bit cool today. Consider wearing a light jacket.\n");
} else {
printf("Invalid input. Please check your temperature and weather type.\n");
}
return 0;
}
Compile e execute o programa:
gcc weather_advisor.c -o weather_advisor
./weather_advisor
Exemplo de saída:
Enter the temperature: 35
Enter the weather type (S for sunny, R for rainy, C for cloudy): S
It's a hot and sunny day. Stay hydrated and use sunscreen!
Vamos criar outro exemplo que demonstra um uso mais prático de instruções if-else encadeadas:
#include <stdio.h>
int main() {
char category;
double price, discount = 0.0;
printf("Enter product category (A/B/C): ");
scanf(" %c", &category);
printf("Enter product price: ");
scanf("%lf", &price);
if (category == 'A') {
if (price > 1000) {
discount = 0.2; // 20% discount for high-value A category
} else {
discount = 0.1; // 10% discount for A category
}
} else if (category == 'B') {
if (price > 500) {
discount = 0.15; // 15% discount for high-value B category
} else {
discount = 0.05; // 5% discount for B category
}
} else if (category == 'C') {
if (price > 200) {
discount = 0.1; // 10% discount for high-value C category
} else {
discount = 0.0; // No discount for low-value C category
}
} else {
printf("Invalid category!\n");
return 1;
}
double discounted_price = price * (1 - discount);
printf("Original price: $%.2f\n", price);
printf("Discount: %.0f%%\n", discount * 100);
printf("Discounted price: $%.2f\n", discounted_price);
return 0;
}
Compile e execute o programa:
gcc discount_calculator.c -o discount_calculator
./discount_calculator
Exemplo de saída:
Enter product category (A/B/C): B
Enter product price: 600
Original price: $600.00
Discount: 15%
Discounted price: $510.00
Pontos-chave para lembrar:
- Instruções if-else encadeadas permitem que você lide com múltiplas condições
- Cada condição é verificada em ordem, de cima para baixo
- Apenas o bloco de código da primeira condição correspondente é executado
- O bloco
elsefornece uma ação padrão se nenhuma condição anterior for atendida - Você pode aninhar instruções if-else para criar estruturas de decisão mais complexas
Combine Expressões com Operadores Lógicos
Nesta etapa, você aprenderá como combinar múltiplas condições usando operadores lógicos em programação C. Os operadores lógicos permitem que você crie instruções condicionais mais complexas, conectando múltiplas expressões.
Vamos criar um arquivo chamado logical_operators.c no diretório ~/project para demonstrar os três principais operadores lógicos: AND (&&), OR (||) e NOT (!):
cd ~/project
touch logical_operators.c
#include <stdio.h>
int main() {
int age, income;
char is_student;
printf("Enter your age: ");
scanf("%d", &age);
printf("Enter your annual income: ");
scanf("%d", &income);
printf("Are you a student? (Y/N): ");
scanf(" %c", &is_student);
// AND (&&) operator: Both conditions must be true
if (age >= 18 && income < 30000) {
printf("You qualify for a basic credit card.\n");
}
// OR (||) operator: At least one condition must be true
if (age < 25 || is_student == 'Y') {
printf("You may be eligible for a student discount.\n");
}
// Combining multiple conditions
if ((age >= 18 && income >= 30000) || (is_student == 'Y')) {
printf("You qualify for a premium credit card.\n");
}
// NOT (!) operator: Negates the condition
if (!(age < 18)) {
printf("You are an adult.\n");
}
return 0;
}
Compile e execute o programa:
gcc logical_operators.c -o logical_operators
./logical_operators
Exemplo de saída:
Enter your age: 22
Enter your annual income: 25000
Are you a student? (Y/N): Y
You qualify for a basic credit card.
You may be eligible for a student discount.
You qualify for a premium credit card.
You are an adult.
Vamos criar outro exemplo que demonstra condições lógicas mais complexas:
#include <stdio.h>
int main() {
char membership_type;
int visits_per_month, total_spending;
printf("Enter your membership type (B for Bronze, S for Silver, G for Gold): ");
scanf(" %c", &membership_type);
printf("Enter number of visits per month: ");
scanf("%d", &visits_per_month);
printf("Enter total monthly spending: ");
scanf("%d", &total_spending);
// Complex condition using multiple logical operators
if ((membership_type == 'G') ||
(membership_type == 'S' && visits_per_month >= 10) ||
(membership_type == 'B' && total_spending > 500)) {
printf("You are eligible for a special promotion!\n");
}
// Demonstrating NOT operator with complex conditions
if (!(membership_type == 'B' && visits_per_month < 5)) {
printf("You can access additional membership benefits.\n");
}
return 0;
}
Compile e execute o programa:
gcc membership_conditions.c -o membership_conditions
./membership_conditions
Exemplo de saída:
Enter your membership type (B for Bronze, S for Silver, G for Gold): S
Enter number of visits per month: 12
Enter total monthly spending: 300
You are eligible for a special promotion!
You can access additional membership benefits.
Pontos-chave para lembrar:
&&(AND) operador: Ambas as condições devem ser verdadeiras||(OR) operador: Pelo menos uma condição deve ser verdadeira!(NOT) operador: Nega a condição- Você pode combinar múltiplas condições para criar lógica complexa
- Parênteses podem ajudar a esclarecer a ordem de avaliação
Pratique Lógica Condicional
Nesta etapa final, você aplicará tudo o que aprendeu sobre estruturas de tomada de decisão em C, criando um programa abrangente que demonstra múltiplas técnicas de lógica condicional.
Vamos criar um programa multiuso chamado personal_finance_advisor.c no diretório ~/project que ajudará os usuários a tomar decisões financeiras:
cd ~/project
touch personal_finance_advisor.c
#include <stdio.h>
int main() {
double income, expenses, savings;
char employment_status, age_group;
// Input financial information
printf("Enter your monthly income: $");
scanf("%lf", &income);
printf("Enter your monthly expenses: $");
scanf("%lf", &expenses);
printf("Enter your current savings: $");
scanf("%lf", &savings);
printf("Employment status (F for Full-time, P for Part-time, U for Unemployed): ");
scanf(" %c", &employment_status);
printf("Age group (Y for Young (18-35), M for Middle-aged (36-55), S for Senior (56+)): ");
scanf(" %c", &age_group);
// Calculate savings rate
double savings_rate = (savings / income) * 100;
double disposable_income = income - expenses;
// Financial advice using complex conditional logic
printf("\n--- Financial Analysis ---\n");
// Savings advice
if (savings_rate < 10) {
printf("Warning: Your savings rate is low (%.2f%%).\n", savings_rate);
} else if (savings_rate >= 10 && savings_rate < 20) {
printf("Good start! Your savings rate is moderate (%.2f%%).\n", savings_rate);
} else {
printf("Excellent! Your savings rate is strong (%.2f%%).\n", savings_rate);
}
// Investment recommendations
if ((employment_status == 'F' && disposable_income > 500) ||
(age_group == 'Y' && savings > 5000)) {
printf("Recommendation: Consider starting an investment portfolio.\n");
}
// Emergency fund advice
if (savings < (expenses * 3)) {
printf("Advice: Build an emergency fund covering at least 3 months of expenses.\n");
}
// Spending control
if (expenses > (income * 0.7)) {
printf("Alert: Your expenses are too high compared to your income.\n");
}
// Special conditions
if ((age_group == 'Y' && employment_status == 'F') ||
(savings > (income * 2))) {
printf("You are in a good financial position!\n");
}
// Detailed financial health assessment
if (!(disposable_income < 0)) {
printf("Your disposable income is: $%.2f\n", disposable_income);
} else {
printf("Warning: Your expenses exceed your income.\n");
}
return 0;
}
Compile e execute o programa:
gcc personal_finance_advisor.c -o personal_finance_advisor
./personal_finance_advisor
Exemplo de saída:
Enter your monthly income: $5000
Enter your monthly expenses: $3500
Enter your current savings: $10000
Employment status (F for Full-time, P for Part-time, U for Unemployed): F
Age group (Y for Young (18-35), M for Middle-aged (36-55), S for Senior (56+)): Y
--- Financial Analysis ---
Good start! Your savings rate is moderate (40.00%).
Recommendation: Consider starting an investment portfolio.
You are in a good financial position!
Your disposable income is: $1500.00
Vamos criar um programa de desafio bônus para praticar ainda mais a lógica condicional:
#include <stdio.h>
int main() {
int math_score, science_score, english_score;
char extra_credit;
printf("Enter Math score (0-100): ");
scanf("%d", &math_score);
printf("Enter Science score (0-100): ");
scanf("%d", &science_score);
printf("Enter English score (0-100): ");
scanf("%d", &english_score);
printf("Did you complete extra credit? (Y/N): ");
scanf(" %c", &extra_credit);
// Calculate average
double average = (math_score + science_score + english_score) / 3.0;
// Comprehensive grade determination
if (average >= 90 ||
(extra_credit == 'Y' && average >= 85)) {
printf("Congratulations! You earned an A grade.\n");
} else if (average >= 80 ||
(extra_credit == 'Y' && average >= 75)) {
printf("Great job! You earned a B grade.\n");
} else if (average >= 70 ||
(extra_credit == 'Y' && average >= 65)) {
printf("You passed. You earned a C grade.\n");
} else {
printf("You need to improve. Consider retaking the courses.\n");
}
return 0;
}
Compile e execute o programa:
gcc grade_calculator.c -o grade_calculator
./grade_calculator
Exemplo de saída:
Enter Math score (0-100): 85
Enter Science score (0-100): 88
Enter English score (0-100): 92
Did you complete extra credit? (Y/N): N
Great job! You earned a B grade.
Pontos-chave para lembrar:
- Combine múltiplas condições usando operadores lógicos
- Use instruções if-else aninhadas para tomada de decisão complexa
- Considere casos extremos e forneça lógica abrangente
- Divida problemas complexos em condições menores e gerenciáveis
Resumo
Neste laboratório, você aprendeu sobre o conceito fundamental das instruções if em programação C, que são cruciais para criar estruturas de tomada de decisão em seu código. Você explorou como as instruções if permitem que seu programa tome decisões e execute diferentes blocos de código com base em condições específicas. Você também aprendeu sobre operadores de desigualdade, encadeamento de instruções if-else, combinação de expressões com operadores lógicos e a prática de lógica condicional para construir estruturas de tomada de decisão mais complexas em seus programas C.
Os pontos-chave abordados neste laboratório incluem a compreensão da sintaxe básica das instruções if, a avaliação de expressões lógicas como verdadeiras ou falsas e a execução do bloco de código apropriado com base na condição. Você também aprendeu como usar instruções if para tomar decisões com base na entrada do usuário, que é uma habilidade essencial para construir aplicações interativas.



