Περιεχόμενα

1.      Κεφάλαιο 1. 1

Τι είναι πρόβλημα.. 1

Τι είναι δεδομένο, πληροφορία, επεξεργασία δεδομένων. 1

Τι είναι δομή προβλήματος. 1

Διαγραμματική αναπαράσταση προβλήματος. 1

Καθορισμός Απαιτήσεων. 1

Στάδια Αντιμετώπισης προβλήματος. 1

2.      Κεφάλαιο 2. 1

Τι είναι αλγόριθμος. 1

Ποια κριτήρια πρέπει να ικανοποιεί ένας αλγόριθμος. 1

Από ποιες σκοπιές μελετά η πληροφορική τους αλγορίθμους (επιγραμματικά και δικά μας λόγια)  1

Τρόποι αναπαράστασης ενός αλγορίθμου: 1

Σταθερές. 1

Μεταβλητή. 1

Τελεστές. 1

Απλή, Σύνθετη, Πολλαπλή, Εμφωλευμένη Επιλογή. 1

Ολίσθηση. 1

3.      Κεφάλαιο 3. 1

Από ποιες σκοπιές μελετά η πληροφορική τα δεδομένα (επιγραμματικά και δικά μας λόγια)  1

Τι είναι δομή δεδομένων. 1

Ποιες οι βασικές λειτουργίες (ή αλλιώς πράξεις) επί των δομών δεδομένων. 1

Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα. 1

Κατηγορίες Δομών Δεδομένων. 1

Πίνακες. 1

Σειριακή Αναζήτηση. 1

Πότε δικαιολογείται η χρήση της σειριακής αναζήτησης. 1

Δυαδική Αναζήτηση. 1

Ταξινόμηση Φυσαλίδας (Ευθείας Ανταλλαγής) 1

Ταξινόμηση με επιλογή. 1

4.      Κεφάλαιο 4. 1

Τι περιλαμβάνει η ανάλυση ενός προβλήματος σε ένα σύγχρονο υπολογιστικό περιβάλλον. 1

Ποια ερωτήματα πρέπει να απαντηθούν κατά την ανάλυση ενός προβλήματος. 1

Γιατί η ανάλυση κάθε προβλήματος είναι απαραίτητη. 1

Υπάρχει κανόνας για την επίλυση προβλημάτων?. 1

Γιατί παρουσιάζουν ενδιαφέρον οι μέθοδοι ανάλυσης και επίλυσης προβλημάτων. 1

5.      Κεφάλαιο 6. 1

Τι είναι πρόγραμμα.. 1

Γιατί αναπτύχθηκαν οι γλώσσες προγραμματισμού. 1

Τι είναι αλφάβητο. 1

Τι είναι λεξιλόγιο. 1

Τί είναι Γραμματική. 1

Τι είναι Τυπικό. 1

Τι είναι Συντακτικό. 1

Τι είναι σημασιολογία.. 1

Διαφορές φυσικών και τεχνητών γλωσσών. 1

Τι είναι – πως λειτουργεί η ιεραρχική σχεδίαση προγράμματος. 1

Ποιος ο σκοπός της ιεραρχικής σχεδίασης. 1

Τμηματικός Προγραμματισμός. 1

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

Πλεονεκτήματα Δομημένου Προγραμματισμού. 1

Τι είναι μεταγλωττιστής. 1

Τι είναι ο διερμηνευτής. 1

Τι είναι πηγαίο πρόγραμμα.. 1

Τι είναι συντάκτης κειμένου. 1

Τι είναι αντικείμενο πρόγραμμα. 1

Τι είναι συνδέτης – φορτωτής. 1

Τι είναι εκτελέσιμο πρόγραμμα.. 1

Ποια είναι η διαδικασία μεταγλώττισης και σύνδεσης. 1

Πλεονεκτήματα – Μειονεκτήματα Μεταγλωττιστή – Διερμηνευτή. 1

Τι χρειάζομαι για να γράψω – μεταφράσω – εκτελέσω ένα πρόγραμμα. 1

6.      Κεφάλαια 7,8,9. 1

Ποιες οι συναρτήσεις της Γλώσσας. 1

Τι είναι τα Εμφωλευμένα ΑΝ.. 1

Τι είναι τιμή φρουρός. 1

Κανόνες Εμφωλευμένων Βρόχος. 1

Τι είναι Πίνακας. 1

Πλεονέκτημα – Μειονεκτήματα Πινάκων. 1

7.      Κεφάλαιο 10. 1

Τι είναι τμηματικός προγραμματισμός. 1

Ιδιότητες – Χαρακτηριστικά Υποπρογραμμάτων. 1

Πλεονεκτήματα τμηματικού προγραμματισμού. 1

Τι είναι παράμετρος. 1

Τι είναι συνάρτηση. 1

Τι είναι διαδικασία.. 1

Ποιες λίστες παραμέτρων υπάρχουν. 1

Κανόνες που ακολουθούν οι λίστες παραμέτρων. 1

Τι λέγεται εμβέλεια μεταβλητών. 1

Κατηγορίες εμβέλειας. 1

8.      Κεφάλαιο 13. 1

Τι είναι εκσφαλμάτωση και ποιος ο στόχος. 1

 

