Εισαγωγήστηνγλώσσα προγραμματισμού...
TRANSCRIPT
![Page 1: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include #include “genlib.h”](https://reader035.vdocuments.site/reader035/viewer/2022071423/611ddcdd992b346b4e477660/html5/thumbnails/1.jpg)
Εισαγωγή στην γλώσσαπρογραμματισμού C
![Page 2: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include #include “genlib.h”](https://reader035.vdocuments.site/reader035/viewer/2022071423/611ddcdd992b346b4e477660/html5/thumbnails/2.jpg)
Χαρακτηριστικά της C
• Ιδιαίτερα δημοφιλής• Έχει χρησιμοποιηθεί για τονπρογραμματισμό ευρέος φάσματοςσυστημάτων και εφαρμογών
• Γλώσσα μετρίου επιπέδου• Φιλοσοφία: Ο προγραμματιστής έχει τονπλήρη έλεγχο και ευθύνεται για τασφάλματά του
![Page 3: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include #include “genlib.h”](https://reader035.vdocuments.site/reader035/viewer/2022071423/611ddcdd992b346b4e477660/html5/thumbnails/3.jpg)
Μεταγλώττιση και εκτέλεσηπρογραμμάτων
![Page 4: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include #include “genlib.h”](https://reader035.vdocuments.site/reader035/viewer/2022071423/611ddcdd992b346b4e477660/html5/thumbnails/4.jpg)
Hello, world!/* Αρχείο hello.cσυνέχεια*/
#include <stdio.h>#include “genlib.h”
main(){
printf(“Hello, world.\n”);}
![Page 5: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include #include “genlib.h”](https://reader035.vdocuments.site/reader035/viewer/2022071423/611ddcdd992b346b4e477660/html5/thumbnails/5.jpg)
Σχόλια
• Κείμενο που περικλείεται από τουςσημειωτές /* και */.
• Είναι δυνατόν να εκτείνονται σε πολλέςγραμμές
• Παρέχουν εξηγήσεις για κάποιο τμήμαπρογράμματος
![Page 6: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include #include “genlib.h”](https://reader035.vdocuments.site/reader035/viewer/2022071423/611ddcdd992b346b4e477660/html5/thumbnails/6.jpg)
Συμπεριλήψεις βιβλιοθηκών• Οι γραμμές
#include <stdio.h>#include “genlib.h”
• Δηλώνουν ότι το πρόγραμμα χρησιμοποιεί δύοβιβλιοθήκες:– την πρότυπη βιβλιοθήκη εισόδου/εξόδου (standard input/output)– μια γενική βιβλιοθήκη (general library) σχεδιασμένη ειδικά για ταπρογράμματα του βιβλίου «Η Τέχνη και η Επιστήμη της C» τουEric Roberts το οποίο θα χρησιμοποιηθεί στο μάθημα.
• Οι πρότυπες βιβλιοθήκες (ANSI C) περικλείονται με <…>ενώ οι επεκτάσεις με τα σύμβολα “…”
• Τα αρχεία stdio.h και genlib.h ονομάζονται αρχείαεπικεφαλίδας (header files).
![Page 7: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include #include “genlib.h”](https://reader035.vdocuments.site/reader035/viewer/2022071423/611ddcdd992b346b4e477660/html5/thumbnails/7.jpg)
Το κυρίως πρόγραμμα• Το κυρίως πρόγραμμα αποτελείται από τις γραμμές:main(){
printf(“Hello, world.\n”);}• Αυτές οι γραμμές ορίζουν μια συνάρτηση της C.• Μια συνάρτηση είναι μια ακολουθία μεμονωμένων βημάτων του
προγράμματος που έχουν ομαδοποιηθεί και στην οποία έχει δοθείένα όνομα.
• Τα βήματα που ακολουθεί η συνάρτηση παρατίθενται μέσα σεάγκιστρα {} και ονομάζονται εντολές.
• Η συνάρτηση main είναι μια ειδική συνάρτηση στη γλώσσα C. • Κάθε φορά που εκτελείται ένα πρόγραμμα εκτελούνται οι εντολές
που περικλείονται μέσα στη συνάρτηση main του προγράμματος.• Στο τέλος κάθε εντολής βάζουμε ελληνικό ερωτηματικό (;)
![Page 8: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include #include “genlib.h”](https://reader035.vdocuments.site/reader035/viewer/2022071423/611ddcdd992b346b4e477660/html5/thumbnails/8.jpg)
Κλήση συνάρτησης
• Το κυρίως πρόγραμμα έχει μόνο μια εντολήprintf(“Hello, world.\n”);
• Η printf είναι μια συνάρτηση της C.• Η επίκληση μιας συνάρτησης με χρήση τουονόματός της ονομάζεται κλήση τηςσυνάρτησης.
• Με την κλήση μιας συνάρτησης εκτελούνται οιεντολές που έχουν οριστεί μέσα στο σώμα τηςσυνάρτησης αυτής.
![Page 9: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include #include “genlib.h”](https://reader035.vdocuments.site/reader035/viewer/2022071423/611ddcdd992b346b4e477660/html5/thumbnails/9.jpg)
Η συνάρτηση printf• H printf χρησιμοποιείται για την εκτύπωσηδεδομένων στην έξοδο του προγράμματος.
• Δέχεται ως όρισμα ένα αλφαριθμητικό (“Hello, world\n”).
• Όρισμα είναι πληροφορία που θέτει στηδιάθεση μιας συνάρτησης αυτός που την καλεί.
• Ένα αλφαριθμητικό (string) είναι μια ακολουθίαχαρακτήρων (συμβολοσειρά).
• Ο ειδικός χαρακτήρας ‘\n’ ονομάζεται αλλαγήγραμμής.
![Page 10: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include #include “genlib.h”](https://reader035.vdocuments.site/reader035/viewer/2022071423/611ddcdd992b346b4e477660/html5/thumbnails/10.jpg)
Ένα δεύτερο πρόγραμμα#include <stdio.h>#include “genlib.h”#include “simpio.h”
main(){
int n1, n2, total;printf(“This program adds two numbers\n”);printf(“1st number? “);n1 = GetInteger();printf(“2nd number? “);n2 = GetInteger();total = n1 + n2;printf(“The total is %d\n”, total);
}
![Page 11: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include #include “genlib.h”](https://reader035.vdocuments.site/reader035/viewer/2022071423/611ddcdd992b346b4e477660/html5/thumbnails/11.jpg)
• συμπερίληψη νέας βιβλιοθήκης• #include “simpio.h”
• simplified input/output (απλοποιημένηείσοδος/έξοδος), περιέχει τη δήλωση τηςσυνάρτησης GetInteger.
![Page 12: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include #include “genlib.h”](https://reader035.vdocuments.site/reader035/viewer/2022071423/611ddcdd992b346b4e477660/html5/thumbnails/12.jpg)
Δήλωση μεταβλητών• Η γραμμή
int n1, n2, total;• περιέχει τη δήλωση των μεταβλητών n1, n2, total.• Μια μεταβλητή αποτελεί ένα όνομα και ένα δεσμευτικόθέσης για κάποια δεδομένα των οποίων η τιμή είναιάγνωστη όταν γράφεται το πρόγραμμα.
• Μια δήλωση πληροφορεί τον μεταγλωττιστή της C για τοόνομα και τον τύπο μιας νέας μεταβλητής.
• Η χρήση μιας μεταβλητής που δεν έχει δηλωθεί μέσα σεένα πρόγραμμα αποτελεί συντακτικό λάθος καιεπισημαίνεται από τον μεταγλωττιστή.
• Οι μεταβλητές που δηλώνονται σε αυτό το πρόγραμμαέχουν τύπο int (ακέραιος, integer).
![Page 13: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include #include “genlib.h”](https://reader035.vdocuments.site/reader035/viewer/2022071423/611ddcdd992b346b4e477660/html5/thumbnails/13.jpg)
• Εντολή ανάθεσηςn1 = GetInteger();
• Παράστασηtotal = n1 + n2;
• Μορφοποιημένη έξοδος με την printfprintf(“The total is %d\n”, total);
![Page 14: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include #include “genlib.h”](https://reader035.vdocuments.site/reader035/viewer/2022071423/611ddcdd992b346b4e477660/html5/thumbnails/14.jpg)
Τύποι δεδομένων
• Ακέραιοι αριθμοίint
• Αριθμοί κινητής υποδιαστολήςdouble
• ΑλφαριθμητικάstringΟ τύπος string δεν είναι βασικός τύπος της C. Έχειοριστεί για τις ανάγκες του βιβλίου. Η C χρησιμοποιείστην πραγματικότητα έναν σύνθετο τύπο για τιςσυμβολοσειρές.
![Page 15: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include #include “genlib.h”](https://reader035.vdocuments.site/reader035/viewer/2022071423/611ddcdd992b346b4e477660/html5/thumbnails/15.jpg)
Ανάγνωση και εκτύπωση τωνπαραπάνω τύπων δεδομένων
int n;n = GetInteger();printf(“%d\n”, n);
double f;f = GetReal();printf(“%g\n”, f);
string name;name = GetLine();printf(“%s\n”, name);
![Page 16: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include #include “genlib.h”](https://reader035.vdocuments.site/reader035/viewer/2022071423/611ddcdd992b346b4e477660/html5/thumbnails/16.jpg)
Παραστάσεις• Οι υπολογισμοί σε ένα πρόγραμμα πραγματοποιούνταιορίζοντας παραστάσεις.
• Μια παράσταση αποτελείται από όρους και τελεστές.• Κατά την εκτέλεση ενός προγράμματος, η εκτέλεση κάθεπράξης που καθορίζονται σε μια παράσταση ονομάζεταιαποτίμηση της παράστασης.
• Παραδείγματα παραστάσεων:1 + 2(n + 2) * (m - 1.5)“Mercury”
![Page 17: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include #include “genlib.h”](https://reader035.vdocuments.site/reader035/viewer/2022071423/611ddcdd992b346b4e477660/html5/thumbnails/17.jpg)
Όροι παραστάσεων
• Κάθε όρος μπορεί να είναι:– Μια σταθερή– Μια μεταβλητή– Μια κλήση συνάρτησης– Μια παράσταση με παρενθέσεις
![Page 18: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include #include “genlib.h”](https://reader035.vdocuments.site/reader035/viewer/2022071423/611ddcdd992b346b4e477660/html5/thumbnails/18.jpg)
Σταθερές• Ακέραιες
125 -1 0 33934• Κινητής υποδιαστολής
32.432 0.232.44e6 4.23e-12-4.01e8
• Αλφαριθμητικά“abcd” “Hello, world.\n”
![Page 19: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include #include “genlib.h”](https://reader035.vdocuments.site/reader035/viewer/2022071423/611ddcdd992b346b4e477660/html5/thumbnails/19.jpg)
Μεταβλητές• Μια μεταβλητή έχει τρεις σημαντικές ιδιότητες
– όνομα– τιμή– τύπο
• Έγκυρα ονόματα μεταβλητώνvalue _avalue name123an_integer AnOtherName
• Μη έγκυρα ονόματα μεταβλητώνa*value intwhile one@variable1var 32.number
![Page 20: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include #include “genlib.h”](https://reader035.vdocuments.site/reader035/viewer/2022071423/611ddcdd992b346b4e477660/html5/thumbnails/20.jpg)
Εντολές ανάθεσηςμεταβλητή = παράσταση;
Όπουμεταβλητή είναι η μεταβλητή στην οποία θέλουμε νααποδώσουμε τιμή
παράσταση είναι η καθοριζόμενη τιμή (αφού αποτιμηθεί ηπαράσταση
• Παραδείγματαstring msg;msg = “Leave your things at the entrance”;n=21;
![Page 21: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include #include “genlib.h”](https://reader035.vdocuments.site/reader035/viewer/2022071423/611ddcdd992b346b4e477660/html5/thumbnails/21.jpg)
Τελεστές και τελεστέοι• Αριθμητικοί τελεστές
+ πρόσθεση- αφαίρεση* πολλαπλασιασμός/ διαίρεση
• Παραδείγματα παραστάσεων(2 * x) + (3 * y)
• Διμελείς (binary) τελεστές• Μονομελής (unary) τελεστής --y -(12.4 / 3.5)
![Page 22: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include #include “genlib.h”](https://reader035.vdocuments.site/reader035/viewer/2022071423/611ddcdd992b346b4e477660/html5/thumbnails/22.jpg)
Συνδυασμός ακεραίων και αριθμώνκινητής υποδιαστολής
• Οι παραστάσεις επιτρέπεται να περιέχουντιμές τύπου int και double ταυτόχρονα.12 + 3.5 n + 1.1 (το n είναι τύπου int)
Κανόνας: Αν ένας τουλάχιστον από τουςτελεστέους είναι τύπου double τότε τοαποτέλεσμα είναι πάντα τύπου double.
![Page 23: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include #include “genlib.h”](https://reader035.vdocuments.site/reader035/viewer/2022071423/611ddcdd992b346b4e477660/html5/thumbnails/23.jpg)
Διαίρεση ακεραίων• Όταν σε μια πράξη που ορίζεται από ένανδιμελή τελεστή (+, -, *, /) και οι δύο τελεστέοιείναι ακέραιοι, το αποτέλεσμα είναι ακέραιο.
• Ο παραπάνω κανόνας έχει ως συνέπεια τοαποτέλεσμα της διαίρεσης δυο ακεραίων να είναιακέραιος (το υπόλοιπο της διαίρεσης αγνοείται).
• Παράδειγμα:Το αποτέλεσμα της διαίρεσης 3 / 2 είναι 1 καιόχι 1.5!
Για τον σωστό υπολογισμό γράφουμε3.0 / 2.0 ή 3.0 / 2 ή 3 / 2.0
![Page 24: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include #include “genlib.h”](https://reader035.vdocuments.site/reader035/viewer/2022071423/611ddcdd992b346b4e477660/html5/thumbnails/24.jpg)
Ο τελεστής υπολοίπου• Ο τελεστής % επιστρέφει το ακέραιο υπόλοιποτης διαίρεσης του πρώτου τελεστέου με τονδεύτερο.0 % 3 = 0 3 % 3 = 01 % 3 = 1 4 % 3 = 12 % 3 = 2 5 % 3 = 2
• Και οι δύο τελεστέοι πρέπει να είναι τύπου int.• Αποφεύγετε να χρησιμοποιείτε τον τελεστή % μεαρνητικούς τελεστέους, καθώς σε αυτή τηνπερίπτωση η συμπεριφορά του προγράμματοςποικίλει από υπολογιστή σε υπολογιστή.
![Page 25: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include #include “genlib.h”](https://reader035.vdocuments.site/reader035/viewer/2022071423/611ddcdd992b346b4e477660/html5/thumbnails/25.jpg)
Προτεραιότητα τελεστώνΓια την αποφυγή της χρήσης παρενθέσεων σε
κάθε περίπτωση, ορίζονται κανόνεςπροτεραιότητας των αριθμητικώνπαραστάσεων
1. Πρώτα αποτιμώνται οι μονομελείς τελεστέςάρνησης
2. Στη συνέχεια αποτιμώνται οιπολλαπλασιαστικοί τελεστές (*,/,%) απόαριστερά προς τα δεξιά
3. Στη συνέχεια αποτιμώνται οι προσθετικοίτελεστές επίσης από τα αριστερά προς ταδεξιά.
![Page 26: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include #include “genlib.h”](https://reader035.vdocuments.site/reader035/viewer/2022071423/611ddcdd992b346b4e477660/html5/thumbnails/26.jpg)
Προτεραιότητα τελεστών -Παραδείγματα
• Η παράστασηx * 2 - y / 3 είναι ισοδύναμη με την(x * 2) - (y / 3)
• Η παράστασηx * 2 % y / 3 είναι ισοδύναμη με την((x * 2) % y) / 3)
• Η παράσταση-x * 2 / 5 - y / 3 * 2 είναι ισοδύναμημε την(((-x) * 2) / 5) – ((y / 3) * 2)
![Page 27: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include #include “genlib.h”](https://reader035.vdocuments.site/reader035/viewer/2022071423/611ddcdd992b346b4e477660/html5/thumbnails/27.jpg)
Μετατροπή τύπων και αποκοπή
Στο παρακάτω τμήμα κώδικαint n;n = 2.342
μετά την ανάθεση n = 2.342, το n έχει τηντιμή 2. Το κλασματικό μέρος (0.342) αποκόπτεται.
![Page 28: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include #include “genlib.h”](https://reader035.vdocuments.site/reader035/viewer/2022071423/611ddcdd992b346b4e477660/html5/thumbnails/28.jpg)
Ρητή μετατροπή τύπων (type cast)
• Πολλές φορές απαιτούμε την ρητή μετατροπήενός τύπου σε έναν άλλον, όπως στοπαράδειγμαdouble quot;int num, den;quot = num / (double) den;
• Σε αυτή την περίπτωση η διαίρεση θαπραγματοποιηθεί με χρήση αριθμών κινητήςυποδιαστολής και το υπόλοιπο διατηρείται.
• Χωρίς τη χρήση του τελεστή ρητής μετατροπής(double) η διαίρεση πραγματοποιείται με χρήσηακεραίων και το υπόλοιπο χάνεται.
![Page 29: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include #include “genlib.h”](https://reader035.vdocuments.site/reader035/viewer/2022071423/611ddcdd992b346b4e477660/html5/thumbnails/29.jpg)
Δείτε
• Το κεφάλαιο 2 του βιβλίου