ΗΥ101: Εισαγωγή στην Πληροφορική

Σχετικά έγγραφα
ΚΕΦΑΛΑΙΟ 7. Αρχεία, εξαιρέσεις & εκσφαλμάτωση. 7.1 Εισαγωγή

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

Γραφικά υπολογιστών Εργαστήριο 1 Εισαγωγή στην Python

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

Διδακτική της Πληροφορικής ΙΙ

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

ΚΕΦΑΛΑΙΟ 3. Εκφράσεις, τελεστές, σχόλια. 3.1 Εισαγωγή

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

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

FAIL PASS PASS οριακά

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

ΚΕΦΑΛΑΙΟ 2. Τιμές, τύποι, μεταβλητές, λέξεις-κλειδιά, εντολές. 2.1 Εισαγωγή

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο)

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

9. Εντολές επανάληψηςκαι η εντολή

ΚΕΦΑΛΑΙΑ XIII, XIV. Εκσφαλμάτωση προγράμματος - Κύκλος Ζωής Λογισμικού

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

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

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

4. Συντακτικό μιας γλώσσας είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή.

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Εισαγωγή στην γλώσσα προγραμματισμού C

Διαδικασιακός Προγραμματισμός

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #4 ο : Αποσφαλμάτωση (debugging), μετατροπές

ΑΕΠΠ Ερωτήσεις θεωρίας

Εντολές επιλογής Επαναλήψεις (if, switch, while)

Κεφάλαιο : Επαναλήψεις (o βρόγχος While) (Διάλεξη 9) Δομές Έλεγχου Προγράμματος

Δομημένος Προγραμματισμός

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

ΜΥΥ105: Εισαγωγή στον Προγραμματισμό. Σφάλματα, εξαιρέσεις, εκσφαλμάτωση Χειμερινό Εξάμηνο 2016

Ψευδοκώδικας. November 7, 2011

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Οι εντολές ελέγχου της ροής ενός προγράμματος.

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 2 Εντολές Εισόδου/Εξόδου Τελεστές. Δρ. Γιώργος Λαμπρινίδης 23/10/2015 Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα

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

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

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

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

Αντικειμενοστρεφής Προγραμματισμός -Python. Κ.Π. Γιαλούρης

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #4 ο : Αποσφαλμάτωση (debugging), μετατροπές

Θεωρητικές Ασκήσεις. ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. 1 ο Μέρος

Εισαγωγή στην πληροφορική

Γλώσσα Προγραμματισμού C

ΕΡΓΑΣΤΗΡΙΟ 16. Χρησιμοποιώντας τον Αποσφαλματιστή (Debugger) του Eclipse

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

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

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

Τιμές και τύποι, μεταβλητές Ένα πρώτο σημαντικό βήμα για να μάθουμε να προγραμματίζουμε είναι να

ΜΥΥ105: Εισαγωγή στον Προγραµµατισµό. Σφάλµατα, εξαιρέσεις, εκσφαλµάτωση Χειµερινό Εξάµηνο 2014

Σημειωματάριο Τετάρτης 18 Οκτ. 2017

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Γλώσσα προγραμματισμού python

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

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

I. ΑΛΓΟΡΙΘΜΟΣ II. ΠΡΑΞΕΙΣ - ΣΥΝΑΡΤΗΣΕΙΣ III. ΕΠΑΝΑΛΗΨΕΙΣ. 1. Τα πιο συνηθισμένα σενάρια παραβίασης αλγοριθμικών κριτηρίων είναι:

2.1. Εντολές Σχόλια Τύποι Δεδομένων

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

Σύντομες εισαγωγικές σημειώσεις για την. Matlab

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

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2. Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Κάθε υποπρόγραμμα έχει μόνο μία είσοδο και μία έξοδο. Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα.

Επανάληψη για τις Τελικές εξετάσεις

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

Δομημένος Προγραμματισμός (ΤΛ1006)

Διαδικασιακός Προγραμματισμός

