Εισαγωγή στον Προγραµµατισµό. Χειµερινό Εξάµηνο 2014

Σχετικά έγγραφα
Α. Ερωτήσεις Ανάπτυξης

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

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

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

ΗΛΕΚΤΡΟΝΙΚΟΙ ΥΠΟΛΟΓΙΣΤΕΣ

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

Στοιχεία από την αρχιτεκτονική των μικροϋπολογιστών

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

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

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

ΗΜΥ 100 Εισαγωγή στην Τεχνολογία ιάλεξη 5

ΜΥΥ105: Εισαγωγή στον Προγραµµατισµό. Εισαγωγή στην Python Χειµερινό Εξάµηνο 2014

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

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

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

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

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

Ενότητα 4. Εισαγωγή στην Πληροφορική. Αναπαράσταση δεδοµένων. Αναπαράσταση πληροφορίας. υαδικοί αριθµοί. Χειµερινό Εξάµηνο

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα

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

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

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

Είναι το «μυαλό» του υπολογιστή μας. Αυτός κάνει όλους τους υπολογισμούς και τις πράξεις. Έχει δική του ενσωματωμένη μνήμη, τη λεγόμενη κρυφή

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

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

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

Αρχιτεκτονική Eckert-von Neumann. Πως λειτουργεί η ΚΜΕ; Κεντρική μονάδα επεξεργασίας [3] ΕΠΛ 031: ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

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

Βασικές Έννοιες της Πληροφορικής

ΠΛΗ10 Κεφάλαιο 2. ΠΛΗ10 Εισαγωγή στην Πληροφορική: Τόμος Α Κεφάλαιο: 2 2.1: Bασική Δομή του Υπολογιστή

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

Προγραμματισμός Ι (HY120)

Το υλικό του υπολογιστή

Βασική δοµή και Λειτουργία Υπολογιστή

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

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

ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Α Γενικού Λυκείου (Μάθημα Επιλογής)

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

ΜΥΥ105: Εισαγωγή στον Προγραμματισμό. Εισαγωγή στην Python Χειμερινό Εξάμηνο 2016

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

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

Κεφάλαιο Το υπολογιστικό σύστημα Η εξέλιξη του ανθρώπου πραγματοποιήθηκε χάρη στην ικανότητά στον χειρισμό εργαλείων.

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

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

ΗΜΥ 100 Εισαγωγή στην Τεχνολογία ιάλεξη 9

ΜΥΥ105: Εισαγωγή στον Προγραµµατισµό. Εισαγωγή Χειµερινό Εξάµηνο 2014

ΘΕΜΑΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ

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

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

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

ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων

Γλώσσα προγραμματισμού python

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

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι ΕΡΓΑΣΤΗΡΙΟ 1. Θέμα εργαστηρίου: Εισαγωγή στην Python και στο IDLE

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

ΗΜΥ 100 Εισαγωγή στην Τεχνολογία ιάλεξη 9

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

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

Δεδομένα & Αναπαράσταση Πληροφορίας

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

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

Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ. «Φέτα» ημιαγωγών (wafer) από τη διαδικασία παραγωγής ΚΜΕ

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

Βασίλειος Κοντογιάννης ΠΕ19

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

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

Τμήμα Λογιστικής. Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. Μάθημα 8. 1 Στέργιος Παλαμάς

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

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

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

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

ΚΕΦΑΛΑΙΟ 1. Εισαγωγή στην Python. 1.1 Εισαγωγή

Σκοπός. Αλγεβρικοί και Λογικοί Υπολογισμοί στη PASCAL

Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ»

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

TEI Ιονίων Νήσων Τμήμα Τεχνολογίας Τροφίμων Πληροφορική Σημειώσεις Τεύχος 3. Μάκης Σταματελάτος

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών

Μάθημα 3: Αρχιτεκτονική Υπολογιστών

Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

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

Εισαγωγή στο περιβάλλον Code::Blocks

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

Η γλώσσα προγραμματισμού C

Χωρική Βάση δεδοµένων Autocad

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

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

Πώς να επιλέξετε το σωστό Υπολογιστή

Κεφάλαιο 4 ο. Ο Προσωπικός Υπολογιστής

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

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

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

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου)

Transcript:

ΜΥΥ105: Εισαγωγή στον Προγραµµατισµό Εισαγωγή στον Προγραµµατισµό Χειµερινό Εξάµηνο 2014

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

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

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

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

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

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

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

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

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

Υλικό Επεξεργαστής (CPU) Συσκευές εισόδου γρήγορα Κύρια Μνήµη Συσκευές εξόδου αργά Δευτερεύουσα Μνήµη Ερώτηση: Πέραν του προσωπικού υπολογιστή, µπορείς να ξεχωρήσεις αυτά τα µέρη σε ένα κινητό ή tablet ή κονσόλα; 11

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

Πρόγραµµα Επεξεργαστής (CPU) γρήγορα Συσκευές εισόδου Τι είναι ένα πρόγραµµα Μία ακολουθία εντολών που σκοπό έχουν την εκτέλεση µιας συγκεκριµένης εργασίας στον υπολογιστή. Κύρια Μνήµη Συσκευές εξόδου αργά Δευτερεύουσα Μνήµη Compute 2+3=? 13

Πρόγραµµα Επεξεργαστής (CPU) Συσκευές εισόδου Όταν ένα πρόγραµµα εκτελείται 1) Το πρόγραµµα φορτώνεται στην κύρια µνήµη. γρήγορα Κύρια Μνήµη Compute 2+3=? Συσκευές εξόδου αργά Δευτερεύουσα Μνήµη Compute 2+3=? 14

Πρόγραµµα Επεξεργαστής (CPU) Compute 2+3=5 Κύρια Μνήµη Compute 2+3=? γρήγορα Συσκευές εισόδου Συσκευές εξόδου Όταν ένα πρόγραµµα εκτελείται 1) Το πρόγραµµα φορτώνεται στην κύρια µνήµη. 2) Ο επεξεργαστής διαβάζει και εκτελεί τις εντολές, καθώς και τα δεδοµένα από τη µνήµη. αργά Δευτερεύουσα Μνήµη Compute 2+3=? 15

Πρόγραµµα Επεξεργαστής (CPU) Compute 2+3=5 Κύρια Μνήµη Compute 2+3=? γρήγορα αργά Συσκευές εισόδου Συσκευές εξόδου Όταν ένα πρόγραµµα εκτελείται 1) Το πρόγραµµα φορτώνεται στην κύρια µνήµη. 2) Ο επεξεργαστής διαβάζει και εκτελεί τις εντολές, καθώς και τα δεδοµένα από τη µνήµη. 3) Η έξοδος του προγράµµατος µπορεί να γραφτεί στην κύρια µνήµη, στη δευτερεύουσα µνήµη ή σε συσκευή εξόδου. Δευτερεύουσα Μνήµη Compute 2+3=? 16

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Παράδειγµα προγράµµατος 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 συνάρτηση αρχικοποίησης ακεραίου συνάρτηση εισόδου από το χρήστη αλφαριθµητική σταθερά 33

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

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

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

Λάθη κατά την εκτέλεση Συµβαίνουν κατά την εκτέλεση του προγράµµατος και όχι πάντα. Τυπικό σφάλµα: διαίρεση µε το 0 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 = int(input("area: ")) length = int(input("length: ")) width = area/length print("width: ", width) Πηγαίος κώδικας (area2.py) 37

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

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

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

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

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

Παράδειγµα Προδιαγραφές προβλήµατος: Μία κατασκευαστική εταιρία παρέχει µια υπηρεσία δόµησης σκάλας µε λίθινες ράβδους για τους πελάτες της. Υποθέστε ότι κάθε ράβδος έχει 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 10 60 90 20 30 43

Παράδειγµα Προδιαγραφές προβλήµατος: Μία κατασκευαστική εταιρία παρέχει µια υπηρεσία δόµησης σκάλας µε λίθινες ράβδους για τους πελάτες της. Υποθέστε ότι κάθε ράβδος έχει 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 10 60 90 20 30 44

Ένα καλό πρόγραµµα Είναι οπωσδήποτε σωστό! Είναι γρήγορο 45

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

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

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

Ευχαριστίες Ευχαριστώ τους συναδέλφους Γ. Μάνη και Λ. Κοντή, καθώς και τον Chui Chun Kit ( 崔俊傑, http://i.cs.hku.hk/~ckchui/) για υλικό τους που χρησιµοποιήθηκε σε αυτές τις διαφάνειες 49