SlideShare a Scribd company logo
1 of 34
Download to read offline
Υπολογιστικό Σύστημα
Ηardware
Προγράμματα Συστήματος
Compilers, Interpreters, Preprocessors
...
Λειτουργικό Σύστημα, Οδηγοί Συσκευών
Προγράμματα Χρήστη
Επεξεργαστές Κειμένου, Υπολογιστικά
Φύλλα,
Βάσεις Δεδομένων, IDEs,
…
Γλώσσες
Προγραμματισμού
• Για την γραφή ένός προγράμματος Η/Υ
χρησιμοποιείται μια γλώσσα
προγραμματισμού
• Η γλώσσα προγραμματισμού
διατυπώνει το προγράμμα σε μορφή
τέτοια που είναι δυνατό να εκτελεστεί
τελικά από τον Η/Υ
Γλώσσες μηχανής
Συμβολικές γλώσσες
Γλώσσες υψηλού επιπέδου
Γλώσσες μηχανής
• Η γλώσσα μηχανής είναι η μοναδική γλώσσα που «καταλαβαίνει»
ο Η/Υ
• Αποτελείται από 0 και 1
• Κάθε Η/Υ έχει την δική του γλώσσα μηχανής
• Κάθε οικογένεια επεξεργαστών έχει και μερικές
διαφοροποιήσεις στον τρόπο εκτέλεσης και στον αριθμό
υποσυστημάτων που διαθέτει π.χ. ενσωματωμένα συστήματα
κρυπτογραφίας - επιταχυντής λειτουργίας
• Εξάρτηση από τον τύπο του Η/Υ (επεξεργαστής)
• Εξαιρετικα, εξαιρετικά, εξαιρετικα είπαμε;;; Δύσκολη η συγγραφή
προγραμμάτων σε δυαδικό κωδικό (binary code)
Συμβολικές Γλώσσες (Assembly)
• Αντικατάσταση δυαδικού κώδικα με σύμβολα (mnemonics) όπως:
• LOAD, ADD, STORE, CMP
• Ο συμβολομεταφραστής αναλαμβάνει την μετάφραση του κώδικα σε
γλώσσα μηχανής (Binary Code)
• Εξαρτώμαστε από τον τύπο επεξεργαστή
• Δύσκολη η συγγραφή προγραμμάτων
Γλώσσες υψηλού επιπέδου
• Χρησιμοποιούν δηλώσεις οι οποίες
είναι κοντά στην ανθρώπινη
γλώσσα
• "FOR", "PRINT", “IF“, “ELSE”
• Κάθε δήλωση αντιστοιχεί σε
πολλές εντολές γλώσσας μηχανής
• Πολυ πιο εύκολες στην χρήση για
τη δημιουργία προγραμμάτων από
ότι η assembly
• Τα δεδομένα μπορούν να έχουν
περιγραφικά ονόματα π.χ. tax_rate
• Οι τελεστές αναπαραστώνται με
γνώριμα σύμβολα:
• Total_Tax = price * tax_rate
• Τα προγράμματα μπορούν να
μεταφερθούν από ένα Η/Υ σε άλλο
• Ο προγραμματιστής δεν
χρειάζεται να γνωρίζει
λεπτομέρειες εσωτερικής
αρχιτεκτονικής του ΗΥ
Γλώσσες υψηλού επιπέδου
Πηγαίος
Κώδικας
Μεταγλωττιστής
Γλώσσα
Μηχανής
Πρόγραμμα
(Runtime)
Είσοδος
Δεδομένων
Έξοδος
Εκτέλεση Προγράμματος
Γλώσσα
προγραμματισμού C
• Dennis Ritchie, Bell Labs το 1972, για τις ανάγκες του UNIX
• Γλώσσα μέσου επιπέδου:
• Εμπεριέχει στοιχεία γλωσσών υψηλού επιπέδου (Cobol,
Pascal) και στοιχεία των γλωσσών χαμηλού επιπέδου
(Assembly)
• Έφερε τον προγραμματιστή πιο κοντά στο hardware σε σχέση
με τις υπόλοιπες γλώσσες υψηλου επιπέδου
• Ιδιαίτερα δημοφιλής
• Έχει χρησιμοποιηθεί για τον προγραμματισμό ευρέος φάσματος
συστημάτων και εφαρμογών
• Φιλοσοφία: Ο προγραμματιστής έχει τον πλήρη έλεγχο και
ευθύνεται για τα σφάλματά του
Μεταγλώττιση και εκτέλεση
προγραμμάτων
• Μεταγλωττιστής ή μεταφραστής (compiler): μετατρέπει/μεταφράζει
κείμενο γραμμένο σε μια γλώσσα προγραμματισμού σε μια άλλη
γλώσσα προγραμματισμού (τη γλώσσα στόχο)
• Πηγαίος κώδικας (source code): Κείμενο εισόδου
• Από γλώσσα υψηλού επιπέδου σε μια γλώσσα χαμηλότερου
επιπέδου
• Ο προγραμματιστής γράφει το προραμμα σε μία γλώσσα
προγραμματισμού (π.χ. C++) και στη συνέχεια μεταγλωτίζει (compile)
το πρόγραμμα
• Ο compiler μας ειδοποιεί για συντακτικά λάθη και αρνείται να
προχωρήσει εάν υπάρχουν.
• Κάποιες γλώσσες αντί για μεταγλωττιστή (compiler) έχουν διερμηνευτή
(interpreter). Εκτελείται εντολή-εντολή ο κώδικας σταματά σε λάθος
Μεταγλώττιση και εκτέλεση
προγραμμάτων
Είδη Λαθών Μεταγλώτισης
• Συντακτικά λάθη:
• Έχουμε γράψει με λάθος τρόπο κάποιες εντολές
• Λάθη χρόνου εκτέλεσης:
• Δίχως συντακτικά λάθη
• Το πρόγραμμα αυτό κολλάει ή δεν βγάζει αποτελέσμα, π.χ. εάν
γίνει διαίρεση με το μηδέν
• Λογικά λάθη:
• Δίχως συντακτικά λάθη
• Εμφανίζει αποτελέσματα
• Λανθασμένα αποτελέσματα
• Δύσκολο να ανακαλυφθούν και να διορθωθούν.
• Σχεδόν όλα τα προγράμματα έχουν λάθη (bugs), τα οποία τα
διορθώνουμε με επανέλεγχο και αποσφαλμάτωση του κώδικα
(debuging)
Μεταγλώττιση και εκτέλεση
προγραμμάτων
Πρώτο Πρόγραμμα
Επεξήγηση των προτάσεων
• #include <stdio.h>
• Στην αρχή πάντα δηλώνουμε τις βιβλιθήκες που θα χρησιμοποιηθούν
• Η βιβλιοθήκη stdio.h (STandard Input Output), που προσφέρει τη χρήση
βοηθητικών συναρτήσεων σχετιζόμενες με τις ροές εισόδου/εξόδου
• int main( )
• Αποτελεί μία συνάρτηση του προγράμματος, τα προγράμματα μπορούν να
έχουν πολλές στναρτήσεις
• Η main( ) είναι απαραίτητη καθώς με αυτή ξεκινάει η εκτέλεση του
προγράμματος.
• { και }
• Ορίζουν την αρχή και το τέλος της συνάρτησης
• Μπορούν να χρησιμοποιηθούν για να οριοθετήσουν αρχή/τέλος μίας
δομής
• printf( )
• Είναι μία συνάρτηση η οποία
εμφανίζει πληροφορίες στην
κονσόλα/οθόνη
• return
• Δηλώνει τι επιστρέφει η
συνάρηση μετά το τέλος της
συνάρτησης, 0 για μή επιστροφή
και έξοδο
Τελεστές (Operators)
Δεύτερο Πρόγραμμα
main()
• Βασική συνάρτηση ενός προγράμματος
• Η λογική λειτουργίας του προγράμματος ορίζεται εδώ
• Η κύρια λειτουργία του προγράμματος μπορεί να
τμηματοποιηθεί
• Κομμάτια της λειτουργίας τοποθετούνται σε άλλες συναρτήσεις εκτός
της main()
• Μέσα από τη main() πραγματοποιουνται κλήσεις στις βοηθητικές
συναρτήσεις οι οποίες εκτελούνται
• Μπορεί να διαβάσει παραμέτρους από ένα shell (Unix bash,
Windows cmd)
• argc : Πλήθος ορισμάτων/παραμέτρων
• argv : Πίνακας ορισμάτων με τα οποία εκτελέστηκε το πρόγραμμα
• ./main -p first_param -r second_param
Ονοματοδοσία
• Οι μεταβλητές ακολουθούν συγκεκριμένο τρόπο
ονομασίας (identifiers)
• Ένας ή περισσότερους χαρακτήρες
• Πεζά ή κεφαλαία λατινικά γράμματα
• Αριθμοί
• Κάτω παύλα (underscore)
• Προσοχή! Το πρώτο γράμμα πρέπει να είναι γράμμα ή
underscore
• Υπάρχει διαχωρισμός ανάμεσα στο letter case (μικρά/κεφαλαία)
• synolo ≠ Synolo
Γλώσσα C Δεσμευμένες Λέξεις (Keywords)
• Η C διαθέτει ένα σετ από
δεσμευμένες λέξεις
(Keywords) που μπορούμε
να το χαρακτηρίσουμε ως το
βασικό λεξιλόγιο της C
• 32 Keywords
• Βασικά δομικά στοιχεία
ενός προγράμματος σε 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
Τύποι Δεδομένων
• Η κάθε μεταβλητή αποθηκεύει τα δεδομένα της με ένα
συγκεκριμένο τύπο
• Ο τύπος δηλώνεται κατά την αρχικοποίηση της μεταβλητής
• Καλή πρακτική είναι να δηλώνονται όλες οι μεταβλητές στην
αρχή του προγράμματος
• Τρεις βασικοί τύποι:
• char ( Character - Χαρακτήρας)
• [a-Z], [0-9], Special characters (σύμβολα)
• int (Integer - Ακέραιος Αριθμός)
• [0-9]+
• float (Floating Point - Αριθμός κινητής υποδιαστολής)
• [0-9]+.[0-9]+
Τροποποιητές Τύπων
• Οι τροποποιητές τύπου (modifiers) χρησιμοποιούνται για να
αλλάξουν το μέγεθος των δεδομένων που μπορούν να
αποθηκεύσουν
Δήλωση Μεταβλητών
τύπος όνομα_μεταβλητής;
Σχόλια
Literals (Σταθερές)
• Σταθερές χαρακτήρα γράφονται μεσα σε
εισαγωγικά
• char plus_sign = '+';
• Αλφαριθμητικές σταθερές γράφονται μεσα σε
διπλά εισαγωγικά
• String1= "C Programming";
• Παρακάτω ακολουθούν και οι σταθερές των
άλλων τύπων:
• int 1234
• long int 38754L
• short int 123
• unsigned int 62222
• float 12.345F
• float 1.1e-3F
• double -0.9876544
Escape Characters (Χαρακτήρες Διαφυγής)
• Υπάρχουν όμως ορισμένοι
χαρακτήρες που δεν
τυπώνονται με μια
σταθερά τύπου string για
παράδειγμα τα διπλά
εισαγωγικά.
• Για τους χαρακτήρες
αυτούς έχουμε τις
λεγόμενες σταθερές
backslash που δίνονται
στον διπλανό πίνακα.
Κώδικας Σημασία
b backspace
f form feed
n νέα γραμμή
r carriage return
t οριζόντιο tab
" διπλά εισαγωγικά
' απλά εισαγωγικά
0 Null
 backslash
