Γνωριμία με το μάθημα

Σχετικά έγγραφα
Η γλώσσα προγραμματισμού C

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή

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

ΕΙΣΑΓΩΓΗ. Στόχοι του μαθήματος

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή

Προγραµµατισµός Ι Εισαγωγή Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Προγραµµατισµός Ι Νικόλαος Δ. Τσελίκας

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

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

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

Προγραμματισμός H/Y Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

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

Κεφάλαιο 1 Εισαγωγή στη C

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

Προγραμματισμός I (Θ)

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

Δομημένος Προγραμματισμός

Δομημένος Προγραμματισμός

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος

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

Προγραμματισμός Υπολογιστών με C++

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

Βασικές Αρχές Προγραμματισμού

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό

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

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

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

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

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

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

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

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

Πληροφορική 2. Γλώσσες Προγραμματισμού

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής

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

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

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

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

ΚΕΦΑΛΑΙΟ 6. Περιβάλλοντα Ανάπτυξης Εφαρμογών. ΚΕΦΑΛΑΙΟ 6 Περιβάλλοντα Ανάπτυξης Εφαρμογών. Α Γενικού Λυκείου

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΑΕΠΠ Ερωτήσεις θεωρίας

Το λειτουργικό σύστημα. Προγραμματισμός II 1

4. Συντακτικό μιας γλώσσας είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή.

ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ

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

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

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

H ΓΛΩΣΣΑ C. Μάθηµα 1: Το Πρώτο µας Πρόγραµµα σε C. ηµήτρης Ψούνης

Το λειτουργικό σύστημα. Προγραμματισμός II 1

ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στην εξοικείωση με τη διαδικασία κατασκευής ενός Λεξικού Αναλυτή κάνοντας χρήση του lex.

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

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

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

Συμβολική γλώσσα Εκπαιδευτικού Υπολογιστή - Λογισμικό Υπολογιστών

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

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ

Προγραμματισμός Ι (ΗΥ120)

Κεφάλαιο : Εισαγωγή στην C: (Διαλέξεις 3-4)

Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα. Προγραμματισμός II 1

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

Περιεχόµενα. Ανασκόπηση - Ορισµοί. Ο κύκλος ανάπτυξης προγράµµατος. Γλώσσες Προγραµµατισµού Ασκήσεις

Εισαγωγή ΕΙΣΑΓΩΓΗ. Γεώργιος Παπαϊωάννου ( )

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. 03/01/09 Χαράλαμπος Τζόκας 1

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Ενδεικτική περιγραφή μαθήματος

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

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

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου

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

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

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

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

Εισαγωγή στον Προγραμματισμό Μάθημα 4: Αλγόριθμοι και Γλώσσες Προγραμματισμού Δεκέμβριος 2015 Χ. Αλεξανδράκη

Εισαγωγή στην Πληροφορική

Ηλεκτρονικοί Υπολογιστές

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

Εισαγωγή στον δομημένο προγραμματισμό

Υπολογισμός - Συλλογή Δεδομένων - Πίνακες

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή

6. 1 Η έννοια του προγράμματος

ΗΥ 134. Εισαγωγή στην Οργάνωση και στον Σχεδιασμό Υπολογιστών Ι. Διάλεξη 1. Εισαγωγή. Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

Κεφάλαιο 6 Εισαγωγή στον Προγραμματισμό. 26-Jun-15 ΑΕΠΠ - Καραμαούνας Π. 1

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή

6. Εισαγωγή στον προγραµµατισµό

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

Εισαγωγή στον Προγραμματισμό Python Μάθημα 1: Μεταβλητές, τελεστές, είσοδος/έξοδος προγράμματος, συνθήκη ελέγχου if Νοέμβριος 2014 Χ. Αλεξανδράκη, Γ.

ΑΣΚΗΣΗ 1: TO ΠΕΡΙΒΑΛΛΟΝ ΕΡΓΑΣΙΑΣ DEV-C++

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

Α. Ερωτήσεις Ανάπτυξης

Transcript:

Προγραμματισμός Η/Υ Ι Γνωριμία με το μάθημα ΕΛΕΥΘΕΡΙΟΣ ΚΟΣΜΑΣ ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2018-2019 ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ Τ.Ε. 1

Περίληψη Σήμερα... θα περιγράψουμε τους στόχους για αυτό το μάθημα θα παρουσιάσουμε ένα συνοπτικό σχέδιο των διαλέξεων του μαθήματος θα εισαγάγουμε τη βασική έννοια του προγραμματισμού θα δώσουμε παραδείγματα τομέων στους οποίους το λογισμικό είναι κρίσιμο για τον πολιτισμό μας θα παρουσιάσουμε συνοπτικά την εξέλιξη των γλωσσών προγραμματισμού θα κάνουμε μία εισαγωγή στον προγραμματισμό με τη C 2

