Προγραμματισμός

Έννοια του Αλγορίθμου και Προγραμματισμός

 Τι ονομάζουμε πρόβλημα;

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

 

Έννοιες ενός προβλήματος :

Δεδομένα προβλήματος : τα στοιχεία που μας είναι γνωστά

Ζητούμενο : αυτό που ψάχνουμε

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

 

Κατηγορίες προβλημάτων ως προς τη λύση τους

  1. που γνωρίζουμε ήδη τη λύση τους (πχ εμβαδόν κύκλου)
  2. που δεν μπορούμε να επιλύσουμε με τις μέχρι τώρα γνώσεις μας (πχ πρόβλεψη σεισμών)
  3. που έχει αποδειχτεί ότι δεν μπορούμε να τα επιλύσουμε (πχ ταξίδι στο παρελθόν)

 

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

  1. κατανόηση του προβλήματος
  2. ανάλυση του προβλήματος σε απλούστερα προβλήματα
  3. αντιμετώπιση απλούστερων προβλημάτων

 

Τι είναι ο Αλγόριθμος ;

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

η οποία έχει τις παρακάτω ιδιότητες :

 

α) έχει σαφήνεια (σαφής)

β) είναι λεπτομερής και αναλυτική

? οι οδηγίες να είναι εκφρασμένες με απλά λόγια και απόλυτα κατανοητές ώστε να μη αφήσουμε κανένα περιθώριο σε αυτόν που θα τις εκτελέσει να αναλάβει οποιαδήποτε πρωτοβουλία

γ) είναι πλήρης

?να περιλαμβάνει όλες τις πιθανές καταστάσεις που ενδεχομένως να συναντήσει αυτός που θα τον εκτελέσει

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

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

ε) μπορεί να εκτελεσθεί από αυτόν στον οποίο θα ανατεθεί (πραγματοποιήσιμος)

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

 

Επιπλέον ένας αλγόριθμος είναι επιθυμητό να είναι :

ταχύς, οικονομικός και γενικός

 

  

Πως προκύπτει ένα πρόγραμμα ;

Το πρόγραμμα είναι η αναπαράσταση (κωδικοποίηση) ενός αλγορίθμου γραμμένη σε γλώσσα κατανοητή για έναν υπολογιστή. Όταν δημιουργούμε έναν αλγόριθμο ο οποίος θα απευθύνεται σε έναν υπολογιστή, θα πρέπει να λάβουμε υπόψη μας τις δυνατότητες που έχει ο υπολογιστής αυτός. Θα πρέπει ο αλγόριθμος να χρησιμοποιεί μόνο βήματα-ενέργειες που είναι σε θέση να καταλάβει ο υπολογιστής μας. Κάθε βήμα του αλγορίθμου μας, δηλαδή, θα πρέπει να αντιστοιχεί και σε μία από τις εντολές που είναι σε θέση να εκτελέσει ο υπολογιστής. Προϋπόθεση λοιπόν, είναι να γνωρίζουμε το ρεπερτόριο (σετ) εντολών του συγκεκριμένου υπολογιστή.

 

Αρχιτεκτονική Von Neumann

Εισάγει για πρώτη φορά

α. τη μνήμη του υπολογιστή (ένα μεγάλο αριθμό κελιών μνήμης)

β. και τους καταχωρητές στον επεξεργαστή (ένα σχετικά μικρό αριθμό κελιών).

 

Τι ονομάζουμε γλώσσες προγραμματισμού ;

Γλώσσες προγραμματισμού ονομάζουμε τις τεχνητές γλώσσες με τις οποίες μπορούμε να επικοινωνήσουμε με έναν υπολογιστή.

Χαρακτηριστικά γλώσσας προγραμματισμού :

  1. Αλφάβητο
  2. Λεξιλόγιο
  3. Σύνταξη

 

Σε ποιες κατηγορίες χωρίζονται οι γλώσσες προγραμματισμού

 

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

Χαρακτηριστικό: Είναι διαφορετικές για κάθε τύπο Κεντρική Μονάδα Επεξεργασίας.

Αυτές είναι :

  1. Η γλώσσα μηχανής είναι η μόνη ΄΄γλώσσα΄΄, τις εντολές της οποίας μπορούν να ΄΄καταλάβουν΄΄ τα  ηλεκτρονικά κυκλώματα του υπολογιστή.

