Δηλώσεις υπό όρους σε C: If, Else, Nested If with Example

⚡ Έξυπνη Σύνοψη

Οι εντολές υπό όρους στη C ελέγχουν τη ροή ενός προγράμματος εκτελώντας μπλοκ κώδικα μόνο όταν μια δοκιμασμένη συνθήκη αξιολογηθεί ως αληθής, επιτρέποντας τη λήψη αποφάσεων μέσω κατασκευών if, if-else, nested και else-if ladder.

  • 🔤 Εάν η δήλωση: Μια εντολή if εκτελεί το μπλοκ της μόνο όταν η συνθήκη είναι μια τιμή true μη μηδενική, ενώ το μηδέν σημαίνει false.
  • 🔀 Αν-αλλιώς: Η κατασκευή if-else προσθέτει έναν κλάδο false, εκτελώντας ένα μπλοκ όταν η συνθήκη είναι αληθής και ένα άλλο όταν είναι ψευδής.
  • Σχεσιακοί τελεστές: Έξι τελεστές (<, <=, >, >=, ==, !=) κατασκευάζουν τις λογικές εκφράσεις που ελέγχει κάθε συνθήκη.
  • 🪜 Αλλιώς-αν σκάλα: Μια ένθετη κλίμακα else-if ελέγχει αρκετές εκφράσεις από πάνω προς τα κάτω και εκτελεί τον πρώτο αληθινό κλάδο ή έναν προεπιλεγμένο κλάδο else.
  • Τριαδικός τελεστής: Η συνθήκη ?: γράφει μια συμπαγή συνάρτηση if-else που επιστρέφει μία από τις δύο τιμές σε μία μόνο γραμμή.
  • 🤖 Βοήθεια AI: Το GitHub Copilot συντάσσει και εξετάζει τη λογική if-else, επισημαίνει τυχόν αγκύλες που λείπουν και προτείνει καθαρότερες συνθήκες.

Δήλωση υπό όρους C: ΑΝ, ΑΝ αλλιώς και ένθετο ΑΝ αλλιώς

Τι είναι μια υπό όρους δήλωση στο C;

Οι εντολές υπό όρους στον προγραμματισμό C χρησιμοποιούνται για τη λήψη αποφάσεων με βάση τις συνθήκες. Οι εντολές υπό όρους εκτελούνται διαδοχικά όταν δεν υπάρχει συνθήκη γύρω από τις εντολές. Εάν θέσετε κάποια συνθήκη για ένα μπλοκ εντολών, η ροή εκτέλεσης μπορεί να αλλάξει με βάση το αποτέλεσμα που αξιολογείται από τη συνθήκη. Αυτή η διαδικασία ονομάζεται λήψη αποφάσεων στη 'C'.

Σε αντίθεση με βρόχοι σε C ότι ο επαναλαμβανόμενος κώδικας, οι υπό όρους δηλώσεις επιλέγουν μία διαδρομή.

Στον προγραμματισμό «C» οι εντολές υπό όρους είναι δυνατές με τη βοήθεια των ακόλουθων δύο δομών:

  1. Εάν δήλωση
  2. Δήλωση if-else

Ονομάζεται επίσης ως διακλάδωση καθώς ένα πρόγραμμα αποφασίζει ποια εντολή θα εκτελεστεί με βάση το αποτέλεσμα της αξιολογούμενης συνθήκης.

Εάν δήλωση

Είναι μια από τις ισχυρές δηλώσεις υπό όρους. Εάν η δήλωση είναι υπεύθυνη για την τροποποίηση της ροής εκτέλεσης ενός προγράμματος. Αν η πρόταση χρησιμοποιείται πάντα με μια συνθήκη. Η συνθήκη αξιολογείται πρώτα πριν από την εκτέλεση οποιασδήποτε εντολής μέσα στο σώμα του If. Η σύνταξη για την εντολή if είναι η εξής:

 if (condition) 
     instruction;

Η συνθήκη αξιολογείται είτε ως αληθής είτε ως ψευδής. Το True είναι πάντα μια μη μηδενική τιμή και το false είναι μια τιμή που περιέχει μηδέν. Οι εντολές μπορεί να είναι μια μεμονωμένη εντολή ή ένα μπλοκ κώδικα που περικλείεται από σγουρά άγκιστρα { }.