Στόχοι Μαθήματος Εξοικείωση με βασικές έννοιες και τενχικές Δομημένου Προγραμματισμού χρησιμοποιώντας τη C Διδασκαλία / Μάθηση θεμελιωδών εννοιών προγραμματισμού κύριων χρήσιμων τεχνικών Απόκτηση πρακτικής εμπειρίας δημιουργία υπολογιστικών και διαδραστικών εφαρμογών 3

Στόχοι Μαθήματος II μετά το μάθημα, θα είστε σε θέση να γράψετε μικρά προγράμματα C διαβάσετε μεγαλύτερα προγράμματα από την περιγραφή ενός προβλήματος, να καταστρώνετε τον αλγόριθμο/λογική επίλυσής του και να τον υλοποιείτε σε C αναπτύσετε και να δοκιμάζετε ένα πρόγραμμα χρησιμοποιώντας ολοκληρωμένα περιβάλλοντα ανάπτυξης λογισμικού συνεχίσετε με ένα πιο προχωρημένο μάθημα προγραμματισμού με τη C μετά το μάθημα, δε θα είστε (ακόμα) ένας έμπειρος προγραμματιστής έμπειρος με τη C 4

Τα μέσα... Διαλέξεις παρακολουθείστε όλες τις διαλέξεις! Εργαστήρια παρακολουθείστε όλα τα εργαστήρια! όχι ότι σας δίνεται και άλλη επιλογή... ολοκληρώστε όλες τις ασκήσεις που συζητάμε στα εργαστήρια θα πρέπει να τις παραδώσετε έως το τέλος της εκάστοτε εβδομάδας Εργασία καταγράψτε τους (νέους) όρους που συζητάμε ασκήσεις γράψτε προγράμματα! 5

Συνεργαστείτε στη μάθηση επιπρόσθετα της ατομικής σας εργασίας, ενθαρρύνεστε να συνεργαστείτε και να βοηθήσετε ο ένας τον άλλον σε περίπτωση αμφιβολίας εάν μια συνεργασία είναι νόμιμη: ρωτήστε! μην ισχυρίζεστε ότι έχετε γράψει κώδικα που αντιγράψατε από άλλους μη δίνετε σε κανέναν τον κώδικά σας όταν βασίζεστε στη δουλειά κάποιου άλλου, αναφέρετε ρητά όλες τις πηγές σας τιμήστε εκείνους που έκαναν το έργο μη μελετάτε μόνοι σας όταν δε χρειάζεται συγκροτήστε ομάδες μελέτης βοηθήστε ο ένας τον άλλον (χωρίς να κάνετε λογοκλοπή) εκμεταλευτείτε τις ώρες γραφείου του καθηγητή πηγαίνετε προετοιμασμένοι με ερωτήσεις τα μόνα ανόητα ερωτήματα είναι αυτά που θέλατε να ρωτήσετε, αλλά δεν το κάνατε 6

Αξιολόγηση Ποσοστό βαθμού Εργαστηρίου 20 Εργαστήριο Προγραμματιστικές Ασκήσεις εβδομαδιαίες ασκήσεις 80? προφορική εξέταση 3 σειρές εργαστηριακές ασκήσεις αξιολόγησης Εργαστηριακές Ασκήσεις Ασκήσεις Αξιολόγησης Θεωρία Τελική εξέταση (προαιρετική) Ενδιάμεση εξέταση ( συμμετέχει στην τελική βαθμολογία μόνο εάν τη βελτιώνει) Παρακολούθηση Διαλέξεων +10% στην τελική σας βαθμολογία το πολύ 2 απουσίες Ποσοστό βαθμού Θεωρίας 10 50 50 Τελική Εξέταση Ενδιάμεση Εξέταση Διαλέξεις 7

Στοιχεία για το μάθημα Διαλέξεις Θεωρία: Δευτέρα, 16:00 18:00 @ Αμφιθέατρο 105 Εργαστήριο: Δευτέρα, 8:00 10:00, 10:00 12:00 και 12:00 14:00 @ Εργαστήριο 4 Τρίτη, 8:00 10:00 και 10:00 12:00 @ Εργαστήριο Γεωπόνων Ώρες Γραφείου όποτε με χρειαστείστε στείλτε μου e-mail! βολικές μέρες/ώρες Δευτέρα και Τρίτη, μετά τα μαθήματα Διδακτικό Υλικό Διαφάνειες Βιβλία Ν. Μ. Χατζηγιαννάκης, "Η γλώσσα C σε βάθος", Εκδόσεις ΚΛΕΙΔΑΡΙΘΜΟΣ, 5 η Έκδοση, 2017 C: Aπό τη Θεωρία στην Εφαρμογή, Γ. Σ. Τσελίκης, Ν. Δ. Τσελίκας, Εκδόσεις Ν. ΤΣΕΛΙΚΑΣ, 3 η Έκδοση, 2016 Ιστοσελίδα Μαθήματος: https://eclass.teicrete.gr/courses/th100 e-mail καθηγητή: ekosmas@staff.teicrete.gr 8

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

