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

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

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

Transcript

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

2 ΤΙΤΛΟΣ: Σύγκριση απόδοσης αλγορίθμων λειτουργίας ανελκυστήρα. ΚΩΔΙΚΟΣ: 09159ΕΣ ΗΜΕΡΟΜΗΝΙΑ ΕΓΚΡΙΣΗΣ: 17/2/2009 ΗΜΕΡΟΜΗΝΙΑ ΑΝΑΛΗΨΗΣ: 3/3/2009 ΗΜΕΡΟΜΗΝΙΑ ΠΕΡΑΤΩΣΗΣ: 10/9/2009 ΣΤΟΙΧΕΙΑ ΦΟΙΤΗΤΗ Γεώργιος Μινόπουλος ΚΑΣ: ΣΤΟΙΧΕΙΑ ΕΠΙΒΛΕΠΟΝΤΑ Δρ Αναστασία Παπαστεργίου Επιστημονική Συνεργάτης, Τμήμα Ηλεκτρονικής, ΣΤΕΦ, ΑΤΕΙΘ Διδάκτωρ Τμήματος Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών, Πολυτεχνείο, Δ.Π.Θ. Τηλέφωνο: ,

3 ΠΕΡΙΕΧΟΜΕΝΑ ΠΕΡΙΛΗΨΗ/ABSTRACT..4 ΕΙΣΑΓΩΓΗ.5 ΚΕΦΑΛΑΙΟ 1 Ο 1.1 Ιστορική αναδρομή ανελκυστήρα Γλώσσες Προγραμματισμού Κατηγοριοποίηση γλωσσών προγραμματισμού Εξέλιξη γλώσσας C..10 ΚΕΦΑΛΑΙΟ 2 Ο 2.1 Αλγόριθμοι Σπουδαιότητα αλγορίθμων Κριτήρια αλγορίθμων...14 ΚΕΦΑΛΑΙΟ 3 Ο 3.1 Αλγόριθμος First In First Out Αλγόριθμος Shortest Path First Αλγόριθμος Scan..17 ΚΕΦΑΛΑΙΟ 4 Ο 4.1 Υλοποίηση FIFO Υλοποίηση SPF Υλοποίηση Scan Σύγκριση των αλγορίθμων Στατιστική ανάλυση αποδόσεων..40 ΚΕΦΑΛΑΙΟ 5 Ο 5.1 Συμπεράσματα Ανάπτυξη εφαρμογής...43 ΒΙΒΛΙΟΓΡΑΦΙΑ

4 ΠΕΡΙΛΗΨΗ Το θέμα αυτής της εργασίας είναι η σύγκριση απόδοσης αλγορίθμων για λειτουργία ανελκυστήρα. Στην εισαγωγή αναφέρομαι στους λόγους για τους οποίους ασχολήθηκα με αυτό το θέμα και στη χρηστική αξία των αλγορίθμων στην καθημερινότητα μας. Στο πρώτο κεφάλαιο κάνω μια ιστορική αναδρομή γύρω από τη λειτουργία του ανελκυστήρα, εξηγώ την έννοια των γλωσσών του προγραμματισμού, προβαίνω σε μια κατηγοριοποίηση αυτών και αναλύω την εξέλιξη της γλώσσας C. Στο δεύτερο κεφάλαιο κάνω μια λεπτομερή εισαγωγή στον κόσμο των αλγορίθμων, γράφω για την σπουδαιότητα τους και τα κριτήρια διαλογής τους. Το τρίτο κεφάλαιο παρουσιάζει και εξηγεί τους αλγορίθμους First In First Out, Shortest Path First και Scan. Στο επόμενο κεφάλαιο αναπτύσσω τον αντίστοιχο κώδικα και τα διαγράμματα ροής για τον κάθε αλγόριθμο με τη σειρά που παρουσιάστηκαν στο προηγούμενο κεφάλαιο. Επίσης γίνεται μια σύγκριση των αποδόσεων τους και ανάλυση των αποτελεσμάτων τους. Στο τελευταίο κεφάλαιο αναλύω τα συμπεράσματα που προκύπτουν από την έρευνα που διενεργήθηκε και παρουσιάζω την εφαρμογή που ανέπτυξα. ABSTRACT The subject of this work is the comparison of attribution of algorithms for operation of lift. In the introduction I am reported in the reasons for which I dealt with this subject and in the utilitarian value of algorithms in our everyday routine. In the first chapter I make a historical retrospection round the operation of lift, I explain the significance of programming languages, Ι proceed in a categorisation of these and Ι analyze the development of language C. In the second chapter I make a detail introduction in the world of algorithms, I write for their importance and their selection criteria. The third chapter presents and explains the algorithms First In First Out, Shortest Path First and Scan. In the next chapter I develop the corresponding code and the flowcharts for each algorithm as they were presented in the previous chapter. Also I do a comparison of their outputs and an analysis of their results. In the last chapter I analyze the conclusions that result from the research that was held and I present the application that I developed. 4

5 ΕΙΣΑΓΩΓΗ Ο περισσότερος κόσμος σήμερα αγνοεί τη σημασία των αλγορίθμων στη καθημερινότητα μας και ίσως ακόμα να αγνοεί την ίδια την ύπαρξη αυτού του όρου, παρόλο που διάφορες καθημερινές πράξεις αποτελούν μέρος κάποιου αλγόριθμου. Οι αλγόριθμοι μπορεί όντως να απασχολούν κυρίως τους ανθρώπους του κλάδου του προγραμματισμού, βρίσκουν όμως εφαρμογή σε πολλές χρήσιμες λειτουργίες εύκολα προσβάσιμες σε όλους μας, όπως αυτή του ανελκυστήρα. Ο λόγος για τον οποίο διάλεξα να ασχοληθώ με τους αλγόριθμους στην εργασία αυτή ήταν για να παρουσιάσω τους διαφορετικούς τρόπους με τους οποίους ο κάθε αλγόριθμος μπορεί να επηρεάσει τη λειτουργία του ανελκυστήρα. Ανάλογα με την απαίτηση που έχουμε κάνουμε χρήση και διαφορετικού αλγόριθμου. Στη προσπάθεια μου αυτή ασχολήθηκα με τρείς από τους πλέον δημοφιλής αλγόριθμους. Τον αλγόριθμο FIFO, ο οποίος χρησιμοποιείται κυρίως στα ασανσέρ διώροφων πολυκατοικιών. Τον αλγόριθμο SPF, που βρίσκει χρηστικότητα ιδιαίτερα σε νοσοκομειακά ασανσέρ και τον αλγόριθμο Scan, ίσως ο πιο διαδεδομένος αλγόριθμος στη λειτουργία του ανελκυστήρα, μιας και χρησιμοποιείται σε πολυώροφες πολυκατοικίες, σε ξενοδοχειακές μονάδες ακόμα και σε ουρανοξύστες. Στόχος της εργασίας είναι να εντοπίσω ποιος από αυτούς τους τρείς αλγόριθμους θέτει τον ανελκυστήρα σε κίνηση με τέτοιο τρόπο, ώστε αυτός να εξυπηρετεί όλους τους χρήστες το συντομότερο δυνατόν. Στο τελευταίο κεφάλαιο με τίτλο «Συμπεράσματα» καταλήγω στο ποιος από τους τρείς αλγόριθμους αποδεικνύεται αποτελεσματικότερος των υπολοίπων. 5

6 ΚΕΦΑΛΑΙΟ 1 Ο 1.1 Ιστορική αναδρομή ανελκυστήρα Ήταν αρχές του έτους 1853 όταν ο Αμερικανός μηχανικός Ελίσα Γκρέιβις Ότις (Elisha Graves Otis) τελειοποίησε την κατασκευή ενός ανελκυστήρα για να μεταφέρει ανθρώπους. Περιλάμβανε μια ασφαλιστική διάταξη αρπάγης που σφηνωνόταν στους οδηγούς, επάνω στους οποίους κινούνταν το όχημα, μόλις έπαυε να ασκείται δύναμη στο σχοινί ανύψωσης. Έπειτα από τέσσερα χρόνια τέθηκε και επίσημα σε λειτουργία ο πρώτος ανελκυστήρας σε πολυκατάστημα της Νέας Υόρκης. Μέσω μιας ατμομηχανής, η οποία χρησιμοποιούσε ως καύσιμο το κάρβουνο ανέβαινε σε ύψος πέντε ορόφων σε χρονικό διάστημα λιγότερο του ενός λεπτού. Από τότε κι έπειτα άρχισε η ραγδαία εξέλιξη τους και η μαζική χρήση τους. Αυτό δε σημαίνει ότι δεν έχουμε συναντήσει πρότυπα ανελκυστήρα και στην αρχαιότητα για διάφορες χρήσεις. Οι αρχαίοι Αιγύπτιοι ήδη από το 2700 π.χ. είχαν την ανάγκη να ανυψώνουν τεράστιες πέτρες για την κατασκευή πυραμίδων - ναών και εκμεταλλευόμενοι την θεωρία του επικλινούς επιπέδου κατορθώνουν με τεράστιες τσουλήθρες να μετακινούν σιγά σιγά προς τα πάνω αυτούς τους τεράστιους όγκους. Η αρχή της χρήσης μηχανών για ανύψωση φορτίων φαίνεται να γίνεται από το 236 π.χ. όπως αναφέρει ο ρωμαίος αρχιτέκτονας Βιτρούκιος, όπου υπήρχαν τέτοιου είδους συστήματα στα βασιλικά ανάκτορα, που κινούνταν με τη μυϊκή δύναμη ανθρώπων ή ζώων. Στο Μεσαίωνα παρατηρούμε μια 6

