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

Save this PDF as:
 WORD  PNG  TXT  JPG

Μέγεθος: 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 Εμβέλεια μεταβλητών Οι μεταβλητές ενός προγράμματος χωρίζονται σε δύο κατηγορίες: Τις καθολικές μεταβλητές

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

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 Βοηθός: Κοσμάς

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στους Αλγόριθμους και τον Προγραμματισμό. 3η Διάλεξη Είσοδος Δεδομένων Συνθήκες Βρόχοι Παραδείγματα Εισαγωγή στους Αλγόριθμους και τον Προγραμματισμό 3η Διάλεξη Είσοδος Δεδομένων Συνθήκες Βρόχοι Παραδείγματα Τελεστές συντομογραφίας Τελεστές σύντομης ανάθεσης += παράδειγμα: sum+=10; αντί για: sum = sum

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

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

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

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

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

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

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

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

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

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

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

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

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

Εργαστηριακή Άσκηση 1

Εργαστηριακή Άσκηση 1 Εργαστηριακή Άσκηση 1 Επανάληψη προγραμματισμού Βασικοί Αλγόριθμοι Είσοδος τιμών από το πληκτρολόγιο Σε όλα τα προγράμματα που θα γράψουμε στην συνέχεια του εξαμήνου θα χρειαστεί να εισάγουμε τιμές σε

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

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

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

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

Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 131 Αρχές Προγραµµατισµού I 3-2

Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 131 Αρχές Προγραµµατισµού I 3-2 Εισαγωγή στην C Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Σύνταξη και Σηµασιολογία της C Σχολιασµός Μεταβλητές / Σταθερές Τύποι εδοµένων και Τελεστές Βιβλίο µαθήµατος: Chapter 2,, Sec.

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

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

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

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

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

Εισαγωγή στις Συναρτήσεις Εισαγωγή στις Συναρτήσεις Η φιλοσοφία σχεδίασης της C βασίζεται στη χρήση των συναρτήσεων. Έχουμε ήδη δει και χρησιμοποιήσει πολλές συναρτήσεις που έχει το σύστημα, όπως είναι οι printf(), scanf(),αλλά

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

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

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

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

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

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

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

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

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

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

Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις. Επανάληψη για την ενδιάμεση εξέταση. (Διάλεξη 13)

Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις. Επανάληψη για την ενδιάμεση εξέταση. (Διάλεξη 13) Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις Επανάληψη για την ενδιάμεση εξέταση (Διάλεξη 13) 13-1 Πρόβλημα 1 Γράψετε τον ορισμό μίας συνάρτησης η οποία υπολογίζει το μέγιστο 2 ακεραίων αριθμών και

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

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

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

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

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Εκφράσεις και Λίγες Εντολές Οι εκφράσεις της C Τελεστές Απλές και σύνθετες εντολές Εντολές ελέγχου (επιλογής) Εισαγωγή σε

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

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

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

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

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΟΔΗΓΙΕΣ: ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ - ΠΛΗ10 ΤΕΛΙΚΕΣ ΕΞΕΤΑΣΕΙΣ - 14 ΙΟΥΝΙΟΥ 2015 Τα θέματα που έχετε στα χέρια σας είναι σε τρεις (3) σελίδες. Επιβεβαιώστε το και αν λείπει κάποια σελίδα

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

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

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

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

Στόχοι και αντικείμενο ενότητας. Προτάσεις επανάληψης. Έλεγχος ροής προγράμματος. #5.. Εντολές Επανάληψης

Στόχοι και αντικείμενο ενότητας. Προτάσεις επανάληψης. Έλεγχος ροής προγράμματος. #5.. Εντολές Επανάληψης Στόχοι και αντικείμενο ενότητας Έλεγχος ροής προγράμματος (βλ. ενότητα #4) Δομή επανάληψης #5.. Εντολές Επανάληψης Προτάσεις επανάληψης Εντολές while, do while Εντολή for Περί βρόχων (loops) Τελεστές,

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

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

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

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

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

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

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

Μεταβλητές. Έστω η μεταβλητή

Μεταβλητές. Έστω η μεταβλητή Δείκτες Μεταβλητές Έστω η μεταβλητή char ch ='A'; Η παραπάνω δήλωση δεσμεύει χώρο στη μνήμη για τη μεταβλητή ch. Η τιμή της ch αντιστοιχεί στο περιεχόμενο μιας θέσης μνήμης, π.χ. της 1001. 0 1 2 3... 1000

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

Sheet2. Σωστή, και µπράβο που µεριµνήσατε για λίστες διαφορετικών µεγεθών.

