Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου"— Μεταγράφημα παρουσίασης:

1 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος (zachos@cs.ntua.gr) Νίκος Παπασπύρου (nickie@softlab.ntua.gr) http://www.corelab.ece.ntua.gr/courses/programming/ 1Νίκος ΠαπασπύρουΕισαγωγή στον Προγραμματισμό Διαφάνειες παρουσίασης #1 Εισαγωγή Δομή του προγράμματος Τί σημαίνει ορθό πρόγραμμα Συντακτικά διαγράμματα

2 2Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Εισαγωγή(i) u Σκοπός του μαθήματος l Εισαγωγή στην πληροφορική (computer science) l Εισαγωγή στον προγραμματισμό ηλεκτρονικών υπολογιστών (Η/Υ) l Μεθοδολογία αλγοριθμικής επίλυσης προβλημάτων

3 3Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Εισαγωγή(ii) u Αλγόριθμος l Πεπερασμένη ακολουθία ενεργειών που περιγράφει τον τρόπο επίλυσης ενός προβλήματος l Εφαρμόζεται σε δεδομένα (data) u Πρόγραμμα l Ακριβής περιγραφή ενός αλγορίθμου σε μια τυπική γλώσσα που ονομάζεται γλώσσα προγραμματισμού

4 4Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Εισαγωγή(iii) u Φυσική γλώσσα l Χωρίς τόσο αυστηρούς συντακτικούς περιορισμούς l Μεγάλη πυκνότητα και σημασιολογική ικανότητα u Τεχνητή γλώσσα l Αυστηρότατη σύνταξη και σημασιολογία u Γλώσσα προγραμματισμού l Τεχνητή γλώσσα στην οποία μπορούν να περιγραφούν υπολογισμοί l Εκτελέσιμη από έναν ηλεκτρονικό υπολογιστή

5 5Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Εισαγωγή(iv) u Πληροφορική Ηλεκτρονικοί υπολογιστές (engineering) Μαθηματικά Σχεδίαση και κατασκευή Θεωρία και αναλυτική μέθοδος u Κεντρική έννοια: υπολογισμός (computation)

6 6Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Εισαγωγή(v) u Κατασκευή υπολογιστικών μηχανών l Αρχαιότητα: υπολογιστικές μηχανές, μηχανισμός των Αντικυθήρων, κ.λπ. l 17ος αιώνας, Pascal και Leibniz, μηχανικές υπολογιστικές αριθμομηχανές  στοιχειώδεις αριθμητικές πράξεις l 1830–1840, Babbage, “αναλυτική μηχανή”  λογάριθμοι, τριγωνομετρικές συναρτήσεις l 1880–1890, Hollerith, μηχανή με διάτρητες κάρτες για την αυτοματοποίηση των εκλογών

7 7Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Εισαγωγή(vi) u Κατασκευή υπολογιστών l 1920–1930, Bush, ηλεκτρική (αναλογική) υπολογιστική μηχανή  διαφορικές εξισώσεις l ~1940, Zuse, ηλεκτρονική (ψηφιακή) υπολογιστική μηχανή  πρόγραμμα και δεδομένα, χωριστά l 1945–1950, μοντέλο von Neumann  πρόγραμμα και δεδομένα, από κοινού l 1950–σήμερα, ραγδαία ανάπτυξη της τεχνολογίας των ηλεκτρονικών υπολογιστών

8 8Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Εισαγωγή(vii) u Θεμέλια της πληροφορικής l Μαθηματική λογική l Αριστοτέλης: συλλογισμοί A A  B B (modus ponens) l Ευκλείδης: αξιωματική θεωρία l Αρχές 20ου αιώνα, Hilbert  αξίωμα, θεώρημα, τυπική απόδειξη

