ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ 1 ο ΚΕΦΑΛΑΙΟ 1) Τι είναι πρόβλημα (σελ. 3) 2) Τι είναι δεδομένο, πληροφορία, επεξεργασία δεδομένων (σελ. 8) 3) Τι είναι δομή ενός προβλήματος (σελ. 8) 4) Τι είναι διαγραμματική αναπαράσταση (σελ. 10) 5) Στάδια αντιμετώπισης προβλήματος (Κατανόηση Ανάλυση Επίλυση) 6) Κατηγορίες προβλημάτων (σελ. 16) Με κριτήριο τη δυνατότητα επίλυσης (Επιλύσιμα, Ανοικτά, Άλυτα) Με κριτήριο το βαθμό δόμησης (Δομημένα, Ημιδομημένα, Αδόμητα) Με κριτήριο το είδος επίλυσης (Απόφασης, Υπολογιστικά, Βελτιστοποίησης) 7) Ποιοι είναι οι λόγοι που αναθέτουμε την λύση ενός προβλήματος σε υπολογιστή (σελ. 19) 8) Ποιες λειτουργίες επιτελεί ο υπολογιστής (πρόσθεση, σύγκριση, μεταφορά δεδομένων σελ. 19) 2 ο ΚΕΦΑΛΑΙΟ 1) Τι είναι αλγόριθμος (σελ. 25) 2) Τα κριτήρια που πρέπει να ικανοποιεί κάθε αλγόριθμος (Είσοδο, Έξοδο, Καθοριστικότητα, Περατότητα, Αποτελεσματικότητα σελ. 25) 3) Από ποια σκοπιά μελετά η πληροφορική τους αλγορίθμους (Υλικού, Γλωσσών Προγραμματισμού, Θεωρητική, Αναλυτική σελ. 27) 4) Τρόποι αναπαράστασης αλγορίθμου (ελεύθερο κείμενο, διαγραμματικές τεχνικές, φυσική γλώσσα, κωδικοποίηση σελ. 28) 5) Σύμβολα διαγράμματος ροής (σελ. 29) 6) Τι είναι ακολουθιακή δομή (σελ. 30) 7) Τι είναι σταθερές, μεταβλητές, τελεστές, εκφράσεις (σελ. 31) 8) Τις δομές επιλογής (σελ. 32) 9) Τι είναι οι εμφωλευμένες διαδικασίες (σελ. 37) 10) Τον πίνακα των 3 λογικών πράξεων (ΚΑΙ, Ή, ΌΧΙ σελ. 39) 11) Επαναληπτικές δομές (σελ. 39) 12) Ολίσθηση (σελ. 45) 13) Στοιχεία ψευδογλώσσας (σελ. 46) 3 ο ΚΕΦΑΛΑΙΟ 1) Από ποια σκοπιά μελετά η πληροφορική τα δεδομένα (Υλικού, Γλωσσών προγραμματισμού, Δομών Δεδομένων, Ανάλυσης Δεδομένων σελ. 53) 2) Τι είναι δομή δεδομένων (σελ. 54) 3) Οι βασικές λειτουργίες (ή πράξης) επί των δομών δεδομένων (Προσπέλαση, Εισαγωγή, Διαγραφή, Αναζήτηση, Ταξινόμηση, Αντιγραφή, Συγχώνευση, Διαχωρισμός) 4) Λειτουργίες στοίβας (ώθηση, απώθηση σελ. 59) LIFO 5) Λειτουργίες ουράς (εισαγωγή, εξαγωγή σελ. 60) FIFO
6) Πότε χρησιμοποιούμε σειριακή αναζήτηση (πίνακας μη ταξινομημένος, πίνακας μικρός με λιγότερο από 20 στοιχεία, γίνεται αναζήτηση σπάνια στον πίνακα σελ. 65) 7) Ορισμός ταξινόμησης (σελ. 66) 8) Δομές δεδομένων δευτερεύουσας μνήμης (σελ.67) 6 ο ΚΕΦΑΛΑΙΟ 1) Τι είναι οι γλώσσες μηχανής; (σελ. 118) 2) Ποιες οι διαφορές των γλωσσών υψηλού επιπέδου από αυτές χαμηλού επιπέδου; (σελ.118) 3) Ποιες γλώσσες υψηλού επιπέδου γνωρίζεις; (σελ.119) 4) Τι ονομάζουμε οπτικό προγραμματισμό και τι οδηγούμενο από το γεγονός; (σελ.125) 5) Ποια είναι τα πλεονεκτήματα των γλωσσών υψηλού επιπέδου; 6) Ποιες οι διαφορές των φυσικών και των τεχνητών γλωσσών; (σελ.130) 7) Τι είναι ιεραρχική σχεδίαση; (σελ. 132) 8) Τι είναι τμηματικός προγραμματισμός; (σελ.132) 9) Τι είναι δομημένος προγραμματισμός; 10) Ποια είναι τα πλεονεκτήματα του δομημένου προγραμματισμού; (σελ. 136) 11) Ποιες οι διαφορές μεταγλωττιστή και διερμηνευτή; (σελ. 138) 12) Πλεονεκτήματα και μειονεκτήματα μεταγλωττιστή και διερμηνευτή; (σελ.138,139) 7 ο ΚΕΦΑΛΑΙΟ 1) Ποιους τύπου δεδομένων γνωρίζετε; (Ακέραιες, Πραγματικές, Λογικές, Χαρακτήρες σελ. 148) 2) Σε ποια θέση αναγράφονται οι δηλώσεις των σταθερών; (Τμήμα δηλώσεων σελ. 149) 3) Ποια η διαφορά μεταβλητών και σταθερών; (σελ. 149, 151) 4) Ποια η σειρά εκτέλεσης πράξεων; ( ^, *, /, +, - σελ.154) 5) Ποιος είναι ο σκοπός των εντολών εισόδου εξόδου; (σελ. 155) 6) Ποια η διαφορά των εντολών ΔΙΑΒΑΣΕ και ΓΡΑΨΕ; (σελ. 156) 7) Περιγράψτε την δομή ενός προγράμματος. (σελ. 157) 8 ο ΚΕΦΑΛΑΙΟ 1) Ποιες τιμές μπορεί να πάρει μια λογική έκφραση; (ΑΛΗΘΗΣ, ΨΕΥΔΗΣ σελ. 165) 2) Ποιοι είναι οι βασικοί λογικοί τελεστές; (ΟΧΙ, ΚΑΙ, Ή σελ. 166) 3) Ποια είναι οι σύνταξη της ΑΝ, ΑΝ ΑΛΛΙΩΣ, ΑΝ ΑΛΛΙΩΣ_ΑΝ (σελ. 166) 4) Τι είναι τα εμφωλευμένα ΑΝ; (σελ. 169) 5) Ποια είναι οι σύνταξη της ΕΠΙΛΕΞΕ (σελ. 172) 6) Ποιες είναι οι εντολές επανάληψης; (ΓΙΑ ΑΠΟ ΜΕΧΡΙ, ΟΣΟ ΕΠΑΝΑΛΑΒΕ, ΜΕΧΡΙΣ_ΟΤΟΥ σελ. 173) 7) Ποιες οι διαφορές της εντολής ΟΣΟ και της εντολής ΜΕΧΡΙΣ_ΟΤΟΥ; (σελ. 173-175) *** Η ΟΣΟ ελέγχει την συνθήκη τερματισμού στην αρχή κάθε επανάληψης, ενώ η ΜΕΧΡΙΣ_ΟΤΟΥ στο τέλος
Η ΟΣΟ τερματίζει όταν η συνθήκη είναι ΨΕΥΔΗΣ, ενώ η ΜΕΧΡΙΣ_ΟΤΟΥ όταν είναι ΑΛΗΘΗΣ Η ΟΣΟ μπορεί να μην εκτελέσει τις εντολές της, ενώ η ΜΕΧΡΙΣ_ΟΤΟΥ τις εκτελεί τουλάχιστον μία φορά 8) Ποιες οι διαφορές της ΓΙΑ από την ΟΣΟ και την ΜΕΧΡΙΣ_ΟΤΟΥ; *** Η ΓΙΑ εκτελεί τις εντολές της προκαθορισμένο αριθμό επαναλήψεων, ενώ η ΟΣΟ και η ΜΕΧΡΙΣ_ΟΤΟΥ εκτελούν τις εντολές τους κατά συνθήκη. Η ΓΙΑ δημιουργεί έναν δείκτη (μετρητή), ενώ η ΟΣΟ και η ΜΕΧΡΙΣ_ΟΤΟΥ όχι 9) Ποιοι κανόνες πρέπει να πληρούνται σε εμφωλευμένους βρόχους; (σελ. 180) 9 ο ΚΕΦΑΛΑΙΟ 1) Τι ονομάζεται πίνακας; (σελ. 187) 2) Ποια τα μειονεκτήματα της χρήσης πινάκων (σελ. 191) Οι πίνακες απαιτούν μνήμη Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος 3) Ποιες είναι οι τυπικές επεξεργασίες των πινάκων; Υπολογισμός αθροισμάτων στοιχείων του πίνακα Εύρεση του μεγίστου ή του ελαχίστου στοιχείου Ταξινόμηση των στοιχείων του πίνακα Αναζήτηση ενός στοιχείου του πίνακα Συγχώνευση δύο πινάκων 4) Ποιοι είναι οι πιο διαδεδομένοι αλγόριθμοι αναζήτησης; Ποιες οι διαφορές τους; (σελ. 199) 10 ο ΚΕΦΑΛΑΙΟ 1) Τι είναι τμηματικός προγραμματισμός; (σελ. 205) 2) Ποια είναι τα χαρακτηριστικά των υποπρογραμμάτων; (σελ. 208) 3) Ποια είναι τα πλεονεκτήματα του τμηματικού προγραμματισμού; (σελ. 208) 4) Τι είναι παράμετρος και ποια η διαφορά της από μια απλή μεταβλητή; (σελ. 210) 5) Ποια είναι η διαφορά διαδικασιών και συναρτήσεων. (σελ. 210) 6) Τι είναι συνάρτηση και τι διαδικασία; (σελ. 211) 7) Πως γίνεται η κλήση μιας συνάρτησης και πως μιας διαδικασίας; (σελ. 213, 214) 8) Ποια η διαφορά τυπικών και πραγματικών παραμέτρων; (σελ. 216) 9) Ποιους κανόνες πρέπει να ακολουθούν οι λίστες παραμέτρων; (σελ.220)
Λειτουργίες Πινάκων Μονοδιάστατοι Δισδιάστατοι Εκχώρηση, καταχώρηση, αποθήκευση Εκχώρηση, καταχώρηση, αποθήκευση δεδομένων δεδομένων Αρχή_επανάληψης Γράψε Δώσε το,i, δεδομένο Διάβασε α[i] Μέχρις_ότου <συνθήκη>! (στη συνθήκη βάζουμε τις τιμές που επιτρέπεται να!εκχωρηθούν στο πίνακα) Αρχή_επανάληψης Γράψε Δώσε το,i, δεδομένο Διάβασε α[i,j] Μέχρις_ότου <συνθήκη>! (στη συνθήκη βάζουμε τις τιμές που επιτρέπεται να!εκχωρηθούν στο πίνακα) s s+α[i] μο s/ν Γράψε μο,s s s+α[i,j] μο s/(ν*μ) Γράψε μο,s Εύρεση ελαχίστου μεγίστου στοιχείου min α[1] max α[1] εντολές1 Για i από 2 μέχρι ν Αν α[i]>max τότε max α[i] εντολές2 Εύρεση ελαχίστου μεγίστου στοιχείου min α[1,1] max α[1,1] εντολές1 Αν α[i,j]>max τότε max α[i,j] εντολές2
Αν α[i]<min τότε min α[i] εντολές3 Γράψε min,max Στις εντολες1 αρχικοποιούμε πρόσθετες παραμέτρους π.χ θέση 1 Στις εντολες2,3 συνήθως βάζουμε πρόσθετες μεταβλητές για να κρατήσουμε πρόσθετα στοιχεία για το χαρακτηριστικό που ελέγχουμε π.χ την θέση που βρέθηκε το max ή min με την εντολή θέση i Προσοχή στις εντολές2,3 δεν βάζουμε εντολές Γράψε, Εμφάνισε διότι οι μεταβλητές παίρνουν τις τελικές τιμές αφού ολοκληρωθούν όλες οι επαναλήψεις Αλγόριθμος της φυσαλίδας Για i από 2 μέχρι ν Για j από ν μέχρι i με_βήμα -1 Αν α[j-1]>α[j] τότε temp α[j] α[j] α[j-1] α[j-1] temp Αν α[i,j]<min τότε min α[i,j] εντολές3 Γράψε min,max Στις εντολες1 αρχικοποιούμε πρόσθετες παραμέτρους π.χ θέσηi 1 θέσηj 1 Στις εντολες2,3 συνήθως βάζουμε πρόσθετες μεταβλητές για να κρατήσουμε πρόσθετα στοιχεία για το χαρακτηριστικό που ελέγχουμε π.χ την θέση που βρέθηκε το max ή min με τις εντολές θέσηi i θέσηj j Προσοχή στις εντολές2,3 δεν βάζουμε εντολές Γράψε, Εμφάνισε διότι οι μεταβλητές παίρνουν τις τελικές τιμές αφού ολοκληρωθούν όλες οι επαναλήψεις γραμμών s s+α[i,j] μο[i] s/μ Συνήθως περνάμε τα αποτελέσματα σε
Η συνθήκη α[j-1]>α[j] καθορίζει το είδος της ταξινόμησης. Η συγκεκριμένη συνθήκη ταξινομεί τον πίνακα σε αύξουσα σειρά ενώ η α[j-1]<α[j] σε φθίνουσα σειρά Συνήθως στα προβλήματα πρέπει να κρατήσουμε και την αντιστοιχία με άλλους πίνακας για αυτό αντιμεταθέτουμε μέσα στην Αν και τα στοιχεία των πινάκων που υπάρχει η αντιστοιχία. Π.χ Για i από 2 μέχρι ν Για j από ν μέχρι i με_βήμα -1 Αν α[j-1]>α[j] τότε temp α[j] α[j] α[j-1] α[j-1] temp Για κ από 1 μέχρι μ temp β[j,k] β[j,k] β[j-1,k] β[j-1,k] temp πίνακα. Aν δεν μας είναι τα αποτελέσματα χρήσιμα για επόμενα ερωτήματα τότε μπορούμε μόνο να εμφανίσουμε τα αποτελέσματα με τις εντολές μο s/μ Γραψε μο,s σε αντικατάσταση της εντολής μο[i] s/μ στηλών s s+α[i,j] μο[j] s/ν Συνήθως περνάμε τα αποτελέσματα σε πίνακα. Aν δεν μας είναι τα αποτελέσματα χρήσιμα για επόμενα ερωτήματα τότε μπορούμε μόνο να εμφανίσουμε τα αποτελέσματα με τις εντολές Ο παραπάνω αλγόριθμος ταξινομεί τον πίνακα α[ν] σε αύξουσα σειρά και κρατάει την αντιστοιχία των στοιχείων του δισδιάστατου πίνακα β[λ,μ] μο s/ν Γραψε μο,s σε αντικατάσταση της εντολής μο[j] s/ν Σειριακή αναζήτηση key <το στοιχείο που ψάχνουμε> βρέθηκε ΨΕΥΔΗΣ θέση 0 i 1 Οσο i<=ν ΚΑΙ βρέθηκε =ΨΕΥΔΗΣ Σειριακή αναζήτηση key <το στοιχείο που ψάχνουμε> βρέθηκε ΨΕΥΔΗΣ θέσηi 0 θέσηj 0 i 1
επανάλαβε Αν α[i] = key τότε βρέθηκε ΑΛΗΘΗΣ θέση i αλλίως i i+1 Αν βρέθηκε =ΑΛΗΘΗΣ τότε Γράψε Βρέθηκε το στοιχείο,key, στη θέση, θέση αλλιώς Γράψε Το στοιχείο,key, δεν βρέθηκε Οσο i<=ν ΚΑΙ βρέθηκε =ΨΕΥΔΗΣ επανάλαβε j 1 Οσο j<=μ ΚΑΙ βρέθηκε =ΨΕΥΔΗΣ επανάλαβε Αν α[i,j] = key τότε βρέθηκε ΑΛΗΘΗΣ θέσηi i θέσηj j αλλίως j j+1 i i+1 Αν βρέθηκε =ΑΛΗΘΗΣ τότε Γράψε Βρέθηκε το στοιχείο,key, στη γραμμή, & θέσηi, και στήλη, θέσηj αλλιώς Γράψε Το στοιχείο,key, δεν βρέθηκε Επιμέλεια Σαμοθράκης Πέτρος