Εισαγωγή στον Προγ/μό Υπολογιστών Διαλέξεις 1-2 Διδάσκων: Μιχάλης Τίτσιας.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Βασικές έννοιες αλγορίθμων
Advertisements

Τι είναι ο προγραμματισμός
Επιμέλεια: Τίκβα Χριστίνα
7.3.8 Μεταφραστές Ελληνογαλλική Σχολή Καλαμαρί - Τίκβα Χριστίνα.
Η ΙΣΤΟΡΙΑ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ
Τι είναι ο υπολογιστής; Τι είναι ο προγραμματισμός
Διαδικασία ανάπτυξης Προσδιορισμός απαιτήσεων Αρχιτεκτονικός Σχεδιασμός Λεπτομερής Σχεδιασμός Κωδικοποίηση Έλεγχος Παράδοση Συστήματος Λειτουργία - Συντήρηση.
ΝΕΟ ΑΝΑΛΥΤΙΚΟ ΠΡΟΓΡΑΜΜΑ Γ’ ΓΥΜΝΑΣΙΟΥ
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
ΜΑΘ-3122/106 Προγραμματισμός
 Αυδίκου Χριστίνα  Γιουμούκης Παναγιώτης  Κιντσάκης Θάνος  Πάπιστας Γιάννης.
Εισαγωγή στην επιστήμη των υπολογιστών
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΗ
Εισαγωγικές Έννοιες Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
Εισαγωγή στον Προγραμματισμό (στη γλώσσα Java)
ΗΥ 150 – ΠρογραμματισμόςΞενοφών Ζαμ π ούλης ΗΥ-150 Προγραμματισμός Αλγόριθμοι και Προγράμματα.
ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ
ΕΙΣΑΓΩΓΗ ΜΑΘΗΜΑ 1.
Η ΓΛΩΣΣΑ C ΜΑΘΗΜΑ 2.
Ίδιες αρχές λειτουργίας
Κεφ.1 Εισαγωγη στην εννοια του Αλγοριθμου και στον Προγραμματισμο
Εισαγωγή στις αρχές της Επιστήμης των Η/Υ
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
Κεφάλαιο 6 -Περιβάλλοντα Ανάπτυξης Εφαρμογών
Κεφάλαιο 6: Εισαγωγή στον προγραμματισμό Φυσικές και τεχνητές γλώσσες.
Η επιστήμη του Web.
Για τη διεκπεραίωση ενός προβλήματος πρέπει να ακολουθηθεί η εξής διαδικασία:  να γραφεί ο αλγόριθμος να συνταχθεί το πρόγραμμα σε γλώσσα υψηλού επιπέδου.
1.5 Γλώσσες Προγραμματισμού
1 Εισαγωγή στη Java Χρήσιμες Διευθύνσεις Χαρακτηριστικά της Java Εργαλεία της Java Εργαλεία της Java Μεταγλώττιση στοιχειωδών εφαρμογών.
Επικοινωνία Ανθρώπου Μηχανής HTML CGI JAVASCRIPT Κουμπούλης Χρήστος Α.Μ. 921 Χαλαβαζής Βασίλης Α.Μ. 988.
Διδακτική της Πληροφορικής ΗΥ302 Εργασία :Παρουσίαση σχολικού βιβλίου Γ’ Λυκείου Τεχνολογικής Κατεύθυνσης «Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον»
ΛΑΔΑΚΑΚΟΣ ΘΑΛΗΣ Α.Μ ΔΙΑΧΕΙΡΗΣΗ ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Εαρινό Εξάμηνο
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ. ΥΠΟΛΟΓΙΣΤΗΣ Μηχανή που μπορεί να φέρει σε πέρας πνευματικές εργασίες ρουτίνας με μεγάλη ταχύτητα.
ΚΕΦΑΛΑΙΟ Τι είναι αλγόριθμος
Η ΙΣΤΟΡΙΑ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ
Εισαγωγή στην Επιστήμη των Υπολογιστών και Επικοινωνιών Γενικά για το μάθημα Σπύρος Κοκολάκης ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΑΚΩΝ.
ΗΥ 150 – ΠρογραμματισμόςΞενοφών Ζαμ π ούλης ΗΥ -150 Προγραμματισμός Αλγόριθμοι και Προγράμματα.
Εφαρμογές Πολυμέσων: Εισαγωγή στην HTML (1)
Εισαγωγή στην Έννοια του Αλγορίθμου και στον Προγραμματισμό
Εισαγωγή στην Επιστήμη των Υπολογιστών και Επικοινωνιών Γενικά για το μάθημα Σπύρος Κοκολάκης ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΑΚΩΝ.
Γνωριμία με το Λογισμικό του υπολογιστή Μια παρουσίαση για τους μαθητές της Α΄ Τάξης του 49ου Γυμνασίου Αθήνας Διδάσκων: Χ. Μοτσενίγος 49ο Γυμνάσιο Αθήνας.
Φυσική Ι Μια πρώτη εισαγωγή. Περίγραμμα  Εισαγωγή  Στόχος  Διδασκαλία  Σχέδιο Μαθήματος  Αξιολόγηση  Βιβλιογραφία.
LOGO Προγραμματισμός Η/Υ β’ εξάμηνο – εργαστήριο ΚΑΛΟΓΙΑΝΝΗΣ ΓΡΗΓΟΡΙΟΣ Ηλεκτρολόγος Μηχανικός και Μηχανικός Υπολογιστών Α.Π.Θ. Msc Τηλεπικοινωνίες Πολυτεχνική.
ΚΑΤΑΝΟΩ ΤΙΣ ΜΕΤΑΒΛΗΤΕΣ ΜΕ ΤΗ ΒΟΗΘΕΙΑ ΤΟΥ SCRATCH Χρήστος Μανώλης, Πληροφορικός ΠΕ 19 ΘΕΣΣΑΛΟΝΙΚΗ / ΑΥΓΟΥΣΤΟΣ 2015 Ομάδα ανάπτυξης 6 ο εσπερινό ΕΠΑΛ Θεσσαλονίκης.
Πληροφορική 2 Γλώσσες Προγραμματισμού 1. Γλώσσες προγραμματσιμού  Επιτρέπουν την κωδικοποίηση των αλγορίθμων  Η εκτέλεση ενός προγράμματος θα πρέπει.
Εισαγωγή στου Η/Υ Ενότητα 3: Η εξέλιξη των υπολογιστικών μηχανών του Η/Υ Ιωάννης Σταματίου Οργάνωση και Διοίκηση Επιχειρήσεων.
ΥΠΟΛΟΓΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ ΓΙΑ ΣΥΣΤΗΜΑΤΑ ΜΕΤΑΔΟΣΗΣ ΠΛΗΡΟΦΟΡΙΑΣ Αντικειμενοστραφής προγραμματισμός Web Site: ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ.
ΕΦΑΡΜΟΓΕΣ ΥΠΟΛΟΓΙΣΤΩΝ
Εργασία στο μάθημα «Προγραμματισμός ΙΙ»
Ενισχυτική διδασκαλία
ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ ΠΡΙΝ ΑΠΟ ΤΟ ΜΟΝΤΕΛΟ VON NEUMANN
Εισαγωγή στις Αρχές της Επιστήμης των Η/Υ
Εισαγωγή στον Προγ/μό Υπολογιστών
Αντικειμενοστραφής Προγραμματισμός ΙΙ
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ
Εισαγωγή στη Java Χαρακτηριστικά της Java Εργαλεία της Java
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΠΕΡΙΒΑΛΛΟΝΤΑ Ανάπτυξη Εφαρμογών για Φορητές Συσκευές
2ο ΓΥΜΝΑΣΙΟ ΣΗΤΕΙΑΣ - ΤΑΞΗ Γ'
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ Η/Υ
Β.ΕΠΑΛ-Γενικής Παιδείας  ΜΑΘΗΜΑ: Εισαγωγή στης αρχές Επιστήμης των Η/Υ  ΚΕΦΑΛΑΙΟ 4: Γλώσσες Αναπαράστασης Αλγορίθμων  ΕΝΟΤΗΤΑ 4.2: Δομή Ακολουθίας 
ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΥΠΟΔΕΙΓΜΑΤΑ  Προγραμματιστικό Υπόδειγμα: Είναι ένα πρότυπο ανάπτυξης προγραμμάτων, δηλ. μια καθορισμένη μεθοδολογία με βάση την οποία.
2Ο ΓΕΛ ΙΛΙΟΥ ΕΡΕΥΝΗΤΙΚΗ ΕΡΓΑΣΙΑ Β’ ΛΥΚΕΙΟΥ
ΠΛΗΡΟΦΟΡΙΚΗ Γ΄ Γυμνασίου Α΄ Τρίμηνο
Γ' ΤΑΞΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
Εισαγωγή στον Προγραμματισμό (στη γλώσσα Java)
Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό (στη γλώσσα Java)
Μεταγράφημα παρουσίασης:

