Κεφάλαιο 3 Μέθοδοι αντιμετώπισης των Buffer Overflow Exploits

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

Download "Κεφάλαιο 3 Μέθοδοι αντιμετώπισης των Buffer Overflow Exploits"

Transcript

1 Κεφάλαιο 3 Μέθοδοι αντιμετώπισης των Buffer Overflow Exploits 31 Γενικά Στο A Μέρος της πτυχιακής παρουσιάσθηκε αναλυτικά το πώς μπορεί ένα κακόβουλος χρήστης(blackhat) να εκμεταλλευτεί(exploit) την αδυναμία(vulnerability) Buffer Overflow μίας εφαρμογή ώστε να αποκτήσει μη εξουσιοδοτημένη(unauthorized) πρόσβαση σε ένα υπολογιστικό σύστημα Ακόμα ειπώθηκε ότι το πρόβλημα ασφάλειας που προκαλεί αυτή η προγραμματιστική αδυναμία είναι γνωστή τουλάχιστον 15 χρόνια Αυτά τα χρόνια έχουν γίνει μεγάλες και αξιόλογες προσπάθειες ώστε να το πρόβλημα αντιμετωπιστεί με διάφορες μεθόδους Οι μέθοδοι αυτοί μπορούν να καταταχτούν, αναλόγως με τον τρόπο που αντιμετωπίζουν το πρόβλημα, στις μεθόδους Πρόληψης και στις μεθόδους Καταστολής Οι μέθοδοι που ο σκοπός τους είναι η πρόληψη προσπαθούν να εμποδίσουν να συμβεί ένα Buffer Overflow σε μία εφαρμογή Αυτό έχει σαν συνέπεια ότι η εφαρμογή είναι απαλλαγμένη τουλάχιστον από τον κίνδυνο επιθέσεων που βασίζονται σε Buffer Overflow αδυναμίες Οι μέθοδοι της καταστολής δεν ασχολούνται με την ίδια την εφαρμογή ή την διαδικασία ανάπτυξης της Οι μέθοδοι αυτοί χρησιμοποιούνται ώστε να προστατέψουν το υπολογιστικό ή ολόκληρο το πληροφοριακό σύστημα αφού συμβεί η επίθεση Αυτή η κατηγορία των μεθόδων όπως εύκολα μπορεί να διαπιστώσει κανείς διαβάζοντας την σχετική παράγραφο παρακάτω, σαν κύριο σκοπό έχουν να προστατεύουν τα συστήματα μέχρι αυτά να απαλλαγούν από τις αδυναμίες Buffer Overflow Σε αυτό το κεφάλαιο θα παρουσιαστούν οι μέθοδοι αντιμετώπισης του προβλήματος των Buffer Overflow Exploits παρουσιάζοντας πρώτα την κατηγορία των μεθόδων πρόληψης και μετά αυτό της καταστολής Αυτό γίνεται για να μπορεί ο αναγνώστης να έχει μία οριζόντια γνώση για το πώς έχει αντιμετωπιστεί αυτό το πρόβλημα πριν καταλάβει σε βάθος της μέθοδο που υιοθετείται σε αυτή την πτυχιακή 32 Μέθοδοι πρόληψης του Buffer Overflow Στις μεθόδους που έχουν προταθεί σε αυτή την κατηγορία το βασικό χαρακτηριστικό στο οποίο βασίζονται είναι ο έλεγχος ορίων(boundary Checking) Αυτό φυσικά είναι αναμενόμενο αφού από την ακούσια ή εκούσια παράληψη αυτού του ελέγχου ξεκινά η ρίζα του κακού Οι πιο διαδεδομένοι μέθοδοι πρόληψης του προβλήματος των Buffer Overflow Exploit είναι : Συγγραφή secure code Dynamic run-time checks - Libsafe Automated Detection of Buffer Overflow via Static Analysis Brute-Force Analysis 321 Συγγραφή secure code Η συγγραφή Ασφαλή Κώδικα(Secure Code) είναι ο τρόπος αντιμετώπισης του προβλήματος που προτείνεται από όλα τα όλες τις εργασίες και τις δημοσιεύσεις που έχουν γίνει μέχρι σήμερα(2003) Αυτή η λύση είναι περισσότερο μία πρόταση για την εφαρμογή μιας πολιτικής πάνω στην ανάπτυξη κώδικα χωρίς τέτοιου είδους λάθη Η εφαρμογής μίας τέτοιας πολιτικής πρέπει να γίνεται σε δύο φάσεις Η πρώτη φάση είναι ότι μία εταιρία παραγωγής λογισμικού να θεωρεί ότι μέρος της εκπαίδευσης των προγραμματιστών της θα είναι η γνώση της συγγραφής κώδικα με όσο το δυνατόν πιο τυποποιημένο τρόπο Αυτό θα οδηγήσει τους προγραμματιστές να αποφεύγουν να χρησιμοποιούν μεθόδους ή βιβλιοθήκες που είναι γνωστό ότι υποφέρουν από Buffer Overflow αλλά και όταν τις χρησιμοποιούν να δίνουν την απαραίτητη προσοχή Το δεύτερο κομμάτι αφορά τον σχεδιασμό κάθε έργου και την διαδικασία ελέγχων ποιότητας που πρέπει να γίνονται στο λογισμικό Όσο αφορά τον σχεδιασμό πρέπει από πριν να έχει αποφασιστεί τι εργαλεία θα χρησιμοποιηθούν και από ποίες γνωστές αδυναμίες Buffer Overflow υποφέρουν ώστε να απαλειφθούν Τέλος όσο αφορά τους έλεγχους ποιότητας πρέπει 1

2 κυρίως να ελέγχουν πόσο συνεπείς μπόρεσαν να είναι οι προγραμματιστές στην τυποποιημένη διαδικασία που τους ζητήθηκε και να στην συνέχεια να γίνεται εκτεταμένη ανάλυση σε κάθε «παρατυπία» Για παράδειγμα αν είναι συμφωνημένο κατά την τυποποίηση της ότι δεν θα χρησιμοποιείται η συνάρτηση scanf() αλλά αυτή για κάποιο λόγο είναι υποχρεωτικό να χρησιμοποιηθεί τότε θα πρέπει να γίνει εκτεταμένος έλεγχος ώστε η αυτή να μην προκαλέσει κάποια από τις γνωστές αδυναμίες Το πρόβλημα της παραπάνω λύσης είναι η αδυναμία του ανθρώπου να αντιστέκεται στα λάθη Έτσι είναι στατιστικά αποδεδειγμένο ότι ακόμα και αν μία διαδικασία παραγωγής λογισμικού έχει προβλέψει όλους τους πιθανούς τρόπους που μπορεί κάποιος να επιτεθεί στο προϊόν λογισμικό της είναι πολύ πιθανό να υπάρχει και ένας τουλάχιστόν ακόμα τρόπος που μπορεί να επιτεθεί κάποιος σε αυτό Για να λυθεί αυτό το πρόβλημα έχουν αναπτυχθεί προγραμματιστικά εργαλεία που ή ενσωματώνουν στον κώδικα τους απαραίτητους ελέγχους ορίων ή ελέγχουν και προειδοποιούν τον προγραμματιστή ότι ο κώδικάς του έχει κάποιες αδυναμίες Οι πιο διαδεδομένες λύσεις παρουσιάζονται στις επόμενες παραγράφους 322 Dynamic run-time checks Libsafe Η Libsafe αναπτύχθηκε στα Bell Labs και ο βασικός της στόχος είναι να αντικαταστήσει όλες τις συναρτήσεις της Libc (κεφάλαιο 2 - stdioh) που έχουν Buffer Overflow αδυναμίες Ο τρόπος που λειτουργεί η Libsafe δεν αντικαθιστά την Libc αλλά προσθέτει στις αδύναμες συναρτήσεις Boundary Checking όπως φαίνεται στο Σχήμα 31 Σχήμα 31 Μετρήσεις στο σχετικό Paper που γράφτηκε για την LibSafe δείχνουν ότι στην πράξη μία εφαρμογή που χρησιμοποιεί την Libsafe έχει την ίδια περίπου απόδοση(performance) με την έκδοση της εφαρμογής που δεν την χρησιμοποιεί Το μεγαλύτερο πλεονέκτημα αυτής της λύσης είναι ότι οι περισσότερες νέες εφαρμογές δεν χρειάζεται να ξαναγίνουν compile λόγο του Dynamic Linking To σημαντικότερο της μειονέκτημα είναι ότι προστατεύει μία εφαρμογή μόνο από την λανθασμένη χρήση των συναρτήσεων της βιβλιοθήκης Libc μη μπορώντας να απαλείψει όλες τις υπόλοιπες αδυναμίες Buffer Overflow Ενώ η λύση τις Libsafe είναι αρκετά ικανοποιητική, η ανάγκη να βρεθεί άλλη λύση που θα αντιμετωπίζει το πρόβλημα καθολικά οδήγησε σε λύσεις εργαλείων που βοηθούν το προγραμματιστή κατά την διάρκεια του Debugging να ανακαλύπτει που έχει αφήσει Buffer Overflow αδυναμίες Μία από αυτές τις λύσεις παρουσιάζεται στην επόμενη παράγραφο 2

