ΕΡΓΑΣΤΗΡΙΟ 8: Πολυδιάστατοι Πίνακες και Δυναμική Δέσμευση Μνήμης

Save this PDF as:
 WORD  PNG  TXT  JPG

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

Download "ΕΡΓΑΣΤΗΡΙΟ 8: Πολυδιάστατοι Πίνακες και Δυναμική Δέσμευση Μνήμης"

Transcript

1 ΕΡΓΑΣΤΗΡΙΟ 8: Πολυδιάστατοι Πίνακες και Δυναμική Δέσμευση Μνήμης Στο εργαστήριο αυτό θα μελετήσουμε τον τρόπο με τον οποίο ορίζουμε στην C πολυδιάστατους πίνακες και θα δούμε πώς μπορούμε να δεσμεύουμε δυναμικά μνήμη για να δημιουργούμε πίνακες, όταν δεν γνωρίζουμε κατά τη φάση συγγραφής του προγράμματος τις διαστάσεις των πινάκων που χρειαζόμαστε. Άσκηση 1: Διδιάστατοι πίνακες 1.1 Κατασκευάστε το πρόγραμμα twodim.c που ορίζει στατικά έναν πίνακα A διαστάσεων 6 x 10 και αρχικοποιεί το στοιχείο A[i][j] που βρίσκεται στη γραμμή i και στη στήλη j, σύμφωνα με τον τύπο: A[ i][ j] i(5 i) j(9 j) Εκτυπώστε τον πίνακα κατά γραμμές, με τα στοιχεία κάθε γραμμής χωρισμένα με στηλογνώμονα (tab). 1.2 Επεκτείνετε το πρόγραμμα twodim.c ώστε να εκτυπώνει τον ανάστροφο του πίνακα, δηλαδή αυτόν που έχει στήλες τις γραμμές του αρχικού και γραμμές τις στήλες του αρχικού. Ο αρχικός πίνακας: Ο ανάστροφος πίνακας: Επεκτείνετε το πρόγραμμα twodim.c ώστε να εκτυπώνει τις γραμμές του αρχικού πίνακα με αντίστροφη σειρά. Ο αρχικός πίνακας: Εκτύπωση γραμμών με αντίστροφη σειρά: Επεκτείνετε το πρόγραμμα twodim.c ώστε να εκτυπώνει όλα τα στοιχεία του πίνακα σε μία σειρά, διασχίζοντάς τον με ένα «φιδοειδή» τρόπο, όπως φαίνεται στο σχήμα: Ο αρχικός πίνακας: «Φιδοειδής» εκτύπωση των στοιχείων: σελ. 1 / 8

2 Άσκηση 2: Δυναμική δέσμευση μνήμης για μονοδιάστατο πίνακα 2.1 Κατασκευάστε το πρόγραμμα array.c που να διαβάζει από την είσοδο τη διάσταση ενός μονοδιάστατου πίνακα ακεραίων (έστω N), να δεσμεύει χώρο N θέσεων δυναμικά και έπειτα να τον αρχικοποιεί διαβάζοντας από την είσοδο ακέραιους αριθμούς. Δυναμική δέσμευση μνήμης για μονοδιάστατο πίνακα. Συνάρτηση void *malloc(unsigned int size) Χρήση: ΤΔ *p; //Δήλωση ενός δείκτη σε στοιχεία τύπου ΤΔ p = malloc(n * sizeof(τδ)); //Δέσμευση μνήμης για Ν στοιχεία τύπου ΤΔ Η malloc επιστρέφει NULL σε περίπτωση αποτυχίας δέσμευσης της αιτούμενης μνήμης. Αποδέσμευση μνήμης για δυναμικά δεσμευμένους πίνακες. Συνάρτηση void free(void *p) Χρήση: free(p); όπου p είναι δείκτης σε θέσεις μνήμης που έχουν δεσμευθεί δυναμικά. Όταν χρησιμοποιούνται οι συναρτήσεις malloc() και free(), πρέπει να γίνεται συμπερίληψη του αρχείου επικεφαλίδας stdlib.h. Εκτυπώστε τα στοιχεία του πίνακα σε μία γραμμή χωρισμένα με στηλογνώμονα (tab). 2.2 Κατασκευάστε το αρχείο input.txt το οποίο να περιέχει N+1 ακέραιους αριθμούς ως εξής: Ο πρώτος αριθμός είναι το πλήθος των στοιχείων (Ν) και ακολουθούν οι Ν ακέραιοι χωρισμένοι με κενά. 2.3 Εκτελέστε το πρόγραμμα array με ανακατεύθυνση εισόδου από το αρχείο input.txt. 2.4 Επεκτείνετε το πρόγραμμά σας, ώστε να εκτυπώνεται ο μέσος όρος των στοιχείων του πίνακα. σελ. 2 / 8

