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

Σχετικά έγγραφα
Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΕΞΕΤΑΣΗ IOYNIOY 2018 ΘΕΜΑΤΑ Α ΟΝΟΜΑΤΕΠΩΝΥΜΟ:... ΑΕΜ: ΕΞΑΜΗΝΟ:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

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

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

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

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

Δομές Ανακυκλώσεων. Εντολές ελέγχου - 1

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

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

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

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

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

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

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

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

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

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

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

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

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

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

9. Εντολές επανάληψηςκαι η εντολή

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο

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

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

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

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

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

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

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

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

Υπολογισμός - Εντολές Ελέγχου

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

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

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

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

Βαθμός Σχόλια. lab5 PASS PASS PASS PASS PASS. Οριακά PASS - Καλή δουλειά

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

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

Αρχές Προγραμματισμού

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

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

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

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

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

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής

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

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

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

Κεφάλαιο : Επαναλήψεις (for, do-while)

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

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

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

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

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

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

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

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

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

7. ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΣΥΝΑΡΤΗΣΕΙΣ

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

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

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

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

Προγραμματισμός Η/Υ. Ενότητα 6: Πίνακες και Δείκτες

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

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

Δοκιμή και Αποσφαλμάτωση Testing and Debugging

Transcript:

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εργαστήριο 1η εβδομάδα. Κοζάνη, 5 Οκτωβρίου 2007. Βασικά στοιχεία γραφής προγραμμάτων με τη C: α) Case Sensitive!!! β) Δυνατότητα εισαγωγής σχολίων με /* και */ γ) Ελεύθερο format αρκεί να μη σπάζουν τα tokens. Προτιμούμε όμως κάποιο συνεπές και ευανάγνωστο στυλ. δ) Παρομοίως τα σχόλια μπαίνουν παντού αρκεί να μη σπάνε τα tokens, να μην είναι ένθετα και να ανοίγουν και κλείνουν σωστά με /* και */ αντιστοίχως. ε) Οι εντολές τελειώνουν με ; στ) Οι διάφορες συναρτήσεις αλλά και τα τμήματα κώδικα (βασικές δομές) στο εσωτερικό τους αρχίζουν με και τελειώνουν με ζ) Πάντα υπάρχει μία συνάρτηση που παίζει το ρόλο του κύριου προγράμματος και η οποία υποχρεωτικά λέγεται main. Διόρθωση σφαλμάτων (debugging): Σε αντιστοιχία με τα στάδια συγγραφής, προεπεξεργασίας, καθαυτό μεταγλώττισης και εκτέλεσης ενός προγράμματος, εντοπίζονται και τα εξής είδη σφαλμάτων: α) συντακτικά, επειδή δεν τηρείται κάποιος κανόνας της C. Αυτά εντοπίζονται από το μεταγλωττιστή στο στάδιο της μεταγλώττισης. β) Σφάλματα εκτέλεσης ή σημασιολογικά ή έξυπνα σφάλματα. Αυτά ξεφεύγουν από το προηγούμενο στάδιο επειδή δεν έχουν σχέση με παραβίαση γραμματικών κανόνων, αλλά εντοπίζονται κατά την εκτέλεση και ο υπολογιστής μας τυπώνει ένα σχετικό μήνυμα που μας κατατοπίζει και το πρόγραμμα συνήθως τερματίζεται. Π.χ. προσπάθεια πρόσβασης σε περιοχή της μνήμης που δεν έχει δεσμευτεί. γ) Λογικά σφάλματα. Αυτά δε μπορεί να τα εντοπίσει ο μεταγλωττιστής ή ο υπολογιστής γιατί έχουν να κάνουν με τη σχεδίαση του αλγορίθμου. Υπάρχει περίπτωση ένα λάθος να εντοπιστεί ακόμη και μετά από μήνες παραγωγικής δουλειάς! Γι' αυτό ένα πρόγραμμα πρέπει να δοκιμάζεται εκτενώς με εφαρμογή σε διάφορες περιπτώσεις προβλημάτων των οποίων ξέρουμε τη λύση. Στην εξεύρεση και διόρθωση των σφαλμάτων βοηθούν και σχετικά προγράμματα σχεδιασμένα για το σκοπό αυτό (debuggers). Για να αποφύγουμε μερικά συχνά λάθη προσέχουμε τα εξής: οι εντολές να τελειώνουν με ; να κλείνουν τα άγκιστρα (για κάθε να υπάρχει και ένα ) Παρομοίως να κλείνουν τα σχόλια (/* και */) και να μην υπάρχουν ένθετα σχόλια Πρόγραμμα p1-1 Κάτι απλό για να ξεκινήσουμε. ( printf("\nhello!\n"); 1 / 6

