ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 1
Μεταβλητές-Σταθερές-Παράμετροι Τα στοιχεία που επεξεργάζεται ο υπολογιστής βρίσκονται στη μνήμη του συστήματος. Για να κληθούν από τη μνήμη ή να καταγραφούν σε αυτή πρέπει να αναφερθούμε στη θέση μνήμης. Η αναφορά μπορεί να γίνει με διάφορους τρόπους. Ένας από αυτούς είναι χρησιμοποιώντας όνομα που προσδιορίζει τη θέση αυτή. Μεταβλητή είναι το όνομα που αναφέρεται σε αυτή τη θέση μνήμης και μπορεί να περιέχει κατάλληλες τιμές. Ως κατάλληλες τιμές εννοούμε το είδος των στοιχείων που αντιπροσωπεύει και επομένως το μέγεθος μνήμης και ο τρόπος διαχείρισης που αντιστοιχεί στο όνομα αυτό. Τέτοια είδη μεταβλητών είναι : char χαρακτήρα, int προσημασμένο ακέραιο, float πραγματικό κινητής υποδιαστολής, double διπλής ακρίβειας πραγματικός αριθμός ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 2
Μεταβλητές-Σταθερές-Παράμετροι Στην C όλες οι μεταβλητές που χρησιμοποιούνται στο πρόγραμμα πρέπει να δηλώνονται. Αυτό σημαίνει ότι δεν μπορεί να χρησιμοποιηθούν μεταβλητές στην εξέλιξη του προγράμματος αν προηγουμένως δεν δηλωθεί το όνομα και ο τύπος της. Παραδείγματα int I,j,k,l,m,n; float a, b, c; char ch1, ch2; double x, y, x; Οι μεταβλητές στην πορεία εξέλιξης του προγράμματος μπορούν να αντικαθιστούν το περιεχόμενό τους με ίδιου τύπου πάντοτε δεδομένα. Οι σταθερές τώρα είναι ότι και οι μεταβλητές με τη διαφορά ότι το περιεχόμενό τους δεν μπορεί να τροποποιηθεί. Δηλώνεται άπαξ δια παντός, π.χ. const float pi=3,14; που σημαίνει ότι στο όνομα pi θα αντιστοιχεί στο εξής η τιμή 3,14 και δεν μπορεί να αλλάξει. Στην C τα προγράμματα δομούνται με συναρτήσεις και απαιτείται μηχανισμός που μεταφέρει τα δεδομένα από τη μία συνάρτηση στην άλλη. Η μεταφορά αυτή γίνεται με την χρήση παραμέτρων. Κάθε συνάρτηση έχει ως ορίσματα παραμέτρους που λαμβάνουν τιμή τη στιγμή που καλούνται. ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 3
Αριθμητικοί & Λογικοί Τελεστές Στα δεδομένα που εισάγονται στο πρόγραμμα γίνεται επεξεργασία. Η επεξεργασίααυτήεξαρτάταιαπότοείδοςτωνδεδομένωνκαιτηνφύση του προβλήματος. Για υπολογιστικό πρόβλημα πραγματοποιούνται αριθμητικοί υπολογισμοί, προσθέσεις, πολλαπλασιασμοί, διαιρέσεις κλπ και χρειάζονται οι αριθμητικοί τελεστές. Για ταξινόμηση ή αναζήτηση γίνονται συγκρίσεις οπότε αξιοποιούνται λογικοί τελεστές. Οι αριθμητικοί τελεστές είναι +, -, *, / και %. Οι τελεστές αυτοί εφαρμόζονται σε κάθε τύπου αριθμητικά δεδομένα εκτός του τελευταίο που χρησιμοποιείται μόνο σε ακεραίους int και δίνει το υπόλοιπο της διαίρεσής τους. Οι λογικοί τελεστές είναι >, >=, <, <=, == και!=. Οι τελεστές αυτοί συγκρίνουν δύο τιμές και ανάλογα επιστρέφουν ως τιμή αληθής ή ψευδής. Στην ίδια κατηγορία λογικών τελεστών συμπεριλαμβάνονται και οι σχεσιακοί τελεστές && (ΚΑΙ), (Η) και! (ΟΧΙ) ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 4
Δομή ελέγχου-επιλογής Η εκτέλεση του προγράμματος γίνεται σειριακά. Δηλαδή εκτελείται η μια εντολή μετά την άλλη με τη σειρά που αναφέρονται στο πρόγραμμα. Ωστόσο πολλές φορές χρειάζεται να εκτελεσθούν ορισμένα τμήματα του προγράμματος μόνο εφόσον ικανοποιούνται κάποιες προϋποθέσεις, διαφορετικά θα εκτελεσθούν κάποια άλλα. Ο μηχανισμός αυτός πραγματοποιείται με τη δομή ελέγχου-επιλογής. Στην C ομηχανισμός αυτός υλοποιείται με την πιο κάτω διάταξη if (λογική έκφραση) εντολή/ές; else εντολή2/ές2; Αν υπάρχουν σε κάθε τμήμα περισσότερες από μία εντολές, αυτές συγκροτούν τμήμα και περιλαμβάνονται μεταξύ {...}. Η else δεν είναι πάντα αναγκαία. Χρειάζεται στην περίπτωση που χρειάζεται να δηλωθούν οι εντολές που θα χρησιμοποιηθούν αν δεν ικανοποιείται η λογική έκφραση της if. ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 5
Ένθεση εντολών if Ορισμένες φορές οι συνθήκες είναι πολύπλοκες και απαιτούν για την κάλυψη όλων των ενδεχομένων πολλούς εξαρτώμενους ελέγχους. Τότε απαιτείται η ένθεση τέτοιων εντολών if. Για παράδειγμα για τον χαρακτηρισμό της επίδοσης έχουμε από 8.5 και πάνω «άριστα», από 6.5 μέχρι 8.4 «πολύ καλά», από 5.0 έως 6.4 «καλά» καικάτωαπό5.0 «ανεπιτυχώς». Για να εμφανισθεί ο αντίστοιχος χαρακτηρισμός ανάλογα με τον βαθμό V θα είχαμε if(v>=8.5) printf( Άριστα ); else if(v>=6.5) printf( Πολύ καλά ); else if (V>=5.0) printf( Καλά ); else printf( Ανεπιτυχώς ); Να θυμάστε ότι η else σχετίζεται πάντα με την κοντινότερή της if. ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 6
switch-case Στην περίπτωση που υπάρχουν πολλές εναλλακτικές λύσης η χρήση της if καταλήγει πολύπλοκη. Δες προηγούμενη περίπτωση. Τότε χρησιμοποιείται η switch-case που συντάσσεται ως εξής switch(τιμή) { case σταθερά1: εντολές case σταθερά2: εντολές.. default εντολές } Η τιμή είναι ακέραιος ή χαρακτήρας. Ανάλογα με την τιμή εκτελείται η case που η σταθερά συμφωνεί με την τιμή αυτή. Η εκτέλεση ολοκληρώνεται με την break. Αν δεν συμφωνήσει με καμιά από τις σταθερές εκτελείται η default. Η τελευταία δεν είναι υποχρεωτική, οπότε δεν εκτελείται καμιά περίπτωση. ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 7
Παράδειγμα της switch-case Ας υποθέσουμε ότι έχουμε να τυπώσουμε ανάλογα με αριθμητικά δοσμένη ημέρα να τυπώσουμε αν είναι Δευτέρα, Τρίτη, Τετάρτη κλπ. π.χ. η 265 ημέρα του χρόνου τι μέρα είναι με δεδομένο ότι η πρώτη ημέρα του χρόνου ήταν Κυριακή. Έχουμε 7 διαφορετικές επιλογές, όσες και οι ημέρες της εβδομάδας. Θα χρησιμοποιήσουμε την switch-case switch(iday%7) { case 0: printf( Η ημέρα είναι Κυριακή ); case 1: printf( Η ημέρα είναι Δευτέρα ); case 2: printf( Η ημέρα είναι Τρίτη ); case 3: printf( Η ημέρα είναι Τετάρτη ); case 4: printf( Η ημέρα είναι Πέμπτη ); case 5: printf( Η ημέρα είναι Παρασκευή ); case 6: printf( Η ημέρα είναι Σάββατο ); } ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 8