[1o] Προγραμματισμός & χρήση Η/Υ (2010-11)

1
Αυτό το topic θα είναι το βασικό για τη συζήτηση σχετικά με το μάθημα του προγραμματισμού για το ακαδημαϊκό έτος 2010-2011. Εάν κάποιο θέμα θέλει ιδιαίτερη συζήτηση θα ανοίγουμε άλλο topic και τα posts θα μεταφέρονται εκεί.
Προγραμματισμός & χρήση Η/Υ (2010-2011)
Από φέτος το μάθημα αλλάζει πάρα πολύ σε πολλούς τομείς. Καταρχάς, αλλάζει η... ιστοσελίδα του! Δείτε τη νέα ιστοσελίδα του μαθήματος. Χμ, δεν είναι αυτή η σημαντικότερη αλλαγή του, αλλά από εκεί πρέπει να ξεκινήσετε καθώς εκεί γράφονται όλα.

Δεν θέλω να γίνω ιδιαίτερα κουραστικός από το πρώτο post του θέματος, γι' αυτό θα περιοριστώ για αρχή μόνο στις αλλαγές που γίνονται:
  • Θεωρία-Εργαστήριο: Καταργείται το σύστημα "θεωρία στο αμφιθέατρο (πίνακα) - ασκήσεις στο εργαστήριο". Πλέον όλα μαζί στο εργαστήριο. Λίγη θεωρία από εδώ, λίγες ασκήσεις από εκεί και κυρίως "hands-on". Ό,τι μαθαίνει κάποιος θα μπορεί να το εφαρμόζει αμέσως χωρίς να προσπαθεί να καταλάβει τι είναι αυτά τα κινέζικα που βλέπει στον πίνακα με την κιμωλία.
  • Τμήματα-Πρόγραμμα: Το ένα τμήμα στη θεωρία και τα τρία τμήματα του εργαστηρίου δεν έχουν νόημα μετά την πρώτη αλλαγή. Τα τμήματα γίνονται δυο και από μια φορά την εβδομάδα που εργάζονταν στο εργαστήριο πριν, θα εργάζονται πλέον δυο φορές την εβδομάδα. Συγκεκριμένα, δημιουργείται ένα τμήμα που θα δουλεύει Δευτέρα & Τρίτη και ένα τμήμα που θα δουλεύει Δευτέρα & Παρασκευή. Αντιλαμβάνεστε την αύξηση της ευελιξίας του προγράμματος που συνεπάγεται αυτή η αλλαγή, όπως και την ποιοτική αναβάθμιση καθώς κάθε φοιτητής ασκείται συχνότερα και όχι απλώς μια φορά την εβδομάδα.
  • Διδακτικό υλικό: Με τη δυνατότητα επιλογής που προσφέρεται φέτος, οι φοιτητές μπορούν να διαλέξουν ανάμεσα στο βιβλίο του κ. Καραμπετάκη και στο βιβλίο του κ. Ματαρά που διανεμόταν μέχρι πριν 3 χρόνια. Επίσης, μετά από το φυλλάδιο του Φ. Δογάνη για το Matlab, δημιουργήθηκε και ένα αντίστοιχο συνοπτικό φυλλάδιο για τη Fortran το οποίο μπορείτε να βρείτε ήδη στη νέα σελίδα του μαθήματος (μη βιαστείτε να το τυπώσετε). Υπενθυμίζω ότι έχω γράψει κι εγώ κάποια παραδειγματάκια, τα οποία υπάρχουν εδώ. Θα μου άρεσε αν τα αξιολογούσε/διόρθωνε κάποιος... Πάντως είναι εντελώς ανεπίσημα.
  • Εξετάσεις: Για όλους όσους γράφονται από φέτος στο μάθημα, η εξέταση θα γίνεται ηλεκτρονικά στο εργαστήριο, αφού έτσι έχει γίνει και η διδασκαλία τους. Οι παλιότεροι διατηρούν το δικαίωμα να γράψουν στο αμφιθέατρο με τον κλασσικό τρόπο (αν και για τον προγραμματισμό μοιάζει σαν να σκαλίζεις σε πέτρινες πλάκες με το σφυρί). Ενδεχομένως επίσης να γίνει κάποιο ενδιάμεσο διαγώνισμα στο εργαστήριο (όπως έγινε πέρσι) ώστε να μην κρίνεται κάποιος μόνο από το τελικό διαγώνισμα του Φεβρουαρίου.
Αυτά μέχρι στιγμής. Να διευκρινίσω μόνο πως ό,τι γράφεται εδώ είναι εντελώς ανεπίσημο. Απλώς μέσα από εδώ θα μπορούμε να συζητάμε ευκολότερα κάποια πράγματα που θα προκύπτουν κατά την προσωπική μελέτη στο σπίτι, αλλά και να ενημερώνεστε ταχύτερα για τις εξελίξεις (ή τουλάχιστον χωρίς να χρειάζεται να κοιτάτε συνέχεια την ιστοσελίδα του μαθήματος).

