Τεχνολογίες Υλοποίησης Αλγορίθµων

Σχετικά έγγραφα
Προηγµένα Θέµατα Τεχνολογιών Υλοποίησης Αλγορίθµων

Εισαγωγή στους Αλγορίθμους

Εισαγωγή στους Αλγορίθμους

Εισαγωγή στους Αλγορίθμους

Οντοκεντρικός Προγραμματισμός

Οντοκεντρικός Προγραμματισμός

Οντοκεντρικός Προγραμματισμός

Προγραμματισμός Η/Υ. Ενότητα 2β: Εισαγωγή στη C (Μέρος Δεύτερο)

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 1

Οντοκεντρικός Προγραμματισμός

Εισαγωγή στους Αλγορίθμους Ενότητα 10η Άσκηση Αλγόριθμος Dijkstra

Εισαγωγή στους Αλγορίθμους Ενότητα 11η Άσκηση - Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων

Οντοκεντρικός Προγραμματισμός

Στοιχειώδης προγραμματισμός σε C++

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

Οντοκεντρικός Προγραμματισμός

Τεχνολογίες Υλοποίησης Αλγορίθµων

Δομές Δεδομένων Ενότητα 3

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Prim

Δομημένος Προγραμματισμός

Οντοκεντρικός Προγραμματισμός

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Kruskal

Προγραμματισμός Η/Υ. Ενότητα 4: Εντολές Επιλογής

Πληροφορική ΙΙ Θεματική Ενότητα 5

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 5

Εντολές εισόδου - εξόδου. Εισαγωγή στη C++

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 4

Διοικητική Λογιστική

Λογιστική Κόστους Ενότητα 12: Λογισμός Κόστους (2)

Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων VLSI II

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού σε κατάσταση Κορεσμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Προγραμματισμός Η/Υ. Βασικές Προγραμματιστικές Δομές. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

ΗΛΕΚΤΡΟΝΙΚΗ ΙIΙ Ενότητα 6

Δομές Δεδομένων Ενότητα 1

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός

Ευφυής Προγραμματισμός

Μηχανολογικό Σχέδιο Ι

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Τύποι δεδομένων, μεταβλητές, πράξεις. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Δομημένος Προγραμματισμός

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Λογιστική Κόστους Ενότητα 8: Κοστολογική διάρθρωση Κύρια / Βοηθητικά Κέντρα Κόστους.

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ

Εισαγωγή στην Πληροφορική

Προγραμματισμός H/Y Ενότητα 4: Δείκτες. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Δομημένος Προγραμματισμός

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 3: Έλεγχοι στατιστικών υποθέσεων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 1: Καταχώρηση δεδομένων

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Προγραμματισμός H/Y Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 2: Περιγραφική στατιστική

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 2

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 9: Ειδικά θέματα γλώσσας C/C++. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Δομημένος Προγραμματισμός

Εισαγωγή στους Υπολογιστές

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 8

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού Υπέρθερμου Ατμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Προγραμματισμός Υπολογιστών με C++

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Οντοκεντρικός Προγραμματισμός

Αντικειμενοστραφής Προγραμματισμός

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Εισαγωγή στους Υπολογιστές

Ιστορία της μετάφρασης

Βάσεις Περιβαλλοντικών Δεδομένων

Ενδεικτικές λύσεις ασκήσεων διαχείρισης έργου υπό συνθήκες αβεβαιότητας

Ηλεκτρονικοί Υπολογιστές

Εκκλησιαστικό Δίκαιο. Ενότητα 10η: Ιερά Σύνοδος της Ιεραρχίας και Διαρκής Ιερά Σύνοδος Κυριάκος Κυριαζόπουλος Τμήμα Νομικής Α.Π.Θ.

Δομημένος Προγραμματισμός (ΤΛ1006)

Εισαγωγή στους Η/Υ. Ενότητα 2β: Αντίστροφο Πρόβλημα. Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών

Βέλτιστος Έλεγχος Συστημάτων

Κβαντική Επεξεργασία Πληροφορίας

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Εφαρμογές πληροφορικής σε θέματα πολιτικού μηχανικού

Οντοκεντρικός Προγραμματισμός

Ευφυής Προγραμματισμός

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Δείκτες Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Διοικητική Λογιστική

Εισαγωγή στην πληροφορική

1 η Διάλεξη. Ενδεικτικές λύσεις ασκήσεων