7 απλή μορφή τους από σχοινιά με γάντζο στην άκρη και ένα καλάθι. Αυτής της μορφής ήταν και οι πρώτοι ανελκυστήρες στην Ελλάδα και συγκεκριμένα στα Μετέωρα με τους οποίους μεταφέρονταν άνθρωποι και εμπορεύματα. Τα πρώτα αυτά μέσα μεταφοράς είχαν ένα σοβαρό πρόβλημα. Αν τυχόν έσπαγε το σχοινί, οι μεταφερόμενοι έπεφταν χωρίς καμιά πιθανότητα σωτηρίας και τα εμπορεύματα δεν είχαν καμιά πιθανότητα να φθάσουν στον προορισμό τους. Έπειτα στη Γαλλία το 17 ο αιώνα εφευρέθηκε ένα σύστημα με χρησιμοποίηση αντίβαρου για να ανεβοκατεβαίνει και λίγο αργότερα στην Αγγλία στις αρχές του 18 ου αιώνα κατασκευάστηκαν οι πρώτοι υδραυλικοί ανελκυστήρες. Στη δική μας εποχή μιας και έχουμε την πολυτέλεια του ηλεκτρικού ρεύματος χρησιμοποιούμε μηχανικούς ανελκυστήρες που μας δίνουν την ευελιξία να τροποποιούμε την λειτουργία τους όπως ακριβώς μας βολεύει. Γι αυτό και συναντάμε ασανσέρ σχεδόν σε όλα τα κτίρια των πόλεων, όπως τα σπίτια μας, τα νοσοκομεία, τα εργοστάσια αλλά ακόμα και σε υπερωκεάνια, σε εξέδρες εκτόξευσης πυραύλων και φυσικά στους ουρανοξύστες. Γίνεται εύκολα κατανοητό ότι σε κάθε κτήριο απαιτούνται και διαφορετικές ανάγκες λειτουργίας. Με κύρια χαρακτηριστικά την ταχύτητα μετακινήσεως του ανελκυστήρα, αλλά και τον τρόπο εκτελέσεως των κλήσεων που δέχεται ανά τους ορόφους. Κάπου εδώ μπαίνει λοιπόν και η αναγκαιότητα του προγραμματισμού. Έχοντας αναπτύξει σε μεγάλο βαθμό τις προγραμματιστικές μας δυνατότητες με την ύπαρξη των πολλών γλωσσών που αυτός διαθέτει μπορούμε να κάνουμε τους ανελκυστήρες απόλυτα λειτουργικούς σε κάθε περίπτωση. Η ανάπτυξη μιας σειράς αλγορίθμων είναι απαραίτητη για να διαπιστώσουμε πότε ο ανελκυστήρας πληροί τις προϋποθέσεις που έχουμε θέση για την αρτιότερη εξυπηρέτηση μας. 7

8 1.2 Γλώσσες προγραμματισμού Για τον περισσότερο κόσμο το ασανσέρ είναι απλά ένας μικρός θάλαμος όπου πατώντας ένα κουμπί μας μεταφέρει κατακόρυφα προς στον όροφο που θέλουμε. Αναμφισβήτητα μια πολλή σημαντική ανακάλυψη που δουλεύει τόσο εύκολα κρύβει από πίσω μια σειρά τεχνογνωσίας για την σωστή λειτουργία του. Πέντε δισεκατομμύρια χιλιόμετρα είναι η απόσταση που διανύουν κάθε χρόνο οι 750 χιλιάδες ανελκυστήρες σε πολυκατοικίες, ξενοδοχεία και ουρανοξύστες των Ηνωμένων Πολιτειών. Από αυτό και μόνο μπορούμε να καταλάβουμε πόσο απαραίτητοι έχουν γίνει στην καθημερινότητα μας. Το «μυστικό» που δίνει κίνηση στον ανελκυστήρα είναι ο τρόπος με τον οποίο θα τον προγραμματίσουμε. Από τη στιγμή που δέχεται τόσες πολλές εντολές επί καθημερινής βάσης γίνεται κατανοητό ότι πρέπει να γίνει μια πολλή προσεχτική κατασκευή κώδικα για την ορθή εκπλήρωση αυτών των εντολών. Ως γλώσσα προγραμματισμού λέγεται μια τεχνητή γλώσσα που μπορεί να χρησιμοποιηθεί για τον έλεγχο μιας μηχανής. Οι γλώσσες προγραμματισμού ορίζονται από ένα σύνολο συντακτικών και εννοιολογικών κανόνων, που ορίζουν τη δομή και το νόημα, αντίστοιχα, των προτάσεων της γλώσσας και αυτό είναι που αποκαλείται ως κώδικας του προγραμματισμού. Υπάρχουν χιλιάδες γλώσσες προγραμματισμού και όπως είναι φυσικό όλες διαφέρουν μεταξύ τους στο σύνολο τυπικών προδιαγραφών ή κανόνων που αφορούν το συντακτικό, το λεξιλόγιο και το νόημα της. Κάθε γλώσσα λοιπόν δημιουργείται για να εξυπηρετήσει διαφορετικούς σκοπούς ή για να γίνει ακόμα πιο λειτουργική και εύχρηστη σε σχέση με κάποια άλλη προγενέστερη, συνδυάζοντας τα θετικά στοιχεία αυτής μαζί με την προσθήκη νέων. Μερικές από τις γνωστότερες γλώσσες προγραμματισμού είναι οι: Pascal, Assembly, Visual Basic, C++, Mat lab, Lisp, Haskell και Java. 8

9 1.3 Κατηγοριοποίηση γλωσσών προγραμματισμού Η κατηγοριοποίηση όλων αυτών των γλωσσών προγραμματισμού δεν είναι ένα εύκολο εγχείρημα, γι αυτό και υπάρχουν διάφορες περιπτώσεις κατηγοριοποίησης. Ο πλέον διαδεδομένος είναι με βάση τον τρόπο οργάνωσης του προγράμματος. Σ αυτήν την περίπτωση προκύπτουν τρεις κατηγορίες. Διαδικαστικές γλώσσες (procedural) όπου το πρόγραμμα είναι οργανωμένο σε διαδικασίες, που αποτελούνται από σειρές εντολών που περιγράφουν αλγορίθμους. Αντικειμενοστρεφείς γλώσσες (object-oriented) όπου το πρόγραμμα είναι οργανωμένο σε αντικείμενα. Ένα αντικείμενο είναι μια μονάδα που αποτελείται από την περιγραφή κάποιων δεδομένων και την περιγραφή των αλγορίθμων που τα επεξεργάζονται. Ένα αντικειμενοστρεφές πρόγραμμα αποτελείται από διάφορα αντικείμενα που αλληλεπιδρούν μεταξύ τους. Συναρτησιακές γλώσσες (functional) όπου οι υπολογισμοί εκφράζονται ως εφαρμογές μαθηματικών συναρτήσεων, σε αντίθεση με τα άλλα είδη προγραμματισμού όπου οι υπολογισμοί εκφράζονται ως σειρές εντολών, όπου η κάθε μία αλλάζει με κάποιο τρόπο την κατάσταση του συστήματος. Στην πρώτη κατηγορία ανήκει και η γλώσσα προγραμματισμού C με την οποία θα ασχοληθούμε ως επί των πλείστων. 9

10 1.4 Εξέλιξη γλώσσας C Όπως προείπαμε η C είναι μια γενικής χρήσης διαδικαστική γλώσσα προγραμματισμού η οποία αναπτύχτηκε στις αρχές της δεκαετίας από τον Dennis Richie. Από τότε χρησιμοποιείται ευρύτατα, και ιδιαίτερα για ανάπτυξη προγραμμάτων συστήματος, αλλά και για απλές εφαρμογές. Ο κυρίως λόγος της ραγδαίας ανάπτυξης της συγκεκριμένης γλώσσας προγραμματισμού είναι η ταχύτητα της. Αρχικά η C αναπτύχθηκε στα AT&T Bell Labs ανάμεσα στο 1969 και το Ονομάστηκε "C" λόγω του ότι πολλά από τα χαρακτηριστικά της προήλθαν από μια παλαιότερη γλώσσα, η οποία ονομαζόταν "B". Μέχρι το 1973 η C είχε γίνει αρκετά ισχυρή και αποτελεσματική, ώστε το μεγαλύτερο μέρος του πυρήνα του UNIX, γραμμένο αρχικά σε PDP-11/20 assembly, επανεγγράφηκε σε C. Ήταν ένας από τους πρώτους πυρήνες που υλοποιήθηκε σε μια γλώσσα διαφορετική της assembly. Από εκείνο το σημείο και μετά άρχισε να αυξάνεται όλο και περισσότερο η χρήση της συγκεκριμένης γλώσσας προγραμματισμού για διάφορους σκοπούς κι έτσι το 1978, ο Dennis Ritchie και ο Brian Kernighan δημοσίευσαν την πρώτη έκδοση του "The C Programming Language". Το συγκεκριμένο βιβλίο χρησίμευσε πολλά χρόνια ως ένας ανεπίσημος ορισμός της γλώσσας. 10

