Αναπαράσταση αλγορίθμων

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

 

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

 

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

Γραφική απεικόνιση της δομής ενός προβλήματος

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

 

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

 

● Κάθε ένα από τα απλούστερα προβλήματα στα οποία αναλύεται αναπαρίσταται, επίσης, από ένα ορθογώνιο παραλληλόγραμμο.

 

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

 

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

 

Εμβάθυνση στις μεταβλητές και τύπους δεδομένων

Να καταγράψετε τι πιστεύετε ότι θα εμφανιστεί στην οθόνη μετά την εκτέλεση των παρακάτω τμημάτων προγραμμάτων:

Α.

>> x = 35

>> y = 10

>> x = x / y

>> print x

Τι τιμή θα δώσει το print στην οθόνη;

 

Β.

>> x,y,z = 1, 4, "today"

>> print z, x

Τι τιμή θα δώσει το print; 

 

 

 

Εισαγωγή σχολίων

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

Στην Python, τα σχόλια εισάγονται θέτοντας μπροστά από αυτά το σύμβολο # . Τα σχόλια μπορούν να αρχίζουν και μετά από εντολές στη μέση μιας γραμμής. Ό,τι βρίσκεται δεξιά από το #, αγνοείται από το διερμηνευτή.

# Πρόγραμμα πολλαπλασιασμός δύο αριθμών

>> x=input('Δώσε τον πρώτο αριθμό: ')

Δώσε το πρώτο αριθμό: 34

>> y=input('Δώσε το δεύτερο αριθμό: ')

Δώσε το δεύτερο αριθμό: 2

>> ginomeno = x*y # πολλαπλασιάζει τις τιμές των x και y και # το αποτέλεσμα το εκχωρεί στη μεταβλητή ginomeno

>> print ginomeno

68

Απλοί τύποι δεδομένων

Στους απλούς τύπους δεδομένων, οι τιμές των δεδομένων είναι στοιχεία μη περαιτέρω-χωριζόμενα (άτομα). Δηλαδή κάθε δεδομένο έχει μία και μοναδική τιμή. Σύνθετοι Σύνθετος τύπος δεδομένων (Composite data type) είναι εκείνος, που αποτελείται από Πρωτογενείς ή / και άλλους σύνθετους τύπους, όπου μια μεταβλητή μπορεί να πάρει ως τιμή μια ενότητα τιμών. Οι σύνθετοι τύποι καλούνται και Δομές Δεδομένων. Παραδείγματα σύνθετων τύπων είναι η Εγγραφή, το Σύνολο, ο Πίνακας. Συνήθεις τύποι σε γλώσσες προγραμματισμού

Απλοί

Ακέραιος (Integer), με τιμές τους ακέραιους αριθμούς μέσα σε ένα κάτω και ένα άνω όριο και πράξεις: +, -,*, /, mod, div, := καθώς και οι συγκρίσεις >, =, <

● Πραγματικός (real).

● Χαρακτήρας (Character), με τιμές από το σύνολο των χαρακτήρων που διαθέτει ο υπολογιστής.

● Λογικός (Boolean), για την αναπαράσταση Λογικών δεδομένων, με τιμές True (σωστό), False (λάθος) και επιτρεπτές πράξεις για τις τιμές αυτές τις: and, or, not.

Αλφαριθμητικός-string.

Σύνθετοι Τύποι Δεδομένων

Πίνακας (Array). Συνήθως τα στοιχεία του καθορίζονται με τη βοήθεια δεικτών. Μπορεί να είναι πολλών διαστάσεων.

● Εγγραφή (Record/tuple/struct).

● Λίστα (List).

● Σύνολο (Set).

● Σωρός (Heap).

● Στοίβα (Stack).

Ουρά (Queue).

● Δένδρο (Tree).

● Γράφος (Graph).

Τύποι δεδομένων (ερωτήσεις αντιστοίχισης)

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

Στήλη Α (Τιμή) 

1. -27

2. 35.7

3. ‘False’

4. True

5. “432.12”

6. ‘μεταβλητή’

7. 12 / 2 8. 20 % 3

Στήλη Β (Τύπος Δεδομένων)

 

Α. int (ακέραια)

Β. float (κινητής υποδιαστολής)

Γ. string (συμβολοσειρά)

δ. bool (λογική)

Αριθμητικές και λογικές πράξεις και εκφράσεις

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

 

Αριθμητικοί τελεστές: Είναι τα σύμβολα που χρησιμοποιούμε για να κάνουμε μαθηματικές πράξεις. Στη γλώσσα Python χρησιμοποιούμε τους παρακάτω βασικούς αριθμητικούς τελεστές: Πρόσθεση +

Αφαίρεση -