1.    Κεφάλαιο 1

Τι είναι πρόβλημα

Με τον όρο Πρόβλημα εννοείται μια κατάσταση η οποία χρήζει αντιμετώπισης. απαιτεί λύση, η δε λύση της δεν είναι γνωστή ούτε προφανής.

Τι είναι δεδομένο, πληροφορία, επεξεργασία δεδομένων

Με τον όρο δεδομένο δηλώνεται οποιοδήποτε στοιχείο μπορεί να γίνει αντιληπτό από έναν τουλάχιστον παρατηρητή με μία από τις πέντε αισθήσεις του.

Με τον όρο πληροφορία αναφέρεται οποιοδήποτε γνωσιακό στοιχείο προέρχεται από επεξεργασία δεδομένων.

Ο όρος επεξεργασία δεδομένων δηλώνει εκείνη τη διαδικασία κατά την οποία ένας "μηχανισμός" δέχεται δεδομένα, τα επεξεργάζεται σύμφωνα με έναν προκαθορισμένο τρόπο και αποδίδει πληροφορίες.

Τι είναι δομή προβλήματος

Με τον όρο δομή ενός προβλήματος αναφερόμαστε στα συστατικά του μέρη, στα επιμέρους τμήματα που το αποτελούν καθώς επίσης και στον τρόπο που αυτά τα μέρη συνδέονται μεταξύ τους.

Διαγραμματική αναπαράσταση προβλήματος

Για τη γραφική απεικόνιση της δομής ενός προβλήματος χρησιμοποιείται συχνότατα η διαγραμματική αναπαράσταση. Σύμφωνα με αυτή:

·         το αρχικό πρόβλημα αναπαρίσταται από ένα ορθογώνιο παραλληλόγραμμο,

·          κάθε ένα από τα απλούστερα προβλήματα στα οποία αναλύεται ένα οποιοδήποτε πρόβλημα αναπαρίσταται επίσης από ένα ορθογώνιο παραλληλόγραμμο

·          τα παραλληλόγραμμα που αντιστοιχούν στα απλούστερα προβλήματα στα οποία αναλύεται ένα οποιοδήποτε πρόβλημα σχηματίζονται ένα επίπεδο χαμηλότερα. Έτσι σε κάθε κατώτερο επίπεδο, δημιουργείται η γραφική αναπαράσταση των προβλημάτων στα οποία αναλύονται τα προβλήματα του αμέσως υψηλότερου επιπέδου.

Καθορισμός Απαιτήσεων

Η σωστή επίλυση ενός προβλήματος προϋποθέτει τον επακριβή προσδιορισμό των δεδομένων που παρέχει το πρόβλημα. Απαιτεί επίσης τη λεπτομερειακή καταγραφή των ζητούμενων που αναμένονται σαν αποτελέσματα της επίλυσης του προβλήματος.

Στάδια Αντιμετώπισης προβλήματος

Τα στάδια αντιμετώπισης ενός προβλήματος είναι τρία

·         κατανόηση, όπου απαιτείται η σωστή και πλήρης αποσαφήνιση των δεδομένων και των ζητούμενων του προβλήματος

·         ανάλυση, όπου το αρχικό πρόβλημα διασπάται σε άλλα επιμέρους απλούστερα προβλήματα

·         επίλυση, όπου υλοποιείται η λύση του προβλήματος, μέσω της λύσης των επιμέρους προβλημάτων.

2.    Κεφάλαιο 2

Τι είναι αλγόριθμος

Αλγόριθμος είναι μια πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο χρόνο, που στοχεύουν στην επίλυση ενός προβλήματος.

Ποια κριτήρια πρέπει να ικανοποιεί ένας αλγόριθμος

α.      Είσοδος (input). Καμία μία ή περισσότερες τιμές δεδομένων πρέπει να δίνονται ως είσοδοι στον αλγόριθμο. Η περίπτωση που δεν δί­νονται τιμές δεδομένων εμφανίζεται, όταν ο αλγόριθμος δημιουργεί και επεξεργάζεται κάποιες πρωτογενείς τιμές με τη βοήθεια συναρ­τήσεων παραγωγής τυχαίων αριθμών ή με τη βοήθεια άλλων απλών εντολών.

β.      Έξοδος (output). Ο αλγόριθμος πρέπει να δημιουργεί τουλάχιστον μία τιμή δεδομένων ως αποτέλεσμα προς το χρήστη ή προς έναν άλλο αλγόριθμο.

γ.       Καθοριστικότητα (definiteness). Κάθε εντολή πρέπει να καθορίζεται χωρίς καμία αμφιβολία για τον τρόπο εκτέλεσής της. Λόγου χάριν, μία εντολή διαίρεσης πρέπει να θεωρεί και την περίπτωση όπου ο διαιρέτης λαμβάνει μηδενική τιμή.

δ.       Περατότητα (finiteness). Ο αλγόριθμος να τελειώνει μετά από πε­περασμένα βήματα εκτέλεσης των εντολών του. Μία διαδικασία που δεν τελειώνει μετά από ένα συγκεκριμένο αριθμό βημάτων δεν αποτελεί αλγόριθμο, αλλά λέγεται απλά υπολογιστική διαδικασία (computational procedure).

