Συναρτησιακός προγραμματισμός : Η άλλη πλευρά του νομίσματος

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Συναρτησιακός προγραμματισμός : Η άλλη πλευρά του νομίσματος"

Transcript

1 Συναρτησιακός προγραμματισμός : Η άλλη πλευρά του νομίσματος Απόστολος Συρόπουλος 28ης Οκτωβρίου ΞΑΝΘΗ Οκτώβριος 1999 Δημοσιεύτηκε στο τεύχος Οκτωβρίου 1999 του περιοδικού RAM, σελ Εισαγωγή Πριν από μερικά χρόνια συζητούσα με κάποιο καθηγητή μου το ζήτημα της μελλοντικής μου επαγγελματικής αποκατάστασης. Ένα πρόβλημα που με απασχολούσε ιδιαίτερα ήταν αυτό της γνώσης κάποιων γλωσσών προγραμματισμού. Σκεφτόμουν ότι πολύ πιθανά κάποια εταιρεία να μου ζητούσε να γνωρίζω κάποια γλώσσα την οποία όμως εγώ δεν θα γνώριζα, ενώ θα γνώριζα κάποια παραπλήσια. Ο Bror, έτσι λένε τον καθηγητή μου, μου είπε απλά στην περίπτωση που συμβεί αυτό να πω ότι γνωρίζω την γλώσσα και το ίδιο βράδυ να βρω ένα βιβλίο εκμάθησης της γλώσσας και να την μάθω! Μου φάνηκε υπερβολικό, αλλά όμως μετά από λίγο συνειδητοποίησα το πόσο δίκαιο είχε. Σκεφτήκατε ποτέ σε ποίο ουσιαστικό σημείο διαφέρει η C από την Pascal ή η Ada από τη Modula-2, την Java ή την C++? Ο πυρήνας όλων αυτών των γλωσσών προγραμματισμού είναι η εντολή ανάθεσης, δηλαδή η εντολή με την οποία αλλάζουμε ή δίνουμε τιμή (αξία) σε μία μεταβλητή. Σκεφτείτε το! Κάνοντας ένα βήμα παραπέρα: Έχει άραγε νόημα μια γλώσσα προγραμματισμού να μην διαθέτει την εντολή ανάθεσης? Η απάντηση στο προηγούμενο ερώτημα, προς έκπληξη πολλών φαντάζομαι αναγνωστών, είναι : ΝΑΙ! Καταρχήν οι γλώσσες προγραμματισμού χωρίζονται σε δύο μεγάλες κατηγορίες : τις προστακτικές (imperative) και τις δηλωτικές (declarative). Έχοντας κανείς να λύσει ένα πρόβλημα, χρησιμοποιώντας τις πρώτες περιγράφει ακριβώς τι πρέπει να κάνει ο Η/Υ ώστε να λυθεί υπολογιστικά το πρόβλημά του. Αν όμως κανείς χρησιμοποιεί μια δηλωτική γλώσσα, απλά περιγράφει πως πρέπει να λυθεί το πρόβλημα του. Ας δούμε ένα παράδειγμα. Έστω ότι θέλουμε να γράψουμε ένα πρόγραμμα το οποίο θα υπολογίζει το άθροισμα των πρώτων n φυσικών αριθμών. Στην περίπτωση μιας προστακτικής γλώσσας, όπως η C++, το πρόγραμμά μας θα έχει την παρακάτω μορφή: sum=0; cin >> n; for(i=0; i<=n; i++) sum += i; cout << sum << '\n'; Δηλαδή χρησιμοποιώντας έναν αθροιστή και μία εντολή επανάληψης (και όχι εντολή ανακύκλωσης όπως κακώς αναφέρεται σε πολλά κείμενα), βρίσκουμε το τελικό αποτέλεσμα. Στην περίπτωση μιας δηλωτικής γλώσσας θα πρέπει να ανακαλύψουμε τις ιδιότητες του αθροίσματος και με βάση αυτές να γράψουμε το πρόγραμμά μας. Δηλαδή ότι το άθροισμα των n αριθμών είναι ίσο με n συν το άθροισμα των n 1 1

