English

Μεταβλητές και τύποι δεδομένων

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

Οι αριθμοί στην Python είναι κυρίως τριών τύπων: οι ακέραιοι (integers), οι αριθμοί κινητής υποδιαστολής (floating point) και οι μιγαδικοί αριθμοί (complex numbers) (τον τύπο αυτόν των αριθμών απλά τον αναφέρουμε και δεν θα μας απασχολήσει στη Β' τάξη)

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

Οι συμβολοσειρές είναι μια ακολουθία από χαρακτήρες και μπορεί να αποτελείται από περισσότερες από μία λέξεις. Παράδειγμα "Καλημέρα σε όλους". Οι λέξεις μπορούν να είναι στην Ελληνική Γλώσσα, στην Αγγλική ή σε κάθε γλώσσα που υποστηρίζεται από το πρότυπο Unicode. Μπορούμε να ορίσουμε μια συμβολοσειρά με μονά εισαγωγικά, για παράδειγμα 'Σήμερα είναι μία ηλιόλουστη μέρα!’ ή με διπλά εισαγωγικά "Σήμερα είναι μια ηλιόλουστη μέρα!", αλλά όχι ανάμικτα. Με ό,τι ξεκινάμε θα πρέπει πάλι να κλείνουμε.

Όπως θα δούμε και σε επόμενη ενότητα ανάμεσα στις τιμές κάθε τύπου δεδομένων μπορούμε να κάνουμε διάφορες πράξεις χρησιμοποιώντας τους αντίστοιχους τελεστές (σύμβολα). Για παράδειγμα 34 + 56 ή 3.14*8.

 

Ερωτήσεις

  1. Ποια είναι τα βασικά βήματα για την επίλυση ενός προβλήματος;
  2. Περιγράψτε το Μοντέλο του καταρράκτη.
  3. Περιγράψτε το Μοντέλο σπείρας

Από τον αλγόριθμο στην ανάπτυξη προγράμματος

Από τον αλγόριθμο στην ανάπτυξη προγράμματος
Κύκλος ανάπτυξης προγράμματος/λογισμικού
Η διαδικασία ανάπτυξης λογισμικού αποτελεί μια εργασία που εξελίσσεται σε διακριτές φάσεις ή στάδια και θεωρείται υποσύνολο του κύκλου ζωής ενός συστήματος Λογισμικού που ξεκινά από την ανάλυση απαιτήσεων και τελειώνει με την παύση
λειτουργίας του. Μεταξύ των βασικών μεθοδολογιών (μοντέλων) -που έχουν προταθεί και ακολουθούνται- είναι το μοντέλο του Καταρράκτη (Waterfall model) και αυτό της Σπειροειδούς προσέγγισης (Spiral model).

Μοντέλο του καταρράκτη
Πρόκειται για το μοντέλο που υποδιαιρεί τη διαδικασία ανάπτυξης ενός συστήματος
λογισμικού στις ακόλουθες φάσεις:
• Ανάλυση απαιτήσεων.
• Σχεδίαση.
• Υλοποίηση.
• Ολοκλήρωση.
• Λειτουργία και συντήρηση.
Μοντέλο σπείρας
Στο μοντέλο της σπείρας, η ανάπτυξη ακολουθεί μια εξελικτική διαδικασία με την επαναληπτική εκτέλεση ενός κύκλου φάσεων. Σε καθεμία φάση δημιουργείται μια ενδιάμεση έκδοση του τελικού προϊόντος, η οποία βελτιώνεται κατά τον επόμενο κύκλο κ.ο.κ. Η διαδικασία αυτή συνεχίζεται μέχρι να παραχθεί μια έκδοση που να ικανοποιεί τις απαιτήσεις των χρηστών. Παρόμοια με τη διαδικασία ανάπτυξης ενός λογισμικού, εργαζόμαστε και κατά την ανάπτυξη ενός προγράμματος, ακολουθώντας πάλι μια μεθοδολογία υλοποίησης του κύκλου ανάπτυξης προγράμματος (program development life cycle-PDLC).
Μια από τις μεθοδολογίες ανάπτυξης προγράμματος αποτελείται από φάσεις, όπως:
• Ανάλυση του προβλήματος.
• Σχεδίαση.
• Συγγραφή κώδικα.
• Έλεγχος και εκσφαλμάτωση.
• Τεκμηρίωση.

Κατανόηση του προβλήματος και της δομής του – Διαδικασία επίλυσης προ- βλημάτων

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

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

• Διατύπωση σκέψεων σχετικά με το είδος του προβλήματος. Στο στάδιο αυτό
τίθενται ερωτήματα όπως: εντάσσεται σε μια γενικότερη ομάδα προβλημάτων,
είναι ειδική περίπτωση ενός γενικού προβλήματος;
• Λογική οργάνωση και ανάλυση δεδομένων.
• Αναγνώριση, ανάλυση και υλοποίηση πιθανών λύσεων. Ανίχνευση γνωστών
προτύπων. Στο στάδιο αυτό θέτονται ερωτήματα όπως: Η λύση του προβλήματος
περιλαμβάνει τμήματα τα οποία τα έχουμε συναντήσει και σε άλλα προβλήματα;
Γνωστό τμήμα, για παράδειγμα, είναι η ταξινόμηση ενός πλήθους αριθμών.
• Κατασκευή του αλγόριθμου περιγράφοντας τις ενέργειες για τη λύση του.
• Αξιολόγηση του αλγόριθμου και της λύσης που δόθηκε. Στο στάδιο αυτό τίθενται
ερωτήματα όπως: Είναι σωστή η λύση που βρέθηκε; Μήπως ο αλγόριθμος που
δημιουργήσαμε μπορεί να βελτιωθεί έτσι ώστε, για παράδειγμα, ο χρόνος εκτέ-
λεσης του αλγόριθμου να μειωθεί;
• Επιστροφή, αν χρειαστεί, σε προηγούμενα στάδια και ανακατασκευή της λύσης,
μέχρι την επίλυση του προβλήματος με αποτελεσματικό τρόπο.
• Γενίκευση της λύσης, ώστε να μπορεί να εφαρμοστεί σε παρόμοια προβλήματα.

 

Από τον αλγόριθμο στην ανάπτυξη προγράμματος

Κύκλος ανάπτυξης προγράμματος/λογισμικού

Η διαδικασία ανάπτυξης λογισμικού αποτελεί μια εργασία που εξελίσσεται σε διακριτές φάσεις ή στάδια και θεωρείται υποσύνολο του κύκλου ζωής ενός συστήματος Λογισμικού που ξεκινά από την ανάλυση απαιτήσεων και τελειώνει με την παύση λειτουργίας του. Μεταξύ των βασικών μεθοδολογιών (μοντέλων)  που έχουν προταθεί και ακολουθούνται- είναι το μοντέλο του Καταρράκτη (Waterfall model) και αυτό της Σπειροειδούς προσέγγισης (Spiral model).

Μοντέλο του καταρράκτη
Πρόκειται για το μοντέλο που υποδιαιρεί τη διαδικασία ανάπτυξης ενός συστήματος
λογισμικού στις ακόλουθες φάσεις:

• Ανάλυση απαιτήσεων.
• Σχεδίαση.
• Υλοποίηση.
• Ολοκλήρωση.
• Λειτουργία και συντήρηση.

 

Μοντέλο σπείρας

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

Παρόμοια με τη διαδικασία ανάπτυξης ενός λογισμικού, εργαζόμαστε και κατά την ανάπτυξη ενός προγράμματος, ακολουθώντας πάλι μια μεθοδολογία υλοποίησης του κύκλου ανάπτυξης προγράμματος (program development life cycle-PDLC).

Μια από τις μεθοδολογίες ανάπτυξης προγράμματος αποτελείται από φάσεις, όπως:

• Ανάλυση του προβλήματος.
• Σχεδίαση.
• Συγγραφή κώδικα.
• Έλεγχος και εκσφαλμάτωση.
• Τεκμηρίωση.

Εισαγωγή

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

Κάθε άνθρωπος στη ζωή του, σε οποιαδήποτε ηλικία και αν είναι, αντιμετωπίζει καθημερινά μικρά ή μεγάλα προβλήματα. Από την αρχή της σχολικής μας ζωής, έχουμε λύσει πολλά προβλήματα στα Μαθηματικά και στη Φυσική. Το ίδιο συμβαίνει σε
όλους τους τομείς της επιστήμης και της τεχνολογίας.
Με τον όρο Πρόβλημα προσδιορίζεται μια κατάσταση η οποία χρήζει αντιμετώπισης,
απαιτεί λύση, η δε λύση της δεν είναι γνωστή, ούτε προφανής. Σε αρκετά προβλήματα
η λύση είναι εύκολο να βρεθεί, αλλά υπάρχουν και προβλήματα που η λύση τους είναι
δύσκολο να βρεθεί. Για παράδειγμα προβλήματα όπως: η ρύπανση του περιβάλλοντος, η αντιμετώπιση των ναρκωτικών, η θεραπεία ασθενειών, η ασφαλής πλοήγηση
στο Διαδίκτυο είναι σύνθετα προβλήματα που δεν επιδέχονται μια εύκολη λύση.
Ως σύνθετο χαρακτηρίζεται ένα πρόβλημα που αποτελείται από πολλά μέρη και στη
λύση του συμμετέχουν πολλοί παράγοντες που συχνά αλληλεπιδρούν μεταξύ τους.
Ορισμένα από τα προβλήματα που αντιμετωπίζουμε μπορούν να επιλυθούν με την
βοήθεια ενός υπολογιστή. Στην περίπτωση αυτή το πρόβλημα χαρακτηρίζεται υπολογιστικό. Στο κεφάλαιο αυτό θα ασχοληθούμε με υπολογιστικά προβλήματα.
Το πρώτο στάδιο για την επίλυση ενός προβλήματος είναι η κατανόησή του. Όταν το
πρόβλημα είναι σύνθετο, η κατανόησή του προϋποθέτει την ανάλυση της δομής του.
Με τον όρο δομή, εννοούμε τα επιμέρους στοιχεία (τμήματα) που αποτελούν το πρόβλημα καθώς και τον τρόπο με τον οποίο αυτά συνδέονται και αλληλεπιδρούν. Για την
κατανόηση της δομής είναι απαραίτητη η ανάλυση του προβλήματος στα επιμέρους
στοιχεία του. Γενικά με τον όρο Ανάλυση εννοείται ο διαχωρισμός ενός συνόλου στα
συστατικά του στοιχεία. Για την ανάλυση του προβλήματος και τον εντοπισμό των κύριων στοιχείων είναι απαραίτητο το πρόβλημα να μορφοποιηθεί, ώστε να απαλλαγεί
από τις περιττές λεπτομέρειες που αυξάνουν τον όγκο των στοιχείων που πρέπει να
διαχειριστούμε. Η λειτουργία αυτή ονομάζεται αφαίρεση.

Η αξία της αφαίρεσης
Αφαίρεση είναι η νοητική ικανότητα εντοπισμού των βασικών χαρακτηριστικών ενός
αντικείμενου ή γενικότερα μιας κατάστασης. Η ικανότητα αυτή επιτρέπει την κριτική
επεξεργασία δεδομένων και την ανακάλυψη σχέσεων μεταξύ αντικειμένων ή κατα-
στάσεων.
Παραδείγματα
Στον υπολογισμό μιας διαδρομής ενός οχήματος, το χρώμα του οχήματος δεν είναι
βασικό χαρακτηριστικό. Αντίθετα η ταχύτητα που μπορεί να αναπτύξει είναι βασικό
χαρακτηριστικό.
Η ικανότητα της αφαίρεσης μάς επιτρέπει να θεωρήσουμε ότι ένα όχημα της Φόρμουλα 1 και ένα τζιπ, είναι και τα δύο αυτοκίνητα, παρόλο που έχουν τελείως διαφορετικά χαρακτηριστικά.
Στα Μαθηματικά, όταν λύνουμε ένα πρόβλημα, η απόδοση του αγνώστου στον χαρακτήρα Χ (Έστω Χ …) είναι μια αφαιρετική διαδικασία. Η αφαιρετική ικανότητα είναι
απαραίτητη για τη σωστή ανάλυση ενός προβλήματος σε απλούστερα υποπροβλήματα και τη σαφή διατύπωσή της δομής του.