Κεφάλαιο. Εισαγωγή. Ενδεικτικές. σελίδες

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Κεφάλαιο. Εισαγωγή. Ενδεικτικές. σελίδες"

Transcript

1

2 Κεφάλαιο Εισαγωγή

3 Η γλώσσα C σε βάθος Εισαγωγή Οκτώβριος του Ως µεταπτυχιακός φοιτητής, γνώρισα µια δεκαοχτάχρονη αµερικανιδούλα που την έλεγαν BCPL. H σχέση µας κράτησε ένα χρόνο περίπου. Ευέλικτη αλλά δύστροπη. ύσκολο να την κατανοήσεις και δυσκολότερο να τη χειριστείς. Την επόµενη χρονιά µού γνώρισε τη µικρότερη αδελφή της, τη C. Από την πρώτη στιγµή µε εντυπωσίασε, είχε πιο δοµηµένη σκέψη, ήταν τροµερά ευέλικτη και πολύ πιο φιλική. Η γνωριµία αυτή δεν άργησε να εξελιχθεί σε ένα µεγάλο έρωτα, ο οποίος κρατάει ακόµη και σήµερα. Από τότε συνάντησα και άλλες πολλές, πολύ πιο νέες και εµφανίσιµες, µε πολλές δυνατότητες και προσόντα, έµεινα όµως πάντα πιστός στη µεσήλικα πια αγάπη µου, τη C. Ευτυχώς που είναι µόνο... µια γλώσσα προγραµµατισµού! Και όµως, η πολύχρονη αυτή σχέση είχε και έναν καρπό, την παραγωγή πλούσιου εκπαιδευτικού υλικού που χρησιµοποιήθηκε όλα αυτά τα χρόνια για τη διδασκαλία της γλώσσας C και το οποίο αποτέλεσε τη βάση για τη συγγραφή αυτού του βιβλίου. Το βιβλίο αυτό απευθύνεται τόσο στον αρχάριο όσο και στον έµπειρο προγραµµατιστή που θέλει να γνωρίσει τις αρχές και τη φιλοσοφία του δοµηµένου προγραµµατισµού, µέσα από µια ευέλικτη και χωρίς όρια γλώσσα όπως η C. Με ιδιαίτερο τρόπο προσεγγίζονται όλα τα χαρακτηριστικά της γλώσσας και δίνεται έµφαση στην αναλυτική και σε βάθος επεξήγηση των "στρυφνών" της σηµείων. Μεγάλο βάρος έχει δοθεί στη διδακτική σειρά αυτού του βιβλίου, ώστε η ανάγνωση και η κατανόηση ενός κεφαλαίου να προϋποθέτει µόνο τις γνώσεις που αποκτήθηκαν στα προηγούµενα κεφάλαια. Πώς να διαβάσετε αυτό το βιβλίο Αν είστε γνώστης µιας οποιασδήποτε άλλης γλώσσας προγραµµατισµού µπορείτε να παραλείψετε το Κεφάλαιο 1 και να προχωρήσετε κατευθείαν στο επό- µενο κεφάλαιο. Το Κεφάλαιο 2 είναι µια µικρή "περιοδεία" στη γλώσσα. Γίνεται µια πρώτη γνωριµία, ώστε να αποκτήσετε µια σφαιρική εικόνα από τη δοµή και τα χαρα- 20

4 Κεφάλαιο 1: Εισαγωγή ("στάνταρ") εγκατάστασή της "βιβλιοθήκες" µε κάθε είδους συναρτήσεις για είσοδο-έξοδο, χειρισµό χαρακτήρων, χειρισµό αρχείων, γραφικών κ.λπ. C Μια δοµηµένη γλώσσα Το διακριτικό χαρακτηριστικό µιας δοµηµένης γλώσσας προγραµµατισµού είναι η δυνατότητα για τµηµατικό χειρισµό (modularity) του προγράµµατος, µε τρόπο ώστε κάθε τµήµα να µπορεί να "κρύβει" τον κώδικα και τις πληροφορίες που περιέχει από το υπόλοιπο πρόγραµµα. Η C ενθαρρύνει τη χρήση ξεχωριστών συναρτήσεων (υποπρογραµµάτων) για κάθε συγκεκριµένη λειτουργία του προγράµµατος. Κάθε συνάρτηση (function) µπορεί να έχει τις δικές της τοπικές µεταβλητές (local variables), οι οποίες είναι "κρυµµένες" από το υπόλοιπο πρόγραµµα. C Μια γλώσσα για προγραµµατιστές Η C παρέχει στον πραγµατικό επαγγελµατία προγραµµατιστή αυτό που ακριβώς ζητάει: Λίγους περιορισµούς και µεγάλη ευελιξία υνατότητα για δοµηµένα προγράµµατα Λίγες αλλά ισχυρά δοµηµένες εντολές Η C έχει όµως και απαιτήσεις. Η έλλειψη περιορισµών και το γεγονός ότι υ- πάρχει µικρός βαθµός ελέγχου λαθών, αναγκάζουν τον προγραµµατιστή να είναι πολύ προσεκτικός και να ελέγχει, µέσα από τον κώδικα του προγράµµατος, πράγµατα που ελέγχονται αυτόµατα από άλλες γλώσσες προγραµµατισµού. Ένα χαρακτηριστικό παράδειγµα είναι ότι αν έχουµε ένα πίνακα 100 θέσεων µπορούµε κάλλιστα να προσπελάσουµε τη θέση 105!!! Τώρα το τι θα βρούµε εκεί µέσα και το τι παρενέργειες θα υπάρξουν, αφήστε το για αργότερα. C Μια µεταφραστική γλώσσα Όλες οι γλώσσες προγραµµατισµού (εκτός από τη γλώσσα µηχανής), και ανάλογα µε τη φιλοσοφία µε την οποία µεταφράζουν το πηγαίο πρόγραµµα σε γλώσσα µηχανής, παρουσιάζονται είτε σε ερµηνευτική (interpreter's), είτε σε µεταγλωττιζόµενη (compiler's) µορφή. 23

5 Η γλώσσα C σε βάθος Η BASIC π.χ. είναι µια γλώσσα που συχνά τη συναντούµε σε ερµηνευτική µορφή. Αντίθετα η C είναι πάντα σε µεταγλωττιζόµενη µορφή. Στο σχήµα που ακολουθεί βλέπετε µια απλοποιηµένη διαδικασία µεταγλωττισµού µέσω µεταγλωττιστή (compiler). Το αρχείο που περιέχει τον πηγαίο κώδικα του προγράµµατος (source code) µπορεί να δηµιουργηθεί µε οποιονδήποτε επεξεργαστή κειµένου ή µέσα από το ολοκληρωµένο περιβάλλον της γλώσσας (αν η έκδοση της γλώσσας διαθέτει τέτοιο περιβάλλον). Κατά τη διάρκεια της µεταγλώττισης (compile time), ο µεταγλωττιστής εντοπίζει τυχόν συντακτικά λάθη που υπάρχουν στον πηγαίο κώδικα. Εφόσον ο µεταγλωττιστής δεν εντοπίσει κανένα λάθος, θα δηµιουργήσει ένα αρχείο που περιέχει τον εκτελέσιµο κώδικα (executable code), δηλαδή πρόγραµµα σε γλώσσα µηχανής, άµεσα εκτελέσιµο από τον Η/Υ. Στην πραγµατικότητα, η διαδικασία της µεταγλώττισης είναι λίγο διαφορετική, ιδίως όταν γίνεται χρήση βιβλιοθηκών στην οποία θα αναφερθούµε αναλυτικά στο αντίστοιχο κεφάλαιο. Βασικές έννοιες του προγραµµατισµού Το τµήµα αυτό απευθύνεται στους αρχάριους στον προγραµµατισµό. Αναφέρει και εξηγεί βασικές έννοιες του προγραµµατισµού, απαραίτητες για τον αναγνώστη που έρχεται πρώτη φορά σε επαφή µε µια γλώσσα προγραµµατισµού. Κάθε πρόγραµµα, αναπτυγµένο σε οποιαδήποτε γλώσσα προγραµµατισµού, επεξεργάζεται δεδοµένα και δίνει αποτελέσµατα. Η επεξεργασία των δεδοµένων γίνεται πάντα µε έναν προκαθορισµένο τρόπο (αλγόριθµο). Τα συστατικά που συνθέτουν ένα απλό πρόγραµµα είναι οι µεταβλητές, οι σταθερές, και οι εντολές. Μεταβλητές Τα δεδοµένα, οι ενδιάµεσες πράξεις, αλλά και τα αποτελέσµατα ενός προγράµ- µατος αποθηκεύονται στην κεντρική µνήµη (RAM) του Η/Υ. Η διαχείριση της µνήµης είναι βασικό µέληµα µιας γλώσσας προγραµµατισµού. 24

6 Η γλώσσα C σε βάθος Παραδείγματα Π1.1 Ας υποθέσουμε ότι θέλουμε να παίξουμε ένα παιχνίδι στο οποίο κάποιος βάζει έναν τυχαίο αριθμό στο μυαλό του και εμείς προσπαθούμε να τον βρούμε. Λέμε συνέχεια αριθμούς στον παίκτη και αυτός μας α- παντά αν ο κρυφός αριθμός είναι μεγαλύτερος ή μικρότερος. Το παιχνίδι τελειώνει μόλις βρούμε τον αριθμό. Το λογικό διάγραμμα απεικονίζει τη διαδικασία του παιχνιδιού. Μια μικρή παραλλαγή του παιχνιδιού, στην ο- ποία μόλις βρεθεί ο αριθμός ο παίκτης μάς ρωτάει αν θέλουμε να ξαναπαίξουμε, φαίνεται στο διπλανό λογικό διάγραμμα. Στην περίπτωση που α- παντήσουμε ΝΑΙ, τότε ο παίκτης βάζει έναν άλλο αριθμό στο μυαλό του και το παιχνίδι ξαναρχίζει. Στην περίπτωση που απαντήσουμε αρνητικά το παιχνίδι σταματάει. 32

7 Κεφάλαιο 1: Εισαγωγή Π1.2 Η διαδικασία που απεικονίζει το διπλανό λογικό διάγραµµα, ζητάει συνέχεια αριθµούς και εµφανίζει στο τέλος το συνολικό τους άθροισµα. Η διαδικασία σταµατάει όταν δοθεί ο αριθµός 0. Σκεφτείτε τις τροποποιήσεις που θα πρέπει να γίνουν ώστε η διαδικασία να σταµατάει όταν δοθούν 100 αριθµοί. Ανασκόπηση Κεφαλαίου 1 Η C είναι µια µεταγλωττιζόµενη γλώσσα τα χαρακτηριστικά της οποίας ευνοούν το δοµηµένο και τµηµατικό προγραµµατισµό. Η C είναι µια "λιτή" γλώσσα, η οποία για τις περισσότερες λειτουργίες της βασίζεται στις συναρτήσεις βιβλιοθήκης που τη συνοδεύουν. Τα διαφορετικά είδη δεδοµένων που µπορεί να χειριστεί µια γλώσσα λέγονται τύποι δεδοµένων. Οι βασικοί τύποι δεδοµένων που υποστηρίζει η C είναι τρείς: int, char και float. Μια µεταβλητή είναι το όνοµα µιας θέσης µνήµης, της οποίας η τιµή µπορεί να µεταβάλλεται. Το λογικό διάγραµµα είναι ένας εποπτικός τρόπος παρουσίασης µιας διαδικασίας ή ενός προγράµµατος και συµβάλλει στην κατανόησή του. Το λογικό διάγραµµα χρησιµοποιεί συγκεκριµένα, αλλά διαφορετικά, γεωµετρικά σχήµατα για να απεικονίσει τις διαδικασίες ανάλογα µε το είδος τους. Το λογικό διάγραµµα είναι ανεξάρτητο από οποιαδήποτε γλώσσα προγραµµατισµού. 33

8 Κεφάλαιο Μια πρώτη µατιά στη C

