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

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

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

Transcript

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

2 1 ο Μέρος Μεταβλητές Δομές (Structs) Πίνακες (Arrays) if else if else break switch case Συναρτήσεις Εμβέλεια μεταβλητών Παράδειγμα

3 Μεταβλητές Παράδειγμα: int x; int y; Μνήμη x = 10; y = x+5; printf ( x = %d, x); printf ( y = %d, y); x y main Έξοδος παραδείγματος: x = 10; y = 15;

4 Δομές (Structs) Παράδειγμα: struct s int am; float average; ; Μνήμη struct s student; student am average student.am = 400; student.average = 9.5; printf ( Α.Μ.:%d -- Μ.O.: %f, student.am, student.average); main Έξοδος παραδείγματος: A.M.: M.O.: 9.5 Χρησιμοποιούμε x.<όνομα στοιχείου> : για να προσπελάσουμε τα στοιχεία μιας δομής που περιγράφεται από την μεταβλητή x

5 Πίνακες (Arrays) Παράδειγμα: struct s int am; float average; ; x Μνήμη int x; int A[4]; struct s student; struct s Students[4]; A x = 10; A[0] = 20; A[1] = 30; A[2] = 10*x; student.am = 255; student.average = 8.7; Students[0].am = 400; Students[0].average = 9.5; Students[1].am = 410; Students[2].am = 420; student Students am average am average am average am average am average main

6 If else if else Έστω ότι θέλουμε να υλοποιήσουμε ένα πρόγραμμα το οποίο θα επιτρέπει στο χρήστη να προσθέτει, να αφαιρεί, και να πολλαπλασιάζει 2 ακεραίους. int num1, num2; int choice; printf ( Δώσε τον πρώτο ακέραιο: \n ); scanf ( %d, &num1); printf ( Δώσε τον δεύτερο ακέραιο: \n ); scanf ( %d, &num2); printf ( Ποια πράξη θέλεις να εκτελέσεις; ); printf ( 1 = Πρόσθεση ); printf ( 2 = Αφαίρεση ); printf ( 3 = Πολλαπλασιασμός ); printf ( Επέλεξε: \n ); scanf ( %d,&choice); if (choice == 1) printf ( %d+%d=%d\n,num1,num2,num1+num2); else if (choice == 2) printf ( %d-%d=%d\n,num1,num2,num1-num2); else if (choice == 3) printf ( %d*%d=%d\n,num1,num2,num1*num2); else printf ( Λάθος Επιλογή );

7 Break Η εκτέλεση της εντολής break έχει ως αποτέλεσμα την έξοδο του προγράμματος από τον βρόγχο στον οποίο αυτή περιέχεται. βρόγχοι for, do while, while. #define N 1000; int counter = 0; int A[N]; /* Αύξηση του μετρητή counter έως το 100 */ while (1) counter = counter + 1; if (counter == 100) // Εύρεση της θέσης του στοιχείου 10 στον πίνακα Α for (i=0; i<n; i++) if (A[i] == 10) printf ( Το 10 είναι στη θέση %d, i); int counter1 = 0, counter2 = 0; while (1) counter1++; if (counter1 == 100) counter2 = 0; while (1) counter2+=2; if (counter2 == 200)

8 If else if else Έστω ότι θέλουμε να υλοποιήσουμε ένα πρόγραμμα το οποίο θα επιτρέπει στο χρήστη να προσθέτει, να αφαιρεί, και να πολλαπλασιάζει 2 ακεραίους. int num1, num2; int choice; while (1) printf ( Δώσε τον πρώτο ακέραιο: \n ); scanf ( %d, &num1); printf ( Δώσε τον δεύτερο ακέραιο: \n ); scanf ( %d, &num2); printf ( Ποια πράξη θέλεις να εκτελέσεις; ); printf ( 1 = Πρόσθεση ); printf ( 2 = Αφαίρεση ); printf ( 3 = Πολλαπλασιασμός ); printf ( 4 = Έξοδος ); printf ( Επέλεξε: \n ); scanf ( %d,&choice); if (choice == 1) printf ( %d+%d=%d\n,num1,num2,num1+num2); else if (choice == 2) printf ( %d-%d=%d\n,num1,num2,num1-num2); else if (choice == 3) printf ( %d*%d=%d\n,num1,num2,num1*num2); else if (choice ==4) else printf ( Λάθος Επιλογή );

9 Switch case Έστω ότι θέλουμε να υλοποιήσουμε ένα πρόγραμμα το οποίο θα επιτρέπει στο χρήστη να προσθέτει, να αφαιρεί, και να πολλαπλασιάζει 2 ακεραίους. int num1, num2; int choice = 0; while (choice!=4) printf ( Δώσε τον πρώτο ακέραιο: \n ); scanf ( %d, &num1); printf ( Δώσε τον δεύτερο ακέραιο: \n ); scanf ( %d, &num2); printf ( Ποια πράξη θέλεις να εκτελέσεις; ); printf ( 1 = Πρόσθεση ); printf ( 2 = Αφαίρεση ); printf ( 3 = Πολλαπλασιασμός ); printf ( 4 = Έξοδος ); printf ( Επέλεξε: \n ); scanf ( %d,&choice); switch (choice) case 1: printf ( %d+%d=%d\n,num1,num2,num1+num2); case 2: printf ( %d-%d=%d\n,num1,num2,num1-num2); case 3: printf ( %d*%d=%d\n,num1,num2,num1*num2); case 4: printf ( Έξοδος από το πρόγραμμα ); default: printf ( Λάθος Επιλογή );

10 Συναρτήσεις Παίρνουν κάποια ορίσματα, εκτελούν κάποια λειτουργία και επιστρέφουν μία τιμή Είναι αναγκαίο να ορίζουμε τη συνάρτηση ή το πρωτότυπό της πριν τη συνάρτηση main του προγράμματός μας Κάθε συνάρτηση εκτελείται στο δικό της χώρο μνήμης Παράδειγμα: int add (int a, int b); Μνήμη int x = 10, y = 30; int sum = add (x,y); printf ( x+y = %d\n, sum); int add (int a, int b) int sum = a+b; return (sum); Έξοδος παραδείγματος: x+y = 40 x y sum main a b sum add