11 ΚΕΦΑΛΑ ΙΟ 2 Ο 2.1 Αλγόριθμοι Η λέξη αλγόριθμος προέρχεται από τον Πέρση μαθηματικό του 8 ου αιώνα μ.χ. Αλ Χουαρίζμι (Muhammad ibn Musa Αl-Khwarizmi), ο οποίος έγραψε συστηματικές τυποποιημένες λύσεις αλγεβρικών προβλημάτων σε διάφορα συγγράμματά του. Όλες οι τυποποιημένες οδηγίες άρχιζαν με την φράση «ο αλγόριθμος λέει...», έτσι η λέξη αλγόριθμος καθιερώθηκε αργά τα επόμενα χίλια χρόνια με την έννοια «συστηματική διαδικασία αριθμητικών χειρισμών». Αναφέραμε ότι οι διαδικαστικές γλώσσες προγραμματισμού όπως η C αποτελούνται από σειρές εντολών που περιγράφουν αλγορίθμους. Τι είναι όμως ένας αλγόριθμος; Ως αλγόριθμος ορίζεται μια πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμω ν σε πεπερασμένο χρόνο, που στοχεύουν στη ν επίλυση ενός προβλήματος. Ένας από τους παλαιότερους αλγορίθμους, μεγάλης σπουδαιότητας μάλιστα, μας έγινε γνωστός από το έργο του Ευκλείδη «Στοιχεία» και συγκεκριμένα στο έβδομο από τα δεκατρία βιβλία που περιέχει, είναι ο λεγόμενος αλγόριθμος του Ευκλείδη με τον οποίο βρίσκουμε τον μέγιστο κοινό διαιρέτη δύο ακέραιων αριθμών. Οι αλγόριθμοι μπορούν να υλοποιηθούν από προγράμματα ηλεκτρονικών υπολογιστών. Ένα λάθος στον σχεδιασμό ενός αλγόριθμου για την λύση ενός προβλήματος μπορεί να οδηγήσει σε αποτυχίες/βλάβες στο εφαρμοσμένο πρόγραμμα. Για οποιαδήποτε υπολογιστική διαδικασία, ο αλγόριθμος πρέπει να είναι αυστηρά ορισμένος για όλες τις πιθανές περιστάσεις που θα μπορούσαν να προκύψουν. Δηλαδή οποιαδήποτε υπό όρους βήματα πρέπει να εξεταστούν συστηματικά, και σε κάθε περίπτωση τα κριτήρια πρέπει να είναι σαφή. 11

12 Οι αλγόριθμοι είναι σημαντικοί γιατί σχετίζονται άμεσα με τον τρόπο τον οποίο οι υπολογιστές επεξεργάζονται πληροφορίες. Ένα πρόγραμμα υπολογιστών είναι ουσιαστικά ένας αλγόριθμος που λέει στον υπολογιστή ποια συγκεκριμένα βήματα να εκτελέσει προκειμένου να επιτευχθεί ένας συγκεκριμένος στόχος. Κατά συνέπεια, ένας αλγόριθμος μπορεί να θεωρηθεί οποιαδήποτε ακολουθία εντολών που μπορεί να εκτελεσθεί από ένα πλήρες σύστημα. Χαρακτηριστικά, όταν ένας αλγόριθμος συνδέεται με την επεξεργασία πληροφοριών, τα δεδομένα διαβάζονται από μια συσκευή εισόδου, γράφονται σε μια συσκευή εξόδου, και αποθηκεύονται για την περαιτέρω χρήση. Τα αποθηκευμένα στοιχεία θεωρούνται ως τμήμα της εσωτερικής κατάστασης του συστήματος που εκτελεί τον αλγόριθμο. 12

13 2.2 Σπουδαιότητα αλγορίθμων Έχει γίνει κατανοητό ότι ο αλγόριθμος αποσκοπεί στην επίλυση ενός προβλήματος. Έτσι είναι απαρ αίτητο να γίνεται μια καλή ανάλυση του κάθε προβλήματος και να προτείνεται συγκεκριμένη μεθοδολογία και ακολουθία βημάτων. Βασικός στόχος μας είναι η πρόταση έξυπνων και αποδοτικών λύσεων. Γι αυτό προκύπτει ότι για την ανάλυση ενός προβλήματος σε ένα σύγχρονο υπολογιστικό περιβάλλον περιλαμβάνεται η καταγραφή της υπάρχουσας πληροφορίας για το πρόβλημα, η αναγνώριση των ιδιαιτεροτήτων του προβλήματος, η αποτύπωση των συνθηκών και προϋποθέσεων υλοποίησης του, η πρόταση επίλυσης του με χρήση κάποιας μεθόδου και η τελική επίλυση με χρήση υπολογιστικών συστημάτων. Όποτε κατά την ανάλυση ενός προβλήματος θα πρέπει να δοθεί απάντηση σε κάθε μια από τις πέντε κρίσιμες ερωτήσεις: 1. Ποια είναι τα δεδομένα του προβλήματος. 2. Ποιες είναι οι συνθήκες που πρέπει να πληρούνται για την επίλυση του προβλήματος. 3. Ποια είναι η πλέον αποδοτική μέθοδος επίλυσης τους. 4. Πως θα καταγραφεί η λύση σε ένα πρόβλημα. 5. Ποιος είναι ο τρόπος υλοποίησης στο συγκεκριμένο υπολογιστικό σύστημα. 13

14 2.3 Κριτήρια αλγορίθμων Οι αλγόριθμοι θα πρέπει να πληρούν κάποια πρότυπα και να διατυπώνονται με συγκεκριμένο τρόπο. Έτσι κάθε αλγόριθμος πρέπει απαραίτητα να ικανοποιεί τα επόμενα κριτήρια: Είσοδοι. Καμία, μία ή και περισσότερες τιμές δεδομένων πρέπει να δίνονται ως είσοδοι στον αλγόριθμο. Η περίπτωση που δεν δίνονται τιμές δεδομένων εμφανίζεται όταν ο αλγόριθμος δημιουργεί και επεξεργάζεται κάποιες πρωτογενείς τιμές με τη βοήθεια των συναρτήσεων παραγωγής τυχαίων αριθμών, ή με την βοήθεια άλλων απλών εντολών. Έξοδος. Ο αλγόριθμος πρέπει να δημιουργεί τουλάχιστον μία τιμή δεδομένων ως αποτέλεσμα προς το χρήστη ή προς έναν άλλο αλγόριθμο. Καθοριστικότητα. Κάθε εντολή πρέπει να καθορίζεται χωρίς καμία αμφιβολία για τον τρόπο εκτέλεσης της. Λόγου χάριν, μία εντολή διαίρεσης πρέπει να θεωρεί και την περίπτωση, όπου ο διαιρέτης λαμβάνει τη μηδενική τιμή. Περατότητα. Ο αλγόριθμος να τελειώνει μετά από πεπερασμένα βήματα εκτέλεσης των εντολών του. Μία διαδικασία που δεν τελειώνει μετά από ένα συγκεκριμένο αριθμό βημάτων δεν αποτελεί αλγόριθμο, αλλά λέγεται απλά υπολογιστική διαδικασία. Αποτελεσματικότητα. Κάθε μεμονωμένη εντολή του αλγορίθμου να είναι απλή. Αυτό σημαίνει ότι μια εντολή δεν αρκεί να έχει ορισθεί, αλλά πρέπει να είναι και εκτελέσιμη. 14

15 ΚΕΦΑΛΑΙΟ 3 Ο 3.1 Αλγόριθμος First In First Out Ένας από τους γνωστότερους και πλέον διαδεδομένους αλγόριθμους στην επιστήμη των υπολογιστών και όχι μόνο είναι γνωστός με την ονομασία FIFO (First In First Out). Η ονομασία του και μόνο μας δίνει μια πρώτη εικόνα για τον τρόπο με τον οποίο λειτούργει αυτός ο αλγόριθμος. Το κύριο νόημα λειτουργίας του είναι να εξυπηρετεί της αιτήσεις που δέχεται με τη σειρά που αυτές συνέβησαν. Αναλυτικότερα, όλες οι αιτήσεις μπαίνουν σε μία «ουρά». Η ουρά (queue) είναι ένα συγκεκριμένο είδος συλλογής, στην οποία τα στοιχεία της συλλογής είναι διατεταγμένα και οι πρωτεύουσες πράξεις είναι η εισαγωγή στοιχείων στην πίσω θέση και η διαγραφή στοιχείων από την μπροστά θέση. Στη διαδικασία FIFO λοιπόν, το πρώτο στοιχείο που εισάγεται στην ουρά θα είναι και το πρώτο που θα αφαιρεθεί. Αυτό είναι ισοδύναμο με την απαίτηση ότι, όταν ένα στοιχείο εισάγεται, όλα τα στοιχεία που είχαν εισαχθεί νωρίτερα πρέπει να διαγραφούν πριν το νέο στοιχείο καλεστεί. Ένα χαρακτηριστικό της ουράς είναι ότι δεν έχει συγκεκριμένο μέγεθος. Ασχέτως από το πόσα στοιχεία περιέχονται ήδη, ένα νέο στοιχείο μπορεί πάντα να εισαχθεί. Μπορεί επίσης να είναι άδεια. Σ' αυτό το σημείο, για να διαγραφεί ένα στοιχείο θα είναι αδύνατον μέχρι να εισαχθεί ένα νέο στην ουρά. Ένα αντιπροσωπευτικό παράδειγμα FIFO είναι οι ουρές των ταμείων μιας τράπεζας. Το πρόσωπο στην αρχή της ουράς είναι το πρώτο που θα φύγει, ενώ στο τέλος της ουράς είναι αυτό που θα φύγει τελευταίο. Κάθε φορά που το πρόσωπο τελειώνει την δουλειά του, εκείνο εγκαταλείπει την ουρά από μπροστά. 15

