Think Python. How to Think Like a Computer Scientist. Έκδοση Σεπτέμβριος 2014

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

Download "Think Python. How to Think Like a Computer Scientist. Έκδοση 1.0.3 Σεπτέμβριος 2014"

Transcript

1 i Think Python How to Think Like a Computer Scientist Έκδοση Σεπτέμβριος 2014

2 Think Python Πώς να Σκέφτεσαι σαν Επιστήμονας της Πληροφορικής Version Σεπτέμβριος 2014 Allen Downey Μετάφραση-Επιμέλεια: Ποικιλίδης Ζαχαρίας Επιβλέπων: Δρ. Βλάχος Βασίλειος ΤΕΙ of Larisa

3 Copyright 2012 Allen Downey. Παραχωρείται η άδεια προς αντιγραφή, διανομή και/ή τροποποίηση αυτού του εγγράφου σύμφωνα με τους όρους της άδειας Creative Commons Attribution-NonCommercial 3.0 Unported License, η οποία είναι διαθέσιμη στην σελίδα Η αρχική μορφή αυτού του βιβλίου είναι πηγαίος κώδικας L A TEX. Η μεταγλώττιση αυτού του κώδικα L A TEX έχει ως αποτέλεσμα τη δημιουργία μίας ανεξάρτητης συσκευής αναπαράστασης του βιβλίου, η οποία μπορεί να μετατραπεί σε άλλες μορφές και να τυπωθεί. Ο πηγαίος κώδικας της αγγλικής έκδοσης του βιβλίου είναι διαθέσιμος στον σύνδεσμο: com.

4 iv

5 Πρόλογος Λίγα λόγια για το βιβλίο Το βιβλίο αυτό αποτελεί μετάφραση του αγγλικού βιβλίου Think Python του καθηγητή Allen B. Downey από το κολέγιο εφαρμοσμένης μηχανικής Franklin W. Olin. Η μετάφραση διεκπεραιώθηκε στα πλαίσια της πτυχιακής μου εργασίας στο Τμήμα Μηχανικών Πληροφορικής Τ.Ε. του ΑΤΕΙ Λάρισας. Η εργασία αυτή μου έδωσε την ευκαιρία να εργαστώ με το L A TEX και να μάθω τα βασικά για τη δημιουργία ενός εγγράφου. Για την επεξεργασία του πηγαίου κώδικα του βιβλίου χρησιμοποιήθηκε το εργαλείο texmaker τόσο σε περιβάλλον Linux (ubuntu 13.04/13.10) όσο και σε Windows 7. Αρχικά χρησιμοποίησα το πακέτο babel για να την παράλληλη χρήση ελληνικών και λατινικών χαρακτήρων αλλά στην πορεία άλλαξα την μηχανή σε XƎTEX γιατί το XeLaTeX έχει εγγενή υποστήριξη για unicode. Αυτή είναι η πρώτη έκδοση του βιβλίου στα ελληνικά και είναι βασισμένη στην του αρχικού βιβλίου. Ο πηγαίος κώδικας του ελληνικού βιβλίου είναι διαθέσιμος στο σύνδεσμο... Κάθε διόρθωση η παρατήρηση πάνω σε αυτόν τον κώδικα είναι ευπρόσδεκτη και θα εκτιμηθεί ιδιαίτερα. Το βιβλίο πραγματεύεται τη γλώσσα προγραμματισμού Python αλλά επικεντρώνεται περισσότερο στον προγραμματισμό και την επίλυση προβλημάτων παρά στη γλώσσα αυτή κάθε αυτή. Μερικά από τα χαρακτηριστικά στοιχεία αυτού του βιβλίου είναι: Στο τέλος κάθε κεφαλαίου υπάρχει μία ενότητα σχετικά με την αποσφαλμάτωση. Αυτές οι ενότητες παρουσιάζουν κάποιες γενικές τεχνικές για την εύρεση και την αποφυγή σφαλμάτων σχετικά με τις παγίδες της Python. Κάθε κεφάλαιο έχει ασκήσεις η οποίες κυμαίνονται από μικρά τεστ κατανόησης μέχρι και κάποια ουσιαστικά προγράμματα και υπάρχουν λύσεις για τις περισσότερες από αυτές. Υπάρχει μία σειρά από μελέτες περιπτώσεων, οι οποίες είναι μεγαλύτερα παραδείγματα με ασκήσεις, λύσεις και συζήτηση. Μερικές είναι βασισμένες στη Swampy, μία σουίτα από προγράμματα Python την επιμέλεια της οποίας έχει ο καθηγητής Allen B. Downey. Η Swampy, παραδείγματα κώδικα και κάποιες λύσεις είναι διαθέσιμες στον σύνδεσμο com. Κατά την έκταση του βιβλίου λαμβάνει χώρα μία εκτενής συζήτηση σχετικά με τα σχέδια ανάπτυξης ενός προγράμματος και τα βασικά σχεδιαστικά πρότυπα. Στο τέλος του βιβλίου υπάρχουν παραρτήματα σχετικά με την αποσφαλμάτωση, την ανάλυση αλγορίθμων και και τα διαγράμματα UML με το πακέτο Lumpy. v

6 vi ΠΡΟΛΟΓΟΣ Εύχομαι να σας αρέσει το αποτέλεσμα και να σας βοηθήσει να μάθετε πως να σκέφτεστε και πως να προγραμματίζετε σαν επιστήμονες της πληροφορικής. Ευχαριστίες Αρχικά θα ήθελα να ευχαριστήσω τον καθηγητή Allen Downey για την επιλογή του να κυκλοφορήσει αυτό το βιβλίο κάτω από την Άδεια Ελεύθερης Τεκμηρίωσης GNU με αποτέλεσμα να μου δώσει την δυνατότητα να μεταφράσω αυτό το βιβλίο στα Ελληνικά. Επίσης θα ήθελα να ευχαριστήσω τον επιβλέπων καθηγητή μου Βλάχο Βασίλειο γιατί μου έδωσε την ευκαιρία να ασχοληθώ με αυτό το βιβλίο στα πλαίσια της πτυχιακής μου εργασίας. Ελπίζω αυτό το βιβλίο να αποτελέσει ένα χρήσιμο εργαλείο εκμάθησης προγραμματισμού στο Τμήμα Μηχανικών Πληροφορικής του ΤΕΙ της Λάρισας και γιατί όχι και αλλού. Τέλος θα ήθελα να ευχαριστήσω τους γονείς μου Βασίλη και Φωτεινή, που με στήριξαν όλα αυτά τα χρόνια καθώς επίσης και την κοπέλα μου Ελεονώρα για την πολύτιμη βοήθειά της στην μετάφραση αρκετών δυσνόητων σημείων του βιβλίου. Λίστα συνεισφερόντων του αρχικού βιβλίου Περισσότεροι από από 100 προσεκτικοί αναγνώστες έχουν στείλει προτάσεις και διορθώσεις τα περασμένα χρόνια για το αρχικό βιβλίο στα Αγγλικά. Αυτή είναι μια λίστα με σχεδόν όλους όσους βοήθησαν στην ανάπτυξη και τελειοποίηση του αγγλικού βιβλίου. Lloyd Hugh Allen sent in a correction to Section 8.4. Yvon Boulianne sent in a correction of a semantic error in Chapter 5. Fred Bremmer submitted a correction in Section 2.1. Jonah Cohen wrote the Perl scripts to convert the LaTeX source for this book into beautiful HTML. Michael Conlon sent in a grammar correction in Chapter 2 and an improvement in style in Chapter 1, and he initiated discussion on the technical aspects of interpreters. Benoit Girard sent in a correction to a humorous mistake in Section 5.6. Courtney Gleason and Katherine Smith wrote horsebet.py, which was used as a case study in an earlier version of the book. Their program can now be found on the website. Lee Harr submitted more corrections than we have room to list here, and indeed he should be listed as one of the principal editors of the text. James Kaylin is a student using the text. He has submitted numerous corrections. David Kershaw fixed the broken cattwice function in Section Eddie Lam has sent in numerous corrections to Chapters 1, 2, and 3. He also fixed the Makefile so that it creates an index the first time it is run and helped us set up a versioning scheme. Man-Yong Lee sent in a correction to the example code in Section 2.4. David Mayo pointed out that the word unconsciously in Chapter 1 needed to be changed to subconsciously. Chris McAloon sent in several corrections to Sections 3.9 and Matthew J. Moelter has been a long-time contributor who sent in numerous corrections and suggestions to the book.

