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

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

Φ1α-1 ΦΡΟΝΤΙΣΤΗΡΙΟ 1-α. Φ1α-2 ΤΙ ΕΙΝΑΙ Ο ΥΠΟΛΟΓΙΣΤΗΣ Ο όρος είναι συντομογραφία του όρου «Αυτόματος, Ηλεκτρονικός Ψηφιακός Υπολογιστής Γενικού Σκοπού»

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


Παρουσίαση με θέμα: "Φ1α-1 ΦΡΟΝΤΙΣΤΗΡΙΟ 1-α. Φ1α-2 ΤΙ ΕΙΝΑΙ Ο ΥΠΟΛΟΓΙΣΤΗΣ Ο όρος είναι συντομογραφία του όρου «Αυτόματος, Ηλεκτρονικός Ψηφιακός Υπολογιστής Γενικού Σκοπού»"— Μεταγράφημα παρουσίασης:

1 Φ1α-1 ΦΡΟΝΤΙΣΤΗΡΙΟ 1-α

2 Φ1α-2 ΤΙ ΕΙΝΑΙ Ο ΥΠΟΛΟΓΙΣΤΗΣ Ο όρος είναι συντομογραφία του όρου «Αυτόματος, Ηλεκτρονικός Ψηφιακός Υπολογιστής Γενικού Σκοπού» [1]. Αυτόματος –Μετά την έναρξη της λειτουργίας του εργάζεται μόνος του εκτελώντας μια διαδικασία σειράς εντολών που λέγεται πρόγραμμα. Ηλεκτρονικός –Είναι κατασκευασμένος απο ηλεκτρονικά στοιχεία (κυρίως ολοκληρωμενα κυκλωματα). Ψηφιακός –Επεξεργάζεται διακριτές πληροφορίες που μοντελοποιούνται με τη μορφή δυαδικων ψηφίων. Γενικού σκοπού –Μπορεί να δεχθεί και να εκτελέσει διαφορετικά προγράμματα (σειρές εντολών) και να διεκπεραιωσει πολλές διαφορετικές λειτουργίες. [1] Ηλεκτρονικοί Υπολογιστές, Ν. Αλεξανδρίδη Καθηγητή ΕΜΠ.

3 Φ1α-3 ΤΙ ΔΕΝ ΕΙΝΑΙ Ο ΥΠΟΛΟΓΙΣΤΗΣ Δεν είναι Ηλεκτρονικός Εγκέφαλος. Δεν είναι αριθμομηχανή. Δεν είναι αυτόνομη λογικά σκεπτόμενη μονάδα. Δεν έχει ανεξάρτητη λειτουργία πέρα από το πρόγραμμα πού έχει ορισθεί να εκτελέσει πιστά. Δεν είναι σε θέση να εκτελέσει λειτουργίες οι οποίες δεν έχουν ορισθεί καί μοντελοποιηθεί με ακρίβεια.

4 Φ1α-4 ΟΙ Η/Υ ΜΠΟΡΟΥΝ Να επεξεργασθούν τεράστιους όγκους μοντελοποιημένων δεδομένων (data modelling and data representation). Να εκτελέσουν πιστά επαναληπτικές, πολύπλοκες, και μακρές διαδικασίες (algorithms and processes). Να επιλύσουν παραμετρικά, μοντελοποιημένα προβλήματα με υψηλή απόδοση, και αξιοπιστία (performance – time/space, reliability/robustness).

5 Φ1α-5 ΙΣΤΟΡΙΚΗ ΑΝΑΔΡΟΜΗ Άβακας Ραβδοι του Napier (Λογαριθμικός Κανόνας) – 1600 Αριθμητική Μηχανή του Pascal – 1642 Μηχανοποίηση του Πολ/σμού Leibnitz – 1694 Υφαντουργική Μηχανή με κάρτες Jacquard Διαφορική Μηχανή Babbage – 1822 Αναλυτική Μηχανή (Μνήμη, ελεγχος ροής, αριθμητική υπολογιστική μονάδα, μονάδες εισόδου/εξόδου Parmalee, Webb, Babbage – 1868 Ηλεκτομηχανική μηχανή με διάτρητα δελτία Hollerith – 1891 Πρώτη αυτόματη υπολογιστική μηχανή ΙΒΜ – 1929 Υπολογιστής με Ηλεκτονόμους από την Bell Telephone Labs Ψηφιακός Η/Υ ENIAC – 1946 UNIVAC – 1951 Υπολογιστές με Μαγνητικό Τύμπανο – 1953 Υπολογιστές με δίσκους 1970’s – micro computers Personal Computers 80’s Super Computers 80’s – 90’s Ubiquitous Computing and Devices – 1990 και μετά

6 Φ1α-6 ΟΡΓΑΝΩΣΗ ΚΑΙ ΔΟΜΗ ΤΟΥ Η/Υ Ο Η/Υ είναι μια επαναπρογραμματιζόμενη συσκευή επεξεργασίας πληροφοριών. Ο τυπικός Η/Υ αποτελείται από: –Τήν Μονάδα Εισόδου –Τήν Κεντρική Μνήμη –Τήν Αριθμητική/Λογική Μονάδα –Τήν Μονάδα Ελέγχου –Τήν Μονάδα Εξόδου

7 Φ1α-7 Τυπικό Διάγραμμα Οργάνωσης Η/Υ Κεντρική Μνήμη Μονάδα Εισόδου Μονάδα Εξόδου Μονάδα Ελεγχου Αριθμητική/Λογική Μονάδα

8 Φ1α-8 ΔΙΑΓΡΑΜΜΑ Η/Υ (Συγκεκριμένο) Κεντρική Μνήμη Καταχωρητής Διευθύνσεων Μνήμης Αποκωδικοποιητής Διευθύνσεων Κώδικας Λειτουργίας Διεύθυνση Αποκωδικοποιητής Διευθύνσεων Απαριθμητής Εντολών Συσσωρευτής Κυκλώματα Πράξεων Καταχωρητής Καταχωρητής Λέξεων Ι/Ο Μονάδα Ελέγχου Α/Λ Μονάδα

9 Φ1α-9 ΜΟΝΑΔΑ ΕΙΣΟΔΟΥ Το υποσύστημα το οποίο κωδικοποιεί τις πληροφορίες που προέρχονται από το εξωτερικό περιβάλλον. –Πληκτρολόγιο (keyboard) –Ευαίσθητες επιφάνειες (smart panels) –Συσκευές ανάγνωσης μαγνητικών καρτών (magnetic card readers) –Συσκευές ανάγνωσης ήχου και εικόνας (sound and image acquisition) –Συσκευές μετρήσεων (sensors) –Κ.λ.π.

10 Φ1α-10 ΚΕΝΤΡΙΚΗ ΜΝΗΜΗ Το υποσύστημα το οποίο είναι υπεύθυνο για την προσωρινή αποθήκευση όλων των πληροφοριών (εντολές καί δεδομένα) που είναι απαραίτητες για την λειτουργία του Η/Υ και την εκτέλεση ενός προγράμματος. Η Κεντρική Μνήμη επικοινωνεί με τις Μονάδες Εισόδου/Εξόδου, την Α/Λ Μονάδα, καί την Μονάδα Ελεγχου. Τα τεχνικά χαρακτηριστικά της Κεντρικής Μνήμης είναι –Χωρητικότητα –Ταχύτητα –Μονιμότητα αποθηκεύσεως

11 Φ1α-11 ΑΡΙΘΜΗΤΙΚΗ / ΛΟΓΙΚΗ ΜΟΝΑΔΑ Το υποσύστημα το οποίο είναι υπεύθυνο για τον μετασχηματισμό των κωδικοποιημένων ψηφιακών πληροφοριών. Οι μετασχηματισμοί είναι Οι μετασχηματισμοί είναι –Αριθμητικές πράξεις (Πρόσθεση, Αφαίρεση, Πολ/σμός, Διαίρεση) –Λογικές πράξεις (AND, OR, NOT, XOR) –Ολίσθηση (shift)

12 Φ1α-12 ΜΟΝΑΔΑ ΕΛΕΓΧΟΥ Το υποσύστημα το οποίο είναι υπεύθυνο γιά τον συντονισμό της διαδοχής των πράξεων στην Α/Λ Μονάδα, και των υπολοίπων μονάδων του Η/Υ. Κατά τη διάρκεια εκτέλεσης ενός προγράμματος η Μονάδα Ελέγχου λαμβάνει εντολές (ηλεκτρικά σήματα) και σε καθορισμένες χρονικές στιγμές (περιοδικά) στέλνει σήματα ελέγχου πρός την Κεντρική Μνήμη, την Α/Λ Μονάδα, τις Μονάδες Εισόδου/Εξόδου.

13 Φ1α-13 ΜΟΝΑΔΑ ΕΞΟΔΟΥ Το υποσύστημα το οποίο απο-κωδικοποιεί τις πληροφορίες που προέρχονται από τον Η/Υ και τις διανέμει πρός το εξωτερικό περιβάλλον. –Οθόνη (display) –Εκτυπωτή (printer) –Συσκευές ήχου (audio) –Ηλεκτρομηχανικές συσκευές (actuators) –Κ.λ.π.

14 Φ1α-14 ΔΙΑΓΡΑΜΜΑ Η/Υ (Συγκεκριμένο) Κεντρική Μνήμη Καταχωρητής Διευθύνσεων Μνήμης Αποκωδικοποιητής Διευθύνσεων Κώδικας Λειτουργίας Διεύθυνση Αποκωδικοποιητής Διευθύνσεων Απαριθμητής Εντολών Συσσωρευτής Κυκλώματα Πράξεων Καταχωρητής Καταχωρητής Λέξεων Ι/Ο Μονάδα Ελέγχου Α/Λ Μονάδα

15 Φ1α-15 ΛΕΙΤΟΥΡΓΙΑ ΤΟΥ Η/Υ (1) Ο Η/Υ έχει κατασκευασθεί να εκτελεί μια προκαθορισμένη αλληλουχία εντολών (προγράμματα). Υπάρχουν δύο βασικές κατηγορίες προγραμμάτων: –Τά προγράμματα που καθορίζουν την εσωτερική λειτουργία του υπολογιστή (Λειτουργικό Σύστημα – Operating System) –Τα προγράμματα που ορίζει ο χρήστης (Προγράμματα εφαρμογών, Application Software)

16 Φ1α-16 ΛΕΙΤΟΥΡΓΙΑ ΤΟΥ Η/Υ (2) Οι αλληλουχίες εντολών (προγράμματα) εκτελούνται σάν μονάδες διαδικασιών (processes) σε συγκεκριμένες περιοχές μνήμης του υπολογιστή. Σε μια αλληλουχία εντολών (δηλαδή μέσα σ΄ένα πρόγραμμα), ή μεταξύ διαφορετικών αλληλουχιών (δηλαδή σε διαφορετικά προγράμματα οι περιπτώσεις διαδοχής εντολών είναι –Διαδοχική εκτέλεση (μία εντολή εκτελέιται μετά την άλλη) – Η αλληλουχία Α διατηρεί τον έλεγχο –Διακλάδωση – Η αλληλουχία Α μεταφέρει τον έλεγχο στη Β, με, ή χωρίς κάποια συνθήκη) –Διακοπή – Η Β αποσπά τον έλεγχο από την Α –Δανεισμός ελέγχου – Η Α δανείζει τον έλεγχο στη Β

17 Φ1α-17 ΛΕΙΤΟΥΡΓΙΑ ΤΟΥ Η/Υ (3) Η εκτέλεση ενός προγράμματος επιτυγχάνεται με τήν επαναληπτική χρησιμοποίηση βασικών διαδικασιών του υπολογιστή. Οι πιο κύριες είναι –Ανάκληση απο τη μνήμη της επόμενης εντολής –Αποκωδικοποίηση – Ερμηνεία της εντολής –Ανάκληση των δεδομένων (όταν αυτό χρειάζεται) –Εκτέλεση της λειτουργίας της αποκωδικοποιημένης εντολής σύμφωνα με τον ορισμό αυτής της εντολής Κάθε μία από τις παραπάνω βασικές διαδικασίες εκτελούνται σε σταθερά χρονικά διαστήματα, τα οποία καθορίζονται από ηλεκτρικούς παλμούς (ρολόι) Τα παραπάνω συμβαίνουν σε δύο βασικους κύκλους –Κύκλο ανάκλυσης (fetch cycle) –Κύκλο εκτέλεσης (execution cycle)

18 Φ1α-18 ΛΕΙΤΟΥΡΓΙΑ ΤΟΥ Η/Υ (4) Παράδειγμα: ADD 256 –Η θέση μνήμης στή παραπάνω εντολή ορίζεται να είναι 256. Η διεύθυνση αυτή μεταφέρεται στόν καταχωρητή διευθύνσεων μνήμης –Ο καταχωρητής διευθύνσεων μνήμης καθορίζει την θέση μνήμης 256 καί το περιεχόμενό της (π.χ. Τον αριθμό 15) –Το περιεχόμενο της θέσης μνήμης με διεύθυνση 256 το οποίο είναι 15, τοποθετείται στον καταχωρητή λέξεων –Επειδή το περιεχόμενο αντιπροσωπεύει δεδομένο μεταφέρεται στόν καταχωρητή της Α/Λ μονάδας –Η μονάδα ελέγχου εκπέμπει τα κατάλληλα ηλεκτρικά σήματα ελέγχου για νά επιτύχει την πρόσθεση του περιεχομένου του καταχωρητου Α/Λ και του περιεχομένου του συσσωρευτού Α/Λ με την βοήθεια των κυκλωμάτων πράξεων της Α/Λ –Το αποτέλεσμα μεταφέρεται στον συσσωρευτή της Α/Λ αντικαθιστώντας το προηγούμενο περιεχόμενο του συσσωρευτή

19 Φ1α-19 ΠΡΟΓΡΑΜΜΑΤΑ / ΣΥΜΒΟΛΟΜΕΤΑΦΡΑΣΗ Όπως είπαμε, ένα πρόγραμμα δεν είναι τίποτε παραπάνω από μία ακολουθία εντολών πού μπορούν να εκτελεσθούν από τα ηλεκτρονικά κυκλώματα του Η/Υ Όμως το τι μπορεί να εκτελεσθεί από τα ηλεκτρονικά κυκλώματα του Η/Υ και το τι μπορεί εύκολα ένας άνθρωπος να προγραμματίσει είναι τελείως διαφορέτικα. Ο Η/Υ εκτελεί βασικές λειτουργίες στά κυκλώματά του ( π.χ. S=C+D) – Γλωσσα Μηχανής (Machine Language) Ο προγραμματιστής όμως θέλει να ορίζει λειτουργίες σε πιο υψηλό επίπεδο χρησιμοποιώντας μια πιο φυσική γλώσσα που να θυμιζει π.χ. Αγγλικά – Ανώτερη Γλωσσα Προγραμματισμού (High Level Language) ή Πηγαία Γλώσσα (Source Code) Κάπου λοιπόν αυτές οι δυο απαιτήσεις πρέπει να συναντηθούν – Συμβολική Γλώσσα (Assembly Language) Χρειαζόμαστε λοιπόν καποιούς μεταφραστές από τη μία γλώσσα στην αλλή – Συμβολομεταφραστες (assembler) και μεταγλωτιστές (compiler)

20 Φ1α-20 Γενικά Περί Γλωσσών Συντακτικό και Ερμηνεία –Συντακτικό ορίζει τους γραμματικούς κανόνες για μία σωστά δομημένη πρόταση –Ερμηνεία ορίζει την σημασία της πρότασης Γλώσσα Μηχανής –Είναι σε δυαδική μορφή και κά9ε λέξη έχει τη δομη (πρόσημο) – αριθμός Συμβολική Γλώσσα –Είναι σε συμβολική μορφή και κάθε εντολή έχει τη δομή εντολή - διεύθυνση Γλωσσα Προγραμματισμού Ανωτέρου Επιπέδου – Πηγαία Γλώσσα –Είναι σε συμβολική μορφή και καθε εντολή μοιάζει με Αγγλικά (στις περισσότερες γλώσσες προγραμματισμού)

21 Φ1α-21 ΚΥΚΛΟΣ ΜΕΤΑΦΡΑΣΕΩΝ Πηγάιο Πρόγραμμα Πρόγραμμα σε Συβολική Γλώσσα Optimized Συμβολίκή Γλώσσα Εννοποιημένη Συμβολική Γλώσσα Γλώσσα Μηχανής Η/Υ Μετάφραση Optimization Linking Συμβολομετάφραση Φόρτωση

22 Φ1α-22 Ανασκόπηση Γενικά Ιστορικά στοιχεία περί της εξέλιξης των Η/Υ. Γενική δομή και λειτουργία των Η/Υ. Γενικές αρχές γιά τις Γλώσσες Προγραμματισμού. Εισαγωγικές έννοιες γιά τη μετάφραση και συμβολομετάφραση προγραμμάτων.

23 Φ1α-23 ΠΡΟΓΡΑΜΜΑΤΑ / ΣΥΜΒΟΛΟΜΕΤΑΦΡΑΣΗ Όπως είπαμε, ένα πρόγραμμα δεν είναι τίποτε παραπάνω από μία ακολουθία εντολών πού μπορούν να εκτελεσθούν από τα ηλεκτρονικά κυκλώματα του Η/Υ Όμως το τι μπορεί να εκτελεσθεί από τα ηλεκτρονικά κυκλώματα του Η/Υ και το τι μπορεί εύκολα ένας άνθρωπος να προγραμματίσει είναι τελείως διαφορέτικα. Ο Η/Υ εκτελεί βασικές λειτουργίες στά κυκλώματά του ( π.χ. S=C+D) – Γλωσσα Μηχανής (Machine Language) Ο προγραμματιστής όμως θέλει να ορίζει λειτουργίες σε πιο υψηλό επίπεδο χρησιμοποιώντας μια πιο φυσική γλώσσα που να θυμιζει π.χ. Αγγλικά – Ανώτερη Γλωσσα Προγραμματισμού (High Level Language) ή Πηγαία Γλώσσα (Source Code) Κάπου λοιπόν αυτές οι δυο απαιτήσεις πρέπει να συναντηθούν – Συμβολική Γλώσσα (Assembly Language) Χρειαζόμαστε λοιπόν καποιούς μεταφραστές από τη μία γλώσσα στην αλλή – Συμβολομεταφραστες (assembler) και μεταγλωτιστές (compiler)

24 Φ1α-24 Γενικά Περί Γλωσσών Συντακτικό και Ερμηνεία –Συντακτικό ορίζει τους γραμματικούς κανόνες για μία σωστά δομημένη πρόταση –Ερμηνεία ορίζει την σημασία της πρότασης Γλώσσα Μηχανής –Είναι σε δυαδική μορφή και κά9ε λέξη έχει τη δομη (πρόσημο) – αριθμός Συμβολική Γλώσσα –Είναι σε συμβολική μορφή και κάθε εντολή έχει τη δομή εντολή - διεύθυνση Γλωσσα Προγραμματισμού Ανωτέρου Επιπέδου – Πηγαία Γλώσσα –Είναι σε συμβολική μορφή και καθε εντολή μοιάζει με Αγγλικά (στις περισσότερες γλώσσες προγραμματισμού)

25 Φ1α-25 ΚΥΚΛΟΣ ΜΕΤΑΦΡΑΣΕΩΝ Πηγάιο Πρόγραμμα Πρόγραμμα σε Συβολική Γλώσσα Βελτιστοποιημένη Συμβολίκή Γλώσσα Εννοποιημένη Συμβολική Γλώσσα Γλώσσα Μηχανής Η/Υ Μετάφραση/ Compilation Βελτιστοποίηση/ Optimization Ενοποίηση/ Linking Συμβολομετάφραση/ Assembler Φόρτωση/ Loading

26 Φ1α-26 Η ΕΠΙΛΥΣΗ ΕΝΟΣ ΠΡΟΒΛΗΜΑΤΟΣ Η επίλυση ενός προβλήματος (problem solving) ορίζεται σαν το σύνολο των βημάτων που χρειάζονται για την ανάλυση, μοντελοποίηση, σχεδίαση, καί υλοποίηση μίας κατάλληλης λύσης του προβλήματος. Δύο βασικές μεθοδολογίες επίλυσης προβλημάτων (περισσότερα σε λίγο) –Αναλυτική (Top Down) –Συνθετική (Bottom Up)

27 Φ1α-27 ΑΝΑΛΥΤΙΚΗ ΜΕΘΟΔΟΛΟΓΙΑ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ Η Αναλυτική Μεθοδολογία για την επίλυση ενός προβλήματος (top down problem solving) βσίζεται στην εξής ιδέα: –Γιά να λύσω κάποιο σύνθετο πρόβλημα πρέπει: 1. να ορίσω τα επι μέρους υπο-προβλήματα του (sub goals). 2. να επιλύσω κάθε ένα από αυτά χρησιμοποιώντας την αναλυτική μεθοδολογία. Εάν δεν υπάρχουν άλλα υπο- προβλήματα, τότε προχωρώ στήν άμεση επίλυσή του. 3. Όταν επιλύσω όλα τα υπο-προβλήματα τότε έχω επιλύσει και το αρχικό σύνθετο πρόβλημα.

28 Φ1α-28 ΠΑΡΑΔΕΙΓΜΑ ΑΝΑΛΥΤΙΚΗΣ ΜΕΘΟΔΟΛΟΓΙΑΣ Σύνθετο Πρόβλημα Υπο- Πρόβλημα 1 Υπο- Πρόβλημα 2 Υπο- Πρόβλημα 3 Υπο- Πρόβλημα 1-1 Υπο- Πρόβλημα 1-2 Υπο- Πρόβλημα 2-1 Υπο- Πρόβλημα 3-1 Υπο- Πρόβλημα 3-2

29 Φ1α-29 ΣΥΝΘΕΤΙΚΗ ΜΕΘΟΔΟΛΟΓΙΑ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ Η Συνθετική Μεθοδολογία για την επίλυση ενός προβλήματος (bottom up problem solving) βσίζεται στην εξής ιδέα: –Η λύση ενός προβλήματος επιτυγχάνεται απο τη σύνθεση στοιχείων και δεδομένων: 1. Αρχίζουμε απο αξιώματα τα οποία θεωρούμε ορθά, ή από δεδομένα που μπορούν να αποδειχθούν. 2. Χρησιμοποιούμε θεωρήματα, και μια λογική διαδικασία ώστε να παράγουμε νέα δεδομένα και αποτελέσματα 3. Όταν το ζητούμενο πρόβλημα μπορεί να αποδειχθεί τότε η διαδικασία τερματίζει

30 Φ1α-30 ΠΑΡΑΔΕΙΓΜΑ ΣΥΝΘΕΤΙΚΗΣ ΜΕΘΟΔΟΛΟΓΙΑΣ Σύνθετο Πρόβλημα Αποτέλεσμα 1Αποτέλεσμα 2Αποτέλεσμα 3 Δεδομένα 1-1Δεδομένα 1-2Δεδομένα 2-1Δεδομένα 3-1Δεδομένα 3-2

31 Φ1α-31 ΜΕΙΚΤΗ ΜΕΘΟΔΟΛΟΓΙΑ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ Η Μεικτή Μεθοδολογια (mixed problem solving methodology) είναι μία μίξη από αναλυτική και συνθετική μορφή. Συγκεκριμένα, κάποια απο τα υπο- προβλήματα/προβλήματα επιλύονται αναλύτικα, και κάποια συνθετικά.

32 Φ1α-32 Η ΕΠΙΛΥΣΗ ΕΝΟΣ ΠΡΟΒΛΗΜΑΤΟΣ Η επίλυση ενός προβλήματος εμπεριέχει τα παρακάτω βήματα: –Ορισμός του προβλήματος –Σχεδίαση, ενός αλγόριθμου ο οποίος μπορεί να επιλύσει το πρόβλημα, με ταχύτητα και αποδοτικότητα –Υλοποίηση του αλγόριθμου σε μία κατάλληλη γλώσσα προγραμματισμου

33 Φ1α-33 ΤΙ ΕΙΝΑΙ ΟΜΩΣ ΕΝΑΣ ΑΛΓΟΡΙΘΜΟΣ; Αλγόριθμος (Algorithm) είναι μία ακολυθία οδηγιών (εντολών) οι οποίες επιλύουν ένα συγκεκριμένο πρόβλημα Μπορούμε να έχουμε πολλούς διαφορετικούς αλγόριθμους για την επίλυση ενός προβλήματος Η επιλογή του πιό κατάλληλου αλγόριθμου μπορεί να γίνει με βάση τήν πολυπλοκότητα του (time complexity), την χρήση της μνήμης που απαιτεί (space complexity), τήν δυνατότητα παραμετροποίησής του (parameterization), την αξιοπιστία του (reliability), την δυνατότητα συνέχισης της λειτουργίας του σε ακραίες συνθήκες (robustness) κλπ. Ένας αλγόριθμος έχει ένα ή περισσότερα σημεία εισόδου (πρώτη εντόλή να εκτελεσθεί στην ακολουθία – συνήθως όμως έχει ένα σημείο εισόδου), και εμπεριέχει καποιές συνθήκες που εγκυόνται την λήξη της λειτουργίας του (τελευταία εντολή)

34 Φ1α-34 Σχηματική Παρουσίαση της Διαδικασίας Προγραμματισμού Προγραμμα- τιστής Η/Υ Προγραμμα- τιστής Ορισμός του Προβλήματος/ Problem Definition Γνώση της περιοχής Του Προβλήματος/ Domain Knowledge Αλγόριθμος/ Algorithm Πηγαίο πρόγραμμα (Source Code) σε κάποια Γλώσσα Προγραμματισμού π.χ. C Μεταφραστής και Συμβολομεταφραστής/ Compiler/Assembler/Linker Γλώσσα Μηχανής Δεδομένα/Data Αποτέλεσμα/ Result

35 Φ1α-35ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Προγραμματισμός δεν είναι μόνο η υλοποίηση ενός αλγόριθμου σε μία κατάλληλη για το πρόβλημα γλώσσα (C, C++, Java, Pascal, Fortran, Cobol κλπ.) Ο Προγραμματισμός εμπεριέχει: 1. Την ανάλυση των απαιτήσεων του προβλήματος α. Λειτουργικές απαιτήσεις (functional requirements analysis) β. Μη-λειτουργικές απαιτήσεις (non-functional requirements analysis) Επιλυση Προβλήματος Τη σχεδίαση τού προγράμματος (θεωρούμε ότι ήδη έχουμε κάνει την επιλογή – σχεδίαση του κατάλληλου αλγόριθμου όπως είπαμε στη διαφάνεια σχετικά με την επίλυση ενος προβλήματος (design specifications) 3. Την υλοποίηση του προγράμματος σε μία κατάλληλη γλώσσα γιά το πρόβλημα (implementation) 4. Τον έλεγχο του προγράμματος ώστε να πιστοποιηθεί η ορθή λειτουργία του σε σχέση με τις λειτουργικές και μη- λειτουργικες απαιτήσεις (testing) 5. Τη συντήρηση του για την διόρθωση λαθών, προσθήκη νέων λειτουργιών, και την προσαρμογή του σε άλλα συστήματα (maintenance)

36 Φ1α-36 ΑΣ ΑΡΧΙΣΟΥΜΕ ΑΠΛΑ (Με Γλώσσα Μηχανής !!!) Ας θεωρήσουμε ένα απλό πρόγραμμα: –Φόρτωσε τη θέση μνήμης 6000 (σε κάποιο καταχωρητή π.χ. Α) –Αφαίρεσε 50 από τον καταχωρητή και φόρτωσε το αποτέλεσμα πάλι στον καταχωρητή Α –Εάν το αποτέλεσμα είναι θετικό συνέχισε τη λειτουργία του προγράμματος από την εντολή που βρίσκεται στη θέση μνήμης 11200

37 Φ1α-37 ΓΛΩΣΣΑ ΜΗΧΑΝΗΣ Τα προγράμματα είναι ακολουθίες από ψηφία 0 και 1 (για απλούστευση ας πούμε δεκαδικά ψηφία για το παράδειγμά μας) Ο κώδικας μηχανής για τον επεξεργαστή είναι: –161 –6000 –46 –50 –127 –11200

38 Φ1α-38 ΣΥΜΒΟΛΙΚΗ ΓΛΩΣΣΑ Είναι πολύ δύσκολο να γράψουμε προγράμματα σε γλώσσα μηχανής. Η συμβολική γλώσσα είναι ένα βήμα ώστε να μπορούμε να υλοποιήσουμε αλγόριθμους πιό εύκολα. Η συμβολική γλώσσα αντικαθιστά τους αριθμούς που παρουσιάζουν εντολές με συμβολικά ονόματα γιά εύκολη χρήση Η μετάφραση από τη γλώσσα μηχανής στη συμβολική γλώσσα γίνεται αυτόματα με τη βοήθεια του συμβολομεταφραστή (assembler) Το απλό μας πρόγραμμα σε συμβολική γλώσσα είναι: –MOV A, [6000] –SUB A, 50 –JG 11200

39 Φ1α-39 ΟΜΩΣ ΤΙ ΚΑΝΕΙ ΑΥΤΟ ΤΟ ΠΡΟΓΡΑΜΜΑ; Ας υποθέσουμε ότι η θέση μνήμης 6000 αποθηκεύει το τελικό βαθμό ενός φοιτητή Εάν ο βαθμός είναι μεγαλύτερος του 50 τότε υπάρχει λάθος Το πρόγραμμα ελέγχει εάν ο βαθμός είναι μεγαλύτερος του 50, και εάν είναι τότε συνεχίζει τη λειτουργία του από την εντολή στη θέση μνήμης που υποθέτουμε ότι κάνει κάτι χρήσιμο γιά να διορθώσει αυτό το λάθος

40 Φ1α-40 ΕΠΕΚΤΑΣΗ ΤΗΣ ΣΥΜΒΟΛΙΚΗΣ ΓΛΩΣΣΑΣ Γιά να βοηθηθει ο προγραμματιστής μπορούμε να δώσουμε συμβολικά ονόματα (mnemonic names) στις θέσεις μνήμης. Οπότε το πρόγραμμα γίνεται: MOV A, [FinalMark] SUB A, 50 JG HandleFinalMarkError Όμως καί με αυτή την επέκταση ο προγραμματισμός είναι ακόμη δύσκολος

41 Φ1α-41 ΓΛΩΣΣΑ ΥΨΗΛΟΥ ΕΠΙΠΕΔΟΥ (C) Οι γλώσσες υψηλού επιπέδου π.χ. η C δίνουν στόν προγραμματιστή την δυνατότητα να υλοποιήσει πιό εύκολα κάποιο αλγόριθμο Το απλό πρόγραμμα σε C είναι: if (FinalMark > 50) goto HandleFinalMarkError

42 Φ1α-42 ΚΑΤΗΓΟΡΙΟΠΟΙΗΣΗ ΓΛΩΣΩΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Οι διάφορες γλώσσες προγραμματισμου κατηγοριοποιούνται με τα παρακάτω κριτήρια: –Επίπεδο (Level of Abstraction) –Προγραμματικό ιδίωμα (Programmatic paradigm) –Προγραμματική δομή (Programmatic structure) –Χαρακτηριστικά του τύπου τών μεταβλητών (programmatic variable types)

43 Φ1α-43 ΕΠΙΠΕΔΑ ΓΛΩΣΣΩΝ Γλώσσες υψηλού επιπέδου (C, Fortran, Cobol, Pascal, Ada, Java …) Συμβολικές Γλώσσες (8086, P3, Motorola 6000…) – Ουσιαστικά είναι γλώσσες μηχανής γιά το συγκεκριμένο επεξεργαστή αλλά σε συμβολική μορφή Γλώσσες Μηχανής – Ακολουθίες απο ψηφία 0 και 1 Ενδιάμεσες Γλώσσες – Ουσιαστικά είναι γλώσσες υψηλού επιπέδου που επιτρέπουν και εντολές από γλώσσες χαμηλότερου επιπέδου (C, Modula-2 κλπ.)

44 Φ1α-44 ΠΟΓΡΑΜΜΑΤΙΚΟ ΙΔΙΩΜΑ Διαδικαστικού Προγραμματισμού (imperative/algorithmic/procedure oriented) – Είναι δομημένες γύρω από διαδικασίες – procedures Λειτουργικού Προγραμματισμού (functional languages) – Οι διαδικασίες θεωρούνται και αυτές δεδομένα Οντοκεντρικού Προγραματισμού (object oriented languages) – Το κύριο σημείο είναι τά δεδομένα τα οποία εμπεριέχουν (encapsulate) διαδικασίες με τη μορφή μεθόδων (methods) Λογικού Προγραμματισμού (logic programming languages) – Το πρόγραμμα είναι ουσιαστικά η περιγραφή του προβλήματος, και η χρήση του αλγόριθμου δέν είναι σημαντική

45 Φ1α-45 ΠΡΟΓΡΑΜΜΑΤΙΚΗ ΔΟΜΗ Γλώσσες δομημένες σε Blocks – (Algol, Pascal, Modula-2, Ada …). Κάθε μία προγραμματική ενότητα είναι δομημένη σε blocks. Δομημένες γλώσσες – (C, C++, Java..). Το πρόγραμμα είναι δομημένο σε ενότητες αλλά δεν υπάρχει άμεσος διαχωρισμός σε blocks Μή δομημένες γλώσσες – (Assembly, Lisp, Prolog…). Ένα πρόγραμμα σ’αυτές τις γλώσσες δεν είναι χωρισμένο σε ενότητες

46 Φ1α-46 ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΤΥΠΟΥ ΜΕΤΑΒΛΗΤΩΝ Γλώσσες Ισχυρού Τύπου (Strongly Typed) – Algol, Pascal, C++, Java. Οι μεταβλητές πρέπει να έχουν συγκεκριμένο τύπο. Επείσης, αριθμητικές καί άλλες πράξεις και λειτουργείες μεταξύ των μεταβλητών συγκεκριμένων τύπων, παράγουν αποτελέσματα συγλεκριμένου τύπου. Γλώσσες Περιορισμένου Τύπου (Weakly Typed) – C. Οπως και του ισχυρού τύπου, αλλά η γλώσσα δίνει τη δυνατότητα οι τύποι των μεταβλητών να αλλάξουν καθώς το πρόγραμμα τρέχει. Γλώσσες χωρίς Τύπο (Untyped) – LISP. Οι μεταβλητές δέν εχουν τύπο.

47 Φ1α-47 ΠΡΟΓΡΑΜΜΑΤΑ ΚΑΙ ΒΙΒΛΙΟΘΗΚΕΣ Μία τυπική εφαρμογή αποτελείται: –Από το πηγαίο κώδικα που κατά το πλήστον (ή καθ’ ολοκληρία) υλοποιεί ένα αλγόριθμό της λύσης του προβλήματος –Από κώδικα που υποσηρίζει γενικές λειτουργιές που ίσως χρειάζεται ο πηγαίος κώδικας (π.χ. Εκτύπωση, τριγωνομετρικές συναρτήσεις κλπ.) –Αυτός ο κώδικας υποστήριξης ονομάζεται βιβλιοθήκη (library) –Οι βιβλιοθήκες που χρειάζονται και ο πηγαίος κώδικας μεταφράζονται (compiled) και ενοποιούνται (linked) σε ένα συμβολικό πρόγραμμα, το οποίο με τη σειρά του συμβολομεταφράζεται σε γλώσσα μηχανής –Υπάρχουν ευτυχώς πολλές βιβλιοθήκες για διάφορες λειτουργίες, οπότε δεν χρειάζεται να υλοποιήσουμε κώδικα γι’αυτές τις λειτουργίες. Όποτε τις χρειαζόμαστε, απλά τις εισάγουμε (include) στο πηγαίο κώδικά μας.

48 Φ1α-48 ΣΧΗΜΑΤΙΚΗ ΠΑΡΟΥΣΙΑΣΗ ΠΗΓΑΙΟΣ ΚΩΔΙΚΑΣ ΕΦΑΡΜΟΓΗΣ LIB 1LIB 2LIB 3 Include ΓΛΩΣΣΑ ΜΗΧΑΝΗΣ Μετάφραση & Συμβολομεταφραση

49 Φ1α-49 ΠΑΡΑΔΕΙΓΜΑ Ένα απλό πρόγραμμα της C: #include #include void main() { printf(“Hello World.\n”); printf(“Hello World.\n”); } Εντολή εισαγωγής βιβλιοθήκης για χρήση συναρτήσεων είσοδου/έξοδου Βιβλιοθήκη Η αρχική συνάρτηση main Η συνάρτηση βιβλιοθήκης printf που έχει ορισθεί στη βιβλιοθήκη stdio και επιτρέπει την εκτύπωση στην οθόνη (standard output) Τύπος Επιστροφής της main Εντολή Προ-επεξεργασίας

50 Φ1α-50 AKOMH ENA ΠΑΡΑΔΕΙΓΜΑ Κι’άλλο ένα απλό πρόγραμμα της C: #include #include int main() { printf(“Hello World.\n”); printf(“Hello World.\n”); return(1); return(1); }

51 Φ1α-51 ΜΕΤΑΦΡΑΣΗ ΚΑΙ ΕΝΟΠΟΙΗΣΗ ΜΕ ΤΗ ΠΑΡΟΥΣΙΑ ΒΙΒΛΙΟΘΗΚΗΣ Για να μεταφράσουμε πηγάιο κώδικα της C σε Γλώσσα Μηχανής υπό τη παρουσία βιβλιοθηκών ο compiler εκτελεί τα παρακάτω βήματα. 1.Προ-επεξεργασία: Το πηγαίο πρόγραμμα πρώτα πηγαίνει σε μία εφαρμογή (που έρχεται με τον compiler) και ονομάζεται προ- επεξεργαστής (pre-processor). Ο προ-επεξεργαστής είναι κάτι σαν επεξεργαστής κειμένου (προσθέτει,αφαιρεί, και μεταβάλει το «κείμενο» του πηγαίου προγράμματος (source code). Όλες οι εντολές που είναι να εκτελεσθούν απο τον προ-επεξεργαστή ξεκινούν με το σύμβολο #. Συγκεκριμένα η #include παίρνει το πηγάιο κώδικα της stdio.h και τον εισάγει στη θέση της εντολής #include. Ουσιαστικά μετά την προεπεξεργασία δέν υπάρχουν πλέον εντολές που ξεκινούν με #. 2.Μετάφραση και Συμβολομετάφραση. Tα βήματα αυτά παράγουν αντικειμενικό κώδικα – object code (σχεδόν γλώσσα μηχανής) 3.Εννοποίηση (linking). Το βήμα αυτό εννοποιεί αντικειμενικό κώδικα (πιθανόν απο διαφορετικά αρχεία πηγαίου κώδικα) σε ένα εκτελέσιμο αρχείο (π.χ..exe) σε καθαρή γλώσσα μηχανής.

52 Φ1α-52 ΓΕΝΙΚΗ ΜΟΡΦΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C directives directives main() main() { statements statements }

53 Φ1α-53 ΕΠΙΣΚΟΠΗΣΗ Τι είδαμε μεχρι τώρα: –Γενικά περί γλωσσών προγραμματισμού –Μετάφραση / Συμβολομετάφραση / Εννοποίηση (Συννενωση) –Επίλυση Προβλημάτων και Μεθοδολογίες –Προεπεξεργασία –Γενική δομή απλού προγράμματος C


Κατέβασμα ppt "Φ1α-1 ΦΡΟΝΤΙΣΤΗΡΙΟ 1-α. Φ1α-2 ΤΙ ΕΙΝΑΙ Ο ΥΠΟΛΟΓΙΣΤΗΣ Ο όρος είναι συντομογραφία του όρου «Αυτόματος, Ηλεκτρονικός Ψηφιακός Υπολογιστής Γενικού Σκοπού»"

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


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