Προγραμματισμός... η τέχνη της έκφρασης λύσεων για προγράμματα έτσι ώστε ένας υπολογιστής να μπορεί να εκτελέσει αυτές τις λύσεις εξεύρεση και βελτίωση λύσεων καλύτερη κατανόηση του προβλήματος μέσω της διαδικασίας προγραμματισμού 10

Προγραμματισμός... ΙΙ είναι κάτι που μαθαίνετε γράφοντας προγράμματα? μία μοναχική διαδικασία; συμμετοχή σε ομάδα με κοινό στόχο εργαζόμαστε καλύτερα, μαθαίνουμε πιο γρήγορα η ομαδική εργασία και η συζήτηση των προβλημάτων με φίλους δεν είναι αντιγραφή όχι! μας αναγκάζει να αρθρώνουμε τις ιδέες μας βελτίωση κατανόησης και μνήμης 11

Γιατί να παρακολουθήσω το μάθημα; Γιατί προγραμματισμός; ο πολιτισμός μας βασίζεται στο λογισμικό εάν δεν κατανοώ το λογισμικό νόμιζω ότι όλα γίνονται «μαγικά» αποκλείομαι από τους πιο ενδιαφέροντες, κερδοφόρους και κοινωνικά χρήσιμους τεχνικούς τομείς εργασίας προγράμματα υπολογιστών εφαρμογές PC με GUI υπολογισμούς και εφαρμογές ελέγχου σε διάφορα συστήματα π.χ. κινητά, ψηφιακές φωτογραφικές μηχανές, αυτοκίνητα εφαρμογές επεξεργασίας κειμένου πολύτιμη πνευματική άσκηση οξύνει την ικανότητά μας να σκεφτόμαστε ένας τρόπος να αλλάξουμε τον κόσμο προς το καλύτερο 12

Γιατί Προγραμματισμός; σημείωση: τα περισσότερα προγράμματα δεν τρέχουν σε πράγματα που μοιάζουν με PC μια οθόνη, ένα πληκτρολόγιο, ένα κουτί κάτω από το τραπέζι 13

Γιατί Προγραμματισμός; Πλοία Σχεδίαση (σκελετού πλοίου) Παρακολούθηση (αυτονομία, gps) Κατασκευή (ναυπηγείο ψηφιακό) Διαχείριση (χρονοδιάγραμμα) Μηχανή (ηλεκτρονική ανάφλεξη) 14

Γιατί Προγραμματισμός; Αεροπλάνα Επικοινωνία Διαχείριση Έλεγχος Κατασκευή 15

Γιατί Προγραμματισμός; Τηλεπικοινωνίες Ποιότητα φωνής Αξιοπιστία Διεπαφές Μεταγωγή Χρεώσεις Εικόνες Φορητότητα 16

Γιατί Προγραμματισμός; Ενέργεια Έλεγχος Διαχείριση Ανάλυση Επικοινωνίες Οπτικοποίηση Σχεδίαση 17

Γιατί Προγραμματισμός; PC, tablet, worksation Υπάρχουν πολλά περισσότερα στους υπολογιστές από παιχνίδια, επεξεργασία κειμένου, περιήγηση και υπολογιστικά φύλλα! 18

Ύλη μαθήματος 1. Εισαγωγή στη C 2. Βασικό συντακτικό και δομή προγράμματος 3. Τελεστές τύποι δεδομένων εντολές ελέγχου ροής προγράμματος αριθμητικοί, λογικοί, ολίσθησης 4. Είσοδος, έξοδος δεδομένων 5. Πίνακες συναρτήσεις εισόδου/εξόδου μονοδιάστατοι και δισδιάστατοι 6. Συμβολοσειρές 7. Συναρτήσεις 8. Δείκτες 19

Ευχαριστίες το υλικό (διαφάνειες, εργασίες) που θα χρησιμοποιήσουμε στο μάθημα έχει παραχθεί βασιζόμενο κυρίως, σε υλικό του καθητηγή Κώστα Βασιλάκη δευτερευόντως, σε υλικό των καθηγητών Παναγιώτη Τσαπάρα Βασίλη Χριστοφίδη και στη βιβλιογραφία του μαθήματος 20

ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Σύντομη αναφορά 21