3 323 Automated Detection of Buffer Overflow via Static Analysis Το πανεπιστήμιο Berkeley δημοσίευσε το paper A First Step Towards Automated Detection of Buffer Overrun Vulnerabilities που περιγράφει μία μέθοδο ανάλυσης του κώδικα ώστε να απαλείφονται τα Buffer overflow Η μέθοδος αυτή στην πράξη ανάγει το πρόβλημα σε πρόβλημα περιορισμών ακέραιων αριθμών(integer Constraint) Η αναγωγή αυτή έχει δύο πλεονεκτήματα Το πρώτο είναι ότι το πρόβλημα του Buffer Overflow μπορεί να λυθεί με οποιοδήποτε αλγόριθμο που λύνει το μαθηματικό πρόβλημα Integer Constraint Το δεύτερο είναι ότι η λύση αυτή μπορεί να εφαρμοστεί σε πολύ μεγάλες εφαρμογές δίνοντας λύση σε μικρό πολυωνυμικό χρόνο επειδή οι πράξεις σε αριθμούς γίνονται πολύ γρήγορα Η λύση αυτή εφαρμόζεται κατά το Compilation παράγοντας ένα σύνολο από Warnings που ειδοποιούν τον προγραμματιστή για της αδυναμίες Buffer Overflow που εντοπίσθηκαν Στο παρακάτω σχήμα παρουσιάζεται ο τρόπος που συνεργάζεται η λύση αυτή με ένα Compiler Σχήμα 32 Η βασική δυσκολία που έχει να αντιμετωπίσει αυτή η λύση είναι η μοντελοποίηση όλων των δυνατών προτύπων πηγαίου κώδικα που μπορούν να προκαλέσουν Buffer Overflow αδυναμίες Σε αυτή την δυσκολία οφείλεται και η αδυναμία αυτής της λύσης να βρει όλες τις πιθανές περιπτώσεις Buffer Overflow Vulnerabilities Στην πράξη με βάση τις μέτρησεις που έγιναν στο Paper, οι περιπτώσεις που δεν μπορεί να συλλάβει είναι όταν το Buffer δεν δηλώνεται με στατικό μέγεθος αλλά αρχικά δηλώνεται μόνο ο Pointer Οι αδυναμίες που μπορεί να προκύψουν από αυτή την περίπτωση είναι σαν αυτές της περίπτωσης της κακής χρήσης της Malloc στο Παράρτημα Α1 Η περαιτέρω επεξήγηση αυτής της λύσης ξεφεύγει από τα όρια αυτή της πτυχιακής για αυτό το λόγο παρακάτω παρουσιάζεται ένας πίνακας που δείχνει ένα δείγμα της διαδικασίας μοντελοποίησης Μετά την μοντελοποίηση και την παραγωγή μαθηματικών περιορισμών από τα μοντέλα των συναρτήσεων μπορεί να χρησιμοποιηθεί ένας οποιοσδήποτε αλγόριθμος constraint solver όπως φαίνεται στο σχήμα Brute-force Analysis Μία μέθοδο που χρησιμοποιείται κατά κόρον από τους Blackhat Hackers για να βρίσκουν αδυναμίες Buffer Overflow σε ένα σύστημα είναι η Brute-force Analysis Αυτή τη μέθοδο τείνουν τα τελευταία χρόνια να χρησιμοποιούν και οι Διαχειριστές(Administrators) των 3

4 δικτύων για να ελέγχουν αν τα υπολογιστικά συστήματα που υπάρχουν στο δίκτυο τους έχουν αδυναμίες τέτοιoυ τύπου Η μέθοδος Brute-force Analysis δεν είναι μία μέθοδος που χρησιμοποιείται μόνο για Buffer Overflow, αντίθετα μάλιστα την μέθοδο αυτή την χρησιμοποιούν για όλες τις πιθανές αδυναμίες που μπορεί έχει το σύστημα Στην πράξη η μέθοδος αυτή χρησιμοποιείται από ένα σύνολο εργαλείων λογισμικού που πραγματοποιούν όλες τις γνωστές επιθέσεις που υπάρχουν σε ένα σύστημα Αυτά τα εργαλεία όμως αντί να «καταλάβουν» τελικά το σύστημα απλά αναφέρουν στον διαχειριστή του δικτύου ποία από τα συστήματα του δικτύου του έχουν κάποιο πρόβλημα και ποίο είναι αυτό Η μέθοδος αυτή αν και εφαρμόζεται σε μία εφαρμογή αφού αυτή έχει μπει στην φάση της συντήρησης του κύκλου ζωής της θεωρείται προληπτική μέθοδος γιατί εφαρμόζεται πριν το σύστημα δεχτεί πραγματικά την επίθεση Η μέθοδος αυτή όμως έχει το μεγάλο μειονέκτημα ότι λόγο των δοκιμών για τυχών αδυναμίες μπορεί να προκαλέσει μεγάλη ζημιά στο υπολογιστικό σύστημα Τέλος, το πλεονέκτημα της είναι ότι μπορεί να βρίσκει αδυναμίες σε συστήματα που είναι έτοιμα να μπουν στην παραγωγική διαδικασία, βοηθώντας τον διαχειριστή του δικτύου να απαλείψει πολλές από της αδυναμίες του δικτύου του πριν αυτές του δημιουργήσουν πραγματικό πρόβλημα 33 Μέθοδοι αντιμετώπισης του Buffer Overflow μέσω της προστασίας κρίσιμων πληροφοριών Πριν παρουσιαστούν οι μέθοδοι καταστολής του προβλήματος του Buffer Overflow σε αυτή την παράγραφο θα παρουσιαστούν τρεις από τις μεθόδους που για να εμποδίσουν τα Buffer Overflow Exploit διαφυλάσσουν τις κρίσιμες για την ροή του προγράμματος πληροφορίες Οι μέθοδοι αυτοί δεν κατατάσσονται σε καταστολή ή πρόληψη γιατί ο τρόπος που λειτουργούν περιλαμβάνει χαρακτηριστικά και από τις δύο κατηγορίες Στην πράξη η ιδέα των μεθόδων αυτών είναι να ελέγχουν αν κάποια κρίσιμη πληροφορία όπως για παράδειγμα η RA(Return Address) μίας συνάρτησης αλλάχθηκε από εξωτερικό παράγοντα Αν διαπιστωθεί μία τέτοια αλλαγή τότε σταματά η εκτέλεση του προγράμματος Για να μπορεί όμως να γίνεται αυτός ο έλεγχος πρέπει το πρόγραμμα να έχει γίνει Compiled με ένα Compiler που διαθέτει αυτό το μηχανισμό Προφανώς οι μέθοδοι πρέπει να εφαρμοστούν σε μία εφαρμογή προληπτικά, κατά το Compilation, ενώ ο μηχανισμός που ενσωματώνεται στο πρόγραμμα για να σταματά τα BOE λειτουργεί κατασταλτικά Η λειτουργία των μεθόδων αυτών θεωρείται κατασταλτική γιατί σταματούν την ροή του προγράμματος αφού συμβεί το Buffer Overflow χωρίς να προσπαθούν να το εμποδίσουν πριν αυτό συμβεί Η κάθε μία από τις παρακάτω μεθόδους χρησιμοποιεί κάποιο μηχανισμό για να προστατεύσει το σύστημα από Buffer Overflow Οι μέθοδοι αυτοί μπορούν να εφαρμοστούν με διάφορους τρόπους Για παράδειγμα σε άλλες περιπτώσεις ο μηχανισμός γίνεται μέρος του Compiler ενώ σε άλλες περιπτώσεις απλά ο Compiler χρησιμοποιεί ένα C ή Assembly πρόγραμμα και το ενσωματώνει στον κώδικα μίας εφαρμογής Ο τρόπος που εφαρμόζεται ο μηχανισμός δεν θα αναλυθεί στα πλαίσια αυτή της πτυχιακής γιατί δεν έχει τόσο σημασία όσο το τι κάνει ο μηχανισμός προστασία για να σταματήσει τα Buffer Overflow Exploits 331 StackGuard Η μέθοδος StackGuard εστιάζει την λύση του προβλήματος στην προστασία της RA μίας function Για να το κάνει αυτό χρησιμοποιεί μια 32bit λέξη σαν μηχανισμό προστασίας της RA Η βασική ιδέα είναι ότι αν στην θέση που βρίσκεται αυτή η λέξη μέσα στην στοίβα βρεθεί κάποια άλλη λέξη τότε θεωρείται ότι έγινε υπερχείλιση και σταματά η εκτέλεση του προγράμματος Για να μπορεί να ελεγχθεί κάθε φορά αν η λέξη αλλάχθηκε ενσωματώνεται, από τον Compiler, στην κλήση κάθε συνάρτησης ένα ζευγάρι προλόγου και ένα επιλόγου για την εφαρμογή του StackGuard μηχανισμού Ο πρόλογος του StackGaurd δεν αντικαθιστά τον πρόλογο μίας συνάρτησης αλλά προστίθεται πριν από αυτόν ενώ ο επίλογος του StackGaurd προστίθεται αμέσως μετά από τον επίλογο της Στο παρακάτω παράδειγμα φαίνεται πώς διαμορφώνεται τελικά o κώδικας μίας συνάρτησης μετά το Compilation 4

