Σάββατο 19 Δεκεμβρίου 2015

01.Livecode μαθήματα - Boolean expressions

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

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

Το πρώτο πρόγραμμα που θα φτιάξουμε είναι ένα πολύ απλό boolean expression calculator. Είναι ένα χρήσιμο πρόγραμμα να εξασκηθούμε με τις πράξεις boolean στο Livecode. Οι τελεστές που υπάρχουν στο Livecode είναι

> μεγαλύτερο
< μικρότερο
>= μεγαλύτερο ίσο
<= μικρότερο ίσο
= ίσο
<> όχι ίσο
is είναι ίσο
is not δεν είναι ίσο
Παρόλο που το = είναι ίδιο με το is, αλλά και το <> είναι το ίδιο με το is not, δηλαδή βγάζουν τα ίδια αποτελέσματα, θα τα συμπεριλάβουμε και αυτά.

Η χρήση του προγράμματος λοιπόν έχει ως εξής. Θα εισάγει ο χρήστης 2 τιμές προς σύγκριση. Και θα επιλέγει έναν τελεστή απο τους παραπάνω. Θα πατάει calculate για να πάρει true ή false, σαν αποτέλεσμα.

Θέλουμε λοιπόν να φτιάξουμε μια φόρμα, όπου θα έχει τα εξής
2 Push buttons
2 Text entry fields
2 Labels
1 Option Menu

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

Ονομάστε τα αντικείμενά σας όπως θέλετε.Ούτως η άλλος στο τέλος του άρθρου θα σας έχω και το livecode αρχείο για να το κοιτάξετε. Εγώ ονόμασα τα 2 κουμπιά btn_calc και btn_reset. Τα δυο text entry fields σαν tb_opA και tb_opB. Το label που βγάζει το αποτέλεσμα το ονόμασα lbl_result. Το label με τον τίτλο του προγράμματος δεν είναι αναγκαίο να το ονομάσουμε αν και είναι καλή πρακτική. om_operators ονόμασα το Option menu.

Αφού φτιάξετε λοιπόν την φόρμα όπως σας αρέσει, μπορούμε να περάσουμε να συμπληρώσουμε κώδικα στα 3 αντικείμενα μας. Πρίν αρχίσουμε με τον κώδικα μας, ας πάμε να εισάγουμε όλους τους τελεστές στο οption Menu. Δεξί κλίκ λοιπόν στο option menu και property inspector. Οι τελεστές μπαίνουν στο menu items. Προσοχή εδώ μην αφήσετε κάποια κενή σειρά. Αν αφήσατε, απλά πατήστε backspace μέχρι να βρεθείτε στον τελευταίο τελεστή που γράψατε.


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

Δεξί κλίκ στο κουμπι reset και edit script.
1:  on mouseUp  
2:    put "0" into field "tb_opA"  
3:    put "0" into field "tb_opB"  
4:    set the text of field "lbl_result" to " "  
5:  end mouseUp  
Το καλό με την Livecode είναι οτι ο κώδικας τις περισσότερες φορές είναι τόσο απλός στο διάβασμα που δεν χρειάζεται εξήγηση. Όταν πατάμε το reset, γράφουμε μηδέν στα δυο text entry fields μας και βάζουμε στο label που δείχνει το αποτέλεσμα ένα κενό string. Απλά σβήνουμε αυτό που γράφει.

Ας πάμε τώρα στο option menu. Θέλουμε κάθε φορά που ο χρήστης επιλέγει ένα τελεστή να ξέρουμε ποιόν επέλεξε. Πάλι δεξί κλίκ στο option menu αυτή την φορά και edit code. Εδώ θα δούμε κάτι καινούργιο απο αυτό που κάναμε στο κουμπί reset. Μας περιμένει όπως βλέπουμε μια εντολή switch. Η switch όπως θα δείτε και στο manual, μας επιτρέπει να κρατήσουμε την όποια επιλογή έκανε ο χρήστης στο option menu. Την switch μπορούμε βέβαια να την χρησιμοποιήσουμε και σε απλές μεταβλητές, αλλά αυτό θα το δούμε πιο κάτω.

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