3 Άσκηση 3: Δυναμική δέσμευση μνήμης για διδιάστατο πίνακα 3.1 Κατασκευάστε το πρόγραμμα mines.c που να διαβάζει από την είσοδο τις διαστάσεις ενός διδιάστατου πίνακα χαρακτήρων (έστω N x M), να δεσμεύει χώρο N x M θέσεων δυναμικά και έπειτα να τον αρχικοποιεί διαβάζοντας από την είσοδο χαρακτήρες. Δυναμική δέσμευση μνήμης για διδιάστατο πίνακα διάστασης N x M ΤΔ **p; P = malloc(n * sizeof(τδ *)); for (i = 0 ; i < N ; i++) p[i] = malloc(m * sizeof(τδ)); Αποδέσμευση μνήμης για δυναμικά δεσμευμένο πίνακα N x M for (i = 0 ; i < N ; i++) free(p[i]); free(p); 3.2 Κατασκευάστε το αρχείο mines.txt που αναπαριστά τα δεδομένα ενός ναρκοπεδίου. Συγκεκριμένα, στην πρώτη γραμμή του αρχείου υπάρχουν οι διαστάσεις του ναρκοπεδίου (N και M) και μετά ακολουθούν γραμμή-γραμμή τα περιεχόμενα των κελιών, που είναι ο χαρακτήρας. όταν δεν υπάρχει νάρκη και ο χαρακτήρας * όταν υπάρχει νάρκη *..**. *.*. 3.3 Επεκτείνετε το πρόγραμμά σας, ώστε να εκτυπώνονται τα περιεχόμενα του πίνακα που διαβάστηκε. Εκτελέστε το πρόγραμμα σας με ανακατεύθυνση εισόδου από το αρχείο mines.txt. 3.4 Επεκτείνετε το πρόγραμμα σας, ώστε να εκτυπώνεται μια τροποποιημένη μορφή του ναρκοπεδίου, στην οποία, στα κελιά που υπάρχει νάρκη να εμφανίζεται πάλι το *, ενώ στα κελιά που δεν υπάρχει νάρκη να φαίνεται ένας αριθμός που δείχνει σε πόσα γειτονικά κελιά υπάρχει νάρκη. Σαν γειτονικά θεωρούνται όχι μόνο συνεχόμενα οριζόντια ή κατακόρυφα κελιά, αλλά και συνεχόμενα σε διαγώνια κατεύθυνση. Για παράδειγμα, για το ναρκοπέδιο που είδαμε, θα πρέπει να εμφανίζεται η έξοδος: 13*2 2**3 *4*2 σελ. 3 / 8

4 ΠΑΡΑΡΤΗΜΑ: Αποσφαλμάτωση προγραμμάτων (Πράξη 3 η ) Στα εργαστήρια 3 και 4 είχαμε αναφερθεί στα συντακτικά και λογικά λάθη που μπορεί να έχουν τα προγράμματά μας. Στον προγραμματισμό υπάρχει και ένα ακόμα σημαντικό είδος σφαλμάτων, τα λάθη διαχείρισης μνήμης. Η ύπαρξή τους στη γλώσσα προγραμματισμού C οφείλεται, σε μεγάλο βαθμό, στην ελευθερία που δίνεται στον προγραμματιστή μέσω των δεικτών, ένα πολύ ισχυρό εργαλείο, που όμως πρέπει να χειριζόμαστε με προσοχή. Στο σημερινό εργαστήριο θα δούμε τι εννοούμε όταν αναφερόμαστε σε σφάλματα διαχείρισης μνήμης, καθώς και πώς μπορούμε να τα ανιχνεύουμε και να τα διορθώνουμε με τη βοήθεια του debugger gdb, που συνήθως είναι εγκατεστημένος σε συστήματα Unix/Linux. Σφάλματα διαχείρισης μνήμης Ένα σφάλμα διαχείρισης μνήμης συνήθως το συνδέουμε στο μυαλό μας με την εμφάνιση του μηνύματος Segmentation Fault (ή ενός παραθύρου για το κλείσιμο του προγράμματος αν το τρέχουμε μέσα από το Dev C++). Γενικά, τα σφάλματα διαχείρισης μνήμης έχουν να κάνουν με το λανθασμένο χειρισμό κάποιας περιοχής της μνήμης, που ενώ νομίζουμε ότι περιέχει κάτι (π.χ. έναν πίνακα) και προσπελαύνουμε αυτές τις θέσεις μνήμης σαν αυτό το κάτι να ήταν εκεί, τελικά δεν υπάρχει αυτό που νομίζαμε. Το πιο συνηθισμένο σφάλμα διαχείρισης μνήμης είναι να προσπελάσουμε το περιεχόμενο ενός δείκτη, χωρίς αυτός να δείχνει σε δεσμευμένες θέσεις μνήμης ή να προσπελάσουμε θέσεις μνήμης πέρα απ' αυτές που έχουμε δεσμεύσει. Ας δούμε κάποια σχετικά παραδείγματα. #include <stdio.h> int main(void) { int *p; *p = 10; return 0; } Στο προηγούμενο παράδειγμα, προσπαθούμε να βάλουμε στις θέσεις μνήμης που δείχνει ο p τον αριθμό 10. Όμως, δεν έχουμε δεσμεύσει χώρο, στον οποίο θα δείχνει το p, ικανό να χωρέσει έναν ακέραιο. Άρα, το προηγούμενο παράδειγμα, κατά πάσα πιθανότητα, θα κάνει segmentation fault. #include <stdio.h> int main(void) { int array[10]; array[10] = 5; return 0; } Εδώ, πηγαίνουμε και προσπελαύνουμε την ενδέκατη θέση του πίνακα array, ενώ ο πίνακας έχει μόνο 10 θέσεις (θυμηθείτε ότι η πρώτη θέση ενός πίνακα είναι η 0). Αν και αυτό είναι ένα προφανές λάθος διαχείρισης μνήμης, προσπαθήστε να τρέξετε το πρόγραμμα. Η εκτέλεσή του έγινε ομαλά; Γιατί πιστεύετε ότι συνέβη αυτό; Ενώ είναι εφικτό η ανίχνευση των σφαλμάτων διαχείρισης μνήμης να γίνει με εξαντλητική ιχνηλάτηση του κώδικα και χρήση printf, ο τρόπος αυτός είναι πολύ αναποτελεσματικός και κουραστικός. Γι' αυτό το λόγο, αλλά και για την ευκολότερη ανίχνευση και των λογικών λαθών στα οποία αναφερθήκαμε στο εργαστήριο 4, θα δούμε στη συνέχεια πώς δουλεύει ένα εργαλείο σελ. 4 / 8

