Η ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

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

Download "Η ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ"

Transcript

1 Η ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ANSI C ΠΡΟΛΟΓΟΣ Οι σημειώσεις αυτές δεν αποτελούν ένα πλήρες εγχειρίδιο αναφοράς στη C. Απευθύνονται σε αναγνώστες που γνωρίζουν ήδη να προγραμματίζουν σε Pascal που χρησιμοποιείται σαν γλώσσα αναφοράς. Προϋποθέτουν ότι ο αναγνώστης είναι εξοικειωμένος με τα λειτουργικά συστήματα και τα περιβάλλοντα προγραμματισμού. Ο στόχος των σημειώσεων αυτών είναι να αποκτήσει ο αναγνώστης γρήγορα τη δυνατότητα να διαβάζει και να γράφει προγράμματα C. 1

2 ΠΡΟΛΟΓΟΣ 1 ΚΕΦΑΛΑΙΟ ΕΙΣΑΓΩΓΗ TI ΕΙΝΑΙ ΟΝΟΜΑ ΛΕΞΕΙΣ ΚΛΕΙΔΙΑ ΔΕΔΟΜΕΝΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑ ΤΟ ΠΡΩΤΟ ΠΡΟΓΡΑΜΜΑ LAB01.C 5 ΚΕΦΑΛΑΙΟ ΕΙΣΑΓΩΓΗ LAB2_01.C (ΤΟ ΜΙΚΡΟΤΕΡΟ ΔΥΝΑΤΟ ΠΡΟΓΡΑΜΜΑ) LAB2_02.C (ΕΚΤΥΠΩΝΕΙ ΜΙΑ ΣΕΙΡΑ) LAB2_03.C (ΕΚΤΥΠΩΝΕΙ ΠΕΡΙΣΣΟΤΕΡΕΣ ΑΠΟ ΜΙΑ ΣΕΙΡΕΣ) LAB2_04.C (ΜΕΤΑΒΛΗΤΕΣ ΚΑΙ ΑΚΕΡΑΙΟΙ ΑΡΙΘΜΟΙ) LAB2_05.C (ΣΧΟΛΙΑ ΣΤΗ C) LAB2_06.C (ΠΑΡΑΓΡΑΦΟΠΟΙΗΣΗ) 10 ΚΕΦΑΛΑΙΟ ΕΙΣΑΓΩΓΗ LAB3_01.C (ΧΡΗΣΗ ΕΝΤΟΛΗΣ WHILE) LAB3_02.C (ΧΡΗΣΗ ΕΝΤΟΛΗΣ DO WHILE) LAB3_03.C (Η ΕΠΑΝΑΛΗΨΗ FOR) LAB3_04.C (ΧΡΗΣΗ ΔΟΜΩΝ ΕΛΕΓΧΟΥ IF THEN ELSE) LAB3_05.C (Η ΑΠΟΦΑΣΗ ΤΗΣ ΑΠΟΦΑΣΗΣ NESTED IF) LAB3_06.C (BREAK KAI CONTINUE) LAB3_07.C (Η ΠΡΟΤΑΣΗ SWITCH) LAB3_08.C (ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΤΡΟΠΗΣ ΘΕΡΜΟΚΡΑΣΙΩΝ o C σε o F) 20 ΚΕΦΑΛΑΙΟ ΕΙΣΑΓΩΓΗ LAB4_01.C (ΑΡΙΘΜΗΤΙΚΕΣ ΕΚΦΡΑΣΕΙΣ INT) LAB4_02.C (ΠΕΡΙΣΣΟΤΕΡΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ) LAB4_03.C (ΜΕΤΑΤΡΟΠΕΣ ΤΥΠΩΝ ΔΕΔΟΜΕΝΩΝ) LAB4_04.C (ΛΟΓΙΚΕΣ ΕΚΦΡΑΣΕΙΣ) 25 ΚΕΦΑΛΑΙΟ ΕΙΣΑΓΩΓΗ LAB5_01.C (ΑΠΛΕΣ ΣΥΝΑΡΤΗΣΕΙΣ) LAB5_02.C (ΕΠΙΣΤΡΟΦΗ ΤΙΜΗΣ ΜΕΤΑΒΛΗΤΩΝ) LAB5_03.C (ΣΥΝΑΡΤΗΣΕΙΣ ΜΕ ΔΗΛΩΣΕΙΣ ΤΥΠΟΥ) LAB5_04.C (ΕΙΔΗ ΜΕΤΑΒΛΗΤΩΝ, ΕΜΒΕΛΕΙΑ) 36 2

3 5.6 LAB5_05.C (ΠΡΟΤΥΠΑ ΣΥΝΑΡΤΗΣΕΩΝ) LAB5_06.C (ΑΝΑΔΡΟΜΗ) 41 ΚΕΦΑΛΑΙΟ ΕΙΣΑΓΩΓΗ LAB6_01.C (ΟΡΙΣΜΟΣ ΣΥΜΒΟΛΟΣΕΙΡΩΝ) LAB6_02.C (ΣΥΝΑΡΤΗΣΕΙΣ ΣΥΜΒΟΛΟΣΕΙΡΩΝ) LAB6_03.C (ΠΙΝΑΚΕΣ ΑΚΕΡΑΙΩΝ ΚΑΙ ΠΡΑΓΜΑΤΙΚΩΝ) LAB6_04.C (ΕΠΙΣΤΡΟΦΗ ΠΟΛΛΑΠΛΩΝ ΔΕΔΟΜΕΝΩΝ) LAB6_05.C (ΠΟΛΥΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ) 51 ΚΕΦΑΛΑΙΟ ΕΙΣΑΓΩΓΗ LAB7_01.C (ΟΡΙΣΜΟΣ ΣΤΑΘΕΡΩΝ) LAB7_02.C (ΟΡΙΣΜΟΣ ΜΑΚΡΟΕΝΤΟΛΩΝ) LAB7_02.C (ΑΠΑΡΙΘΜΗΤΕΣ ΜΕΤΑΒΛΗΤΕΣ) 57 ΚΕΦΑΛΑΙΟ ΕΙΣΑΓΩΓΗ LAB8_01.C (ΟΡΙΣΜΟΣ ΔΕΙΚΤΗ) LAB8_02.C (ΔΕΙΚΤΕΣ ΣΥΝΕΧΕΙΑ) LAB8_03.C (ΔΕΙΚΤΕΣ ΠΑΡΑΜΕΤΡΟΙ ΣΥΝΑΡΤΗΣΕΩΝ) 64 ΚΕΦΑΛΑΙΟ ΕΙΣΑΓΩΓΗ LAB9_01.C (ΑΡΧΕΙΟ ΚΕΦΑΛΙΔΑΣ STDIO.H) LAB9_02.C (ΕΙΣΟΔΟΣ / ΕΞΟΔΟΣ ΣΕ ΧΑΜΗΛΟΤΕΡΟ ΕΠΙΠΕΔΟ) LAB9_03.C (ΕΙΣΟΔΟΣ ΑΚΕΡΑΙΩΝ) LAB9_04.C (ΕΙΣΟΔΟΣ ΣΥΜΒΟΛΟΣΕΙΡΩΝ) 72 ΚΕΦΑΛΑΙΟ ΕΙΣΑΓΩΓΗ LAB10_01.C (ΕΓΓΡΑΦΕΣ) LAB10_03.C (ΕΝΩΣΕΙΣ) 74 3

4 ΚΕΦΑΛΑΙΟ ΕΙΣΑΓΩΓΗ Το κεφάλαιο αυτό αποτελεί μια εισαγωγή στον προγραμματισμό με τη γλώσσα C. Αναπτύσσονται βασικές έννοιες, οι οποίες είναι απαραίτητες προκειμένου ο αναγνώστης να μπορέσει να κατανοήσει τη συγκεκριμένη γλώσσα προγραμματισμού και να μπορέσει να προχωρήσει στη δημιουργία προγραμμάτων με αυτή. Το κεφάλαιο αυτό περιέχει τον κώδικα του προγράμματος lab01.c, το οποίο είναι και η αφορμή για την διδασκαλία των παρακάτω θεμάτων: - Τι είναι όνομα μεταβλητών, συναρτήσεων, τύπων δεδομένων - Λέξεις κλειδιά - Δεδομένα και πρόγραμμα - Το πρώτο πρόγραμμα (lab01.c ) 1.2 TI ΕΙΝΑΙ ΟΝΟΜΑ Για να μπορέσετε να προγραμματίσετε οτιδήποτε σε μιά γλώσσα προγραμματισμού πρέπει τουλάχιστο να ξέρετε να δίνετε ονόματα. Ονόματα μεταβλητών, συναρτήσεων, τύπων δεδομένων, κλπ. Στη γλώσσα C ένα όνομα είναι συνδυασμός αλφαριθμητικών χαρακτήρων, με τον πρώτο χαρακτήρα να είναι γράμμα ή _ και οι υπόλοιποι χαρακτήρες μπορεί να είναι γράμματα ή αριθμοί. Δύο βασικοί κανόνες ονοματοδοσίας είναι οι παρακάτω. 1. Τα κεφαλαία γράμματα είναι διαφορετικά από τα πεζά. Το όνομα μεταβλητής INDEX δεν είναι το ίδιο με το index. Επίσης και τα δύο είναι διαφορετικά από το όνομα InDeX. Τα τρία αυτά ονόματα μπορεί να αναφέρονται σε διαφορετικές μεταβλητές. 2. Σύμφωνα με το πρότυπο της ANSI-C ένας μεταφραστής θεωρεί σημαντικά τουλάχιστο 31 αλφαριθμητικούς χαρακτήρες για να καθορίσει τα ονόματα ενός προγράμματος. Εάν χρησιμοποιηθούν πάνω από 31 τότε μπορεί να αγνοηθούν από τον μεταφραστή. 1.3 ΛΕΞΕΙΣ ΚΛΕΙΔΙΑ Υπάρχουν 32 λέξεις κλειδιά στη C. Οι λέξεις αυτές έχουν προκαθορισμένο νόημα και βοηθούν στην καθοδήγηση του μεταφραστή για την παραγωγή του εκτελέσιμου κώδικα. Επομένως δεν μπορούν να χρησιμοποιηθούν για άλλο σκοπό σε ένα πρόγραμμα C. Ο κατάλογος των λέξεων αυτών δίνεται παρακάτω. Προσοχή στο ότι οι λέξεις γράφονται πάντα με πεζά γράμματα. Εκτός από αυτές τις λέξεις κλειδιά ο κάθε μεταφραστής μπορεί να έχει ορισμένες επιπλέον λέξεις που θα εξηγούνται στα εγχειρίδια του. auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if static while 4

5 1.4 ΔΕΔΟΜΕΝΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑ Ο προγραμματιστής πρέπει να ασχοληθεί με δύο πράγματα, τα δεδομένα και το πρόγραμμα. Τα δεδομένα και το πρόγραμμα βρίσκονται σε στενή αλληλεξάρτηση έτσι ώστε η δόμηση του προγράμματος εξαρτάται από τους τύπους και τις δομές δεδομένων που υποστηρίζει μιά γλώσσα. Οι προγραμματιστικές μέθοδοι και οι μέθοδοι δόμησης δεδομένων παρουσιάζονται παράλληλα. Όλα τα προγράμματα που παρουσιάζονται είναι πλήρη έτσι ώστε να μπορούμε να τα εκτελέσουμε και να τα ελέγξουμε αυτόνομα. τελευταίο κεφάλαιο. Τα αποτελέσματα εκτέλεσης των προγραμμάτων δίνονται σε μορφή σχολίων στο τέλος κάθε προγράμματος. 1.5 ΤΟ ΠΡΩΤΟ ΠΡΟΓΡΑΜΜΑ LAB01.C Είναι καιρός να φορτώσετε και να εκτελέσετε το πρώτο σας πρόγραμμα με το όνομα lab01.c αν δεν το έχετε κάνει ήδη, έτσι ώστε να βεβαιωθείτε ότι το περιβάλλον προγραμματισμού σας δουλεύει σωστά αλλά και να μάθετε τα ιδιαίτερα χαρακτηριστικά του. Μην ανησυχείτε αν δεν καταλαβαίνετε τι κάνει το πρόγραμμα, θα το αντιληφθείτε σύντομα. Το κείμενο του προγράμματος είναι όπως παρακάτω και το αποτέλεσμά του, μετά από επιτυχή μετάφραση και εκτέλεση, θα είναι η εμφάνιση στην οθόνη των μηνυμάτων lab01.c main() int index; for (index = 0;index < 7;index = index + 1) printf("first example program.\n"); Μηνύματα στην οθόνη: First example program. First example program. First example program. First example program. First example program. First example program. First example program. 5

