Προγραμματισμός σε C++

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

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

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

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

Κεφάλαιο : Εισαγωγή στην C: (Διαλέξεις 3-4)

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

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

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

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

Η γλώσσα προγραμματισμού C

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

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

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

Δεδομένα, Τύποι και Τιμές

Στόχοι και αντικείμενο ενότητας. Προτάσεις επανάληψης. Έλεγχος ροής προγράμματος. #5.. Εντολές Επανάληψης

Υπολογισμός - Εντολές Επανάληψης

Κεφάλαιο : Εισαγωγή στην C. ( ιαλέξεις 3-4) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Κεφάλαιο : Επαναλήψεις (oι βρόγχοιfor, do-while) (Διάλεξη 10) Εντολές Επανάληψης που θα καλυφθούν σήμερα

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

Υπολογισμός - Εντολές Ελέγχου

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

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής

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

ΣΥΝΟΠΤΙΚΟΣ ΟΔΗΓΟΣ ΓΛΩΣΣΑΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C

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

2.1. Εντολές Σχόλια Τύποι Δεδομένων

Κεφάλαιο Πίνακες Ι. (Διάλεξη 16)

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

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

Γλώσσα Προγραμματισμού C

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις. Επανάληψη για την ενδιάμεση εξέταση. (Διάλεξη 13)

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

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

Κεφάλαιο : Επαναλήψεις (for, do-while)

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

Γλώσσα Προγραμματισμού C

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

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

Η Γλώσσα C Μία Σφαιρική Ανασκόπηση

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

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

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

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

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

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

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

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

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

3 &4. Εισαγωγήστη C Ιωάννης Κατάκης

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

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ

Βασικές Αρχές Προγραμματισμού

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

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

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

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

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

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

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

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

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

Συναρτήσεις και διαδικασίες

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

Ενδεικτική περιγραφή μαθήματος

Κεφάλαιο Πίνακες Ι. ( ιάλεξη 15) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

Οικονόμου Βαγγέλησ Διάλεξη Νο 2. Δομημένοσ Προγραμματιςμόσ - Διάλεξη 2

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

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

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

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

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

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

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

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

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

Γλώσσα Προγραμματισμού C. Προγραμματισμός HY: Γλώσσα Προγραμματισμού C. Γρήγορος Πίνακας Αναφοράς Σύνταξης. Εισήγηση #4. Επαναληπτικές δομές:

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

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

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

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

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

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

Δομές ελέγχου & επανάληψης

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

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Ο πιο κάτω πίνακας περιγράφει σε ποιες περιπτώσεις χρησιμοποιούμε τους τρεις πιο πάνω τρόπους:

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript

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

5 &6. Τύποι δεδομένων, τελεστές και

Κεφάλαιο 2.5: Τύποι εδοµένων, Τελεστές και Αριθµητικές Εκφράσεις. ( ιαλέξεις 5-6) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Είδη εντολών. Απλές εντολές. Εντολές ελέγχου. Εκτελούν κάποια ενέργεια. Ορίζουν τον τρόπο με τον οποίο εκτελούνται άλλες εντολές

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

Διάλεξη 5η: Εντολές Επανάληψης

Αρχές Προγραμματισμού

Transcript:

Προγραμματισμός σε C++ Σικαλίας Γιώργος - SikRip 8/12/2005 Σικαλιάς Γιώργος 1

Εισαγωγή Ο προγραμματισμός είναι να σαν να δίνουμε οδηγίες σε κάποιον: στόχος μας είναι να κάνει ο Η/Υ αυτό που θέλουμε Πρέπει να «μιλήσουμε» στον υπολογιστή στην γλώσσα που γνωρίζει Οι Η/Υ γνωρίζουν μόνο τα δυαδικά ψηφία (0 και 1) Φυσικά για τον άνθρωπο είναι δύσκολο να θυμάται τεράστιες αλληλουχίες από 0 και 1!!!! Γι αυτό οι επιστήμονες δημιούργησαν τις γλώσσες προγραμματισμού: μια γέφυρα ανάμεσα στον Η/Υ και στον άνθρωπο 8/12/2005 Σικαλιάς Γιώργος 2

C/C++ www.infospoudes.gr Η γλώσσα προγραμματισμού που θα ασχοληθούμε είναι η C/C++ H C αναπτύχθηκε από τους Dennis Ritchie & Brian Kernighan το 1970. Η C++ είναι μια βελτίωση της C, η οποία συμπεριλαμβάνει τον αντικειμενοστραφή προγραμματισμό και πολλά άλλα. Υπάρχουν πολλοί compilers για C/C++ για αρχή προτείνεται ο DevC++. 8/12/2005 Σικαλιάς Γιώργος 3