Περιεχόµενα του µαθήµατος 1. στον προγραµµατισµό 2. Λογικά διαγράµµατα 3. Τα βασικά της FORTRAN 4. Μεταβλητές & παράµετροι 5. οµές επανάληψης 6. οµές

Ιδιότητες αντικειμένων, συγγραφή κώδικα, συντακτικά λάθη

Πρόβλημα 29 / σελίδα 28

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

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting)

Πρόβλημα 37 / σελίδα 207

ΚΕΦΑΛΑΙΟ 5. Eπανάληψη με την εντολή while. 5.1 Εισαγωγή

Η Απάντηση. Ενδεικτικές Απαντήσεις Φύλλου Εργασίας. Μηνύματα. 1. Πληκτρολογήστε την εντολή:

Προγραμματισμός ΙI (Θ)

Αντικειμενοστραφής Προγραμματισμός

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Μέρος 2 Κατασκευή Συντακτικού Αναλυτή

Βαθμός Σχόλια. lab5 PASS PASS PASS PASS PASS. Οριακά PASS - Καλή δουλειά

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

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

Κεφάλαιο 2: Τα πρώτα βήματα

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

Δομή Επανάληψης. Κεφάλαιο 7 Mike Trimos

Γλώσσα Προγραμματισμού C. Προγραμματισμός HY: Γλώσσα Προγραμματισμού C. Γρήγορος Πίνακας Αναφοράς Σύνταξης. Εισήγηση #4. Επαναληπτικές δομές:

Προγραμματισμός I (Θ)

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

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

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Εντολές Ελέγχου & Επανάληψης

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

Εισαγωγή στον Προγ/μό Υπολογιστών

Transcript:

Δρ. Χρήστος Ηλιούδης

Τι είναι η ; Η διαδικασία του προγραμματισμού είναι μία πολύπλοκη διαδικασία που συχνά οδηγεί σε λάθη (πραγματοποιείται από ανθρώπους!!!). Τα προγραμματιστικά λάθη λέγονται bugs και η διαδικασία εντοπισμού και διόρθωσής τους ονομάζεται (debugging). ΕΛΕΓΧΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ ΕΝΤΟΠΙΣΜΟΣ ΛΑΘΩΝ ΔΙΟΡΘΩΣΗ ΛΑΘΩΝ ΕΚΣΦΑΛΜΑΤΩΣΗ

Είδη λαθών Συντακτικά λάθη (Syntax errors) Λάθη κατά την εκτέλεση (Runtime errors) Σημαντικά (σημασιολογικά) λάθη (Semantic errors)

Συντακτικά λάθη - 1 Παράγονται κατά τη μετάφραση του πηγαίου κώδικα και συνήθως δείχνουν ότι υπάρχει κάποιο λάθος στη σύνταξη του προγράμματος. Οφείλονται σε παραβίαση των κανόνων της γραμματικής και του συντακτικού της γλώσσας προγραμματισμού. Παραδείγματα λαθών: >>> deef printf() print "hello world" SyntaxError: invalid syntax >>>

Συντακτικά λάθη - 2 Εύκολα στη διόρθωση, αρκεί να εντοπιστούν Συνήθως τα μηνύματα λάθους (error messages) δεν είναι κατατοπιστικά. Τα πιο συνηθισμένα μηνύματα είναι τα: SyntaxError: invalid syntax SyntaxError: invalid token Το μήνυμα δεν μας πληροφορεί για το που ακριβώς βρίσκεται το λάθος.

Συντακτικά λάθη - 3 Μερικοί τρόποι αποφυγής κοινότυπων λαθών: 1. Μη χρησιμοποιείτε μια δεσμευμένη λέξη ως όνομα μεταβλητής. Λάθος: def = 5 2. Ελέγξτε τη συνέπεια των εσοχών (indentation). Λάθος: def printf(): print "hello world 3. Σιγουρευτείτε ότι τα τυχόν strings στον κώδικα έχουν quotation marks που ταιριάζουν. Λάθος: print "hello - single quote: ', - double quote: " 6. Να κλείνετε σωστά τα brackets (, {, [. 7. Μην μπερδεύετε την εκχώρηση = με την ισότητα ==.