6 ΚΕΦΑΛΑΙΟ ΕΙΣΑΓΩΓΗ Το εργαστήριο αυτό αποτελεί ένα πρώτο βήμα στη γλώσσα προγραμματισμού C. Περιλαμβάνει τους κώδικες έξι προγραμμάτων, από τα οποία τα τρία πρώτα είναι απλά παραδείγματα προγραμμάτων, ενώ τα άλλα τρία δίνουν στον αναγνώστη συμβουλές για θέματα όπως τη δήλωση μεταβλητών, την εμφάνιση αριθμών, την εισαγωγή σχολίων και την παραγραφοποίηση. Τα προγράμματα, τα οποία περιέχονται στο εργαστήριο 2 είναι τα εξής: - lab2_01.c (το μικρότερο δυνατό πρόγραμμα) - lab2_02.c (εκτυπώνει μια σειρά) - lab2_03.c (εκτυπώνει περισσότερες από μία σειρές) - lab2_04.c (μεταβλητές και ακέραιοι αριθμοί) - lab2_05.c (σχόλια στη C) - lab2_06.c (παραγραφοποίηση) 2.2 LAB2_01.C (ΤΟ ΜΙΚΡΟΤΕΡΟ ΔΥΝΑΤΟ ΠΡΟΓΡΑΜΜΑ) Το πρόγραμμα που βρίσκεται αποθηκευμένο στο αρχείο lab2_01.c είναι το απλούστερο δυνατό πρόγραμμα σε C. Δεν υπάρχει τρόπος να απλοποιήσουμε άλλο αυτό το πρόγραμμα ή να παραλείψουμε κάτι. Δυστυχώς το πρόγραμμα αυτό δεν κάνει τίποτε. Η λέξη κλειδί main είναι πολύ σημαντική και πρέπει να εμφανιστεί μία φορά σε κάθε πρόγραμμα C. Πρόκειται για το σημείο που αρχίζει η εκτέλεση του προγράμματος. Δεν είναι απαραίτητο να είναι η πρώτη πρόταση του κειμένου του προγράμματος αλλά πρέπει να υπάρχει κάπου ως σημείο εισόδου του μεταφραστή. Τη λέξη κλειδί main ακολουθεί ένα ζευγάρι παρενθέσεων που υποδεικνύει στον μεταφραστή ότι το main είναι μία συνάρτηση. Οι συναρτήσεις συζητούνται παρακάτω, για την ώρα απλά ξέρουμε ότι οι παρενθέσεις είναι απαραίτητες. Το ζευγάρι των αγκυλών χρησιμοποιείται για να ορίσει τα όρια του κειμένου του προγράμματος. Οι προτάσεις του προγράμματος βρίσκονται ανάμεσα στις αγκύλες. Στη περίπτωση του προγράμματος lab2_1.c διαπιστώνουμε ότι το πρόγραμμα δεν περιλαμβάνει προτάσεις και γι αυτό δεν κάνει τίποτε. Είναι όμως ένα κανονικό πρόγραμμα C που μπορείτε να μεταφράσετε και να εκτελέσετε. lab2_01.c main() 2.3 LAB2_02.C (ΕΚΤΥΠΩΝΕΙ ΜΙΑ ΣΕΙΡΑ) Το πρόγραμμα του αρχείου lab2_02.c είναι αρκετά πιο ενδιαφέρον από την στιγμή που περιλαμβάνει μια εκτελέσιμη πρόταση μεταξύ των αγκυλών. Η πρόταση είναι μία κλήση σε συνάρτηση που περιλαμβάνεται στη standard βιβλιοθήκη εισόδου / εξόδου της C. Η συγκεκριμένη συνάρτηση εμφανίζει μηνύματα στην οθόνη. Το μήνυμα τοποθετείται ανάμεσα σε διπλά εισαγωγικά και στη συνέχεια ανάμεσα στις παρενθέσεις της printf. Προσοχή στο ελληνικό ερωτηματικό στο τέλος της γραμμής. Είναι η τελεία σε μια πρόταση C και είναι αναγκαίο για τον μεταφραστή προκειμένου να θεωρήσει τη πρόταση πλήρη. 6

7 lab2_02.c main() printf("this is a line of text to output."); Μηνύματα στην οθόνη: This is a line of text to output. 2.4 LAB2_03.C (ΕΚΤΥΠΩΝΕΙ ΠΕΡΙΣΣΟΤΕΡΕΣ ΑΠΟ ΜΙΑ ΣΕΙΡΕΣ) Το πρόγραμμα του αρχείου lab2_03.c παρουσιάζει μια απλή αλλά σημαντική έννοια, αυτή της ακολουθίας. Το πρόγραμμα περιέχει τέσσερις προτάσεις, όπου η κάθε μία είναι μία κλήση της συνάρτησης printf. Η σειρά εκτέλεσης των προτάσεων καθορίζεται από την σειρά που είναι γραμμένες στο κείμενο του προγράμματος, έτσι ώστε η εκτέλεση ξεκινά από την πρώτη γραμμή και ακολουθούν η δεύτερη, η τρίτη και τελικά η τέταρτη. Σημειώστε τον χαρακτήρα '\' (backslash) στο τέλος των μηνυμάτων. Το backslash χρησιμοποιείται γιά να ειδοποιήσει τον μεταφραστή οτι οι χαρακτήρες που ακολουθούν δεν είναι εκτυπώσιμοι αλλά αποτελούν χαρακτήρες ελέγχου. Ετσι ο χαρακτήρας 'n' σημαίνει νέα γραμμή (new line, carriage return / line feed) έτσι ώστε ο δρομέας της οθόνης μετακινείται μιά γραμμή προς τα κάτω και τοποθετείται στην πρώτη θέση της νέας γραμμής. Το '\n' θα μπορούσε να είχε τοποθετηθεί οπουδήποτε μέσα στο μήνυμα και να το κόψει σε δύο γραμμές. lab2_03.c main() printf("this is a line of text to output.\n"); printf("and this is another "); printf("line of text.\n\n"); printf("this is a third line.\n"); Τώρα το πρόγραμμα μπορεί να περιγραφεί πλήρως. Η πρώτη πρόταση εμφανίζει ένα μήνυμα και πηγαίνει σε νέα γραμμή. Η δεύτερη πρόταση εμφανίζει μήνυμα αλλά δεν αλλάζει γραμμή έτσι ώστε η τρίτη πρόταση συνεχίζει την εμφάνιση του δικού της μηνύματος στην ίδια γραμμή. Τελειώνει όμως με δύο αλλαγές γραμμής έτσι ώστε έχουμε μία κενή γραμμή στην οθόνη. Η τελευταία γραμμή τυπώνει το μήνυμά της, αλλάζει γραμμή και το πρόγραμμα τερματίζει. Μετά την εκτέλεση η οθόνη πρέπει να περιέχει τα παρακάτω: This is a line of text to output. And this is another line of text. This is a third line. Μπορείτε τώρα να μεταβάλετε τα μηνύματα, να προσθέσετε και άλλες προτάσεις εμφάνισης μηνυμάτων και να πειραματιστείτε με τις μορφοποιήσεις. 7

8 2.5 LAB2_04.C (ΜΕΤΑΒΛΗΤΕΣ ΚΑΙ ΑΚΕΡΑΙΟΙ ΑΡΙΘΜΟΙ) Το πρόγραμμα του αρχείου lab2_04.c είναι το πρώτο παράδειγμα διαχείρισης αριθμητικών δεδομένων. Η αρχή του προγράμματος πρέπει να είναι κατανοητή. Το πρώτο καινούργιο στοιχείο είναι η δήλωση μεταβλητής int index; Η δήλωση αυτή σημαίνει οτι το πρόγραμμα χρησιμοποιεί μια ακέραια (integer) μεταβλητή με τό όνομα index. Οι ακέραιες μεταβλητές μπορούν να πάρουν τιμές μεταξύ των ορίων και 32767, στους περισσότερους μεταφραστές προσωπικών υπολογιστών. Το όνομα μπορεί να είναι οποιοδήποτε συμφωνεί με τους κανόνες ονοματοδοσίας της C και η δήλωση τερματίζεται με το οριοθετικό πρότασης. Η δήλωση μεταβλητής δεν σημαίνει αυτόματη εκχώρηση τιμής. Θα δούμε αργότερα ότι η δήλωση μπορεί να συνοδεύεται από εκχώρηση, καθώς επίσης και ότι μπορούμε να έχουμε πολλαπλές δηλώσεις στην ίδια πρόταση. Μετά από τη δήλωση της μεταβλητής ακολουθούν έξι προτάσεις που μπορούν να ομαδοποιηθούν ανά δύο. Η πρώτη πρόταση κάθε ομάδας εκχωρεί μια ακέραια τιμή στη μεταβλητή ενώ η δεύτερη πρόταση εμφανίζει στην οθόνη την τρέχουσα τιμή της μεταβλητής. Για παράδειγμα η πρώτη πρόταση εκχώρησης δίνει στην μεταβλητή την τιμή 13. index = 13; Η αμέσως επόμενη πρόταση εμφανίζει την τιμή αυτή με τη βοήθεια της συνάρτησης printf (το πως γίνεται αυτό ακριβώς εξηγείται παρακάτω). Στη συνέχεια η μεταβλητή λαμβάνει την τιμή 27 και τελικά την τιμή 10. Πρέπει να είναι πια καθαρό ότι η μεταβλητή index αντιστοιχεί σε μια θέση μνήμης ικανή να αποθηκεύσει έναν ακέραιο αριθμό στη μορφή συμπληρώματος του 2 και μεγέθους 2 bytes. Είναι επίσης προφανές ότι κάθε νέα τιμή που εκχωρείται στη μεταβλητή έχει ως αποτέλεσμα την εγγραφή πάνω στην παλιά (overwite) και άρα την απώλεια της προηγούμενης τιμής έτσι ώστε η θέση μνήμης να κρατά πάντοτε την τελευταία, την τρέχουσα τιμή της μεταβλητής. lab2_04.c main() int index; index = 13; printf("the value of the index is %d\n",index); index = 27; printf("the value of the index is %d\n",index); index = 10; printf("the value of the index is %d\n",index); Ας γυρίσουμε στην εμφάνιση των αριθμών στην οθόνη. Διαπιστώνουμε ότι όλες οι προτάσεις printf είναι ίδιες και ξεκινούν ακριβώς όπως και οι προτάσεις εμφάνισης μηνυμάτων που είδαμε μέχρι τώρα. Η πρώτη διαφορά εμφανίζεται στη χρήση του χαρακτήρα '%'. Είναι ένας χαρακτήρας ελέγχου, αντίστοιχος με τον '\', που ειδοποιεί τον μεταφραστή ότι θα πρέπει να εμφανίσει την τιμή μιας μεταβλητής και όχι ένα μήνυμα. Ο χαρακτήρας που ακολουθεί αμέσως μετά το '%', δηλαδή στη περίπτωσή μας το 'd', καθορίζει τον τύπο της μεταβλητής που η τιμή της θα εμφανιστεί. Συγκεκριμένα το 'd' ορίζει ότι πρόκειται να εμφανιστεί μια δεκαδική ακέραια μεταβλητή. Μετά το 'd' βρίσκουμε το ήδη γνωστό '\n' και το διπλό εισαγωγικό που συμβολίζει το τέλος του μηνύματος. 8