16 3.2 Αλγόριθμος Shortest Path First Εκ πρώτης όψεως ένας πιο εξελιγμένος αλγόριθμος, για τον καθορισμό της κίνησης του ανελκυστήρα και την εξυπηρέτηση των αιτήσεων, από τον προηγούμενο θεωρείται αυτός που θα ασχοληθούμε τώρα. Ονομάζεται Shortest Path First (SPF) και η βασική του έννοια είναι, ο ανελκυστήρας να εξυπηρετεί πρώτα την αίτηση που βρίσκεται πιο κοντά στον τρέχοντα όροφο. Να κάνει, δηλαδή, κάθε φορά την μικρότερη διαδρομή. Αυτός ο τρόπος είναι μια άμεση βελτίωση του αλγόριθμου FIFO. Ο αλγόριθμος SPF καθορίζει ποια αίτηση βρίσκεται ποιο κοντά στην τρέχουσα θέση του ανελκυστήρα και μόλις την εξυπηρετήσει, αντίστοιχα, βρίσκει την επόμενη κοντινότερη αίτηση από τη νέα θέσ η όπου βρίσ κεται και συνεχίζει κατ αυτόν τον τρόπο. Ο SPF έχει το άμεσο όφελος της απλότητας και θεωρητικά είναι επωφελέστερος σε σύγκριση με τον FIFO, στο ότι η συνολική κίνηση του ανελκυστήρα είναι μειωμένη. Κάτι τέτοιο φέρει ως αποτέλεσμα χαμηλότερο μέσο όρο χρόνου εξυπηρέτησης. Ωστόσο, με δεδομένο ότι θα υπάρχουν σίγουρα νέες αιτήσεις, αυτές μπορούν να ζημιώσουν τον χρόνο εξυπηρέτησης αν βρίσκονται σε κοντινή απόσταση από την τρέχουσα θέση του ανελκυστήρα, γιατί θα εκκρεμούν για μεγάλο χρονικό διάστημα πρότερες αιτήσεις οι οποίες βρίσκονται σε μακρινότερες αποστάσεις. Έτσι λοιπόν με τις μακρινές αιτήσεις να εκκρεμούν αυτός ο αλγόριθμος δε θα είναι σε θέση να σημειώσει πρόοδο. 16

17 3.3 Αλγόριθμος Scan Ένας ακόμα αλγόριθμος με τον οποίο θα ασχοληθούμε είναι αυτός της σάρωσης (Scan). Είναι χαρακτηριστικό ότι τον συγκεκριμένο αλγόριθμο τον συναντάμε συχνά και με την ονομασία Elevator Algorithm, γιατί είναι ο πλέον διαδεδομένος για την λειτουργία του ανελκυστήρα. Πιο συγκεκριμένα ο ανελκυστήρας εξυπηρετεί πρώτα όλες τις αιτήσεις προς τη μία κατεύθυνση (για παράδειγμα προς τα πάνω) και στη συνέχεια όλες τις αιτήσεις που έχουν παρουσιαστεί προς την άλλη κατεύθυνση. Ο αλγόριθμος Scan είναι ένας απλός αλγόριθμος, πολύ σημαντικός όμως, γιατί ένας ανελκυστήρας μπορεί να αποφασίσει που θα σταματήσει. Με τη μέθοδο της σάρωσης ο ανελκυστήρας κατευθύνεται στην πιο κοντινή αίτηση που βρίσκεται στην κατεύθυνση προς στην οποία ήδη σαρώνει. Μόνο όταν ικανοποιήσει όλες τις αιτήσεις προς την ίδια κατεύθυνση, μπορεί είτε να σταματήσει εάν δεν υπάρχουν άλλες αιτήσεις σε εκκρεμότητα και να παραμείνει σε αδράνεια, είτε αντιστρέφεται η φορά της σάρωσης για να εξυπηρετηθούν και οι αιτήσεις που απομένουν. Ενώ ο Scan φαίνεται να λύνει το πρόβλημα που αντιμετωπίζει ο SPF, έχει κι αυτός τις αδυναμίες του. Το πρόβλημα αυτό εντοπίζεται στις νέες αιτήσεις, που λαμβάνονται κατά τη διάρκεια της κίνησης του ασανσέρ, όταν αντιστοιχούν στον εκάστοτε όροφο που μόλις ο ανελκυστήρας εξυπηρέτησε. Αν ο ανελκυστήρας έχει ξεκινήσει για παράδειγμα την πορεία του προς τα πάνω και του ζητηθεί να εξυπηρετήσει τον όροφο που μόλις πέρασε θα συνεχίσει την πορεία του κανονικά χωρίς να παρεκκλίνει. Δηλαδή, πρώτα θα πάει προς τους ψηλότερους ορόφους όπου του ζητήθηκε και έπειτα θα κατέβει στον συγκεκριμένο όροφο παρόλο που αρχικά βρισκόταν κοντά. 17

18 ΚΕΦΑΛΑΙΟ 4 Ο 4.1 Υλοποίηση FIFO Η ανάπτυξη των τριών αλγορίθμων γίνεται μέσω των συναρτήσεων orderfifo, orderspf, orderscan στις οποίες ορίζουμε τα τρία ορίσματα που θα χρησιμοποιήσουμε. Στην περίπτωση μας τα δυο πρώτα ορίσματα είναι πίνακες και το τρίτο όρισμα καθορίζει το μέγεθος που αυτοί έχουν. Ο δεύτερος πίνακας περιέχει τις αρχικές τιμές. Η κάθε συνάρτηση παίρνει αυτές τις τιμές και τις ανασυντάσσει όπως εμείς επιθυμούμε. Όπως εξηγήσαμε ο τρόπος που λειτουργεί ο FIFO είναι να εκτελεί τις αιτήσεις με την χρονική σειρά που τις δέχεται. Ο πίνακας x λοιπόν περιέχει τις αιτήσεις που θα δώσουμε στο πρόγραμμα. Ο αλγόριθμος παίρνει αυτές τις τιμές με τη σειρά που δόθηκαν και τις τοποθετεί στον πίνακα f για να τις εκτελέσει. Αυτό που παρατηρούμε τελικά στον αλγόριθμο FIFO είναι ότι ο πίνακας f που δημιουργείτε θα είναι ακριβώς ίδιος με τον πίνακα x που περιέχει τις αρχικές τιμές. 18

19 Διάγραμμα ροής: Αρχή i=0 i<n OXI NAI f [i]=x[i] Τέλος i=i+1 Κώδικας: void orderfifo(int *f, int *x, int n) int i; for (i = 0; i < n; i++) f[i] = x[i]; 19

20 4.2 Υλοποίηση SPF Σε αυτόν τον αλγόριθμο θέλουμε να εκτελείται η πιο κοντινή σε απόσταση αίτηση σε σχέση με την προηγούμενη. Οπότε αρχικά δημιουργούμε έναν πίνακα s ίδιο με τον πίνακα x, που περιέχει τις αρχικές αιτήσεις. Για να εκτελεστούν οι αιτήσεις με τη σειρά που θέλουμε αφήνουμε την τιμή της πρώτης θέσης ίδια και ύστερα ο αλγόριθμος αντιμεταθέτει στην δεύτερη θέση την αίτηση που βρίσκεται σε απόσταση πιο κοντά στην πρώτη θέση. Αφού το πετύχουμε αυτό, για την τρίτη θέση ο αλγόριθμος μεταφέρει την τιμή που βρίσκεται πιο κοντά στην δεύτερη. Αυτή η διαδικασία με τις αντιμεταθέσεις γίνεται συνεχώς για όλες τις τιμές του πίνακα s. Για την περίπτωση όπου ο ανελκυστήρας βρίσκεται ανάμεσα σε δύο αιτήσεις με την ίδια απόσταση από αυτόν, ο αλγόριθμος επιλέγει να ικανοποιήσει την αίτηση που δόθηκε χρονικά πρώτη εκ των δύο και ύστερα με τον τρόπο που αναφέρουμε πιο πάνω θα έρθει και η στιγμή που θα ικανοποιήσει και την άλλη αίτηση. 20

21 Διάγραμμα ροής: Αρχή i=0 i<n OXI NAI s[i]=x[i] i=1 i=i+1 i<n-1 NAI min= s[i]-s[i-1] OXI Τέλος minposition=i j=i+1 j<n OXI NAI currentmin= s[j]-s[i-1] currentmin < min OXI NAI min=currentmin minposition=j 21

22 j=j+1 temp=s[i] s[i] = s[minposition] s[minposition] = temp i=i+1 22