v κάθετο tab
a alert
N oκταδική σταθερά
xN δεκαεξαδική σταθερά
? Λατινικό ερωτηματικό
printf()
• Εκτυπώνει χαρακτήρες στην οθόνη
• Προέρχεται από τη βιβλιοθήκη stdio.h
• Κλήση συνάρτησης:
• printf(“αλφαριθμητικό ελέγχου”, ορίσματα);
• Τα αλφαριθμητικά ελέγχου αποτελείται από τους χαρακτήρες που
θέλουμε να εκτυπώσουμε και τις εντολές τροποποίησης εμφάνισης
• Ορίσματα αποτελούν οι μεταβλητές που θα εκτυπωθούν
printf() (εντολές τροποποίησης)
Μνήμη
• Η μνήμη μας (RAM) μπορεί να θεωρηθεί ότι
διαιρείται σε νοητά κελιά
• Κάθε κελί έχει μέγεθος 1 byte
• Η διεύθυνση καθε κελιού μνήμης μας δίνεται με
δεκαεξαδικό αριθμό από το λειτουργικό σύστημα
• Οι μεταβλητές που δημιουργούμε στη C
καταλαμβάνουν συγκεκριμένο χώρο στη μνήμη
• char = 1 byte
• int = 4 byte
• Ο τελεστής & μας επιστρέφει τη διεύθυνση μνήμης
που έχει μία μεταβλητή
scanf()
• Συνάρτηση εισαγωγής δεδομένων (stdio.h)
• Διαβάζει δεδομένα που παρέχουμε από το πληκτρολόγιο
• Σύνταξη:
• scanf(“αλφαριθμητικό μορφοποίησης”, διεύθυνση_μνήμης);
• format string: Τύπο των δεδομένων που θα εισαχθούν
• %c για έναν χαρακτήρα
• %d για ακέραιο αριθμό
• %f για πραγματικό αριθμό
• Μπορεί να διαβάσει δύο ή περισσότερες μεταβλητές:
• scanf(“%d %d”, 1η_διεύθυνση_μνήμης, 2η _διεύθυνση_μνήμης);
• Είσοδος: 10 20
• scanf(“%d,%d”, 1η_διεύθυνση_μνήμης, 2η_διεύθυνση_μνήμης);
• Είσοδος: 10,20
getchar( ) , putchar( )
• getchar()
• Περιμένει την πληκτρολόγηση ενός χαρακτήρα
• Τον αποθηκεύει σε μεταβλητή
• putchar()
• Εκτυπώνει ένα χαρακτήρα στην οθόνη
• Ο χαρακτήρας προέρχεται από μία μεταβλητή που ορίζουμε
σαν argument
Τελεστές
• Αριθμητικοί Τελεστές:
• Εκτελούν μαθηματικές πράξεις
• Ειδικοί Τελεστές:
• ++ αυξάνει κατά μία μονάδα μία μεταβλητή
• x=x+1 ισούται με το x++
• -- μειώνει κατά μία μονάδα μία μεταβλητή
• x=x-1 ισούται με το x--
• Μπορούν να χρησιμοποιηθούν τόσο μπροστά όσο και πίσω
αλλάζει η συμπεριφορά όμως
• b = ++a;
#define
• Ορίζει ένα αναγνωριστικό και μια τιμή για αυτό
• Είναι διαθέσιμο κατά όλη τη διαρκεια εκτέλεσης
• Σύνταξη:
• #define αναγνωριστικό τιμή
• Επί το πλείστον χρησιμοποιείται για τη δημιουργία σταθερών
Control Statements (Δομές Επιλογής)
• Γνωστές και ως δομές διακλάδωσης
• Επιτρέπουν το πρόγραμμα να ακολουθήσει άλλο δρόμο
επεξεργασίας (μονοπάτι εκτέλεσης) εφόσον πληρούνται
κάποιες προϋποθέσεις
• Εντολή επιλογής if:
Control Statements (Δομές Επιλογής)
• Εντολή επιλογής if...else:
Control Statements (Δομές Επιλογής)
• Εντολή επιλογής if...else...if:

More Related Content

Similar to C_24112023.pdf

μάθημα 3 υλοποίηση αλγορίθμου με υπολογιστή - προγραμματισμός
μάθημα 3   υλοποίηση αλγορίθμου με υπολογιστή - προγραμματισμόςμάθημα 3   υλοποίηση αλγορίθμου με υπολογιστή - προγραμματισμός
μάθημα 3 υλοποίηση αλγορίθμου με υπολογιστή - προγραμματισμόςGeorge Avgeris
 
φε εισαγωγή στην έννοια του αλγορίθμου και στον προγραμματισμό
φε εισαγωγή στην έννοια του αλγορίθμου και στον προγραμματισμόφε εισαγωγή στην έννοια του αλγορίθμου και στον προγραμματισμό
φε εισαγωγή στην έννοια του αλγορίθμου και στον προγραμματισμόdimtsouk
 
Kef10 a synartiseis
Kef10 a synartiseisKef10 a synartiseis
Kef10 a synartiseismnikol
 
1η διάλεξη Τεχνολογίες Παγκόσμιου Ιστού
1η διάλεξη Τεχνολογίες Παγκόσμιου Ιστού1η διάλεξη Τεχνολογίες Παγκόσμιου Ιστού
1η διάλεξη Τεχνολογίες Παγκόσμιου ΙστούManolis Vavalis
 