Λίγο Ιστορία Οι πρώτες γλώσσες προγραμματισμού δεν ήταν για υπολογιστές αυτόματη δημιουργία πρωτοτύπων για ραπτομηχανές μουσικά κουτιά ή ρολά για πιάνο η αφαιρετική μηχανή του Turing 22

Γλώσσες Προγραμματισμού 1 η γενιά: Γλώσσες Μηχανής ο προγραμματιστής 1. μετατρέπει το πρόβλημα του σε ένα πρόγραμμα π.χ. υπολογισμός μέγιστου κοινού διαιρέτη δύο αριθμών 2. γράφει ακριβώς τις εντολές που θα πρέπει να εκτελέσει ο υπολογιστής πρέπει να γνωρίζει ακριβώς τη δυαδική αναπαράσταση των εντολών Machine Language 187E:0100 75 17 80 3E 0D 187E:0110 B9 FF FF 8B D1 187E:0120 42 33 C9 8B D1 187E:0130 5B FF BE E7 04 187E:0140 01 BF 01 00 CD 187E:0150 47 18 A2 19 00 187E:0160 2B F1 58 C3 73 187E:0170 B4 59 CD 21 59 Program entered and executed as machine language στους πρώτους υπολογιστές οι εντολές κωδικοποιούνταν σε διάτρητες κάρτες Punched card from a Fortran program: Z(1) = Y + W(1) 23

Γλώσσες Προγραμματισμού 2 η γενιά: Συμβολική Γλώσσα (Assembly) ο προγραμματιστής Assembly Language δε χρειάζεται να ξέρει ακριβώς την δυαδική αναπαράσταση των εντολών χρησιμοποιεί πιο κατανοητούς μνημονικούς κανόνες POP SI MOV AX,[BX+03] SUB AX,SI MOV WORD PTR [TOT_AMT],E0D7 MOV WORD PTR [CUR_AMT],E1DB ADD [TOT_AMT],AX Machine Language o συμβολομεταφραστής (assembler) μετατρέπει/μεταφράζει τα σύμβολα σε γλώσσα μηχανής (op-codes) oι συμβολικές γλώσσες εξαρτώνται από το hardware program entered as assembly language 187E:0100 75 17 80 3E 0D 187E:0110 B9 FF FF 8B D1 187E:0120 42 33 C9 8B D1 187E:0130 5B FF BE E7 04 187E:0140 01 BF 01 00 CD 187E:0150 47 18 A2 19 00 187E:0160 2B F1 58 C3 73 187E:0170 B4 59 CD 21 59 program is translated and executed as machine language 24

Γλώσσες Προγραμματισμού 3 η γενιά: Υψηλού επιπέδου (high-level) High-Level Language ο προγραμματιστής δίνει εντολές στον υπολογιστή σε μια κατανοητή και καλά δομημένη γλώσσα (source code) ο μεταγλωτιστής (compiler) τις μετατρέπει σε ενδιάμεσο κώδικα (object code) ο ενδιάμεσος κώδικας μετατρέπεται σε γλώσσα μηχανής (machine code) salestax = purchasepric * TAX_RATE; totalsales = purchaseprice + salestax; Assembly Language POP SI MOV AX,[BX+03] SUB AX,SI MOV WORD PTR [TOT_AMT],E0D7 MOV WORD PTR [CUR_AMT],E1DB ADD [TOT_AMT],AX program entered as high-level language Machine Language 187E:0100 75 17 80 3E 0D 187E:0110 B9 FF FF 8B D1 187E:0120 42 33 C9 8B D1 187E:0130 5B FF BE E7 04 187E:0140 01 BF 01 00 CD 187E:0150 47 18 A2 19 00 187E:0160 2B F1 58 C3 73 187E:0170 B4 59 CD 21 59 program is translated into the instruction set program is translated and executed as machine language 25

Γλώσσες Προγραμματισμού 3 η γενιά: Υψηλού επιπέδου (high-level) II ο προγραμματιστής δίνει εντολές στον υπολογιστή σε μια κατανοητή και καλά δομημένη γλώσσα (source code) Virtual Language Source Code Load A From Total-Sales Load B From Sales-Tax Multiply A, B Store C in Total-Sales ο μεταγλωτιστής (compiler) τις μετατρέπει σε ενδιάμεσο κώδικα (object code) ο ενδιάμεσος κώδικας μετατρέπεται σε γλώσσα μηχανής (machine code) το ίδιο πρόγραμμα μπορεί να μεταγλωττιστεί και να εκτελεστεί σε διαφορετικές μηχανές Macintosh Compiler Native Machine Code Macintosh UNIX UNIX Compiler Native Machine Code PC Compiler Native Machine Code PC 26

Γλώσσες Προγραμματισμού 3 η γενιά: Υψηλού επιπέδου (high-level) IIΙ Source Code Compiler Object Code Source Code Compiler Object Code Linker Machine Code Object Code Object Code Library Object Code Compiling, linking, and executing a program 27

