Κάθε πρόγραμμα έχει, κατ αρχήν, αντιστοιχίσει στο ρεύμα stdin το πληκτρολόγιο και στα ρεύματα stdout και stderr την οθόνη.

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

Download "Κάθε πρόγραμμα έχει, κατ αρχήν, αντιστοιχίσει στο ρεύμα stdin το πληκτρολόγιο και στα ρεύματα stdout και stderr την οθόνη."

Transcript

1 136 Είσοδος και έξοδος Κάθε πρόγραμμα πρέπει να είναι σε θέση να επικοινωνεί με το περιβάλλον του, δηλαδή να διαβάζει δεδομένα και να γράϕει αποτελέσματα, όποτε το χρειάζεται. Στην C, οι μηχανισμοί εισόδου/εξόδου παρέχονται από μία σειρά συναρτήσεων, οι οποίες περιλαμβάνονται στην πρότυπη βιβλιοθήκη εισόδου/εξόδου της γλώσσας. Οταν χρησιμοποιούμε συναρτήσεις της βιβλιοθήκης αυτής, πρέπει να συμπεριλαμβάνουμε στα προγράμματά μας και το σχετικό αρχείο επικεϕαλίδας: #include <stdio.h> Οι μονάδες εισόδου/εξόδου είναι τα ρεύματα. Μπορούμε να συσχετίσουμε ένα αρχείο, ανοίγοντάς το, με ένα ρεύμα, αλλά υπάρχουν και προκαθορισμένα ρεύματα, αυτό της πρότυπης εισόδου (stdin), της πρότυπης εξόδου (stdout) και της πρότυπης εξόδου για διαγνωστικά μηνύματα (stderr). Κάθε πρόγραμμα έχει, κατ αρχήν, αντιστοιχίσει στο ρεύμα stdin το πληκτρολόγιο και στα ρεύματα stdout και stderr την οθόνη. Η διαϕορά μεταξύ stdout και stderr συνίσταται στο ότι συνηθίζεται τα προγράμματα να εκτυπώνουν τα αποτελέσματά τους στο stdout και διαγνωστικά μηνύματα στο stderr.

2 137 Σε πολλά περιβάλλοντα (Unix, Command Prompt των Windows, Cygwin, κλπ.) υπάρχει η δυνατότητα ένα πρόγραμμα που διαβάζει τα δεδομένα του από την πρότυπη είσοδο (stdin) να μπορεί να κληθεί με ανακατεύθυνση της πρότυπης εισόδου σε κάποιο αρχείο, οπότε θα διαβάζει πλέον τα δεδομένα του από το αρχείο αυτό. Παράδειγμα: %./myprog < inp_file Εδώ, το πρόγραμμα./myprog, αντί να διαβάσει τα δεδομένα του από το πληκτρολόγιο, θα τροϕοδοτηθεί με αυτά από το αρχείο inp file. Ομοίως, μπορούμε να έχουμε και ανακατεύθυνση της πρότυπης εξόδου (stdout) σε αρχείο, οπότε, αντί να εκτυπώνονται τα αποτελέσματα ενός προγράμματος στην οθόνη, ϕυλάσσονται στο αρχείο αυτό. Παράδειγμα: %./otherprog arg1 > out_file Εδώ, αντί να εκτυπωθούν τα αποτελέσματα του προγράμματος./otherprog στην οθόνη, θα ϕυλαχθούν στο αρχείο out file.

3 138 Επίσης, μπορούμε να δημιουργήσουμε σωληνώσεις από προγράμματα, δηλαδή η έξοδος του πρώτου προγράμματος της σωλήνωσης να είναι είσοδος για το δεύτερο πρόγραμμα, του οποίου η έξοδος να είναι είσοδος για το τρίτο, κ.ο.κ. Παράδειγμα: %./prog /prog2./prog3 27./prog Εδώ, τα προγράμματα./prog1,./prog2,./prog3 και./prog4 συμμετέχουν σε μία σωλήνωση, όπου η έξοδος καθενός είναι είσοδος στο επόμενο πρόγραμμα στη σωλήνωση. Επισημαίνεται ότι τις ανακατευθύνσεις (εισόδου και εξόδου) και τις σωληνώσεις τις διαχειρίζεται το περιβάλλον εκτέλεσης των προγραμμάτων (λειτουργικό σύστημα ή οτιδήποτε άλλο). Τα προγράμματα που συμμετέχουν σ αυτές ποτέ δεν το μαθαίνουν. Με άλλα λόγια, οι χαρακτήρες <, > και, καθώς και τα ονόματα αρχείων στις ανακατευθύνσεις δεν είναι ορίσματα στη γραμμή εντολών και δεν μπορούμε (και δεν χρειάζεται) να τα προσπελάσουμε μέσω argc και argv. Στη συνέχεια, περιγράϕονται συνοπτικά οι πιο συχνά χρησιμοποιούμενες συναρτήσεις της πρότυπης βιβλιοθήκης εισόδου/εξόδου Περί εισόδου/εξόδου στην C, υπάρχει εκτεταμένη αναϕορά στο Κεϕάλαιο 7 του [KR] (σελ ).

4 139 int getchar(void) Επιστρέϕει τον επόμενο χαρακτήρα από το stdin, η EOF, αν έχει διαβαστεί όλη η είσοδος. int putchar(int ch) Γράϕει τον χαρακτήρα ch στο stdout. Επιστρέϕει τον χαρακτήρα αυτό, ή EOF σε περίπτωση λάθους. int puts(const char *s) Γράϕει τη συμβολοσειρά s στο stdout και αμέσως μετά μία αλλαγή γραμμής. Επιστρέϕει το πλήθος των χαρακτήρων που γράϕτηκαν, ή EOF σε περίπτωση λάθους. aþ int printf(const char *format, <op> 1, <op> 2,...) Γράϕει στο stdout τα ορίσματα <op> 1, <op> 2,..., σύμϕωνα με την οδηγία ϕόρμας format, και επιστρέϕει το πλήθος των χαρακτήρων που γράϕτηκαν. Η συμβολοσειρά format περιλαμβάνει χαρακτήρες που μεταϕέρονται αυτούσιοι στην έξοδο και προδιαγραϕές μετατροπής για την εκτύπωση των <op> 1, <op> 2,... Μία προδιαγραϕή μετατροπής αρχίζει με τον χαρακτήρα % και τερματίζει με ένα χαρακτήρα που δείχνει το είδος της μετατροπής που πρέπει να γίνει. aþ Upˆrqei kai h adelf sunˆrthsh char *gets(char *s), gia thn anˆgnwsh apì to stdin mðac sumboloseirˆc, allˆ den prèpei na qrhsimopoieðtai, gia lìgouc asfaleðac. Mˆlista, o gcc dðnei sqetik proeidopoðhsh ìtan qrhsimopoioôme aut n th sunˆrthsh s' èna prìgramma. Ant' aut c, ja doôme sth sunèqeia thn asfal sunˆrthsh fgets.

