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

Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include #include “genlib.h”

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include  #include “genlib.h”

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

Page 2: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include  #include “genlib.h”

Χαρακτηριστικά της C

• Ιδιαίτερα δημοφιλής• Έχει χρησιμοποιηθεί για τονπρογραμματισμό ευρέος φάσματοςσυστημάτων και εφαρμογών

• Γλώσσα μετρίου επιπέδου• Φιλοσοφία: Ο προγραμματιστής έχει τονπλήρη έλεγχο και ευθύνεται για τασφάλματά του

Page 3: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include  #include “genlib.h”

Μεταγλώττιση και εκτέλεσηπρογραμμάτων

Page 4: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include  #include “genlib.h”

Hello, world!/* Αρχείο hello.cσυνέχεια*/

#include <stdio.h>#include “genlib.h”

main(){

printf(“Hello, world.\n”);}

Page 5: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include  #include “genlib.h”

Σχόλια

• Κείμενο που περικλείεται από τουςσημειωτές /* και */.

• Είναι δυνατόν να εκτείνονται σε πολλέςγραμμές

• Παρέχουν εξηγήσεις για κάποιο τμήμαπρογράμματος

Page 6: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include  #include “genlib.h”

Συμπεριλήψεις βιβλιοθηκών• Οι γραμμές

#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”

Το κυρίως πρόγραμμα• Το κυρίως πρόγραμμα αποτελείται από τις γραμμές:main(){

printf(“Hello, world.\n”);}• Αυτές οι γραμμές ορίζουν μια συνάρτηση της C.• Μια συνάρτηση είναι μια ακολουθία μεμονωμένων βημάτων του

προγράμματος που έχουν ομαδοποιηθεί και στην οποία έχει δοθείένα όνομα.

• Τα βήματα που ακολουθεί η συνάρτηση παρατίθενται μέσα σεάγκιστρα {} και ονομάζονται εντολές.

• Η συνάρτηση main είναι μια ειδική συνάρτηση στη γλώσσα C. • Κάθε φορά που εκτελείται ένα πρόγραμμα εκτελούνται οι εντολές

που περικλείονται μέσα στη συνάρτηση main του προγράμματος.• Στο τέλος κάθε εντολής βάζουμε ελληνικό ερωτηματικό (;)

Page 8: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include  #include “genlib.h”

Κλήση συνάρτησης

• Το κυρίως πρόγραμμα έχει μόνο μια εντολήprintf(“Hello, world.\n”);

• Η printf είναι μια συνάρτηση της C.• Η επίκληση μιας συνάρτησης με χρήση τουονόματός της ονομάζεται κλήση τηςσυνάρτησης.

• Με την κλήση μιας συνάρτησης εκτελούνται οιεντολές που έχουν οριστεί μέσα στο σώμα τηςσυνάρτησης αυτής.

Page 9: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include  #include “genlib.h”

Η συνάρτηση printf• H printf χρησιμοποιείται για την εκτύπωσηδεδομένων στην έξοδο του προγράμματος.

• Δέχεται ως όρισμα ένα αλφαριθμητικό (“Hello, world\n”).

• Όρισμα είναι πληροφορία που θέτει στηδιάθεση μιας συνάρτησης αυτός που την καλεί.

• Ένα αλφαριθμητικό (string) είναι μια ακολουθίαχαρακτήρων (συμβολοσειρά).

• Ο ειδικός χαρακτήρας ‘\n’ ονομάζεται αλλαγήγραμμής.

Page 10: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include  #include “genlib.h”

Ένα δεύτερο πρόγραμμα#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”

• συμπερίληψη νέας βιβλιοθήκης• #include “simpio.h”

• simplified input/output (απλοποιημένηείσοδος/έξοδος), περιέχει τη δήλωση τηςσυνάρτησης GetInteger.

Page 12: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include  #include “genlib.h”

Δήλωση μεταβλητών• Η γραμμή

int n1, n2, total;• περιέχει τη δήλωση των μεταβλητών n1, n2, total.• Μια μεταβλητή αποτελεί ένα όνομα και ένα δεσμευτικόθέσης για κάποια δεδομένα των οποίων η τιμή είναιάγνωστη όταν γράφεται το πρόγραμμα.

• Μια δήλωση πληροφορεί τον μεταγλωττιστή της C για τοόνομα και τον τύπο μιας νέας μεταβλητής.

• Η χρήση μιας μεταβλητής που δεν έχει δηλωθεί μέσα σεένα πρόγραμμα αποτελεί συντακτικό λάθος καιεπισημαίνεται από τον μεταγλωττιστή.

• Οι μεταβλητές που δηλώνονται σε αυτό το πρόγραμμαέχουν τύπο int (ακέραιος, integer).

Page 13: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include  #include “genlib.h”

• Εντολή ανάθεσηςn1 = GetInteger();

• Παράστασηtotal = n1 + n2;

• Μορφοποιημένη έξοδος με την printfprintf(“The total is %d\n”, total);

Page 14: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include  #include “genlib.h”

Τύποι δεδομένων

• Ακέραιοι αριθμοίint

• Αριθμοί κινητής υποδιαστολήςdouble

• ΑλφαριθμητικάstringΟ τύπος string δεν είναι βασικός τύπος της C. Έχειοριστεί για τις ανάγκες του βιβλίου. Η C χρησιμοποιείστην πραγματικότητα έναν σύνθετο τύπο για τιςσυμβολοσειρές.

Page 15: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include  #include “genlib.h”

Ανάγνωση και εκτύπωση τωνπαραπάνω τύπων δεδομένων

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”

Παραστάσεις• Οι υπολογισμοί σε ένα πρόγραμμα πραγματοποιούνταιορίζοντας παραστάσεις.

