Εισαγωγή στην Πληροφορική Προγραμματισμός-Λειτουργικά Ηλ. Γκρίνιας Τ. Ε. Ι. Σερρών Τμήμα Πληροφορικής και Επικοινωνιών
Αλγόριθμοι Ορισμός: ο αλγόριθμος είναι μια σειρά από πεπερασμένα βήματα που καθορίζουν ένα (από περισσότερους πιθανώς) τρόπο επίλυσης ενός προβλήματος. Κάθε πρόβλημα επιδέχεται σχεδόν πάντα περισσότερες από μία λύσεις. Κάθε λύση μπορεί να γραφεί στη μορφή πολλών διαφορετικών προγραμμάτων π.χ. σε περισσότερες από μια γλώσσες προγ/σμού. Κάθε αλγόριθμος πρέπει να έχει αρχή και τέλος σε πεπερασμένο αριθμό βημάτων. Κάθε αλγόριθμος πρέπει να χαρακτηρίζεται από ορθότητα δηλ. να δίνει σωστό αποτέλεσμα σε κάθε περίπτωση. Κάθε ορθός αλγόριθμος χαρακτηρίζεται από την πολυπλοκότητα (βαθμό απλότητας) της λύσης που υλοποιεί.
Παράδειγμα αλγορίθμων Πρόβλημα: ταξινόμηση τριών ακεραίων αρ1, αρ2, αρ3 σε αύξουσα σειρά. Λύση 1: Σύκριση συνεχώς των αριθμών ανά δύο και αντιμετάθεση αν δεν είναι σε αύξουσα σειρά. Λύση 2: Βρες κάθε φορά τον μικρότερο αριθμό και τοποθέτησέ τον 1 ο στη σειρά των αριθμών που δεν έχουμε δει, μέχρι τέλους. Αλγόριθμος για τη Λύση 1: Σύγκρινε τον αρ1 με τον αρ2 και αν δεν είναι σε αύξουσα σειρά αντιμετάθεσε τους. Έπειτα σύγκρινε τον αρ2 με τον αρ3 και αν δεν είναι σε αύξουσα σειρά αντιμετάθεσε τους. Τέλος σύγκρινε τον αρ1 με τον αρ2 και αν δεν είναι σε αύξουσα σειρά αντιμετάθεσε τους. Αλγόριθμος για τη Λύση 2: Βρες τον μικρότερο από τους αρ1, αρ2 και αρ3 και τοποθέτησέ τον στη θέση του αρ1, αλλάζοντας τη θέση του μ αυτόν. Έπειτα βρες τον μικρότερο από τους αρ2, αρ3 καιβάλετονστηθέσητου αρ2 αλλάζοντας τη θέση του μ αυτόν
Παράσταση αλγορίθμων Πρόγραμμα: αναπαράσταση αλγορίθμου σε γλώσσα κατανοητή από τον Η/Υ. Μορφές περιγραφής κατανοητές από ανθρώπους: Ψευδοκώδικας: αυστηρά δομημένη και συνεπής φυσική γλώσσα Παράδειγμα: στις επόμενες διαφάνειες περιγράφεται μια ψευδογλώσσα ως υποσύνολο της ελληνικής γλώσσας με λεξιλόγιο και συντακτικό στοιχεία συντακτικού από τη γλώσσα προγραμματισμού Pascal οι εντολές του ψευδοκώδικα συμβολίζονται με κεφαλαία γράμματα (δεσμευμένες λέξεις) τα υπόλοιπα (π.χ. ονόματα μεταβλητών) με μικρούς λατινικούς χαρακτήρες. Διάγραμμα ροής (flow chart): αυστηρά ορισμένο διάγραμμα με σχήματα και ενώσεις που ακολουθούν συγκεκριμένους κανόνες και σημαίνουν το ίδιο πράγμα κάθε φορά.
Παράσταση αλγορίθμων με ψευδοκώδικα Βασικοί κανόνες σύνταξης ψευδοκώδικα ΕΝΤΟΛΗ ΔΙΑΒΑΣΕ() ΤΥΠΩΣΕ() ΕΑΝ συνθήκη ΤΟΤΕ εντολές1 ΑΛΛΙΩΣ εντολές2 ΕΑΝ-ΤΕΛΟΣ ΟΣΟ συνθήκη εντολές ΟΣΟ-ΤΕΛΟΣ ΕΠΑΝΕΛΑΒΕ εντολές ΜΕΧΡΙ ΣΥΝΘΗΚΗ ΣΗΜΑΣΙΑ Εντολή ανάγνωσης τιμών από το χρήστη(τα ονόματα των μεταβλητών στις οποίες θα καταχωρηθούν οι τιμές αυτές περιλαμβάνονται μέσα σε παρένθεση, διαχωρισμένα με κόμματα). Εντολή εμφάνισης τιμών στην οθόνη (τα περιεχόμενα που θα τυπωθούν περιλαμβάνονται στην παρένθεση διαχωρισμένα με κόμματα και ανάμεσα σε για αλφαρηθμιτικά). Εντολή επιλογής. Αν ισχύει η συνθήκη, τότε εκτελούνται οι εντολές1. Αλλιώς, προαιρετικά, εκτελούνται οι εντολές2 Εντολή επανάληψης. Εκτελούνται οι εντολές επαναληπτικά για όσο ισχύει η συνθήκη. Οι εντολές μπορεί να μην εκτελεστούν ούτε μια φορά. Εντολή επανάληψης. Εκτελούνται οι εντολές επαναληπτικά για όσο δεν ισχύει η συνθήκη, Οι εντολές εκτελούνται τουλάχιστο μια φορά.
Παράσταση αλγορίθμων με ψευδοκώδικα Βασικοί κανόνες σύνταξης ψευδοκώδικα (συνέχεια) ΕΝΤΟΛΗ ΣΗΜΑΣΙΑ := Εντολή εκχώρησης τιμής σε μεταβλητή π.χ a:=1 ή a := b ΓΙΑ μετρητής:= τιμή1 ΕΩΣ τιμή2 ΜΕ-ΒΗΜΑ τιμή3 ΕΠΑΝΕΛΑΒΕ εντολές ΓΙΑ-ΤΕΛΟΣ Εντολή επανάληψης. Ο μετρητής παίρνει αρχικά την τιμή1 και εκτελούνται οι εντολές. Σε κάθε επανάληψη προστίθεται στο μετρητή η τιμή3 και οι εντολές εκτελούνται όσο ο μετρητής είναι μικρότερος ή ίσος του τιμή2. Η σύνταξημε-βημα τιμή3 είναι προαιρετική και όταν απουσιάζει εννοείται αύξηση του μετρητή κατά 1 σε κάθε επανάληψη. ; Συμβολίζει το τέλος μιας εντολής. ΑΡΧΗ - ΤΕΛΟΣ ΑΛΓΟΡΙΘΜΟΣ ΔΕΔΟΜΕΝΑ μετ1, μετ2,... : τύπος Συμβολίζουν την αρχή και το τέλος ενός τμήματος κώδικα. Είναι πάντα σε ζεύγη (κάθε ΤΕΛΟΣ αντιστοιχεί στην κοντινότερη αρχή). Κεφαλίδα ενός προγράμματος που ακολουθείται από το όνομά του. Συμβολίζουν την αρχή του τμήματος ενός προγράμματος στο οποίο ορίζονται τα δεδομένα που χρησιμοποιεί το πρόγραμμα. Ορίζει λίστες με ονόματα μεταβλητών που χωρίζονται μεταξύ τους με κόμματα. Στο τέλος της λίστας και μετά το σύμβολο : ορίζεται ο τύπος των μεταβλητών αυτών. Οι συνηθέστεροι τύποι είναι ΑΚΕΡΑΙΟΣ (INTEGER), ΠΡΑΓΜΑΤΙΚΟΣ (REAL) και ΧΑΡΑΚΤΗΡΑΣ (CHAR).
Παράσταση αλγορίθμων με ψευδοκώδικα Παράδειγμα: Ταξινόμηση τριών ακεραίων (Λύση 1) ΑΛΓΟΡΙΘΜΟΣ taksinomisi ΔΕΔΟΜΕΝΑ ar1,ar2,ar3,temp: INTEGER; AΡΧΗ ΤΥΠΩΣΕ( Δώσε 3 ακέραιους: ); ΔΙΑΒΑΣΕ(ar1,ar2,ar3); EAN ar1>ar2 TOTE temp:=ar2; ar2:=ar1; ar1:=temp; ΕΑΝ-ΤΕΛΟΣ ΕΑΝ ar2>ar3 TOTE temp:=ar2; ar2:=ar3; ar3:=temp; EAN-ΤΕΛΟΣ (συνέχεια αλγορίθμου) EAN ar1>ar2 TOTE temp:=ar2; ar2:=ar1; ar1:=temp; ΕΑΝ-ΤΕΛΟΣ ΤΥΠΩΣΕ( Σε αύξουσα σειρά: ); ΤΥΠΩΣΕ(ar1, ar2, ar3); ΤΕΛΟΣ
Παράσταση αλγορίθμων με Διαγράμματα Ροής Διάγραμμα ροής (flow chart): σχηματική περιγραφή αλγορίθμων σειρά συμβόλων με συγκεκριμένη σημασία: Εντολή Απόφαση Αρχή και Τερματισμός Είσοδος (Δεδομένα) Έξοδος (Εκτύπωση) Ροή
Παράσταση αλγορίθμων με Διαγράμματα Ροής Παράδειγμα: ταξινόμηση 3 ακεραίων (Λύση 1) ΑΡΧΗ ar1>ar2? ΔΩΣΕ 3 ΑΚΕΡΑΙΟΥΣ ar2>ar3? ΝΑΙ ΟΧΙ ar1, ar2, ar3 ΟΧΙ ΝΑΙ temp:=ar2; ar2:=ar3; ar3:=temp; temp:=ar2; ar2:=ar1; ar1:=temp; ΟΧΙ ar1>ar2? ΝΑΙ temp:=ar2; ar2:=ar1; ar1:=temp; Σε αύξουσα σειρά: ar1,ar2,ar3 ΤΕΛΟΣ
Διαδικασιακός Προγραμματισμός Οποιοδήποτε πρόγραμμα γράφεται με συνδυασμό τριών βασικών δομών: Ακολουθία Επιλογή Επανάληψη εντολή 1; ΕΑΝ συνθήκη ΤΟΤΕ εντολή 2; εντολές1; ΟΣΟ συνθήκη εντολή 3; ΑΛΛΙΩΣ εντολές; εντολές2; ΟΣΟ-ΤΕΛΟΣ ΕΑΝ-ΤΕΛΟΣ εντολή 1 συνθήκη εντολή 2 ΝΑΙ εντολές1 ΟΧΙ εντολές2 συνθήκη ΟΧΙ ΝΑΙ εντολές εντολή 3......
Γλώσσες Προγραμματισμού Ταξινόμηση βάσει Φιλοσοφίας Προγραμματισμού Διαδικαστικές ή προστακτικές γλώσσες (Cobol, Algol,, Pascal, C): Το πρόγραμμα αποτελείται από διαδικασίες που κάθε μια εκτελεί μια δραστηριότητα, καλούνται από μια κεντρική διαδικασία και επικοινωνούν μεταξύ τους. Λέγονται προστακτικές λόγω των εντολών (προσταγών) τουςπροςτονη/υ. Αντικειμενοστρεφείς γλώσσες (C++, VisualBasic,, Java): Ο προγραμματισμός βασίζεται σε αντικείμενα κλάσεων. Κάθε κλάση περιγράφεται από ιδιότητες και διαδικασίες μεταβολής της κατάστασης των αντικειμένων της. Κάθε κλάση μπορεί να κληροδοτήσει ιδιότητες και διαδικασίες σε άλλες κλάσεις αντικειμένων. Τα αντικείμενα επικοινωνούν μεταξύ τους. Ταξινόμηση βάσει δυνατότητας επίλυσης προβλημάτων Γενικής χρήσης για επίλυση οποιουδήποτε προβλήματος: Basic, Pascal, C, C++, Java. Ειδικής χρήσης για συγκεκριμένα προβλήματα: Fortran-μαθηματικές εφαρμογές, COBOL-εμπορικές εφαρμογές, HTML-μορφοποίηση σελίδων, SQL-ερωτήματα σε βάσεις δεδομένων.
Λειτουργικά Συστήματα (ΛΣ) Το ΛΣ: είναι η 1 η εφαρμογή που «φορτώνεται» στη μνήμη του υπολογιστή η εκτέλεση όλων των υπόλοιπων προγραμμάτων εξαρτάται από αυτό. Χωρίζεται σε 2 μέρη: Πυρήνας (kernel): συντονίζει την εκτέλεση βασικών εργασιών του Η/Υ. Φλοιός (shell): συντονίζει την επικοινωνία χρηστών με τον Η/Υ. Το ΛΣ περιλαμβάνει προγράμματα για διαχείριση Επεξεργαστών: καθορίζει σειρά εκτέλεσης, βαθμό προτεραιότητας, διαθεσιμότητα πόρων και αποτροπή διενέξεων προγραμμάτων. Μνήμης: σωστή και χωρίς καθυστέρηση δέσμευση και αποδέσμευση μνήμης από τα προγράμματα. Αρχείων: δυνατότητα δημιουργίας, ανάγνωσης, διαγραφής και τροποποίησης αρχείων ανάλογα με το σύστημα αρχείων κάθε μέσου. Συσκευών: αποδοτική λειτουργία Ι/Ο μεαπόκρυψηειδικώνχαρ/κών του υλικού από το χρήστη. Εργασιών. Ασφαλείας: επίπεδα ασφαλείας με κωδικό πρόσβασης (password). Χρήση πόρων από αυστηρά εξουσιοδοτημένους χρήστες (υψηλό επίπεδο).
Λειτουργικά Συστήματα Κατηγορίες* Λειτουργικά Συστήματα: Πολλών χρηστών: ταυτόχρονη χρήση ενός υπολογιστή από πολλούς χρήστες. Πολλών επεξεργαστών: εκτέλεση ενός προγράμματος από πολλές CPU. Πολυδιεργασίας: εκτέλεση πολλών προγραμμάτων ταυτόχρονα από μια CPU. Πολυνηματικά: ταυτόχρονη εκτέλεση διαφορετικών τμημάτων προγράμματος. Πραγματικού χρόνου: άμεσηαπόκρισηστατερματικάτωνχρηστών. * «Εισαγωγή στην πληροφορική σκέψη» Μ. Σφακιανάκη.
Λειτουργικά Συστήματα Πολυπρογραμματισμός και Καταμερισμός Χρόνου* Εμπειρικές διαπιστώσεις: Σχέση χρόνου εκτέλεσης ενός υπολογισμού προς μία πράξη Ι/Ο 1/1000 η CPU εκτελεί πολύ γρήγορα υπολογισμούς αλλά μένει αδρανής, περιμένοντας, κατά τις πράξεις Ι/Ο. H/Y με ένα χρήστη: ο Η/Υ μένει συνήθως αδρανής και η υπολογιστική ισχύς του θα μπορούσε να χρησιμοποιηθεί για προγράμματα άλλων χρηστών. Στόχοι λειτουργικού: Μείωση χρόνου αδράνειας (idle time) μονάδων Η/Υ και χρόνου διεκπεραίωσης (turnaround time) δηλ. του χρόνου από το δόσιμο της εντολής μέχρι την προβολή αποτελέσματος. 1 ος στόχος Πολυπρογραμματισμός (multiprogramming): ταυτόχρονη εκτέλεση προγραμμάτων στην κοινή μνήμη του υπολογιστή. Το λειτουργικό διατηρεί την κατάσταση των προγραμμάτων, θέτει προτεραιότητα εντολών και αποφασίζει τη ροή εκτέλεσης με ειδικό αλγόριθμο χρονοδρομολόγησης (scheduling). 2 ος στόχος Καταμερισμός χρόνου (timesharing): κατανομή σταθερής ποσότητας χρόνου (χρονομερίδιο) σε κάθε χρήστη. Όλα τα προγράμματα προχωρούν με την ίδια ταχύτητα. Σειρά εξυπηρέτησης διεργασιών ανάλογα με προτεραιότητες. * «Εισαγωγή στην πληροφορική σκέψη» Μ. Σφακιανάκη.