Fortran και Αντικειμενοστραφής προγραμματισμός

Σχετικά έγγραφα
Εισαγωγή. Σκοπός του μαθήματος

Fortran και Αντικειμενοστραφής προγραμματισμός. 1η ενότητα

Εισαγωγή στις έννοιες του προγραμματισμού και της πληροφορικής

Διαφάνειες παρουσιάσεων Αρχικές Διαφάνειες σε Pascal: Σ.Ζάχος, Ν.Παπασπύρου Προσαρμογή σε Fortran: Α.Παγουρτζής, Δ.Σούλιου

Fortran και Αντικειμενοστραφής προγραμματισμός.

29/9/2017. Εισαγωγή. Διαφάνειες παρουσιάσεων 29/9/17. Σκοπός του μαθήματος

Διαφάνειες παρουσιάσεων

ιαφάνειες παρουσίασης #1

Προέλευση της Pazcal ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ. Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Προγραμματισμός Η/Υ. 1 η ενότητα: Εισαγωγή στις γλώσσες προγραμματισμού. Τμήμα. Τεχνολόγων Περιβάλλοντος. ΤΕΙ Ιονίων Νήσων

Θεμελιώδη Θέματα Επιστήμης Υπολογιστών

Η ΑΕΠΠ IN A GLANCE! ΦΡΟΝΤΙΣΤΗΡΙΑ ΠΟΛΥΜΕΝΗ

Ενότητα 4: «Εισαγωγή στον Προγραμματισμό. Τα πρώτα προγράμματα σε γλώσσα C»

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

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

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

Σύντοµη Ιστορία της Πληροφορικής

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

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

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

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

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ Της ΠΛΗΡΟΦΟΡΙΚΗΣ. Εισαγωγή

ΜΑΘΗΜΑ: Εισαγωγή στις Αρχές της Επιστήμης των Η/Υ. 1 η ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ: ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ

κεφάλαιο Βασικές Έννοιες Επιστήμη των Υπολογιστών

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

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

ΜΑΘΗΜΑΤΑ ΤΜΗΜΑΤΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ ΠΑΡΑ ΟΣΕΙΣ ΑΣΚΗΣΕΙΣ ΚΑΘΗΓΗΤΕΣ/ΤΡΙΕΣ

Fortran και Αντικειμενοστραφής προγραμματισμός.

ΚΑΤΑΝΟΗΣΗ ΑΝΑΛΥΣΗ ΕΠΙΛΥΣΗ. Ο προγραμματισμός ασχολείται με το σύνολο των εντολών που δίνονται στον υπολογιστή ώστε να υλοποιείται ο αλγόριθμος.

ΗΥ Λογική. Διδάσκων: Δημήτρης Πλεξουσάκης Καθηγητής

Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές

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

Αντικειμενοστρεφής Προγραμματισμός -Python. Κ.Π. Γιαλούρης

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

Κεφάλαιο 1: Εισαγωγή. Αρχές Γλωσσών και Προγραμματισμού και Μεταφραστών. Γιάννης Γαροφαλάκης ΤΜΗΥΠ - Πανεπιστήμιο Πατρών

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Λογική. Ενότητα 1: Εισαγωγή. Δημήτρης Πλεξουσάκης Τμήμα Επιστήμης Υπολογιστών

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

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

Τεχνολογία Λογισµικού Ι Κεφάλαιο 5

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

Ενότητα 1: «Εισαγωγή στην Αλγοριθμική και τον Προγραμματισμό. Απλές ασκήσεις με γλώσσα Pascal»

Προγραμματισμός και Εφαρμογές Υπολογιστών

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

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΣΧΟΛΗ ΕΠΙΣΤΗΜΩΝ ΤΗΣ ΙΟΙΚΗΣΗΣ ΤΜΗΜΑ ΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ. Δρ. Κωνσταντίνος Κούτσικος - Δρ. Ιάσων Κουφοδόντης

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

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

Υπολογιστές Ι. Άδειες Χρήσης. Εισαγωγή. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Από την Άλγεβρα των Υπολογισμών στα Υπολογιστικά Συστήματα Άλγεβρας

