2 η Διάλεξη C++ Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ
Τι μάθαμε μέχρι τώρα Κάθε πρόγραμμα της c++ περιέχει υποχρεωτικά μια συνάρτηση main() η οποία είναι εκείνη που εκτελείται πρώτη. Κάθε πρόγραμμα της C++ μπορεί να περιέχει και άλλες συναρτήσεις εκτός από τη main(), οι οποίες για να εκτελεστούν πρέπει να κληθούν είτε από τη main() είτε από οποιαδήποτε άλλη συνάρτηση Κάθε μεταβλητή πρέπει να δηλώνεται. Συνήθως οι δηλωτικές προτάσεις των μεταβλητών τοποθετούνται στην αρχή μιας συνάρτησης Οι βασικοί τύποι μεταβλητών στη C++ είναι : int, float, char και bool
Τι μάθαμε μέχρι τώρα Οι αριθμητικές παραστάσεις είναι πράξεις μεταξύ αριθμητικών δεδομένων και έχουν αποτέλεσμα έναν αριθμό Οι λογικές παραστάσεις χρησιμοποιούν συγκριτικούς και συνδετικούς τελεστές και έχουν αποτέλεσμα αληθής (τιμή 1) ή ψευδής (τιμή ο) Ο τελεστής ανάθεσης = καταχωρεί το αποτέλεσμα της παράστασης στα δεξιά του στη μεταβλητή που βρίσκεται αριστερά του a=b+3 Ο συγκριτικός τελεστής == δεν πρέπει να συγχέεται με τον τελεστή ανάθεσης = Μια σύνθετη πρόταση αποτελείται από απλές προτάσεις μέσα σε αριστερό και δεξιό άγκυστρο.
Λίγη Εξάσκηση #include <iostream> using namespace std; main() int a,b,c=3; a=b=2; a=c+b; Τι θα περιέχουν οι μεταβλητές a,b και c μετά το τέλος του παραπάνω προγράμματος; (a=5,b=2,c=3)
Λίγη Εξάσκηση #include <iostream> #define MM 23 using namespace std; main() const int c=3; int a,b; a=4+b=2; b=c+b+mm; Τι θα περιέχουν οι μεταβλητές a,b και c μετά το τέλος του παραπάνω προγράμματος; (a=6,b=28,c=3)
Λίγη Εξάσκηση Εντοπίστε τα λάθη στον παρακάτω κώδικα: #include <iostream> #define MM 23 ; using namespace std; main() const int c=3; int a,b; a=2; float d; d=4.3; a=4+(b=2); MM=10; 3=a; c=c+b+mm;
Λίγη Εξάσκηση Εντοπίστε τα λάθη στον παρακάτω κώδικα: #include <iostream> #define MM 23 ; /*δεν τερματίζεται με ερωτηματικό */ using namespace std; main() const int c=3; int a,b; a=2; float d; d=4.3 /*δεν υπάρχει ;*/ a=4+(b=2); MM=10; /*δεν είναι μεταβλητή*/ 3=a; /*όνομα μεταβλητής δεν μπορεί να είναι αριθμός*/ c=c+b+mm;
Λίγη Εξάσκηση #include <iostream> using namespace std; main() int a,b,c=3; a=b=2; a=c>b; b=b==1; Τι θα περιέχουν οι μεταβλητές a,b και c μετά το τέλος του παραπάνω προγράμματος; (a=1,b=0,c=3)
Λίγη Εξάσκηση Με δεδομένες τις τιμές των μεταβλητών a=5, b=10 και c=15 σημειώστε την τιμή (1 για αλήθεια και 0 για ψέμα) των παρακάτω λογικών παραστάσεων Λογική Παράσταση a==(c-b) a>b b>c a==5&&c==15 a==5 && c>20 Τιμή
Λίγη Εξάσκηση Με δεδομένες τις τιμές των μεταβλητών a=5, b=10 και c=15 σημειώστε την τιμή (1 για αλήθεια και 0 για ψέμα) των παρακάτω λογικών παραστάσεων Λογική Παράσταση a==(c-b) 1 a>b b>c 0 a==5&&c==15 1 a==5 && c>20 0 Τιμή
Λίγη Εξάσκηση Να γραφεί πρόγραμμα το οποίο αποθηκεύει τους αριθμούς 5,7 και 23 σε τρείς θέσεις μνήμης και έπειτα υπολογίζει και αποθηκεύει σε μια 4 η θέση μνήμης το μέσο όρο τους: #include <iostream> using namespace std; main() int a=5,b=7,c=23; float d; d=(a+b+c)/3.0; cout <<d;
Λίγη Εξάσκηση Να τροποποιήσετε το προηγούμενο πρόγραμμα ώστε να υπολογίζει το μέσο όρο τριών τυχαίων αριθμών #include <iostream> #include <stdlib.h> using namespace std; main() int a,b,c; float d; a=rand(); b=rand(); c=rand(); d=(a+b+c)/3; cout <<d; return 0;
Η μνήμη Κάθε μεταβλητή καταλαμβάνει έναν αριθμό θέσεων μνήμης (byte) ο οποίος εξαρτάται από τον τύπο της μεταβλητής και από τον τύπο του συστήματος (σε συστήματα intel 32bit η μεταβλητές τύπου bool και char καταλαμβάνουν 1 byte και οι int και float 4 bytes Διεύθυνση μιας μεταβλητής είναι η διεύθυνση του πρώτου byte των θέσεων (ή της θέσης) μνήμης που δεσμεύει η μεταβλητή. Μέγεθος μιας μεταβλητής είναι ο αριθμός των byte που δεσμεύει αυτή η μεταβλητή και καθορίζεται από τον τύπο της.
Η μνήμη Ο τελεστής & επιστρέφει έναν ακέραιο αριθμό ο οποίος προσδιορίζει τη διεύθυνση μιας μεταβλητής ενώ ο τελεστής sizeof επιστρέφει το πλήθος των Byte που δεσμεύει μια μεταβλητή. #include <iostream> using namespace std; main() int a=5; cout<< sizeof a; cout<< " "; cout<<&a; return(0); Αν και οι διευθύνσεις μνήμης είναι στη πράξη ακέραιοι αριθμοί, η C++ της χειρίζεται με έναν εντελώς ιδιαίτερο τρόπο.
Είσοδος Έξοδος Η έξοδος γίνεται μέσω του αντικειμένου cout και η είσοδος μέσω του αντικειμένου cin: cout<<&a; Τελεστής εισαγωγής Μπορούμε να αποστείλουμε περισσότερες παραστάσεις στο αντικείμενο cout, χρησιμοποιώντας διαδοχικούς τελεστές εισαγωγής: cout<<a<<b<<a+b; Η παραπάνω εντολή εμφανίζει τα αποτελέσματα των παραστάσεων το ένα μετά το άλλο χωρίς κενά διαστήματα μαζί τους.
Είσοδος Έξοδος #include <iostream> #include <stdlib.h> using namespace std; main() int a,b,c; float d; a=rand(); b=rand(); c=rand(); d=(a+b+c)/3; cout <<"O MO ton arithmon " << "a=" <<a<<" b="<<b <<" c="<<c<<"\n"; /* Ο χαρακτήρας διαφυγής επιβάλει αλλαγή γραμμής cout <<"Einai o "<<d<<endl; /*O χειριστής endl του αντικειμένου cout επιβάλει μια αλλαγή γραμμής*/ cout<<"end"; return (0);
Είσοδος Έξοδος Για τη έξοδο στη οθόνη υπάρχει και η συνάρτηση printf η οποία, μπορεί να δεχτεί πολλές επιλογές διαμόρφωσης: %[flags][width][.precision][length]specifier Για περισσότερες πληροφορίες για τους τελεστές ανατρέξτε στη διεύθυνση: http://www.cplusplus.com/reference/cstdio/printf/?kw=pri ntf
Είσοδος Έξοδος /* printf example */ #include <stdio.h> int main() printf ("Characters: %c %c \n", 'a', 65); printf ("Decimals: %d %ld\n", 1977, 650000L); printf ("Preceding with blanks: %10d \n", 1977); printf ("Preceding with zeros: %010d \n", 1977); printf ("Some different radices: %d %x %o %#x %#o \n", 100, 100, 100, 100, 100); printf ("floats: %4.2f %+.0e %E \n", 3.1416, 3.1416, 3.1416); printf ("Width trick: %*d \n", 5, 10); printf ("%s \n", "A string"); return 0;
Είσοδος Έξοδος
Είσοδος Έξοδος Το αντικείμενο cin είναι συνδεδεμένο με μια προκαθορισμένη μονάδα εισόδου που συνήθως είναι το πληκτρολόγιο. Με τη χρήση του τελεστή εξαγωγής >> μπορούμε να καταχωρήσουμε την έξοδο του αντικειμένου cin σε μια μεταβλητή.
Είσοδος Έξοδος main() int a,b,c; cout << Δώσε 2 αριθμούς: ; cin>>a>>b; c=(a+b)/2; cout<< ο μέσος όρος των << a << και <<b << είναι <<c <<endl; Τα κενά και οι άλλαγές γραμμής αγνοούνται από τη c++ για αυτό μπορεί να γραφεί σε διαφορετικές γραμμές για καλύτερη εμφάνιση του προγράμματος
Είσοδος Έξοδος Άλλη εντολή εισόδου είναι και η scanf, η σύνταξή της είναι παρόμοια με την printf Πληροφορίες για την εντολή μπορείτε να βρείτε στη διεύθυνση: http://www.cplusplus.com/reference/cstdio/scanf/?kw=sca nf
Είσοδος Έξοδος /* scanf example */ #include <stdio.h> int main () char str [80]; int i; printf ("Enter your family name: "); scanf ("%79s",str); printf ("Enter your age: "); scanf ("%d",&i); printf ("Mr. %s, %d years old.\n",str,i); printf ("Enter a hexadecimal number: "); scanf ("%x",&i); printf ("You have entered %#x (%d).\n",i,i); return 0;
Η συνάρτηση exit() Η συνάρτηση exit() έχει ως αποτέλεσμα τον άμεσο τερματισμό του προγράμματος. main() int a; char c; cout<< αυτή η πρόταση θα εκτελεστή ; exit(0); cout<< Αυτή δε θα εκτελεστεί ποτέ ; Η συνάρτηση exit() έχει υποχρεωτικά ως παράμετρο έναν ακέραιο αριθμό τύπου int, ο κωδικός αυτός με το τερματισμό του προγράμματος επιστρέφεται στο λειτουργικό σύστημα. Χρησιμοποιούνται διαφορετικοί κωδικοί εξόδου για να δηλώσουμε τις περιπτώσης τερματισμού ενός προγράμματος Ο κωδικός εξόδου 0 προσδιορίζει κανονικό τερματισμό Περισσότερες πληροφορίες μπορείτε να βρείτε : http://www.cplusplus.com/reference/cstdlib/exit/?kw=exit
Η συνάρτηση exit() /* exit example */ #include <stdio.h> /* printf, fopen */ #include <stdlib.h> /* exit, EXIT_FAILURE */ int main () FILE * pfile; pfile = fopen ("myfile.txt","r"); if (pfile==null) printf ("Error opening file"); exit (EXIT_FAILURE); /*το EXIT_FAILURE έχει μια προκαθορισμένη ακέραια τιμή =1)*/ else /* file operations here */ return 0;
Η εντολή if Η εντολή if συντάσσετε ως εξής: if (λογική παράσταση) πρόταση Α; else πρόταση Ψ Στη c++ αληθής θεωρείται κάθε παράσταση (λογική ή αριθμητική που επιστρέφει τιμή διάφορη του μηδενός: 1+1 θεωρείται αληθής ενώ 1-1 ψευδής if (x>6) cout << x>6\n ; else cout<< x<=6\n ; Η παραπάνω εντολή μπορεί να γραφεί και πιο ευανάγνωστη: if (x>6) cout<< x>6\n ; else cout<< x<=6\n ;
Παραδείγματα Να γραφεί πρόγραμμα το οποίο να ζητάει 3 αριθμούς και να υπολογίζει το άθροισμα, το γινόμενό τους και το μέσο όρο τους. #include <iostream> using namespace std; main() float a,b,c,mo,gin,sum; cout << "Dose ton proto arithmo :"; cin >> a; cout << "Dose ton deytero arithmo :"; cin >> b; cout << "Dose ton trito arithmo :"; cin >> c; mo=(a+b+c)/3; gin=a*b*c; sum=a+b+c; cout << "To athroisma ton " << a << "," << b << "," << c << " einai " << sum << endl; cout << "To ginomeno ton " << a << "," << b << "," << c << " einai " << gin << endl; cout << " O mesos oros ton " << a << "," << b << "," << c << " einai " << mo << endl; system("pause");
Παράδειγμα Τι αποτέλεσμα θα έχει το παρακάτω πρόγραμμα: #include <iostream> using namespace std; main() int a=4,b=5; char ch; ch='a'; cout << a <<"---" << b << endl << "Char=" << ch; system("pause");
Παράδειγμα #include <iostream> using namespace std; main() int a,b; float f; char ch; cout << sizeof a << endl << sizeof f << endl << sizeof ch << endl; cin >> a >> f >> ch; cout << a << " " << f << " " << ch << endl; system("pause");
Παράδειγμα Εξηγήστε τη λειτουργία του παρακάτω προγράμματος #include <iostream> using namespace std; main() int a,b; cin >> a >> b; if(a>b) cout << a; else cout << b; system("pause");
Παράδειγμα Να γραφεί πρόγραμμα το οποίο να ζητάει 3 ακεραίους αριθμούς και να εμφανίζει το μεγαλύτερο από αυτούς #include <iostream> using namespace std; main() int a,b,c,max; cin >> a >> b >> c; if(a>b) max=a; else max=b; if(max>c) cout <<max; else cout << c; system("pause");
Παράδειγμα Να γραφεί πρόγραμμα το οποίο να ζητάει να πληκτρολογήσουμε 2 αριθμούς. Αν κάποιος είναι 0 τότε να εμφανίζεται το κείμενο «Λάθος δεδομένα», αλλιώς να εμφανίζει το άθροισμα το γινόμενο και το πηλίκο. #include <iostream> using namespace std; main() float a,b; cin >> a >> b; if (a==0 b==0) else system("pause"); cout << "Lathos dedomena"; cout << "Athroisma = " << a+b << endl; cout << "Ginomeno = " << a*b << endl; cout << "Piliko = " << a/b << endl;
Να θυμάστε Στη χρήση αντικειμένου cin μετά τον τελεστή εξαγωγής >> επιτρέπεται μόνο όνομα μεταβλητής Στη χρήση του αντικειμένου cout μετά τον τελεστή εισαγωγής << επιτρέπεται εκτός από το όνομα της μεταβλητής και η χρήση αλφαριθμητικών μέσα σε Το μέγεθος του τύπου δεδομένων εξαρτάται απο το σύστημα στο οποίο δουλεύουμε
Τι μάθαμε Κάθε μεταβλητή στη C++ χαρακτηρίζεται από τον τύπο της, το όνομά της, το μέγεθός της, και τη διεύθυνσή της. Ανάλογα με το τύπο της, ή κάθε μεταβλητή καταλαμβάνει συγκεκριμένο αριθμό από byte Ο τελεστής & αποδίδει τη διεύθυνση μιας μεταβλητής ενώ ο τελεστής sizeof το μέγεθός της (αριθμό byte που καταλαμβάνει) Το αντικείμενο cout χρησιμοποιείται για την εμφάνιση πληροφοριών στην οθόνη. Για την αποστολή πληροφοριών στο αντικείμενο cout χρησιμοποιείται ο τελεστής εισαγωγής <<
Τι μάθαμε Ο χειριστής endl του αντικειμένου cout επιφέρει μια αλλαγή γραμμής στην οθόνη. Το αντικείμενο cin χρησιμοποιείται για την ανάγνωση δεδομένων από το πληκτρολόγιο. Για την λήψη δεδομένων από το αντικείμενο cin χρησιμοποιείται ο τελεστής εξαγωγής >> Η εντολή if ελέγχει μια λογική παράσταση και ανάλογα με το αποτέλεσμα (αληθής ή ψευδής) εκτελεί μία ή περισσότερες προτάσεις. Η εντολή if θεωρεί αληθή οποιαδήποτε παράσταση έχει μη μηδενική τιμή.
Τι μάθαμε Για τη έξοδο στη οθόνη υπάρχει και η συνάρτηση printf η οποία, μπορεί να δεχτεί πολλές επιλογές printf ("Characters: %c %c \n", 'a', 65); Αντίστοιχα για την είσοδο υπάρχει και η scanf : printf ("Enter your family name: "); scanf ("%79s",str);
Επίλυση Δευτεροβάθμιας