Πολλαπλασιασμός *

Διαίρεση /

Ύψωση σε δύναμη **

Το υπόλοιπο της ακέραιας διαίρεσης %

Σε κάθε έκφραση στην οποία υπάρχουν αριθμητικοί τελεστές ακολουθείται μια προσδιορισμένη ιεραρχία πράξεων, που είναι:

1. Ύψωση σε δύναμη.

2. Πολλαπλασιασμός, διαίρεση, υπόλοιπο ακέραιας διαίρεσης.

3. Πρόσθεση, αφαίρεση.

Αν θέλουμε να αλλάξουμε την ιεραρχία των πράξεων, μπορούμε να χρησιμοποιήσουμε παρενθέσεις. Για παράδειγμα, στην έκφραση (2+3)*5 θα εκτελεστεί πρώτα η πρόσθεση μέσα στην παρένθεση και μετά, το αποτέλεσμα θα πολλαπλασιαστεί επί 5, σε αντίθεση με την έκφραση 2+3*5 στην οποία, πρώτα θα γίνει ο πολλαπλασιασμός και μετά η πρόσθεση. Σχεσιακοί (ή συγκριτικοί) τελεστές: χρησιμοποιούνται για τη σύγκριση δύο τιμών ή μεταβλητών, με το αποτέλεσμα μιας σύγκρισης να είναι είτε True (Αληθής) είτε False (Ψευδής).

Στη γλώσσα Python χρησιμοποιούνται οι παρακάτω βασικοί σχεσιακοί τελεστές:

Μικρότερο από <

Μικρότερο ή ίσο από <=

Μεγαλύτερο από >

Μεγαλύτερο ή ίσο από >=

Ίσο με ==

Διάφορο από !=

Τελεστές λογικών πράξεων: Στις λογικές πράξεις και εκφράσεις χρησιμοποιούνται οι λογικοί τελεστές not (ΟΧΙ), and (ΚΑΙ), or (Ή) με τις ακόλουθες λογικές λειτουργίες:

● not (OXI): πράξη άρνησης

● and (KAI): πράξη σύζευξης

● or (Ή): πράξη διάζευξης.

Συμπληρώστε τον παρακάτω πίνακα: Η προτεραιότητα των λογικών τελεστών είναι not, and, or με αυτή τη σειρά. 

P Q P AND Q P OR Q NOT P
TRUE
TRUE
FALSE
FALSE

Τύποι δεδομένων

Ένα πρόγραμμα συνήθως επεξεργάζεται δεδομένα τα οποία μπορεί να είναι αποθηκευμένα στην κύρια μνήμη του υπολογιστή, σε αποθηκευτικό μέσο ή η εισαγωγή τους να γίνεται από κάποια μονάδα. Οι τύποι δεδομένων προσδιορίζουν τον τρόπο παράστασης των δεδομένων εσωτερικά στον υπολογιστή, καθώς και το είδος της επεξεργασίας τους από αυτόν. Στην Python δε δηλώνουμε ποιο τύπο δεδομένων χρησιμοποιούμε. Οι χαρακτηριστικοί τύποι δεδομένων στην Python είναι ο αριθμητικός, ο λογικός (boolean) και οι συμβολοσειρές ή αλφαριθμητικά (strings). Οι αριθμοί στην Python είναι κυρίως τριών τύπων:

● ακέραιοι (Integer)

● αριθμοί κινητής υποδιαστολής (floating point)

● μιγαδικοί αριθμοί (complex numbers), τύπος που δε θα μας απασχολήσει στη συνέχεια.
Παραδείγματα Ο 19, αποτελεί παράδειγμα ακέραιου.

Οι 256.14 και 28.2E-5, όπου το σύμβολο E δηλώνει δύναμη του 10, είναι παραδείγματα αριθμών κινητής υποδιαστολής (ή floats για συντομία). Σε αυτή την περίπτωση, το 28.2E-5 σημαίνει 28.2 * 10-5. Παρατηρούμε ότι το δεκαδικό τμήμα διαχωρίζεται με το χαρακτήρα τελεία “.” και όχι το κόμμα “,”.

 

Ο λογικός τύπος (boolean) που δέχεται μόνο δύο τιμές, την τιμή True (Αληθής) και την τιμή False (Ψευδής) και έχει σκοπό την καταγραφή του αποτελέσματος ενός ελέγχου.

Οι συμβολοσειρές είναι μια ακολουθία από χαρακτήρες.

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

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

Με ότι ξεκινάμε, θα πρέπει πάλι να κλείνουμε. Παράδειγμα: "221051445" ή ‘Καλημέρα’. Για να ελέγξουμε τον τύπο δεδομένων χρησιμοποιούμε την εντολή type ().