5 Παράδειγμα 31 function_prologue: pushl $0x000aff0d // push canary into the stack pushl %ebp // save frame pointer mov %esp,%ebp // saves a copy of current %esp subl $108, %esp // space for local variables (function body) function_epilogue: leave // standard epilogue cmpl $0x000aff0d,(%esp) // check canary jne canary_changed addl $4,%esp // remove canary from stack ret canary_changed: // abort the program with error call canary_death_handler jmp // just in case I guess Στο παράδειγμα φαίνεται ότι η 32bit λέξη που λέγεται Canary είναι μια σταθερή τιμή που τοποθετείται ακριβώς πάνω από την Return Address Με αυτό τον τρόπο αν ένα Buffer Overflow Exploit υπερχειλίσει το Buffer τότε πριν αντικαταστήσει την RA θα έχει ήδη αλλάξει την τιμή του Canary Word έτσι ο StackGaurd μηχανισμός θα καταλάβει την υπερχείλιση και θα σταματήσει την εκτέλεση του προγράμματος Για να γίνει αυτό κατά την επιστροφή της συνάρτησης πριν ακριβώς την αποκατάσταση του EIP με την RA θα εκτελεστεί ο επίλογος του StackGaurd Ο επίλογος αυτός θα ελέγξει αν το Canary είναι άθικτο και αν όχι θα σταματήσει την εκτέλεση του προγράμματος πριν εκτελεστεί το Buffer Overflow Exploit Η λύση αυτή αρχικά ήταν τελείως λανθασμένη γιατί το μόνο που έπρεπε να κάνει ένας Blackhat για να παρακάμψει αυτή τη δικλείδα ασφαλείας ήταν πριν από κάθε RET μέσα στο ΒΟΕ String να προσθέσει το Canary αφού η τιμή αυτή είναι στατική Για να λυθεί αυτό το πρόβλημα στις επόμενες εκδόσεις του το StackGaurd αντί να χρησιμοποιεί ένα στατικό Canary χρησιμοποιεί ένα Random Canary και για να αυξηθεί η εντροπία του αυτό ο Canary κάνει την πράξη XOR με την RA της εκάστοτε Function Την λύση αυτή την υιοθετεί ο Visual C/C++ compiler του NET Studio της Microsoft 332 Visual C/C++ compiler του NET Studio της Microsoft H Microsoft επέλεξε να χρησιμοποιεί ένα παραπλήσιο μηχανισμό με αυτό του StackGaurd με Random Canary στον Compiler του NET ώστε οι επόμενες εφαρμογές που θα παραχθούν για την πλατφόρμα αυτή να είναι «ασφαλέστερες» Η ιδέα ενός Random Canary είναι πολύ σπουδαία γιατί ο Blackhat θα πρέπει να βρει έναν μηχανισμό που θα προβλέπει τα Canaries που μπορεί ο Compiler να παράγει Ακόμα και αν ξέρει τον μηχανισμό μόνο μετά από μία διαδικασία Brute-force θα μπορέσει τελικά να πετύχει τον σκοπό του Στην λύση αυτή όμως υπάρχει ένα μεγάλο πρόβλημα Όπως ειπώθηκε στο κεφάλαιο 2 η RA δεν είναι η μοναδική πληροφορία που αφορά την ροή του προγράμματος και σώζεται στη στοίβα Αμέσως πριν από την RA υπάρχει ο Frame Pointer της στοίβας που και αυτό μπορεί να χρησιμοποιηθεί ώστε να αλλάξει την ροή του προγράμματος και να την στρέψει προς τον Shellcode Φυσικά ο υπολογισμός του FP είναι πιο δύσκολος γιατί αυτός με την σειρά του πρέπει να οδηγήσει σε μια RA που θα προκαλέσει την αλλαγή της ροή Για να μπορέσει 5

6 λοιπόν η Microsoft να καλύψει και αυτές τις περιπτώσεις φρόντισε να παραλλάξει λίγο το StackGaurd και να τοποθετεί το Random Canary πάνω από τον FP αντί πάνω από την RA όπως φαίνεται και στο σχήμα 33 Σχήμα 33 Η μέθοδος αυτή είναι αρκετά ασφαλέστερη από την λύση του StackGaurd, αλλά το πρόβλημα ανάγεται στο να μάθει να υπολογίζει τα Random Canaries ώστε να εφαρμόζει όλα τα Buffer Overflow που είναι σχεδιασμένο να τρέχουν όταν δεν υπάρχει ο αυτός ο προστατευτικός μηχανισμός 333 StackShield Η ιδέα του StackShield προσπαθεί να λύσει τις αδυναμίες που έχουν οι παραπάνω λύσεις δημιουργώντας ένα απλούστερης λογικής μηχανισμό Η ιδέα είναι ο πρόλογος που προστίθεται σε μία συνάρτηση για να την προστατέψει, να αντιγράφει την RA στον σωρό αντί να βάζει Canary μέσα στην στοίβα Έτσι, ο επίλογος το μόνο που θα πρέπει να κάνει είναι να ελέγχει αν η διεύθυνση επιστροφής είναι ή ίδια με αυτή που αντιγράφτηκε αρχικά στον σωρό ή άλλαξε Είναι προφανές ότι ο Blackhat με αυτό τον τρόπο δεν μπορεί να κάνει τίποτα για να αντιμετωπίσει τον μηχανισμό παρά μόνο να επέμβεί στο σημείο του σωρού που βρίσκεται το αντίγραφο της RA και να το αντικαταστήσει Όπως φαίνεται λοιπόν ακόμα και σε αυτή την λύση υπάρχει τρόπος να «εξαπατηθεί» ο μηχανισμός προστασίας και τελικά το BOE να πετύχει τον στόχο του Αν και οι μηχανισμοί αυτοί δεν λύνουν καθολικά το πρόβλημα τουλάχιστον αυξάνουν τον βαθμό ασφάλειας μία εφαρμογής Όμως το μεγαλύτερο πρόβλημα που μπορεί να προκαλέσει η χρήση αυτών των μηχανισμών είναι η ψευδαίσθηση ασφάλειας στους προγραμματιστές Η βασική αιτία που δημιουργείται αυτή η ψευδαίσθηση είναι γιατί οι περισσότεροι αγνοούν ότι τα Buffer Overflow δεν γίνονται μόνο στην στοίβα αλλά και στον σωρό ενώ παράλληλα οι παραπάνω μηχανισμοί εστιάζουν μόνο σε αυτή την πλευρά του προβλήματος Έτσι τα Heap Based Buffer Oveflows αδυνατούν να τα εντοπίζουν αφήνοντας exploits όπως το openssl remote exploit που παρουσιάζεται αναλυτικά στο Παράρτημα Α1 να εκμεταλλευτούν ανενόχλητα αυτές τις αδυναμίες 34 Μέθοδοι καταστολής του Buffer Overflow Εκτός από τις λύσεις των δύο προηγούμενων παραγράφων όπως ειπώθηκε από την αρχή του κεφαλαίου υπάρχουν και οι λύσεις της καταστολής Οι λύσεις αυτές σε αντίθεση με το StackGuard ή τον Compiler της Microsoft εφαρμόζονται συμπληρωματικά χωρίς να χρειάζεται να ενσωματωθούν κατά το Compilation Οι λύσεις αυτές δεν έχουν πάντα στόχο να αποτρέψουν την εκτέλεση των Buffer Overflow exploit αλλά τουλάχιστον να ειδοποιήσουν το χρήστη ή διαχειριστή ενός συστήματος ότι το σύστημά του δέχτηκε επίθεση ώστε αυτό να αντιδράσει κατάλληλα Στην παράγραφο αυτή λοιπόν πρώτα θα παρουσιαστούν οι γνωστότεροι μέθοδοι που κατασταλτικά αποτρέπουν την εκτέλεση των Buffer Overflow 6

