αληθής (true), μημηδενική ή ψευδής (false), μηδενική χρήση...
Transcript of αληθής (true), μημηδενική ή ψευδής (false), μηδενική χρήση...
Λογικές παραστάσεις
• Η τιμή μιας λογικής παράστασης είναι
αληθής (true), μη μηδενική
ή ψευδής (false), μηδενική
• Οι συγκρίσεις παραστάσεων γίνονται με χρήση των τελεστών συσχέτισης
Τελεστές Συσχέτισης
Αλγεβρικός Τελεστής Τελεστής στη C
< <
> >
≤ <=
≥ >== ==
≠ !=
Ιεραρχία και προσεταιριστικότητα τελεστών συσχέτισης
• <, <=, >, >= (αριστερά προς τα δεξιά)
• ==, != (αριστερά προς τα δεξιά)
Πχ int a=3, b=2;
η λογική παράσταση a>b είναι αληθής (μη μηδενική)
Η λογική παράσταση a==b είναι ψευδής (0)
Προσοχή!!
Άλλο το b=2 (εντολή εκχώρησης) και άλλο το b==2 (λογική παράσταση με επιστρεφόμενη τιμή ακέραιο – 0 αν είναι ψευδής, μη μηδενικό αν είναι αληθής)
Λογικοί τελεστές (1/5)
• && (ο λογικός τελεστής And)
<Λογική παρ.1> && <Λογική παρ.2>, το αποτέλεσμα είναι 1 αν και οι δύο παραστάσεις είναι αληθείς, διαφορετικά είναι 0
Παράσταση1 Παράσταση2 Αποτέλεσμα &&
0 0 0
1 0 0
0 1 0
1 1 1
Λογικοί τελεστές (2/5)
Πχ int a=3, b=2, c=6• (a>b) && ( c<=b), ψευδής• (c>a) && (c>=b), αληθής
Αν κατά την εκτέλεση μιας πράξης AND το πρώτο μέλος είναι ψευδές, το δεύτερο μέλος δεν αξιολογείται:
Πχ: αν int x = 1;Στην παράσταση ( (x == 2) && (y == 3) ) το αν το y είναι
3 δεν αξιολογείται, (η παράσταση επιστρέφει 0 -ψευδής)
Λογικοί τελεστές (3/5)
• || (ο λογικός τελεστής Or)<Λογική παρ.1> || <Λογική παρ.2>, το αποτέλεσμα είναι αληθές
αν τουλάχιστον μία εκ των δύο παραστάσεων είναι αληθής. Μόνο αν και οι 2 παραστάσεις είναι ψευδείς το αποτέλεσμα είναι ψευδές (0).
Παράσταση1 Παράσταση2 Αποτέλεσμα ||0 0 0 1 0 10 1 11 1 1
Λογικοί τελεστές (4/5)
Πχ int a=3, b=2, c=6• (A>b) || (c<=b), αληθής• (c<a) || (c<=b), ψευδής
Αν κατά την εκτέλεση μιας πράξης OR το πρώτο μέλος είναι αληθές, το δεύτερο μέλος δεν αξιολογείται:
Πχ: αν int x = 1;Στην παράσταση ( (x == 1) || (y == 3) ) το αν το y είναι 3
δεν αξιολογείται, (η παράσταση επιστρέφει μη μηδενική τιμή - αληθής)
Λογικοί τελεστές (5/5)
! (ο λογικός τελεστής Not)!<Λογική παρ.1>Αν η λογική παρ.1 είναι αληθής, το αποτέλεσμα είναι
ψευδές, διαφορετικά είναι αληθές
Λογική Παράσταση Πράξη Not0 11 0
Πχ int a=3, b=2, c=6• !(A>b), ψευδές (0)• !(c<a), αληθές (μη μηδενικό)
Παραδείγματα
• Εκφράστε τις παρακάτω σχέσεις σε C
1) 0.0 < x <3.5
2) x ≤ y ≤ z
3) a > b > c
( 0.0 < x ) && ( x < 3.5 )
( x <= y ) && ( y <=z )
( a > b ) && ( b > c)
Απλοποίηση μορφής
1) !(a==b)
2) !(a!=b)
3) !(a<b)
4) !(a<=b)
5) !(a>b)
6) !(a>=b)
a!=b
a==b
a>=b
a>b
a<=b
a<b
Θεώρημα De Morgan
1) !(Λογ.Παράσταση1 && Λογ. Παράσταση2)
2) !(Λογ.Παράσταση1 || Λογ.Παράσταση2)
( !Λογ.Παράσταση1) || (!Λογ.Παράσταση2)
( !Λογ.Παράσταση1) && (!Λογ.Παράσταση2)
Ιεραρχία Τελεστών
• Για να μπορέσει να υπολογιστεί η τιμή μιας παράστασης με αριθμητικούς και λογικούς τελεστές, πρώτα πρέπει να εκτελεστούν οι αριθμητικές και μετά οι λογικές πράξεις
Ιεραρχία Τελεστών
• () (από αριστερά προς τα δεξιά)• !, ++, -- (δεξιά προς τα αριστερά)• *, /, % (αριστερά προς τα δεξιά)• +, - (αριστερά προς τα δεξιά)• <, >, <=, >= (αριστερά προς τα δεξιά)• ==, != (αριστερά προς τα δεξιά)• && (αριστερά προς τα δεξιά)• || (αριστερά προς τα δεξιά)• =, +=, -=, *=, /=, %= (δεξιά προς τα αριστερά)
Λογική Καταχώρηση
• Η εντολή καταχώρησης μπορεί να χρησιμοποιηθεί και για την καταχώρηση της τιμής μιας λογικής παράστασης σε μια μεταβλητή (τύπου int)
double thermokrasia;int zesti, krio, kanoniki;scanf(“%lf”, &thermokrasia);zesti = thermokrasia>38; /* zesti e {0,1} */krio = thermokrasia<5; /* krio e {0,1} */kanoniki = (!zesti) && (!krio); /* kanoniki e {0,1} */
Λογική Καταχώρηση
• Οι μεταβλητές zesti, kryo έχουν την τιμή της παράστασης
zesti = thermokrasia>38; /* zesti e {0,1} */
krio = thermokrasia<5; /* krio e {0,1} */
• Οι μεταβλητές zesti, kryo έχουν την τιμή της μεταβλητής thermokrasia
(zesti = thermokrasia) >38;
(krio = thermokrasia) <5;
Εντολές Επιλογής – Η εντολή If
• Η σύνταξη της if:
if (Παράσταση)
εντολή;
• Για ένα σώμα εντολών
if (Παράσταση)
{Εντολή1;
Εντολή2;
}
Εντολές Επιλογής – Η εντολή If
Παράσταση
Σώμα εντολών
Επόμενηεντολή
Μη μηδενική (αληθής)
0(ψευδής)
Εντολές Επιλογής – Η εντολή If
H ενέργεια
αν x>0 τότε y = y - x
σε C γράφεται:
if ( x>0 )
y = y - x;
Παράδειγμα
• Ένα πρόγραμμα που να διαβάζει 2 αριθμούς και να τοποθετεί το μεγαλύτερο στη μεταβλητή χ και το μικρότερο στην y
Βήματα
• Διάβασε δύο αριθμούς και αποθήκευσέ τους στις μεταβλητές x και y. Εκτύπωσε τις τιμές x και y.
• Αν x<y, αντάλλαξε τις τιμές των x και y
• Εκτύπωσε τις τιμές των x,y
Βήματα – Ανταλλαγή των x και y
x
1 3
2
prosorini
y
Για να γίνει η ανταλλαγή των τιμών των x,y θα πρέπει να χρησιμοποιηθεί μια ενδιάμεση μεταβλητή (prosorini)Καταχώρηση της x στην prosoriniΚαταχώρηση της y στην xΚαταχώρηση της prosorini στην y
Πρόγραμμα
#include <stdio.h>#include <stdlib.h>main(){//Δηλώσεις Μεταβλητών
double x,y,prosorini;//Εκτύπωση
printf(“Δώστε τις τιμές των x,y\n”);//Αποθήκευση στις μεταβλητές
scanf(“%lf %lf”,&x,&y);
Πρόγραμμα
//Εκτύπωσηprintf(“ x=%lf\n y=%lf\n”,x,y);
//Έλεγχος και ανταλλαγή τιμών αν χρειάζεται if (x<y){
prosorini = x;x = y;y = prosorini;
}
Πρόγραμμα
//Εκτύπωση αποτελέσματος
printf(“ megisti:%f, elaxisti:%f”,x,y);
system(“pause”);
return 0;
}
Εντολές Επιλογής (If – else)
• Η σύνταξη της if - else:
if (Παράσταση)
εντολή1;
else
εντολή2;
Εντολές Επιλογής (If – else)
• Για ένα σώμα εντολώνif (Παράσταση) {
Εντολή1;Εντολή2;
}else{
Εντολή1;Εντολή2;
}
Εντολές Επιλογής (If – else)
Παράσταση
Εντολή_1 Εντολή_2
Επόμενη εντολή
0(ψευδής)Μη μηδενική(αληθής)
Εντολές Επιλογής (If – else)
H ενέργεια
αν x<y τότε min = x αλλιώς min=y
σε C γράφεται:
if ( x<y )
min = x;
else
min = y;
Εντολές Επιλογής (If – else)
• Aν χ≥ 0, τότε sum1 = sum1+x και sum2 = sum2 + 1, διαφορετικά sum1 = sum1 – x και sum2 = sum2 -1
• Σε C γράφεται:If (x>=0){
sum1 = sum1 + x;sum2 = sum2 + 1;
}else{
sum1 = sum1 - x;sum2 = sum2 - 1;
}
sum1 +=x;sum2++;
sum1 -= x;sum2--;
Η if – else είναι 1 εντολή
Μπορεί να γραφτεί:
1) if (Παράσταση1)if (Παράσταση2)
Εντολή1;
else
Εντολή2
Η if – else είναι 1 εντολή
2) if (Παράσταση1)if (Παράσταση2)
Εντολή1;else
if (Παράσταση3)Εντολή2;
elseΕντολή3;
elseΕντολή4;
Παράδειγμα
Να γραφτεί ένα πρόγραμμα που να διαβάζει ένα χαρακτήρα και να εξετάζει αν είναι κενός χαρακτήρας, ψηφίο, γράμμα ή νέα γραμμή.
Πρόγραμμα
#include <stdio.h>
#include <stdlib.h>
main(){
char c;
printf(“Input char\n”);
scanf(“%c”,&c);
Πρόγραμμα
If (c == ‘ ‘)printf(“Space character\n”);
elseif (c>=‘0’ && c<=‘9’)
printf(“Digit\n”);else
if ( c>=‘a’ && c<=‘z’ || c>=‘A’ && c<=‘Z’)printf(“Letter\n”);
elseif (c == ‘\n’)
printf(“New line\n”);
Πρόγραμμα
system(“pause”);
return 0;
}
Εντολές Επιλογής –Η εντολή Switch
switch ( Παράσταση ){
case σταθερά1:εντολή1;break;
…….
case σταθεράν:εντολή1;break;
default:τελευταία εντολή;
}
Int ή char
Σύγκριση με την Παράσταση
Εντολές Επιλογής –Η εντολή Switch (σώμα εντολών)
switch ( Παράσταση ){
case σταθερά1:{
εντολή1;εντολή2;break;
}…….
case σταθεράν:εντολή1;break;
default:τελευταία εντολή;
}
Παράδειγμα
Έστω ότι οι μέρες της εβδομάδας Δευτέρα έως Κυριακή αντιστοιχούν στους αριθμούς 1-7. Γράψτε ένα πρόγραμμα που να τυπώνει το όνομα της αντίστοιχης μέρας αν υπάρχει.
Πρόγραμμα
#include <stdio.h>
#include <stdlib.h>
main(){
int arithmos;
printf(“Dwse akeraio apo 1 ews 7:\n”);
scanf(“%d”,&arithmos);
Πρόγραμμα
switch(arithmos){case 1:
printf(“Monday\n”);break;
case 2:printf(“Tuesday\n”);break;
case 3:printf(“Wednesday\n”);
Πρόγραμμα
case 4:printf(“Thursday\n”);break;
case 5:printf(“Friday\n”);break;
case 6:printf(“Saturday\n”);break;
Πρόγραμμα
case 7:
printf(“Sunday\n”);
break;
default:
printf(“Number is not in the range [1,7]\n”);
}