7 vii Simon Dicon Montford reported a missing function definition and several typos in Chapter 3. He also found errors in the increment function in Chapter 13. John Ouzts corrected the definition of return value in Chapter 3. Kevin Parks sent in valuable comments and suggestions as to how to improve the distribution of the book. David Pool sent in a typo in the glossary of Chapter 1, as well as kind words of encouragement. Michael Schmitt sent in a correction to the chapter on files and exceptions. Robin Shaw pointed out an error in Section 13.1, where the printtime function was used in an example without being defined. Paul Sleigh found an error in Chapter 7 and a bug in Jonah Cohen s Perl script that generates HTML from LaTeX. Craig T. Snydal is testing the text in a course at Drew University. He has contributed several valuable suggestions and corrections. Ian Thomas and his students are using the text in a programming course. They are the first ones to test the chapters in the latter half of the book, and they have made numerous corrections and suggestions. Keith Verheyden sent in a correction in Chapter 3. Peter Winstanley let us know about a longstanding error in our Latin in Chapter 3. Chris Wrobel made corrections to the code in the chapter on file I/O and exceptions. Moshe Zadka has made invaluable contributions to this project. In addition to writing the first draft of the chapter on Dictionaries, he provided continual guidance in the early stages of the book. Christoph Zwerschke sent several corrections and pedagogic suggestions, and explained the difference between gleich and selbe. James Mayer sent us a whole slew of spelling and typographical errors, including two in the contributor list. Hayden McAfee caught a potentially confusing inconsistency between two examples. Angel Arnal is part of an international team of translators working on the Spanish version of the text. He has also found several errors in the English version. Tauhidul Hoque and Lex Berezhny created the illustrations in Chapter 1 and improved many of the other illustrations. Dr. Michele Alzetta caught an error in Chapter 8 and sent some interesting pedagogic comments and suggestions about Fibonacci and Old Maid. Andy Mitchell caught a typo in Chapter 1 and a broken example in Chapter 2. Kalin Harvey suggested a clarification in Chapter 7 and caught some typos. Christopher P. Smith caught several typos and helped us update the book for Python 2.2. David Hutchins caught a typo in the Foreword. Gregor Lingl is teaching Python at a high school in Vienna, Austria. He is working on a German translation of the book, and he caught a couple of bad errors in Chapter 5. Julie Peters caught a typo in the Preface. Florin Oprina sent in an improvement in maketime, a correction in printtime, and a nice typo. D. J. Webre suggested a clarification in Chapter 3. Ken found a fistful of errors in Chapters 8, 9 and 11. Ivo Wever caught a typo in Chapter 5 and suggested a clarification in Chapter 3.

8 viii ΠΡΟΛΟΓΟΣ Curtis Yanko suggested a clarification in Chapter 2. Ben Logan sent in a number of typos and problems with translating the book into HTML. Jason Armstrong saw the missing word in Chapter 2. Louis Cordier noticed a spot in Chapter 16 where the code didn t match the text. Brian Cain suggested several clarifications in Chapters 2 and 3. Rob Black sent in a passel of corrections, including some changes for Python 2.2. Jean-Philippe Rey at Ecole Centrale Paris sent a number of patches, including some updates for Python 2.2 and other thoughtful improvements. Jason Mader at George Washington University made a number of useful suggestions and corrections. Jan Gundtofte-Bruun reminded us that a error is an error. Abel David and Alexis Dinno reminded us that the plural of matrix is matrices, not matrixes. This error was in the book for years, but two readers with the same initials reported it on the same day. Weird. Charles Thayer encouraged us to get rid of the semi-colons we had put at the ends of some statements and to clean up our use of argument and parameter. Roger Sperberg pointed out a twisted piece of logic in Chapter 3. Sam Bull pointed out a confusing paragraph in Chapter 2. Andrew Cheung pointed out two instances of use before def. C. Corey Capel spotted the missing word in the Third Theorem of Debugging and a typo in Chapter 4. Alessandra helped clear up some Turtle confusion. Wim Champagne found a brain-o in a dictionary example. Douglas Wright pointed out a problem with floor division in arc. Jared Spindor found some jetsam at the end of a sentence. Lin Peiheng sent a number of very helpful suggestions. Ray Hagtvedt sent in two errors and a not-quite-error. Torsten Hübsch pointed out an inconsistency in Swampy. Inga Petuhhov corrected an example in Chapter 14. Arne Babenhauserheide sent several helpful corrections. Mark E. Casida is is good at spotting repeated words. Scott Tyler filled in a that was missing. And then sent in a heap of corrections. Gordon Shephard sent in several corrections, all in separate s. Andrew Turner spotted an error in Chapter 8. Adam Hobart fixed a problem with floor division in arc. Daryl Hammond and Sarah Zimmerman pointed out that I served up math.pi too early. And Zim spotted a typo. George Sass found a bug in a Debugging section. Brian Bingham suggested Exercise Leah Engelbert-Fenton pointed out that I used tuple as a variable name, contrary to my own advice. And then found a bunch of typos and a use before def. Joe Funke spotted a typo. Chao-chao Chen found an inconsistency in the Fibonacci example.

9 ix Jeff Paine knows the difference between space and spam. Lubos Pintes sent in a typo. Gregg Lind and Abigail Heithoff suggested Exercise Max Hailperin has sent in a number of corrections and suggestions. Max is one of the authors of the extraordinary Concrete Abstractions, which you might want to read when you are done with this book. Chotipat Pornavalai found an error in an error message. Stanislaw Antol sent a list of very helpful suggestions. Eric Pashman sent a number of corrections for Chapters Miguel Azevedo found some typos. Jianhua Liu sent in a long list of corrections. Nick King found a missing word. Martin Zuther sent a long list of suggestions. Adam Zimmerman found an inconsistency in my instance of an instance and several other errors. Ratnakar Tiwari suggested a footnote explaining degenerate triangles. Anurag Goel suggested another solution for is_abecedarian and sent some additional corrections. And he knows how to spell Jane Austen. Kelli Kratzer spotted one of the typos. Mark Griffiths pointed out a confusing example in Chapter 3. Roydan Ongie found an error in my Newton s method. Patryk Wolowiec helped me with a problem in the HTML version. Mark Chonofsky told me about a new keyword in Python 3. Russell Coleman helped me with my geometry. Wei Huang spotted several typographical errors. Karen Barber spotted the the oldest typo in the book. Nam Nguyen found a typo and pointed out that I used the Decorator pattern but didn t mention it by name. Stéphane Morin sent in several corrections and suggestions. Paul Stoop corrected a typo in uses_only. Eric Bronner pointed out a confusion in the discussion of the order of operations. Alexandros Gezerlis set a new standard for the number and quality of suggestions he submitted. We are deeply grateful! Gray Thomas knows his right from his left. Giovanni Escobar Sosa sent a long list of corrections and suggestions. Alix Etienne fixed one of the URLs. Kuang He found a typo. Daniel Neilson corrected an error about the order of operations. Will McGinnis pointed out that polyline was defined differently in two places. Swarup Sahoo spotted a missing semi-colon. Frank Hecker pointed out an exercise that was under-specified, and some broken links. Animesh B helped me clean up a confusing example.

10 x ΠΡΟΛΟΓΟΣ Martin Caspersen found two round-off errors. Gregor Ulm sent several corrections and suggestions. Dimitrios Tsirigkas suggested I clarify an exercise. Carlos Tafur sent a page of corrections and suggestions. Martin Nordsletten found a bug in an exercise solution. Lars O.D. Christensen found a broken reference. Victor Simeone found a typo. Sven Hoexter pointed out that a variable named input shadows a build-in function. Viet Le found a typo. Stephen Gregory pointed out the problem with cmp in Python 3. Matthew Shultz let me know about a broken link. Lokesh Kumar Makani let me know about some broken links and some changes in error messages. Ishwar Bhat corrected my statement of Fermat s last theorem.

11 Περιεχόμενα Πρόλογος v 1 Ο τρόπος του προγράμματος Η γλώσσα προγραμματισμού Python Τι είναι ένα πρόγραμμα Τι είναι η αποσφαλμάτωση; Συντακτικά λάθη Λάθη χρόνου εκτέλεσης Λογικά λάθη Πειραματική αποσφαλμάτωση Επίσημες και τυπικές γλώσσες Το πρώτο πρόγραμμα Αποσφαλμάτωση Ορολογία Ασκήσεις Μεταβλητές, εκφράσεις και δηλώσεις Τιμές και τύποι Μεταβλητές Ονόματα μεταβλητών και λέξεις κλειδιά Τελεστές και τελεστέοι Εκφράσεις και δηλώσεις Διαδραστική λειτουργία και λειτουργία σεναρίων Η σειρά των πράξεων Πράξεις συμβολοσειρών Σχόλια Αποσφαλμάτωση Ορολογία Ασκήσεις Συναρτήσεις Κλήσεις συναρτήσεων Συναρτήσεις μετατροπής τύπων Μαθηματικές Συναρτήσεις Σύνθεση Προσθέτοντας νέες συναρτήσεις Ορισμοί και χρήσεις Ροή εκτέλεσης Παράμετροι και ορίσματα xi