9 Μετά το μήνυμα υπάρχει κόμμα και στη συνέχεια το όνομα της μεταβλητής της οποίας η τιμή θα εμφανιστεί. Εδώ βρίσκει η printf τις τιμές που θα εμφανίσει την οθόνη. Θα μπορούσαμε μέσα στο ίδιο μήνυμα να είχαμε περισσότερα '%d' καθώς επίσης και αντίστοιχα ονόματα μεταβλητών χωρισμένα με κόμματα στο τέλος. Το μήνυμα επομένως καθορίζει τη μορφή της εκτύπωσης και οι μεταβλητές καθορίζουν τις τιμές που θα εμφανιστούν. Πρέπει φυσικά να είμαστε προσεκτικοί έτσι ώστε ο αριθμός των '%' σε ένα μήνυμα να είναι ίδιος με τον αριθμό των μεταβλητών που ακολουθούν. Περισσότερα σχετικά με την διαμορφωμένη είσοδο και έξοδο θα καλυφθούν σε κεφάλαια που ακολουθούν. Για την ώρα το βασικό είναι να μπορεί κανείς να εμφανίζει στην οθόνη τα αποτελέσματα του προγράμματος που εκτελεί. 2.6 LAB2_05.C (ΣΧΟΛΙΑ ΣΤΗ C) Το πρόγραμμα που βρίσκεται στο αρχείο lab2_05.c παρουσιάζει την χρήση σχολίων σε προγράμματα της C. Τα σχόλια προστίθενται για να βοηθήσουν στη τεκμηρίωση και αναγνωσιμότητα του προγράμματος. Τα σχόλια απευθύνονται στον αναγνώστη του κειμένου του προγράμματος. Δεν απευθύνονται στον χρήστη του προγράμματος, δηλαδή δεν είναι μηνύματα που εμφανίζονται στην οθόνη. Επίσης δεν απευθύνονται στον μεταφραστή, αφού αγνοούνται τελείως από αυτόν. Ένα σχόλιο της C ξεκινά με τον συνδυασμό χαρακτήρων '/*' και τελειώνει με τον συνδυασμό '*/'. Το πρώτο σχόλιο εμφανίζεται πριν την αρχή του προγράμματος. Είναι καλό τα προγράμματά μας να έχουν μια επικεφαλίδα η οποία να εξηγεί τι κάνει το πρόγραμμα. Υπάρχουν ακόμη δύο σχόλια ακριβώς πριν και μετά τις αγκύλες. Τα σχόλια σε αυτά τα σημεία συνηθίζονται όταν έχουμε μεγάλα προγράμματα με πολλά ζεύγη αγκυλών, όπως θα δούμε παρακάτω, όπου είναι καλό να γίνεται καθαρή η λειτουργία που εκτελείται μεταξύ των συγκεκριμένων αγκυλών. Επίσης σχόλια τοποθετούνται στο δεξιό περιθώριο του κειμένου του προγράμματος για να εξηγήσουν δυσνόητο κώδικα. Υπάρχει και ένα τελευταίο σχόλιο που καταλαμβάνει τέσσερις γραμμές ανάμεσα σε δύο εκτελέσιμες προτάσεις του προγράμματος. Αυτό είναι νόμιμο αφού ένα σχόλιο μπορεί να συνεχίσει για όσες γραμμές θέλουμε. Να σημειωθεί όμως ότι αν κατά λάθος περιληφθούν προτάσεις στα κενά που υπάρχουν στο αριστερό μέρος του σχολίου αυτές θα αγνοηθούν γιατί θα θεωρηθούν τμήμα του σχολίου. Αυτή η κατά λάθος απενεργοποίηση προτάσεων έχει και τη χρήσιμη πλευρά της. Πρόκειται για το λεγόμενο Comment Out, τεχνική που χρησιμοποιείται ευρύτατα στη φάση της διόρθωσης ενός προγράμματος. Έτσι μπορούμε να απενεργοποιούμε πρόσκαιρα και επιλεκτικά ομάδες εντολών θέτοντάς τις μεταξύ δύο οριοθετών ενός σχολίου. lab2_05.c /* This is a comment ignored by the compiler */ main() /* Another comment ignored by the compiler */ printf("we are looking at "); /* A sideline */ printf("how comments are "); printf("used in C.\n"); /* One more comment for effect */ /* A comment is allowed to be continued on another line */ Προσπαθήστε στο παραπάνω πρόγραμμα να απενεργοποιήσετε προτάσεις θέτοντάς τες μέσα σε σχόλια. Μερικοί μεταφραστές της C επιτρέπουν πολλαπλά επίπεδα σχολίων, έτσι ώστε να μπορεί κανείς να απομονώνει μεγάλα τμήματα προγράμματος μαζί με τα σχόλια αν αυτό είναι 9

10 αναγκαίο. Δοκιμάστε τον μεταφραστή σας σε αυτό το σημείο. Προσοχή στο οτι τα πολλαπλά επίπεδα σχολίων δεν καλύπτονται από την ANSI C. 2.7 LAB2_06.C (ΠΑΡΑΓΡΑΦΟΠΟΙΗΣΗ) Τα προγράμματα που βρίσκονται στο αρχεία lab2_06a.c και lab2_06b.c κάνουν ακριβώς την ίδια δουλειά. Η διαφορά τους βρίσκεται στον τρόπο που έχουν γραφτεί, στη μορφή τους δηλαδή. Βέβαια το δεύτερο παράδειγμα είναι μάλλον ακραίο γιά να δείξει την αξία της καλής παραγραφοποίησης. Όμως σε μεγαλύτερα προγράμματα η τακτική παραγραφοποίηση είναι πολύ σημαντική όχι μόνο από αισθητική άποψη αλλά και κυρίως γιατί διευκολύνει πολύ στη διόρθωση. Εκτός από την παραγραφοποίηση των προτάσεων μεγάλη σημασία έχει και η ομοιόμορφη παραγραφοποίηση των σχολίων. lab2_06a.c main() /* Main program starts here */ printf("good form "); printf("can aid in "); printf("understanding a program.\n"); printf("and bad form "); printf("can make a program "); printf("unreadable.\n"); /* Main program stops here */ lab2_06b.c main()/* Main program starts here */ printf("good form ");printf("can aid in "); printf("understanding a program.\n"); printf("and bad form "); printf("can make a program "); printf("unreadable.\n");/* Main program stops here 10

11 ΚΕΦΑΛΑΙΟ ΕΙΣΑΓΩΓΗ Το κεφάλαιο αυτό ασχολείται με τις δομές ελέγχου. Σκοπός του κεφαλαίου αυτού είναι να διδάξει στον αναγνώστη τις πολύ χρήσιμες για τον προγραμματισμό εντολές while, for, if, else. Τα πρώτα τρία προγράμματα ασχολούνται με τις επαναληπτικές δομές while, dowhile και for. Το τέταρτο και το πέμπτο κάνουν λόγο για τη δομή ελέγχου if/else, ενώ στα υπόλοιπα τρία γίνεται η παρουσίαση των προτάσεων break και continue, switch. Τα προγράμματα, τα οποία περιέχονται στο κεφάλαιο 3 είναι τα εξής: - lab3_01.c (χρήση εντολής while) - lab3_02.c (χρήση εντολής do while) - lab3_03.c (χρήση εντολής for) - lab3_04.c (χρήση δομών ελέγχου if then else) - lab3_05.c (nested if) - lab3_06.c (χρήση εντολής break και continue) - lab3_07.c (χρήση εντολής switch) - lab3_08.c (πρόγραμμα μετατροπής θερμοκρασιών) 3.2 LAB3_01.C (ΧΡΗΣΗ ΕΝΤΟΛΗΣ WHILE) Η επανάληψη while εκτελείται όσο η συνθήκη ελέγχου είναι αληθής. Όταν η συνθήκη ελέγχου γίνει ψευδής η επανάληψη διακόπτεται. Το πρόγραμμα του αρχείου lab3_01.c δίνει ένα παράδειγμα της επανάληψης while. lab3_01.c /* This is an example of a "while" loop */ main() int count; count = 0; while (count < 6) printf("the value of count is %d\n",count); count = count + 1; Το πρόγραμμα ξεκινά με τα σχόλια τη συνάρτηση main και στη συνέχεια ορίζεται η ακέραια μεταβλητή count. Το πρόγραμμα αρχικοποιεί την μεταβλητή στη τιμή 0 και στη συνέχεια ξεκινά την επανάληψη while. Η σύνταξη της επανάληψης φαίνεται καθαρά. while (έκφραση) πρόταση;... πρόταση; Η λέξη κλειδί while ακολουθείται από μία έκφραση που περικλείεται σε παρενθέσεις και αυτή ακολουθείται από το σώμα της επανάληψης που είναι μία σύνθετη πρόταση (compound statement), δηλαδή μία ή περισσότερες προτάσεις. Αν η πρόταση είναι μόνο μία ή είναι δομή προτάσεων τότε δεν απαιτούνται αγκύλες. Αλλιώς, αν δηλαδή πρόκειται για ακολουθία προτάσεων, οι προτάσεις που αποτελούν τη σύνθετη πρόταση ομαδοποιούνται με αγκύλες. Όσο η έκφραση είναι αληθής οι προτάσεις του σώματος εκτελούνται συνεχώς. Στο παράδειγμα οι προτάσεις θα εκτελεστούν μέχρι που ο μετρητής count να πάρει την τιμή 6. Εφ' όσον ο μετρητής αυξάνεται κατά 1 σε κάθε επανάληψη οι προτάσεις θα εκτελεστούν 6 11

12 φορές. Στη συνέχεια η επανάληψη θα τερματιστεί και η εκτέλεση του προγράμματος θα συνεχιστεί με την εκτέλεση της πρότασης αμέσως μετά το σώμα της επανάληψης. 'Έτσι το αποτέλεσμα στην οθόνη θα είναι: The value of count is 0 The value of count is 1 The value of count is 2 The value of count is 3 The value of count is 4 The value of count is 5 Δύο σημεία πρέπει να τονιστούν σχετικά με την επανάληψη while. Πρώτο, εάν η μεταβλητή count έχει αρχική τιμή κάποιον αριθμό μεγαλύτερο του 5 τότε η συνθήκη ελέγχου θα είναι από την αρχή ψευδής και συνεπώς η σύνθετη πρόταση του σώματος της επανάληψης δεν θα εκτελεστεί ποτέ. Το πρόγραμμα θα συνεχίσει από την πρώτη εντολή μετά την επανάληψη while. Δεύτερο, εάν η τιμή της μεταβλητής count είναι τέτοια που η συνθήκη ελέγχου είναι αληθής και στη συνέχεια η τιμή αυτή δεν αλλάζει κατά την εκτέλεση της επανάληψης τότε η επανάληψη δεν μπορεί να τερματίσει (infinite loop) και το πρόγραμμα δεν μπορεί να τελειώσει κανονικά. Σαν εφαρμογή μπορείτε να πειραματιστείτε μεταβάλλοντας παρακάτω: ένα ή περισσότερα από τα - το όριο τερματισμού (το 6) στη συνθήκη ελέγχου - το σύμβολο ανισότητας από μεγαλύτερο σε μικρότερο - την αρχική τιμή του μετρητή από 0 σε κάποιον άλλο ακέραιο - το βήμα αύξησης, από +1 σε +ή- κάποιον ακέραιο Προσπαθήστε να υπολογίσετε τον αριθμό των επαναλήψεων και τις τιμές του μετρητή πριν εκτελέσετε κάθε νέα έκδοση του προγράμματος. 3.3 LAB3_02.C (ΧΡΗΣΗ ΕΝΤΟΛΗΣ DO WHILE) Μια παραλλαγή της επανάληψης while loop είναι η επανάληψη do-while που θα εξηγηθεί με τη βοήθεια του προγράμματος που είναι αποθηκευμένο στο αρχείο lab3_02.c. Το πρόγραμμα είναι περίπου ίδιο με το προηγούμενο με τη διαφορά οτι η συνθήκη ελέγχου έχει τώρα μεταφερθεί από την είσοδο στην έξοδο και η αρχή της επανάληψης ορίζεται από την λέξη κλειδί do. lab3_02.c /* This is an example of a do-while loop */ main() int i; i = 0; do printf("the value of i is now %d\n",i); i = i + 1; while (i < 5); 12

