ΗΥ150 – ΠρογραμματισμόςΞενοφών Ζαμπούλης The C Preprocessor.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
ΕΙΣΑΓΩΓΗ ΣΤΟ DOS (Disk Operating System)
Advertisements

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φροντιστήρια Εισηγητής: Σπύρος Αργυρόπουλος Μέλος ΕΤΕΠ Εργαστήριο Προγραμματισμού & Τεχνολογίας Ευφυών Συστημάτων.
NIKOΛΑΟΣ ΝΤΙΡΛΗΣ 5ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΙΘΟΥΣΑ Β4 1.  Ένα thread έχει: ID, program counter, register set, stack  Μοιράζεται με τα άλλα threads της ίδιας διεργασίας.
“ Ἡ ἀ γάπη ἀ νυπόκριτος. ἀ ποστυγο ῦ ντες τ ὸ πονηρόν, κολλώμενοι τ ῷ ἀ γαθ ῷ, τ ῇ φιλαδελφί ᾳ ε ἰ ς ἀ λλήλους φιλόστοργοι, τ ῇ τιμ ῇ ἀ λλήλους προηγούμενοι.
MΑΘ 106/3122Ξενοφών Ζαμπούλης ΜΑΘ 106/3122 Γλώσσα Προγραμματισμού Δείκτες (Pointers)
WRITING TEACHER ELENI ROSSIDOU ©Υπουργείο Παιδείας και Πολιτισμού.
1 Κλήσεις συναρτήσεων και προγραμματισμός με μηχανές καταστάσεων.
ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης 1 Δείκτες σε συναρτήσεις Δείκτης σε συνάρτηση – Περιέχει τη διεύθυνση του κώδικα της συνάρτησης – Ό π ως ένας.
ΜΑΘ3122/106 – Γλώσσα προγραμματισμού Ξενοφών Ζαμπούλης ΜΑΘ3122/106 – Γλώσσα προγραμματισμού Επανάληψη.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Συναρτήσεις.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση Δεδομένων.
ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης ΗΥ -150 Προγραμματισμός Αρχεία.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση Δεδομένων.
ΗΥ150 – ΠρογραμματισμόςΞ. Ζαμπούλης ΗΥ-150 Προγραμματισμός Αρχεία.
HY150Ξενοφών Ζαμπούλης HY150 Ε π ι π λέον στοιχεία της C.
ΗΥ Παπαευσταθίου Γιάννης1 Clock generation.
ΗΥ Καλοκαιρινός Γιώργος1 PCI Bus Pin List. ΗΥ Καλοκαιρινός Γιώργος2 Initiator Target.
ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης 1 getchar() /* char_count.c A program to count characters of input. */ main() { int c ; int count = 0; while.
ΗΥ150 – ΠρογραμματισμόςΞενοφών Ζαμπούλης ΗΥ-150 Προγραμματισμός Αναδρομή (1/2)
ΗΥ Καλοκαιρινός Γιώργος1 Bus. ΗΥ Καλοκαιρινός Γιώργος2 MCS51.
6/26/2015HY220: Ιάκωβος Μαυροειδής1 HY220 Asynchronous Circuits.
ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ-ΓΛΩΣΣΑ C / 06 1 ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΓΛΩΣΣΑ C Αρχεία (files)
Week 11 Quiz Sentence #2. The sentence. λαλο ῦ μεν ε ἰ δότες ὅ τι ὁ ἐ γείρας τ ὸ ν κύριον Ἰ ησο ῦ ν κα ὶ ἡ μ ᾶ ς σ ὺ ν Ἰ ησο ῦ ἐ γερε ῖ κα ὶ παραστήσει.
WRITING B LYCEUM Teacher Eleni Rossidou ©Υπουργείο Παιδείας και Πολιτισμού.
Πολυώνυμα και Σειρές Taylor 1. Motivation Why do we use approximations? –They are made up of the simplest functions – polynomials. –We can differentiate.
Install WINDOWS 7 Κουτσικαρέλης Κων / νος Κουφοκώστας Γεώργιος Κάτσας Παναγιώτης Κουνάνος Ευάγγελος Μ π ουσάη Ελισόν Τάξη Β΄ Τομέας Πληροφορικής 2014 –’15.
Προσομοίωση Δικτύων 4η Άσκηση Σύνθετες τοπολογίες, διακοπή συνδέσεων, δυναμική δρομολόγηση.
Σχεδίαση ψηφιακών συστημάτων Ενότητα 4: Finite State Machines Algorithmic State Machine (ASM) Charts, and VHDL code Ιωάννης Βογιατζής Τμήμα Μηχανικών Πληροφορικής.
Προσομοίωση Δικτύων 3η Άσκηση Δημιουργία, διαμόρφωση μελέτη σύνθετων τοπολογιών.
Αριθμητική Επίλυση Διαφορικών Εξισώσεων 1. Συνήθης Δ.Ε. 1 ανεξάρτητη μεταβλητή x 1 εξαρτημένη μεταβλητή y Καθώς και παράγωγοι της y μέχρι n τάξης, στη.
Ψηφιακά Παιχνίδια και μάθηση Δρ. Νικολέτα Γιαννούτσου Εργαστήριο Εκπαιδευτικής Τεχνολογίας.
ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ Η/Υ 1 Εισαγωγή στη γλώσσα Προγραμματισμού C ΠΙΝΑΚΕΣ (arrays)
Διαχείριση Διαδικτυακής Φήμης! Do the Online Reputation Check! «Ημέρα Ασφαλούς Διαδικτύου 2015» Ε. Κοντοπίδη, ΠΕ19.
Μαθαίνω με “υπότιτλους”
Εισαγωγή στον Προγ/μό Η/Υ
Αντικειμενοστραφής Προγραμματισμός ΙΙ
Ερωτήσεις –απαντήσεις Ομάδων Εργασίας
Αντικειμενοστραφής Προγραμματισμός ΙΙ
Εισαγωγή στον Προγ/μό Υπολογιστών
Λ. Μήτρου, Επικ. Καθηγήτρια – Πανεπιστήμιο Αιγαίου Κανονιστικές και Κοινωνικές Διαστάσεις της Κοινωνίας της Πληροφορίας /3 Χειμερινό εξάμηνο
JSIS E 111: Elementary Modern Greek
Ψηφιακeς ιδEες και αξIες
ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΓΛΩΣΣΑ C
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Keystroke-Level Model
JSIS E 111: Elementary Modern Greek
Adjectives Introduction to Greek By Stephen Curto For Intro to Greek
We are the world Τραγούδι με μήνυμα για την ισότητα των παιδιών και όλων των ανθρώπων 13/12/2016 Παναγιώτης Γαλατσίδας.
(ALPHA BANK – EUROBANK – PIRAEUS BANK)
Οσμές στη Σχεδίαση του Λογισμικού
2013 edition Wilfred E. Major
Μία πρακτική εισαγωγή στην χρήση του R
Πανεπιστήμιο Θεσσαλίας
Εκπαιδευτική ρομποτική
Solving Trig Equations
Συναρτήσεις στη C++ ΠΕΡΙΕΧΟΜΕΝΑ Εισαγωγή
Find: φ σ3 = 400 [lb/ft2] CD test Δσ = 1,000 [lb/ft2] Sand 34˚ 36˚ 38˚
aka Mathematical Models and Applications
GLY 326 Structural Geology
Find: ρc [in] from load γT=110 [lb/ft3] γT=100 [lb/ft3]
Financial Market Theory
Διάλεξη #10: Εκτέλεση Java χωρίς το BlueJ
Υπο-τύποι και πολυμορφισμός
Deriving the equations of
Find: ρc [in] from load (4 layers)
CPSC-608 Database Systems
ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΓΛΩΣΣΑ C
ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΓΛΩΣΣΑ C
Baggy Bounds checking by Akritidis, Costa, Castro, and Hand
Μεταγράφημα παρουσίασης:

ΗΥ150 – ΠρογραμματισμόςΞενοφών Ζαμπούλης The C Preprocessor

ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης 2 Constants #define MAXSIZE 256 This will lead to the value 256 being substituted for each occurrence of the word MAXSIZE in the file.

ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης 3 Macros Here is an example of a macro which won't work. #define DOUBLE(x) x+x For statement: a = DOUBLE(b) * c; will be expanded to a = b+b * c; Since * has a higher priority than +, the compiler will treat it as: a = b + (b * c); But: #define DOUBLE(x) (x+x) Here the brackets around the definition force the expression to be evaluated before any surrounding operators are applied.

ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης 4 Verbose #define EBUG #ifdef EBUG printf(“Debug info: variable foo has value %d\n”,foo); #endif

ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης 5 Verbose #define EBUG #ifdef EBUG printf(“Debug info: variable foo has value %d\n”,foo); #elseif printf(“No need for debug\n”); #endif

ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης 6 Verbose gcc –DEBUG myprogram.c

ΗΥ150 – ΠρογραμματισμόςΞενοφών Ζαμπούλης Standard I/O

ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης 8 UNIX File Redirection To run prog1 but read data from file infile instead of the keyboard, you would type prog1 < infile To run prog1 and write data to outfile instead of the screen, you would type prog1 > outfile Both can also be combined as in prog1 outfile Redirection is simple, and allows a single program to read or write data to or from files or the screen and keyboard.

ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης 9 Character Input and Output char c = getchar(); void putchar(char c);

ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης 10 EOF, The End of File Marker EOF is a character which indicates the end of a file. It is returned by read commands of the getc and scanf families when they try to read beyond the end of a file / input.

ΗΥ150 – ΠρογραμματισμόςΞενοφών Ζαμπούλης Πως ψάχνουμε για εντολές βιβλιοθήκης

ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης 12 Εντολή συστήματος “man” If you already know the name of the function you want, you can read the page by typing (to find about strcat). > man 3 strcat If you don't know the name of the function, a full list is included in the introductory page for section 3 of the manual. To read this, type > man 3 intro There are approximately 700 functions described here. This number tends to increase with each upgrade of the system. On any manual page, the SYNOPSIS section will include information on the use of the function. For example #include char *ctime(time_t *clock) This means that you must have #include in your file before you call ctime. And that function ctime takes a pointer to type time_t as an argument, and returns a string (char *). time_t will probably be defined in the same manual page. The DESCRIPTION section will then give a short description of what the function does. For example ctime() converts a long integer, pointed to by clock, to a 26-character string of the form produced by asctime().

ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης 13 Οργάνωση κώδικα Σε μεγαλύτερα προγράμματα, οι δηλώσεις των συναρτήσεων συγκεντρώνονται σε ένα ή περισσότερα header files (κατάληξη.h), τα οποία συμπεριλαμβάνονται κατά την προεπεξεργασία του κώδικα: #include "name.h" όπου name.h το όνομα του header file και μπορεί να περιλαμβάνει και το path. Oι headers που ορίζει ο προγραμματιστής περικλείονται σε “”. Oι headers του συστήματος περικλείονται σε <>. Με την συμπερίληψη των κατάλληλων headers: – ο compiler γνωρίζει τον τρόπο κλήσης των συναρτήσεων ή εκτελέσιμων βιβλιοθηκών που χρειάζεται ένα τμήμα κώδικα. – ο προγραμματιστής μπορεί να επισκοπήσει εύκολα τη λειτουργικότητα του κώδικα

ΗΥ150 – ΠρογραμματισμόςΞενοφών Ζαμπούλης ΗΥ-150 Προγραμματισμός Ασκήσεις

ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης 15 Φωλιασμένοι βρόχοι /*Πως θα εκτυπώναμε το παρακάτω σχήμα;*/ * ** *** **** ***** ****** ******* ****************

ΗΥ150 – ΠρογραμματισμόςΞενοφών Ζαμπούλης Μηχανές Πεπερασμένων Καταστάσεων Finite State Machines

ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης 17 Finite State Machines letter letter | digit I EOF S A

ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης 18 Finite State Machines viewed as Graphs The start state A transition a A state Accepting/Terminal state

ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης 19 Example: Integer Literals FSM that accepts integer literals with an optional + or - sign: + digit, ‘_’ S B A - digit digit, ‘_’

ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης 20 FSM’s in Theory Simple theoretical construct – Set of states (S) – Input vocabulary (I) – Transitional function T(s,i) A way of denoting how an program can change its state over time.

ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης 21 FSM’s in Practice Each state represents some desired behavior. The transition function T resides across all states. – Each state “knows” how to transition to other states. Accepting states (those that require more input) are considered to be the end of execution for an FSM. Input to the FSM continues as long as the game continues.

ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης 22 FSM’s in Games Character AI can be modeled as a sequence of mental states. “World” events can force a change in state. Gather Treasure Flee Fight Monster In Sight No Monster Monster DeadCornered

ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης 23 FSM Implementation - Code Simplest method After an action, the state might change. void RunLogic( int state ) { switch( state ) { case 0: //Wander Wander(); if( SeeEnemy() ) state = 1; if( Dead() ) state = 2; break; case 1: //Attack Attack(); state = 0; if( Dead() ) state = 2; break; case 3: //Dead DeleteAvatar(); break; } return statel }

ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης 24 Παράδειγμα: Robocode Καθορισμός Καταστάσεων – Attack, Evade, Search, etc. Υλοποίηση αλλαγής κατάστασης – Include an error state that is noticeable. Αποσφαμάτωση (debugging) – Verbosity levels are a must.

ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης 25 More FSM Extensions Fuzzy State Machines – Degrees of truth allow multiple FSM’s to contribute to character actions. Multiple FSM’s – High level FSM coordinates several smaller FSM’s. Polymorphic FSM’s – Allows common behavior to be shared. – Soldier -> German -> Machine Gunner

ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης 26 Run Length Encoding Run length encoding (RLE) απλούστερη μέθοδος συμπίεσης. Κωδικοποιεί πληροφορία για την επανάληψη των χαρακτήρων / στοιχείων εισόδου Είναι ο αλγόριθμος που χρησιμοποιεί το FAX (τηλεομοιοτυπία)

ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης 27 RLE As a basic example, consider the following string of numbers: There is a fair amount of redundancy there. In RLE notation, this same string could be expressed as:

ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης 28 RLE Apply the same RLE compression scheme as before:

ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης 29 Παράδειγμα WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWW WWWWWWWWWWWWWWWWWWWBWWWWWWWWWW WWWW 12W1B12W3B24W1B14W