5 αποσφαλμάτωσης (debugging), ο gdb Το εργαλείο αυτό θα κάνει την ανίχνευση και τη διόρθωση των λογικών λαθών και των σφαλμάτων διαχείρισης μνήμης πολύ πιο εύκολη, ενώ δεν θα απαιτεί να πειράξουμε τον κώδικα για την εισαγωγή printf. Ο debugger gdb Ο debugger gdb είναι εγκατεστημένος στα συστήματα Unix και Linux της σχολής. Για να τον χρησιμοποιήσουμε, δίνουμε σαν παράμετρο το g3 κατά τη μεταγλώττιση του προγράμματος, π.χ. gcc g3 -o my_prog my_prog.c Γράφοντας gdb./my_prog ξεκινά η εκτέλεση του debugger, οπότε και εμφανίζεται μία γραμμή εντολών. Οι επιλογές που έχουμε στη διάθεσή μας είναι οι εξής (στις παρενθέσεις αναφέρονται τα συντετμημένα ονόματα των εντολών): break όνομα_συνάρτησης (b) Με αυτή την εντολή, η εκτέλεση του προγράμματος θα ανασταλεί όταν γίνει η πρώτη εκτέλεση της συνάρτησης που καθορίσαμε. Αν γράψουμε π.χ. b main, τότε η εκτέλεση του προγράμματος θα ανασταλεί αμέσως μόλις αυτό ξεκινήσει. break γραμμή (b) Με αυτή την εντολή, θέτουμε ένα σημείο διακοπής (breakpoint) σε συγκεκριμένη γραμμή, οπότε η εκτέλεση του προγράμματος θα ανασταλεί μόλις ο έλεγχος φτάσει στη γραμμή που δώσαμε. Τα breakpoints δεν μπορούν να μπουν σε γραμμές που είναι κενές ή έχουν μόνο σχόλια. Η εισαγωγή τουλάχιστον ενός breakpoint είναι απαραίτητη, γατί αλλιώς δεν θα μπορέσουμε να εκτελέσουμε βηματικά τον κώδικά μας. run όρισμα 1 όρισμα 2... όρισμα n (r) Αφότου έχουμε βάλει τουλάχιστον ένα breakpoint, δίνουμε αυτή την εντολή για να ξεκινήσει η εκτέλεση του προγράμματος (μέχρι να φτάσει στο πρώτο breakpoint). Αν το πρόγραμμά μας παίρνει ορίσματα από τη γραμμή εντολής, τα δίνουμε εδώ, αλλιώς γράφουμε απλά r. step (s) Όταν η εκτέλεση του προγράμματος έχει ανασταλεί, μπορούμε να συνεχίσουμε την εκτέλεση βηματικά, δηλαδή να εκτελείται μόνο μία γραμμή κώδικα κάθε φορά. Με την εντολή s εκτελείται η τρέχουσα γραμμή κώδικα, ενώ αν αυτή είναι η κλήση κάποια συνάρτησης, ο έλεγχος μεταφέρεται εντός της. next (n) Το ίδιο με την s, μόνο που αν συναντήσει συνάρτηση την εκτελεί ολόκληρη χωρίς να μπει μέσα, οπότε ο έλεγχος μεταφέρεται στη γραμμή κώδικα μετά την κλήση της συνάρτησης. finish (f) Με αυτή την εντολή εκτελείται μέχρι τέλους η τρέχουσα συνάρτηση και η βηματική εκτέλεση συνεχίζει μέσα στην συνάρτηση που την κάλεσε. print παράσταση (p) Με αυτή την εντολή, εμφανίζεται η τιμή της παράστασης που δίνουμε, με βάση τις τρέχουσες τιμές των μεταβλητών. Η παράσταση μπορεί να είναι κάτι περίπλοκο, όπως array[x]+y, ή απλά μια μεταβλητή π.χ. y ή array[2]. continue (c) Η εκτέλεση του κώδικα συνεχίζεται κανονικά χωρίς βηματική εκτέλεση. σελ. 5 / 8