9 9Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Εισαγωγή(viii) u Πρόγραμμα του Leibniz: θεμελίωση των μαθηματικών l γλώσσαγια όλα τα μαθηματικά l θεωρία l συνεπής (consistent) και πλήρης (complete) A   Aαντίφαση u Γλώσσα l προτασιακός λογισμόςx, c, , , , ,  l κατηγορηματικός λογισμός , 

10 10Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Εισαγωγή(ix) u Θεωρία l Συνολοθεωρία, Cantor, Frege  l Παράδοξο του Russel A = { x | x  x } A  A  A  A A  A  A  A l Άλλες θεωρίες συνόλων (ZF, κ.λπ.) l Άλλες θεωρίες για τη θεμελίωση των μαθηματικών (θεωρία συναρτήσεων, κατηγοριών, κ.λπ.) l 1920–1930, προσπάθειες για απόδειξη συνέπειας

11 11Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Εισαγωγή(x) u Συνέπεια και πληρότητα l 1931, Gödel, θεώρημα μη πληρότητας  δεν είναι δυνατόν να κατασκευαστεί συνεπής και πλήρης θεωρία της αριθμητικής l 1936, Turing,  μη αποκρίσιμες (undecidable) προτάσεις  μηχανή Turing, υπολογισιμότητα

12 12Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Εισαγωγή(xi) u Κλάδοι της πληροφορικής l Αλγόριθμοι και δομές δεδομένων l Γλώσσες προγραμματισμού l Αρχιτεκτονική υπολογιστών και δικτύων l Αριθμητικοί και συμβολικοί υπολογισμοί l Λειτουργικά συστήματα l Μεθοδολογία – τεχνολογία λογισμικού l Βάσεις δεδομένων και διαχείριση πληροφοριών l Τεχνητή νοημοσύνη και ρομποτική l Επικοινωνία ανθρώπου – υπολογιστή

13 13Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Εισαγωγή(xii) u Υπολογιστής l επεξεργαστής l μνήμη l συσκευές εισόδου/εξόδου u Ιδιότητες l αυτόματο χωρίς εξυπνάδα l μεγάλη ταχύτητα l ακρίβεια στις πράξεις

14 14Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Γλώσσες προγραμματισμού(i) u Γλώσσα μηχανής 011011011011011 διεύθυνσηεντολή u Συμβολική γλώσσα (assembly) label:addax, bx διεύθυνσηπράξηδεδομένα u Γλώσσες χαμηλού και υψηλού επιπέδου u Υλοποίηση γλωσσών προγραμματισμού l μεταγλωττιστής (compiler) l διερμηνέας (interpreter)

15 15Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Γλώσσες προγραμματισμού(ii) u Κυριότερες γλώσσες, ιστορικά l FORTRAN, Algol, LISP, COBOL, BASIC, PL/I l Pascal l Prolog, C, Smalltalk, Modula-2, Ada, C++, Java

16 16Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Γλώσσες προγραμματισμού(iii) u Pascal l Niklaus Wirth (1971) l Γλώσσα γενικού σκοπού (general purpose) l Ευνοεί το συστηματικό και δομημένο προγραμματισμό u Παραλλαγές l Standard, ISO Pascal l UCSD Pascal l ANSI Pascal l Turbo Pascal

17 17Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό κυρίως σώμα δηλώσεις επικεφαλίδα Δομή του προγράμματος(i) program example(input, output); var i, j : integer; begin i:=15; j:=23; write('sum of i and j is: '); i:=i+j; write(i) end.

18 18Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Δομή του προγράμματος(ii) u Επικεφαλίδα identifier program(input, output) header Συντακτικό διάγραμμα l περιγράφει τη σύνταξη ενός τμήματος του προγράμματος το όνομα του τμήματος προγράμματος που ορίζεται τετράγωνα κουτιά: απαιτούν εξήγηση οβάλ κουτιά: γράφονται ακριβώς έτσι βέλη: περιγράφουν τη σειρά με την οποία γράφονται τα κουτιά αρχή τέλος

