ΜΥΥ105: Εισαγωγή στον Προγραμματισμό

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
ΜΑΘ-3122/106 Προγραμματισμός
Advertisements

Συναρτήσεις Κληση/Επιστροφη Παραμετροι
Τα θέματα μας σήμερα Ηλεκτρονικοί υπολογιστές Υλικό και λογισμικό
Μετατροπή Εκφράσεων σε C
ΗΥ-220 Verilog HDL. Τα βασικά.... ΗΥ-220 – Ιάκωβος Μαυροειδής2 Βασική Ροή Σχεδίασης Requirements SimulateRTL Model Gate-level Model Synthesize SimulateTest.
Κεφάλαιο 3: Το υλικό των Υπολογιστών
Net Book Advent 10.1’’ Intel Atom N GHz 1024MB RAM DDR2 HDD 120GB Camera + Mic On Board Wireless + Bluetooth Windows XP Home Greek Εγγύηση 1 Έτους.
Ιστορία Ηλεκτρονικών Υπολογιστών Η 1 η Γενιά Υπολογιστών O H.Y. ENIAC ENIAC, short for Electronic Numerical Integrator And Computer, was the.
ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Κ.ΑΛΑΦΟΔΗΜΟΣ καθηγητής Δ.Παπαχρήστος μέλος ΕΔΙΠ ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΠΑΝΕΠΙΣΤΗΜΙΟ Α ΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ.
Η Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ) Ο ρόλος της ΚΜΕ είναι τόσο σημαντικός, που καθορίζει πώς πρέπει να είναι οργανωμένο όλο το άλλο υλικό που συνδέεται.
Αρχιτεκτονική Υπολογιστών Ενότητα # 4: I/O Διδάσκων: Γεώργιος Κ. Πολύζος Τμήμα: Πληροφορικής.
O ρόλος του γονιού στην Ψυχοκινητική Ανάπτυξη του παιδιού. Κάτια Σοφιανού Παιδίατρος –Aναπτυξιολογος 2015.
ΕΙΣΑΓΩΓΉ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΉ ΝΊΚΟΣ ΠΑΠΑΔΆΚΗΣ Αρχιτεκτονική Υπολογιστών.
Αρχιτεκτονική Υπολογιστών Ενότητα # 5: DEMO Διδάσκων: Γεώργιος Κ. Πολύζος Τμήμα: Πληροφορικής.
Διαφάνειες διδασκαλίας του πρωτότυπου βιβλίου μεταφρασμένες στα ελληνικά (μετάφραση, επιμέλεια: Δημήτρης Γκιζόπουλος, Πανεπιστήμιο Αθηνών) Οργάνωση και.
Εισαγωγή στον προγραμματισμό Μέρος 1 ο Ιστορική αναδρομή γλωσσών προγραμματισμού §§ 6.1 – 6.2.
LOGO Προγραμματισμός Η/Υ β’ εξάμηνο – εργαστήριο ΚΑΛΟΓΙΑΝΝΗΣ ΓΡΗΓΟΡΙΟΣ Ηλεκτρολόγος Μηχανικός και Μηχανικός Υπολογιστών Α.Π.Θ. Msc Τηλεπικοινωνίες Πολυτεχνική.
Β2.Μ6 Άλλες Περιφερειακές Συσκευές και Κάρτες Επέκτασης Σαββίδου Στέλλα.
Πληροφορική Ενότητα 2 (Μέρος B): Είδη μνήμης. Δήμητρα Αβραμούλη, Καθηγήτρια Εφαρμογών, Τμήμα Σχεδιασμού και Τεχνολογίας Ξύλου και Επίπλου Τ.Ε., T.E.I.
ΕΝΟΤΗΤΑ 1 – Κεφάλαιο 2: Το εσωτερικό του Υπολογιστή Β΄ τάξη Λέξεις Κλειδιά: Μητρική πλακέτα, κάρτες επέκτασης, κάρτα οθόνης, κάρτα ήχου, τροφοδοτικό, Κεντρική.
ΥΛΙΚΟ ΥΠΟΛΟΓΙΣΤΗ.
Υπολογιστικά συστήματα: Στρώματα
Ελληνογαλλική Σχολή Πειραιά
Δομή προσωπικού υπολογιστή
Αρχές Πληροφορικής Ενότητα # 5: Περιφερειακές συσκευές
ΜΥΥ105: Εισαγωγή στον Προγραμματισμό
ΜΙΚΡΟΕΛΕΓΚΤΕΣ-ΜΙΚΡΟΕΠΕΞΕΡΓΑΣΤΕΣ
ΕΙΣΑΓΩΓΙΚΕΣ ΕΝΟΙΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ
Διδάσκων: Δρ. Τσίντζα Παναγιώτα
Αντικειμενοστραφής Προγραμματισμός ΙΙ
Ενότητα 5 : Οργάνωση Υλικού Υπολογιστών Δρ. Γκόγκος Χρήστος
Εισαγωγή στους Η/Υ Ενότητα 7: Η οργάνωση ενός Η/Υ Ιωάννης Σταματίου
Τ.Ε.Ι. Κρήτης Τμ. Μηχανικών Πληροφορικής Αρχιτεκτονική Υπολογιστών
Εισαγωγή στο Περιβάλλον της Visual Basic
Παιδαγωγικό Τμήμα Νηπιαγωγών
Πληροφοριακά συστήματα διοίκησης
Το εσωτερικό του υπολογιστή
Αρχές Πληροφορικής Ενότητα # 4: Δομή ενός υπολογιστικού συστήματος
ΜΥΥ105: Εισαγωγή στον Προγραμματισμό
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ Β΄ ΠΛΗΡΟΦΟΡΙΚΗΣ
Συγγράμματα Γκιμπερίτης Βαγγέλης
Εξέλιξη Υπολογιστικών Συστημάτων
Ενότητα Εισαγωγή Είναι εύκολη στη χρήση και στην εκμάθηση.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Alt Ctrl Delete. Λειτουργικά Συστήματα και Ασφάλεια Πληροφοριακών Συστημάτων ΔΙΕΡΓΑΣΙΕΣ και ΕΙΚΟΝΙΚΗ ΜΝΗΜΗ.
ΤΕΧΝΙΚΑ ΘΕΜΑΤΑ ΠΩΛΗΣΕΩΝ & ΠΡΟΔΙΑΓΡΑΦΕΣ ΥΛΙΚΟΥ ΚΑΙ ΛΟΓΙΣΜΙΚΟΥ Β΄ ΕΠΑΛ ΚεφΑλαιο 2: ΠροδιαγραφΕΣ ΥλικοΥ Η/Υ 2.11 Σκληρός Δίσκος.
Κεντρική Μονάδα Επεξεργασίας
ΠΕΡΙΒΑΛΛΟΝΤΑ ΑΝΑΠΤΥΞΗΣ ΕΦΑΡΜΟΓΩΝ
ΕΣΩΤΕΡΙΚΟ ΚΕΝΤΡΙΚΗΣ ΜΟΝΑΔΑΣ
Εικόνα 2.1: Η Κεντρική Μονάδα.
ΜΥΥ105: Εισαγωγή στον Προγραμματισμό
Ειδικά Θέματα στον προγραμματισμό Υπολογιστών
Λειτουργία Κεντρικής Μονάδας Επεξεργασίας
ΟΛΟΚΛΗΡΩΜΕΝΑ ΚΥΚΛΩΜΑΤΑ ΜΝΗΜΗΣ
Εφαρμογές Πληροφορικής
Εικόνα 2.1: Η Κεντρική Μονάδα.
εισαγωγή στην έννοια του Αλγόριθμου & Προγραμματισμού
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ Ι
Ειδικά Θέματα στον Προγραμματισμό Υπολογιστών
Μνήμη τυχαίας προσπέλασης
Κεφάλαιο 2ο - Το Υλικό του Υπολογιστή
Τα θέματα μας σήμερα Ηλεκτρονικοί υπολογιστές Υλικό και λογισμικό
Βασικές έννοιες (Μάθημα 2) Τίτλος: Η Συσκευή
Υλικό - Λογισμικό Υλικό (Hardware) Λογισμικό (Software)
ΜΥΥ105: Εισαγωγή στον Προγραμματισμό
Ενότητα Γ2.4α (Σύγκριση και επιλογή υπολογιστικού συστήματος)
Υλικό/ Αρχιτεκτονική Η/Υ
Διάλεξη #10: Εκτέλεση Java χωρίς το BlueJ
Μεταγράφημα παρουσίασης:

