Πέμπτη 28 Σεπτεμβρίου 2017

Γ' Γυμνασίου - Εισαγωγή στον προγραμματισμό



Αποτέλεσμα εικόνας για problemΤη λέξη πρόβλημα την μπορείτε να την συναντήσετε πολλές φορές καθημερινά.
Προβλήματα υπάρχουν συνεχώς στα Μαθηματικά, τη Φυσική, τη Χημεία αλλά και στην καθημερινή μας ζωή.


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


Στο σχολείο τα προβλήματα που ζητάνε λύση θέλουν μια σειρά από λογικές ή μαθηματικές πράξεις.
Παράδειγμα: «ποιο είναι το εμβαδόν ενός τετραγώνου με πλευρά μήκους 10 εκατοστά» ή «ποιος είναι ο μέσος όρος της βαθμολογίας ενός μαθητή;»
Υπάρχουν όμως και προβλήματα της καθημερινής ζωής όπως : «τι διαστάσεις πρέπει να έχει το γραφείο που θα αγοράσω, για να χωράει στο δωμάτιο μου;», «πόσα χρήματα χρειαζόμαστε για να αγοράσουμε ένα κινητό όταν η αρχική του τιμή είναι 80 ευρώ και αυτό το μήνα έχει προσφορά 20% λιγότερο;».

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

------------------------------------------------------------------------------------------------------------------------

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

1. Ο εντοπισμός των δεδομένων. Δεδομένα είναι τα στοιχεία που μας δίνονται για μπορέσουμε να προχωρήσουμε στην επίλυση. Π.χ. για το πρόβλημα «πόσο κοστίζουν 3 κενά DVD αν το καθένα έχει τιμή 2 ευρώ;» τα δεδομένα είναι τα στοιχεία: 3 DVD και 2 ευρώ το καθένα.

2. Η επίλυση του προβλήματος. Επίλυση είναι η διαδικασία με την οποία προσπαθούμε να λύσουμε το πρόβλημα. Με τα παραπάνω δεδομένα επίλυση θεωρείται η πράξη του πολλαπλασιασμού των δεδομένων των 3 DVD με 2 ευρώ το καθένα.

3. Ο προσδιορισμός του ζητούμενου. Ζητούμενο είναι το αποτέλεσμα που προκύπτει από την διαδικασία της επίλυσης του προβλήματος. Στο παραπάνω παράδειγμα είναι το αποτέλεσμα του πολλαπλασιασμού 3 Χ 2, δηλαδή ο αριθμός

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

Για να αρχίσει η επίλυση ενός προβλήματος πρέπει στην αρχή να το κατανοήσουμε. 
Δηλαδή να διακρίνουμε τα δεδομένα, να ορίσουμε τη διαδικασία επίλυσης και να φτάσουμε στο αποτέλεσμα (μέσω πράξεων ή λογικών σκέψεων). Πρέπει δηλαδή να καταλάβουμε καλά το περιεχόμενο του, να διακρίνουμε τα δεδομένα που έχουμε στη διάθεσή μας και τα ζητούμενά του.

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


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

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


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

Για την καλύτερη επίλυσή του μπορούμε να το χωρίσουμε σε μια σειρά από απλούστερα προβλήματα.

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





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

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

Οι οδηγίες πρέπει να είναι σαφείς και με απλά λόγια για να τις καταλαβαίνουν όλοι. 

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

----------------------------------------------------------------------------------------


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

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


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


Ιδιότητες ενός αλγορίθμου


Οι αλγόριθμοι που κατασκευάζουμε πρέπει να πληρούν κάποιες προϋποθέσεις:


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


----------------------------------------------------------------------------------------

Εισαγωγή στον Προγραμματισμό


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

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

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

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

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

Κάθε φορά που χρειαζόμαστε ένα πρόγραμμα από έναν υπολογιστή, ένα σύνολο εντολών αποθηκεύεται («φορτώνεται προσωρινά») στη μνήμη RAM του υπολογιστή και στη συνέχεια εκτελείται από την Κεντρική Μονάδα Επεξεργασίας.

http://photodentro.edu.gr/v/item/ds/8521/1006
Πατήστε στην εικόνα για να δείτε πως εκτελείται ένα πρόγραμμα στο εσωτερικό του υπολογιστή.

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

Εικόνα 1.2. Το γνωστό παιχνίδι ΤΕΤΡΙΣ είναι ένα πρόγραμμα το οποίο περιλαμβάνει μια σειρά εντολών (ένα μικρό υποσύνολο των εντολών του μπορείτε να δείτε στα δεξιά της εικόνας).
Εικόνα 1.2. Το γνωστό παιχνίδι ΤΕΤΡΙΣ είναι ένα πρόγραμμα το οποίο περιλαμβάνει μια σειρά εντολών (ένα μικρό υποσύνολο των εντολών του μπορείτε να δείτε στα δεξιά της εικόνας).
Στην παραπάνω εικόνα αριστερά φαίνεται το περιβάλλον παιχνιδιού του ηλεκτρονικού παιχνιδιού TETRIS και στη δεξιά πλευρά φαίνεται το πρόγραμμα που έχει γράψει ένας προγραμματιστής και εκτελείται στην Κεντρική Μονάδα Επεξεργασίας του υπολογιστή.
 
Μερικές γνωστές γλώσσες προγραμματισμού είναι η Visual Basic, η Logo, η Pascal, η C++, η Java και άλλες.

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



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


Μπορεί ακόμα να φοιτήσει σε κάποια σχολή (Δημόσια ή Ιδιωτική, ΙΕΚ, ΤΕΙ, ΑΕΙ) και να μάθει το λεξιλόγιο, το αλφάβητο και το συντακτικό και τη χρήση μιας ή πολλών διαφορετικών γλωσσών.