11 Εμβέλεια μεταβλητών Οι μεταβλητές ενός προγράμματος διακρίνονται σε δύο κατηγορίες: καθολικές μεταβλητές: δηλώνονται στην αρχή κάθε προγράμματος πριν τις συναρτήσεις και μπορούν να προσπελάσονται από όλες τις συναρτήσεις. τοπικές ή εσωτερικές μεταβλητές κάθε συνάρτησης Παράδειγμα: int a = 100; void f1 (void); void f2 (void); // Μία καθολική μεταβλητή Έξοδος παραδείγματος: Η a στην main έχει τιμή: 100 Η a στην f1 έχει τιμή: 100 Η a στην f2 έχει τιμή: 300 int b = 4; // Μία τοπική μεταβλητή printf ( Η a στην main έχει τιμή: %d, a); f2(); f1(); void f1 (void) printf ( Η a στην f1 έχει τιμή: %d, a); void f2 (void) int a = 300; // Μία τοπική μεταβλητή printf ( Η a στην f2 έχει τιμή: %d, a);

12 Ολοκληρωμένο Παράδειγμα - Χρήση Πινάκων και Δομών Έστω ότι η γραμματεία του Τμήματος Επιστήμης Υπολογιστών, επιθυμεί να διατηρήσει διάφορα στοιχεία για τους προπτυχιακούς φοιτητές. Θεωρούμε πως επιθυμεί να διατηρήσει το Α.Μ. (am) και το μέσο όρο βαθμολογίας (average) κάθε φοιτητή Για την αποθήκευση των στοιχείων κάθε φοιτητή χρησιμοποιείται η εξής δομή: struct s int am; float average; ; Τα στοιχεία όλων των φοιτητών διατηρούνται στον πίνακα CSD. Ο πίνακας CSD είναι ένας πίνακας από δομές struct s, δηλαδή struct s CSD[MAX_STUDENTS] Ποια είναι η μορφή του πίνακα αυτού στη μνήμη;

13 Ολοκληρωμένο Παράδειγμα - Χρήση Πινάκων και Δομών Στη συνέχεια θα παρουσιαστεί κώδικας για την υλοποίηση ενός συστήματος διατήρησης των δεδομένων των φοιτητών του Τμήματος Επιστήμης Υπολογιστών, το οποίο θα υποστηρίζει τις εξής λειτουργίες: Εισαγωγή νέου φοιτητή (InsertNewStudent) Αναζήτηση στοιχείων φοιτητή (SearchInfosForStudent) Ενημέρωση μέσου όρου φοιτητή (UpdateInfosOfStudent) και θα παρέχει κατάλληλο μενού για την προσπέλασή τους

14 Ολοκληρωμένο Παράδειγμα - Χρήση Πινάκων και Δομών #include <stdio.h> #define MAX_STUDENTS 1000 struct s int am; float average; ; // Δομή διατήρησης των στοιχείων κάθε φοιτητή struct s CSD[MAX_STUDENTS]; // Υποθέτουμε πως αρχικά τα πεδία am και average // κάθε στοιχείου του CSD είναι -1 int students_count = 0; // Μετρητής του πλήθους των καταχωρημένων φοιτητών void InsertNewStudent (float average); void SearchInfosForStudent (int am); void UpdateInfosOfStudent (int am, float average); int choice = 0, am; float average; while (choice!= 4) printf ( Ποια λειτουργία θέλεις να εκτελέσεις;\n ); // Προβολή μενού στο χρήστη printf ( 1. Εισαγωγή νέου φοιτητή \n ); printf ( 2. Αναζήτηση στοιχείων φοιτητή \n ); printf ( 3. Ενημέρωση στοιχείων φοιτητή \n );

15 Ολοκληρωμένο Παράδειγμα - Χρήση Πινάκων και Δομών printf ( 4. Έξοδος \n ); printf ( Επέλεξε: \n ); scanf ( %d, &choice); switch (choice) // Ανάλογα με την επιλογή του χρήστη... case 1 : printf ( Δώσε τον μέσο όρο του νέου φοιτητή: ); scanf ( %d, &average); InsertNewStudent (average); case 2 : printf ( Δώσε το A.M. του φοιτητή: ); scanf ( %d, &am); SearchInfosForStudent (am); case 3 : printf ( Δώσε το A.M. του φοιτητή: ); scanf ( %d, &am); printf ( Δώσε τον νέο μέσο όρο του φοιτητή ); scanf ( %d, &average); UpdateInfosOfStudent (am, average); case 4 : printf ( Έξοδος από το πρόγραμμα ); default : printf ( Λάθος επιλογή ); // End of main

16 Ολοκληρωμένο Παράδειγμα - Χρήση Πινάκων και Δομών void InsertNewStudent (float average) CSD[students_count].am = students_count; CSD[students_count].float = average; printf ( Ο νέος φοιτητής εισήχθη επιτυχώς με Α.Μ. %d\n, students_count); students_count ++; void SearchInfosForStudent (int am) if (CSD[am].am!= -1) printf ( Ο μέσος όρος του φοιτητή με Α.Μ.:%d είναι: \n, am, CSD[am].average); else printf ( Δεν υπάρχει φοιτητής με Α.Μ.:%d\n, am); void UpdateInfosOfStudent (int am, float average) if (CSD[am].am!= -1) CSD[am].average = average; Παρατηρήσεις: Σε κάθε συνάρτηση θα έπρεπε να εξασφαλίζουμε πως δεν βγαίνουμε εκτός των ορίων του πίνακα

17 2 ο Μέρος Δείκτες (Pointers) Δομές (Structs) Πίνακες (Arrays) Malloc free Παράδειγμα

18 Δείκτες (Pointers) Παράδειγμα: int x; int *px; Μνήμη x = 10; px = &x; printf ( x = %d, x); printf ( px = %u, px); printf ( *px = %d, *px); x px η px «δείχνει» στη x main Έξοδος παραδείγματος: x = 10; px = 1024; *px = 10; Χρησιμοποιούμε: &x : Για να μάθουμε την διεύθυνση μνήμης στην οποία διατηρείται η x *px : Για να αποκτήσουμε την τιμή της μεταβλητής στην οποία δείχνει ο δείκτης px.

19 Δομές (Structs) Παράδειγμα: struct s int am; float average; ; Μνήμη struct s student; struct s *pstudent; student am average pstudent = &student; pstudent->am = 400; pstudent->average = 9.5; printf ( Α.Μ.:%d -- Μ.O.: %f, pstudent->am, student->average); pstudent main Έξοδος παραδείγματος: A.M.: M.O.: 9.5 Χρησιμοποιούμε px > <όνομα στοιχείου> : για να προσπελάσουμε τα στοιχεία μιας δομής που περιγράφεται από τον δείκτη px