ε.       Αποτελεσματικότητα (effectiveness). Κάθε μεμονωμένη εντολή του αλγορίθμου να είναι απλή. Αυτό σημαίνει ότι μία εντολή δεν αρκεί να έχει ορισθεί, αλλά πρέπει να είναι και εκτελέσιμη.

Από ποιες σκοπιές μελετά η πληροφορική τους αλγορίθμους (επιγραμματικά και δικά μας λόγια)

α.      Υλικού (hardware). Η ταχύτητα εκτέλεσης ενός αλγορίθμου επηρεάζε­ται από τις διάφορες τεχνολογίες υλικού

β.      Γλωσσών Προγραμματισμού (programming languages).Το είδος της γλώσσας προγραμματισμού που χρησιμοποιείται (δηλαδή, χα­μηλότερου ή υψηλότερου επιπέδου) αλλάζει τη δομή και τον αριθμό των εντολών ενός αλγορίθμου.

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

δ.       Αναλυτική (analytical). Μελετώνται οι υπολογιστικοί πόροι (computer resources) που απαιτούνται από έναν αλγόριθμο,

Τρόποι αναπαράστασης ενός αλγορίθμου:

α.      με ελεύθερο κείμενο (free text), που αποτελεί τον πιο ανεπεξέργαστο και αδόμητο τρόπο παρουσίασης αλγορίθμου. Μπορεί να παραβιαστεί η αποτελεσματικότητα.

β.      με διαγραμματικές τεχνικές (diagramming techniques), που συνιστούν ένα γραφικό τρόπο παρουσίασης του αλγορίθμου. Από τις διά­φορες διαγραμματικές τεχνικές που έχουν επινοηθεί η πιο παλιά και η πιο γνωστή ίσως, είναι το διάγραμμα ροής (flow chart). Ωστόσο η χρήση διαγραμμάτων ροής για την παρουσίαση αλγορίθμων δεν απο­τελεί την καλύτερη λύση, για αυτό και εμφανίζονται όλο και σπανιότερα στη βιβλιογραφία και στην πράξη.

γ.       με φυσική γλώσσα (natural language) κατά βήματα. Στην περίπτωση αυτή χρειάζεται προσοχή, γιατί μπορεί να παραβιασθεί το τρίτο βασι­κό χαρακτηριστικό ενός αλγορίθμου, όπως προσδιορίσθηκε προηγου­μένως, δηλαδή το κριτήριο του καθορισμού.

δ.       με κωδικοποίηση (coding), δηλαδή με ένα πρόγραμμα γραμμένο είτε σε μία ψευδογλώσσα είτε σε κάποια γλώσσα προγραμματισμού που όταν εκτελεσθεί θα δώσει τα ίδια αποτελέσματα με τον αλγόριθμο.

Παράδειγμα :  Να δοθεί αλγόριθμος που διαβάζει τους βαθμούς ενός σπουδαστή σε δύο εργασίες, ενός μαθήματος και να ελέγχει αν έχει το δικαίωμα να δώσει γραπτή εξέταση. Ο σπουδαστής έχει το δικαίωμα να δώσει γραπτή εξέταση αν ο μέσος όρος της βαθμολογίας των δύο εργασιών είναι μεγαλύτερος του 5.

Ελεύθερο κείμενο:

Πάρε τους βαθμούς της πρώτης εργασίας και της δεύτερης εργασίας. Πρόσθεσε τους δύο βαθμούς και διαίρεσε το άθροισμα με το 2. Αν το αποτέλεσμα είναι μεγαλύτερο από το 5, τότε ο σπουδαστής έχει το δικαίωμα να δώσει γραπτή εξέταση. Διαφορετικά πρέπει να επαναλάβει το μάθημα.

Φυσική Γλώσσα με βήματα

Βήμα 1. Διάβασε τους βαθμούς των δύο εργασιών: Εργασία 1 και Εργασία 2

 Βήμα 2. Θέσε Άθροισμα = Εργασία 1 + Εργασία2

Βήμα 3. Θέσε Μέσος = Άθροισμα / 2

Βήμα 4. Αν Μέσος > 5 τότε πήγαινε στο βήμα 5 αλλιώς πήγαινε στο βήμα 7 Βήμα 5. Εμφάνισε "Μπορεί να δώσει γραπτή εξέταση"

Βήμα 6. Πήγαινε στο βήμα 8

Βήμα 7. Εμφάνισε "Πρέπει να επαναλάβει το μάθημα"

Βήμα 8. Τέλος Αλγορίθμου.

Κωδικοποίηση

Αλγόριθμος Σπουδαστής

Διάβασε Εργασία 1, Εργασία2

Άθροισμα <- Εργασία 1 + Εργασία2

Μέσος <- Άθροισμα / 2

Αν Μέσος > 5 Τότε

Εμφάνισε "Μπορεί να δώσει γραπτή εξέταση"

Αλλιώς

Εμφάνισε "Δεν Μπορεί να δώσει γραπτή εξέταση"

Τέλος_αν

Τέλος αλγορίθμου

 

 

Διαγραμματικές Τεχνικές

Διάγραμμα Ροής

 