Εισαγωγή στον Προγ/μό Υπολογιστών Διαλέξεις 1-2 Διδάσκων: Μιχάλης Τίτσιας

Εισαγωγική διάλεξη 1.7 Μια σύντομη επισκόπηση της ιστορίας των υπολογιστών 1.1 Τι είναι η πληροφορική; 1.2 Μια σύντομη περιήγηση του υλικού του υπολογιστή 1.3 Αλγόριθμοι 1.4 Τα στάδια του προγραμματισμού 1.5 Η Java και το αντικειμενοστραφές μοντέλο 1.6 Η Java και το World Wide Web 1.0 Βασικές πληροφορίες για το μάθημα

Διδάσκοντες Μιχάλης Τίτσιας – Γραφείο: Κορδιγκτώνος 12, 5 ος όροφος – Ώρες γραφείου: Τρίτη 2-3μμ, Τετάρτη 2-3μμ Χρήστος Καλέργης Κωστής Καρόζος Νάντια Μακρυνιώτη Μαρία Τογαντζή Δημήτρης Τομαράς

Επικοινωνία !!!Εγγραφείτε στο μάθημα στο eclass ( – Πληροφορίες, ανακοινώσεις – Διαφάνειες διαλέξεων – Εκφώνηση & παράδοση ασκήσεων – Βοηθητικό υλικό (π.χ., Java) – Ερωτηματολόγιο Απορίες; 1.Ρωτάτε στο forum του μαθήματος (στο eclass) 2.Ελάτε στις ώρες γραφείου

Διαλέξεις Δυο εβδομαδιαίες διαλέξεις Τρίτη 11: :00 Τετάρτη 11: :00 Δεν γίνονται φροντιστήρια σε αυτό το μάθημα (αγνοήστε την ώρα φροντιστηρίου που εμφανίζεται στο πρόγραμμα στην κεντρική σελίδα του aueb!!)

Εργαστήρια 8 εργαστηριακά τμήματα 6 τμήματα Πρωτοετών (Πέμπτη και Παρασκευή) 2 τμήματα για μεγαλύτερα έτη (Δευτέρα και Τρίτη) Δείτε το eclass. Γραφτείτε ΑΜΕΣΑ στα εργαστήρια!!

Τρόπος βαθμολόγησης Αν είστε πρωτοετείς: 3 σειρές προγραμματιστικών ασκήσεων Α = βαθμός ασκήσεων (άριστα =10) Ε = βαθμός εργαστηρίου (άριστα =10) Δ = βαθμός τελικής εξέτασης (άριστα=10) Τελικός βαθμός Τ= 0,6Δ + 0,2Α+0,2Ε, εάν Δ>=5 = Δ, εάν Δ<5 Προβιβάσιμος βαθμός: T>= βάση = 5

Τρόπος βαθμολόγησης Αν δεν είστε πρωτοετείς: Οι 3 σειρές προγραμματιστικών ασκήσεων είναι για σας προαιρετικές Αν επιλέξετε να παραδώσετε εργασίες τότε βαθμολογείστε όπως και οι πρωτοετείς (δες προηγούμενη διαφάνεια) Διαφορετικά βάσει Ε = βαθμός εργαστηρίου (άριστα =10) Δ = βαθμός τελικής εξέτασης (άριστα=10) Τελικός βαθμός Τ= 0,8Δ + 0,2Ε, εάν Δ>=5 = Δ, εάν Δ<5 Προβιβάσιμος βαθμός: T>= βάση = 5

Συγγράμματα 1.«Η Τέχνη και Επιστήμη της JAVA: Μια εισαγωγή στην Επιστήμη των Υπολογιστών», E. Roberts, «Πλήρες Εγχειρίδιο της Java 6», C. Rogers, L. Laura, «Προγραμματισμός με JAVA», Ι. Κάβουρας, Α. Ρουκουνάκη, κωδικός στον εύδοξο: «Εισαγωγή στη JAVA», Γ. Λιακέας, 13681

Πληροφορική Το κύριο αντικείμενο της Πληροφορικής δεν είναι η μελέτη των Η/Υ

Πληροφορική Το κύριο αντικείμενο της Πληροφορικής δεν είναι η μελέτη των Η/Υ Είναι η μελέτη της επίλυσης προβλημάτων των οποίων οι λύσεις τυχαίνει να χρησιμοποιούν υπολογιστές. Π.χ., αλφαβητική ταξινόμηση ονομάτων Η Πληροφορική βασίζεται σε μια σειρά από διανοητικές ικανότητες που περιλαμβάνει πτυχές των μαθηματικών και άλλων κλασικών θετικών επιστημών. # ονομάτωνταχύτηταΌχι έξυπνος τρόπος Λίγο πιο έξυπνος τρόπος 10χωρίς Η/Υ≈ 42 μέρες≈ 1,7 λεπτά 100Η/Υ (PC)≈ 3· αιώνες≈ 100 nanosec

Η παρουσία της πληροφορικής Υπολογιστικά προβλήματα: πρόβλεψη καιρού, δρομολόγηση τρένων, ταυτοποίηση γονιδίων στο DNA, κρυπτογραφία, εύρεση διαδρομών Η πληροφορική διαδραματίζει όλο και πιο σημαντικό ρόλο και σε άλλους κλάδους: –Βιολογία. Κατέστησε δυνατή η χαρτογράφηση του ανθρώπινου γονιδιώματος. –Οικονομία. Επιτρέπει τη δημιουργία καλύτερων οικονομικών μοντέλων. –Ψυχολογία. Η τεχνητή νοημοσύνη μας βοηθά να κατανοήσουμε τον ανθρώπινο εγκέφαλο. –Περιβάλλον. Τα κλιματικά μοντέλα απαιτούν σύγχρονη τεχνολογία των υπολογιστών. –και στους περισσότερους αλλους τομεις...

Αρχιτεκτονική Η/Υ Γλώσσα μηχανής = Εντολές CPU: – ανάγνωση/εγγραφή θέση μνήμης – αριθμητικές πράξεις – Επιλογή θέσης μνήμης επόμενης εντολής CPU (κεντρική μονάδα επεξεργασίας) μνήμη συσκευές εισόδου/εξόδου δίκτυο δίαυλος (σχήμα του Eric Roberts (Stanford)) δευτερεύουσα μνήμη

Αλγόριθμοι Ένα μεγάλο μέρος της Επιστήμης των Υπολογιστών περιλαμβάνει τη μελέτη των αλγορίθμων. Με απλά λόγια, μπορείτε να σκεφτείτε έναν αλγόριθμο απλά ως μια διαδικασία για την επίλυση ενός προβλήματος. Για την κάλυψη ενός πιο επίσημου ορισμού του, ένας αλγόριθμος πρέπει να είναι: –Σαφώς και επακριβώς καθορισμένος. –Αποτελεσματικός, υπό την έννοια ότι τα βήματα του είναι εκτελέσιμα. –Πεπερασμένος, με την έννοια ότι τερματίζει μετά από ένα πεπερασμένο αριθμό βημάτων.

Ταξινόμηση τράπουλας Δεδομένα = μη ταξινομημένη τράπουλα αταξινόμητη στοίβα

Ταξινόμηση τράπουλας Δεδομένα = μη ταξινομημένη τράπουλα ταξινομημένη στοίβααταξινόμητη στοίβα ?

Ταξινόμηση τράπουλας Δεδομένα = μη ταξινομημένη τράπουλα 1.Επιλογή πάνω φύλλου από τη μη ταξινομημένη στοίβα ταξινομημένη στοίβααταξινόμητη στοίβα

Ταξινόμηση τράπουλας Δεδομένα = μη ταξινομημένη τράπουλα 1.Επιλογή πάνω φύλλου από τη μη ταξινομημένη στοίβα 2.Εισαγωγή στην ταξινομημένη στοιβα με τη σωστή σειρά ταξινομημένη στοίβααταξινόμητη στοίβα

Ταξινόμηση τράπουλας Δεδομένα = μη ταξινομημένη τράπουλα 1.Επιλογή πάνω φύλλου από τη μη ταξινομημένη στοίβα 2.Εισαγωγή στην ταξινομημένη στοιβα με τη σωστή σειρά 3.Επανάληψη των 1,2 μέχρι να μη μείνουν αταξινόμητα φύλλα ταξινομημένη στοίβααταξινόμητη στοίβα

Ταξινόμηση τράπουλας Δεδομένα = μη ταξινομημένη τράπουλα 1.Επιλογή πάνω φύλλου από τη μη ταξινομημένη στοίβα 2.Εισαγωγή στην ταξινομημένη στοιβα με τη σωστή σειρά 3.Επανάληψη των 1,2 μέχρι να μη μείνουν αταξινόμητα φύλλα ταξινομημένη στοίβααταξινόμητη στοίβα

Ταξινόμηση τράπουλας Δεδομένα = μη ταξινομημένη τράπουλα 1.Επιλογή πάνω φύλλου από τη μη ταξινομημένη στοίβα 2.Εισαγωγή στην ταξινομημένη στοιβα με τη σωστή σειρά 3.Επανάληψη των 1,2 μέχρι να μη μείνουν αταξινόμητα φύλλα ταξινομημένη στοίβααταξινόμητη στοίβα

Ταξινόμηση τράπουλας Δεδομένα = μη ταξινομημένη τράπουλα 1.Επιλογή πάνω φύλλου από τη μη ταξινομημένη στοίβα 2.Εισαγωγή στην ταξινομημένη στοιβα με τη σωστή σειρά 3.Επανάληψη των 1,2 μέχρι να μη μείνουν αταξινόμητα φύλλα ταξινομημένη στοίβααταξινόμητη στοίβα

Ταξινόμηση τράπουλας Δεδομένα = μη ταξινομημένη τράπουλα 1.Επιλογή πάνω φύλλου από τη μη ταξινομημένη στοίβα 2.Εισαγωγή στην ταξινομημένη στοιβα με τη σωστή σειρά 3.Επανάληψη των 1,2 μέχρι να μη μείνουν αταξινόμητα φύλλα ταξινομημένη στοίβααταξινόμητη στοίβα

Ταξινόμηση τράπουλας Δεδομένα = μη ταξινομημένη τράπουλα 1.Επιλογή πάνω φύλλου από τη μη ταξινομημένη στοίβα 2.Εισαγωγή στην ταξινομημένη στοιβα με τη σωστή σειρά 3.Επανάληψη των 1,2 μέχρι να μη μείνουν αταξινόμητα φύλλα ταξινομημένη στοίβααταξινόμητη στοίβα

Ταξινόμηση τράπουλας Δεδομένα = μη ταξινομημένη τράπουλα 1.Επιλογή πάνω φύλλου από τη μη ταξινομημένη στοίβα 2.Εισαγωγή στην ταξινομημένη στοιβα με τη σωστή σειρά 3.Επανάληψη των 1,2 μέχρι να μη μείνουν αταξινόμητα φύλλα ταξινομημένη στοίβααταξινόμητη στοίβα

Ταξινόμηση τράπουλας Δεδομένα = μη ταξινομημένη τράπουλα 1.Επιλογή πάνω φύλλου από τη μη ταξινομημένη στοίβα 2.Εισαγωγή στην ταξινομημένη στοιβα με τη σωστή σειρά 3.Επανάληψη των 1,2 μέχρι να μη μείνουν αταξινόμητα φύλλα ταξινομημένη στοίβααταξινόμητη στοίβα

Ταξινόμηση τράπουλας Δεδομένα = μη ταξινομημένη τράπουλα 1.Επιλογή πάνω φύλλου από τη μη ταξινομημένη στοίβα 2.Εισαγωγή στην ταξινομημένη στοιβα με τη σωστή σειρά 3.Επανάληψη των 1,2 μέχρι να μη μείνουν αταξινόμητα φύλλα Τέλος! Η τράπουλα ταξινομήθηκε. ταξινομημένη στοίβα

Ταξινόμηση τράπουλας Δεδομένα = μη ταξινομημένη τράπουλα 1.Επιλογή πάνω φύλλου από τη μη ταξινομημένη στοίβα 2.Εισαγωγή στην ταξινομημένη στοιβα με τη σωστή σειρά 3.Επανάληψη των 1,2 μέχρι να μη μείνουν αταξινόμητα φύλλα Mέθοδος λύσης = αλγόριθμος ταξινομημένη στοίβα

Προγραμματισμός Υπολογιστών Υλοποίηση αλγορίθμου = προγραμματισμός Απαιτείται η χρήση γλώσσας προγραμματισμού Π.χ., στη γλώσσα Java: void sort(int[] A) { for(int i = 1; i = 0 && A[j] > value) { A[j + 1] = A[j]; j = j - 1; } A[j + 1] = value; } }