ΥΠΟΛΟΓΙΣΤΕΣ Ι. Τα επιμέρους τμήματα Η ΟΜΗ TOY ΥΠΟΛΟΓΙΣΤΗ. Αναπαράσταση μεγεθών. Αναλογική αναπαράσταση ΚΕΝΤΡΙΚΗ ΜΝΗΜΗ ΜΟΝΑ Α ΕΛΕΓΧΟΥ

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

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

Εισαγωγή στον Προγ/μό Υπολογιστών. Διάλεξη 0

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07

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

ιακριτές Μέθοδοι για την Επιστήμη των Υπολογιστών

Γλώσσες Προγραμματισμού Μεταγλωττιστές

Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων. 1. Εισαγωγή. Ιωάννης Κατάκης. ΕΠΛ 032: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ. Εισαγωγή

ΠΛΗΡΟΦΟΡΙΚΗ: ΥΠΟΛΟΓΙΣΤΕΣ & ΤΕΧΝΟΛΟΓΙΕΣ ΔΙΑΔΙΚΤΥΟΥ

Β Εξάµηνο Τίτλος Μαθήµατος Θ Φ Α.Π Ε Φ.E. Π.Μ Προαπαιτούµενα

Εισαγωγή στις Αρχές της Επιστήμης των ΗΥ

[1] Στόχοι. Υπολογιστικά συστήματα. Υπολογιστικά συστήματα

4.2.1 Α εξάμηνο Β εξάμηνο Γ εξάμηνο 4.2. ΣΥΝΟΠΤΙΚΟ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ ΑΝΑ ΕΞΑΜΗΝΟ

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική II. Ενότητα 3 : Γλώσσες προγραμματισμού. Δρ.

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

Γλώσσες υψηλού επιπέδου Περιέχουν περισσότερες εντολές για την εκτέλεση πολύπλοκων εργασιών Τα προγράµµατα µεταφράζονται σε γλώσσα µηχανής είτε από το

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΛΟΠΟΝΝΗΣΟΥ ΣΧΟΛΗ ΟΙΚΟΝΟΜΙΑΣ ΔΙΟΙΚΗΣΗΣ και ΠΛΗΡΟΦΟΡΙΚΗΣ. ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ και ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΟΔΗΓΟΣ ΜΕΤΑΒΑΤΙΚΩΝ ΔΙΑΤΑΞΕΩΝ

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

Γενικά περί υπολογιστών

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

Μαλούτα Θεανώ Σελίδα 1

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΛΟΠΟΝΝΗΣΟΥ ΣΧΟΛΗ ΟΙΚΟΝΟΜΙΑΣ ΔΙΟΙΚΗΣΗΣ και ΠΛΗΡΟΦΟΡΙΚΗΣ. ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ και ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΟΔΗΓΟΣ ΜΕΤΑΒΑΤΙΚΩΝ ΔΙΑΤΑΞΕΩΝ

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

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

215 Μηχανικών Η/Υ και Πληροφορικής Πάτρας

<<ΔΗΜΗΤΡΗΣ ΜΑΝΩΛΗΣ ΦΥΣΙΚΟΣ ΜCs>> 1

Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον

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

Επικοινωνία Ανθρώπου- Υπολογιστή Σχεδίαση Αλληλεπίδρασης

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

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

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

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Εισαγωγή

Στοιχεία Προτασιακής Λογικής

Σύνοψη Θεωρίας ΟΡΙΣΜΟΣ ΚΑΙ ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΑΛΓΟΡΙΘΜΩΝ

Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας. Πληροφορική Ι ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ. Δρ.

Διδάσκων:Μ.Χατζόπουλος, Παραδόσεις:Τρίτη 4-6, Τετάρτη 1-3; (Αμφιθέατρο Α15) Πληροφορίες στην ιστοσελίδα του μαθήματος

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. Στέφανος Ουγιάρογλου

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 6 ο

Επιµέλεια Θοδωρής Πιερράτος

ΕΡΩΤΗΣΕΙΣ ΑΞΙΟΛΟΓΗΣΗΣ

Π ρ ο γ ρ α μ μ α τ ι σ μ ό ς Β α σ ι κ έ ς έ ν ν ο ι ε ς Ι σ τ ο ρ ι κ ή α ν α δ ρ ο μ ή Η έννοια του προγράμματος Ιστορική αναδρομή

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

Transcript:

Fortran και Αντικειμενοστραφής προγραμματισμός www.corelab.ntua.gr/courses/fortran_naval/naval Διδάσκοντες: Άρης Παγουρτζής (pagour@cs.ntua.gr) (Επίκουρος Καθηγητής ΣΗΜΜΥ ) Δώρα Σούλιου (dsouliou@mail.ntua.gr) (ΕΔΙΠ ΣΗΜΜΥ) Διαδικαστικά 1η ενότητα Εισαγωγή στην πληροφορική Εισαγωγή στη γλώσσα Fortran Παραδείγματα προγραμμάτων Fortran Αρχικές Διαφάνειες σε Pascal: Ε. Ζάχος, Ν. Παπασπύρου Προσαρμογή σε Fortran - συμπληρώσεις: Α. Παγουρτζής, Δ. Σούλιου 1

Διαδικαστικά Τετάρτη 12:45 14:30 Αίθουσα 5 ισόγειο κτηρίου Ηλεκτρολόγων Παρασκευή 10:45 12:30 Αίθουσα 5 ισόγειο κτηρίου Ηλεκτρολόγων Ώρες γραφείου Τετάρτη 12:45 14:30 Γραφείο 1.1.30 παλαιό κτίριο ΣΗΜΜΥ Τηλέφωνο: 210 7721644 Βαθμολογία (πρωτοετείς φοιτητές) Τελική Εξέταση (9 μονάδες) Σειρές ασκήσεων (1 μονάδα) με προφορική εξέταση Πρόοδος (1 μονάδα) 2

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

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

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

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

Εισαγωγή (v) Πληροφορική: μαθηματικοποίηση της μεθοδολογίας των μηχανικών Απαιτήσεις Πρόβλημα Προδιαγραφές Σχεδίαση Υλοποίηση Εμπειρικός έλεγχος Θεωρητική επαλήθευση Βελτιστοποίηση Πολυπλοκότητα (κόστος πόρων-αγαθών) Τεκμηρίωση Συντήρηση Έννοιες που υπήρχαν για τους μηχανικούς, στην πληροφορική τυποποιήθηκαν, πήραν μαθηματική μορφή, άρα μπορεί κανείς να επιχειρηματολογήσει με αυτές τις έννοιες χρησιμοποιώντας αποδείξεις. 7

Εισαγωγή (vi) Δευτεροβάθμια εκπαίδευση Σκοπός: να μάθεις να σκέφτεσαι Η Ευκλείδεια Γεωμετρία (με τη βασική διδακτική της αξία) απουσιάζει από το πρόγραμμα σπουδών εδώ και χρόνια. Αποτέλεσμα: όπως είδαμε και στις πανελλήνιες εξετάσεις δίνεται έμφαση στην αποστήθιση ανουσίων θεωρημάτων και γνώσεων διαφορικού και απειροστικού λογισμού. Η ικανότητα μαθηματικής επίλυσης απλών αλλά πρωτότυπων προβλημάτων δεν παίζει ρόλο. Απουσία γνώσεων συνδυαστικής (μέτρηση περιπτώσεων, τρίγωνο Pascal). Εφαρμογή των αποστηθισμένων κανόνων; Άλγεβρα: αν ρωτήσω έναν τελειόφοιτο Λυκείου πόσο κάνει 107 93 θα δυσκολευτεί πολύ να απαντήσει, ενώ φυσικά γνωρίζει ότι (α+β)(α β) = α 2 β 2 8

Εισαγωγή (vii) Οι μαθητές αγνοούν την έννοια του αποδοτικού αλγόριθμου π.χ. μαθαίνουν ένα μη-αποδοτικό αλγόριθμο για την εύρεση του Μ.Κ.Δ. ενώ ο αλγόριθμος του Ευκλείδη απουσιάζει από την ύλη Πρόταση Εισαγωγή της Αλγοριθμικής Πληροφορικής στη δευτεροβάθμια εκπαίδευση για όλους τους μαθητές Μεθοδολογία επίλυσης προβλημάτων με σχεδίαση και υλοποίηση αλγορίθμων 9