5 140 Η γενική μορϕή μίας προδιαγραϕής μετατροπής είναι η εξής: %[τρ][εππ][.ακρ][μμ]χμ Ο,τι βρίσκεται μέσα σε [ και ], μπορεί και να μην υπάρχει. Μεταξύ του % και του χαρακτήρα μετατροπής (χμ) μπορεί να υπάρχουν: Κάποιοι τροποποιητές (τρ), με οποιαδήποτε σειρά, δηλαδή ένα -, που επιβάλλει αριστερή στοίχιση, ή/και ένα +, που καθορίζει ότι ο αριθμός θα εμϕανίζεται πάντα με πρόσημο, ή/και ένα 0, που, για αριθμούς, επιβάλλει τη συμπλήρωση του πλάτους πεδίου με μηδενικά στην αρχή, εϕ όσον έχουμε δεξιά στοίχιση, δηλαδή αν δεν έχει δοθεί και το - σαν τροποποιητής. Το ελάχιστο πλάτος πεδίου (εππ). Συμπληρώνονται κενά αριστερά ή δεξιά, ανάλογα με τη στοίχιση, ή μηδενικά στην αρχή αν έχουμε δεξιά στοίχιση και έχει δοθεί και ή ένδειξη 0 ότι θέλουμε συμπλήρωση με μηδενικά. Μία τελεία. και ένας αριθμός, η ακρίβεια (ακρ), που καθορίζει το μέγιστο αριθμό χαρακτήρων που θα εκτυπωθούν για ένα αλϕαριθμητικό, τον αριθμό των ψηϕίων aþ για αριθμό κινητής υποδιαστολής bþ ή τον ελάχιστο αριθμό ψηϕίων για ακέραιο. Το μέγεθος μεταβλητής (μμ), δηλαδή h, l ή L, αν πρόκειται για εκτύπωση short int, long int ή long double, αντίστοιχα. aþ dekadik n gia metatropèc f, e E shmantik n gia metatropèc g G bþ an den dojeð akrðbeia, aut jewreðtai Ðsh me 6

6 141 Πιθανοί χαρακτήρες μετατροπής είναι: d: Για αριθμούς στο δεκαδικό σύστημα. o: Για απροσήμαστους οκταδικούς αριθμούς. x, X: Για απροσήμαστους δεκαεξαδικούς αριθμούς. Με μετατροπή x, τα ψηϕία μετά το 9 εμϕανίζονται πεζά (a, b, c, d, e, f), ενώ με μετατροπή X, εμϕανίζονται κεϕαλαία (A, B, C, D, E, F). u: Για απροσήμαστους αριθμούς στο δεκαδικό σύστημα. c: Για χαρακτήρες. s: Για συμβολοσειρές. f: Για αριθμούς κινητής υποδιαστολής, σε αναπαράσταση χωρίς εκθέτη. e, E: Για αριθμούς κινητής υποδιαστολής, σε αναπαράσταση με εκθέτη. Το σύμβολο της ύψωσης σε δύναμη του 10 εμϕανίζεται σαν e ή E, ανάλογα με τον χαρακτήρα μετατροπής που χρησιμοποιήθηκε. g, G: Για αριθμούς κινητής υποδιαστολής, σε αναπαράσταση με ή χωρίς εκθέτη, ανάλογα με το μέγεθος του εκθέτη σε σχέση με την ακρίβεια που έχει ζητηθεί. Αν ο εκθέτης είναι μικρότερος του -4 ή μεγαλύτερος από ή ίσος με την ακρίβεια, εϕαρμόζεται μετατροπή e ή E (ανάλογα με το αν έχουμε g ή G), αλλιώς εϕαρμόζεται μετατροπή f. Τα μηδενικά και η υποδιαστολή στο τέλος δεν εμϕανίζονται. %: Για εκτύπωση του %.

7 142 Παραδείγματα εκτυπώσεων: int x = 3456 double d = Prodiagraf EktÔpwsh Prodiagraf EktÔpwsh %d 3456 %f %7d 3456 %14.4f %2d 3456 %-14.3f %-7d 3456 %e e+03 %+7d %14.4E E+03 %07d %-14.3e e+03 %7.5d %g %7o 6600 %14.4g %-7x d80 %-14.3G -3.77E+03 %7.6X 000D80 %014.4f char *p = "this is a test phrase" Prodiagraf EktÔpwsh %s this is a test phrase %25s this is a test phrase %12s this is a test phrase %.12s this is a te %-25s this is a test phrase %25.12s this is a te %-25.12s this is a te

8 143 int scanf(const char *format, <op> 1, <op> 2,...) Διαβάζει από το stdin δεδομένα, σύμϕωνα με την οδηγία ϕόρμας format, και τα αποθηκεύει εκεί που δείχνουν οι δείκτες <op> 1, <op> 2,.... Επιστρέϕει το πλήθος των δεδομένων που διαβάστηκαν ή EOF, αν έχει διαβαστεί όλη η είσοδος. Ενα δεδομένο εισόδου είναι μία ακολουθία από μη λευκούς χαρακτήρες που τερματίζει στον επόμενο λευκό χαρακτήρα, aþ ή στον επόμενο χαρακτήρα που αναμένεται να διαβαστεί με βάση το format, ή όταν εξαντληθεί το πλάτος πεδίου. Η συμβολοσειρά format μπορεί να περιλαμβάνει: Κενά ή στηλογνώμονες, που επιβάλλουν την κατανάλωση όλων των λευκών χαρακτήρων από την τρέχουσα θέση της εισόδου και μετά. Άλλους χαρακτήρες, εκτός από τον %, που πρέπει να συμϕωνούν με τον επόμενο μη λευκό χαρακτήρα στην είσοδο, αλλιώς η scanf σταματά το διάβασμα. aþ kenì, sthlogn monac allag gramm c

9 144 Προδιαγραϕές μετατροπής, που σχηματίζονται, με αυτή τη σειρά, από: τον χαρακτήρα % ένα προαιρετικό χαρακτήρα *, που δείχνει ότι το δεδομένο που διαβάστηκε δεν πρέπει να ϕυλαχθεί ένα προαιρετικό αριθμό που καθορίζει το μέγιστο πλάτος πεδίου ένα προαιρετικό h, για την ανάγνωση short int, ή ένα l, για long int ή double, ή ένα L για long double. ένα χαρακτήρα μετατροπής, αντίστοιχα με αυτούς της printf (d, o, x, u, c, s, f, e, g, %) ή [...], το οποίο προκαλεί την ανάγνωση της μεγαλύτερης ακολουθίας χαρακτήρων στην είσοδο, από αυτούς που περιλαμβάνονται μέσα στα [ και ], ή [^...], το οποίο είναι παρόμοιο με το προηγούμενο, αλλά διαβάζονται χαρακτήρες που δεν περιέχονται μέσα στα [ και ] Επισημαίνεται ότι η χρήση της scanf για ανάγνωση συμβολοσειρών παρουσιάζει παρόμοιο πρόβλημα ασϕάλειας με αυτό της συνάρτησης gets, το οποίο όμως αντιμετωπίζεται αν δηλωθεί και μέγιστο πλάτος πεδίου (π.χ. %20s) για την ανάγνωση.

10 145 FILE *fopen(const char *filename, const char *mode) Ανοίγει το αρχείο με όνομα filename για να το χρησιμοποιήσουμε με τον τρόπο που περιγράϕεται στο mode. Επιστρέϕει ένα ρεύμα (ή δείκτη σε αρχείο), με βάση το οποίο μπορούμε στη συνέχεια να αναϕερόμαστε στο αρχείο, ή NULL, αν για κάποιο λόγο δεν ήταν δυνατόν να ανοίξει το αρχείο. Το FILE είναι μία δομή (typedef ed από το stdio.h) με κατάλληλα μέλη για να γίνεται ο χειρισμός του αρχείου. Το mode μπορεί να είναι: "r": Για διάβασμα από υπάρχον αρχείο. "w": Για γράψιμο σε αρχείο. Αν το αρχείο δεν υπάρχει, δημιουργείται. Αν υπάρχει, τα προηγούμενα περιεχόμενά του διαγράϕονται και το γράψιμο αρχίζει από την αρχή του αρχείου. "a": Για γράψιμο σε αρχείο με προσάρτηση στο τέλος του των νέων δεδομένων, αν το αρχείο υπάρχει ήδη, χωρίς διαγραϕή των προηγούμενων περιεχομένων του. "r+": Για διάβασμα και γράψιμο, οπουδήποτε μέσα σε υπάρχον αρχείο, χωρίς διαγραϕή των προηγούμενων περιεχομένων του. "w+": Για διάβασμα και γράψιμο, οπουδήποτε μέσα στο αρχείο, με διαγραϕή των προηγούμενων περιεχομένων του, εϕ όσον αυτό υπάρχει ήδη. "a+": Για διάβασμα από οπουδήποτε μέσα από το αρχείο και γράψιμο μόνο στο τέλος του, χωρίς διαγραϕή των προηγούμενων περιεχομένων του.