Σταθερές

Σταθερές (constants). Με τον όρο αυτό αναφερόμαστε σε προκαθορισμένες τιμές που παραμένουν αμετάβλητες σε όλη τη διάρκεια της εκτέλεσης ενός αλγορίθμου. Οι σταθερές διακρίνονται σε

α.      αριθμητικές, π.χ. 123, +5, -1,25

β.      αλφαριθμητικές π.χ. Τιμή", ‘Κατάσταση αποτελεσμάτων"

γ.       λογικές μόνο 2 Αληθής και Ψευδής

Μεταβλητή

Μια μεταβλητή είναι ένα γλωσσικό αντικείμενο, που χρησιμοποιείται για να παραστήσει ένα στοιχείο δεδομένου., οι μεταβλητές διακρίνονται σε αριθμητικές(ακέραιο, πραγματικοί) αλφαριθμητικές(χαρακτήρες)  και λογικές.

Τελεστές

Τελεστές (operators). Πρόκειται για τα γνωστά σύμβολα που χρησιμοποιούνται στις διάφορες πρά­ξεις Οι τελεστές διακρίνονται σε αριθμητικούς λογικούς και συγκριτικούς.

Αριθμητικοί: +, -, \ /, Λ, div, mod (ιεραρχία όπως στα μαθηματικά)

Συγκριτικοί: <,<=,>,>=,=,<> (ιεραρχία από αριστερά προς δεξιά)

Λογικοί: όχι (άρνηση), και (σύζευξη), ή (διάζευξη),

Απλή, Σύνθετη, Πολλαπλή, Εμφωλευμένη Επιλογή

Απλή

Σύνθετη

Πολλαπλή   

Εμφωλευμένη

     

Ολίσθηση

Παίρνω ένα δεκαδικό ακέραιο και τον μετατρέπω στον δυαδικό αντίστοιχο. Αν μετακινήσω δεξιά κατά μία θέση τον δυαδικό αριθμό (δηλαδή χαθεί το δεξιότερο 0 ή 1) και στη θέση του μπει από αριστερά ένα 0 τότε έκανα ακέραια διαίρεση με το 2 (div 2). Αν μετακινήσω αριστερά  κατά μία θέση τον δυαδικό αριθμό (δηλαδή χαθεί το αριστερότερο  0 ή 1) και στη θέση του μπει από δεξιά  ένα 0 τότε έκανα πολλαπλασιασμό  με το 2 (* 2) .

3.    Κεφάλαιο 3

Από ποιες σκοπιές μελετά η πληροφορική τα δεδομένα (επιγραμματικά και δικά μας λόγια)

