Entscheidungsstrukturen in C

CCBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab werden Sie lernen, wie Sie Entscheidungsstrukturen in der C-Programmierung erstellen. Sie beginnen damit, das grundlegende Konzept der if-Anweisung zu verstehen, die es Ihrem Programm ermöglicht, Entscheidungen auf der Grundlage bestimmter Bedingungen zu treffen. Anschließend werden Sie Ungleichheitsoperatoren untersuchen, verkettete if-else-Anweisungen verwenden, Ausdrücke mit logischen Operatoren kombinieren und bedingte Logik üben. Am Ende dieses Labs werden Sie ein solides Verständnis davon haben, wie Sie Entscheidungsstrukturen in Ihren C-Programmen erstellen können, was Ihnen ermöglicht, komplexeren und intelligenteren Code zu schreiben.

Dies ist ein Guided Lab, das schrittweise Anweisungen bietet, um Ihnen beim Lernen und Üben zu helfen. Befolgen Sie die Anweisungen sorgfältig, um jeden Schritt abzuschließen und praktische Erfahrungen zu sammeln. Historische Daten zeigen, dass dies ein Labor der Stufe Anfänger mit einer Abschlussquote von 85% ist. Es hat eine positive Bewertungsrate von 100% von den Lernenden erhalten.

Die if-Anweisung verstehen

In diesem Schritt werden Sie das grundlegende Konzept der if-Anweisungen in der C-Programmierung kennenlernen, die für die Erstellung von Entscheidungsstrukturen in Ihrem Code von entscheidender Bedeutung sind. If-Anweisungen ermöglichen es Ihrem Programm, Entscheidungen zu treffen und verschiedene Codeblöcke auf der Grundlage bestimmter Bedingungen auszuführen.

Beginnen wir damit, ein einfaches C-Programm zu erstellen, das die grundlegende Syntax der if-Anweisung zeigt. Öffnen Sie den VSCode-Editor und erstellen Sie eine neue Datei namens if_statement.c im Verzeichnis ~/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;
}

Kompilieren und führen Sie das Programm aus:

gcc if_statement.c -o if_statement
./if_statement

Beispielausgabe:

The temperature is comfortable.

Lassen Sie uns die if-Anweisung analysieren:

  • Dem Schlüsselwort if folgt eine Bedingung in Klammern ()
  • Die Bedingung ist ein logischer Ausdruck, der entweder wahr oder falsch ergibt
  • Wenn die Bedingung wahr ist, wird der Codeblock innerhalb der geschweiften Klammern {} ausgeführt
  • Wenn die Bedingung falsch ist, wird der Codeblock übersprungen

Nun erstellen wir ein interaktiveres Beispiel, das zeigt, wie if-Anweisungen Entscheidungen auf der Grundlage von Benutzereingaben treffen können:

#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;
}

Kompilieren und führen Sie das Programm aus:

gcc voting_eligibility.c -o voting_eligibility
./voting_eligibility

Beispielausgabe:

Enter your age: 20
You are eligible to vote.

Wichtige Punkte zu merken:

  • If-Anweisungen ermöglichen es Ihrem Programm, Entscheidungen zu treffen
  • Die Bedingung wird als wahr oder falsch ausgewertet
  • Nur der Codeblock für die wahre Bedingung wird ausgeführt
  • Sie können Vergleichsoperatoren wie >, <, >=, <=, ==, != verwenden

Ungleichheitsoperatoren untersuchen

In diesem Schritt vertiefen Sie Ihre Kenntnisse in der C-Programmierung, indem Sie Ungleichheitsoperatoren untersuchen. Diese sind für die Erstellung komplexerer bedingter Anweisungen unerlässlich. Mit Ungleichheitsoperatoren können Sie Werte vergleichen und Entscheidungen auf der Grundlage ihrer Beziehungen treffen.

Erstellen Sie eine neue Datei namens inequality_operators.c im Verzeichnis ~/project, um verschiedene Ungleichheitsoperatoren zu demonstrieren:

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;
}

Kompilieren und führen Sie das Programm aus:

gcc inequality_operators.c -o inequality_operators
./inequality_operators

Beispielausgabe:

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

Erstellen wir ein weiteres Beispiel, das die Verwendung von Ungleichheitsoperatoren mit Benutzereingaben zeigt:

#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;
}

Kompilieren und führen Sie das Programm aus:

gcc grade_calculator.c -o grade_calculator
./grade_calculator

Beispielausgabe:

Enter your exam score: 85
Good job! You got a B.

Wichtige Punkte zu merken:

  • Ungleichheitsoperatoren helfen bei der Vergleich von Werten.
  • == prüft, ob Werte gleich sind.
  • != prüft, ob Werte ungleich sind.
  • > prüft, ob der linke Wert größer als der rechte Wert ist.
  • < prüft, ob der linke Wert kleiner als der rechte Wert ist.
  • >= prüft, ob der linke Wert größer oder gleich dem rechten Wert ist.
  • <= prüft, ob der linke Wert kleiner oder gleich dem rechten Wert ist.

Verkettete if-else-Anweisungen

In diesem Schritt lernen Sie, wie Sie if-else-Anweisungen verketten, um komplexere Entscheidungsstrukturen in der C-Programmierung zu erstellen. Das Verketteln von if-else-Anweisungen ermöglicht es Ihnen, mehrere Bedingungen zu behandeln und alternative Codepfade bereitzustellen, wenn vorherige Bedingungen nicht erfüllt sind.