20 Πίνακες (Arrays) Παράδειγμα: struct s int am; float average; ; int A[4]; int *B[4]; struct s C[4]; struct s *D[4]; A[0] = 10; A[1] = 20; A B C Μνήμη B[2] = &A[2]; *B[2] = 30; 1096 C[0].am = 400; C[0].average = 9.5; D[1] = &C[1]; D[1]->am = 401; D[1]->average = 7; D 1072 main

21 Malloc Επιτρέπει τη δυναμική (κατά την εκτέλεση του προγράμματος) δέσμευση μνήμης παίρνει ως όρισμα το μέγεθος της μνήμης που θα δεσμευθεί χρήση της συνάρτησης sizeof, π.χ. sizeof(int), sizeof(char), επιστρέφει έναν δείκτη στην αρχή της δεσμευμένης μνήμης (ή null σε περίπτωση αποτυχίας) ο δείκτης αυτός είναι τύπου void καιπρέπειναμετατραπείστονκατάλληλοτύπο(casting) ο δεσμευμένος χώρος μνήμης δεν ανήκει σε κάποια συνάρτηση ή πρόγραμμα Παράδειγμα: int *px; struct s *pstudent; px = (int *) malloc (sizeof(int)); pstudent = (struct s *) malloc (sizeof(struct s)); Μνήμη px pstudent main *px = 15; pstudent -> am = 400; pstudent -> average = 9.5;

22 Free Η συνάρτηση αυτή χρησιμοποιείται για την επιστροφή στο σύστημα της μνήμης που έχει δεσμευθεί με τη χρήστη της συνάρτησης malloc Παίρνει ως όρισμα έναν δείκτη στη μνήμη που επιθυμούμε να αποδεσμεύσουμε ο δείκτης αυτός είναι ίδιος με τον δείκτη που επιστράφηκε από τη malloc Παράδειγμα: int *px; struct s *pstudent; px = (int *) malloc (sizeof(int)); pstudent = (struct s *) malloc (sizeof(struct s)); *px = 15; pstudent -> am = 400; pstudent -> average = 9.5; free (px); free (pstudent); Αποδεσμεύεται αυτή η μνήμη Αποδεσμεύεται αυτή η μνήμη Μνήμη 15 px NULL 1024 pstudent NULL main px=null; 1 pstudent=null; 2 Σημαντικό: Μια καλή πρακτική είναι μετά την απελευθέρωση της μνήμης στην οποία δείχνει κάποιος δείκτης p να αναθέσουμε στον p την τιμή NULL

23 Ολοκληρωμένο Παράδειγμα - Χρήση Πινάκων, Δεικτών σε Δομές Έστω ότι η γραμματεία του Τμήματος Επιστήμης Υπολογιστών, επιθυμεί να διατηρήσει διάφορα στοιχεία για τους προπτυχιακούς φοιτητές. Θεωρούμε πως επιθυμεί να διατηρήσει το Α.Μ. (am) και το μέσο όρο βαθμολογίας (average) κάθε φοιτητή Για την αποθήκευση των στοιχείων κάθε φοιτητή χρησιμοποιείται η εξής δομή: struct s int am; float average; ; Τα στοιχεία όλων των φοιτητών διατηρούνται στον πίνακα CSD. Ο πίνακας CSD θα μπορούσε να είναι ένας πίνακας από δομές struct s (δηλαδή struct s CSD[MAX_STUDENTS]). Η λύση αυτή έχει το μειονέκτημα πως εάν η δομή struct s περιέχει πολλά στοιχεία, τότε σπαταλάτε άσκοπα μεγάλο μέρος της μνήμης είτε στον CSD αποθηκεύεται ένας φοιτητής είτε MAX_STUDENTS φοιτητές Μια καλύτερη λύση είναι ο CSD να περιέχει δείκτες προς δομές struct s s (δηλαδή struct s *CSD[MAX_STUDENTS]) και να δεσμεύεται χώρος για μία δομή struct s μόνο όταν αυτό απαιτείται (π.χ. κατά την εισαγωγή ενός νέου φοιτητή) Ποια είναι η μορφή του πίνακα αυτού;

24 Ολοκληρωμένο Παράδειγμα - Χρήση Πινάκων, Δεικτών σε Δομές Στη συνέχεια θα παρουσιαστεί κώδικας για την υλοποίηση ενός συστήματος διατήρησης των δεδομένων των φοιτητών του Τμήματος Επιστήμης Υπολογιστών, το οποίο θα υποστηρίζει τις εξής λειτουργίες: Εισαγωγή νέου φοιτητή (InsertNewStudent) Αναζήτηση στοιχείων φοιτητή (SearchInfosForStudent) Ενημέρωση μέσου όρου φοιτητή (UpdateInfosOfStudent) Διαγραφή φοιτητή (DeleteStudent) και θα παρέχει κατάλληλο μενού για την προσπέλασή τους

25 Ολοκληρωμένο Παράδειγμα - Χρήση Πινάκων, Δεικτών σε Δομές #include <stdio.h> #define MAX_STUDENTS 1000 struct s int am; float average; ; // Δομή διατήρησης των στοιχείων κάθε φοιτητή int students_count = 0; // Μετρητής του πλήθους των καταχωρημένων φοιτητών void InsertNewStudent (float average, struct s **StudentsArray); void SearchInfosForStudent (int am, struct s **StudentsArray); void UpdateInfosOfStudent (int am, float average, struct s **StudentsArray); void DeleteStudent (int am, struct s **StudentsArray); int choice = 0, am; float average; struct s *CSD[MAX_STUDENTS]; // Θεωρούμε πως αρχικά όλοι οι δείκτες είναι null while (choice!= 5) printf ( Ποια λειτουργία θέλεις να εκτελέσεις;\n ); // Προβολή μενού στο χρήστη printf ( 1. Εισαγωγή νέου φοιτητή \n ); printf ( 2. Αναζήτηση στοιχείων φοιτητή \n ); printf ( 3. Ενημέρωση στοιχείων φοιτητή \n ); printf ( 4. Διαγραφή φοιτητή \n );