O κώδικας της switch λοιπόν είναι αυτός
1:  on menuPick pItemName  
2:    global goperator  
3:    switch pItemName  
4:     case "="  
5:       put "=" into goperator  
6:       break  
7:     case "<>"  
8:       put "<>" into goperator  
9:       break  
10:     case ">"  
11:       put ">" into goperator  
12:       break  
13:     case "<"   
14:       put "<" into goperator  
15:       break  
16:     case ">="  
17:       put ">=" into goperator  
18:       break  
19:     case "<="  
20:       put "<=" into goperator  
21:       break  
22:     case "is"  
23:       put "is" into goperator  
24:       break  
25:     case "is not"  
26:       put "is not" into goperator  
27:       break  
28:    end switch  
29:  end menuPick  

Η μεταβλητή goperator είναι μια global μεταβλητή. Που σημαίνει οτι μπορώ να έχω πρόσβαση σε αυτή από κάθε αντικείμενο. Οι απλές μεταβλητές ισχύουν μόνο για ένα event κάθε αντικειμένου όπως πχ mouseUp, mouseDown κλπ. Εδώ όμως θέλω αυτό που διάλεξε ο χρήστης και θα το πάρω απο τo menu option, να το διαβάσω και στην mouseUp του κουμπιού btn_calc.

Δηλώνω λοιπόν μια μεταβλητή ως global και οποιοδήποτε όνομα θέλω. Εγω διάλεξα το g(lobal)operator. goperator δηλαδή. Απο εκεί και πέρα για κάθε τελεστή που έχουμε γράψει, ελέγχουμε αν αληθεύουν οι περιπτώσεις. Αν πχ ο χρήστης διάλεξε το ">=" τότε αυτό το σημειώνουμε στην goperator.

H δεύτερη και πιο εύκολη επιλογή μας είναι να σβήσουμε την switch και απλά να αναθέσουμε κατευθείαν τα περιεχόμενα στην global μεταβλητή μας.
 on menuPick pItemName  
   global goperator  
   put pItemName into goperator  
 end menuPick  

Μπορείτε να διαλέξετε όποιο τρόπο θέλετε.

Πάμε τώρα να γράψουμε τον κώδικα για το τελευταίο αντικείμενο μας. Το btn_calc.
1:  on mouseUp  
2:    global goperator  
3:    put the text of field tb_opA into opA  
4:    put the text of field tb_opB into opB  
5:    switch goperator  
6:     case "="  
7:       set the text of field "lbl_result" to opA=opB  
8:       break  
9:     case "<>"  
10:       set the text of field "lbl_result" to opA<>opB  
11:       break  
12:     case "<"  
13:       set the text of field "lbl_result" to opA<opB  
14:       break  
15:     case ">"  
16:       set the text of field "lbl_result" to opA>opB  
17:       break  
18:     case "<="  
19:       set the text of field "lbl_result" to opA<=opB  
20:       break  
21:     case ">="  
22:       set the text of field "lbl_result" to opA>=opB  
23:       break  
24:     case "is"  
25:       set the text of field "lbl_result" to opA is opB  
26:       break  
27:     case "is not"  
28:       set the text of field "lbl_result" to opA is not opB  
29:       break  
30:    end switch  
31:  end mouseUp  

Σε κάθε συμβάν που θέλω να χρησιμοποιήσω μια global μεταβλητή, πρέπει πάντα να την δηλώνω στην αρχή ή κάπου μέσα στον κώδικα. Έτσι μπορώ να την χρησιμοποιήσω και εδώ και να είναι ουσιαστικά η ίδια μεταβλητή που δημιούργησα πρίν. Στην συνέχεια, οτι έχει βάλει ο χρήστης στα δυο text entry fields τα βάζω σε 2 μεταβλητές opA και opB. Και μετά τσεκάρω πάλι με switch την κάθε περίπτωση της μεταβλητής goperator.

Άν κάνατε τα πάντα σωστά, τότε το πρόγραμμα θα δουλέψει όπως το έχουμε σχεδιάσει. Παρακάτω υπάρχει το livecode αρχείο όπως είπαμε, σε περίπτωση που θέλετε να το κοιτάξετε.


Περισσότερα ...

Σάββατο 11 Ιουλίου 2015

Inx - Interactive μαθήματα τερματικού

