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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός Ι. Χαρακτήρες. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών

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

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

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

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

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

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

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

Κεφάλαιο 6: Συναρτήσεις IΙΙ Αρθρωτός Προγραμματισμός. Δείκτες (Διάλεξη 14)

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

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

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

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

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

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

ΑΡ Χ Ε Ι Α Κ Ε Ι Μ Ε Ν Ο Υ (text files)

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

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

Α Β Γ static; printf("%c\n", putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf("*");

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

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

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

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

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

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

Κεφάλαιο 6: Συναρτήσεις IΙΙ Αρθρωτός Προγραμματισμός. (Διάλεξη 14) Παράδειγμα: Αλλαγή τιμής μεταβλητής μόνο τοπικά

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

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

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας

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

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

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

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

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

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Είδη εντολών. Απλές εντολές. Εντολές ελέγχου. Εκτελούν κάποια ενέργεια. Ορίζουν τον τρόπο με τον οποίο εκτελούνται άλλες εντολές

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

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

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

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

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

Εντολές επιλογής Επαναλήψεις (if, switch, while)

Ασκήσεις & παραδείγματα για επανάληψη

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

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

Αναφορά (1/2) Μπορούμε να ορίσουμε μια άλλη, ισοδύναμη αλλά ίσως πιο σύντομη, ονομασία για ποσότητα (μεταβλητή, σταθερή, συνάρτηση, κλπ.

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

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

ΗΥ-150. Προγραμματισμός

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

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

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

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

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

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

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

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

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

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

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

ΑΣΚΗΣΗ 6: ΔΕΙΚΤΕΣ. Σκοπός της Άσκησης. 1. Εισαγωγικά στοιχεία για τους Δείκτες

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

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

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

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

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

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 2 η

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

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

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

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

Εισαγωγή στην γλώσσα προγραμματισμού C

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

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

Μεταβλητές τύπου χαρακτήρα

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

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

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

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

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

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

C Programming EPL032 Maria Stavrinou Ioannou Εισαγωγή στη Γλώσσα C

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07

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

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

Transcript:

ΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β 1. (10 μον.) Απαντήστε σωστό ή λάθος στις παρακάτω ερωτήσεις (αʹ) _2togo είναι έγκυρο όνομα μεταβλητής (βʹ) Αν p είναι δείκτης στο πρώτο στοιχείο ενός πίνακα τότε p[1] είναι δείκτης στο δεύτερο στοιχείο του πίνακα (γʹ) Αν p είναι δείκτης στο πρώτο στοιχείο ενός πίνακα τότε *p+1 είναι η τιμή του δεύτερου στοιχείου του πίνακα (δʹ) Αν int x = 5, y = 4, z = 3; τότε μετά την εκτέλεση της εντολής y += ++z-y/x--; και οι τρείς μεταβλητές έχουν την ίδια τιμή (εʹ) Η ανακύκλωση for (i = 21; i > 0 && (i % 3 == 0 i % 7 == 0); i--)... εκτελείται ακριβώς 2 φορές (αʹ) Σωστό. Ο πρώτος χαρακτήρας του ονόματος μιας μεταβλητής μπορεί να είναι το χαρακτήρας _. (βʹ) Λάθος. Μια και p[1] είναι ισοδύναμο με *(p+1), η έκφραση που δίδεται είναι η τιμή του δεύτερου στοιχείου του πίνακα στον οποίο δείχνει ο δείκτης p. (γʹ) Λάθος. *p+1 είναι η τιμή του πρώτου στοιχείου του πίνακα στον οποίο δείχνει ο p αυξημένη κατά ένα. (δʹ) Λάθος. Από την προτεραιότητα των τελεστών που εμφανίζονται προκύπτει ότι η εντολή ανάθεσης που δίδεται είναι ισοδύναμη με τις ++z; y = y + z - y/x; x--;. Επομένως μετά την εκτέλεση των εντολών έχουμε x = 4, y = 8 και z = 4. (εʹ) Λάθος. Η ανακύκλωση θα εκτελεστεί όταν i = 21 αλλά όχι όταν η μεταβλητή i πάρει την τιμή 20. 2. (10 μον.) Γράψτε τη συνάρτηση int numdiv(int m, int n) η οποία υπολογίζει και επιστρέφει το πλήθος των αριθμών στο διάστημα [m, n] οι οποίοι είναι πολλαπλάσια του 3 ή του 5. Υποθέτουμε εδώ ότι 1 m < n. int numdiv(int m, int n) int i, s = 0; for (i = m; i <= n; i++) if (i % 3 == 0 i % 5 == 0) s++; return s; 3. (10 μον.) Τι τυπώνει η εντολή printf στο παρακάτω πρόγραμμα; 1

int x = 1, y, z; while (x < 10) y = x++; z = ++x; printf( x = %d y = %d z = %d\n, x, y, z); Από τις ιδιότητες του τελεστή μοναδιαίας αύξησης συμπεραίνουμε ότι οι εντολές στο σώμα της ανακύκλωσης είναι ισοδύναμες με τις y = x; x += 2; z = x;. Επομένως οι διαδοχικές τιμές των μεταβλητών x, y, z είναι: 3, 1, 3 5, 3, 5 7, 5, 7 9, 7, 9 11, 9, 11 και η εντολή printf θα τυπώσει: x = 11 y = 9 z = 11. 4. (5 μον.) Πόσα στοιχεία έχει ο πίνακας int a[201]; Ποιό είναι το πρώτο στοιχείο του; Ποιό είναι το τελευταίο; Υπάρχει κάποιο πρόβλημα στην παρακάτω ανακύκλωση; for (i = 1; i <= 201; i++) a[i] = 0; Γράψτε μια ανακύκλωση η οποία αναθέτει στα στοιχεία του πίνακα τις τιμές 0, 1, 2, 0, 1, 2,.... Ο πίνακας a έχει, προφανώς, 201 στοιχεία. Το πρώτο στοιχείο είναι το a[0] και το τελευταίο το a[200], μια και η αρίθμηση στη C ξεκινάει από το μηδέν. Το πρόβλημα στην ανακύκλωση που δίδεται στην εκφώνηση της άσκησης είναι ότι στην τελευταία επανάληψη της ανακύκλωσης εκτελείται η εντολή a[201] = 0. Το τελευταίο όμως στοιχείο του πίνακα είναι το a[200]. Ένα άλλο, ίσως, πρόβλημα είναι ότι δεν αρχικοποιείται το στοιχείο a[0]. Τέλος, η ανακύκλωση for (i = 0; i < 201; i += 3) a[i] = 0; a[i+1] = 0; a[i+2] = 0; αναθέτει στα στοιχεία του πίνακα a τις τιμές 0, 1, 2, 0, 1, 2,.... 5. (10 μον.) Τι τυπώνει το παρακάτω πρόγραμμα; int i, a[] = 3, 5, 6, 7, 7, 7; int *p = a, *q = a; for (i = 0; i < 5; i++) printf( %d, *q); ++p; 2

for (i = 0; i < 5; i++) printf( %d, *q); ++q; Παρατηρήστε ότι στην πρώτη ανακύκλωση, δεν αλλάζει τη τιμή του δείκτη q. Το πρόγραμμα λοιπόν θα τυπώσει: 3 3 3 3 3 3 5 6 7 7. 6. (15 μον.) Γράψτε ένα πρόγραμμα το οποίο διαβάζει ένα ακέραιο αριθμό δευτερολέπτων και τυπώνει τον ισοδύναμο χρόνο σε ώρες, λεπτά και δευτερόλεπτα. Για παράδειγμα, αν η είσοδος είναι ο αριθμός 7322 το πρόγραμμά σας πρέπει να τυπώσει: 7322 seconds is 2 hours 2 minutes 2 seconds #include <stdio.h> int h, m, s; printf( Enter number of seconds: ); scanf( %d, &s); printf( %d seconds is, s); h = s / 3600; /* Number of hours in s */ s -= h*3600; /* What is left is minutes and seconds */ m = s / 60; /* Number of minutes in s */ s -= m*60; /* What is left is just seconds */ printf( %d hours %d minutes %d seconds\n, h, m, s); 7. (20 μον.) Γράψτε τη συνάρτηση void big2(int a[], int n) η οποία βρίσκει και τυπώνει τα δύο μεγαλύτερα στοιχεία του πίνακα ακεραίων a μήκους n. void big2(int a[], int n) int i, pri, sec; pri = sec = a[0]; for (i = 1; i < n; i++) if (a[i] > pri) sec = pri; pri = a[i]; 3

else if (a[i] > sec && a[i] < pri) sec = a[i]; printf( Largest and second largest elements: %d %d\n, pri, sec); 8. (10 μον.) Μετατρέψτε τους αριθμούς 98, 765, 4321 στο οκταδικό και δεκαεξαδικό σύστημα. Έχουμε ότι 98 = 1 8 2 + 4 8 1 + 2, επομένως (98) 10 = (142) 8. Επίσης, 98 = 6 16 1 +2, άρα (98) 10 = (62) 16. Τώρα, 765 = 1 8 3 +3 8 2 +7 8 1 +5 άρα (765) 10 = (1375) 8. Επιπλέον, 765 = 2 16 2 + 15 16 1 + 13, άρα (765) 10 = (2fd) 16. Τέλος, 4321 = 1 8 4 + 3 8 2 + 4 8 1 + 1, άρα (4321) 10 = (10341) 8. Ακόμα, 4321 = 1 16 3 + 14 16 1 + 1 16 0 άρα (4321) 10 = (10e1) 16. 9. (10 μον.) Τι τυπώνει το παρακάτω πρόγραμμα; int A(int i) printf( A\n ); return 2*i+1; double B(char c) printf( B ); return 7; void C(double x) printf( C\n ); int p = 0; double q = 0.0; char r = W ; p = A(p); q = B(r); C(B(r)); p = A(A(p)); Το πρόγραμμα θα τυπώσει: 4

A BBC A A Κάθε κλήση της συνάρτησης A τυπώνει τον χαρακτήρα A και αλλάζει γραμμή, κάθε κλήση της συνάρτησης B τυπώνει ένα χαρακτήρα B και κάθε κλήση της συνάρτησης C τυπώνει ένα χαρακτήρα C και αλλάζει γραμμή. 5