Προγραμματισμός Υπολογιστών Π.χ., στη γλώσσα C ή C++: void sort(int A[], int length) { for(int i = 1; i = 0 && A[j] > value) { A[j + 1] = A[j]; j = j - 1; } A[j + 1] = value; } }

Προγραμματισμός Υπολογιστών Π.χ., στη γλώσσα Scheme: (define (sort sent) (if (empty? sent) ‘() (insert (first sent) (sort (bf sent)) ))) (define (insert num sent) (cond ((empty? sent) (se num)) ((< num (first sent)) (se num sent)) (else (se (first sent) (insert num (bf sent)))) ))

Τα στάδια του προγραμματισμού Κάθε σύστημα υπολογιστή καταλαβαίνει μια χαμηλού επιπέδου γλώσσα που είναι συγκεκριμένη για το είδος του υλικού, αυτή ονομάζεται γλώσσα μηχανής. Οι προγραμματιστές γράφουν συνήθως τα προγράμματά τους σε μία γλώσσα υψηλότερου επίπεδου, που είναι πιο εύκολο για τους ανθρώπους να κατανοήσουν. Η εγγραφή ενός προγράμματος σημαίνει την δημιουργία ενός αρχείου πηγαίου κώδικα (source file) που είναι ουσιαστικά «κείμενο» που ακολουθεί του κανόνες του συντακτικού της γλώσσας προγραμματισμού. Για να εκτελεστούν προγράμματα γραμμένα σε μια γλώσσα υψηλότερου επίπεδου, ο υπολογιστής πρέπει να υιοθετήσει μία από δύο στρατηγικές: –Compilation (μεταγλώττιση): Η κλασική αυτή προσέγγιση μεταφράζει το σύνολο του πηγαίου κώδικα της υψηλότερου επιπέδου γλώσσας σε γλώσσα μηχανής. Η διαδικασία αυτή δημιουργεί ένα μοναδικό εκτελέσιμο αρχείο (executable file). –Interpretation (διερμηνεία): Αυτή η δεύτερη προσέγγιση δεν δημιουργεί ένα εκτελέσιμο αρχείο, αλλά προσομοιώσει κατά κάποιο τρόπο την διαδικασία του προγράμματος, διαβάζοντας την δομή του και εκτελώντας τις αναγκαίες λειτουργίες καθώς προχωρά.