Εισαγωγή (viii) Τριτοβάθμια εκπαίδευση Η τεχνολογία αλλάζει αέναα και γρήγορα τα θεμέλια μένουν Αυτά τα θεμέλια πρέπει να είναι η ραχοκοκαλιά στην τριτοβάθμια εκπαίδευση: έμφαση στην αλγοριθμική σκέψη σε αντιδιαστολή με τις τεχνολογικές δεξιότητες (computer literacy) Computer science, computing science, informatics Dijkstra: η Επιστήμη των Υπολογιστών έχει τόση σχέση με τους υπολογιστές όση και η Αστρονομία με τα τηλεσκόπια Primality: σημαντικό επίτευγμα σε μία χώρα χωρίς υποδομές 10

Εισαγωγή (ix) Να μην ξεχνάμε ότι Το να κάνεις λάθη είναι ανθρώπινο. Για να τα κάνεις τελείως "μπάχαλο" χρειάζεσαι υπολογιστή! 11

Εισαγωγή (x) Κατασκευή υπολογιστικών μηχανών Αρχαιότητα: υπολογιστικές μηχανές, μηχανισμός των Αντικυθήρων, κ.λπ. 17ος αιώνας, Pascal και Leibniz, μηχανικές υπολογιστικές αριθμομηχανές στοιχειώδεις αριθμητικές πράξεις 1830 1840, Babbage, αναλυτική μηχανή λογάριθμοι, τριγωνομετρικές συναρτήσεις 1880 1890, Hollerith, μηχανή με διάτρητες κάρτες για την αυτοματοποίηση των εκλογών 12

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

Εισαγωγή (xii) Κατασκευή υπολογιστών 1952 main frames IBM 650, 7000, 360 1965 mini computers DEC PDP-8 1977 personal computers Apple II 1981 IBM PC 1983, 1984 Apple: Lisa, Macintosh 1985 internet 1990 world wide web 2000 PDA, smartphones, κ.λπ. 14

Εισαγωγή (xiii) Μηχανικοί υπολογιστών Tom Watson, IBM, 1945 Ο κόσμος χρειάζεται περίπου 5 υπολογιστές Gordon Moore, Intel, 1965 Η πυκνότητα του hardware στα ολοκληρωμένα κυκλώματα διπλασιάζεται κάθε 18 μήνες http://www.intel.com/research/silicon/mooreslaw.htm 15

Εισαγωγή (xiv) Θεμέλια της πληροφορικής Μαθηματική λογική Αριστοτέλης: συλλογισμοί A B A B (modus ponens) Ευκλείδης: αξιωματική θεωρία Hilbert: αξίωμα, θεώρημα, τυπική απόδειξη 16

Εισαγωγή (xv) Πρόγραμμα του Leibniz: θεμελίωση των μαθηματικών γλώσσα θεωρία για όλα τα μαθηματικά συνεπής (consistent) και πλήρης (complete) A A αντίφαση Γλώσσα (Boole, De Morgan, Frege, Russel) προτασιακός λογισμός,,,, κατηγορηματικός λογισμός, 17

Εισαγωγή (xvi) Θεωρία Συνολοθεωρία, Cantor, Frege Παράδοξο του Russel A = { x x x} A A A A A A A A Άλλες θεωρίες συνόλων (ZF, κ.λπ.) Άλλες θεωρίες για τη θεμελίωση των μαθηματικών (θεωρία συναρτήσεων, κατηγοριών, κ.λπ.) 1920 1930, προσπάθειες για απόδειξη συνέπειας 18

Εισαγωγή (xvii) Συνέπεια και πληρότητα 1931, Gödel, θεώρημα μη πληρότητας δεν είναι δυνατόν να κατασκευαστεί συνεπής και πλήρης θεωρία της αριθμητικής 1936, Turing, μη αποκρίσιμες (undecidable) προτάσεις μηχανή Turing, υπολογισιμότητα... 0 1 1 0 άπειρη ταινία κεφαλή... σύστηµα ελέγχου (εσωτερική κατάσταση) 19

Εισαγωγή (xviii) Μη πληρότητα (incompleteness) David Hilbert, 1862-1943 Kurt Gödel, 1906-1978 (ασιτία) Δοξιάδης Incompleteness: a play and a theorem Ο θείος Πέτρος και η εικασία του Goldbach Παπαδημητρίου Το χαμόγελο του Turing Hoffstader Gödel, Escher, and Bach 20

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

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