Μεθοδολογία Έρευνας Κοινωνικών Επιστημών Ενότητα 2: ΣΥΓΚΕΝΤΡΩΣΗ ΠΛΗΡΟΦΟΡΙΩΝ ΜΑΡΚΕΤΙΝΓΚ Λοίζου Ευστράτιος Τμήμα Τεχνολόγων Γεωπόνων-Kατεύθυνση

Προγραμματισμός Η/Υ. Ενότητα 5: Εντολές Επανάληψης

Ψηφιακή Επεξεργασία Εικόνων

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Προγραμματισμός Ηλεκτρονικών Υπολογιστών 2 - Εργαστήριο

Μάρκετινγκ Αγροτικών Προϊόντων

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 7: Υπερφόρτωση τελεστών. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Αλγόριθμοι και πολυπλοκότητα Ταχυταξινόμηση (Quick-Sort)

Εισαγωγή στους Υπολογιστές

Transcript:

Τεχνολογίες Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Εισαγωγή στην C++ - 1 1 / 34

Αδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ϱητώς. 2 / 34

Χρηµατοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδηµαϊκά Μαθήµατα στο Πανεπιστήµιο Πατρών» έχει χρηµατοδοτήσει µόνο τη αναδιαµόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράµµατος «Εκπαίδευση και ια Βίου Μάθηση» και συγχρηµατοδοτείται από την Ευρωπαϊκή Ενωση (Ευρωπαϊκό Κοινωνικό Ταµείο) και από εθνικούς πόρους. 3 / 34

Περιεχόµενα Αρχίζοντας µε την C++ Τύποι εδοµένων (Data Types) Παραστάσεις και Τελεστές (Expressions and Operators) Σειρές Χαρακτήρων (Strings) Μετατροπές και Προαγωγές (Casting and Promotion) 4 / 34

Αρχίζοντας µε την C++ Απλό Παράδειγµα // we want to do I/O #include <iostream> int main() { int v1, v2; // cout: standard output stream object // << : stream insertion operator std::cout << "Please give me two integers: "; // cin: standard input stream object // >> : stream extraction operator std::cin >> v1 >> v2; std::cout << "The numbers are " << v1; std::cout << " and " << v2 << std::endl; return 0; } 5 / 34

Παράδειγµα Ι/Ο µε Μεταβλητές #include <iostream> #include <string> using namespace std; int main() { string s; cout << "Type in your name: " ; cin >> s ; cout << "The name you typed is: " << s << endl; return 0 ; } 6 / 34

Παράδειγµα Ι/Ο µε Αρχεία #include <iostream> #include <fstream> #include <string> using namespace std; int main() { ifstream infile( "input_file" ); if (! infile ) { cerr << "error: unable to open input file!" << endl; return -1; } ofstream outfile( "out_file" ); if (! outfile ) { cerr << "error: unable to open output file!" << endl; return -2; } string word; while ( infile >> word ) outfile << word << ; return 0; } 7 / 34

Μεταγλώττιση (Compilation) και Σύνδεση (Linking) [ένα αρχείο] g++ [-o prog] prog.c Μεταγλώττιση (Compilation) και Σύνδεση (Linking) [πολλά αρχεία] Μεταγλώττιση Σύνδεση g++ -c prog1.c = prog1.o g++ -c prog2.c = prog2.o g++ -c progn.c = progn.o g++ -c main.c = main.o g++ [-o main] main.o prog1.o prog2.o... progn.o 8 / 34

Βασική οµή ενός Προγράµµατος C++ #include<iostream> // other preprocessor directives function-definition 1; function-definition 2;... int main() { declaration 1; declaration 2;... execution-statement 1; execution-statement 2;... } return 0; 9 / 34

Σύνταξη ενός Προγράµµατος C++ Ονοµα (Identifier) Ακολουθία από 1 χαρακτήρες Χαρακτήρες {letters, digits, _} Πεζά γράµµατα κεφαλαία γράµµατα Πρέπει να αρχίζει µε γράµµα ή _ Σχόλια (Comments) Σχόλιο σε µια γραµµή: / /... Σχόλιο πολλών γραµµών: /... / Προσοχή: /*, */ δεν ϕωλιάζουν! Π.χ., το ακόλουθο δεν δουλεύει: / outer comment OUT / i n n e r comment IN / OUT ( cntd ) / 10 / 34