Τελειώνω με μια ανακοίνωση:
Τη Δευτέρα 4 Οκτωβρίου (και μόνο τότε) το μάθημα θα πραγματοποιηθεί στις 15:00-18:00 στο αμφιθέατρο 1, αντί για την κανονική του ώρα στο pc-lab!
Εύχομαι καλή αρχή! :D

Τρίτη 5/10/2010

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

Συνοπτικά σήμερα:
1. Εισαγωγή στο μάθημα
2. Παραλαβή κωδικών για τους υπολογιστές του εργαστηρίου
3. Αλλαγή κωδικών κατευθείαν από τους χρήστες (ώστε να γίνουν πραγματικά προσωπικοί, άγνωστοι στους διαχειριστές του εργαστηρίου)
4. Παρουσίαση του εργαστηρίου της σχολής (μηχανήματα, δυνατότητες, δικαιώματα χρηστών, κανονισμοί)
5. Παρουσίαση της ιστοσελίδας του μαθήματος
6. Παρουσίαση κάποιων βασικών εννοιών που θα χρησιμοποιηθούν κατά τη διάρκεια του μαθήματος όπως πχ "πρόγραμμα", "χρήστης", "compiler" κτλ.

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

Εάν θέλετε, για την επόμενη φορά (Δευτέρα 11 Οκτωβρίου), προτείνω να ρίξετε μια πρόχειρη ματιά (ξεφύλλισμα) στο αρχείο "Δημιουργία νέου project" που περιγράφει συνοπτικά κάποιες βασικές λειτουργίες του περιβάλλοντος που θα χρησιμοποιούμε κάθε φορά (Compaq Visual Fortran 6.6).


Σχετικά με τον compiler, επειδή με ρώτησε κάποιος: Το πακέτο που χρησιμοποιούμε είναι εμπορικό και δεν διατίθεται από το εργαστήριο. Επίσης η ανάπτυξή του συγκεκριμένου προγράμματος έχει σταματήσει (για την ακρίβεια έχει συνεχιστεί από άλλη εταιρεία) και η τελευταία έκδοση της Compaq δεν παίζει σωστά σε Windows Vista/7 (φτιάχτηκε για Win2000), ενώ δεν παίζει καθόλου σε 64bit εκδόσεις αυτών. Μην ψάξετε να το βρείτε "με άλλους τρόπους", θα απογοητευτείτε. Υπάρχουν πολύ καλοί δωρεάν compilers για παιδαγωγικούς σκοπούς. Ενδεικτικά προτείνω τους Force και Silverfrost Fortran που θα βρείτε εδώ. Ειλικρινά, δεν υπάρχει λόγος να μπείτε στη φασαρία να βρείτε το συγκεκριμένο πρόγραμμα. Η γλώσσα προφανώς μένει ακριβώς η ίδια ενώ όσα μαθαίνουμε στο εργαστήριο αντιστοιχίζονται πάρα πολύ εύκολα... :)

Δευτέρα 11/10/2010

3
Ξεκινάω με μια ανακοίνωση:
Το δεύτερο τμήμα θα ξεκινάει το μάθημά του τις Δευτέρες στις 3:00 αντί για τις 3:15 που ήταν μέχρι τώρα και θα τελειώνει αντιστοίχως 5:15 αντί για 5:30.
Σήμερα έγινε και για τα δυο τμήματα το πρώτο "on the hands" μάθημα προγραμματισμού. Μιλήσαμε για τις εντολές που ξεκινούν (Program) και τελειώνουν (End) ένα κώδικα fortran. Μιλήσαμε επίσης για την εντολή print που επιτρέπει την εμφάνιση πληροφοριών στην οθόνη, όπως μηνύματα κειμένου ή τιμές μεταβλητών. Είπαμε για τη δήλωση ακέραιων (integer) και πραγματικών (real) μεταβλητών, για την εντολή Implicit None που μας αναγκάζει-υπενθυμίζει να δηλώνουμε τον τύπο των μεταβλητών που χρησιμοποιούμε, ενώ αναφερθήκαμε και στη δυνατότητα να μπαίνουν σχόλια στον κώδικα.

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

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

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

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

Τα λέμε πάλι αύριο. :D

ΥΓ: Ξέχασα να σχολιάσω οτι έχουν πολλή πλάκα τα μηνυματάκια που βάζετε πολλοί να εμφανίζονται στην οθόνη :p Εντόπισα πχ ένα "Barca FTW" :bleh: Χαίρομαι επίσης που πολλοί αυτοσχεδιάζουν σε πολλά σημεία και δεν αντιγράφουν απλώς ό,τι βλέπουν.

ΥΓ2: Σήμερα επίσης μοιράστηκαν οι σημειώσεις του μαθήματος στο εργαστήριο. Είναι οι ίδιες που υπάρχουν στο internet, απλώς μοιράστηκαν τυπωμένες. Αν κάποιος δεν πήρε ας τις ζητήσει στο εργαστήριο. Πάντως είναι λίγες σελίδες, οπότε τις τυπώνετε και μόνοι σας στην ανάγκη. :)