9 Η γλώσσα C σε βάθος Μια πρώτη µατιά στη C Στο κεφάλαιο αυτό ξεκινά µια µικρή "περιοδεία" στη γλώσσα C. Γίνεται µια πρώτη γνωριµία, ώστε να αποκτήσει ο αναγνώστης µια σφαιρική εικόνα της δοµής και των χαρακτηριστικών της γλώσσας. Τα περισσότερα από όσα αναφέρονται στο παρόν κεφάλαιο θα εξεταστούν ξανά και πιο αναλυτικά στα επόµενα κεφάλαια. Το πρώτο σας πρόγραµµα στη C Έφτασε η ώρα να γράψετε το πρώτο σας πρόγραµµα στη C, το οποίο δεν θα µπορούσε να είναι άλλο από το κλασικό "Hello world". #include <stdio.h> main() printf("hello world"); Το πρόγραµµα αποτελείται µόνο από µία συνάρτηση, τη main() και εµφανίζει στην οθόνη τη φράση Hello world. Παρακάτω επεξηγούνται µία-µία οι προτάσεις του προγράµµατος. #include <stdio.h> Η πρόταση αυτή αναγκάζει το µεταγλωττιστή της C να συµπεριλάβει το αρχείο stdio.h κατά τη διαδικασία της µεταγλώττισης. Το αρχείο αυτό περιέχει τις δηλώσεις των συναρτήσεων εισόδου/εξόδου της C. Για να µπορέσουµε να χρησιµοποιήσουµε οποιαδήποτε από αυτές τις λειτουργίες εισόδου/εξόδου στο πρόγραµµά µας (π.χ. τη συνάρτηση printf () που ακολουθεί), θα πρέπει οπωσδήποτε 3 να συµπεριληφθεί (#include) το συγκεκρι- µένο αρχείο. main() Η συνάρτηση main() είναι υποχρεωτική σε κάθε πρόγραµµα της C. Στην περίπτωση που το πρόγραµµά µας έχει µόνο µία συνάρτηση, αυτή πρέπει 3 Αρκετά ολοκληρωµένα περιβάλλοντα ανάπτυξης (IDE) συµπεριλαµβάνουν κατά τη διαδικασία της µεταγλώττισης συνηθισµένα αρχεία κεφαλίδας ακόµα και αν δεν έχουν ορισθεί ρητά στον κώδικα του προγράµµατος. Αυτό έχει σαν αποτέλεσµα να επιτρέπουν τη χρήση µερικών συναρτήσεων ακόµη και αν ο προγραµµατιστής δεν έχει συµπεριλάβει το αρχείο κεφαλίδας στο οποίο δηλώνονται. 38

10 Κεφάλαιο 2: Μια πρώτη µατιά στη C να είναι η main(). Αν το πρόγραµµά µας περιέχει περισσότερες από µία συναρτήσεις, η main() είναι η πρώτη που εκτελείται. Η αριστερή αγκύλη σηµατοδοτεί την αρχή των προτάσεων της συνάρτησης main(). printf("hello world"); Η συνάρτηση printf() χρησιµοποιείται για την έξοδο πληροφοριών στην οθόνη. Στη συγκεκριµένη περίπτωση θα εµφανίσει το κείµενο "Hello world". Η δεξιά αγκύλη σηµατοδοτεί το τέλος των προτάσεων της συνάρτησης main(). Στη συνέχεια του βιβλίου, σε πολλά παραδείγµατα, χάριν συντοµίας η πρόταση #include <stdio.h> µπορεί να παραλείπεται και να εµφανίζεται µόνο η συνάρτηση main(). Αν θέλουµε να χρησιµοποιήσουµε τον κώδικα στην πράξη, η πρόταση αυτή θα πρέπει να προστεθεί πριν από τη main(). Προσοχή, τα κενά διαστήµατα και οι αλλαγές γραµµής δεν λαµβάνονται υπόψη από τον µεταγλωττιστή της C. Εποµένως το παραπάνω πρόγραµµα θα µπορούσε, χωρίς κανένα πρόβληµα, να γραφεί ως εξής: #include <stdio.h> main() printf("hello world"); Η δοµή ενός προγράµµατος στη C Ένα απλό πρόγραµµα στη C αποτελείται συνήθως από 3 βασικά τµήµατα: Μία συνάρτηση µε όνοµα main(): Αυτή η συνάρτηση είναι αυτή που καλείται και εκτελείται πρώτη. Κάθε πρόγραµµα πρέπει να έχει µία και µόνο µία συνάρτηση main(). Η συνάρτηση main(), όπως και κάθε συνάρτηση της C, έχει την παρακάτω µορφή: main() 39

11 Κεφάλαιο 2: Μια πρώτη µατιά στη C Η παράσταση a = rand() έχει ως αποτέλεσµα την καταχώριση ενός τυχαίου αριθµού στη µεταβλητή a. Η πρόταση rand(); καλεί τη συνάρτηση rand() που επιστρέφει έναν τυχαίο αριθµό, ο οποίος όµως χάνεται. Ουσιαστικά αυτή η πρόταση είναι άχρηστη. Η τελευταία πρόταση αποτελείται από µια παράσταση, όχι και τόσο παράλογη αν αναλογιστούµε τη διαφορετική φιλοσοφία της C: Η συνάρτηση printf("tέλος") επιστρέφει την τιµή 5 (το πλήθος των χαρακτήρων που εµφάνισε). Το 10 (από 5+5) καταχωρίζεται στην a και η όλη παράσταση επιστρέφει τιµή 10. Tο 14 (από 10+4) καταχωρίζεται στη µεταβλητή b. Η όλη παράσταση επιστρέφει τιµή 14, η οποία δεν χρησι- µοποιείται. Η σειρά εκτέλεσης των πράξεων θα γίνει ξεκάθαρη όταν θα αναφερθούµε στην προτεραιότητα των τελεστών στο κεφάλαιο 4 (σελίδα 91). Ανασκόπηση Κεφαλαίου 2 Κάθε πρόγραµµα της C περιέχει υποχρεωτικά µία συνάρτηση main() η οποία είναι εκείνη που εκτελείται πρώτη. Κάθε πρόγραµµα της C µπορεί να περιέχει και άλλες συναρτήσεις, εκτός από τη main(), οι οποίες για να εκτελεστούν πρέπει να κληθούν. Κάθε µεταβλητή που χρησιµοποιείται πρέπει να δηλώνεται. Οι δηλωτικές προτάσεις των µεταβλητών τοποθετούνται στην αρχή µιας συνάρτησης και πριν από τις εκτελέσιµες προτάσεις. Οι βασικοί τύποι µεταβλητών στη C είναι ο τύπος char, ο τύπος int, και ο τύπος float. 57

12 Η γλώσσα C σε βάθος Οι αριθμητικές παραστάσεις είναι πράξεις μεταξύ αριθμητικών δεδομένων και έχουν αποτέλεσμα έναν αριθμό. Οι λογικές παραστάσεις χρησιμοποιούν συγκριτικούς και λογικούς τελεστές και έχουν αποτέλεσμα αλήθεια (τιμή 1) ή ψέμα (τιμή 0). Ο τελεστής = καταχωρίζει το αποτέλεσμα της παράστασης στα δεξιά του στη μεταβλητή που βρίσκεται αριστερά του, π.χ. a=b+3 Μια σύνθετη πρόταση αποτελείται από απλές προτάσεις μέσα σε αριστερή και δεξιά αγκύλη. Ασκήσεις Κεφαλαίου Τι θα περιέχουν οι μεταβλητές a, b, και c μετά το τέλος του παρακάτω κώδικα: main() int a,b,c=3; a=b=2; a=c+b; 2.2 Τι θα περιέχουν οι μεταβλητές a, b, και c μετά το τέλος του παρακάτω κώδικα: #define MM 23 main() const int c=3; int a,b; a=4+(b=2); b=c+b+mm; 58

13 Κεφάλαιο Προετοιµασία για αργότερα

14 Η γλώσσα C σε βάθος Προετοιµασία για αργότερα Η C και η µνήµη Όπως αναφέρθηκε και προηγουµένως, η C χειρίζεται τρεις βασικούς τύπους µεταβλητών: int, float, και char. Φανταζόµαστε την κάθε µεταβλητή σαν ένα κουτί µε ένα όνοµα και κάποιο περιεχόµενο. Οι µεταβλητές καταλαµβάνουν χώρο στη µνήµη RAM του Η/Υ, αλλά γνωρίζουµε ότι κάθε θέση µνήµης RAM έχει µέγεθος 1 byte. Κάθε λοιπόν µεταβλητή του προγράµµατος καταλαµβάνει ακριβώς τον ίδιο χώρο στη µνήµη του Η/Υ; ΟΧΙ βέβαια. Κάθε µεταβλητή καταλαµβάνει έναν αριθµό θέσεων µνήµης (byte), ο οποίος εξαρτάται από τον τύπο της µεταβλητής και από τον τύπο του συστήµατος Η/Υ στο ο- ποίο δουλεύουµε. Στα συστήµατα προσωπικών Η/Υ που βασίζονται στους επεξεργαστές 32bit της INTEL, η µεταβλητή τύπου int καταλαµβάνει τέσσερα bytes, η float επίσης τέσσερα, και η char ένα byte. Αργότερα θα αναφερθούµε και σε άλλους τύπους µεταβλητών (που στηρίζονται πάντως στους τρεις βασικούς) µε διαφορετικά µεγέθη σε byte. Ας θεωρήσουµε τέσσερις µεταβλητές, οι οποίες δηλώνονται µε τις παρακάτω προτάσεις: char a,gramma; float pososto; int b; Στο διπλανό σχήµα φαίνεται εποπτικά η µνήµη ενός Η/Υ σαν ένα σύνολο από 62

15 Κεφάλαιο 3: Προετοιµασία για αργότερα κουτιά (θέσεις µνήµης) το ένα πάνω από το άλλο. Το κάθε κουτί έχει µέγεθος ενός byte και διαθέτει έναν αύξοντα αριθµό (ο αριθµός στα δεξιά) ο οποίος α- ποτελεί τη "διεύθυνση" του κουτιού µέσα στη µνήµη. Κάθε µεταβλητή που δηλώνεται, δεσµεύει κάποιες θέσεις µνήµης ανάλογα µε τον τύπο της. Έτσι η a δεσµεύει µία θέση (την 1), όπως δεσµεύουν και η gramma µία θέση (την 8), η pososto τέσσερις (τις 3,4,5, και 6), και η b επίσης τέσσερις (τις , , , και ). Πέρα λοιπόν από το όνοµα και το περιεχόµενο µιας µεταβλητής, έννοιες που είναι ήδη γνωστές, συναντούµε εδώ δύο νέες έννοιες: της διεύθυνσης και του µεγέθους µιας µεταβλητής. ιεύθυνση µιας µεταβλητής είναι η διεύθυνση του πρώτου byte των θέσεων (ή της θέσης) µνήµης που δεσµεύει η µεταβλητή. Έτσι, οι διευθύνσεις των παραπάνω µεταβλητών είναι: a b pososto gramma Μέγεθος µιας µεταβλητής είναι ο αριθµός των bytes που δεσµεύει αυτή η µεταβλητή και καθορίζεται από τον τύπο της. Η C διαθέτει τελεστές, οι οποίοι επιστρέφουν τη διεύθυνση και το µέγεθος µιας µεταβλητής. Ο τελεστής & Ο τελεστής & επιστρέφει έναν ακέραιο αριθµό, ο οποίος προσδιορίζει τη διεύθυνση µιας µεταβλητής. Έτσι, σύµφωνα µε το προηγούµενο σχήµα, η παράσταση &a επιστρέφει τιµή 1 και η παράσταση &gramma τιµή 8. Η διεύθυνση µιας θέσης µνήµης, στα συστήµατα προσωπικών Η/Υ που βασίζονται στους επεξεργαστές 32bit της INTEL, είναι πάντα ένας αριθµός µεγέθους 4 bytes ο οποίος συνήθως αναπαρίσταται σε δεκαεξαδική µορφή. 63

16 Κεφάλαιο 3: Προετοιµασία για αργότερα Η συνάρτηση scanf() Η C επίσης, δεν διαθέτει εντολές εισόδου για την ανάγνωση δεδοµένων από το πληκτρολόγιο. Η διαδικασία αυτή υλοποιείται µε τη χρήση συναρτήσεων βιβλιοθήκης. Η πιο πλήρης συνάρτηση γι αυτή τη λειτουργία είναι η συνάρτηση scanf() µε την οποία διαβάζει δεδοµένα από το πληκτρολόγιο και τα καταχωρίζει σε µεταβλητές του προγράµµατος. Στη συνάρτηση καθορίζεται ο τρόπος και ο τύπος των δεδοµένων που θα αναγνωστούν, καθώς και οι διευθύνσεις των µεταβλητών στις οποίες θα καταχωριστούν. Η σύνταξη της scanf() είναι σχεδόν ίδια µε της printf(): scanf("αλφαριθητικό µορφοποίησης", διε1, διε2, διε3,..., διεn); όπου, το αλφαριθητικό µορφοποίησης (format string) καθορίζει τον τρόπο µε τον οποίο πρέπει να δοθούν τα δεδοµένα καθώς και τον τύπο τους. Το αλφαριθητικό µορφοποίησης περιέχει τριών ειδών πληροφορίες: Ειδικά σύµβολα για την ανάγνωση των τιµών που θα ανατεθούν στις µεταβλητές, µε τις διευθύνσεις που ακολουθούν (διε1~διεn). %c για έναν απλό χαρακτήρα %d για ακέραιο αριθµό %f για δεκαδικό αριθµό και άλλα σύµβολα που θα αναφερθούν αργότερα. Χαρακτήρες διαστήµατος. Αναγκάζουν τη scanf() να διαβάσει και να αγνοήσει ένα ή περισσότερα κενά διαστήµατα ή χαρακτήρες αλλαγής γραµµής, στη σειρά των δεδοµένων που πληκτρολογούνται. Για παράδειγ- µα, το αλφαριθµητικό µορφοποίησης: "%d %d" διαβάζει δύο ακέραιους, αγνοώντας τα µεταξύ τους κενά και τους χαρακτήρες αλλαγής γραµµής (αν υπάρχουν). Άλλους χαρακτήρες. Αναγκάζουν τη scanf() να διαβάσει και να αγνοήσει ένα συγκεκριµένο χαρακτήρα. Αν ο χαρακτήρας δεν βρεθεί, η scanf() τερ- µατίζει. Για παράδειγµα, το αλφαριθµητικό µορφοποίησης: "%d,%d" 67