Λάθη κατά την εκτέλεση-1 Πολλές φορές ένα πρόγραμμα, απαλλαγμένο από συντακτικά λάθη, μπορεί να εμφανίσει λάθη κατά την εκτέλεσή του. Συνήθως τα λάθη αυτά οφείλονται σε απαιτήσεις του προγράμματος που ο υπολογιστής δεν μπορεί να ικανοποιήσει και ο προγραμματιστής δεν είχε προβλέψει στη διαδικασία ανάλυσης του προβλήματος και κωδικοποίησης του προγράμματος. Παραδείγματα: διαίρεση με το μηδέν, χρήση αρχείου για ανάγνωση όταν δεν υπάρχει, ατέρμονη αναδρομή κλπ. Τα περισσότερα runtime error messages περιλαμβάνουν πληροφορία για το που συνέβη το λάθος και ποιες συναρτήσεις ήταν σε εκτέλεση.

Λάθη κατά την εκτέλεση-2 Το πρόγραμμα δεν κάνει απολύτως τίποτα: το πρόγραμμα μπορεί να περιέχει συναρτήσεις και κλάσεις, αλλά δεν επικαλείται κάτι για να ξεκινήσει η εκτέλεση. Το πρόγραμμα «κρεμάει», σταματάει και φαίνεται να μην κάνει τίποτα: ατέρμονας βρόγχος (infinite loop) ατέρμονη αναδρομή (infinite recursion)

Λάθη κατά την εκτέλεση-3 Ατέρμονας βρόγχος: - Aν νομίζετε ότι ένας συγκεκριμένος βρόγχος είναι ατέρμονας, τότε προσθέστε στο τέλος της επανάληψης εντολές εκτύπωσης που τυπώνουν τις τιμές των μεταβλητών στη συνθήκη και την τιμή της συνθήκης. - Για παράδειγμα: while x > 0 and y < 0 : # do something to x # do something to y print "x: ", x print "y: ", y print "condition: ", (x > 0 and y < 0)

Λάθη κατά την εκτέλεση-4 Ατέρμονη αναδρομή: Τις περισσότερες φορές το πρόγραμμα τρέχει για λίγο και έπειτα παράγει ένα λάθος: Maximum recursion depth exceeded Εάν υποπτεύεστε ότι μία συνάρτηση ή μέθοδος προκαλεί ατέρμονη αναδρομή, τότε ελέγχετε αν υπάρχει μία base case, δηλαδή κάποια συνθήκη που θα αναγκάσει τη συνάρτηση να επιστρέψει χωρίς να παράγει επαναλαμβανόμενη κλήση. Εάν δεν υπάρχει κάποια base case πρέπει να ξανασκεφτείτε τον αλγόριθμο και να προσδιορίσετε κάποια. Εάν υπάρχει κάποια base case και ο αλγόριθμος έχει την ίδια συμπεριφορά προσθέστε στην αρχή της συνάρτησης εντολές εκτύπωσης που τυπώνουν τις τιμές των παραμέτρων. Εάν οι παράμετροι δεν κινούνται προς την base case θα πρέπει να βρείτε την αιτία γι αυτό.

Λάθη κατά την εκτέλεση-5 Exception: Εάν κάτι πηγαίνει στραβά κατά την εκτέλεση, οι περισσοτερες γλώσσες τυπώνουν ένα μήνυμα που περιλαμβάνει το όνομα του exception, τη γραμμή του προγράμματος που εμφανίστηκε καθώς και ένα traceback. Το πρώτο βήμα είναι να εξεταστεί η θέση του προγράμματος που εμφανίστηκε το λάθος.

Λάθη κατά την εκτέλεση-6 Κάποια από τα πιο κοινά λάθη κατά την εκτέλεση (runtime errors): NameError TypeError KeyError AttributeError IndexError