23 Κώδικας: void orderspf(int *s, int *x, int n) int i, j; int min, minposition, currentmin; int temp; // αρχικοποεί τον πίνακα s ίδιο με τον πίνακα x for (i = 0; i < n; i++) s[i] = x[i]; // κάνει τις κατάλληλες αντιμεταθέσεις στον πίνακα s για να δημιουργηθεί η σειρά SPF for (i = 1; i < n-1; i++) min = abs(s[i] - s[i-1]); minposition = i; for (j = i + 1; j < n; j++) currentmin = abs(s[j] - s[i-1]); if (currentmin < min) min = currentmin; minposition = j; temp = s[i]; s[i] = s[minposition]; s[minposition] = temp; 23

24 4.3 Υλοποίηση SCAN Ο τρόπος λειτουργίας αυτού του αλγορίθμου ταιριάζει αρκετά με τον προηγούμενο. Αυτό που συμβαίνει εδώ είναι να εξυπηρετούνται όλες οι αιτήσεις προς τη μια κατεύθυνση, ξεκινώντας, χωρίς βλάβη της γενικότητας, με πορεία προς τα πάνω και έπειτα κατεβαίνοντας να εξυπηρετεί και τις υπόλοιπες αιτήσεις με τη σειρά που συναντάει τους ορόφους. Και πάλι αρχικοποιούμε τον πίνακα s δίνοντας του τις ίδιες τιμές με τον πίνακα x. Η τιμή της πρώτης θέσης παραμένει πάλι η ίδια και αυτή τη φορά ο αλγόριθμος ψάχνει ποια αίτηση ορόφου βρίσκεται κοντινότερα αλλά με την προϋπόθεση να έχει τιμή μεγαλύτερη του τρέχοντος ορόφου. Αφού βρει αυτή τη τιμή την αντιμεταθέτει με την τιμή της δεύτερης θέσης. Κατ αυτόν τον τρόπο κάνει και την σύγκριση της τιμής της δεύτερης θέσης μέχρι να βρει την επόμενη κοντινότερη αλλά ταυτόχρονα και μεγαλύτερη τιμή και την αντιμεταθέτει με την τρίτη θέση. Συνεχίζει έτσι μέχρι να φτάσει στην υψηλότερη τιμή αίτησης. Από κει ξεκινάει η καθοδική πορεία του ανελκυστήρα με παρόμοιο τρόπο. Ο αλγόριθμος εντοπίζει ποια αίτηση, που δεν έχει ικανοποιηθεί ακόμη, βρίσκεται ποιο κοντά στον υψηλότερο όροφο και την αντιμεταθέτει στη διπλανή θέση (είναι αυτονόητο ότι θα έχει τιμή μικρότερη της πρώτης θέσεως του πίνακα μας). Και αυτή η διαδικασία γίνεται μέχρι να φτάσουμε στον χαμηλότερο όροφο, που έχει αιτηθεί, δηλαδή στην μικρότερη τιμή του πίνακα s. 24

25 Διάγραμμα ροής: Αρχή i=0 i<n OXI NAI s[i]=x[i] positiondone=0 i=i+1 i=1 i<n-1 NAI firstime=1 OXI j=j=+1 j<n OXI NAI s[j]>s[i-1] NAI OXI NAI currentmin= s[j]-s[i-1] firstime==1 positiondone= positiondone+1 25