Το παρακάτω πρόγραμμα απεικονίζει τη χρήση του if construct στον προγραμματισμό «C»:

#include<stdio.h>
int main()
{
	int num1=1;
	int num2=2;
	if(num1<num2)		//test-condition
	{
		printf("num1 is smaller than num2");
	}
	return 0;
}

Παραγωγή:

num1 is smaller than num2

Το παραπάνω πρόγραμμα απεικονίζει τη χρήση της κατασκευής if για τον έλεγχο της ισότητας δύο αριθμών.

Διάγραμμα ροής δήλωσης If σε C

  1. Στο παραπάνω πρόγραμμα έχουμε αρχικοποιήσει δύο μεταβλητές με num1, num2 με τιμή 1, 2 αντίστοιχα.
  2. Στη συνέχεια, χρησιμοποιήσαμε το if με μια δοκιμαστική έκφραση για να ελέγξουμε ποιος αριθμός είναι ο μικρότερος και ποιος ο μεγαλύτερος. Χρησιμοποιήσαμε μια σχεσιακή έκφραση στην κατασκευή if. Εφόσον η τιμή του num1 είναι μικρότερη από το num2, η συνθήκη θα αξιολογηθεί ως true.
  3. Έτσι θα εκτυπώσει τη δήλωση μέσα στο μπλοκ του If. Μετά από αυτό, ο έλεγχος θα πάει έξω από το μπλοκ και το πρόγραμμα θα τερματιστεί με ένα επιτυχημένο αποτέλεσμα.

Σχετικός Operaκορμοί

Η C έχει έξι σχεσιακούς τελεστές που μπορούν να χρησιμοποιηθούν για τη διαμόρφωση μιας λογικής έκφρασης για τη λήψη μιας απόφασης και τον έλεγχο συνθηκών, η οποία επιστρέφει true ή false:

  • < — λιγότερο από
  • <= — μικρότερο ή ίσο με
  • > — μεγαλύτερο από
  • >= — μεγαλύτερο ή ίσο με
  • == — ίσο με
  • != — δεν είναι ίσο με

Παρατηρήστε ότι το ίσο τεστ (==) είναι διαφορετικό από τον τελεστή εκχώρησης (=) επειδή είναι ένα από τα πιο συνηθισμένα προβλήματα που αντιμετωπίζει ένας προγραμματιστής ανακατεύοντάς τα.

Για παράδειγμα:

int x = 41;
x =x+ 1;
if (x == 42) {
   printf("You succeed!");}

Έξοδος:

 You succeed

Λάβετε υπόψη ότι μια συνθήκη που αποτιμάται σε μη μηδενική τιμή θεωρείται αληθής.

Για παράδειγμα:

int present = 1;
if (present)
  printf("There is someone present in the classroom \n");

Παραγωγή:

There is someone present in the classroom

Η δήλωση If-Else

Διάγραμμα ροής δήλωσης If-Else C

Η εντολή if-else είναι μια εκτεταμένη έκδοση της εντολής If. Η γενική μορφή της εντολής if-else έχει ως εξής:

if (test-expression)
{
    True block of statements
}
Else
{
    False block of statements
}
Statements;

Σε αυτόν τον τύπο κατασκευής, εάν η τιμή της έκφρασης δοκιμής είναι αληθής, τότε θα εκτελεστεί το μπλοκ δηλώσεων true. Εάν η τιμή της έκφρασης δοκιμής είναι ψευδής, τότε θα εκτελεστεί το μπλοκ δηλώσεων false. Σε κάθε περίπτωση, μετά την εκτέλεση, ο έλεγχος θα μεταφερθεί αυτόματα στις δηλώσεις που εμφανίζονται εκτός του μπλοκ του If.

Τα ακόλουθα προγράμματα απεικονίζουν τη χρήση της κατασκευής if-else:

Θα αρχικοποιήσουμε μια μεταβλητή με κάποια τιμή και θα γράψουμε ένα πρόγραμμα για να προσδιορίσουμε εάν η τιμή είναι μικρότερη από δέκα ή μεγαλύτερη από δέκα.