Sheet2. Σωστή, και µπράβο που µεριµνήσατε για λίστες διαφορετικών µεγεθών. Α.Μ. ΒΑΘΜΟΣ ΣΧΟΛΙΑ Δεν κάνει compile και το λάθος είναι σηµαντικό: Το head1 είναι δείκτης σε struct, εποµένως η προσπέλαση πεδίου γίνεται 321 FAIL µε head1->next και όχι head1.next. Επιπλέον, έχετε λάθος

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

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

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

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

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

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

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

Διάλεξη 5: Δείκτες και Συναρτήσεις

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

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

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

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

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

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

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

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

C: Από τη Θεωρία στην Εφαρμογή

C: Από τη Θεωρία στην Εφαρμογή Δρ. Γ. Σ. Τσελίκης Δρ. Ν. Δ. Τσελίκας C: Από τη Θεωρία στην Εφαρμογή Ενδεικτικές Ασκήσεις από το Βιβλίο C: Από τη Θεωρία στην Εφαρμογή (Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας) Ενδεικτικές Ασκήσεις του Βιβλίου Ε.Α.1

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

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

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

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

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

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

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

Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C (2)

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 4ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 ΟΙ ΤΕΛΕΣΤΕΣ ΣΥΓΚΡΙΣΗΣ Με τους τελεστές σύγκρισης, συγκρίνουμε τις

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

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής Ενότητα 5: Δείκτες και Δυναμική Δέσμευση- Αποδέσμευση Μνήμης στη C/ Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με δείκτες /Ένα πακέτο για τον ΑΤΔ Συνδεδεμένη Λίστα Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν

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

Προγραμματισμός Η/Υ. Ενότητα 3: Top Down Σχεδιασμός

Προγραμματισμός Η/Υ. Ενότητα 3: Top Down Σχεδιασμός Προγραμματισμός Η/Υ Ενότητα 3: Νίκος Καρακαπιλίδης, Καθηγητής Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών Σκοποί ενότητας Κατανόηση της έννοιας της διεργασίας

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

Σημειώσεις έκτης και έβδομης εβδομάδας

Σημειώσεις έκτης και έβδομης εβδομάδας Σημειώσεις έκτης και έβδομης εβδομάδας Προσέξτε το μέγεθος των δύο δομών. Το Node είναι 8 bytes, ενώ το Node1 1 byte. Η διαφορά έγκειται στο ότι η πρώτη δομή περιέχει ακέραιο, τον δείκτη next, οπότε πρέπει

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

Συναρτήσεις και διαδικασίες

Συναρτήσεις και διαδικασίες Συναρτήσεις και διαδικασίες Χρήση συναρτήσεων βιβλιοθήκης Εντολή κλήσης της συνάρτησης printf: printf( Hello, world\n ); Μια συνάρτηση είναι ένα σύνολο εντολών που έχουν ομαδοποιηθεί και τους έχει αποδοθεί

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

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

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

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

Προγραμματισμός Η/Y. Διάλεξη 6 η : Συναρτήσεις

Προγραμματισμός Η/Y. Διάλεξη 6 η : Συναρτήσεις Προγραμματισμός Η/Y Διάλεξη 6 η : Συναρτήσεις Η C είναι συναρτησιακή γλώσσα προγραμματισμού Ως τώρα όλα τα προγράμματα που είδαμε ήταν γραμμένα μέσα στην main Τι θα κάνουμε όμως αν Το πρόγραμμα είναι τεράστιο

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

Διάλεξη 13: Δομές Δεδομένων ΙΙ (Ταξινομημένες Λίστες)

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

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

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

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

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 10: Συναρτήσεις Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης

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

ΣΥΝΑΡΤΗΣΕΙΣ Παραδείγματα χρήσης συναρτήσεων

ΣΥΝΑΡΤΗΣΕΙΣ Παραδείγματα χρήσης συναρτήσεων ΣΥΝΑΡΤΗΣΕΙΣ Παραδείγματα χρήσης συναρτήσεων ΠΟΛΛΕΣ ΕΝΤΟΛΕΣ ΕΠΙΣΤΡΟΦΗΣ Να γραφτεί ένα πρόγραμμα που να διπλασιάζει ένα ποσό που του δίνει ο χρήστης μεταξύ 0 και 1000. Να ελέγχει εάν το ποσό που εισήχθη

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

Προγραμματισμός Η/Υ. Ενότητα 7: Συναρτήσεις

Προγραμματισμός Η/Υ. Ενότητα 7: Συναρτήσεις Προγραμματισμός Η/Υ Ενότητα 7: Νίκος Καρακαπιλίδης, Καθηγητής Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών Σκοποί ενότητας Κατανόηση του ορισμού και της κλήση

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

Προγραμματισμός Αναδρομή