Βασικές Αρχές της C/C++ Όλα τα προγράμματα στην C++ είναι δομημένα σε συναρτήσεις. Οι συναρτήσεις χρησιμοποιούν η μια την άλλη. Όμως, η εκτέλεση του προγράμματος ξεκινά πάντα από την συνάρτηση main. Συνεπώς, η main πρέπει να υπάρχει σε κάθε πρόγραμμα μας. Ας δούμε το πρώτο μας πρόγραμμα... 8/12/2005 Σικαλιάς Γιώργος 4

Hello world σε C++ #include <stdio.h> int main() printf("hello world!\n"); return 0; Αυτή είναι η κύρια συνάρτηση του προγράμματος. Οι εντολές του προγράμματος βρίσκονται ανάμεσα σε κυκλικές αγκύλες. Η συνάρτηση main έχει τύπο επιστροφής int. Θα αναλύσουμε τον τύπο επιστροφής αργότερα. 8/12/2005 Σικαλιάς Γιώργος 5

Hello world σε C++ (2) #include <stdio.h> int main() printf("hello world!\n"); return 0; Με την συνάρτηση «printf» εμφανίζουμε μηνύματα στην οθόνη του υπολογιστή. Το «\n» στο τέλος της εντολής τοποθετεί τον κέρσορα στην επόμενη γραμμή, αφού εκτυπωθεί το μήνυμα. 8/12/2005 Σικαλιάς Γιώργος 6

Hello world σε C++ (3) #include <stdio.h> int main() printf("hello world!\n"); return 0; Η συνάρτηση «printf» υπάρχει μέσα στην βιβλιοθήκη «stdio.h». Για να χρησιμοποιήσουμε την «printf» πρέπει να «πούμε» στον υπολογιστή να συμπεριλάβει την κατάλληλη βιβλιοθήκη. Τι είναι βιβλιοθήκη; Σκεφθείτε τη σαν μια συλλογή από έτοιμες εντολές τις οποίες μπορείτε να χρησιμοποιείτε. Η C/C++ έχει έτοιμες βιβλιοθήκες για να μας διευκολύνει. 8/12/2005 Σικαλιάς Γιώργος 7

Hello world σε C++ (4) #include <stdio.h> int main() printf("hello world!\n"); return 0; Παράδειγμα hello.cpp Η εντολή «return» σημαίνει ότι το πρόγραμμά μας τελειώνει εκεί και επιστρέφει το αποτέλεσμα στον καλούντα. Η main καλείται από το λειτουργικό σύστημα. Το 0 δίπλα στο return είναι ο αριθμός που επιστρέφεται στο σύστημα. Συνήθως όταν επιστρέφουμε 0 σημαίνει ότι δεν έχει γίνει κάποιο λάθος. 8/12/2005 Σικαλιάς Γιώργος 8

Συναρτήσεις Οι συναρτήσεις στη C++ μπορούν να παρομοιαστούν με αυτές των μαθηματικών η διαφορά είναι ότι στη C++ εκφράζονται με εντολές. Οι συναρτήσεις επιστρέφουν μια τιμή, αυτό στη C++ γίνεται με την εντολή return. Η τιμή κάθε συνάρτησης επιστρέφεται στην συνάρτηση που την κάλεσε. Την συνάρτηση main την καλεί το λειτουργικό σύστημα. 8/12/2005 Σικαλιάς Γιώργος 9

Συναρτήσεις (2) Θυμηθείτε την δήλωση της main: int main() To «int» είναι ο τύπος επιστροφής.το «main» είναι το όνομα της συνάρτησης. Μέσα στις παρενθέσεις βάζουμε τα ορίσματα της συνάρτησης. Στην συγκεκριμένη συνάρτηση δεν έχουμε βάλει ορίσματα. 8/12/2005 Σικαλιάς Γιώργος 10

Παραδείγματα Συνάρτησης int add(int a,int b) return a+b; void printmyname() printf( George ); 8/12/2005 Σικαλιάς Γιώργος 11