11 146 Σε ορισμένα συστήματα, γίνεται διάκριση μεταξύ αρχείων κειμένου και δυαδικών αρχείων (στο Unix πάντως, όχι), οπότε εκεί, αν θέλουμε να χειριστούμε ένα δυαδικό αρχείο, πρέπει στο mode να προστεθεί και ο χαρακτήρας b, δηλαδή να έχουμε, ανάλογα με την περίπτωση "rb", "wb", "ab", "r+b" ("rb+"), "w+b" ("wb+"), ή "a+b" ("ab+"). int fclose(file *fp) Κλείνει το ρεύμα fp. Επιστρέϕει 0 ή EOF, σε περίπτωση επιτυχίας ή αποτυχίας, αντίστοιχα. char *fgets(char *buf, int max, FILE *fp) Διαβάζει το πολύ max-1 χαρακτήρες από το ρεύμα fp, μέχρι την αλλαγή γραμμής (\n). Οι χαρακτήρες που διαβάστηκαν (μαζί και με το \n) ϕυλάσσονται στη συμβολοσειρά buf, η οποία τερματίζεται κανονικά με \0. Επιστρέϕει το buf, ή NULL αν έχει διαβαστεί όλη η είσοδος. aþ int feof(file *fp) Επιστρέϕει μη μηδενική τιμή αν έχουν διαβαστεί όλα τα δεδομένα από το ρεύμα fp, δηλαδή έχουμε ϕτάσει στο τέλος του αρχείου που αντιστοιχεί στο ρεύμα, ή, αλλιώς, 0. aþ Epis mwc, upˆrqei kai h sunˆrthsh char *gets(char *buf), h opoða kˆnei perðpou ì,ti kai h fgets. Diabˆzei apì to reôma stdin, qwrðc na bˆzei kˆpoio pˆnw ìrio sto pl joc twn qarakt rwn pou ja diabastoôn kai, gi' autì akrib c, gia lìgouc asfaleðac, apojarrônetai h qr sh thc. EpÐshc, h gets den topojeteð ton qarakt ra allag c gramm c (\n) pou diˆbase mèsa sto buf. An jèloume na diabˆsoume mða gramm qarakt rwn apì thn prìtuph eðsodo, mporoôme na qrhsimopoi soume thn fgets, dðnontac san teleutaðo ìrisma to stdin, antð na qrhsimopoi soume thn gets.

12 147 int getc(file *fp) Επιστρέϕει τον επόμενο χαρακτήρα από το ρεύμα fp, ή EOF, αν έχουμε ϕτάσει στο τέλος του αντίστοιχου αρχείου. int putc(int ch, FILE *fp) Γράϕει τον χαρακτήρα ch στο ρεύμα fp. Επιστρέϕει τον χαρακτήρα αυτό, ή EOF σε περίπτωση λάθους. int ungetc(int ch, FILE *fp) Γυρίζει πίσω στο ρεύμα fp τον χαρακτήρα ch, έτσι ώστε να διαβαστεί πάλι σε επόμενη ανάγνωση. Επιστρέϕει τον χαρακτήρα αυτό, ή EOF σε περίπτωση λάθους. int fprintf(file *fp, const char *format, <op> 1, <op> 2,...) Ιδια με την printf, μόνο που γράϕει στο ρεύμα fp, αντί για το stdout. int fscanf(file *fp, const char *format, <op> 1, <op> 2,...) Ιδια με την scanf, μόνο που διαβάζει από το ρεύμα fp, αντί από το stdin. int sprintf(char *str, const char *format, <op> 1, <op> 2,...) Ιδια με την printf, μόνο που γράϕει στη συμβολοσειρά str, αντί για το ρεύμα stdout. int sscanf(char *str, const char *format, <op> 1, <op> 2,...) Ιδια με την scanf, μόνο που διαβάζει από τη συμβολοσειρά str, αντί από το ρεύμα stdin.

13 148 size t fread(void *ptr, size t size, size t count, FILE *fp) aþ Διαβάζει από το ρεύμα fp το πολύ count δεδομένα μεγέθους size το καθένα και τα τοποθετεί από τη διεύθυνση ptr και μετά. Επιστρέϕει το πλήθος των δεδομένων που διαβάστηκαν. Ο έλεγχος τέλους της εισόδου μπορεί να γίνει με τη συνάρτηση feof. size t fwrite(const void *ptr, size t size, size t count, FILE *fp) Γράϕει στο ρεύμα fp το πολύ count δεδομένα μεγέθους size το καθένα, παίρνοντάς τα από τη διεύθυνση ptr και μετά. Επιστρέϕει το πλήθος των δεδομένων που γράϕτηκαν. Αν γραϕούν λιγότερα από count δεδομένα, αυτό θα οϕείλεται σε κάποιο λάθος που συνέβη. int fseek(file *fp, long offset, int origin) Θέτει την τρέχουσα θέση στο ρεύμα fp να είναι: offset ( 0) χαρακτήρες από την αρχή, αν το origin έχει τεθεί SEEK SET. offset χαρακτήρες από την τρέχουσα θέση, αν το origin έχει τεθεί SEEK CUR. offset χαρακτήρες από το τέλος, αν το origin έχει τεθεί SEEK END. Επιστρέϕει 0 σε περίπτωση επιτυχίας. aþ O tôpoc size t eðnai o unsigned int, typedef'ed.

14 149 long ftell(file *fp) Επιστρέϕει την τρέχουσα θέση στο ρεύμα fp, ή -1L σε περίπτωση λάθους. int fflush(file *fp) Γράϕει στο ρεύμα εξόδου fp ό,τι πιθανώς βρίσκεται στην ενδιάμεση περιοχή αποθήκευσης. Επιστρέϕει 0 ή EOF, σε περίπτωση επιτυχίας ή αποτυχίας, αντίστοιχα. void perror(const char *s) Εκτυπώνει τη συμβολοσειρά s και μία περιγραϕή του πιο πρόσϕατου λάθους που έχει συμβεί. Η συνάρτηση perror είναι πολύ κατατοπιστική όταν χρησιμοποιούμε συναρτήσεις της πρότυπης βιβλιοθήκης της C, οι οποίες ενδέχεται να προκαλέσουν κάποιο λάθος, για παράδειγμα η malloc ή οι συναρτήσεις διαχείρισης αρχείων, όπως η fopen, και μας ενδιαϕέρει να μάθουμε ποιο ακριβώς λάθος προκλήθηκε. Σχετική με τη συνάρτηση perror είναι και μία εξωτερική μεταβλητή errno, η οποία έχει σαν τιμή έναν ακέραιο που αντιστοιχεί στο πιο πρόσϕατο λάθος που έχει συμβεί. Αν θέλουμε να χρησιμοποιήσουμε τη μεταβλητή errno μέσα σ ένα πρόγραμμα, πρέπει να έχουμε συμπεριλάβει και το αρχείο επικεϕαλίδας στο οποίο ορίζεται: #include <errno.h> Μία επισήμανση που πρέπει να γίνει είναι ότι δεν μπορούμε να χρησιμοποιήσουμε οποιαδήποτε συνάρτηση σε οποιοδήποτε ρεύμα. Εξαρτάται από το mode που δόθηκε όταν άνοιξε το αντίστοιχο αρχείο.