7 Exploits και στη συνέχεια αυτοί που περιμένουν την ανθρώπινη παρέμβαση για να αντιδράσουν σε ένα Buffer Overflow Exploit 341 Μη εκτελέσιμη στοίβα Η περιοχή του κώδικα ενός προγράμματος έχει δικαιώματα μόνο εκτέλεσης ακόμα και για την ίδια την εφαρμογή Έτσι δεν μπορεί να γίνει καμία αλλαγή στον κώδικα ενός προγράμματος Αντίθετα στην στοίβα τα δικαιώματα τυπικά είναι μόνο Read/Write που σημαίνει ότι τα δεδομένα που βρίσκονται μέσα σε σελίδες(pages) δεν μπορούν να εκτελεστούν ακόμα και αν η ροή ενός προγράμματος στέφει προς αυτά Στην πράξη η δυνατότητα η στοίβα να είναι μη εκτελέσιμη δεν χρησιμοποιείται στα λειτουργικά συστήματα για λόγους ευελιξίας και ταχύτητας Έτσι προγράμματα όπως ο GCC Compiler αλλά και πολλά λειτουργικά χαρακτηριστικά των Windows χρησιμοποιούν αυτή την δυνατότητα Με αυτό τον τρόπο για παράδειγμα ο GCC παράγει τον κώδικα μίας συνάρτησης που θέλει να εκτελέσει μέσα στην στοίβα και στην συνέχεια στρέφει την ροή του προγράμματος προς την συνάρτηση αυτή Μία ιδέα που χρησιμοποιείται σε μερικές εκδόσεις του πυρήνα του Linux είναι να χρησιμοποιηθεί η δυνατότητα του Paging που προσφέρεται ώστε η στοίβα να μην είναι εκτελέσιμη Η λύση αυτή είναι προφανώς κατασταλτική γιατί δεν εμποδίζει το Buffer Overflow να συμβεί αλλά το Buffer Overflow Exploit να εκτελεστεί Το πρόβλημα αυτής της λύσης είναι ότι αυτή μπορεί να προκαλέσει δυσάρεστες παρενέργειες στην λειτουργία ενός συστήματος που οι εφαρμογές του χρησιμοποιούν την εκτελεσιμότητα της στοίβας Ακόμα όμως και αν λυθούν τα προβλήματα αυτά υπάρχει ακόμα η δυνατότητα να εκτελεστούν άλλες επιθέσεις στον σωρό όπως στο παράδειγμα openssl remote exploit του κεφαλαίου 3 Τελειώνοντας την περιγραφή αυτής της λύσης απλά θα αναφερθεί ότι υπάρχουν πολλές περίπτωσης που μη εκτελεσιμότητα της στοίβας παρακάμπτεται με την χρήση του σωρού σε συνδυασμό διαφόρων άλλων χαρακτηριστικών της λειτουργία των υπολογιστικών συστημάτων όπως είναι το GOT table 342 Anti-Virus Αρκετά χρόνια πριν εμφανιστεί το Worm του Morris στην κοινότητα των υπολογιστών εμφανίστηκαν οι Ιοί(virus) των υπολογιστών Οι γνωστοί σε όλους Virus δεν εκμεταλλεύονταν μόνο αδυναμίες Buffer Overflow αλλά και πολλές άλλες Για να αντιμετωπιστεί αυτό το πρόβλημα τότε αναπτύχθηκαν εφαρμογές που ο σκοπός τους είναι να εντοπίζουν και να καταστρέφουν προγράμματα ιούς Οι εφαρμογές αυτές λέγονται Antivirus όπως το Norton-Antivirus ή το Mcaffe κτλ Κάποτε η χρήση των Antivirus ήταν θέμα επιλογής ανάλογα με την κρισιμότητα των πληροφοριών που έπρεπε να διαφυλαχτούν από πιθανές ζημίες που μπορεί να προκαλέσει ένα Virus Σήμερα όμως είναι σχεδόν απαραίτητο σε κάθε υπολογιστικό σύστημα που θα χρησιμοποιηθεί σαν περιβάλλον μακροχρόνιας εργασίας Η ανάγκη αυτή προκύπτει από την μεγάλη πολυπλοκότητα που έχουν τα σημερινά πληροφοριακά συστήματα καθώς και την ποικιλία των ιών Τα AntiVirus λοιπόν όπως και τα Virus εξελίχθηκαν και σήμερα δίνουν ένα καλό επίπεδο προστασίας σε ένα υπολογιστικό σύστημα Το σημαντικότερο από όλα όμως είναι ότι ένα AntiVirus μπορεί να προστατέψει κατασταλτικά ένα σύστημα από επιθέσεις Buffer Overflow χωρίς να αλλάξει την δομή και λειτουργία του συστήματος όπως οι λύσεις που παρουσιάστηκαν μέχρι τώρα Το βασικότερο μειονέκτημα που έχουν τα AntiVirus είναι ότι δεν μπορούν να εντοπίσουν επιθέσεις από ιούς που δεν είναι γνωστοί αν και σήμερα έχουν φτάσει στο σημείο τουλάχιστον να διακρίνουν νέες επιθέσεις που στην πραγματικότητα είναι παραλλαγές παλαιοτέρων επιθέσεων Η αδυναμία τους αυτή οφείλεται στο μηχανισμό με τον οποίο τα AnitVirus εντοπίζουν γενικά τους ιούς και ειδικότερα αυτούς που βασίζονται σε Buffer Overflow 7