17 Η γλώσσα C σε βάθος Παραδείγµατα Π3.1 Το παρακάτω πρόγραµµα ζητάει τρεις βαθµούς ενός µαθητή και υπολογίζει το µέσο όρο τους. Αν ο µέσος όρος είναι µεγαλύτερος ή ίσος µε 10, εµφανίζει "Πέρασες µε βαθµό ##", διαφορετικά εµφανίζει "Κόπηκες" (στη θέση του ## εµφανίζεται ο µέσος όρος). #include <stdio.h> 3_p3_1.c main() int b1,b2,b3; Η scanf() διαβάζει από το πληκτρολόγιο τρεις ακεραίους αριθ- float mo; printf(" ώσε τρεις βαθµούς:"); µούς τους οποίους καταχωρίζει στις µεταβλητές b1,b2 και b3. scanf("%d %d %d",&b1,&b2,&b3); mo=(b1+b2+b3)/3.0; Υπολογισµός του µέσου όρου. if(mo>=10) printf("πέρασες µε βαθµό %f\n",mo); else Έλεγχος του µέσου όρου και printf("κόπηκες\n"); εµφάνιση του κατάλληλου µηνύ- µατος. Π3.2 Το παρακάτω πρόγραµµα έχει λάθη: main() int a,b,c; float d; scanf("%d %d",a,b); int k; scanf("%c",&c); if(c==1) printf("nai\n"); else printf("oxi\n"); Η scanf() χρειάζεται τις διευθύνσεις των µεταβλητών. Θα έπρεπε να ήταν &a,&b. εν µπορεί να υπάρχει δηλωτική πρόταση µετά από εκτελέσιµες. Εφόσον ζητείται ακέραιος αριθ- µός, το αλφαριθµητικό µορφοποίησης θα πρέπει να είναι %d. 72

18 Κεφάλαιο 3: Προετοιµασία για αργότερα Ασκήσεις Κεφαλαίου Να γραφεί ένα πρόγραµµα το οποίο να ζητάει τρεις δεκαδικούς αριθµούς, να υπολογίζει, και να εµφανίζει το µέσο όρο τους. 3.2 Τι αποτέλεσµα θα έχει το επόµενο πρόγραµµα; main() int a=4,b=5; char ch; ch='a'; printf("%d %d %c",a,b,ch); printf("%d %d %d\n",a,b,ch); printf("%d\n%d \n%c\n",a,b,ch); printf("τέλος\n"); 3.3 Να γραφεί πρόγραµµα το οποίο να ζητάει 3 αριθµούς και να υπολογίζει το άθροισµα, το γινόµενο, και το µέσο όρο τους. Το ώσε τον πρώτο αριθµό: 6 πρόγραµµα να µας βγάζει ώσε τον δεύτερο αριθµό: 2 ώσε τον τρίτο αριθµό: 10 µηνύµατα για το τι πρέπει Το άθροισµα των 6,2,10 είναι 18 να δώσουµε και να βγάζει Το γινόµενο των 6,2,10 είναι 120 τα αποτελέσµατα όπως Ο µέσος όρος των 6,2,10 είναι 6 στο διπλανό παράδειγµα. 3.4 Τι αποτέλεσµα θα έχει το παρακάτω πρόγραµµα; main() int a,b; float f; char ch; printf("%d %d %d\n",sizeof a,sizeof f,sizeof ch); 75

19 Κεφάλαιο Ο τύπος δεδοµένων int

20 Η γλώσσα C σε βάθος Ο τύπος δεδοµένων int Το κεφάλαιο αυτό εισάγει και αναλύει τον τρόπο χρήσης των ακεραίων (integer) στη γλώσσα C. Στο κεφάλαιο αυτό εξετάζεται η εσωτερική απεικόνιση των ακέραιων σταθερών και µεταβλητών, καθώς και οι τελεστές που εφαρ- µόζονται σε ακέραια µεγέθη. Πολλοί από αυτούς τους τελεστές εφαρµόζονται και σε άλλους τύπους δεδοµένων. Σταθερές τύπου int Οι ακέραιες σταθερές δεν είναι τίποτε άλλο από απλοί ακέραιοι αριθµοί. Μια ακέραια σταθερά αποθηκεύεται στη µνήµη αφού µετατραπεί σε δυαδικό αριθµό. Μια σταθερά τύπου int µετατρέπεται σε ένα δυαδικό αριθµό µήκους 4 bytes. Με 4 bytes µπορεί να αναπαρασταθεί αριθµός από µέχρι Το bit υπ' αριθµόν 31 (τα 32 bits αριθµούνται από το 0 έως το 31) χρησιµοποιείται για το πρόσηµο και τα υπόλοιπα 31 για την αναπαράσταση του αριθµού. Μεταβλητές τύπου int Η C διαθέτει, πέρα από τον τύπο int που έχουµε ήδη αναφέρει, άλλους δυο τύπους ακέραιων µεταβλητών: long int και short int. Οι µεταβλητές τύπου int δηλώνονται ως εξής: int όνοµα_µεταβλητής1, όνοµα_µεταβλητής2,...; Οι µεταβλητές τύπου long int δηλώνονται ως εξής: long int όνοµα_µεταβλητής1, όνοµα_µεταβλητής2,...; ή 80

21 Κεφάλαιο 4: Ο τύπος δεδοµένων int long όνοµα_µεταβλητής1, όνοµα_µεταβλητής2,...; Στην πρόταση δήλωσης η λέξη int µπορεί να παραλειφθεί, αλλά για λόγους σαφήνειας αυτό δεν συνιστάται. Οι µεταβλητές τύπου short int δηλώνονται ως εξής: short int όνοµα_µεταβλητής1, όνοµα_µεταβλητής2,...; ή short όνοµα_µεταβλητής1, όνοµα_µεταβλητής2,...; Οι µεταβλητές τύπου int και long int δεσµεύουν 4 bytes 5 (32 bits) και µπορούν να αποθηκεύσουν έναν ακέραιο αριθµό από µέχρι Οι µεταβλητές τύπου short int δεσµεύουν 2 bytes (16 bits) και µπορούν να αποθηκεύσουν έναν ακέραιο αριθµό από µέχρι Ακέραιοι χωρίς πρόσηµο (unsigned) Μια µεταβλητή τύπου int (int, long int ή short int) µπορεί να ορισθεί ότι δεν θα περιέχει πρόσηµο, χρησιµοποιώντας το προσδιοριστικό unsigned πριν από το όνοµα του τύπου, όπως παρακάτω: unsigned int όνοµα_µεταβλητής1, όνοµα_µεταβλητής2,...; ή unsigned long int όνοµα_µεταβλητής1, όνοµα_µεταβλητής2,...; ή unsigned short int όνοµα_µεταβλητής1, όνοµα_µεταβλητής2,...; ή Οι µεταβλητές τύπου unsigned δεσµεύουν τα ίδια bytes µε τις αντίστοιχες προσηµασµένες µεταβλητές. Όµως, σε µια µεταβλητή τέτοιου τύπου το πρώτο bit του αριθµού δεν χρησιµοποιείται για το πρόσηµο, αλλά συµµετέχει στην απεικόνιση του αριθµού. Εποµένως, σε µεταβλητές τύπου unsigned µπορούν να αποθηκευτούν µόνο θετικοί αριθµοί, αλλά µε διπλάσια απόλυτη τιµή (από τους αντίστοιχους προσηµασµένους). Αρχική τιµή µεταβλητής Όταν δηλώνουµε µια µεταβλητή, µπορούµε ταυτόχρονα να της δώσουµε αρχική τιµή. Για παράδειγµα, στην παρακάτω πρόταση: 5 Σε παλαιότερα συστήµατα 16bit, οι µεταβλητές τύπου int καταλαµβάνουν 2 bytes, ενώ οι long int 4. 81

22 Η γλώσσα C σε βάθος int a=4,b=8; γίνεται δήλωση δύο µεταβλητών a και b, στις οποίες ανατίθενται ταυτόχρονα οι τιµές 4 και 8 αντίστοιχα. Αριθµητικοί τελεστές Εκτός από τους "κλασικούς" αριθµητικούς τελεστές, η C διαθέτει και µερικούς τελεστές οι οποίοι δεν συναντώνται σε άλλες γλώσσες προγραµµατισµού. Ο διπλανός πίνακας αναφέρει τους διαθέσι- µους αριθµητικούς τελεστές στη C. Τελεστής Λειτουργία + Πρόσθεση εν θα ασχοληθούµε µε τους κλασικούς - Αφαίρεση αριθµητικούς τελεστές αλλά µόνο µε τούς * Πολλαπλασιασµός νέους τελεστές ++ και -- που εισάγει η C. Οι τελεστές ++ και -- εφαρµόζονται µόνο σε µεταβλητές και µπορεί να προηγούνται ή να ακολουθούν το όνοµα µιας µεταβλητής. / % ιαίρεση Υπόλοιπο ακέραιας διαίρεσης Αύξηση κατά 1 Μείωση κατά 1 π.χ. ++a; a++; --a; a--; Ο τελεστής ++ αυξάνει το περιεχόµενο της µεταβλητής κατά 1, ενώ ο τελεστής -- µειώνει το περιεχόµενο της µεταβλητής κατά 1. Η λειτουργία αυτή γίνεται ανεξάρτητα από τη θέση του τελεστή (πριν ή µετά από τη µεταβλητή). main() int a,b; b=a=5; ++a; --b; printf("a=%d b=%d\n",a,b); Με την παράσταση ++a η a αυξάνεται κατά 1 (6) και µε την παράσταση --b η b µειώνεται κατά 1 (4). Έτσι η printf() θα εµφανίσει στην οθόνη: a=6 b=4 Όπως κάθε παράσταση, έτσι και οι παραστάσεις µε τους τελεστές ++ και -- ε- πιστρέφουν µία τιµή. Η τιµή αυτή εξαρτάται από τη θέση του τελεστή (πριν ή µετά από τη µεταβλητή). 82

23 Κεφάλαιο Ο τύπος δεδοµένων char

24 Η γλώσσα C σε βάθος Ο τύπος δεδοµένων char Το κεφάλαιο αυτό εισάγει και αναλύει τον τρόπο χρήσης των χαρακτήρων (characters) στη γλώσσα C. Εξετάζουµε τον τρόπο µε τον οποίο η C χειρίζεται τις σταθερές και τις µεταβλητές τύπου char. Ακόµη, αναφερόµαστε και σε συναρτήσεις που χρησιµοποιούνται για το χειρισµό των χαρακτήρων. Σταθερές τύπου char Μια σταθερά τύπου char δεν είναι τίποτε άλλο από ένας χαρακτήρας που περικλείεται σε µονά εισαγωγικά. Για παράδειγµα, οι παρακάτω εκφράσεις: 'ρ' '1' '*' είναι παραδείγµατα σταθερών τύπου char. Οι χαρακτήρες είναι αριθµοί!!! Η εσωτερική απεικόνιση µιας σταθεράς (αλλά και µιας µεταβλητής) τύπου char είναι ένας αριθµός. Ο αριθµός αυτός είναι ο κωδικός ASCII 7 του χαρακτήρα. Για παράδειγµα, η συνάρτηση: printf("%c %d\n",'a','a'); θα εµφανίσει το Α και το 65 (ο κωδικός ASCII του Α). Η C χειρίζεται τους χαρακτήρες σαν αριθµούς. Αυτό σηµαίνει ότι µπορούν να µετέχουν σε αριθµητικές παραστάσεις. Εποµένως, οι ακόλουθες παραστάσεις δεν είναι καθόλου παράξενες: 5 + '*' επιστρέφει την τιµή 47 ( που είναι ο κωδικός ASCII του '*'). printf("%d %c\n",'a'+1,'a'+1); εµφανίζει στην οθόνη το 66 και το Β. 7 Κάθε χαρακτήρας µετατρέπεται σε έναν αριθµό σύµφωνα µε ένα καθορισµένο πρότυπο µετατροπής. Το πρότυπο αυτό ονοµάζεται ASCII και ο οµώνυµος πίνακας µετατροπής υπάρχει στο τέλος του παρόντος κεφαλαίου. 100

25 Κεφάλαιο 5: Ο τύπος δεδοµένων char Το 66 εµφανίζεται διότι είναι το αποτέλεσµα της παράστασης 'Α'+1 και η παράµετρος %d "λέει" στην printf() να το εµφανίσει σαν ακέραιο αριθµό. Το Β εµφανίζεται διότι η δεύτερη παράµετρος %c "λέει" στην printf() να εµφανίσει το αποτέλεσµα της παράστασης 'Α'+1 (το 66) σαν χαρακτήρα. Έτσι εµφανίζεται το Β, το οποίο έχει κωδικό ASCII 66. Χαρακτήρες διαφυγής Οι χαρακτήρες διαφυγής (escape characters) αναφέρονται και ως σειρές διαφυγής (escape sequences). Οι χαρακτήρες αυτοί δεν εµφανίζουν τίποτα στην οθόνη, αλλά ελέγχουν ορισµένες από τις λειτουργίες της. Οι χαρακτήρες διαφυγής της C είναι: \n new line (νέα γραµµή) \b backspace (µία θέση πίσω) \f form feed (νέα σελίδα) \r carriage return (αρχή γραµµής) \t tab (επόµενη στηλοθετηµένη στήλη)) \\ backslash (o χαρακτήρας "ανάποδη κάθετος", \) \' τα απλά εισαγωγικά (') \" τα διπλά εισαγωγικά (") \0 null character (byte ) Σύµφωνα µε τα παραπάνω, η επόµενη Οι κλήση της συνάρτησης printf() έχει το "χαρακτήρες διαφυγής" αποτέλεσµα που εµφανίζεται στο διπλανό πλαίσιο: είναι 9 printf("οι\n\"χαρακτήρες διαφυγής\"\nείναι 9\n"); Παρατηρούµε ότι επειδή τα διπλά εισαγωγικά (") έχουν ειδικό νόηµα για την printf(), δεν µπορούν να µπουν στο αλφαριθµητικό µορφοποίησης σαν κανονικός χαρακτήρας. Για το λόγο αυτό πρέπει να χρησιµοποιηθεί ο χαρακτήρας διαφυγής \". 101

26 Η γλώσσα C σε βάθος Ο χαρακτήρας του διαστήµατος, ο χαρακτήρες tab, και ο χαρακτήρας αλλαγής γραµµής λέγονται επίσης και χαρακτήρες λευκού διαστήµατος (whitespace characters). Όταν εποµένως στη συνέχεια του βιβλίου αναφερόµαστε σε χαρακτήρες λευκού διαστήµατος, θα εννοούµε οποιονδήποτε από τους τρεις αυτούς χαρακτήρες. Μεταβλητές τύπου char Οι µεταβλητές τύπου char δηλώνονται ως εξής: char όνοµα_µεταβλητής1, όνοµα_µεταβλητής2,...; Οι µεταβλητές τύπου char δεσµεύουν 1 byte (8 bits). Στη µεταβλητή αποθηκεύεται ο κωδικός ASCII του χαρακτήρα, δηλαδή ένας ακέραιος αριθµός. Η C χειρίζεται τις µεταβλητές χαρακτήρων ως αριθµούς, οπότε µπορούν να µετέχουν σε αριθµητικές παραστάσεις. Για παράδειγµα, µετά από τις παρακάτω προτάσεις: int a,b; char ch; ch='a'; //Στη µεταβλητή ch καταχωρίζεται ο ASCII κωδικός του 'Α' που είναι ο αριθµός 65 a=ch+2; η µεταβλητή a θα περιέχει στο τέλος τον αριθµό 67 (65+2). Τρεις συναρτήσεις χειρισµού χαρακτήρων Για την είσοδο (από το πληκτρολόγιο) και την έξοδο (στην οθόνη) ενός χαρακτήρα χρησιµοποιούνται οι συναρτήσεις getch(), getchar() και putch(). getch() Η συνάρτηση getch() περιµένει να πληκτρολογηθεί ένας χαρακτήρας και επιστρέφει ως τιµή τον κωδικό του χαρακτήρα. εν τον εµφανίζει στην οθόνη και δεν περιµένει πάτηµα του πλήκτρου <Enter>. Η συνάρτηση δεν χρειάζεται κα- 102

27 Κεφάλαιο Ο τύπος δεδοµένων float

28 Η γλώσσα C σε βάθος Ο τύπος δεδοµένων float Το κεφάλαιο αυτό εισάγει και αναλύει τον τρόπο χρήσης των αριθµών κινητής υποδιαστολής (floating point) στη γλώσσα C. Εξετάζεται ο τρόπος µε τον ο- ποίο η C χειρίζεται τις σταθερές και τις µεταβλητές τύπου float. Επίσης γίνεται αναφορά σε συναρτήσεις που χρησιµοποιούνται για το χειρισµό δεδοµένων κινητής υποδιαστολής (δεκαδικών αριθµών). Σταθερές τύπου float Μια σταθερά τύπου float δεν είναι τίποτε άλλο από ένας δεκαδικός αριθµός. Για να θεωρηθεί τύπου float, ένας αριθµός πρέπει απαραίτητα να περιέχει το χαρακτήρα της υποδιαστολής (.), για παράδειγµα οι παρακάτω αριθµοί: είναι παραδείγµατα σταθερών τύπου float. Μεταβλητές τύπου float Υπάρχουν δύο τύποι µεταβλητών κινητής υποδιαστολής (floating point), ο τύπος float και ο τύπος double. Οι µεταβλητές τύπου float καταλαµβάνουν 4 bytes, ενώ οι τύπου double 8. Οι µεταβλητές τύπου double έχουν µεγαλύτερη ακρίβεια στα δεκαδικά ψηφία. Οι µεταβλητές τύπου float δηλώνονται όπως παρακάτω: float όνοµα_µεταβλητής1, όνοµα_µεταβλητής2,...; double όνοµα_µεταβλητής1, όνοµα_µεταβλητής2,...; long float όνοµα_µεταβλητής1, όνοµα_µεταβλητής2,...; όπου το long float είναι ισοδύναµο µε το double. 116

29 Κεφάλαιο 6: Ο τύπος δεδοµένων float Χρήση δεδοµένων τύπου κινητής υποδιαστολής Οι διαθέσιµοι τελεστές για πράξεις µεταξύ δεδοµένων τύπου κινητής υποδιαστολής (floating point) είναι πολύ περιορισµένοι σε σχέση µε τούς τελεστές που ε- + Πρόσθεση Τελεστής Λειτουργία φαρµόζονται σε δεδοµένα τύπου int και char. Οι τελεστές που εφαρµόζονται σε δεδοµένα τύπου float (ή double) αναφέρονται στο διπλανό πίνακα. - * / Αφαίρεση Πολλαπλασιασµός ιαίρεση Παρατηρούµε ότι οι αριθµητικοί τελεστές %, ++ και -- δεν εφαρµόζονται σε δεδοµένα τύπου float. Μερικοί µεταγλωττιστές της C (όπως ο gcc που περιέχεται στο περιβάλλον του DEV C++) επιτρέπουν και σε µεταβλητές τύπου float τη χρήση των τελεστών ++ και --. Η χρήση της printf() µε δεδοµένα κινητής υποδιαστολής Ας θεωρήσουµε το επόµενο πρόγραµµα του οποίου το αποτέλεσµα φαίνεται στο διπλανό πλαίσιο: main() float a,b; a=21.234; b=5467.1; printf("%f\n",a); printf("%f\n",b); Παρατηρούµε ότι αν και τα αποτελέσµατα εµφανίζονται σωστά, µπορεί να προτιµούσαµε τις χιλιάδες κάτω από τις χιλιάδες, τις εκατοντάδες κάτω από τις εκατοντάδες κ.ο.κ. Για να επιτύχουµε µορφοποιηµένη (φορµαρισµένη) έξοδο αριθµών, η ακολουθία %f στο αλφαριθµητικό ελέγχου της printf() µπορεί να διαµορφωθεί ως ε- ξής: %n.mf 117

30 Η γλώσσα C σε βάθος όπου n ο συνολικός αριθµός των θέσεων που θα καταλάβει ο αριθµός (µαζί µε την υποδιαστολή) και m ο αριθµός των θέσεων µετά από την υποδιαστολή. Έτσι, %8.3f σηµαίνει ότι ο αριθµός θα εµφανιστεί σε 8 θέσεις από τις οποίες οι 3 θα είναι για το δεκαδικό µέρος. Για µορφοποιηµένη έξοδο, το προηγούµενο πρόγραµµα θα µπορούσε να διατυπωθεί ως εξής: main() float a,b; a=21.234; b=5467.1; printf("%8.3f\n",a); printf("%8.3f\n",b); Χρήση της συνάρτησης scanf() µε δεδοµένα τύπου float Η scanf() χρησιµοποιείται για την είσοδο δεκαδικών αριθµών µε το πληκτρολόγιο. Για παράδειγµα, το επόµενο πρόγραµµα ζητάει και εµφανίζει δύο δεκαδικούς. #include <stdio.h> 6_float_scanf.c main() float a; double b; printf(" ώσε δεκαδικό:"); scanf("%f",&a); // ιαβάζει έναν αριθµό τύπου float και των καταχωρίζει στη µεταβλητή a printf(" ώσε δεκαδικό:"); scanf("%lf",&b); // ιαβάζει έναν αριθµό τύπου double και των καταχωρίζει στη µεταβλητή b printf("εδωσες %f και %f\n",a,b); Παρατηρούµε οτι όταν πρόκειται να διαβαστεί αριθµός διπλής ακρίβειας (τύπου double), στο αλφαριθµητικό ελέγχου της συνάρτησης scanf(), η ακολουθία %lf α- ντικαθιστά την %f. 118

31 Κεφάλαιο Εντολές συνθήκης

32 Η γλώσσα C σε βάθος Εντολές συνθήκης H C διαθέτει δύο εντολές µε τις οποίες έχει τη δυνατότητα εκτέλεσης προτάσεων υπό συνθήκη ("υπό όρους"). Είναι η εντολή if και η εντολή switch-case. Η εντολή if Η εντολή if ελέγχει µια λογική παράσταση και ανάλογα µε το αποτέλεσµα του ελέγχου (αληθές ή ψευδές), εκτελεί (ή δεν εκτελεί) κάποιες προτάσεις. Η if συντάσσεται µε τρεις τρόπους: ως απλή πρόταση if ως συνδυασµός if - else ως συνδυασµός if - else if H απλή πρόταση if To συντακτικό της if στην πιο απλή της µορφή είναι: if (λογική παράσταση) πρόταση-a; Σε αυτή τη µορφή η if ελέγχει τη λογική παράσταση και, αν είναι αληθής (Α), εκτελεί την πρόταση-α που ακολουθεί. Αν η λογική παράσταση είναι ψευδής (Ψ), εκτελείται η πρόταση αµέσως µετά από την εντολή if. Ας θυµηθούµε ότι µια λογική παράσταση στη C επιστρέφει µία αριθµητική τιµή: την τιµή 1 αν είναι αληθής και την 0 αν είναι ψευδής. Επίσης, η C θεωρεί αληθή οποιαδήποτε παράσταση επιστρέφει τιµή διάφορη του µηδενός (βλέπε παράδειγµα Π7.3). Στο λογικό διάγραµµα φαίνεται η λογική της πρότασης if. Η πρόταση-α µπορεί να είναι και µία σύνθετη πρόταση (compound statement). Παράδειγµα χρήσης της απλής πρότασης if: 124

33 Κεφάλαιο 7: Εντολές συνθήκης if(a==5) printf("a=5\n"); if(a==5) printf("a=5\n"); if(a==5) printf("a=5\n"); η οποία µπορεί να γραφεί και ή και Όπως αναφέραµε, η πρόταση-α µπορεί να είναι και µία σύνθετη πρόταση: if(a==5) printf("a=5\n"); printf("µία σύνθετη πρόταση\n"); Η πρόταση if-else if (λογική παράσταση) Πρόταση-Α; else Πρόταση-Ψ; Σε αυτή τη µορφή, η if ελέγχει τη λογική παράσταση και, αν είναι αληθής (Α), εκτελεί την Πρόταση-Α που ακολουθεί. Αν η λογική παράσταση είναι ψευδής (Ψ), εκτελείται η Πρόταση-Ψ. Μετά εκτελείται κανονικά η επόµενη από την if πρόταση του προγράµµατος. Στο διπλανό λογικό διάγραµµα φαίνεται η λογική της πρότασης if-else. Οι προτάσεις Α και Ψ µπορεί να είναι και σύνθετες προτάσεις. Παράδειγµα χρήσης της if-else: if(a==5) printf("ναι"); else printf("όχι"); ή και if(a==5) printf("ναι"); 125

34 Η γλώσσα C σε βάθος else printf("όχι"); if(a==5) printf("ναι\n"); printf("σύνθετη πρόταση - A\n"); else printf("όχι\n"); printf("σύνθετη πρόταση - B\n"); Η πρόταση if - else if Εφόσον µετά το else µπορεί να υπάρξει οποιαδήποτε πρόταση µπορεί αυτή να είναι άλλη µία πρόταση if. Η λογική της πρότασης if-else if φαίνεται στο λογικό διάγραµµα της επόµενης σελίδας. Η Πρόταση-Ψ εκτελείται µόνο όταν όλες οι λογικές παραστάσεις είναι ψευδείς. Π.χ.: if(λογ_παράσταση-1) Πρόταση-A 1 ; else if(λογ_παράσταση-2) Πρόταση-A 2 ;... else if(λογ_παράσταση-ν) Πρόταση-A ν ; Εκτελείται όταν η Λογ_παράσταση-1 είναι αληθής Εκτελείται όταν η Λογ_παράσταση-2 είναι αληθής Εκτελείται όταν η Λογ_παράσταση-3 είναι αληθής 126

35 Κεφάλαιο Εντολές αλλαγής ροής και επανάληψης

36 Η γλώσσα C σε βάθος Εντολές αλλαγής ροής και επανάληψης Η "επικίνδυνη" εντολή goto Στη C, όπως και στις περισσότερες γλώσσες προγραμματισμού, με την εντολή goto μεταφέρουμε τον έλεγχο του προγράμματος σε ένα διαφορετικό του σημείο. Δεδομένου ότι στη C οι προτάσεις ενός προγράμματος δεν αριθμούνται, χρησιμοποιούνται ετικέτες (labels) για να "επισημαίνουν" διάφορα σημεία μέσα σε ένα πρόγραμμα. Μια ετικέτα (label) είναι ένα αναγνωριστικό ακολουθούμενο από μία άνω και κάτω τελεία (:), για παράδειγμα: telos: Μια ετικέτα μπορεί να βρίσκεται μόνη της σε μια γραμμή του προγράμματος ή να βρίσκεται μπροστά από μια πρόταση. Η εντολή goto μεταφέρει τον έλεγχο σε μια ετικέτα του προγράμματος (αλλά πάντα μέσα στην ίδια συνάρτηση). Το συντακτικό της goto είναι: goto ετικέτα; όπου ετικέτα είναι η ετικέτα στην οποία θέλουμε να μεταφερθεί ο έλεγχος του προγράμματος. Το επόμενο πρόγραμμα εμφανίζει συνέχεια αριθμούς ξεκινώντας από το 1 και αυξάνοντάς τους κατά 1. main() int a; a=0; pali: printf("%d\n",++a); goto pali; //Αυξάνει την τιμή της a κατά 1 και την εμφανίζει //Μεταφέρει τον έλεγχο του προγράμματος στη θέση της ετικέτας pali

37 Κεφάλαιο 8: Εντολές αλλαγής ροής και επανάληψης Παρατηρούµε ότι η ετικέτα pali δεν ακολουθείται από ερωτηµατικό (;). Όταν η ετικέτα βρίσκεται πριν από µία πρόταση, η πρόταση τερµατίζεται κανονικά µε ερωτη- µατικό (;). Στη σύνταξη της goto η ετικέτα δεν ακολουθείται από την άνω και κάτω τελεία (goto pali;) Το επόµενο πρόγραµµα εκτελεί την ίδια λειτουργία µε το προηγούµενο: main() int a; a=0; pali: printf("%d\n",++a); goto pali; Η goto ως µέθοδος µεταφοράς ελέγχου του προγράµµατος είναι ο χειρότερος ε- χθρός του δοµηµένου προγραµµατισµού. Αφού λοιπόν έγινε κατανοητή η χρήση της goto, το επόµενο στάδιο είναι να την ξεχάσουµε. Αν θέλουµε τα προγράµµατα µας να είναι δοµηµένα και ευανάγνωστα δεν πρέπει να τη χρησιµοποιούµε ποτέ. Η C διαθέτει εντολές ελέγχου και επαναληπτικές διαδικασίες που κάνουν περιττή τη χρήση της goto. Ο βρόχος while Ο βρόχος while αποτελεί τη µια από τις τρεις δοµές επανάληψης της C. Με τη χρήση της εντολής while είναι δυνατή η επαναληπτική εκτέλεση µιας ή παραπάνω προτάσεων. Η επανάληψη ή όχι των προτάσεων εξαρτάται από την τιµή µιας λογικής παράστασης. Για παράδειγµα, ο παρακάτω βρόχος while εκτελείται όσο η τιµή της µεταβλητής a είναι µεγαλύτερη από το 0. a=5; while (a>0) printf("a=%d\n",a); --a; Ελέγχεται αν η τιµή της µεταβλητής a είναι µεγαλύτερη από 0. Αν είναι, συνεχίζεται η εκτέλεση των εντολών του βρόχου. 143

38 Η γλώσσα C σε βάθος Η εντολή (ή βρόχος) while επιτυγχάνει την επανάληψη µιας πρότασης (απλής ή σύνθετης) ενόσω µια λογική παράσταση είναι αληθής. Το συντακτικό της while είναι: while (λογική_παράσταση) πρόταση; while (λογική_παράσταση) πρόταση; while (λογική_παράσταση) πρόταση1; πρόταση2; Το διπλανό λογικό διάγραµµα δείχνει τη φιλοσοφία της while. εδοµένου ότι µια λογική παράσταση στη C επιστρέφει αριθµητική τιµή, στη θέση της λογικής παράστασης µπορεί να είναι οποιαδήποτε παράσταση που ε- πιστρέφει αριθµητική τιµή. Αν η τιµή της είναι 0, θεωρείται ψευδής διαφορετικά θεωρείται αληθής. Η παρακάτω εντολή while έχει ως αποτέλεσµα τη συνεχή εµφάνιση της πρότασης "Η γλώσσα C σε βάθος", δεδοµένου ότι η παράσταση έχει συνέχεια τιµή 1 δηλαδή αληθής. Σε αυτό το σηµείο η εκτέλεση του προγράµµατος θα 'κολλήσει'. Ένας τέτοιος βρόχος καλείται ατέρµων βρόχος. while (1) printf("η γλώσσα C σε βάθος\n"); Το πρόγραµµα που ακολουθεί, εµφανίζει την τιµή της µεταβλητής a, ενόσω αυτή είναι µεγαλύτερη του µηδενός. Μετά το τέλος του βρόχου, εµφανίζει τη λέξη "ΤΕΛΟΣ". ή ή 144

39 Κεφάλαιο 8: Εντολές αλλαγής ροής και επανάληψης #include <stdio.h> main() int a,b; a=5; while (a>0) printf("a=%d\n",a); --a; printf("τελοσ\n"); Το επόµενο πρόγραµµα περιµένει να πατηθεί το πλήκτρο του διαστήµατος (ASCII 32). #include <stdio.h> main() char ch; ch=''; while (ch!=32) ch=getch(); printf("επιτέλους το πάτησες\n"); Ο βρόχος while εκτελείται συνέχεια ενόσω το πλήκτρο που πατιέται δεν είναι το πλήκτρο του διαστήµατος. Εκµεταλλευόµενοι τη µαγεία της C, θα µπορούσαµε να γράψουµε το προηγούµενο πρόγραµµα µε τον ακόλουθο τρόπο. #include <stdio.h> main() char ch=''; while ((ch=getch())!= 32); printf("επιτέλους το πάτησες\n"); a=5 a=4 a=3 a=2 a=1 ΤΕΛΟΣ 8_while1.c 8_while2.c 8_while3.c ΠΡΟΣΟΧΗ: ο βρόχος while δεν περιέχει καµία πρόταση. 145

40 Η γλώσσα C σε βάθος Η εντολή continue Η εντολή continue έχει µια παρόµοια λειτουργία µε την break. Η διαφορά της είναι ότι δεν τερµατίζει τον βρόχο (όπως η break), αλλά επιβάλλει την εκτέλεση της επόµενης επανάληψης παραλείποντας τις ενδιάµεσες εντολές. Τα επό- µενα παραδείγµατα δείχνουν παραστατικά τη λειτουργία της. //βρόχος while while (1) ch=getch(); if (ch==27) continue; putch(ch);... printf("τέλος βρόχου while\n"); //βρόχος do-while do ch=getch(); if (ch==27) continue; putch(ch);... while (1); printf("τέλος βρόχου do-while\n"); //βρόχος for for (i=1;i<=100;++i) ch=getch(); if (ch==27) continue; putch(ch);... printf("τέλος βρόχου for\n"); Η εντολή continue µεταφέρει τον έλεγχο του προγράµµατος αµέσως µετά την τελευταία πρόταση του βρόχου αλλά πριν από το τέλος του (δεξιό άγκιστρο). Έτσι γίνεται κανονικά (αν πρέπει να γίνει) η επόµενη επανάληψη του βρόχου και α- πλώς παραλείπεται η εκτέλεση των προτάσεων από την εντολή continue µέχρι το τέλος του βρόχου. while (1) ch=getch(); if (ch==27) goto pali; putch(ch); pali: printf("τελος βρόχου while\n"); Και στους τρεις βρόχους του παραδείγµατος, µόλις πατηθεί το πλήκτρο Esc (ASCII 27), η εντολή continue επιβάλλει την εκτέλεση της επόµενης επανάληψης παραλείποντας τις ενδιάµεσες εντολές. 156

41 Κεφάλαιο 8: Εντολές αλλαγής ροής και επανάληψης Και εδώ αναφέρεται ένα ισοδύναµο παράδειγµα που χρησιµοποιεί την εντολή goto για την επανάληψη του βρόχου. Καταµέτρηση και άθροιση σε επαναλαµβανόµενες διαδικασίες Πολλές φορές στα προγράµµατά µας θα χρειαστεί να µετρήσουµε πόσες φορές συνέβη ένα γεγονός (για παράδειγµα το πλήθος των αριθµών που είναι µεγαλύτεροι από 10), αλλά και να αθροίσουµε τις διαφορετικές τιµές που λαµβάνει µια µεταβλητή. Για την καταµέτρηση ενός συµβάντος πάντα χρησιµοποιούµε µια µεταβλητή στην οποία δίνουµε αρχική τιµή 0, και κάθε φορά που δηµιουργείται το συµβάν, αυξάνουµε τη µεταβλητή κατά 1. Για το συνολικό άθροισµα διαφορετικών τιµών, χρησιµοποιούµε πάλι µια µεταβλητή στην οποία δίνουµε επίσης αρχική τιµή 0, και κάθε φορά που δηµιουργείται µια νέα τιµή, αυξάνου- µε τη µεταβλητή κατά την τιµή αυτή. Το παρακάτω πρόγραµµα διαβάζει έναν-έναν δώδεκα αριθµούς που δίνονται από το πληκτρολόγιο και εµφανίζει το άθροισµά τους. Για την καταµέτρηση των αριθµών χρησιµοποιείται η µεταβλητή cnt και για το άθροισµά τους η µεταβλητή sum. Στον κώδικα του προγράµµατος, χρησιµοποιείται η συνάρτηση scanf() η οποία διαβάζει έναν αριθµό από το πληκτρολόγιο και τον καταχωρίζει στη µεταβλητή a. #include <stdio.h> main() int a,cnt,sum; cnt=sum=0; while (cnt<12) printf(" ώσε αριθµό:"); scanf("%d",&a); cnt++; sum=sum+a; printf("άθροισµα=%d\n",sum); Θέτουµε αρχική τιµή στις µεταβλητές cnt και sum το 0. Όταν δοθούν 12 αριθµοί, η επαναληπτική διαδικασία σταµατάει. 8_sum.c ιαβάζει έναν αριθµό από το πληκτρολόγιο και τον καταχωρίζει στη µεταβλητή a. Κάθε φορά που δίνεται ένας αριθµός (a), η cnt αυξάνεται κατά 1. Επίσης ο αριθµός (a) προστίθεται στη sum. Εµφανίζει το συνολικό άθροισµα όλων των αριθµών που δόθηκαν. 157

42 Κεφάλαιο Συναρτήσεις

43 Η γλώσσα C σε βάθος Συναρτήσεις Σε αυτό το κεφάλαιο θα αναφερθούµε στη χρήση των συναρτήσεων από τη C. Μέχρι στιγµής είδαµε τη χρήση της main(), µιας συνάρτησης απαραίτητης σε κάθε πρόγραµµα της C. Επίσης συναντήσαµε και ορισµένες συναρτήσεις βιβλιοθήκης όπως οι: printf(), scanf(), getch() κ.α. Οι συναρτήσεις βοηθούν τον προγραµµατιστή να "κοµµατιάσει" ένα µεγάλο πρόγραµµα σε µικρότερα τµήµατα, κάθε ένα από τα οποία επιτελεί µια συγκεκριµένη λειτουργία. Στις γλώσσες δοµηµένου προγραµµατισµού, οι συναρτήσεις µπορούν να "κρύβουν" κοµµάτια κώδικα από το υπόλοιπο πρόγραµµα µε τρόπο ώστε οι µεταβλητές µιας συνάρτησης να µην επηρεάζουν το υπόλοιπο πρόγραµµα. Όπως αναφέρθηκε στην εισαγωγή, ένα πρόγραµµα στη C έχει την ακόλουθη γενική µορφή: main() δηλώσεις µεταβλητών της συνάρτησης main(); εκτελέσιµες προτάσεις της συνάρτησης main(); function-1() δηλώσεις µεταβλητών της συνάρτησης function-1(); εκτελέσιµες προτάσεις της συνάρτησης function-1(); function-2() δηλώσεις µεταβλητών της συνάρτησης function-2(); εκτελέσιµες προτάσεις της συνάρτησης function-2(); function-n() δηλώσεις µεταβλητών της συνάρτησης function-n(); 172

44 Κεφάλαιο 9: Συναρτήσεις εκτελέσιµες προτάσεις της συνάρτησης function-n(); Οι συναρτήσεις εκτελούνται µόνο αν κληθούν από µια άλλη συνάρτηση. Η µόνη συνάρτηση που εκτελείται πάντοτε είναι η συνάρτηση main(). Στη C κάθε συνάρτηση επιστρέφει µια τιµή, εκτός αν έχει δηλωθεί µε σαφήνεια ότι δεν επιστρέφει καµία τιµή. Σε κάθε περίπτωση µια συνάρτηση έχει έναν τύπο (int, float κ.λπ.) ανάλογα µε τον τύπο δεδοµένων που επιστρέφει ως τιµή. Όπως θα γίνει κατανοητό στη συνέχεια του παρόντος κεφαλαίου, ακόµα και αν δεν επιστρέφει καµία τιµή, θα πρέπει να δηλωθεί µε τον κατάλληλο τύπο (void). Επίσης, µια συνάρτηση µπορεί να έχει παραµέτρους µέσω των οποίων το πρόγραµµα που καλεί τη συνάρτηση µπορεί να της "µεταβιβάσει" πληροφορίες. Στη C κάθε συνάρτηση ανήκει σε κάποιο τύπο δεδοµένων. Μια συνάρτηση µπορεί να έχει καµία, µία ή περισσότερες παραµέτρους. Oρισµός µιας συνάρτησης Μια συνάρτηση ορίζεται µε τον ακόλουθο τρόπο: τύπος_συνάρτησης όνοµα_συνάρτησης (τύπος παράµετρος1, τύπος παρά- µετρος2,...) δηλώσεις µεταβλητών συνάρτησης; εκτελέσιµες προτάσεις συνάρτησης; Ο τύπος της συνάρτησης καθορίζει τον τύπο της τιµής που επιστρέφει η συνάρτηση. Στην περίπτωση που η συνάρτηση δεν επιστρέφει τιµή, δηλώνεται ως τύπου void. Αν δεν οριστεί ο τύπος της συνάρτησης, η C υποθέτει ότι η συνάρτηση επιστρέφει τιµή τύπου int. 173

45 Η γλώσσα C σε βάθος Οι παράµετροι της συνάρτησης (αν υπάρχουν) ορίζονται, µαζί µε τον τύπο τους, µέσα στις παρενθέσεις που ακολουθούν το όνοµα της συνάρτησης. Οι παράµετροι µιας συνάρτησης αποτελούν και αυτές τοπικές µεταβλητές της συνάρτησης. Συναρτήσεις χωρίς παραµέτρους Στην πιο απλή τους µορφή οι συναρτήσεις δεν έχουν παραµέτρους. Σε αυτή την περίπτωση το πρόγραµµα που τις καλεί δεν µπορεί να τους µεταβιβάσει πληροφορίες. Μια τέτοια συνάρτηση τη φανταζόµαστε σαν ένα ερµητικά κλειστό κουτί το οποίο επιτελεί κάποια λειτουργία, αλλά δεν έχουµε καµία δυνατότητα να τροποποιήσουµε τη λειτουργία του. Για παράδειγµα, η παρακάτω συνάρτηση εµφανίζει τους αριθµούς από το 5 µέχρι το 10. εν επιστρέφει καµία τιµή και για το λόγο αυτό δηλώνεται ως void. εν διαθέτει καµία παράµετρο και, κάθε φορά που καλείται, εκτελεί ακριβώς την ίδια λειτουργία. void display_numbers() int i; for (i=5;i<=10;i++) printf("%d\n",i); Η συνάρτηση εµφανίζει τους αριθµούς 5, 6, 7, 8, 9, και 10. main() printf("πρώτη κλήση της συνάρτησης\n"); display_numbers(); Κλήση της συνάρτησης 174

46 Κεφάλαιο 9: Συναρτήσεις printf(" εύτερη κλήση της συνάρτησης\n"); display_numbers(); Η συνάρτηση main() καλεί τη συνάρτηση display_numbers() δύο φορές. Κάθε φορά η συνάρτηση εµφανίζει τους ίδιους αριθµούς. Aπό τη στιγµή που η συνάρτηση δεν έχει παραµέτρους δεν υπάρχει τρόπος να επηρεάσουµε τη λειτουργία της. Συναρτήσεις µε παραµέτρους Οι παράµετροι είναι ένας τρόπος µε τον οποίο ένα πρόγραµµα µεταβιβάζει πληροφορίες σε µια συνάρτηση. Μια τέτοια συνάρτηση τη φανταζόµαστε σαν ένα κουτί το οποίο διαθέτει εγκοπές στις οποίες µπορούµε να τοποθετήσουµε πληροφορίες. Ο κώδικας της συνάρτησης χρησιµοποιεί αυτές τις πληροφορίες και ανάλογα µπορεί να τροποποιεί τη λειτουργία του. Όταν καλούµε µια συνάρτηση µε παραµέτρους, την καλούµε µε ισάριθµα ορίσµατα. Το διπλανό σχήµα δείχνει µια συνάρτηση µε δύο παραµέτρους func(παρ1,παρ2) σαν ένα κουτί µε δύο εγκοπές. Όταν καλούµε τη συνάρτηση func(), πρέπει να χρησιµοποιήσουµε ισάριθµα ορίσµατα func(ορ1,ορ2). Η τιµή του πρώτου ορίσµατος µεταβιβάζεται στην πρώτη παρά- µετρο (εγκοπή), και του δεύτερου ορίσµατος στη δεύτερη. Η παρακάτω συνάρτηση είναι µια παραλλαγή της συνάρτησης display_numbers() µε δύο παραµέτρους, ώστε το πρόγραµµα που την καλεί να µπορεί να καθορίζει το εύρος των αριθµών που εµφανίζει. 175

47 Κεφάλαιο 9: Συναρτήσεις Παράµετροι συνάρτησης Όπως αναφέρθηκε προηγουµένως, αν µια συνάρτηση έχει παραµέτρους, αυτές δηλώνονται µαζί µε το όνοµα της συνάρτησης µέσα στις παρενθέσεις που ακολουθούν. int add(int x, int y) Ο δεύτερος τρόπος δήλωσης των παραµέτρων µιας συνάρτησης, είναι αµέσως µετά από το όνοµα της συνάρτησης, σε ξεχωριστή πρόταση: int add(x,y) Όνοµα συνάρτησης int x,y; ήλωση παραµέτρων Σώµα συνάρτησης Οι δύο τρόποι δήλωσης των παραµέτρων µιας συνάρτησης είναι ισοδύναµοι αλλά στη συνέχεια του βιβλίου θα χρησιµοποιούµε τον πρώτο που είναι ο πιο διαδεδο- µένος. Ορίσµατα και µεταβίβαση παραµέτρων Οι παράµετροι µιας συνάρτησης χρησιµοποιούνται για τη µεταβίβαση δεδοµένων από το πρόγραµµα προς τη συνάρτηση την οποία καλεί. Οι τιµές µε τις οποίες καλείται µια συνάρτηση λέγονται ορίσµατα της συνάρτησης. Ας θεωρήσουµε το επόµενο παράδειγµα κλήσης της συνάρτησης add() από τη συνάρτηση main(). main() int a,b,c; ήλωση παραµέτρων Σώµα συνάρτησης 183

48 Η γλώσσα C σε βάθος a=10; b=20; c=add(a,b); printf("%d\n",c); int add(int x, int y) int ss; ss=x+y; return(ss); Η συνάρτηση add() έχει οριστεί µε δύο παραµέτρους x και y. Όταν καλείται η συνάρτηση, οι τιµές των ορισµάτων της (το 10 και το 20) αντιγράφονται στις παραµέτρους x και y αντίστοιχα. Τα ορίσµατα µε τα οποία καλείται µια συνάρτηση, καλούνται πραγµατικές παράµετροι. Ορίσµατα συνάρτησης. Καλούνται και πραγµατικές παράµετροι. Παράµετροι συνάρτησης. Καλούνται και τυπικές παράµετροι. Αυτός ο τρόπος µεταβίβασης των ορισµάτων λέγεται κλήση ή µεταβίβαση κατ' αξία (call by value), κατά τον οποίο αντιγράφονται οι τιµές των ορισµάτων στις αντίστοιχες παραµέτρους της συνάρτησης. Οι µεταβλητές των παραµέτρων που ορίζονται σε µια συνάρτηση (στην περίπτωση µας οι x και y) λέγονται τυπικές παράµετροι (formal parameters) της συνάρτησης. 184

49 Κεφάλαιο 9: Συναρτήσεις Παραδείγµατα Π9.1 Η επόµενη συνάρτηση δέχεται ως παράµετρο έναν αριθµό, τον εµφανίζει αντίστροφα, και επιστρέφει ως τιµή το πλήθος των ψηφίων του. int reverse(int ar) int y,p,cnt=0; do y=ar % 10; p=ar/10; printf("%d",y); cnt++; ar=p; while (p!=0); return cnt; Π9.2 Η επόµενη συνάρτηση δέχεται ως παράµετρο ένα χαρακτήρα και επιστρέφει τιµή 1 αν είναι Ελληνικός κεφαλαίος, 2 αν είναι Ελληνικός πεζός, 3 αν είναι αριθµητικό ψηφίο (0~9), και 0 σε κάθε άλλη περίπτωση. int isgreek(char ch) int ap; if (ch>='a' && ch<='ω') // 'Α'= Ελληνικό άλφα κεφαλαίο! ap=1; else if (ch>='α' && ch<='ω') ap=2; else if (ch>='0' && ch<='9') ap=3; else ap=0; return ap; Ο αλγόριθµος που ακολουθούµε για το συγκεκριµένο πρόβληµα είναι ο ίδιος µε το παράδειγµα Π8.5 του προηγούµενου κεφαλαίου: Υπολογίζουµε το υπόλοιπο και το πηλίκο της διαίρεσης του αριθµού δια 10. Το υπόλοιπο αποτελεί το πρώτο ψηφίο. Αντικαθιστούµε τον αριθµό µε το πηλίκο που βρήκαµε και συνεχίζουµε τη διαδικασία µέχρι να βρούµε πηλίκο 0. Η µεταβλητή cnt "µετράει" τα ψηφία του αριθµού. Η συνάρτηση επιστρέφει την τιµή της cnt. 9_p9_1.c 9_p9_2.c 191

50 Η γλώσσα C σε βάθος 9.9 Ο είκτης Μάζας Σώµατος ( ΜΣ) υπολογίζεται από τον τύπο Β/Υ 2, ό- που Β το βάρος σε κιλά και Υ το ύψος σε µέτρα. Ανάλογα µε την τιµή του ΜΣ ένα άτοµο χαρακτηρίζεται σύµφωνα µε τον παρακάτω πίνακα: ΜΣ µικρότερος από 18.5 από 18.5 και µικρότερος του 25 από 25 και µικρότερος του 30 από 30 και πάνω Περιγραφή Λιποβαρής Κανονικός Υπέρβαρος Παχύσαρκος Να γραφεί πρόγραµµα το οποίο θα ζητάει να πληκτρολογούµε το βάρος και το ύψος διάφορων ατόµων, θα υπολογίζει τον ΜΣ και θα εµφανίζει το χαρακτηρισµό του ατόµου (π.χ. υπέρβαρος). Το πρόγραµµα θα σταµατάει όταν δοθεί τιµή 0 είτε για το βάρος είτε για το ύψος. Ο υπολογισµός του ΜΣ πρέπει να υλοποιείται από µια συνάρτηση. Επίσης από µια δεύτερη συνάρτηση θα πρέπει να υλοποιείται η εµφάνιση των αποτελεσµάτων Με δεδοµένη την αλγεβρική συνάρτηση f(x)=x 4-10x 2 +2, να γραφεί πρόγραµµα που να εµφανίζει τις τιµές που επιστρέφει η συνάρτηση για τιµές του x από 0 µέχρι 1 µε βήµα Να εµφανίζονται τα ζεύγη τιµών x, f(x) µε ακρίβεια τριών δεκαδικών ψηφίων. Η τιµή της f(x) να υπολογίζεται από ξεχωριστή συνάρτηση στο πρόγραµµά σας Ο ΦΠΑ ενός προϊόντος µπορεί να ανήκει στις παρακάτω κατηγορίες: Κατηγορία Ποσοστό ΦΠΑ Να γραφεί πρόγραµµα το οποίο θα ζητάει να πληκτρολογούµε το πλήθος, τη τιµή µονάδας και τη κατηγορία ΦΠΑ για 10 προϊόντα. Το πρόγραµµα θα πρέπει να εµφανίζει το συνολικό κόστος της δαπάνης καθώς και το σύνολο του ΦΠΑ για όλα τα προϊόντα που αγοράσαµε. Ο υπολογισµός του ΦΠΑ πρέπει να υλοποιείται από µια συνάρτηση στην οποία θα µεταβιβάζεται το συνολικό ποσό ανά προϊόν καθώς και η κατηγορία ΦΠΑ στην οποία ανήκει. 198

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

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη Εισαγωγικά

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011 Εισαγωγή στον Προγραµµατισµό Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011 Hello World /* Αρχείο hello.c * Εµφανίζει στην οθόνη το * µήνυµα hello world */ #include

Διαβάστε περισσότερα

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Βασικά Στοιχεία Το αλφάβητο της C Οι βασικοί τύποι της C Δηλώσεις μεταβλητών Είσοδος/Έξοδος Βασικές εντολές της C Αλφάβητο

Διαβάστε περισσότερα

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

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης Η συνάρτηση printf() Η συνάρτηση printf() χρησιμοποιείται για την εμφάνιση δεδομένων στο αρχείο εξόδου stdout (standard output stream), το οποίο εξ ορισμού συνδέεται με την οθόνη Η συνάρτηση printf() δέχεται

Διαβάστε περισσότερα

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

scanf() scanf() stdin scanf() printf() int float double %lf float Εισαγωγή Στον Προγραµµατισµό «C» Είσοδος Δεδοµένων Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Η συνάρτηση scanf() Η συνάρτηση

Διαβάστε περισσότερα

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

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μεταβλητές,

Διαβάστε περισσότερα

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

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C Εισαγωγή στην C Μορφή Προγράµµατος σε γλώσσα C Τµήµα Α Με την εντολή include συµπεριλαµβάνω στο πρόγραµµα τα πρότυπα των συναρτήσεων εισόδου/εξόδου της C.Το αρχείο κεφαλίδας stdio.h είναι ένας κατάλογος

Διαβάστε περισσότερα

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

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 2 η Τύποι Δεδομένων Δήλωση Μεταβλητών Έξοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα

Διαβάστε περισσότερα

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

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 2 ο Τύποι Δεδοµένων Δήλωση Μεταβλητών Έξοδος Δεδοµένων Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Μνήµη και Μεταβλητές Σχέση Μνήµης Υπολογιστή και Μεταβλητών Η µνήµη (RAM) ενός

Διαβάστε περισσότερα

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

Βασικές Αρχές Προγραμματισμού Βασικές Αρχές Προγραμματισμού Κεφάλαιο 2 ΗγλώσσαC Ιστορική Αναδρομή ΗανάπτυξητηςC ξεκίνησε το 1972 στα εργαστήρια Bell από τον Dennis Ritchie με σκοπό την ανάπτυξη ενός λειτουργικού συστήματος για τον

Διαβάστε περισσότερα

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

Προγραμματισμός Ι. Χαρακτήρες. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών Χαρακτήρες Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Προγραμματισμός Δ. Τσελίκας Ι Χαρακτήρες - Εισαγωγή Έως τώρα έχουμε κατά κύριο λόγο χρησιμοποιήσει τους αριθμητικούς τύπους

Διαβάστε περισσότερα

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 1 Εισαγωγή στη C Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Διαδικαστικά Ιστοσελίδα μαθήματος: http://eclass.uoa.gr/courses/f30/ Υποχρεωτική παρακολούθηση: Παρασκευή 14:00 16:00 στην

Διαβάστε περισσότερα

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

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ Σκοπός της Άσκησης Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η ανάλυση των βασικών χαρακτηριστικών της Γλώσσας

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 2: Δομή ενός προγράμματος C Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Αριθμητική Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Δεύτερο Πρόγραμμα 1 / * Second Simple Program : add 2 numbers * / 2

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 4: Τύποι Δεδομένων και τελεστές Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2014-15

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 3 η Είσοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή

Διαβάστε περισσότερα

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου)

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου) ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου) 1. Εισαγωγή Χαρακτηριστικά της γλώσσας Τύποι δεδοµένων Γλώσσα προγραµµατισµού