Γλώσσες προγραμματισμού (i) Γλώσσα μηχανής 0110110 11011011 διεύθυνση εντολή Συμβολική γλώσσα (assembly) label: add ax, bx διεύθυνση πράξη δεδομένα Γλώσσες χαμηλού και υψηλού επιπέδου Υλοποίηση γλωσσών προγραμματισμού μεταγλωττιστής (compiler) διερμηνέας (interpreter) 23

Γλώσσες προγραμματισμού (ii) Κυριότερες γλώσσες, ιστορικά 1950 1960 FORTRAN, LISP, COBOL, Algol, BASIC, PL/I 1970 Pascal, C, Smalltalk, Prolog, ML, Logo 1980 C++, Modula-2, Ada, Perl, MATLAB, Erlang, Eiffel 1990 Java, Python, Ruby, Haskell, PHP, Visual Basic, Javascript 2000 C#, F#,... 24

FORTRAN (FORmulae TRANslator) (i) Από τις πρώτες γλώσσες προγραμματισμού υψηλού επιπέδου Δημιουργήθηκε τη δεκαετία του '50 (1956) για τον IBM704 και στη συνέχεια προσαρμόστηκε σε διάφορα υπολογιστικά συστήματα 1958: Fortran II με πολλά υποπρογράμματα Ακολούθησε η Fortran IV η οποία δόθηκε στην επιστημονική κοινότητα Ανάγκη τυποποίησης (πολλές υλοποιήσεις σε διάφορες μηχανές, συμβατότητα μεταξύ των μηχανών) Fortran 66: η πρώτη τυποποιημένη Fortran από το αμερικάνικο ινστιτούτο ANSI Fortran 77: η πρώτη τυποποιημένη Fortran από τον ISO 25

FORTRAN (FORmulae TRANslator) (ii) Fortran 77: συμπλήρωνε τις ελλείψεις της Fortran 66 και υιοθετούσε χαρακτηριστικά που είχαν επιτυχώς υλοποιηθεί σε άλλες γλώσσες (Algol, Modula, Pascal) Fortran 90: δόθηκε από τον ISO το 1992 με ριζικές αλλαγές Fortran 95: δόθηκε από τον ISO το 1997 με δυνατότητα παράλληλης επεξεργασίας Fortran 2003/2008: με πολλά νέα χαρακτηριστικά, κυρίως αντικειμενοστραφούς προγραμματισμού Αναμένονται νεώτερες εκδόσεις (Fortran 2015) 2 βασικές διάλεκτοι της γλώσσας Παλαιά (πριν την Fortran90) εκατομμύρια προγράμματα σε αρχεία με επέκταση.for ή.f Νέα (Fortran 90,95,2003, 2008) προγράμματα σε αρχεία με επέκταση.f90,.f95,.f03,.f08 26

FORTRAN (FORmulae TRANslator) (iii) Πλεονεκτήματα άλλων γλωσσών επικοινωνία με τη μηχανή (γλώσσες χαμηλού επιπέδου) δημιουργία γραφικών χειρισμό αρχείων ευκολία χρήσης επικοινωνία με το διαδίκτυο Πλεονεκτήματα Fortran ταχύτερη σε πολύπλοκους επιστημονικούς και τεχνικούς υπολογισμούς, προβλήματα με πολυδιάστατους πίνακες, πολλές επαναλήψεις, προβλήματα βελτιστοποίησης 27

Παραδείγματα (i) PROGRAM Hello1 IMPLICIT NONE WRITE(*,*) 'hello world' END PROGRAM Hello2 IMPLICIT NONE WRITE(*,*) 'hello ', 'world' END PROGRAM Hello3 IMPLICIT NONE WRITE(*,*) 'hello ' WRITE(*,*) 'world' END 28

Παραδείγματα (σε γλώσσα C) (i) #include <stdio.h> void main () { printf("hello world\n"); } #include <stdio.h> void main () { printf("hello " "world\n"); } #include <stdio.h> void main () { printf("hello "); printf("world\n"); } 29

Παραδείγματα (ii) PROGRAM Hello4 IMPLICIT NONE WRITE(*, "(A)", advance="no")'hello' WRITE(*,*) 'world' END 30

Παραδείγματα (σε γλώσσα C) (ii) #include <stdio.h> void main () { printf("hello world"); printf("\n"); } 31