Προγραμματισμός Αναδρομή Προγραμματισμός Αναδρομή Προγραμματισμός Προγραμματισμός Κλήσεις Συναρτήσεων Όταν καλείται μια συνάρτηση, πρέπει Να θυμάται σε ποιο σημείο του προγράμματος θα επιστρέψει Να δεσμεύσει χώρο για την τιμή

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

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

Κεφάλαιο 3.1, : Συναρτήσεις I. (Διάλεξη 11) Κεφάλαιο 3.1,3.3-3.4: Συναρτήσεις I (Διάλεξη 11) 11-1 Μη-Δομημένος Προγραμματισμός Το πρόγραμμα στα αριστερά δεν είναι Αρθρωτό (δεν έχει σωστή δομή). Όλη η λειτουργικότητα ορίζεται μέσα στην main. Το αποτέλεσμα

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

Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ

Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ Σκοπός του μαθήματος Σκοπός του παρόντος μαθήματος είναι να μάθετε να κάνετε εισαγωγή δεδομένων σε πίνακες και περαιτέρω επεξεργασία

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

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

Γλώσσες Προγραμματισμού Γλώσσες Προγραμματισμού Διδάσκων: Ανδρέας Παπασαλούρος Ιστοσελίδα: http://www.samos.aegean.gr/math/andpapas/courses/pl/default.htm Πλατφόρμα ηλεκτρονικής μάθησης: http://myria.math.aegean.gr/moodle/ Πλατφόρμα

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

Κεφάλαιο 5.4-5.11: Επαναλήψεις (oι βρόγχοιfor, do-while) (Διάλεξη 10) Εντολές Επανάληψης που θα καλυφθούν σήμερα

Κεφάλαιο 5.4-5.11: Επαναλήψεις (oι βρόγχοιfor, do-while) (Διάλεξη 10) Εντολές Επανάληψης που θα καλυφθούν σήμερα Κεφάλαιο 5.4-5.11: Επαναλήψεις (oι βρόγχοιfor, do-while) (Διάλεξη 10) 10-1 Εντολές Επανάληψης που θα καλυφθούν σήμερα Διάλεξη 9 - Δευτέρα while() τελεστές postfix/prefix (++, --,...) και σύνθετοι τελεστές

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

Εντολές Επανάληψης. int sum = 0, i=1; sum += i++ ; sum += i++ ; Η πράξη αυτή θα πρέπει να επαναληφθεί Ν φορές!

Εντολές Επανάληψης. int sum = 0, i=1; sum += i++ ; sum += i++ ; Η πράξη αυτή θα πρέπει να επαναληφθεί Ν φορές! Εντολές Επανάληψης Πολλές φορές χρειάζεται να επαναλάβουμε τις ίδιες εντολές Πχ. Έστω ότι θέλουμε να υπολογίσουμε το άθροισμα όρων μιας ακολουθίας διαδοχικών ακεραίων. Δηλαδή αν ο χρήστης δώσει τον αριθμό

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

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

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

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

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

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

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

Στόχοι και αντικείμενο ενότητας. Βασικές κατασκευές ΓΠ. Έλεγχος ροής προγράμματος. #4.. Εντολές Επιλογής

Στόχοι και αντικείμενο ενότητας. Βασικές κατασκευές ΓΠ. Έλεγχος ροής προγράμματος. #4.. Εντολές Επιλογής Στόχοι και αντικείμενο ενότητας Βασικές κατασκευές Γλωσσών Προγραμματισμού (ΓΠ) Δομές ελέγχου ροής προγράμματος #4.. ντολές πιλογής Προτάσεις διακλάδωσης υπό συνθήκη ντολές if, if Φωλιασμένα (nested) if

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

Ενώσεις δεδομένων Απαριθμητές Ψηφιακοί τελεστές Αναδρομικές συναρτήσεις

Ενώσεις δεδομένων Απαριθμητές Ψηφιακοί τελεστές Αναδρομικές συναρτήσεις Ενώσεις δεδομένων Απαριθμητές Ψηφιακοί τελεστές Αναδρομικές συναρτήσεις Ενώσεις δεδομένων (union) τι και γιατί Συσκευές με μικρή μνήμη => ανάγκη εξοικονόμησης πόρων Παρατήρηση: αχρησιμοποίητη μνήμη. Έστω

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

Βαθμός Σχόλια. lab8. οριακά PASS 1194 PASS

Βαθμός Σχόλια. lab8. οριακά PASS 1194 PASS Α. Μ. Βαθμός Σχόλια 1183 1194 1195 FAIL 1238 1239 - Άσχηµα ονόµατα µεταβλητών (s, t) - Δε δεσµεύεις αρκετή µνήµη για τις λέξεις που αποθηκεύονται στον πίνακα (και γι αυτό τελικά το πρόγραµµά σου κάνει

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

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

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

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