ΜΥΥ105: Εισαγωγή στον Προγραμματισμό

Τι θα μάθουμε; Υπολογιστής; Πρόγραμμα; Γλώσσες Προγραμματισμού Έλεγχος και Εκσφαλμάτωση Σχεδιασμός Προγράμματος Ποια είναι τα βασικά μέρη του υπολογιστή; Πως εκτελείται ένα πρόγραμμα;

Βασικές Έννοιες Ο υπολογιστής μέσα στο κινητό σας Ο υπολογιστής μέσα στην ψηφιακή μηχανή σας Ο υπολογιστής μέσα στην κονσόλα παιχνιδιών σας «Υπολογιστής» δεν είναι μόνο ο προσωπικός σας υπολογιστής (PC), μπορεί να είναι: iPhone 5 Galaxy S4 Panasonic Lumix GF CANNON EOS 600D Play station 3 XBOX 360 and Kinect Ερώτηση: Ποια είναι τα κοινά μέρη αυτών των «υπολογιστών»;

Υλικό Τα φυσικά («χειροπιαστά») μέρη τα οποία συνθέτουν έναν υπολογιστή.

Υλικό Τα φυσικά («χειροπιαστά») μέρη τα οποία συνθέτουν έναν υπολογιστή. 1. Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ) Central Processing Unit (CPU) Tο «μυαλό» του υπολογιστή Εκτελεί απλές εργασίες όπως Πρόσθεση, αφαίρεση, πολλαπλασιασμός, διαίρεση Μετακίνηση δεδομένων από μία θέση μνήμης στην άλλη quad-core i7 CPU Ερώτηση: Ξέρεις πως μετράμε την ταχύτητα ενός επεξεργαστή;