Δευτέρα 18/10/2010

4
Τρίτη 12 & Παρασκευή 15 Οκτωβρίου

Την Τρίτη και την Παρασκευή που μας πέρασε δεν μπόρεσα να γράψω... Ωστόσο δεν έγινε κάτι ιδιαίτερα συνταρακτικό. Είπαμε για τις διάφορες δομές της εντολής IF, με την οποία κατευθύνουμε τον κώδικά μας να επιλέξει το "μονοπάτι" που θα ακολουθήσει, σύμφωνα με την ικανοποιήση ή μη κάποιων συνθηκών.

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

Αυτό ήταν και από τις πρώτες "προκλήσεις" κατανόησης για όσους ασχολούνται πρώτη φορά με τον προγραμματισμό. Αλλά νομίζω ότι γενικώς το καταλάβατε, ή θα το καταλάβετε όταν θα φτιάξετε πιο σύνθετους κώδικες. ;) Είπαμε επίσης για την εισαγωγή δεδομένων με την εντολή READ (αντίστοιχη της PRINT για την εξαγωγή δεδομένων). Την ίδια μέρα έγιναν και οι Ασκήσεις 1 & 2, που υπάρχουν στη σελίδα του μαθήματος μαζί με τις λύσεις τους.

Δευτέρα 18/10/2010

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

Απορίες? Κάτι που δεν καταλάβατε; Ρωτάτε ελεύθερα, μη μένουν σκοτεινά σημεία από το μάθημα! :)
Άμα μαζευτούν και πάμε παρακάτω την κάτσαμε... :(

Re: Προγραμματισμός & χρήση Η/Υ (2010-2011)

5
Αύριο, Τετάρτη 20 Οκτωβρίου θα γίνει αναπλήρωση του σημερινού μαθήματος για το α' τμήμα στις 8:45-10:30.
Δεν θα προχωρήσουμε στη θεωρία, αλλά θα γίνουν μόνο ασκήσεις (το πακέτο "άσκηση 3" που υπάρχει στο site).
Παραθέτω την επίσημη ανακοίνωση (βρίσκεται στην αρχική σελίδα του μαθήματος).
Αναπλήρωση μαθήματος έγραψε:Η αναπλήρωση του μαθήματος της Τρίτης (19/10), θα γίνει την Τετάρτη (20/10), ώρα 8:45-10:30, για όσους από το Α' τμήμα δεν έχουν εκείνο το χρονικό διάστημα Εργαστήριο Ανόργανης Χημείας. Σε αυτό το μάθημα μπορούν να έλθουν και όσοι μπορούν από το Β' τμήμα. Η αναπλήρωση για τους υπόλοιπους θα γίνει την Παρασκευή (22/10), 14:45-16:30 (μαζί με το Β' τμήμα)
Κατά τα άλλα, ό,τι ξέρετε ξέρω κι εγώ. Όσοι μπορείτε ελάτε αύριο, για να μην υπερκαληφθούν οι θέσεις την Παρασκευή και κάθεστε 2-2.
Παρακαλώ ενημερώστε τους συμφοιτητές σας!!!

Re: Προγραμματισμός & χρήση Η/Υ (2010-2011)

6
Λοιπόν, σήμερα το πρωί πήγα στο μάθημα αναπλήρωσης στο οποίο ασχοληθήκαμε με την άσκηση(ή πακέτο πέντε ασκήσεων)3.
Οι πέντε αυτές ασκήσεις ήταν ομολογουμένως ανώτερου επιπέδου δυσκολίας σε σχέση με τα όσα έχουν προηγηθεί κατά τις δύο πρώτες εβδομάδες μαθημάτων, και ενδεχομένως ακόμη δυσκολότερες για συμφοιτητές που προέρχονται από τη θετική κατεύθυνση, όπως εγώ. Άκουσα ότι θα ασχοληθούμε με αυτές και στο επόμενο μάθημα, κάτι που κρίνεται αναγκαίο για να τις κατανοήσουμε και να τις τελειώσουμε όλες, όλοι.

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

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

Re: Προγραμματισμός & χρήση Η/Υ (2010-2011)

7
Να εξηγούνται στο βιβλίο; Τι ακριβώς εννοείς;

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

(το ξέρω οτι δεν σκέφτεσαι να διαβάσεις μόνο από το βιβλίο, απλώς μου έδωσες αφορμή να το πω :) )

Re: Προγραμματισμός & χρήση Η/Υ (2010-2011)

8
Καλησπέρα σε όλους!
Να σας ρωτήσω, ξέρετε τι θα γίνει τη δευτέρα στο μάθημα του πρώτου τμήματος; Γιατί προγραμματίζεται κάποια διαμαρτυρία για τις 12:30 στο pc lab απ' ότι διάβασα σε ένα φυλλάδιο. Το μάθημα θα γίνει κανονικά;
Kuchiki Byakuya