13 Η σύνταξη της σύνθετης πρότασης που αποτελεί το σώμα της επανάληψης do-while είναι ακριβώς ίδια με αυτή της επανάληψης while. Η επανάληψη συνεχίζεται όσο η συνθήκη ελέγχου είναι αληθής και τερματίζεται όταν η συνθήκη ελέγχου γίνει ψευδής. Τότε εκτελείται η αμέσως επόμενη πρόταση. do πρόταση;... πρόταση; while (έκφραση); Το αποτέλεσμα εκτέλεσης του προγράμματος είναι The value of i is now 0 The value of i is now 1 The value of i is now 2 The value of i is now 3 The value of i is now 4 Σε αντιστοιχία με τις παρατηρήσεις στην επανάληψη while εδώ μπορούμε να σημειώσουμε τα παρακάτω. Πρώτο και βασικότερο: αφού η συνθήκη ελέγχου βρίσκεται στο τέλος της επανάληψης αυτό σημαίνει ότι το σώμα της επανάληψης θα εκτελεστεί τουλάχιστο μία φορά, δηλαδή την αρχική. Δεύτερο, αν η συνθήκη ελέγχου είναι αληθής και η τιμή της μεταβλητής i παραμείνει η ίδια τότε καταλήγουμε σε ατέρμονα επανάληψη. Οι παράμετροι που καθορίζουν τη συμπεριφορά της επανάληψης do-while, και με τις οποίες είναι καλό να πειραματιστείτε είναι οι ίδιοι όπως και στο while: - ο τύπος της ανισότητας και το όριο τερματισμού - η αρχική τιμή και το βήμα αύξησης (ή μείωσης) του μετρητή 3.4 LAB3_03.C (Η ΕΠΑΝΑΛΗΨΗ FOR) Η επανάληψη for δεν είναι κάτι πραγματικά νέο αλλά ένας πιό πυκνός τρόπος γραφής της επανάληψης while. Το πρόγραμμα του αρχείου lab3_03.c δίνει ένα σχετικό παράδειγμα. lab3_03.c /* This is an example of a for loop */ main() int index; for (index = 0;index < 6;index = index + 1) printf("the value of the index is %d\n",index); Η επανάληψη for ξεκινά με τη λέξη κλειδί for ακολουθούμενη από ένα ζεύγος παρενθέσεων οι οποίες περιέχουν τρεις προτάσεις που χωρίζονται μεταξύ τους με ερωτηματικό. Η ακριβής συσχέτιση των επαναλήψεων for και while δίνεται παρακάτω. 13

14 αρχικοποίηση; for (αρχικοποίηση; έκφραση; αύξηση) while (έκφραση) πρόταση; πρόταση; πρόταση; πρόταση; αύξηση; Η πρώτη πρόταση αντιστοιχεί στην αρχικοποίηση ενός μετρητή συνήθως. Στο παράδειγμά μας η πρόταση είναι index = 0 Ότι περιλαμβάνεται σε αυτό το πεδίο της επανάληψης for εκτελείται μία μόνο φορά πριν αρχίσει η επανάληψης. Η πρόταση αρχικοποίησης μπορεί να είναι όσο σύνθετη θέλουμε, χωρίζοντας διαδοχικές προτάσεις με κόμμα, καλό είναι όμως να μη το παρακάνουμε. Το δεύτερο μέρος είναι η συνθήκη έλεγχου, στην περίπτωσή μας η έκφραση index < 6, η οποία συνθήκη εξετάζεται κατά την είσοδο κάθε επανάληψης. Η συνθήκη μπορεί να είναι οσοδήποτε περίπλοκη αρκεί να καταλήγει σε μία τιμή (αληθή ή ψευδή). Το τρίτο τμήμα περιέχει συνήθως τη πρόταση αύξησης ενός μετρητή και εκτελείται στο τέλος κάθε επανάληψης, δηλαδή μετά την εκτέλεση των προτάσεων του σώματος. Μπορεί, όπως και το πρώτο πεδίο της for, να περιέχει αρκετές προτάσεις χωρισμένες με κόμμα. Το σώμα της επανάληψης μπορεί να είναι μία οποιαδήποτε σύνθετη πρόταση, ακριβώς όπως εξηγήθηκε και στους προηγούμενους τύπους επαναλήψεων. Άρα είναι προφανές ότι μπορούμε να έχουμε πολυεπίπεδες for επαναλήψεις. Το αποτέλεσμα της εκτέλεσης του προγράμματος δίνεται παρακάτω The value of the index is 0 The value of the index is 1 The value of the index is 2 The value of the index is 3 The value of the index is 4 The value of the index is 5 Η βασική χρήση της επανάληψης for είναι σε περιπτώσεις που ο αριθμός των επαναλήψεων εκφράζεται με βάση κάποια μαθηματικού τύπου έκφραση και την αύξηση ή μείωση κάποιου μετρητή (π.χ πράξεις πινακοποιημένων δεδομένων), ενώ η χρήση της επανάληψης while προορίζεται για περιπτώσεις που ο αριθμός των επαναλήψεων είναι γενικά απροσδιόριστος και η συνθήκη ελέγχου είναι μιά λογική συνθήκη η οποία στηρίζεται στα εκάστοτε δεδομένα (π.χ. επεξεργασία αρχείων). 14

15 3.5 LAB3_04.C (ΧΡΗΣΗ ΔΟΜΩΝ ΕΛΕΓΧΟΥ IF THEN ELSE) Η πρόταση if χρησιμοποιείται για τη λήψη αποφάσεων διακλάδωσης της ροής εκτέλεσης ενός προγράμματος. Η πρόταση εξηγείται με τη βοήθεια του προγράμματος που είναι αποθηκευμένο στο αρχείο lab3_04.c. lab3_04.c /* This is an example of the if and the if-else statements */ main() int data; for(data = 0;data < 10;data = data + 1) if (data == 2) printf("data is now equal to %d\n",data); if (data < 5) printf("data is now %d, which is less than 5\n",data); else printf("data is now %d, which is greater than 4\n",data); /* end of for loop */ Κατ αρχή σημειώνουμε ότι το πρόγραμμα αποτελείται από μία επανάληψη for που περιέχει μία ακολουθία δύο προτάσεων if. Πρέπει να είναι προφανές ότι η επανάληψη θα εκτελεστεί 10 φορές. Ας ασχοληθούμε με την πρώτη πρόταση if. Ξεκινά με τη λέξη κλειδί if ακολουθούμενη από τη συνθήκη απόφασης μέσα σε παρενθέσεις. Αν η συνθήκη είναι αληθής τότε η σύνθετη πρόταση που ακολουθεί εκτελείται αλλιώς όχι. Ο ορισμός της σύνθετης πρότασης είναι ίδιος με αυτό της επανάληψης. Η σύνταξη επομένως της πρότασης if είναι if (έκφραση) πρόταση;... πρόταση; αλλά επειδή στο συγκεκριμένο παράδειγμα η σύνθετη πρόταση περιέχει μόνο μία πρόταση οι αγκύλες παραλείπονται. Η συνθήκη απόφασης έχει ακριβώς την ίδια σύνταξη με τη συνθήκη ελέγχου των επαναλήψεων. Σημειώστε ότι το διπλό ίσον data == 2 ισοδυναμεί με τη λογική ισότητα, δηλαδή εξετάζει την ισότητα ανάμεσα στη τρέχουσα τιμή της μεταβλητής data και στη τιμή 2. Προσοχή οτι το απλό ίσον data = 2 αντιστοιχεί στην εκχώρηση της τιμής 2 στη μεταβλητή data. Η δεύτερη πρόταση if στο πρόγραμμα lab3_04.c είναι όμοια με τη πρώτη με τη διαφορά ότι μετά τη σύνθετη πρόταση του if ακολουθεί η λέξη κλειδί else και ακόμη μία σύνθετη πρόταση. Η ερμηνεία αυτής της πρότασης είναι οτι εάν μεν η συνθήκη απόφασης είναι αληθής τότε εκτελείται ο κλάδος του if. Αλλιώς εκτελείται ο κλάδος του else. Έτσι μία από τις δύο σύνθετες προτάσεις θα εκτελεστεί οπωσδήποτε. Μετά την εκτέλεση του ενός από τους δύο κλάδους το πρόγραμμα 15

16 συνεχίζει να εκτελείται από την πρώτη εντολή μετά το τέλος της δομής if-else. Η γενική μορφή της πρότασης if-else είναι επομένως if (έκφραση) πρόταση;... πρόταση; else πρόταση;... πρόταση; Τώρα είμαστε σε θέση να εξηγήσουμε την εκτέλεση του προγράμματος η οποία φαίνεται παρακάτω. Data is now 0, which is less than 5 Data is now 1, which is less than 5 Data is now equal to 2 Data is now 2, which is less than 5 Data is now 3, which is less than 5 Data is now 4, which is less than 5 Data is now 5, which is greater than 4 Data is now 6, which is greater than 4 Data is now 7, which is greater than 4 Data is now 8, which is greater than 4 Data is now 9, which is greater than 4 Βλέπουμε ότι έχουμε συνολικά ένδεκα (11) μηνύματα. Η συνθήκη του πρώτου if είναι αληθής μόνο για την τιμή 2, έτσι ο κλάδος του πρώτου if παράγει αποτέλεσμα μόνο μία φορά. Η συνθήκη του δεύτερου if επαληθεύεται 5 φορές, για τις τιμές 0 έως 4, και τότε εκτελείται ο κλάδος if, ενώ δεν επαληθεύεται για τις τιμές 5 έως 9, οπότε εκτελείται ο κλάδος else. Σημειώστε ότι όταν ο μετρητής πάρει την τιμή 2 εμφανίζονται δύο μηνύματα. Αυτό συμβαίνει γιατί οι δύο προτάσεις if βρίσκονται σε δομή ακολουθίας, άρα μετά την εκτέλεση της πρώτης, και ανεξάρτητα από το αποτέλεσμα αυτής της εκτέλεσης, εκτελείται η δεύτερη πρόταση if. 16

17 3.6 LAB3_05.C (Η ΑΠΟΦΑΣΗ ΤΗΣ ΑΠΟΦΑΣΗΣ NESTED IF) Πώς θα μπορούσαμε να παράγουμε ένα μόνο μήνυμα στο πρόγραμμα για την τιμή 2 του μετρητή; Θα πρέπει, εάν αληθεύει η πρώτη συνθήκη, να μην εκτελείται καθόλου η δεύτερη πρόταση if. Αυτό μπορεί να επιτευχθεί με την ενσωμάτωση της δεύτερης πρότασης if σε έναν κλάδο else έτσι ώστε να εκτελεσθεί μόνον εάν η πρώτη συνθήκη δεν επαληθευτεί. Πρόκειται για μία αρκετά συνηθισμένη δομή πολυεπίπεδου if που χρησιμοποιείται για τη λήψη σύνθετων αποφάσεων της μορφής 'Αν Α τότε Β αλλιώς άν Γ τότε Δ...'. Το πολυεπίπεδο if-else παρουσιάζεται με τη βοήθεια του προγράμματος που είναι αποθηκευμένο στο αρχείο lab3_05.c lab3_05.c /* This is an example of nested if statements */ main() int data; for(data = 0;data < 10;data = data + 1) if (data == 2) printf("data is now equal to %d\n",data); else if (data < 5) printf("data is now %d, which is less than 5\n",data); else printf("data is now %d, which is greater than 4\n",data); /* end of for loop */ Να σημειωθεί ότι όχι μόνο ο κλάδος else αλλά και ο κλάδος if θα μπορούσε να περιέχει μία νέα πρόταση if, και οι νέες προτάσεις if να περιέχουν νέα if, κ.ο.κ οδηγώντας σε οσοδήποτε πολύπλοκα δένδρα αποφάσεων. Η εκτέλεση του νέου προγράμματος διαφέρει από τη προηγούμενη κατά μία γραμμή. Data is now 0, which is less than 5 Data is now 1, which is less than 5 Data is now equal to 2 Data is now 3, which is less than 5 Data is now 4, which is less than 5 Data is now 5, which is greater than 4 Data is now 6, which is greater than 4 Data is now 7, which is greater than 4 Data is now 8, which is greater than 4 Data is now 9, which is greater than 4 17