6 backtrace (bt) Μας εμφανίζει τη στοίβα των συναρτήσεων. Με αυτή την εντολή, μπορούμε να δούμε ποια συνάρτηση κάλεσε την τρέχουσα συνάρτηση, ποια κάλεσε αυτή κλπ. quit (q) Σταματά η εκτέλεση του gdb και επιστρέφουμε στη γραμμή εντολής. Πέρα από τις προφανείς ευκολίες που παρέχει ένας debugger, αν χειριστούμε σωστά τις προηγούμενες εντολές, έχει και τη δυνατότητα να μας δώσει υπερπολύτιμες πληροφορίες, όταν το πρόγραμμά μας κάνει segmentation fault. Ας το δούμε αυτό με ένα παράδειγμα. #include <stdio.h> int main(void) { int p[] = {10, -1, 8, 6, 9, 13, 0, -9, 6}; int count = 0, sum = 0, i = 0; do { if (p[i] > 0) { count++; sum += p[count]; } i++; } while (1); printf("there are %d positive numbers with sum %d\n", count, sum); return 0; } Το προηγούμενο πρόγραμμα προσπαθεί να μετρήσει πόσοι αριθμοί στον πίνακα p είναι θετικοί και να υπολογίσει το άθροισμά τους (παρατηρήστε ότι το μέγεθος του πίνακα δεν είναι καθορισμένο με άμεσο τρόπο). Τρέχοντας αυτό το πρόγραμμα, αργά η γρήγορα θα μας δώσει segmentation fault. Ας τρέξουμε λοιπόν τον gdb για να μας βοηθήσει. Αρχικά, μεταγλωττίζουμε το πρόγραμμα γράφοντας gcc g3 -o my_prog my_prog.c όπου my_prog.c το όνομα που έχουμε δώσει στο αρχείο με τον πηγαίο κώδικα. Γράφουμε gdb./my_prog για να αρχίσει η εκτέλεση του gdb. Τώρα δεν έχουμε παρά να δώσουμε r και να αφήσουμε τον gdb να τρέξει το πρόγραμμα. Κάποια στιγμή θα μας δώσει ένα μήνυμα που θα μοιάζει με αυτό Program received signal SIGSEGV, Segmentation fault. 0x080483ac in main () at my_prog.c:7 7 if (p[i] > 0) { το οποίο μας λέει όχι μόνο ότι υπήρξε segmentation fault, αλλά και σε ποια γραμμή ποιας συνάρτησης (in main () at my_prog.c:7) εμφανίστηκε, ενώ τυπώνει και το περιεχόμενο αυτής της γραμμής if (p[i] > 0). σελ. 6 / 8

7 Οπότε, ο gdb μας βοήθησε να ανιχνεύσουμε πού συμβαίνει αυτό το λάθος διαχείρισης μνήμης. Ας δούμε πώς μπορεί να μας βοηθήσει να το διορθώσουμε. Παρατηρήστε ότι η εκτέλεση του προγράμματος δεν έχει σταματήσει. Ο gdb μπορεί ακόμα να δεχτεί εντολές. Αυτό σημαίνει ότι μπορούμε να τον ρωτήσουμε για τις τιμές οποιασδήποτε μεταβλητής θέλουμε. Αφού λοιπόν, το πρόβλημα έγινε στη γραμμή if (p[i] > 0), ας επικεντρωθούμε σε όσες μεταβλητές περιλαμβάνει. p p[i] Cannot access memory at address 0xbf8de000 Άρα το p[i] αναφέρεται σε κάποια περιοχή της μνήμης στην οποία δεν έχουμε πρόσβαση, άρα σωστά το πρόγραμμά μας έκανε segmentation fault. Συνεπώς, αυτό σημαίνει ότι έχουμε βγει έξω από τα όρια του πίνακα p. Ας δούμε πού έχουμε φτάσει p i $3 = 1279 To $3 δεν πρέπει να σας απασχολεί. Αυτό που μας ενδιαφέρει είναι η αριθμητική τιμή που εμφανίζεται, το Άρα το i έχει φτάσει στο 1279! Είναι προφανές ότι κάπου μέσα στο πρόγραμμά μας έχουμε ξεχάσει να κάνουμε έλεγχο για να μην ξεπερνάμε τα όρια του πίνακα p. Όντως, πουθενά στον κώδικά μας δεν ελέγχουμε αν είμαστε μέσα στα όρια του πίνακα. Δεδομένου ότι ο πίνακας p είναι απροσδιόριστου μεγέθους, πώς θα αντιμετωπίζατε αυτό το πρόβλημα; Αυτό ήταν αρκετό για να λειτουργήσει σωστά το πρόγραμμα. Αν φταίει και κάτι άλλο, προσπαθήστε να το βρείτε με τη χρήση του gdb. σελ. 7 / 8