12 xii ΠΕΡΙΕΧΟΜΕΝΑ 3.9 Οι μεταβλητές και οι παράμετροι είναι τοπικές Διαγράμματα στοίβας Γόνιμες και κενές συναρτήσεις Γιατί συναρτήσεις Εισαγωγή από μονάδα λογισμικού με from Αποσφαλμάτωση Ορολογία Ασκήσεις Μελέτη περίπτωσης: σχεδίαση διεπαφής TurtleWorld Απλή επανάληψη Ασκήσεις Ενθυλάκωση Γενίκευση Σχεδίαση διεπαφής Ανακατασκευή κώδικα Πλάνο ανάπτυξης Συμβολοσειρά τεκμηρίωσης Αποσφαλμάτωση Ορολογία Ασκήσεις Δηλώσεις υπό συνθήκη και αναδρομή Τελεστής υπολογισμού υπολοίπου ακέραιας διαίρεσης Λογικές εκφράσεις Λογικοί τελεστές Εκτέλεση υπό συνθήκη Εναλλακτική εκτέλεση Αλυσιδωτές συνθήκες Εμφωλευμένες συνθήκες Αναδρομή Διαγράμματα στοίβας για αναδρομικές συναρτήσεις Άπειρη αναδρομή Είσοδος από το πληκτρολόγιο Αποσφαλμάτωση Ορολογία Ασκήσεις Γόνιμες Συναρτήσεις Επιστρεφόμενες τιμές Σταδιακή ανάπτυξη Σύνθεση Λογικές συναρτήσεις Περισσότερη αναδρομή Άλμα πίστης Ένα ακόμα παράδειγμα Έλεγχος τύπων Αποσφαλμάτωση Ορολογία Ασκήσεις

13 ΠΕΡΙΕΧΟΜΕΝΑ xiii 7 Επανάληψη Πολλαπλή εκχώρηση Ενημέρωση μεταβλητών Η δήλωση while Η δήλωση break Τετραγωνικές ρίζες Αλγόριθμοι Αποσφαλμάτωση Ορολογία Ασκήσεις Συμβολοσειρές Μία συμβολοσειρά είναι μία ακολουθία Η δήλωση len Διάσχιση με for Τεμάχια συμβολοσειράς Οι συμβολοσειρές είναι αμετάβλητες Αναζήτηση Επανάληψη και καταμέτρηση Μέθοδοι συμβολοσειρών Τελεστής in Σύγκριση συμβολοσειρών Αποσφαλμάτωση Ορολογία Ασκήσεις Μελέτη περίπτωσης: λογοπαίγνια Διαβάζοντας λίστες λέξεων Ασκήσεις Αναζήτηση Βρόγχοι επανάληψης με δείκτες Αποσφαλμάτωση Ορολογία Ασκήσεις Λίστες Μια συμβολοσειρά είναι μία ακολουθία Οι λίστες είναι ευμετάβλητες Διασχίζοντας μία λίστα Πράξεις συμβολοσειρών Λίστες και τεμάχια Μέθοδοι λιστών Map, filter και reduce Διαγραφή στοιχείων Λίστες και συμβολοσειρές Αντικείμενα και τιμές Ψευδώνυμα Ορίσματα λίστας Αποσφαλμάτωση Ορολογία Ασκήσεις

14 xiv ΠΕΡΙΕΧΟΜΕΝΑ 11 Λεξικά Το λεξικό ως ένα σύνολο από μετρητές Λεξικά και βρόχοι Αντίστροφη αναζήτηση Λεξικά και λίστες Σημείωμα Καθολικές μεταβλητές Ακέραιοι μεγάλου μήκους Αποσφαλμάτωση Ορολογία Ασκήσεις Πλειάδες Οι πλειάδες είναι αμετάβλητες Εκχώρηση πλειάδων Οι πλειάδες σαν επιστρεφόμενες τιμές Οι πλειάδες σαν ορίσματα μεταβλητού μήκους Λίστες και πλειάδες Λεξικά και πλειάδες Συγκρίνοντας πλειάδες Ακολουθίες ακολουθιών Αποσφαλμάτωση Ορολογία Ασκήσεις Μελέτη περίπτωσης: επιλογή δομής δεδομένων Ανάλυση συχνότητας λέξεων Τυχαίοι αριθμοί Ιστόγραμμα λέξεων Οι πιο συνηθέστερες λέξεις Προαιρετικές παράμετροι Αφαίρεση λεξικών Τυχαίες λέξεις Ανάλυση Μαρκόφ Δομές δεδομένων Αποσφαλμάτωση Ορολογία Ασκήσεις Αρχεία Διάρκεια Διάβασμα και γράψιμο Τελεστής διαμόρφωσης Ονόματα αρχείων και διαδρομές Πιάσιμο εξαιρέσεων Βάσεις δεδομένων Σειριοποίηση Σωληνώσεις Γράψιμο αρθρωμάτων Αποσφαλμάτωση Ορολογία

15 ΠΕΡΙΕΧΟΜΕΝΑ xv 14.12Ασκήσεις Κλάσεις και αντικείμενα Τύποι ορισμένοι από το χρήστη Ιδιότητες Ορθογώνια παραλληλόγραμμα Τα στιγμιότυπα σαν επιστρεφόμενες τιμές Τα αντικείμενα είναι μεταβλητά Αντιγραφή Αποσφαλμάτωση Ορολογία Ασκήσεις Κλάσεις και συναρτήσεις Ώρα Αγνές συναρτήσεις Συναρτήσεις τροποποίησης Πρωτοτυποποίηση εναντίον σχεδιασμού Αποσφαλμάτωση Ορολογία Ασκήσεις Κλάσεις και μέθοδοι Αντικειμενοστραφή χαρακτηριστικά Εκτύπωση αντικειμένων Ένα ακόμη παράδειγμα Ένα πιο σύνθετο παράδειγμα Η μέθοδος init Η μέθοδος str Υπερφόρτωση τελεστών Αποστολή βάση τύπου Πολυμορφισμός Αποσφαλμάτωση Διεπαφή και υλοποίηση Ορολογία Ασκήσεις Κληρονομικότητα Αντικείμενα τραπουλόχαρτων Ιδιότητες κλάσεων Συγκρίνοντας τραπουλόχαρτα Τράπουλες Τύπωση τράπουλας Προσθήκη, αφαίρεση, ανακάτεμα και ταξινόμηση Κληρονομικότητα Διαγράμματα κλάσεων Αποσφαλμάτωση Ενθυλάκωση δεδομένων Ορολογία Ασκήσεις Tkinter 201

16 xvi ΠΕΡΙΕΧΟΜΕΝΑ 19.1 Γραφική διασύνδεση χρήστη Κουμπιά και επιστροφές κλήσεων Γραφικά στοιχεία Καμβά Ακολουθίες συντεταγμένων Περισσότερα γραφικά στοιχεία Πακετάρισμα γραφικών στοιχείων Μενού και αντικείμενα με δυνατότητα κλήσης Δεσμοί Αποσφαλμάτωση Ορολογία Ασκήσεις Αʹ Αποσφαλμάτωση 215 Αʹ.1 Συντακτικά λάθη Αʹ.1.1 Συνεχίζω να κάνω αλλαγές αλλά δεν υπάρχει διαφορά Αʹ.2 Λάθη χρόνου εκτέλεσης Αʹ.2.1 Το πρόγραμμά μου δεν κάνει απολύτως τίποτα Αʹ.2.2 Το πρόγραμμά μου κρεμάει Αʹ.2.3 Παίρνω μία εξαίρεση όταν τρέχω το πρόγραμμα Αʹ.2.4 Πρόσθεσα πολλές δηλώσεις print και πελάγωσα με την έξοδο Αʹ.3 Σημασιολογικά λάθη Αʹ.3.1 Το πρόγραμμά μου δεν δουλεύει Αʹ.3.2 Έχω μία μεγάλη έκφραση η οποία δεν κάνει αυτό που θα περίμενα Αʹ.3.3 Έχω μία μέθοδο ή μία συνάρτηση η οποία δεν επιστρέφει αυτό που θα περίμενα Αʹ.3.4 Έχω κολλήσει πραγματικά και χρειάζομαι βοήθεια Αʹ.3.5 Όχι, χρειάζομαι πραγματικά βοήθεια Βʹ Ανάλυση Αλγορίθμων 225 Βʹ.1 Τάξη αύξησης Βʹ.2 Ανάλυση των βασικών πράξεων της γλώσσας Βʹ.3 Ανάλυση των αλγόριθμων αναζήτησης Βʹ.4 Πίνακες κατακερματισμού Γʹ Lumpy 235 Γʹ.1 Διάγραμμα κατάστασης Γʹ.2 Διάγραμμα στοίβας Γʹ.3 Διαγράμματα αντικειμένων Γʹ.4 Αντικείμενα συναρτήσεων και κλάσεων Γʹ.5 Διαγράμματα Κλάσεων