Erstellen Sie eine Datei namens weather_advisor.c im Verzeichnis ~/project, um verkettete if-else-Anweisungen zu demonstrieren:

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;
}

Kompilieren und führen Sie das Programm aus:

gcc weather_advisor.c -o weather_advisor
./weather_advisor

Beispielausgabe:

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!

Erstellen wir ein weiteres Beispiel, das eine praktischere Anwendung von verketteten if-else-Anweisungen zeigt:

#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;
}

Kompilieren und führen Sie das Programm aus:

gcc discount_calculator.c -o discount_calculator
./discount_calculator

Beispielausgabe:

Enter product category (A/B/C): B
Enter product price: 600
Original price: $600.00
Discount: 15%
Discounted price: $510.00

Wichtige Punkte zu merken:

  • Verkettete if-else-Anweisungen ermöglichen es Ihnen, mehrere Bedingungen zu behandeln.
  • Jede Bedingung wird von oben nach unten nacheinander überprüft.
  • Nur der Codeblock der ersten passenden Bedingung wird ausgeführt.
  • Der else-Block stellt eine Standardaktion bereit, wenn keine der vorherigen Bedingungen erfüllt ist.
  • Sie können if-else-Anweisungen verschachteln, um komplexere Entscheidungsstrukturen zu erstellen.

Ausdrücke mit logischen Operatoren kombinieren

In diesem Schritt lernen Sie, wie Sie in der C-Programmierung mehrere Bedingungen mit logischen Operatoren kombinieren können. Logische Operatoren ermöglichen es Ihnen, komplexere bedingte Anweisungen zu erstellen, indem Sie mehrere Ausdrücke verbinden.

Erstellen Sie eine Datei namens logical_operators.c im Verzeichnis ~/project, um die drei Hauptlogischen Operatoren zu demonstrieren: UND (&&), ODER (||) und NICHT (!):

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;
}

Kompilieren und führen Sie das Programm aus:

gcc logical_operators.c -o logical_operators
./logical_operators

Beispielausgabe:

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.

Erstellen wir ein weiteres Beispiel, das komplexere logische Bedingungen zeigt:

#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;
}

Kompilieren und führen Sie das Programm aus:

gcc membership_conditions.c -o membership_conditions
./membership_conditions

Beispielausgabe:

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.

Wichtige Punkte zu merken:

  • && (UND)-Operator: Beide Bedingungen müssen wahr sein.
  • || (ODER)-Operator: Mindestens eine Bedingung muss wahr sein.
  • ! (NICHT)-Operator: Negiert die Bedingung.
  • Sie können mehrere Bedingungen kombinieren, um komplexe Logik zu erstellen.
  • Klammern können helfen, die Ausführungsreihenfolge zu verdeutlichen.

Übung in bedingter Logik

In diesem letzten Schritt wenden Sie alles an, was Sie über Entscheidungsstrukturen in C gelernt haben, indem Sie ein umfassendes Programm erstellen, das mehrere Techniken der bedingten Logik demonstriert.

Erstellen wir ein vielseitiges Programm namens personal_finance_advisor.c im Verzeichnis ~/project, das Benutzern bei finanziellen Entscheidungen hilft:

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;
}

Kompilieren und führen Sie das Programm aus:

gcc personal_finance_advisor.c -o personal_finance_advisor
./personal_finance_advisor

Beispielausgabe:

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

Erstellen wir ein Bonus-Challenge-Programm, um die bedingte Logik weiter zu üben:

#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;
}

Kompilieren und führen Sie das Programm aus:

gcc grade_calculator.c -o grade_calculator
./grade_calculator

Beispielausgabe:

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.

Wichtige Punkte zu merken:

  • Kombinieren Sie mehrere Bedingungen mit logischen Operatoren.
  • Verwenden Sie verschachtelte if-else-Anweisungen für komplexe Entscheidungen.
  • Berücksichtigen Sie Randfälle und stellen Sie umfassende Logik bereit.
  • Zerlegen Sie komplexe Probleme in kleinere, handhabbare Bedingungen.

Zusammenfassung

In diesem Lab haben Sie das grundlegende Konzept von if-Anweisungen in der C-Programmierung kennengelernt, die für die Erstellung von Entscheidungsstrukturen in Ihrem Code von entscheidender Bedeutung sind. Sie haben untersucht, wie if-Anweisungen es Ihrem Programm ermöglichen, Entscheidungen zu treffen und verschiedene Codeblöcke basierend auf bestimmten Bedingungen auszuführen. Sie haben auch über Ungleichheitsoperatoren, das Verketteln von if-else-Anweisungen, das Kombinieren von Ausdrücken mit logischen Operatoren und das Üben von bedingter Logik gelernt, um komplexere Entscheidungsstrukturen in Ihren C-Programmen zu erstellen.

Die in diesem Lab behandelten Schlüsselpunkte umfassen das Verständnis der grundlegenden Syntax von if-Anweisungen, die Auswertung logischer Ausdrücke als wahr oder falsch und die Ausführung des entsprechenden Codeblocks basierend auf der Bedingung. Sie haben auch gelernt, wie Sie if-Anweisungen verwenden, um Entscheidungen auf der Grundlage von Benutzereingaben zu treffen, was eine essentielle Fähigkeit für die Entwicklung interaktiver Anwendungen ist.