Τύποι εδοµένων (Data Types) Ακέραιοι τύποι δεδοµένων (Integral data types) Data Type Bytes Values [signed] char c; 1 [ 128, 127] unsigned char c; 1 [0, 255] short int x; 2 [ 32768, 32767] unsigned short int x; 2 [0, 65535] int x; 4 [ 2 31, 2 31 1] unsigned int x; 4 [0, 4294967295] long int x; 4 [ 2 31, 2 31 1] unsigned long int x; 4 [0, 4294967295] long long int x; 8 [ 2 63, 2 63 1] unsigned long long int x; 8 [0, 2 64 1] 2 31 = 2, 147, 483, 648 2 63 = 9, 223, 372, 036, 854, 775, 808 2 64 = 18, 446, 744, 073, 709, 551, 616 Αυτές οι τιµές εξαρτώνται από το συγκεκριµένο υπολογιστικό σύστηµα και περιγράφονται στο αρχείο limits. 11 / 34

Τύποι πραγµατικών αριθµών (Real numeric types) Data Type Bytes Values float x; 4 1.17549435 10 38 3.40282347 10 38 double x; 8 2.2250738585072014 10 308 1.7976931348623157 10 308 long double x; 16 10 4931 10 4932 Αυτές οι τιµές εξαρτώνται από το συγκεκριµένο υπολογιστικό σύστηµα και περιγράφονται στο αρχείο limits. 12 / 34

Λογικοί και Απαριθµητικοί Τύποι Λογικός τύπος (Boolean Type) bool flag; // takes value true or false bool BC_deposition = false; Τύπος Απαρίθµησης (Enumeration Type) τύπος δεδοµένων οριζόµενος από τον χρήστη (υπο)σύνολο ακέραιων σταθερών που αναπαρίστανται από αντιπροσωπευτικά ονόµατα Παράδειγµα: #include <iostream> int main() { enum Day {Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday}; Day today; today = Monday; std::cout << today << std::endl; // prints 0 return 0; } 13 / 34

Παραστάσεις και Τελεστές Απλή Παράσταση: σύνθεση ενός ή περισσοτέρων τελεσταίων ( operands) και ενός τελεστή ( operator) που εφαρµόζεται σε αυτούς. MISTHOS - FOROS Σύνθετη Παράσταση: συνδιασµός δύο ή περισσοτέρων παραστάσεων. KATHARA_KERDH = ESODA - FOROS - EKSODA 14 / 34

Αριθµητικοί Τελεστές Τελεστής Λειτουργία Χρήση Προσεταιριστικότητα ( ) παρενθέσεις (expr_list) * πολλαπλασιασµός expr * expr / διαίρεση expr / expr % υπόλοιπο διαίρεσης expr % expr Α + πρόσθεση expr + expr - αφαίρεση expr - expr int i = 4, j = 7, k = 5; val = i * j / 2 + k % 2-3; // val has value 12 val = (i * j / (2 + k)) % 2-3; // val has value -3 int i = 21/6; // value of i is 3 rem = 3.14159 % 3; // error: floating point operand 15 / 34

Λογικοί και συσχετιστικοί τελεστές Τελεστής Λειτουργία Χρήση Προσεταιρ.! λογικό NOT!expr Α < µικρότερο expr < expr <= µικρότερο ή ίσο expr <= expr > µεγαλύτερο expr > expr >= µεγαλύτερο ή ίσο expr >= expr == ίσο expr == expr Α!= διάφορο expr!= expr && λογικό AND expr && expr λογικό OR expr expr if (iter <= max && found == true) // do something 16 / 34

Λογικοί τελεστές πράξεων bits (Bitwise Operators) Χρησιµοποιούνται για πράξεις επί των bits ακέραιων τελεσταίων Τελεστής Λειτουργία Χρήση Προσεταιρ. λογικό NOT στα bits expr Α << ολίσθηση αριστερά expr << expr >> ολίσθηση δεξιά expr >> expr & λογικό AND στα bits expr & expr Α ˆ λογικό XOR στα bits expr ˆ expr λογικό OR στα bits expr expr // Assume int are 4 bits unsigned int a = 11; // 1011 unsigned int b =!a; // 0100 unsigned int c = a << 1; // 0110 unsigned int d = a >> 2; // 0010 unsigned int e = a & c; // 0010 unsigned int f = a ˆ c; // 1101 unsigned int g = a c; // 1111 17 / 34