Advanced Notes on Pointers
Advanced Notes on PointersAdvanced Notes on Pointers
Advanced Notes on Pointersjtsagata
 
γλώσσες εργαλεία προγραμματισμού
γλώσσες εργαλεία προγραμματισμούγλώσσες εργαλεία προγραμματισμού
γλώσσες εργαλεία προγραμματισμούkmag388
 
Η Γλώσσα C - Μάθημα 2
Η Γλώσσα C - Μάθημα 2Η Γλώσσα C - Μάθημα 2
Η Γλώσσα C - Μάθημα 2Dimitris Psounis
 
Περιβάλλοντα ανάπτυξης εφαρμογών
Περιβάλλοντα ανάπτυξης εφαρμογώνΠεριβάλλοντα ανάπτυξης εφαρμογών
Περιβάλλοντα ανάπτυξης εφαρμογώνchristos katsanis
 
ΑΕΠΠ - Εισαγωγή στον Προγραμματισμό (Μέρος Δ)
ΑΕΠΠ - Εισαγωγή στον Προγραμματισμό (Μέρος Δ)ΑΕΠΠ - Εισαγωγή στον Προγραμματισμό (Μέρος Δ)
ΑΕΠΠ - Εισαγωγή στον Προγραμματισμό (Μέρος Δ)Ιωάννης Σαρημπαλίδης
 
εργαλεία προγραμματισμού
εργαλεία προγραμματισμούεργαλεία προγραμματισμού
εργαλεία προγραμματισμούkmag388
 
εργαλεία προγραμματισμού
εργαλεία προγραμματισμούεργαλεία προγραμματισμού
εργαλεία προγραμματισμούkmag388
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝDimitris Psounis
 
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ CC++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ CDimitris Psounis
 
Μοντέλο Client/Server, Διαδικτυακές υπηρεσίες και Cloud computing
Μοντέλο Client/Server, Διαδικτυακές υπηρεσίες και Cloud computingΜοντέλο Client/Server, Διαδικτυακές υπηρεσίες και Cloud computing
Μοντέλο Client/Server, Διαδικτυακές υπηρεσίες και Cloud computingKostas Diamantaras
 
Βάσεις Δεδομένων με Εφαρμογές στο Διαδίκτυο
Βάσεις Δεδομένων με Εφαρμογές στο ΔιαδίκτυοΒάσεις Δεδομένων με Εφαρμογές στο Διαδίκτυο
Βάσεις Δεδομένων με Εφαρμογές στο ΔιαδίκτυοΘεοδώρα Μαγουλιώτη
 
Java free-book
Java free-bookJava free-book
Java free-bookble nature
 
κεφάλαιο 6
κεφάλαιο 6κεφάλαιο 6
κεφάλαιο 6sotiriasa
 