15 150 Αντιγραϕή αρχείων /* File: filecopy.c */ #include <stdio.h> int main(int argc, char *argv[]) { FILE *ifp, *ofp; int n; char buf[1024]; if (argc!= 3) { fprintf(stderr, "Usage: %s <soure-file> <target-file>\n", argv[0]); return 1; } if ((ifp = fopen(argv[1], "rb")) == NULL) { /* Open source file */ perror("fopen source-file"); return 1; } if ((ofp = fopen(argv[2], "wb")) == NULL) { /* Open target file */ perror("fopen target-file"); return 1; } while (!feof(ifp)) { /* While we don t reach the end of source */ /* Read characters from source file to fill buffer */ n = fread(buf, sizeof(char), sizeof(buf), ifp); /* Write characters read to target file */ fwrite(buf, sizeof(char), n, ofp); } fclose(ifp); fclose(ofp); return 0; }

16 151 % gcc -o filecopy filecopy.c %./filecopy Usage:./filecopy <soure-file> <target-file> %./filecopy bla foo fopen source-file: No such file or directory % % cat helloworld.c /* File: helloworld.c */ #include <stdio.h> main() { printf("hello world\n"); } %./filecopy helloworld.c newhelloworld.c % cat newhelloworld.c /* File: helloworld.c */ #include <stdio.h> main() { printf("hello world\n"); } % ls -l helloworld.c newhelloworld.c -rw ip www 81 Dec 18 21:45 newhelloworld.c -rw-r ip www 81 Oct 13 12:42 helloworld.c % diff helloworld.c newhelloworld.c % %./filecopy filecopy Copy\ of\ filecopy % ls -l filecopy Copy\ of\ filecopy -rw ip www 6884 Dec 18 21:46 Copy of filecopy -rwx ip www 6884 Dec 18 21:34 filecopy* % cmp filecopy Copy\ of\ filecopy %

17 152 Εκτύπωση γραμμών εισόδου με αντίστροϕη σειρά /* File: revinput.c */ #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct Slistnode *SListptr; struct Slistnode { /* A list node structure */ char *line; /* with a string as member */ SListptr next; }; void Sinsert_at_start(SListptr *, char *); void Sprint(SListptr); int main(void) { char buf[1024]; SListptr list; list = NULL; /* Initialize list to store lines to be read */ while (fgets(buf, sizeof buf, stdin)!= NULL) /* Read a line */ /* and insert it at the start of the list */ Sinsert_at_start(&list, buf); Sprint(list); /* Print the list, i.e. the input reversed */ return 0; } void Sinsert_at_start(SListptr *ptraddr, char *buf) /* The well-known insert_at_start function */ { SListptr templist; templist = *ptraddr; *ptraddr = malloc(sizeof(struct Slistnode)); (*ptraddr)->line = malloc((strlen(buf)+1) * sizeof(char)); strcpy((*ptraddr)->line, buf); (*ptraddr)->next = templist; } void Sprint(SListptr list) /* Just print out the list */ { while (list!= NULL) { printf("%s", list->line); list = list->next; } }

18 153 % gcc -o revinput revinput.c %./revinput These are some lines to test program revinput. Ok, one more line. These are my last words before the minus signs ^D before the minus signs These are my last words Ok, one more line. to test program revinput. These are some lines % % cat helloworld.c /* File: helloworld.c */ #include <stdio.h> main() { printf("hello world\n"); } % %./revinput < helloworld.c } { printf("hello world\n"); main() #include <stdio.h> /* File: helloworld.c */

19 154 Ο προεπεξεργαστής της C Ο προεπεξεργαστής της C είναι ένα αυτόνομο υποσύστημα του λογισμικού μεταγλώττισης, το οποίο καλείται αυτόματα πριν από την πραγματική διαδικασία της μεταγλώττισης. Ο σκοπός του προεπεξεργαστή είναι να μετασχηματίσει το πηγαίο αρχείο C που του δόθηκε σ ένα άλλο πηγαίο αρχείο, σύμϕωνα με μία σειρά από οδηγίες που απευθύνονται σ αυτόν. Το αποτέλεσμα του προεπεξεργαστή είναι αυτό το οποίο θα υποστεί τη διαδικασία της μεταγλώττισης. Οι γραμμές του πηγαίου αρχείου που αρχίζουν από # είναι οδηγίες προς τον προεπεξεργαστή. Ακολουθεί μία συνοπτική περιγραϕή των πιο συχνά χρησιμοποιούμενων οδηγιών του προεπεξεργαστή. Σχετικά πιο αναλυτική αναϕορά γίνεται στην παράγραϕο 4.11 του [KR] (σελ ).

20 155 #include Χρησιμοποιείται για την εισαγωγή των περιεχομένων αρχείων επικεϕαλίδας στη θέση που βρίσκεται η οδηγία. Ενα αρχείο επικεϕαλίδας περιέχει συνήθως δηλώσεις πρωτοτύπων συναρτήσεων, ορισμούς συμβολικών σταθερών και μακροεντολών (μέσω #define), συμπεριλήψεις άλλων αρχείων επικεϕαλίδας, δηλώσεις μορϕής τύπων δεδομένων (μέσω struct, enum, union, typedef), κλπ. Σε αρχεία επικεϕαλίδας, δεν συνηθίζεται να έχουμε κώδικα προγράμματος. Επίσης, δεν κάνουμε #include πηγαία αρχεία κώδικα. Η οδηγία αυτή εμϕανίζεται με δύο εκδοχές. Πρώτη εκδοχή: #include <sysfile.h> Ο προεπεξεργαστής θα ψάξει να βρει το αρχείο sysfile.h σε καταλόγους που έχει δηλώσει με κάποιο τρόπο ο χρήστης, για παράδειγμα με την επιλογή -I κατά την κλήση του gcc, ή στους καταλόγους που βρίσκονται τα προκαθορισμένα αρχεία επικεϕαλίδας της γλώσσας, οι οποίοι μπορεί να διαϕέρουν από εγκατάσταση σε εγκατάσταση. Δεύτερη εκδοχή: #include "myfile.h" Ο προεπεξεργαστής θα ψάξει κατ αρχήν να βρει το αρχείο myfile.h στον κατάλογο που βρίσκεται το πηγαίο αρχείο, και αν δεν βρεθεί εκεί, θα το αναζητήσει σε καταλόγους όπως θα γινόταν αν η οδηγία είχε δοθεί με την πρώτης της εκδοχή. Φυσικά, είναι επιτρεπτές και δηλώσεις: #include <sys/types.h> #include "mydir/anotherdir/myfile.h"