18 3.7 LAB3_06.C (BREAK KAI CONTINUE) Οι προτάσεις break και continue χρησιμοποιούνται γιά την παράκαμψη δομών ελέγχου. Η πρόταση break εφαρμόζεται σε δομές επαναλήψεων και αποφάσεων και έχει ως αποτέλεσμα την συνέχεια της εκτέλεσης του προγράμματος στη πρώτη πρόταση μετά το τέλος της δομής. Η πρόταση continue εφαρμόζεται σε δομές επαναλήψεων και έχει ως αποτέλεσμα την συνέχεια της εκτέλεσης από την επόμενη επανάληψη. lab3_06.c /* This is an example of break and continue statements */ main() int xx; for(xx = 5;xx < 15;xx = xx + 1) if (xx == 8) break; printf("in the break loop, xx is now %d\n",xx); for(xx = 5;xx < 15;xx = xx + 1) if (xx == 8) continue; printf("in the continue loop, xx is now %d\n",xx); Οι προτάσεις αυτές αναλύονται με τη βοήθεια του προγράμματος που βρίσκεται στο αρχείο lab3_06.c. Το πρόγραμμα είναι μία ακολουθία δύο επαναλήψεων for με την κάθε επανάληψη να εκτελείται κανονικά εννέα φορές (για τις τιμές του μετρητή xx 5, 6,..., 14). Στη πρώτη επανάληψη υπάρχει μία πρόταση break η οποία ενεργοποιείται όταν ο μετρητής xx πάρει την τιμή 8. Η εκτέλεση του break τερματίζει την πρώτη επανάληψη for και οδηγεί στην δεύτερη. Έτσι η πρώτη δομή εκτελείται ολόκληρη μόνο τρεις φορές αντί για εννέα. Κατά την τέταρτη επανάληψη (για xx ίσο με 8) θα εκτελεστούν μόνο οι προτάσεις του σώματος που προηγούνται του break. Στη δεύτερη επανάληψη υπάρχει μία πρόταση continue στη ίδια ακριβώς θέση που είχε προηγούμενα η πρόταση break. Όταν ο μετρητής xx πάρει την τιμή 8 η πρόταση continue εκτελείται αλλά δεν οδηγεί σε τερματισμό της επανάληψης. Απλά οδηγεί στην παράκαμψη των υπολοίπων προτάσεων του σώματος της επανάληψης, έτσι ώστε ο έλεγχος του προγράμματος μετατίθεται στην πρόταση αύξησης του μετρητή. Οι προηγούμενες και οι επόμενες επαναλήψεις εκτελούνται κανονικά. Έτσι έχουμε την εκτέλεση οκτώ πλήρων επαναλήψεων και μίας διακεκομμένης, όπου εκτελούνται μόνον οι εντολές πριν από το continue. Η εκτέλεση του προγράμματος φαίνεται παρακάτω. In the break loop, xx is now 5 In the break loop, xx is now 6 In the break loop, xx is now 7 In the continue loop, xx is now 5 In the continue loop, xx is now 6 In the continue loop, xx is now 7 In the continue loop, xx is now 9 In the continue loop, xx is now 10 In the continue loop, xx is now 11 In the continue loop, xx is now 12 In the continue loop, xx is now 13 In the continue loop, xx is now 14 18

19 3.8 LAB3_07.C (Η ΠΡΟΤΑΣΗ SWITCH) Η πρόταση switch εξηγείται με τη βοήθεια του προγράμματος στο αρχείο lab3_07.c. Όπως είναι φανερό η πρόταση switch λειτουργεί σαν ένα είδος εξειδικευμένου πολλαπλού if. Η πρόταση ξεκινά με τη λέξη κλειδί switch και ακολουθεί μία μεταβλητή σε παρενθέσεις, η οποία μεταβλητή λειτουργεί ως πολλαπλός διακόπτης. Στη συνέχεια, μέσα σε αγκύλες, παρατίθενται οι τιμές που μπορεί να πάρει η μεταβλητή διακόπτης, με την κάθε τιμή να περικλείεται από λέξη κλειδί case και μιά άνω-κάτω τελεία. Μετά από κάθε τιμή ακολουθούν οι προτάσεις που πρέπει να εκτελεστούν. Συνήθως πρόκειται για απλή ακολουθία δύο ή τριών προτάσεων. lab3_07.c /* This is an example of switch statement */ main() int truck; for (truck = 3;truck < 13;truck = truck + 1) switch (truck) case 3 : printf("the value is three\n"); break; case 4 : printf("the value is four\n"); break; case 5 : case 6 : case 7 : case 8 : printf("the value is between 5 and 8\n"); break; case 11 : printf("the value is eleven\n"); break; default : printf("it is one of the undefined values\n"); break; /* end of switch */ /* end of for loop */ Στο παράδειγμα η μεταβλητή διακόπτης είναι η truck και οι τιμές που προβλέπονται είναι οι 3, 4, 5 έως 8 και 11. Είναι προφανές ότι η μεταβλητή διακόπτης μπορεί να λαμβάνει μόνο διακριτές τιμές, δηλαδή να πρόκειται για ακέραια μεταβλητή ή για χαρακτήρα. Σημειώστε οτι κάθε επιλογή μπορεί να περιλαμβάνει περισσότερες τιμές. Επίσης σημειώστε την επιλογή default στο τέλος της δομής switch, που ενεργοποιείται όταν η μεταβλητή διακόπτης πάρει μία τιμή που δεν προβλέπεται ρητά. Η χρήση της επιλογής default δεν είναι υποχρεωτική. Σε περίπτωση που η μεταβλητή διακόπτης πάρει μία τιμή που δεν έχει προβλεφθεί τότε απλά καμία επιλογή δεν εκτελείται. Ιδιαίτερη σημασία έχει η χρήση της πρότασης break στο τέλος της ακολουθίας προτάσεων κάθε επιλογής. Μόλις εκτελεστούν οι προτάσεις της επιλογής η πρόταση break μεταφέρει τον έλεγχο στο τέλος της δομής switch, δηλαδή στην πρόταση αύξησης της επανάληψης. Σε περίπτωση παράλειψης της πρότασης break η επιλογή default, η οποία είναι πάντα αληθής, θα εκτελεστεί και αυτή, ανεξάρτητα από την ενεργοποίηση ή όχι άλλης προηγούμενης επιλογής. 19

20 Το αποτέλεσμα εκτέλεσης του προγράμματος δίνεται παρακάτω: The value is three The value is four The value is between 5 and 8 The value is between 5 and 8 The value is between 5 and 8 The value is between 5 and 8 It is one of the undefined values It is one of the undefined values The value is eleven It is one of the undefined values 3.9 LAB3_08.C (ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΤΡΟΠΗΣ ΘΕΡΜΟΚΡΑΣΙΩΝ o C σε o F) Το πρόγραμμα που είναι αποθηκευμένο στο αρχείο lab3_08.c δίνει ένα παράδειγμα χρήσιμου, αν και κάπως περιορισμένου, προγράμματος. Πρόκειται για ένα πρόγραμμα που εμφανίζει ένα πίνακα των θερμοκρασιών στις κλίμακες Κελσίου και Φαρενάιτ και σημειώνει τις θεοκρασίες που το νερό παγώνει και βράζει. Προσέξτε την παραγραφοποίηση και τον σχολιασμό του προγράμματος. Το αρχικό σχόλιο εξηγεί τη λειτουργία του προγράμματος. Κάθε μεταβλητή εξηγείται ξεχωριστά. Επίσης σημειώνονται οι τερματισμοί των διαφόρων δομών, στη περίπτωσή μας η δομή της επανάληψης. Η διαμόρφωση της εξόδου και οι εκφράσεις των υπολογισμών θα εξηγηθούν με λεπτομέρεια σε επόμενο κεφάλαιο. Το αποτέλεσμα εκτέλεσης του προγράμματος δίνεται παρακάτω: Centigrade to Farenheit temperature table C = -20 F = -4 C = -10 C = 0 F = F = Freezing point of water C = 10 F = 50 C = 20 C = 30 F = F = C = 40 F = 104 C = 50 C = 60 F = 122 F = 140 C = 70 F = 158 C = 80 C = 90 F = 176 F = 194 C = 100 F = 212 Boiling point of water C = 110 C = 120 F = 230 F =

21 lab3_08.c /****************************************************************/ /* */ /* /* This is a temperature conversion program written in the C programming language. This program generates */ */ /* and displays a table of farenheit and centigrade */ /* /* temperatures, and lists the freezing and boiling of water. */ */ /* */ /*****************************************************************/ main() int count; /* a loop control variable */ int farenheit; /* the temperature in farenheit degrees */ int centigrade; /* the temperature in centigrade degrees */ printf("centigrade to Farenheit temperature table\n\n"); for(count = -2;count <= 12;count = count + 1) centigrade = 10 * count; farenheit = 32 + (centigrade * 9)/5; printf(" C =%4d F =%4d ",centigrade,farenheit); if (centigrade == 0) printf(" Freezing point of water"); if (centigrade == 100) printf(" Boiling point of water"); printf("\n"); /* end of for loop */ Μπορείτε να επεκτείνετε το πρόγραμμα με το να εμφανίζετε τη κλίμακα με μεγαλύτερη λεπτομέρεια, π.χ. ανά 5 βαθμούς Κελσίου. Μπορείτε ακόμη να περιλάβετε και τη θερμοκρασιακή κλίμακα του Κέλβιν. 21

22 ΚΕΦΑΛΑΙΟ ΕΙΣΑΓΩΓΗ Το κεφάλαιο αυτό ασχολείται με τις αριθμητικές και λογικές εκφράσεις. Μέσα από τους κώδικες έξι προγραμμάτων γίνεται λόγος για τη χρήση των διάφορων τελεστών, για τους διάφορους τύπους δεδομένων, για τη διαμόρφωση της εκτύπωσης των αποτελεσμάτων και για την κρυπτογραφική C. Πιο συγκεκριμένα το πρώτο πρόγραμμα ασχολείται με τη χρήση των αριθμητικών τελεστών, το δεύτερο και το τρίτο με τους τύπους δεδομένων, ενώ το τέταρτο με τους μετατροπείς των δεδομένων. Τα προγράμματα, τα οποία περιέχονται είναι τα εξής: - lab4_01.c (αριθμητικές εκφράσεις int) - lab4_02.c (περισσότεροι τύποι δεδομένων) - lab4_03.c (μετατροπές τύπων δεδομένων) - lab4_04.c (λογικές εκφράσεις) - lab4_05.c (ιδιόμορφες εκφράσεις C) 4.1 LAB4_01.C (ΑΡΙΘΜΗΤΙΚΕΣ ΕΚΦΡΑΣΕΙΣ INT) Το πρόγραμμα του αρχείου lab4_01.c έχει ως μοναδικό σκοπό να δείξει τη χρήση των διαφόρων αριθμητικών τελεστών στις αριθμητικές εκφράσεις ακεραίων αριθμών. Δεν παράγει συγκεκριμένο αποτέλεσμα αλλά ο αναγνώστης μπορεί να προσθέσει μία πρόταση της μορφής printf("the result is : %5d \n", c); μετά από κάθε εκχώρηση αν θέλει να εμφανίζει το εκάστοτε αποτέλεσμα στην οθόνη. lab4_01.c /* This program will illustrate the assignment statements */ main() int a,b,c; /* Integer variables for examples */ a = 12; b = 3; c = a + b; /* simple addition */ c = a - b; /* simple subtraction */ c = a * b; /* simple multiplication */ c = a / b; /* simple division */ c = a % b; /* simple modulo (remainder) */ c = 12*a + b/2 - a*b*2/(a*c + b*2); c = c/4+13*(a + b)/3 - a*b + 2*a*a; a = a + 1; /* incrementing a variable */ b = b * 5; a = b = c = 20; /* multiple assignment */ a = b = c = 12*13/4; Στην αρχή δηλώνονται τρεις ακέραιες μεταβλητές a, b and c, και στη συνέχεια οι δύο από τις μεταβλητές παίρνουν τις τιμές 12 και 3 με απλή εκχώρηση. Οι επόμενες πέντε γραμμές παρουσιάζουν τις βασικές πράξεις στην ακέραια αριθμητική, πρόσθεση, αφαίρεση, πολλαπλασιασμό, πηλίκο και υπόλοιπο (modulo) ακέραιας διαίρεσης. Στη συνέχεια υπάρχουν δύο παραδείγματα σύνθετων εκφράσεων. Η προτεραιότητα των αριθμητικών τελεστών είναι η γνωστή από τα μαθηματικά και οι παρενθέσεις βοηθούν στην αλλαγή αυτής της 22