26 Ολοκληρωμένο Παράδειγμα - Χρήση Πινάκων, Δεικτών σε Δομές printf ( 5. Έξοδος \n ); printf ( Επέλεξε: \n ); scanf ( %d, &choice); switch (choice) // Ανάλογα με την επιλογή του χρήστη... case 1 : printf ( Δώσε τον μέσο όρο του νέου φοιτητή: ); scanf ( %d, &average); InsertNewStudent (average, CSD); case 2 : printf ( Δώσε το A.M. του φοιτητή: ); scanf ( %d, &am); SearchInfosForStudent (am, CSD); case 3 : printf ( Δώσε το A.M. του φοιτητή: ); scanf ( %d, &am); printf ( Δώσε τον νέο μέσο όρο του φοιτητή ); scanf ( %d, &average); UpdateInfosOfStudent (am, average, CSD); case 4 : printf ( Δώσε το A.M. του φοιτητή: ); scanf ( %d, &am); DeleteStudent (am, CSD); case 5 : printf ( Έξοδος από το πρόγραμμα ); default : printf ( Λάθος επιλογή ); // End of main

27 Ολοκληρωμένο Παράδειγμα - Χρήση Πινάκων, Δεικτών σε Δομές void InsertNewStudent (float average, struct **StudentsArray) StudentsArray[students_count] = (struct s *) malloc(sizeof(struct s)); StudentsArray[students_count]->am = students_count; StudentsArray[students_count]->average = average; printf ( Ο νέος φοιτητής εισήχθη επιτυχώς με Α.Μ. %d\n, students_count); students_count ++; void SearchInfosForStudent (int am, struct **StudentsArray) if (StudentsArray[am]!= null) printf ( Ο μέσος όρος του φοιτητή με Α.Μ.:%d είναι: \n, am, CSD[am]->average); else printf ( Δεν υπάρχει φοιτητής με Α.Μ.:%d\n, am); void UpdateInfosOfStudent (int am, float average, struct **StudentsArray) if (StudentsArray[am]!= null) StudentsArray[am]->average = average; void DeleteStudent (int am, float average, struct **StudentsArray) if (StudentsArray[am]!= null) free (StudentsArray[am]); StudentsArray[am] = null;

28 Συναρτήσεις Εμβέλεια μεταβλητών Παράδειγμα Ανταλλαγής τιμών με χρήση συνάρτησης Χρησιμότητα δείκτη σε δείκτη Χρησιμότητα της Malloc Αναδρομή 3 ο Μέρος

29 Συναρτήσεις Παίρνουν κάποια ορίσματα, εκτελούν κάποια λειτουργία και επιστρέφουν μία τιμή Είναι αναγκαίο να ορίζουμε τη συνάρτηση ή το πρωτότυπό της πριν τη συνάρτηση main του προγράμματός μας Κάθε συνάρτηση εκτελείται στο δικό της χώρο μνήμης Παράδειγμα: int add (int a, int b); Μνήμη int x = 10, y = 30; int sum = add (x,y); printf ( x+y = %d\n, sum); int add (int a, int b) int sum = a+b; return (sum); Έξοδος παραδείγματος: x+y = 40 x y sum main a b sum add

30 Εμβέλεια μεταβλητών Οι μεταβλητές ενός προγράμματος διακρίνονται σε δύο κατηγορίες: καθολικές μεταβλητές: δηλώνονται στην αρχή κάθε προγράμματος πριν τις συναρτήσεις και μπορούν να προσπελάσονται από όλες τις συναρτήσεις. τοπικές ή εσωτερικές μεταβλητές κάθε συνάρτησης Παράδειγμα: int a = 100; void f1 (void); void f2 (void); // Μία καθολική μεταβλητή Έξοδος παραδείγματος: Η a στην main έχει τιμή: 100 Η a στην f1 έχει τιμή: 100 Η a στην f2 έχει τιμή: 300 int b = 4; // Μία τοπική μεταβλητή printf ( Η a στην main έχει τιμή: %d, a); f1(); f2(); void f1 (void) printf ( Η a στην f1 έχει τιμή: %d, a); void f2 (void) int a = 300; // Μία τοπική μεταβλητή printf ( Η a στην f2 έχει τιμή: %d, a);

31 Παράδειγμα ανταλλαγής τιμών Έστω ότι θέλουμε να υλοποιήσουμε ένα πρόγραμμα που ανταλλάσσει τις τιμές δύο ακεραίων μεταβλητών 1 ος Αλγόριθμος: Έξοδος 1 ου Αλγορίθμου: int x = 5, y = 10; printf ( Πριν την ανταλλαγή x = %d, y = %d, x, y); x = y; Ο 1 y = x; ος αλγόριθμος είναι λανθασμένος printf ( Μετά την ανταλλαγή x = %d, y = %d, x, y); Πριν την ανταλλαγή: x = 5, y = 10 Μετά την ανταλλαγή: x = 10, y = 10 2 ος Αλγόριθμος: Έξοδος 2 ου Αλγορίθμου: int x = 5, y = 10; printf ( Πριν την ανταλλαγή x = %d, y = %d, x, y); temp = x; x = y; Ο 2 ος αλγόριθμος είναι σωστός y = temp; printf ( Μετά την ανταλλαγή x = %d, y = %d, x, y); Πριν την ανταλλαγή: x = 5, y = 10 Μετά την ανταλλαγή: x = 10, y = 5

32 Παράδειγμα ανταλλαγής τιμών Με χρήση συνάρτησης Πέρασμα με τιμή των ορισμάτων της συνάρτησης 3 ος Αλγόριθμος: void swap (int a, int b); Μνήμη int x = 5, y = 10; printf ( Πριν την ανταλλαγή x = %d, y = %d, x, y); swap (x,y); printf ( Μετά την ανταλλαγή x = %d, y = %d, x, y); x y main void swap (int a, int b) int temp; temp = a; a = b; b = temp; a b temp swap Έξοδος 3 ου Αλγορίθμου: Πριν την ανταλλαγή: x = 5, y = 10 Μετά την ανταλλαγή: x = 5, y = 10 Ο 3 ος αλγόριθμος είναι λανθασμένος

33 Παράδειγμα ανταλλαγής τιμών Με χρήση συνάρτησης Πέρασμα με αναφορά των ορισμάτων της συνάρτησης 4 ος Αλγόριθμος: void swap (int *a, int *b); Μνήμη int x = 5, y = 10; printf ( Πριν την ανταλλαγή x = %d, y = %d, x, y); swap (&x,&y); printf ( Μετά την ανταλλαγή x = %d, y = %d, x, y); x y main void swap (int *a, int *b) int temp; temp = *a; *a = *b; *b = temp; a b temp swap Έξοδος 4 ου Αλγορίθμου: Πριν την ανταλλαγή: x = 5, y = 10 Μετά την ανταλλαγή: x = 10, y = 5 Ο 4 ος αλγόριθμος είναι σωστός