Γλώσσες Προγραμματισμού Πέντε γενεές 1. Γλώσσες μηχανής (machine language) 2. Συμβολικές γλώσσες (assembly language) 3. Γλώσσες υψηλού επιπέδου (high-level language) 4. Εξειδικευμένες γλώσσες 5. "Φυσικές" γλώσσες κάθε γενιά προσθέτει και ένα επίπεδο αφαίρεσης 28

Προγραμματιστικά Παραδείγματα Προγραμματισμός των πρώτων ημερών spaghetti code δύσκολο να διαβαστεί και να κατανοηθεί η ροή του 100 GOTO 500 110 PRINT I; 120 GOTO 400 150 PRINT I * 12; 160 GOTO 450 200 PRINT " = "; 210 GOTO 150 300 PRINT " 12 "; 310 GOTO 200 400 PRINT " * "; 410 GOTO 300 450 I = I + 1 460 IF I > 12 THEN STOP 460 GOTO 110 500 PRINT "The Twelves Table" 510 I = 1 520 GOTO 110 29

Προγραμματιστικά Παραδείγματα Δομημένος προγραμματισμός τέσσερεις προγραμματιστικές δομές 1. sequence: ακολουθιακές εντολές 2. selection: επιλογή με if-then-else 3. iteration: δημιουργία βρόχων 4. recursion: αναδρομή ο κώδικας σπάει σε λογικά blocks που έχουν ένα σημείο εισόδου και εξόδου κατάργηση της GOTO εντολής οργάνωση του κώδικα σε διαδικασίες (procedures) 30

Προγραμματιστικά Παραδείγματα Διαδικασιακός προγραμματισμός (functional programming) το πρόγραμμα μας σπάει σε πολλαπλές διαδικασίες κάθε διαδικασία λύνει ένα υπο-πρόβλημα και αποτελεί μια λογική μονάδα (module) μια διαδικασία μπορούμε να την επαναχρησιμοποιήσουμε σε διαφορετικά δεδομένα το πρόγραμμα μας είναι τμηματοποιημένο (modular) 31

Προγραμματιστικά Παραδείγματα Διαδικασιακός προγραμματισμός - Κοινά δεδομένα ο διαδικασιακός προγραμματισμός τμηματοποιεί τον κώδικα αλλά όχι απαραίτητα τα δεδομένα π.χ., με τη χρήση καθολικών μεταβλητών (global variables) όλες οι διαδικασίες μπορεί να χρησιμοποιούν τα ίδια δεδομένα και άρα να επικοινωνούν/εξαρτώνται μεταξύ τους πρέπει να αποφεύγουμε τη χρήση καθολικών μεταβλητών! 32

Προγραμματιστικά Παραδείγματα Τμηματοποιημένος προγραμματισμός (modular programming) απόκρυξη δεδομένων με τη δημιουργία τοπικών μεταβλητών μέσα στις διαδικασίες αποφεύγουμε την ύπαρξη κοινών δεδομένων η επικοινωνία μεταξύ των διαδικασιών γίνεται με ορίσματα και επιτρεφόμενες τιμές ο κώδικας γίνεται πιο εύκολο να σχεδιαστεί, να γραφτεί και να συντηρηθεί 33

Προγραμματιστικά Παραδείγματα Η εξέλιξη του προγραμματισμού - Σύνοψη Προγραμματισμός Το πρόγραμμα ως μια σειρά εντολών Προγραμματισμός με Διαδικασίες Το πρόγραμμα ως μια συλλογή από συναρτήσεις που λειτουργούν σε καθολικά/κοινά δεδομένα Τμηματοποιημένος Προγραμματισμός Συναρτήσεις και δεδομένα ορίζουν λογικά blocks (χρήση τοπικών μεταβλητών) Αντικειμενοστραφής Προγραμματισμός Δημιουργία αντικειμένων όπου τα δεδομένα έρχονται με συγκεκριμένες μεθόδους 34

Εισαγωγή στη C 35

Λίγα λόγια για τη C γλώσσα προγραμματισμού υψηλού επιπέδου σχεδιάστηκε και υλοποιήθηκε από τον Dennis Ritchie στις αρχές της δεκαετίας του 1970 (Bell Labs)? γιατί ονομάστηκε C; πολλά από τα χαρακτηριστικά της προήλθαν από μια παλαιότερη γλώσσα, η οποία ονομαζόταν "Β" (Ken Thompson) βασικός σκοπός: χρήση για την ανάπτυξη του λειτουργικού συστήματος UNIX πρόδρομος του Linux, Android αρκετά διαδεδομένη για τη δημιουργία λογισμικού συστημάτων (system) για δημιουργία εφαρμογών (applications) 36