23 προτεραιότητας. Όποτε βρίσκεστε σε αμφιβολία καλύτερα να τις χρησιμοποιείτε (φύλαγε τα ρούχα σου...) Οι εκφράσεις a = a + 1 και b = b * 5 αναφέρονται σε εκφράσεις που ενημερώνουν την τιμή μιας μεταβλητής μέσω μίας έκφραση που περιλαμβάνει μία πράξη με βάση την τρέχουσα τιμή της μεταβλητής. Τέτοιες εκφράσεις είναι απόλυτα νόμιμες, και παρόμοιες έχουν ήδη χρησιμοποιηθεί πολλές φορές για την αύξηση μετρητών σε δομές επανάληψης. Θα δούμε όμως παρακάτω οτι η C παρέχει έναν πιο συμπαγή τρόπο για την διατύπωση τέτοιων εκφράσεων. 4.2 LAB4_02.C (ΠΕΡΙΣΣΟΤΕΡΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ) Στο πρόγραμμα που βρίσκεται στο αρχείο lab4_02.c θα διαπιστώσετε ότι εκτός από ακέραιες μεταβλητές έχουν τώρα οριστεί δύο νέοι τύποι μεταβλητών, οι χαρακτήρες (με τη λέξη κλειδί char) και οι πραγματικοί (με τη λέξη κλειδί float). lab4_02.c /* The purpose of this file is to introduce additional data types */ main() int a,b,c; /* to with no decimal point */ char x,y,z; /* -128 to 127 with no decimal point */ float num,toy,thing;/* 3.4E-38 to 3.4E+38 with decimal point */ a = b = c = -27; x = y = z = 'A'; num = toy = thing = ; a = y; /* a is now 65 (character A) */ x = b; num = b; /* x is now -27 /* num will now be */ */ a = toy; /* a will now be 3 */ Ο χαρακτήρας είναι περίπου ίδιος με τον ακέραιο με μόνη διαφορά το μέγεθος της μεταβλητής. Μία δήλωση ακέραιας μεταβλητής οδηγεί τον μεταφραστή στη δέσμευση 2 bytes στη μνήμη του υπολογιστή, σε παράσταση της μορφής συμπληρώματος του 2, έτσι ώστε η ακέραια μεταβλητή μπορεί να πάρει τιμές στο διάστημα από έως Μία δήλωση χαρακτήρα δεσμεύει 1 byte στη μνήμη, όσο δηλαδή απαιτείται για την έκφραση ενός χαρακτήρα με βάση τον κώδικα ASCII. Επομένως μία μεταβλητή τύπου χαρακτήρα μπορεί να πάρει τιμές στο διάστημα -128 έως +127, εάν θεωρήσουμε αποθήκευση μορφής συμπληρώματος του 2. Να σημειωθεί ότι ως ακέραιες μεταβλητές οι χαρακτήρες μπορούν να συμμετέχουν σε όλες τις αριθμητικές εκφράσεις που συμμετέχουν οι κανονικοί ακέραιοι. Ο δεύτερος νέος τύπος που ορίζεται είναι ο πραγματικός αριθμός, γνωστός και ως αριθμός κινητής υποδιαστολής. Καταλαμβάνει 4 bytes μνήμης και επιτρέπει την παράσταση αριθμών στο εύρος από 3.4E-38 έως 3.4E+38. Η αναπαράσταση λέγεται κινητής υποδιαστολής γιατί σε επίπεδο μηχανής ένας πραγματικός αριθμός εκφράζονται ως δύναμη του 2 με τη βοήθεια δύο συνθετικών: της βάσης και του εκθέτη. Η βάση είναι προσημασμένη και πάντα έτσι κανονικοποιημένη ώστε να έχει μηδενικό ακέραιο μέρος και το πρώτο σημαντικό bit να βρίσκεται αμέσως μετά την υποδιαστολή. Αντίστοιχα μεταβάλλεται και ο επίσης προσημασμένος εκθέτης. Οι αριθμητικές πράξεις των πραγματικών αριθμών είναι ίδιες με αυτές των ακεραίων με εξαίρεση τη διαίρεση που είναι προφανώς πραγματική και όχι ακέραια με πηλίκο και υπόλοιπο. 23

24 Οι τρεις πρώτες εκτελέσιμες γραμμές του προγράμματος περιέχουν εκχωρήσεις για τους τρεις τύπους δεδομένων. Οι σταθερές χαρακτήρων ορίζονται με τη χρήση απλών εισαγωγικών, ενώ οι πραγματικοί αριθμοί συνήθως παριστώνται στη δεκαδική τους μορφή. Αφού ο χαρακτήρας είναι στην πραγματικότητα μικρός ακέραιος είναι αναμενόμενο οτι αυτό που πραγματικά αποθηκεύεται στη μεταβλητή χαρακτήρα είναι ο κωδικός ASCII που αντιστοιχεί στο συγκεκριμένο χαρακτήρα, δηλαδή το 65. Η C επιτρέπει την ανάμιξη των τύπων ακεραίου και χαρακτήρα, όπως φαίνεται στις παρακάτω γραμμές του προγράμματος. Η τιμή μίας μεταβλητής χαρακτήρα μπορεί να εκχωρηθεί χωρίς κανένα πρόβλημα σε ακέραια μεταβλητή. Το αντίθετο επίσης μπορεί να γίνει αλλά πρέπει να είμαστε προσεκτικοί έτσι ώστε η ακέραια τιμή που θα εκχωρηθεί στο χαρακτήρα να είναι στα σωστά όρια. Προσοχή: αν αυτό δεν ισχύει δεν πρόκειται να πάρουμε κάποιο μήνυμα λάθους κατά τη μετάφραση ή εκτέλεση του προγράμματος, δηλαδή η C δεν υποστηρίζει αυστηρό έλεγχο τύπων δεδομένων. Ο προγραμματιστής είναι υπεύθυνος. Αυτή η ανάμιξη ακεραίων και χαρακτήρων επεκτείνεται και στα ορίσματα ή εξαγόμενα των συναρτήσεων της C. Έτσι, όπου υπάρχει όρισμα που δηλώνεται ακέραιου τύπου, εκεί μπορεί να χρησιμοποιηθεί μεταβλητή είτε ακέραια ή χαρακτήρας. Οι δύο τελευταίες γραμμές του προγράμματος δείχνουν τη δυνατότητα ανάμιξης ακέραιων και πραγματικών μεταβλητών. Όταν μία ακέραια τιμή εκχωρηθεί σε πραγματική μεταβλητή τότε απλά προστίθεται ένα μηδενικό κλασματικό μέρος. Όταν μία πραγματική τιμή εκχωρείται σε ακέραια μεταβλητή τότε ο εκθέτης πρέπει να μηδενιστεί, δηλαδή να έχουμε απλή δεκαδική έκφραση και όχι εκθετική). Το κλασματικό μέρος που πιθανά παραμένει αποκόπτεται. Το ακέραιο μέρος πρέπει να είναι στα όρια των ακέραίων αριθμών αλλιώς η εκχώρηση καταλήγει σε λάθος. Και πάλι ο προγραμματιστής είναι υπεύθυνος. Το πρόγραμμα αυτό δεν παράγει αποτελέσματα, μιας που ακόμη δεν μάθαμε να παρουσιάζουμε χαρακτήρες ή πραγματικούς. Τους ακεραίους μπορείτε να τους παρουσιάσετε με τη χρήση της printf όπως σε προηγούμενα προγράμματα. 4.3 LAB4_03.C (ΜΕΤΑΤΡΟΠΕΣ ΤΥΠΩΝ ΔΕΔΟΜΕΝΩΝ) Το πρόγραμμα στο αρχείο lab4_03.c δίνει παραδείγματα ρητών ή εννοούμενων μετατροπών των τύπων διαφόρων μεταβλητών καθώς και τον συνδυασμό τους στην εκτέλεση αριθμητικών πράξεων. Το πρόγραμμα ξεκινά με έναν ενδιαφέροντα νεωτερισμό στις δηλώσεις των μεταβλητών. Διαπιστώνουμε ότι οι εκχωρήσεις των αρχικών τιμών, δηλαδή η αρχικοποίηση των μεταβλητών μπορεί να γίνει ταυτόχρονα με τη δήλωση των μεταβλητών, κάτι αρκετά συνηθισμένο σε προγράμματα C. Η πρώτη ομάδα των τεσσάρων εκχωρήσεων εκτελεί την ίδια πράξη με διαφορετικούς τρόπους. Προσθέτει μία ακέραια μεταβλητή με μία πραγματική και τοποθετεί το αποτέλεσμα σε έναν χαρακτήρα. Η ρητή μετατροπή της τιμής μίας μεταβλητής ή και μίας έκφρασης γίνεται με την τοποθέτηση πριν από την μεταβλητή ή την έκφραση του νέου τύπου μέσα σε παρένθεση. Σε περίπτωση που πρόκειται για έκφραση τότε και η ίδια η έκφραση εγκλείεται σε ξεχωριστές παρενθέσεις. Η τελευταία από τις εκχωρήσεις χρησιμοποιεί εννοούμενες μετατροπές για να επιτύχει το ίδιο εξαγόμενο. Το αποτέλεσμα της κάθε εκχώρησης μπορεί να ελεγχθεί με μία κατάλληλη συνάρτηση printf. Θα διαπιστώσουμε οτι το αποτέλεσμα είναι ίδιο σε όλες τις περιπτώσεις. Η δεύτερη ομάδα εκχωρήσεων παρουσιάζει τον συνδυασμό ακέραιων και πραγματικών αριθμών. Είναι προφανές ότι οι τρεις εκφράσεις δεν παράγουν το ίδιο ακριβώς αποτέλεσμα. Το γινόμενο των ακεραίων μερών δύο πραγματικών διαφέρει από το ακέραιο μέρος του γινομένου των πραγματικών. Ειδικά στην περίπτωση της διαίρεσης η ύπαρξη ενός πραγματικού τελουμένου επιβάλλει πραγματική διαίρεση εκτός και αν ρητά δηλωθεί το αντίθετο. 24

25 lab4_03.c /* The purpose of this program is to show type conversion */ main() int a = 2; float x = 17.1, y = 8.95, z; char c; c = (char)a + (char)x; c = (char)(a + (int)x); c = (char)(a + x); c = a + x; z = (float)((int)x * (int)y); z = (float)((int)(x * y)); z = x * y; 4.4 LAB4_04.C (ΛΟΓΙΚΕΣ ΕΚΦΡΑΣΕΙΣ) Το πρόγραμμα του αρχείου lab4_04.c παρουσιάζει παραδείγματα λογικών συγκρίσεων στη C. Το πρόγραμμα ξεκινά με την δήλωση και την ταυτόχρονη αρχικοποίηση ορισμένων μεταβλητών που θα χρησιμοποιηθούν στις συγκρίσεις. lab4_04.c /* This file will illustrate logical compares */ main() int x = 11,y = 11,z = 11; char a = 40,b = 40,c = 40; float r = ,s = ,t = ; /* First group of compare statements */ if (x == y) z = -13; /* This will set z = -13 */ if (x > z) a = 'A'; /* This will set a = 65 */ if (!(x > z)) a = 'B'; /* This will change nothing */ if (b <= c) r = 0.0; /* This will set r = 0.0 */ if (r!= s) t = c/2; /* This will set t = 20 */ /* Second group of compare statements */ if (x = (r!= s)) z = 1000; /* This will set x = some positive number and z = 1000 */ if (x = y) z = 222; /* This sets x = y, and z = 222 */ if (x!= 0) z = 333; /* This sets z = 333 */ if (x) z = 444; /* This sets z = 444 */ /* Third group of compare statements */ x = y = z = 77; if ((x == y) && (x == 77)) z = 33; /* This sets z = 33 */ if ((x > y) (z > 12)) z = 22; /* This sets z = 22 */ if (x && y && z) z = 11; /* This sets z = 11 */ if ((x = 1) && (y = 2) && (z = 3)) r = 12.00; /* This sets x = 1, y = 2, z = 3, r = */ 25

