Αρχές Προγραμματισμού Υπολογιστών

Θεωρία από τα κεφάλαια του βιβλίου

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

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

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

Το πρόβλημα που μπορεί να επιλυθεί με τη βοήθεια ενός υπολογιστή χαρακτηρίζεται υπολογιστικό.

  1. Κατανόηση
  2. Ανάλυση
  3. Επίλυση

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

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

  1. Με φυσική γλώσσα
  2. Με διαγραμματικές τεχνικές
  3. Με κωδικοποίηση
  4. Με ψευδογλώσσα

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

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

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

1. Παράλληλος προγραμματισμός –> Επιτρέπει ταυτόχρονη εκτέλεση διαδικασιών από διαφορετικούς επεξεργαστές.

2. Οπτικός προγραμματισμός –> Παρέχει τη δυνατότητα δημιουργίας του προγράμματος μέσω γραφικών αντικειμένων, αντί της πληκτρολόγησης του κειμένου που αντιστοιχεί σε εντολές.

3. Προγραμματισμός οδηγούμενος από γεγονότα –> Η ροή του προγράμματος εξαρτάται από την ύπαρξη γεγονότων (events)

4. Λογικός προγραμματισμός –> Το πρόγραμμα είναι ένα σύνολο από αξιώματα ή κανόνες οι οποίοι καθορίζουν σχέσεις ανάμεσα σε αντικείμενα.

5. Αρθρωτός ή Τμηματικός Προγραμματισμός –> Το πρόβλημα διαιρείται σε απλούστερα τμήματα, αυτά με τη σειρά τους σε επί μέρους μικρότερα κ.ο.κ.

Πρόκειται για είδος προγραμματισμού που περιστρέφεται γύρω από την έννοια της Κλάσης (Class), η οποία περιγράφει Αντικείμενα (Objects), τα οποία περιέχουν δεδομένα στη μορφή Ιδιοτήτων (Properties) και κώδικα στη μορφή Μεθόδων (Methods).

Βασικά στοιχεία γλώσσας προγραμματισμού Python 2.7.10 όπως διδάσκεται στο βιβλίο μαθητή.

x = 10

a = 166

y = -34

x = 10.3

a = 0.45

y = 28.2E-5

x = True

a = False

onoma = ‘Maria’

password = ‘!PasswOrD123#’

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

Με τον όρο τιμή εννοούμε μια ακολουθία από bit (0,1) η οποία ερμηνεύεται σύμφωνα με κάποιον τύπο δεδομένων. Είναι δυνατό η ίδια ακολουθία από bits να έχει διαφορετική ερμηνεία ανάλογα με τον τύπο δεδομένων του οποίου ερμηνεύεται. Οι μεταβλητές χρησιμεύουν, ώστε εύκολα να μπορούμε να έχουμε πρόσβαση στο περιεχόμενό τους. Το περιεχόμενο αυτό βρίσκεται προσωρινά αποθηκευμένο στη θέση μνήμης του υπολογιστή που έχει δεσμευτεί για τη μεταβλητή αυτή.

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

onoma_metavlitis = timi

print onoma_metavlitis

#Examples

x = 10

print x

onoma = ‘Maria’

print onoma

found = True

print found

Τελεστής Όνομα Παράδειγμα
+ Πρόσθεση x + y
- Αφαίρεση x - y
* Πολλαπλασιασμός x * y
/ Διαίρεση x / y
% Υπόλοιπο x % y
** Δύναμη x ** y
Τελεστής Όνομα Παράδειγμα
== Ίσο x == y
!= Διαφορετικό x != y
> Μεγαλύτερο από x > y
< Μικρότερο από x < y
>= Μεγαλύτερο ίσο x >= y
<= Μικρότερο ίσο x <= y
Τελεστής Περιγραφή Παράδειγμα
and Επιστρέφει True αν και οι δύο συνθήκες είναι αληθείς x < 5 and x < 10
or Επιστρέφει True αν έστω μία από τις συνθήκες είναι αληθής x < 5 or x < 4
not Αντιστέφει το αποτέλεσμα, επιστρέφει False αν το αποτέλεσμα είναι is True not(x < 5 and x < 10)
Τελεστής Περιγραφή
() Παρενθέσεις
** Δυνάμεις
*   /   % Πολλαπλασιασμός, διαίρεση, υπόλοιπο ακέραιας διαίρεσης
+   - Πρόσθεση, αφαίρεση
== != > >= < <= is is not in not in Συγκρίσεις, τελεστές συμμετοχής
not Λογικό ΌΧΙ
and Λογικό ΚΑΙ
or Λογικό Ή

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