Λάθη κατά την εκτέλεση-7 Προβλήματα με πολλές εντολές εκτύπωσης στο debugging: Μπορεί να καταλήξουν κρυμμένες στην έξοδο. Λύσεις: Απλοποίηση της εξόδου Απλοποίηση του προγράμματος Καθαρίστε το πρόγραμμα: Αφαιρέστε το νεκρό κώδικα Αναδιοργανώστε το πρόγραμμα

Σημασιολογικά Λάθη - 1 Το πρόγραμμα μεταφράζεται και τρέχει αλλά δεν κάνει τα σωστά πράγματα. Τα πιο δύσκολα για να διορθωθούν, καθώς δεν παρέχεται κάποια πληροφορία για αυτά από τον compiler και το runtime σύστημα. Να συνδέσετε το κείμενο του προγράμματος με τη συμπεριφορά που βλέπετε. Χρειάζεστε μια υπόθεση για αυτό που πραγματικά κάνει το πρόγραμμα. Χρήσιμο είναι να μπορείτε να επιβραδύνετε το πρόγραμμα σας. Εισάγετε και αφαιρέστε breakpoint του debugger και περπατήστε το πρόγραμμα εκεί όπου εμφανίζεται το λάθος.

Σημασιολογικά Λάθη - 2 Μεγάλες δύσκολες εκφράσεις που δεν δουλεύουν: Μία λύση είναι να σπάσουμε τη σύνθετη έκφραση σε μία σειρά αναθέσεων σε προσωρινές μεταβλητές.

Σημασιολογικά Λάθη - 3 Για παράδειγμα: self.hands[i].addcard(self.hands[self.findneighbor(i)].popcard()) Μπορεί να γραφτεί: neighbor = self.findneighbor (i) pickedcard = self.hands[neighbor].popcard() self.hands[i].addcard (pickedcard) Ευκολότερο να διορθωθεί καθώς μπορείτε να ελέγξετε τους τύπους των ενδιάμεσων μεταβλητών και τις τιμές τους.

Σημασιολογικά Λάθη - 4 Ένα άλλο πρόβλημα που μπορεί να εμφανιστεί στις μεγάλες εκφράσεις είναι η μη αναμενόμενη σειρά αποτίμησης. Για παράδειγμα, η έκφραση μπορεί να γραφτεί π.χ. στην Python ως: y = x / 2 * math.pi Όμως, επειδή ο πολλαπλασιασμός και η διαίρεση έχουν την ίδια προτεραιότητα, οι πράξεις θα εκτελεστούν από τα αριστερά προς τα δεξιά. Η λύση είναι η πρόσθεση παρενθέσεων: y = x / (2 * math.pi) x 2

Σημασιολογικά Λάθη - 5 Χρειάζομαι βοήθεια: Ακόμα και οι καλύτεροι προγραμματιστές μένουν περιστασιακά κολλημένοι. Μερικές φορές εργάζεστε σε ένα πρόγραμμα τόσο καιρό που δεν μπορείτε να δείτε το λάθος. Προτού να καλέσετε κάποιο άλλο για βοήθεια, σιγουρευτείτε ότι έχετε εξαντλήσει τις τεχνικές που περιγράφονται παρακάτω: Το πρόγραμμά σας πρέπει να είναι όσο το δυνατόν απλούστερο. Πρέπει να δουλεύετε με την μικρότερη είσοδο που προκαλεί το λάθος. Πρέπει να έχετε τις δηλώσεις των εντολών εκτύπωσης στις κατάλληλες θέσεις. Πρέπει να καταλάβετε το πρόβλημα αρκετά καλά έτσι ώστε να το περιγράψετε συνοπτικά σε κάποιον για να σας βοηθήσει άμεσα.

Σημασιολογικά Λάθη - 6 Όταν βρείτε το bug σκεφτείτε τον τρόπο που θα μπορούσατε να το έχετε κάνει γρηγορότερα. Την επόμενη φορά που θα δείτε κάτι παρόμοιο θα είστε σε θέση να το εντοπίσετε γρηγορότερα. Στόχος δεν είναι μόνο να δουλέψει ένα πρόγραμμα. Στόχος είναι να μάθετε πώς να κάνετε ένα πρόγραμμα να δουλέψει.