Προγραµµατιστικές Τεχνικές

Σχετικά έγγραφα
Εισαγωγή στην πληροφορική

Προγραµµατιστικές Τεχνικές

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

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

Προγραµµατιστικές Τεχνικές

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

Προγραμματιστικές Τεχνικές

Προγραμματιστικές τεχνικές

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

scanf() scanf() stdin scanf() printf() int float double %lf float

Προγραµµατιστικές τεχνικές

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

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

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

Προγραμματιστικές Τεχνικές

Προγραµµατιστικές Τεχνικές

Προγραµµατιστικές Τεχνικές

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

Συµβολοσειρές - Strings

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

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

Κεφάλαιο 2.6: Είσοδος / Έξοδος εδοµένων, Μορφοποίηση εδοµένων Εξόδου. ( ιάλεξη 7) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

Προγραμματιστικές Τεχνικές

Προγραµµατιστικές τεχνικές

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

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Αλφαριθµητικά Κλάση string

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

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

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

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7) Είσοδος/ Έξοδος

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7)

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

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

Προγραμματιστικές τεχνικές

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

Προγραμματιστικές Τεχνικές

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

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

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

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

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

Κεφάλαιο Αλφαριθµητικές Σειρές Χαρακτήρων (Strings)

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

Εξοικ Εξ ε οικ ίωση ε με το το πρόγ ραμμα πρόγ DEV C++ Επικοι Επικ νωνία οι Χρήσ Χρήστη τη Υπολ Υπο ογισ λ τή

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

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

Προγραμματισμός Ι. Χαρακτήρες. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών

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

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ

Προγραµµατιστικές τεχνικές

Β7.1.4 Δομές Επανάληψης. Β Λυκείου Κατεύθυνσης

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

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

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

Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 131 Αρχές Προγραµµατισµού I 4-2

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

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

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

7. Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου

Περιγραφή αλγορίθµων. ιαγράµµατα ροής

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

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

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

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

Προγραμματισμό για ΗΜΥ

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

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

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

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

char name[5]; /* define a string of characters */

Streams Input / Output in C++ George Kastrinis

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

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

Δομές δεδομένων (Structures) Εισαγωγή στη C++

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

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

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

Κεφάλαιο 3.1, : Συναρτήσεις I. (Διάλεξη 11)

ΕΠΛ 032.3: Προγραµµατισµός ΜεθόδωνΕπίλυσηςΠροβληµάτων

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

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

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

Κεφάλαιο 3.1, : Συναρτήσεις I. ( ιάλεξη 11) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

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

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

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

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

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

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

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

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

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

Μεθόδων Επίλυσης Προβλημάτων

ΑΣΚΗΣΗ 7: ΑΛΦΑΡΙΘΜΗΤΙΚΑ