Διαβάστε περισσότερα

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 2ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 ΣΦΑΛΜΑΤΑ ΜΕΤΑΓΛΩΤΤΙΣΗΣ Η γλώσσα C κάνει αυστηρή διάκριση μεταξύ πεζών

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16

Διαβάστε περισσότερα

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

Διαβάστε περισσότερα

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

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 9 η Χαρακτήρες Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Πέμπτη (5 η ) τρίωρη διάλεξη. Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής ΗΥ-150 Εντολές Ελέγχου Ροής Σειριακή εκτέλεση εντολών Όλα τα προγράµµατα «γράφονται» χρησιµοποιώντας 3 είδη εντολών: Σειριακές εντολές (sequential built in C) Εντολές απόφασης (if, if/else, switch) Περιλαµβάνει

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

2 η Διάλεξη C++ Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ 2 η Διάλεξη C++ Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ Τι μάθαμε μέχρι τώρα Κάθε πρόγραμμα της c++ περιέχει υποχρεωτικά μια συνάρτηση main() η οποία είναι εκείνη που εκτελείται πρώτη. Κάθε

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2014-15

Διαβάστε περισσότερα

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

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

Διαβάστε περισσότερα

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

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf(%u\n, x); Β. unsigned char ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Β Περιόδου 2015 (8/9/2015) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