Η ιστορίας της C 1969-1973, AT&T Bell Labs από Dennis Ritchie ως συνέχεια των BCPL, B ανάπτυξη του UNIX 1978, The C Programming Language K&R: Kernigham & Ritchie Η πρώτη περιγραφή της C 1983, σύσταση ANSI Standardization Committee X3J11 1989, οριστικοποίηση και αποδοχή του προτύπου ΑNSI/ISO Standard (ANSI C) ANSI: American National Standards Institute 1990, το ANSI C γίνεται διαθέσιμο στο κοινό από τότε όλοι οι μεταγλωττιστές C υποστηρίζουν το συγκεκριμένο πρότυπο 1990-99, αναθεώρηση του προτύπου μικρές αλλαγές, C99 σήμερα, όλοι οι μεταγλωττιστές της C συμμορφώνονται με το πρότυπο ANSI C και πολλοί με το C99 37

Χαρακτηριστικά της C - Πλεονεκτήματα ευέλικτη (λίγοι περιορισμοί) και πολύ γρήγορη υποστηρίζει το δομημένο προγραμματισμό μεγάλη εγκατεστημένη βάση προγραμμάτων στηρίζεται στην ύπαρξη και κλήση συναρτήσεων παρέχει έτοιμες συναρτήσεις υποστηρίζει προγραμματισμό χαμηλού επιπέδου ακόμη και την ενσωμάτωση κώδικα μηχανής (assembly code) λιτή λίγες δεσμευμένες λέξεις και απλό συντακτικό ευανάγνωστος και εύκολα διατηρήσιμος κώδικας μεταφέρσιμη δυνατότητα μεταφοράς κώδικα και εκτέλεσής του σε διαφορετικά συστήματα 38

"Hello World" Το πρώτο μας πρόγραμμα σε C 39

Πρόγραμμα C 1 ο Παράδειγμα: "Hello World" 1. /* Το πρόγραμμα εκτυπώνει "Hello World" στο παράθυρο του τερματικού */ 2. 3. #include <stdio.h> 4. 5. main () 6. { 7. printf ("Hello World!"); // εκτύπωσε "Hello World" στο τερματικό 8. printf ("\n"); // εμφάνισε αλλαγή γραμμής στο τερματικό 9. } 40

Πρόγραμμα C 1 ο Παράδειγμα: "Hello World" - main() 1. /* Το πρόγραμμα εκτυπώνει "Hello World" στο παράθυρο του τερματικού */ 2. 3. #include <stdio.h> 4. 5. main () 6. { 7. printf ("Hello World!"); // εκτύπωσε "Hello World" στο τερματικό 8. printf ("\n"); // εμφάνισε αλλαγή γραμμής στο τερματικό 9. } κάθε πρόγραμμα C ξεκινά με την εκτέλεση της κύριας συνάρτησης με όνομα main έχει μόνο μία συνάρτηση main 41

Πρόγραμμα C 1 ο Παράδειγμα: "Hello World" - main() ΙΙ 1. /* Το πρόγραμμα εκτυπώνει "Hello World" στο παράθυρο του τερματικού */ 2. 3. #include <stdio.h> 4. 5. main () 6. { 7. printf ("Hello World!"); // εκτύπωσε "Hello World" στο τερματικό 8. printf ("\n"); // εμφάνισε αλλαγή γραμμής στο τερματικό 9. } κάθε πρόγραμμα C ξεκινά με την εκτέλεση της κύριας συνάρτησης με όνομα main έχει μόνο μία συνάρτηση main οι παρενθέσεις δηλώνουν ότι πρόκειται για μία συνάρτηση τα άγκιστρα δήλωνουν ότι πρόκειται για τον ορισμό της συνάρτησης 42

Πρόγραμμα C 1 ο Παράδειγμα: "Hello World" - Άγκιστρα 1. /* Το πρόγραμμα εκτυπώνει "Hello World" στο παράθυρο του τερματικού */ 2. 3. #include <stdio.h> 4. 5. main () 6. { 7. printf ("Hello World!"); // εκτύπωσε "Hello World" στο τερματικό 8. printf ("\n"); // εμφάνισε αλλαγή γραμμής στο τερματικό 9. } Τα άγκιστρα { } ορίζουν μία λογική ενότητα (block) του κώδικα αυτό μπορεί να είναι μία συνάρτηση, ένα if statement,... οι εντολές της C πρέπει να περιέχονται μέσα σε μία λογική ενότητα 43