Τελεστές ανάθεσης (Assignment operators) Τελεστής Λειτουργία Χρήση Προσετ. = απλή ανάθεση lvalue = expr *= πολλ/σµός µε ανάθεση lvalue *= expr /= διαίρεση µε ανάθεση lvalue /= expr %= υπόλοιπο διαίρ. µε ανάθεση lvalue %= expr += πρόσθεση µε ανάθεση lvalue += expr -= αφαίρεση µε ανάθεση lvalue -= expr Α <<= ολίσθηση αριστ. µε ανάθεση lvalue <<= expr >>= ολίσθηση δεξιά µε ανάθεση lvalue >>= expr &= λογικό AND µε ανάθεση lvalue &= expr = λογικό OR µε ανάθεση lvalue = expr ˆ= λογικό XOR µε ανάθεση lvalue ˆ= expr a op= b είναι ισοδύναµο µε a = a op b sum += a[i]; div /= 2; // sum = sum + a[i] // div = div/2; 18 / 34

Μονοµελείς τελεστές (Unary operators) Τελεστής Λειτουργία Χρήση Προσετ. ++ επιθεµατική ϐηµατική αύξηση lvalue++ Α -- επιθεµατική ϐηµατική µείωση lvalue-- Α sizeof µέγεθος αντικειµένου sizeof expr sizeof µέγεθος τύπου sizeof(type) ++ προθεµατική ϐηµατική αύξηση ++lvalue -- προθεµατική ϐηµατική µείωση --lvalue Α - µονοµελές µείον -expr + µονοµελές πλήν +expr 19 / 34

Παράδειγµα µε τελεστές #include <iostream> using namespace std; int main() { int x=5; cout << x << endl; // prints 5 cout << x++ << endl; // prints 5 cout << x << endl; // prints 6 x=5; cout << x << endl; // prints 5 cout << ++x << endl; // prints 6 cout << x << endl; // prints 6 cout << sizeof(int) << endl; // size of an int in bytes cout << sizeof(x) << endl; // size of x in bytes // alternatively: sizeof x << endl; return 0; } 20 / 34

Τελεστές (σε σειρά ϕθίνουσας προτεραιότητας) Τελεστής Λειτουργία Χρήση Προσεταιρ. () value construction type(expr_list) ++ post increment lvalue++ L-to-R -- post decrement lvalue-- sizeof size of object sizeof expr sizeof size of type sizeof(type) ++ pre increment ++lvalue -- pre decrement --lvalue bitwise NOT expr! logical NOT!expr R-to-L - unary minus -expr + unary plus +expr & address of &expr * dereference *expr & bitwise AND expr & expr ˆ bitwise XOR expr ˆ expr bitwise OR expr expr RL-to-R && logical AND expr && expr logical OR expr expr?: conditional expression expr?expr:expr << stream insertion expr << expr L-to-R >> stream extraction expr >> expr 21 / 34

Τελεστές (σε σειρά ϕθίνουσας προτεραιότητας - συνέχεια) Τελεστής Λειτουργία Χρήση Προσεταιρ. * multiply expr * expr / divide expr / expr % modulo or remainder expr % expr + plus expr + expr - minus expr - expr << shift left expr << expr >> shift right expr >> expr L-to-R < less than expr < expr <= less than or equal expr <= expr > greater than expr > expr >= greater than or equal expr >= expr == equal expr == expr!= not equal expr!= expr = conventional assignment lvalue = expr *= multiply and assign lvalue *= expr /= divide and assign lvalue /= expr %= modulo and assign lvalue %= expr += add and assign lvalue += expr -= subtract and assign lvalue -= expr R-to-L <<= shift left and assign lvalue <<= expr >>= shift right and assign lvalue >>= expr & = AND and assign lvalue &= expr = OR and assign lvalue = expr ˆ= XOR and assign lvalue ˆ= expr 22 / 34

Σταθερές (Constants) const δηλώνει ένα αντικείµενο ως µη τροποποιήσιµο ένα αντικείµενο τύπου const πρέπει πάντοτε να αρχικοποιείται Παράδειγµα: #include<iostream> using namespace std; int main() { const int x; // Error: x must be initialised x=7; // Error: x is not modifiable } const int x=7; cout << "Value of x is " << x << endl; return 0; 23 / 34