8 σελ. 8 / 8

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

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

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ 4: Μεταβλητές, Δομές Ελέγχου και Επανάληψης

ΕΡΓΑΣΤΗΡΙΟ 4: Μεταβλητές, Δομές Ελέγχου και Επανάληψης ΕΡΓΑΣΤΗΡΙΟ 4: Μεταβλητές, Δομές Ελέγχου και Επανάληψης Στο εργαστήριο αυτό, θα εξοικειωθούμε με τους τύπους δεδομένων που μας παρέχει η γλώσσα C, θα χρησιμοποιήσουμε τις δομές επανάληψης (for, while, do...while),

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

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

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

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

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

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

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

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

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

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

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες (Διάλεξη 19)

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες (Διάλεξη 19) Κεφάλαιο 8.7 Πολυδιάστατοι Πίνακες (Διάλεξη 19) Πολυδιάστατοι πίνακες Μέχρι τώρα μιλούσαμε για Μονοδιάστατους Πίνακες. ή π.χ. int age[5]= {31,28,31,30,31; για Παράλληλους πίνακες, π.χ. int id[5] = {1029,1132,1031,9991,1513;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

lab13grades Άσκηση 2 -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή

lab13grades Άσκηση 2 -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ 00497 -Δεν ελέγχετε αν η createlist εκτελλέστικε σωστά και δεν τερµατίζετε το πρόγραµµα σε διαφορετική -Σωστά βρίσκετε το σηµείο στο οποίο πρέπει να προστεθεί ο κόµβος. -Σωστά τερµατίζετε

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

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

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

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

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

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

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

Πίνακες. 1 Πίνακες. 30 Μαρτίου 2014

Πίνακες. 1 Πίνακες. 30 Μαρτίου 2014 Πίνακες 0 Μαρτίου 014 1 Πίνακες Είδαμε ότι δηλώνοντας μία μεταβλητή κάποιου συγκεκριμένου τύπου δεσμεύουμε μνήμη κατάλληλη για να αποθηκευτεί μία οντότητα του συγκεκριμένου τύπου. Στην περίπτωση που θέλουμε

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

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 3 Επανάληψη Γ μέρος

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 3 Επανάληψη Γ μέρος ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ Δομές Δεδομένων (Εργ.) Ακ. Έτος 2017-18 Διδάσκων: Ευάγγελος Σπύρου Εργαστήριο 3 Επανάληψη Γ μέρος 1. Στόχος του εργαστηρίου Στόχος του τρίτου εργαστηρίου είναι

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

FAIL PASS PASS οριακά

FAIL PASS PASS οριακά AEM 0001 0002 COMMENTS οριακά -Το πρόγραµµά σου δουλεύει λάθος για τις εισόδους: 7 -Δεν έχεις µεριµνήσει για την περίπτωση step=1. Μπορούσες να θεωρήσεις ειδική περίπτωση και να την υλοποιείς σε άλλον

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 5ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 Η ΕΝΤΟΛΗ for Με την εντολή for δημιουργούμε βρόχους επανάληψης σε

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

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

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

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

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

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

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

Κεφάλαιο Πίνακες Ι. (Διάλεξη 16)

Κεφάλαιο Πίνακες Ι. (Διάλεξη 16) Κεφάλαιο 8.1-8.3 Πίνακες Ι (Διάλεξη 16) 15-1 Πίνακες (Arrays) Σε αυτή την ενότητα θα μιλήσουμε για την δομή δεδομένων Πίνακας: 1. Εισαγωγή & Σύνταξη 2. Δήλωση Πίνακα 3. Αρχικοποίηση Πίνακα 4. Πρόσβαση

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

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

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

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

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

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

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

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες ( ιάλεξη 18) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες ( ιάλεξη 18) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 8.7 Πολυδιάστατοι Πίνακες ( ιάλεξη 18) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Πολυδιάστατοι πίνακες Μέχρι τώρα µιλούσαµε για Μονοδιάστατους Πίνακες. ή π.χ. int age[5]= {31,28,31,30,31; για Παράλληλους πίνακες,

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

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια: Εργαστήριο 6: 6.1 Δομές Επανάληψης Βρόγχοι (Loops) Όταν θέλουμε να επαναληφθεί μια ομάδα εντολών τη βάζουμε μέσα σε ένα βρόχο επανάληψης. Το αν θα (ξανα)επαναληφθεί η εκτέλεση της ομάδας εντολών καθορίζεται

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εργαστήριο 4η σειρά ασκήσεων. Κοζάνη, 1 Νοεμβρίου 2007. Πρόγραμμα p4-1 (μεταγλώττιση και εκτέλεση) Πολύ απλό το πρώτο, για προθέρμανση! Πριν πατήσετε enter

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στη Python Νικόλαος Ζ. Ζάχαρης Αναπληρωτής

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

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

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

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

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

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

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

ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ. for (παράσταση_1; παράσταση_2; παράσταση_3) εντολή επόμενη εντολή

ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ. for (παράσταση_1; παράσταση_2; παράσταση_3) εντολή επόμενη εντολή ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ for (παράσταση_1; παράσταση_2; παράσταση_3) εντολή επόμενη εντολή παράσταση_1 = Παράσταση Αρχικοποίησης παράσταση_2 = Παράσταση Ελέγχου Επανάληψης παράσταση_3 = Παράσταση Ενημέρωσης

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

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

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

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

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

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

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

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

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

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

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12)

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12) Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II (Διάλεξη 12) 12-1 Ανασκόπηση Δομής Προγράμματος με Συναρτήσεις 1 void PrintMessage (); Πρότυπο (Δήλωση) Συνάρτησης (Δηλώνουν τι επιπλέον συναρτήσεις θα χρησιμοποιήσουμε

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

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

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

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

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

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

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

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

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

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

- Το πρόγραµµα σας δίνει τα αναµενόµενα αποτελέσµατα.

- Το πρόγραµµα σας δίνει τα αναµενόµενα αποτελέσµατα. Α.Μ. ΒΑΘΜΟΣ ΣΧΟΛΙΑ 1349 FAIL Δεν ελήφθη άσκηση 1482 1556 1559 1562 1563 1565 1566 FAIL - Στην initialize πρέπει να κάνετε έλεγχο αν η malloc αποτυγχάνει για κάθε κλήση της, άρα και για δέσµευση χώρου για

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

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

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

Κεφάλαιο ΙV: Δείκτες και πίνακες. 4.1 Δείκτες.

Κεφάλαιο ΙV: Δείκτες και πίνακες. 4.1 Δείκτες. Κεφάλαιο ΙV: Δείκτες και πίνακες. 4.1 Δείκτες. Η C, όπως έχουμε αναφέρει, είναι μια γλώσσα προγραμματισμού υψηλού επιπέδου η οποία αναπτύχθηκε για πρώτη φορά το 1972 από τον Dennis Ritchie στα AT&T Bell

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

Εισαγωγή στον Προγραμματισμό (με. τη C)

Εισαγωγή στον Προγραμματισμό (με. τη C) Υποχρεωτικό Μάθημα 3 ου Εξαμήνου Χειμερινό Εξάμηνο Ακ. Έτους 20 Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Εισαγωγή στον Προγραμματισμό (με τη C) Διδάσκουσα: Φατούρου Παναγιώτα faturu [at] csd.uoc.gr

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

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

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

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

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

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

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

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ενδεικτικές Απαντήσεις Εξετάσεων Α' Περιόδου Θέµα 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 Το αποτέλεσµα είναι η αντιστοιχία των

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

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

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

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

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

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

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

Εντολές ελέγχου ροής if, for, while, do-while

Εντολές ελέγχου ροής if, for, while, do-while Εντολές ελέγχου ροής if, for, while, do-while 1 Μαρτίου 014 1 Εντολές εκτέλεσης υπό συνθήκη Μπορούμε να εκτελέσουμε εντολές της γλώσσας σε περίπτωση που κάποια συνθήκη ισχύει χρησιμοποιώντας την εντολή

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

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Οι δείκτες στη C Η έννοια του δείκτη Την έννοια του δείκτη τη συναντήσαμε σε προηγούμενα μαθήματα. Η συνάρτηση scanf(), καταχωρίζει τιμές σε μεταβλητές χρησιμοποιώντας τον τελεστή

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

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις 3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις 5 Απριλίου 01 1 Πίνακες Είδαμε ότι δηλώνοντας μία μεταβλητή κάποιου συγκεκριμένου τύπου δεσμεύουμε μνήμη κατάλληλη για να αποθηκευτεί μία οντότητα

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

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

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

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

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Συναρτήσεις της C Τα Λοιπά Στοίβα και μηχανισμός κλήσης Αναδρομικές συναρτήσεις Στατικές μεταβλητές Άλλα θέματα Μηχανισμός

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

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

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #4 ο : Αποσφαλμάτωση (debugging), μετατροπές Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #4 ο : Αποσφαλμάτωση (debugging), μετατροπές τύπων, δημιουργία τυχαίων αριθμών, λήψη εισόδου από χρήστη Λογικά λάθη public class ShowLogicErrors

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

ΕΡΓΑΣΤΗΡΙΟ 16. Χρησιμοποιώντας τον Αποσφαλματιστή (Debugger) του Eclipse

ΕΡΓΑΣΤΗΡΙΟ 16. Χρησιμοποιώντας τον Αποσφαλματιστή (Debugger) του Eclipse ΕΡΓΑΣΤΗΡΙΟ 16 Χρησιμοποιώντας τον Αποσφαλματιστή (Debugger) του Eclipse 1. Δημιουργήστε ένα νέο project και ενσωματώστε το πρόγραμμα Fibonacci.java. 2. Βεβαιωθείτε ότι μεταγλωττίζει σωστά. Σχήμα 1: Adding

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

Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 12-1 Ανασκόπηση οµής Προγράµµατος µε Συναρτήσεις #include 1 void PrintMessage (); Πρότυπο ( ήλωση) Συνάρτησης (

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

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C Κεφάλαιο 9.1-9.2 Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C Ένα string είναι μία ακολουθία αλφαριθμητικών χαρακτήρων, σημείων στίξης κτλ. Π.χ. Hello How are you? 121212 *Apple#123*%

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Τρίτη Διάλεξη Εντολές Επιλογής και Επανάληψης Εντολές επιλογής Εντολή if Η πιο απλή μορφή της if συντάσσεται ως εξής: if ( συνθήκη ) Οι εντολές μέσα στα άγκιστρα αποτελούν

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

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

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

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

Κεφάλαιο Πίνακες Ι. ( ιάλεξη 15) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Κεφάλαιο Πίνακες Ι. ( ιάλεξη 15) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 8.1-8.3 Πίνακες Ι ( ιάλεξη 15) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 15-1 Πίνακες (Arrays) Σε αυτή την ενότητα θα µιλήσουµε για την δοµή δεδοµένων Πίνακας: 1. Εισαγωγή & Σύνταξη 2. ήλωση Πίνακα 3. Αρχικοποίηση

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

8 FORTRAN 77/90/95/2003

8 FORTRAN 77/90/95/2003 ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ 1: Εισαγωγή... 17 1.1. Ανασκόπηση της ιστορίας των υπολογιστών... 18 1.2. Πληροφορία και δεδομένα... 24 1.3. Ο Υπολογιστής... 26 1.4. Δομή και λειτουργία του υπολογιστή... 28 1.5.

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

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C Εισαγωγή στην C Μορφή Προγράµµατος σε γλώσσα C Τµήµα Α Με την εντολή include συµπεριλαµβάνω στο πρόγραµµα τα πρότυπα των συναρτήσεων εισόδου/εξόδου της C.Το αρχείο κεφαλίδας stdio.h είναι ένας κατάλογος

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

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

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

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

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

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

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

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα. Ερωτήσεις προόδου C Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα. #include // δίνει οδηγία στον compiler να // συμπεριλάβει την βιβλιοθήκη stdio int

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Αριθμητική Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Δεύτερο Πρόγραμμα 1 / * Second Simple Program : add 2 numbers * / 2

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

Βαθμός Σχόλια. lab6 PASS PASS. - Πολύ καλή δουλειά, αλλά προσπάθησε να κάνεις την άσκηση χρησιµοποιώντας συναρτήσεις από το string.

Βαθμός Σχόλια. lab6 PASS PASS. - Πολύ καλή δουλειά, αλλά προσπάθησε να κάνεις την άσκηση χρησιµοποιώντας συναρτήσεις από το string. Α. Μ. Βαθμός Σχόλια 1183 1194 1238 1239 1240 1241 1242 1243 - Πολύ καλή δουλειά κατά τα άλλα, µπράβο. - Πολύ καλή δουλειά, αλλά προσπάθησε να κάνεις την άσκηση χρησιµοποιώντας συναρτήσεις από το string.h

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

Διάλεξη 5η: Εντολές Επανάληψης

Διάλεξη 5η: Εντολές Επανάληψης Διάλεξη 5η: Εντολές Επανάληψης Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Εντολές Επανάληψης CS100, 2015-2016

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

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

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #4 ο : Αποσφαλμάτωση (debugging), μετατροπές Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #4 ο : Αποσφαλμάτωση (debugging), μετατροπές τύπων, δημιουργία τυχαίων αριθμών, λήψη εισόδου από χρήστη Γαβαλάς Δαμιανός dgavalas@aegean.gr Λογικά

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

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

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

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

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Οργάνωση Προγράµµατος Header Files Μετάφραση και σύνδεση αρχείων προγράµµατος ΕΠΛ 132 Αρχές Προγραµµατισµού

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

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

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

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

ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στην εξοικείωση με τη διαδικασία κατασκευής ενός Λεξικού Αναλυτή κάνοντας χρήση του lex.

ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στην εξοικείωση με τη διαδικασία κατασκευής ενός Λεξικού Αναλυτή κάνοντας χρήση του lex. ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ 5 Ο Εργαστηριακό Μάθημα Δημιουργία Νέων Λεξικών Αναλυτών Σκοπός: Το μάθημα αυτό αναφέρεται: Στην εξοικείωση με τη διαδικασία κατασκευής ενός Λεξικού Αναλυτή κάνοντας χρήση του lex. Στην

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

Διάλεξη 6: Δείκτες και Πίνακες

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

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

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

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές Μαθήματα από το lab Υπενθύμιση: Η άσκηση ζητούσε να υλοποιήσετε μία κλάση vector που να διαχειρίζεται διανύσματα οποιουδήποτε

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

Απλά Προγράμματα. Βήματα: 1. Καθορισμός παράστασης δεδομένων στη μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων

Απλά Προγράμματα. Βήματα: 1. Καθορισμός παράστασης δεδομένων στη μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων Απλά Προγράμματα Βήματα: 1. Καθορισμός παράστασης δεδομένων στη μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων Δομές Δεδομένων + Αλγόριθμοι = Προγράμματα Οι Βασικοί κανόνες Κατανόηση

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

H ΓΛΩΣΣΑ C. Μάθηµα 12: υναµική έσµευση Μνήµης. ηµήτρης Ψούνης

H ΓΛΩΣΣΑ C. Μάθηµα 12: υναµική έσµευση Μνήµης. ηµήτρης Ψούνης H ΓΛΩΣΣΑ C Μάθηµα 12: υναµική έσµευση Μνήµης ηµήτρης Ψούνης 2 Περιεχόµενα Μαθήµατος 1. Στατική έσµευση Μνήµης 1. Η συνάρτηση malloc 2. Η συνάρτηση free 3. έσµευση Μεταβλητής 4. έσµευση Μονοδιάστατου Πίνακα

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

6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ

6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ 6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ 6.1 Η Έννοια του Πίνακα Συχνά είναι προτιμότερο να αντιμετωπίζουμε ένα σύνολο μεταβλητών σαν ενότητα για να απλοποιούμε το χειρισμό τους. Έτσι οργανώνουμε σύνθετα δεδομένα σε

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

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

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

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

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

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

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

Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 9.8

Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 9.8 Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 1000 1001 1002 1003 1004 1005 12 9.8 9976 3 1010 26 1006 1007 1008 1009 1010 1011 16 125 1299 a 13 1298 Δήλωση Δήλωση Τύπος

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

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

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

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

Δείτε τώρα και πώς θα έπρεπε να ήταν το παραπάνω: Page 1

Δείτε τώρα και πώς θα έπρεπε να ήταν το παραπάνω: Page 1 Επειδή αρκετοί εξακολουθείτε να βάζετε σχόλια στην ίδια γραµµή αλλά πολύ πιο "δεξιά" από τον κώδικα που σχολιάζουν, δείτε παρακάτω πώς µοιάζει ένα τέτοιο πρόγραµµα σε συµβατικό terminal. Όπως έχουµε πει

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

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

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

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

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

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

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

Η βασική συνάρτηση προγράμματος main()

Η βασική συνάρτηση προγράμματος main() Η βασική συνάρτηση προγράμματος main() HEADER FILES main(){ ΔΗΛΩΣΕΙΣ ΜΕΤΑΒΛΗΤΩΝ ΕΝΤΟΛΕΣ (σειριακές, επιλογής ή επανάληψης) ΕΠΙΣΤΡΕΦΟΜΕΝΟΣ ΤΥΠΟΣ (return 0;) Συναρτήσεις Η συνάρτηση είναι ένα υποπρόγραμμα

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

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

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

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

8. Η δημιουργία του εκτελέσιμου προγράμματος γίνεται μόνο όταν το πηγαίο πρόγραμμα δεν περιέχει συντακτικά λάθη.

8. Η δημιουργία του εκτελέσιμου προγράμματος γίνεται μόνο όταν το πηγαίο πρόγραμμα δεν περιέχει συντακτικά λάθη. 1ΗΣ ΣΕΛΙΔΑΣ ΤΕΛΙΚΟ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 2015 Γ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ (ΚΥΚΛΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΗΡΕΣΙΩΝ) ΣΥΝΟΛΟ

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

Συναρτήσεις. Εισαγωγή

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

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