Να γίνουν δοκιμές με δύο ή περισσότερους χαρακτήρες \n, καθώς και χωρίς καθόλου αλλαγή γραμμής. Επίσης, με \t, \v, \b, \r και \a. Πειραματιστείτε με τις ακολουθίες διαφυγής σε διάφορες θέσεις. Προσοχή! Οι χαρακτήρες διαφυγής να είναι πάντα μέσα στα εισαγωγικά. Πρόγραμμα p1-2 Εδώ εισάγουμε δύο από τους τύπους μεταβλητών για να δείξουμε πώς να τους τυπώνουμε με την εντολή printf. Επίσης, εισάγεται η έννοια της απόδοσης τιμής σε μία μεταβλητή. int i = 1, j = 2; float a = 0.5, b = 2; printf("οι αριθμοί i και j είναι %d και %d αντιστοίχως\n", i, j); printf("το άθροισμα των i και j είναι %d\n", i+j); printf("οι αριθμοί a και b είναι %f και %f αντιστοίχως\n", a, b); printf("το γινόμενο των a και b είναι %f\n", a*b); Βάλτε λάθος format για τη μορφοποίηση των μηνυμάτων εξόδου: %d αντί για %f και το αντίστροφο. Παρατηρείστε τι συμβαίνει με τα μηνύματα εξόδου. Πρόγραμμα p1-3 Γενίκευση του προηγούμενου, για να εισάγουμε την εντολή ανάγνωσης scanf. Προσοχή! Δεν ξεχνάμε το σύμβολο & που είναι απαραίτητο σε αυτή τη νέα εντολή. int i, j; float a, b; printf("δώσε μου έναν ακέραιο αριθμό: "); scanf("%d", &i); printf("δώσε μου άλλον έναν ακέραιο: "); scanf("%d", &j); printf("οι αριθμοί i και j είναι %d και %d αντιστοίχως\n", i, j); printf("το άθροισμα τους είναι %d\n\n", i+j); printf("δώσε μου έναν πραγματικό αριθμό: "); scanf("%f", &a); printf("δώσε μου άλλον έναν πραγματικό: "); scanf("%f", &b); printf("οι αριθμοί a και b είναι %f και %f αντιστοίχως\n", a, b); printf("το γινόμενο των a και b είναι %f\n", a*b); Πρόγραμμα p1-4 Παραλλαγή του προηγούμενου για να δώσει την έννοια της συνάρτησης ως δομικού λίθου ενός 2 / 6