Εισαγωγή στις αρχές της επιστήμης των ΗΥ κεφ 2 3 2
Εισαγωγή στις αρχές της επιστήμης των ΗΥ κεφ 2 3 2Εισαγωγή στις αρχές της επιστήμης των ΗΥ κεφ 2 3 2
Εισαγωγή στις αρχές της επιστήμης των ΗΥ κεφ 2 3 2Ιωάννου Γιαννάκης
 

Similar to C_24112023.pdf (20)

μάθημα 3 υλοποίηση αλγορίθμου με υπολογιστή - προγραμματισμός
μάθημα 3   υλοποίηση αλγορίθμου με υπολογιστή - προγραμματισμόςμάθημα 3   υλοποίηση αλγορίθμου με υπολογιστή - προγραμματισμός
μάθημα 3 υλοποίηση αλγορίθμου με υπολογιστή - προγραμματισμός
 
Προγραμματισμός Η/Υ Θεωρία Α Λυκείου
Προγραμματισμός Η/Υ Θεωρία Α ΛυκείουΠρογραμματισμός Η/Υ Θεωρία Α Λυκείου
Προγραμματισμός Η/Υ Θεωρία Α Λυκείου
 
φε εισαγωγή στην έννοια του αλγορίθμου και στον προγραμματισμό
φε εισαγωγή στην έννοια του αλγορίθμου και στον προγραμματισμόφε εισαγωγή στην έννοια του αλγορίθμου και στον προγραμματισμό
φε εισαγωγή στην έννοια του αλγορίθμου και στον προγραμματισμό
 
Kef10 a synartiseis
Kef10 a synartiseisKef10 a synartiseis
Kef10 a synartiseis
 
1η διάλεξη Τεχνολογίες Παγκόσμιου Ιστού
1η διάλεξη Τεχνολογίες Παγκόσμιου Ιστού1η διάλεξη Τεχνολογίες Παγκόσμιου Ιστού
1η διάλεξη Τεχνολογίες Παγκόσμιου Ιστού
 
Advanced Notes on Pointers
Advanced Notes on PointersAdvanced Notes on Pointers
Advanced Notes on Pointers
 
γλώσσες εργαλεία προγραμματισμού
γλώσσες εργαλεία προγραμματισμούγλώσσες εργαλεία προγραμματισμού
γλώσσες εργαλεία προγραμματισμού
 
Η Γλώσσα C - Μάθημα 2
Η Γλώσσα C - Μάθημα 2Η Γλώσσα C - Μάθημα 2
Η Γλώσσα C - Μάθημα 2
 
Kef 1 4 & 1 5
Kef 1 4 & 1 5Kef 1 4 & 1 5
Kef 1 4 & 1 5
 
Περιβάλλοντα ανάπτυξης εφαρμογών
Περιβάλλοντα ανάπτυξης εφαρμογώνΠεριβάλλοντα ανάπτυξης εφαρμογών
Περιβάλλοντα ανάπτυξης εφαρμογών
 
ΑΕΠΠ - Εισαγωγή στον Προγραμματισμό (Μέρος Δ)
ΑΕΠΠ - Εισαγωγή στον Προγραμματισμό (Μέρος Δ)ΑΕΠΠ - Εισαγωγή στον Προγραμματισμό (Μέρος Δ)
ΑΕΠΠ - Εισαγωγή στον Προγραμματισμό (Μέρος Δ)
 
εργαλεία προγραμματισμού
εργαλεία προγραμματισμούεργαλεία προγραμματισμού
εργαλεία προγραμματισμού
 
εργαλεία προγραμματισμού
εργαλεία προγραμματισμούεργαλεία προγραμματισμού
εργαλεία προγραμματισμού
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ
 
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ CC++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
 
Μοντέλο Client/Server, Διαδικτυακές υπηρεσίες και Cloud computing
Μοντέλο Client/Server, Διαδικτυακές υπηρεσίες και Cloud computingΜοντέλο Client/Server, Διαδικτυακές υπηρεσίες και Cloud computing
Μοντέλο Client/Server, Διαδικτυακές υπηρεσίες και Cloud computing
 
Βάσεις Δεδομένων με Εφαρμογές στο Διαδίκτυο
Βάσεις Δεδομένων με Εφαρμογές στο ΔιαδίκτυοΒάσεις Δεδομένων με Εφαρμογές στο Διαδίκτυο
Βάσεις Δεδομένων με Εφαρμογές στο Διαδίκτυο
 
Java free-book
Java free-bookJava free-book
Java free-book
 
κεφάλαιο 6
κεφάλαιο 6κεφάλαιο 6
κεφάλαιο 6
 
Εισαγωγή στις αρχές της επιστήμης των ΗΥ κεφ 2 3 2
Εισαγωγή στις αρχές της επιστήμης των ΗΥ κεφ 2 3 2Εισαγωγή στις αρχές της επιστήμης των ΗΥ κεφ 2 3 2
Εισαγωγή στις αρχές της επιστήμης των ΗΥ κεφ 2 3 2
 