Τα στάδια του προγραμματισμού Για να εκτελεστούν προγράμματα γραμμένα σε μια γλώσσα υψηλότερου επίπεδου, ο υπολογιστής πρέπει να υιοθετήσει μία από δύο στρατηγικές: –Compilation (μεταγλώττιση): Η κλασική αυτή προσέγγιση μεταφράζει το σύνολο του πηγαίου κώδικα της υψηλότερου επιπέδου γλώσσα σε γλώσσα μηχανής. Η διαδικασία αυτή δημιουργεί ένα μοναδικό εκτελέσιμο αρχείο (executable file). –Interpretation (διερμηνεία): Αυτή η δεύτερη προσέγγιση δεν δημιουργεί ένα εκτελέσιμο αρχείο, αλλά προσομοιώσει κατά κάποιο τρόπο την διαδικασία του προγράμματος, διαβάζοντας την δομή του και εκτελώντας τις αναγκαίες λειτουργίες καθώς προχωρά. Η Java χρησιμοποιεί μια υβριδική στρατηγική: –Τα προγράμματα γίνονται compiled σε ενδιάμεση γλώσσα που χρησιμεύει ως η γλώσσα μηχανής για την Java Virtual Machine (JVM). –Μετά η Java ερμηνεύει τα προγράμματα, προσομοιώνοντας το JVM.