σύνθετου προγράμματος. Επίσης, εισάγεται η έννοια της εμβέλειας μιας μεταβλητής. void intsum(void) int i, j; printf("δώσε μου έναν ακέραιο αριθμό: "); scanf("%d", &i); printf("δώσε μου άλλον έναν ακέραιο: "); scanf("%d", &j); printf("οι αριθμοί i και j είναι %d και %d αντιστοίχως\n", i, j); printf("το άθροισμα τους είναι %d\n", i+j); /* εδώ έβαλα μόνο μια φορά την ακολουθία διαφυγής \n */ void floatsum(void) float a, b; printf("δώσε μου έναν πραγματικό αριθμό: "); scanf("%f", &a); printf("δώσε μου άλλον έναν πραγματικό: "); scanf("%f", &b); printf("οι αριθμοί a και b είναι %f και %f αντιστοίχως\n", a, b); printf("το γινόμενο των a και b είναι %f\n", a*b); intsum(); printf("\n"); floatsum(); Πρόγραμμα p1-5 Παραλλαγή του προηγούμενου για να δώσει την έννοια της επανάληψης και του σχετικού μπλοκ εντολών, να τονίσει την έννοια της εμβέλειας μεταβλητών και να δώσει παράδειγμα συνάρτησης με συγκεκριμένο τύπο επιστρεφόμενης τιμής. int intsum(void) int x, number, count, sum; count = 0; sum = 0; printf("δώσε μου ένα πλήθος ακέραιων αριθμών: "); scanf("%d", &number); while(count < number) 3 / 6

printf("δώσε μου τον υπ' αριθμόν %d όρο: ", count+1); count = count+1; sum = sum + x; return sum; int sum; sum = intsum(); printf("το άθροισμα όλων είναι %d\n", sum); Σημείωση: Η εντολή count = count+1; μπορεί να γραφεί και ως count++; ενώ η εντολή sum = sum + x; γράφεται και sum += x; Πρόγραμμα p1-6 Άλλο ένα παράδειγμα επανάληψης, αυτή τη φορά συνδυασμένο και με επιλογή/λήψη απόφασης. Πρόκειται για παραλλαγή του αλγόριθμου εύρεσης μέγιστου και ελάχιστου που αναφέρθηκε στο μάθημα. int x, number, count, minimum=0, maximum=0; printf("δώσε μου ένα πλήθος θετικών ακέραιων αριθμών: "); scanf("%d", &number); printf("δώσε μου τον υπ' αριθμόν %d όρο: ", 1); minimum = x; if(x > maximum) maximum = x; count = 1; while(count < number) printf("δώσε μου τον υπ' αριθμόν %d όρο: ", count+1); if(x < minimum) 4 / 6

minimum = x; if(x > maximum) maximum = x; count++; printf("η μέγιστη τιμή είναι %d και η ελάχιστη είναι %d \n", maximum, minimum); Πρόγραμμα p1-7 Παραλλαγή του προηγούμενου με χρήση συνάρτησης για την υλοποίηση του αλγόριθμου και εισαγωγή της έννοιας των παραμέτρων, καθώς και του περάσματος ορισμάτων μέσω αναφοράς στη διεύθυνση. void minimax(int *maximum, int *minimum) int x, number, count; *minimum = 0; *maximum = 0; printf("δώσε μου ένα πλήθος θετικών ακέραιων αριθμών: "); scanf("%d", &number); printf("δώσε μου τον υπ' αριθμόν %d όρο: ", 1); *minimum = x; if(x > *maximum) *maximum = x; count = 1; while(count < number) printf("δώσε μου τον υπ' αριθμόν %d όρο: ", count+1); if(x < *minimum) *minimum = x; if(x > *maximum) *maximum = x; count++; int m, n; minimax(&m,&n); printf("η μέγιστη τιμή είναι %d και η ελάχιστη είναι %d \n", m, n); 5 / 6

Πρόγραμμα p1-8 Πρόγραμμα που εξηγεί παραστατικά την έννοια και τις πρακτικές συνέπειες του περάσματος ορισμάτων με τιμή σε αντίθεση με το πέρασμα μέσω αναφοράς. void testfunc(int x, int y) printf("\nοι τιμές των x και y είναι %d και %d, αντιστοίχως", x, y); x = x+2; y = y-x; printf("\nοι τιμές των x και y τώρα είναι %d και %d, αντιστοίχως", x, y); int x, y; printf("\nδώσε έναν ακέραιο x :"); printf("\nδώσε άλλον έναν ακέραιο y :"); scanf("%d", &y); testfunc(x, y); printf("\nοι τιμές των x και y μετά την κλήση είναι %d και %d, αντιστοίχως\n", x, y); 6 / 6