21 156 #define Χρησιμοποιείται για τον ορισμό συμβολικών σταθερών ή μακροεντολών. Οπου βρει ο προεπεξεργαστής σαν λεκτικό σύμβολο (όχι μέσα σε " ή σε σχόλια) τη συμβολική σταθερά ή την παραμετρική μακροεντολή που ορίζεται με την οδηγία, την αντικαθιστά με το κείμενο που της έχει αντιστοιχηθεί. Παράδειγμα ορισμού συμβολικής σταθεράς: #define YES 1 Ο προεπεξεργαστής θα αντικαταστήσει το YES, όπου το βρει σαν λεκτικό σύμβολο μέσα στο πηγαίο αρχείο με το 1 (όχι όμως στο printf("yes\n"), ούτε και στο x = YESMAN++). Παράδειγμα ορισμού μακροεντολής: #define max(a, B) ((A) > (B)? (A) : (B)) Αν βρει ο προεπεξεργαστής στη συνέχεια στο αρχείο κάποια εντολή της μορϕής x = max(p+q, r+s); θα την αντικαταστήσει με την x = ((p+q) > (r+s)? (p+q) : (r+s)); Παρατηρήστε, στο παράδειγμα αυτό, ότι τα A και B θα υπολογισθούν τελικά δύο ϕορές, αϕού τόσες βρίσκονται στο κείμενο αντικατάστασης, πράγμα που μπορεί στο συγκεκριμένο παράδειγμα να μην ενοχλεί, αλλά σε άλλες περιπτώσεις χρειάζεται προσοχή. aþ aþ PisteÔete ìti h èkfrash max(i++, j++) ja antikatastajeð swstˆ me bˆsh ti eðqe sto mualì tou mˆllon o programmatist c pou thn ègraye;

22 157 Οι παρενθέσεις γύρω από τις παραμέτρους στο κείμενο αντικατάστασης μίας μακροεντολής ενδέχεται, σε κάποιες περιπτώσεις, να είναι κρίσιμες. Παράδειγμα: #define square(x) X * X Πώς θα αντικατασταθεί το square(a+1); aþ Αυτό ήταν που θέλαμε; bþ Πώς θα έπρεπε να δηλωθεί η μακροεντολή; gþ Αρκετές από τις συναρτήσεις της γλώσσας που χρησιμοποιούμε στα προγράμματά μας είναι ορισμένες σαν μακροεντολές μέσα σε αρχεία επικεϕαλίδας και όχι με κώδικα στη βιβλιοθήκη της γλώσσας. Για παράδειγμα, οι γνωστές μας συναρτήσεις getchar και putchar ορίζονται μέσα στο αρχείο stdio.h ως εξής: #define getchar() #define putchar(x) getc(stdin) putc(x, stdout) aþ a+1 * a+1 bþ 'Oqi, bèbaia. gþ #define square(x) ((X) * (X))

23 158 #if, #else, #elif, #endif, #ifdef, #ifndef Στην C, υπάρχει η δυνατότητα μεταγλώττισης υπό συνθήκη. Ο,τι περιλαμβάνεται μεταξύ ενός #if και του αμέσως επόμενου #endif, που δεν έχει αντιστοιχηθεί με κάποιο άλλο #if, θα μεταγλωττιστεί μόνο αν η ακέραια παράσταση που βρίσκεται μετά το #if αποτιμηθεί σε μη μηδενική τιμή. Συνήθως, οι ακέραιες παραστάσεις μετά το #if συγκρίνουν τιμές συμβολικών σταθερών, που έχουν αντιστοιχηθεί σε ακέραιους, μεταξύ τους ή με ακέραιες σταθερές, μέσω των τελεστών σύγκρισης της C (==,!=, >, κλπ.). Με την οδηγία #else, αρχίζει το τμήμα μίας δομής #if/#endif που θα μεταγλωττιστεί αν η παράσταση μετά το #if είναι ψευδής (ίση με μηδέν). Η οδηγία #elif μπορεί να χρησιμοποιηθεί για πιο σύντομη γραϕή μίας #else της οποίας το σώμα αποτελείται από μία #if, αποϕεύγοντας έτσι και το επιπλέον #endif. Παράδειγμα: #if SYSTEM == SYSV #define HDR "sysv.h" #elif SYSTEM == BSD #define HDR "bsd.h" #elif SYSTEM == MSDOS #else #define HDR "msdos.h" #define HDR "default.h" #endif #include HDR

24 159 Κάποια ειδική παράσταση που μπορεί να υπάρχει μετά από ένα #if είναι η defined(name), που αποτιμάται σε 1 αν το NAME έχει οριστεί με #define, αλλιώς σε 0. Η οδηγία #if defined(name) είναι ισοδύναμη με την #ifdef NAME Στις παραστάσεις μετά από ένα #if μπορούμε να έχουμε και άρνηση (!). Για παράδειγμα, αν θέλουμε να εξασϕαλίσουμε ότι τα περιεχόμενα του αρχείου hdr.h θα συμπεριληϕθούν μία μόνο ϕορά σε μία πολύπλοκη εϕαρμογή με πολλές συμπεριλήψεις, θα μπορούσαμε να το δομήσουμε ως εξής: #if!defined(hdr) #define HDR /* The real contents of hdr.h go here */ #endif Το #if!defined(hdr) θα μπορούσε να γραϕεί ισοδύναμα και σαν #ifndef HDR Δομές #if (#ifdef, #ifndef)/#endif μπορεί να είναι εμϕωλευμένες. Με τη βοήθειά τους μπορούμε να προσομοιώσουμε εμϕωλευμένα σχόλια, κάτι που με τον συνήθη τρόπο γραϕής σχολίων (/*... */) δεν είναι δυνατόν. Πώς;

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

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ IΙ Λύβας Χρήστος chrislibas@ssl-unipi.gr Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος >_ FILE SYSTEM >_ ΔΙΚΑΙΩΜΑΤΑ >_ ΔΙΚΑΙΩΜΑΤΑ? >_ ΜΕΤΑΒΟΛΗ ΔΙΚΑΙΩΜΑΤΩΝ +- chmod

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

Διάλεξη 18η: Διαχείρηση Αρχείων

Διάλεξη 18η: Διαχείρηση Αρχείων Διάλεξη 18η: Διαχείρηση Αρχείων Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Πρατικάκης (CSD) Αρχεία CS100, 2015-2016 1 / 24 Η βιβλιοθήκη Εισόδου/Εξόδου Στο stdioh

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

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

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

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

Επεξεργασία Αρχείων Κειµένου

Επεξεργασία Αρχείων Κειµένου Επεξεργασία Αρχείων Κειµένου Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Αρχεία Κειµένου Γενικά Συναρτήσεις Επεξεργασίας Αρχείων Κειµένου ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 1 Αρχεία Γενικά

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

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Είσοδος/Έξοδος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2009-2010 Είσοδος/Έξοδος Μέχρι τώρα όποτε θέλαμε να διαβάσουμε χρησιμοποιούσαμε πάντα

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

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128] ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2017 (27/1/2017) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

Βιβλιοθήκη stdio. Προγραμματισμός II 1

Βιβλιοθήκη stdio. Προγραμματισμός II 1 Βιβλιοθήκη 1 lalis@inf.uth.gr Δεδομένα και ερμηνεία (ξανά) Τα δεδομένα στον Η/Υ έχουν δυαδική μορφή (bytes) Η ερμηνεία των bytes εξαρτάται από το πρόγραμμα που παράγει/καταναλώνει τα δεδομένα Μια δημοφιλής

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

ιαφάνειες παρουσίασης #6 (β)

ιαφάνειες παρουσίασης #6 (β) ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ http://www.softlab.ntua.gr/~nickie/courses/progtech/ ιδάσκοντες: Γιάννης Μαΐστρος (maistros@cs.ntua.gr) Στάθης Ζάχος (zachos@cs.ntua.gr) (nickie@softlab.ntua.gr) ιαφάνειες παρουσίασης

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