Έχει δυαδική μορφή (αποτελείται από τα ψηφία 0 και 1

 

Ρεπερτόριο εντολών ενός επεξεργαστή

ονομάζουμε το σύνολο των εντολών που μπορεί αυτός να εκτελέσει.

Κατηγορίες εντολών που αναγνωρίζει μία τυπική ΚΜΕ

  • εντολές μεταφοράς μεταξύ ΚΜ και καταχωρητών της ΚΜΕ
  • εντολές μεταφοράς μεταξύ καταχωρητών της ΚΜΕ
  • εντολές αριθμητικών πράξεων
  • εντολές λογικών πράξεων
  • εντολές ελέγχου ροής της εκτέλεσης των εντολών
  • βοηθητικές εντολές
  1. Η συμβολική γλώσσα είναι η γλώσσα χαμηλού επιπέδου η οποία αντί για δυαδικούς αριθμούς χρησιμοποιεί λέξεις που είναι πιο εύκολο να θυμάται ένας άνθρωπος.

Β. Γλώσσες υψηλού επιπέδου είναι αυτές που είναι πιο κοντά στις γλώσσες που χρησιμοποιούμε εμείς οι άνθρωποι.

Χαρακτηριστικό: Μπορεί να χρησιμοποιηθεί για κάθε τύπο Κεντρικής Μονάδας Επεξεργασίας – είναι δηλαδή ίδια για όλους τους υπολογιστές και δεν εξαρτάται από την κατασκευή τους.

 

Τι ονομάζουμε ολοκληρωμένο προγραμματιστικό περιβάλλον ;

Είναι η εφαρμογή ή οποία μας παρέχει το περιβάλλον εργασίας το οποίο μας προσφέρει όλα τα εργαλεία που χρειαζόμαστε για να αναπτύσσουμε γρήγορα και εύκολα ένα πρόγραμμα σε μία συγκεκριμένη γλώσσα προγραμματισμού.

Περιλαμβάνει τα παρακάτω εργαλεία :

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

 

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

 

Υπάρχουν δύο ειδών μεταφραστές: οι μεταγλωττιστές και οι διερμηνείς.

 

Αρχές κατασκευής λογισμικού

Η κατασκευή γίνεται με τις αρχές της Ιεραρχικής Σχεδίασης : επίλυση προβλήματος από πάνω προς τα κάτω.

 

  1. Τμηματικός προγραμματισμός

Στρατηγική που χρησιμοποιείται : τεμαχισμός ενός μεγάλου προγράμματος σε μικρότερα τμήματα, ανεξάρτητα μεταξύ τους. Η υλοποίηση γίνεται με τη χρήση του προγραμματιστικού εργαλείου της υπορουτίνας.

Μειονέκτημα : δε διασφαλίζει την κατασκευή ενός σωστά δομημένου λογισμικού.

 

 

  1. Δομημένος προγραμματισμός

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

  • Διαδοχή (ή Ακολουθία)
  • Επιλογή
  • Επανάληψη

 

 

Πρότυπα προγραμματισμού

 

  1. Διαδικαστικός (ή προστακτικός) προγραμματισμός

Δομικά στοιχεία του προγράμματος είναι :

Α. οι Εντολές :

Διακρίνονται σε

  • Εισόδου και Εξόδου στοιχείων
  • Ανάθεσης
  • Συνθήκης
  • Επανάληψης

Β. οι Δομές Δεδομένων

 

  1. Αντικειμενοστρεφής προγραμματισμός

Χρησιμοποιείται για την περιγραφή συστημάτων με τη μέθοδο της προσομοίωσης

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

Αντικείμενο ορίζουμε το προγραμματιστικό πακέτο

από ιδιότητες = δεδομένα που το περιγράφουν

και μεθόδους = διαδικασίες που μπορούν να εφαρμοστούν σε αυτό.

Η αλληλεπίδραση των αντικειμένων γίνεται με μηνύματα.

 

  1. Λογικός προγραμματισμός

    Στηρίζεται στη μαθηματική λογική.

Διατυπώνεται ένα σύνολο λογικών προτάσεων στις οποίες εφαρμόζεται ένας μηχανισμός εξαγωγής συμπερασμάτων

 

  1. Συναρτησιακός προγραμματισμός (ή εφαρμοστικός)

    Στηρίζεται στις μαθηματικές συναρτήσεις.

Απεικονίζονται το πεδίο ορισμού και το πεδίο τιμών και εφαρμόζεται η έννοια της αναδρομικότητας = εφαρμογή μίας συνάρτησης πάνω στον εαυτό της.

           

Προγραμματίζοντας

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

 

Βήματα της μεθόδου ανάπτυξης λογισμικού :

α.   Προσδιορισμός των απαιτήσεων του προβλήματος

β.   Ανάλυση του προβλήματος

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

δ.   Υλοποίηση του αλγόριθμου

ε.   Έλεγχος και επαλήθευση του τελικού προγράμματος

στ. Συντήρηση και ενημέρωση του προγράμματος

ζ.   Τεκμηρίωση

 

 

Τρόποι αναπαράστασης αλγορίθμων

α.   με φυσική γλώσσα

όχι αυστηρά δομημένη προσέγγιση

β.   με ψευδοκώδικα

χρησιμοποιούνται συγκεκριμένες δομές

γ.   με λογικό διάγραμμα

γραφικός τρόπος παρουσίασης

 

 

 

 Προγραμματιστικά περιβάλλοντα

Είναι τα εργαλεία λογισμικού που χρησιμοποιούνται στην ανάπτυξη προγραμμάτων

Αποτελούνται από :

α.  Ένα Συντάκτη κειμένου  με τον οποίο γράφεται το πηγαίο πρόγραμμα

β.  Μεταφραστικά εργαλεία

γ.  Εργαλεία εντοπισμού λαθών

 

Η σύγχρονη τάση είναι τα ολοκληρωμένα περιβάλλοντα προγραμματισμού.

Τα εργαλεία ανάπτυξης λογισμικού σε πιο ολοκληρωμένη μορφή ονομάζονται CASE tools δηλαδή εργαλεία συγγραφής με τη βοήθεια υπολογιστή.

 

Οπτικός προγραμματισμός

Η ανάπτυξη προγραμμάτων επιτυγχάνεται με την αξιοποίηση γραφικών μεθόδων.

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