Υλικό Τα φυσικά («χειροπιαστά») μέρη τα οποία συνθέτουν έναν υπολογιστή. 1. Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ) Central Processing Unit (CPU) Tο «μυαλό» του υπολογιστή Εκτελεί απλές εργασίες όπως Πρόσθεση, αφαίρεση, πολλαπλασιασμός, διαίρεση Μετακίνηση δεδομένων από μία θέση μνήμης στην άλλη quad-core i7 CPU Ερώτηση: Ξέρεις πως μετράμε την ταχύτητα ενός επεξεργαστή; Απάντηση: Ο ρυθμός-ρολογιού του επεξεργαστή μετράει πόσους κύκλους κάνει το δευτερόλεπτο. Σε ένα κύκλο μπορεί να κάνει μια βασική πράξη. 100MHz = 100 Million cycles per second, 1GHz = 1 Billion cycles per second.

Υλικό 2. Κύρια Μνήμη (RAM) Τα φυσικά («χειροπιαστά») μέρη τα οποία συνθέτουν έναν υπολογιστή. 2. Κύρια Μνήμη (RAM) A DDR3 RAM Main Memory Μια μακριά λίστα από κελλιά μνήμης Address 1 Address 2 Κάθε κελλί έχει μια διεύθυνση (έναν αριθμό) που προσδιορίζει τη θέση του. Address 3 … 1 Κάθε κελλί μνήμης έχει 8 δυαδικά ψηφία (1 byte). … Ερώτηση: Ποιο είναι ένα τυπικό μέγεθος RAM σήμερα; Προσωρινή – τα δεδομένα στη μνήμη χάνονται (σβήνονται) με το κλείσιμο του υπολογιστή

Υλικό 2. Κύρια Μνήμη (RAM) Τα φυσικά («χειροπιαστά») μέρη τα οποία συνθέτουν έναν υπολογιστή. 2. Κύρια Μνήμη (RAM) A DDR3 RAM Main Memory Μια μακριά λίστα από κελλιά μνήμης Address 1 Address 2 Κάθε κελλί έχει μια διεύθυνση (έναν αριθμό) που προσδιορίζει τη θέση του. Address 3 … 1 Κάθε κελλί μνήμης έχει 8 δυαδικά ψηφία (1 byte). … Ερώτηση: Ποιο είναι ένα τυπικό μέγεθος RAM σήμερα; Προσωρινή – τα δεδομένα στη μνήμη χάνονται (σβήνονται) με το κλείσιμο του υπολογιστή Απάντηση: 8GB DDR3 RAM, έχοντας 8,589,934,592 κελλιά μνήμης!

Υλικό 3. Δευτερεύουσα Μνήμη Τα φυσικά («χειροπιαστά») μέρη τα οποία συνθέτουν έναν υπολογιστή. 3. Δευτερεύουσα Μνήμη A 3.5” Hard Disk Μόνιμη – η πληροφορία δεν χάνεται με το κλείσιμο του υπολογιστή. Για μόνιμη αποθήκευση πληροφορίας σε αρχεία. Π.χ., σκληρός δίσκος, DVD/CD, flash memory Flash hard drive External Hard Disk USB flash drive DVD/CD ROMs

Υλικό Τα φυσικά («χειροπιαστά») μέρη τα οποία συνθέτουν έναν υπολογιστή. 4. Περιφερειακά Συσκευές επικοινωνίας μεταξύ χρήστη και υπολογιστή. Συσκευές εισόδου Συσκευές εξόδου

Υλικό Επεξεργαστής (CPU) Συσκευές εισόδου γρήγορα Συσκευές εξόδου αργά Συσκευές εισόδου γρήγορα Συσκευές εξόδου Κύρια Μνήμη http://en.wikipedia.org/wiki/IPhone#Model_comparison http://en.wikipedia.org/wiki/IPad#Technical_specifications αργά Δευτερεύουσα Μνήμη Ερώτηση: Πέραν του προσωπικού υπολογιστή, μπορείς να ξεχωρήσεις αυτά τα μέρη σε ένα κινητό ή tablet ή κονσόλα;