17 Κεφάλαιο 1 Ο τρόπος του προγράμματος Στόχος αυτού του βιβλίου είναι να σας διδάξει πώς να σκέφτεστε σαν επιστήμονες της πληροφορικής. Αυτός ο τρόπος σκέψης συνδυάζει κάποια από τα καλύτερα χαρακτηριστικά των μαθηματικών, της μηχανικής και της φυσικής επιστήμης. Όπως οι μαθηματικοί, έτσι και οι επιστήμονες της πληροφορικής χρησιμοποιούν τυπικές γλώσσες (formal) για να υποδηλώσουν ιδέες (και ειδικότερα υπολογισμούς). Όπως οι μηχανικοί, σχεδιάζουν πράγματα, συνθέτουν επιμέρους μέρη σε συστήματα και αξιολογούν τις συμβιβαστικές λύσεις σε σχέση με τις εναλλακτικές. Όπως οι επιστήμονες, παρατηρούν την συμπεριφορά πολύπλοκων συστημάτων, διαμορφώνουν τις υποθέσεις, και εξετάζουν τις προβλέψεις. Η πιο σημαντική ικανότητα για έναν επιστήμονα της πληροφορικής είναι η επίλυση προβλημάτων. Επίλυση προβλημάτων είναι η δυνατότητα να διατυπώνεις προβλήματα, να σκέφτεσαι δημιουργικά όσον αφορά τις λύσεις και να εκφράζεις μια λύση με σαφήνεια και ακρίβεια. Όπως προκύπτει, η διαδικασία του να μαθαίνεις να προγραμματίζεις είναι μία εξαιρετική ευκαιρία για να εξασκήσεις τις ικανότητές σου πάνω στην επίλυση προβλημάτων. Γι αυτό το λόγο αυτό το κεφάλαιο ονομάζεται, Ο τρόπος του προγράμματος. Ως ένα βαθμό, θα μάθετε να προγραμματίζετε, η οποία είναι μία χρήσιμη δεξιότητα από μόνη της. Ως έναν άλλο βαθμό, θα χρησιμοποιήσετε τον προγραμματισμό ως μέσο για ένα τέλος. Όσο προχωράμε, αυτό το τέλος θα γίνεται πιο ξεκάθαρο. 1.1 Η γλώσσα προγραμματισμού Python Η γλώσσα προγραμματισμού που θα μάθετε είναι η Python. Η Python είναι ένα παράδειγμα γλώσσας υψηλού επιπέδου. Άλλες γλώσσες υψηλού επιπέδου που ενδεχομένως να έχετε ακούσει είναι η C, η C++, η Perl και η Java. Επίσης υπάρχουν και γλώσσες χαμηλού επιπέδου, οι οποίες μερικές φορές αναφέρονται και ως γλώσσες μηχανής ή συμβολικές γλώσσες. Μιλώντας γενικά, οι υπολογιστές μπορούν να τρέξουν μόνο προγράμματα τα οποία είναι γραμμένα σε γλώσσες χαμηλού επιπέδου. Έτσι, προγράμματα τα οποία είναι γραμμένα σε μία γλώσσα υψηλού επιπέδου πρέπει πρώτα να επεξεργαστούν για να μπορούν να τρέξουν. Αυτή η επιπλέον επεξεργασία παίρνει κάποιο χρόνο, το οποίο είναι ένα μικρό μειονέκτημα των γλωσσών υψηλού επιπέδου. Τα πλεονεκτήματα είναι τεράστια. Πρώτον, είναι πολύ ευκολότερο να προγραμματίζεις σε μία γλώσσα υψηλού επιπέδου. Προγράμματα γραμμένα σε μία γλώσσα υψηλού επιπέδου χρειάζονται λιγότερο 1

18 2 ΚΕΦΑΛΑΙΟ 1. Ο ΤΡΟΠΟΣ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ SOURCE CODE INTERPRETER OUTPUT Σχήμα 1.1: Ένας διερμηνέας επεξεργάζεται το πρόγραμμα κομμάτι κομμάτι ή αλλιώς διαβάζει γραμμές και εκτελεί υπολογισμούς. SOURCE CODE COMPILER OBJECT CODE EXECUTOR OUTPUT Σχήμα 1.2: Ένας μεταγλωττιστής μετατρέπει τον πηγαίο κώδικα σε αντικειμενικό κώδικα, ο οποίος τρέχει από έναν εκτελεστή υλικού. χρόνο για να γραφτούν, είναι μικρότερα και διαβάζονται ευκολότερα, και είναι πιο πιθανό να είναι σωστά. Δεύτερον, οι γλώσσες υψηλού επιπέδου είναι φορητές, που σημαίνει ότι μπορούν να τρέξουν σε διαφορετικά είδη υπολογιστών με μερικές ή καθόλου τροποποιήσεις. Προγράμματα χαμηλού επιπέδου μπορούν να τρέξουν μόνο σε ένα είδος υπολογιστή και πρέπει να ξαναγραφτούν για να τρέξουν σε κάποιον άλλο. Λόγω αυτών των πλεονεκτημάτων, σχεδόν όλα τα προγράμματα γράφονται σε γλώσσες υψηλού επιπέδου. Οι γλώσσες χαμηλού επιπέδου χρησιμοποιούνται μόνο σε μερικές εξειδικευμένες εφαρμογές. Δύο είδη προγραμμάτων μετατρέπουν μία γλώσσα υψηλού επιπέδου σε μία γλώσσα χαμηλού επιπέδου: οι διερμηνείς (interpreters) και οι μεταγλωττιστές (compilers). Ένας διερμηνέας διαβάζει ένα πρόγραμμα υψηλού επιπέδου και το εκτελεί, αυτό σημαίνει ότι κάνει ό,τι λέει το πρόγραμμα. Επεξεργάζεται το πρόγραμμα κομμάτι κομμάτι, αλλιώς διαβάζει γραμμές και εκτελεί υπολογισμούς. Εικόνα 1.1 δείχνει τη δομή ενός διερμηνέα. Ένας μεταγλωττιστής διαβάζει το πρόγραμμα και το μεταφράζει ολόκληρο πριν ξεκινήσει να τρέχει το πρόγραμμα. Σε αυτό το πλαίσιο, το πρόγραμμα υψηλού επιπέδου ονομάζεται πηγαίος κώδικας (source code), και το μεταφρασμένο πρόγραμμα ονομάζεται αντικειμενικός κώδικας (object code) ή εκτελέσιμο (executable). Όταν ένα πρόγραμμα μεταγλωττιστεί, μπορείτε να το εκτελέσετε επανειλημμένα χωρίς περαιτέρω μετάφραση. Εικόνα 1.2 δείχνει τη δομή ενός μεταγλωττιστή. Η Python θεωρείτε μία διερμηνευμένη γλώσσα επειδή τα προγράμματά της εκτελούνται από έναν διερμηνέα. Υπάρχουν δύο τρόποι χρήσης του διερμηνέα: διαδραστική λειτουργία (interactive mode) και σεναριακή λειτουργία (script mode). Στην διαδραστική λειτουργία, πληκτρολογούμε προγράμματα σε Python και ο διερμηνέας εμφανίζει το αποτέλεσμα: >>> Το σύμβολο, >>>, είναι ο προτροπέας (prompt) που χρησιμοποιεί ο διερμηνέας για να υποδείξει ότι είναι έτοιμος. Αν πληκτρολογήσετε 1 + 1, ο διερμηνέας απαντάει 2. Εναλλακτικά, μπορείτε να αποθηκεύσετε κώδικα σε ένα φάκελο και να χρησιμοποιήσετε το διερμη-

