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

Σχετικά έγγραφα
ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ

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

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

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

Συμβολοσειρές ΣΥΜΒΟΛΟΣΕΙΡΕΣ. Γεώργιος Παπαϊωάννου ( )

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Γ7.2 Συμβολοσειρές (Strings) Γ Λυκείου Κατεύθυνσης

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

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

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου

3 η Διάλεξη C++ - Βασικοί τύποι δεδομένων. Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ

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

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

Χωρική Βάση δεδοµένων Autocad

Αντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT

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

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( )

Εισαγωγή στη γλώσσα προγραμματισμού C++

Δισδιάστατοι Πίνακες (2D Arrays) Εισαγωγή στη C++

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

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

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

Γ7.1 Επανάληψη ύλης Β Λυκείου. Γ Λυκείου Κατεύθυνσης

Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ. Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τύποι δεδομένων ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΠΡΑΞΕΙΣ ΜΕΤΑΒΛΗΤΕΣ. Ακέραιοι αριθμοί (int) Πράξεις μεταξύ ακεραίων αριθμών

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ

Εργαστήριο 2ο. Περίγραμμα Εργαστηριακής Άσκησης

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

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

Αναφορές, είκτες και Αλφαριθμητικά

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά

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

Η εντολή if-else. Η απλή μορφή της εντολής if είναι η ακόλουθη: if (συνθήκη) { Η γενική μορφή της εντολής ifelse. εντολή_1; εντολή_2;..

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

2 η Διάλεξη C++ Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ

Αρχεία & Ρεύματα ΑΡΧΕΙΑ & ΡΕΥΜΑΤΑ. Γεώργιος Παπαϊωάννου ( ) gepap@aueb.gr

Πίνακες (Arrays) Εισαγωγή στη C++

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting)

ΑΣΚΗΣΗ 2: ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΣΤΗ C

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

Δομές Επανάληψης. Εισαγωγή στη C++

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι είναι οι πίνακες; Μονοδιάστατοι πίνακες. Απλές μεταβλητές: Κεντρική μνήμη

Αντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT

Τύποι Δεδομένων Είσοδος/Έξοδος

Πίνακες: μια σύντομη εισαγωγή. Πίνακες χαρακτήρων: τα "Αλφαριθμητικά"

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

Ανάπτυξη και Σχεδίαση Λογισμικού

Προγραμματισμός Ι (ΗΥ120)

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι περιλαμβάνει μια μεταβλητή; ΔΕΙΚΤΕΣ. Διεύθυνση μεταβλητής. Δείκτης

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

Πληροφορική 2. Γλώσσες Προγραμματισμού

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

ΗΥ-150. Προγραμματισμός

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

Διαδικασιακός Προγραμματισμός

ΗΥ-150. Προγραμματισμός

ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΣΤΟΙΧΕΙΑ ΤΗΣ ΓΛΩΣΣΑΣ C++ Constructors, Destructors, Pointers IO Streams, File Streams

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

Εισαγωγή στον Προγραμματισμό