Παραδείγματα (iii) PROGRAM Hello5 IMPLICIT NONE CALL hello CALL hello CALL hello CALL hello END SUBROUTINE hello IMPLICIT NONE WRITE(*,*) ' hello world' END 32

Παραδείγματα (σε γλώσσα C) (iii) #include <stdio.h> void hello() { printf("hello world\n"); } void main() { hello(); hello(); hello(); hello(); } 33

Παραδείγματα (iv) PROGRAM Hello6 IMPLICIT NONE INTEGER:: i DO i=1,20 END DO CALL hello END SUBROUTINE hello IMPLICIT NONE WRITE(*,*) 'hello world' END 34

Παραδείγματα (σε γλώσσα C) (iv) #include <stdio.h> void hello() { printf("hello world\n"); } void main() { int i; for (i=0; i<20; i++) hello(); } 35

Παραδείγματα (v) PROGRAM Hello7 IMPLICIT NONE INTEGER:: i=1 INTEGER, PARAMETER:: n=21 DO WHILE (i<n) CALL hello(i) i=i+1 END DO END SUBROUTINE hello(j) IMPLICIT NONE INTEGER:: j WRITE(*,*) j, ' hello world' END 36

Παραδείγματα (σε γλώσσα C) (v) #include <stdio.h> const int n=20; int i; void num_hello() { printf("%d hello world\n", i); } void main() { for (i=0; i<n; i++) num_hello(); } 37

Παραδείγματα (vi) PROGRAM Hello8 IMPLICIT NONE INTEGER:: i,n WRITE(*,*) 'Give number of greetings ',& 'then press <enter>:' READ(*,*) n DO i=1,n CALL hello(i) END DO END SUBROUTINE hello(j) IMPLICIT NONE INTEGER:: j WRITE(*,*)j,'hello world' END 38

Παραδείγματα (σε γλώσσα C) (vi) #include <stdio.h> void hello() { printf("hello world\n") } void main() { } int i,n; printf("give number of greetings" "then press <enter>:"); scanf("%d\n", n); for (i=0; i<n; i++) hello(); 39

Παραδείγματα (vii) PROGRAM Hello9 IMPLICIT NONE INTEGER:: i,n WRITE(*,*) 'Give number of greetings ',& 'then press <enter>:' READ(*,*) n DO i=1,n,2 CALL hello(i) END DO END SUBROUTINE hello(j) IMPLICIT NONE INTEGER:: j WRITE(*,*)j,'hello world' END 40

Παραδείγματα (σε γλώσσα C) (vii) #include <stdio.h> void hello() { printf("hello world\n") } void main() { } int i,n; printf("give number of greetings" "then press <enter>:"); scanf("%d\n", &n); for (i=0; i<n; i++) hello(); 41

Παραδείγματα (viii) PROGRAM Hello10 IMPLICIT NONE INTEGER:: i,n WRITE(*,*) 'Give number of greetings ', & 'then press <enter>:' READ(*,*) n IF (n<0) THEN WRITE(*,*) 'O n είναι αρνητικός' ELSE DO i = 1,n,1 CALL hello END DO END IF END SUBROUTINE hello IMPLICIT NONE WRITE(*,*)'hello world' END 42

Παραδείγματα (σε γλώσσα C) #include <stdio.h> void hello() { printf("hello world\n"); } void main() { int i,n; printf("give number of greetings" "then press <enter>"); scanf("%d\n",&n); if (n<0) printf("#is negative\n"); else for (i=0;i<n;i++) hello(); } (viii) 43

Πώς θα τρέξετε τα προγράμματα Εγκαταστήστε μια έκδοση Linux (π.χ. Ubuntu) Ανοίξτε ένα τερματικό (τρέχοντας π.χ. xterm) Εγκαταστήστε την GNU Fortran με την εντολή > sudo apt-get install gfortran Δημιουργήστε ένα αρχείο για κάθε πρόγραμμα, χρησιμοποιώντας έναν κειμενογράφο (π.χ. gedit) Το αρχείο σας να έχει κατάληξη.f95 (π.χ. prog1.f95) Δώστε την εντολή > gfortan prog1.f95 -o prog1 Το εκτελέσιμο αρχείο που θα δημιουργηθεί λέγεται prog1 και εκτελείται δίνοντας>./prog1 44