Προγραμματισμός Υπολογιστών void sort(int[] A) { for(int i = 1; i < A.length; i++) { int value = A[i]; int j = i - 1; while(j >= 0 && A[j] > value) { A[j + 1] = A[j]; j = j - 1; } A[j + 1] = value; } }

Προγραμματισμός Υπολογιστών Οι Η/Υ δεν «καταλαβαίνουν» καμμία γλώσσα προγραμματισμού εκτός τη γλώσσα μηχανής. = εντολές «χαμηλού επιπέδου» της CPU void sort(int[] A) { for(int i = 1; i < A.length; i++) { int value = A[i]; int j = i - 1; while(j >= 0 && A[j] > value) { A[j + 1] = A[j]; j = j - 1; } A[j + 1] = value; } } ? x

Προγραμματισμός Υπολογιστών void sort(int A[], int length) { for(int i = 1; i < length; i++) { int value = A[i]; int j = i - 1; while(j >= 0 && A[j] > value) { A[j + 1] = A[j]; j = j - 1; } A[j + 1] = value; } } Μεταγλωττιστής C για PC γλώσσα μηχανής PC

Προγραμματισμός Υπολογιστών void sort(int A[], int length) { for(int i = 1; i < length; i++) { int value = A[i]; int j = i - 1; while(j >= 0 && A[j] > value) { A[j + 1] = A[j]; j = j - 1; } A[j + 1] = value; } } Μεταγλωττιστής C για PC γλώσσα μηχανής PC Mac