34 Παράδειγμα ανταλλαγής τιμών Με χρήση συνάρτησης Χρήση καθολικών μεταβλητών 5 ος Αλγόριθμος: int x = 5, y = 10; void swap (void); printf ( Πριν την ανταλλαγή x = %d, y = %d, x, y); swap (); printf ( Μετά την ανταλλαγή x = %d, y = %d, x, y); void swap (void) int temp; temp = x; x = y; y = temp; Έξοδος 5 ου Αλγορίθμου: Πριν την ανταλλαγή: x = 5, y = 10 Μετά την ανταλλαγή: x = 10, y = 5 Ο 5 ος αλγόριθμος είναι σωστός

35 Συμπέρασμα Η ενημέρωση της τιμής μιας μεταβλητής x μέσω μιας συνάρτησης f μπορεί να πραγματοποιηθεί με έναν από τους παρακάτω τρόπους: Ορισμός της x ως καθολικής μεταβλητής Κακή προγραμματιστική επιλογή όταν έχουμε πολλές μεταβλητές που τροποποιούνται μέσω συναρτήσεων Πέρασμα της x με αναφορά στη συνάρτηση f Πέρασμα της x με τιμή στη συνάρτηση f, τροποποίησή της και επιστροφή της νέας τιμής Παράδειγμα: int f (int a) int b = a+100; return (b); Έξοδος παραδείγματος: Πριν την ενημέρωση x = 100 Μετά την ενημέρωση x = 200 int x = 100; printf ( Πριν την ενημέρωση x = %d, x); x = f(x); printf ( Μετά την ενημέρωση x = %d, x); Αυτό δημιουργεί πρόβλημα;

36 Ερώτημα Πώς μπορώ να ενημερώσω την τιμή μιας μεταβλητής x που είναι δείκτης σε κάποια άλλη μεταβλητή με τη χρήση μιας συνάρτησης f; Απάντηση: Με οποιονδήποτε από τους τρόπους που παρουσιάστηκαν στην προηγούμενη διαφάνεια. Χρειάζεται προσοχή εάν χρησιμοποιηθεί η μέθοδος του περάσματος με αναφορά της x στην f. Θα πρέπει το όρισμα της f να οριστεί καταλλήλως και να είναι δείκτης σε δείκτη. (παρουσιάζονται παραδείγματα στις επόμενες διαφάνειες...)

37 Παράδειγμα 1 Έστω ότι θέλουμε να ενημερώσουμε την τιμή μιας μεταβλητής px που είναι δείκτης σε κάποια άλλη μεταβλητή με τη χρήση μιας συνάρτησης f 1 ος Αλγόριθμος: Ο 1 ος αλγόριθμος είναι λανθασμένος void f (int *a) a = (int *) malloc (sizeof(int)); *a = 50; x px Μνήμη int x = 10; int *px = &x; printf ( Πριν την ενημέρωση px=%u, *px=%d, px, *px); f(px); printf ( Μετά την ενημέρωση px=%u, *px=%d, px, *px); main a f Έξοδος 1 ου Αλγορίθμου: Πριν την ενημέρωση: px=1024, *px=10 Μετά την ενημέρωση: px=1024, *px= Ερώτηση: Με ποιο τρόπο περνάμε την μεταβλητή px στη συνάρτηση f; (με τιμή ή με αναφορά;)

38 Παράδειγμα 2 χρησιμότητα δείκτη σε δείκτη 2 ος Αλγόριθμος: Void f (int **a); Μνήμη int x = 10; int *px = &x; printf ( Πριν την ενημέρωση px=%u, *px = %d, px, *px); f(&px); printf ( Μετά την ενημέρωση px=%u, *px = %d, px, *px); void f (int **a) *a = (int *) malloc (sizeof(int)); **a = 50; x px main a f 2176 Έξοδος 2 ου Αλγορίθμου: Πριν την ενημέρωση: px=1024, *px=10 Μετά την ενημέρωση: px=2176, *px=50 Ο 2 ος αλγόριθμος είναι σωστός Ερώτηση: Με ποιο τρόπο περνάμε την μεταβλητή px στη συνάρτηση f; (με τιμή ή με αναφορά;)

39 Παράδειγμα 3 χρησιμότητα της malloc 3 ος Αλγόριθμος: void f (int **a) int y = 50; *a = &y; Ο 3 ος αλγόριθμος είναι λανθασμένος x px Μνήμη int x = 10; int *px = &x; printf ( Πριν την ενημέρωση px=%u, *px=%d, px, *px); f(&px); printf ( Μετά την ενημέρωση px=%u, *px=%d, px, *px); Έξοδος 3 ου Αλγορίθμου: Πριν την ενημέρωση: px=1024, *px=10 ΣΦΑΛΜΑ! main a y f Μετά το τέλος της f, ο χώρος μνήμης της y αποδίδεται στο σύστημα επειδή περιέχεται στο χώρο μνήμης της f Με τη χρήση της malloc αποφεύγετε το πρόβλημα αυτό, διότιδεσμεύεταιχώροςμνήμηςπου δεν ανήκει σε κάποια συνάρτηση ή γενικότερα σε κάποιο πρόγραμμα.

40 Αναδρομή Η C επιτρέπει σε μια συνάρτηση να καλεί τον εαυτό της, κάτι το οποίο καλείται αναδρομή Παράδειγμα: int f (int n); printf ( res = %d, f(3)); int f (int n) int t; if (n == 1) return 1; t = f(n-1); return (t+n); Εκτέλεση: f(3); if (3==1) Ψευδές f(2); if (2==1) Ψευδές f(1); if (1==1) Αληθές return(1); t = 1; return (1+2); t = 3; return (3+3); Έξοδος Παραδείγματος: res = 6 n t n t n t Μνήμη main f(3) f(2) f(1) Παρατηρούμε ότι κάθε κλήση της συνάρτησης f, έχει διαφορετικές μεταβλητές n και t

{C} Programming. Part 2/2 Advanced Pointers, Structs, Memory Allocation, Examples using structs