• Μια παράσταση αποτελείται από όρους και τελεστές.• Κατά την εκτέλεση ενός προγράμματος, η εκτέλεση κάθεπράξης που καθορίζονται σε μια παράσταση ονομάζεταιαποτίμηση της παράστασης.

• Παραδείγματα παραστάσεων:1 + 2(n + 2) * (m - 1.5)“Mercury”

Page 17: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include  #include “genlib.h”

Όροι παραστάσεων

• Κάθε όρος μπορεί να είναι:– Μια σταθερή– Μια μεταβλητή– Μια κλήση συνάρτησης– Μια παράσταση με παρενθέσεις

Page 18: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include  #include “genlib.h”

Σταθερές• Ακέραιες

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”

Μεταβλητές• Μια μεταβλητή έχει τρεις σημαντικές ιδιότητες

– όνομα– τιμή– τύπο

• Έγκυρα ονόματα μεταβλητώνvalue _avalue name123an_integer AnOtherName

• Μη έγκυρα ονόματα μεταβλητώνa*value intwhile one@variable1var 32.number

Page 20: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include  #include “genlib.h”

Εντολές ανάθεσηςμεταβλητή = παράσταση;

Όπουμεταβλητή είναι η μεταβλητή στην οποία θέλουμε νααποδώσουμε τιμή

παράσταση είναι η καθοριζόμενη τιμή (αφού αποτιμηθεί ηπαράσταση

• Παραδείγματαstring msg;msg = “Leave your things at the entrance”;n=21;

Page 21: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include  #include “genlib.h”

Τελεστές και τελεστέοι• Αριθμητικοί τελεστές

+ πρόσθεση- αφαίρεση* πολλαπλασιασμός/ διαίρεση

• Παραδείγματα παραστάσεων(2 * x) + (3 * y)

• Διμελείς (binary) τελεστές• Μονομελής (unary) τελεστής --y -(12.4 / 3.5)

Page 22: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include  #include “genlib.h”

Συνδυασμός ακεραίων και αριθμώνκινητής υποδιαστολής

• Οι παραστάσεις επιτρέπεται να περιέχουντιμές τύπου int και double ταυτόχρονα.12 + 3.5 n + 1.1 (το n είναι τύπου int)

Κανόνας: Αν ένας τουλάχιστον από τουςτελεστέους είναι τύπου double τότε τοαποτέλεσμα είναι πάντα τύπου double.

Page 23: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include  #include “genlib.h”

Διαίρεση ακεραίων• Όταν σε μια πράξη που ορίζεται από ένανδιμελή τελεστή (+, -, *, /) και οι δύο τελεστέοιείναι ακέραιοι, το αποτέλεσμα είναι ακέραιο.

• Ο παραπάνω κανόνας έχει ως συνέπεια τοαποτέλεσμα της διαίρεσης δυο ακεραίων να είναιακέραιος (το υπόλοιπο της διαίρεσης αγνοείται).

• Παράδειγμα:Το αποτέλεσμα της διαίρεσης 3 / 2 είναι 1 καιόχι 1.5!

Για τον σωστό υπολογισμό γράφουμε3.0 / 2.0 ή 3.0 / 2 ή 3 / 2.0

Page 24: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include  #include “genlib.h”

Ο τελεστής υπολοίπου• Ο τελεστής % επιστρέφει το ακέραιο υπόλοιποτης διαίρεσης του πρώτου τελεστέου με τονδεύτερο.0 % 3 = 0 3 % 3 = 01 % 3 = 1 4 % 3 = 12 % 3 = 2 5 % 3 = 2

• Και οι δύο τελεστέοι πρέπει να είναι τύπου int.• Αποφεύγετε να χρησιμοποιείτε τον τελεστή % μεαρνητικούς τελεστέους, καθώς σε αυτή τηνπερίπτωση η συμπεριφορά του προγράμματοςποικίλει από υπολογιστή σε υπολογιστή.

Page 25: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include  #include “genlib.h”

Προτεραιότητα τελεστώνΓια την αποφυγή της χρήσης παρενθέσεων σε

κάθε περίπτωση, ορίζονται κανόνεςπροτεραιότητας των αριθμητικώνπαραστάσεων

1. Πρώτα αποτιμώνται οι μονομελείς τελεστέςάρνησης

2. Στη συνέχεια αποτιμώνται οιπολλαπλασιαστικοί τελεστές (*,/,%) απόαριστερά προς τα δεξιά

3. Στη συνέχεια αποτιμώνται οι προσθετικοίτελεστές επίσης από τα αριστερά προς ταδεξιά.

Page 26: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include  #include “genlib.h”

Προτεραιότητα τελεστών -Παραδείγματα

• Η παράσταση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”

Μετατροπή τύπων και αποκοπή

Στο παρακάτω τμήμα κώδικαint n;n = 2.342

μετά την ανάθεση n = 2.342, το n έχει τηντιμή 2. Το κλασματικό μέρος (0.342) αποκόπτεται.

Page 28: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include  #include “genlib.h”

Ρητή μετατροπή τύπων (type cast)

• Πολλές φορές απαιτούμε την ρητή μετατροπήενός τύπου σε έναν άλλον, όπως στοπαράδειγμαdouble quot;int num, den;quot = num / (double) den;

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

• Χωρίς τη χρήση του τελεστή ρητής μετατροπής(double) η διαίρεση πραγματοποιείται με χρήσηακεραίων και το υπόλοιπο χάνεται.

Page 29: Εισαγωγήστηνγλώσσα προγραμματισμού C...Συμπεριλήψειςβιβλιοθηκών • Οιγραμμές #include  #include “genlib.h”

Δείτε

• Το κεφάλαιο 2 του βιβλίου