Ένας προγραμματιστής ανάλογα με την εφαρμογή που έχει να δημιουργήσει (ηλεκτρονικά παιχνίδια, εφαρμογές γραφείου, on-Line Shops, ιστοσελίδες) μπορεί να επιλέξει και την κατάλληλη γλώσσα προγραμματισμού. Δεν υπάρχει γλώσσα προγραμματισμού που να είναι η μία καλύτερη από την άλλη. Κάθε γλώσσα προγραμματισμού είναι κατάλληλη για τη δημιουργία διαφορετικών εφαρμογών.

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

Μνήμες RAM
  • Σε τι είδους υπολογιστές θα λειτουργήσει η εφαρμογή που θα φτιάξει
  • Πόση μνήμη RAM απαιτείται για τη σωστή εκτέλεση της εφαρμογής και
  • Πόση υπολογιστική ισχύς χρειάζεται (δηλαδή τι ταχύτητα έχει ο επεξεργαστής του υπολογιστή - πόσα GHz και ίσως πόσους πυρήνες, πόση μνήμη cache κ.α.)
Σύγχρονοι Επεξεργαστές της AMD και της Intel
(είναι οι κυριότερες εταιρείες κατασκευής μικροεπεξεργαστών)

Για αρχάριους εύκολες γλώσσες γενικού προγραμματισμού είναι η BASIC, PASCAL κ.α.


Για εφαρμογές στο διαδίκτυο ένας προγραμματιστής θα χρησιμοποιήσει την JAVA, JAVASCRIPT, PYTHON, HTML, XML, CSS.


Μαθήματα JAVA μπορείτε να βρείτε εδώ.

Για την HTML μαθήματα μπορείτε να βρείτε εδώ.


Πολύ σημαντική είναι η γλώσσα προγραμματισμού C και C++, η οποία είναι πλήρης και ευρύτατα διαδεδομένη. Για περισσότερα από 30 χρόνια εξελίσσεται και έχει γίνει πλήρως αποδεκτή από την κοινότητα των προγραμματιστών. Χρησιμοποιείται παντού από την δημιουργία απλών προγραμμάτων έως και την δημιουργία λειτουργικών συστημάτων όπως τα Windows XP, το Linux ή το Unix. Ένα manual για τη γλώσσα C μπορείτε να βρείτε εδώ ή εδώ.

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



-----------------------------------------------------------------------------------------------------------

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


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



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

Τα κύρια εργαλεία είναι:
  • ένας εξειδικευμένος κειμενογράφος όπου μπορεί να γράψει ένα προγραμματιστής το σύνολο των εντολών ενός προγράμματος σε μια γλώσσα προγραμματισμού και
  • ένα πρόγραμμα που μεταφράζει τις εντολές του προγράμματος σε 0 και 1.
Τμήμα
προγράμματος
σε γλώσσα
μηχανής
 Ο υπολογιστής για να κατανοήσει και να εκτελέσει τις εντολές μιας γλώσσας προγραμματισμού πρέπει να τις μετατρέψει σε 0 και 1.
Η γλώσσα αυτή λέγεται γλώσσα μηχανής.

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


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



Δεν ήταν όμως πάντα έτσι τα πράγματα!  
  • Τη δεκαετία του 1950-60 που άρχισαν να δημιουργούνται τα πρώτα προγράμματα οι εντολές ενός προγράμματος γράφονταν, με τη βοήθεια ειδικής γραφομηχανής, σε κάρτες από χαρτόνι αφού δημιουργούσαν τρύπες σε κάποια σημεία (διάτρητες κάρτες), ανάλογα με τα σύμβολα που περιείχαν.
  • Ακολούθησε ένα περιβάλλον που μπορούσε ένας προγραμματιστής να γράφει σε μορφή κειμένου τις εντολές ενός προγράμματος (όπως η διπλανή ασπρόμαυρη εικόνα περιέχει ένα στιγμιότυπο από το περιβάλλον λειτουργίας MS-DOS).
  • Σήμερα υπάρχουν γραφικά περιβάλλοντα που βοηθούν τον προγραμματιστή να συντάξει το περιεχόμενο ενός προγράμματος, να το εκτελέσει και να δει αποτελέσματα μέσα από την ίδια εφαρμογή (π.χ. WINDOWS, MACOS, LINUX κ.α.)
   



Κάποτε οι προγραμματιστές μετέφραζαν οι ίδιοι τις εντολές ενός προγράμματος σε γλώσσα μηχανής (0 και 1). Τις τελευταίες δεκαετίες δημιουργήθηκαν ειδικά  προγράμματα:


  • οι μεταγλωττιστές και
  • οι διερμηνείς.
  • Οι μεταγλωττιστές μεταφράζουν το σύνολο των εντολών ενός προγράμματος σε 0 και 1 και εμφανίζουν συνολικά τα λάθη που μπορεί να έχει ένα πρόγραμμα. Οι μεταγλωττιστές είναι κατάλληλοι για εκτεταμένα και μεγάλα προγράμματα.

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

    ----------------------------------------------------------------------------------------


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


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

    2. Λογικά - αυτά τα λάθη τα ανακαλύπτουμε όταν ελέγχουμε ένα πρόγραμμα και βλέπουμε ότι δεν βγάζει σωστά αποτελέσματα, όπως αυτά που περιμένουμε. 



    -----------------------------------------------------------------------------------------







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

    Κάντε κλικ στη διπλανή εικόνα για να δείτε τα στάδια δημιουργίας ενός προγράμματος (ή αλλιώς τον κύκλο ζωής ενός προγράμματος)