Ένας μεταγλωττιστής διαβάζει ολόκληρο το πρόγραμμα και το μεταφράζει, πριν ξεκινήσει η εκτέλεσή του. Σε αυτό το πλαίσιο, το πρόγραμμα υψηλού επιπέδου ονομάζεται πηγαίος κώδικας (source code) και στη γενική περίπτωση, το μεταφρασμένο πρόγραμμα ονομάζεται εκτελέσιμο (executable). Όταν ένα πρόγραμμα μεταγλωττιστεί, μπορεί να εκτελεστεί επανειλημμένα, χωρίς περαιτέρω μετάφραση.

  • Τα συντακτικά λάθη
  • Τα σφάλματα χρόνου εκτέλεσης
  • Τα σημασιολογικά ή λογικά σφάλματα

Αλγοριθμικές Δομές

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

Παράδειγμα

# Πρόγραμμα εύρεσης έντασης του ηλεκτρικού ρεύματος
V = 220
R = 25
I = V / R
print ” H ένταση του ρεύματος είναι:”, I, ” A”

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

if <συνθήκη ελέγχου>:
    # γράψε τις εντολές της if εδώ
# εντολές

Παράδειγμα
# πρόγραμμα εμφάνισης της απόλυτης τιμής ενός ακεραίου αριθμού
a=int(input(‘Δώσε ένα ακέραιο αριθμό ‘))
if a<=0:
    a=(-1)*a
print a


Αν ανάλογα με την αποτίμηση μιας συνθήκης θέλουμε να εκτελεστούν διαφορετικές εντολές, τότε μπορούμε να χρησιμοποιήσουμε τη δομή επιλογής if…else (AN…ΑΛΛΙΩΣ). Αν ισχύει η συνθήκη (True), θα εκτελεστεί το μπλοκ εντολών της if, αλλιώς, αν δεν ισχύει (False), θα εκτελεστεί το μπλοκ εντολών της else.

if <συνθήκη ελέγχου>:
    #γράψε τις εντολές εδώ
else:
    #γράψε τις εντολές εδώ

Παράδειγμα
# πρόγραμμα εμφάνισης μηνύματος αν μπορείς να ψηφίσεις
a=int(input(‘Δώσε ηλικία ‘))
if a<18:
    print “Είσαι ανήλικος, δεν μπορείς να ψηφίσεις”
else:
    print “Είσαι ενήλικος, μπορείς να ψηφίσεις”


Η Python προσφέρει τη δυνατότητα για σύνταξη σύνθετων δομών επιλογής με τη χρήση της εντολής elif. Η σύνταξη είναι ως εξής:
if <συνθήκη>:
    <εντολές>
elif <συνθήκη2>:
    <εντολές_2>
else:
    <εντολές_3>

Παράδειγμα
# πρόγραμμα ρύθμισης θερμοκρασίας κλιματιστικού

temperature = int(input(“Ποια είναι η θερμοκρασία του δωματίου σε βαθμούς Κελσίου; “))
if temperature >= 32:
     print “Άνοιξε την ψύξη του κλιματιστικού και ρύθμισε τη θερμοκρασία”
elif temperature <= 16:
    print “Άνοιξε τη θέρμανση του κλιματιστικού και ρύθμισε για οικονομία τη θερμοκρασία”
else:
    print “Η θερμοκρασία είναι καλή δε χρειάζεται ακόμη να ανοίξεις το κλιματιστικό”
print “τέλος”

Επανάληψη με for: το πλήθος των επαναλήψεων είναι δεδομένο πριν αρχίσουν οι επαναλήψεις

Οι βρόχοι for εκτελούνται για συγκεκριμένο πλήθος επαναλήψεων. Για τη δημιουργία τους χρησιμοποιείται η συνάρτηση range().

for onoma_metavlitis in range (αρχή, μέχρι, βήμα):

Εντολή1
Εντολή2
…..
Εντολήν

Παράδειγμα

for metritis in range (5):
    print “Θέλει αρετή και τόλμη η ελευθερία!”


Επανάληψη με while: το πλήθος των επαναλήψεων καθορίζεται κατά τη διάρκεια της εκτέλεσης των εντολών του σώματος της επανάληψης

Αρχική τιμή μεταβλητής
while ονομα_μεταβλητής <συνθήκη>:
    Εντολή1
    Εντολή2
    ….
    Εντολήν

Παράδειγμα

# Πρόγραμμα Αθροίζω
sum = 0                   # αρχική τιμή στο άθροισμα
i=1                           # αρχική τιμή στη μεταβλητή ελέγχου
while i <= 100 :     # έλεγχος της επανάληψης
    sum = sum + i
    i= i + 1                # αύξηση του μετρητή
print sum

Δομές Δεδομένων

Δομές Δεδομένων