Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις Επανάληψη για την ενδιάμεση εξέταση (Διάλεξη 13) 13-1
Πρόβλημα 1 Γράψετε τον ορισμό μίας συνάρτησης η οποία υπολογίζει το μέγιστο 2 ακεραίων αριθμών και χρησιμοποιείστε την για την εκτύπωση του μέγιστου 2 ακέραιων αριθμών που δίνονται από τον χρήστη. 13-2
Υλοποίηση της Συνάρτησης maximum Η συνάρτηση πρέπει να δέχεται 2 ακέραιους αριθμούς και να επιστρέφει το μέγιστο τους. int x int y maximum int max 13-3
Υλοποίηση της Συνάρτησης /* Function name: maximum * Inputs: Two integers x,y * Output: max(x,y) */ int maximum (int x, int y) int max=0; if (x>y) max=x; else max=y; return max; 13-4
Λύση Προβλήματος #include <stdio.h> int maximum (int x, int y); // Δήλωση (Πρώτυπο) συνάρτησης main( ) int num1, num2; int megisto; printf( Provide two integers\n ); scanf( %d%d, &num1, &num2); megisto= maximum(num1,num2); // Κλήση συνάρτησης printf ( The maximum of %d and %d is %d,num1,num2,megisto); int maximum (int x, int y) //Ορισμός συνάρτησης int max=0; if (x>y) max=x; else max=y; return max; x= num1; y=num2; int max=0; if (x>y) max=x; else max=y; return max; //maximum(num1,num2)=max // Οι μεταβλητές x,y,max σταματούν να υφίστανται. 13-5
Λύση Προβλήματος 13-6
Πρόβλημα 2 Γράψετε τον ορισμό 2 συναρτήσεων. Ημίαθα δέχεται 2 ακέραιους και θα υψώνει τον πρώτο στην δύναμη του δεύτερου και η δεύτερη θα υπολογίζει το μέγιστο δύο ακέραιων αριθμών. Χρησιμοποιείστε τις δύο συναρτήσεις για να υπολογίσετε το z = x y + max( x, y) για ζεύγη τιμών (x,y) όταν αυτά παίρνουν τιμές από το σύνολο 0,2,4,6. 13-7
Υλοποίηση της συνάρτησης power Η συνάρτηση πρέπει να δέχεται 2 ακέραιους αριθμούς x και y και να επιστρέφει το x^y. int x int y power int pow 13-8
/* Function name: power * Inputs: Two integers x,y * Output: x^y */ int power (int x, int y) int a; int pow=1; for (a=0; a<y; a++) pow =pow*x; return pow; Υλοποίηση της συνάρτησης power 13-9
Λύση Προβλήματος #include <stdio.h> // Function declaration int maximum(int x, int y); int power(int x, int y); main() int x=0,y=0,z=0; while ( x < 8 ) while (y < 8) z=maximum(x,y)+power(x,y); printf ( When x=%d and y=%d, z is equal to %d, x,y,z); y+=2; x+=2; 13-10
Λύση Προβλήματος /* Function name: maximum * Inputs: Two integers x,y * Output: max(x,y) */ int maximum (int x, int y) int max=0; if (x>y) max=x; else max=y; return max; /* Function name: power * Inputs: Two integers x,y * Output: x^y */ int power (int x, int y) int a; int pow=1; for (a=0; a<y; a++) pow =pow*x; return pow; 13-11
Επανάληψη 1. Οδηγίες στον προεπεξεργαστή Εντολή: include Σύνταξη: #include <αρχείο επικεφαλίδας> Λειτουργία: Επιτρέπει τη χρήση μιας ομάδας συναρτήσεων (βιβλιοθήκης) τα πρότυπα των οποίων βρίσκονται στο αρχείο επικεφαλίδας. Παράδειγμα: #include <stdio.h> Επιτρέπει ανάμεσα σε άλλα τη χρήση των συναρτήσεων printf, scanf Σημ: Να θυμάστε τις βιβλιοθήκες stdio.h, math.h, stdlib.h, time.h και χαρακτηριστικές εντολές που περιλαμβάνονται σε αυτές (Διάλεξη 12) Εντολή: define Σύνταξη: #define όνομα-σταθεράς τιμή Λειτουργία: Δηλώνει και αναθέτει τιμή σε μία σταθερα. Παράδειγμα: #define pi 3.14 13-12
2. Μεταβλητές Δήλωση μεταβλητών: Σύνταξη: τύπος λίστα-µεταβλητών ; Βασικοί τύποι μεταβλητών: int, char, double, float Ανάθεση τιμών σε μεταβλητές: Σύνταξη: μεταβλητή=τιμή; Παραδείγματα: int length; int width; or int length,width; length=5; width= 10; int length=5, width=10; 13-13
3. Ονοµασίες σε Προγράμματα Για σταθερές, μεταβλητές, συναρτήσεις, κτλ. Κανόνες Σύνταξης: 1. Αποτελούνται από γράµµατα, δεκαδικά ψηφία και underscores ( _ ). 2. εν µπορεί να αρχίζουν µε δεκαδικό ψηφίο. 3. σύμβολα όπως &, #, $ δεν επιτρέπονται. 4. το όνομα μιας μεταβλητής δεν μπορεί να περιέχει κενό 5. Δεσµευµένες λέξεις (θα εξηγηθούν αργότερα) δεν µπορούν να χρησιµοποιηθούν ως ονοµασίες για κάτι άλλο. 6. Ονοµασίες που ορίζονται σε κάποια από τις βασικές βιβλιοθήκες δεν πρέπει να ξαναορίζονται (πχ printf()) GOOD BAD RESERVED KMS_PER_MILE 1Letter double miles one new printf kms new-fn scanf 13-14
4. Εκφράσεις Σύνταξη: a τ b ή τ a τ είναι ο τελεστής (operator) a, b είναι τελεσταίοι (operands) τελεσταίοιμπορείναείναι Σταθερές (π.χ. KMS_PER_MILE * miles) Μεταβλητές (π.χ. c = a + b) κλήση συνάρτησης που επιστρέφει αριθμό (π.χ c = sum(a,b) + sum(b,a) ) έκφραση (χρήση παρενθέσεων) Παραδείγματα: int a=3, b=5, t; t=a+b; t=a<b; t=(a<=b) && (b==a); 13-15
5. Τελεστές Τελεστής Είδος Προτεραιότητα () ++ -- + -! (Μοναδιαίοι) * / % + - (Δυαδικοί) < > <= >=0 ==!= && = += -= *= /= %= Παρενθέσεις Αύξησης, Μείωσης Αριθμητικοί, Λογικός Αριθμητικοί Αριθμητικοί Σχεσιακοί Σχεσιακοί Λογικός Λογικός Ανάθεσης, Σύνθετοι Ψηλότερη Χαμηλότερη 13-16
5. Τελεστές int τ int => int 5/2 2 double τ double => double 5.0/2.0 2.5 int τ double => double 5/2.0 2.5 double τ int => double 5.0/2 2.5 int τ char => int 5+ a 102 Μετατροπή τύπων δεδομένων: (a) Με τον τελεστή ανάθεσης: Π.χ int a, float x=5.3; a=x; To a είναι ίσο με 5. (b) Με casting: float x=5.3; printf( %d, (int) x); Θα τυπωθεί 5 13-17
6. Η εντολή printf Σύνταξη: printf(μορφή εξόδου, λίστα εκφράσεων); printf( The total count is %d\n, count); a) Δεδομένα εξόδου b) όρισμα c) ειδικός χαρακτήρας Ειδικοί χαρακτήρες: d) έκφραση (μεταβλητή) \n μετάφερε τον δρομέα στην επόμενη γραμμή \t μετάφερε τον δρομέα στην επόμενη δεξιά στήλη \ εκτύπωσε \\ εκτύπωσε \ 13-18
6. Η εντολή printf Όρισμα: %f double %f float %d integer %c character Όρισμα: Για εκτύπωση ακεραίου το %nd έχει την ακόλουθη σημασία: χρησιμοποίηση n θέσεων για την εκτύπωση του ακέραιου αριθμού. Εάν ο αριθμός έχει λιγότερα από n ψηφία, τοποθετούνται κενά στα αριστερά (δεξιά ευθυγράμμιση). Εάν ο αριθμός έχει περισσότερα ψηφία, εκτυπώνονται όλα. Για εκτύπωση double ή float το %n.mf έχει την ακόλουθη σημασία: χρησιμοποίηση τουλάχιστο n θέσεων για την εκτύπωση του αριθμού (συμπεριλαμβάνει την. και το,αν χεριάζετε) Τo m ψηφία είναι αριθμός των δεκαδικών ψηφίων. 13-19
7. Η εντολή scanf Σύνταξη: scanf(μορφή εισόδου, λίστα διευθύνσεων μεταβλητών); Παράδειγμα: int numbera, numberb; scanf( %d%d,&numbera, &numberb); ορίσματα Ορίσματα: %lf double %f float %d integer %c character διευθύνσεις μεταβλητών 13-20
Εντολές Επιλογής 8. Η εντολήif-else Σύνταξη: if (συνθήκη) εντολές; else εντολές; Εάν υπάρχει μόνο μία εντολή οι παρενθέσεις μπορούν να αποφεύγονται. 13-21
9. Η εντολή if-else if-else Σύνταξη: if (συνθήκη1) εντολές; else if (συνθήκη2) εντολές;.. else εντoλές; 13-22
10. H εντολή switch Σύνταξη: switch (έκφραση) case τιμή 1: εντολές; break; case τιμή 2: εντολές; break;.. case τιμή n: εντολές; break; default: εντολές; Ηέκφραση(καιοιτιμές) μπορεί να είναι μόνο τύπου char ή int. 13-23
11. Επαναλήψεις Η εντολή while Σύνταξη: while (έκφραση) εντολή; συνθ. while (έκφραση) εντολη1; εντολη2;... Παράδειγμα: int x = 0; while (x < 5) printf( %d\n,x); x++; false true Επόμενες εντολές 13-24
12. H εντολή for Σύνταξη: for(αρχικοποίηση; συνθήκη επανάληψης ; ενημέρωση) εντολή; for(αρχικοποίηση; συνθήκη επανάληψης; ενημέρωση) εντολη; εντολη; true.. εντολές Παράδειγμα: int x; for (x=0; x<5; x++) printf( %d\n,x); αρχικ. συνθ. ενημ. Επόμενες εντολές 13-25
13. H εντολή do while Σύνταξη: do εντολή; while(συνθήκη); body do εντολή; εντολή; while(συνθήκη); Παράδειγμα: do scanf( %d, &a); sum+=a; while (a!=0); false συνθ. true 13-26
14. Συναρτήσεις Σύνταξη: Ηδήλωση(πρώτυπο) μιας συνάρτησης τοποθετείτε πριν την συνάρτηση main() καιέχειτην ακόλουθη σύνταξη: Τύπος-εξόδου όνομα-συνάρτησης (λίστα-τύπων-παραμέτρων); Π.χ int sum(int, int); ή int sum(int x, int y); Ο ορισμός μιας συνάρτησης τοποθετείται συνήθως μετά τη συνάρτηση main() καιέχειτην ακόλουθη σύνταξη: Τύπος-εξόδου όνομα-συνάρτησης (λίστα-παραμέτρων) εντολές; Π.χ. int sum(int a,int b) int athrisma=a+b; return athrisma; Η συνάρτηση επιστρέφει την τιμή εξόδου με τη χρήση της εντολής return η οποίαέχειτην ακόλουθη σύνταξη: return έκφραση; H κλήση της συνάρτησης έχει την ακόλουθη σύνταξη: Όνομα συναρτησης(λίστα παραμέτρων); Π.χ sum(num1,num2); 13-27