Введение
В этом лабораторном занятии вы научитесь создавать структуры принятия решений в программировании на языке C. Вы начнете с понимания фундаментального концепта оператора if, который позволяет вашей программе принимать решения на основе определенных условий. Затем вы познакомитесь с операторами неравенства, последовательностью операторов if-else, комбинированием выражений с помощью логических операторов и практикованием условной логики. К концу этого лабораторного занятия вы будете иметь твердое понимание того, как создавать структуры принятия решений в своих программах на языке C, что позволит вам писать более сложный и интеллектуальный код.
Понять оператор if
На этом этапе вы узнаете о фундаментальном концепте операторов if в программировании на языке C, которые являются важными для создания структур принятия решений в вашем коде. Операторы if позволяют вашей программе принимать решения и выполнять различные блоки кода на основе определенных условий.
Начнем с создания простой программы на языке C, которая демонстрирует базовый синтаксис оператора if. Откройте редактор VSCode и создайте новый файл с именем if_statement.c в директории ~/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;
}
Скомпилируйте и запустите программу:
gcc if_statement.c -o if_statement
./if_statement
Пример вывода:
The temperature is comfortable.
Разберем оператор if:
- Ключевое слово
ifследует за условием в скобках() - Условие представляет собой логическое выражение, которое оценивается как истинное или ложное
- Если условие истинно, то блок кода внутри фигурных скобок
{}выполняется - Если условие ложно, то блок кода пропускается
Теперь создадим более интерактивный пример, который демонстрирует, как операторы if могут принимать решения на основе пользовательского ввода:
#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;
}
Скомпилируйте и запустите программу:
gcc voting_eligibility.c -o voting_eligibility
./voting_eligibility
Пример вывода:
Enter your age: 20
You are eligible to vote.
Основные моменты, которые необходимо запомнить:
- Операторы if позволяют вашей программе принимать решения
- Условие оценивается как истинное или ложное
- Будет выполнен только блок кода для истинного условия
- Вы можете использовать операторы сравнения, такие как
>,<,>=,<=,==,!=
Исследовать операторы неравенства
На этом этапе вы углубитесь в программирование на языке C, изучая операторы неравенства, которые являются важными для создания более сложных условных операторов. Операторы неравенства позволяют сравнивать значения и принимать решения на основе их отношений.
Создадим новый файл с именем inequality_operators.c в директории ~/project, чтобы продемонстрировать различные операторы неравенства:
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;
}
Скомпилируйте и запустите программу:
gcc inequality_operators.c -o inequality_operators
./inequality_operators
Пример вывода:
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
Создадим еще один пример, который демонстрирует использование операторов неравенства с пользовательским вводом:
#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;
}
Скомпилируйте и запустите программу:
gcc grade_calculator.c -o grade_calculator
./grade_calculator
Пример вывода:
Enter your exam score: 85
Good job! You got a B.
Основные моменты, которые необходимо запомнить:
- Операторы неравенства помогают сравнивать значения
==проверяет, равны ли значения!=проверяет, не равны ли значения>проверяет, больше ли левое значение, чем правое<проверяет, меньше ли левое значение, чем правое>=проверяет, больше или равно ли левое значение правому<=проверяет, меньше или равно ли левое значение правому
Составить последовательность операторов if-else
На этом этапе вы научитесь создавать последовательности операторов if-else для создания более сложных структур принятия решений в программировании на языке C. Создание последовательности операторов if-else позволяет обрабатывать несколько условий и предоставлять альтернативные пути выполнения кода, если предыдущие условия не выполняются.
Создадим файл с именем weather_advisor.c в директории ~/project, чтобы продемонстрировать последовательность операторов if-else:
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;
}
Скомпилируйте и запустите программу:
gcc weather_advisor.c -o weather_advisor
./weather_advisor
Пример вывода:
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!
Создадим еще один пример, который демонстрирует более практическое применение последовательности операторов if-else:
#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;
}
Скомпилируйте и запустите программу:
gcc discount_calculator.c -o discount_calculator
./discount_calculator
Пример вывода:
Enter product category (A/B/C): B
Enter product price: 600
Original price: $600.00
Discount: 15%
Discounted price: $510.00
Основные моменты, которые необходимо запомнить:
- Последовательность операторов if-else позволяет обрабатывать несколько условий
- Каждое условие проверяется по порядку сверху вниз
- Выполняется только блок кода первого совпавшего условия
- Блок
elseпредоставляет действие по умолчанию, если ни одно из предыдущих условий не выполняется - Вы можете вкладывать операторы if-else для создания более сложных структур принятия решений
Комбинировать выражения с помощью логических операторов
На этом этапе вы научитесь комбинировать несколько условий с использованием логических операторов в программировании на языке C. Логические операторы позволяют создавать более сложные условные операторы, соединяя несколько выражений.
Создадим файл с именем logical_operators.c в директории ~/project, чтобы продемонстрировать три основных логических оператора: И (&&), ИЛИ (||) и НЕ (!):
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;
}
Скомпилируйте и запустите программу:
gcc logical_operators.c -o logical_operators
./logical_operators
Пример вывода:
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.
Создадим еще один пример, который демонстрирует более сложные логические условия:
#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;
}
Скомпилируйте и запустите программу:
gcc membership_conditions.c -o membership_conditions
./membership_conditions
Пример вывода:
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.
Основные моменты, которые необходимо запомнить:
- Оператор
&&(И): оба условия должны быть истинными - Оператор
||(ИЛИ): хотя бы одно условие должно быть истинным - Оператор
!(НЕ): инвертирует условие - Вы можете комбинировать несколько условий для создания сложной логики
- Скобки могут помочь уточнить порядок вычислений
Практиковаться в использовании условной логики
На этом последнем этапе вы примените все, что вы узнали о структурах принятия решений в языке C, создав комплексную программу, которая демонстрирует несколько приемов условной логики.
Создадим многоцелевую программу с именем personal_finance_advisor.c в директории ~/project, которая поможет пользователям принимать финансовые решения:
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;
}
Скомпилируйте и запустите программу:
gcc personal_finance_advisor.c -o personal_finance_advisor
./personal_finance_advisor
Пример вывода:
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
Создадим дополнительную программу - задачу, чтобы еще больше потренироваться в использовании условной логики:
#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;
}
Скомпилируйте и запустите программу:
gcc grade_calculator.c -o grade_calculator
./grade_calculator
Пример вывода:
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.
Основные моменты, которые необходимо запомнить:
- Комбинируйте несколько условий с использованием логических операторов
- Используйте вложенные операторы if-else для сложного принятия решений
- Учитывайте крайние случаи и предоставляйте комплексную логику
- Разбивайте сложные проблемы на более мелкие, управляемые условия
Резюме
В этом практическом занятии (лабораторной работе) вы узнали о фундаментальном концепте операторов if в программировании на языке C, которые являются важными для создания структур принятия решений в вашем коде. Вы изучили, как операторы if позволяют вашей программе принимать решения и выполнять различные блоки кода на основе определенных условий. Вы также узнали о операторах неравенства, создании последовательностей операторов if-else, комбинировании выражений с помощью логических операторов и практиковании условной логики для создания более сложных структур принятия решений в ваших программах на языке C.
Основные моменты, рассмотренные в этом практическом занятии, включают понимание базового синтаксиса операторов if, оценку логических выражений как истинных или ложных и выполнение соответствующего блока кода на основе условия. Вы также узнали, как использовать операторы if для принятия решений на основе пользовательского ввода, что является важным навыком для создания интерактивных приложений.