Υλικού. Το υλικό (hardware), δηλαδή η μηχανή, επιτρέπει στα δεδο­μένα ενός προγράμματος να αποθηκεύονται στην κύρια μνήμη και στις περιφερειακές συσκευές του υπολογιστή με διάφορες αναπαρα­στάσεις (representations

Γλωσσών προγραμματισμού. Οι γλώσσες προγραμματισμού υψη­λού επιπέδου (high level programming languages) επιτρέπουν τη χρήση διάφορων τύπων (types) μεταβλητών (variables) για να περι­γράφουν ένα δεδομένο.

Δομών Δεδομένων. -à εδώ περιγράφει τι είναι δομή δεδομένων, θα το δούμε μετά και τι είναι δομές δευτερεύουσας μνήμης και αυτό θα το δούμε μετά ß-

Ανάλυσης Δεδομένων. Τρόποι καταγραφής και αλληλοσυσχέτισης των δεδομένων μελετώνται έτσι ώστε να αναπαρασταθεΙ η γνώση για πραγματικά γεγονότα

Τι είναι δομή δεδομένων

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

Ποιες οι βασικές λειτουργίες (ή αλλιώς πράξεις) επί των δομών δεδομένων.

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

Πχ σε μια δυναμική δομή δεδομένων δεν γίνεται ταξινόμηση όπως σε μία στατική

Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα

Κατηγορίες Δομών Δεδομένων

Οι δομές δεδομένων διακρίνονται σε δύο μεγάλες κατηγορίες: τις στατικές (static) και τις δυναμικές (dynamic). Οι δυναμικές δομές δεν αποθηκεύονται σε συνεχόμενες θέσεις μνήμης αλλά στηρίζονται στην τεχνική της λεγόμενης δυναμικής παραχώρησης μνήμης (dynamic memory allocation). Με άλλα λόγια, οι δομές αυτές δεν έχουν σταθερό μέγεθος, αλλά ο αριθμός των κόμβων τους  μεγαλώνει και μικραίνει καθώς στη δομή εισάγονται νέα δεδομένα ή διαγράφονται κάποια δεδομένα αντίστοιχα.

·         Όλες οι σύγχρονες γλώσσες προσφέρουν δυναμικές δομές δεδομένων

·         Οι στατικές είναι πιο εύκολες στην υλοποίηση

Πίνακες

Με τον όρο στατική δομή δεδομένων:

·         Το ακριβές μέγεθος της απαιτούμενης κύριας μνήμης καθορίζεται κατά τη στιγμή του προγραμματισμού τους, και κατά συνέπεια κατά τη στιγμή της μετάφρασής τους και όχι κατά τη στιγμή της εκτέλεσης τους προγράμματος. ( θα το δούμε στο 6.7 μεταγλώττιση – εκτέλεση )

·         Μία άλλη σημαντική διαφορά σε σχέση με τις δυναμικές δομές είναι ότι τα στοιχεία των στατικών δομών αποθηκεύονται σε συνεχόμενες θέσεις μνήμης.

Οι στατικές δομές δεδομένων υλοποιούνται με πίνακες.

Σειριακή Αναζήτηση

flag ← ψευδής
θ ← 0
i ← 1
Όσο (flag=ψευδής) και (i<=n) επανάλαβε
          Αν table[i]=key τότε
               done ← αληθής
               θ ← i
          αλλιώς
               i ← i+1
          Τέλος_αν
Τέλος_επανάληψης

Αν done=ψευδής τότε

                Γράψε ‘Δεν βρέθηκε’

Αλλιώς

                Γράψε ‘Βρέθηκε στη θέση’,θ

Τέλος_αν

 

Ή

 

Αν θ=0 τότε

                Γράψε ‘Δεν βρέθηκε’

Αλλιώς

                Γράψε ‘Βρέθηκε στη θέση’,θ

Τέλος_αν

 

Πότε δικαιολογείται η χρήση της σειριακής αναζήτησης

Δυαδική Αναζήτηση

Η δυαδική αναζήτηση στηρίζει τη λειτουργία της στο γεγονός ότι ο πίνακας είναι ταξινομημένος. Έτσι με χρήση δυο δεικτών του L ( Left ) και του R ( Right ) καθορίζει αρχικά την αρχή και το τέλος του πίνακα. Από τις τιμές των δυο αυτών δεικτών υπολογίζει τη μεσαία θέση του πίνακα (M = (L+R) DIV 2) και εκεί κάνει τη σύγκριση με το στοιχείο που ψάχνει. Αν το στοιχείο που υπάρχει στη μεσαία θέση είναι μικρότερο από αυτό που ψάχνουμε τότε το τελευταίο αποκλείεται να βρίσκεται αριστερά από τη θέση του Μ , άρα μετακινεί τον δείκτη L μια θέση δεξιά από το M ορίζοντας έτσι μια άλλη περιοχή του πίνακα στην οποία θα γίνει η αναζήτηση . Στην πραγματικότητα αφαιρεί από την αναζήτηση το τμήμα του πίνακα που βρίσκεται αριστερά του Μ . Το αντίστοιχο συμβαίνει αν το στοιχείο που περιέχεται στη θέση Μ είναι μεγαλύτερο από αυτό που ψάχνουμε.
Όλη αυτή η διαδικασία έχει ως αποτέλεσμα την ταχύτατη εύρεση του υπό αναζήτηση στοιχείου.

L←1
R←n
flag ←ΨΕΥΔΗΣ
Όσο flag=ΨΕΥΔΗΣ και L<=R επανάλαβε
                M←(L+R) DIV 2
                Αν table[M] = key τότε
                                D← ΑΛΗΘΗΣ
                Αλλιώς_αν table[M]<key τότε 
                                L←M+1
                Αλλιώς
                                R←M-1
                Τέλος_αν
Τέλος_επανάληψης
Αν flag  = ΑΛΗΘΗΣ τότε
                Εμφάνισε ‘Βρέθηκε το στοιχείο στη θέση:’, Μ
Αλλιώς
                Εμφάνισε ‘Δεν βρέθηκε το στοιχείο’
Τέλος_αν

Ταξινόμηση Φυσαλίδας (Ευθείας Ανταλλαγής)

Για i από 2 μέχρι n

    Για j από n μέχρι i με_βήμα -1

        Αν table[j-1] > table[j] τότε

Tempß table[j-1]

table[j-1] ß table[j]

table[j] ß temp

        Τέλος_αν

    Τέλος_επανάληψης

Τέλος_επανάληψης

Παρατήρηση: Η ταξινόμηση φυσαλίδας είναι ο πιο απλός και ταυτόχρονα ο πιο αργός αλγόριθμος ταξινόμησης.

Ταξινόμηση με επιλογή

Για i από 1 μέχρι Ν

j ← i
min ← A[j]
Για k από i + 1 μέχρι Ν

Αν A[k] < min τότε

j k
min A[j]

Τέλος_αν

Τέλος_επανάληψης

temp ← A[i]
A[i] ← A[j]
A[j] ← temp

Τέλος_επανάληψης

4.    Κεφάλαιο 4

Τι περιλαμβάνει η ανάλυση ενός προβλήματος σε ένα σύγχρονο υπολογιστικό περιβάλλον

1.       την καταγραφή της υπάρχουσας πληροφορίας για το πρόβλημα,

2.       την αναγνώριση των ιδιαιτεροτήτων του προβλήματος,

3.       την αποτύπωση των συνθηκών και προϋποθέσεων υλοποίησής του

4.       την πρόταση επίλυσης με χρήση κάποιας μεθόδου, και

5.       την τελική επίλυση με χρήση υπολογιστικών συστημάτων.

Ποια ερωτήματα πρέπει να απαντηθούν κατά την ανάλυση ενός προβλήματος

1.       Ποια είναι τα δεδομένα και το μέγεθος του προβλήματος,

2.       Ποιες είναι οι συνθήκες που πρέπει να πληρούνται για την επίλυση του προβλήματος,

3.       Ποια είναι η πλέον αποδοτική μέθοδος επίλυσής τους (σχεδίαση αλγορίθμου),

4.       Πώς θα καταγραφεί η λύση σε ένα πρόβλημα (π.χ. σε ψευδογλώσσα),

5.       Ποιος είναι ο τρόπος υλοποίησης στο συγκεκριμένο υπολογιστικό σύστημα (π.χ. επιλογή γλώσσας προγραμματισμού).

Γιατί η ανάλυση κάθε προβλήματος είναι απαραίτητη

Για να αναζητηθεί η πλέον κατάλληλη μέθοδος που να παρέχει τη ζητούμενη λύση, όσο γίνεται ταχύτερα και με το λιγότερο δυνατό

κόστος σε υπολογιστικούς πόρους.

Υπάρχει κανόνας για την επίλυση προβλημάτων?

Δεν υπάρχει ένας ενιαίος κανόνας, μία γενική φόρμουλα που να αναφέρεται στην επίλυση του συνόλου των

προβλημάτων. Υπάρχουν όμως "συγγενή" προβλήματα, δηλαδή προβλήματα που μπορούν να αναλυθούν με παρόμοιο τρόπο και να αντιμετωπισθούν με αντίστοιχες μεθόδους και τεχνικές

Γιατί παρουσιάζουν ενδιαφέρον οι μέθοδοι ανάλυσης και επίλυσης προβλημάτων

1.       παρέχουν ένα γενικό πρότυπο κατάλληλο για την επίλυση προβλημάτων ευρείας κλίμακας,

2.       μπορούν να αναπαρασταθούν με κοινές δομές δεδομένων και ελέγχου

3.       παρέχουν τη δυνατότητα καταγραφής των χρονικών και "χωρικών" απαιτήσεων της μεθόδου επίλυσης, έτσι ώστε να μπορεί να γίνει επακριβής εκτίμηση των αποτελεσμάτων.

5.    Κεφάλαιο 6

Τι είναι πρόγραμμα

Πρόγραμμα είναι το σύνολο των εντολών που πρέπει να δοθούν στον υπολογιστή, ώστε να υλοποιηθεί ο αλγόριθμος για την επίλυση του προβλήματος. 

Γιατί αναπτύχθηκαν οι γλώσσες προγραμματισμού

Οι γλώσσες προγραμματισμού αναπτύχθηκαν για την επικοινωνία ανθρώπου – υπολογιστή

 Τι είναι αλφάβητο

Αλφάβητο μίας γλώσσας καλείται το σύνολο των στοιχείων που χρησιμοποιείται από τη γλώσσα. (Α-Ω , 0-9 κλπ)

Τι είναι λεξιλόγιο

Το λεξιλόγιο αποτελείται από ένα υποσύνολο όλων των ακολουθιών που δημιουργούνται από τα στοιχεία του αλφαβήτου, τις λέξεις που είναι δεκτές από την γλώσσα. (ΑΒΓΑ όχι ΑΒΓΔΑ)

Τί είναι Γραμματική

Η Γραμματική αποτελείται από το τυπικό ή τυπολογικό (accidence) και το συντακτικό (syntax).

Τι είναι Τυπικό

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

Τι είναι Συντακτικό

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

Τι είναι σημασιολογία

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

Διαφορές φυσικών και τεχνητών γλωσσών.

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

Τι είναι – πως λειτουργεί η ιεραρχική σχεδίαση προγράμματος.

Η τεχνική της ιεραρχικής σχεδίασης και επίλυσης ή η διαδικασία σχεδίασης "από επάνω προς τα κάτω" όπως συχνά ονομάζεται (top-down program design) περιλαμβάνει τον καθορισμό των βασικών λειτουργιών ενός προγράμματος, σε ανώτερο επίπεδο, και στη συνέχεια τη διάσπαση των λειτουργιών αυτών σε όλο και μικρότερες λειτουργίες, μέχρι το τελευταίο επίπεδο που οι λειτουργίες είναι πολύ άπλες, ώστε να επιλυθούν εύκολα.

Ποιος ο σκοπός της ιεραρχικής σχεδίασης

Σκοπός της ιεραρχικής σχεδίασης είναι η διάσπαση λοιπόν του προβλήματος σε μια σειρά από απλούστερα υποπροβλήματα, τα οποία να είναι εύκολο να επιλυθούν οδηγώντας στην επίλυση του αρχικού προβλήματος.

Τμηματικός Προγραμματισμός

Η ιεραρχική σχεδίαση προγράμματος υλοποιείται με τον τμηματικό προγραμματισμό. Μετά την ανάλυση του προβλήματος σε αντίστοιχα υποπροβλήματα, κάθε υποπρόβλημα αποτελεί ανεξάρτητη ενότητα (module), που γράφεται ξεχωριστά από τα υπόλοιπα τμήματα προγράμματος.

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

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

Πλεονεκτήματα Δομημένου Προγραμματισμού

1.       Δημιουργία απλούστερων προγραμμάτων.

2.       Άμεση μεταφορά των αλγορίθμων σε προγράμματα.

3.       Διευκόλυνση ανάλυσης του προγράμματος σε τμήματα.

4.       Περιορισμός των λαθών κατά την ανάπτυξη του προγράμματος.

5.       Διευκόλυνση στην ανάγνωση και κατανόηση του προγράμματος από τρίτους.

6.       Ευκολότερη διόρθωση και συντήρηση.

 

Τι είναι μεταγλωττιστής

Ο μεταγλωττιστής είναι ένα μεταφραστικό πρόγραμμα, που δέχεται στην είσοδο ένα πρόγραμμα γραμμένο σε μια γλώσσα υψηλού επιπέδου και παράγει ένα ισοδύναμο πρόγραμμα σε γλώσσα μηχανής. Το τελευταίο μπορεί να εκτελείται οποτεδήποτε από τον υπολογιστή και είναι τελείως ανεξάρτητο από το αρχικό πρόγραμμα.

Τι είναι ο διερμηνευτής

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

Τι είναι πηγαίο πρόγραμμα

Το αρχικό πρόγραμμα λέγεται πηγαίο πρόγραμμα (source) (κατανοητό από τον άνθρωπο)

Τι είναι συντάκτης κειμένου

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

Τι είναι αντικείμενο πρόγραμμα

Το πρόγραμμα που παράγεται από το μεταγλωττιστή λέγεται αντικείμενο πρόγραμμα (object). (ακατανόητο από τον άνθρωπο)

Τι είναι συνδέτης – φορτωτής

Το αντικείμενο πρόγραμμα είναι μεν σε μορφή κατανοητή από τον υπολογιστή, αλλά συνήθως δεν είναι σε θέση να εκτελεστεί. Χρειάζεται να συμπληρωθεί και να συνδεθεί με άλλα τμήματα προγράμματος απαραίτητα για την εκτέλεσή του, τμήματα που είτε τα γράφει ο προγραμματιστής είτε βρίσκονται στις βιβλιοθήκες (libraries) της γλώσσας. Το πρόγραμμα που επιτρέπει αυτή τη σύνδεση ονομάζεται συνδέτης - φορτωτής (linker- loader)

Τι είναι εκτελέσιμο πρόγραμμα

Το αποτέλεσμα του συνδέτη είναι η παραγωγή του εκτελέσιμου προγράμματος (executable), το οποίο είναι το τελικό πρόγραμμα που εκτελείται από τον υπολογιστή. (ακατανόητο από τον άνθρωπο)

Ποια είναι η διαδικασία μεταγλώττισης και σύνδεσης

 

Σχ. 3.9. Μία λίστα με τέσσερις κόμβους

Πλεονεκτήματα – Μειονεκτήματα Μεταγλωττιστή – Διερμηνευτή

Μεταγλωττιστής

                Μειονέκτημα: Πρέπει όλα το πρόγραμμα να μεταγλωττιστεί και μετά να εκτελεστεί.

                Πλεονέκτημα: Πιο γρήγορο εκτελέσιμο πρόγραμμα

  Διερμηνευτής:

                Μειονέκτημα: Πιο αργό  εκτελέσιμο πρόγραμμα

                Πλεονέκτημα: Άμεση διόρθωση και εκτέλεση

Τι χρειάζομαι για να γράψω – μεταφράσω – εκτελέσω ένα πρόγραμμα

Για τη δημιουργία, τη μετάφραση και την εκτέλεση ενός προγράμματος απαιτούνται τουλάχιστον τρία προγράμματα: ο συντάκτης, ο μεταγλωττιστής και ο συνδέτης. Τα σύγχρονα προγραμματιστικά περιβάλλοντα παρέχουν αυτά τα προγράμματα με ενιαίο τρόπο.

6.    Κεφάλαια 7,8,9

Ποιες οι συναρτήσεις της Γλώσσας

ΗΜ(Χ)

Υπολογισμός ημίτονου

ΣΥΝ(Χ)

Υπολογισμός συνημίτονου

ΕΦ(Χ)

Υπολογισμός εφαπτομένης

Τ_Ρ(Χ)

Υπολογισμός τετραγωνικής ρίζας

ΛΟΓ(Χ)

Υπολογισμός φυσικού λογαρίθμου

Ε(Χ)

Υπολογισμός του ex

Α_Μ(Χ)

Ακέραιο μέρος του Χ

Α_Τ(Χ)

Απόλυτη τιμή του Χ

Τι είναι τα Εμφωλευμένα ΑΝ

Εμφωλευμένα ΑΝ ονομάζονται δύο ή περισσότερες εντολές της μορφής ΑΝ...ΤΟΤΕ...ΑΛΛΙΩΣ που περιέχονται η μία μέσα στην άλλη.

Τι είναι τιμή φρουρός

Είναι η τιμή που βάζουμε ( τις πιο πολλές φορές το 0 )    στις επαναλήψεις για να σταματάνε.

Κανόνες Εμφωλευμένων Βρόχος  

Τι είναι Πίνακας

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

Πλεονέκτημα – Μειονεκτήματα Πινάκων

Πλεονεκτήματα

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

Μειονεκτήματα

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

·         Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος (Αφού οι πίνακες είναι στατικές δομές δεδομένων και δεν αλλάζουν μέγεθος)

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

7.    Κεφάλαιο 10

Τι είναι τμηματικός προγραμματισμός

Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων.

Ιδιότητες – Χαρακτηριστικά Υποπρογραμμάτων

Πλεονεκτήματα τμηματικού προγραμματισμού

·         Διευκολύνει την ανάπτυξη του αλγορίθμου και του αντιστοίχου προγράμματος.

Λύνουμε απλούστερα προβλήματα και όχι όλο το πρόβλημα. Αφού λύσουμε όλα τα υποπροβλήματα μετά επιλύεται το συνολικό πρόβλημα

·         Διευκολύνει την κατανόηση και διόρθωση του προγράμματος.

Με τον χωρισμό σε υποπρογράμματα γίνεται πιο εύκολη η διόρθωση χωρίς να επηρεάζεται όλο το πρόγραμμα. Επίσης μπορεί κάποιος να κατανοήσει το πρόγραμμα.

·         Απαιτεί λιγότερο χρόνο και προσπάθεια στη συγγραφή του προγράμματος.

Πολύ συχνά χρειάζεται η ίδια λειτουργία σε διαφορετικά σημεία ενός προγράμματος. Από τη στιγμή που ένα υποπρόγραμμα έχει γραφεί, μπορεί το ίδιο να καλείται από πολλά σημεία του προγράμματος. Έτσι μειώνονται το μέγεθος του προγράμματος, ο χρόνος που απαιτείται για τη συγγραφή του και οι πιθανότητες λάθους, ενώ ταυτόχρονα το πρόγραμμα γίνεται πιο εύληπτο και κατανοητό.

·         Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού.

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

Τι είναι παράμετρος

Μία παράμετρος είναι μία μεταβλητή που επιτρέπει το πέρασμα της τιμής της από ένα τμήμα προγράμματος σε ένα άλλο.

Τι είναι συνάρτηση

Η συνάρτηση είναι ένας τύπος υποπρογράμματος που υπολογίζει και επιστρέφει μόνο μία τιμή με το όνομά της (όπως οι μαθηματικές συναρτήσεις).

Τι είναι διαδικασία

Η διαδικασία είναι ένας τύπος υποπρογράμματος που μπορεί να εκτελεί όλες τις λειτουργίες ενός προγράμματος.

Ποιες λίστες παραμέτρων υπάρχουν.

Η λίστα των τυπικών παραμέτρων (formal parameter list) καθορίζει τις παραμέτρους στη δήλωση του υποπρογράμματος.
Η λίστα των πραγματικών παραμέτρων (actual parameter list) καθορίζει τις παραμέτρους στην κλήση του υποπρογράμματος.

Πολλές φορές η λίστα των τυπικών παραμέτρων λέγονται ορίσματα και αυτή των πραγματικών παραμέτρων παράμετροι.

Κανόνες που ακολουθούν οι λίστες παραμέτρων

·         Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ίδιος.

·         Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική παράμετρο που βρίσκεται στην αντίστοιχη θέση. Για παράδειγμα η πρώτη της λίστας των τυπικών παραμέτρων στην πρώτη της λίστας των πραγματικών παραμέτρων κοκ.

·         Η τυπική παράμετρος και η αντίστοιχη της πραγματική πρέπει να είναι του ιδίου τύπου.

Τι λέγεται εμβέλεια μεταβλητών

Το τμήμα του προγράμματος που ισχύουν οι μεταβλητές λέγεται εμβέλεια (scope) μεταβλητών.

Κατηγορίες εμβέλειας

Απεριόριστη Εμβέλεια

Όλες οι μεταβλητές και όλες οι σταθερές είναι γνωστές και μπορούν να χρησιμοποιούνται σε οποιοδήποτε τμήμα του προγράμματος, άσχετα που δηλώθηκαν. Όλες οι μεταβλητές είναι καθολικές. Η απεριόριστη εμβέλεια καταστρατηγεί την αρχή της αυτονομίας των υποπρογραμμάτων.

Περιορισμένη εμβέλεια

Η περιορισμένη εμβέλεια υποχρεώνει όλες τις μεταβλητές που χρησιμοποιούνται σε ένα τμήμα προγράμματος, να δηλώνονται σε αυτό το τμήμα. Όλες οι μεταβλητές είναι τοπικές, ισχύουν δηλαδή για το υποπρόγραμμα στο οποίο δηλώθηκαν. Στη ΓΛΩΣΣΑ έχουμε περιορισμένη εμβέλεια.

Μερικώς περιορισμένη εμβέλεια.

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

8.    Κεφάλαιο 13

Τι είναι εκσφαλμάτωση και ποιος ο στόχος.

Η διαδικασία ελέγχου, εντοπισμού και διόρθωσης των σφαλμάτων ενός προγράμματος καλείται εκσφαλμάτωση (debugging). Στόχος της διαδικασίας εκσφαλμάτωσης είναι ο εντοπισμός των σημείων του προγράμματος που προκαλούν προβλήματα στη λειτουργία του.