Ας αρχίσουμε.

#include<stdio.h>
int main()
{
	int num=19;
	if(num<10)
	{
		printf("The value is less than 10");
	}
	else
	{
		printf("The value is greater than 10");
	}
	return 0;
}

Παραγωγή:

The value is greater than 10

Παράδειγμα εξόδου εντολής If-Else σε C

  1. Αρχικοποιήσαμε μια μεταβλητή με τιμή 19. Πρέπει να βρούμε αν ο αριθμός είναι μεγαλύτερος ή μικρότερος από 10 χρησιμοποιώντας ένα πρόγραμμα 'C'. Για να γίνει αυτό, χρησιμοποιήσαμε την κατασκευή if-else.
  2. Εδώ έχουμε δώσει μια συνθήκη num<10 επειδή πρέπει να συγκρίνουμε την τιμή μας με το 10.
  3. Όπως μπορείτε να δείτε το πρώτο μπλοκ είναι πάντα ένα αληθινό μπλοκ που σημαίνει ότι, εάν η τιμή της δοκιμαστικής έκφρασης είναι αληθής, τότε θα εκτελεστεί το πρώτο μπλοκ που είναι το If,.
  4. Το δεύτερο μπλοκ είναι ένα άλλο μπλοκ. Αυτό το μπλοκ περιέχει τις εντολές που θα εκτελεστούν εάν η τιμή της δοκιμαστικής έκφρασης γίνει ψευδής. Στο πρόγραμμά μας, η τιμή του num είναι μεγαλύτερη από δέκα, επομένως η συνθήκη δοκιμής γίνεται ψευδής και αλλιώς εκτελείται το μπλοκ. Έτσι, η έξοδος μας θα είναι από ένα μπλοκ else που είναι "Η τιμή είναι μεγαλύτερη από 10". Μετά το if-else, το πρόγραμμα θα τερματιστεί με ένα επιτυχημένο αποτέλεσμα.

Στον προγραμματισμό «C» μπορούμε να χρησιμοποιήσουμε πολλαπλές δομές if-else μεταξύ τους, οι οποίες αναφέρονται ως ένθεση εντολών if-else.

Εκφράσεις υπό όρους

Ένας άλλος τρόπος για να εκφράσουμε μια πρόταση if-else είναι εισάγοντας τον τελεστή ?:. Σε μια υπό συνθήκη έκφραση, ο τελεστής ?: έχει μόνο μία πρόταση που σχετίζεται με το if και το else.

Για παράδειγμα:

#include <stdio.h>
int main() {
  int y;
  int x = 2;
   y = (x >= 6) ?  6 : x;/* This is equivalent to:  if (x >= 5)    y = 5;  else    y = x; */
   printf("y =%d ",y);
  return 0;}

Παραγωγή:

y =2

Ένθετες δηλώσεις If-else

Όταν απαιτείται μια σειρά αποφάσεων, χρησιμοποιείται ένθετο if-else. Ένθεση σημαίνει χρήση μιας κατασκευής if-else μέσα σε μια άλλη.

Ας γράψουμε ένα πρόγραμμα για να απεικονίσουμε τη χρήση του ένθετου if-else.

#include<stdio.h>
int main()
{
	int num=1;
	if(num<10)
	{
		if(num==1)
		{
			printf("The value is:%d\n",num);
		}
		else
		{
			printf("The value is greater than 1");
		}
	}
	else
	{
		printf("The value is greater than 10");
	}
	return 0;
}

Παραγωγή:

The value is:1

Το παραπάνω πρόγραμμα ελέγχει εάν ένας αριθμός είναι μικρότερος ή μεγαλύτερος από το 10 και εκτυπώνει το αποτέλεσμα χρησιμοποιώντας ένθετη κατασκευή if-else.