19 1.2. ΤΙ ΕΙΝΑΙ ΕΝΑ ΠΡΟΓΡΑΜΜΑ 3 νέα για να εκτελέσει τα περιεχόμενα του φακέλου, το οποίο ονομάζεται ένα σενάριο (script). Κατά παράδοση, τα σενάρια της Python έχουν ονόματα τα οποία έχουν κατάληξη.py. Για να εκτελεστεί το σενάριο, πρέπει να πείτε στο διερμηνέα το όνομα του φακέλου. Εάν έχετε ένα σενάριο με όνομα dinsdale.py και δουλεύετε σε ένα παράθυρο εντολών UNIX, πληκτρολογείτε python dinsdale.py. Σε άλλα περιβάλλοντα ανάπτυξης, οι λεπτομέρειες εκτέλεσης των σεναρίων είναι διαφορετικές. Μπορείτε να βρείτε οδηγίες για το περιβάλλον σας στην ιστοσελίδα της Python Όταν δουλεύετε στην διαδραστική λειτουργία σας βοηθάει να εξετάζετε μικρά κομμάτια κώδικα επειδή μπορείτε να τα πληκτρολογήσετε και να εκτελεστούν άμεσα. Αλλά για κάτι παραπάνω από λίγες γραμμές, θα πρέπει να αποθηκεύσετε τον κώδικά σας σαν σενάριο ώστε να μπορείτε να τον τροποποιήσετε και να το εκτελέσετε στο μέλλον. 1.2 Τι είναι ένα πρόγραμμα Ένα πρόγραμμα είναι μία ακολουθία εντολών η οποία προσδιορίζει πως θα εκτελεστεί ένας υπολογισμός. Αυτός ο υπολογισμός μπορεί να είναι κάτι μαθηματικό, όπως το να λύνεις ένα σύστημα εξισώσεων ή το να βρίσκεις τις ρίζες ενός πολυωνύμου, αλλά επίσης μπορεί να είναι ένας συμβολικός υπολογισμός, όπως το να ψάχνεις και να αντικαθιστάς κείμενο μέσα σε ένα έγγραφο ή (περιέργως) να μεταγλωττίζεις ένα πρόγραμμα. Οι λεπτομέρειες είναι διαφορετικές σε κάθε γλώσσα, αλλά μερικές βασικές εντολές εμφανίζονται σχεδόν σε κάθε γλώσσα: είσοδος: Εισάγονται δεδομένα από το πληκτρολόγιο, ένα αρχείο, ή οποιαδήποτε άλλη συσκευή. έξοδος: Εμφανίζονται δεδομένα στην οθόνη ή στέλνονται σε κάποιο αρχείο ή συσκευή. μαθηματικά: Εκτελούνται βασικές μαθηματικές πράξεις όπως πρόσθεση και πολλαπλασιασμός. εκτέλεση υπό συνθήκη: Ελέγχονται συγκεκριμένες συνθήκες και εκτελείται ο κατάλληλος κώδικας. επανάληψη: Εκτελείται κάποια ενέργεια κατ επανάληψη, με κάποια παραλλαγή. Είτε το πιστεύετε είτε όχι, λίγο πολύ αυτό είναι όλο. Κάθε πρόγραμμα που έχετε χρησιμοποιήσει, ανεξάρτητα από το πόσο περίπλοκο ήταν, απαρτίζεται από εντολές που μοιάζουν λίγο πολύ όπως αυτές. Έτσι μπορείτε να φανταστείτε τον προγραμματισμό σαν μία διαδικασία κατά την οποία σπάμε μία μεγάλη και πολύπλοκη εργασία σε όλο και μικρότερες υποδιεργασίες μέχρις ότου οι υποδιεργασίες να είναι αρκετά απλές για να εκτελεστούν με μία από αυτές τις βασικές εντολές. Αυτό μπορεί να είναι λίγο ασαφές, αλλά θα επανέλθουμε σε αυτό το θέμα όταν θα μιλήσουμε για αλγόριθμους. 1.3 Τι είναι η αποσφαλμάτωση; Ο προγραμματισμός είναι επιρρεπής σε λάθη. Για ανεξήγητους λόγους, τα λάθη στον προγραμματισμό ονομάζονται στα αγγλικά bugs ενώ στα ελληνικά σφάλματα και η διαδικασία εντοπισμού τους ονομάζεται debugging ή αποσφαλμάτωση στα ελληνικά. Τρία είδη λαθών μπορεί να συμβούν σε ένα πρόγραμμα: συντακτικά λάθη, λάθη χρόνου εκτέλεσης και λογικά λάθη. Είναι χρήσιμο να γίνει διάκριση μεταξύ τους προκειμένου να εντοπίζονται γρηγορότερα.

20 4 ΚΕΦΑΛΑΙΟ 1. Ο ΤΡΟΠΟΣ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ Συντακτικά λάθη Η Python μπορεί να εκτελέσει ένα πρόγραμμα μόνο εάν έχει σωστή σύνταξη, διαφορετικά ο διερμηνέας εμφανίζει μήνυμα λάθους. Η σύνταξη αφορά τη δομή ενός προγράμματος και τους κανόνες αυτής της δομής. Για παράδειγμα, οι παρενθέσεις πρέπει να είναι πάντα ζεύγη, έτσι το (1 + 2) είναι σωστό, αλλά το 8) είναι ένα συντακτικό λάθος (syntax error). Στα Αγγλικά οι αναγνώστες δέχονται τα περισσότερα συντακτικά λάθη, για αυτό μπορούμε να διαβάζουμε την ποίηση του e. e. cummings χωρίς να αραδιάζουμε μηνύματα λάθους. Η Python δεν είναι τόσο επιεικής. Εάν υπάρχει έστω και ένα συντακτικό λάθος οπουδήποτε μέσα στο πρόγραμμα, η Python θα εμφανίσει ένα μήνυμα λάθους και θα σταματήσει, και δεν θα μπορείτε να τρέξετε το πρόγραμμα. Κατά τη διάρκεια των πρώτων εβδομάδων της προγραμματιστικής σας καριέρας, πιθανότατα θα ξοδέψετε πολύ χρόνο στον εντοπισμό συντακτικών λαθών. Όσο αποκτάτε εμπειρία θα κάνετε λιγότερα λάθη και θα τα εντοπίζετε γρηγορότερα Λάθη χρόνου εκτέλεσης Ο δεύτερος τύπος λάθους είναι τα λάθη χρόνου εκτέλεσης (runtime errors), ονομάζονται έτσι επειδή τα λάθη δεν εμφανίζονται μέχρις ότου αρχίσει το πρόγραμμα να τρέχει. Αυτά τα λάθη ονομάζονται επίσης εξαιρέσεις (exceptions) επειδή συνήθως υποδεικνύουν ότι κάτι σημαντικό (και κακό) έχει συμβεί. Τα λάθη χρόνου εκτέλεσης είναι σπάνια στα απλά προγράμματα που θα δείτε στα πρώτα κεφάλαια, έτσι ίσως πάρει λίγο χρόνο μέχρι να συναντήσετε ένα Λογικά λάθη Ο τρίτος τύπος λάθους είναι τα λογικά λάθη (semantic errors). Εάν υπάρχει ένα λογικό λάθος στο πρόγραμμά σας θα τρέξει επιτυχώς από την άποψη ότι ο υπολογιστής δεν θα παράξει κανένα μήνυμα λάθους, αλλά δεν θα κάνει το σωστό. Θα κάνει κάτι διαφορετικό. Συγκεκριμένα, θα κάνει αυτό που του είπατε να κάνει. Το πρόβλημα είναι ότι το πρόγραμμα που γράψατε δεν είναι το πρόγραμμα που θέλατε να γράψετε. Το νόημα του προγράμματος (η σημασιολογία του) είναι λάθος. Η αναγνώριση λογικών λαθών μπορεί να είναι δύσκολη γιατί απαιτεί να δουλέψετε προς τα πίσω κοιτάζοντας την έξοδο του προγράμματος προσπαθώντας να καταλάβετε τι συμβαίνει Πειραματική αποσφαλμάτωση Μία από τις πιο σημαντικές ικανότητες που θα αποκτήσετε είναι η αποσφαλμάτωση. Παρόλο που μπορεί να είναι μια επίπονη διαδικασία, η αποσφαλμάτωση είναι ένα από τα πιο πνευματικώς πλούσια, προκλητικά και ενδιαφέροντα μέρη του προγραμματισμού. Υπό μία έννοια, η αποσφαλμάτωση είναι σαν την δουλειά του ντετέκτιβ. Έρχεστε αντιμέτωποι με ενδείξεις, και πρέπει να συμπεράνετε από ποιες διαδικασίες και συμβάντα προκύπτουν τα αποτελέσματα που βλέπετε. Η αποσφαλμάτωση μοιάζει επίσης σαν μία πειραματική επιστήμη. Από τη στιγμή που έχετε μία ιδέα για το τι πηγαίνει λάθος, τροποποιείτε το πρόγραμμα και ξαναδοκιμάζετε. Εάν η υπόθεσή σας ήταν σωστή, τότε μπορείτε να προβλέψετε το αποτέλεσμα της τροποποίησης και να είστε ένα βήμα πιο κοντά σε ένα λειτουργικό πρόγραμμα. Εάν η υπόθεσή σας ήταν λανθασμένη, πρέπει να κάνετε μία νέα υπόθεση. Όπως έχει τονίσει ο Sherlock Holmes, Όταν έχετε αποκλείσει το αδύνατο, οτιδήποτε

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

ΚΕΦΑΛΑΙΟ 2. Τιμές, τύποι, μεταβλητές, λέξεις-κλειδιά, εντολές. 2.1 Εισαγωγή ΚΕΦΑΛΑΙΟ 2 Τιμές, τύποι, μεταβλητές, λέξεις-κλειδιά, εντολές Σύνοψη Το κεφάλαιο αυτό εισάγει τον αναγνώστη σε βασικές έννοιες που είναι χρήσιμες για την απόκτηση μιας πρώτης εμπειρίας με την Python. Προαπαιτούμενη

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

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

ΗΥ101: Εισαγωγή στην Πληροφορική Δρ. Χρήστος Ηλιούδης Τι είναι η ; Η διαδικασία του προγραμματισμού είναι μία πολύπλοκη διαδικασία που συχνά οδηγεί σε λάθη (πραγματοποιείται από ανθρώπους!!!). Τα προγραμματιστικά λάθη λέγονται bugs και

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

Θέματα Προγραμματισμού Η/Υ