8 Exploits O μηχανισμός αυτός δεν είναι τίποτα παραπάνω από ένα μηχανισμό Pattern Matching O μηχανισμός του Pattern Matching δεν κάνει τίποτα παραπάνω από το να προσπαθεί να εντοπίσει μέσα στην String μορφή ενός προγράμματος που παίρνει σαν είσοδο αν το περιέχει String όμοια με τα γνωστά BOE String ή άλλων Virus Όπως είναι κατανοητό αν το String ενός BOE δεν το γνωρίζει το AntiVirus τότε δεν μπορεί να εντοπίσει το BOE αυτό 343 Τα ΝIDS Τα τελευταία χρόνια έχουν εμφανιστεί στην αγορά τα ΝIDS με σκοπό να εντοπίζουν επιθέσεις εναντίον ενός ολόκληρου δικτύου και όχι μόνο σε επίπεδο ενός υπολογιστή Η βασική φιλοσοφία λειτουργία τους είναι όμοια με αυτή των AntiVirus δηλαδή προσπαθούν να κάνουν Pattern Matching γνωστών επιθέσεων Η βασική τους διαφορά που έχουν από τα AntiVirus είναι ότι αντί να προσπαθούν να εντοπίσουν ένα Buffer Overflow ή άλλου είδος επίθεση μέσα σε αρχεία προσπαθεί να κάνει το ίδιο στα πακέτα που περνούν μέσα από ένα δίκτυο Η δεύτερη διαφορά τους είναι ότι συνήθως δεν χρησιμοποιείται ο μηχανισμός αντίδρασης που διαθέτουν όπως στα Anti- Virus, ενώ αντίθετα τα τελευταία στηρίζουν την κατασταλτική τους συμπεριφορά σε αυτόν ακριβώς τον μηχανισμό Η τεχνολογία των NIDS προς το παρόν σαν βασικό σκοπό έχουν την αυτοματοποιημένη παρακολούθηση ενός δικτύου όπως συμβαίνει με μία κάμερα ασφάλειας για παράδειγμα σε μία τράπεζα Ο ρόλος των NIDS συνεπώς είναι να βοηθήσει στην ενίσχυση της ασφάλεια ενός Πληροφοριακού Συστήματος που στηρίζεται στην δικτύωση των υπολογιστών που το αποτελούν αφήνοντας την κατασταλτική αντίδραση στον Διαχειριστή του δικτύου Η λειτουργία των NIDS όπως ειπώθηκε και παραπάνω δεν διαφέρει κατά πολύ από αυτή του Anti-Virus και δεν σταματά την επίθεση όπως αυτό Στην ορολογία των NIDS η προσπάθεια τους να εντοπίσουν Patterns από επιθέσεις όπως αυτή των Buffer Overflow Exploits ονομάζεται Misused Based Detection Εκτός όπως από αυτό το μηχανισμό τα NIDS διαθέτουν και ένα μηχανισμό που λέγεται Anomaly Based Detection Ο μηχανισμός Anomaly Based Detection που διαθέτουν τα NIDS είναι ένας μηχανισμός που προέκυψε σαν απάντηση στο πρόβλημα που έχουν και τα AntiVirus ότι δηλαδή δεν είναι δυνατόν να εντοπιστεί μία επίθεση αν δεν είναι γνωστό το Pattern του String του Buffer Overflow Exploit ή άλλης επίθεσης Ο Anomaly Based Detection μηχανισμός προσπαθεί να εντοπίσει επιθέσεις πριν αυτές γνωστοποιηθούν και ενσωματωθούν στο Misused Based Detection μηχανισμό Για να το κάνει αυτό αναλόγως με τη περίπτωση μοντελοποιείται η φυσιολογική συμπεριφορά των πακέτων και αν παρατηρηθεί κάποια ανωμαλία σε αυτά ή στο περιεχόμενο τους τότε αποστέλλεται σχετική ειδοποίηση στον διαχειριστή του δικτύου Περισσότερες λεπτομέρειες για το τα NIDS μπορείται να βρείται στο Technical Report Snort 20&Snort_Preprocessors που παρουσιάζεται το Snort 20 το γνωστότερο OpenSource NIDS σήμερα(2003) Τέλος η λύση για την αντιμετώπιση των Buffer Overflow που υλοποιήθηκε στα πλαίσια αυτή της πτυχιακής στηρίζει την λειτουργία του στο Snort 20 ενώ προστίθεται σε αυτό σαν module To module αυτό είναι μία μέθοδος εντοπισμού που στην πράξη υλοποιεί έναν Anomaly Based Detection μηχανισμό εντοπισμού των Buffer Overflow Exploits Ο σκοπός αυτή της λύσης για το Buffer Overflow όπως και ο λόγος ύπαρξης των NIDS γενικότερα, είναι να βοηθήσει στην καταστολή της εξάπλωσης των Buffer Overflow Exploit μέσα σε ένα δίκτυο ειδικά όταν αυτά δεν είναι γνωστά άρα δεν μπορούν να εντοπιστούν από τον Misused Based Detection ενός NIDS ή AntiVirus Λεπτομέρειες για το μηχανισμό εντοπισμού των Buffer Overflow Exploits παρουσιάζονται στο κεφαλαίο 5 της πτυχιακής Πριν από αυτό όμως θα παρουσιαστεί μία ακόμα μέθοδος κατασταλτικού μηχανισμού των BOE η οποία είναι και η βάση της δικιάς μου υλοποίησης 8

9 344 Accurate Buffer Overflow Detection via Abstract Execution of Payload Η λύση αυτή προτάθηκε στην RAID 2002 από τους TToth και CKruegel και παράδειγμα υλοποίησης αυτής της ιδέας έγινε σαν module του Apache Server Η βασική ιδέα της λύσης είναι ότι σε κάθε εφαρμογή που παρέχει δικτυακές υπηρεσίες πρέπει να ενσωματωθεί ένα module που με κάποιο μηχανισμό θα ελέγχει τα εισερχόμενα πακέτα για να βρει Buffer Overflow Exploits Ο μηχανισμός αυτός για να βρει BOE ελέγχει το String που δέχεται σαν είσοδο δηλαδή τα περιεχόμενα ενός πακέτου(payload) Αν μέσα στο πακέτο βρεθεί ένα BOE τότε αυτό δεν παραδίδεται στην υπόλοιπη εφαρμογή προστατεύοντας την έτσι από τέτοιου είδους επιθέσεις Για να μπορέσει όμως να λειτουργήσει αυτό ο μηχανισμός θα πρέπει να μπορεί με κάποιο τρόπο να ξεχωρίζει τα πακέτα που περιέχουν BOE από τα υπόλοιπα Ο τρόπος που ξεχωρίζει τα πακέτα μεταξύ τους βασίζεται στο μεγάλο βαθμό εκτελεσιμότητας που έχουν τα πακέτα με BOE σε σχέση με τα υπόλοιπα Εκτελεσιμότητα σε ένα πακέτο σημαίνει ότι τo String που αποτελεί το payload ενός πακέτου μπορεί να αντιστοιχεί ολόκληρο ή κομμάτια του σε αλυσίδες εκτελέσιμων εντολών Η έννοια της εκτελεσιμότητας θα εξεταστεί αναλυτικά στο κεφάλαιο 4 Το σημαντικό που πρέπει να γνωρίζει κάποιο για αυτή τη μέθοδο είναι ότι η εκτελεσιμότητα μπορεί να παρουσιάζεται σε ένα πακέτο τυχαία Όμως όταν το πακέτα περιέχει Buffer Overflow Exploit String τότε η εκτελεσιμότητα παρουσιάζεται σίγουρα Για να μπορέσει λοιπόν να ξεχωρίζει η μέθοδος αυτή πότε ένα πακέτο παρουσιάζει εκτελεσιμότητα κατά τύχη και πότε όχι παίρνει σαν είσοδο για κάθε δικτυακή υπηρεσία μία τιμή κατώφλι(threshold) και με αυτή διαχωρίζει τα πακέτα Η τιμή αυτή καθορίζεται με στατιστικές μετρήσεις Αν και η μέθοδος αυτή είναι δύσκολο να ενσωματωθεί σε κάθε δυνατή υπηρεσία ενός δικτύου όπως προτείνεται στο paper έχει πολύ καλά αποτελέσματα Επειδή η μέθοδος αυτή έχει πολύ καλά αποτελέσματα στον εντοπισμό των επιθέσεων Buffer Overflow Exploit η μέθοδος αυτή χρησιμοποιήθηκε από τον συγγραφέα αυτή της πτυχιακής εργασίας για να υλοποίηση μια έκδοση του Snort 20 που θα εντοπίζει τέτοιες επιθέσεις χωρίς προηγουμένως αυτές να είναι γνωστές 9

Προηγμένοι Μικροεπεξεργαστές. Έλεγχος Ροής Προγράμματος

Προηγμένοι Μικροεπεξεργαστές. Έλεγχος Ροής Προγράμματος Προηγμένοι Μικροεπεξεργαστές Έλεγχος Ροής Προγράμματος Control Flow εντολές Jump related JMP Jcc (JZ, JNZ, JB, JNB etc) JCXZ, JECXZ LOOP LOOPE, LOOPNE Procedure related CALL RET INT IRET INTO ENTER LEAVE

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

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

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

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

Κεφάλαιο 1 Buffer Overflow & Buffer Overflow Exploit Overview

Κεφάλαιο 1 Buffer Overflow & Buffer Overflow Exploit Overview Κεφάλαιο 1 Buffer Overflow & Buffer Overflow Exploit Overview 1.1 Γενικά Ένας Balckhat hacker για να καταφέρει να πετύχει ένα Buffer Overflow Exploit εκμεταλλεύεται τα αδύναμα Buffer μίας υπηρεσίας(service).

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

Κεφάλαιο 4 Εφαρμογή της μεθόδου εντοπισμού Buffer Overflow Exploit «Abstract Execution of Payload» και αναζήτηση των Return Address για Validation

Κεφάλαιο 4 Εφαρμογή της μεθόδου εντοπισμού Buffer Overflow Exploit «Abstract Execution of Payload» και αναζήτηση των Return Address για Validation Κεφάλαιο 4 Εφαρμογή της μεθόδου εντοπισμού Buffer Overflow Exploit «Abstract Execution of Payload» και αναζήτηση των Return Address για Validation 4.1 Γενικά Στα πρώτα κεφάλαια αυτής της εργασίας παρουσιάσθηκε

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

ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Intel x86 ISA. Νίκος Μπέλλας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών ΗΥ

ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Intel x86 ISA. Νίκος Μπέλλας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών ΗΥ ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών Intel x86 ISA Νίκος Μπέλλας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών ΗΥ RISC vs. CISC Η assembly των επεξεργαστών ARM, SPARC (Sun), και Power (IBM) είναι όμοιες

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

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

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

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

