Εισαγωγή στον Προγραμματισμό (με. τη C)
|
|
- Θεράπων Κωνσταντόπουλος
- 7 χρόνια πριν
- Προβολές:
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 Εμβέλεια μεταβλητών Οι μεταβλητές ενός προγράμματος χωρίζονται σε δύο κατηγορίες: Τις καθολικές μεταβλητές
Διαβάστε περισσότεραΔιάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος
Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μεταβλητές,
Διαβάστε περισσότεραΠρογραμματισμός Η/Υ (ΤΛ2007 )
Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2014-15
Διαβάστε περισσότεραΔείκτες (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) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής
Διαβάστε περισσότεραΑνάπτυξη και Σχεδίαση Λογισμικού
Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού 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 Variables A variable is a container (storage area) to hold data. Eg. Variable name int potionstrength = 95; Variable
Διαβάστε περισσότεραΔιάλεξη 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 Variables A variable is a container (storage area) to hold data. Eg. Variable name int potionstrength = 95; Variable
Διαβάστε περισσότεραΕνδεικτική περιγραφή μαθήματος
ΜΑΘΗΜΑ: ΔΙΔΑΣΚΩΝ: ΤΜΗΜΑ: Προγραμματισμός Η/Υ Συνδουκάς Δημήτριος Διοίκησης Επιχειρήσεων (Γρεβενά) Ενδεικτική περιγραφή μαθήματος 1. Εισαγωγή: Εισαγωγή στον προγραμματισμό, γλώσσες προγραμματισμού, μεταγλωτιστές.
Διαβάστε περισσότεραΚεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12)
Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II (Διάλεξη 12) 12-1 Ανασκόπηση Δομής Προγράμματος με Συναρτήσεις 1 void PrintMessage (); Πρότυπο (Δήλωση) Συνάρτησης (Δηλώνουν τι επιπλέον συναρτήσεις θα χρησιμοποιήσουμε
Διαβάστε περισσότεραΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μάθημα 4ο Τμήμα Διοίκησης Επιχειρήσεων α εξάμηνο Β. Φερεντίνος Συναρτήσεις (functions) 56 Τεμαχισμός του προγράμματος σε μικρότερα κομμάτια που είναι πιο κατανοητά, πιο εύκολα
Διαβάστε περισσότεραΠρογραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε
Διαβάστε περισσότεραΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΕΠΛ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΕΠΛ 032 2 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ Ενδιάμεση Εξέταση Ημερομηνία:08/03/10 Διάρκεια: 13:30 15:00 Διδάσκων: Παύλος Αντωνίου Ονοματεπώνυμο: Αριθμός Ταυτότητας: Η εξέταση
Διαβάστε περισσότεραΚεφάλαιο Πίνακες Ι. (Διάλεξη 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 Hello World /* Αρχείο hello.c * Εµφανίζει στην οθόνη το * µήνυµα hello world */ #include
Διαβάστε περισσότεραΑνάπτυξη και Σχεδίαση Λογισμικού
Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Συναρτήσεις (Functions) Οι βασικές λειτουργικές ενότητες ενός προγράμματος C Καλούνται με ορίσματα που αντιστοιχούνται σε
Διαβάστε περισσότεραΓλώσσα Προγραμματισμού 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
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Β Περιόδου 2015 (8/9/2015) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................
Διαβάστε περισσότεραΔιάλεξη 9η: Πίνακες (arrays)
Διάλεξη 9η: Πίνακες (arrays) Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Arrays CS100, 2016-2017 1 / 17
Διαβάστε περισσότεραΓλώσσα Προγραμματισμού 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 Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (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) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 12-1 Ανασκόπηση οµής Προγράµµατος µε Συναρτήσεις #include 1 void PrintMessage (); Πρότυπο ( ήλωση) Συνάρτησης (
Διαβάστε περισσότεραΕισαγωγή στον Προγραµµατισµό. Διάλεξη 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
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #5 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #5 2 Γενικά Στο Τετράδιο #5 του Εργαστηρίου θα ασχοληθούμε με πιο προχωρημένα θέματα υλοποίησης
Διαβάστε περισσότεραΠρογραμματισμός Η/Υ (ΤΛ2007 )
Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2014-15
Διαβάστε περισσότεραΓλώσσα Προγραμματισμού 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 Οι συναρτήσεις τι είναι Πρόκειται για ανεξάρτητα τμήματα ενός προγράμματος (υποπρογράμματα) που επιτελούν συγκεκριμένες εργασίες. Καλούνται από το κυρίως
Διαβάστε περισσότεραΔομημένος Προγραμματισμός (ΤΛ1006)
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής
Διαβάστε περισσότεραΔιδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ
Διάλεξη 6: Διαχείριση Μνήμης & Δυναμικές Δομές Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δυναμικές Δομές Δεδομένων Γενικά Δυναμική Δέσμευση/Αποδέσμευση Μνήμης Δομή τύπου structure
Διαβάστε περισσότερα#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2017 (27/1/2017) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................
Διαβάστε περισσότεραΟρισμός μεταβλητών δεικτών και αρχικοποίηση
Ορισμός μεταβλητών δεικτών και αρχικοποίηση Η έννοια του δείκτη Κάθε μεταβλητή σχετίζεται με μια θέση στην κύρια μνήμη του Η/Υ η οποία έχει τη δική της ξεχωριστή διεύθυνση Ο δείκτης είναι μια μεταβλητή
Διαβάστε περισσότεραΠεριεχόμενα. Πρόλογος... 21
Περιεχόμενα Πρόλογος... 21 Κεφάλαιο 1: Εισαγωγή στον προγραμματισμό... 25 Εισαγωγή...27 Πώς να διαβάσετε αυτό το βιβλίο...27 Η δομή των κεφαλαίων...28 Γιατί να μάθω προγραμματισμό;...31 Γιατί να μάθω C;...31
Διαβάστε περισσότεραΑ' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ
Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εργαστήριο 4η σειρά ασκήσεων. Κοζάνη, 1 Νοεμβρίου 2007. Πρόγραμμα p4-1 (μεταγλώττιση και εκτέλεση) Πολύ απλό το πρώτο, για προθέρμανση! Πριν πατήσετε enter
Διαβάστε περισσότεραΤεχνολογία και Προγραμματισμός Υπολογιστών. Η γλώσσα προγραμματισμού C
Τεχνολογία και Προγραμματισμός Υπολογιστών Η γλώσσα προγραμματισμού C Με μια ματιά Τύπος Πίνακα Μεταβλητές με ενδείκτη Αλφαριθμητικά - Πίνακες Δισδιάστατος Πολυδιάστατος Πίνακας 2 2 Τύπος Πίνακα Σύνθετος
Διαβάστε περισσότεραΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2017-2018 ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ ΜΑΘΗΜΑ: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Εισαγωγή ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ Ένα πρόγραμμα σε C περιλαμβάνει μια ή περισσότερες συναρτήσεις
Διαβάστε περισσότεραΥπολογισμός - Εντολές Επανάληψης
Προγραμματισμός Η/Υ Ι Υπολογισμός - Εντολές Επανάληψης ΕΛΕΥΘΕΡΙΟΣ ΚΟΣΜΑΣ ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2018-2019 ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ Τ.Ε. 1 Περίληψη Σήμερα... θα συνεχίσουμε τη συζήτησή μας για τα βασικά στοιχεία
Διαβάστε περισσότεραlab13grades Άσκηση 2 -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή
ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ 00497 -Δεν ελέγχετε αν η createlist εκτελλέστικε σωστά και δεν τερµατίζετε το πρόγραµµα σε διαφορετική -Σωστά βρίσκετε το σηµείο στο οποίο πρέπει να προστεθεί ο κόµβος. -Σωστά τερµατίζετε
Διαβάστε περισσότεραΠρογραμματισμός Ι. Δομές Δεδομένων. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Δομές Δεδομένων Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2009-2010 Δομές Δεδομένων Μια δομή δεδομένων είναι μια συλλογή δεδομένων με κάποιες
Διαβάστε περισσότεραΗ γλώσσα προγραμματισμού C
Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C Οι συναρτήσεις τι είναι Πρόκειται για ανεξάρτητα τμήματα ενός προγράμματος (υποπρογράμματα) που επιτελούν συγκεκριμένες εργασίες. Καλούνται από το κυρίως
Διαβάστε περισσότεραΣτόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων
Στόχοι και αντικείμενο ενότητας Πέρασμα Πίνακα σε Συνάρτηση #8.. Ειδικά Θέματα Αλγορίθμων Προβλήματα Αναζήτησης Γραμμική Αναζήτηση (Linear Search) Ενημέρωση Μέτρηση Δυαδική Αναζήτηση (Binary Search) Προβλήματα
Διαβάστε περισσότεραΔιάλεξη 13η: Δυναμική Διαχείρηση Μνήμης, μέρος 1
Διάλεξη 13η: Δυναμική Διαχείρηση Μνήμης, μέρος 1 Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μνήμη I CS100,
Διαβάστε περισσότεραΚεφάλαιο 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. Πίνακες Ι Ιωάννης Κατάκης Πίνακες o Εισαγωγή o Δήλωση o Αρχικοποίηση o Πρόσβαση o Παραδείγματα 2 Πίνακες -Εισαγωγή o Μία δομή δεδομένων είναι ένα σύνολο
Διαβάστε περισσότεραΣΥΝΑΡΤΗΣΕΙΣ (Functions)
ΣΥΝΑΡΤΗΣΕΙΣ (Functions) Δομή Συνάρτησης τύπος όνομα ( λίστα τυπικών παραμέτρων ) Δηλώσεις μεταβλητών εντολή_1 εντολή_2 : εντολή_ν Σώμα της συνάρτησης Δομή της Λίστας Τυπικών Παραμέτρων τύπος_1 τύπος_2
Διαβάστε περισσότερα8. Συνθήκες ελέγχου, λογικοί τελεστές
Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων 8. Συνθήκες ελέγχου, λογικοί τελεστές Ιωάννης Κατάκης Σήμερα o Λογικές παραστάσεις Σχεσιακοί τελεστές Λογικοί τελεστές o if -else o switch Λογικές παραστάσεις
Διαβάστε περισσότεραΠρογραμματισμός Η/Υ (ΤΛ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 Ο Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 1 Μεταβλητές-Σταθερές-Παράμετροι Τα στοιχεία
Διαβάστε περισσότεραΔιδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ
Διάλεξη 3: Δείκτες και Πίνακες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αριθμητική Δεικτών Δείκτες και Πίνακες Παραδείγματα Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ
Διαβάστε περισσότεραΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 6 Ο. Συναρτήσεις Τοπικές, καθολικές, στατικές μεταβλητές Μεταβλητές τύπου extern και register Αναδρομή
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 6 Ο Συναρτήσεις Τοπικές, καθολικές, στατικές μεταβλητές Μεταβλητές τύπου extern και register Αναδρομή ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 1 Συναρτήσεις Ο δομημένος προγραμματισμός,
Διαβάστε περισσότεραΔομημένος Προγραμματισμός (ΤΛ1006)
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής
Διαβάστε περισσότεραΠρογραμματισμός Η/Υ (ΤΛ2007 )
Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16
Διαβάστε περισσότεραΔιάλεξη 2η: Αλγόριθμοι και Προγράμματα
Διάλεξη 2η: Αλγόριθμοι και Προγράμματα Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα
Διαβάστε περισσότεραΠρογραμματισμός Η/Υ (ΤΛ2007 )
Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2014-15
Διαβάστε περισσότεραΔομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων
Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Ένθετες
Διαβάστε περισσότεραΣτόχοι και αντικείμενο ενότητας. Τύπος πίνακα. Τύπος πίνακα (συν.) #6. Πίνακες και Δείκτες
Στόχοι και αντικείμενο ενότητας Ο τύπος του Πίνακα (βλ. ενότητα #2α) Ορισμός και αρχικοποίηση Αποθήκευση πινάκων στη μνήμη Πολυδιάστατοι πίνακες #6. Πίνακες και Δείκτες Ο τύπος του Δείκτη Η έννοια του
Διαβάστε περισσότεραΕισαγωγή στον Προγραμματισμό
Εισαγωγή στον Προγραμματισμό Αριθμητική Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Δεύτερο Πρόγραμμα 1 / * Second Simple Program : add 2 numbers * / 2
Διαβάστε περισσότεραΚεφάλαιο Πίνακες Ι. ( ιάλεξη 15) ιδάσκων: ηµήτρης Ζεϊναλιπούρ
Κεφάλαιο 8.1-8.3 Πίνακες Ι ( ιάλεξη 15) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 15-1 Πίνακες (Arrays) Σε αυτή την ενότητα θα µιλήσουµε για την δοµή δεδοµένων Πίνακας: 1. Εισαγωγή & Σύνταξη 2. ήλωση Πίνακα 3. Αρχικοποίηση
Διαβάστε περισσότεραΔυναμική δέσμευση και αποδέσμευση μνήμης. Προγραμματισμός 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("*");
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2016 (1/2/2016) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................
Διαβάστε περισσότεραΑ' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ
Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εργαστήριο 1η εβδομάδα. Κοζάνη, 5 Οκτωβρίου 2007. Βασικά στοιχεία γραφής προγραμμάτων με τη C: α) Case Sensitive!!! β) Δυνατότητα εισαγωγής σχολίων με /*
Διαβάστε περισσότεραΜεθόδων Επίλυσης Προβλημάτων
ΕΠΛ 032.3: 3: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 12 Πολυδιάστατοι Πίνακες Πολυδιάστατοι πίνακες
Διαβάστε περισσότεραΗ γλώσσα προγραμματισμού C
Η γλώσσα προγραμματισμού C Εντολές ελέγχου ροής προγράμματος (if-else & switch) Η εντολή if-else Η εντολή if-else υπάρχει σχεδόν σε όλες τις γλώσσες προγραμματισμού. Χρησιμοποιείται για τον έλεγχο της
Διαβάστε περισσότερα1 ο Φροντιστήριο. 1 ο Μέρος. Μεταβλητές Δομές (Structs) Πίνακες (Arrays) if else if else break switch case Συναρτήσεις Εμβέλεια μεταβλητών Παράδειγμα
Υποχρεωτικό Μάθημα 3 ου Εξαμήνου Χειμερινό Εξάμηνο Ακ. Έτους 2009- Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης 1 ο Φροντιστήριο Διδάσκουσα: Φατούρου Παναγιώτα faturu [at] csd.uoc.gr Βοηθός: Κοσμάς
Διαβάστε περισσότεραΗ γλώσσα προγραμματισμού C
Η γλώσσα προγραμματισμού C Οι δείκτες στη C Η έννοια του δείκτη Την έννοια του δείκτη τη συναντήσαμε σε προηγούμενα μαθήματα. Η συνάρτηση scanf(), καταχωρίζει τιμές σε μεταβλητές χρησιμοποιώντας τον τελεστή
Διαβάστε περισσότεραΕισαγωγή στον Προγραμματισμό
Εισαγωγή στον Προγραμματισμό Ενότητα 5 Δομές Ελέγχου Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Δομές Ελέγχου Οι Boehm και Jacopini απέδειξαν ότι οποιοσδήποτε αλγόριθμος
Διαβάστε περισσότεραΠρογραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 9: Συναρτήσεις Ορισμός συναρτήσεων () { /* δήλωση μεταβλητών */ /* εντολές ελέγχου/επεξεργασίας */ o Μια συνάρτηση ορίζεται δίνοντας
Διαβάστε περισσότεραΕνδεικτικές λύσεις και στατιστικά
Προγραμματισμός 1 Σύντομο Quiz 25/9/9 Ενδεικτικές λύσεις και στατιστικά Ερώτηση 1: Γράψτε παρακάτω συνάρτηση η οποία δέχεται ως παραμέτρους ένα string και ένα χαρακτήρα και επιστρέφει τον αριθμό των εμφανίσεων
Διαβάστε περισσότεραΕισαγωγή στους Αλγόριθμους και τον Προγραμματισμό. 4η Διάλεξη Πίνακες Συναρτήσεις
Εισαγωγή στους Αλγόριθμους και τον Προγραμματισμό 4η Διάλεξη Πίνακες Συναρτήσεις Πίνακες (1) Μια συλλογή μεμονωμένων τιμών δεδομένων Οι πίνακες είναι διατεταγμένοι τα στοιχεία ενός πίνακα είναι τοποθετημένα
Διαβάστε περισσότεραΚεφάλαιο 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) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 17-1 Εισαγωγή Στις προηγούµενες διαλέξεις µάθαµε πώς να δηλώνουµε, αρχικοποιούµε και να επεξεργαζόµαστε πίνακες. Σήµερα θα µελετήσουµε
Διαβάστε περισσότεραΑνάπτυξη και Σχεδίαση Λογισμικού
Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Δομές Δεδομένων και Κυρίως Πρόγραμμα Δομές δεδομένων εκτός από πίνακες: Structs Unions Enums Κυρίως πρόγραμμα Παράμετροι που
Διαβάστε περισσότεραΗ γλώσσα προγραμματισμού C Δυναμική διαχείριση μνήμης
Η γλώσσα προγραμματισμού C Δυναμική διαχείριση μνήμης Κατηγορίες μνήμης εκτελέσιμου προγράμματος Στις καθολικές και στατικές μεταβλητές οι χώροι μνήμης δεσμεύονται κατά την διάρκεια της μεταγλώττισης.
Διαβάστε περισσότεραΕισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C
Εισαγωγή στην C Μορφή Προγράµµατος σε γλώσσα C Τµήµα Α Με την εντολή include συµπεριλαµβάνω στο πρόγραµµα τα πρότυπα των συναρτήσεων εισόδου/εξόδου της C.Το αρχείο κεφαλίδας stdio.h είναι ένας κατάλογος
Διαβάστε περισσότερα12. Συναρτήσεις (Μέρος ΙI)
Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων 12. Συναρτήσεις (Μέρος ΙI) Ιωάννης Κατάκης Σήμερα o Συναρτήσεις χωρίς παραμέτρους o Συναρτήσεις με παραμέτρους Χωρίς επιστροφή τιμής Με επιστροφή τιμής o Εμβέλεια
Διαβάστε περισσότεραΗ βασική συνάρτηση προγράμματος main()
Η βασική συνάρτηση προγράμματος main() HEADER FILES main(){ ΔΗΛΩΣΕΙΣ ΜΕΤΑΒΛΗΤΩΝ ΕΝΤΟΛΕΣ (σειριακές, επιλογής ή επανάληψης) ΕΠΙΣΤΡΕΦΟΜΕΝΟΣ ΤΥΠΟΣ (return 0;) Συναρτήσεις Η συνάρτηση είναι ένα υποπρόγραμμα
Διαβάστε περισσότεραΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β
ΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β 1. (10 μον.) Απαντήστε σωστό ή λάθος στις παρακάτω ερωτήσεις (αʹ) _2togo είναι έγκυρο όνομα μεταβλητής (βʹ) Αν p είναι δείκτης στο πρώτο στοιχείο
Διαβάστε περισσότεραΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #3
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #3 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #3 2 Γενικά Στο Τετράδιο #3 του Εργαστηρίου θα εξοικειωθούμε με τη χρήση της εντολής πολλαπλής
Διαβάστε περισσότεραΔομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων
Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Ορισμός
Διαβάστε περισσότεραΠΛΗ111. Ανοιξη Μάθηµα 1 ο Ανασκόπηση της Γλώσσας Προγραµµατισµού C. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης
ΠΛΗ111 οµηµένος Προγραµµατισµός Ανοιξη 2005 Μάθηµα 1 ο Ανασκόπηση της Γλώσσας Προγραµµατισµού C Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης Ανασκόπηση της C είκτες Πίνακες
Διαβάστε περισσότεραΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων
Διαβάστε περισσότεραΒαθμός Σχόλια. lab PASS 1194 PASS 1238 PASS 1239 PASS
lab7 Α. Μ. Βαθμός Σχόλια 1183 1194 1238 1239 1240 1241 1242 1243 1244 1246 - Η συνθήκη του do/while είναι λάθος µε αποτέλεσµα να µπορεί ο χρήστης να βάζει στοιχεία περισσότερα του SIZE. - Στην συνθήκη
Διαβάστε περισσότεραΑ' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. Ασκήσεις Επανάληψης
Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ασκήσεις Επανάληψης Άσκηση 1 Το παρακάτω πρόγραμμα περιέχει μια δομή επανάληψης τύπου for. Να ξαναγραφεί ώστε να έχει ακριβώς την ίδια λειτουργία, χρησιμοποιώντας
Διαβάστε περισσότερα