Προγραμματισμός Υπολογιστών void sort(int A[], int length) { for(int i = 1; i < length; i++) { int value = A[i]; int j = i - 1; while(j >= 0 && A[j] > value) { A[j + 1] = A[j]; j = j - 1; } A[j + 1] = value; } } Μεταγλωττιστής C για PC γλώσσα μηχανής PC Μεταγλωττιστής C για Mac γλώσσα μηχανής Mac Mac

Η διαδικασία της μεταγλώττισης #include main() { printf("hello\n"); } Compiler (μεταγλωττιστής) source file (πηγαίος κώδικας) object file other object files and libraries executable file (εκτελέσιμο αρχείο) linker

Ο διερμηνέας της Java import acm.program.*; public class Hello public void run() { println("hello"); } CA FE BA BE A C B 4C 6A 61 compiler source file class file D 00 1F F A A C C other class files CA FE BA BE A C B 4C 6A D 00 1F F A A C C JAR archive linker JVM Hello hello

Η Java και το αντικειμενοστραφές μοντέλο Οι γλώσσες προγραμματισμού υποστηρίζουν συνήθως ένα συγκεκριμένο στυλ χρήσης, το οποίο ονομάζεται προγραμματιστικό μοντέλο. Παραδοσιακές γλώσσες όπως οι FORTRAN, Pascal και C χρησιμοποιούν το διαδικαστικό (Procedural) μοντέλο, στο οποίο ο προγραμματιστής ορίζει χωριστά τις αλγοριθμικές λειτουργίες και τις δομές δεδομένων. Οι σύγχρονες γλώσσες όπως η Java τείνουν να προκρίνουν το αντικειμενοστραφές μοντέλο όπου δεδομένα και λειτουργίες ενθυλακώνονται σε εννοιολογικά ενιαίες οντότητες που ονομάζονται αντικείμενα. Στην Java, τα προγράμματα γράφονται ως συλλογές τάξεων, οι οποίες χρησιμεύουν ως πρότυπα για μεμονωμένα αντικείμενα. Κάθε αντικείμενο είναι ένα στιγμιότυπο μιας συγκεκριμένης τάξης. Μια τάξη μπορεί να χρησιμεύσει ως πρότυπο για πολλά διαφορετικά αντικείμενα.