Παράλληλη Επεξεργασία

Παράλληλη Επεξεργασία Παράλληλη Επεξεργασία Φροντιστήριο: Εισαγωγή στα Πολυεπεξεργαστικά Συστήματα Διερασίες και Νήματα σε Πολυεπεξεργαστικά Συστήματα Εργαστήριο Πληροφοριακών Συστημάτων Υψηλής Επίδοσης Parallel and Distributed

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

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19 Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών Κεφ. 2 Θεωρητική Επιστήμη Υπολογιστών 2.3.1.1 Έννοια προγράμματος Τι είναι πρόγραμμα και τι προγραμματισμός; Πρόγραμμα είναι το σύνολο εντολών που χρειάζεται

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

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

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

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

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

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

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

Πρακτικά όλα τα προβλήματα ασφαλείας οφείλονται σε λάθη στον κώδικα

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

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

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

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

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

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

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

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

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 3-4: Προγραμματισμός MIPS. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 3-4: Προγραμματισμός MIPS. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής Γιώργος Δημητρίου Μάθημα 3-4: Προγραμματισμός MIPS Προγραμματισμός σε Συμβολική Γλώσσα Η συμβολική γλώσσα: δεν έχει τύπους, δεν έχει δηλώσεις μεταβλητών, δεν έχει δομές ελέγχου, δεν έχει εντολές βρόχων,

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

Πως μπορούν τα μέρη του υλικού ενός υπολογιστή να επικοινωνούν και να συνεργάζονται μεταξύ τους; Επειδή ακολουθούν συγκεκριμένες οδηγίες (εντολές).

Πως μπορούν τα μέρη του υλικού ενός υπολογιστή να επικοινωνούν και να συνεργάζονται μεταξύ τους; Επειδή ακολουθούν συγκεκριμένες οδηγίες (εντολές). Κεφάλαιο 5 Πως μπορούν τα μέρη του υλικού ενός υπολογιστή να επικοινωνούν και να συνεργάζονται μεταξύ τους; Επειδή ακολουθούν συγκεκριμένες οδηγίες (εντολές). Το σύνολο αυτών των εντολών το ονομάζουμε

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

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

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

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

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

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

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

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

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε

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

Προγραµµατισµός Ι Εισαγωγή Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Προγραµµατισµός Ι Νικόλαος Δ. Τσελίκας

Προγραµµατισµός Ι Εισαγωγή Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Προγραµµατισµός Ι Νικόλαος Δ. Τσελίκας Εισαγωγή Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Αναδροµή Σύντοµη Αναδροµή Η γλώσσα προγραµµατισµού C είναι µία γλώσσα

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

Κεφάλαιο 10 ο Υποπρογράµµατα

Κεφάλαιο 10 ο Υποπρογράµµατα Κεφάλαιο 10 ο Υποπρογράµµατα Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Η αντιµετώπιση των σύνθετων προβληµάτων και η ανάπτυξη των αντίστοιχων προγραµµάτων µπορεί να γίνει µε την ιεραρχική σχεδίαση,

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

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

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

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

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

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

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

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

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ Εισαγωγή στην γλώσσα προγραμματισμού Ακαδημαϊκό έτος 2016-2017, Εαρινό εξάμηνο Οι σημειώσεις βασίζονται στα συγγράμματα: A byte of Python (ελληνική

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

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

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

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

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Το λειτουργικό σύστημα. Προγραμματισμός II 1 Το λειτουργικό σύστημα Προγραμματισμός II 1 lalis@inf.uth.gr Συστήματα υπολογιστών Ειδικού σκοπού συστήματα για μια συγκεκριμένη εφαρμογή περιορισμένοι υπολογιστικοί / αποθηκευτικοί πόροι δεν τίθεται θέμα

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

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

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

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

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα 1. Ποια είναι η σχέση της έννοιας του μικροεπεξεργαστή με αυτή του μικροελεγκτή; Α. Ο μικροεπεξεργαστής εμπεριέχει τουλάχιστο έναν μικροελεγκτή. Β. Ο

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

Εισαγωγή στο προγραμματιστικό περιβάλλον ANSI

Εισαγωγή στο προγραμματιστικό περιβάλλον ANSI Εργαστήριο 1ο Εισαγωγή στο προγραμματιστικό περιβάλλον ANSI Σε αυτό το κεφάλαιο θα ασχοληθούμε με την περιγραφή της διαδικασίας μεταγλώττισης ενός προγράμματος C κάνοντας χρήση του μεταγλωττιστή gcc σε

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

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

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

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

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

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΪΟΥ ΑΡΧΗ 1ης ΣΕΛΙ ΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΪΟΥ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ : 7 ΘΕΜΑ Α : Α1. Να

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

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

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

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

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

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα Ενότητες βιβλίου: 6.4, 6.7 Ώρες διδασκαλίας: 1 Τεχνικές σχεδίασης προγραμμάτων Στο βιβλίο γίνεται αναφορά σε μία τεχνική για την ανάπτυξη

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

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Λειτουργικά

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

Στοιχεία από Assembly Γιώργος Μανής

Στοιχεία από Assembly Γιώργος Μανής Στοιχεία από Assembly 8086 Γιώργος Μανής Καταχωρητές καταχωρητές γενικής φύσης καταχωρητές δείκτες καταχωρητές αναφοράς καταχωρητές τµηµάτων ειδικοί καταχωρητές Καταχωρητές γενικής φύσης 16 bit ax, bx,

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

Βασίλειος Κοντογιάννης ΠΕ19

Βασίλειος Κοντογιάννης ΠΕ19 Ενότητα2 Προγραμματιστικά Περιβάλλοντα Δημιουργία Εφαρμογών 5.1 Πρόβλημα και Υπολογιστής Τι ονομάζουμε πρόβλημα; Πρόβλημα θεωρείται κάθε ζήτημα που τίθεται προς επίλυση, κάθε κατάσταση που μας απασχολεί

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

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

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

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

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

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

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

Α. Ερωτήσεις Ανάπτυξης

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

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

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

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

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

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

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

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

Κεφάλαιο 10 Υποπρογράμματα. Καραμαούνας Πολύκαρπος

Κεφάλαιο 10 Υποπρογράμματα. Καραμαούνας Πολύκαρπος Κεφάλαιο 10 Υποπρογράμματα 1 10.1 Τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων.

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

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

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

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

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 6 C & Assembly

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 6 C & Assembly Προηγμένοι Μικροεπεξεργαστές Εργαστήριο 6 C & Assembly Real World Situation Στον πραγματικό κόσμο, κανείς δεν γράφει αποκλειστικά assembly Κουραστικό Δύσκολα συντηρήσιμος κώδικας Μηδενική φορητότητα Μεγάλη

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

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

ΚΕΦΑΛΑΙΑ XIII, XIV. Εκσφαλμάτωση προγράμματος - Κύκλος Ζωής Λογισμικού ΚΕΦΑΛΑΙΑ XIII, XIV Ένας προγραμματιστής ανεξάρτητα από το πόσο ικανός είναι, όταν δημιουργεί ένα πρόγραμμα, είναι φυσικό να κάνει ορισμένα λάθη. Σε ένα πρόγραμμα είναι δυνατό να παρουσιαστούν διαφορετικής

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

Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ

Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ Σχεδιασμός και υλοποίηση υποδομής σημείωσης διεργασιών στον

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

Εισαγωγή εκτελέσιμου κώδικα σε διεργασίες

Εισαγωγή εκτελέσιμου κώδικα σε διεργασίες 0x375 - Thessaloniki Tech Talks Sessions Event 0x2 19 Μαρτίου 2010 Περιεχόμενα 1 Εισαγωγή 2 Η κλήση συστήματος ptrace 3 Νήματα 4 Το πρόγραμμα εισαγωγής κώδικα prez 5 Επίλογος Γιατί; Πολλές φορές θέλουμε

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

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

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

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

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι Εισαγωγή Στον Προγραµµατισµό «C» Πίνακες Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Πίνακες στη C Ένας πίνακας στη C είναι

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

Παραδείγματα Assembly Μέρος Γ

Παραδείγματα Assembly Μέρος Γ Παραδείγματα Assembly Μέρος Γ 1 Άσκηση 1 (α) Σε τι χρησιμεύει η Στοίβα στο Spim, όσο αφορά τη ροή ενός προγράμματος; α) Για προσωρινή αποθήκευση του καταχωρητη $ra σε περιπτώσεις που έχουμε κλήση συνάρτησης

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