Διαβάστε περισσότερα

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

Εργαστήριο 2ο. Περίγραμμα Εργαστηριακής Άσκησης Γλώσσες Προγραμματισμού Εργαστήριο 2ο Τύποι Δεδομένων - Είσοδος / Έξοδος Εργαστήριο 2ο Περίγραμμα Εργαστηριακής Άσκησης Εργαστήριο 2ο...1 Θεωρία εργαστηρίου...2 Τύποι δεδομένων...2 Η συνάρτηση printf()...3

Διαβάστε περισσότερα

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

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα. Ερωτήσεις προόδου C Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα. #include // δίνει οδηγία στον compiler να // συμπεριλάβει την βιβλιοθήκη stdio int

Διαβάστε περισσότερα

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

Εισαγωγή στον προγραμματισμό. Τμήμα Πληροφορικής & Επικοινωνιών ΤΕΙ Σερρών Εργαστήριο 2 Εισαγωγή στον προγραμματισμό Τμήμα Πληροφορικής & Επικοινωνιών ΤΕΙ Σερρών Εργαστήριο 2 Δομή Προγράμματος Όλα τα προγράμματα που γράψαμε έχουν λίγο πολύ την ακόλουθη μορφή: Κάποιος κώδικας εδώ main( ) {

Διαβάστε περισσότερα

for for for for( . */

for for for for( . */ Εισαγωγή Στον Προγραµµατισµό «C» Βρόχοι Επανάληψης Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Ο βρόχος for Η εντολή for χρησιµοποιείται

Διαβάστε περισσότερα

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 23 ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μάθημα 2ο Τμήμα Διοίκησης Επιχειρήσεων α εξάμηνο Β. Φερεντίνος I/O 24 Βασική βιβλιοθήκη συναρτήσεων εισόδου/εξόδου #include Η συνάρτηση εξόδου printf printf("συμβολοσειρά

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Τµήµα Πληροφορικής και Τηλεπικοινωνιών

ΕΡΓΑΣΤΗΡΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Τµήµα Πληροφορικής και Τηλεπικοινωνιών ΕΡΓΑΣΤΗΡΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΗ C Τµήµα Πληροφορικής και Τηλεπικοινωνιών Περιεχόµενα Εισαγωγή Πρόγραµµα Φάσεις Υλοποίησης µε χρήση του εργαλείου DEV C + + οµή Προγράµµατος Η συνάρτηση main Μεταβλητές Τι είναι

Διαβάστε περισσότερα

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 3: Είσοδος / Έξοδος, Βασικοί Τύποι, Δήλωση Μεταβλητών Ένα Ακόμα Παράδειγμα #include int main(int argc, char* argv[]) { } putchar('h'); putchar('e'); putchar('l');

Διαβάστε περισσότερα

a = 10; a = k; int a,b,c; a = b = c = 10;

a = 10; a = k; int a,b,c; a = b = c = 10; C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 4 ο Τελεστές Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Ο τελεστής εκχώρησης = Ο τελεστής = χρησιµοποιείται για την απόδοση τιµής (ή αλλιώς ανάθεση τιµής) σε µία µεταβλητή Π.χ.

Διαβάστε περισσότερα

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική Ενότητα 2: Μεταβλητές και Σταθερές Νικόλαος Στεργιούλας Τμήμα Φυσικής Άδειες Χρήσης

Διαβάστε περισσότερα

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

Περιεχόμενα. Πρόλογος... 21 Περιεχόμενα Πρόλογος... 21 Κεφάλαιο 1: Εισαγωγή στον προγραμματισμό... 25 Εισαγωγή...27 Πώς να διαβάσετε αυτό το βιβλίο...27 Η δομή των κεφαλαίων...28 Γιατί να μάθω προγραμματισμό;...31 Γιατί να μάθω C;...31

Διαβάστε περισσότερα

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

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 ❶ Προετοιµασία για το 1 ο Εργαστήριο

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16

Διαβάστε περισσότερα

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις 3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις 5 Απριλίου 01 1 Πίνακες Είδαμε ότι δηλώνοντας μία μεταβλητή κάποιου συγκεκριμένου τύπου δεσμεύουμε μνήμη κατάλληλη για να αποθηκευτεί μία οντότητα

Διαβάστε περισσότερα

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι Εισαγωγή Στον Προγραµµατισµό «C» Πίνακες Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Πίνακες στη C Ένας πίνακας στη C είναι

Διαβάστε περισσότερα

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

Δομημένος Προγραμματισμός ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Δομημένος Προγραμματισμός Ενότητα: Εισαγωγή στη C θεωρία Δ. Ε. Μετάφας Τμ. Ηλεκτρονικών Μηχ. Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 2 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Εργαστήριο 2. Τµήµα Πληροφορικής και Τηλεπικοινωνιών

ΕΡΓΑΣΤΗΡΙΟ 2 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Εργαστήριο 2. Τµήµα Πληροφορικής και Τηλεπικοινωνιών ΕΡΓΑΣΤΗΡΙΟ 2 ΕΙΣΑΓΩΓΗ ΣΤΗ C Εργαστήριο 2 Τµήµα Πληροφορικής και Τηλεπικοινωνιών οµή προγράµµατος Οδηγίες προεπεξεργαστή #include... # define... τµήµα δηλώσεων ηλωσεις και ορισµοί µεταβλητών. ηλωσεις συναρτήσεων

Διαβάστε περισσότερα

Master Mind εφαρμογή στη γλώσσα προγραμματισμού C

Master Mind εφαρμογή στη γλώσσα προγραμματισμού C Master Mind εφαρμογή στη γλώσσα προγραμματισμού C Φεβρουάριος/Μάρτιος 2013 v. 0.1 Master-mind: κανόνες παιχνιδιού Στο master mind χρειάζεται να παράγονται κάθε φορά 4 τυχαία σύμβολα από ένα πλήθος 6 διαφορετικών

Διαβάστε περισσότερα

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

Εισαγωγή στην γλώσσα προγραμματισμού C Εισαγωγή στην γλώσσα προγραμματισμού C Χαρακτηριστικά της C Ιδιαίτερα δημοφιλής Έχει χρησιμοποιηθεί για τον προγραμματισμό ευρέος φάσματος συστημάτων και εφαρμογών Γλώσσα μετρίου επιπέδου Φιλοσοφία: Ο

Διαβάστε περισσότερα

5. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Β' μέρος: while - do..while)

5. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Β' μέρος: while - do..while) 5. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Β' μέρος: while - do..while) 5.1 Ο βρόχος while Η εντολή while παρέχει έναν μηχανισμό επανάληψης των δηλώσεων όσο μια συνθήκη είναι αληθινή. Χρησιμοποιείται όταν ο αριθμός των επαναλήψεων

Διαβάστε περισσότερα

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

Τύποι Δεδομένων Είσοδος/Έξοδος Εργαστήριο 2 ο Τύποι Δεδομένων Είσοδος/Έξοδος Εισαγωγή Σκοπός του εργαστηρίου αυτού είναι η εισαγωγή μας στους τύπους δεδομένων της C και η εξοικείωση μας με συναρτήσεις του ρεπερτορίου της ANSI C σχετικές

Διαβάστε περισσότερα

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 3ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 ΕΚΤΥΠΩΣΗ ΚΕΙΜΕΝΟΥ Ένα κείμενο μπορεί να εκχωρηθεί ως τιμή μιας μεταβλητής

Διαβάστε περισσότερα

6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ

6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ 6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ 6.1 Η Έννοια του Πίνακα Συχνά είναι προτιμότερο να αντιμετωπίζουμε ένα σύνολο μεταβλητών σαν ενότητα για να απλοποιούμε το χειρισμό τους. Έτσι οργανώνουμε σύνθετα δεδομένα σε

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 7 ο. Έτσι ο προγραµµατισµός µε τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη του αλγορίθµου και τη µετατροπή του σε σωστό πρόγραµµα.

ΚΕΦΑΛΑΙΟ 7 ο. Έτσι ο προγραµµατισµός µε τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη του αλγορίθµου και τη µετατροπή του σε σωστό πρόγραµµα. ΚΕΦΑΛΑΙΟ 7 ο 1. Επιλογή της κατάλληλης γλώσσας προγραµµατισµού Εκατοντάδες γλώσσες προγραµµατισµού χρησιµοποιούνται όπως αναφέρθηκε σήµερα για την επίλυση των προβληµάτων µε τον υπολογιστή, τη δηµιουργία

Διαβάστε περισσότερα

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 4: Τελεστές Τελεστές: Τελεστής Ανάθεσης 2 Το σύμβολο της ανάθεσης είναι το = Προσοχή: το σύμβολο ελέγχου ισότητας είναι το ==. Η μορφή των προτάσεων ανάθεσης είναι:

Διαβάστε περισσότερα

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

ΑΣΚΗΣΗ 2: ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΣΤΗ C Σκοπός της Άσκησης ΑΣΚΗΣΗ 2: ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΣΤΗ C Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η ανάλυση των βασικών χαρακτηριστικών της Γλώσσας Προγραµµατισµού C: τη δοµή των προγραµµάτων της,

Διαβάστε περισσότερα

Εισαγωγή στους Αλγόριθμους και τον Προγραμματισμό. 3η Διάλεξη Είσοδος Δεδομένων Συνθήκες Βρόχοι Παραδείγματα

Εισαγωγή στους Αλγόριθμους και τον Προγραμματισμό. 3η Διάλεξη Είσοδος Δεδομένων Συνθήκες Βρόχοι Παραδείγματα Εισαγωγή στους Αλγόριθμους και τον Προγραμματισμό 3η Διάλεξη Είσοδος Δεδομένων Συνθήκες Βρόχοι Παραδείγματα Τελεστές συντομογραφίας Τελεστές σύντομης ανάθεσης += παράδειγμα: sum+=10; αντί για: sum = sum

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL 8.1. Εισαγωγή ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PACAL Πως προέκυψε η γλώσσα προγραμματισμού Pascal και ποια είναι τα γενικά της χαρακτηριστικά; Σχεδιάστηκε από τον Ελβετό επιστήμονα της Πληροφορικής Nicklaus Wirth to

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Έλεγχος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Σχεσιακοί Τελεστές και Ισότητας Ένα πρόγραμμα εκτός από αριθμητικές πράξεις

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16

Διαβάστε περισσότερα

Μεταβλητές τύπου χαρακτήρα

Μεταβλητές τύπου χαρακτήρα Μεταβλητές τύπου χαρακτήρα 31 Μαρτίου 014 1 Μεταβλητές τύπου char Για χειρισμό χαρακτήρων η C διαθέτει τον τύπο char. Ο τύπος είναι βαθμωτός δηλαδή ακέραιης αναπαράστασης. Τυπικά έχει μέγεθος ενός byte

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2014-15

Διαβάστε περισσότερα

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 3: Είσοδος / Έξοδος, Βασικοί Τύποι, Δήλωση Μεταβλητών Βασικοί τύποι της C 2 Όνομα Τύπος / Κωδικοποίηση Μέγεθος (bytes) char Χαρακτήρας 1 int Ακέραιος 2 ή 4 (*) float Πραγματικός

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2014-15

Διαβάστε περισσότερα

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Συναρτήσεις εισόδου/εξόδου, τελεστές Η συνάρτηση scanf() είσοδος δεδομένων Διαβάζει από το πληκτρολόγιο (stdin) μορφοποιημένες τιμές μεταβλητών. scanf (ΣΕΙΡΑ_ΕΛΕΓΧΟΥ, δείκτης_μεταβλητής-1,

Διαβάστε περισσότερα

ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004)

ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004) 1 ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004) ιάλεξη 1 1.1 ΕΙΣΑΓΩΓΗ ΣΤΗ FORTRAN 77 Ένα πρόγραµµα σε οποιαδήποτε γλώσσα προγραµµατισµού δεν τίποτα άλλο από µια σειρά εντολών που πρέπει