Η Java και ο Παγκόσμιος Ιστός Μέρος της επιτυχίας της Java οφείλεται στο γεγονός ότι είναι η πρώτη γλώσσα που έχει σχεδιαστεί ειδικά για να επωφεληθεί από τη δύναμη του World Wide Web, το οποίο εμφανίστηκε λίγο πριν από την κυκλοφορία της Java, το Εκτός από τα παραδοσιακά προγράμματα, η Java δίνει τη δυνατότητα να γράψετε μικρά διαδραστικά προγράμματα που ονομάζονται μικροεφαρμογές (applets) και λειτουργούν υπό τον έλεγχο ενός web browser. Η αρχιτεκτονική του Παγκόσμιου Ιστού έχει εξελιχθεί και οι μικροεφαρμογές δεν έχουν πλέον απήχηση. Θα τις χρησιμοποιήσουμε αποκλειστικά για εκπαιδευτικούς σκοπούς. Τα προγράμματα που θα μάθετε να γράφετε σε αυτό το μάθημα θα λειτουργούν είτε ως εφαρμογές ή ως μικροεφαρμογές, πράγμα που σημαίνει ότι μπορείτε να τα μοιραστείτε εύκολα στο διαδίκτυο.

Τρέχοντας μια μικροεφαρμογή Java Το πρόγραμμα περιήγησης διαβάζει και ερμηνεύει το HTML κώδικα για την ιστοσελίδα. 5. Η εμφάνιση της ετικέτας applet στο HTML αρχείο προκαλεί το πρόγραμμα περιήγησης να κατεβάσει το applet μέσω του δικτύου. 6. Ένα πρόγραμμα επαληθευσης στο πρόγραμμα περιήγησης ελέγχει τη μικροεφαρμογή ωστε να διασφαλίσει ότι δεν παραβιάζει την ασφάλεια του συστήματος του χρήστη. 7. Βήματα που γίνονται από το συντάκτη Ο χρήστης εισάγει τη διεύθυνση URL για τη σελίδα με το applet σε ένα πρόγραμμα περιήγησης στο web. 4. Βήματα που γίνονται από τον Χρήστη Ο συντάκτης της ιστοσελίδας γράφει κώδικα για ένα πρόγραμμα που θα τρέξει σαν applet. 1. /* File: HelloProgram.java */ import acm.graphics.*; import acm.program.*; public class HelloProgram extends GraphicsProgram { public void run() { add(new GLabel("hello, world", 75, 100)); } HelloProgram.java Ο συντάκτης του applet χρησιμοποιεί τον Java compiler για να δημιουργήσει ένα αρχείο που περιέχει το ενδιάμεσο κώδικα για τη μικροεφαρμογή. 2. CA FE BA BE D 00 1F F 07 C A A A 00 5F C C C 72 A C 6A F F 00 FF HelloProgram.jar 3. Ο συντάκτης applet δημοσιεύει μια ιστοσελίδα που περιλαμβάνει μια αναφορά στο compiled applet. HelloProgram <applet archive="HelloProgram.jar" code="HelloProgram.class" width=300 height=150> HelloProgram.html Ο διερμηνέας Java στο πρόγραμμα περιήγησης τρέχει το applet και παράγει την επιθυμητή εμφάνιση στην κονσόλα του χρήστη. 8. HelloProgram hello, world

Μια σύντομη ιστορία των υπολογιστών Αν και οι ηλεκτρονικοί υπολογιστές είναι σχετικά νέοι, οι μηχανικοί υπολογιστές είναι πολύ αρχαιότεροι. Ο άβακας είναι σχεδόν 4000 χρόνων. Τον 17ο αιώνα, αναπτύχθηκαν στην Ευρώπη πολλές μηχανικές συσκευές υπολογιστών. Ανακατασκευή της μηχανής Wilhelm Schickard του 1623 (Deutsches Museum, Munich) Blaise Pascal’s 1641 “Pascaline” machine (Musée des Arts et Metiers, Paris) Ο υπολογιστικός τροχός του Gottfried Wilhelm von Leibniz (~1671) (IBM) Οι σημαντικότερες εννοιολογικές καινοτομίες, όμως, συνέβησαν στις αρχές του 19ου αιώνα...

Η μηχανή του Babbage Charles Babbage ( ) Ο Charles Babbage είναι ένα από τα πιο συναρπαστικά πρόσωπα στην ιστορία των υπολογιστών. Γοητευμένος από την ιδέα ότι θα μπορούσε να φτιάξει μια μηχανή που θα παράγει μαθηματικούς πίνακες, ο Babbage σχεδίασε δύο μηχανές, τη Difference Engine και την Analytical Engine, που προανήγγειλαν πολλά από τα χαρακτηριστικά που συναντάμε στους σύγχρονους υπολογιστές. Αν και ο Babbage δεν μπόρεσε να τελειώσει καμία από τις δυο κατά τη διάρκεια της ζωής του, το Μουσείο Επιστημών του Λονδίνου κατάφερε να κατασκευάσει σε πλήρη κλίμακα μια Difference Engine για την 200η επέτειο από τη γέννησή του.

Ada Byron, ο πρώτος άνθρωπος που προγραμμάτισε Augusta Ada Byron, Lady Lovelace (1815–1852) Η Augusta Ada Byron, κόρη του γνωστού Άγγλου ποιητή Λόρδου Βύρωνα, ενθαρρύνθηκε από την μητέρα της να ασχοληθεί με τα ενδιαφέροντα της, την επιστήμη και τα μαθηματικά, σε μια εποχή που λίγες γυναίκες είχαν τη δυνατότητα να μελετήσουν τέτοια θέματα. Στην ηλικία των 17, η Ada συνάντησε τον Τσαρλς Μπάμπατζ και εντυπωσιάστηκε από της μηχανές του. Η Ada ήταν πεπεισμένη για τις δυνατότητες της Αναλυτικής Μηχανής του Babbage και συνέγραψε εκτενείς σημειώσεις σχετικά με το σχεδιασμό της, καθώς και αρκετά πολύπλοκα μαθηματικά προγράμματα που έχουν οδηγήσει πολλούς ανθρώπους να την χαρακτηρίζουν ως την πρώτη προγραμματίστρια. Το 1980, το Υπουργείο Άμυνας των ΗΠΑ ονόμασε την γλώσσα προγραμματισμού Ada προς τιμή της.

Η Γέννηση του Σύγχρονου Υπολογιστή Η απάντηση στο ερώτημα "ποιος εφηύρε τους σύγχρονους υπολογιστές" δεν είναι εύκολη, λόγω των ανταγωνιστικών αξιώσεων για αυτό το επίτευγμα Το 1939, οι John Atanasoff και Clifford Barry έφτιαξαν έναν πρωτότυπο υπολογιστή στο Iowa State και μια μεγάλη μηχανή το Ο πρώτος μεγάλης κλίμακας υπολογιστής ήταν ο Electronic Numerical Integrator and Computer (ENIAC), που ολοκληρώθηκε το 1946 υπό την καθοδήγηση των J. Presper Eckert και John Mauchly στη Σχολή Moore του Πανεπιστημίου της Pennsylvania. Ο Conrad Zuse στη Γερμανία και η Αγγλική ομάδα κρυπτογραφίας (Bletchley Park) έφτιαξαν επίσης πρώιμους υπολογιστές κατά τον Β‘ Παγκόσμιο Πόλεμο. Άλλες σημαντικές συνεισφορές κατά τα πρώτα έτη περιλαμβάνουν την έννοια του αποθηκευμένου προγράμματος που αποδίδεται γενικά στην John von Neumann και την χρήση κυκλωμάτων μεταγωγής για την δυαδική αριθμητικής απο τον Claude Shannon.

Διάβασμα για το σπίτι Κεφάλαιο 1 από «Η Τέχνη και Επιστήμη της JAVA: Μια εισαγωγή στην Επιστήμη των Υπολογιστών», E. Roberts.