Υλικό Επεξεργαστής (CPU) Συσκευές εισόδου γρήγορα Συσκευές εξόδου αργά Ipad 4 1.4 GHz dual-core Apple A6X 1024 MB  16, 32, or 64, 128 GB Touch screen, camera, mic…etc 9.7 inches retina display, touch screen iPhone5 A6 Dual core 1GB 16, 32 or 64 GB Touch screen, camera, mic…etc  4 inches retina display, touch screen Επεξεργαστής (CPU) Xbox360 Kinect Συσκευές εισόδου 3.2 GHz PowerPC Tri-Core Xenon Processor γρήγορα Main memory 512 MB  Secondary memory Συσκευές εξόδου Up to 320 GB Κύρια Μνήμη http://en.wikipedia.org/wiki/IPhone#Model_comparison http://en.wikipedia.org/wiki/IPad#Technical_specifications Controller / Kinect (motion sensing) …etc Input device(s) Output device(s) Video output, Audio output, Controller αργά Δευτερεύουσα Μνήμη Ερώτηση: Πέραν του προσωπικού υπολογιστή, μπορείς να ξεχωρήσεις αυτά τα μέρη σε ένα κινητό ή tablet ή κονσόλα;

Πρόγραμμα Τι είναι ένα πρόγραμμα Επεξεργαστής (CPU) Τι είναι ένα πρόγραμμα Συσκευές εισόδου Μία ακολουθία εντολών που σκοπό έχουν την εκτέλεση μιας συγκεκριμένης εργασίας στον υπολογιστή. γρήγορα Συσκευές εξόδου Κύρια Μνήμη http://en.wikipedia.org/wiki/IPhone#Model_comparison http://en.wikipedia.org/wiki/IPad#Technical_specifications αργά Δευτερεύουσα Μνήμη

Πρόγραμμα Όταν ένα πρόγραμμα εκτελείται Επεξεργαστής (CPU) Όταν ένα πρόγραμμα εκτελείται 1) Το πρόγραμμα φορτώνεται στην κύρια μνήμη. Συσκευές εισόδου γρήγορα Συσκευές εξόδου Κύρια Μνήμη Compute 2+3=? http://en.wikipedia.org/wiki/IPhone#Model_comparison http://en.wikipedia.org/wiki/IPad#Technical_specifications αργά Δευτερεύουσα Μνήμη Compute 2+3=?

Πρόγραμμα Όταν ένα πρόγραμμα εκτελείται Επεξεργαστής (CPU) Όταν ένα πρόγραμμα εκτελείται 1) Το πρόγραμμα φορτώνεται στην κύρια μνήμη. Συσκευές εισόδου Compute 2+3=5 2) Ο επεξεργαστής διαβάζει και εκτελεί τις εντολές, καθώς και τα δεδομένα από τη μνήμη. γρήγορα Συσκευές εξόδου Κύρια Μνήμη Compute 2+3=? http://en.wikipedia.org/wiki/IPhone#Model_comparison http://en.wikipedia.org/wiki/IPad#Technical_specifications αργά Δευτερεύουσα Μνήμη Compute 2+3=?

Πρόγραμμα Όταν ένα πρόγραμμα εκτελείται Επεξεργαστής (CPU) Όταν ένα πρόγραμμα εκτελείται 1) Το πρόγραμμα φορτώνεται στην κύρια μνήμη. Συσκευές εισόδου Compute 2+3=5 2) Ο επεξεργαστής διαβάζει και εκτελεί τις εντολές, καθώς και τα δεδομένα από τη μνήμη. γρήγορα Συσκευές εξόδου Κύρια Μνήμη 3) Η έξοδος του προγράμματος μπορεί να γραφτεί στην κύρια μνήμη, στη δευτερεύουσα μνήμη ή σε συσκευή εξόδου. Compute 2+3=? http://en.wikipedia.org/wiki/IPhone#Model_comparison http://en.wikipedia.org/wiki/IPad#Technical_specifications αργά Δευτερεύουσα Μνήμη Compute 2+3=?

Πρόγραμμα Μία κοντινή ματιά στον επεξεργαστή Επεξεργαστής (CPU) ]\ Επεξεργαστής (CPU) Μία κοντινή ματιά στον επεξεργαστή Μονάδα Ελέγχου (ΜΕ) – Εξάγει τις εντολές από τη μνήμη, τις αποκωδικοποιεί και τις εκτελέι. ΜΕ Συσκευές εισόδου γρήγορα Συσκευές εξόδου Κύρια Μνήμη αργά Δευτερεύουσα Μνήμη

Πρόγραμμα Μία κοντινή ματιά στον επεξεργαστή Processer CPU Processer CPU Επεξεργαστής (CPU) Καταχωρητές (Registers) – Αποθηκεύουν τις εντολές/δεδομένα που εξάχθηκαν από τη μνήμη για γρήγορη επεξεργασία. Καταχωρητές Μονάδα Ελέγχου (ΜΕ) – Εξάγει τις εντολές από τη μνήμη, τις αποκωδικοποιεί και τις εκτελεί. ΜΕ Συσκευές εισόδου γρήγορα Συσκευές εξόδου Κύρια Μνήμη αργά Δευτερεύουσα Μνήμη