19 19Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Δομή του προγράμματος(iii) u Δηλώσεις μεταβλητών l μεταβλητή: ένα «κουτί» της μνήμης του υπολογιστή όπου μπορεί να αποθηκευτεί μια πληροφορία (ένα δεδομένο) l στο τμήμα δηλώσεων ορίζουμε όλες τις μεταβλητές που χρησιμοποιεί το πρόγραμμα l για κάθε μεταβλητή ορίζουμε το όνομά της και τον τύπο της, δηλαδή το πεδίο των δυνατών τιμών που μπορεί η μεταβλητή να πάρει var i : integer;

20 20Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Δομή του προγράμματος(iv) u Απλοί τύποι μεταβλητών integer ακέραιοι αριθμοί 0, 1, –3 real πραγματικοί αριθμοί 3.14 char χαρακτήρες 'a' boolean λογικές τιμές true, false u Δήλωση περισσότερων μεταβλητών var i,j,k : integer; x,y : real; ch : char; changed : boolean;

21 21Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Δομή του προγράμματος(v) u Κυρίως σώμα statement beginend body ; u Σχόλια var x,y : real; (* οι συντεταγμένες του κέντρου *) r : real; (* η ακτίνα *)

22 22Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό κυρίως σώμα δηλώσεις επικεφαλίδα Δομή του προγράμματος(vi)  Υποπρογράμματα program example(input, output); var i, j : integer; begin i:=15; j:=23; write('sum of i and j is: '); i:=i+j; write(i) end. procedure add; (* ορισμός της *) begin (* διαδικασίας *) i:=i+j end; add; (* κλήση της διαδικασίας *)

23 23Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Τί σημαίνει ορθό πρόγραμμα(i) u Συντακτική ορθότητα l το πρόγραμμα πρέπει να υπακούει στους συντακτικούς κανόνες της γλώσσας προγραμματισμού u Συντακτικά σφάλματα στην Pascal l εμφανίζονται όταν δεν ικανοποιούνται τα συντακτικά διαγράμματα l παράδειγμα: ( program ) input example, output;

24 24Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Τί σημαίνει ορθό πρόγραμμα(ii) u Νοηματική ορθότητα l το πρόγραμμα πρέπει να υπακούει τους νοηματικούς κανόνες της γλώσσας προγραμματισμού u Νοηματικά σφάλματα στην Pascal l εσφαλμένη χρήση τελεστών n := 'a' + 1 l χρήση μεταβλητών χωρίς δήλωση var n,i : integer; begin n := i + j

25 25Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Τί σημαίνει ορθό πρόγραμμα(iii) sqrt διαίρεση με το μηδέν u Σημασιολογική ορθότητα l όταν το πρόγραμμα εκτελείται, πρέπει να κάνει ακριβώς αυτό που θέλουμε να κάνει u Σημασιολογικά σφάλματα στην Pascal l προέρχονται από την κακή σχεδίαση ή την κακή υλοποίηση του προγράμματος l αυτά τα σφάλματα ονομάζονται συνήθως bugs και η διαδικασία εξάλειψής τους debugging x1 := (-b + sqr(b*b-4*a*c))/(2*a)

26 26Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Τί σημαίνει ορθό πρόγραμμα(iv) u Ο μεταγλωττιστής μπορεί να εντοπίσει σε ένα πρόγραμμα την ύπαρξη l συντακτικών σφαλμάτων l νοηματικών σφαλμάτων u Τυπώνει κατάλληλα μηνύματα σφάλματος u Ο προγραμματιστής είναι υπεύθυνος για l τη διόρθωση των παραπάνω l τον εντοπισμό και τη διόρθωση σημασιολογικών σφαλμάτων

27 27Νίκος Παπασπύρου Εισαγωγή στον Προγραμματισμό Συντακτικά διαγράμματα identifier _ letter digit letter a b z... digit 0 1 9...


Κατέβασμα ppt "ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου"

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google