Θεωρία Προγραμματισμού

Θεωρία Προγραμματισμού 1) Τι ονομάζουμε Αλγόριθμο; Ονομάζεται μια ακολουθία από πεπερασμένο αριθμό εντολών, που αν εκτελεστούν με ακρίβεια , οδηγούν στη πραγματοποίηση μιας εργασίας. 2) Τι ονομάζουμε ανάλυση προβλήματος; Λέγεται η διαδικασία, σκέψης και διατύπωσης του καταλλήλου αλγορίθμου. Δηλαδή η εύρεση των δεδομένων και των ζητουμένων του προβλήματος και η επίλυσή του. 3) Ποιοί τρόποι διατύπωσης ενός αλγορίθμου υπάρχουν; Υπάρχουν τρεις τρόποι διατύπωσης ενός αλγορίθμου α) Λεκτική περιγραφή αλγορίθμου: Χρησιμοποιούμε περιγραφές με τον ίδιο τρόπο που θα δίναμε οδηγίες σ’ έναν άνθρωπο, εξηγώντας του με ακρίβεια τι θέλουμε να κάνει. β)Ψευδογλώσσα: Αυστηρή διατύπωση ενός αλγορίθμου, όπου χρησιμοποιούμε καθορισμένες εντολές και συμβολισμούς. γ) Λογικό διάγραμμα ή διάγραμμα ροής: Είναι ένας γραφικός τρόπος παρουσίασης ενός αλγορίθμου. Χρησιμοποιούμε βέλη, κύκλους, ρόμβους, ορθογώνια και πλάγια παραλληλόγραμμα, με τα οποία δείχνουμε την ακολουθία των ενεργειών που πρέπει να γίνουν. Παράδειγμα: έστω ότι θέλουμε να διατυπώσουμε αλγόριθμο που θα διαβάζει δέκα αριθμούς και θα υπολογίζει το άθροισμά τους και το μέσο όρο τους. α) Λεκτική διατύπωση: Διάβασε ένα‐ ένα τους αριθμούς και πρόσθεσέ τους. Διαίρεσε το άθροισμα δια του 10. Τύπωσε το αποτέλεσμα β) Ψευδογλώσσα: ΑΘΡΟΙΣΜΑ k 0 ΜΕΤΡΗΤΗΣ k 0 Όσο ΜΕΤΡΗΤΗΣ < 10 επανέλαβε ΔΙΑΒΑΣΕ Χ ΑΘΡΟΙΣΜΑ k ΑΘΡΟΙΣΜΑ + Χ ΜΕΤΡΗΤΗΣ k ΜΕΤΡΗΤΗΣ + 1 Τέλος Επανάληψης ΑΠΟΤΕΛΕΣΜΑ kΑΘΡΟΙΣΜΑ / 10 Τύπωσε ΑΠΟΤΕΛΕΣΜΑ γ) Λογικό διάγραμμα: ΑΡΧΗ ΑΘΡΟΙΣΜΑ <‐ 0 ΜΕΤΡΗΤΗΣ <‐ 0 ΑΠΟΤΕΛΕΣΜΑ<‐ΑΘΡΟΙΣΜΑ / 10
ΑΘΡΟΙΣΜΑ<‐ΑΘΡΟΙΣΜΑ+Χ ΜΕΤΡΗΤΗΣ<‐ΜΕΤΡΗΤΗΣ+1 ΝΑΙ ΟΧΙ ΜΕΤΡΗΤΗΣ<10
ΔΙΑΒΑΣΕ Χ ΤΥΠΩΣΕ ΑΠΟΤΕΛΕΣΜΑ ΤΕΛΟΣ Ποια χαρακτηριστικά πρέπει να έχει ένας αλγόριθμος; 4)
Πρέπει να έχει εκτελεσιμότητα, σαφήνεια, πληρότητα και αποτελεσματικότητα 5)
Ποια σχήματα χρησιμοποιούνται κατά την διατύπωση των λογικών διαγραμμάτων και τι σημαίνουν; Πορεία ενεργειών Έναρξη ‐ λήξη διαγράμματος ροής Είσοδος ‐ έξοδος δεδομένων Εντολές εκχωρήσεων Έλεγχος συνθήκης – διακλάδωση ροής 6) Ποιες είναι οι βασικές δομές αλγοριθμικής σχεδίασης Υπάρχουν τέσσερις βασικοί τρόποι σύνθεσης των εντολών σ’ ένα αλγόριθμο, όσον αφορά την σειρά και το πόσες φορές θα εκτελεστούν. Ο καθένας από αυτούς τους τρόπους ονομάζεται αλγοριθμική δομή και οι τέσσερις βασικές δομές είναι : η δομή ακολουθίας, η δομή επιλογής, η δομή πολλαπλής επιλογής και η δομή επανάληψης. Τέλος σ’ έναν αλγόριθμο μπορεί να υπάρχει συνδυασμός δύο τριών ή και των τεσσάρων δομών. α) Δομή ακολουθίας: Είναι η πιο απλή αλγοριθμική δομή. Αποτελείται από μια σειρά εντολών, οι οποίες εκτελούνται όλες μία φορά, κατά τη σειρά με την οποία εμφανίζονται. π.χ. 1. Σήκω από το κρεβάτι 1. Ζήτησε τα μήκη των κάθετων πλευρών α, β 2. Πλύνε τα δόντια σου 2. Υπολόγισε την υποτείνουσα γ ← α 2 + β 2 3. Ντύσου 3. Τύπωσε γ 4. Πάρε το πρωινό σου β) Δομή επιλογής: Χρησιμοποιείται όταν κατά την εκτέλεση του αλγορίθμου θα πρέπει να ελέγξουμε μια κατάσταση και ανάλογα να εκτελέσουμε ή όχι κάποιες εντολές π.χ. Αληθής
Σ 1. Ανέβα στον πάνω όροφο 2. Άνοιξε την πόρτα της σοφίτας Ε
3. Αν είναι σκοτεινά: Ψευδής 3α. Βρες το διακόπτη 3β. Άναψε το φως 4. Άνοιξε το μεγάλο μπαούλο Υπάρχει και μια δεύτερη μορφή της δομής επιλογής, όπου ελέγχουμε μια κατάσταση και αν ισχύει μια κατάσταση εκτελούμε ένα σύνολο εντολών, ενώ, αν δεν ισχύει η συνθήκη, εκτελούμε ένα διαφορετικό σύνολο εντολών. π.χ. Αληθής ψευδής Σ 1. Φόρεσε πουλόβερ 2. Αν κάνει κρύο Ε1
2α.1 φόρεσε το παλτό σου 2α.2 φόρεσε τα γάντια σου αλλιώς 2β.1 φόρεσε σακάκι 3. Πήγαινε σχολείο Ε2
γ) Δομή πολλαπλής επιλογής: Η δομή πολλαπλής επιλογής είναι μια παραλλαγή της δομής επιλογής, όπου υπάρχουν περισσότερες από δύο πιθανές ενέργειεςπου μπορούν να εκτελεστούν. Στην περίπτωση αυτή ελέγχουμε μια συνθήκη η οποία μπορεί να βρεθεί σε περισσότερες από δύο καταστάσεις και ορίζουμε ένα διαφορετικό σύνολο ενεργειών για κάθε διαφορετική πιθανή κατάσταση. Σ η
η
η
1 περίπτωση 2 περίπτωση ν περίπτωση κάθε άλλη περίπτωση . . . Ε1
Ε2
Ε3
Ε4
π.χ. χαρακτηρισμός φοίτησης ενός μαθητή: 1. Ζήτησε τον τελικό βαθμό Μ του μαθητή 2. Με βάση τον βαθμό Μ , έλεγξε τις περιπτώσεις: 3. Μ< 10 : ο μαθητής απορρίπτεται 4. 10≤Μ<15 : προάγεται με χαρακτηρισμό «ΚΑΛΑ» 5. 15≤Μ<18,5 : προάγεται με χαρακτηρισμό «ΠΟΛΥ ΚΑΛΑ» 6. 18,5≤Μ :προάγεται με χαρακτηρισμό «ΑΡΙΣΤΑ» 7. Ανακοίνωσε αποτέλεσμα δ) Δομή Επανάληψης: Η δομή επανάληψης σ’ έναν αλγόριθμο μας επιτρέπει να εκτελέσουμε μια ομάδα εντολών πολλές Ε
φορές και η επανάληψη σταματά όταν πάψει να ισχύει μια συνθήκη. αληθής Σ ψευδής ε) Συνδυασμός διαφορετικών αλγοριθμικών δομών : Σε έναν αλγόριθμο χρειάζεται να συνδυάσουμε τις διαφορετικές δομές που γνωρίσαμε . 7) Τι ονομάζουμε προγραμματισμό; Προγραμματισμός είναι η διαδικασία της διατύπωσης ενός αλγορίθμου χρησιμοποιώντας μια γλώσσα προγραμματισμού (π.χ. basic, logo, java κλπ.). 8) Τι ονομάζουμε πηγαίο πρόγραμμα; Ένα σύνολο εντολών γραμμένων σε κάποια γλώσσα προγραμματισμού, για την εκτέλεση κάποιας εργασίας από έναν υπολογιστή,σε μορφή κατανοητή από τον άνθρωπο‐προγραμματιστή. 9) Τι ονομάζουμε εκτελέσιμο πρόγραμμα; Το σύνολο των εντολών σε μορφή 0 και 1 με το οποίο τροφοδοτούμε τον υπολογιστή προκειμένου αυτός να εκτελέσει μια εργασία και το οποίο έχει προέλθει από την μετάφραση ή μεταγλώττιση ενός πηγαίου προγράμματος. 10) Τι είναι οι γλώσσες προγραμματισμού; Οι γλώσσες προγραμματισμού είναι προγράμματα που κάνουν τον προγραμματισμό πιο εύκολο, διότι η σύνταξη των προγραμμάτων σε αυτές γίνεται με σύμβολα και λέξεις που είναι πιο οικείες στον άνθρωπο απ’ ότι μια ακολουθία από 0 και 1. 11) Ποια είναι τα χαρακτηριστικά μιας γλώσσας προγραμματισμού; (183) Μια γλώσσα προγραμματισμού όπως και μια φυσική γλώσσα (π.χ. ελληνικά, αγγλικά κλπ.) έχει το αλφάβητό της, το λεξιλόγιό της και πάνω από όλα το συντακτικό της και τη σημασιολογία της . Το συντακτικό μιας γλώσσας προγραμματισμού είναι το σύνολο των κανόνων που αφορούν το πώς επιτρέπεται να μπουν οι λέξεις στη σειρά, ώστε να προκύπτει ένα κείμενο που να έχει νόημα στη γλώσσα αυτή. Το λεξιλόγιο μιας γλώσσας προγραμματισμού είναι περιορισμένο και αποτελείται από μερικές δεκάδες λέξεις που ονομάζονται εντολές, καθώς και από κανόνες που καθορίζουν τους επιτρεπτούς συνδυασμούς που μπορούν να προκύψουν από το αλφάβητο της γλώσσας. Οι εντολές αυτές είναι συνήθως λέξεις της αγγλικής γλώσσας όπως print, write, input κλπ. Το συντακτικό μιας γλώσσας προγραμματισμού είναι τόσο αυστηρό, ώστε η παραμικρή παρατυπία στην τήρησή του να ανιχνεύεται και να οδηγεί σε αδυναμία του υπολογιστή να καταλάβει τι θέλουμε να εκφράσουμε. 12) Πλεονεκτήματα μιας γλώσσας προγραμματισμού. (σελ. 183) α) Με τις γλώσσες προγραμματισμού γίνεται η δουλειά του προγραμματιστή ευκολότερη, διότι το πηγαίο πρόγραμμα είναι περισσότερο κατανοητό από τον άνθρωπο, με αποτέλεσμα να γράφεται ευκολότερα, αλλά επίσης να τροποποιείται και να διορθώνεται ευκολότερα. β) Ένα πρόγραμμα γραμμένο σε κάποια γλώσσα προγραμματισμού, είναι ανεξάρτητο από τον τύπο του υπολογιστή στον οποίο θα τρέξει, αρκεί ο υπολογιστής να υποστηρίζει την συγκεκριμένη γλώσσα, ώστε να μπορεί να μετατραπεί στο αντίστοιχο εκτελέσιμο πρόγραμμα για το συγκεκριμένο τύπο υπολογιστή. 13) Ποια είναι τα κύρια εργαλεία σε μια γλώσσα προγραμματισμού; (σελ. 183‐184) Τα κύρια εργαλεία σε μια γλώσσας προγραμματισμού είναι α) Ένας εξειδικευμένος κειμενογράφος, που χρησιμεύει για την σύνταξη και τη διόρθωση του πηγαίου προγράμματος και β) Ένα πρόγραμμα μεταφραστής που μετατρέπει τις οδηγίες μας (πηγαίο πρόγραμμα) στη μορφή που τις καταλαβαίνει ο επεξεργαστής (εκτελέσιμο πρόγραμμα). 14) Τι είναι τα συντακτικά λάθη και πώς ανιχνεύονται; (184) Αν σε κάποια οδηγία του πηγαίου προγράμματός μας έχουμε κάνει λάθος στο αλφάβητο, στο λεξιλόγιο ή στο συντακτικό, τότε το πρόγραμμα που μετατρέπει τις οδηγίες μας σε σειρά από 0 και 1 θα μας δώσει ένα κατάλληλο μήνυμα λάθους, ώστε να μας βοηθήσει να διορθώσουμε το λάθος μας. Τα λάθη αυτά ονομάζονται συντακτικά λάθη. 15) Τι είναι τα λογικά λάθη και πως τα καταλαβαίνουμε; (184)
Λογικά είναι τα λάθη που οδηγούν σε λάθος αποτέλεσμα, όταν εκτελεστεί το πρόγραμμα χωρίς να
εμφανίζεται μήνυμα, όπως στα συντακτικά λάθη. Σ’ αυτή την περίπτωση θα πρέπει να ελέγξουμε
τον αλγόριθμο που έχουμε κατασκευάσει, για τη λύση του προβλήματος.
16) Τι χρειάζονται ο μεταγλωττιστής (compiler) ή ο διερμηνέας (interpreter); (184)
Είναι τα προγράμματα που μετατρέπουν τις οδηγίες μας σε 0 και 1 για να τις καταλαβαίνει ο
υπολογιστής
17) Ποια η διαφορά μεταγλωττιστή (compiler) – διερμηνέα (interpreter); (184)
Η διαφορά τους είναι ότι οι μεταγλωττιστές (compilers) θα ελέγξουν όλο το πρόγραμμα για
συντακτικά λάθη και μετά θα το μετατρέψουν όλο σε μια κατάλληλη σειρά από 0 και 1, ώστε να
μπορεί να εκτελεστεί από τον επεξεργαστή του υπολογιστή.
Αντίθετα οι διερμηνείς (interpreters) ελέγχουν μία οδηγία κάθε φορά, την εκτελούν και μετά
ελέγχουν την επόμενη οδηγία.
18) Ποιες είναι οι βασικές φάσεις στην ανάπτυξη ενός προγράμματος; Πρώτη φάση: Ανάλυση του προβλήματος Κατανόηση του προβλήματος, προσδιορισμός των δεδομένων εισόδου και των δεδομένων εξόδου. Δεύτερη φάση: Σχεδιασμός αλγορίθμου Διατυπώνουμε τον αλγόριθμο για την λύση του (λεκτικό, ψευδογλώσσα, λογικό διάγραμμα) Τρίτη φάση: Κωδικοποίηση αλγορίθμου Γράφουμε το πηγαίο πρόγραμμα επιλέγοντας την κατάλληλη γλώσσα προγραμματισμού. Τέταρτη φάση: Εκσφαλμάτωση και συντήρηση προγράμματος Εντοπίζουμε όποια λογικά ή συντακτικά λάθη πιθανώς υπάρχουν και τα διορθώνουμε. Αν χρειασθεί μπορούμε να τροποποιήσουμε το πρόγραμμά μας ανάλογα με τις ανάγκες που προκύπτουν με την πάροδο του χρόνου. 19) Ποιούς τύπους δεδομένων μπορούμε να χρησιμοποιήσουμε σε έναν αλγόριθμο; Υπάρχουν δύο βασικοί τύποι δεδομένων, τα αριθμητικά και τα αλφαριθμητικά. Αριθμητικά δεδομένα είναι οι αριθμοί τους οποίους μπορούμε να χρησιμοποιήσουμε σε αριθμητικές παραστάσεις, μπορούμε δηλαδή να κάνουμε μεταξύ τους πράξεις. Αλφαριθμητικά δεδομένα είναι οι λέξεις και γενικά οι ακολουθίες συνεχόμενων χαρακτήρων, είτε αυτοί είναι γράμματα ή αριθμοί ή σύμβολα. 20) Τι είναι οι μεταβλητές και πότε χρησιμοποιούνται; (192‐193) Είναι μια θέση στην μνήμη του υπολογιστή που έχει ένα συγκεκριμένο όνομα (π.χ. α, χ, β, τιμήα κλπ.) και μπορεί να πάρει οποιαδήποτε τιμή . Τις χρησιμοποιούμε όταν θέλουμε να εισάγουμε τιμές από το πληκτρολόγιο ή όταν θέλουμε να μεταβάλουμε την τιμή μιας ποσότητας. 21) Τι αποτέλεσμα θα πάρουμε από την εκτέλεση του παρακάτω προγράμματος; Θα δίνεται αλγόριθμος γραμμένος σε ψευδογλώσσα ή λογικό διάγραμμα και από αυτόν με εισαγωγή τιμών θα βρίσκουμε αποτέλεσμα π.χ. η εισαγωγή των τιμών 2 για το Χ και 4 για το Υ στον παρακάτω αλγόριθμο , ΑΘΡΟΙΣΜΑ k 0
ΓΙΝΟΜΕΝΟ k 0
ΑΠΟΤΕΛΕΣΜΑ k 0
ΔΙΑΒΑΣΕ Χ
ΔΙΑΒΑΣΕ Υ
ΑΘΡΟΙΣΜΑ k Χ+Υ
ΓΙΝΟΜΕΝΟ k Χ·Υ
ΑΠΟΤΕΛΕΣΜΑk ΑΘΡΟΙΣΜΑ+ΓΙΝΟΜΕΝΟ
Τύπωσε ΑΠΟΤΕΛΕΣΜΑ
θα μας δώσει ΑΠΟΤΕΛΕΣΜΑ=14
22)Γράψτε τον αλγόριθμο που θα υπολογίζει το μέγεθος μιας οθόνης σε εκατοστά, αν δίνεται το
μέγεθος της διαγωνίου της σε ίντσες. (1 ίντσα=2,54 cm)
Χk 0
ΤΥΠΩΣΕ ″Δώστε το μέγεθος της οθόνης σε εκατοστά″
ΔΙΑΒΑΣΕ Χ
Υ=Χ*2,54
ΤΥΠΩΣΕ ″ ΤΟ ΜΕΓΕΘΟΣ ΤΗΣ ΟΘΟΝΗΣ ΣΕ ΙΝΤΣΕΣ ΕΙΝΑΙ″, Υ
23)Γράψτε αλγόριθμο σε μορφή λογικού διαγράμματος που θα διαβάζει την τιμή ενός προϊόντος
χωρίς Φ.Π.Α. και θα εμφανίζει την τιμή του Φ.Π.Α. και την συνολική τιμή.
ΑΡΧΗ ΤΥΠΩΣΕ ‘’ΔΩΣΤΕ ΑΡΧΙΚΗ ΤΙΜΗ ΤΟΥ ΠΡΟΪΟΝΤΟΣ’’
ΦΠΑ ← Χ * 0,23 ΣΥΝ_ΤΙΜΗ←Χ * 1,23 ΔΙΑΒΑΣΕ Χ ΤΥΠΩΣΕ ‘’ΤΟ Φ.Π.Α. ΤΟΥ ΠΡΟΪΟΝΤΟΣ ΕΙΝΑΙ: ’’, ΦΠΑ
ΤΥΠΩΣΕ ‘’Η ΣΥΝΟΛΙΚΗ ΤΙΜΗ ΤΟΥ ΠΡΟΪΟΝΤΟΣ ΕΙΝΑΙ: ’’, ΣΥΝ_ΤΙΜΗ ΤΕΛΟΣ
24)Σχεδιάστε έναν αλγόριθμο υπό μορφή λογικού διαγράμματος και ψευδογλώσσας που θα
μετατρέπει τιμές από δραχμές σε ευρώ και αντίστροφα.
25)Γράψτε έναν αλγόριθμο υπό μορφή ψευδογλώσσας που θα υπολογίζει το μήκος της πλευράς της
υποτείνουσας ενός ορθογωνίου τριγώνου από τα μήκη των καθέτων πλευρών.
26)Γράψτε αλγόριθμο που θα υπολογίζει την απόσταση που διανύει ένα όχημα σε δεδομένο χρόνο
όταν κινείται ευθύγραμμα ομαλά ή ευθύγραμμα ομαλά επιταχυνόμενα (Δίνεται ότι s=υ t στην ευθ.
1
ομαλή κίνηση και s = ⋅ α ⋅ t 2 για την ευθ. ομαλά επιταχυνόμενη χωρίς αρχική ταχύτητα).
2
27)Γράψτε αλγόριθμο σε μορφή λογικού διαγράμματος ή ψευδογλώσσας που θα υπολογίζει τον μέσο
όρο n αριθμών.