Πρόγραμμα Μία κοντινή ματιά στον επεξεργαστή Επεξεργαστής (CPU) Processer CPU Επεξεργαστής (CPU) Καταχωρητές (Registers) – Αποθηκεύουν τις εντολές/δεδομένα που εξάχθηκαν από τη μνήμη για γρήγορη επεξεργασία. Καταχωρητές ΑΛΜ Μονάδα Ελέγχου (ΜΕ) – Εξάγει τις εντολές από τη μνήμη, τις αποκωδικοποιεί και τις εκτελεί. ΜΕ Συσκευές εισόδου γρήγορα Συσκευές εξόδου Main memory Κύρια Μνήμη Αριθμητική Λογική Μονάδα (ΑΛΜ) – Εκτελεί απλές αριθμητικές/λογικές πράξεις (AND/OR). Compute 2+3=? Ερώτηση: Η ΚΜΕ επεξεργάζεται δεδομένα και εντολές εκφρασμένες με «0» και «1». Πώς μπορεί να εκτελέσει ένα πρόγραμμα από μια γλώσσα προγραμματισμου; αργά Δευτερεύουσα Μνήμη

Πρόγραμμα Μία κοντινή ματιά στον επεξεργαστή Επεξεργαστής (CPU) Επεξεργαστής (CPU) Μία κοντινή ματιά στον επεξεργαστή Καταχωρητές (Registers) – Αποθηκεύουν τις εντολές/δεδομένα που εξάχθηκαν από τη μνήμη για γρήγορη επεξεργασία. Καταχωρητές ΑΛΜ Μονάδα Ελέγχου (ΜΕ) – Εξάγει τις εντολές από τη μνήμη, τις αποκωδικοποιεί και τις εκτελεί. ΜΕ Συσκευές εισόδου γρήγορα 001100100100100101010110 Συσκευές εξόδου Main memory Κύρια Μνήμη Αριθμητική Λογική Μονάδα (ΑΛΜ) – Εκτελεί απλές αριθμητικές/λογικές πράξεις (AND/OR). Compute 2+3=? Ερώτηση: Η ΚΜΕ επεξεργάζεται δεδομένα και εντολές εκφρασμένες με «0» και «1», πώς μπορεί να εκτελέσει ένα πρόγραμμα από μια γλώσσα προγραμματισμου; αργά Δευτερεύουσα Μνήμη Απάντηση: Ένα μεταφραστικό εργαλείο μετατρέπει το πρόγραμμα στη γλώσσα μηχανής (“0” και “1”) της ΚΜΕ.

? Γλώσσες Προγραμματισμού Γλώσσα Μηχανής Ο επεξεργαστής καταλαβαίνει μόνο γλώσσα μηχανής. Γλώσσα Μηχανής Συγκεκριμένες εντολές σε γλώσσα μηχανής εκτελούνται απευθείας στην κεντρική μονάδα επεξεργασίας. ? Γλώσσα μηχανής Ανθρώπινη γλώσσα Γράψε μου ένα πρόγραμμα που να υπολογίζει το άθροισμα 2 αριθμών. 0111000100001111 1001110110110001 1110000100111110

Γλώσσες Προγραμματισμού Γλώσσα χαμηλού επιπέδου ορισμένη από τον κατασκευαστή του επεξεργαστή. Γλώσσα Assembly Είναι διατυπωμένη σε δυαδική γλώσσα μηχανής για να εκτελεστεί από την ΚΜΕ. Γλώσσα μηχανής Γλώσσα Assembly LOAD A ADD B STORE C Ανθρώπινη γλώσσα Γράψε μου ένα πρόγραμμα που να υπολογίζει το άθροισμα 2 αριθμών. 0111000100001111 1001110110110001 1110000100111110

Γλώσσες Προγραμματισμού Θυμίζουν ανθρώπινη γλώσσα. Γλώσσες προγραμματισμού υψηλού επιπέδου Προγράμματα σε αυτές τις γλώσσες πρέπει να μεταφραστούν σε κώδικα μηχανής για να εκτελεστούν από την ΚΜΕ. Έχουν πιο περίπλοκες εντολές από αυτές της Assembly. Python C C++ Pascal COBOL Γλώσσα μηχανής Γλώσσα Assembly LOAD A ADD B STORE C Γλώσσα Προγραμματισμού # Python code C = A+B Ανθρώπινη γλώσσα Γράψε μου ένα πρόγραμμα που να υπολογίζει το άθροισμα 2 αριθμών. 0111000100001111 1001110110110001 1110000100111110

Λογισμικό Τα προγράμματα που χρησιμοποιούνται ευρέως σε ένα υπολογιστικό σύστημα Λογισμικό σχετικό με τον προγραμματισμό: Λειτουργικό Σύστημα Κέλυφος Επεξεργαστής κειμένου Μεταφραστής ή Διερμηνέας Περιβάλλον Ανάπτυξης Λογισμικού

Λειτουργικό Σύστημα Χρήστης Εφαρμογές Δρα ως διαχειριστής. Ελέγχει και δεσμεύει τους υπολογιστικούς πόρους (π.χ., διάβασμα δεδομένων από το δίσκο, εκτέλεση προγραμμάτων). Λειτουργικό Σύστημα Παρέχει γραφικό περιβάλλον στους χρήστες για την εύκολη περάτωση εργασιών (π.χ., εκτύπωση, δικτύωση, διαχείριση αρχείων) Υλικό Mavericks

Κέλυφος - Command Prompt Το κέλυφος (shell) ή το περιβάλλον γραμμής διαταγών (command prompt) επιτρέπει στους χρήστες να επικοινωνούν με το λειτουργικό, εισάγοντας εντολές. Στα Windows, το command prompt ενεργοποιείται πληκτρολογώντας “cmd” στη γραμμή εκκίνησης.

Επεξεργαστής κειμένου Χρησιμοποιείται για να γράφουμε και να αλλάζουμε τον πηγαίο κώδικα ενός προγράμματος. Μπορεί να αναγνωρίσει και να χρωματίσει τα μέρη του προγράμματος. Δημοφιλείς επεξεργαστές κειμένου emacs vi pico UltraEdit Crimson TextWrangler Notepad++ Επεξεργαστής Κειμένου width = int(input("Width: ")) length = int(input("Length: ")) area = width*length print("Area: ", area) Πηγαίος κώδικας (area.py)

Μεταγλωττιστής Οι επεξεργαστές καταλαβαίνουν μόνο προγράμματα σε γλώσσα χαμηλού επιπέδου (απλές εντολές), που μπορεί να διαφέρουν ανάλογα τον υπολογιστή. Ο μεταγλωττιστής (compiler) είναι ένα πρόγραμμα που μεταφράζει αυτόματα πηγαίο κώδικα υψηλού επιπέδου (π.χ. C++) σε γλώσσα μηχανής, ώστε ο υπολογιστής να μπορεί να τον εκτελέσει. Επεξεργαστής Κειμένου #include <iostream> … int main ( ) { int width = 5; int height = 10; int area = width * height; cout << “Area is “ << area; return 0; } Δυαδικός Κώδικας (Γλώσσα Μηχανής) (π.χ. area.o) Compiler Πηγαίος κώδικας (area.cpp)

Μεταγλωττιστής Το αποτέλεσμα της μεταγλώττισης πολλές φορές δεν είναι το βέλτιστο αφου η διαδικασία είναι μηχανιστική. Είναι όμως εντυπωσιακά καλό και πολλές φορές καλύτερο από τον κώδικα μηχανής που θα έγραφε ένας προγραμματιστής. Επεξεργαστής Κειμένου #include <iostream> … int main ( ) { int width = 5; int height = 10; int area = width * height; cout << “Area is “ << area; return 0; } Απευθείας προγραμματισμός σε γλώσ-σα μηχανής είναι εξαιρετικά δύσκολος. Δυαδικός Κώδικας (Γλώσσα Μηχανής) (π.χ. area.o) Compiler Πηγαίος κώδικας (area.cpp)

Συνδετής Ένα πρόγραμμα μπορεί να χρησιμοποιεί κομμάτια κώδικα (βιβλιοθήκες) που έχουν γραφτεί από άλλους (π.χ. μαθ. συναρτήσεις) Ο συνδετής (linker) είναι ένα πρόγραμμα που συνδέει ένα ή περισσότερα αρχεία (μεταγλωττισμένου) μηχανικού κώδικα σε ένα εκτελέσιμο πρόγραμμα Επεξεργαστής Κειμένου #include <iostream> … int main ( ) { int width = 5; int height = 10; int area = width * height; cout << “Area is “ << area; return 0; } Linker Εκτελέσιμο (π.χ. area.exe) Library (π.χ. iostream.o) Δυαδικός Κώδικας (Γλώσσα Μηχανής) (π.χ. area.o) Compiler Πηγαίος κώδικας (area.cpp)

Διερμηνέας Κάποιες γλώσσες προγραμματισμού (π.χ. Python) δεν έχουν μεταγλωττιστή, αλλά διερμηνέα (interpreter). Ο διερμηνέας μεταφράζει και εκτελεί ένα πρόγραμμα, εντολή προς εντολή Επεξεργαστής Κειμένου Πλεονέκτημα: γρηγορότερη παραγωγή και έλεγχος πηγαίου κώδικα Μειονέκτημα: το τελικό πρόγραμμα είναι συνήθως πιο αργό width = int(input("Width: ")) length = int(input("Length: ")) area = width*length print("Area: ", area) Πηγαίος κώδικας (area.py) Interpreter width = int(input("Width: ")) μεταγλώττιση και εκτέλεση

Πηγαίος κώδικας (area.cpp) Ολοκληρωμένο Περιβάλλον Ανάπτυξης Λογισμικού Ένα Ολοκληρωμένο Περιβάλλον Ανάπτυξης Λογισμικού (Integrated Development Environment - IDE) ενοποιεί τα βήματα ανάπτυξης ενός προγράμ- ματος (επεξεργασία κειμένου, μετα- γλώττιση, εκσφαλμάτωση) IDE Editor Π.χ., IDLE (Python), Eclipse #include <iostream> … int main ( ) { int width = 5; int height = 10; int area = width * height; cout << “Area is “ << area; return 0; } Linker Εκτελέσιμο Library (π.χ. area.exe) Library Library Object code (Machine language ) Compiler (πχ. iostream.o) (π.χ. area.o) Πηγαίος κώδικας (area.cpp)

Παράδειγμα προγράμματος Python σχόλιο συνάρτηση αρχικοποίησης ακεραίου # sample Python program # computes the area of a rectangle width = int(input("Width: ")) length = int(input("Length: ")) area = width*length print("Area: ", area) area.py συνάρτηση εισόδου από το χρήστη μεταβλητή/ αντικείμενο αλφαριθμητική σταθερά συνάρτηση εξόδου στην οθόνη

Έλεγχος και Εκσφαλμάτωση Το σφάλμα σε ένα πρόγραμμα λέγεται bug (ζωύφιο). Ένα πρόγραμμα που γράφουμε είναι πιο πιθανό να έχει bugs από το να μην έχει. Η κυριότερη αιτία ενός bug είναι η απροσεξία του προγραμματιστή. Ακόμα και ο πιο έμπειρος προγραμματιστής κάνει σφάλματα Κατ’ αναλογία, ακόμα κι ο πιο έμπειρος συντάκτης κάνει γραμματικά και συντακτικά λάθη.

Τύποι Σφαλμάτων Συντακτικά λάθη (syntax errors) Λάθη κατά την εκτέλεση (run-time errors) Λογικά σφάλματα

Πηγαίος κώδικας (area.py) Συντακτικά λάθη Εντοπίζονται από το μεταγλωττιστή/διερμηνέα ή τον συντακτικό αναλυτή (parser) Διορθώνονται εύκολα width = int(input("Width: ")) length = int(input("Length: ")) area = width*legth print("Area: ", area) Πηγαίος κώδικας (area.py) Interpreter Traceback (most recent call last): File "area.py", line 3, in <module> area = width*legth NameError: name 'legth' is not defined

Πηγαίος κώδικας (area2.py) Λάθη κατά την εκτέλεση Συμβαίνουν κατά την εκτέλεση του προγράμματος και όχι πάντα. Τυπικό σφάλμα: διαίρεση με το 0 area = int(input("Area: ")) length = int(input("Length: ")) width = area/length print("Width: ", width) Πηγαίος κώδικας (area2.py) Interpreter Area: 10 Length: 0 Traceback (most recent call last): File "area2.py", line 3, in <module> width = area/length ZeroDivisionError: division by zero

Πηγαίος κώδικας (area.py) Λογικά σφάλματα Λογικά λάθη στο πρόγραμμα: το πρόγραμμα δεν κάνει την επιθυμητή λειτουργία ή παράγει λάθος αποτελέσματα Ο πονοκέφαλος του προγραμματιστή: συνήθως είναι δύσκολο να βρεθούν width = int(input("Width: ")) length = int(input("Length: ")) area = width+length print("Area: ", area) Πηγαίος κώδικας (area.py) Interpreter Width: 5 Length: 2 Area: 7

Ανάπτυξη Προγράμματος Βήμα 1: Σχεδιασμός Κατανόηση των απαιτήσεων (τι θέλουμε να κάνουμε;) Αναγνώριση της εισόδου και της επιθυμητής εξόδου του προγράμματος Σχεδιασμός ενός αλγορίθμου που λύνει το πρόβλημα Βήμα 2: Υλοποίηση Μετατροπή του αλγορίθμου στη γλώσσα προγραμματισμού Μεταγλώττιση/Διερμηνεία για εντοπιστό τυχόν συντακτικών λαθών Εκτέλεση του προγράμματος δίνοντας ως είσοδο δεδομένα με τα οποία μπορούμε να ελεγξουμε τυχόν σφάλματα κατα την εκτέλεση και λογικά λάθη

Παράδειγμα Προδιαγραφές προβλήματος: Μία κατασκευαστική εταιρία παρέχει μια υπηρεσία δόμησης σκάλας με λίθινες ράβδους για τους πελάτες της. Υποθέστε ότι κάθε ράβδος έχει 30 εκ. ύψος και το κόστος μιας ράβδου είναι 10€. Ζητείται ένα πρόγραμμα που να υπολογίσει το κόστος κατασκευής μιας σκάλας ύψους χ εκ. 30 30€ 60€ 10€ 60 90 κόστος ύψος

Παράδειγμα Προδιαγραφές προβλήματος: Μία κατασκευαστική εταιρία παρέχει μια υπηρεσία δόμησης σκάλας με λίθινες ράβδους για τους πελάτες της. Υποθέστε ότι κάθε ράβδος έχει 30 εκ. ύψος και το κόστος μιας ράβδου είναι 10€. Ζητείται ένα πρόγραμμα που να υπολογίσει το κόστος κατασκευής μιας σκάλας ύψους χ εκ. Ερώτηση: Ποια είναι η είσοδος και η έξοδος του προγράμματος μας; Απάντηση: 1) Ο χρήστης θα ορίσει το επιθυμητό ύψος χ της σκάλας 2) Το κόστος κάθε ράβδου είναι 10€ 3) Το ύψος κάθε ράβδου είναι 30 εκ. 4) Ζητούμενο (έξοδος) είναι το κόστος μιας σκάλας χ εκατοστών. 30 30€ 60€ 10€ 60 90 κόστος ύψος

Παράδειγμα Προδιαγραφές προβλήματος: Μία κατασκευαστική εταιρία παρέχει μια υπηρεσία δόμησης σκάλας με λίθινες ράβδους για τους πελάτες της. Υποθέστε ότι κάθε ράβδος έχει 30 εκ. ύψος και το κόστος μιας ράβδου είναι 10€. Ζητείται ένα πρόγραμμα που να υπολογίσει το κόστος κατασκευής μιας σκάλας ύψους χ εκ. Τώρα, σχεδίασε έναν αλγόριθμο που να λύνει το πρόβλημά μας! ΙΔΕΑ : 1) Διαιρώ το χ με 30 για να πάρω το ύψος υ της σκάλας σε ράβδους 2) Χρειάζομαι 1+2+...+ υ ράβδους! 3) Το κόστος είναι (1+2+...+ υ)*10! 30 30€ 60€ 10€ 60 90 κόστος ύψος

Παράδειγμα Προδιαγραφές προβλήματος: Μία κατασκευαστική εταιρία παρέχει μια υπηρεσία δόμησης σκάλας με λίθινες ράβδους για τους πελάτες της. Υποθέστε ότι κάθε ράβδος έχει 30 εκ. ύψος και το κόστος μιας ράβδου είναι 10€. Ζητείται ένα πρόγραμμα που να υπολογίσει το κόστος κατασκευής μιας σκάλας ύψους χ εκ. Τώρα, γράψε το πρόγραμμα! x = int(input("Required height (in cm): ")) import math u = math.ceil(x/30) numrods = 0 for i in range(1,u+1): numrods = numrods+i cost = numrods*10 print("The cost is: ", cost) 30 30€ 60€ 10€ 60 90 κόστος ύψος

Παράδειγμα ✔ Προδιαγραφές προβλήματος: Μία κατασκευαστική εταιρία παρέχει μια υπηρεσία δόμησης σκάλας με λίθινες ράβδους για τους πελάτες της. Υποθέστε ότι κάθε ράβδος έχει 30 εκ. ύψος και το κόστος μιας ράβδου είναι 10€. Ζητείται ένα πρόγραμμα που να υπολογίσει το κόστος κατασκευής μιας σκάλας ύψους χ εκ. Μπορούμε να κάνουμε το πρόγραμμα πιο γρήγορο; x = int(input("Required height (in cm): ")) import math u = math.ceil(x/30) numrods = int((u*(u+1))/2) cost = numrods*10 print("The cost is: ", cost) 30 30€ 60€ 10€ 60 90 κόστος ύψος ✔

Ένα καλό πρόγραμμα Είναι οπωσδήποτε σωστό! Είναι γρήγορο Είναι καλογραμμένο και εύκολο να επαναχρησιμοποιηθεί και να αλλαχθεί

Πρότυπα Προγραμματισμού Διαδικαστικός (Δομημένος) Προγραμματισμός Πρόγραμμα σε μεταβλητές, δομές, συναρτήσεις Pascal, C Αντικειμενοστρεφής Προγραμματισμός Πρόγραμμα βασισμένο σε αντικείμενα C++, Java, Python Συναρτησιακός Προγραμματισμός Πρόγραμμα σαν μαθηματικές συναρτήσεις Lisp, Haskel, Erlang, Scala Λογικός Προγραμματισμός Prolog

Φιλοσοφία του Μαθήματος Εκμάθηση βασικών αρχών και φιλοσοφίας του προγραμματισμού με την Python Έμφαση στα βασικά στοιχεία της Python που είναι κοινά και σε άλλες γλώσσες (π.χ. C, Java) Ομαλή μετάβαση στο μάθημα «Τεχνικές Αντικειμενοστρεφούς Προγραμματισμού» του εαρινού εξαμήνου

Γιατί Python; Εξαιρετικά δημοφιλής γλώσσα Εύκολη και γρήγορη ανάπτυξη εφαρμογών Υπάρχει διαθέσιμος μεγάλος όγκος ελεύθερου λογισμικού (προγράμματα και βιβλιοθήκες) Χρησιμοποιείται και στην ανάπτυξη εμπορικών εφαρμογών Μαθαίνοντάς την, μαθαίνουμε στοιχεία διαδικαστικού και αντικειμενοστρεφούς προγραμματισμού