C_24112023.pdf

  • 1. Υπολογιστικό Σύστημα Ηardware Προγράμματα Συστήματος Compilers, Interpreters, Preprocessors ... Λειτουργικό Σύστημα, Οδηγοί Συσκευών Προγράμματα Χρήστη Επεξεργαστές Κειμένου, Υπολογιστικά Φύλλα, Βάσεις Δεδομένων, IDEs, …
  • 2. Γλώσσες Προγραμματισμού • Για την γραφή ένός προγράμματος Η/Υ χρησιμοποιείται μια γλώσσα προγραμματισμού • Η γλώσσα προγραμματισμού διατυπώνει το προγράμμα σε μορφή τέτοια που είναι δυνατό να εκτελεστεί τελικά από τον Η/Υ Γλώσσες μηχανής Συμβολικές γλώσσες Γλώσσες υψηλού επιπέδου
  • 3. Γλώσσες μηχανής • Η γλώσσα μηχανής είναι η μοναδική γλώσσα που «καταλαβαίνει» ο Η/Υ • Αποτελείται από 0 και 1 • Κάθε Η/Υ έχει την δική του γλώσσα μηχανής • Κάθε οικογένεια επεξεργαστών έχει και μερικές διαφοροποιήσεις στον τρόπο εκτέλεσης και στον αριθμό υποσυστημάτων που διαθέτει π.χ. ενσωματωμένα συστήματα κρυπτογραφίας - επιταχυντής λειτουργίας • Εξάρτηση από τον τύπο του Η/Υ (επεξεργαστής) • Εξαιρετικα, εξαιρετικά, εξαιρετικα είπαμε;;; Δύσκολη η συγγραφή προγραμμάτων σε δυαδικό κωδικό (binary code)
  • 4. Συμβολικές Γλώσσες (Assembly) • Αντικατάσταση δυαδικού κώδικα με σύμβολα (mnemonics) όπως: • LOAD, ADD, STORE, CMP • Ο συμβολομεταφραστής αναλαμβάνει την μετάφραση του κώδικα σε γλώσσα μηχανής (Binary Code) • Εξαρτώμαστε από τον τύπο επεξεργαστή • Δύσκολη η συγγραφή προγραμμάτων
  • 5. Γλώσσες υψηλού επιπέδου • Χρησιμοποιούν δηλώσεις οι οποίες είναι κοντά στην ανθρώπινη γλώσσα • "FOR", "PRINT", “IF“, “ELSE” • Κάθε δήλωση αντιστοιχεί σε πολλές εντολές γλώσσας μηχανής • Πολυ πιο εύκολες στην χρήση για τη δημιουργία προγραμμάτων από ότι η assembly • Τα δεδομένα μπορούν να έχουν περιγραφικά ονόματα π.χ. tax_rate • Οι τελεστές αναπαραστώνται με γνώριμα σύμβολα: • Total_Tax = price * tax_rate • Τα προγράμματα μπορούν να μεταφερθούν από ένα Η/Υ σε άλλο • Ο προγραμματιστής δεν χρειάζεται να γνωρίζει λεπτομέρειες εσωτερικής αρχιτεκτονικής του ΗΥ
  • 8. Γλώσσα προγραμματισμού C • Dennis Ritchie, Bell Labs το 1972, για τις ανάγκες του UNIX • Γλώσσα μέσου επιπέδου: • Εμπεριέχει στοιχεία γλωσσών υψηλού επιπέδου (Cobol, Pascal) και στοιχεία των γλωσσών χαμηλού επιπέδου (Assembly) • Έφερε τον προγραμματιστή πιο κοντά στο hardware σε σχέση με τις υπόλοιπες γλώσσες υψηλου επιπέδου • Ιδιαίτερα δημοφιλής • Έχει χρησιμοποιηθεί για τον προγραμματισμό ευρέος φάσματος συστημάτων και εφαρμογών • Φιλοσοφία: Ο προγραμματιστής έχει τον πλήρη έλεγχο και ευθύνεται για τα σφάλματά του
  • 9. Μεταγλώττιση και εκτέλεση προγραμμάτων • Μεταγλωττιστής ή μεταφραστής (compiler): μετατρέπει/μεταφράζει κείμενο γραμμένο σε μια γλώσσα προγραμματισμού σε μια άλλη γλώσσα προγραμματισμού (τη γλώσσα στόχο) • Πηγαίος κώδικας (source code): Κείμενο εισόδου • Από γλώσσα υψηλού επιπέδου σε μια γλώσσα χαμηλότερου επιπέδου • Ο προγραμματιστής γράφει το προραμμα σε μία γλώσσα προγραμματισμού (π.χ. C++) και στη συνέχεια μεταγλωτίζει (compile) το πρόγραμμα • Ο compiler μας ειδοποιεί για συντακτικά λάθη και αρνείται να προχωρήσει εάν υπάρχουν. • Κάποιες γλώσσες αντί για μεταγλωττιστή (compiler) έχουν διερμηνευτή (interpreter). Εκτελείται εντολή-εντολή ο κώδικας σταματά σε λάθος
  • 10. Μεταγλώττιση και εκτέλεση προγραμμάτων Είδη Λαθών Μεταγλώτισης • Συντακτικά λάθη: • Έχουμε γράψει με λάθος τρόπο κάποιες εντολές • Λάθη χρόνου εκτέλεσης: • Δίχως συντακτικά λάθη • Το πρόγραμμα αυτό κολλάει ή δεν βγάζει αποτελέσμα, π.χ. εάν γίνει διαίρεση με το μηδέν • Λογικά λάθη: • Δίχως συντακτικά λάθη • Εμφανίζει αποτελέσματα • Λανθασμένα αποτελέσματα • Δύσκολο να ανακαλυφθούν και να διορθωθούν. • Σχεδόν όλα τα προγράμματα έχουν λάθη (bugs), τα οποία τα διορθώνουμε με επανέλεγχο και αποσφαλμάτωση του κώδικα (debuging)
  • 13. Επεξήγηση των προτάσεων • #include <stdio.h> • Στην αρχή πάντα δηλώνουμε τις βιβλιθήκες που θα χρησιμοποιηθούν • Η βιβλιοθήκη stdio.h (STandard Input Output), που προσφέρει τη χρήση βοηθητικών συναρτήσεων σχετιζόμενες με τις ροές εισόδου/εξόδου • int main( ) • Αποτελεί μία συνάρτηση του προγράμματος, τα προγράμματα μπορούν να έχουν πολλές στναρτήσεις • Η main( ) είναι απαραίτητη καθώς με αυτή ξεκινάει η εκτέλεση του προγράμματος. • { και } • Ορίζουν την αρχή και το τέλος της συνάρτησης • Μπορούν να χρησιμοποιηθούν για να οριοθετήσουν αρχή/τέλος μίας δομής • printf( ) • Είναι μία συνάρτηση η οποία εμφανίζει πληροφορίες στην κονσόλα/οθόνη • return • Δηλώνει τι επιστρέφει η συνάρηση μετά το τέλος της συνάρτησης, 0 για μή επιστροφή και έξοδο
  • 16. main() • Βασική συνάρτηση ενός προγράμματος • Η λογική λειτουργίας του προγράμματος ορίζεται εδώ • Η κύρια λειτουργία του προγράμματος μπορεί να τμηματοποιηθεί • Κομμάτια της λειτουργίας τοποθετούνται σε άλλες συναρτήσεις εκτός της main() • Μέσα από τη main() πραγματοποιουνται κλήσεις στις βοηθητικές συναρτήσεις οι οποίες εκτελούνται • Μπορεί να διαβάσει παραμέτρους από ένα shell (Unix bash, Windows cmd) • argc : Πλήθος ορισμάτων/παραμέτρων • argv : Πίνακας ορισμάτων με τα οποία εκτελέστηκε το πρόγραμμα • ./main -p first_param -r second_param
  • 17. Ονοματοδοσία • Οι μεταβλητές ακολουθούν συγκεκριμένο τρόπο ονομασίας (identifiers) • Ένας ή περισσότερους χαρακτήρες • Πεζά ή κεφαλαία λατινικά γράμματα • Αριθμοί • Κάτω παύλα (underscore) • Προσοχή! Το πρώτο γράμμα πρέπει να είναι γράμμα ή underscore • Υπάρχει διαχωρισμός ανάμεσα στο letter case (μικρά/κεφαλαία) • synolo ≠ Synolo
  • 18. Γλώσσα C Δεσμευμένες Λέξεις (Keywords) • Η C διαθέτει ένα σετ από δεσμευμένες λέξεις (Keywords) που μπορούμε να το χαρακτηρίσουμε ως το βασικό λεξιλόγιο της C • 32 Keywords • Βασικά δομικά στοιχεία ενός προγράμματος σε 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
  • 19. Τύποι Δεδομένων • Η κάθε μεταβλητή αποθηκεύει τα δεδομένα της με ένα συγκεκριμένο τύπο • Ο τύπος δηλώνεται κατά την αρχικοποίηση της μεταβλητής • Καλή πρακτική είναι να δηλώνονται όλες οι μεταβλητές στην αρχή του προγράμματος • Τρεις βασικοί τύποι: • char ( Character - Χαρακτήρας) • [a-Z], [0-9], Special characters (σύμβολα) • int (Integer - Ακέραιος Αριθμός) • [0-9]+ • float (Floating Point - Αριθμός κινητής υποδιαστολής) • [0-9]+.[0-9]+
  • 20. Τροποποιητές Τύπων • Οι τροποποιητές τύπου (modifiers) χρησιμοποιούνται για να αλλάξουν το μέγεθος των δεδομένων που μπορούν να αποθηκεύσουν
  • 23. Literals (Σταθερές) • Σταθερές χαρακτήρα γράφονται μεσα σε εισαγωγικά • char plus_sign = '+'; • Αλφαριθμητικές σταθερές γράφονται μεσα σε διπλά εισαγωγικά • String1= "C Programming"; • Παρακάτω ακολουθούν και οι σταθερές των άλλων τύπων: • int 1234 • long int 38754L • short int 123 • unsigned int 62222 • float 12.345F • float 1.1e-3F • double -0.9876544
  • 24. Escape Characters (Χαρακτήρες Διαφυγής) • Υπάρχουν όμως ορισμένοι χαρακτήρες που δεν τυπώνονται με μια σταθερά τύπου string για παράδειγμα τα διπλά εισαγωγικά. • Για τους χαρακτήρες αυτούς έχουμε τις λεγόμενες σταθερές backslash που δίνονται στον διπλανό πίνακα. Κώδικας Σημασία b backspace f form feed n νέα γραμμή r carriage return t οριζόντιο tab " διπλά εισαγωγικά ' απλά εισαγωγικά 0 Null backslash v κάθετο tab a alert N oκταδική σταθερά xN δεκαεξαδική σταθερά ? Λατινικό ερωτηματικό
  • 25. printf() • Εκτυπώνει χαρακτήρες στην οθόνη • Προέρχεται από τη βιβλιοθήκη stdio.h • Κλήση συνάρτησης: • printf(“αλφαριθμητικό ελέγχου”, ορίσματα); • Τα αλφαριθμητικά ελέγχου αποτελείται από τους χαρακτήρες που θέλουμε να εκτυπώσουμε και τις εντολές τροποποίησης εμφάνισης • Ορίσματα αποτελούν οι μεταβλητές που θα εκτυπωθούν
  • 27. Μνήμη • Η μνήμη μας (RAM) μπορεί να θεωρηθεί ότι διαιρείται σε νοητά κελιά • Κάθε κελί έχει μέγεθος 1 byte • Η διεύθυνση καθε κελιού μνήμης μας δίνεται με δεκαεξαδικό αριθμό από το λειτουργικό σύστημα • Οι μεταβλητές που δημιουργούμε στη C καταλαμβάνουν συγκεκριμένο χώρο στη μνήμη • char = 1 byte • int = 4 byte • Ο τελεστής & μας επιστρέφει τη διεύθυνση μνήμης που έχει μία μεταβλητή
  • 28. scanf() • Συνάρτηση εισαγωγής δεδομένων (stdio.h) • Διαβάζει δεδομένα που παρέχουμε από το πληκτρολόγιο • Σύνταξη: • scanf(“αλφαριθμητικό μορφοποίησης”, διεύθυνση_μνήμης); • format string: Τύπο των δεδομένων που θα εισαχθούν • %c για έναν χαρακτήρα • %d για ακέραιο αριθμό • %f για πραγματικό αριθμό • Μπορεί να διαβάσει δύο ή περισσότερες μεταβλητές: • scanf(“%d %d”, 1η_διεύθυνση_μνήμης, 2η _διεύθυνση_μνήμης); • Είσοδος: 10 20 • scanf(“%d,%d”, 1η_διεύθυνση_μνήμης, 2η_διεύθυνση_μνήμης); • Είσοδος: 10,20
  • 29. getchar( ) , putchar( ) • getchar() • Περιμένει την πληκτρολόγηση ενός χαρακτήρα • Τον αποθηκεύει σε μεταβλητή • putchar() • Εκτυπώνει ένα χαρακτήρα στην οθόνη • Ο χαρακτήρας προέρχεται από μία μεταβλητή που ορίζουμε σαν argument
  • 30. Τελεστές • Αριθμητικοί Τελεστές: • Εκτελούν μαθηματικές πράξεις • Ειδικοί Τελεστές: • ++ αυξάνει κατά μία μονάδα μία μεταβλητή • x=x+1 ισούται με το x++ • -- μειώνει κατά μία μονάδα μία μεταβλητή • x=x-1 ισούται με το x-- • Μπορούν να χρησιμοποιηθούν τόσο μπροστά όσο και πίσω αλλάζει η συμπεριφορά όμως • b = ++a;
  • 31. #define • Ορίζει ένα αναγνωριστικό και μια τιμή για αυτό • Είναι διαθέσιμο κατά όλη τη διαρκεια εκτέλεσης • Σύνταξη: • #define αναγνωριστικό τιμή • Επί το πλείστον χρησιμοποιείται για τη δημιουργία σταθερών
  • 32. Control Statements (Δομές Επιλογής) • Γνωστές και ως δομές διακλάδωσης • Επιτρέπουν το πρόγραμμα να ακολουθήσει άλλο δρόμο επεξεργασίας (μονοπάτι εκτέλεσης) εφόσον πληρούνται κάποιες προϋποθέσεις • Εντολή επιλογής if:
  • 33. Control Statements (Δομές Επιλογής) • Εντολή επιλογής if...else:
  • 34. Control Statements (Δομές Επιλογής) • Εντολή επιλογής if...else...if: