Εντολές ελέγχου 

 

Η C υποστηρίζει τις παρακάτω δομές ελέγχου: 

 

Εντολή if-else:

Οι εντολές if και if-else υπάρχουν σχεδόν σε όλες τις γλώσσες προγραμματισμού. Χρησιμοποιούνται για να   ελέγξουν να ισχύει ή όχι κάποια συνθήκη. Στην C η γενική σύνταξη της εντολής είναι:

if (<ΣΥΝΘΗΚΗ>) 

             Ενότητα -Α

else

             Ενότητα-Β

Η <ΣΥΝΘΗΚΗ> μπορεί να είναι λογική έκφραση, έκφραση συσχετισμού, αποτέλεσμα κάποιας πράξης, είτε ακόμα και κάποια μεταβλητή. Η Ενότητα-Α και η Ενότητα-Β μπορεί να περιλαμβάνουν μία εντολή ή πολλές εντολές (block) που περικλείονται σε άγκιστρα ({,}). Οι εντολές (ή η εντολή) της Ενότητας-Α εκτελούνται αν η <ΣΥΝΘΗΚΗ> είναι αληθής (όχι 0), ενώ οι εντολές (ή η εντολή) της Ενότητας-Β εκτελείται αν η <ΣΥΝΘΗΚΗ>  είναι ψευδής (0-μηδέν). Το else είναι προαιρετικό και όταν υφίσταται αναφέρεται στο πλησιέστερο πριν από αυτό if που δεν έχει else. Αν δεν υπάρχει else και η συνθήκη είναι ψευδής, τότε η εντολή if δεν κάνει τίποτα και το πρόγραμμα προχωρά στην εκτέλεση των επόμενων εντολών. Κάθε ενότητα είναι δυνατόν να περικλείει και άλλες if-else ενότητες (blocks) εντολών. Παραδείγματα:

 

Προγραμμα -Α:
Έλεγχος ενός ακεραίου (μεταβλητή num)
Προγραμμα -Β:
Έλεγχος ενός ακεραίου (μεταβλητή num) με άλλο τρόπο
int num;

.......

if (num = = 2)
  printf("The num is now: 2\n");

if (num < 5)
  printf("The num is now %d, less than 5\n",num);
else
  printf("The num is now %d, greater than 4\n",num);
int num;

.......

if (num = = 2)
  printf("The num is now: 2\n");

else if (num < 5)
            printf("the num is now less than 5\n");
        else
             printf("the num is now  greater than 4\n");
Προγραμμα -Γ:
Εύρεση του μεγαλύτερου μεταξύ 3 ακεραίων (ένθετα if)
Προγραμμα -Δ:
Εύρεση του μεγαλύτερου μεταξύ 3 ακεραίων (λογικές προτάσεις)

int a,b,c;

.......... 

if (a>b)
      if (a>c) 
            printf ("max is a:%d", a);
      else
            printf ("max is c:%d", c);
 else
       if (b>c)
             printf ("max is b:%d",b);
       else
              printf("max is c:%d",c); 

int a,b,c;

.......... 

if (a>b  &&  a>c)
            printf ("max is a:%d", a);
if (b>a  &&  b > c)
            printf ("max is b:%d", b);
if (c> a  &&  c > b)
             printf ("max is c:%d",c);
 

 

Σχολιάστε:


Περίεργες συνθήκες:

Εντολή switch:

 

Η γενικευμένη μορφή της εντολής είναι:

switch (έκφραση)

{
    case σταθερά-1: 
                    Ενότητα εντολών - 1; 
                    break;
    case σταθερά-2: 
                   
Ενότητα εντολών - 2
                    break;

    case

    ..............

    case σταθερά-n: 
                   
Ενότητα εντολών - n
                    break;

    default:
               
Ενότητα εντολών;
                break;

}

Εκτελούνται οι εντολές των οποίων η σταθερά του case ταιριάζει με την τιμή της έκφρασης. Η εκτέλεση του προγράμματος μέσα σε ένα switch συνεχίζεται στο επόμενο case, εκτός αν δεν μεσολαβεί κάποια από τις εντολές break, exit ή return. Αν η τιμή της έκφρασης δεν ταιριάζει με καμία σταθερά, τότε εκτελείται η εντολή στο block της default (που είναι προαιρετικό).

 

Προγραμμα -Α:
Ελέγχει αν ο χρήστης πλητρολόγησε από το 1 έως το 6
Προγραμμα -Β:
Αριθμομηχανή με τη switch
#include <stdio.h>
main()
{
  int a;

  printf("Enter an integer: ");
   scanf("%d", &a);
      /* Check values of a */
   switch (a)
     {
          case 1:
                     puts("You entered 1");
                     break;
          case 2:
                     puts("You entered 2");
                     break;
          case 3:
                     puts("You entered 3");
                     break;
           case 4:
                     puts("You entered 4");
                     break;
            case 5:
                     puts("You entered 5");
                     break;
            case 6:
                      puts("You entered 6");
                      break;
            default:
                      puts("You enter an integer less than 1 or more than 6");
       }
}
#include <stdio.h>
main()
{

  char p;
  float x,y,result;
  int flag=0;
  printf("Enter operation: ");
  scanf("%c", &p);

  printf("Enter first operand: ");
  scanf("%f", &x);

  printf("Enter second operand: ");
  scanf("%f", &y);

  /* Check for operation symbol */
  switch (p)
  {
       case '+':
        result = x + y;  printf("%f %c %f = %f\n", x, p, y, result);
        break;
                   case '-':
        result = x - y;  printf("%f %c %f = %f\n", x, p, y, result);
        break;
                   case '*':
        result = x * y;  printf("%f %c %f = %f\n", x, p, y, result);
         break;
                   case '/':
         if (y ==0) printf("Διαίρεση με 0 \n");
                                 else printf("%f %c %f = %f\n", x, p, y, result);
                                 break;
                   default:  printf("Λάθος τελεστής\n");
}


Εντολή break:

H εντολή break προκαλεί τον τερματισμό  μιας εντολής switch ή και μιας επαναληπτικής διαδικασίας (που προκλήθηκε με εντολή for ή την  while - δείτε την επόμενη ενότητα). Η εκτέλεση του προγράμματος συνεχίζεται μετά την εντολή switch ή την εντολή επανάληψης.

while(...)
{

. . . 

break;

. . . 

}

. . . /* H εκτέλεση του προγράμματος συνεχίζεται μετά το break */

 
Στην προηγούμενη ενότητα

Στην αρχική σελίδα

Στην επόμενη ενότητα





Κ.Βασιλάκης / ΤΕΙ Κρήτης