Θυμηθείτε ότι Τα προγράμματα C++ είναι case sensitive που σημαίνει ότι το printf είναι διαφορετικό από το Printf και το PRINTF. Αν αντί για printf γράψουμε Printf το πρόγραμμά μας δεν θα τρέχει. Όλες οι εντολές στη C++ τελειώνουν με ένα ελληνικό ερωτηματικό (;) 8/12/2005 Σικαλιάς Γιώργος 12

Μεταγλώττιση Προγράμματος Πηγαίος κώδικας (source) hello.c Μεταγλωττιστής C (compiler) stdio.h Αρχεία επικεφαλίδας (header files) Object code hello.o Εκτελέσιμο πρόγραμμα (executable) hello Συνδέτης (linker) printf Βιβλιοθήκη (library) 8/12/2005 Σικαλιάς Γιώργος 13

Σχόλια Τα σχόλια βοηθούν των αναγνώστη του κώδικα σας (αλλά και εσάς μετά από καιρό!) να καταλάβει τι κάνει το πρόγραμμά σας. Τα σχόλια αγνοούνται από τον compiler Στη C++ τα σχόλια μπαίνουν με δύο τρόπους: /* σχόλιο */ // σχόλιο Αν τα σχόλιά σας είναι μίας ή δύο γραμμών χρησιμοποιήστε τον 2 ο τρόπο, αν έχετε σχόλια πολλών γραμμών χρησιμοποιήστε τον 1 ο τρόπο 8/12/2005 Σικαλιάς Γιώργος 14

Μεταβλητές Οι μεταβλητές χρησιμοποιούνται για να αποθηκεύουν τιμές. Οι δηλώσεις περιέχουν τον τύπο δεδομένων που χρειαζόμαστε. Παραδείγματα δηλώσεων μεταβλητών int count ; float area ; 8/12/2005 Σικαλιάς Γιώργος 15

Σταθερές Οι σταθερές έχουν όνομα και συγκεκριμένη τιμή Δήλωση σταθεράς (constant) Δήλωση Σταθεράς #define όνομα τιμή #define pi 3.1453 #define yes 1 #define no 0 #define true 1 #define false 0 8/12/2005 Σικαλιάς Γιώργος 16

Δηλώνοντας μεταβλητές Όταν δηλώνουμε μία μεταβλητή: Παραχωρείται χώρος μνήμης ώστε να αποθηκευτεί ο σχετικός τύπος δεδομένων Ο χώρος μνήμης σχετίζεται με ένα όνομα Παράδειγμα δήλωσης int count ; count FE07 8/12/2005 Σικαλιάς Γιώργος 17

Έγκυρα ονόματα μεταβλητών www.infospoudes.gr Το όνομα μιας μεταβλητής (identifier) C++ πρέπει να: Αποτελείται από γράμματα, ψηφία και το underscore. Μπορεί να είναι όσο μεγάλο θέλετε, αλλά μετρούν μόνο οι πρώτοι 31 χαρακτήρες. ΔΕΝ μπορεί να αρχίζει με αριθμό Δεν μπορεί να είναι δεσμευμένη λέξη της C++ 8/12/2005 Σικαλιάς Γιώργος 18

Δεσμευμένες λέξεις της C auto case const default double enum float goto break char continue do else extern for if 8/12/2005 Σικαλιάς Γιώργος 19 int register short signed sizeof struct typedef unsigned volatile long return static switch union void while

Διάκριση κεφαλαίων/πεζών Διαφέρουν τα μικρά από τα κεφαλαία Πχ.: area είναι διαφορετικό από το Area το οποίο διαφέρει από το AREA 8/12/2005 Σικαλιάς Γιώργος 20

Μεταβλητές - συνέχεια Η C++ έχει τρεις προκαθορισμένους τύπους μεταβλητών Integers int, long int, short int, unsigned int Κινητής υποδιαστολής (Floating point) float, double Χαρακτήρες char 8/12/2005 Σικαλιάς Γιώργος 21

Αρχικοποίηση Μεταβλητών Αρχικοποίηση μεταβλητών int x = 7; float y = 5.9; char c = A ; Μην «κρύβετε» την αρχικοποίηση Μερικές φορές είναι καλύτερα να ξεχωρίζετε τη δήλωση από την αρχικοποίηση Μπορεί να χρειάζεται σχόλιο Π.χ. int y = 6; //διάσταση y του κύβου ΟΧΙ int x, y = 6, z; 8/12/2005 Σικαλιάς Γιώργος 22