Βιβλιοθήκη stdio. Προγραμματισμός II 1

Βιβλιοθήκη stdio. Προγραμματισμός II 1 Βιβλιοθήκη 1 lalis@inf.uth.gr Σύνοψη Ορίστηκε από τον Dennis Ritchie το 1975 Μέρος του προτύπου ANSI C Λειτουργίες εισόδου/εξόδου υψηλού επίπεδου και ανεξάρτητες λειτουργικού συστήματος Υποστήριξη για

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

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

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

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

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

Προγραμματισμός Ι. Προεπεξεργαστής. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Προεπεξεργαστής Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Διαδικασία Μεταγλώττισης πρόγραµµα επεξεργασίας κειµένου if a

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

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

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

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

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

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

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

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 3: Είσοδος / Έξοδος, Βασικοί Τύποι, Δήλωση Μεταβλητών Ένα Ακόμα Παράδειγμα #include int main(int argc, char* argv[]) { } putchar('h'); putchar('e'); putchar('l');

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

Περιεχόμενα. Πρόλογος... 21

Περιεχόμενα. Πρόλογος... 21 Περιεχόμενα Πρόλογος... 21 Κεφάλαιο 1: Εισαγωγή στον προγραμματισμό... 25 Εισαγωγή...27 Πώς να διαβάσετε αυτό το βιβλίο...27 Η δομή των κεφαλαίων...28 Γιατί να μάθω προγραμματισμό;...31 Γιατί να μάθω C;...31

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

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

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Διαχείριση

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

Συναρτήσεις πρότυπης βιβλιοθήκης 1. Μερικές συνήθεις συναρτήσεις βιβλιοθήκης int atoi(const char *p) int fclose(file *fp)

Συναρτήσεις πρότυπης βιβλιοθήκης 1. Μερικές συνήθεις συναρτήσεις βιβλιοθήκης int atoi(const char *p) int fclose(file *fp) Συναρτήσεις πρότυπης βιβλιοθήκης Στο πρώτο μέρος δίνονται, με αλφαβητική σειρά, μερικές από τις πιο συνηθισμένες συναρτήσεις βιβλιοθήκης που συνοδεύουν τους σύγχρονους μεταγλωττιστές της C. Κάτω από το

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

Προγραμματισμός Υπολογιστών με C++

Προγραμματισμός Υπολογιστών με C++ Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 19η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Βασικές διαφορές της C από τη C++. Απλά παραδείγματα προγραμμάτων C.

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

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 3: Είσοδος / Έξοδος, Βασικοί Τύποι, Δήλωση Μεταβλητών Βασικοί τύποι της C 2 Όνομα Τύπος / Κωδικοποίηση Μέγεθος (bytes) char Χαρακτήρας 1 int Ακέραιος 2 ή 4 (*) float Πραγματικός

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

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

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

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

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 3: Είσοδος / Έξοδος, Βασικοί Τύποι, Δήλωση Μεταβλητών Βασικοί τύποι της C 2 Όνομα Τύπος / Κωδικοποίηση Μέγεθος (bytes) char Χαρακτήρας 1 int Ακέραιος 2 ή 4 (*) float Πραγματικός

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

Εργαστήριο 2ο. Περίγραμμα Εργαστηριακής Άσκησης

Εργαστήριο 2ο. Περίγραμμα Εργαστηριακής Άσκησης Γλώσσες Προγραμματισμού Εργαστήριο 2ο Τύποι Δεδομένων - Είσοδος / Έξοδος Εργαστήριο 2ο Περίγραμμα Εργαστηριακής Άσκησης Εργαστήριο 2ο...1 Θεωρία εργαστηρίου...2 Τύποι δεδομένων...2 Η συνάρτηση printf()...3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εργαστήριο 9: Αρχεία

Εργαστήριο 9: Αρχεία Εργαστήριο 9: Αρχεία Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Αρχεία, Είσοδος/Έξοδος από/προς αρχεία - Δυαδικά αρχεία - Παραδείγματα ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ.

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

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. (Διάλεξη 15)

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. (Διάλεξη 15) (Κεφάλαιο 2.7 και 12) Αρχεία στην C (Διάλεξη 15) 14-1 Επανάληψη στην Αποθήκευση (Storage) Για να αποθηκεύσουμε δεδομένα από ένα πρόγραμμα, πρέπει να χρησιμοποιήσουμε την Δευτερεύουσα Μνήμη 14-2 Επανάληψη

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

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

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

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

Κεφάλαιο VΙ: Προσπέλαση Αρχείων. 5.1 Αρχεία δεδομένων.