Ένθετη πρόταση If-else σε C

  1. Αρχικά, έχουμε δηλώσει μια μεταβλητή num με τιμή 1. Στη συνέχεια χρησιμοποιήσαμε την κατασκευή if-else.
  2. Στην εξωτερική συνθήκη if-else, η παρεχόμενη συνθήκη ελέγχει αν ένας αριθμός είναι μικρότερος από 10. Εάν η συνθήκη είναι αληθής, τότε και μόνο τότε θα εκτελεστεί το εσωτερικό μπλοκ. Σε αυτήν την περίπτωση, η συνθήκη είναι αληθής, επομένως το εσωτερικό μπλοκ υποβάλλεται σε επεξεργασία.
  3. Στο εσωτερικό μπλοκ, έχουμε και πάλι μια συνθήκη που ελέγχει εάν η μεταβλητή μας περιέχει την τιμή 1 ή όχι. Όταν μια συνθήκη είναι αληθής, τότε θα επεξεργαστεί το μπλοκ If, διαφορετικά θα επεξεργαστεί ένα μπλοκ else. Σε αυτήν την περίπτωση, η συνθήκη είναι αληθής, επομένως το μπλοκ If εκτελείται και η τιμή εκτυπώνεται στην οθόνη εξόδου.
  4. Το παραπάνω πρόγραμμα θα εκτυπώσει την τιμή μιας μεταβλητής και θα τερματίσει με επιτυχία.

Δοκιμάστε να αλλάξετε την τιμή του μεταβλητή δείτε πώς συμπεριφέρεται το πρόγραμμα.

ΣΗΜΕΙΩΣΗ: Στην ένθετη συνάρτηση if-else, πρέπει να είμαστε προσεκτικοί με την εσοχή, επειδή σε αυτήν τη διαδικασία εμπλέκονται πολλαπλές δομές if-else, επομένως καθίσταται δύσκολο να κατανοήσουμε τις μεμονωμένες δομές. Η σωστή εσοχή διευκολύνει την ανάγνωση του προγράμματος.

Ένθετες δηλώσεις Else-if

Ένθετη σκάλα Else-if σε C

Το ένθετο else-if χρησιμοποιείται όταν απαιτούνται αποφάσεις πολλαπλών διαδρομών.

Η γενική σύνταξη του τρόπου με τον οποίο κατασκευάζονται αλλιώς οι σκάλες στον προγραμματισμό «C» είναι η εξής:

 if (test - expression 1) {
    statement1;
} else if (test - expression 2) {
    Statement2;
} else if (test - expression 3) {
    Statement3;
} else if (test - expression n) {
    Statement n;
} else {
    default;
}
Statement x;

Αυτός ο τύπος δομής είναι γνωστός ως σκάλα else-if. Αυτή η αλυσίδα γενικά μοιάζει με σκάλα, επομένως ονομάζεται και σκάλα else-if. Οι εκφράσεις δοκιμής αξιολογούνται από πάνω προς τα κάτω. Κάθε φορά που βρίσκεται μια αληθής έκφραση δοκιμής, εκτελείται η εντολή που σχετίζεται με αυτήν. Όταν όλες οι n εκφράσεις δοκιμής γίνουν ψευδείς, τότε εκτελείται η προεπιλεγμένη εντολή else.

Ας δούμε την πραγματική εργασία με τη βοήθεια ενός προγράμματος.

#include<stdio.h>
int main()
{
	int marks=83;
	if(marks>75){
		printf("First class");
	}
	else if(marks>65){
		printf("Second class");
	}
	else if(marks>55){
		printf("Third class");
	}
	else{
		printf("Fourth class");
	}
	return 0;
}

Παραγωγή:

First class

Το παραπάνω πρόγραμμα εκτυπώνει τον βαθμό σύμφωνα με τους βαθμούς που βαθμολογούνται σε ένα τεστ. Έχουμε χρησιμοποιήσει την κατασκευή της κλίμακας else-if στο παραπάνω πρόγραμμα.

  1. Αρχικοποιήσαμε μια μεταβλητή με σημάδια. Στη δομή της κλίμακας else-if, έχουμε παράσχει διάφορες συνθήκες.
  2. Η τιμή από τα σημάδια της μεταβλητής θα συγκριθεί με την πρώτη συνθήκη, δεδομένου ότι είναι αλήθεια ότι η δήλωση που σχετίζεται με αυτήν θα εκτυπωθεί στην οθόνη εξόδου.
  3. Εάν η πρώτη συνθήκη δοκιμής αποδειχθεί ψευδής, τότε συγκρίνεται με τη δεύτερη συνθήκη.
  4. Αυτή η διαδικασία θα συνεχιστεί μέχρι να αξιολογηθούν όλες οι εκφράσεις, διαφορετικά ο έλεγχος θα βγει από την κλίμακα else-if και θα εκτυπωθεί η προεπιλεγμένη εντολή.