26 if ((x == 2) && (y = 3) && (z = 4)) r = 14.56; /* This doesn't change anything */ /* Fourth group of compares */ if (x == x); z = ; /* z always gets changed */ if (x!= x) z = ; /* Nothing gets changed */ if (x = 0) z = ; /* This sets x = 0, z is unchanged */ Τελεστές σύγκρισης Η πρώτη ομάδα παρουσιάζει απλές συγκρίσεις των τιμών δύο μεταβλητών, τις οποίες έχουμε ήδη συναντήσει στις συνθήκες ελέγχου των δομών επανάληψης και απόφασης. Όλες οι προτάσεις έχουν τη μορφή απλού if με μια μόνο πρόταση προς εκτέλεση, γι' αυτό δεν απαιτούνται αγκύλες μετά τη συνθήκη ελέγχου. Οποιαδήποτε από τις μεταβλητές που συμμετέχουν στις συγκρίσεις μπορεί να αντικατασταθεί είτε από μία σταθερά ή από μια οσοδήποτε περίπλοκη έκφραση εντός παρενθέσεων, η οποία έκφραση θα παράγει ένα συμβατό αποτέλεσμα. Ο πίνακας των τελεστών αριθμητικών συγκρίσεων είναι ο παρακάτω == ίσο!= διάφορο > μεγαλύτερο >= μεγαλύτερο ή ίσο < μικρότερο <= μικρότερο ή ίσο Ιδιαίτερη προσοχή στο γεγονός ότι ο τελεστής ισότητας είναι ο == ενώ της εκχώρησης είναι ο κλασσικός = ο οποίος ως γνωστό είναι το σύμβολο της ισότητας στα μαθηματικά. Αυτό οδηγεί σε εύκολα λάθη που δυστυχώς δεν γίνονται αντιληπτά από τον μεταφραστή της C για τον απλούστατο λόγο οτι, όπως είδαμε, η εκχώρηση είναι έκφραση η οποία μπορεί να παράγει κάποιο αποτέλεσμα που μπορεί να χρησιμοποιηθεί νόμιμα σαν τμήμα λογικής σύγκρισης. Δίνονται παραδείγματα αμέσως μετά. Τελικά σημειώνεται ότι ο μοναδικός τελεστής! συμβολίζει τη λογική άρνηση NOT έτσι ώστε, για παράδειγμα, οι εκφράσεις!(x > z) και (x <= z) είναι ισοδύναμες. Η τιμή της αλήθειας Η δεύτερη ομάδα παρουσιάζει συγκρίσεις κάπως πιο περίπλοκες. Η πρώτη πρόταση if δείχνει μια εκδοχή της χρήσης της εκχώρησης σε συνθήκη ελέγχου. Η συνθήκη συγκρίνει κατ' αρχή τις πραγματικές μεταβλητές r και s.. Στη συνέχεια, το αποτέλεσμα της σύγκρισης εκχωρείται στην ακέραια μεταβλητή x. Επομένως η λογική έκφραση παράγει ένα αποτέλεσμα, που είναι μια λογική τιμή (αληθή ή ψευδή), η οποία μάλιστα είναι ακέραια. Αυτή είναι μια ακόμη σημαντική ιδιορρυθμία της C που προέρχεται από τις γλώσσες assembly. Μια λογική έκφραση η οποία είναι ψευδής παράγει ως αποτέλεσμα την ακέραια τιμή μηδέν. Μια αληθής λογική έκφραση παράγει μια μη-μηδενική τιμή (όχι ακριβώς καθορισμένη, αλλά συνήθως ίση με τη μονάδα). Αυτό σημαίνει ότι οποιοσδήποτε ακέραιος ή χαρακτήρας μπορεί να χρησιμοποιηθεί ευθέως ως λογική μεταβλητή, όπως γιά παράδειγμα στη τελευταία πρόταση if. Αν συνεχίσουμε στη πρώτη πρόταση if διαπιστώνουμε ότι αφού η τιμή της r έχει τεθεί στο 0.0 από προηγούμενη πρόταση το αποτέλεσμα της σύγκρισης θα είναι αληθές, άρα 1 (ή γενικά μια μη-μηδενική ακέραια ποσότητα). Αυτή η ποσότητα θα εκχωρηθεί στη μεταβλητή x. 26

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Οι εντολές ελέγχου της ροής ενός προγράμματος.

Οι εντολές ελέγχου της ροής ενός προγράμματος. Κεφάλαιο ΙΙI: Οι εντολές ελέγχου της ροής ενός προγράμματος 31 Εντολές ελέγχου της ροής Στο παρόν κεφάλαιο ασχολούμαστε με την σύνταξη των εντολών της C οι οποίες εισάγουν λογική και ελέγχουν την ροή εκτέλεσης

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

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

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

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

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

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

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

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

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

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

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Εισαγωγή στη C Λίγα λόγια για την C Γλώσσα προγραμματισμού υψηλού επιπέδου. Σχεδιάστηκε και υλοποιήθηκε από τον Dennis Richie στις αρχές της δεκαετίας του 1970 (Bell Labs). Η

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

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

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

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

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

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

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

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) Περιλαμβάνει

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

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

Πίνακες: μια σύντομη εισαγωγή. Πίνακες χαρακτήρων: τα Αλφαριθμητικά Πίνακες: μια σύντομη εισαγωγή Πίνακες χαρακτήρων: τα "Αλφαριθμητικά" Πίνακες(Arrays): έννοιες και ορισμοί Ορισμός: Πίνακας (array) = σύνολο μεταβλητών του ιδίου τύπου (int, float, char,...) με ένα κοινό

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

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

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

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

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

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

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

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

Ο πιο κάτω πίνακας περιγράφει σε ποιες περιπτώσεις χρησιμοποιούμε τους τρεις πιο πάνω τρόπους: Επαναλήψεις - Loops Οι επαναλήψεις σε ένα πρόγραμμα μας επιτρέπουν μια ομάδα εντολών να εκτελείται για όσες φορές επιθυμούμε Υπάρχουν τρεις τρόποι επανάληψης εντολών με τη χρήση: While loops For loops

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

ΦΥΛΛΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ 1

ΦΥΛΛΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ 1 Γλώσσα Προγραμματισμού C++ ΦΥΛΛΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ 1 Τα δεδομένα Οι σταθερές Τα δεδομένα (πληροφορίες-data) είναι απαραίτητα στοιχεία ενός προγράμματος, καθώς οι βασικές λειτουργίες ενός προγράμματος είναι

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

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

Αντικειμενοστρεφής Προγραμματισμός Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Εργαστήριο 2 Βασικοί Τύποι Μεταβλητών Java

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

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

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

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

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

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

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

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

Υπολογισμός - Εντολές Επανάληψης Προγραμματισμός Η/Υ Ι Υπολογισμός - Εντολές Επανάληψης ΕΛΕΥΘΕΡΙΟΣ ΚΟΣΜΑΣ ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2018-2019 ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ Τ.Ε. 1 Περίληψη Σήμερα... θα συνεχίσουμε τη συζήτησή μας για τα βασικά στοιχεία

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

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

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

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

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Εντολές ελέγχου ροής προγράμματος (if-else & switch) Η εντολή if-else Η εντολή if-else υπάρχει σχεδόν σε όλες τις γλώσσες προγραμματισμού. Χρησιμοποιείται για τον έλεγχο της

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

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

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

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

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

Υπολογισμός - Εντολές Ελέγχου Προγραμματισμός Η/Υ Ι Υπολογισμός - Εντολές Ελέγχου ΕΛΕΥΘΕΡΙΟΣ ΚΟΣΜΑΣ ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2018-2019 ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ Τ.Ε. 1 Περίληψη Σήμερα... θα συνεχίσουμε τη συζήτησή μας για τα βασικά στοιχεία

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Εντολές ελέγχου ροής προγράμματος (if-else & switch) Η εντολή if-else Η εντολή if-else υπάρχει σχεδόν σε όλες τις γλώσσες προγραμματισμού. Χρησιμοποιείται για τον έλεγχο της

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

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

Προγραμματισμό για ΗΜΥ ΕΠΛ 034: Εισαγωγή στον Προγραμματισμό για ΗΜΥ Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 3 Εισαγωγή στην C Θέματα ιάλεξης Σύνταξη και Σημασιολογία

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

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

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

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

Προγραμματισμός ΗΥ και Υπολογιστική Φυσική. Χρήστος Γκουμόπουλος

Προγραμματισμός ΗΥ και Υπολογιστική Φυσική. Χρήστος Γκουμόπουλος Προγραμματισμός ΗΥ και Υπολογιστική Φυσική Χρήστος Γκουμόπουλος Προγραμματισμός ΗΥ και Υπολογιστική Φυσική Χρήστος Γκουμόπουλος Προγραμματισμός ΗΥ και Υπολογιστική Φυσική Χρήστος Γκουμόπουλος Προγραμματισμός

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

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

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

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

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Ενότητα 5 Δομές Ελέγχου Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Δομές Ελέγχου Οι Boehm και Jacopini απέδειξαν ότι οποιοσδήποτε αλγόριθμος

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

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

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

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

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

ιαδικαστικός Προγραμματισμός ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ιαδικαστικός Προγραμματισμός Α Εξάμηνο Μάθημα 2 ο : Εντολές ελέγχου > εντολές υπό συνθήκη Στόχοι μαθήματος Να κατανοήσετε τη σχέση μεταξύ εντολών και παραστάσεων. Να αναγνωρίζετε

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

ΕΝΟΤΗΤΑ 4 Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου

ΕΝΟΤΗΤΑ 4 Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου ΕΝΟΤΗΤΑ 4 Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου Σκοπός και περίγραμμα της Ενότητας 4 Σκοπός της παρουσίασης Να μελετήσουμε τις συναρτήσεις που ελέγχουν την ροή και την εκτέλεση ενός προγράμματος Σύνοψη

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Δεύτερη Διάλεξη Βασικά στοιχεία της γλώσσας προγραμματισμού C Μία γλώσσα προγραμματισμού όπως και μια ανθρώπινη γλώσσα μπορεί να μελετηθεί ως προς το αλφάβητό της,

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

ΑΣΚΗΣΗ 6: ΔΕΙΚΤΕΣ. Σκοπός της Άσκησης. 1. Εισαγωγικά στοιχεία για τους Δείκτες

ΑΣΚΗΣΗ 6: ΔΕΙΚΤΕΣ. Σκοπός της Άσκησης. 1. Εισαγωγικά στοιχεία για τους Δείκτες Σκοπός της Άσκησης ΑΣΚΗΣΗ 6: ΔΕΙΚΤΕΣ Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η εξοικείωση με τη χρήση των δεικτών (pointers). Οι δείκτες δίνουν την δυνατότητα σε προγράμματα να προσομοιώνουν τη

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

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

Δεδομένα, Τύποι και Τιμές Προγραμματισμός Η/Υ Ι Δεδομένα, Τύποι και Τιμές ΕΛΕΥΘΕΡΙΟΣ ΚΟΣΜΑΣ ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2018-2019 ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ Τ.Ε. 1 Περίληψη Οι περισσότερες προγραμματιστικές εργασίες περιλαμβάνουν χειρισμό

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι 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

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

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

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

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

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

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δείκτες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Τι είναι ο δείκτης Ένας δείκτης είναι μια μεταβλητή που περιέχει μια διεύθυνση μνήμης. Θυμηθείτε πως

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

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

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

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

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

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

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

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

ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ Έλεγχος ροής Δομή επιλογής (if, switch) Δομές επανάληψης (while, do-while, for) Διακλάδωση

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

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

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διαμόρφωση Ελέγχου Ροής Προγράμματος Δομημένος Προγραμματισμός Ο πιο απλός και συνηθισμένος

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

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