Έχεις εγκαταστήσει την διανομή Linux που προτιμάς και θέλεις να μάθεις κάποιες εντολές για το τερματικό. Σαφώς και μπορείς να διαβάσεις ένα βιβλίο. Ή να δείς ένα βίντεο. Υπάρχει όμως και ένας άλλος τρόπος. To Inx είναι μια διανομή Linux, βασισμένη σε Ubuntu 8.04 που περιέχει interactive μαθήματα για εντολές τερματικού. Με αυτό τον τρόπο μαθαίνουμε και πιο εύκολα, γιατί περνάμε κατευθείαν απο την θεωρία στην πράξη.

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

Το κακό για τους αρχάριους είναι οτι πρέπει να ξέρουν πώς να δημιουργήσουν ένα live-cd ή usb με την διανομή ή να μπορούν να το φορτώσουν εικονικά. Απο εκεί και πέρα είναι πολύ εύκολο να βρούμε τα tutorials. Το μενού είναι πολυ απλό και κατανοητό. Μπορούμε ακόμα και να συνδεθούμε σε κάποιο web radio,και να ακούμε μουσική, καθώς κάνουμε τα μαθήματα αυτά.

Υπάρχουν πολλοί οδηγοί στο ίντερνετ για το πώς θα φτιάξετε ένα live-cd. Άλλωστε αν έχετε μια διανομή Linux, τότε θα έχετε μια ιδέα για το τι πρέπει να κάνετε.
Εδώ είναι το μενού με τους οδηγούς.
Τα tutorials καλύπτουν αρκετά θέματα που πρέπει να ξέρει ένας αρχάριος. Φυσικά και δεν θα μείνετε μόνο σε αυτά, αλλά τα interactive μαθήματα, είναι συνήθως πιο αποτελεσματικά και έχουν γρήγορο ρυθμό. Οπότε δεν βαριόμαστε εύκολα.




Περισσότερα ...

Τετάρτη 3 Ιουνίου 2015

Youtube - Crashcourse

Ένα πολύ ενδιαφέρον κανάλι ανακάλυψα πρόσφατα στο youtube. To Crashcourse περιέχει μαθήματα σε βίντεο για διάφορα και ενδιαφέροντα θέματα. Μπορείτε να παρακολουθήσετε θέματα όπως ψυχολογία, βιολογία, ανατομία, ιστορία κλπ. Παρόλο που στο blog ασχολούμαστε κυρίως με τους υπολογιστές, μας βοηθάει η πιο σφαιρική μάθηση η απλά έστω η περιέργεια για το πώς λειτουργούν τα πράγματα και σε κάποιες άλλες επιστήμες. Και δεν υπάρχει πιο ευκολοχώνευτος τρόπος να μάθουμε καινούργια πράγματα απο τα βίντεο του Crashcourse.

Τα βίντεο έχουν δημιουργηθεί με πολύ μαεστρία, είναι πολύ καλές παραγωγές και με πολύ καλά κείμενα που και στην ουσία μπαίνουν, αλλά είναι και παράλληλα ανάλαφρα. Οι δημιουργοί του καναλιού, έχουν πλήρως κατανοήσει τον στόχος τους και γιαυτό παράγουν βίντεο-μαθήματα που είναι μικρά σε διάρκεια και έχουν αρκετό χιούμορ, έτσι ώστε δύσκολα μπορεί να τα βαρεθεί κάποιος.
Αυτά είναι τα playlists που υπάρχουν μέχρι σήμερα. 
Όπως είπα και πρίν, η όλη παραγωγή είναι πολύ καλή και όπως θα διαπιστώσετε και εσείς, ελάχιστα κανάλια στο youtube μπορούν να προσφέρουν κάτι παρόμοιο. Ακόμα και τα online courses και ειδικά τα επι πληρωμή online courses, δεν είναι δουλεμένα τόσο καλά, όσο αυτή η σειρά. Βέβαια τα μαθήματα αυτά είναι για γενικές γνώσεις και όχι κάτι πιο ειδικό όπως είναι τα διάφορα courses απο πανεπιστήμια η από κάποιες άλλες εταιρίες που τα προσφέρουν.

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


Περισσότερα ...
 

Copyright © panosdk Design by BTDesigner | Blogger Theme by BTDesigner | Powered by Blogger