Σειρές χαρακτήρων (strings) Μπορούν να αναπαρασταθούν µε δύο τρόπους: (1) πίνακας τύπου char που τελειώνει µε τον χαρακτήρα null (\0)(µη ασφαλής να αποφεύγεται) (2) αντικείµενα του τύπου δεδοµένων string Παράδειγµα: #include <iostream> #include <string> using namespace std; int main() { char course[40]; strcpy(course, "Algorithm "); // takes care of \0 strcat(course, "Engineering "); strcat(course, "and Experimentation"); cout << course << endl; return 0; } Αλλες συναρτήσεις σειρών χαρακτήρων strcmp(s1,s2); // comparison strlen(s1); // returns the length of s1 24 / 34

Παράδειγµα µε strings #include <iostream> #include <string> using namespace std; int main() { string course; course = "Algorithm "; course += "Engineering "; course += "and Experimentation"; cout << course << endl; return 0; } Αλλες λειτουργίες που αφορούν τον τύπο string Συναρτήσεις Κατασκευής: string s; string s1(s2); Σύγκριση: Συνένωση: Μήκος: Κενότητα: γίνεται χρησιµοποιώντας τους συνήθεις συσχετιστικούς τελεστές s1+s2; s.length(); s.empty(); 25 / 34

Μετατροπές και Προαγωγές Ρητή µετατροπή τύπου (casting) (type) expression C στυλ, να αποφεύγεται type (expression) static_cast<type> (expression) 26 / 34

Παράδειγµα #include <iostream> using namespace std; int main () { char c, ch[] = "a"; float a, b; int i=1, j; a = static_cast<float>(i); b = float(i); c = ch[0]; j = int(c); cout << i << endl; cout << a << endl; cout << b << endl; cout << ch << endl; // prints a cout << j << endl; // prints 97 return 0; } 27 / 34

Προαγωγή (έµµεση µετατροπή τύπου) int counter; float total, average;... average = total/counter; Ιεραρχία προαγωγής των ϐασικών ενσωµατωµένων τύπων long double double float unsigned long int long int unsigned int int unsigned short int short int unsigned char char 28 / 34

Μετατροπές Λογικών Τύπων bool int (προαγωγή): true 1, false 0. αριθµητική τιµή ή τιµή δείκτη bool: zero value false, non-zero value true. Παράδειγµα: bool found = false; int occurrence_count = 0;... if (found) occurrence_count += found; // promotion... if (occurrence_count) { cout << "No. of occurrences "; cout << occurrence_count << endl; } else cout << "Nothing has been found" << endl; 29 / 34

Τέλος Ενότητας 30 / 34

Σηµείωµα Ιστορικού Εκδόσεων Εργου Το παρόν έργο αποτελεί την έκδοση 1.0. 31 / 34

Σηµείωµα Ιστορικού Εκδόσεων Εργου Copyright Πανεπιστήµιο Πατρών, Χρήστος Ζαρολιάγκης, 2014. «Τεχνολογίες Υλοποίησης Αλγορίθµων». Εκδοση: 1.0. Πάτρα 2014. ιαθέσιµο από τη δικτυακή διεύθυνση: https://eclass.upatras.gr/courses/ceid1084 32 / 34

Σηµείωµα Ιστορικού Εκδόσεων Εργου Το παρόν υλικό διατίθεται µε τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εµπορική Χρήση, Οχι Παράγωγα Εργα 4.0 [1] ή µεταγενέστερη, ιεθνής Εκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. ϕωτογραφίες, διαγράµµατα κ.λ.π., τα οποία εµπεριέχονται σε αυτό. [1] http://creativecommons.org/licenses/by-nc-nd/4.0 Ως Μη Εµπορική ορίζεται η χρήση: που δεν περιλαµβάνει άµεσο ή έµµεσο οικονοµικό όφελος από την χρήση του έργου, για το διανοµέα του έργου και αδειοδόχο που δεν περιλαµβάνει οικονοµική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο που δεν προσπορίζει στο διανοµέα του έργου και αδειοδόχο έµµεσο οικονοµικό όφελος (π.χ. διαφηµίσεις) από την προβολή του έργου σε διαδικτυακό τόπο Ο δικαιούχος µπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιµοποιεί το έργο για εµπορική χρήση, εφόσον αυτό του Ϲητηθεί. 33 / 34

ιατήρηση Σηµειωµάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού ϑα πρέπει να συµπεριλαµβάνει : το Σηµείωµα Αναφοράς το Σηµείωµα Αδειοδότησης τη δήλωση ιατήρησης Σηµειωµάτων το Σηµείωµα Χρήσης Εργων Τρίτων (εφόσον υπάρχει) µαζί µε τους συνοδευόµενους υπερσυνδέσµους 34 / 34