Θέματα Προγραμματισμού Η/Υ Πρόγραμμα Μεταπτυχιακών Σπουδών Πληροφορική και Υπολογιστική Βιοϊατρική Θέματα Προγραμματισμού Η/Υ Ενότητα 4: Θεματική Ενότητα: Είσοδος/έξοδος, μεταβλητές, αναθέσεις ΘΕΜΑΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ Θεματική

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

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

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα για τη γλώσσα C: τον gcc μεταγλωττιστή της C σε περιβάλλον

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

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

ΚΕΦΑΛΑΙΟ 3. Εκφράσεις, τελεστές, σχόλια. 3.1 Εισαγωγή ΚΕΦΑΛΑΙΟ 3 Εκφράσεις, τελεστές, σχόλια Σύνοψη Στο κεφάλαιο αυτό εισάγουμε τον τρόπο τέλεσης πράξεων μεταξύ μεταβλητών και σταθερών, εκφράσεις μεταξύ αυτών καθώς και το σχολιασμό της λογικής ενός προγράμματος.

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

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

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

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

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Συναρτήσεις Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Συναρτήσεις Ως τώρα γράφαμε όλα τα προγράμματα μας μέσα στην main..1

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07 Αλγόριθμος: Βήμα προς βήμα διαδικασία για την επίλυση κάποιου προβλήματος. Το πλήθος των βημάτων πρέπει να είναι πεπερασμένο. Αλλιώς: Πεπερασμένη

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

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

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

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

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

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 2 η Τύποι Δεδομένων Δήλωση Μεταβλητών Έξοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα

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

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Έλεγχος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Σχεσιακοί Τελεστές και Ισότητας Ένα πρόγραμμα εκτός από αριθμητικές πράξεις

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

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

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5.1 Εισαγωγή στους αλγορίθμους 5.1.1 Εισαγωγή και ορισμοί Αλγόριθμος (algorithm) είναι ένα πεπερασμένο σύνολο εντολών οι οποίες εκτελούν κάποιο ιδιαίτερο έργο. Κάθε αλγόριθμος

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

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

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python Εισαγωγή στην Επιστήμη Υπολογιστών Εισαγωγή στην Python Python scripts Ένα πρόγραμμα στην Python (συχνά αποκαλείται script) αποτελείται από μία ακολουθία ορισμών και εντολών. H ακολουθία των ορισμών και

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

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

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

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

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική Ενότητα 2: Μεταβλητές και Σταθερές Νικόλαος Στεργιούλας Τμήμα Φυσικής Άδειες Χρήσης

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 2ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 ΣΦΑΛΜΑΤΑ ΜΕΤΑΓΛΩΤΤΙΣΗΣ Η γλώσσα C κάνει αυστηρή διάκριση μεταξύ πεζών

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

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

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Δρ. Κόννης Γιώργος Πανεπιστήμιο Κύπρου - Τμήμα Πληροφορικής Προγραμματισμός Στόχοι 1 Να περιγράψουμε τις έννοιες του Υπολογιστικού Προβλήματος και του Προγράμματος/Αλγορίθμου

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

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007 Οδηγίες: Να απαντηθούν όλες οι ερωτήσεις. Αν κάπου κάνετε κάποιες υποθέσεις να αναφερθούν στη σχετική ερώτηση. Όλα τα αρχεία που αναφέρονται στα προβλήματα βρίσκονται στον ίδιο φάκελο με το εκτελέσιμο

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

τις αναδρομικές ακολουθίες (recursive sequences) στις οποίες ορίζαμε

τις αναδρομικές ακολουθίες (recursive sequences) στις οποίες ορίζαμε Κεφάλαιο 9: Αναδρομή Ο τρόπος με τον οποίο σκεφτήκαμε και σχεδιάσαμε τις συναρτήσεις στο προηγούμενο κεφάλαιο ακολουθούσε τη φιλοσοφία του προγραμματισμού που είχαμε αναπτύξει σε όλο το προηγούμενο βιβλίο.

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

Θεωρία Προγραμματισμού

Θεωρία Προγραμματισμού Θεωρία Προγραμματισμού 1) Τι ονομάζουμε Αλγόριθμο; Ονομάζεται μια ακολουθία από πεπερασμένο αριθμό εντολών, που αν εκτελεστούν με ακρίβεια, οδηγούν στη πραγματοποίηση μιας εργασίας. 2) Τι ονομάζουμε ανάλυση

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

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

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ ΣΤΑΘΕΡΕΣ είναι τα μεγέθη που δεν μεταβάλλονται κατά την εκτέλεση ενός αλγόριθμου. Εκτός από τις αριθμητικές σταθερές (7, 4, 3.5, 100 κλπ), τις λογικές σταθερές (αληθής και ψευδής)

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

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

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων 2 Βασικές Εντολές 2.1. Εντολές Οι στην Java ακολουθούν το πρότυπο της γλώσσας C. Έτσι, κάθε εντολή που γράφουμε στη Java θα πρέπει να τελειώνει με το ερωτηματικό (;). Όπως και η C έτσι και η Java επιτρέπει

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

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 1 Εισαγωγή στη C Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Διαδικαστικά Ιστοσελίδα μαθήματος: http://eclass.uoa.gr/courses/f30/ Υποχρεωτική παρακολούθηση: Παρασκευή 14:00 16:00 στην

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

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1 ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μάθημα 1ο Τμήμα Διοίκησης Επιχειρήσεων α εξάμηνο Β. Φερεντίνος Ορισμός Wikipedia.org 2 Δομημένος προγραμματισμός (structured programming) ή διαδικαστικός προγραμματισμός (procedural

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

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος Κεφάλαιο 2.3: Προγραμματισμός 1 2.3.1 Αναφορά σε γλώσσες προγραμματισμού και «Προγραμματιστικά Υποδείγματα» 2.3.1.1 Πρόγραμμα και Γλώσσες Προγραμματισμού Πρόγραμμα: σύνολο εντολών που χρειάζεται να δοθούν

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

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

ΑΕΠΠ Ερωτήσεις θεωρίας ΑΕΠΠ Ερωτήσεις θεωρίας Κεφάλαιο 1 1. Τα δεδομένα μπορούν να παρέχουν πληροφορίες όταν υποβάλλονται σε 2. Το πρόβλημα μεγιστοποίησης των κερδών μιας επιχείρησης είναι πρόβλημα 3. Για την επίλυση ενός προβλήματος

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

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java Δρ. Απόστολος Γκάμας Λέκτορας (407/80) gkamas@uop.gr Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 1 Εισαγωγή

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

ιδάσκων: ηµήτρης Ζεϊναλιπούρ

ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 1.3-1.4: Εισαγωγή Στον Προγραµµατισµό ( ιάλεξη 2) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Περιεχόµενα Εισαγωγικές Έννοιες - Ορισµοί Ο κύκλος ανάπτυξης προγράµµατος Παραδείγµατα Πότε χρησιµοποιούµε υπολογιστή?

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

Εισαγωγή στη Fortran. Μάθημα 1 ο. Ελευθερία Λιούκα

Εισαγωγή στη Fortran. Μάθημα 1 ο. Ελευθερία Λιούκα Εισαγωγή στη Fortran Μάθημα 1 ο Ελευθερία Λιούκα liouka.eleftheria@gmail.com Περιεχόμενα Ιστορία της Fortran Βασικές γνώσεις Fortran Επιτρεπτοί χαρακτήρες Μορφή προγράμματος Τύποι μεταβλητών Πράξεις και

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

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

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΧΗΜΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΙΚΟ ΚΕΝΤΡΟ Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού Μάθημα 2ο Aντώνης Σπυρόπουλος v2_061015 Οροι που

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

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

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python Εισαγωγή στην Επιστήμη Υπολογιστών Εισαγωγή στην Python Β Μέρος Δομή Ελέγχου if-elif-else Επαναληπτική Δομή Ελέγχου while Επαναληπτική Δομή Ελέγχου for Αλληλεπίδραση χρήστη-προγράμματος Συναρτήσεις Η δομή

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

Γιάννης Σαμωνάκης. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP)

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

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

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

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

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

Κεφάλαιο 14: Συμβουλές προς έναν νέο προγραμματιστή

Κεφάλαιο 14: Συμβουλές προς έναν νέο προγραμματιστή Κεφάλαιο 14: Συμβουλές προς έναν νέο προγραμματιστή Φτάσαμε σιγά σιγά στο τέλος του βιβλίου. Αντί για κάποιον επίλογο σκέφτηκα να συλλέξω κάποια πράγματα που θα ήθελα να πω σε κάποιον ο οποίος αρχίζει

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΤΥΞΗ ΚΑΙ ΣΧΕΔΙΑΣΗ ΛΟΓΙΣΜΙΚΟΥ Η γλώσσα προγραμματισμού C ΕΡΓΑΣΤΗΡΙΟ 2: Εκφράσεις, πίνακες και βρόχοι 14 Απριλίου 2016 Το σημερινό εργαστήριο

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

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

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

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

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

ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΣΤΑΘΕΡΕΣ ΜΕΤΑΒΛΗΤΕΣ ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ Κεφαλαία και μικρά γράμματα ελληνικού αλφαβήτου: Α Ω και α ω Κεφαλαία και μικρά γράμματα λατινικού αλφαβήτου: A Z και a z Αριθμητικά ψηφία: 0 9 Ειδικοί χαρακτήρες: + - * / =. ( ),! & κενός

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

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

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

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

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

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

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

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής Εισαγωγή Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής Μεταγλωττιστής Αρχικό πρόγραμμα (source program) Μεταγλωττιστής Τελικό πρόγραμμα (object program) Διαγνωστικά μηνύματα Μεταγλωττιστής Παίρνει σαν

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

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

