ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Δομημένος Προγραμματισμός Ενότητα: Τελεστές, εντολές ελέγχου, επαναλήψεις προγράμματα Δ. Ε. Μετάφας Τμ. Ηλεκτρονικών Μηχ. Τ.Ε.
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3
Πρόγραμμα A-1: Άθροισμα δύο αριθμών Πρόγραμμα A-1: Άθροισμα δύο αριθμών Σχόλια: /* Eyresh a+b */ #include <stdio.h> int main( void ) { int a, b, c; scanf("%d", &a); scanf("%d", &b); c = a+b; printf("%d + %d = %d\n", a, b, c); return 0; } 4
Πρόγραμμα A-2: Εύρεση διαιρετών, πλήθος διαιρετών Πρόγραμμα A-2: Εύρεση διαιρετών, πλήθος διαιρετών Σχόλια: Η επανάληψη θα μπορούσε να επιταχυνθεί αν παρατηρήσουμε ότι μετά το a/2 δεν θα βρεθεί άλλος διαιρέτης εκτός του a /* Diairetes tou a */ #include <stdio.h> int main( void ) { int a, y, i, c; scanf("%d", &a); c = 0; for( i=1; i<=a; i++) { y= a%i; if (y == 0) { printf("%d\n", i); c= c+1; } } printf("brethikan %d diairetes tou %d\n", c, a); return 0; }
Πρόγραμμα A-3: Εύρεση ΜΚΔ δύο αριθμών Πρόγραμμα A-3: Εύρεση ΜΚΔ δύο αριθμών Σχόλια: Ισχύει επίσης ότι ΕΚΠ = (a*b) / ΜΚΔ Σχόλια: Η επανάληψη μπορεί να επιταχυνθεί /* Ypologismos MKD a, b Parathrhsh: yparxei typos opou EKP = (a*b) / MKD */ #include <stdio.h> int main( void ) { int a, b, i, y1, y2, m; scanf("%d", &a); scanf("%d", &b); for( i=1; i<=a; i++) { y1= a%i; y2= b%i; if ( (y1==0) && (y2 == 0) ) { m= i; } } printf("mkd ( %d, %d ) = %d\n", a, b, m); return 0; }
Πρόγραμμα A-4: Λύσεις δευτεροβάθμιας εξίσωσης (1/2) Πρόγραμμα A-4: Λύσεις δευτεροβάθμιας εξίσωσης Σχόλια: Δεν υπάρχει τύπος μεταβλητών για μιγαδικούς αριθμούς, επομένως υπολογίζονται τέσσερις διαφορετικές μεταβλητές /* Lyseis deyterobathmias (genika migadikes) */ #include <stdio.h> #include <math.h> int main( void ) { float a, b, c, d, x1r, x1i, x2r, x2i; scanf("%f", &a); scanf("%f", &b); scanf("%f", &c); d= b*b - 4*a*c; if (d>=0) { x1r= (-b + sqrt( d) ) / ( 2*a); x1i= 0; x2r= (-b - sqrt( d) ) / ( 2*a); x2i= 0; } (συνέχεια στην επόμενη διαφάνεια)
Πρόγραμμα A-4: Λύσεις δευτεροβάθμιας εξίσωσης (2/2) else { x1r= -b/(2*a); x1i= sqrt( -d)/(2*a); x2r= -b/(2*a); x2i= -sqrt( -d)/(2*a); } printf("x1 = %.2f + %.2f *i\n", x1r, x1i); printf("x2 = %.2f + %.2f *i\n", x2r, x2i); return 0; }
Πρόγραμμα A-5: Υπολογισμός του a^n Πρόγραμμα A-5: Υπολογισμός του a^n Σχόλια: /* Ypologismos tou a^n */ #include <stdio.h> int main( void ) { float a, p; int i, n; scanf("%f", &a); scanf("%d", &n); p= 1; for( i=0; i<n; i++) { p= p*a; } printf("a^n = %.4f\n", p); return 0; }
Πρόγραμμα A-6: Υπολογισμός του n! Πρόγραμμα A-6: Υπολογισμός του n! Σχόλια: n! = 1*2*3* *n /* Ypologismos tou n! 1*2*...*n */ #include <stdio.h> int main( void ) { int i, n, p; scanf("%d", &n); p= 1; for( i=1; i<=n; i++) { p= p*i; } printf("n! = %d\n", p); return 0; }
Πρόγραμμα A-7: Άθροισμα 1+2+.. + n Πρόγραμμα A-7: Άθροισμα 1+2+3+ + n Σχόλια: Υπάρχει κλειστός τύπος n*(n+1)/2 /* Ypologismos tou S 1+2+...+n Parathrhsh: yparxei kleistos typos (n*(n+1))/2 */ #include <stdio.h> int main( void ) { int i, n, s; scanf("%d", &n); s= 0; for( i=1; i<=n; i++) { s= s + i; } printf("sum = %d\n", s); return 0; }
Πρόγραμμα A-8: Εύρεση ΕΚΠ δύο αριθμών Πρόγραμμα A-8: Εύρεση ΕΚΠ δύο αριθμών Σχόλια: Ισχύει επίσης ότι ΕΚΠ = (a*b) / ΜΚΔ /* Ypologismos EKP a, b Parathrhsh: yparxei typos opou EKP = (a*b) / MKD */ #include <stdio.h> int main( void ) { int a, b, p, i, y; scanf("%d", &a); scanf("%d", &b); i= 1; do { p= a*i; y= p%b; i= i+1; } while (y!=0 ); printf("ekp ( %d, %d ) = %d\n", a, b, p); return 0; }
Πρόγραμμα A-9: Προσέγγιση του π/4, s=1-1/3 + 1/5-1/7 +.. Πρόγραμμα A-9: Προσέγγιση του π/4, s=1-1/3 + 1/5-1/7 +.. Σχόλια: Προσοχή στον υπολογισμό του 1/i όπου αν δεν γίνει type casting θα εκτελεστεί ακέραια διαίρεση όπου 1/i ισούται με 0 /* Proseggish toy pi/4 S = 1-1/3 + 1/5-1/7 +.. */ #include <stdio.h> int main( void ) { int i, n, sign; double w, s; //proseggish me n orous n= 10000; s= 0; sign= 1; for( i=1; i<=n; i=i+2) { w= 1/(double)i; s= s + sign*w; sign= sign * (-1); } printf("proseggish tou pi/4 me %d orous S= %.6lf\n", n, s); return 0; }
Πρόγραμμα A-10: Εκτύπωση N τιμών συνάρτησης μεταξύ x1 και x2 (1/2) Πρόγραμμα A-10: Εκτύπωση N τιμών συνάρτησης μεταξύ x1 και x2 Σχόλια: Η συνάρτηση πρέπει να είναι συγκεκριμένη μέσα στον κώδικα γιατί δεν μπορεί να διαβαστεί από τον χρήστη Σχόλια: Αντί του «x= x1 + i * stepx;» μπορεί να χρησιμοποιηθεί «x = x + stepx» και αρχική τιμή «x = x1» πριν το for. Ποια είναι τα πλεονεκτήματα / μειονεκτήματα ; /* Times synarthseis: n times metaksi x1 kai x2 */ #include <stdio.h> #include <math.h> int main( void ) { float y, x, stepx, x1, x2; int i, n; printf("dwse ta oria x1, x2\n"); scanf("%f",&x1); scanf("%f",&x2); printf("dwse to plhthos twn shmeiwn\n"); scanf("%d", &n); stepx= (x2-x1)/n;
Πρόγραμμα A-10: Εκτύπωση N τιμών συνάρτησης μεταξύ x1 και x2 (2/2) for( i=0; i<=n; i++) { x= x1 + i * stepx; y= x*x + cos(x); printf("x= %.4f y= %.4f\n", x, y); } return 0; }
Πρόγραμμα A-11: Υπολογισμός εμβαδού τριγώνου Πρόγραμμα A-11: Υπολογισμός εμβαδού τριγώνου Σχόλια: Τύπος του Ήρωνα /* Ypologismos embadou trigwnou dokimes: a) (5,5) (8,9) (13,5) E=1/2*8*4 = 16 b) (5,5) (8,5) (5,10) E=1/2*3*5= 7,5 */ # include <stdio.h> # include <math.h> int main (void) { float x1,y1,x2,y2,x3,y3,d1,d2,d3,t,e; scanf("%f",&x1); scanf("%f",&y1); scanf("%f",&x2); scanf("%f",&y2); scanf("%f",&x3); scanf("%f",&y3); d1=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)); d2=sqrt((x2-x3)*(x2-x3)+(y2-y3)*(y2-y3)); d3=sqrt((x3-x1)*(x3-x1)+(y3-y1)*(y3-y1)); t=(d1+d2+d3)/2; E=sqrt(t*(t-d1)*(t-d2)*(t-d3)); printf("%f\n",e); return 0; }
Τέλος Ενότητας