S, (5, -3, 34, -23, 7) ( *, _

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

Συναρτήσεις (Functions) Εισαγωγή στη C++

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C

Περιεχόμενα. Πρόλογος... 21

Μονοδιάστατοι πίνακες Πολυδιάστατοι πίνακες Μέθοδοι Μέθοδοι Recursive Overloading

Διαδικασιακός Προγραμματισμός

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

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας

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

Streams Input / Output in C++ George Kastrinis

Δεδομένα, τελεστές, είσοδος/έξοδος

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

Προγραμματισμός Ι (ΗΥ120)

Ονοματεπώνυμο και ΑΜ: Είχα παραδώσει εργασίες τα εξής ακαδημαϊκά έτη: Διάρκεια: 2,5 ώρες, κλειστά βιβλία και σημειώσεις ΚΑΛΗ ΕΠΙΤΥΧΙΑ!

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

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

Προγραμματισμός Ι (HY120)

ΔΕΙΚΤΕΣ ΚΑΙ ΔΙΕΥΘΥΝΣΕΙΣ

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι είναι οι πίνακες; Μονοδιάστατοι πίνακες. Απλές μεταβλητές: Κεντρική μνήμη

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

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

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

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

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

Εισαγωγή στη C++ Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα:

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Τεχνολογία και Προγραμματισμός Υπολογιστών. Η γλώσσα προγραμματισμού C

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

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

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

Transcript:

Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 2η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1

Τι θα ακούσετε σήμερα Βασικοί αριθμητικοί τύποι, μετατροπές τύπων και σταθερές. Πίνακες. Πίνακες χαρακτήρων και η τάξη string. Χειρισμός αρχείων κειμένου. 2

Ακέραιοι: short, int και long short: Τουλάχιστον 16 δυφία (-32768 ως 32767). int: Τουλάχιστον όσα δυφία και ο short. Όχι περισσότερα από του long. long: Τουλάχιστον 32 δυφία (-2147483648 ως 2147483647). Η C++11 παρέχει και «long long» (64 δυφία). unsigned short: Όσα δυφία και ο short, χωρίς αρνητικούς (0 ως 65535). unsigned int: Όσα δυφία και ο int, χωρίς αρνητικούς. unsigned long: Όσα δυφία και ο long, χωρίς αρνητικούς (0 ως 4294967295). 3

Ποια είναι τα όρια στον Η/Υ μου; #include <iostream> #include <climits> using namespace std; // Ορίζει τα όρια των ακεραίων τύπων. int main( ) { short smax = SHRT_MAX; int imax = INT_MAX; unsigned uimax = UINT_MAX; long lmax = LONG_MAX; unsigned long ulmax = ULONG_MAX; cout << smax << endl << imax << endl << ; return 0; } 4

Τι θα τυπωθεί; #include <iostream> #include <climits> using namespace std; int main( ) { unsigned short s = USHRT_MAX; cout << "short = " << s << endl; s++; cout << "short = " << s << endl; return 0; } short = 65535 ( υπερχείλιση ) short = 0 5

Προσδιορισμός ακεραίων τιμών int i = 1500; // Τιμή int σε μεταβλητή int. long l2 = 1500L; // Τιμή long σε μεταβλητή long. long l1 = 1500; // Τιμή int σε μεταβλητή long. // Μετατροπή. 1 + 1500 // Το αποτέλεσμα είναι int. 1L + 1500 // Το αποτέλεσμα είναι long. 1500U // Τιμή unsigned int. 1500UL // Τιμή unsigned long. 6

Ο τύπος ακεραίων char Χρησιμοποιείται κυρίως για την αναπαράσταση ενός χαρακτήρα. Συνήθως 8 δυφία (0 ως 255). #include <iostream> using namespace std; Η C++11 υποστηρίζει και Unicode. int main( ) { char c = 77; // Κωδικός ASCII του Μ cout << c << endl; // Τυπώνει "Μ". c++; // To c έγινε 78, ο κωδικός του N. cout << c << endl; // Τυπώνει "Ν". cin >> c; // Γράφω "F". c = 70 (ASCII του F). cout << c << endl; // Τυπώνει "F". cout << c + 0 << endl; // Πρόσθεσα int σε char. Το // αποτέλεσμα είναι int. Τυπώνει 70. } 7

Προσδιορισμός τιμών char char c1 = 'M'; // Αν ASCII, αποθηκεύεται ως 77 και char c2 = 77; // τα c1, c2 έχουν την ίδια τιμή. char c3 = '\n'; // Χαρακτήρας αλλαγής γραμμής. Άλλοι ειδικοί χαρακτήρες: \', \", \?,... Οι ίδιοι και σε συμβολοσειρές: "Hi\n". cout << c1 << c2 << c3 << 'A' << '\n' << "\"Hi\n" << "there!\"" << '\n'; ΜΜ Α "Hi there!" 8

Ο τύπος bool bool b1 = true; bool b2 = false; bool b3 = 0; // Το μηδέν μετατρέπεται σε false. bool b4 = 3; // Μη μηδενικές τιμές μετατρέπονται // σε true. cout << b2 << '\n' << b4; 0 1 9

Σταθερές, const και #define const int n = 1000; X n++; X const int m; // Δεν μπορεί να αλλάξει. // Χρειάζεται τιμή. #define N 1000 // Αλλάζει όλα τα N σε 1000 // κατά την προεπεξεργασία. To #define κληρονομήθηκε από τη C. Προτιμότερη είναι η χρήση του const, εκτός από ειδικές περιπτώσεις που θα δούμε αργότερα. 10

Αριθμοί κινητής υποδιαστολής 56.78 = 5.678 * 10 = 0.5678 * 10^2 σημαντικά ψηφία εκθέτης 0.00125 = 1.25 * 10^-3 = 0.125 * 10^ -2 σημαντικά ψηφία εκθέτης Μεγαλύτερο εύρος από ό,τι αν είχαμε σταθερό αριθμό ψηφίων για ακέραιο/δεκαδικό μέρος. Δεν παριστάνονται ακριβώς όλοι οι αριθμοί (π.χ. πώς παριστάνω το 0.00125 με δύο σημαντικά;). 11

Τύποι κινητής υποδιαστολής float: Τουλάχιστον 32 σημαντικά δυφία. double: Τουλάχιστον 48 σημαντικά δυφία και όχι λιγότερα από του float. long double: Τουλάχιστον όσα σημαντικά δυφία και ο double. Εκθέτες: τουλάχιστον -37 ως +37 για όλους τους τύπους. Για να μάθουμε τι ισχύει στο σύστημά μας: #include <cfloat> 12

Προσδιορισμός τιμών κινητής υποδιαστολής -12.34; // Εκλαμβάνεται ως double. -12.34F; // Τιμή float -12.34L; // Τιμή long double -1234E-2; // double, σημαίνει -1234 * 10-2. -1234E-2F; // float, σημαίνει -1234 * 10-2. -1234Ε-2L; // long double, -1234 * 10-2. Η C++11 παρέχει μηχανισμούς δημιουργίας ειδικών καταλήξεων και για άλλους τύπους τιμών (π.χ. μιγαδικούς αριθμούς). 13

Μετατροπές αριθμητικών τύπων Κατά την εκχώρηση σε μεταβλητές: int i = 3.84; // Αποθηκεύεται 3. Κατά τη διάρκεια υπολογισμών: int i = 10; cout << i / 4.0F; // Τυπώνει 2.5. cout << i / 4; // Τυπώνει 2. Κατά τη μεταβίβαση ορισμάτων και την επιστροφή τιμών από συναρτήσεις. Ρητώς: int i = 3; cout << 10 / float(i); // ή (float)i Κατά τη μετατροπή σε τύπους μικρότερου εύρους ή ακρίβειας μπορεί να χαθεί πληροφορία 14

Πίνακες int a[5]; a[0] = 10; a[1] = 20; a[4] = 50; // Μονοδιάστατος πίνακας 5 θέσεων // Αρχικοποίηση 1ης θέσης // Αρχικοποίηση 5ης θέσης double b[5] = {10.0, 20.0, 30.0, 40.0, 50.0}; float c[5] = {10.0F, 20.0F}; // Οι υπόλοιπες // θέσεις μηδενίζονται. float d[5]; // Απροσδιόριστα περιεχόμενα 15

Περισσότερα για τους πίνακες int a[ ] = {1, 2, 3, 4, 5}; // Πίνακας 5 θέσεων. X int b[ ]; // Άγνωστο μέγεθος. int i = 5; float c[i]; // Μέγεθος γνωστό κατά // τη μεταγλώττιση. X int i; cin >> i; float c[i]; // Άγνωστο μέγεθος κατά // τη μεταγλώττιση. X int f[2] = {1, 2}; cout << f; // Πρέπει να τα // τυπώσουμε ένα-ένα. Προσοχή δεν γίνονται έλεγχοι υπέρβασης ορίων! π.χ. int c[5]; c[10] = 0; // Απροσδιόριστη συμπεριφορά. 16

Πίνακες πολλών διαστάσεων int a[2][3] = // Πίνακας 2Χ3 { {1, 2, 3}, // a[0][0] = 1, a[0][1] = 2, {4, 5, 6} }; // a[1][0] = 4, a[1][1] = 5, for(int i = 0; i < 2; i++) { for(int j = 0; j < 3; j++) { cout << a[i][j]; } } 17

Πίνακες χαρακτήρων char s1[ ] = {'χ', 'α', 'ί', 'ρ', 'ε', 'τ', 'ε', '\0'}; char s2[ ] = "χαίρετε"; cout << s1 << endl // Συντομογραφία του // προηγούμενου. // Τυπώνει "χαίρετε" << s2 << endl; // δύο φορές. X char s3[7] = "χαίρετε"; char s4[10] = "χαίρετε"; char s5[10]; cin >> s5; // Δε χωράει. Μήνυμα λάθους. // Περισσεύει χώρος. // Χωράει; Αν όχι αποθη- // κεύεται σε λάθος χώρο. Μην ασχοληθείτε πολύ με τους πίνακες χαρακτήρων. Χρησιμοποιούνται σε κώδικα που κληρονομήθηκε από τη C ή όταν μας ενδιαφέρει πολύ η ταχύτητα εκτέλεσης. 18

#include <string> #include <iostream> using namespace std; Η τάξη string int main() { string s1, s2; // Δε χρειάζεται να καθορίσουμε τα μεγέθη. cin >> s1; // Ο χώρος του s1 προσαρμόζεται αυτόματα. s2 = "copy of " + s1; // Πρόσθεση συμβολοσειρών. Μετατροπή // του πίνακα χαρακτήρων σε string. s1 = "new string"; // Νέα τιμή του s1. cout << s1 << endl << s2 << endl; } Πληκτρολογώ "test". Τυπώνει: new string copy of test 19

Αρχεία κειμένου /* Αριθμεί τις λέξεις του αρχείου file1.txt. Παράγει το file2.txt. */ #include <string> #include <fstream> using namespace std; int main() { string word; unsigned long counter = 0; ifstream infile("file1.txt"); // Άνοιγμα αρχείου για είσοδο. ofstream outfile("file2.txt"); // Άνοιγμα αρχείου για έξοδο. while(infile >> word) { // Όσο μπορούμε να διαβάσουμε. // μια επόμενη λέξη... // Αν κάτι δεν πάει καλά, το infile >> word επιστρέφει false. outfile << ++counter << ": " << word << endl; } 20 }

Δεύτερο παράδειγμα με αρχεία /* Αριθμεί τις γραμμές του αρχείου file1.txt. Παράγει το file2.txt. */ #include <string> #include <fstream> using namespace std; int main() { string line; unsigned long counter = 0; ifstream infile("file1.txt"); ofstream outfile("file2.txt"); while(getline(infile, line)) { // Η getline επιστρέφει false // όταν δεν μπορεί να διαβάσει // άλλη γραμμή. outfile << ++counter << ": " << line << endl; } } 21