FORTRAN και Αντικειμενοστραφής Προγραμματισμός FORTRAN και Αντικειμενοστραφής Προγραμματισμός Παραδόσεις Μαθήματος 2016 Δρ Γ Παπαλάμπρου Επίκουρος Καθηγητής ΕΜΠ georgepapalambrou@lmentuagr Εργαστήριο Ναυτικής Μηχανολογίας (Κτίριο Λ) Σχολή Ναυπηγών

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ 2 ο ΣΕΤ ΑΣΚΗΣΕΩΝ Οι ασκήσεις αυτού του φυλλαδίου καλύπτουν τα παρακάτω θέματα: Συναρτήσεις (κεφάλαιο Functions)

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

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

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

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

Pascal, απλοί τύποι, τελεστές και εκφράσεις

Pascal, απλοί τύποι, τελεστές και εκφράσεις Pascal, απλοί τύποι, τελεστές και εκφράσεις 15 Νοεμβρίου 2011 1 Γενικά Στην standard Pascal ορίζονται τέσσερις βασικοί τύποι μεταβλητών: integer: Παριστάνει ακέραιους αριθμούς από το -32768 μέχρι και το

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

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

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

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

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος http://www.teiser.gr/icd/staff/lantzos lantzos@teiser.gr Κανόνες Ομαλής Λειτουργίας Ερχόμαστε στην ώρα μας Δεν καπνίζουμε και τρώμε εντός της αίθουσας

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

<<ΔΗΜΗΤΡΗΣ ΜΑΝΩΛΗΣ ΦΥΣΙΚΟΣ ΜCs>> 1

<<ΔΗΜΗΤΡΗΣ ΜΑΝΩΛΗΣ ΦΥΣΙΚΟΣ ΜCs>> 1 ΚΕΦΑΛΑΙΟ 7 ο ΠΡΟΓΡΑΜΜΑ : Το πρόγραμμα αποτελείται από μια σειρά οδηγιών, που ονομάζονται εντολές, για την εκτέλεση τέτοιου είδους πράξεων, καθώς επίσης και από ένα σύνολο πρόσθετων οδηγιών ελέγχου, που

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

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

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

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

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

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

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

Λειτουργικά. Συστήματα Ι. Φ ρ ο ν τ ι σ τ ή ρ ι ο. Αριστείδης Ηλίας. Εργαστήριο Ηλεκτρονικών Υπολογιστών

Λειτουργικά. Συστήματα Ι. Φ ρ ο ν τ ι σ τ ή ρ ι ο. Αριστείδης Ηλίας. Εργαστήριο Ηλεκτρονικών Υπολογιστών Λειτουργικά Αριστείδης Ηλίας Συστήματα Ι Φ ρ ο ν τ ι σ τ ή ρ ι ο Shell Scripting Εισαγωγή Ένα shell script είναι μια λίστα εντολών που εκτελούνται ακολουθιακά Εκτελούνται ανάλογα με το κέλυφος και για

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

Πληροφορική ΙΙ Θεματική Ενότητα 3

Πληροφορική ΙΙ Θεματική Ενότητα 3 Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Πληροφορική ΙΙ Θεματική Ενότητα 3 Είσοδος/έξοδος, μεταβλητές, αναθέσεις Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται

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

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

Δομημένος Προγραμματισμός Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Δομημένος Προγραμματισμός Ενότητα 1: Εισαγωγή Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά Το έργο

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

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

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

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

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης Η συνάρτηση printf() Η συνάρτηση printf() χρησιμοποιείται για την εμφάνιση δεδομένων στο αρχείο εξόδου stdout (standard output stream), το οποίο εξ ορισμού συνδέεται με την οθόνη Η συνάρτηση printf() δέχεται

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

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

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

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

Διάλεξη 2. Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις. Διοργάνωση : ΚΕΛ ΣΑΤΜ

Διάλεξη 2. Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις. Διοργάνωση : ΚΕΛ ΣΑΤΜ Διάλεξη 2 Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις Διοργάνωση : ΚΕΛ ΣΑΤΜ Διαφάνειες: Skaros, MadAGu Παρουσίαση: MadAGu Άδεια: Creative Commons 3.0 2 Internal

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

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου Εργαστήριο 2: Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η ανάλυση των βασικών χαρακτηριστικών της Γλώσσας Προγραμματισμού

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

ΚΥΠΡΙΑΚΟΣ ΣΥΝΔΕΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY 21 ος ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Δεύτερος Γύρος - 30 Μαρτίου 2011

ΚΥΠΡΙΑΚΟΣ ΣΥΝΔΕΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY 21 ος ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Δεύτερος Γύρος - 30 Μαρτίου 2011 Διάρκεια Διαγωνισμού: 3 ώρες Απαντήστε όλες τις ερωτήσεις Μέγιστο Βάρος (20 Μονάδες) Δίνεται ένα σύνολο από N σφαιρίδια τα οποία δεν έχουν όλα το ίδιο βάρος μεταξύ τους και ένα κουτί που αντέχει μέχρι

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

Διάλεξη 1. Πράξεις Τελεστές Έλεγχος Ροής

Διάλεξη 1. Πράξεις Τελεστές Έλεγχος Ροής Διάλεξη 1 Πράξεις Τελεστές Έλεγχος Ροής Διοργάνωση : ΚΕΛ ΣΑΤΜ Διαφάνειες: Skaros, MadAGu Παρουσίαση: MadAGu Άδεια: Creative Commons 3.0 Αριθμητικοί Τελεστές- Αριθμητικές Πράξεις 2 Internal use only Αριθμητικοί

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

Αλγόριθμοι Αναπαράσταση αλγορίθμων Η αναπαράσταση των αλγορίθμων μπορεί να πραγματοποιηθεί με:

Αλγόριθμοι Αναπαράσταση αλγορίθμων Η αναπαράσταση των αλγορίθμων μπορεί να πραγματοποιηθεί με: Αλγόριθμοι 2.2.1. Ορισμός: Αλγόριθμος είναι μια πεπερασμένη σειρά εντολών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο χρόνο, που στοχεύουν στην επίλυση ενός προβλήματος. Τα κυριότερα χρησιμοποιούμενα

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

Κεφάλαιο 12: Είσοδος και έξοδος δεδομένων σε αρχεία

Κεφάλαιο 12: Είσοδος και έξοδος δεδομένων σε αρχεία Κεφάλαιο 12: Είσοδος και έξοδος δεδομένων σε αρχεία Τα δεδομένα που επεξεργαζόμαστε, καθώς και ο κώδικας που τρέχουμε, βρίσκονται αποθηκευμένα στη μνήμη RAM (Random Access Memory) του υπολογιστή. Τα δεδομένα

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

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή Δημιουργία Νέου αρχείου Από το μενού προγραμμάτων ανοίγετε το DEV C++ Επιλέγετε File-> New-> Source File (συντόμευση πληκτρολογίου Ctrl+N)

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

Παραδείγματα Χρήσης του DrJava

Παραδείγματα Χρήσης του DrJava Παραδείγματα Χρήσης του DrJava Version 1.1 Επιμέλεια: Κόγιας Δημήτρης, Χαράλαμπος Πατρικάκης, Εργαστήριο Αντικειμενοστραφούς προγραμματισμού [1] Πίνακας Περιεχομένων Κεφάλαιο 1. Προγράμματα για εξάσκηση...

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Μεταφραστές Εισαγωγή Διδάσκων: Επικ. Καθ. Γεώργιος Μανής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

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

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

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

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

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 24/3/2007

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 24/3/2007 Οδηγίες: Να απαντηθούν όλες οι ερωτήσεις. Όλοι οι αριθμοί που αναφέρονται σε όλα τα ερωτήματα μικρότεροι του 10000 εκτός αν ορίζεται διαφορετικά στη διατύπωση του προβλήματος. Αν κάπου κάνετε κάποιες υποθέσεις

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

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα Διάλεξη 2η: Αλγόριθμοι και Προγράμματα Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα

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

Σημαντικές δυνατότητες των σύγχρονων υπολογιστικών μηχανών: Αξιόπιστη καταγραφή πολύ μεγάλου όγκου δεδομένων

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

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

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

Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά. AeppAcademy.com facebook.com/aeppacademy Γεια. Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά. Καλή Ανάγνωση & Καλή Επιτυχία

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