Διαβάστε περισσότερα

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

Περιεχόμενα. Πρόλογος... 17 Περιεχόμενα Πρόλογος... 17 Κεφάλαιο 1: Εισαγωγή... 19 Πώς να διαβάσετε αυτό το βιβλίο... 20 Η γλώσσα C Ιστορική αναδρομή... 22 Τα χαρακτηριστικά της C... 23 C Μια δομημένη γλώσσα... 23 C Μια γλώσσα για

Διαβάστε περισσότερα

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

Δομημένος Προγραμματισμός Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Δομημένος Προγραμματισμός Ενότητα 1: Εισαγωγή Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά Το έργο

Διαβάστε περισσότερα

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 Αριθμητική στο δυαδικό σύστημα (γενικά) Συμπληρωματικά για δυαδικό σύστημα Η πρόσθεση στηρίζεται στους κανόνες: 0 + 0 = 0, 0 + 1 = 1, 1

Διαβάστε περισσότερα

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

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος http://www.teiser.gr/icd/staff/lantzos lantzos@teiser.gr 1 Πώς δημιουργούμε πρόγραμμα Η/Υ; 1. Ανάλυση του προβλήματος 2. Επινόηση & Σχεδιασμός

Διαβάστε περισσότερα

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ ΣΤΑΘΕΡΕΣ είναι τα μεγέθη που δεν μεταβάλλονται κατά την εκτέλεση ενός αλγόριθμου. Εκτός από τις αριθμητικές σταθερές (7, 4, 3.5, 100 κλπ), τις λογικές σταθερές (αληθής και ψευδής)