Πρόγραμμα C 1 ο Παράδειγμα: "Hello World" - printf() 1. /* Το πρόγραμμα εκτυπώνει "Hello World" στο παράθυρο του τερματικού */ 2. 3. #include <stdio.h> 4. 5. main () 6. { 7. printf ("Hello World!"); // εκτύπωσε "Hello World" στο τερματικό 8. printf ("\n"); // εμφάνισε αλλαγή γραμμής στο τερματικό 9. } η συνάρτηση printf() εμφανίζει την ακολουθία των χαρακτήρων που βρίσκονται μέσα στα εισαγωγικά ("...") καλείται από την κύρια συνάρτηση main(), ως εντολή στις γραμμές 7 και 8 βρίσκεται προ-μεταγλωττισμένη στη βιβλιοθήκη stdio.h οι εντολές της C τελειώνουν πάντα με το ελληνικό ερωτηματικό (;) το \n ονομάζεται χαρακτήρας διαφυγής και δημιουργεί μία νέα γραμμή 44

Πρόγραμμα C 1 ο Παράδειγμα: "Hello World" - Η οδηγία #include 1. /* Το πρόγραμμα εκτυπώνει "Hello World" στο παράθυρο του τερματικού */ 2. 3. #include <stdio.h> 4. 5. main () 6. { 7. printf ("Hello World!"); // εκτύπωσε "Hello World" στο τερματικό 8. printf ("\n"); // εμφάνισε αλλαγή γραμμής στο τερματικό 9. } οδηγία προ-επεξεργαστή: πληροφορεί το μεταγλωττιστή της C ότι θα γίνει χρήση της βιβλιοθήκης προ-μεταγλωττισμένων συναρτήσεων οι έτοιμες βιβλιοθήκες της C (π.χ. stdio.h) περιέχουν προ-μεταγλωττισμένες συναρτήσεις είναι υλοποιημένες για συγκεκριμένο λειτουργικό σύστημα stdio.h: περιέχει συναρτήσεις που έχουν να κάνουν με την είσοδο και έξοδο δεδομένων standard input output 45

Πρόγραμμα C 1 ο Παράδειγμα: "Hello World" - Η οδηγία #include ΙΙ 1. /* Το πρόγραμμα εκτυπώνει "Hello World" στο παράθυρο του τερματικού */ 2. 3. #include <stdio.h> 4. 5. main () 6. { 7. printf ("Hello World!"); // εκτύπωσε "Hello World" στο τερματικό 8. printf ("\n"); // εμφάνισε αλλαγή γραμμής στο τερματικό 9. } ξεκινάει πάντα με το σύμβολο # και δεν τελειώνει με ελληνικό ερωτηματικό (;) υπάρχει σχεδόν πάντα στην αρχή κάθε προγράμματος και περιλαμβάνει οδηγίες για τον προ-επεξεργαστή τα αρχεία που προσδιορίζονται με την οδηγία #include ονομάζονται αρχεία επικεφαλίδας (header files) συνήθως, έχουν κατάληξη ".h" μπορούμε να δημιουργήσουμε δικά μας αρχεία επικεφαλίδας (βιβλιοθήκες συναρτήσεων) σύνταξη: #include <standard header file> #include "programmer s header file" 46

Πρόγραμμα C 1 ο Παράδειγμα: "Hello World" - Σχόλια 1. /* Το πρόγραμμα εκτυπώνει "Hello World" 2. στο παράθυρο του τερματικού */ 3. 4. #include <stdio.h> 5. σχόλιο πολλαπλών γραμμών σχόλιο μίας γραμμής 6. main () 7. { 8. printf ("Hello World!"); // εκτύπωσε "Hello World" στο τερματικό 9. printf ("\n"); // εμφάνισε αλλαγή γραμμής στο τερματικό 10. } αγνοούνται από το μεταγλωττιστή ακόμη ένα σχόλιο μίας γραμμής μίας γραμμής: //... πολλαπλών γραμμών: /*......... */ 47

Πρόγραμμα C 1 ο Παράδειγμα: "Hello World" - Άλλες μορφές 1. /* Το πρόγραμμα εκτυπώνει "Hello World" στο παράθυρο του τερματικού */ 2. 3. #include <stdio.h> 4. 5. main () 6. { 7. printf ("Hello World!"); // εκτύπωσε "Hello World" στο τερματικό 8. printf ("\n"); // εμφάνισε αλλαγή γραμμής στο τερματικό 9. } 1. /* Το πρόγραμμα εκτυπώνει "Hello World" στο παράθυρο του τερματικού */ 2. 3. #include <stdio.h> 4. 5. main () 6. { 7. printf ("Hello World!\n"); // εκτύπωσε "Hello World" στο τερματικό και άλλαξε γραμμή 8. } 48