Δοκιμάστε να τροποποιήσετε την τιμή και παρατηρήστε την αλλαγή στην έξοδο.

Συχνές Ερωτήσεις

Ένα if-else ελέγχει οποιαδήποτε λογική έκφραση, συμπεριλαμβανομένων εύρους και σχεσιακών ελέγχων. A διακόπτης ... θήκη Συγκρίνει μια μεταβλητή με σταθερές τιμές και συχνά μεταγλωττίζεται σε έναν πίνακα ταχύτερων μεταπηδήσεων για πολλές περιπτώσεις.

Το πρόβλημα του "αιωρούμενου else" είναι η ασάφεια σχετικά με το σε ποιον ανήκει το "if" και το "else" όταν οι εντολές "if" είναι ένθετες χωρίς αγκύλες. Στη C, το "else" πάντα συνδυάζεται με το πλησιέστερο αταίριαστο "if". Η προσθήκη αγκιστρώσεων εξαλείφει τη σύγχυση.

Ναι. Οι λογικοί τελεστές συνδέουν συνθήκες: το && απαιτεί και τις δύο πλευρές να είναι αληθές, το || χρειάζεται τουλάχιστον μία αληθή και το ! αντιστρέφει ένα αποτέλεσμα. Για παράδειγμα, αν (ηλικία > 18 && πολίτης) ελέγχει δύο συνθήκες μαζί σε μία αν.

Οι αγκύλες είναι προαιρετικές όταν το σώμα είναι μία μόνο πρόταση, επομένως η C εκτελεί μόνο την επόμενη γραμμή. Για δύο ή περισσότερες προτάσεις, απαιτούνται αγκύλες για την ομαδοποίησή τους. Η χρήση αγκύλων πάντα είναι μια ασφαλής συνήθεια που αποτρέπει τα λογικά σφάλματα.

Η αξιολόγηση βραχυκυκλώματος σταματά μόλις γίνει γνωστό το αποτέλεσμα. Με &&, μια ψευδώς αριστερή πλευρά παρακάμπτει τη δεξιά πλευρά. Με ||, μια αληθώς αριστερή πλευρά παρακάμπτει τη δεξιά. Αυτό αποφεύγει την περιττή εργασία και τις μη ασφαλείς λειτουργίες.

Ναι. Μια κλίμακα "else-if" αξιολογείται από πάνω προς τα κάτω και σταματά στην πρώτη αληθή συνθήκη. Η τοποθέτηση ευρέων συνθηκών πριν από τις στενές μπορεί να κρύψει τις στενές περιπτώσεις, επομένως ταξινομήστε τις δοκιμές από την πιο συγκεκριμένη στην πιο γενική.

Ναι. Οι βοηθοί κωδικοποίησης τεχνητής νοημοσύνης σχεδιάζουν μπλοκ υπό όρους από ένα σχόλιο, μετατρέπουν μεγάλες αλυσίδες if-else σε καθαρότερες δομές και επισημαίνουν πιθανά σφάλματα, όπως η χρήση = αντί για ==. Να δοκιμάζετε πάντα τη δημιουργημένη λογική πριν την εμπιστευτείτε.

GitHub Copilot Συμπληρώνει αυτόματα τις συναρτήσεις if, else-if και τις ένθετες συνθήκες από τα σχόλιά σας ή τον περιβάλλοντα κώδικα. Προτείνει σχεσιακές και λογικές εκφράσεις και μπορεί να προσθέσει αγκύλες που λείπουν, αν και θα πρέπει να ελέγξετε κάθε πρόταση.

Συνοψίστε αυτήν την ανάρτηση με: