Λογισμικό Υπολογιστών (Software) ΜΥΥ-106 Εισαγωγή Η/Υ και Πληροφορική

Σχετικά έγγραφα
<<ΔΗΜΗΤΡΗΣ ΜΑΝΩΛΗΣ ΦΥΣΙΚΟΣ ΜCs>> 1

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

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

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

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

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

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

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

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ

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

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

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

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

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

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

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

Συμβολική γλώσσα Εκπαιδευτικού Υπολογιστή - Λογισμικό Υπολογιστών

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

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

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

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

Υποστήριξη Λ.Σ. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Ψευδοκώδικας. November 7, 2011

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 2 ο. Επικοινωνία:

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

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

Λιβανός Γιώργος Εξάμηνο 2017Β

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

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

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

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

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

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

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

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

I. ΑΛΓΟΡΙΘΜΟΣ II. ΠΡΑΞΕΙΣ - ΣΥΝΑΡΤΗΣΕΙΣ III. ΕΠΑΝΑΛΗΨΕΙΣ. 1. Τα πιο συνηθισμένα σενάρια παραβίασης αλγοριθμικών κριτηρίων είναι:

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

ΑΕΠΠ Ερωτήσεις τύπου Σωστό-Λάθος

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

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

Εισαγωγή στην επιστήμη των υπολογιστών

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

Κεφάλαιο 7 ο Βασικές Έννοιες Προγραμματισμού (σελ )

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

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

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

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

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Μεταγλώτιση, σύνδεση

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

Αρχιτεκτονική Υπολογιστών

Θέματα Προγραμματισμού Η/Υ

Εισαγωγή στον Προγραμματισμό Python Μάθημα 1: Μεταβλητές, τελεστές, είσοδος/έξοδος προγράμματος, συνθήκη ελέγχου if Νοέμβριος 2014 Χ. Αλεξανδράκη, Γ.

Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 9ο Γλώσσες Προγραμματισμού

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

Ορισμός Κάθε ζήτημα που τίθεται προς επίλυση, κάθε δύσκολη κατάσταση που μας απασχολεί και πρέπει να αντιμετωπιστεί.

Αναφορά (1/2) Μπορούμε να ορίσουμε μια άλλη, ισοδύναμη αλλά ίσως πιο σύντομη, ονομασία για ποσότητα (μεταβλητή, σταθερή, συνάρτηση, κλπ.

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

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

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

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει τρία εξίσου σημαντικά στάδια.

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

Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας

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

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

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

Δομές Ακολουθίας- Επιλογής - Επανάληψης. Δομημένος Προγραμματισμός

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον 2o Επαναληπτικό Διαγώνισμα Κεφ: 2 ο 7 ο 8 ο ΗΜΕΡΟΜΗΝΙΑ 21/ 10/ 2017

Κεφάλαιο 8. Αριθμητική Λογική μονάδα

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

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

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

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

Α.1 Τι γνωρίζετε για τον διερμηνευτή, τον μεταγλωττιστή και ποιες οι διαφορές τους. 15 ΜΟΝΑΔΕΣ

53 Χρόνια ΦΡΟΝΤΙΣΤΗΡΙΑ ΜΕΣΗΣ ΕΚΠΑΙΔΕΥΣΗΣ Σ Α Β Β Α Ϊ Δ Η Μ Α Ν Ω Λ Α Ρ Α Κ Η

ΤΙ ΕΙΝΑΙ Ο ΥΠΟΛΟΓΙΣΤΗΣ

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

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

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

Εισαγωγή στον Προγραμματισμό Μάθημα 4: Αλγόριθμοι και Γλώσσες Προγραμματισμού Δεκέμβριος 2015 Χ. Αλεξανδράκη

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

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

III. Πως μετατρέπεται το πηγαίο πρόγραμμα σε εκτελέσιμο πρόγραμμα;

ΓΕ0170 -Αλγόριθμοι και Προηγμένες Προγραμματικές Τεχνικές. Εισαγωγή. Νίκος Αθανάσης.

Το λειτουργικό σύστημα. Προγραμματισμός II 1

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

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

ΚΕΦΑΛΑΙΟ 10 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

ΟΜΑΔΑ Ε ΓΕΩΡΓΙΟΥ ΦΩΤΕΙΝΗ ΗΛΙΟΥΔΗ ΑΦΡΟΔΙΤΗ ΜΕΤΑΛΛΙΔΟΥ ΧΡΥΣΗ ΝΙΖΑΜΗΣ ΑΛΕΞΑΝΔΡΟΣ ΤΖΗΚΑΛΑΓΙΑΣ ΑΝΔΡΕΑΣ ΤΡΙΓΚΑΣ ΑΓΓΕΛΟΣ

Αρχές Προγραμματισμού Υπολογιστών

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

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

Ε Ι Α Γ Ω Γ Η Σ Ο Ν Π Ρ Ο Γ Ρ Α Μ Μ Α Σ Ι Μ Ο Κ Ε Υ Α Λ Α Ι Ο 6. Σο πρόγραμμα γράφεται σε κάποια γλώσσα προγραμματισμού.

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

Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ )

ΚΕΦΑΛΑΙΟ 7 ο. Έτσι ο προγραµµατισµός µε τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη του αλγορίθµου και τη µετατροπή του σε σωστό πρόγραµµα.

Θεωρητικές Ασκήσεις. ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. 1 ο Μέρος

Transcript:

Λογισμικό Υπολογιστών (Software) ΜΥΥ-106 Εισαγωγή Η/Υ και Πληροφορική

Αλγόριθμος Κάθε υπολογισμός αποτελείται από μια σειρά, καλά καθορισμένων, σχετικά απλών, βημάτων Η μέθοδος υπολογισμού ονομάζεται αλγόριθμος (algorithm) Από τον Πέρση μαθηματικό Muḥammad ibn Mūsā al-khwārizmī, ~750μΧ Ένας αλγόριθμος μπορεί να εκφραστεί σε μια γλώσσα φυσική γλώσσα, π.χ. Ελληνικά τεχνιτή γλώσσα, π.χ. Μαθηματικά Υπάρχουν συχνά πολλοί διαφορετικοί αλγόριθμοι για τον ίδιο υπολογισμό 2

Παράδειγμα αλγόριθμου Υπολογισμός διαγωνίου, ορθ. παραλληλόγραμμου Από Πυθαγόρειο θεώρημα a 2 + b 2 Η «γλώσσα» μας περιγράφει +,-,*,/ μόνο. Πώς υπολογίζουμε τη τετραγωνική ρίζα; Μέθοδος Βαβυλώνιων ή του Ήρων της Αλεξάνδριας: 1. Βρές αρχικό ακέραιο αριθμό x όσο πιο κοντά στη ρίζα. 2. Αντικατέστησε τον x με τον μέσο όρο του x με το y/x 3. Επανέλαβε βήμα 2 μέχρι η διαφορά να είναι όσο μικρή όσο χρειάζεται x = Παρατήρηση: Η λύση εξαρτάται πολύ από τη «γλώσσα» y (x + y / x)/2 3

Προγραμματισμός Για να λύσουμε ένα πρόβλημα χρησιμοποιώντας ΗΥ πρέπει να βρούμε/σχεδιάσουμε έναν αλγόριθμο να τον περιγράψουμε σε γλώσσα κατάλληλη για τον υπολογιστή Η περιγραφή του αλγορίθμου σε μια τέτοια γλώσσα λέγεται προγραμματισμός και η γλώσσα, γλώσσα προγραμματισμού Στην αργκό μας το πρόγραμμα λέγεται κώδικας 4

Γλώσσα μηχανής Το υλικό έχει ήδη μια γλώσσα Μπορεί να κάνει βασικές αριθμητικές πράξεις, συγκρίσεις,... π.χ. 00000010001100100100000000100000 για MIPS (RISC) σημαίνει πρόσθεσε τους αριθμούς στους καταχωρητες με τα ονόματα s1 s2 και γράψε το αποτέλεσμα στον καταχωρητή t1 Συμβολική γλώσσα (assembly) πιο εύκολη για ανθρώπους add $t1, $s1, $s2 Απαιτείται μετάφραση από το συμβολομεταφραστή (assembler) Ο προγραμματιστής πρέπει να διαχειριστεί πολλές λεπτομέρειες: σε ποια διεύθυνση στη μνήμη κρατάω το χ, σε ποιά βρίσκεται η εντολή που θέλω να επαναλάβω,... 5

Γλώσσες προγραμματισμού Όπως είδαμε στο παράδειγμα, πολύ απλές εντολές κάνουν δύσκολη την περιγραφή του αλγόριθμου Λύση: γλώσσες «υψηλού επιπέδου» και (αυτόματη) μετάφραση στη γλώσσα μηχανής Άλλο ένα παράδειγμα χρήσης αφαίρεσης στους υπολογιστές οι λεπτομέρειες τις γλώσσας μηχανής κρύβονται Το πρόγραμμα υψηλού επιπέδου ονομάζεται πηγαίο (source code) Το μεταγλωτισμένο πρόγραμμα ονομάζεται object code 6

Παραγωγικότητα Παραγωγικότητα προγραμματιστή (σωστές) γραμμές προγράμματος ανα μέρα Ο προγραμματιστής είναι πιο παραγωγικός όταν περιγράφει έναν αλγόριθμο χρησιμοποιώντας έννοιες κοντινές με αυτές που χρησιμοποιούνται στη περιγραφή του προβλήματος Συνήθως μεταβλητές, αριθμητικές πράξεις, διαδικασίες,... Γιατί όχι φυσική γλώσσα; 7

Είδη γλωσσών προγραμματισμού Υπάρχουν εκατοντάδες διαφορετικές γλώσσες Πολλοί τρόποι κατάταξης γλωσσών προγραμματισμού περιγραφή λύσης (προβλήματος) οργάνωση προγράμματος χρήση Πόσες πρέπει να μάθει κανείς; Ένας φοιτητής, 2-3 σε καλό βάθος Γνωρίζοντας 1-2 είναι εύκολο να μάθει κανείς άλλες 8

Είδη: περιγραφή Προστακτικές (imperative) Περιγράφουν τον αλγόριθμο ως μια ακολουθία εντολών C, C++, Java, Python int factorial(int n){ int c, result = 1; for( c = 1 ; c <= n ; c++ ) result = result*c; return(result); } Δηλωτικές (declarative) περιγράφουν τον αλγόριθμο δίνοντας λεπτομερή περιγραφή του ζητούμενου αποτελέσματος και των ιδιοτήτων του Haskell, Prolog factorial 0 = 1 factorial n = n * factorial (n - 1) 9

Είδη: Οργάνωση προγράμματος Διαδικαστικές γλώσσες (procedural) Το πρόγραμμα είναι οργανωμένο σε διαδικασίες C, Pascal Αντικειμενοστραφείς γλώσσες (object-oriented) Το πρόγραμμα είναι οργανωμένο σε αντικείμενα που αλληλεπιδρούν μεταξύ τους C++, Java, Python Συναρτησιακές γλώσσες (functional) Το πρόγραμμα είναι οργανωμένο σε μαθηματικές συναρτήσεις 10

Είδη: χρήση Γενικής χρήσης C, C++, Java Γλώσσες σεναρίου (scripting) Perl, Python, Unix shells Διαδικτυακές Javascript, PHP Ειδικές εφαρμογές postscript, Matlab Παράλληλες Erlang, 11

Βασικά στοιχεία γλωσσών Σε προστακτικές κυρίως γλώσσες Μεταβλητές Είσοδος-έξοδος Απλές αριθμητικές και άλλες πράξεις - εκφράσεις Εκτέλεση υπό συνθήκη Επανάληψη Υποπρογράμματα 12

Μεταβλητές Οι μεταβλητές αποθηκεύουν ενδιάμεσα αποτελέσματα Η αλλαγή της τιμής μιας μεταβλητής ονομάζεται εκχώριση ή ανάθεση τιμής Η χρησιμοποίηση της τιμής μιας μεταβλητής (σε μία αριθμητική έκφραση) λέγεται ανάκληση π.χ. a = c; Σε χαμηλό επίπεδο (γλώσσα μηχανής) οι μεταβλητές αντιστοιχούν σε θέσεις μνήμης 13

Είσοδος, έξοδος Εντολές εισόδου που διαβάζουν μια τιμή από κάποιο περιφερειακό (συνήθως το πληκτρολόγιο) και την εκχωρούν σε μια μεταβλητή π.χ. a = input() Εντολές εξόδου που στέλνουν τη τιμή μιας μεταβλητής σε ένα περιφερειακό (συνήθως την οθόνη) π.χ. print a 14

Εκφράσεις Μεταβλητές και σταθερές μπορούν να χρησιμοποιηθούν ως δεδομένα για αριθμητικές (και άλλες) πράξεις Τα δεδομένα ονομάζονται τελεσταίοι (operands) Τα σύμβολα των πράξεων λέγονται τελεστές (operators) Συνηθισμένες αριθμητικές πράξεις, συγκρίσεις, λογικές πράξεις (και, ή, όχι) Οι κατάλληλοι συνδυασμοί των παραπάνω λέγονται εκφράσεις (expressions) και μπορούν να εκχωρηθούν σε κάποια μεταβλητή π.χ. in_range = ((a+1 > 3) and (a+1 < 10)) 15

Εκτέλεση υπό συνθήκη Συχνά ένα πρόγραμμα εκτελεί διαφορετικές εντολές ανάλογα με την τιμή κάποιου αποτελέσματος Οι περισσότερες γλώσσες έχουν μια δομή επιλογής που μοιάζει με τη παρακάτω αν <συνθήκη επιλογής> τότε τμήμα εντολών 1 αλλιώς τμήμα εντολών 2 16

Επανάληψη Οι περισσότεροι αλγόριθμοι επαναλαμβάνουν κάποια βήματα και οι γλώσσες παρέχουν αυτή τη δυνατότητα όσο <συνθήκη> επανέλαβε τμήμα εντολών τέλος επανάληψης Προφανώς η επανάληψη πρέπει κάποτε να σταματάει αλλιώς δεν θα τελειώσει ο υπολογισμός συχνό προγραμματιστικό λάθος 17

Υποπρογράμματα Για να λύσουμε δύσκολα προβλήματα συχνά τα χωρίζουμε σε έναν αριθμό από απλούστερα πολύ χρήσιμη στρατηγική, «διαίρει και βασίλευε»! το ίδιο υπο-πρόβλημα εμφανίζεται πολλές φορές αφαίρεση! Αντί να ξαναγράφουμε τις εντολές που λύνουν το υποπρόβλημα πολλές φορές, χρησιμοποιούμε ένα υποπρόγραμμα με δικές του εισόδους και εξόδους (μεταβλητές) το καλούμε κάθε φορά με τις εισόδους που θέλουμε ονομάζεται: υπορουτίνα, διαδικασία, μέθοδος,... 18

Μετάφραση Γενικά ένα πρόγραμμα σε υψηλού επιπέδου γλώσσα μεταφράζεται ολόκληρο σε γλώσσα μηχανής και αποθηκευεται σε ένα εκτελέσιμο (executable) αρχείο ένα αρχείο με ένα «σημάδι» ότι περιέχει ένα πρόγραμμα Το λειτουργικό σύστημα, αντιγράφει το πρόγραμμα στη μνήμη (φορτώνει), το «ετοιμάζει» και το εκτελεί/τρέχει Αυτό συμβαίνει σε προγράμματα σε C, C++, Pascal, Το πρόγραμμα που κάνει τη μετάφραση ονομάζεται μεταγλωττιστής (compiler) 19

Μετάφραση (συν.) Η μετάφραση μπορεί να γίνει και ανά εντολή/γραμμή γλώσσας προγραμματισμού Το εκτελεί ένας εικονικός επεξεργαστής που έχει ως αρχιτεκτονικό σύνολο εντολών αυτό της γλώσσας προγραμματισμού στην ουσία ένα απλό πρόγραμμα Λέγεται διερμηνευτής (interpreter) Αυτό συμβαίνει σε προγράμματα Java, Python, Ενα μεταγλωτισμένο πρόγραμμα γενικά εκτελείται γρηγορότερα από ένα διερμηνευόμενο 20

Γλώσσες και μηχανές Μια γλώσσα αντιστοιχεί σε μια μηχανή και αντίστροφα Θα δείτε σε μάθημα θεωρίας υπολογισμού ότι τα δύο είναι ισοδύναμα! Μια γλώσσα ορίζει (περιγράφει) μια μηχανή και μια μηχανή ορίζει (εκτελεί) μια γλώσσα Μπορούμε (και γενικά το κάνουμε) να ορίσουμε μια σειρά από γλώσσες/μηχανές ώστε να πλησιάσουμε σε μία βολική, για τον άνθρωπο, γλώσσα/μηχανή Ενδιάμεσα στάδια χρειάζονται για διάφορους λόγους Στο κατώτατο επίπεδο υπάρχει μια πραγματική μηχανή (ο επεξεργαστής) Τα ενδιάμεσα επίπεδα ορίζουν υποθετικούς υπολογιστές ή εικονικές μηχανές 21

Μεταγλώτιση, διερμηνεία Μεταγλώτιση από L2 σε L1 μετάφραση ολόκληρου του προγράμματος από τη γλώσσα L2 στη γλώσσα L1 και αργότερα εκτέλεση του από τη μηχανή M1 Η μετάφραση μπορεί να γίνει «με το χέρι», αλλά είναι πολύ καλύτερο να αυτοματοποιηθεί... Προϋποθέτει την ύπαρξη ενός βοηθητικού προγράμματος, μεταγλωτιστή (compiler) που κάνει τη μετατροπή Διερμηνεία από L2 σε L1 μετάφραση κάθε εντολής της L2 και άμεση εκτέλεσή της Υπάρχει ένα πρόγραμμα (σε L1) που δέχεται (ως δεδομένα!) το πρόγραμμα γλώσσας L2 22

Παράδειγμα: προγραμματισμός ρομπότ οικιακής βοηθού Το πρόγραμμα σε γλώσσα L2 λέει: Κοσκίνισε 150γρ αλεύρι με 1 κουταλιά baking powder και μια πρέζα αλάτι Πρόσθεσε 30γρ ζάχαρη Χτύπα ένα αυγό με 150ml γάλα Βάλτα όλα μαζί και ανακάτεψε Ζέστανε το τηγάνι Βάλε κουταλιές από το μίγμα στο τηγάνι και ψήσε για 2-3 λεπτά από κάθε πλευρά 23

Διερμηνευτής Διαβάζω εντολή: Κοσκίνισε 150γρ αλεύρι με 1 κουταλιά baking powder και μια πρέζα αλάτι Εκτελώ: Άνοιξε ντουλάπι κάτω δεξιά Βρές χαρτοσακούλα που γράφει αλεύρι και φέρε στο τραπέζι Άνοιξε τελευταίο συρτάρι Βρές ζυγαριά και φέρε στο τραπέζι... Διαβάζω εντολή: Πρόσθεσε 30γρ ζάχαρη Εκτελώ: άνοιξε ντουλάπι... 24

Μεταγλωτιστής Διαβάζει όλο το πρόγραμμα σε L2 και το μεταφράζει σε L1 άνοιξε κάτω δεξιά ντουλάπι φέρε αλεύρι άνοιξε τελευταίο συρτάρι φέρε ζυγαριά... άνοιξε ψυγείο... Μετά το πρόγραμμα L1 μπορεί να εκτελεστεί από τη Μ1 γενικά ο μεταγλωτιστής κοιτάει και μήπως μπορεί να βελτιώσει το πρόγραμμα, π.χ. βγάλε όλα τα υλικά από τα ντουλάπια στο τραπέζι 25

Κατηγορίες λογισμικού Εφαρμογές ο λόγος ύπαρξης των υπολογιστών εφ. γραφείου, παιχνίδια,... Προγράμματα για ανάπτυξη λογισμικού μεταγλωτιστές, διερμηνείς,... Λειτουργικό σύστημα (Λ.Σ.) σύνολο προγραμμάτων διαχειριση περιφερειακών (λεπτομέρειες εισόδου-εξόδου), μέσων αποθήκευσης (π.χ. λεπτομέρειες δίσκων κρύβονται κάτω από σύστημα αρχείων/καταλόγων) βοηθητικά προγράμματα συντονισμός προγραμμάτων 26

Είδη Λ.Σ. Το Λ.Σ. δεν είχε προβλευτεί από τους εφευρέτες των υπολογιστών προέκειψε αργότερα ώστε να απλοποιήσει βασικές, διαδικαστικές, χρονοβόρες εργασίες Είδη Λ.Σ.: Πραγματικού χρόνου (real-time) γρήγορη και προβλέψιμη αντίδραση Αριθμός (ταυτόχρονων) χρηστών: ένας ή πολλοί πολλοί λογαριασμοί δε σημαίνει πολλοί ταυτόχρονοι χρήστες Αριθμός εργασιών (single/multi-tasking) 27

Πυρήνας Λ.Σ. Παρέχει τις βασικές λειτουργίες διαχείριση μνήμης επιλέγει πιο πρόγραμμα θα εκτελεστεί παρέχει πρόσβαση στα περιφερειακά (μέσω τον οδηγών device drivers) Τα κοινά προγράμματα χρηστών δεν έχουν άμεση πρόσβαση στον πυρήνα Παρέχει βοηθητικές λειτουργίες που λέγονται κλήσεις συστήματος (system calls) κάτι σαν υπορουτίνες 28

Μηχανή Λειτουργικού Συστήματος Η μηχανή Λ.Σ. είναι μια εικονική μηχανή που έχει ως γλώσσα τη γλώσσα μηχανής και τις κλήσεις συστήματος (application binary interface ABI) 29

Διεργασία (process, task) Η δραστηριότητα εκτέλεσης των εντολών του προγράμματος από την μηχανή Διαχειριζεται (ξεκινάει, διακόπτεται,...) από τον πυρήνα που κρατάει πληροφορίες σχετικά με την κατάσταση της διεργασίας π.χ. ποια εντολή πρόκειται να εκτελεστεί (διεύθυνση μνήμης) Το τμήμα του πυρήνα λέγεται χρονοδρομολογητής (scheduler) 30