Διαβάστε περισσότερα

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

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript Β.1 Τύποι Δεδομένων Όλες οι γλώσσες προγραμματισμού (πρέπει να) υποστηρίζουν πέντε (5) πρωταρχικούς τύπους δεδομένων: char (character) int (integer)

Διαβάστε περισσότερα

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

ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Τρίτη Διάλεξη Εντολές Επιλογής και Επανάληψης Εντολές επιλογής Εντολή if Η πιο απλή μορφή της if συντάσσεται ως εξής: if ( συνθήκη ) Οι εντολές μέσα στα άγκιστρα αποτελούν

Διαβάστε περισσότερα

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

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting) Εργαστήριο 3: 3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting) Η C++, όπως όλες οι γλώσσες προγραμματισμού, χρησιμοποιεί τελεστές για να εκτελέσει τις αριθμητικές και λογικές λειτουργίες.

Διαβάστε περισσότερα

2.2.3 Η εντολή Εκτύπωσε

2.2.3 Η εντολή Εκτύπωσε 2.2.3 Η εντολή Εκτύπωσε Η εντολή Εκτύπωσε χρησιµοποιείται προκειµένου να εµφανίσουµε κάτι στην οθόνη του υπολογιστή. Για τον λόγο αυτό ονοµάζεται και εντολή εξόδου. Ισοδύναµα µπορεί να χρησιµοποιηθεί και

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΣΥΝΟΠΤΙΚΟΣ ΟΔΗΓΟΣ ΓΛΩΣΣΑΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C ΣΥΝΟΠΤΙΚΟΣ ΟΔΗΓΟΣ ΓΛΩΣΣΑΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C 1 Εισαγωγή Ο προγραμματισμός είναι μια διαδικασία επίλυσης προβλημάτων με χρήση Η/Υ. Ένα πρόγραμμα είναι ένα σύνολο εντολών κάποιας γλώσσας προγραμματισμού,