Transcript:

Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόµων Τοπογράφων Μηχανικών Προγραµµατιστικές Τεχνικές Βασίλειος Βεσκούκης ρ. Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών ΕΜΠ v.vescoukis@cs.ntua.gr Ρωµύλος Κορακίτης Αστροφυσικός Αναπλ. Καθηγητής ΕΜΠ romylos@survey.ntua.gr Αλφαριθµητικά (strings)( Ρεύµατα (streams) εισόδου / εξόδου και µορφοποίηση δεδοµένων εξόδου

Αλφαριθµητικά (strings) Γνωρίζουµε ότι η C++ υποστηρίζει σατθερές ή µεταβλητές τύπου char, δηλαδή αλφαριθµητικούς χαρακτήρες. Οι µεταβλητές αυτές ανήκουν στην οικογένεια των ακέραιων (integer) µεταβλητών. char a1= Y ; int c=a1; cout<<a1<<c; --> εκτυπώνεται Y 89 (κωδικός ASCII του Υ) Για αλφαριθµητικές εκφράσεις πολλών χαρακτήρων, υπάρχει ο τύπος string. Για να χρησιµοποιηθεί απαιτείται να συµπεριληφθεί η κεφαλίδα string: #include <string> string exp1= Romylos Korakitis ; Η εντολή ορίζει την µεταβλητή exp1 ως string και της αποδίδει τιµή Romylos Korakitis Η τιµή µιας µεταβλητής string αποθηκεύεται όπως ακριβώς ένας πίνακας. Στο παράδειγµα, δηλαδή, το στοιχείο [0] της exp1 είναι R, το στοιχείο [1] είναι o κ.ο.κ. Έτσι, µια µεταβλητή string µπορεί να αποθηκεύσει πολύ µεγάλη ποσότητα αλφαριθµητικών χαρακτήρων

Πράξεις µε strings Για τον τύπο string έχουν οριστεί οι τελεστές: + (πρόσθήκη) και [] (δείκτης πίνακα) st1= Romylos ; st2= teaches Astronomy ; st3=st1+ +st2; ==> Η st3 έχει τιµή Romylos teaches Astronomy Η εντολή: st1[0]= z αντικαθιστά τον χαρακτήρα R µε z στην πρώτη θέση του string st1

Συναρτήσεις ορισµένες για τα strings - 1 1. Η συνάρτηση length επιστρέφει ένα µη προσηµασµένο ακέραιο που δηλώνει τον αριθµό των χαρακτήρων που περιλαµβάνει το αλφαριθµητικό. Η συνάρτηση αυτή δεν έχει παραµέτρους. st1= Romylos ; cout << st1.length(); ==> Εκτυπώνεται 7 Προφανώς, η τιµή της συνάρτησης µπορεί να αποδοθεί σε κάποια ακέαραια µεταβλητή. Ίδια συµπεριφορά µε την length() έχει και η συνάρτηση size(). 2. Η συνάρτηση substr επιστρέφει ένα τµήµα του αλφαριθµητικού. st2= teaches Astronomy ; st3=st2.substr(5,6); Η st3 περιέχει τους χαρακτήρες es Ast Η συνάρτηση substr δέχεται δύο παραµέτρους: την θέση (δείκτη) του πρώτου χαρακτήρα και το εύρος του τµήµατος. Οι παράµετροι µπορούν να είναι σταθερές, µεταβλητές ή εκφράσεις που έχουν ακέραια τιµή.

Συναρτήσεις ορισµένες για τα strings - 2 3. Η συνάρτηση find αναζητά σε ένα string την πρώτη εµφάνιση ενός συγκεκριµένου τµήµατος, που δίνεται ως παράµετρος. Επιστρέφει ένα ακέραιο αριθµό, που δηλώνει την θέση στο string του πρώτου χαρακτήρα που ταυτίστηκε. Η αναζήτηση είναι ακριβής (exact), πρέπει δηλαδή να συµφωνούν ακριβώς όλοι οι αναζητούµενοι χαρακτήρες. Αν δεν βρεθεί ταυτιζόµενο τµήµα, η συνάρτηση επιστρέφει την ειδική τιµή npos. st2= teaches Astronomy ; cout << st2.find( rono ); ==> Επιστρέφει τιµή 11 int t=st2.find( ach ); ==> η µεταβλητή t αποκτά την τιµή 2 Προφανώς, η παράµετρος αναζήτησης της συνάρτησης µπορεί να είναι µια σταθερά ή µια µεταβλητή τύπου string ή char 4. Η συνάρτηση swap που ανταλλάσει το περιεχόµενο δύο µεταβλητών τύπου string. string exp1= Romylos ; string exp2= Korakitis ; exp1.swap(exp2); ==> Η exp1 περιέχει Korakitis και η exp2 Romylos

Ρεύµατα εισόδου / εξόδου (Ι / Ο streams) Ρεύµα εισόδου (input stream) : µια ακολουθία χαρακτήρων από µια συσκευή εισόδου (πχ. πληκτρολόγιο, αρχείο κλπ) προς το σύστηµα. Ρεύµα εξόδου (output stream) : µια ακολουθία χαρακτήρων από το σύστηµα προς µια συσκευή εξόδου (πχ. οθόνη, αρχείο κλπ). Για να χρησιµοποιηθούν τα ρεύµατα πρέπει να δηλωθεί η κεφαλίδα <iostream> Γνωρίζουµε ήδη το καθιερωµένο ρεύµα εισόδου cin και το καθιερωµένο ρεύµα εξόδου cout. Παράδειγµα : cin >> a ;

Ρεύµατα εισόδου / εξόδου - 2 char ch1, ch2; int num; cin>>ch1>>ch2>>num; Ο χρήστης πληκτρολογεί : A 25 Όταν εκτελεστεί η εντολή εισόδου, οι µεταβλητές θα έχουν τιµές: Α στην ch1, 2 στην ch2 και 5 στην num. Αιτία: ο τελεστής >> αγνοεί τα κενά Αν θέλουµε τιµή Α στην ch1, κενό στην ch2 και 25 στην num??? Χρησιµοποιούµε την συνάρτηση get, µε γενική µορφή: cin.get(varchar); cin.get(ch1); cin.get(ch2); cin>>num; Για να αποθηκεύσουµε πολλούς χαρακτήρες (µε κενά) σε αλφαριθµητικό, χρησιµοποιούµε: getline(istreamvar, strvar); getline(cin cin,mystring); Πληκτρολόγηση: bbbbhello Hello there. How are you? Αποτέλεσµα: η τιµή του mystring είναι " Hello there. How are you?"

Παράδειγµα 1 // cin with strings #include <iostream.h> int main () { char mybuffer [100]; cout << "What's your name? "; cin.getline (mybuffer,100); cout << "Hello " << mybuffer << ".\n"; cout << "Which is your favourite team? "; cin.getline (mybuffer,100); cout << "I like " << mybuffer << " too.\n"; return 0; } Οθόνη What's your name? Romylos Hello Romylos. Which is your favourite team? Bayern I like Bayern too.

Παράδειγµα 2 Πρόβληµα: Να σχεδιαστεί και να γραφεί ένα πρόγραµµα που θα δέχεται από τον χρήστη δύο strings: το πρώτο θα εκφράζει το username και το δεύτερο το password του χρήστη προς το σύστηµα. Το πρόγραµµα θα συγκρίνει τα άλφαριθµητικά που πληκτρολογούνται µε τα αντίστοιχα πρότυπα, αποθηκευµένα ήδη, και εφ όσον αυτά συµφωνούν, θα εκτυπώνεται το µήνυµα «You are now connected». Αν όχι, θα προτρέπει τον χρήστη να εισάγει πάλι τα αλφαριθµητικά έως ότου δοθούν τα σωστά. εδοµένα εισόδου: string user, passw εδοµένα εξόδου: (µήνυµα)

Μορφοποίηση δεδοµένων εξόδου - 1 Η γενική µορφή χρήσης του ρεύµατος εξόδου είναι: cout<<παράσταση ή διαµορφωτής<<παράσταση ή διαµορφωτής ; Ο απλούστερος διαµορφωτής (manipulator) που ήδη ξέρουµε είναι ο endl. Άλλοι χρήσιµοι διαµορφωτές είναι: fixed, scientific, setprecision(d), setw(n) κλπ Οι διαµορφωτές αυτοί απαιτούν την χρήση της κεφαλιδας <iomanip> #include <iostream> #include <iomanip> using namespace std; int main() { double x,y,z; x = 15.674; y = 235.73; z = 9525.9867; cout<<fixed <<setprecision(3); cout<<"x = "<<setw(9)<<x<<endl; ==> x = 15.674 cout<<"y = "<<setw(9)<<y<<endl; ==> y = 235.730 cout<<"z = "<<setw(9)<<z<<endl; ==> z = 9525.987 return 0; }

Μορφοποίηση δεδοµένων εξόδου - 2 Μπορούµε να επιτύχουµε πλήρη διαµόρφωση των δεδοµένων εξόδου χρησιµοποιώντας την συνάρτηση εξόδου printf, µε γενική µορφή: printf(formatstring, var ) Το αλφαριθµητικό µορφοποίησης (format) µπορεί να έχει ένα πλήθος από προδιαγραφές µετατροπής, που έχουν όλες το πρόθεµα % #include <iostream> #include <stdio> using namespace std; int main() { double x = 15.674; double z = 9525.9867; int a = 13; printf("\na=%3d z=%9.3f",a,z); ==> a= 13 z= 9525.987 cout<<endl; printf("\nx= %10.5e z= %12.6e",x,z); ==> x= 1.56740e+01 z= 9.525987e+03 return 0; }