Κεφάλαιο VΙ: Προσπέλαση Αρχείων. 5.1 Αρχεία δεδομένων. Κεφάλαιο VΙ: Προσπέλαση Αρχείων. 5.1 Αρχεία δεδομένων. Έως τώρα σε ένα πρόγραμμα έχουμε μάθει να εισάγουμε δεδομένα από το πληκτρολόγιο χρησιμοποιώντας την συνάρτηση scanf() και να εκτυπώνουμε δεδομένα

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

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Αλφαριθμητικά και Αρχεία Αλφαριθμητικά (strings) Αρχεία (files) τα βασικά στοιχεία Αλφαριθμητικά της C Συμβολοσειρές (= ακολουθίες

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

Προγραμματισμός σε C. Αρχεία κειμένου (Text files)

Προγραμματισμός σε C. Αρχεία κειμένου (Text files) Προγραμματισμός σε C Αρχεία κειμένου (Text files) Εισαγωγή Στη C έχουμε ειδικές συναρτήσεις για να επεξεργαζόμαστε αρχεία κειμένου που αποθηκεύονται στο δίσκο Τα αρχεία είναι σημαντικά για μόνιμη αποθήκευση

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

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

Προγραµµατισµός Ι (ΗΥ120) Προγραµµατισµός Ι (ΗΥ120) Διάλεξη 3: Είσοδος / Έξοδος, Βασικοί Τύποι, Δήλωση Μεταβλητών ΑΝΑΚΟΙΝΩΣΕΙΣ 2 Από την επόµενη εβδοµάδα αλλάζουν οι ώρες των εργαστηρίων. Οι νέες ώρες θα ανακοινωθούν σήµερα στη

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

#define, 70, 575 #elif, 580 #else, 580 #endif, 580 #error, 584 #if, 580 #ifdef, 583 #ifndef, 580, 583 #include, 70, 227, 574 #undef, 579

#define, 70, 575 #elif, 580 #else, 580 #endif, 580 #error, 584 #if, 580 #ifdef, 583 #ifndef, 580, 583 #include, 70, 227, 574 #undef, 579 Ευρετήριο Η γλώσσα C σε βάθος # #define, 70, 575 #elif, 580 #else, 580 #endif, 580 #error, 584 #if, 580 #ifdef, 583 #ifndef, 580, 583 #include, 70, 227, 574 #undef, 579 A abs(), 625 AND, 64 ASCII πίνακας

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

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

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

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

Προγραμματισμό για ΗΜΥ

Προγραμματισμό για ΗΜΥ ΕΠΛ 034: Εισαγωγή στον Προγραμματισμό για ΗΜΥ Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 3 Εισαγωγή στην C Θέματα ιάλεξης Σύνταξη και Σημασιολογία

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

Διαδικασία Ανάπτυξης Λογισμικού

Διαδικασία Ανάπτυξης Λογισμικού Διαδικασία Ανάπτυξης Λογισμικού Ανάλυση Απαιτήσεων (προϋποθέτει κατανόηση του προβλήματος και τη συλλογή πληροφοριών και των απαιτήσεων από το σύστημα) Σχεδιασμός (ορισμός διεργασιών για να ικανοποιηθούν

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

Α. 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) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

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

Προγραμματισμός Ι. Προχωρημένα Θέματα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Προχωρημένα Θέματα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ανακατεύθυνση Εισόδου/Εξόδου Συνήθως η τυπική είσοδος ενός προγράμματος (stdin) προέρχεται

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

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Συναρτήσεις εισόδου/εξόδου, τελεστές Η συνάρτηση scanf() είσοδος δεδομένων Διαβάζει από το πληκτρολόγιο (stdin) μορφοποιημένες τιμές μεταβλητών. scanf (ΣΕΙΡΑ_ΕΛΕΓΧΟΥ, δείκτης_μεταβλητής-1,

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

Περιεχόμενα. Πρόλογος... 17

Περιεχόμενα. Πρόλογος... 17 Περιεχόμενα Πρόλογος... 17 Κεφάλαιο 1: Εισαγωγή... 19 Πώς να διαβάσετε αυτό το βιβλίο... 20 Η γλώσσα C Ιστορική αναδρομή... 22 Τα χαρακτηριστικά της C... 23 C Μια δομημένη γλώσσα... 23 C Μια γλώσσα για

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

Τύποι Δεδομένων Είσοδος/Έξοδος

Τύποι Δεδομένων Είσοδος/Έξοδος Εργαστήριο 2 ο Τύποι Δεδομένων Είσοδος/Έξοδος Εισαγωγή Σκοπός του εργαστηρίου αυτού είναι η εισαγωγή μας στους τύπους δεδομένων της C και η εξοικείωση μας με συναρτήσεις του ρεπερτορίου της ANSI C σχετικές

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

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή Στόχοι και αντικείμενο ενότητας Η έννοια του Τελεστή #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Εκφράσεις Προτεραιότητα Προσεταιριστικότητα Χρήση παρενθέσεων Μετατροπές Τύπων Υπονοούμενες και ρητές μετατροπές

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

Ενδεικτική περιγραφή μαθήματος

Ενδεικτική περιγραφή μαθήματος ΜΑΘΗΜΑ: ΔΙΔΑΣΚΩΝ: ΤΜΗΜΑ: Προγραμματισμός Η/Υ Συνδουκάς Δημήτριος Διοίκησης Επιχειρήσεων (Γρεβενά) Ενδεικτική περιγραφή μαθήματος 1. Εισαγωγή: Εισαγωγή στον προγραμματισμό, γλώσσες προγραμματισμού, μεταγλωτιστές.

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

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

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

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

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 18: Ο προεπεξεργαστής της C. Βασική ιδέα Ο προεπεξεργαστής (pre-proccesor) της C είναι ένα πρόγραμμα που εκτελείται και μετασχηματίζει τον πηγαίο κώδικα πριν αυτός δοθεί

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

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 8: Πίνακες, Αλφαριθμητικά Πίνακες Ο πίνακας είναι μια ειδική δομή για την αποθήκευση μιας σειράς από δεδομένα του ίδιου τύπου. Η δήλωση ενός πίνακα γίνεται όπως για μια

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

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

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

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

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011 Εισαγωγή στον Προγραµµατισµό Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011 Hello World /* Αρχείο hello.c * Εµφανίζει στην οθόνη το * µήνυµα hello world */ #include

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

Διάλεξη 20: Χαμηλού Επιπέδου Προγραμματισμός II

Διάλεξη 20: Χαμηλού Επιπέδου Προγραμματισμός II Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 20: Χαμηλού Επιπέδου Προγραμματισμός II (Κεφάλαια 25.2, KNK-2ED) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132

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

Ι Αρχεία δεδομένων, μέρος δεύτερο: δυαδικά αρχεία ΙΙ Δομές δεδομένων (struct)

Ι Αρχεία δεδομένων, μέρος δεύτερο: δυαδικά αρχεία ΙΙ Δομές δεδομένων (struct) Ι Αρχεία δεδομένων, μέρος δεύτερο: δυαδικά αρχεία ΙΙ Δομές δεδομένων (struct) Αρχεία Το γενικό πλαίσιο: data stream (ρεύμα δεδομένων). stdin, stdout, stderr data stream ως προς τα δεδομένα βάσει προσπέλασης

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

Προγραμματισμός σε C. Αρχεία κειμένου (Text files)

Προγραμματισμός σε C. Αρχεία κειμένου (Text files) Προγραμματισμός σε C Αρχεία κειμένου (Text files) Εισαγωγή Στη C έχουμε ειδικές συναρτήσεις για να επεξεργαζόμαστε αρχεία κειμένου που αποθηκεύονται στο δίσκο Τα αρχεία είναι σημαντικά για μόνιμη αποθήκευση

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

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη Εισαγωγικά

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

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Χειρισμός χαρακτήρων, συμβολοσειρές Συμβολοσειρές Συμβολοσειρά ονομάζουμε μια οποιαδήποτε ακολουθία αλφαριθμητικών χαρακτήρων: «Κώστας», «Κώστας Βασιλάκης», «Δαιδάλου 23» Στην

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

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

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

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

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

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

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

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μεταβλητές,

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

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

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

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

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

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

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

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

Εισαγωγή στην γλώσσα προγραμματισμού C Εισαγωγή στην γλώσσα προγραμματισμού C Χαρακτηριστικά της C Ιδιαίτερα δημοφιλής Έχει χρησιμοποιηθεί για τον προγραμματισμό ευρέος φάσματος συστημάτων και εφαρμογών Γλώσσα μετρίου επιπέδου Φιλοσοφία: Ο

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

i M-1 1. ij f(i, j) N-1. (pixel) 2. M N (x, y) (x, y ) = 256. R(x, y), G(x, y), B(x, y)

i M-1 1. ij f(i, j) N-1. (pixel) 2. M N (x, y) (x, y ) = 256. R(x, y), G(x, y), B(x, y) D4 2 2. (pixel) 2 ( ) M N (x, y) (x, y ) ( )f(x, y) j N- i j i f(i, j) M-. ij f(i, j) 8 2 8 = 256, 2 2 f(x, y) 3,, R(x, y), G(x, y), B(x, y) 256 2 2.2 ( ) JPEG (Joint Photographic Experts Group), GIF (Graphics

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

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Χειρισμός χαρακτήρων, συμβολοσειρές Συμβολοσειρές Συμβολοσειρά ονομάζουμε μια οποιαδήποτε ακολουθία αλφαριθμητικών χαρακτήρων: «Κώστας», «Κώστας Βασιλάκης», «Δαιδάλου 23» Στην

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

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

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

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

Μεθόδων Επίλυσης Προβλημάτων

Μεθόδων Επίλυσης Προβλημάτων ΕΠΛ 032.3: 3: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 10 Αρχεία στην C Επανάληψη στην Αποθήκευση (Storage)

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Αλφαριθμητικά Αλφαριθμητικά (strings) Ένα αλφαριθμητικό είναι μια ακολουθία αλφαβητικών

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

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

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

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

Ι Ανασκόπηση και εμβάθυνση Μερικά πιο προχωρημένα θέματα. ΙΙ Τα αρχεία δεδομένων στη C

Ι Ανασκόπηση και εμβάθυνση Μερικά πιο προχωρημένα θέματα. ΙΙ Τα αρχεία δεδομένων στη C Ι Ανασκόπηση και εμβάθυνση Μερικά πιο προχωρημένα θέματα ΙΙ Τα αρχεία δεδομένων στη C Τελεστές αύξησης/μείωσης (++, --) Λειτουργία βάσει θέσης: ++x διάφορο του x++!!! Παράδειγμα 1 (postfix): Ισοδυναμεί

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

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

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

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

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 ❶ Προετοιµασία για το 1 ο Εργαστήριο

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

H ΓΛΩΣΣΑ C. Μάθηµα 16: Είσοδος/Έξοδος: Συναρτήσεις Eξόδου. ηµήτρης Ψούνης

H ΓΛΩΣΣΑ C. Μάθηµα 16: Είσοδος/Έξοδος: Συναρτήσεις Eξόδου. ηµήτρης Ψούνης H ΓΛΩΣΣΑ C Μάθηµα 16: Είσοδος/Έξοδος: Συναρτήσεις Eξόδου ηµήτρης Ψούνης 2 Περιεχόµενα Μαθήµατος A. Συναρτήσεις ροής εξόδου stdout 1. Γενικά 2. Η συνάρτηση putchar() 3. Οι συναρτήσεις putc() και fputc()

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

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Βασικοί Τύποι Πίνακες (μέρος 1) Συμβολοσειρές Ο Προεπεξεργαστής Τελευταία ενημέρωση: Σεπτέμβριος 2016 Εισαγωγή - 2 short:

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

Περιεχόµενα. Πρόλογος... 15

Περιεχόµενα. Πρόλογος... 15 Πρόλογος... 15 Κεφάλαιο 1: Εισαγωγή... 17 Πώς να διαβάσετε αυτό το βιβλίο...18 Η γλώσσα C Ιστορική αναδροµή...19 Τα χαρακτηριστικά της C...20 C Μια δοµηµένη γλώσσα...20 C Μια γλώσσα για προγραµµατιστές...21

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

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

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

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

ΑΣΚΗΣΗ 2: ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΣΤΗ C

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

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

Α Β Γ static; printf("%c\n", putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf("*");

Α Β Γ static; printf(%c\n, putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf(*); ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2016 (1/2/2016) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

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

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

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

ΑΡ Χ Ε Ι Α Κ Ε Ι Μ Ε Ν Ο Υ (text files)

ΑΡ Χ Ε Ι Α Κ Ε Ι Μ Ε Ν Ο Υ (text files) ΑΡ Χ Ε Ι Α Κ Ε Ι Μ Ε Ν Ο Υ (text files) Αρχείο είναι μια συλλογή δεδομένων του ίδιου τύπου. Ενα αρχείο αποθηκεύεται στην περιφερειακή μνήμη (σκληρό δίσκο, δισκέττα). Τα αρχεία είναι μόνιμα. Τα δεδομένα

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

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

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

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

Αρχεία & Ρεύματα ΑΡΧΕΙΑ & ΡΕΥΜΑΤΑ. Γεώργιος Παπαϊωάννου (2013-14) gepap@aueb.gr

Αρχεία & Ρεύματα ΑΡΧΕΙΑ & ΡΕΥΜΑΤΑ. Γεώργιος Παπαϊωάννου (2013-14) gepap@aueb.gr ΑΡΧΕΙΑ & ΡΕΥΜΑΤΑ Γεώργιος Παπαϊωάννου (2013-14) gepap@aueb.gr Περιγραφή: Τύποι αρχείων Ρεύματα Άνοιγμα ρευμάτων Εγγραφή και ανάγνωση δεδομένων προς/από ένα ρεύμα Διαχείριση και κλείσιμο ρευμάτων Παραδείγματα

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 2 Ο. Εισαγωγή στην C Εντολές εξόδου Εντολές εισόδου Μορφοποιητές ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 2 Ο. Εισαγωγή στην C Εντολές εξόδου Εντολές εισόδου Μορφοποιητές ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 2 Ο Εισαγωγή στην C Εντολές εξόδου Εντολές εισόδου Μορφοποιητές ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 1 Εισαγωγή στη C Η γλώσσα προγραμματισμού C είναι υψηλού επιπέδου με δυνατότητες

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

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

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

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

Προγραμματισμός Ι. Χαρακτήρες. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών

Προγραμματισμός Ι. Χαρακτήρες. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών Χαρακτήρες Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Προγραμματισμός Δ. Τσελίκας Ι Χαρακτήρες - Εισαγωγή Έως τώρα έχουμε κατά κύριο λόγο χρησιμοποιήσει τους αριθμητικούς τύπους

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

ΕΠΕΞΕΡΓΑΣΙΑ ΑΡΧΕΙΩΝ Λέµε αρχείο

ΕΠΕΞΕΡΓΑΣΙΑ ΑΡΧΕΙΩΝ Λέµε αρχείο ΕΠΕΞΕΡΓΑΣΙΑ ΑΡΧΕΙΩΝ Λέµε αρχείο (File) τη συστηµατική συγκέντρωση δεδοµένων. Τα περισσότερα προγράµµατα στη γλώσσα C, τα οποία διαπραγµατεύονται είσοδο, αποθήκευση και επεξεργασία δεδοµένων χρησιµοποιούν

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

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

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

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

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

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

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

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

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

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

Πίνακες: μια σύντομη εισαγωγή. Πίνακες χαρακτήρων: τα "Αλφαριθμητικά"

Πίνακες: μια σύντομη εισαγωγή. Πίνακες χαρακτήρων: τα Αλφαριθμητικά Πίνακες: μια σύντομη εισαγωγή Πίνακες χαρακτήρων: τα "Αλφαριθμητικά" Πίνακες(Arrays): έννοιες και ορισμοί Ορισμός: Πίνακας (array) = σύνολο μεταβλητών του ιδίου τύπου (int, float, char,...) με ένα κοινό

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

Χpήσιµες Βιβλιοθήκες της γλώσσας C

Χpήσιµες Βιβλιοθήκες της γλώσσας C Χpήσιµες Βιβλιοθήκες της γλώσσας C Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Συναρτήσεις Επεξεργασίας Συµβολοσειρών (strings) που Παρέχονται από τη Βιβλιοθήκη Συναρτήσεις Ελέγχου

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

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

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

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

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

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

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

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

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

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

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ενδεικτικές Απαντήσεις Εξετάσεων Α' Περιόδου Θέµα 1. (α') 2 - ii 3 - iii 4 - iv

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ενδεικτικές Απαντήσεις Εξετάσεων Α' Περιόδου Θέµα 1. (α') 2 - ii 3 - iii 4 - iv ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ενδεικτικές Απαντήσεις Εξετάσεων Α' Περιόδου 2011 Θέµα 1 (α') 1 - i 2 - ii 3 - iii 4 - iv 5 - v 6 - vi 7 - vii 8 - viii 9 - ix 10 - x Το αποτέλεσµα είναι η αντιστοιχία των

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

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

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δείκτες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Τι είναι ο δείκτης Ένας δείκτης είναι μια μεταβλητή που περιέχει μια διεύθυνση μνήμης. Θυμηθείτε πως

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

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 19: Ο προεπεξεργαστής της C. Βασική ιδέα Ο προεπεξεργαστής (pre-proccesor) της C είναι ένα πρόγραμμα που εκτελείται και μετασχηματίζει τον πηγαίο κώδικα πριν αυτός δοθεί

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

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Χειρισμός χαρακτήρων, συμβολοσειρές Συμβολοσειρές Συμβολοσειρά ονομάζουμε μια οποιαδήποτε ακολουθία αλφαριθμητικών χαρακτήρων: «Κώστας», «Κώστας Βασιλάκης», «Δαιδάλου 23» Στην

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