Διαβάστε περισσότερα

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

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 4 η Τελεστές Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης

Διαβάστε περισσότερα

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

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων 2 Βασικές Εντολές 2.1. Εντολές Οι στην Java ακολουθούν το πρότυπο της γλώσσας C. Έτσι, κάθε εντολή που γράφουμε στη Java θα πρέπει να τελειώνει με το ερωτηματικό (;). Όπως και η C έτσι και η Java επιτρέπει

Διαβάστε περισσότερα

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

ΗΥ-150. Προγραμματισμός ΗΥ-150 Εντολές Ελέγχου Ροής Σειριακή εκτέλεση εντολών Όλα τα προγράμματα «γράφονται» χρησιμοποιώντας 3 είδη εντολών: Σειριακές εντολές (sequential built in C) Εντολές απόφασης (if, if/else, switch) Περιλαμβάνει

Διαβάστε περισσότερα

Μεταφερσιμότητα Τα προγράμματα μεταφέρονται εύκολα σε διαφορετικά λειτουργικά συστήματα

Μεταφερσιμότητα Τα προγράμματα μεταφέρονται εύκολα σε διαφορετικά λειτουργικά συστήματα Η ΓΛΩΣΣΑ C Η C είναι μια γλώσσα προγραμματισμού υψηλού επιπέδου η οποία αναπτύχθηκε στις αρχές της δεκαετίας του 70 από τον Dennis Ritchie στα Bell Labs. Η σημερινή μορφή της γλώσσας ακολουθεί το πρότυπο

Διαβάστε περισσότερα

επιµέλεια Θοδωρής Πιερράτος

επιµέλεια Θοδωρής Πιερράτος Βασικές έννοιες προγραµµατισµού Η ύλη που αναπτύσσεται σε αυτό το κεφάλαιο είναι συναφής µε την ύλη που αναπτύσσεται στο 2 ο κεφάλαιο. Όπου υπάρχουν διαφορές αναφέρονται ρητά. Προσέξτε ιδιαίτερα, πάντως,

Διαβάστε περισσότερα

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

Προγραµµατισµός Ι (ΗΥ120) Προγραµµατισµός Ι (ΗΥ120) Διάλεξη 3: Είσοδος / Έξοδος, Βασικοί Τύποι, Δήλωση Μεταβλητών ΑΝΑΚΟΙΝΩΣΕΙΣ 2 Από την επόµενη εβδοµάδα αλλάζουν οι ώρες των εργαστηρίων. Οι νέες ώρες θα ανακοινωθούν σήµερα στη

Διαβάστε περισσότερα

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Δρ. Κόννης Γιώργος Πανεπιστήμιο Κύπρου - Τμήμα Πληροφορικής Προγραμματισμός Στόχοι 1 Να περιγράψουμε τις έννοιες του Υπολογιστικού Προβλήματος και του Προγράμματος/Αλγορίθμου

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Πίνακες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Πίνακες Πολλές φορές θέλουμε να κρατήσουμε στην μνήμη πολλά αντικείμενα

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Έκτη (6 η ) τρίωρη διάλεξη. Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/

Διαβάστε περισσότερα

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 3: Είσοδος / Έξοδος, Βασικοί Τύποι, Δήλωση Μεταβλητών Βασικοί τύποι της C 2 Όνομα Τύπος / Κωδικοποίηση Μέγεθος (bytes) char Χαρακτήρας 1 int Ακέραιος 2 ή 4 (*) float Πραγματικός

Διαβάστε περισσότερα

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

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 ΠΕΡΙΕΧΟΜΕΝΟ ΤΟΥ ΜΑΘΗΜΑΤΟΣ Αρχές

Διαβάστε περισσότερα

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

Γλώσσα Προγραμματισμού C Προγραμματισμός HY: Γλώσσα Προγραμματισμού C Δρ. Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I. Θεσσαλίας Email: savvas@teilar.gr URL: http://teilar.academia.edu/iliassavvas

Διαβάστε περισσότερα

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

ΗΥ-150. Προγραμματισμός ΗΥ-150 Εντολές Ελέγχου Ροής Σειριακή εκτέλεση εντολών Όλα τα προγράμματα «γράφονται» χρησιμοποιώντας 3 είδη εντολών: Σειριακές εντολές (sequential built in C) Εντολές απόφασης (if, if/else, switch) Περιλαμβάνει

Διαβάστε περισσότερα

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος 2012-13 Κων/νος Φλώρος Απλοί τύποι δεδομένων Οι τύποι δεδομένων προσδιορίζουν τον τρόπο παράστασης των

Διαβάστε περισσότερα

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

Οικονόμου Βαγγέλησ Διάλεξη Νο 2. Δομημένοσ Προγραμματιςμόσ - Διάλεξη 2 Οικονόμου Βαγγέλησ Διάλεξη Νο 2 Δομημένοσ Προγραμματιςμόσ - Διάλεξη 2 1 Η έννοια τησ μεταβλητήσ έδωςε λύςη ςτο πρόβλημα τησ αναφοράσ ςτην κύρια μνήμη του υπολογιςτή. Οι γλώςςεσ προγραμματιςμού υποςτηρίζουν

Διαβάστε περισσότερα

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

Δεδομένα, τελεστές, είσοδος/έξοδος 2 Δεδομένα, τελεστές, είσοδος/έξοδος Τι θα δούμε σε αυτό το μάθημα 1. βασικοί τύποι δεδομένων 2. ακέραιοι 3. κινητής υποδιαστολής 4. ο τύπος decimal 5. χαρακτήρες 6. bool 7. string 8. χρήση μεταβλητών

Διαβάστε περισσότερα

Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ )

Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ ) Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ. 25 48) Τι είναι αλγόριθμος; Γ ΛΥΚΕΙΟΥ Αλγόριθμος είναι μία πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο χρονικό διάστημα,

Διαβάστε περισσότερα