«Δουλεύω Ηλεκτρονικά, Δουλεύω Γρήγορα και με Ασφάλεια - by e-base.gr»

«Δουλεύω Ηλεκτρονικά, Δουλεύω Γρήγορα και με Ασφάλεια - by e-base.gr» Επεξήγηση web site με λογικό διάγραμμα «Δουλεύω Ηλεκτρονικά, Δουλεύω Γρήγορα και με Ασφάλεια - by e-base.gr» Web : www.e-base.gr E-mail : support@e-base.gr Facebook : Like Twitter : @ebasegr Πολλοί άνθρωποι

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

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

ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ. ΚΑΤΕΥΘΥΝΣΗ ΔΙΟΙΚΗΣΗΣ ΤΟΥΡΙΣΤΙΚΩΝ ΕΠΙΧΕΙΡΗΣΕΩΝ ΚΑΙ ΕΠΙΧΕΙΡΗΣΕΩΝ ΦΙΛΟΞΕΝΙΑΣ Πληροφορική I "Προγραμματισμός" B. Φερεντίνος

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

Κεφάλαιο 7 ο Βασικές Έννοιες Προγραμματισμού (σελ )

Κεφάλαιο 7 ο Βασικές Έννοιες Προγραμματισμού (σελ ) Κεφάλαιο 7 ο Βασικές Έννοιες Προγραμματισμού (σελ. 147 159) Για τις γλώσσες προγραμματισμού πρέπει να έχουμε υπόψη ότι: Κάθε γλώσσα προγραμματισμού σχεδιάζεται για συγκεκριμένο σκοπό, δίνοντας ιδιαίτερη

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

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

Κεφάλαιο 2: Τα πρώτα βήματα Κεφάλαιο 2: Τα πρώτα βήματα Και τώρα ας κάνουμε το πρώτο μας βήμα. Για εσάς, που νιώθετε ότι αυτό είναι πραγματικά το πρώτο βήμα στον προγραμματισμό, ίσως να είναι και το πιο σημαντικό. Θα δούμε πώς σκεφτόμαστε

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

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

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΚΕΦΑΛΑΙΟ 2 2.4 Βασικές συνιστώσες/εντολές ενός αλγορίθμου 2.4.1 Δομή ακολουθίας ΚΕΦΑΛΑΙΟ 7 7.1 7.9 Σταθερές (constants): Προκαθορισμένες τιμές που παραμένουν

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

3. Εκφράσεις και έλεγχος ροής

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

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

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 6/5/2006

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 6/5/2006 Οδηγίες: Να απαντηθούν όλες οι ερωτήσεις. Ολοι οι αριθμοί που αναφέρονται σε όλα τα ερωτήματα είναι μικρότεροι το 1000 εκτός αν ορίζεται διαφορετικά στη διατύπωση του προβλήματος. Διάρκεια: 3,5 ώρες Καλή

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων

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

Τυπικές χρήσεις της Matlab

Τυπικές χρήσεις της Matlab Matlab Μάθημα 1 Τι είναι η Matlab Ολοκληρωμένο Περιβάλλον Περιβάλλον ανάπτυξης Διερμηνευμένη γλώσσα Υψηλή επίδοση Ευρύτητα εφαρμογών Ευκολία διατύπωσης Cross platform (Wintel, Unix, Mac) Τυπικές χρήσεις

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

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

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

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

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ Σκοπός της Άσκησης Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η ανάλυση των βασικών χαρακτηριστικών της Γλώσσας

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 1ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 ΓΙΑΤΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ; Στα μαθηματικά και στη φυσική συχνά έχουμε

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

PERL. Δήμος Παύλου Δημήτρης Κουζαπάς

PERL. Δήμος Παύλου Δημήτρης Κουζαπάς PERL Δήμος Παύλου Δημήτρης Κουζαπάς Perl Η Perl είναι μια διερμηνευομένη δυναμική γλώσσα προγραμματισμού. Συνδυάζει χαρακτηριστικά από διάφορες γλώσσες. (C/C++, Awk, Lisp κλπ) Διαδόθηκε λόγω της μεγάλης

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

Mεταγλωττιστές. 4 ο εργαστηριακό μάθημα Λεξική ανάλυση και flex. Θεωρία

Mεταγλωττιστές. 4 ο εργαστηριακό μάθημα Λεξική ανάλυση και flex. Θεωρία Mεταγλωττιστές 4 ο εργαστηριακό μάθημα Λεξική ανάλυση και flex Σκοπός: Το μάθημα αυτό αναφέρεται: στις κανονικές εκφράσεις στην δομή και το περιεχόμενο του αρχείου-εισόδου του flex Γενικά Θεωρία Κατά την

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 Αριθμητική στο δυαδικό σύστημα (γενικά) Συμπληρωματικά για δυαδικό σύστημα Η πρόσθεση στηρίζεται στους κανόνες: 0 + 0 = 0, 0 + 1 = 1, 1

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

Πληροφορική 2. Αλγόριθμοι

Πληροφορική 2. Αλγόριθμοι Πληροφορική 2 Αλγόριθμοι 1 2 Τι είναι αλγόριθμος; Αλγόριθμος είναι ένα διατεταγμένο σύνολο από σαφή βήματα το οποίο παράγει κάποιο αποτέλεσμα και τερματίζεται σε πεπερασμένο χρόνο. Ο αλγόριθμος δέχεται

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

ΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor

ΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor ΕισαγωγήστουςΗ/Υ PHP Hypertext Preprocessor ΤιείναιηPHP; PHP είναιµία server-based scripting language σχεδιασµένη ειδικά για το web. Σε µία html σελίδα µπορούµε να ενσωµατώσουµε php κώδικα που εκτελείται

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II Strings Η κλάση String είναι προκαθορισμένη κλάση της Java που μας επιτρέπει να χειριζόμαστε αλφαριθμητικά. Ο τελεστής + μας επιτρέπει

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

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

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο) TEC610 (ΣΤ εξάμηνο) Διδάσκων: Ανδρέας Γιαννακουλόπουλος Εαρινό εξάμηνο Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά

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

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

FORTRAN και Αντικειμενοστραφής Προγραμματισμός FORTRAN και Αντικειμενοστραφής Προγραμματισμός Παραδόσεις Μαθήματος 2016 Δρ Γ Παπαλάμπρου Επίκουρος Καθηγητής ΕΜΠ georgepapalambrou@lmentuagr Εργαστήριο Ναυτικής Μηχανολογίας (Κτίριο Λ) Σχολή Ναυπηγών

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Καθηγητής Πληροφορικής ΠΕ19 1 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΚΕΦΑΛΑΙΟ 6 ο : ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΙΣΤΟΣΕΛΙΔΑ ΜΑΘΗΜΑΤΟΣ: http://eclass.sch.gr/courses/el594100/ Η έννοια του προγράμματος

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

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα; Εισαγωγή Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα; 1. Σελίδα μαθήματος Εγγραφή Ο κάθε φοιτητής πρέπει να κάνει εγγραφή στη σελίδα του μαθήματος στην πλατφόρμα e-class

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

PHP 1. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Δ. Ζήνδρος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

PHP 1. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Δ. Ζήνδρος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών PHP 1 Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Δ. Ζήνδρος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative

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

Προγραμματισμός με FORTRAN Συνοπτικός Οδηγός Α. Σπυρόπουλος Α. Μπουντουβής

Προγραμματισμός με FORTRAN Συνοπτικός Οδηγός Α. Σπυρόπουλος Α. Μπουντουβής ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΧΗΜΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΙΚΟ ΚΕΝΤΡΟ Προγραμματισμός με FORTRAN Συνοπτικός Οδηγός Α Σπυρόπουλος Α Μπουντουβής Αθήνα, 2015 v13_061015 Στον οδηγό αυτό θα χρησιμοποιηθούν

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. Στέφανος Ουγιάρογλου

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

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

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό 6.1 Η έννοια του προγράμματος Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει, τρία σημαντικά στάδια: 1. Τον ακριβή προσδιορισμό του προβλήματος. 2. Την ανάπτυξη

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

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Πίνακες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Πίνακες Πολλές φορές θέλουμε να κρατήσουμε στην μνήμη πολλά αντικείμενα

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

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

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις 2 Ανατομία ενός προγράμματος

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

Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής

Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής Να γραφεί πρόγραμμα το οποίο δέχεται ως είσοδο μια ακολουθία S από n (n 40) ακέραιους αριθμούς και επιστρέφει ως έξοδο δύο ακολουθίες από θετικούς ακέραιους

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

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

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις Γαβαλάς Δαμιανός

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

Η Απάντηση. Φύλλο Εργασίας. Μηνύματα

Η Απάντηση. Φύλλο Εργασίας. Μηνύματα Η Απάντηση Φύλλο Εργασίας Στο βιβλίο The Hitchhiker s Guide to the Galaxy, περιγράφεται μια υπερευφυής φυλή η οποία αποφασίζει να φτιάξει έναν υπολογιστή που θα δώσει οριστικά την απάντηση για το νόημα

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