{C} Programming. Part 2/2 Advanced Pointers, Structs, Memory Allocation, Examples using structs {C Programming Part 2/2 Advanced Pointers, Structs, Memory Allocation, Examples using structs Εμβέλεια μεταβλητών Οι μεταβλητές ενός προγράμματος χωρίζονται σε δύο κατηγορίες: Τις καθολικές μεταβλητές

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

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

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

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

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

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

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

Δείκτες (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 Δήλωση Δήλωση Τύπος

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

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

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

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

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

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

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

{C} Programming. Part 1/2 Basics Variables, Conditions, Loops, Arrays, Pointer basics

{C} Programming. Part 1/2 Basics Variables, Conditions, Loops, Arrays, Pointer basics {C Programming Part 1/2 Basics Variables, Conditions, Loops, Arrays, Pointer basics Variables A variable is a container (storage area) to hold data. Eg. Variable name int potionstrength = 95; Variable

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

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

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

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

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

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

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

{C} Programming. Functions Pointers Structs Memory Allocation Examples with structs Lists. CS240b - Data Structures Spring 2017

{C} Programming. Functions Pointers Structs Memory Allocation Examples with structs Lists. CS240b - Data Structures Spring 2017 {C Programming Functions Pointers Structs Memory Allocation Examples with structs Lists Variables A variable is a container (storage area) to hold data. Eg. Variable name int potionstrength = 95; Variable

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

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

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

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

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

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

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

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μάθημα 4ο Τμήμα Διοίκησης Επιχειρήσεων α εξάμηνο Β. Φερεντίνος Συναρτήσεις (functions) 56 Τεμαχισμός του προγράμματος σε μικρότερα κομμάτια που είναι πιο κατανοητά, πιο εύκολα

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΕΠΛ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΕΠΛ 032 2 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ Ενδιάμεση Εξέταση Ημερομηνία:08/03/10 Διάρκεια: 13:30 15:00 Διδάσκων: Παύλος Αντωνίου Ονοματεπώνυμο: Αριθμός Ταυτότητας: Η εξέταση

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

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

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

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

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

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

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

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

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

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

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Συναρτήσεις (Functions) Οι βασικές λειτουργικές ενότητες ενός προγράμματος C Καλούνται με ορίσματα που αντιστοιχούνται σε

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

Γλώσσα Προγραμματισμού C. Προγραμματισμός HY: Γλώσσα Προγραμματισμού C. Γρήγορος Πίνακας Αναφοράς Σύνταξης. Εισήγηση #4. Επαναληπτικές δομές:

Γλώσσα Προγραμματισμού C. Προγραμματισμός HY: Γλώσσα Προγραμματισμού C. Γρήγορος Πίνακας Αναφοράς Σύνταξης. Εισήγηση #4. Επαναληπτικές δομές: Προγραμματισμός HY: Γλώσσα Προγραμματισμού C Δρ. Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I. Θεσσαλίας Email: savvas@teilar.gr URL: http://teilar.academia.edu/iliassavvas

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

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

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

Διάλεξη 9η: Πίνακες (arrays)

Διάλεξη 9η: Πίνακες (arrays) Διάλεξη 9η: Πίνακες (arrays) Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Arrays CS100, 2016-2017 1 / 17

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

Γλώσσα Προγραμματισμού C

Γλώσσα Προγραμματισμού C Προγραμματισμός HY: Γλώσσα Προγραμματισμού C Δρ. Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I. Θεσσαλίας Email: savvas@teilar.gr URL: http://teilar.academia.edu/iliassavvas

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

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Δυναμική Κατανομή Μνήμης Δυναμική εκχώρηση μνήμης Σωρός Συναρτήσεις malloc(), calloc(), realloc(), free() Δυναμικές δομές

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

Διάλεξη 11η: Δείκτες, μέρος 1

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

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

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

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

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

Κεφάλαιο 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 (); Πρότυπο ( ήλωση) Συνάρτησης (

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

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 3 η : Επίλυση Προβληµάτων Χειµερινό Εξάµηνο 2011

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 3 η : Επίλυση Προβληµάτων Χειµερινό Εξάµηνο 2011 Εισαγωγή στον Προγραµµατισµό Διάλεξη 3 η : Επίλυση Προβληµάτων Χειµερινό Εξάµηνο 2011 Τελεστής σύντοµης ανάθεσης Τελεστής σύντοµης ανάθεσης (shorthand assignment operator) µεταβλητή = µεταβλητή τελεστής

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

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

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

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

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

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

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

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

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

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

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

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

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

Γλώσσα Προγραμματισμού C

Γλώσσα Προγραμματισμού C Προγραμματισμός HY: Γλώσσα Προγραμματισμού C Δρ. Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I. Θεσσαλίας Email: savvas@teilar.gr URL: http://teilar.academia.edu/iliassavvas

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

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

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

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

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

ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ Έλεγχος ροής Δομή επιλογής (if, switch) Δομές επανάληψης (while, do-while, for) Διακλάδωση

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

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C Οι συναρτήσεις τι είναι Πρόκειται για ανεξάρτητα τμήματα ενός προγράμματος (υποπρογράμματα) που επιτελούν συγκεκριμένες εργασίες. Καλούνται από το κυρίως

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

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

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

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 6: Διαχείριση Μνήμης & Δυναμικές Δομές Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δυναμικές Δομές Δεδομένων Γενικά Δυναμική Δέσμευση/Αποδέσμευση Μνήμης Δομή τύπου structure

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

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

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

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

Ορισμός μεταβλητών δεικτών και αρχικοποίηση

Ορισμός μεταβλητών δεικτών και αρχικοποίηση Ορισμός μεταβλητών δεικτών και αρχικοποίηση Η έννοια του δείκτη Κάθε μεταβλητή σχετίζεται με μια θέση στην κύρια μνήμη του Η/Υ η οποία έχει τη δική της ξεχωριστή διεύθυνση Ο δείκτης είναι μια μεταβλητή

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

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

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

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

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

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

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

Τεχνολογία και Προγραμματισμός Υπολογιστών. Η γλώσσα προγραμματισμού C

Τεχνολογία και Προγραμματισμός Υπολογιστών. Η γλώσσα προγραμματισμού C Τεχνολογία και Προγραμματισμός Υπολογιστών Η γλώσσα προγραμματισμού C Με μια ματιά Τύπος Πίνακα Μεταβλητές με ενδείκτη Αλφαριθμητικά - Πίνακες Δισδιάστατος Πολυδιάστατος Πίνακας 2 2 Τύπος Πίνακα Σύνθετος

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

ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ

ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2017-2018 ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ ΜΑΘΗΜΑ: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Εισαγωγή ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ Ένα πρόγραμμα σε C περιλαμβάνει μια ή περισσότερες συναρτήσεις

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

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

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

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

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

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

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

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

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

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

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C Οι συναρτήσεις τι είναι Πρόκειται για ανεξάρτητα τμήματα ενός προγράμματος (υποπρογράμματα) που επιτελούν συγκεκριμένες εργασίες. Καλούνται από το κυρίως

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

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων Στόχοι και αντικείμενο ενότητας Πέρασμα Πίνακα σε Συνάρτηση #8.. Ειδικά Θέματα Αλγορίθμων Προβλήματα Αναζήτησης Γραμμική Αναζήτηση (Linear Search) Ενημέρωση Μέτρηση Δυαδική Αναζήτηση (Binary Search) Προβλήματα

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

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

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

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

Κεφάλαιο 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;

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

Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων. 14. Πίνακες Ι. Ιωάννης Κατάκης. ΕΠΛ 032: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων

Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων. 14. Πίνακες Ι. Ιωάννης Κατάκης. ΕΠΛ 032: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων 14. Πίνακες Ι Ιωάννης Κατάκης Πίνακες o Εισαγωγή o Δήλωση o Αρχικοποίηση o Πρόσβαση o Παραδείγματα 2 Πίνακες -Εισαγωγή o Μία δομή δεδομένων είναι ένα σύνολο

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

ΣΥΝΑΡΤΗΣΕΙΣ (Functions)

ΣΥΝΑΡΤΗΣΕΙΣ (Functions) ΣΥΝΑΡΤΗΣΕΙΣ (Functions) Δομή Συνάρτησης τύπος όνομα ( λίστα τυπικών παραμέτρων ) Δηλώσεις μεταβλητών εντολή_1 εντολή_2 : εντολή_ν Σώμα της συνάρτησης Δομή της Λίστας Τυπικών Παραμέτρων τύπος_1 τύπος_2

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

8. Συνθήκες ελέγχου, λογικοί τελεστές

8. Συνθήκες ελέγχου, λογικοί τελεστές Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων 8. Συνθήκες ελέγχου, λογικοί τελεστές Ιωάννης Κατάκης Σήμερα o Λογικές παραστάσεις Σχεσιακοί τελεστές Λογικοί τελεστές o if -else o switch Λογικές παραστάσεις

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

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

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

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

Εισαγωγή στον δομημένο προγραμματισμό

Εισαγωγή στον δομημένο προγραμματισμό Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Εισαγωγή στον δομημένο προγραμματισμό Ενότητα 12 η : Δυναμική Ανάθεση Θέσης Αν. καθηγητής Στεργίου Κώστας e-mail: kstergiou@uowm.gr Τμήμα Μηχανικών Πληροφορικής

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

Προγραμματισμός Δομές Δεδομένων

Προγραμματισμός Δομές Δεδομένων Προγραμματισμός Δομές Δεδομένων Προγραμματισμός Δομές Δεδομένων (Data Structures) Καινούργιοι τύποι δεδομένων που αποτελούνται από την ομαδοποίηση υπαρχόντων τύπων δεδομένων Ομαδοποίηση πληροφορίας που

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

ΘΕΜΑΤΑ ΕΞΕΤΑΣΗΣ ΚΑΙ ΑΠΑΝΤΗΣΕΙΣ

ΘΕΜΑΤΑ ΕΞΕΤΑΣΗΣ ΚΑΙ ΑΠΑΝΤΗΣΕΙΣ ΘΕΜΑΤΑ ΕΞΕΤΑΣΗΣ ΚΑΙ ΑΠΑΝΤΗΣΕΙΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΕΞΕΤΑΣΤΙΚΗ ΠΕΡΙΟ ΟΣ: ΣΕΠΤΕΜΒΡΙΟΥ 6 Ι ΑΣΚΩΝ: Ε. ΚΟΦΙ ΗΣ Όλα τα ερωτήµατα είναι ισοδύναµα. Καλή επιτυχία! ΘΕΜΑ ο a) Βρείτε την αναπαράσταση

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

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μάθημα 5ο Τμήμα Διοίκησης Επιχειρήσεων α εξάμηνο Β. Φερεντίνος Πίνακες 77 Στατική δομή αποθήκευσης δεδομένων (το μέγεθος ορίζεται εξαρχής και δεν αλλάζει) Αποθήκευση πολλών μεταβλητών

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

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 1 Μεταβλητές-Σταθερές-Παράμετροι Τα στοιχεία

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 3: Δείκτες και Πίνακες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αριθμητική Δεικτών Δείκτες και Πίνακες Παραδείγματα Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 6 Ο. Συναρτήσεις Τοπικές, καθολικές, στατικές μεταβλητές Μεταβλητές τύπου extern και register Αναδρομή

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Στόχοι και αντικείμενο ενότητας. Τύπος πίνακα. Τύπος πίνακα (συν.) #6. Πίνακες και Δείκτες

Στόχοι και αντικείμενο ενότητας. Τύπος πίνακα. Τύπος πίνακα (συν.) #6. Πίνακες και Δείκτες Στόχοι και αντικείμενο ενότητας Ο τύπος του Πίνακα (βλ. ενότητα #2α) Ορισμός και αρχικοποίηση Αποθήκευση πινάκων στη μνήμη Πολυδιάστατοι πίνακες #6. Πίνακες και Δείκτες Ο τύπος του Δείκτη Η έννοια του

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

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

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

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

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

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

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

Δυναμική δέσμευση και αποδέσμευση μνήμης. Προγραμματισμός II 1

Δυναμική δέσμευση και αποδέσμευση μνήμης. Προγραμματισμός II 1 Δυναμική δέσμευση και αποδέσμευση μνήμης Προγραμματισμός II 1 lalis@inf.uth.gr Γιατί χρειάζεται η δυναμική μνήμη; Οι απαιτήσεις του προγράμματος σε μνήμη μπορεί να είναι άγνωστες την ώρα της συγγραφής

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

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

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 5: Απαριθμητές (enums) Δομές (structures)και Ενώσεις (unions) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Απαριθμητές - Δομές, φωλιασμένες δομές, τρόποι δήλωσης

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

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

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

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

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

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

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

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

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

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Εντολές ελέγχου ροής προγράμματος (if-else & switch) Η εντολή if-else Η εντολή if-else υπάρχει σχεδόν σε όλες τις γλώσσες προγραμματισμού. Χρησιμοποιείται για τον έλεγχο της

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

1 ο Φροντιστήριο. 1 ο Μέρος. Μεταβλητές Δομές (Structs) Πίνακες (Arrays) if else if else break switch case Συναρτήσεις Εμβέλεια μεταβλητών Παράδειγμα

1 ο Φροντιστήριο. 1 ο Μέρος. Μεταβλητές Δομές (Structs) Πίνακες (Arrays) if else if else break switch case Συναρτήσεις Εμβέλεια μεταβλητών Παράδειγμα Υποχρεωτικό Μάθημα 3 ου Εξαμήνου Χειμερινό Εξάμηνο Ακ. Έτους 2009- Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης 1 ο Φροντιστήριο Διδάσκουσα: Φατούρου Παναγιώτα faturu [at] csd.uoc.gr Βοηθός: Κοσμάς

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

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

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

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

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

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

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

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

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

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

Ενδεικτικές λύσεις και στατιστικά

Ενδεικτικές λύσεις και στατιστικά Προγραμματισμός 1 Σύντομο Quiz 25/9/9 Ενδεικτικές λύσεις και στατιστικά Ερώτηση 1: Γράψτε παρακάτω συνάρτηση η οποία δέχεται ως παραμέτρους ένα string και ένα χαρακτήρα και επιστρέφει τον αριθμό των εμφανίσεων

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

Εισαγωγή στους Αλγόριθμους και τον Προγραμματισμό. 4η Διάλεξη Πίνακες Συναρτήσεις

Εισαγωγή στους Αλγόριθμους και τον Προγραμματισμό. 4η Διάλεξη Πίνακες Συναρτήσεις Εισαγωγή στους Αλγόριθμους και τον Προγραμματισμό 4η Διάλεξη Πίνακες Συναρτήσεις Πίνακες (1) Μια συλλογή μεμονωμένων τιμών δεδομένων Οι πίνακες είναι διατεταγμένοι τα στοιχεία ενός πίνακα είναι τοποθετημένα

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

Κεφάλαιο 4: Συνθήκες Έλεγχου (if-else, switch) και Λογικοί τελεστές / παραστάσεις. (Διάλεξη 8)

Κεφάλαιο 4: Συνθήκες Έλεγχου (if-else, switch) και Λογικοί τελεστές / παραστάσεις. (Διάλεξη 8) Κεφάλαιο 4: Συνθήκες Έλεγχου (if-else, switch) και Λογικοί τελεστές / παραστάσεις (Διάλεξη 8) 8-1 Τι θα δούμε σήμερα Η εντολή if else Η εντολή if else ιf - -else H εντολή switch Λογικές παραστάσεις Σχεσιακοί

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

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

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

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

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

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εργαστήριο 9η εβδομάδα. Κοζάνη, 2 Δεκεμβρίου 2008. Δίνονται παραδείγματα που αποσαφηνίζουν και συμπληρώνουν όσα αναφέρθηκαν στο μάθημα σχετικά με τις δομές

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

ΣΧΕΔΙΑΣΗ ΚΑΙ ΥΛΟΠΟΙΗΣΗ ΛΟΓΙΣΜΙΚΟΥ

ΣΧΕΔΙΑΣΗ ΚΑΙ ΥΛΟΠΟΙΗΣΗ ΛΟΓΙΣΜΙΚΟΥ Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών ΣΧΕΔΙΑΣΗ ΚΑΙ ΥΛΟΠΟΙΗΣΗ ΛΟΓΙΣΜΙΚΟΥ Εμβέλεια Μεταβλητών Εμβέλεια Μεταβλητής Οι μεταβλητές που έχουμε δει μέχρι τώρα είναι

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

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

Κεφάλαιο 8.7. Πίνακες & Συναρτήσεις ( ιάλεξη 17) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 8.7 Πίνακες & Συναρτήσεις ( ιάλεξη 17) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 17-1 Εισαγωγή Στις προηγούµενες διαλέξεις µάθαµε πώς να δηλώνουµε, αρχικοποιούµε και να επεξεργαζόµαστε πίνακες. Σήµερα θα µελετήσουµε

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

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Δομές Δεδομένων και Κυρίως Πρόγραμμα Δομές δεδομένων εκτός από πίνακες: Structs Unions Enums Κυρίως πρόγραμμα Παράμετροι που

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

Η γλώσσα προγραμματισμού C Δυναμική διαχείριση μνήμης

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

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

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

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

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

12. Συναρτήσεις (Μέρος ΙI)

12. Συναρτήσεις (Μέρος ΙI) Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων 12. Συναρτήσεις (Μέρος ΙI) Ιωάννης Κατάκης Σήμερα o Συναρτήσεις χωρίς παραμέτρους o Συναρτήσεις με παραμέτρους Χωρίς επιστροφή τιμής Με επιστροφή τιμής o Εμβέλεια

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

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

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

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

ΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β

ΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β ΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β 1. (10 μον.) Απαντήστε σωστό ή λάθος στις παρακάτω ερωτήσεις (αʹ) _2togo είναι έγκυρο όνομα μεταβλητής (βʹ) Αν p είναι δείκτης στο πρώτο στοιχείο

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

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

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

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

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

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

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

ΠΛΗ111. Ανοιξη Μάθηµα 1 ο Ανασκόπηση της Γλώσσας Προγραµµατισµού C. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

ΠΛΗ111. Ανοιξη Μάθηµα 1 ο Ανασκόπηση της Γλώσσας Προγραµµατισµού C. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης ΠΛΗ111 οµηµένος Προγραµµατισµός Ανοιξη 2005 Μάθηµα 1 ο Ανασκόπηση της Γλώσσας Προγραµµατισµού C Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης Ανασκόπηση της C είκτες Πίνακες

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

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

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

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

Βαθμός Σχόλια. lab PASS 1194 PASS 1238 PASS 1239 PASS

Βαθμός Σχόλια. lab PASS 1194 PASS 1238 PASS 1239 PASS lab7 Α. Μ. Βαθμός Σχόλια 1183 1194 1238 1239 1240 1241 1242 1243 1244 1246 - Η συνθήκη του do/while είναι λάθος µε αποτέλεσµα να µπορεί ο χρήστης να βάζει στοιχεία περισσότερα του SIZE. - Στην συνθήκη

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

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. Ασκήσεις Επανάληψης

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. Ασκήσεις Επανάληψης Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ασκήσεις Επανάληψης Άσκηση 1 Το παρακάτω πρόγραμμα περιέχει μια δομή επανάληψης τύπου for. Να ξαναγραφεί ώστε να έχει ακριβώς την ίδια λειτουργία, χρησιμοποιώντας

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