Διάλεξη 13η: Δυναμική Διαχείρηση Μνήμης, μέρος 1

Διάλεξη 13η: Δυναμική Διαχείρηση Μνήμης, μέρος 1 Διάλεξη 13η: Δυναμική Διαχείρηση Μνήμης, μέρος 1 Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μνήμη I CS100,

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

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

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

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

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

Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη. Εργαστήριο 4: 4.1 Η Δομή Ελέγχου if Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη. Γενική Μορφή: Παρατηρήσεις:

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

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Τμήμα Πληροφορικής & Επικοινωνιών Τομέας Υπολογιστικών Τεχνικών & Συστημάτων Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Ιωάννης Γεωργουδάκης - Πάρις Μαστοροκώστας Σεπτέμβριος 2011 ΠΕΡΙΕΧΟΜΕΝΑ

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

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

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

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

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

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εργαστήριο 1η εβδομάδα. Κοζάνη, 5 Οκτωβρίου 2007. Βασικά στοιχεία γραφής προγραμμάτων με τη C: α) Case Sensitive!!! β) Δυνατότητα εισαγωγής σχολίων με /*

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

Λειτουργικά Συστήματα (ΗΥ222)

Λειτουργικά Συστήματα (ΗΥ222) Λειτουργικά Συστήματα (ΗΥ222) Διάλεξη 7: Εισαγωγή στην Ιδεατή Μνήμη - Τμηματοποίηση Η Ευτυχισμένη Κοινωνία των Διεργασιών 2 Πολλαπλές χαρούμενες διεργασίες στο σύστημα Και αν το Visual Studio χρειαστεί

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

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Το λειτουργικό σύστημα. Προγραμματισμός II 1 Το λειτουργικό σύστημα Προγραμματισμός II 1 lalis@inf.uth.gr Συστήματα υπολογιστών Ειδικού σκοπού συστήματα για μια συγκεκριμένη εφαρμογή η εφαρμογή είναι γνωστή εκ των προτέρων περιορισμένοι υπολογιστικοί

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

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 10: Πέρασμα Παραμέτρων σε Διαδικασίες. Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής

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

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

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

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

Εισαγωγή στο περιβάλλον Code::Blocks

Εισαγωγή στο περιβάλλον Code::Blocks Εισαγωγή στο περιβάλλον Code::Blocks Στο παρόν εγχειρίδιο παρουσιάζεται η διαδικασία ανάπτυξης, μεταγλώττισης και εκτέλεσης ενός προγράμματος C στο περιβάλλον του Code::Blocks. Η διαδικασία αυτή παρουσιάζεται

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

Eternal War in Memory. Dimitris Mitropoulos

Eternal War in Memory. Dimitris Mitropoulos Eternal War in Memory Dimitris Mitropoulos dimitro@di.uoa.gr Εισαγωγικά functions Μια μέθοδος (function), είναι ένα επαναχρησιμοποιήσιμο (reusable) κομμάτι κώδικα. Ένα πρόγραμμα καθώς εκτελείται μπορεί

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

Χειρισµός Σφαλµάτων. Γρηγόρης Τσουµάκας. Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης. Έκδοση:

Χειρισµός Σφαλµάτων. Γρηγόρης Τσουµάκας. Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης. Έκδοση: Χειρισµός Σφαλµάτων Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Έκδοση: 2010.12.06 Σφάλµατα, Σφάλµατα, Σφάλµατα 2 εν υπάρχουν προγράµµατα χωρίς λογικά λάθη Υλοποίηση που

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

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 6: Διαδικασίες, Σωρός, Διαφανείς συναρτήσεις Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής

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

ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ

ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ 4 ο Εξάμηνο Μαδεμλής Ιωάννης ΥΠΟΡΟΥΤΙΝΕΣ ΕΡΓΑΣΤΗΡΙΟ 6 Οι υπορουτίνες αποτελούν αυτόνομα τμήματα κώδικα που διεκπεραιώνουν μία συγκεκριμένη εργασία και μπορούμε να τα καλούμε

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

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής

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

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

Ανάπτυξη Plugins για το AgentSheets

Ανάπτυξη Plugins για το AgentSheets Ανάπτυξη Plugins για το AgentSheets Thought Amplifier AgentSheets Ανάπτυξη Plugins AgentSheets 2.5 Συγγραφείς Τεκµηρίωσης: Alexander Repenning και Ronald Sudomo Εξελληνισµός Τεκµηρίωσης: Λίνος Βίγκλας,

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

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL 8.1. Εισαγωγή ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PACAL Πως προέκυψε η γλώσσα προγραμματισμού Pascal και ποια είναι τα γενικά της χαρακτηριστικά; Σχεδιάστηκε από τον Ελβετό επιστήμονα της Πληροφορικής Nicklaus Wirth to

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

ΕΡΓΑΣΤΗΡΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Τµήµα Πληροφορικής και Τηλεπικοινωνιών

ΕΡΓΑΣΤΗΡΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Τµήµα Πληροφορικής και Τηλεπικοινωνιών ΕΡΓΑΣΤΗΡΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΗ C Τµήµα Πληροφορικής και Τηλεπικοινωνιών Περιεχόµενα Εισαγωγή Πρόγραµµα Φάσεις Υλοποίησης µε χρήση του εργαλείου DEV C + + οµή Προγράµµατος Η συνάρτηση main Μεταβλητές Τι είναι

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

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

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

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

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

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

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

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

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

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

Περιεχόμενο του μαθήματος

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

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

Sheet1_2. - Δεν απελευθερώνεις τη δυναµικά δεσµευµένη µνήµη. - Η έξοδος του προγράµµατός σου δεν είναι ακριβώς όπως ζητούσε η άσκηση.

Sheet1_2. - Δεν απελευθερώνεις τη δυναµικά δεσµευµένη µνήµη. - Η έξοδος του προγράµµατός σου δεν είναι ακριβώς όπως ζητούσε η άσκηση. Sheet1_2 AEM 0001 0002 0003 0004 0006 COMMENTS - Segmentation fault λόγω λάθους στην αναδροµή. Δες τη λύση, αλλά προσπάθησε να το ξανακάνεις και στο σπίτι για εξ - Πρόσεχε λίγο τη στοίχιση - Καλή δουλειά

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

Sheet2 Α.Μ FAIL. οριακό PASS. - Έπρεπε να χρησιµοποιήσετε συναρτήσεις από τη string.h

Sheet2 Α.Μ FAIL. οριακό PASS. - Έπρεπε να χρησιµοποιήσετε συναρτήσεις από τη string.h Α.Μ. 1375 FAIL 1413 1417 1420 1421 FAIL 1422 FAIL 1424 1425 FAIL 1426 FAIL - Πρώτα να ελέγχετε αν η malloc επέστρεψε NULL και µετά να προσπαθείτε να προσπελάσετε τη δεσµευµένη µνήµη - Όταν διαβάζετε string

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

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Μεταγλώτιση, σύνδεση

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Μεταγλώτιση, σύνδεση ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Μεταγλώτιση, σύνδεση Αρης Ευθυμίου Ανακοινώσεις! Βαθμοί: 1ης εργαστηριακής άσκησης Βαθμός 0 χωρίς σχόλια δεν έχω πάρει την άσκηση! ελέγξτε μήπως δεν το στέλνετε στο σωστό

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

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

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

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

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστηµάτων Βάσεων εδοµένων Εαρινό Εξάµηνο 2009 2010

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστηµάτων Βάσεων εδοµένων Εαρινό Εξάµηνο 2009 2010 Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστηµάτων Βάσεων εδοµένων Εαρινό Εξάµηνο 2009 2010 Καθηγητής. Γουνόπουλος Άσκηση 1 Σκοπός της εργασίας αυτής είναι η κατανόηση της εσωτερικής λειτουργίας

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

- Εισαγωγή - Επίπεδα μνήμης - Ολοκληρωμένα κυκλώματα μνήμης - Συσκευασίες μνήμης προσωπικών υπολογιστών

- Εισαγωγή - Επίπεδα μνήμης - Ολοκληρωμένα κυκλώματα μνήμης - Συσκευασίες μνήμης προσωπικών υπολογιστών Μάθημα 4.5 Η Μνήμη - Εισαγωγή - Επίπεδα μνήμης - Ολοκληρωμένα κυκλώματα μνήμης - Συσκευασίες μνήμης προσωπικών υπολογιστών Όταν ολοκληρώσεις το μάθημα αυτό θα μπορείς: Να αναφέρεις τα κυριότερα είδη μνήμης

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

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

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

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

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ Νο 11 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και

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

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής

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

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι. Λειτουργικά Συστήματα Ι ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ. Επ. Καθ. Κ. Λαμπρινουδάκης

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι. Λειτουργικά Συστήματα Ι ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ. Επ. Καθ. Κ. Λαμπρινουδάκης ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι Μάθημα: Λειτουργικά Συστήματα Ι ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ Διδάσκων: Επ. Καθ. Κ. Λαμπρινουδάκης clam@unipi.gr 1 ΕΙΣΑΓΩΓΗ Μνήμη : Πόρος ζωτικής σημασίας του οποίου η διαχείριση απαιτεί ιδιαίτερη

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

Μάριος Αγγελίδης

Μάριος Αγγελίδης ΠΙΝΑΚΕΣ Ενότητες βιβλίου: 3.3, 9.1-9.3 Ώρες διδασκαλίας: 1 Σε όλα τα προβλήματα μέχρι τώρα διαβάζαμε μία τιμή την φορά, την επεξεργαζόμασταν και χωρίς να την αποθηκεύουμε επαναλαμβάναμε την διαδικασία

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

Εισαγωγή Βασικές εντολές Εκτέλεση βήµα-βήµα Εξέταση/Ανάθεση GDB-101. Νίκος Ντάρµος Τµήµα Πληροφορικής Πανεπιστήµιο Ιωαννίνων

Εισαγωγή Βασικές εντολές Εκτέλεση βήµα-βήµα Εξέταση/Ανάθεση GDB-101. Νίκος Ντάρµος Τµήµα Πληροφορικής Πανεπιστήµιο Ιωαννίνων Νίκος Ντάρµος Τµήµα Πληροφορικής Πανεπιστήµιο Ιωαννίνων Ιωάννινα, Μάιος 2010 Βασικές λειτουργίες ενός debugger: Εκτέλεση προγράµµατος ϐήµα-ϐήµα. Παρακολούθηση τιµών µεταβλητών. Εξέταση

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

Αναδρομή. Τι γνωρίζετε για τη δυνατότητα «κλήσης» αλγορίθμων; Τι νόημα έχει;

Αναδρομή. Τι γνωρίζετε για τη δυνατότητα «κλήσης» αλγορίθμων; Τι νόημα έχει; ΜΑΘΗΜΑ 7 Κλήση αλγορίθμου από αλγόριθμο Αναδρομή Σ χ ο λ ι κ ο Β ι β λ ι ο ΥΠΟΚΕΦΑΛΑΙΟ 2.2.7: ΕΝΤΟΛΕΣ ΚΑΙ ΔΟΜΕΣ ΑΛΓΟΡΙΘΜΟΥ ΠΑΡΑΓΡΑΦΟI 2.2.7.5: Κλήση αλγορίθμου από αλγόριθμο 2.2.7.6: Αναδρομή εισαγωγη

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

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

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

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

Κεφάλαιο 6 ο Εισαγωγή στον Προγραμματισμό 1

Κεφάλαιο 6 ο Εισαγωγή στον Προγραμματισμό 1 Κεφάλαιο 6 ο Εισαγωγή στον Προγραμματισμό 1 Ποιες γλώσσες αναφέρονται ως φυσικές και ποιες ως τεχνητές; Ως φυσικές γλώσσες αναφέρονται εκείνες οι οποίες χρησιμοποιούνται για την επικοινωνία μεταξύ ανθρώπων,

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

Εισαγωγή ΕΙΣΑΓΩΓΗ. Γεώργιος Παπαϊωάννου ( )

Εισαγωγή ΕΙΣΑΓΩΓΗ. Γεώργιος Παπαϊωάννου ( ) ΕΙΣΑΓΩΓΗ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Εισαγωγή στη C++ Ιστορικά στοιχεία για τη C/C++ Ένα βασικό πρόγραμμα Μεταγλώττιση ενός προγράμματος Τελευταία ενημέρωση: Σεπτέμβριος 2016

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

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

ΚΥΚΛΟΣ ΣΤΑΤΙΣΤΙΚΗΣ ΕΡΕΥΝΑΣ ΚΥΚΛΟΣ ΣΤΑΤΙΣΤΙΚΗΣ ΕΡΕΥΝΑΣ Βασίλης Καραγιάννης Η παρέμβαση πραγματοποιήθηκε στα τμήματα Β2 και Γ2 του 41 ου Γυμνασίου Αθήνας και διήρκησε τρεις διδακτικές ώρες για κάθε τμήμα. Αρχικά οι μαθητές συνέλλεξαν

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

Ανάλυση Επιδόσεων Συστημάτων Πραγματικού Χρόνου

Ανάλυση Επιδόσεων Συστημάτων Πραγματικού Χρόνου ΣΥΣΤΗΜΑΤΑ ΠΡΑΓΜΑΤΙΚΟΥ ΧΡΟΝΟΥ Μάθημα Επιλογής Ανάλυση Επιδόσεων Συστημάτων Πραγματικού Χρόνου Δρ. Γεώργιος Κεραμίδας e-mail: gkeramidas@teimes.gr 1 Διεργασίες: Κατάσταση Εκτέλεσης (3-σταδίων) Κατάσταση

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

Εργαστήριο 4. Εαρινό Εξάμηνο ΠΡΟΣΟΧΗ: Αρχίστε νωρίς το Εργαστήριο 4. Οι ασκήσεις είναι πιο απαιτητικές από τα προηγούμενα εργαστήρια.

Εργαστήριο 4. Εαρινό Εξάμηνο ΠΡΟΣΟΧΗ: Αρχίστε νωρίς το Εργαστήριο 4. Οι ασκήσεις είναι πιο απαιτητικές από τα προηγούμενα εργαστήρια. Τομέας Υλικού και Αρχιτεκτονικής Υπολογιστών ΗΥ134 - Εισαγωγή στην Οργάνωση και Σχεδίαση Η/Υ 1 Εργαστήριο 4 Εαρινό Εξάμηνο 2012-2013 Στόχοι του εργαστηρίου Χρήση στοίβας Συναρτήσεις ΠΡΟΣΟΧΗ: Αρχίστε νωρίς

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 3. Στοίβες & Ουρές 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 4/11/2016 Ανακεφαλαίωση:

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

ΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα

ΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα Τύπος Δεδομένων: ΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα - Ένας ΑΤΔ είναι ένα μαθηματικό μοντέλο (οντότητα)

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι 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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07 Πρώτοι αριθμοί ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07 Ένας ακέραιος μεγαλύτερος του 1 είναι πρώτος αν έχει ακριβώς δύο διαιρέτες (τη μονάδα και τον εαυτό του). Πρόβλημα: έλεγχος

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

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

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

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

Πληροφοριακά Συστήματα Διοίκησης. Επισκόπηση μοντέλων λήψης αποφάσεων Τεχνικές Μαθηματικού Προγραμματισμού

Πληροφοριακά Συστήματα Διοίκησης. Επισκόπηση μοντέλων λήψης αποφάσεων Τεχνικές Μαθηματικού Προγραμματισμού Πληροφοριακά Συστήματα Διοίκησης Επισκόπηση μοντέλων λήψης αποφάσεων Τεχνικές Μαθηματικού Προγραμματισμού Σημασία μοντέλου Το μοντέλο δημιουργεί μια λογική δομή μέσω της οποίας αποκτούμε μια χρήσιμη άποψη

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

scanf() scanf() stdin scanf() printf() int float double %lf float

scanf() scanf() stdin scanf() printf() int float double %lf float Εισαγωγή Στον Προγραµµατισµό «C» Είσοδος Δεδοµένων Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Η συνάρτηση scanf() Η συνάρτηση

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

Υπολογιστικά Συστήματα

Υπολογιστικά Συστήματα Υπολογιστικά Συστήματα Ενότητα 3: Βασικά στοιχεία της γλώσσας προγραμματισμού Visual Basic for Applications (VBA) Σαπρίκης Ευάγγελος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Άδειες Χρήσης Το παρόν εκπαιδευτικό

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

Χρησιμοποιώντας συναρτήσεις

Χρησιμοποιώντας συναρτήσεις Τετράδιο μαθητή ΘΕ18: Συναρτήσεις Όνομα(τα): Όνομα Η/Υ: Τμήμα: Ημερομηνία: Χρησιμοποιώντας συναρτήσεις Ξεκινήστε το Χώρο Δραστηριοτήτων, επιλέξτε τη θεματική ενότητα: ΘΕ18: Συναρτήσεις και επιλέξτε την

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