Σύνδεση Όνομα μέλους Κωδικός
Να γίνεται η σύνδεση αυτόματα σε κάθε μου επίσκεψη    
Εγγραφή
Εγγραφή
Συνδεθείτε, για να ελέγξετε τα προσωπικά σας μηνύματα
Συνδεθείτε, για να ελέγξετε τα προσωπικά σας μηνύματα
AnimeClipse Αρχική σελίδα » Εγκυκλοπαίδεια Fansubbing

Βασικές Αρχές Προγραμματισμού *DRAFT*
Προβολή προηγούμενου Θέματος :: Προβολή επόμενου Θέματος  
Συγγραφέας Μήνυμα


Ένταξη: 04 Μάρ 2006
Δημοσιεύσεις: 2744
Τοποθεσία: Θεσσαλονίκη





















Δημοσίευση Δημοσιεύθηκε: Τετ Μάρ 07, 2012 1:48 pm
Τίτλος: Βασικές Αρχές Προγραμματισμού *DRAFT*
Απάντηση με παράθεση αυτού του μηνύματος

Πολλοί θα απορήσατε όταν είδατε τον τίτλο του συγκεκριμένου thread. "Τι δουλειά έχει ο προγραμματισμός στην Εγκυκλοπαίδεια Fansubbing" θα αναρωτηθήκατε.
Και όμως, οι βασικές αρχές προγραμματισμού χρησιμοποιούνται στο fansubiing περισσότερο απ' όσο πιστεύετε. Τα AviSynth script, τα karaoke script, τόσο σε Lua όσο και σε karaoke templater είναι μερικές μόνο περιπτώσεις όπου οι βασικές γνώσεις στον προγραμματισμό απαιτούνται.

Ας ξεκινήσουμε λοιπόν με μερικές απλές έννοιες.

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

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

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

Ένα πρόγραμμα λοιπόν υλοποιεί έναν αλγόριθμο ο οποίος εκτελεί κάποιες συγκεκριμένες ενέργειες. Η μικρότερη δυνατή ενέργεια που μπορεί να εκτελέσει ένα πρόγραμμα ονομάζεται εντολή (command). Όταν ομαδοποιούνται πολλές εντολές μαζί, τότε σχηματίζουν μια συνάρτηση (function) (άλλες ονομασίες: ρουτίνα (sub routine), μέθοδος (method)).

Τα δεδομένα που χρησιμοποιεί ένα πρόγραμμα χωρίζονται σε δύο κατηγορίες, τις σταθερές (constant) και τις μεταβλητές (variable). Οι σταθερές, είναι δεδομένα που το περιεχόμενό τους δεν αλλάζει κατά την εκτέλεση του προγράμματος, αλλά παραμένει σταθερό (εξού και η ονομασία τους), για παράδειγμα το 3. Οι μεταβλητές, αντιπροσωπεύουν δεδομένα που το περιεχόμενό τους μπορεί να αλλάξει κατά την εκτέλεση του προγράμματος, δηλαδή είναι μεταβλητό (εξού και η ονομασία τους), για παράδειγμα η μεταβλητή x.

Κι επειδή οι υπολογιστές δεν είναι τόσο έξυπνοι (ακόμα Razz) όσο εμείς, θα πρέπει να τους ορίζουμε τον τύπο των δεδομένων (data type) που αντιπροσωπεύουν οι μεταβλητές, για παράδειγμα αν είναι ακέραιος αριθμός (int), δεκαδικός αριθμός (float, double, decimal) ή κείμενο (char, string). Οι μεταβλητές μπορούν να αντιπροσωπεύουν και δομές δεδομένων πέρα από απλές τιμές, για παράδειγμα πίνακες (array), λίστες (list) και άλλα. Ο ορισμός (definition) λοιπόν μιας μεταβλητής, στις περισσότερες γλώσσες, απαιτεί το όνομα της μεταβλητής, τη δομή δεδομένων και τον τύπο δεδομένων που αντιπροσωπεύει.

Σχετικά με τις συναρτήσεις, αν θυμηθούμε πάλι τα μαθηματικά του σχολείου, ο ορισμός της συνάρτησης δινόταν ως:
f(x1, x2, ... , xn) = y
όπου x1, x2, ... , xn είναι οι μεταβλητές εισόδου και y η μεταβλητή εξόδου.
Ακριβώς το ίδιο είναι η συνάρτηση και στον προγραμματισμό. Στην πλειοψηφία των γλωσσών προγραμματισμού, μια συνάρτηση έχει μία και μοναδική έξοδο ή καμία, ενώ δεν υπάρχει περιορισμός στον αριθμό των μεταβλητών εισόδου, που στη συγκεκριμένη περίπτωση ονομάζονται παράμετροι (parameters, arguments).

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

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

Τι μπορούμε λοιπόν να κάνουμε με τις μεταβλητές και τις σταθερές σε ένα πρόγραμμα; Καταρχήν, μπορούμε να κάνουμε μαθηματικές πράξεις. Αυτές γίνονται με τη χρήση των τελεστών πράξεων (operator), για παράδειγμα +, -, *, και άλλα. Για κάθε τύπο δεδομένων, ορίζονται από τη γλώσσα προγραμματισμού ποιοι τελεστές είναι επιτρεπτοί και τι ενέργειες κάνουν όταν χρησιμοποιούνται. Για παράδειγμα, ο τελεστής + ανάμεσα σε δύο ακεραίους πραγματοποιεί την πράξη της πρόσθεσης, ενώ ανάμεσα σε δύο μεταβλητές κειμένου πραγματοποιεί συνένωση των δύο κειμένων. Οι περισσότερες γλώσσες επιτρέπουν τον ορισμό της συμπεριφοράς των τελεστών (operator overloading) είτε σε υπάρχοντες τύπους δεδομένων, είτε και σε τύπους δεδομένων που ορίζει ο χρήστης (όπως οι κλάσεις), αλλά αυτό είναι αρκετά προχωρημένο θέμα.