Στόχοι και αντικείμενο ενότητας. Προτάσεις επανάληψης. Έλεγχος ροής προγράμματος. #5.. Εντολές Επανάληψης Στόχοι και αντικείμενο ενότητας Έλεγχος ροής προγράμματος (βλ. ενότητα #4) Δομή επανάληψης #5.. Εντολές Επανάληψης Προτάσεις επανάληψης Εντολές while, do while Εντολή for Περί βρόχων (loops) Τελεστές,

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

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

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

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

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

char name[5]; /* define a string of characters */ Συµβολοσειρές (Strings) Συµβολοσειρά (string) είναι µια σειρά αλφαριθµητικών χαρακτήρων (γενικά εκτυπώσιµων συµβόλων ASCII). Όταν λέµε σειρά εννοούµε διαδοχικές θέσεις µνήµης που µπορούν να αντιµετωπισθούν

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

γνωστό) ΘΕΩΡΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Ι ΑΣΚΗΣΕΙΣ ΘΕΩΡΙΑΣ Ασκήσεις C 1. Να γραφεί πρόγραµµα που να εµφανίζει τους 5 πρώτους µεγαλύτερους

γνωστό) ΘΕΩΡΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Ι ΑΣΚΗΣΕΙΣ ΘΕΩΡΙΑΣ Ασκήσεις C 1. Να γραφεί πρόγραµµα που να εµφανίζει τους 5 πρώτους µεγαλύτερους Ασκήσεις C ΘΕΩΡΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Ι ΑΣΚΗΣΕΙΣ ΘΕΩΡΙΑΣ 2-05-2007 1. Να γραφεί πρόγραµµα που να εµφανίζει τους 5 πρώτους µεγαλύτερους του µηδενός ακέραιους αριθµούς. int i; for(i=1;i

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

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

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

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

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

Διαδικαστικός Προγραμματισμός Διαδικαστικός Προγραμματισμός Ενότητα 3: Εντολές ελέγχου επανάληψη Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό,

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

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

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

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

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

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

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

TMHMA TEXNΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛ/ΝΙΩΝ Προγραμματισμός Ι ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ , Α ΕΞΑΜΗΝΟ Βασίλης Μποζαντζής. Βασίλης Μποζαντζής

TMHMA TEXNΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛ/ΝΙΩΝ Προγραμματισμός Ι ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ , Α ΕΞΑΜΗΝΟ Βασίλης Μποζαντζής. Βασίλης Μποζαντζής TMHMA TEXNΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛ/ΝΙΩΝ Προγραμματισμός Ι ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2010 2011, Α ΕΞΑΜΗΝΟ Βασίλης Μποζαντζής Βασίλης Μποζαντζής Εισαγωγικά Οι 32 δεσμευμένες λέξεις σύμφωνα με το πρότυπο ANSI

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

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

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

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

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια: Εργαστήριο 6: 6.1 Δομές Επανάληψης Βρόγχοι (Loops) Όταν θέλουμε να επαναληφθεί μια ομάδα εντολών τη βάζουμε μέσα σε ένα βρόχο επανάληψης. Το αν θα (ξανα)επαναληφθεί η εκτέλεση της ομάδας εντολών καθορίζεται

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

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

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

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

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ Η ΓΛΩΣΣΑ PASCAL ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ Απλοί ή στοιχειώδης Τ.Δ. Ακέραιος τύπος Πραγματικός τύπος Λογικός τύπος Χαρακτήρας Σύνθετοι Τ.Δ. Αλφαριθμητικός 1. Ακέραιος (integer) Εύρος: -32768 έως 32767 Δήλωση

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

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

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

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

Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13

Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13 Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13 ΙΣΤΟΡΙΚΑ Παρουσιάστηκε το 1970 από το Niklaus Wirth Προγενέστερη γλώσσα ήταν η Algol 60 Είναι δομημένη γλώσσα προγραμματισμού υψηλού

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

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

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

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

Προσέξτε πως η παράσταση μπορεί να περιλαμβάνει όχι μόνο μία τιμή ή μια άλλη μεταβλητή αλλά μια ολόκληρη μαθηματική παράσταση, όπως η εξής:

Προσέξτε πως η παράσταση μπορεί να περιλαμβάνει όχι μόνο μία τιμή ή μια άλλη μεταβλητή αλλά μια ολόκληρη μαθηματική παράσταση, όπως η εξής: Νικόλαος Μιχαλοδημητράκης Σημειώσεις C (Εργαστήριο) 3 ο Μέρος 3 ο Μέρος Παραστάσεις και Τελεστές Εντολή καταχώρησης Για να καταχωρήσουμε μία τιμή σε μια μεταβλητή χρησιμοποιούμε τον τελεστή καταχώρησης

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

4. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Α' μέρος: for)

4. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Α' μέρος: for) 4. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Α' μέρος: for) 4.1 Μετρητές Ένας μετρητής (counter) είναι μία μεταβλητή η οποία ξεκινά με μία αρχική τιμή και αυξάνεται κατά ένα κάθε φορά που εκτελείται. Ο αλγόριθμος για έναν μετρητή

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

3. Εκφράσεις και έλεγχος ροής

3. Εκφράσεις και έλεγχος ροής 3. Εκφράσεις και έλεγχος ροής Τελειώνοντας αυτό το κεφάλαιο θα μπορείτε: Να διακρίνετε ανάμεσα σε μεταβλητές μέλη και αυτόματες μεταβλητές Να περιγράφετε την αρχικοποίηση των μεταβλητών μελών Να αναγνωρίζετε

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

Pascal, απλοί τύποι, τελεστές και εκφράσεις

Pascal, απλοί τύποι, τελεστές και εκφράσεις Pascal, απλοί τύποι, τελεστές και εκφράσεις 15 Νοεμβρίου 2011 1 Γενικά Στην standard Pascal ορίζονται τέσσερις βασικοί τύποι μεταβλητών: integer: Παριστάνει ακέραιους αριθμούς από το -32768 μέχρι και το

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 4ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 ΟΙ ΤΕΛΕΣΤΕΣ ΣΥΓΚΡΙΣΗΣ Με τους τελεστές σύγκρισης, συγκρίνουμε τις

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

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client ΕΣΔ 516 Τεχνολογίες Διαδικτύου Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client Περιεχόμενα Περιεχόμενα Javascript και HTML Βασική σύνταξη Μεταβλητές Τελεστές Συναρτήσεις

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

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

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε

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

if(συνθήκη) {... // οµάδα εντολών } C: Από τη Θεωρία στην Εφαρµογή 5 ο Κεφάλαιο

if(συνθήκη) {... // οµάδα εντολών } C: Από τη Θεωρία στην Εφαρµογή 5 ο Κεφάλαιο C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 5 ο Έλεγχος Προγράµµατος Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Η εντολή if (Ι) Η εντολή if είναι µία από τις βασικότερες δοµές ελέγχου ροής στη C, αλλά και στις περισσότερες

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

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Προβλήματα, αλγόριθμοι, ψευδοκώδικας Προβλήματα, αλγόριθμοι, ψευδοκώδικας October 11, 2011 Στο μάθημα Αλγοριθμική και Δομές Δεδομένων θα ασχοληθούμε με ένα μέρος της διαδικασίας επίλυσης υπολογιστικών προβλημάτων. Συγκεκριμένα θα δούμε τι

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 2 Εντολές Εισόδου/Εξόδου Τελεστές. Δρ. Γιώργος Λαμπρινίδης 23/10/2015 Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 2 Εντολές Εισόδου/Εξόδου Τελεστές. Δρ. Γιώργος Λαμπρινίδης 23/10/2015 Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1 Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 2 Εντολές Εισόδου/Εξόδου Τελεστές Δρ. Γιώργος Λαμπρινίδης amprinidis@pharm.uoa.gr 1 Αριθμητικοί Τελεστές + πρόσθεση - αφαίρεση * πολλαπλασιασμός / διαίρεση Προσοχή! Διαίρεση

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

ΑΣΚΗΣΗ 5: ΠΙΝΑΚΕΣ. Σχήµα 1: H έννοια των πινάκων

ΑΣΚΗΣΗ 5: ΠΙΝΑΚΕΣ. Σχήµα 1: H έννοια των πινάκων Σκοπός της Άσκησης ΑΣΚΗΣΗ 5: ΠΙΝΑΚΕΣ Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η εξοικείωση µε τη χρήση πινάκων σαν διατάξεις αποθήκευσης δεδοµένων της Γλώσσας Προγραµµατισµού C. H συγκεκριµένη άσκηση

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

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

Στοιχειώδης προγραμματισμός σε C++ Στοιχειώδης προγραμματισμός σε C++ Σύντομο Ιστορικό. Το πρόγραμμα Hello World. Ο τελεστής εξόδου. Μεταβλητές και δηλώσεις τους. Αντικείμενα, μεταβλητές, σταθερές. Ο τελεστής εισόδου. Θεμελιώδεις τύποι.

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

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

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

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

Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη.

Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη. Εργαστήριο 4: 4.1 Η Δομή Ελέγχου if Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη. Γενική Μορφή: Παρατηρήσεις:

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

for for for for( . */

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

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

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

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

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

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

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

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

3 ο Εργαστήριο Μεταβλητές, Τελεστές

3 ο Εργαστήριο Μεταβλητές, Τελεστές 3 ο Εργαστήριο Μεταβλητές, Τελεστές Μια μεταβλητή έχει ένα όνομα και ουσιαστικά είναι ένας δείκτης σε μια συγκεκριμένη θέση στη μνήμη του υπολογιστή. Στη θέση μνήμης στην οποία δείχνει μια μεταβλητή αποθηκεύονται

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

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

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

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

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

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

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

ΑΣΚΗΣΗ 3: ΠΡΟΤΑΣΕΙΣ, ΕΚΦΡΑΣΕΙΣ ΚΑΙ ΤΕΛΕΣΤΕΣ

ΑΣΚΗΣΗ 3: ΠΡΟΤΑΣΕΙΣ, ΕΚΦΡΑΣΕΙΣ ΚΑΙ ΤΕΛΕΣΤΕΣ ΑΣΚΗΣΗ 3: ΠΡΟΤΑΣΕΙΣ, ΕΚΦΡΑΣΕΙΣ ΚΑΙ ΤΕΛΕΣΤΕΣ Σκοπός της Άσκησης Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η χρήση των βασικών τελεστών της Γλώσσας Προγραµµατισµού C : αριθµητικοί τελεστές, τελεστές

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

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

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

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

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

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

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

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

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

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

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

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

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

ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΣΤΑΘΕΡΕΣ ΜΕΤΑΒΛΗΤΕΣ

ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΣΤΑΘΕΡΕΣ ΜΕΤΑΒΛΗΤΕΣ ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ Κεφαλαία και μικρά γράμματα ελληνικού αλφαβήτου: Α Ω και α ω Κεφαλαία και μικρά γράμματα λατινικού αλφαβήτου: A Z και a z Αριθμητικά ψηφία: 0 9 Ειδικοί χαρακτήρες: + - * / =. ( ),! & κενός

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

Ψευδοκώδικας. November 7, 2011

Ψευδοκώδικας. November 7, 2011 Ψευδοκώδικας November 7, 2011 Οι γλώσσες τύπου ψευδοκώδικα είναι ένας τρόπος περιγραφής αλγορίθμων. Δεν υπάρχει κανένας τυπικός ορισμός της έννοιας του ψευδοκώδικα όμως είναι κοινός τόπος ότι οποιαδήποτε

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

Λογικό "και" (AND) μας επιστρέφει 1 αν και οι δύο operands είναι όχι μηδέν, διαφορετικά 0)

Λογικό και (AND) μας επιστρέφει 1 αν και οι δύο operands είναι όχι μηδέν, διαφορετικά 0) 0ι Λογικοί Τελεστές: Πρόκειται για τελεστές που μας επιτρέπουν να συνδυάσουμε απλές εκφράσεις συσχετισμού και να δημιουργήσουμε πιό πολύπλοκες λογικές εκφράσεις. Εχουμε λοιπόν: && Λογικό "και" (AND) μας

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

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

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

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

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

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

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

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

Διάλεξη 5η: Εντολές Επανάληψης Διάλεξη 5η: Εντολές Επανάληψης Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Εντολές Επανάληψης CS100, 2015-2016

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