Πρόγραμμα C 1 ο Παράδειγμα: "Hello World" - Άλλες μορφές ΙΙ 1. #include <stdio.h> 2. 3. main () 4. { 5. printf ("Hello World!"); 6. printf ("\n"); 7. } 1. #include <stdio.h> 2. 3. void main () 4. { 5. printf ("Hello World!\n"); 6. } void (πριν το όνομα της συνάρτησης) η συνάρτηση δεν επιστρέφει τιμή 1. #include <stdio.h> 2. 3. main () 4. { 5. printf ("Hello World!\n"); 6. } 1. #include <stdio.h> 2. 3. void main (void) 4. { 5. printf ("Hello World!\n"); 6. } void (στις παρενθέσεις) η συνάρτηση δε δέχεται ορίσματα 1. #include <stdio.h> 2. 3. main () { 4. printf ("Hello World!\n"); 5. } 1. #include <stdio.h> 2. 3. int main (void) 4. { 5. printf ("Hello World!\n"); 6. return 0; // επέστρεψε την τιμή 0 7. } int (πριν το όνομα της συνάρτησης) η συνάρτηση επιστρέφει έναν ακέραιο με χρήση της εντολής return 49

Μεταγλώττιση και σύνδεση Πηγαίος κώδικας C hello_world.c Μεταγλωττιστής Κώδικας αντικειμένου hello_world.o Προμεταγλωττισμένος κώδικας Εκτελέσιμο πρόγραμμα hello_world.exe Συνδυαστής Κώδικας αντικειμένου από τη βιβλιοθήκη προτύπων C stdio.o 1. γράφουμε πηγαίο κώδικα C (hello_world.c) ο πηγαίος κώδικας είναι αναγνώσιμος από τον άνθρωπο 2. ο μεταγλωττιστής μεταφράζει αυτό που γράψαμε σε «αντικείμενο» κώδικα (hello_world.o) ο «αντικείμενος» κώδικας είναι αρκετά απλός ώστε ο υπολογιστής να "καταλάβει" 3. ο συνδυαστής συνδέει τον κωδικά μας με τον «αντικείμενο» κώδικα συστήματος που απαιτείται για την εκτέλεση π.χ. βιβλιοθήκες εισόδου / εξόδου (stdio.o), κώδικας λειτουργικού συστήματος και κώδικας παραθύρου 4. το αποτέλεσμα είναι ένα εκτελέσιμο πρόγραμμα π.χ. ένα αρχείο hello_world.exe στα Windows ή ένα αρχείο hello_world.out στο Unix 50

Πρόγραμμα C Μεταγλωττιστής ανιχνεύει λανθασμένη εφαρμογή των κανόνων της γλώσσας μηνύματα λάθους π.χ. ορθογραφικά λάθη, συντακτικά λάθη, αδήλωτες μεταβλητές,... η C κάνει διάκριση μεταξύ πεζών και κεφαλαίων γραμμάτων (case sensitive) π.χ. άλλο το Printf() και άλλο το printf() ένα μήνυμα λάθους μπορεί να μη συμβαίνει στη γραμμή που υποδεικνύει, αλλά στις αμέσως προηγούμενες γραμμές αν εμφανίζει πολλά μηνύματα λάθους, προσπαθήστε να βρείτε και να διορθώσετε μόνο το πρώτο λάθος μια νέα μεταγλώττιση μπορεί να εμφανίσει λιγότερα ή και καθόλου λάθη δεν ανιχνεύει λάθη λογικής που ενδέχεται να περιέχονται στο πρόγραμμά σας μπορεί να εμφανίσει μηνύματα προειδοποίησης (warnings) καλό είναι να μην τα αγνοείτε 51

Για το εργαστήριο 1. εξοικείωση με το περιβάλλον εργασίας του εργαστηρίου 2. σύνταξη, αποθήκευση μεταγλώττιση και εκτέλεση των προγραμμάτων που παρουσιάστηκαν στη διάλεξη της θεωρίας 3. δημιουργήστε κάποιο λάθος και μελετήστε τα μηνύματα λάθους του μεταγλωττιστή π.χ. αφαίρεση ενός ερωτηματικού ή/και μια ανορθόγραφη εντολή/συνάρτηση 4. γράψτε ένα δικό σας πρόγραμμα το οποίο θα τυπώνει: το όνομα και το επώνυμο σας στη ίδια γραμμή και το τμήμα σας σε άλλη γραμμή 5. αναζητήστε στο διαδίκτυο πηγές και εγχειρίδια εκμάθησης για τη γλώσσα προγραμματισμού C 52

Σύνοψη Στόχοι και ύλη μαθήματος Προγραμματισμός 5 γενεές γλωσσών προγραμματισμού Προγραμματιστικά παραδείγματα Δομημένος προγραμματισμός Εισαγωγή στη C Μεταγλώττιση, σύνδεση, εκτέλεση το 1 ο πρόγραμμα "Hello World" 53