ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 1 Ο Εισαγωγή στις έννοιες Πρόβλημα, Αλγόριθμος, Προγραμματισμός, Γλώσσες Προγραμματισμού ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 1
Πρόβλημα Ως πρόβλημα θεωρείται μια κατάσταση που πρέπει να αντιμετωπιστεί, να λυθεί. Γενικά η λύση του προβλήματος δεν είναι γνωστή, ούτε προφανής. Η διατύπωση του προβλήματος καθορίζει σημαντικά το βαθμό κατανόησής του. Η διατύπωση του μπορεί να είναι είτε ο προφορική, είτεογραπτήοπωσδήποτεόμωςπρέπειναείναι σαφής. Τα συστατικά μέρη του προβλήματος καθώς και ο τρόπος που τα μέρη αυτά συνδέονται μεταξύ τους αποτελούν τη δομή του. Η λύση κάθε προβλήματος προϋποθέτει τον ακριβή προσδιορισμό των δεδομένων του και την λεπτομερή καταγραφή των ζητούμενων του. ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 2
Κατηγορίες προβλημάτων Με κριτήριο τη δυνατότητα επίλυσης διακρίνονται : Επιλύσιμα, έχουν γνωστή λύση ή μπορούν να λυθούν. Ανοικτά, δεν έχει αποδειχθεί ότι δεν επιλύονται. Άλυτα, παραδεχόμαστε ότι δεν λύνονται. Με κριτήριο το βαθμό δόμησης, τα επιλύσιμα προβλήματα διακρίνονται : Δομημένα, λύνονται με τυποποιημένη διαδικασία. Ημιδομημένα, η λύση επιλέγεται από μερικές πιθανές λύσεις. Αδόμητα, οι λύσεις δεν μπορούν να τυποποιηθούν ή δεν έχει διερευνηθεί σε βάθος η δυνατότητα δόμησής τους. Με κριτήριο το είδος της λύσης διακρίνονται : Απόφασης, αναζήτηση απάντησης που να ικανοποιεί τα δεδομένα. Υπολογιστικά, απαιτούνται υπολογισμοί για τη λύση. Βελτιστοποίησης, επιζητείται το καλύτερο αποτέλεσμα. ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 3
Προβλήματα & Υπολογιστές Ανατίθεται η επίλυση προβλημάτων σε υπολογιστές λόγω : της πολυπλοκότητας των υπολογισμών, της επαναληπτικότητας των διαδικασιών, της ταχύτητας εκτέλεσης πράξεων, του μεγάλου όγκου δεδομένων. Ο υπολογιστής ωστόσο εκτελεί μόνο τρεις λειτουργίες : πρόσθεση, που είναι η βασική αριθμητική πράξη. σύγκριση, που είναι η βασική λειτουργία των λογικών πράξεων, μεταφορά δεδομένων, λειτουργία που προηγείται και έπεται της επεξεργασίας δεδομένων. ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 4
Αλγόριθμος Αλγόριθμος είναι μια πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο χρόνο, που αποσκοπεί στην επίλυση ενός προβλήματος. Κάθε αλγόριθμος απαραίτητα ικανοποιεί τα επόμενα κριτήρια. Είσοδος πρέπει να δίνονται μία ή περισσότερες τιμές δεδομένων ως είσοδοι στον αλγόριθμο. Έξοδος ο αλγόριθμος πρέπει να δημιουργεί τουλάχιστον μία τιμή ως αποτέλεσμα. Καθοριστικότητα Κάθε εντολή πρέπει να καθορίζεται πέρα από κάθε αμφιβολία για τον τρόπο εκτέλεσής της. Περατότητα ο αλγόριθμος πρέπει να τελειώνει μετά από πεπερασμένα βήματα εκτέλεσης των εντολών του. Αποτελεσματικότητα όλες οι μεμονωμένες εντολές του αλγορίθμου να είναι απλές. ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 5
Προγραμματισμός Η επίλυση προβλήματος με την χρήση υπολογιστή περιλαμβάνει, τρία εξίσου σημαντικά στάδια. Τον ακριβή προσδιορισμό του προβλήματος. Την ανάπτυξη του αντίστοιχου αλγορίθμου. Τη διατύπωση του αλγορίθμου σε κατανοητή μορφή από τον υπολογιστή. Ο προγραμματισμός αναφέρεται στο τελευταίο στάδιο, τη δημιουργία του συνόλου των εντολών που πρέπει να δοθούν στον υπολογιστή, ώστε να υλοποιηθεί ο αλγόριθμος για την επίλυση του προβλήματος. Αρχικά οι εντολές δίνονταν με κατάλληλες ακολουθίες από 0 και 1, σε μορφή δηλαδή κατανοητή από τον υπολογιστή αλλά ακατανόητη από τον άνθρωπο. Από νωρίς δημιουργήθηκε μία συμβολική γλώσσα, που την κατανοεί ο άνθρωπος και εσωτερικά του υπολογιστή μετατρέπει τις εντολές στις αντίστοιχες ακολουθίες από 0 και 1. ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 6
Εντολές στον Επεξεργαστή ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 7
Γλώσσα Μηχανής ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 8
Γλώσσες υψηλού επιπέδου Η τεχνική του δομημένου προγραμματισμού εξασφαλίζει τη δημιουργία προγραμμάτων απλών στη συγγραφή και την κατανόηση και εύκολων στη διόρθωση. Η κυριότερη γλώσσα δομημένου προγραμματισμού είναι η C. Η C εξελίχτηκε στη γλώσσα C++, που είναι αντικειμενοστραφής. H JAVA αντικειμενοστραφής γλώσσα που αναπτύχθηκε με σκοπό την ανάπτυξη εφαρμογών, που θα εκτελούνται σε κατανεμημένα περιβάλλοντα, δηλαδή σε διαφορετικούς συνδεδεμένους υπολογιστές. Ακολούθησαν οι γλώσσες προγραμματισμού που καθοδηγούνται από γεγονότα(object driven programming) και οπτικού προγραμματισμού (visual programming). Οδηγούμενες από το γεγονός εννοούμε τη δυνατότητα να ενεργοποιούνται λειτουργίες με την επιλογή της εντολής από μενού ή με το κλικ του ποντικιού. Με τον όρο οπτικό εννοούμε τη δυνατότητα να δημιουργούμε γραφικά ολόκληρο το περιβάλλον της εφαρμογής. ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 9