Εκτός από τους τελεστές πράξεων, υπάρχουν και οι λογικοί τελεστές (logical operator), οι οποίοι χρησιμοποιούνται για την πραγματοποίηση συγκρίσεων, όπως η ισότητα, η ανισότητα, το μεγαλύτερο, και άλλα. Όμως για να εκμεταλλευτούμε αυτές τις συγκρίσεις, θα πρέπει να έχουμε και δυνατότητα ελέγχου της ροής (control flow) με κάποιον τρόπο. Αυτό γίνεται με τις εντολές ελέγχου ροής (control flow statement) τις οποίες παρέχει η κάθε γλώσσα προγραμμτισμού. Συνήθως είναι της μορφής:
Κώδικας:
ΕΛΕΓΧΟΣ ΛΟΓΙΚΗΣ ΣΥΝΘΗΚΗΣ
ΕΑΝ ΑΛΗΘΗΣ -> ΕΝΕΡΓΕΙΑ Α
ΕΝΑ ΨΕΥΔΗΣ -> ΕΝΕΡΓΕΙΑ Β

Με αυτόν τον τρόπο, μπορούμε να κατευθύνουμε το πρόγραμμά μας ως προς το ποιες ενέργειες θα εκτελέσει. Επίσης, υπάρχουν και εντολές επαναληπτικών βρόχων, όπου το πρόγραμμα δεν ακολουθεί μια γραμμική ροή, αλλά μια επαναληπτική ροή. Συνήθως είναι της μορφής:
Κώδικας:
ΕΛΕΓΧΟΣ ΛΟΓΙΚΗΣ ΣΥΝΘΗΚΗΣ
ΕΑΝ ΑΛΗΘΗΣ -> ΕΚΤΕΛΕΣΗ ΕΝΕΡΓΕΙΩΝ -> ΕΠΑΝΑΛΗΨΗ ΕΛΕΓΧΟΥ ΛΟΓΙΚΗΣ ΣΥΝΘΗΚΗΣ
ΕΑΝ ΨΕΥΔΗΣ -> ΕΞΟΔΟΣ ΑΠΟ ΤΟΝ ΒΡΟΧΟ

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

Πέρα από τους τελεστές, η κάθε γλώσσα προγραμματισμού έρχεται με έτοιμες βιβλιοθήκες συναρτήσεων και κλάσεων (library), τις οποίες μπορούν να χρησιμοποιήσουν οι χρήστες στα προγράμματά τους, για παράδειγμα την πράξη της ύψωσης ενός αριθμού σε δύναμη (x^y), τον υπολογισμό της τιμής ενός ημιτόνου (sin(x)), την εύρεση του μικρότερου αριθμού σε έναν πίνακα (min(x[]), και άλλα πολλά. Ο χρήστης μάλιστα μπορεί να ομαδοποιήσει συναρτήσεις και κλάσεις που χρησιμοποιεί συχνά σε βιβλιοθήκες, τις οποίες να συμπεριλαμβάνει σε άλλα προγράμματα που γράφει. Έτσι, δε χρειάζεται να γράφει ξανά και ξανά τον ίδιο κώδικα, αλλά τον γράφει μια φορά και τον χρησιμοποιεί μετά παντού.
_________________
Διαβάστε τους Κανόνες του Forum! Τα greeklish απαγορεύονται!
Διαβάστε το Playback FAQ
Feeling... nauseous already? Wait to see my anime list first...

And remember, fansubbing is NOT serious business...
Επιστροφή στην κορυφή
Προβολή του προφίλ του συγγραφέα Αποστολή προσωπικού μηνύματος Επίσκεψη στην ιστοσελίδα του συγγραφέα Διεύθυνση AIM Yahoo Messenger MSN Messenger


Ένταξη: 12 Δεκ 2007
Δημοσιεύσεις: 892
Τοποθεσία: Αθήνα







Δημοσίευση Δημοσιεύθηκε: Τετ Μάρ 07, 2012 2:29 pm
Τίτλος:
Απάντηση με παράθεση αυτού του μηνύματος

Ότι θα έβλεπα και tutorial προγραμματισμού στην AC δεν το περίμενα!!! Πολύ καλή δουλειά Γιώργο. Όπως πάντα, λακωνικός και επεξηγηματικός!!! Respekt
_________________
Επιστροφή στην κορυφή
Προβολή του προφίλ του συγγραφέα Αποστολή προσωπικού μηνύματος
Προβολή όλων των Δημοσιεύσεων που έγιναν πριν από:   
Δημοσίευση νέου Θέματος     Απάντηση στο Θέμα     AnimeClipse Αρχική σελίδα » Εγκυκλοπαίδεια Fansubbing Όλες οι Ώρες είναι GMT + 2 Ώρες
Σελίδα 1 από 1

 
Μετάβαση στη:   
Δεν μπορείτε να δημοσιεύσετε νέο Θέμα σ' αυτήν την Ενότητα
Δεν μπορείτε να απαντήσετε στα Θέματα αυτής της Ενότητας
Δεν μπορείτε να επεξεργασθείτε τις δημοσιεύσεις σας σ' αυτήν την Ενότητα
Δεν μπορείτε να διαγράψετε τις δημοσιεύσεις σας σ' αυτήν την Ενότητα
Δεν έχετε δικαίωμα ψήφου στα δημοψηφίσματα αυτής της Ενότητας




Powered by phpBB © 2001, 2002 phpBB Group






MKPortal M1.1 Rc1 ©2003-2005 All rights reserved
Page generated in 0.01162 seconds with 5 queries