26 ` min=currentmin minposition=j firstime=0 currentmin<min OXI NAI min=currentmin minposition=j j=j+1 temp=s[i] s[i]=s[minposition] s[minposition]=temp i=positiondone i<n-1 OXI NAI min= s[i]-s[i-1] Τέλος 26

27 minposition=i j=i+1 j<n OXI NAI currentmin= s[j]-s[i-1] currentmin<min OXI NAI min=currentmin minposition=j temp=s[i] s[i]=s[minposition] s[minposition]=temp i=i+1 27

28 Κώδικας: void orderscan(int *s, int *x, int n) int i, j; int min, minposition, currentmin; int temp; int firsttime; int positiondone; // αρχικοποεί τον πίνακα s ίδιο με τον πίνακα x for (i = 0; i < n; i++) s[i] = x[i]; // κάνει τις κατάλληλες αντιμεταθέσεις στον πίνακα s για να δημιουργηθεί η σειρά SCAN // στο ανέβασμα (καθώς ο ανελκυστήρας ανεβαίνει) positiondone = 0; for (i = 1; i < n-1; i++) firsttime = 1; for (j = i + 1; j < n; j++) if (s[j] > s[i-1]) currentmin = abs(s[j] - s[i-1]); if (firsttime == 1) positiondone = positiondone + 1; min = currentmin; minposition = j; firsttime = 0; else if (currentmin < min) 28

29 min = currentmin; minposition = j; temp = s[i]; s[i] = s[minposition]; s[minposition] = temp; // στο κατέβασμα (καθώς ο ανελκυστήρας κατεβαίνει) for (i = positiondone; i < n-1; i++) min = abs(s[i] - s[i-1]); minposition = i; for (j = i + 1; j < n; j++) currentmin = abs(s[j] - s[i-1]); if (currentmin < min) min = currentmin; minposition = j; temp = s[i]; s[i] = s[minposition]; s[minposition] = temp; 29

30 4.4 Σύγκριση των αλγορίθμων Έχοντας ολοκληρώσει την δημιουργία των τριών αλγορίθμων που μας απασχολούν, το επόμενό μας βήμα είναι να διαπιστώσουμε ποιος είναι ο πιο αποδοτικός. Ποιος, δηλαδή, θα ανταποκριθεί στις ίδιες κλήσεις συντομότερα. Αυτόματα οδηγούμαστε στη σύγκριση τους. Για να βγάλουμε ασφαλές αποτέλεσμα αυτό που έχουμε να κάνουμε είναι να μετρήσουμε τη διαδρομή που πρόκειται να διανύσει ο ανελκυστήρας μέχρι να εξυπηρετήσει όλες τις αιτήσεις. Αυτό πρέπει να γίνει για τον καθένα αλγόριθμο ξεχωριστά. Το κυριότερο όμως είναι να τους ελέγξουμε για κάθε πιθανό συνδυασμό ορόφων που μπορεί να προκύψει. Όλοι οι συνδυασμοί προκύπτουν από τον τύπο n n, όπου n = αριθμός των ορόφων. Αν δηλαδή εξετάζουμε μια τετραώροφη πολυκατοικία έχουμε 4 4 = 256 συνδυασμούς. Έτσι ακριβώς λειτουργεί και ο συγκεκριμένος κώδικας. Πραγματοποιεί όλους τους συνδυασμούς για n=2 ως n=8 και το πρόγραμμα εμφανίζει το μέσο όρο των ορόφων που χρειάστηκε να διανύσει για να εκπληρώσει όλους τους συνδυασμούς, το μέσο όρο αναμονής των ορόφων μέχρι να εξυπηρετηθούν και το μέσο όρο της μέγιστης αναμονής ενός ορόφου. Κώδικας: #include <stdio.h> #include <malloc.h> #include <math.h> int *define(int n) int *x; x = (int *) malloc(n * sizeof(int)); return x; void initialization(int *x, int n) int i; 30

31 for (i = 0; i < n; i++) x[i] = 0; void orderfifo(int *f, int *x, int n) int i; for (i = 0; i < n; i++) f[i] = x[i]; void orderspf(int *s, int *x, int n) int i, j; int min, minposition, currentmin; int temp; for (i = 0; i < n; i++) s[i] = x[i]; for (i = 1; i < n-1; i++) min = abs(s[i] - s[i-1]); minposition = i; for (j = i + 1; j < n; j++) currentmin = abs(s[j] - s[i-1]); if (currentmin < min) min = currentmin; minposition = j; temp = s[i]; 31

32 s[i] = s[minposition]; s[minposition] = temp; void orderscan(int *s, int *x, int n) int i, j; int min, minposition, currentmin; int temp; int firsttime; int positiondone; int updown; for (i = 0; i < n; i++) s[i] = x[i]; if (s[1] > s[0]) updown = 1; else updown = 2; positiondone = 0; for (i = 1; i < n-1; i++) minposition = i; firsttime = 1; for (j = i; j < n; j++) 32

33 if ((updown == 1 && s[j] > s[i-1]) (updown == 2 && s[j] < s[i-1])) currentmin = abs(s[j] - s[i-1]); if (firsttime == 1) positiondone = positiondone + 1; min = currentmin; minposition = j; firsttime = 0; else if (currentmin < min) min = currentmin; minposition = j; temp = s[i]; s[i] = s[minposition]; s[minposition] = temp; for (i = positiondone; i < n-1; i++) min = abs(s[i] - s[i-1]); minposition = i; for (j = i + 1; j < n; j++) currentmin = abs(s[j] - s[i-1]); if (currentmin < min) 33

34 min = currentmin; minposition = j; temp = s[i]; s[i] = s[minposition]; s[minposition] = temp; int distance(int *x, int n) int i; int d = 0; for (i = 0; i < n-1; i++) d = d + abs(x[i] - x[i+1]); return d; int delaysum(int *x, int n) int i; int d = abs(x[0] - x[1]); int delay = 0; for (i = 1; i < n; i++) delay = delay + d; d = abs(x[i] - x[i+1]); 34

Μάριος Αγγελίδης Ενότητες βιβλίου: 2.1, 2.3, 6.1 (εκτός ύλης αλλά χρειάζεται για την συνέχεια) Ώρες διδασκαλίας: 1

Μάριος Αγγελίδης Ενότητες βιβλίου: 2.1, 2.3, 6.1 (εκτός ύλης αλλά χρειάζεται για την συνέχεια) Ώρες διδασκαλίας: 1 Ενότητα 1 Ενότητες βιβλίου: 2.1, 2.3, 6.1 (εκτός ύλης αλλά χρειάζεται για την συνέχεια) Ώρες διδασκαλίας: 1 Τι είναι αλγόριθμος Σύμφωνα με το σχολικό βιβλίο: Ορισμός: Μια πεπερασμένη σειρά ενεργειών, αυστηρά

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

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

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

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 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 στην

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

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

Πρόβλημα 29 / σελίδα 28 Πρόβλημα 29 / σελίδα 28 Πρόβλημα 30 / σελίδα 28 Αντιμετάθεση / σελίδα 10 Να γράψετε αλγόριθμο, οποίος θα διαβάζει τα περιεχόμενα δύο μεταβλητών Α και Β, στη συνέχεια να αντιμεταθέτει τα περιεχόμενά τους

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

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

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

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

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Προβλήματα, αλγόριθμοι, ψευδοκώδικας Προβλήματα, αλγόριθμοι, ψευδοκώδικας October 11, 2011 Στο μάθημα Αλγοριθμική και Δομές Δεδομένων θα ασχοληθούμε με ένα μέρος της διαδικασίας επίλυσης υπολογιστικών προβλημάτων. Συγκεκριμένα θα δούμε τι

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής Προγραμματισμός Η/Υ Προτεινόμενα θέματα εξετάσεων Εργαστήριο Μέρος 1 ό ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής Ιανουάριος 2011 Καλογιάννης Γρηγόριος Επιστημονικός/ Εργαστηριακός

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ' ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ ΚΥΚΛΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΥΠΗΡΕΣΙΩΝ 2005

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ' ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ ΚΥΚΛΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΥΠΗΡΕΣΙΩΝ 2005 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ' ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ ΚΥΚΛΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΥΠΗΡΕΣΙΩΝ 2005 ΕΚΦΩΝΗΣΕΙΣ ΘΕΜΑ 1ο Α. 1. Να αναφέρετε ονοµαστικά τα κριτήρια που πρέπει απαραίτητα

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

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

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

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

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

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf(%u\n, x); Β. unsigned char ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Β Περιόδου 2015 (8/9/2015) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

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

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

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16

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

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

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

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

Εισαγωγή στην Έννοια του Αλγορίθμου και στον Προγραμματισμό. Η έννοια του προβλήματος

Εισαγωγή στην Έννοια του Αλγορίθμου και στον Προγραμματισμό. Η έννοια του προβλήματος Εισαγωγή στην Έννοια του Αλγορίθμου και στον Προγραμματισμό Η έννοια του προβλήματος Τι είναι πρόβλημα; ΠΡΟΒΛΗΜΑΤΑ ΟΡΙΣΜΟΣ ΠΡΟΒΛΗΜΑΤΟΣ Πρόβλημα είναι κάθε κατάσταση που μας απασχολεί και χρήζει αντιμετώπισης,

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

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

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

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

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

ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΥΠΟΛΟΓΙΣΤΩΝ Εισαγωγή ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΥΠΟΛΟΓΙΣΤΩΝ Όπως για όλες τις επιστήμες, έτσι και για την επιστήμη της Πληροφορικής, ο τελικός στόχος της είναι η επίλυση προβλημάτων. Λύνονται όμως όλα τα προβλήματα;

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 1 Ο. Εισαγωγή στις έννοιες Πρόβλημα, Αλγόριθμος, Προγραμματισμός, Γλώσσες Προγραμματισμού

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 1 Ο. Εισαγωγή στις έννοιες Πρόβλημα, Αλγόριθμος, Προγραμματισμός, Γλώσσες Προγραμματισμού ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 1 Ο Εισαγωγή στις έννοιες Πρόβλημα, Αλγόριθμος, Προγραμματισμός, Γλώσσες Προγραμματισμού ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 1 Πρόβλημα Ως πρόβλημα θεωρείται μια κατάσταση που πρέπει

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

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

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

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

Αλγόριθμοι Ταξινόμησης Μέρος 1

Αλγόριθμοι Ταξινόμησης Μέρος 1 Αλγόριθμοι Ταξινόμησης Μέρος 1 Μανόλης Κουμπαράκης 1 Το Πρόβλημα της Ταξινόμησης Το πρόβλημα της ταξινόμησης (sorting) μιας ακολουθίας στοιχείων με κλειδιά ενός γνωστού τύπου (π.χ., τους ακέραιους ή τις

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

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

Προγραμματισμός I (Θ) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός I (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Οκτώβριος 2017 Δρ. Δημήτρης Βαρσάμης Οκτώβριος

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

Προγραµµατισµός Η/Υ. Μέρος2

Προγραµµατισµός Η/Υ. Μέρος2 Προγραµµατισµός Η/Υ Μέρος2 Περιεχόμενα Επανάληψη Βασικών Σύμβολων Διαγραμμάτων Ροής Αλγόριθμος Ψευδοκώδικας Παραδείγματα Αλγορίθμων Γλώσσες προγραμματισμού 2 Επανάληψη Βασικών Σύμβολων Διαγραμμάτων Ροής

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

Εισαγωγή - Βασικές έννοιες. Ι.Ε.Κ ΓΛΥΦΑΔΑΣ Τεχνικός Τεχνολογίας Internet Αλγοριθμική Ι (Ε) Σχολ. Ετος A Εξάμηνο

Εισαγωγή - Βασικές έννοιες. Ι.Ε.Κ ΓΛΥΦΑΔΑΣ Τεχνικός Τεχνολογίας Internet Αλγοριθμική Ι (Ε) Σχολ. Ετος A Εξάμηνο Εισαγωγή - Βασικές έννοιες Ι.Ε.Κ ΓΛΥΦΑΔΑΣ Τεχνικός Τεχνολογίας Internet Αλγοριθμική Ι (Ε) Σχολ. Ετος 2012-13 A Εξάμηνο Αλγόριθμος Αλγόριθμος είναι μια πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων

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

ΕΠΛ 001: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Προγραμματισμός

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

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

Δομές Δεδομένων & Αλγόριθμοι

Δομές Δεδομένων & Αλγόριθμοι Θέματα Απόδοσης Αλγορίθμων 1 Η Ανάγκη για Δομές Δεδομένων Οι δομές δεδομένων οργανώνουν τα δεδομένα πιο αποδοτικά προγράμματα Πιο ισχυροί υπολογιστές πιο σύνθετες εφαρμογές Οι πιο σύνθετες εφαρμογές απαιτούν

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

Ο αλγόριθμος πρέπει να τηρεί κάποια κριτήρια

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

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

ΑΛΓΟΡΙΘΜΟΙ. Τι είναι αλγόριθμος

ΑΛΓΟΡΙΘΜΟΙ. Τι είναι αλγόριθμος ΑΛΓΟΡΙΘΜΟΙ Στο σηµείωµα αυτό αρχικά εξηγείται η έννοια αλγόριθµος και παραθέτονται τα σπουδαιότερα κριτήρια που πρέπει να πληρεί κάθε αλγόριθµος. Στη συνέχεια, η σπουδαιότητα των αλγορίθµων συνδυάζεται

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

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ Εισαγωγή στον Προγραµµατισµό Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ Συναρτήσεις 19.11.16 Β. Ντουφεξή 2 Προβλήματα: Οσο μεγαλώνουν τα προγράμματα, γίνονται πιο πολύπλοκα.

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

Επιµέλεια Θοδωρής Πιερράτος

Επιµέλεια Θοδωρής Πιερράτος Εισαγωγή στον προγραµµατισµό Η έννοια του προγράµµατος Ο προγραµµατισµός ασχολείται µε τη δηµιουργία του προγράµµατος, δηλαδή του συνόλου εντολών που πρέπει να δοθούν στον υπολογιστή ώστε να υλοποιηθεί

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

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

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

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

Διάλεξη 04: Παραδείγματα Ανάλυσης

Διάλεξη 04: Παραδείγματα Ανάλυσης Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Παραδείγματα Ανάλυσης Πολυπλοκότητας : Μέθοδοι, παραδείγματα

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

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. ΚΕΦΑΛΑΙΟ 2 Βασικές Έννοιες Αλγορίθμων

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. ΚΕΦΑΛΑΙΟ 2 Βασικές Έννοιες Αλγορίθμων Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΚΕΦΑΛΑΙΟ 2 Βασικές Έννοιες Αλγορίθμων 2.1 Τι είναι αλγόριθμος Ο όρος προέρχεται από μετάφραση του βιβλίο του Αμπού Αμπντουλάχ Μοχάμεντ Ιμπν Μούζα Αλ Χουαρίζμι

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

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

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

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

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 4. Παραδείγματα Ανάλυσης Πολυπλοκότητας Ανάλυση Αναδρομικών Αλγόριθμων

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 4. Παραδείγματα Ανάλυσης Πολυπλοκότητας Ανάλυση Αναδρομικών Αλγόριθμων ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 4. Παραδείγματα Ανάλυσης Πολυπλοκότητας Ανάλυση Αναδρομικών Αλγόριθμων Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Στην ενότητα

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2014-15

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

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 9: Συναρτήσεις Ορισμός συναρτήσεων () { /* δήλωση μεταβλητών */ /* εντολές ελέγχου/επεξεργασίας */ o Μια συνάρτηση ορίζεται δίνοντας

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

Μαλούτα Θεανώ Σελίδα 1

Μαλούτα Θεανώ Σελίδα 1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Α. ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ ΦΥΛΛΑΔΙΟ 6 ο ( Ενότητες 2.3 ) 1.Τι είναι πρόγραμμα; 2. Ποια είναι τα πλεονεκτήματα των γλωσσών υψηλού επιπέδου σε σχέση με τις γλώσσες

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

Μάθημα 7 ο. Αλγόριθμοι Χρονοδρομολόγησης

Μάθημα 7 ο. Αλγόριθμοι Χρονοδρομολόγησης Μάθημα 7 ο Αλγόριθμοι Χρονοδρομολόγησης Σκοπός του μαθήματος Στην ενότητα αυτή θα εξηγήσουμε το ρόλο και την αξιολόγηση των αλγορίθμων χρονοδρομολόγησης, και θα παρουσιάσουμε τους κυριότερους. Θα μάθουμε:

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

Η ΙΣΤΟΡΙΑ ΤΟΥ ΑΝΕΛΚΥΣΤΗΡΑ

Η ΙΣΤΟΡΙΑ ΤΟΥ ΑΝΕΛΚΥΣΤΗΡΑ Η ΙΣΤΟΡΙΑ ΤΟΥ ΑΝΕΛΚΥΣΤΗΡΑ Ανελκυστήρας ή ανυψωτήρας ονομάζεται κάθε εγκατάσταση που χρησιμοποιείται για την ανύψωση βαρών, προσώπων ή πραγμάτων και κινείται σε κατακόρυφο άξονα. Σήμερα έχει επικρατήσει

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

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική II. Ενότητα 2 : Αλγόριθμοι. Δρ. Γκόγκος Χρήστος

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική II. Ενότητα 2 : Αλγόριθμοι. Δρ. Γκόγκος Χρήστος 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Πληροφορική II Ενότητα 2 : Αλγόριθμοι Δρ. Γκόγκος Χρήστος 2 Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου Τμήμα Χρηματοοικονομικής & Ελεγκτικής

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

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΑ ΣΥΣΤΗΜΑΤΑ

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

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

Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων

Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Παραδείγματα Ανάλυσης Πολυπλοκότητας : Μέθοδοι, παραδείγματα

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

Έστω ένας πίνακας με όνομα Α δέκα θέσεων : 1 η 2 η 3 η 4 η 5 η 6 η 7 η 8 η 9 η 10 η

Έστω ένας πίνακας με όνομα Α δέκα θέσεων : 1 η 2 η 3 η 4 η 5 η 6 η 7 η 8 η 9 η 10 η Μονοδιάστατοι Πίνακες Τι είναι ο πίνακας γενικά : Πίνακας είναι μια Στατική Δομή Δεδομένων. Δηλαδή συνεχόμενες θέσεις μνήμης, όπου το πλήθος των θέσεων είναι συγκεκριμένο. Στις θέσεις αυτές καταχωρούμε

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

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

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

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

4.4 Μετατροπή από μία μορφή δομής επανάληψης σε μία άλλη.

4.4 Μετατροπή από μία μορφή δομής επανάληψης σε μία άλλη. 4.4 Μετατροπή από μία μορφή δομής επανάληψης σε μία άλλη. Η μετατροπή μιας εντολής επανάληψης σε μία άλλη ή στις άλλες δύο εντολές επανάληψης, αποτελεί ένα θέμα που αρκετές φορές έχει εξεταστεί σε πανελλαδικό

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

Σύνοψη Θεωρίας ΟΡΙΣΜΟΣ ΚΑΙ ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΑΛΓΟΡΙΘΜΩΝ

Σύνοψη Θεωρίας ΟΡΙΣΜΟΣ ΚΑΙ ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΑΛΓΟΡΙΘΜΩΝ 1 ο ΓΥΜΝΑΣΙΟ ΘΕΡΜΗΣ Τάξη: Γ Μάθημα: Πληροφορική Εξεταστέα ύλη: Παρ11.1 & 11.2 Σύνοψη Θεωρίας ΟΡΙΣΜΟΣ ΚΑΙ ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΑΛΓΟΡΙΘΜΩΝ Αλγόριθμος είναι μια πεπερασμένη σειρά ενεργειών που περιγράφει τη διαδικασία

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

Εισαγωγή στην Πληροφορική Προγραμματισμός-Λειτουργικά

Εισαγωγή στην Πληροφορική Προγραμματισμός-Λειτουργικά Εισαγωγή στην Πληροφορική Προγραμματισμός-Λειτουργικά Ηλ. Γκρίνιας Τ. Ε. Ι. Σερρών Τμήμα Πληροφορικής και Επικοινωνιών Αλγόριθμοι Ορισμός: ο αλγόριθμος είναι μια σειρά από πεπερασμένα βήματα που καθορίζουν

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

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

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

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

Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ )

Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ ) Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ. 25 48) Τι είναι αλγόριθμος; Γ ΛΥΚΕΙΟΥ Αλγόριθμος είναι μία πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο χρονικό διάστημα,

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

Διορθώσεις σελ

Διορθώσεις σελ Διορθώσεις σελ. 73-74 # Τώρα ο άνθρωπος σκέφτεται έναν αριθμό από 1 έως 1000 Ν = 1000 print Σκέψου έναν αριθμό από το 1 έως το, Ν guesses = 0 found = False first = 1 last = N while not found and guesses

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

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

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

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

Δομές Δεδομένων. Ενότητα 3: Ουρές Εισαγωγή-Υλοποίηση ΑΤΔ Ουρά με πίνακα. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής.

Δομές Δεδομένων. Ενότητα 3: Ουρές Εισαγωγή-Υλοποίηση ΑΤΔ Ουρά με πίνακα. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Ενότητα 3: Ουρές Εισαγωγή-Υλοποίηση ΑΤΔ Ουρά με πίνακα Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες,

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

ΚΕΦΑΛΑΙΟ 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 Κανόνες Ομαλής Λειτουργίας Ερχόμαστε στην ώρα μας Δεν καπνίζουμε και τρώμε εντός της αίθουσας

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

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

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

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

Εισαγωγή στον Προγραμματισμό Μάθημα 4: Αλγόριθμοι και Γλώσσες Προγραμματισμού Δεκέμβριος 2015 Χ. Αλεξανδράκη

Εισαγωγή στον Προγραμματισμό Μάθημα 4: Αλγόριθμοι και Γλώσσες Προγραμματισμού Δεκέμβριος 2015 Χ. Αλεξανδράκη Εισαγωγή στον Προγραμματισμό Μάθημα 4: Αλγόριθμοι και Γλώσσες Προγραμματισμού Δεκέμβριος 2015 Χ. Αλεξανδράκη Αλγόριθμος (τι είναι) Στα μαθηματικά και την επιστήμη ΗΥ Ο αλγόριθμος είναι η λογική διαδικασία

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

ΠΕΡΙΓΡΑΦΗ ΤΗΣ ΚΙΝΗΣΗΣ ΤΩΝ ΣΩΜΑΤΩΝ ΣΕ ΜΙΑ ΔΙΑΣΤΑΣΗ. υ = σταθερη (1) - Με διάγραμμα :

ΠΕΡΙΓΡΑΦΗ ΤΗΣ ΚΙΝΗΣΗΣ ΤΩΝ ΣΩΜΑΤΩΝ ΣΕ ΜΙΑ ΔΙΑΣΤΑΣΗ. υ = σταθερη (1) - Με διάγραμμα : Πρότυπο Πρότυπα ΠΕΡΙΓΡΑΦΗ ΤΗΣ ΚΙΝΗΣΗΣ ΤΩΝ ΣΩΜΑΤΩΝ ΣΕ ΜΙΑ ΔΙΑΣΤΑΣΗ ΕΥΘΥΓΡΑΜΜΗ ΟΜΑΛΗ ΚΙΝΗΣΗ Η Φυσική για να ερμηνεύσει τα φαινόμενα, δημιουργεί τα πρότυπα ή μοντέλα. Τα πρότυπα αποτελούνται από ένα πλέγμα

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

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 1: Εισαγωγή Ποιος είμαι εγώ! 2 Ναύπλιο, 4/1976-9/1993 Πάτρα, 9/1993-6/2004 Williamsburg, VA, USA, 7/2004-7/2006 Μυτιλήνη, 10/2006-2/2007 Βόλος, 2/2007 - H Υπεύθυνη των

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

Πληροφορική ΙΙ. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

Πληροφορική ΙΙ. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Πληροφορική ΙΙ Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Στέργιος Παλαμάς, Υλικό Μαθήματος «Πληροφορική ΙΙ», 2015-2016 Μάθημα 1: Εισαγωγή στους Αλγόριθμους Αλγόριθμος είναι μια πεπερασμένη

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

4. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Α' μέρος: for)

4. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Α' μέρος: for) 4. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Α' μέρος: for) 4.1 Μετρητές Ένας μετρητής (counter) είναι μία μεταβλητή η οποία ξεκινά με μία αρχική τιμή και αυξάνεται κατά ένα κάθε φορά που εκτελείται. Ο αλγόριθμος για έναν μετρητή

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

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

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

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

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

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

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

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

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

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

Αλγόριθμοι Ταξινόμησης Μέρος 2

Αλγόριθμοι Ταξινόμησης Μέρος 2 Αλγόριθμοι Ταξινόμησης Μέρος 2 Μανόλης Κουμπαράκης 1 Προχωρημένοι Αλγόριθμοι Ταξινόμησης Στη συνέχεια θα παρουσιάσουμε τρείς προχωρημένους αλγόριθμους ταξινόμησης: treesort, quicksort και mergesort. 2

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

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

Προγραμματισμός ΙI (Θ) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός ΙI (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Μάρτιος 2017 Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017

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

Εργαστήριο Λειτουργικών Συστημάτων - Αλγόριθμοι Χρονοπρογραμματισμού. Εργαστηριακή Άσκηση

Εργαστήριο Λειτουργικών Συστημάτων - Αλγόριθμοι Χρονοπρογραμματισμού. Εργαστηριακή Άσκηση Εργαστηριακή Άσκηση Οι Αλγόριθμοι Χρονοπρογραμματισμού First Come First Serve (FCFS), Shortest Job First (SJF), Round Robin (RR), Priority Weighted (PRI) Επιμέλεια: Βασίλης Τσακανίκας Περιεχόμενα Αλγόριθμοι

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

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

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

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

Περιεχόµενα. Ανασκόπηση - Ορισµοί. Ο κύκλος ανάπτυξης προγράµµατος. Γλώσσες Προγραµµατισµού Ασκήσεις

Περιεχόµενα. Ανασκόπηση - Ορισµοί. Ο κύκλος ανάπτυξης προγράµµατος. Γλώσσες Προγραµµατισµού Ασκήσεις Προγραµµατισµός Η/Υ Ανασκόπηση - Ορισµοί Περιεχόµενα Ο κύκλος ανάπτυξης προγράµµατος Περιγραφή προβλήµατος Ανάλυση προβλήµατος Λογικό ιάγραµµα Ψευδοκώδικας Κωδικοποίηση Συντήρηση Γλώσσες Προγραµµατισµού

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

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

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

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

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού ( Απαντήσεις & Λύσεις Βιβλίου) 1. Σκοποί κεφαλαίου Κύκλος ανάπτυξης προγράµµατος Κατηγορίες γλωσσών προγραµµατισµού

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

Κεφάλαιο 1 Εισαγωγή. Περιεχόμενα. 1.1 Αλγόριθμοι και Δομές Δεδομένων

Κεφάλαιο 1 Εισαγωγή. Περιεχόμενα. 1.1 Αλγόριθμοι και Δομές Δεδομένων Κεφάλαιο 1 Εισαγωγή Περιεχόμενα 1.1 Αλγόριθμοι και Δομές Δεδομένων... 9 1.2 Διατήρηση Διατεταγμένου Συνόλου... 12 1.3 Ολοκληρωμένη Υλοποίηση σε Java... 15 Ασκήσεις... 18 Βιβλιογραφία... 19 1.1 Αλγόριθμοι

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

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Οι αλγόριθμοι ταξινόμησης: Α. SelectionSort Ταξινόμηση με Επιλογή Β. InsertionSort Ταξινόμηση με Εισαγωγή

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

Εργαστηριακή Άσκηση 1

Εργαστηριακή Άσκηση 1 Εργαστηριακή Άσκηση 1 Επανάληψη προγραμματισμού Βασικοί Αλγόριθμοι Είσοδος τιμών από το πληκτρολόγιο Σε όλα τα προγράμματα που θα γράψουμε στην συνέχεια του εξαμήνου θα χρειαστεί να εισάγουμε τιμές σε

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

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

Οι εντολές ελέγχου της ροής ενός προγράμματος. Κεφάλαιο ΙΙI: Οι εντολές ελέγχου της ροής ενός προγράμματος 31 Εντολές ελέγχου της ροής Στο παρόν κεφάλαιο ασχολούμαστε με την σύνταξη των εντολών της C οι οποίες εισάγουν λογική και ελέγχουν την ροή εκτέλεσης

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

Εγκατάσταση του Lazarus

Εγκατάσταση του Lazarus Εισαγωγή στο Προγραμματισμό με τη PASCAL ΠΕΡΙΕΧΟΜΕΝΑ: Πώς να κατεβάσετε και να εγκαταστήσετε το περιβάλλον προγραμματισμού Lazarus. Εισαγωγή στη PASCAL. Εγκατάσταση του Lazarus Γιατί η PASCAL? Έτσι, η

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

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

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

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

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

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

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

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

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

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

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 1: ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ - ΟΡΙΣΜΟΙ

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 1: ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ - ΟΡΙΣΜΟΙ Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 1: ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ - ΟΡΙΣΜΟΙ Δημήτριος Κουκόπουλος Σχολή Οργάνωσης και Διοίκησης Επιχειρήσεων Τμήμα Διαχείρισης Πολιτισμικού Περιβάλλοντος και Νέων Τεχνολογιών ΠΕΡΙΕΧΟΜΕΝΟ

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

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

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

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

Αρχές Προγραμματισμού Υπολογιστών

Αρχές Προγραμματισμού Υπολογιστών Αρχές Προγραμματισμού Υπολογιστών Ανάπτυξη Προγράμματος Β ΕΠΑΛ Τομέας Πληροφορικής Βελώνης Γεώργιος Καθηγητής Πληροφορικής ΠΕ20 Κύκλος ανάπτυξης προγράμματος/λογισμικού Η διαδικασία ανάπτυξης λογισμικού,

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

2.2.5 ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ

2.2.5 ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ 2.2.5 ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ Προκειμένου να επιτευχθεί η «ακριβής περιγραφή» ενός αλγορίθμου, χρησιμοποιείται κάποια γλώσσα που μπορεί να περιγράφει σειρές ενεργειών με τρόπο αυστηρό,

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

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

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

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

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

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

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

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

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

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

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

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 2 ο. Επικοινωνία:

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 2 ο. Επικοινωνία: Επικοινωνία: spzygouris@gmail.com Να δοθεί ο ορισμός του Αλγορίθμου. Αλγόριθμος, σύμφωνα με το βιβλίο, είναι μια πεπερασμένη σειρά ενεργειών (όχι άπειρες), αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο

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

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ IΙ Λύβας Χρήστος chrislibas@ssl-unipi.gr Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος >_ ΣΥΝΑΡΤΗΣΕΙΣ ΣΤΗ C (1/3) +- Στη C χρησιμοποιούμε συχνα τις συναρτήσεις (functions),

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

Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 04: ΠαραδείγματαΑνάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Παραδείγματα Ανάλυσης Πολυπλοκότητας : Μέθοδοι, παραδείγματα -Γραμμική

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

Τμήμα Οικιακής Οικονομίας και Οικολογίας. Οργάνωση Υπολογιστών

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

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

Κατανεμημένα Συστήματα

Κατανεμημένα Συστήματα Κατανεμημένα Συστήματα Σημειώσεις εργαστηρίου Lab#7 - Διεργασίες, Nήματα, Πολυνημάτωση στη Python Νεβράντζας Βάιος-Γερμανός Λάρισα, Φεβρουάριος 2013 Lab#7 - Διεργασιές, Νη ματα, Πολυνημα τωση στη Python,

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

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Προγραμματισμός

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

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

Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω:

Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω: Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω: 1ο ΓΕΛ Καστοριάς Βασικές Έννοιες Αλγορίθμων Δομή Ακολουθίας (κεφ. 2 και 7 σχολικού βιβλίου) 1. Οι μεταβλητές αντιστοιχίζονται από τον μεταγλωττιστή κάθε

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

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή Στο εργαστήριο αυτό θα μάθουμε για τη χρήση συναρτήσεων με σκοπό την κατασκευή αυτόνομων τμημάτων προγραμμάτων που υλοποιούν μία συγκεκριμένη διαδικασία, τα οποία

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

ΦΥΣΙΚΗ ΓΕΝΙΚΗΣ ΠΑΙΔΕΙΑΣ Α ΛΥΚΕΙΟΥ

ΦΥΣΙΚΗ ΓΕΝΙΚΗΣ ΠΑΙΔΕΙΑΣ Α ΛΥΚΕΙΟΥ ΦΥΣΙΚΗ ΓΕΝΙΚΗΣ ΠΑΙΔΕΙΑΣ Α ΛΥΚΕΙΟΥ Ευθύγραμμη Ομαλή Κίνηση Επιμέλεια: ΑΓΚΑΝΑΚΗΣ.ΠΑΝΑΓΙΩΤΗΣ, Φυσικός https://physicscorses.wordpress.com/ Βασικές Έννοιες Ένα σώμα καθώς κινείται περνάει από διάφορα σημεία.

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

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

Ψευδοκώδικας. November 7, 2011 Ψευδοκώδικας November 7, 2011 Οι γλώσσες τύπου ψευδοκώδικα είναι ένας τρόπος περιγραφής αλγορίθμων. Δεν υπάρχει κανένας τυπικός ορισμός της έννοιας του ψευδοκώδικα όμως είναι κοινός τόπος ότι οποιαδήποτε

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

Υπολογισμός - Εντολές Επανάληψης

Υπολογισμός - Εντολές Επανάληψης Προγραμματισμός Η/Υ Ι Υπολογισμός - Εντολές Επανάληψης ΕΛΕΥΘΕΡΙΟΣ ΚΟΣΜΑΣ ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2018-2019 ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ Τ.Ε. 1 Περίληψη Σήμερα... θα συνεχίσουμε τη συζήτησή μας για τα βασικά στοιχεία

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

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

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

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