Συμβάσεις για τα ονόματα Οι μεταβλητές αρχίζουν με μικρό γράμμα Χρησιμοποιείστε ονόματα που έχουν νόημα Οι «λέξεις» διαχωρίζονται στο ίδιο όνομα με underscores ή μίξη πεζών και κεφαλαίων Παράδειγμα: surfacearea, surface_area surface_area Συνέπεια! 8/12/2005 Σικαλιάς Γιώργος 23

Συμβάσεις για τα ονόματα (2) www.infospoudes.gr Χρησιμοποιήστε κεφαλαία για σταθερές ( #define ) Πχ.: PI (#define PI 3.14159 ) Τα ονόματα συναρτήσεων ακολουθούν τις ίδιες συμβάσεις με τα ονόματα μεταβλητών 8/12/2005 Σικαλιάς Γιώργος 24

Ποια είναι έγκυρα ονόματα; AREA 3D Last-Chance x_yt3 num$ lucky*** area_under_the_curve num45 #values pi %done 8/12/2005 Σικαλιάς Γιώργος 25

Ποια είναι έγκυρα ονόματα; AREA 3D Last-Chance x_yt3 num$ lucky*** area_under_the_curve num45 #values pi %done 8/12/2005 Σικαλιάς Γιώργος 26

Μετατροπές Τύπων Μεταβλητών (Casting) Ρητή μετατροπή τύπου Μεταβλητή = (Νέος τύπος)(έκφραση προς μετατροπή) Π.χ. char c=(char)10; www.infospoudes.gr short count = (short)intcount; 8/12/2005 Σικαλιάς Γιώργος 27

Έξοδος στην οθόνη Η έξοδος στην οθόνη γίνεται με την συνάρτηση printf int main ( ) printf ("Print a simple string...\n"); int i_val=10; printf ("Print an integer...%d\n",i_val); float f_val=10.0; printf ("Print a float...%f\n",f_val); char s_val[]="a string"; printf ("Print a string... %s\n",s_val); system("pause"); return 0; 8/12/2005 Σικαλιάς Γιώργος 28

Έξοδος στην οθόνη (2) int printf( %d,int_var); float printf( %f,float_var); char printf( %c,char_var); double printf( %e,double_var); string* printf( %s,s_val); Παράδειγμα output.cpp 8/12/2005 29

Είσοδος από το πληκτρολόγιο Η είσοδος από το πληκτρολόγιο γίνεται με την συνάρτηση scanf() int main() int width, length, area; printf("width : "); scanf("%d", &width); printf("length: "); scanf("%d", &length); area = width * length; printf("the dimension is %d by %d\n", width, length); printf("the area is %d.\n", area); return 0; 8/12/2005 Σικαλιάς Γιώργος 30

Είσοδος από το πληκτρολόγιο(2) int scanf( %d,int_var); float scanf( %f,float_var); char scanf( %c,char_var); double scanf( %e,double_var); string* scanf( %s,s_val); Παράδειγμα input.cpp 8/12/2005 31

Αριθμητικοί Τελεστές Όνομα Τελεστής Παράδειγμα Πρόσθεση + num1 + num2 Αφαίρεση - initial - spent Πολ/σμός * count * 6 Διαίρεση / sum / count Υπόλοιπο % m % n 8/12/2005 Σικαλιάς Γιώργος 32

Τελεστής αύξησης και μείωσης www.infospoudes.gr Τελεστής αύξησης ++ Τελεστής μείωσης -- Αύξηση και μείωση εφαρμόζονται μόνο σε μεταβλητές, ΟΧΙ σε σταθερές ή σε εκφράσεις. Π.χ. i++; ++i; 8/12/2005 Σικαλιάς Γιώργος 33

Θέση τελεστή αύξησης: Μετά Η θέση του ++ προσδιορίζει ΠΟΤΕ θα αυξηθεί η τιμή. Εάν το ++ είναι μετά τη μεταβλητή τότε η αύξηση γίνεται τελευταία. int amount, count; www.infospoudes.gr count = 3; amount = 2 * count++; Το amount παίρνει την τιμή 2 * 3 και μετά το count αυξάνεται κατά 1 Μετά την τελευταία γραμμή, το amount είναι 6 και το count είναι 4. 8/12/2005 Σικαλιάς Γιώργος 34

Θέση τελεστή αύξησης: Πριν Εάν το ++ βρίσκεται πριν τη μεταβλητή, τότε η αύξηση γίνεται πρώτη int amount, count; count = 3; amount = 2 * ++count; Το 1 προστίθεται στο count, στη συνέχεια το amount γίνεται 2 * 4 Στην τελευταία γραμμή, amount είναι 8 και count είναι 4. 8/12/2005 Σικαλιάς Γιώργος 35

Τελεστής μείωσης Αν θέλω να αφαιρέσω 1 γράφω : count = count - 1; Πιο σύντομα: count--; ή --count; Και τα δύο επιτελούν την ίδια λειτουργία 8/12/2005 Σικαλιάς Γιώργος 36

Η θέση του τελεστή μείωσης: Μετά Το -- μετά την μεταβλητή έχει αντίστοιχη επίδραση με το ++ μετά την μεταβλητή int amount, count; count = 3; amount = 2 * count--; amount =2 * 3 και 1 από το count www.infospoudes.gr στη συνέχεια το αφαιρείται Στο τέλος amount=6 και count=2. 8/12/2005 Σικαλιάς Γιώργος 37

Η θέση του τελεστή μείωσης: Πριν Τι συμπεριφορά έχει το -- πριν τη μεταβλητή; int amount, count; count = 3; amount = 2 * --count; amount =2 * 2 Στο τέλος count =2. www.infospoudes.gr 8/12/2005 Σικαλιάς Γιώργος 38

Σχεσιακοί τελεστές < μικρότερο από > μεγαλύτερο από <= μικρότερο ή ίσο από >= μεγαλύτερο ή ίσο από == ίσο!= διαφορετικό Οι τιμές που παίρνουν είναι η int τιμή 1 (Αληθές) ή η int τιμή 0 (Ψευδές) Αυτοί οι τελεστές λέγονται δυαδικοί διότι παίρνουν δύο ορίσματα 8/12/2005 Σικαλιάς Γιώργος 39

Τελεστές ανάθεσης = += -= *= /= %= Έκφραση Ισοδύναμή έκφραση a = a + 2 ; a += 2 ; a = a - 3 ; a -= 3 ; a = a * 2 ; a *= 2 ; a = a / 4 ; a /= 4 ; a = a % 2 ; a %= 2 ; b = b + ( c + 2 ) ; b += c + 2 ; d = d * ( e - 5 ) ; d *= e - 5 ; 8/12/2005 Σικαλιάς Γιώργος 40

Σχεσιακοί τελεστές παραδείγματα int a = 1, b = 2, c = 3; Έκφραση Τιμή Έκφραση Τιμή a < c a + b >= c b <= c a + b == c c <= a a!= b a > b a + b!= c b >= c 8/12/2005 Σικαλιάς Γιώργος 41

Δομημένος Προγραμματισμός Όλα τα προγράμματα πρέπει να γράφονται ΜΟΝΟ με τις παρακάτω προδιαγραφές Ακολουθιακές εντολές Αν δεν υπάρχει επιλογή ή επανάληψη, οι εντολές εκτελούνται με τη σειρά που εγράφησαν. Επιλογή Επιλογή ανάμεσα σε εναλλακτικές προτάσεις Επανάληψη www.infospoudes.gr Επανάληψη ενέργειας, όσο κάποια συνθήκη παραμένει αληθής 8/12/2005 Σικαλιάς Γιώργος 42

Επιλογή με την εντολή if if ( συνθήκη ) εντολές Π.χ. if ( value == 0 ) printf ( Η τιμή που έβαλες είναι μηδέν\n ); 8/12/2005 Σικαλιάς Γιώργος 43

if - else if (συνθήκη ) εντολές /* η if πρόταση */ else εντολές /* η else πρόταση */ 8/12/2005 Σικαλιάς Γιώργος 44

Παράδειγμα if - else if ( value == 0 ) printf ( The value you entered was zero\n ); else printf ( You didn t enter a zero\n ); 8/12/2005 Σικαλιάς Γιώργος 45

if - else if - else if (συνθήκη) εντολές else if (συνθήκη) /* πολλαπλές προτάσεις */ /* else if */ εντολές else εντολές 8/12/2005 Σικαλιάς Γιώργος 46

Παράδειγμα if ( value == 0 ) printf ( The value you entered was zero\n ); else if ( value < 0 ) printf ( %d is negative.\n, value); else printf ( %d is positive.\n, value); Παράδειγμα ifelse.cpp 8/12/2005 Σικαλιάς Γιώργος 47

Επιλογή με την εντολή Switch Με την εντολή switch μπορούμε να επιλέξουμε πως θα συνεχίσει η εκτέλεση του προγράμματος ανάμεσα από πολλές τιμές Είναι ισοδύναμο με πολλές εντολές ifelse 8/12/2005 Σικαλιάς Γιώργος 48

Παράδειγμα switch switch (month) case 1: printf ("January"); break; case 2: printf ("February"); break; case 3: printf ("March"); break;... case 12: printf ("December"); break; default: printf ("Hey, that's not a valid month!"); break; Παράδειγμα switch.cpp 8/12/2005 Σικαλιάς Γιώργος 49

Δομή επανάληψης - Βρόχος while www.infospoudes.gr Η δομές επανάληψης επιτρέπουν στους προγραμματιστές να προσδιορίσουν μία ενέργεια που θα επαναλαμβάνεται όσο μία συνθήκη παραμένει αληθής. (Παράδειγμα σε ψευδοκώδικα) while υπάρχουν και άλλα παιδιά αφαίρεσε 1 από τον #παιδιών πολλαπλασίασε #κουλουριών με 2 end_while 8/12/2005 Σικαλιάς Γιώργος 50

Παράδειγμα while στη C++ while ( children > 0 ) children = children - 1; cookies = cookies * 2 ; 8/12/2005 Σικαλιάς Γιώργος 51

Βρόχος while και επαναλήψεις www.infospoudes.gr #include <stdio.h> int main () int i = 1; Αρχικοποίηση βρόχου μεταβλητή ελέγχου /* count from 1 to 10 */ while ( i < 11 ) έλεγχος συνθήκης που τερματίζει το βρόχο printf ( %d, i); i++; Μεταβολή της μεταβλητής ελέγχου βρόχου 8/12/2005 Σικαλιάς Γιώργος 52

Μέσος όρος για 10 φοιτητές int main ( ) int counter, grade, total, average ; total = 0 ; counter = 1 ; while ( counter <= 10 ) printf ( Enter grade : ); scanf ( %d, &grade); total = total + grade ; counter = counter + 1; average = total / 10 ; printf ( Class average is %d\n, average); 8/12/2005 Σικαλιάς Γιώργος 53

Είναι ευέλικτο; Πόσο καλό είναι το πρόγραμμα; Δουλεύει μόνο για 10 φοιτητές Θα θέλαμε να δουλεύει για οποιονδήποτε αριθμό φοιτητών. Καλύτερα (δηλαδή γενικότερη λύση) : Ρώτα το χρήστη τον αριθμό των φοιτητών 8/12/2005 Σικαλιάς Γιώργος 54

Μέσος όρος για Ν φοιτητές (γενική λύση) www.infospoudes.gr int main ( ) int numstudents, counter, grade, total, average ; total = 0 ; counter = 1 ; printf ( Enter Number of Students: ); scanf ( %d, &numstudents); while ( counter <= numstudents) printf ( Enter grade : ); scanf ( %d, &grade); total = total + grade ; counter = counter + 1; average = total / numstudents ; printf ( Class average is %d\n, average); 8/12/2005 Σικαλιάς Γιώργος 55

Γιατί το κάναμε γενικότερο; Όσο ποιο ευέλικτο είναι, τόσο ποιο δύσκολο είναι να γραφεί. ΑΛΛΑ είναι πιο χρήσιμο. 8/12/2005 Σικαλιάς Γιώργος 56

Χρήση βρόχου while για έλεγχο εισόδου int main ( ) int num ; printf ( Enter a positive integer : ) ; scanf ( %d, &num) ; while ( num < 0 ) printf ( \nthat s incorrect, try again\n ); printf ( Enter a positive integer : ) ; scanf ( %d, &num) ; printf ( You entered %d\n,num); Παράδειγμα while2.cpp 8/12/2005 Σικαλιάς Γιώργος 57

Οβρόχος for Με το for τα προηγούμενα υλοποιούνται απλούστερα Αρχικοποίηση, έλεγχος, μεταβολή είναι μέρος του βρόχου for ( i = 1; i < 11; i++) αρχικοποίηση μεταβολή έλεγχος 8/12/2005 Σικαλιάς Γιώργος 58

Πως λειτουργεί το for ; Όπως και με το βρόχο while έτσι και το for Αρχικοποιεί τη μεταβλητή ελέγχου Μεταβάλει τη μεταβλητή ελέγχου Ελέγχει τη μεταβλητή ελέγχου 8/12/2005 Σικαλιάς Γιώργος 59

Βρόχος for που μετράει από το 0 στο 9 www.infospoudes.gr for (i = 0; i < 10; i++) printf ( %d, i); printf ( \n ); 8/12/2005 Σικαλιάς Γιώργος 60

Μπορούμε να μετρήσουμε και αντίστροφα www.infospoudes.gr for (i = 10; i > 0; i--) printf ( %d, i); printf ( \n ); 8/12/2005 Σικαλιάς Γιώργος 61

Μπορούμε να μετρήσουμε με βήμα 2... ή 7... ή οτιδήποτε for (i = 0; i < 10; i += 2) printf ( %d, i); printf ( \n ); Παράδειγμα for.cpp 8/12/2005 Σικαλιάς Γιώργος 62

Η δομή επανάληψης dowhile www.infospoudes.gr do statement(s) while (condition); Το σώμα της do-while εκτελείται πάντα, τουλάχιστον μία φορά 8/12/2005 Σικαλιάς Γιώργος 63

Παράδειγμα do-while do printf ( Enter a positive number: ); scanf ( %d, &num); if (num <= 0) printf ( \nthat is not positive, try again\n ); while (num <= 0); Παράδειγμα dowhile.cpp 8/12/2005 Σικαλιάς Γιώργος 64

Ένα while που ελέγχει την είσοδο, σύγκριση με do-while printf ( Enter a positive number: ); scanf ( %d, &num); while (num <= 0) printf ( \nthat is not positive, try again\n ); printf ( Enter a positive number: ); scanf ( %d, &num); 8/12/2005 Σικαλιάς Γιώργος 65

for και while χρήση for όταν το πρόγραμμα «ξέρει» πόσες φορές θα επαναληφθεί ο βρόχος χρήση while όταν υπάρχει συνθήκη που τερματίζει το βρόχο χρήση do-while όταν το σώμα πρέπει να εκτελεστεί τουλάχιστον μία φορά. 8/12/2005 Σικαλιάς Γιώργος 66

break break μπορεί να χρησιμοποιηθεί σε βρόχο while, do-while και for για να προκαλέσει έξοδο από το βρόχο. ΔΕΝ ΕΙΝΑΙ ΣΥΝΙΣΤΩΜΕΝΗ ΤΑΚΤΙΚΗ 8/12/2005 Σικαλιάς Γιώργος 67

Παράδειγμα break σε βρόχο #include <stdio.h> int main ( ) int i; for (i = 1; i < 10; i++) if (i == 5) break; printf ( %d, i); printf ( \nbroke out of loop at i = %d\n, i); ΈΞΟΔΟΣ: 1 2 3 4 Έξοδος από βρόχο με i = 5 Παράδειγμα break.cpp 8/12/2005 Σικαλιάς Γιώργος 68

continue continue μπορεί να χρησιμοποιηθεί με for, while, do-while Προκαλεί την ματαίωση της εκτέλεσης των επομένων εντολών του βρόχου, για την τρέχουσα επανάληψη. Ο βρόχος συνεχίζει με την επόμενη επανάληψη 8/12/2005 Σικαλιάς Γιώργος 69

Παράδειγμα continue σε βρόχο #include <stdio.h> main ( ) int i; for (i = 1; i < 10; i++) if (i == 5) continue; printf ( %d, i); printf ( \n ); OUTPUT: 1 2 3 4 6 7 8 9 Παράδειγμα continue.cpp 8/12/2005 Σικαλιάς Γιώργος 70

Εμφωλιασμένοι βρόχοι for for (i = 1; i < 5; i++) for (j = 1; j < 3; j++) if (j % 2 == 0) printf ( O ); else printf ( X ); printf ( \n ); Πόσε φορές εκετελείται το if ; Ποια είναι η έξοδος; Παράδειγμα nestedfor.cpp 8/12/2005 Σικαλιάς Γιώργος 71

Πίνακες Ένας πίνακας είναι ένα σύνολο δεδομένων που έχουν το ίδιο όνομα και τον ίδιο τύπο Οι πίνακες είναι στατικοί, δηλαδή έχουν το ίδιο μέγεθος κατά την εκτέλεση του προγράμματος 8/12/2005 Σικαλιάς Γιώργος 72

Δηλώσεις πινάκων int array [5] ; Η παραπάνω δήλωση δεσμεύει αρκετή μνήμη ώστε να χωρέσουν 5 ακέραιοι. Δεν βάζει αρχικές τιμές σε αυτές τις θέσεις μνήμης Αρχικοποίηση του πίνακα μπορεί να γίνει ως εξής: int array [5] = 5, 2, 6, 9, 3 ; H πρώτη θέση του πίνακα είναι η θέση 0 array 5 2 6 9 3 0 1 2 3 4 8/12/2005 Σικαλιάς Γιώργος 73

Δείκτες στον πίνακα Τα στοιχεία του πίνακα βρίσκονται με το σύστημα δεικτών Π.χ. το array[0] είναι ίσο με το 5 και το array[3] είναι ίσο με το 9. Ο ακέραιος στις αγκύλες λέγεται δείκτης (subscript). O Δείκτης μπορεί να είναι και μία έκφραση που αποτιμάται ως ακέραιος Π.χ. το array[1+i] είναι 6 αν i=1 Στο παράδειγμά μας array είναι το όνομα του πίνακα. 8/12/2005 Σικαλιάς Γιώργος 74

Τροποποίηση Στοιχείων Μπορούμε να αλλάξουμε συγκεκριμένα στοιχεία: array [4] = 20; Μπορούμε να αποθηκεύσουμε τιμές σε ένα πίνακα και με τον παραπάνω τρόπο, αντί με την αρχικοποίηση 8/12/2005 Σικαλιάς Γιώργος 75

Συμπληρώνοντας τον πίνακα www.infospoudes.gr Αν οι πίνακες είναι πολύ μεγάλοι, η αρχικοποίηση δεν είναι πρακτική. Μπορούμε να αρχικοποιήσουμε πίνακα με το βρόχο for. for ( i = 0; i < 100; i++) rolls [ i ] = 0 ; Βάζει σε κάθε στοιχείο του πίνακα την τιμή 0 8/12/2005 Σικαλιάς Γιώργος 76

Αλφαριθμητικά (Strings) Στην C++ αναπαριστούμε τα αλφαριθμητικά με πίνακες χαρακτήρων Π.χ. char name[10]; αλφαριθμητικό μήκους 10 Π.χ. char name2[]= George ; αρχικοποιημένο αλφαριθμητικό Για να πάρουμε ένα string από το πληκτρολόγιο χρησιμοποιούμε την scanf() Π.χ. scanf( %s,name); Παράδειγμα input.cpp Παράδειγμα fillarray.cpp 8/12/2005 Σικαλιάς Γιώργος 77

Αλφαριθμητικά (Strings) (2) Στα αλφαριθμητικά πρέπει να προσέξουμε ότι ο τελευταίος χαρακτήρας είναι ο χαρακτήρας τερματισμού Συνεπώς όταν δηλώσουμε ένα string μήκους 10 μπορούμε να βάλουμε σε αυτό 9 χαρακτήρες (+1 ο χαρακτήρας τερματισμού=10) Τον χαρακτήρα τερματισμού δεν χρειάζεται να τον βάλουμε εμείς 8/12/2005 Σικαλιάς Γιώργος 78

Δομές Structs Οι δομές αναπαριστούν σύνθετα δεδομένα που δεν μπορούν να αναπαρασταθούν από ένα ακέραιο η ένα χαρακτήρα Π.χ. αν θέλαμε να αναπαραστήσουμε ένα φάρμακο το οποίο έχει όνομα, απόθεμα και τιμή Θα γράφαμε τα εξής στην C++ 8/12/2005 Σικαλιάς Γιώργος 79

Δομές Structs(2) struct med //δομή φαρμάκου char name[10]; //όνομα φαρμάκου int stock; //απόθεμα float cost; //κόστος ; Ουσιαστικά δημιουργούμε ένα νέο τύπο δεδομένων Δήλωση όμοια με απλούς τύπους: med mymed; Προσπέλαση στοιχείων δομής: mymed.name; mymed.stock; mymed.cost; Παράδειγμα struct.cpp 8/12/2005 Σικαλιάς Γιώργος 80

Πίνακες απο Structs Όπως και με τους απλούς τύπους μπορούμε να φτιάξουμε πίνακες από structs Π.χ. med mymeds[10] δήλωση πίνακα 10 φαρμάκων Προσπέλαση στοιχείων: mymeds[0].name Παράδειγμα structarray.cpp 8/12/2005 Σικαλιάς Γιώργος 81

Τέλος Παρουσίασης int main ( ) printf ("Ευχαριστώ για την προσοχή σας...\n"); printf ("Καλή επιτυχία...\n"); return 0; 8/12/2005 Σικαλιάς Γιώργος 82