1 242 - Ειζαγωγή ζηοσς Η/Υ Τμήμα Μαθημαηικών, Πανεπιζηήμιο Ιωαννίνων Ακαδημαϊκό Έηος 2015-2016 Άξηηα Α.Μ. (0-2-4-6-8)
Δομές ελέγτοσ ροής προγράμμαηος C/C++ με παραδείγμαηα 2 1. Αλάζεζε ηηκήο 2. Δπηινγή 3. Αλαθύθισζε Δίζνδνο / Έμνδνο cin cout
Βαζικέρ δομέρ ελέγσος ποήρ ππογπάμμαηορ Τν πξόγξακκα πξέπεη λα πεξηέρεη ηελ ζπλάξηεζε main ε νπνία είλαη ε νδεγόο ζπλάξηεζε Σεκεηώλνπκε όηη ε γιώζζα C/C++ δηαρσξίδεη θεθαιαία θαη κηθξά γξάκκαηα. Όιεο νη εληνιέο πξέπεη λα δίλνληαη κε κηθξά γξάκκαηα. Δίζνδνο / Έμνδνο ζηελ C++ γίλεηαη κε ηα αληηθείκελα cin, cout. Σρόιηα κπνξνύλ λα γίλνπλ κε ηνπο παξαθάησ ηξόπνπο // μία γραμμή ζτόλια /* πολλές γραμμές ζτόλια */ /*πολλές γραμμές ζτόλια */ Γελ βάδνπκε ζρόιηα κέζα ζε άιια ζρόιηα 3
Βαζικέρ δομέρ ελέγσος ποήρ ππογπάμμαηορ Γεληθή κνξθή πξνγξάκκαηνο /* Σηοιτεία προγραμμαηιζηή */ Τμήμα με INCLUDE ενηολές Τμήμα με δηλώζεις ζηαθερών και ηύπων δεδομένων Τμήμα με δηλώζεις μεηαβληηών Τμήμα με δηλώζεις ζσναρηήζεων Τμήμα με κύριο πρόγραμμα main() { } 4
Βαζικέρ δομέρ ελέγσος ποήρ ππογπάμμαηορ Μεηαβιεηέο. Sum, average, point pair, a, b, coord_x, coord_y. (επηηξέπνληαη αιθαβεηηθνί ραξαθηήξεο, ςεθία θαη θάησ παύια, αξρίδνπλ κε γξάκκα) Τύπνη κεηαβιεηώλ. Int, float, double, char, bool, string,. Είζνδνο. cin Εμνδνο. cout Αλάζεζε ηηκήο. Όλνκα_Μεηαβιεηήο=Παξάζηαζε Εληνιέο επηινγήο. Εληνιέο αλαθύθιωζεο. 5
Βαζικά παπαδείγμαηα ειζόδος/εξόδος 6
Ππόγπαμμα 7 // για ελληνικά (και Lucida // ζηο παπάθςπο ηηρ γπαμμήρ ενηολών) cout << "Γεηά ζνπ θόζκε! C Programming for ever. \n";
8 Ππόγπαμμα int sum; sum = 100 + 150; cout << "The sum of 100 and 150 is " << sum << endl;
Ππόγπαμμα int sum; float height; char letter; double bignum; sum = 10; /* ανάθεζη ηιμών */ height = 15.21; letter = 'G'; bignum = 1.32E9; /* εκηύπωζη ηιμών */ cout << "value of sum = " << sum <<endl; cout << "value of height = " << height <<endl; cout << "value of letter = " << letter <<endl; cout << "value of bignum = " << bignum <<endl; 9
10 Ππόγπαμμα int number; printf("give me an integer \n"); scanf("%d", &number); printf("the number you typed was %d\n", number); /* printf και scanf είναι βαζικέρ ενηολέρ ειζόδος εξόδος ηηρ C. Σηην C++ όμωρ σπηζιμοποιούμε ηιρ cin και cout. Διεπεςνήζηε όλερ ηιρ δςναηόηηηερ ηοςρ */ cout<<"give me an integer \n"; cin>> number; cout<<"the number you typed was "<<number<<endl;
Ππόγπαμμα 11 int sum; char letter; float number; cout<<"γώζε έλα αθέξαην "; cin>> sum; cout<<"γώζε έλα ραξαθηήξα "; cin>> letter; cout<<"γώζε έλα πξαγκαηηθό αξηζκό "; cin >> number; cout<<"\nοη ηηκέο πνπ έδσζεο είλαη\n"; cout<<"sum = "<<sum<<endl; cout<<"letter = "<<letter<<endl; cout<<"number = "<<number<<endl;
Ππόγπαμμα float a, b, c; cout<<"γώζε δύν αθέξαηνπο...\n"; cin>> a >> b; c = a * b; cout<<a<< " επί " <<b<<" = "<<c<<endl; 12
Ππόγπαμμα 13 #define PERCENT 0.25 // κε ηελ define νξίδνπκε ζηαζεξέο (θαη όρη // κόλν όπσο ζα δνύκε float balance; float taxes; balance = 732.50; taxes = balance * PERCENT; cout<<"the tax on "<<balance << " is "<< taxes<<endl;
Πποηεπαιόηηηερ ηελεζηών C/C++ 14 Πξνζεηαηξηζηηθόηεηα Τελεστής Δκβέιεηα Μοναδιαίοι Τελεζηές από αξηζηεξά πξνο ηα δεμηά :: () [ ]. -> dynamic_cast typeid από δεμηά πξνο ηα αξηζηεξά ++ -- + -! ~ & * (type_name) sizeof new delete C++ δείθηεο ζε κέινο από αξηζηεξά πξνο ηα δεμηά.*->* Πξάμεηο από αξηζηεξά πξνο ηα δεμηά * / % Πξάμεηο από αξηζηεξά πξνο ηα δεμηά + - Μεηαηόπιζη από αξηζηεξά πξνο ηα δεμηά << >> Σσγκρίζεις από αξηζηεξά πξνο ηα δεμηά < > <= >= Ιζόηηηα από αξηζηεξά πξνο ηα δεμηά ==!= AND ζε δπθία από αξηζηεξά πξνο ηα δεμηά & XOR ζε δπθία από αξηζηεξά πξνο ηα δεμηά ^ OR ζε δπθία από αξηζηεξά πξνο ηα δεμηά Λνγηθό AND από αξηζηεξά πξνο ηα δεμηά && Λνγηθό OR από αξηζηεξά πξνο ηα δεμηά Υπό Σσνθήκη από δεμηά πξνο ηα αξηζηεξά? : Αλάζεζε ηηκήο από δεμηά πξνο ηα αξηζηεξά = += - = *= /= <<= >>= %= &= ^= = Κόμμα από αξηζηεξά πξόο ηα δεμηά,
Βαζικά παπαδείγμαηα ενηολών επιλογήρ 15
if if (ζπλζήθε) εληνιέο; 16 Η ζπλζήθε κπνξεί λα είλαη κία ινγηθή έθθξαζε ή νπνηνηδήπνηε έθθξαζε πνπ έρεη ηηκή: ζςνθήκη true ενηολέρ κεδέλ - false Γηάθνξν ηνπ κεδέλ - true false Π.ρ 100-75 -> true
Παράδειγμα if int flag = 0; if(! flag ) { cout<<"η ηηκή ηεο ζεκαίαο είλαη 0.\n"; flag =! flag; cout<<"η ηηκή ηεο ζεκαίαο είλαη "<<flag<<endl; 17
Παράδειγμα if int number; cout<<"γώζε αξηζκό: "; cin>> number; if (number % 2 == 0) cout<<"αξηζκόο άξηηνο\n"; if (number % 2!= 0) cout<<"αξηζκόο πεξηηηόο\n"; cout<<"τέινο!\n"; 18
if else if ( ζπλζήθε) εληνιή1; else εληνιή2; ή θηβσηηζκέλα if ( ζπλζήθε1 ) εληνιή1; else if (ζπλζήθε2 ) εληνιή2; else if (ζπλζήθε3 ) εληνιή3; else εληνιή4; 19
if else 20 false ζσνθήκη true ενηολή2 ενηολή1
Παράδειγμα if else 21 int a, b; cout<<"γώζε δύν αθεξαίνπο: "; cin>>a>>b; if (b) cout<< (float) a / (float) b<<endl; else cout<<"... δελ κπνξώ λα δηαηξέζσ κε κεδέλ!\n";
Παράδειγμα if else 22 int number; cout<<"γώζε έλα αθέξαην αξηζκό: "; cin>> number; if (number % 2 == 0) cout<<"αξηζκόο άξηηνο\n"; else cout<<"αξηζκόο πεξηηηόο\n"; cout<<"τέινο!\n";
switch() case 23 switch ( παξάζηαζε ) { //παξάζηαζε θαη ηηκή θ πξέπεη λα είλαη //αθέξαηνη ή ραξαθηήξεο ή //αξηζκήζηκνο ηύπνο νξηδόκελνο από ρξήζηε. case ηηκή-1: εληνιή; εληνιή;... break;... case ηηκή-n: εληνιή;... break; default:...... break;
switch() case 24 Τιμή-1 false true Εντολές περίπτωση- 1 break true Τηκή-2 Εληνιέο πεξίπηωζε-2 break false... true Τηκή-n Εληνιέο πεξίπηωζε-n break false default εντολές
Παράδειγμα switch() case 25 int menu, numb1, numb2, total; cout<<"enter in two numbers -->"; cin>>numb1>>numb2; cout<<"enter in choice\n"; cout<<"1=addition\n"; cout<<"2=subtraction\n"; cin>>menu;
ζςνέσεια.switch() case 26 // ζπλέρεηα switch ( menu ) { case 1: total = numb1 + numb2; break; case 2: total = numb1 - numb2; break; default: cout<<"invalid option selected\n"; if ( menu == 1 ) cout<<numb1<<" plus "<<numb2<<" is"<<total<<endl; else if ( menu == 2 ) cout<<numb1<<" minus "<<numb2<<" is"<<total<<endl;
Παράδειγμα switch() case 27 char ch; cout<<"πιεθηξνιόγεζε έλα γξάκκα: "; cin>>ch;
ζςνέσεια switch() case 28 //.ζπλέρεηα switch (ch) { case 'a' : case 'e' : case 'i' : case 'o' : case 'u' : cout<<"τν "<<ch<<" είλαη θσλήελ \n"; break; default: cout<<"τν "<<ch<<" είλαη ζύκθσλν \n";
for 29 for (αξρηθέο εληνιέο; ζπλζήθε ηεξκαηηζκνύ; εληνιέο κεηαβνιήο ζπλζήθεο) ζώκα εληνιώλ; Απσ. ενηολέρ Σςνθήκη T ηεπμαηιζμού Σώμα ενηολών Μεη. ζςνθήκηρ F
Παράδειγμα for 30 int count; for (count = 1; count <= 10; count = count + 1 ) cout<<count<<" "; cout<<endl;
31 Παράδειγμα for int n, number; number = 0; for( n = 1; n <= 200; n = n + 1 ) number = number + n; cout<<"the sum 1 to 200 is "<<number<<endl;
32 ζςνέσεια.for // ζπλέρεηα char ch; for (ch = 'A'; ch <= 'Z'; ch++) cout<<ch; cout<<"\n"; for (ch = 'a'; ch <= 'z'; ch++) cout<<ch; cout<<"\n";
33 Παράδειγμα for int i, j; cout<<"πξώηνη αξηζκνί κέρξη ην 50\n"; for (i=2 ; i<50 ; i++) { for (j=2 ; j<= i/2 ; j++) if (!(i%j)) break; if (j>i/2) cout<<i<<" είλαη πξώηνο\n";
while 34 while ( ζπλζήθε ) ζώκα εληνιώλ; Σσνθήκη true Σώμα εντολών false
35 Παράδειγμα while int number = 1, total = 0; while (number < 11) { total += number; number++; cout<<"total of numbers from 1 to 10 is "<<total<<"\n";
Παράδειγμα while #include <iomanip> int lower, upper, step; float fahr, celsius; lower = 0; upper = 300; step = 20; fahr = lower; cout<<" Βαζκνί\n"; cout<<"φαξελάτη Κειζίνπ\n"; while ( fahr <= upper ) { celsius = (5.0 / 9.0) * (fahr - 32.0); cout<<setw(6)<<fahr<<setw(12)<<celsius<<endl; fahr = fahr + step; 36
Παράδειγμα while int number; /* ακέπαιοι */ int total = 0; /* άθποιζμα */ int count = 0; /* πλήθορ - άγνωζηο */ cout<<"γώζε επόκελν αθέξαην - 0 γηα ηέινο\n"; cin>>number; while (number!= 0) { total += number; count=count + 1; cout<<"γώζε επόκελν αθέξαην - 0 γηα ηέινο\n"; cin>>number; if(number == 0) cout<<"τέινο εηζόδνπ.\n"; 37
ζςνέσεια..while // ζπλέρεηα 38 cout<<"άζξνηζκα -> "<<total<<"\n"; cout<<"πιήζνο -> "<<count<<"\n"; if (count>1) {cout<<"μέζνο όξνο (αθέξαηνο) -> "<<total / count<<endl; cout<<"μέζνο όξνο (πξαγκαηηθόο) -> "<<(float) total / count<<endl;} else cout<<"μεδεληθό πιήζνο αξηζκώλ"<<endl;
Παράδειγμα while int number; int valid = 0; while( valid == 0 ) { cout<<"γώζε αξηζκό κεηαμύ 1 θαη 10 -->"; cin>>number; /* Ελέγσοςμε αν εδόθη έγκςπορ απιθμόρ */ if ( (number < 1 ) (number > 10) ){ cout<<"ο αξηζκόο "<<number<<" δελ είλαη 1-10. Γώζε άιιν αξηζκό.\n"; valid = 0; else valid = 1; cout<<"ο αξηζκόο "<<number<<" είλαη έγθπξνο\n"; 39
Παράδειγμα while char ch; int valid = 0; while( valid == 0 ) { cout<<"γώζε ραξαθηήξα από a-z κε κηθξά -->"; cin>>ch; /* Ελέγσοςμε αν εδόθη έγκςπορ σαπακηήπαρ */ if( (ch >= 'a' ) && (ch <= 'z' ) ){ cout<<"ο ραξαθηήξαο "<<ch<<" είλαη έγθπξνο.\n"; valid = 1; else cout<<"ο ραξαθηήξαο "<<ch<<" δελ είλαη a-z. Γώζε άιιν ραξαθηήξα.\n"; cout<<"ο ραξαθηήξαο είλαη "<<ch<<"\n"; 40
do while do {ζώκα εληνιώλ } while ( ζπλζήθε ) 41 Σώμα εντολών true σσνθήκη false
Παράδειγμα do while int a, b; do { cout<<"γώζε ηνλ πξώην αξηζκό: "; cin>>a; cout<<"γώζε ηνλ δεύηεξν αξηζκό: "; cin>>b; if (a<b) cout<<"ο πξώηνο είλαη κηθξόηεξνο ηνπ δεύηεξνπ\n\n"; if (b<a) cout<<"ο δεύηεξνο είλαη κηθξόηεξνο ηνπ πξώηνπ\n\n"; if (b==a) cout<<"οη αξηζκνί είλαη ίζνη\n\n"; while (a > 0); 42
Παράδειγμα do while 43 #include <cmath> //<math.h> int a,b; char ch; printf("do you want to:\n"); printf("add, Subtract, Multipy, or Divide\n"); /* force user to enter valid response */ do { cout<<"enter operation's first letter: "; cin>>ch; cout<<"\n"; while (ch!='a' && ch!='s' && ch!='m' && ch!='d');
ζςνέσεια..do while 44 // ζπλέρεηα cout<<"enter first number: "; cin>>a; cout<<"enter second number: "; cin>>b; switch (ch) { case 'A' : cout<<a+b; break; case 'S' : cout<<a-b; break; case 'M' : cout<<a*b; break; case 'D' : if (b!=0) cout<<a/b; break; cout<<endl; }
45 break και continue Παξαπάλσ είδακε ηελ εληνιή break ζε ζρέζε κε ηελ εληνιή επηινγήο switch. Η εληνιή break κεηαθέξεη ηνλ έιεγρν ηνπ πξνγξάκκαηνο ζηελ εληνιή πνπ αθνινπζεί ακέζσο κεηά από ην πην εζσηεξηθό while, do, for, switch ην νπνίν πεξηθιείεη ηελ break. Η εληνιή continue κεηαθέξεη ηνλ έιεγρν ηνπ πξνγξάκκαηνο ζην ηέινο ηεο πην εζσηεξηθήο αλαθύθισζεο while, do, for ε νπνία πεξηθιείεη ηελ continue, όπνπ θαη εθηηκάηαη πάιη ε ζπλζήθε ηεο αλαθύθισζεο.
Ο ηελεζηή «σπό ζσνθήκη»? ζπλζήθε? παξάζηαζε1 : παξάζηαζε2 46 #include <math.h> int input; cout<<"i will tell you if the number is positive, \ negative or zero!\n"; cout<<"please enter your number now--->"; cin>>input; (input < 0)? cout<<"negative\n" : ((input > 0)? cout<<"positive\n" : cout<<"zero\n");
Ο ηελεζηή «σπό ζσνθήκη»? 47 #include <cmath> #define MAX(A,B) (A>B? A:B) #define MIN(A,B) (A>B? B:A) int num1, num2, mx, mn; cout<<"γώζε δύν αθέξαηνπο: \n"; cin>>num1>>num2; cout<<"\n"; mx = MAX(num1, num2); mn = MIN(num1, num2); cout<<"μέγηζην("<<num1<<","<<num2<<")->"<<mx<<endl; cout<<"διάρηζην("<<num1<<","<<num2<<")->"<<mn<<endl;