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

Σχετικά έγγραφα
1 Ο ΣΕΤ ΑΣΚΗΣΕΩΝ (Ενδεικτικές Λύσεις)

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

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

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

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

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

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

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

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

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

Προγραμματισμός Ι (HY120)

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

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

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

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

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

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΜΟΣ Εντολές επιλογής και αποφάσεων 1 ο Φύλλο Εργασιών Εισαγωγικές ασκήσεις για την εντολή if ΑΠΑΝΤΗΣΕΙΣ

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

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

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

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

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

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

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

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

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

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

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

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

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

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

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting)

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

Βήματα: μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων. Δομές Δεδομένων + Αλγόριθμοι = Προγράμματα

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

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

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

4. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Α' μέρος: for)

Ενότητα 4: «Εισαγωγή στον Προγραμματισμό. Τα πρώτα προγράμματα σε γλώσσα C»

2. ΕΝΤΟΛΕΣ ΕΛΕΓΧΟΥ (Α' μέρος: if)

ΦΥΛΛΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ 1

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

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

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

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

Μεταφερσιμότητα Τα προγράμματα μεταφέρονται εύκολα σε διαφορετικά λειτουργικά συστήματα

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

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

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 2 Εντολές Εισόδου/Εξόδου Τελεστές. Δρ. Γιώργος Λαμπρινίδης 23/10/2015 Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1

Απλά Προγράμματα. Βήματα: 1. Καθορισμός παράστασης δεδομένων στη μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων

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

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

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

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

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

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

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

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

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

Ο πιο κάτω πίνακας περιγράφει σε ποιες περιπτώσεις χρησιμοποιούμε τους τρεις πιο πάνω τρόπους:

Εργαστήριο 5. Εντολή if και παραλλαγές: if-else, πολλαπλές if, πολλαπλές if-else. Απλές και σύνθετες εντολές. Εντολή switch.

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

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

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

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

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

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

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

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

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

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

5. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Β' μέρος: while - do..while)

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

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

Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη.

2ο σετ σημειώσεων. 1 Εντολές εκτέλεσης υπό συνθήκη. 19 Μαρτίου 2012

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

3 ο Εργαστήριο Μεταβλητές, Τελεστές

scanf() scanf() stdin scanf() printf() int float double %lf float

Νικόλαος Μιχαλοδημητράκης Σημειώσεις C (Εργαστήριο) 5 ο Μέρος 5 ο Μέρος Εντολές Επανάληψης: FOR - WHILE. Περιγραφή

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

Εντολές ελέγχου ροής if, for, while, do-while

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

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

Ασκηή σεις 12ο Μαά θημα - Λυύ σεις

a = 10; a = k; int a,b,c; a = b = c = 10;

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

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

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

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

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

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή

ΠαράδειγµαΠρογραµµατισµού

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

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ

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

Transcript:

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟ ΙΑ ΙΚΑΣΤΙΚΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ (2010-2011) ΥΠΕΥΘΥΝΟΙ Ι ΑΣΚΟΝΤΕΣ ΕΡΓΑΣΤΗΡΙΟΥ: Α. ΦΩΚΑ, K. ΣΤΑΜΟΣ 1 Ο ΣΕΤ ΑΣΚΗΣΕΩΝ (Ενδεικτικέ Λύσει )

Οι ασκήσει αυτού του φυλλαδίου καλύπτουν τα παρακάτω θέµατα και δίνονται ενδεικτικά οι αντίστοιχε ενότητε στο βιβλίο The GNU C Programming Tutorial που µπορείτε συµβουλευτείτε (http://crasseux.com/books/ctutorial/). Τύποι δεδοµένων, δήλωση µεταβλητών, αρχικοποίηση µεταβλητών, Μετατροπή τύπων (κεφάλαιο Variables and Declarations) Tελεστέ, προτεραιότητα τελεστών, λογικοί τελεστέ, Εκφράσει (κεφάλαιο Expressions and Operators) printf () και scanf() (http://www.cs.utah.edu/~phister/k_n_r/appb.html) Άσκηση 1η 1 Σηµειώστε ποιε από τι παρακάτω εκφράσει είναι σωστέ και ποιε λάθο ; a. Η έκφραση x=(y=200) αναθέτει και στο x και στο y τον αριθµό 200. b. Η έκφραση (2>3) && (x=1) τοποθετεί το 1 στην µεταβλητή x. c. Η έκφραση (3>1) (x=1) τοποθετεί το 1 στην µεταβλητή x. d. Έστω ότι x= (2>3+4). Τότε η printf( %d,x) θα εκτυπώσει 0. e. Η ανάθεση int x='a'; είναι συντακτικά λάθο. f. Η έκφραση 'Α'+1 έχει σαν αποτέλεσµα 66. g. Η ανάθεση x=x++; είναι συντακτικά ορθή. h. Η ανάθεση x=(2++); είναι συντακτικά ορθή. a. Σ b. Λ c. Λ d. Σ e. Λ f. Σ g. Σ h. Λ Άσκηση 2η 2 Να γραφεί πρόγραµµα που να εµφανίζει στην οθόνη το παρακάτω κείµενο (µαζί µε το κουτάκι από αστερίσκου ): ************************************************ * A regular expression to match emails is: * * "\b[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]2,4\b" * * * * Source: http:// regular-expressions.info * ************************************************ Υπόδειξη: Ελέγξτε στη παρακάτω ιστοσελίδα πώς εµφανίζονται οι ειδικοί χαρακτήρες. http://crasseux.com/books/ctutorial/special-characters.html Εισαγωγή στο διαδικαστικό Προγραμματισμό Σελίδα 2/6

#include <stdio.h> main() printf("************************************************\n"); printf("* A regular expression to match emails is: *\n"); printf("* \"\\b[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]2,4\\b\" *\n"); printf("* *\n"); printf("* Source: http://regular-expressions.info *\n"); printf("************************************************\n"); Άσκηση 3η 3 Έχουµε το παρακάτω τµήµα κώδικα. Βρείτε τι θα εκτυπωθεί πριν τρέξετε τον κώδικα. 3 3 4 2-5 -1-6 1 102 a int z; int x=2; int y=4; x=--y; printf("%d %d\n", x,y); z=-(x++)-(--y); printf("%d %d %d\n", x,y,z); y=(z--)+4; printf("%d %d\n", y,z); x= 12 % 5 / 1.5; y= 101 + (int)(1.5); z= 'd' - 3; printf("%d %d %c\n", x,y,z); Άσκηση 4η Λογικέ Εκφράσει : Στην λογική πρόταση Α && Β, αν το Α είναι ψευδέ τότε όλη η πρόταση είναι ψευδή ανεξάρτητα από την Β. Αντίστοιχα, στην πρόταση Α Β, αν το Α είναι αληθέ τότε η πρόταση είναι αληθή ανεξάρτητα από το Β. Γράψτε το παρακάτω πρόγραµµα: main(void) int i, j; int res; scanf("%d", &i); scanf("%d", &j); res = (++i == 3) (--j == 4); printf("%d\n", i); printf("%d\n", j); printf("%d\n", res); Εισαγωγή στο διαδικαστικό Προγραμματισμό Σελίδα 3/6

Αν δώσουµε στα i και j αρχικά τι τιµέ 4 και 4 παρατηρήστε την έξοδο του προγράµµατο. Κάντε το ίδιο για τιµέ 3 και 10. Εξηγήστε αν η συµπεριφορά του προγράµµατο σα φαίνεται λογική ή παρατηρείτε κάτι παράξενο και που οφείλεται αυτό. Για i=4 και j=4 η έξοδος είναι 5 3 0. Η res έχει τιµή 0 (δηλ. FALSE) γιατί πρώτα αυξάνεται η τιµή της i και j και µετά γίνεται ο έλεγχος ισότητας == 4. Για i=3 και j=10 η έξοδος είναι 4 9 0. Αλλάξτε την εντολή res = (++i == 3) (--j == 4); σε res = (i++ == 3) (j-- == 4); Τι τιµέ πρέπει να δώσετε για να έχει η µεταβλητή res τιµή 1; Βάλτε τι τιµέ που δοκιµάσατε προηγουµένω (i=4, j=4 και i=3, j=10) και δείτε αν και πω αλλάζει η συµπεριφορά του προγράµµατό σα. Τώρα πρώτα γίνεται ο έλεγχος ισότητας και µετά αυξάνεται η τιµή των i και j. Συνεπώς, για να έχει η µεταβλητή res τιµή 1 πρέπει να δώσουµε για το i τιµή 3 ή για το j τιµή 4. Για τις προηγούµενες τιµές έχουµε έξοδο 5 3 1 και 4 10 1. Η res έχει τιµή 1 γιατί πρώτα γίνεται ο έλεγχος ισότητας i++ == 3 και µετά αυξάνεται η τιµή της i. Σε αυτή την περίπτωση η τιµή της j παραµένει 10 και δεν έχει µειωθεί κατά 1 όπως θα περιµέναµε. Αυτό γίνεται διότι στην εντολή res = (i++ == 3) (j-- == 4); ο έλεγχος της πρώτης συνθήκης µας δίνει TRUE και συνεπώς η τιµή όλης της παράστασης θα είναι TRUE ανεξαρτήτως της τιµής της δεύτερης συνθήκης δεδοµένου ότι συνδέονται µε OR. Γι αυτό το λόγο η C δεν προχωράει στον υπολογισµό της τιµής της δεύτερης συνθήκης, και έτσι δεν εκτελείται το j--. Αλλάξτε την εντολή res = (++i == 3) (--j == 4); σε res = (i++ == 13) && (j-- == 4); ώστε τιµέ 13 και 4. Στη συνέχεια δώστε τι τιµέ 1 και 4. Εξηγήστε τη συµπεριφορά του προγράµµατο. Για i=13 και j=4 η έξοδος είναι 14 3 1. Η res έχει τιµή 1 (δηλ. TRUE) γιατί πρώτα γίνονται οι έλεγχοι ισότητας και µετά αυξάνονται οι τιµές. Για i=1 και j=4 η έξοδος είναι 2 4 0. Η τιµή της j δεν έχει µειωθεί διότι στον υπολογισµό της τιµής της res η πρώτη συνθήκη ήταν FALSE και δεδοµένου ότι οι δύο συνθήκες συνδέονται µε AND δεν γίνεται ο υπολογισµός της τιµής της δεύτερης συνθήκης, αφού η res θα είναι FALSE ανεξαρτήτως της τιµής της, και έτσι δεν εκτελείται το j--. Αλλάξτε την εντολή res = (++i == 3) (--j == 4); σε res = (--i == 3) && (--j == 4); Τι τιµέ πρέπει να δώσετε για να έχει η µεταβλητή res τιµή 1; Βάλτε τι τιµέ που δοκιµάσατε προηγουµένω (i=13, j=4 και i=1, j=4) και δείτε αν και πω αλλάζει η συµπεριφορά του προγράµµατό σα. Εισαγωγή στο διαδικαστικό Προγραμματισμό Σελίδα 4/6

Τώρα πρώτα µειώνεται η τιµή των i και j και µετά γίνεται ο έλεγχος ισότητας. Συνεπώς, για να έχει η µεταβλητή res τιµή 1 πρέπει να δώσουµε για το i τιµή 4 και για το j τιµή 5. Για τις προηγούµενες τιµές έχουµε έξοδο 12 4 0 και 0 4 0. Εδώ βλέπουµε ότι η j στην πρώτη περίπτωση δεν έχει γίνει 3 διότι αντίθετα µε την προηγούµενη περίπτωση δεν χρειάστηκε να υπολογιστεί η τιµή και των δύο συνθηκών και έτσι δεν εκτελέστηκε η --j. Άσκηση 5η Να γραφεί πρόγραµµα σε C το οποίο να διαβάζει ένα ακέραιο από 1 µέχρι 1000 και να τον αναλύει σε χαρτονοµίσµατα ή κέρµατα των 50, 20, 5, 2, 1 ευρώ. Πχ. Dose ena poso: 487 To poso 487 analyetai ws exis: 9 x 50 Euros 1 x 20 Euros 1 x 10 Euros 1 x 5 Euros 1 x 2 Euros 0 x 1 Euro #include <stdio.h> main() int poso, euro50, euro20, euro10, euro5, euro2, euro1, ypoloipo; printf("dose ena poso: "); scanf("%d", &poso); euro50 = poso / 50; ypoloipo = poso % 50; euro20 = ypoloipo / 20; ypoloipo = ypoloipo % 20; euro10 = ypoloipo / 10; ypoloipo = ypoloipo % 10; euro5 = ypoloipo / 5; ypoloipo = ypoloipo % 5; euro2 = ypoloipo / 2; euro1 = ypoloipo % 2; printf("to poso %d analyetai ws exis:\n", poso); printf("%d x 50 Euros\n", euro50); printf("%d x 20 Euros\n", euro20); printf("%d x 10 Euros\n", euro10); printf("%d x 5 Euros\n", euro5); printf("%d x 2 Euros\n", euro2); printf("%d x 1 Euro\n", euro1); Εισαγωγή στο διαδικαστικό Προγραμματισμό Σελίδα 5/6

Άσκηση 6η Γράψτε ένα πρόγραµµα το οποίο να διαβάζει από το πληκτρολόγιο ένα αριθµό δευτερολέπτων (αποθηκεύστε τον σε µια µεταβλητή τύπου int). Στην συνέχεια θα υπολογίζει σε πόσε ώρε, λεπτά και δευτερόλεπτα αντιστοιχούν και θα εκτυπώνει στην οθόνη τα αποτελέσµατα. Π.χ. Dose deyterolepta: 5000 Ta 5000 deyterolepta antistoixoyn se: 1 hours, 23 minutes, 20 seconds Τρέξτε το πρόγραµµα σα για τι τιµέ 10000, 40000, 2000000000, 4000000000 και καταγράψτε τα αποτελέσµατα. Τι παρατηρείτε; #include <stdio.h> int main() int total_seconds,hours,minutes,seconds,ypoloipo; printf("dose deyterolepta: "); scanf("%d", &total_seconds); hours = total_seconds / 3600; ypoloipo = total_seconds % 3600; minutes = ypoloipo / 60; seconds = ypoloipo % 60; printf("ta %d deyterolepta antistoixoyn se:\n", total_seconds); printf("%d hours, %d minutes, %d seconds\n", hours, minutes, seconds); Dose deyterolepta: 10000 Ta 10000 deyterolepta antistoixoyn se: 2 hours, 46 minutes, 40 seconds Dose deyterolepta: 40000 Ta 40000 deyterolepta antistoixoyn se: 11 hours, 6 minutes, 40 seconds Dose deyterolepta: 2000000000 Ta 2000000000 deyterolepta antistoixoyn se: 555555 hours, 33 minutes, 20 seconds Dose deyterolepta: 4000000000 Ta -294967296 deyterolepta antistoixoyn se: -81935 hours, -21 minutes, -36 seconds Εισαγωγή στο διαδικαστικό Προγραμματισμό Σελίδα 6/6