2 αριθμών, ενώ το άθροισμα το των n 1 αριθμών με n 1 συν το άθροισμα των n 2 αριθμών, κ.ο.κ. Ιδού το αντίστοιχο πρόγραμμα σε μορφή ψευδό-κώδικα: sum n = if n==0 then 0 else n + sum(n-1) n = inputstream show sum n Παρατηρήστε ότι στις δηλωτικές γλώσσες «παίζουμε» με αναδρομικές δηλώσεις λειτουργιών (functions όπως αυτές της Pascal ή της C). Μια διαδικασία ή μια λειτουργία ονομάζεται αναδρομική όταν ορίζεται με βάση τον ίδιο της τον εαυτό, π.χ., το παραγοντικό ενός αριθμού n ορίζεται ως εξής: { 1, an n = 1 n! = n (n 1)! αλλιώς Είναι φανερό ότι το παραγοντικό του n ορίζεται με βάση την τιμή του παραγοντικού του n 1, του n 1 με βάση αυτό του n 2, κ.ο.κ. Επιπλέον, υπάρχει μια τερματική συνθήκη με την οποία καθορίζουμε που θα σταματήσει ο υπολογισμός. Έτσι αν θέλουμε να υπολογίσουμε το 3! θα το κάνουμε ως εξής: 3! = 3 (3 1)! = 3 2! = 3 2 (2 1)! = 3 2 1! = = 6. Προσέξτε την σημασία της τερματικής συνθήκης. Οι δηλωτικές γλώσσες χωρίζονται σε δύο κατηγορίες : στις λογικές (logic) και στις συναρτησιακές (functional). Οι λογικές γλώσσες προγραμματισμού έχουν τα μαθηματικά τους θεμέλια στην μαθηματική θεωρία αποδείξεων (proof theory) και ουσιαστικά αποτελούν εργαλεία απόδειξης θεωρημάτων. Με άλλα λόγια, κάθε πρόγραμμα είναι ένα θεώρημα το οποίο ζητάμε να αποδείξει η υλοποίηση της γλώσσας. Η πιο γνωστές λογικές γλώσσες προγραμματισμού είναι η Prolog και οι διάφορες παραλλαγές της, όπως η λ-prolog, κ.ά. Οι συναρτησιακές έχουν τα μαθηματικά τους θεμέλια στον λογισμό λ του Alonzo Church (βλέπε πλαίσιο για μια σύντομη περιγραφή του λογισμού λ). Σε μία συναρτησιακή γλώσσα προγραμματισμού κανείς ορίζει συναρτήσεις των οποίων η σύνθεση (βλέπε επόμενη ενότητα), συνήθως, αποτελεί τη λύση στο πρόβλημα μας. Οι πιο γνωστές συναρτησιακές γλώσσες προγραμματισμού είναι η Lisp1, η SML, η LML, η Miranda, η SISAL, η Haskell, κ.ά. Όλα σχεδόν τα κείμενα που πραγματεύονται γενικά τον συναρτησιακό προγραμματισμό, χρησιμοποιούν μια γλώσσα προγραμματισμού για να δείξουν τα ιδιαίτερα χαρακτηριστικά αυτής της προγραμματιστικής φιλοσοφίας. Εμείς εδώ διαλέξαμε την Haskell2, ως γλώσσα αναφοράς μιας και αποτελεί την καλύτερη κατά τεκμήριο συναρτησιακή γλώσσα προγραμματισμού. 1Να σημειώσουμε ότι η Lisp δεν είναι συναρτησιακή γλώσσα όπως οι υπόλοιπες, αλλά έχει τα ίδια μαθηματικά θεμέλια με τις υπόλοιπες γλώσσες. 2Tο όνομά της είναι το όνομα του μεγάλου λογικολόγου (logician) Haskell B. Curry. 2

3 (Αν δεν είστε εξοικειωμένος με την έννοια της συνάρτησης απλά διαβάστε την αρχή της δεύτερης ενότητας όπου γίνεται μια σύντομή περιγραφή της έννοιας.) Ο λογισμός λ συλλήφθηκε από τον Alonzo Church, ως μέρος μια γενικότερης θεωρίας των συναρτήσεων και της λογικής που προορίζονταν να γίνει θεμέλιο των μαθηματικών. Μολονότι, όπως αποδείχθηκε, το όλο σύστημα είχε αδυναμίες, το υποσύστημα που πραγματεύονταν μόνο τις συναρτήσεις έγινε ένα επιτυχημένο μοντέλο για τις «υπολογίσιμες συναρτήσεις», δηλαδή όλων εκείνων των συναρτήσεων τις οποίες μπορεί να υπολογίσει μια μηχανή Turing. Η αναπαράσταση μιας υπολογίσιμης συνάρτησης με έναν όρο του λογισμού λ, οδηγεί στον συναρτησιακό προγραμματισμό. Ο λογισμός λ έχει δύο βασικές πράξεις. Η πρώτη είναι η εφαρμογή. Έτσι η παράσταση F A υποδηλώνει ότι τα δεδομένα F θεωρούμενα ως αλγόριθμος εφαρμόζονται στο A θεωρούμενο ως είσοδος. Είναι ενδιαφέρον να τονίσουμε ότι μπορούμε να έχουμε ως είσοδο τον ίδιο τον αλγόριθμο, πράγμα που συμβαίνει σε γλώσσες όπως η Lisp. Η άλλη βασική πράξη είναι η αφαίρεση. Αν γενικά το M είναι μια (αλγεβρική) έκφραση που περιέχει (ή εξαρτάται από) το x, τότε η παράσταση λx. δηλώνει μια συνάρτηση από το x στο πεδίο τιμών της παράστασης [x]. Για να γίνουμε πιο συγκεκριμένοι: έστω ότι = 3x + 4, τότε η αφαίρεση λx.3x + 4 δηλώνει την συνάρτηση που αντιστοιχεί κάθε x στην τιμή 3x + 4. Αν έχουμε μια αφαίρεση λάμδα, μπορούμε να την εφαρμόσουμε σε κάποια είσοδο αντικαθιστώντας κάθε εμφάνιση της μεταβλητής με την είσοδο. Για παράδειγμα η εφαρμογή (λx.3x+1/x)6 έχει ως αποτέλεσμα την παράσταση 3 6+1/6. Αν και μιλήσαμε για αφαιρέσεις λάμδα με μια εξαρτώμενη μεταβλητή, δεν υπάρχει κανένα πρόβλημα για αφαιρέσεις με πολλές μεταβλητές, π.χ., λx.λy.λz.x + 3y + 2z, κ.λπ. (Σημειώστε ότι μόνο η τελευταία τελεία είναι υποχρεωτική.) Φυσικά υπάρχουν πάρα πολλά ακόμη να λεχθούν για τον λογισμό λ, όπως για παράδειγμα το γεγονός ότι σε κάθε μαθηματική λογική (κλασική, γραμμική, κ.λπ.) αντιστοιχεί ένας λογισμός λ με ιδιαίτερα χαρακτηριστικά, εντούτοις εμείς δε μπορούμε να επεκταθούμε περισσότερο. Ο αναγνώστης που ενδιαφέρεται να μάθει περισσότερα μπορεί να διαβάσει το κλασικό πλέον βιβλίο του H.P. Barendregt με τίτλο «e lambda calculus: its syntax and semantics», το οποίο εκδίδει ο οίκος North-Holland. 2 Συναρτήσεις και συναρτησιακός προγραμματισμός Στα μαθηματικά μια συνάρτηση είναι ένας μηχανισμός που παρέχει μια αντιστοιχία από αντικείμενα ενός συνόλου, το πεδίο ορισμού, σε αντικείμενα ενός άλλου συνόλου, το πεδίο τιμών. Ένα απλό παράδειγμα συνάρτησης είναι η συνάρτηση που αντιστοιχεί σε κάθε ακέραιο αριθμό μία από τις λέξεις συν, πλην ή μηδέν, ανάλογα του αν ο αριθμός είναι θετικός, αρνητικός ή μηδέν. Ονομάζουμε αυτή την συνάρτηση πρόσημο αντανακλώντας την αντιστοιχία που επιτελεί. Υπάρχουν τρεις τρόποι ορισμού μιας συνάρτησης: 1. μέσω ενός διαγράμματος που δείχνει σε ποιο στοιχείο του πεδίου τιμών αντιστοιχεί το οποιοδήποτε στοιχείο του πεδίου ορισμού, 2. μέσω μιας σειράς εξισώσεων όπου δίνουμε την τιμή της συνάρτησης για κάθε δυνατή τιμή, και 3. μέσω της περιγραφής της αντιστοιχίας που επιτελεί η συνάρτηση. Στο σχήμα 1 φαίνονται οι τρεις αυτές μέθοδοι ορισμού συνάρτησης για την περίπτωση της συνάρτησης πρόσημο. Ειδικά στην τρίτη περίπτωση το x ονομάζεται παράμετρος και αναπαριστά οποιοδήποτε στοιχείο του πεδίου ορισμού. Όταν το x πάρει μια συγκεκριμένη τιμή, αυτή ονομάζεται όρισμα της συνάρτησης, π.χ., στην παράσταση πρόσημο(4) το 4 είναι όρισμα της συνάρτησης. Η τρίτη μέθοδος είναι αυτή που συνήθως χρησιμοποιούμε στον συναρτησιακό προγραμματισμό, ενώ σε αρκετές περιπτώσεις χρησιμοποιούμε και την δεύτερη. Φυσικά μια συνάρτηση μπορεί να έχει παραπάνω από μία παραμέτρους. Μια συνάρτηση λέγεται καλώς ορισμένη όταν κάθε στοιχείο του πεδίου ορισμού αντιστοιχεί σε μόνο ένα στοιχείο του πεδίου τιμών. Όπως αναφέρθηκε παραπάνω ένα βασικό συστατικό του συναρτησιακού προγραμματισμού είναι η δυνατότητα σύνθεσης συναρτήσεων. Τι σημαίνει όμως αυτό? Έστω ότι θέλουμε να υπολογίσουμε το μέγιστο δύο ακεραίων. Η παρακάτω συνάρτηση βρίσκει το μέγιστο δύο αριθμών: 3

4 αʹ μείον μηδέν συν βʹ. πρόσημο( 3) = μείον πρόσημο( 2) = μείον πρόσημο( 1) = μείον πρόσημο(0) = μηδέν πρόσημο(1) = συν πρόσημο(2) = συν πρόσημο(3) = συν. γʹ πρόσημο(x) = μείον, αν x < 0 μηδέν, αν x = 0 συν, αν x > 0 Σχήμα 1: Μέθοδοι ορισμού συνάρτησης. 4

5 max x y = if x>=y then x else y Το πεδίο ορισμού της συνάρτησης είναι εκείνο το σύνολο που αποτελείται από ζεύγη ακεραίων και το πεδίο τιμών το σύνολο των ακεραίων. (Βέβαια για μια πεπερασμένη μηχανή όπως ένας Η/Υ το σύνολο των ακεραίων δεν είναι παρά ένα πολύ μικρό υποσύνολό του.) Αν θέλουμε να υπολογίσουμε το μέγιστο τριών αριθμών, θα πρέπει να ορίσουμε μια νέα συνάρτηση: max3 x y z x>=y && x>z x>=z && x>y = x y>=x && y>z y>=z && y>x = y z>=x && z>y z>=y && z>x = z otherwise = x (Το σύμβολο && σημαίνει και, το σύμβολο ή και το σύμβολο αν, δηλαδή η τρίτη γραμμή της δήλωσης σημαίνει ό,τι το μέγιστο των x, y και z είναι το z αν z>=x && z>y z>=y && z>x. Τα άλλα σύμβολα, τελεστές σύγκρισης, είναι αυτονόητα.) Τώρα, ας προσπαθήσουμε να γράψουμε τον παραπάνω ορισμό με απλούστερο τρόπο. Ασφαλώς θα συμφωνείτε ότι ο παρακάτω ορισμός είναι σαφέστατα πιο κατανοητός και πιο απλός: max3 x y x = max(x,max(y,z)) Με τον τρόπο αυτό κανείς μπορεί δημιουργεί νέες συναρτήσεις βασιζόμενος σε προηγούμενη δουλειά. (Ως άσκηση, προσπαθήστε να δημιουργήσετε μια συνάρτηση η οποία θα υπολογίζει το μέγιστο τεσσάρων ακεραίων αριθμών.) Μάλιστα, αυτός είναι και ο λόγος που κάθε τυπική εγκατάσταση της Haskell συνοδεύεται από ένα μεγάλο αριθμό προκαθορισμένων συναρτήσεων. Ένα ακόμη βασικό χαρακτηριστικό κάθε συναρτησιακής γλώσσας προγραμματισμού είναι η έλλειψη παρενεργειών, η δυνατότητα χρήσης των οποίων αποτελεί βασικό χαρακτηριστικό κάθε προστακτικής γλώσσας προγραμματισμού. Όμως τι είναι οι παρενέργειες? Αν ορίσουμε μια συνάρτηση σε κάποια προστακτική γλώσσα προγραμματισμού, η οποία επιστρέφει κάποια τιμή αλλά και ταυτόχρονα αλλάζει την τιμή κάποιας καθολικής μεταβλητής, τότε λέμε ότι η συνάρτηση έχει παρενέργειες. Όσο αθώες και αν φαίνονται οι παρενέργειες, εντούτοις μπορούν εύκολα και απλά να παραβιάσουν βασικούς κανόνες των μαθηματικών και έτσι να έχουμε αναπάντεχα αποτελέσματα! Το παρακάτω πρόγραμμα σε C++ δείχνει ακριβώς το τι εννοούμε. Το πρόγραμμα απλά τυπώνει στην οθόνη του Η/Υ το άθροισμα f(1) + f(2) και το άθροισμα f(2) + f(1). Η f επιστρέφει είτε το όρισμα της, είτε το διπλάσιο του ορίσματος της, ανάλογα της τιμής της καθολικής μεταβλητής flag, της οποία όμως την τιμή μεταβάλει πριν επιστρέψει τον έλεγχο στο κύριο πρόγραμμα. #include <iostream.h> bool flag; int f(int n) { return (flag=!flag, (flag? n : 2*n)); } int main() { flag=true; cout << f(1)+f(2) << '\n'; cout << f(2)+f(1) << '\n'; } 5

6 Αν «τρέξετε» το πρόγραμμα αυτό θα διαπιστώσετε ότι παίρνουμε ως έξοδο τους αριθμούς 4 και 5, ενώ είναι γνωστό από τα μαθηματικά του γυμνασίου ότι a + b = b + a, πράγμα που εδώ προφανώς δεν ισχύει. Από την άλλη, δεν υπάρχει καμία πιθανότητα μια συναρτησιακή γλώσσα προγραμματισμού να παρουσιάσει μια ανακολουθία αυτής της μορφής. Αυτή η ιδιότητα των συναρτησιακών γλωσσών είναι γνωστή στη βιβλιογραφία ως referential transparency («αναφορική διαφάνεια»). Επίσης εντολές ανάθεσης που δημιουργούν παρενέργειες χαρακτηρίζονται ως καταστροφικές. Συμπερασματικά λέμε ό,τι αυτό που χαρακτηρίζει κάθε συναρτησιακή γλώσσα προγραμματισμού είναι ότι προγραμματίζουμε με συναρτήσεις τις οποίες μπορούμε να συνθέτουμε και οι οποίες δεν παραβιάζουν τα βασικά αξιώματα των μαθηματικών. 3 Σύντομη εισαγωγή στον συναρτησιακό προγραμματισμό με την Haskell Χονδρικά μιλώντας, όταν λέμε «τύπο» σε μια γλώσσα προγραμματισμού εννοούμε ένα σύνολο τιμών και ορισμένες πράξεις που γίνονται με στοιχεία του συνόλου αυτού. (Οι αναγνώστες με κάποιο μαθηματικό υπόβαθρο, μπορούν χονδρικά να ταυτίσουν ένα τύπο με κάποια αλγεβρική δομή, π.χ., ομάδα, δακτύλιο, κ.λπ.) Κάθε συναρτησιακή γλώσσα προγραμματισμού είναι μια γλώσσα με ένα «ισχυρό» σύστημα τύπων. Αυτό σημαίνει ότι η υλοποίηση της γλώσσας ελέγχει πάντα αν κάποια έκφραση είναι σύμφωνη με τους κανόνες που διέπουν το σύστημα τύπων της. Για παράδειγμα δεν επιτρέπεται να προσθέτουμε ένα ακέραιο με ένα χαρακτήρα. Εκείνο όμως που κάνει ξεχωριστό το σύστημα τύπων κάθε συναρτησιακής γλώσσας σε σχέση με το αντίστοιχο κάποιας προστακτικής γλώσσας είναι το γεγονός ότι δεν απαιτείται να δηλώσουμε τον τύπο των συναρτήσεων και των διαφόρων παραστάσεων, καθώς αυτός εξάγεται από την υλοποίηση της γλώσσας με απόλυτα ασφαλή μέθοδο. Οι βασικοί τύποι της Haskell είναι οι εξής: Οι τύποι Int και Integer που αναφέρονται σε ακεραίους με πεπερασμένο και απεριόριστο αριθμό ψηφίων αντίστοιχα. Οι τύποι Float και Double που αναφέρονται σε δεκαδικούς απλής και διπλής ακρίβειας αντίστοιχα. Ο τύπος Bool με τις δύο δυνατές τιμές: True και False. Ο τύπος Char που αναφέρεται σε χαρακτήρες. Σημειώστε ότι όλα τα ονόματα τύπων γράφονται με κεφαλαίο το πρώτο τους γράμμα. Εκτός όμως από τους βασικούς τύπους, υπάρχουν και αρκετές μέθοδοι δημιουργίας νέων τύπων. Αν με το γράμμα a δηλώνουμε ένα τύπο, ο τύπος [a] δηλώνει μια ακολουθία από αντικείμενα τύπου a. Οι ακολουθίες διαφέρουν από τις παρατάξεις (arrays) στο γεγονός ότι δε μπορούμε να έχουμε πρόσβαση σε οποιοδήποτε στοιχείο τους, ακριβώς όπως για παράδειγμα συμβαίνει με μία ουρά: κανείς πάει πάντα στο τέλος και περιμένει την σειρά του. Μια ακολουθία αντικειμένων είναι μια δομή δεδομένων η οποία είναι είτε κενή, οπότε γράφεται [], είτε μη-κενή και αποτελείται από ένα αντικείμενο h, την κεφαλή, και μία άλλη ακολουθία αντικειμένων t, την ουρά. Μια μη-κενή ακολουθία γράφεται h:t. Για παράδειγμα η ακολουθία 1:2:3:[] αποτελείται από τους αριθμούς 1, 2 και 3, ενώ η άδεια ακολουθία μπαίνει απλά για να ορίσουμε το τέλος της ακολουθίας. Εναλλακτικά κανείς μπορεί να γράψει την προηγούμενη ακολουθία ως εξής: [1,2,3]. Τα κορδόνια, String, δεν είναι παρά [Char], δηλαδή ακολουθίες χαρακτήρων τα οποία όμως επιτρέπεται να γράφονται και σε συμπαγή μορφή: η ακολουθία ['A',' ','S','t','r','i','n','g'] γράφεται "A String". 6

7 Αν τα a και b δηλώνουν κάποιους τύπους, ο τύπος (a,b) δηλώνει τον τύπο ζευγών που το πρώτο μέλος είναι τύπου a και το δεύτερο τύπου b. Φυσικά μπορούμε να δημιουργήσουμε τριάδες, τετράδες, κ.ο.κ., αλλά ζεύγη όπου ο ένας τύπος είναι μια τριάδα, κ.λπ. Γενικότερα οι νιάδες αντιστοιχούν σε records της Pascal ή σε structures της C. Αν τα a και b δηλώνουν κάποιους τύπους, ο τύπος a->b δηλώνει τον τύπο συναρτήσεων που έχουν ως πεδίο ορισμού τον τύπο a και ως πεδίο τιμών τον τύπο b. Για παράδειγμα η συνάρτηση strlen η οποία βρίσκει το μήκος ενός κορδονιού έχει τύπο [Char]->Int. Αφού μάθαμε τους διάφορους δυνατούς τύπους που παρέχει η γλώσσα Haskell, ας δούμε πώς γράφουμε συναρτήσεις. Κάθε συνάρτηση έχει όνομα και χαρακτηρίζεται από τον αριθμό των παραμέτρων που δέχεται καθώς και το τι υπολογίζει, το οποίο είναι μια γενικευμένη αλγεβρική παράσταση. Την ονομάζουμε γενικευμένη απλά γιατί μπορεί να περιέχει παραστάσεις συνθήκης, απλές αλγεβρικές παραστάσεις, κ.ά. Για παράδειγμα οι συναρτήσεις square y = y*y factorial x = product [1..x] sign n = if n>0 then "plus" else if n=0 then "zero" else "minus" υπολογίζουν το τετράγωνο, το παραγοντικό ενός αριθμού και το πρόσημο ενός αριθμού. Η συνάρτηση factorial ορίζεται με βάση την συνάρτηση product η οποία υπολογίζει το γινόμενο όλων των μελών μιας ακολουθίας αριθμών. Προσέξτε ότι η ακολουθία [x..y] αποτελείται από όλους τους ακεραίους από το x ως και το y. Ενώ η ακολουθία [x,y..z] αποτελείται από τους ακεραίους από το x ως το z ανά y-x, δηλαδή η ακολουθία [1,3..10] είναι ισοδύναμη με την [1,3,5,7,9]. Ένα ιδιαίτερο χαρακτηριστικό της Haskell είναι ότι υπολογίζει τα ορίσματα κάθε συνάρτησης μόνο αν χρειάζεται και όσο αυτό χρειάζεται. Έτσι αν ορίσουμε την συνάρτηση myfunc x y = x και ζητήσουμε από κάποια υλοποίηση της γλώσσας να υπολογίσει την παράσταση myfunx 3 3/0 το αποτέλεσμα θα είναι 3, επειδή σύμφωνα με τον ορισμό το δεύτερο όρισμα απλά δεν λαμβάνεται υπ όψη. Από την άλλη καμία προστακτική γλώσσα δεν θα μπορούσε να υπολογίσει την αντίστοιχη παράσταση. Αυτό το ιδιαίτερο χαρακτηριστικό πολλών συναρτησιακών γλωσσών προγραμματισμού είναι γνωστό στη διεθνή βιβλιογραφία ως lazy evaluation. Εκτός όμως από τη δυνατότητα ορισμού ακολουθιών με απλή αναγραφή των μελών της μπορούμε να βάζουμε τη γλώσσα να υπολογίζει τα μέλη μιας ακολουθίας, ακριβώς όπως όταν ορίζουμε ένα σύνολο περιγραφικά, π.χ., η ακολουθία [ x x <- [0..100], odd x ] αποτελείται από τους περιττούς αριθμούς που βρίσκονται μεταξύ του 0 και του 100. Προσέξτε ότι ο ορισμός είναι σχεδόν ίδιος με τον αντίστοιχο μαθηματικό: {x 0 x 100 και x περιττός}. Αυτή ακριβώς η δυνατότητα χρησιμοποιείται από την Haskell για τον ορισμό παρατάξεων (arrays). Έτσι αν θέλουμε να ορίσουμε μια παράταξη, πρέπει να ορίσουμε τα άκρα της καθώς και τον τρόπο δημιουργίας των στοιχείων της: squares = array(1,100)[(i,i*i) i <- [1..100]] Βλέπουμε ότι ορίζουμε η παράταξη να έχει 100 στοιχεία με δείκτες από το 1 ως το 100. Το ζεύγος στις αγκύλες χρησιμεύει στο να δείξουμε σε πιο στοιχείο της παράταξης πρέπει να βάλουμε πια τιμή. Αν θέλουμε το έβδομο στοιχείο της παράταξης, απλά γράφουμε squares!7. Στις περισσότερες προστακτικές γλώσσες προγραμματισμού, υπάρχει η δυνατότητα ορισμού επαγωγικών τύπων, όπως δένδρων, λιστών, σωρών, κ.λπ. Μόνο που εκεί συνήθως ένας ορισμός ενός επαγωγικού τύπου γίνεται με τη βοήθεια δεικτών. Οι συναρτησιακές γλώσσες δίνουν αυτή τη δυνατότητα, αλλά 7

8 επιπλέον το κάνουν με ένα πολύ απλό και σχεδόν φυσικό τρόπο. Έστω ότι θέλουμε να ορίσουμε έναν επαγωγικό τύπο που να αναπαριστά τους φυσικούς αριθμούς, τότε στην Haskell θα γράψουμε data Nat = Zero Succ Nat όπου Zero ο αριθμός μηδέν και Succ ο επόμενος κάποιου φυσικού αριθμού (το σύμβολο διαβάζεται, σε αυτή την περίπτωση, ή). Το παράδειγμα στηρίζεται στην θεώρηση ότι κάθε φυσικός αριθμός μπορεί να παρασταθεί με βάση το μηδέν και μια συνάρτηση που υπολογίζει τον επόμενο κάποιου αριθμού. Έτσι ο αριθμός 2 = SuccSuccZero. Αν θέλουμε να ορίσουμε για παράδειγμα ένα δυαδικό δένδρο, τότε πρέπει να καταφύγουμε στον ορισμό ενός παραμετρικού επαγωγικού τύπου: data BinTree a = Null Node a (BinTree a) (BinTree a) Προσέξτε ότι εδώ ορίζουμε το δυαδικό δένδρο να είναι είτε κενό, είτε να αποτελείται από ένα κόμβο που περιέχει μια πληροφορία τύπου a και δύο υπό-δένδρα, τα οποία με την σειρά των μπορούν να είναι είτε κενά, είτε να περιέχουν πληροφορίες, κ.ο.κ. Όταν έχουμε επαγωγικούς τύπους μπορούμε να χρησιμοποιήσουμε τον ορισμό των για να ορίσουμε συναρτήσεις που θα τους διαχειρίζονται. Οι συναρτήσεις αυτές ορίζονται με πρότυπα, δηλαδή γενικές περιγραφές της δομής κάποιου ορίσματος. Για παράδειγμα στο σχήμα 2 δίνουμε την υλοποίηση του αλγορίθμου ταξινόμησης QuickSort του C.A.R. Hoare σε Haskell και C/C++ για να καταδείξουμε την εκφραστική δύναμη του συναρτησιακού προγραμματισμού αλλά και για να δείξουμε ένα παράδειγμα της χρήσης προτύπων (pattern matching). Προσέξτε ότι μια ακολουθία είναι είτε άδεια είτε περιέχει κάποια στοιχεία. Αν είναι άδεια, τότε απλά επιστρέφουμε την άδεια ακολουθία. Αν είναι γεμάτη, τότε πρέπει να γνωρίζουμε το πρώτο της στοιχείο και «συλλογικά» τα υπόλοιπα. Έτσι αν θέλουμε να υπολογίσουμε το μήκος μιας ακολουθίας η παρακάτω συνάρτηση κάνει με το παραπάνω την δουλειά μας: len [] = 0 len (x:xs) = 1 + len xs Το ενδιαφέρον σε αυτό τον ορισμό είναι ότι μπορεί να εφαρμοσθεί σε κάθε είδους ακολουθία. Η δυνατότητα που έχουν πολλές συναρτησιακές γλώσσες να δηλώνει κανείς συναρτήσεις για ένα ευρύ φάσμα ομοειδών δομών ονομάζεται πολυμορφία. Ας δούμε ένα ακόμη παράδειγμα μιας πολύμορφης συνάρτησης η οποία αντιστρέφει μια ακολουθία: reverse [] = [] reverse (h:t) = reverse t ++ [h] Προσέξτε ότι εδώ δημιουργούμε νέες ακολουθίες που αποτελούνται από ένα μόνο στοιχείο. Εκτός από τους επαγωγικούς τύπους μπορούμε να έχουμε και άπειρες δομές δεδομένων, η ύπαρξη και χρήση των οποίων είναι αποτέλεσμα του lazy evaluation. Για παράδειγμα, οι παρακάτω συναρτήσεις ορίζουν η μεν πρώτη μια άπειρη ακολουθία αποτελούμενη μόνο από το ψηφίο 1, ενώ η δε δεύτερη μια ακολουθία αποτελούμενη από τους αριθμούς από κάποιο ακέραιο n ως το άπειρο. Η τρίτη αποτελεί ένα εναλλακτικό τρόπο γραφής της δεύτερης. Η παράσταση [m..] αντιστοιχεί σε μία ακολουθία από το m ως το άπειρο. Αυτή η δυνατότητα, δηλαδή το να μπορεί κανείς να γράφει κάτι με κομψό τρόπο, ονομάζεται syntactic sugar. ones = 1:ones numsfrom n = n:numsfrom(n+1) numbersfrom m = [m..] (Μπορείτε μήπως να βρείτε τον τύπο της δεύτερης συνάρτησης?) Γλώσσες όπως η C και Pascal δίνουν τη δυνατότητα σε κάποιο χρήστη να ορίζει λειτουργίες ή διαδικασίες των οποίων κάποιο όρισμα είναι μια άλλη λειτουργία ή διαδικασία. Η ίδια δυνατότητα παρέχεται και στις συναρτησιακές γλώσσες προγραμματισμού. Μάλιστα, αν μια συνάρτηση έχει ως παράμετρο μια άλλη συνάρτηση, ονομάζεται συνάρτηση υψηλότερης τάξης. Ιδού μια τέτοια συνάρτηση: 8

9 void qsort(void *v[], int left, int right, int (*comp)(void *, void *)) { int i, last; void swap(void *v[], int, int); qsort [] = [] qsort (x:xs) = qsort [y y <- xs, y<x] ++ [x] ++ qsort [y y <- xs, y>=x] Ο αλγόριθμος QuickSort σε Haskell. Ο τελεστής ++ ενώνει δύο ακολουθίες σε μία. } if(left>=right) return; swap(v,left,(left+right)/2); last=left; for(i=left+1; i<=right; i++) if((*comp)(v[i],v[left])<0) swap(v,++last,i); swap(v,left,last); qsort(v.left,last-1,comp); qsort(v,last+1,right,comp); Ο αλγόριθμος QuickSort σε C/C++. Σχήμα 2: Υλοποίηση του αλγορίθμου QuickSort σε Haskell και C/C++. map f [] = [] map f (x:xs) = f x : map f xs Έτσι η παράσταση map square [1,2,3,4,5] θα δημιουργήσει την ακολουθία [1,4,9,16,25]. Προσέξτε ότι δεν χρειάζεται να καταφύγουμε σε κόλπα με δείκτες, όπως στην C, ή σε μονολιθικές δηλώσεις, όπως στην Pascal, για να ορίσουμε μια συνάρτηση υψηλότερης τάξης. Η υλοποίηση αναλαμβάνει τα πάντα! Ένα άλλο ενδιαφέρον χαρακτηριστικό των συναρτησιακών γλωσσών αποτελεί η δυνατότητα ορισμού κάποιου συμβόλου ή λέξης ως δυαδικού τελεστή, όπως, π.χ., το +, το *, κ.λπ. Ορίστε πως ορίζεται στην Haskell ο τελεστής ++: [] ++ ys = ys (x:xs) ++ ys = x:(xs ++ ys) Βέβαια, δεν καλύψαμε πλήρως τη γλώσσα, αλλά δώσαμε μια γεύση των δυνατοτήτων της. Το σημαντικό ερώτημα που πολλοί νέοι στο χώρο θέτουν είναι: Όντως είναι ενδιαφέρουσες και μαθηματικά κομψές οι συναρτησιακές γλώσσες προγραμματισμού, έχουν όμως χρησιμοποιηθεί σε «πραγματικές» εφαρμογές; 4 Συναρτησιακές γλώσσες και εφαρμογές Οι συναρτησιακές γλώσσες προγραμματισμού έχουν χρησιμοποιηθεί επιτυχώς σε αρκετά σημαντικά προγράμματα (projects). Για παράδειγμα o Mobility Server, ένα προϊόν που πωλείται σε δώδεκα ευρωπαϊκές χώρες, ελέγχει τα κινητά τηλέφωνα του Ευρωπαϊκού Κοινοβουλίου στο Στρασβούργο. Το σύστημα αυτό είναι γραμμένο στην Erlang, μια συναρτησιακή γλώσσα προγραμματισμού σχεδιασμένη από την Ericsson για τηλεπικοινωνιακές εφαρμογές. Η φιλοσοφία της εταιρείας είναι στα επόμενα χρόνια ότι λογισμικό παράγει, να γράφεται σε Erlang (το όνομα της δεν προέρχεται από τα αρχικά των λέξεων Ericsson language, αλλά από το όνομα του δανού μαθηματικού A.K. Erlang). Περισσότερες πληροφορίες σχετικά με την Erlang μπορείτε να βρείτε στο URL: Μια άλλη εφαρμογή στον τηλεπικοινωνιακό τομέα είναι το σύστημα Pdiff το οποίο είναι γραμμένο σε SML και αποτελεί τμήμα 9

10 του τηλεπικοινωνιακού συστήματος 5ESS (phone switch system). Το σύστημα αυτό παράγεται από τα Εργαστήρια Bell. Ένα άλλο είδος εφαρμογών στο οποίο χρησιμοποιούνται κύρια συναρτησιακές γλώσσες προγραμματισμού είναι τα συστήματα αυτόματης απόδειξης θεωρημάτων. Για παράδειγμα το σύστημα HOL( Higher Order Logic) χρησιμοποιήθηκε στην παραγωγή των επεξεργαστών HP9000 της εταιρείας Hewlett-Packard. Μάλιστα μπόρεσε να διαγνώσει προβλήματα τα οποία δεν ήταν δυνατό να ανακαλυφθούν μετά από έξι μήνες προσομοίωσης. Επίσης ο Οργανισμός Αμυντικής Τεχνολογίας και Επιστήμης του Υπουργείου Αμύνης της Αυστραλίας, χρησιμοποιεί το σύστημα Isabelle για την επαλήθευση των συνθηκών οπλισμού παγίδων βλημάτων. Τα δύο αυτά συστήματα είναι γραμμένα σε SML. Η γλώσσα SML είναι απόγονος της γλώσσας ML η οποία χρησιμοποιούταν ως «μεταγλώσσα» στο σύστημα LCF, ενός πρωτοποριακού συστήματος απόδειξης θεωρημάτων. Κάθε πτήση από ή προς τα αεροδρόμια Orly και Roissy του Παρισιού επεξεργάζεται από ένα έμπειρο σύστημα το οποίο ονομάζεται Ivanhoe το οποίο είναι γραμμένο στο κέλυφος εμπείρων συστημάτων Natural Expert. Το κέλυφος αυτό παρέχει μια γλώσσα προγραμματισμού η οποία μοιάζει πάρα πολύ με την Haskell. Έτσι κανείς ουσιαστικά προγραμματίζει έμπειρα συστήματα σε μία συναρτησιακή γλώσσα προγραμματισμού. Παράλληλα, στην Γαλλία η εταιρεία Polygram, η οποία ελέγχει το ένα τρίτο της ευρωπαϊκής αγοράς CD και κασετών, χρησιμοποιεί το έμπειρο σύστημα Colisage στην γραμμή πακεταρίσματος. Το σύστημα αυτό είναι γραμμένο στο κέλυφος Natural Expert. Η Εnsemble είναι μια βιβλιοθήκη πρωτοκόλλων η οποία μπορεί να χρησιμοποιηθεί για την εύκολη αλλά και γρήγορη δημιουργία κατανεμημένων (distributed) εφαρμογών. Το σύστημα Εnsemble βρίσκεται σε καθημερινή χρήση στο Πανεπιστήμιο Cornell, όπου μεταξύ άλλων χρησιμοποιείται για την υποστήριξη της αποθήκευσης ηχητικών CD αλλά και της αναπαραγωγής των. Το ίδιο σύστημα χρησιμοποιείται από μια σειρά εταιρειών (BBN, Lockheed Martin, Microso, κ.ά.) για τη δημιουργία εμπορικών προϊόντων. Το πρόγραμμα είναι γραμμένο στη γλώσσα Objective Caml, μιας διαλέκτου της SML. Επιπλέον σε μια προσπάθεια να φανούν οι δυνατότητες του συναρτησιακού προγραμματισμού, ερευνητές του Πανεπιστημίου Carnegie Mellon δημιούργησαν όλα τα εργαλεία που απαιτούνται για το στήσιμο ενός συστήματος πρόσβασης σε ιστοσελίδες (web server). Για περισσότερες πληροφορίες για το σύστημα μπορείτε να διαβάσετε τα σχετικά στο URL: Περισσότερες πληροφορίες για μεγάλες εφαρμογές των συναρτησιακών γλωσσών προγραμματισμού μπορείτε να βρείτε στο παρακάτω URL: Αφού λοιπόν έχουν τόσες εφαρμογές οι συναρτησιακές γλώσσες προγραμματισμού, γιατί δεν είναι ευρέως διαδεδομένες; Καταρχήν ένας σημαντικός λόγος είναι το γεγονός ότι οι περισσότερες από τις συναρτησιακές γλώσσες αναπτύχθηκαν σε ερευνητικά κέντρα στα οποία ενδιαφέρονταν για γλώσσες μαθηματικώς «καθαρές». Η πραγματικότητα όμως επιβάλει τη δυνατότητα κλήσης ρουτινών σε άλλες γλώσσες (κυρίως σε C), μιας και δεν υπάρχει κανένας λόγος να ανακαλύπτουμε συνεχώς το τροχό. Αντιλαμβανόμενοι αυτό το μειονέκτημα, πολλά ενεργά μέλη της κοινότητας του συναρτησιακού προγραμματισμού προχώρησαν σε βήματα προς τον ορθό δρόμο. Έτσι η Erlang παρέχει τη δυνατότητα κλήσης λειτουργιών σε C, ενώ η SISAL υπορουτινών σε FORTRAN. Επίσης πρόσφατες εξελίξεις επιτρέπουν κάθε πρόγραμμα Haskell να γίνεται ένα στοιχείο COM, ενώ κάθε τέτοιο στοιχείο μπορεί να χρησιμοποιείται από οποιοδήποτε πρόγραμμα σε Haskell. Ένα άλλο σημαντικό στοιχείο αποτελεί το γεγονός ότι οι περισσότερες συναρτησιακές γλώσσες έχουν παρά μόνο βασικές βιβλιοθήκες. Από την άλλη η Java δεν οφείλει την επιτυχία της τόσο στο ότι είναι μια πραγματικά σπουδαία γλώσσα, αλλά στο γεγονός ότι παρέχει μια τεράστια βιβλιοθήκη με δυνατότητες σχεδιασμού γραφικών, επεξεργασίας εικόνας, τηλεφωνίας, κ.ο.κ. Βέβαια υπάρχουν βιβλιοθήκες και για την Haskell για, π.χ., σχεδιασμό γραφικών και δημιουργία εφαρμογών τύπου GUI, δηλαδή με γραφικό διάμεσο, αλλά με κανένα τρόπο δεν φτάνουν την πληθώρα των βιβλιοθηκών της Java. Αυτό ίσως να σχετίζεται και με το γεγονός ότι μόνο ελάχιστες συναρτησιακές γλώσσες προγραμματισμού είναι πραγματικά εμπορικά προϊόντα όπως: η Erlang, η ML Works της Harlequin (http://www.harlequin.com/ products/ads/ml/), η Miranda της Research So ware Limited, και μερικές ακόμη. 10

11 Στην εποχή που η Java και η Perl διαφημίζονται ως γλώσσες στις οποίες γράφεις ένα πρόγραμμα και αυτό τρέχει σε οποιαδήποτε υπολογιστική πλατφόρμα, οι συναρτησιακές γλώσσες δυστυχώς δεν έχουν υλοποιηθεί παρά στις πλέον γνωστές. Βέβαια αυτό δεν είναι μεγάλο πρόβλημα, αφού κανείς μπορεί εύκολα να φτιάξει μια εν δυνάμει μηχανή (virtual machine) σε C και αυτή να λειτουργεί σε οποιαδήποτε πλατφόρμα, ακριβώς όπως συμβαίνει με την Java. Στο σημείο αυτό αξίζει να αναφέρουμε ότι η Java έγινε γνωστή και για το γεγονός ότι δεν απαιτεί από τον χρήστη της να διαχειρίζεται τη μνήμη μιας και το κάνει αυτό αυτόματα (η τεχνική αυτή ονομάζεται «αποκομιδή σκουπιδιών» ή garbage collection). Όμως η τεχνική αυτή είναι γνωστή στους κύκλους των συναρτησιακών προγραμματιστών εδώ και δεκαετίες! Ένας άλλος λόγος που κάνει σχετικά δύσκολη τη χρήση των συναρτησιακών γλωσσών προγραμματισμού είναι η ελλιπής κατάρτιση των προγραμματιστών. Δεν αρκεί κάποιος να γνωρίζει μία (προστακτική) γλώσσα ώστε να μπορεί να μάθει μια συναρτησιακή. Απαιτούνται δύο περίπου βδομάδες ώστε κάποιος να μάθει να προγραμματίζει συνθέτοντας συναρτήσεις και μη έχοντας στη διάθεσή του μεταβλητές, παρά μόνο σταθερές. Βέβαια έχουν γίνει βήματα για την αντιμετώπιση του προβλήματος, αλλά αυτό που ουσιαστικά απαιτείται είναι οι φοιτητές των τμημάτων των υπολογιστικών επιστημών να αποκτούν εξοικείωση με αυτού του είδους τις γλώσσες. Να σημειωθεί ότι η εκμάθηση της Lisp είναι όχι μόνο παρωχημένη αλλά και δεν προσφέρει τίποτα το ουσιαστικό πλέον. Όλοι οι παραπάνω είναι λόγοι που αποτρέπουν αρκετό κόσμο να ασχοληθεί σοβαρά με τον συναρτησιακό προγραμματισμό, ενώ υπάρχουν και δύο βασικοί μύθοι οι οποίοι διαψεύδονται από τα γεγονότα. Μύθος πρώτος: οι υλοποιήσεις των συναρτησιακών γλωσσών είναι αργές. Αυτό δεν ισχύει αφού σε πολλές περιπτώσεις υπάρχουν συναρτησιακά προγράμματα που «τρέχουν» γρηγορότερα από τα αντίστοιχα προγράμματα σε C. Επιπλέον, η Java που είναι τόσο δημοφιλής είναι μια σχετικά αργή γλώσσα, ακόμη και σε Solaris! Μύθος δεύτερος: ο συναρτησιακός προγραμματισμός είναι δύσκολος. Μια ανακρίβεια που οφείλεται στο γεγονός ότι απαιτείται κανείς να μάθει να σκέφτεται διαφορετικά. Όμως το ίδιο δεν συμβαίνει όταν κανείς μαθαίνει μια άλλη (φυσική) γλώσσα, π.χ., γαλλικά, ρωσικά, κ.ά. 5 Περισσότερες πληροφορίες Αν έχετε πιεσθεί ότι αξίζει τον κόπο να ασχοληθείτε με τον συναρτησιακό προγραμματισμό, θα πρέπει να «κατεβάσετε» μια γλώσσα για το υπολογιστικό σας σύστημα. Αυτό είναι πολύ απλό: επισκεφθείτε το URL: Εκεί θα βρείτε πάρα πολλές πληροφορίες σχετικά με την Haskell, την υλοποίησης της γλώσσας αλλά και βιβλιογραφία σχετικά με τον συναρτησιακό προγραμματισμό γενικότερα. Εμείς για αρχή σας προτείνουμε να πειραματιστείτε με την Hugs, έναν διερμηνευτή της Haskell. Αρκετές πληροφορίες, σχετικά με τον συναρτησιακό προγραμματισμό αλλά και άλλες γλώσσες προγραμματισμού, μπορείτε να βρείτε στις σελίδες των ερευνητικών ομάδων στα αντίστοιχα τμήματα των Πανεπιστημίων Chalmers & Goteborg της Σουηδίας (http://www.cs.chalmers.se/cs/research/ Functional/), του Πανεπιστημίου της Γλασκόβης στη Σκοτία (http://www.dcs.glasgow.ac.uk/ fp/) και του Πανεπιστημίου Yale στις ΗΠΑ (http://www.cs.yale.edu/haskell/yale-fp.html). Επιπλέον, μπορείτε να διαβάζεται το newsgroup comp.lang.faunctional. Επίσης υπάρχει και ένα επιστημονικό περιοδικό σχετικά με τον συναρτησιακό προγραμματισμό: Journal of Functional Programming (http://www.cup.cam.ac.uk/scripts/webjrn1.asp?mnemonic=jfp) που εκδίδεται από τον εκδοτικό οίκο Cambridge University Press. Τέλος, υπάρχει και μια στήλη στο περιοδικό SIGPLAN Notices της ACM με θέματα σχετικά με τον συναρτησιακό προγραμματισμό. Ελπίζουμε η σύντομη αυτή παρουσίαση να συντελέσει στην άνοδο της χρήσης αυτού του τόσο γοητευτικού τρόπου επίλυσης υπολογιστικών προβλημάτων! 11

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client ΕΣΔ 516 Τεχνολογίες Διαδικτύου Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client Περιεχόμενα Περιεχόμενα Javascript και HTML Βασική σύνταξη Μεταβλητές Τελεστές Συναρτήσεις

Διαβάστε περισσότερα

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος. 1. Δώστε τον ορισμό του προβλήματος. 2. Σι εννοούμε με τον όρο επίλυση ενός προβλήματος; 3. Σο πρόβλημα του 2000. 4. Σι εννοούμε με τον όρο κατανόηση προβλήματος; 5. Σι ονομάζουμε χώρο προβλήματος; 6.

Διαβάστε περισσότερα

Η ΑΕΠΠ IN A GLANCE! ΦΡΟΝΤΙΣΤΗΡΙΑ ΠΟΛΥΜΕΝΗ

Η ΑΕΠΠ IN A GLANCE! ΦΡΟΝΤΙΣΤΗΡΙΑ ΠΟΛΥΜΕΝΗ Η ΑΕΠΠ IN A GLANCE! Κατανομή μονάδων: 40 μονάδες το 1 ο Θέμα, από 20 τα υπόλοιπα τρία. Μην χαίρεστε όμως γιατί η «καθαρή» θεωρία περιορίζεται συνήθως- σε 5 ερωτήσεις σωστού ή λάθους και σε 1-2 ερωτήσεις

Διαβάστε περισσότερα

Μ Ε Ρ Ο Σ Γ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ

Μ Ε Ρ Ο Σ Γ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Μ Ε Ρ Ο Σ Γ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ 6.1 Γλώσσες Προγραμματισμού 6.1.1 Γλώσσες μηχανής (1 η γενιά) Η γλώσσα στην οποία ένας ηλεκτρονικός υπολογιστής καταλαβαίνει

Διαβάστε περισσότερα

Η γλώσσα προγραμματισμού C

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Εισαγωγή στη C Λίγα λόγια για την C Γλώσσα προγραμματισμού υψηλού επιπέδου. Σχεδιάστηκε και υλοποιήθηκε από τον Dennis Richie στις αρχές της δεκαετίας του 1970 (Bell Labs). Η

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Εισαγωγή Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Βιβλιογραφία "C Προγραμματισμός", Deitel & Deitel, Πέμπτη Έκδοση, Εκδόσεις

Διαβάστε περισσότερα

Αυτόματα. Παράδειγμα: πωλητής καφέ (iii) Παράδειγμα: πωλητής καφέ (iv) Εισαγωγή στην Επιστήμη των Υπολογιστών 6

Αυτόματα. Παράδειγμα: πωλητής καφέ (iii) Παράδειγμα: πωλητής καφέ (iv) Εισαγωγή στην Επιστήμη των Υπολογιστών 6 Εισαγωγή στην Επιστήμη των Υπολογιστών 3η ενότητα: Αυτόματα και Τυπικές Γραμματικές http://www.corelab.ece.ntua.gr/courses/ Αυτόματα Τρόπος κωδικοποίησης αλγορίθμων. Τρόπος περιγραφής συστημάτων πεπερασμένων

Διαβάστε περισσότερα

ΠΕΡΙΕΧΟΜΕΝΑ ΜΕΡΟΣ Α : ΘΕΜΑΤΑ ΒΑΣΗΣ 1. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ...11 2. ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ...30

ΠΕΡΙΕΧΟΜΕΝΑ ΜΕΡΟΣ Α : ΘΕΜΑΤΑ ΒΑΣΗΣ 1. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ...11 2. ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ...30 ΠΕΡΙΕΧΟΜΕΝΑ ΜΕΡΟΣ Α : ΘΕΜΑΤΑ ΒΑΣΗΣ 1. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ...11 1.1 Τι είναι Πληροφορική;...11 1.1.1 Τι είναι η Πληροφορική;...12 1.1.2 Τι είναι ο Υπολογιστής;...14 1.1.3 Τι είναι το Υλικό και το

Διαβάστε περισσότερα

3 Αλληλεπίδραση Αντικειμένων

3 Αλληλεπίδραση Αντικειμένων Αφαίρεση και Αρθρωσιμότητα 3 Αλληλεπίδραση Αντικειμένων Πώς συνεργάζονται τα αντικείμενα που δημιουργούμε Αφαίρεση (abstraction) είναι η δυνατότητα να αγνοούμε τις λεπτομέρειες και να εστιάζουμε την προσοχή

Διαβάστε περισσότερα

Διάλεξη 6: Δείκτες και Πίνακες

Διάλεξη 6: Δείκτες και Πίνακες Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 6: Δείκτες και Πίνακες (Κεφάλαιο 12, KNK-2ED) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132 6-1 Περιεχόμενο

Διαβάστε περισσότερα

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Υλοποίηση ΑΤΔ με Συνδεδεμένες Λίστες -

Διαβάστε περισσότερα

Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ

Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ Σκοπός του μαθήματος Σκοπός του παρόντος μαθήματος είναι να μάθετε να κάνετε εισαγωγή δεδομένων σε πίνακες και περαιτέρω επεξεργασία

Διαβάστε περισσότερα

Βασικά Στοιχεία της Java

Βασικά Στοιχεία της Java Βασικά Στοιχεία της Java Παύλος Εφραιμίδης Java Βασικά Στοιχεία της γλώσσας Java 1 Τύποι Δεδομένων Η Java έχει δύο κατηγορίες τύπων δεδομένων: πρωτογενείς (primitive) τύπους δεδομένων αναφορές Java Βασικά

Διαβάστε περισσότερα

Γλώσσες Προγραμματισμού Μεταγλωττιστές

Γλώσσες Προγραμματισμού Μεταγλωττιστές Γλώσσες Προγραμματισμού Μεταγλωττιστές Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου Δομή Γλώσσες Προγραμματισμού Εισαγωγικά Γλώσσα Μηχανής Γλώσσες υψηλού επιπέδου Μεταγλωττιστές

Διαβάστε περισσότερα

Α3. Ποια είναι τα πλεονεκτήματα του Δομημένου προγραμματισμού; (Μονάδες 10)

Α3. Ποια είναι τα πλεονεκτήματα του Δομημένου προγραμματισμού; (Μονάδες 10) ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ / Γ ΕΠΑΛ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 08 / 02 / 2015 ΕΠΙΜΕΛΕΙΑ ΔΙΑΓΩΝΙΣΜΑΤΟΣ: Ι. ΜΙΧΑΛΕΑΚΟΣ Γ.ΝΙΤΟΔΑΣ ΘΕΜΑ Α Α1. Να γράψετε στο τετράδιό σας τον αριθμό καθεμιάς από τις

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 1ο 3ο. ΚΕΦΑΛΑΙΟ 5ο 6ο. ΚΕΦΑΛΑΙΟ 7ο. Δομημένος Προγραμματισμός - Γενικές Ασκήσεις Επανάληψης

ΚΕΦΑΛΑΙΟ 1ο 3ο. ΚΕΦΑΛΑΙΟ 5ο 6ο. ΚΕΦΑΛΑΙΟ 7ο. Δομημένος Προγραμματισμός - Γενικές Ασκήσεις Επανάληψης ΚΕΦΑΛΑΙΟ 1ο 3ο 1. Συμπληρώστε τα κενά με τη λέξη που λείπει. α. Ένα πρόβλημα το χωρίζουμε σε άλλα απλούστερα, όταν είναι ή όταν έχει τρόπο επίλυσης. β. Η επίλυση ενός προβλήματος προϋποθέτει την του. γ.

Διαβάστε περισσότερα

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της;

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της; 1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες (μορφές) της; Η δομή επανάληψης χρησιμοποιείται όταν μια σειρά εντολών πρέπει να εκτελεστεί σε ένα σύνολο περιπτώσεων, που έχουν κάτι

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07 Ακαδ έτος 2007-2008 ΠΛΗΡΟΦΟΡΙΚΗ Ι Φερεντίνος 22/11/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με ΑΜ σε 3, 7, 8 & 9 22/11/07 Παράδειγμα με if/else if και user input: import javautil*; public class Grades public

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Διδάσκουσα Δρ Β.

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Διδάσκουσα Δρ Β. ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ Διδάσκουσα Δρ Β. Καβακλή Χειμερινό Εξάμηνο 2001 1 Σύνολο χαρακτήρων της Pascal Για

Διαβάστε περισσότερα

Αναδρομή. Τι γνωρίζετε για τη δυνατότητα «κλήσης» αλγορίθμων; Τι νόημα έχει;

Αναδρομή. Τι γνωρίζετε για τη δυνατότητα «κλήσης» αλγορίθμων; Τι νόημα έχει; ΜΑΘΗΜΑ 7 Κλήση αλγορίθμου από αλγόριθμο Αναδρομή Σ χ ο λ ι κ ο Β ι β λ ι ο ΥΠΟΚΕΦΑΛΑΙΟ 2.2.7: ΕΝΤΟΛΕΣ ΚΑΙ ΔΟΜΕΣ ΑΛΓΟΡΙΘΜΟΥ ΠΑΡΑΓΡΑΦΟI 2.2.7.5: Κλήση αλγορίθμου από αλγόριθμο 2.2.7.6: Αναδρομή εισαγωγη

Διαβάστε περισσότερα

Ανάπτυξη και Σχεδίαση Λογισμικού

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Βασικά Στοιχεία Το αλφάβητο της C Οι βασικοί τύποι της C Δηλώσεις μεταβλητών Είσοδος/Έξοδος Βασικές εντολές της C Αλφάβητο

Διαβάστε περισσότερα

Πληρουορική Γ Γσμμασίοσ

Πληρουορική Γ Γσμμασίοσ Πληρουορική Γ Γσμμασίοσ Προγραμματισμός και Αλγόριθμοι Από το και τημ Χελώμα στημ Ευριπίδης Βραχνός http://evripides.mysch.gr/ 2014 2015 1 Προγραμματισμός Ζάννειο Πρότυπο Πειραματικό Γυμνάσιο Πειραιά Ενότητα:

Διαβάστε περισσότερα

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ και ΔΟΜΗ ΑΚΟΛΟΥΘΙΑΣ 2.1 Να δοθεί ο ορισμός

Διαβάστε περισσότερα

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Σκοπός Να αναπτύξουν ένα πρόγραμμα όπου θα επαναλάβουν τα βήματα ανάπτυξης μιας παραθυρικής εφαρμογής.

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ Τελικές εξετάσεις 3 Ιανουαρίου 27 Διάρκεια εξέτασης: 3 ώρες (2:-5:) ΘΕΜΑ ο

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 6 ΟΥ ΚΕΦΑΛΑΙΟΥ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ 6.1 Τι ονοµάζουµε πρόγραµµα υπολογιστή; Ένα πρόγραµµα

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΣΚΗΣΕΙΣ 6 ΟΥ ΚΕΦΑΛΑΙΟΥ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΕΡΩΤΗΣΕΙΣ ΣΩΣΤΟ ΛΑΘΟΣ Σημειώστε αν είναι σωστή ή

Διαβάστε περισσότερα

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Βασικές Έννοιες Προγραμματισμού. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Βασικές Έννοιες Προγραμματισμού. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Βασικές Έννοιες Προγραμματισμού Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD Αριθμητικά συστήματα Υπάρχουν 10 τύποι ανθρώπων: Αυτοί

Διαβάστε περισσότερα

Είδη εντολών. Απλές εντολές. Εντολές ελέγχου. Εκτελούν κάποια ενέργεια. Ορίζουν τον τρόπο με τον οποίο εκτελούνται άλλες εντολές

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

Διαβάστε περισσότερα

Τα δεδομένα στη C++ χωρίζονται σε 3 κατηγορίες: τους αριθμούς (numbers), τους χαρακτήρες (characters) και τις συμβολοσειρές (strings).

Τα δεδομένα στη C++ χωρίζονται σε 3 κατηγορίες: τους αριθμούς (numbers), τους χαρακτήρες (characters) και τις συμβολοσειρές (strings). Για να λύσουμε ένα πρόβλημα στη C++ χρειαζόμαστε δυο βασικές έννοιες. Η μια είναι οι οδηγίες εντολές, ο αλγόριθμος δηλαδή, που πρέπει να ακολουθήσουμε για να λύσουμε το πρόβλημά μας και η άλλη είναι τα

Διαβάστε περισσότερα

Γνωστό: P (M) = 2 M = τρόποι επιλογής υποσυνόλου του M. Π.χ. M = {A, B, C} π. 1. Π.χ.

Γνωστό: P (M) = 2 M = τρόποι επιλογής υποσυνόλου του M. Π.χ. M = {A, B, C} π. 1. Π.χ. Παραδείγματα Απαρίθμησης Γνωστό: P (M 2 M τρόποι επιλογής υποσυνόλου του M Τεχνικές Απαρίθμησης Πχ M {A, B, C} P (M 2 3 8 #(Υποσυνόλων με 2 στοιχεία ( 3 2 3 #(Διατεταγμένων υποσυνόλων με 2 στοιχεία 3 2

Διαβάστε περισσότερα

ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ. Κεφάλαιο 3

ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ. Κεφάλαιο 3 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ Κεφάλαιο 3 Κεντρική Μονάδα Επεξεργασίας Κεντρική Μονάδα Επεξεργασίας Μονάδα επεξεργασίας δεδομένων Μονάδα ελέγχου Μονάδα επεξεργασίας δεδομένων Δομή Αριθμητικής Λογικής Μονάδας

Διαβάστε περισσότερα

ΔΙΔΑΚΤΙΚΗ της ΠΛΗΡΟΦΟΡΙΚΗΣ

ΔΙΔΑΚΤΙΚΗ της ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΔΙΔΑΚΤΙΚΗ της ΠΛΗΡΟΦΟΡΙΚΗΣ Μ. Γρηγοριάδου Ρ. Γόγουλου Ενότητα: Η Διδασκαλία του Προγραμματισμού Περιεχόμενα Παρουσίασης

Διαβάστε περισσότερα

Αλγόριθμοι και Πολυπλοκότητα

Αλγόριθμοι και Πολυπλοκότητα Αλγόριθμοι και Πολυπλοκότητα Ροή Δικτύου Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Μοντελοποίηση Δικτύων Μεταφοράς Τα γραφήματα χρησιμοποιούνται συχνά για την μοντελοποίηση

Διαβάστε περισσότερα

«ΣΥΝΕΧΗ ΚΛΑΣΜΑΤΑ ΚΑΙ ΠΡΑΓΜΑΤΙΚΟΙ ΑΡΙΘΜΟΙ: ΠΡΟΣΕΓΓΙΣΕΙΣ ΚΑΙ ΕΦΑΡΜΟΓΕΣ»

«ΣΥΝΕΧΗ ΚΛΑΣΜΑΤΑ ΚΑΙ ΠΡΑΓΜΑΤΙΚΟΙ ΑΡΙΘΜΟΙ: ΠΡΟΣΕΓΓΙΣΕΙΣ ΚΑΙ ΕΦΑΡΜΟΓΕΣ» Σχολή Εφαρμοσμένων Μαθηματικών και Φυσικών Επιστημών Εθνικό Μετσόβιο Πολυτεχνείο «ΣΥΝΕΧΗ ΚΛΑΣΜΑΤΑ ΚΑΙ ΠΡΑΓΜΑΤΙΚΟΙ ΑΡΙΘΜΟΙ: ΠΡΟΣΕΓΓΙΣΕΙΣ ΚΑΙ ΕΦΑΡΜΟΓΕΣ» ΜΠΙΘΗΜΗΤΡΗ ΒΑΣΙΛΙΚΗ ΣΤΕΛΛΑ Επιβλέπουσα: Αν. Καθηγήτρια

Διαβάστε περισσότερα

Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον

Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Κεφάλαιο 6ο Εισαγωγή στον Προγραµµατισµό Μέρος Πρώτο (6.1, 6.2 και 6.3) Α. Ερωτήσεις Σωστού Λάθους 1. Η γλώσσα µηχανής είναι µία γλώσσα υψηλού επιπέδου.

Διαβάστε περισσότερα

Περιληπτικά, τα βήματα που ακολουθούμε γενικά είναι τα εξής:

Περιληπτικά, τα βήματα που ακολουθούμε γενικά είναι τα εξής: Αυτό που πρέπει να θυμόμαστε, για να μη στεναχωριόμαστε, είναι πως τόσο στις εξισώσεις, όσο και στις ανισώσεις 1ου βαθμού, που θέλουμε να λύσουμε, ακολουθούμε ακριβώς τα ίδια βήματα! Εκεί που πρεπει να

Διαβάστε περισσότερα

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2006

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2006 ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2006 Μάθημα: ΠΛΗΡΟΦΟΡΙΚΗ Ημερομηνία και ώρα εξέτασης: Τρίτη, 6 Ιουνίου 2006 07:30 10:30

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εισαγωγή Κώστας Στεργίου Τι είναι ο Η/Υ; Ένας ηλεκτρονικός υπολογιστής (Η/Υ) είναι

Διαβάστε περισσότερα

Τύποι, Σταθερές και Μεταβλητές

Τύποι, Σταθερές και Μεταβλητές ΚΕΦΑΛΑΙΟ 3 Τύποι, Σταθερές και Μεταβλητές Η έννοια της μεταβλητής Γενικά μπορούμε να πούμε ότι η έννοια της μεταβλητής στον προγραμματισμό είναι άμεσα συνδεδεμένη με την έννοια που αυτή έχει σε μαθηματικό

Διαβάστε περισσότερα

Συνεχή Κλάσματα. Εμμανουήλ Καπνόπουλος Α.Μ 282

Συνεχή Κλάσματα. Εμμανουήλ Καπνόπουλος Α.Μ 282 Συνεχή Κλάσματα Εμμανουήλ Καπνόπουλος Α.Μ 282 5 Νοεμβρίου 204 Ορισμός και ιδιότητες: Ορισμός: Έστω a 0, a, a 2,...a n ανεξάρτητες μεταβλητές, n N σχηματίζουν την ακολουθία {[a 0, a,..., a n ] : n N} όπου

Διαβάστε περισσότερα

Δυαδικό Σύστημα Αρίθμησης

Δυαδικό Σύστημα Αρίθμησης Δυαδικό Σύστημα Αρίθμησης Το δυαδικό σύστημα αρίθμησης χρησιμοποιεί δύο ψηφία. Το 0 και το 1. Τα ψηφία ενός αριθμού στο δυαδικό σύστημα αρίθμησης αντιστοιχίζονται σε δυνάμεις του 2. Μονάδες, δυάδες, τετράδες,

Διαβάστε περισσότερα

ΙΑΓΩΝΙΣΜΑ ΣΤΗΝ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΘΕΜΑ 1 Α.

ΙΑΓΩΝΙΣΜΑ ΣΤΗΝ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΘΕΜΑ 1 Α. ΙΑΓΩΝΙΣΜΑ ΣΤΗΝ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΘΕΜΑ 1 Α. 1. Αν το Α έχει την τιµή 10 και το Β την τιµή 20 τότε η έκφραση (Α > 8 ΚΑΙ Β < 20) Ή (Α > 10 Ή Β = 10) είναι αληθής 2. Σε περίπτωση εµφωλευµένων βρόχων, ο εσωτερικός

Διαβάστε περισσότερα

ΣΥΝΟΠΤΙΚΟΣ ΟΔΗΓΟΣ ΓΛΩΣΣΑΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C

ΣΥΝΟΠΤΙΚΟΣ ΟΔΗΓΟΣ ΓΛΩΣΣΑΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C ΣΥΝΟΠΤΙΚΟΣ ΟΔΗΓΟΣ ΓΛΩΣΣΑΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C 1 Εισαγωγή Ο προγραμματισμός είναι μια διαδικασία επίλυσης προβλημάτων με χρήση Η/Υ. Ένα πρόγραμμα είναι ένα σύνολο εντολών κάποιας γλώσσας προγραμματισμού,

Διαβάστε περισσότερα

Μονάδες 12 ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

Μονάδες 12 ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΗΜΕΡΗΣΙΩΝ ΚΑΙ ΕΣΠΕΡΙΝΩΝ ΕΠΑΓΓΕΛΜΑΤΙΚΩΝ ΛΥΚΕΙΩΝ (ΟΜΑΔΑ A ) ΚΑΙ ΜΑΘΗΜΑΤΩΝ ΕΙΔΙΚΟΤΗΤΑΣ ΕΠΑΓΓΕΛΜΑΤΙΚΩΝ ΛΥΚΕΙΩΝ (ΟΜΑΔΑ Β ) ΠΑΡΑΣΚΕΥΗ 5 ΙΟΥΝΙΟΥ 2015 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ:

Διαβάστε περισσότερα

Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας

Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας Τ.Ε.Ι ΗΠΕΙΡΟΥ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ & ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΤΗΛΕΠΛΗΡΟΦΟΡΙΚΗΣ & ΔΙΟΙΚΗΣΗΣ Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας Πτυχιακή εργασία του φοιτητή Γιαννακίδη Αποστόλη Επιβλέπων καθηγητής Τσούλος

Διαβάστε περισσότερα

Ανάπτυξη και Σχεδίαση Λογισμικού

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Εκφράσεις και Λίγες Εντολές Οι εκφράσεις της C Τελεστές Απλές και σύνθετες εντολές Εντολές ελέγχου (επιλογής) Εισαγωγή σε

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Ενότητα 12 Δομές (Structures) Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Αφαιρετικότητα Με τις συναρτήσεις επιτυγχάνουμε αφαιρετικότητα

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 18. 18 Μηχανική Μάθηση

ΚΕΦΑΛΑΙΟ 18. 18 Μηχανική Μάθηση ΚΕΦΑΛΑΙΟ 18 18 Μηχανική Μάθηση Ένα φυσικό ή τεχνητό σύστηµα επεξεργασίας πληροφορίας συµπεριλαµβανοµένων εκείνων µε δυνατότητες αντίληψης, µάθησης, συλλογισµού, λήψης απόφασης, επικοινωνίας και δράσης

Διαβάστε περισσότερα

ΣΥΣΤΗΜΑΤΑ. 6.1 ΓΡΑΜΜΙΚΑ ΣΥΣΤΗΜΑΤΑ (Επαναλήψεις-Συμπληρώσεις)

ΣΥΣΤΗΜΑΤΑ. 6.1 ΓΡΑΜΜΙΚΑ ΣΥΣΤΗΜΑΤΑ (Επαναλήψεις-Συμπληρώσεις) 6 ΣΥΣΤΗΜΑΤΑ 6.1 ΓΡΑΜΜΙΚΑ ΣΥΣΤΗΜΑΤΑ (Επαναλήψεις-Συμπληρώσεις) Η εξίσωση αx βy γ Στο Γυμνάσιο διαπιστώσαμε με την βοήθεια παραδειγμάτων ότι η εξίσωση αx βy γ, με α 0 ή β 0, που λέγεται γραμμική εξίσωση,

Διαβάστε περισσότερα

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών: Εργαστηριακή Άσκηση 2012-2013

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών: Εργαστηριακή Άσκηση 2012-2013 Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών: Εργαστηριακή Άσκηση 2012-2013 27 Μαρτίου 2013 Περίληψη Σκοπός της παρούσας εργασίας είναι η εξοικείωσή σας με τις θεμελιώδεις θεωρητικές και πρακτικές πτυχές

Διαβάστε περισσότερα

Α Λυκείου Άλγεβρα Τράπεζα Θεμάτων Το Δεύτερο Θέμα

Α Λυκείου Άλγεβρα Τράπεζα Θεμάτων Το Δεύτερο Θέμα Α Λυκείου Άλγεβρα Τράπεζα Θεμάτων Το Δεύτερο Θέμα Θεωρούμε την ακολουθία (α ν ) των θετικών περιττών αριθμών: 1, 3, 5, 7, α) Να αιτιολογήσετε γιατί η (α ν ) είναι αριθμητική πρόοδος και να βρείτε τον εκατοστό

Διαβάστε περισσότερα

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή

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

Διαβάστε περισσότερα

Συσχέτιση μεταξύ δύο συνόλων δεδομένων

Συσχέτιση μεταξύ δύο συνόλων δεδομένων Διαγράμματα διασποράς (scattergrams) Συσχέτιση μεταξύ δύο συνόλων δεδομένων Η οπτική απεικόνιση δύο συνόλων δεδομένων μπορεί να αποκαλύψει με παραστατικό τρόπο πιθανές τάσεις και μεταξύ τους συσχετίσεις,

Διαβάστε περισσότερα

Τα παρακάτω σύνολα θα τα θεωρήσουμε γενικά γνωστά, αν και θα δούμε πολλές από τις ιδιότητές τους: N Z Q R C

Τα παρακάτω σύνολα θα τα θεωρήσουμε γενικά γνωστά, αν και θα δούμε πολλές από τις ιδιότητές τους: N Z Q R C Κεφάλαιο 1 Εισαγωγικές έννοιες Στο κεφάλαιο αυτό θα αναφερθούμε σε ορισμένες έννοιες, οι οποίες ίσως δεν έχουν άμεση σχέση με τους διανυσματικούς χώρους, όμως θα χρησιμοποιηθούν αρκετά κατά τη μελέτη τόσο

Διαβάστε περισσότερα

Παράρτημα A: PHP, HTML φόρμες και το πρωτόκολλο HTTP.

Παράρτημα A: PHP, HTML φόρμες και το πρωτόκολλο HTTP. Εργαστήριο #5 Τι πρέπει να έχετε ολοκληρώσει από το προηγούμενο εργαστήριο. Θα πρέπει να ξέρετε να εισάγετε ένα βασικό πρόγραμμα PHP μέσα σε μια ιστοσελίδα, τη χρήση της echo και τον χειρισμό απλών μεταβλητών

Διαβάστε περισσότερα

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 1: Εισαγωγή στη C - Αλγόριθμοι Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε

Διαβάστε περισσότερα

Περιεχόμενα. Λίγα λόγια για αυτή την έκδοση... 23

Περιεχόμενα. Λίγα λόγια για αυτή την έκδοση... 23 Περιεχόμενα Λίγα λόγια για αυτή την έκδοση...... 23 Κεφάλαιο 1 Εισαγωγή... 25 O στόχος του βιβλίου και σε ποιους απευθύνεται... 27 Πώς να διαβάσετε αυτό το βιβλίο... 27 Εκπαίδευση από απόσταση... 29 Ιστορική

Διαβάστε περισσότερα

ProapaitoÔmenec gn seic.

ProapaitoÔmenec gn seic. ProapaitoÔmeec g seic. Α. Το σύνολο των πραγματικών αριθμών R και οι αλγεβρικές ιδιότητες των τεσσάρων πράξεων στο R. Το σύνολο των φυσικών αριθμών N = {1,, 3,... }. Προσέξτε: μερικά βιβλία (τα βιβλία

Διαβάστε περισσότερα

Εισαγωγή στις Συναρτήσεις

Εισαγωγή στις Συναρτήσεις Εισαγωγή στις Συναρτήσεις Η φιλοσοφία σχεδίασης της C βασίζεται στη χρήση των συναρτήσεων. Έχουμε ήδη δει και χρησιμοποιήσει πολλές συναρτήσεις που έχει το σύστημα, όπως είναι οι printf(), scanf(),αλλά

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 3ο ΤΥΧΑΙΟΙ ΑΡΙΘΜΟΙ ΕΛΕΓΧΟΣ ΤΥΧΑΙΟΤΗΤΑΣ

ΚΕΦΑΛΑΙΟ 3ο ΤΥΧΑΙΟΙ ΑΡΙΘΜΟΙ ΕΛΕΓΧΟΣ ΤΥΧΑΙΟΤΗΤΑΣ ΚΕΦΑΛΑΙΟ 3ο ΤΥΧΑΙΟΙ ΑΡΙΘΜΟΙ ΕΛΕΓΧΟΣ ΤΥΧΑΙΟΤΗΤΑΣ 3.1 Τυχαίοι αριθμοί Στην προσομοίωση διακριτών γεγονότων γίνεται χρήση ακολουθίας τυχαίων αριθμών στις περιπτώσεις που απαιτείται η δημιουργία στοχαστικών

Διαβάστε περισσότερα

Κεφάλαιο 10. Υποπρογράμματα

Κεφάλαιο 10. Υποπρογράμματα Κεφάλαιο 10 Υποπρογράμματα 10.1 Γενικός διδακτικός σκοπός Ο γενικός σκοπός του κεφαλαίου είναι να καταστούν ικανοί οι μαθητές να χρησιμοποιούν υποπρογράμματα για τη δημιουργία συνθέτων προγραμμάτων. 194

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Ονοματεπώνυμο: Βαθμός:

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Ονοματεπώνυμο: Βαθμός: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Ονοματεπώνυμο: Βαθμός: Θέμα 1ο Α) Απαντήστε στις παρακάτω ερωτήσεις επιλέγοντας Σ (Σωστό) ή Λ (Λάθος). 1) Ο έλεγχος μιας συνθήκης έχει μόνο δυο τιμές,

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ Διδάσκουσα Δρ Β Καβακλή Χειμερινό Εξάμηνο 2001 Στόχοι του Μαθήματος! Ανάπτυξη αναλυτικής

Διαβάστε περισσότερα

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΤΕΛΟΣ 1ΗΣ ΑΠΟ 6 ΣΕΛΙ ΕΣ

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΤΕΛΟΣ 1ΗΣ ΑΠΟ 6 ΣΕΛΙ ΕΣ ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΠΑΝΕΛΛΑ ΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΗΜΕΡΗΣΙΩΝ ΚΑΙ ΕΣΠΕΡΙΝΩΝ ΕΠΑΓΓΕΛΜΑΤΙΚΩΝ ΛΥΚΕΙΩΝ (ΟΜΑ Α A ) ΚΑΙ ΜΑΘΗΜΑΤΩΝ ΕΙ ΙΚΟΤΗΤΑΣ ΕΠΑΓΓΕΛΜΑΤΙΚΩΝ ΛΥΚΕΙΩΝ (ΟΜΑ Α Β ) ΕΥΤΕΡΑ 16 ΙΟΥΝΙΟΥ 2014 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ:

Διαβάστε περισσότερα

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Κλάσεις.

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Κλάσεις. 1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 5η Ιστοσελίδα του µαθήµατος 2 http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα

Διαβάστε περισσότερα

Κεφάλαιο 5ο: Εντολές Επανάληψης

Κεφάλαιο 5ο: Εντολές Επανάληψης Χρήστος Τσαγγάρης ΕΕ ΙΠ Τµήµατος Μαθηµατικών, Πανεπιστηµίου Αιγαίου Κεφάλαιο 5ο: Εντολές Επανάληψης Η διαδικασία της επανάληψης είναι ιδιαίτερη συχνή, αφού πλήθος προβληµάτων µπορούν να επιλυθούν µε κατάλληλες

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Εισαγωγή στην FORTRAN. Δρ. Ιωάννης Λυχναρόπουλος 2014-2015

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Εισαγωγή στην FORTRAN. Δρ. Ιωάννης Λυχναρόπουλος 2014-2015 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στην FORTRAN Δρ. Ιωάννης Λυχναρόπουλος 2014-2015 Fortran FORmula TRANslation: (Μία από τις πρώτες γλώσσες τρίτης γενιάς) Εκδόσεις FORTRAN (1957) FORTRAN II (1958) FORTRAN III

Διαβάστε περισσότερα

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008 Παράδειγμα: Μηχανή για Εισιτήρια 2 Ορισμός Κλάσεων Σύνταξη κλάσης: πεδία, κατασκευαστές, μέθοδοι Ένας αυτόματος εκδότης εισιτηρίων είναι μια μηχανή που δέχεται χρήματα και εκδίδει ένα εισιτήριο. Εκδίδει

Διαβάστε περισσότερα

ΕΝ ΕΙΚΤΙΚΑ ΣΧΕ ΙΑ ΛΥΣΕΩΝ - ΥΠΟ ΕΙΞΕΙΣ

ΕΝ ΕΙΚΤΙΚΑ ΣΧΕ ΙΑ ΛΥΣΕΩΝ - ΥΠΟ ΕΙΞΕΙΣ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΛΗ42 - ΕΙ ΙΚΑ ΘΕΜΑΤΑ ΤΕΧΝΟΛΟΓΙΑΣ ΛΟΓΙΣΜΙΚΟΥ 2η ΓΡΑΠΤΗ ΕΡΓΑΣΙΑ ΑΚΑ ΗΜΑΪΚΟΥ ΕΤΟΥΣ 2009-2010 2 oς Τόµος ΕΝ ΕΙΚΤΙΚΑ ΣΧΕ ΙΑ ΛΥΣΕΩΝ - ΥΠΟ ΕΙΞΕΙΣ ΕΡΓΑΣΙΑ 2 i. υναµική τεχνική επικύρωσης:

Διαβάστε περισσότερα

ιαφάνειες παρουσίασης #1

ιαφάνειες παρουσίασης #1 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ http://www.corelab.ece.ntua.gr/courses/programming/ ιδάσκοντες: Στάθης Ζάχος (zachos@cs.ntua.gr) Νίκος Παπασπύρου (nickie@softlab.ntua.gr) ιαφάνειες παρουσίασης

Διαβάστε περισσότερα

ΠΡΟΓΡΜΜΑΤΑ ΣΕ C. Γράψτε σε γλώσσα προγραμματισμού C τη συνάρτηση:

ΠΡΟΓΡΜΜΑΤΑ ΣΕ C. Γράψτε σε γλώσσα προγραμματισμού C τη συνάρτηση: ΠΡΟΓΡΜΜΑΤΑ ΣΕ C Γράψτε σε γλώσσα προγραμματισμού C τη συνάρτηση: int b_to_d(int dyad[16]) που δέχεται ως είσοδο έναν θετικό ακέραιο δυαδικό αριθμό με τη μορφή πίνακα δυαδικών ψηφίων και επιστρέφει τον

Διαβάστε περισσότερα

ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ. Python & NLTK: Εισαγωγή

ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ. Python & NLTK: Εισαγωγή ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ Python & NLTK: Εισαγωγή Εισαγωγή Γιατί Python? Παρουσίαση NLTK Πηγές και χρήσιμα εργαλεία Φροντιστήριο σε Python Στο φροντιστήριο: Εισαγωγή στην Python Ζητήματα προγραμματισμού για

Διαβάστε περισσότερα

ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ / Γ ΕΠΑΛ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 27/01/2013

ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ / Γ ΕΠΑΛ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 27/01/2013 ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ / Γ ΕΠΑΛ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 27/01/2013 ΘΕΜΑ Α Α1. Να χαρακτηρίσετε τις προτάσεις που ακολουθούν, γράφοντας δίπλα στο γράμμα που αντιστοιχεί σε κάθε πρόταση τη

Διαβάστε περισσότερα

Φροντιστήριο 9 Λύσεις

Φροντιστήριο 9 Λύσεις Άσκηση 1 Φροντιστήριο 9 Λύσεις Να κατασκευάσετε μια μηχανή Turing με δύο ταινίες η οποία να αποδέχεται στην πρώτη της ταινία μια οποιαδήποτε λέξη w {a,b} * και να γράφει τη λέξη w R στη δεύτερη της ταινία.

Διαβάστε περισσότερα

O n+2 = O n+1 + N n+1 = α n+1 N n+2 = O n+1. α n+2 = O n+2 + N n+2 = (O n+1 + N n+1 ) + (O n + N n ) = α n+1 + α n

O n+2 = O n+1 + N n+1 = α n+1 N n+2 = O n+1. α n+2 = O n+2 + N n+2 = (O n+1 + N n+1 ) + (O n + N n ) = α n+1 + α n Η ύλη συνοπτικά... Στοιχειώδης συνδυαστική Γεννήτριες συναρτήσεις Σχέσεις αναδρομής Θεωρία Μέτρησης Polyá Αρχή Εγκλεισμού - Αποκλεισμού Σχέσεις Αναδρομής Γραμμικές Σχέσεις Αναδρομής με σταθερούς συντελεστές

Διαβάστε περισσότερα

Θεωρία Υπολογισμού και Πολυπλοκότητα

Θεωρία Υπολογισμού και Πολυπλοκότητα Θεωρία Υπολογισμού και Πολυπλοκότητα Κεφάλαιο 1. Μαθηματικό Υπόβαθρο 23, 26 Ιανουαρίου 2007 Δρ. Παπαδοπούλου Βίκη 1 1.1. Σύνολα Ορισμός : Σύνολο μια συλλογή από αντικείμενα Στοιχεία: Μέλη συνόλου Τα στοιχεία

Διαβάστε περισσότερα

ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ

ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΕΙΣΑΓΩΓΗ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ. ΤΙ ΕΙΝΑΙ ΤΑ ΜΑΘΗΜΑΤΙΚΑ; Η επιστήμη των αριθμών Βασανιστήριο για τους μαθητές και φοιτητές Τέχνη για τους μαθηματικούς ΜΑΘΗΜΑΤΙΚΑ Α Εξάμηνο ΙΩΑΝΝΗΣ

Διαβάστε περισσότερα

Αναδρομικοί Αλγόριθμοι

Αναδρομικοί Αλγόριθμοι Αναδρομικός αλγόριθμος (recursive algorithm) Επιλύει ένα πρόβλημα λύνοντας ένα ή περισσότερα στιγμιότυπα του ίδιου προβλήματος. Αναδρομικός αλγόριθμος (recursive algorithm) Επιλύει ένα πρόβλημα λύνοντας

Διαβάστε περισσότερα

Αλγόριθµοι και Πολυπλοκότητα

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Πρόβληµα, Στιγµιότυπο, Αλγόριθµος Εργαλεία εκτίµησης πολυπλοκότητας: οι τάξεις Ο(n), Ω(n), Θ(n) Ανάλυση Πολυπλοκότητας Αλγορίθµων

Διαβάστε περισσότερα

Φροντιστήρια Επίγνωση Προτεινόμενα Θέματα Πανελλαδικών ΑΕΠΠ 2015

Φροντιστήρια Επίγνωση Προτεινόμενα Θέματα Πανελλαδικών ΑΕΠΠ 2015 Φροντιστήρια Επίγνωση Προτεινόμενα Θέματα Πανελλαδικών ΑΕΠΠ 2015 Βάλβης Δημήτριος Μηχανικός Πληροφορικής ΘΕΜΑ Α Α1. Να γράψετε στο τετράδιό σας τον αριθμό καθεμιάς από τις παρακάτω προτάσεις 1-5 και δίπλα

Διαβάστε περισσότερα

Κεφάλαιο 1 o Εξισώσεις - Ανισώσεις

Κεφάλαιο 1 o Εξισώσεις - Ανισώσεις 2 ΕΡΩΤΗΣΕΙΙΣ ΘΕΩΡΙΙΑΣ ΑΠΟ ΤΗΝ ΥΛΗ ΤΗΣ Β ΤΑΞΗΣ ΜΕΡΟΣ Α -- ΑΛΓΕΒΡΑ Κεφάλαιο 1 o Εξισώσεις - Ανισώσεις Α. 1 1 1. Τι ονομάζεται Αριθμητική και τι Αλγεβρική παράσταση; Ονομάζεται Αριθμητική παράσταση μια παράσταση

Διαβάστε περισσότερα

Μεταφερσιμότητα Τα προγράμματα μεταφέρονται εύκολα σε διαφορετικά λειτουργικά συστήματα

Μεταφερσιμότητα Τα προγράμματα μεταφέρονται εύκολα σε διαφορετικά λειτουργικά συστήματα Η ΓΛΩΣΣΑ C Η C είναι μια γλώσσα προγραμματισμού υψηλού επιπέδου η οποία αναπτύχθηκε στις αρχές της δεκαετίας του 70 από τον Dennis Ritchie στα Bell Labs. Η σημερινή μορφή της γλώσσας ακολουθεί το πρότυπο

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ VI. Εισαγωγή στον προγραμματισμό

ΚΕΦΑΛΑΙΟ VI. Εισαγωγή στον προγραμματισμό ΚΕΦΑΛΑΙΟ VI Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει, όπως έχει ήδη αναφερθεί, τρία εξίσου σημαντικά στάδια. Τον ακριβή προσδιορισμό του προβλήματος. Την ανάπτυξη του αντίστοιχου αλγορίθμου.

Διαβάστε περισσότερα

2 ο Εργαστήρι Λεσχών Ανάγνωσης. Πάρος 2-6 Ιουλίου 2007

2 ο Εργαστήρι Λεσχών Ανάγνωσης. Πάρος 2-6 Ιουλίου 2007 2 ο Εργαστήρι Λεσχών Ανάγνωσης Πάρος 2-6 Ιουλίου 2007 Περίληψη Η Αλίκη µισεί τα µαθηµατικά και θεωρεί πως δε χρησιµεύουν σε τίποτα. Μια µέρα που κάθεται και διαβάζει στο πάρκο, ένα παράξενο άτοµο την προσκαλεί

Διαβάστε περισσότερα

ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΘΕΜΑ 1 (Α) Σημειώστε δίπλα σε κάθε πρόταση «Σ» ή «Λ» εφόσον είναι σωστή ή λανθασμένη αντίστοιχα. 1. Τα συντακτικά λάθη ενός προγράμματος

Διαβάστε περισσότερα

Συναρτήσεις Όρια Συνέχεια

Συναρτήσεις Όρια Συνέχεια Κωνσταντίνος Παπασταματίου Μαθηματικά Γ Λυκείου Κατεύθυνσης Συναρτήσεις Όρια Συνέχεια Συνοπτική Θεωρία Μεθοδολογίες Λυμένα Παραδείγματα Επιμέλεια: Μαθηματικός Φροντιστήριο Μ.Ε. «ΑΙΧΜΗ» Κ. Καρτάλη 8 (με

Διαβάστε περισσότερα

Μιχάλης Λάμπρου Νίκος Κ. Σπανουδάκης. τόμος 1. Καγκουρό Ελλάς

Μιχάλης Λάμπρου Νίκος Κ. Σπανουδάκης. τόμος 1. Καγκουρό Ελλάς Μιχάλης Λάμπρου Νίκος Κ. Σπανουδάκης τόμος Καγκουρό Ελλάς 0 007 (ο πρώτος αριθµός σε µια γραµµή αναφέρεται στη σελίδα που αρχίζει το άρθρο και ο δεύτερος στη σελίδα που περιέχει τις απαντήσεις) Πρόλογος

Διαβάστε περισσότερα

Διδάσκων:Μ.Χατζόπουλος, Παραδόσεις:Τρίτη 4-6, Τετάρτη 1-3; (Αμφιθέατρο Α15) Πληροφορίες στην ιστοσελίδα του μαθήματος http://www.di.uoa.

Διδάσκων:Μ.Χατζόπουλος, Παραδόσεις:Τρίτη 4-6, Τετάρτη 1-3; (Αμφιθέατρο Α15) Πληροφορίες στην ιστοσελίδα του μαθήματος http://www.di.uoa. Πληροφορική 1 Διδάσκων:Μ.Χατζόπουλος, Παραδόσεις:Τρίτη 4-6, Τετάρτη 1-3; (Αμφιθέατρο Α15) Πληροφορίες στην ιστοσελίδα του μαθήματος http://www.di.uoa.gr/~organosi/ 2 Η δομή του μαθήματος Εισαγωγή στην

Διαβάστε περισσότερα

Κεφάλαιο 4 Διανυσματικοί Χώροι

Κεφάλαιο 4 Διανυσματικοί Χώροι Κεφάλαιο Διανυσματικοί Χώροι Διανυσματικοί χώροι - Βασικοί ορισμοί και ιδιότητες Θεωρούμε τρία διαφορετικά σύνολα: Διανυσματικοί Χώροι α) Το σύνολο διανυσμάτων (πινάκων με μία στήλη) με στοιχεία το οποίο

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C Ιανουάριος 2013 Τι είναι ένα πρόγραμμα; Πρόγραμμα είναι μία σειρά από οδηγίες που δίνουμε στον υπολογιστή προκειμένου αυτός να κάνει κάποια συγκεκριμένη εργασία Πώς

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 6 ο

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 6 ο Με τι ασχολείται ο προγραμματισμός; Ο προγραμματισμός ασχολείται με την διατύπωση του αλγορίθμου σε κατανοητή μορφή από τον Η/Υ, δηλ. τη δημιουργία του προγράμματος, του συνόλου των εντολών που πρέπει

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΙΚΟ ΚΕΦΑΛΑΙΟ. a β a β.

ΕΙΣΑΓΩΓΙΚΟ ΚΕΦΑΛΑΙΟ. a β a β. ΕΙΣΑΓΩΓΙΚΟ ΚΕΦΑΛΑΙΟ Ε.1 ΤΟ ΛΕΞΙΛΟΓΙΟ ΤΗΣ ΛΟΓΙΚΗΣ Στη παράγραφο αυτή θα γνωρίσουμε μερικές βασικές έννοιες της Λογικής, τις οποίες θα χρησιμοποιήσουμε στη συνέχεια, όπου αυτό κρίνεται αναγκαίο, για τη σαφέστερη

Διαβάστε περισσότερα

Μιγαδική ανάλυση Μέρος Α Πρόχειρες σημειώσεις 1. Μιγαδικοί αριθμοί. ΤΕΤΥ Εφαρμοσμένα Μαθηματικά Μιγαδική Ανάλυση Α 1

Μιγαδική ανάλυση Μέρος Α Πρόχειρες σημειώσεις 1. Μιγαδικοί αριθμοί. ΤΕΤΥ Εφαρμοσμένα Μαθηματικά Μιγαδική Ανάλυση Α 1 ΤΕΤΥ Εφαρμοσμένα Μαθηματικά Μιγαδική Ανάλυση Α 1 Μιγαδική ανάλυση Μέρος Α Πρόχειρες σημειώσεις 1 Μιγαδικοί αριθμοί Τι είναι και πώς τους αναπαριστούμε Οι μιγαδικοί αριθμοί είναι μια επέκταση του συνόλου

Διαβάστε περισσότερα

Βήματα: μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων. Δομές Δεδομένων + Αλγόριθμοι = Προγράμματα

Βήματα: μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων. Δομές Δεδομένων + Αλγόριθμοι = Προγράμματα Απλά Προγράμματα Βήματα: 1. Καθορισμός παράστασης δεδομένων στη μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων Δομές Δεδομένων + Αλγόριθμοι = Προγράμματα Οι Βασικοί κανόνες Κατανόηση

Διαβάστε περισσότερα

Αφαίρεση και Γενίκευση στα Μαθηματικά

Αφαίρεση και Γενίκευση στα Μαθηματικά 1 Αφαίρεση και Γενίκευση στα Μαθηματικά Δρ. Παναγιώτης Λ. Θεοδωρόπουλος Σχολικός Σύμβουλος κλάδου ΠΕ3 www.p-theodoropoulos.gr ΠΕΡΙΛΗΨΗ Στην εργασία αυτή εξετάζεται εντός του πλαισίου της Διδακτικής των

Διαβάστε περισσότερα

Παιχνίδια σε Javascript

Παιχνίδια σε Javascript Παιχνίδια σε Javascript Μάθημα 1ο Μια Γρήγορη Εισαγωγή στη Γλώσσα Τα Εργαλεία Την Javascript μπορούμε (όπως και την HTML) να τη γράψουμε σε ένα απλό συντάκτη κειμένου, ή σε ένα περιβάλλον όπως το Bluefish

Διαβάστε περισσότερα

ΓΥΜΝΑΣΙΟ ΑΓΙΟΥ ΔΟΜΕΤΙΟΥ ΣΧΟΛ. ΧΡΟΝΙΑ: 2014-2015

ΓΥΜΝΑΣΙΟ ΑΓΙΟΥ ΔΟΜΕΤΙΟΥ ΣΧΟΛ. ΧΡΟΝΙΑ: 2014-2015 ΓΥΜΝΑΣΙΟ ΑΓΙΟΥ ΔΟΜΕΤΙΟΥ ΣΧΟΛ. ΧΡΟΝΙΑ: 201-2015 ΕΞΕΤΑΣΤΙΚΟ ΔΟΚΙΜΙΟ ΠΡΟΑΓΩΓΙΚΩΝ ΕΞΕΤΑΣΕΩΝ 2015 ΜΑΘΗΜΑ: Μαθηματικά ΤΑΞΗ: Α ΗΜΕΡΟΜΗΝΙΑ: 05 / 06 / 2015 ΧΡΟΝΟΣ: 2 Ώρες Βαθμός:. Ολογρ.:.. Υπογραφή: Ονοματεπώνυμο:

Διαβάστε περισσότερα

ΑΣΚΗΣΕΙΣ ΠΙΘΑΝΟΤΗΤΩΝ του Παν. Λ. Θεοδωρόπουλου 0

ΑΣΚΗΣΕΙΣ ΠΙΘΑΝΟΤΗΤΩΝ του Παν. Λ. Θεοδωρόπουλου 0 ΑΣΚΗΣΕΙΣ ΠΙΘΑΝΟΤΗΤΩΝ του Παν. Λ. Θεοδωρόπουλου 0 Η Θεωρία Πιθανοτήτων είναι ένας σχετικά νέος κλάδος των Μαθηματικών, ο οποίος παρουσιάζει πολλά ιδιαίτερα χαρακτηριστικά στοιχεία. Επειδή η ιδιαιτερότητα

Διαβάστε περισσότερα

ΔΙΑΔΙΚΑΣΤΙΚΟΣ ΠΡΟΓΡΑ Ρ Μ Α ΜΑΤΙ Τ ΣΜΟΣ

ΔΙΑΔΙΚΑΣΤΙΚΟΣ ΠΡΟΓΡΑ Ρ Μ Α ΜΑΤΙ Τ ΣΜΟΣ Τμήμα Εφαρμοσμένης Πληροφορικής ΔΙΑΔΙΚΑΣΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εξάμηνο Α' Φύλλο Ασκήσεων 3 ΔΟΜΕΣ ΕΠAΝΑΛΗΨΗΣ Διδάσκοντες: Μάγια Σατρατζέμη, Αλέξανδρος Χατζηγεωργίου, Ηλίας Σακελλαρίου, Στέλιος Ξυνόγαλος

Διαβάστε περισσότερα