Ανοικτά Ακαδημαϊκά Μαθήματα Τεχνολογικό Εκπαιδευτικό Ίδρυμα Αθήνας Ενισχυτική διδασκαλία στα μαθήματα «Εισαγωγή στον προγραμματισμό» και «Αλγοριθμική» Ενότητα 2: Εισαγωγή στην Αλγοριθμική και στον Προγραμματισμό. Εισαγωγή στον Προγραμματισμό με γλώσσα c Χ. Σκουρλάς Τμήμα Μηχανικών Πληροφορικής ΤΕ Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.
Κεφάλαιο 1 Εισαγωγή στον προγραμματισμό με γλώσσα c Αρχή με απλά παραδείγματα προγράμματος ή «τρόποι για να χαιρετήσεις τον κόσμο!» Στο κεφάλαιο αυτό θα λύσουμε τις πρώτες απλές ασκήσεις για να κατανοήσουμε τι είναι ένα απλό πρόγραμμα και να μάθουμε να γράφουμε απλά προγράμματα σε γλώσσα προγραμματισμού C Όταν θέλεις να μάθεις μία νέα γλώσσα προγραμματισμού αρχίζεις γράφοντας ένα απλό πρόγραμμα. Στα περισσότερα βιβλία που σου μαθαίνουν προγραμματισμό διαβάζεις συνήθως ένα πρόγραμμα που γράφει στην οθόνη του υπολογιστή την αγγλική φράση Hello, world! Η φράση αυτή σημαίνει στα ελληνικά Γειά σου κόσμε! Θα γράψουμε διάφορα προγράμματα για να μάθουμε πολλούς τρόπους να γράφουμε αυτή τη φράση. Τα προγράμματα αυτά ή άλλα τελείως ανάλογα υπάρχουν σε πολλές ιστοσελίδες στο διαδίκτυο ή σε παρουσιάσεις (powerpoint presentations) διαλέξεων για εισαγωγή στον προγραμματισμό με γλώσσα c. Τα 10 πρώτα προγράμματά μου στη γλώσσα c Στο κεφάλαιο αυτό παρουσιάζονται εισαγωγικές έννοιες προγραμματισμού. Τα προγράμματα που παραθέτουμε είναι γραμμένα στη γλώσσα C. Χρησιμοποιούμε το λογισμικό Dev-C++ (πχ. http://www.bloodshed.net/devcpp.html) Στόχος μας είναι να βοηθήσουμε το σπουδαστή να μάθει να γράφει τα πρώτα προγράμματά του σε C. Μπορείτε να χρησιμοποιήσετε διάφορα προϊόντα όπως εμείς χρησιμοποιούμε το λογιδμικό Dev-C++ για να εκτελέσετε τα προγράμματά σας
Πρόγραμμα 1. Δείξτε το μήνυμα Hello world. Γράψτε όλη τη φράση. printf("hello, world! \n"); Αν δεν προλαβαίνετε να δείτε τα αποτελέσματα προσθέστε τα εξής: #include <stdlib.h> printf("hello, world! \n"); system("pause"); Παρατηρήσεις Το πρόγραμμά μας θέλουμε να γράφει στην οθόνη του υπολογιστή το μήνυμα Hello, world! Σε κάθε πρόγραμμά μας πρέπει να «συμπεριλάβουμε» κάποιες βιβλιοθήκες. Διάλεξα τη βιβλιοθήκη stdio.h που μου δίνει τη δυνατότητα να χρησιμοποιήσω τις συναρτήσεις printf, scanf για να διαβάζω και να γράφω. Έτσι έγραψα στην πρώτη γραμμή, Το κύριο πρόγραμμά μας είναι η ακέραια συνάρτηση main() Παρατηρήστε ότι η γραμμή δεν τελειώνει με ερωτηματικό ή τελεία όπως στην Pascal. Τι σημαίνει η λέξη printf; Είναι η συνάρτηση με την οποία μπορούμε να γράψουμε στην οθόνη. Για να μπορούμε να τη χρησιμοποιήσουμε χρειάζεται να γράψουμε
Πρόγραμμα 2. Δείξτε το μήνυμα Hello world. Γράψτε το μήνυμα λέξη, λέξη με την ίδια εντολή printf. printf("hello, " "world! \n"); Πρόγραμμα 3. Δείξτε το μήνυμα Hello world. Γράψτε το μήνυμα λέξη, λέξη με δύο (2) εντολές printf. printf("hello, "); printf("world! \n"); Πρόγραμμα 4. Δείξτε το μήνυμα Hello world. Γράψτε το μήνυμα λέξη, λέξη με εντολή printf. Αλλάξτε γραμμή με εντολή printf. printf("hello, " "world!");
Πρόγραμμα 5. Δείξτε το μήνυμα Hello world. Γράψτε το μήνυμα με χρήση της συνάρτησης hello. void hello() printf("hello, world!\n"); hello(); Πρόγραμμα 6. Δείξτε το μήνυμα Hello world. Γράψτε το μήνυμα με χρήση συνάρτησης και χρήση βρόχου (loop). void hello() printf("hello, world!\n"); int i; for (i=0; i<10; i++) hello(); Πόσες φορές θα δείτε το μήνυμα;
Πρόγραμμα 7. Δείξτε το μήνυμα Hello world. Γράψτε το μήνυμα με χρήση μίας συνάρτησης num_hello και βρόχου (loop) for που χρησιμοποιεί σταθερά. const int n=7; int i; void num_hello() printf("hello, world!\n"); int i; for (i=0; i<n; i++) num_hello(); Πρόγραμμα 8. Δείξτε το μήνυμα Hello world. Γράψτε το μήνυμα με χρήση συνάρτησης και βρόχου (loop) for που χρησιμοποιεί αριθμό που θα διαβάσετε. void num_hello() printf("hello, world!\n"); int i,n; printf("give number" " then press <enter> \n"); scanf("%d", &n); for (i=0; i<n; i++) num_hello();
Να πως θα γράψετε το πρόγραμμα αν δεν προλαβαίνετε να δείτε τα αποτελέσματα. #include <stdlib.h> void num_hello() printf("hello, world!\n"); int i,n; printf("give number" " then press <enter> \n"); scanf("%d", &n); for (i=0; i<n; i++) num_hello(); system("pause");
Πρόγραμμα 9. Γράψτε το μήνυμα με χρήση συνάρτησης, loop που χρησιμοποιεί αριθμό που θα διαβάσετε. Να κάνετε έλεγχο μήπως ο χρήστης δίνει αρνητικό αριθμό. const int n=7; int i; void num_hello() printf("hello, world!\n"); int i,n; printf("give number" " then press <enter> "); scanf("%d", &n); if (n<0) printf("# is negative\n"); else for (i=0; i<n; i++) num_hello(); Πρόγραμμα 10. Δείξτε το άθροισμα 2 συγκεκριμένων αριθμών πχ. 10 και 20 int i,j; i=10; j=20; printf("sum is: \n"); i=i+j; printf("%d", i);
Άσκηση Εξηγήστε τι κάνει το παρακάτω πρόγραμμα και πως το κάνει. main() int number; printf("enter an integer\n"); scanf("%d",&number); printf("integer = %d\n", number); Άσκηση Εξηγήστε τι κάνει το παρακάτω πρόγραμμα και πως το κάνει. #include<stdio.h> int a, b, c; printf(" addition\n"); printf("enter two numbers to add\n"); scanf("%d%d",&a,&b); c = a + b;
printf("sum = %d\n",c);
Κεφάλαιο 2 Απλές ασκήσεις με γλώσσα C Στο κεφάλαιο αυτό θα λύσουμε κάποιες απλές ασκήσεις για να κατανοήσουμε καλύτερα τι είναι ένα απλό πρόγραμμα σε γλώσσα προγραμματισμού C Θα θυμηθούμε λίγο τα προγράμματα σε C που μελετήσαμε στο προηγούμενο κεφάλαιο για να μάθουμε τρόπους να γράφουμε αυτή τη φράση. 1. // C hello world example 2. 3. 4. 5. printf("hello world!\n"); 6. 7. Θυμηθείτε ότι: Σε κάθε πρόγραμμά μας πρέπει να συμπεριλάβουμε κάποιες βιβλιοθήκες. Εδώ χρειάσθηκα τη βιβλιοθήκη stdio.h. Έτσι έγραψα στην πρώτη γραμμή, Το πρόγραμμά μου είναι η συνάρτηση main() Τι σημαίνει η λέξη printf; Το πρόγραμμά μας γράφει στην οθόνη του υπολογιστή το μήνυμα Hello, world
Περιγραφή της σύνταξης ενός δεύτερου προγράμματος που «τυπώνει» Hello World! 1. 2. 3. 4. char string[] = "Hello World!"; 5. printf("%s\n", string); 6. 7. Περιγραφή της σύνταξης ενός προγράμματος που που «τυπώνει» Hello World!... αλλά δε σταματά να εκτελείται 1. 2. #define TRUE 1 3. 4. 5. while (TRUE) 6. 7. printf("hello New World!\n"); 8. 9. 10. Η αγγλική λέξη WHILE σημαίνει στα ελληνικά ΟΣΟ. Αν γράψουμε While(TRUE) αυτό σημαίνει ότι το πρόγραμμά μας θα γράφει συνέχεια Hello New World! και θα αλλάζει κάθε φορά γραμμή.
Περιγραφή της σύνταξης ενός προγράμματος με while που τερματίζει main() int value = 1; while(value<=5) printf("value is %d\n", value); value++; Να τα αποτελέσματα! Value is 1 Value is 2 Value is 3 Value is 4 Value is 5 Πρόγραμμα για το διάβασμα και την εμφάνιση στην οθόνη του Η/Υ ενός ακέραιου αριθμού main() int number; printf("enter an integer\n"); scanf("%d",&number); printf("integer = %d\n", number);
Πρόγραμμα σύγκρισης ενός ακεραίου x με το 1 main() int x; printf("comparison.\n"); printf("enter an integer x\n"); scanf("%d",&x); if ( x == 1 ) printf("x is equal to one.\n"); else printf("x is not equal to one.\n"); Πρόγραμμα για την πρόσθεση δύο ακεραίων #include<stdio.h> int a, b, c; printf(" addition\n"); printf("enter two numbers to add\n"); scanf("%d%d",&a,&b); c = a + b; printf("sum = %d\n",c);
Να και πρόγραμμα που κάνει συνεχείς προσθέσεις int a, b, c; char ch; while (1) printf(" Enter two integers to add\n"); scanf("%d%d", &a, &b); getchar(); c = a + b; printf("(%d) + (%d) = (%d)\n", a, b, c); printf("continue (y/n)\n"); scanf("%c", &ch); if (ch == 'y' ch == 'Y') continue; else break; Άρτιος ή περιττός; int k; printf("enter an integer k\n"); scanf("%d", &k); if (k%2 == 0) printf("even\n"); else printf("odd\n");
Κεφάλαιο 3 και άλλες ασκήσεις... με γλώσσα C Στο κεφάλαιο αυτό θα λύσουμε και άλλες απλές ασκήσεις χρησιμοποιώντας γλώσσα προγραμματισμού c Στόχος μας να κατανοήσουμε περισσότερο κάποια θέματα προγραμματισμού στη γλώσσα αυτή Θα θυμηθούμε αρχικά για λίγο τα προγράμματα σε C που μελετήσαμε στο προηγούμενο κεφάλαιο και θα τα επεκτείνουμε λίγο. Άθροισμα δύο αριθμών int main (void) // Define variables double a, b,c; printf("\n Hello!"); printf("\n Give me a = "); scanf("%lf", &a) ; printf("\n Give me b = "); scanf("%lf", &b) ; c = a+b; printf("\n The sum is c = %lf",c); printf("\n The sum with 7 total digits and 3 decimal digits is c = %7.31f", c); printf("\n The sum written scientifically is c = %e\n", c) ;
Ανάλογα με το προϊόν και ειδικά για παλιότερες εκδόσεις μπορεί να χρειασθούν προσθήκες στο πρόγραμμά μας για να βλέπουμε τα αποτελέσματα πχ. #include <iomanip.h> #include <iomanip.h> int main (void) // Define variables double a, b,c; printf("\n Hello!"); printf("\n Give me a = "); scanf("%lf", &a) ; printf("\n Give me b = "); scanf("%lf", &b) ; c = a+b; printf("\n The sum is c = %lf",c); printf("\n The sum with 7 total digits and 3 decimal digits is c = %7.31f", c); printf("\n The sum written scientifically is c = %e\n", c) ; system("pause");
Υπολογισμός περιφέρειας κύκλου int main(void) // calculate 2*pi*r // Define variables float r=2.5; float t; float pi=3.14; t=2*pi*r; printf("aktina r= %5.2f m \n", r); printf("mhkos perifereias kuklou aktinas t= %5.2f m \n", t); printf("mhkos perifereias kuklou aktinas t= %7.3f m \n", t);
Διάβασε 3 αριθμούς και υπολόγισε το άθροισμά τους και το μέσο όρο τους int main(void) // read 3 numbers, calculate sum and average // Define variables float sum, average, x1, x2, x3; printf("give 3 numbers \n"); scanf("%f %f %f", &x1, &x2, &x3); printf("print the 3 numbers\n"); printf("%5.3f %5.3f %5.3f\n", x1, x2, x3); sum=x1+x2+x3; average=sum/3.0; printf("sum=: %5.3f \n", sum); printf("average=: %5.3f \n", average);
Λύσε δευτεροβάθμιες εξισώσεις #include <math.h> int main(void) // solve equation // Define variables double a, b, c, d, xl, x2; printf("\ngive value a (non-zero)"); scanf("%lf", &a) ; printf("\ngive value b ") ; scanf("%lf", &b) ; printf("\n Give value of c ") ; scanf("%lf", &c) ; d=b*b-4*a*c; if (d==0.0) xl = -0.5*b/a; printf("\nthe double root is x= %f ", xl); printf("\n "); else if (d<0) printf("\n No real roots "); printf("\n "); else
xl=0.5*(-b+sqrt(d))/a; x2=0.5*(-b-sqrt(d))/a; printf("\nthe two roots are xl= %f and x2=%f", xl, x2); printf("\n "); Χρησιμοποίησηε τη βιβλιοθήκη iostream #include <iostream> std::cout<<"hello World!\n";
Παράδειγμα που χρησιμοποιεί if... else if...else #include <iostream> #include <iomanip> std::cout<<std::setw(60)<<"programmer: Student "<<std::endl; std::cout<<std::setw(60)<<"if... else if...else "<<std::endl; int i; std::cout<<"give me a number "; std::cin>>i; if(i==0) std::cout<<"number is 0 "<<std::endl; else if (i>0) std::cout<<"positive number"<<std::endl; if (i>10) std::cout<<i<<" > 10"<<std::endl; else if (i==10) std::cout<<"einai iso me to 10 "<<std::endl; else std::cout<<i<<" < 10"; else std::cout<<"negative number"<<std::endl;
Τύπωσε τις βασικές διαστάσεις σε bytes των τύπων της c int main (void) printf("typwse tis vasikes diastaseis (se bytes) twn typwn ths C :\n\n"); printf(" printf(" printf(" printf(" printf(" printf(" printf(" printf(" char: %3d byte(s)\n",sizeof(char)); short: %3d byte(s)\n",sizeof(short)); int: %3d byte(s)\n",sizeof(int)); unsigned: %3d byte(s)\n",sizeof(unsigned)); long: %3d byte(s)\n",sizeof(long)); float: %3d byte(s)\n",sizeof(float)); double: %3d byte(s)\n",sizeof(double)); long double: %3d byte(s)\n",sizeof(long double));
Μετατροπή αριθμών από ένα αριθμητικό σύστημα σε άλλο int main(void) printf(" Metatropi Arithmwn apo to ena sistima sto allo \n\n"); printf("d = Decimal - H = Hexadecimal - O = Octadecimal\n"); printf("d - H - O\n"); printf("%d %x %o\n",19,19,19); printf("h - D - O\n"); printf("%x %d %o\n",0x15,0x15,0x15); printf("o - H - D\n"); printf("%o %x %d\n",012,012,012);
Κεφάλαιο 4 και άλλες ασκήσεις... με γλώσσα C Θυμηθείτε ότι είναι άλλο πράγμα το κατάλαβα και άλλα πράγμα το έμαθα. Στον προγραμματισμό απαιτείται συχνή επανάληψη και χρησιμοποίηση αυτών που κατανόησα μέχρι να τα μάθω καλά, μέχρι να τα εμπεδώσω. Στο κεφάλαιο αυτό θα επαναλάβουμε ασκήσεις αλλά και θα λύσουμε και άλλες ασκήσεις χρησιμοποιώντας γλώσσα προγραμματισμού c Στόχος μας να κάνουμε μία επανάληψη σε κάποια θέματα ώστε να κατανοήσουμε καλύτερα και να μάθουμε χρήσιμα θέματα προγραμματισμού στη γλώσσα αυτή Θα θυμηθούμε αρχικά για λίγο κάποια από τα προγράμματα σε C που μελετήσαμε στο προηγούμενο κεφάλαιο και σε κάποιες περιπτώσεις θα τα επεκτείνουμε λίγο. Ξεκινάμε με απλά παραδείγματα προγραμματισμού και προχωρούμε σε αρκετά σύνθετα. Θέμα 1 άθροισμα δύο αριθμών int main (void) // Define variables double a, b,c; printf("\n Hello!"); printf("\n Give me a = "); scanf("%lf", &a) ; printf("\n Give me b = "); scanf("%lf", &b) ; c = a+b; printf("\n The sum is c = %lf",c); printf("\n The sum with 7 total digits and 3 decimal digits is c = %7.31f", c); printf("\n The sum written scientifically is c = %e\n", c) ;
Θέμα 2 Υπολογισμός περιμέτρου κύκλου int main(void) // calculate 2*pi*r // Define variables float r=2.5; float t; float pi=3.14; t=2*pi*r; printf("aktina r= %5.2f m \n", r); printf("mhkos perifereias kuklou aktinas t= %5.2f m \n", t); printf("mhkos perifereias kuklou aktinas t= %7.3f m \n", t); Θέμα 3 Υπολογισμός αθροίσματος και μέσου όρου τριών αριθμών int main(void) // read 3 numbers, calculate sum and average // Define variables float sum, average, x1, x2, x3; printf("give 3 numbers \n"); scanf("%f %f %f", &x1, &x2, &x3); printf("print the 3 numbers\n"); printf("%5.3f %5.3f %5.3f\n", x1, x2, x3); sum=x1+x2+x3; average=sum/3.0; printf("sum=: %5.3f \n", sum); printf("average=: %5.3f \n", average);
Θέμα 4 Επίλυση δευτεροβάθμιας εξίσωσης #include <math.h> int main(void) // solve equation // Define variables double a, b, c, d, xl, x2; printf("\ngive value a (non-zero)"); scanf("%lf", &a) ; printf("\ngive value b ") ; scanf("%lf", &b) ; printf("\n Give value of c ") ; scanf("%lf", &c) ; d=b*b-4*a*c; if (d==0.0) xl = -0.5*b/a; printf("\nthe double root is x= %f ", xl); printf("\n "); else if (d<0) printf("\n No real roots "); printf("\n "); else xl=0.5*(-b+sqrt(d))/a; x2=0.5*(-b-sqrt(d))/a; printf("\nthe two roots are xl= %f and x2=%f", xl, x2); printf("\n ");
Θέμα 5 Διαβάστε το παρακάτω πρόγραμμα και εκτελέστε το. Αν χρειασθεί διορθώστε το πρόγραμμα ώστε να τρέξει. #include <conio.h> #include <iomanip.h> #include <iostream.h> #include <stdlib.h> cout<<setw(60)<<"programmer: "<<endl; cout<<setw(60)<<"if... else,if...else "<<endl; int i; cout<<"give me an number "; cin>>i; if(i==0) cout<<"number is 0 "<<endl; else if (i>0) cout<<"positive number"<<endl; if (i>10) cout<<i<<" > 10"<<endl; else if (1==10) cout<<"einai iso me to 10 "<<endl; else cout<<i<<" < 10"; else cout<<"negative number"<<endl; system("pause");
... και κάπως προχωρημένα θέματα Θέμα 6 Προγράμματα για ταξινόμηση (sorting) Οι λύσεις που παραθέτουμε είναι από την ιστοσελίδα: http://www.programmingsimplified.com/c/source-code/c-program-bubble-sort Οι σπουδαστές μπορούν να δοκιμάσουν τις λύσεις αυτές και στη συνέχεια μπορούν να προχωρήσουν σε δικές τους λύσεις. C program for bubble sort Ταξινόμηση φυσαλίδων με c πρόγραμμα /* Bubble sort code */ int array[100], n, c, d, swap; printf("enter number of elements\n"); scanf("%d", &n); printf("enter %d integers\n", n); for (c = 0; c < n; c++) scanf("%d", &array[c]); for (c = 0 ; c < ( n - 1 ); c++) for (d = 0 ; d < n - c - 1; d++) if (array[d] > array[d+1]) /* For decreasing order use < */ swap = array[d]; array[d] = array[d+1]; array[d+1] = swap; printf("sorted list in ascending order:\n");
for ( c = 0 ; c < n ; c++ ) printf("%d\n", array[c]); Bubble sort in c language using function - Ταξινόμηση φυσαλίδων με c πρόγραμμα που χρησιμοποιεί συνάρτηση /* Bubble sort code */ int array[100], n, c, d, swap; printf("enter number of elements\n"); scanf("%d", &n); printf("enter %d integers\n", n); for (c = 0; c < n; c++) scanf("%d", &array[c]); for (c = 0 ; c < ( n - 1 ); c++) for (d = 0 ; d < n - c - 1; d++) if (array[d] > array[d+1]) /* For decreasing order use < */ swap = array[d]; array[d] = array[d+1]; array[d+1] = swap; printf("sorted list in ascending order:\n"); for ( c = 0 ; c < n ; c++ ) printf("%d\n", array[c]);
Θέμα 7 Πολλαπλασιασμός πινάκων Λύση από την ιστοσελίδα http://www.programmingsimplified.com/c-program-multiply-matrices Οι σπουδαστές μπορούν να δοκιμάσουν τις λύσεις αυτές και στη συνέχεια μπορούν να προχωρήσουν σε δικές τους λύσεις. Matrix multiplication in c Matrix multiplication in c language: c program to multiply matrices (two dimensional array), this program multiplies two matrices which will be entered by the user. Firstly user will enter the order of a matrix. If the entered orders of two matrix is such that they can't be multiplied then an error message is displayed on the screen. You have already studied the logic to multiply them in Mathematics. Ακολουθεί μετάφραση του αποσπάσματος στα Ελληνικά. Πολλαπλασιασμός πινάκων σε c Πολλαπλασιασμός πινάκων σε γλώσσα C: Παρατίθεται το C πρόγραμμα για να πολλαπλασιάσετε δύο πίνακες (διδιάστατους πίνακες). Το πρόγραμμα αυτό πολλαπλασιάζει δύο πίνακες οι οποίοι θα πρέπει να εισαχθούν από το χρήστη. Αρχικά ο χρήστης θα εισάγει τη διάσταση κάθε πίνακα. Αν οι διαστάσεις δύο πινάκων είναι τέτοιες ώστε να μην μπορούν να πολλαπλασιαστούν οι πίνακες τότε ένα μήνυμα σφάλματος εμφανίζεται στην οθόνη. Έχετε ήδη μελετήσει τη λογική για να πολλαπλασιάσετε πίνακες στα Μαθηματικά. int m, n, p, q, c, d, k, sum = 0; int first[10][10], second[10][10], multiply[10][10]; printf("enter the number of rows and columns of first matrix\n"); scanf("%d%d", &m, &n); printf("enter the elements of first matrix\n"); for (c = 0; c < m; c++) for (d = 0; d < n; d++) scanf("%d", &first[c][d]); printf("enter the number of rows and columns of second matrix\n"); scanf("%d%d", &p, &q);
if (n!= p) printf("matrices with entered orders can't be multiplied with each other.\n"); else printf("enter the elements of second matrix\n"); for (c = 0; c < p; c++) for (d = 0; d < q; d++) scanf("%d", &second[c][d]); for (c = 0; c < m; c++) for (d = 0; d < q; d++) for (k = 0; k < p; k++) sum = sum + first[c][k]*second[k][d]; multiply[c][d] = sum; sum = 0; printf("product of entered matrices:-\n"); for (c = 0; c < m; c++) for (d = 0; d < q; d++) printf("%d\t", multiply[c][d]); Θέμα 8 Factorial - first calculation Λύση από την ιστοσελίδα http://www.programmingsimplified.com/c-program-find-factorial Οι σπουδαστές μπορούν να δοκιμάσουν τις λύσεις αυτές και στη συνέχεια μπορούν να προχωρήσουν σε δικές τους λύσεις. Factorial program in c Factorial program in c: c code to find and print factorial of a number, three methods are given, first one uses for loop, second uses a function to find factorial and third using recursion. Factorial is represented using '!', so five factorial will be written as (5!), n factorial as (n!). Also n! = n*(n-1)*(n-2)*(n-3)...3.2.1 and zero factorial is defined as one i.e. 0! = 1.
Υπολογισμός Παραγοντικού ακέραιου αριθμού με πρόγραμμα σε C Υπολογισμός Παραγοντικού ακέραιου αριθμού με πρόγραμμα σε C: Παρατίθεται c κώδικας για να υπολογίσετε το παραγοντικό ενός αριθμού και να το τυπώσετε. Περιγράφονται τρεις μέθοδοι: 1) for loop, 2) χρησιμοποιείται συνάρτηση (function) για τον υπολογισμό του παραγοντικού, 3) χρησιμοποιείται αναδρομή. Το Παραγοντικό συμβολίζεται με τη χρήση «!», Έτσι πέντε παραγοντικό θα γραφεί ως (5!), και η παραγοντικό ως (n!). Θυμηθείτε από τα μαθηματικά: n! = n*(n-1)*(n-2)*(n-3)...*3*2*1 0! = 1. Factorial program in c using for loop int c, n, fact = 1; printf("enter a number to calculate it's factorial\n"); scanf("%d", &n); for (c = 1; c <= n; c++) fact = fact * c; printf("factorial of %d = %d\n", n, fact);
Θέμα 9 Factorial Λύση από την ιστοσελίδα http://www.programmingsimplified.com/c-program-find-factorial Οι σπουδαστές μπορούν να δοκιμάσουν τις λύσεις αυτές και στη συνέχεια μπορούν να προχωρήσουν σε δικές τους λύσεις. Factorial program in c using function long factorial(int); int number; long fact = 1; printf("enter a number to calculate it's factorial\n"); scanf("%d", &number); printf("%d! = %ld\n", number, factorial(number)); long factorial(int n) int c; long result = 1; for (c = 1; c <= n; c++) result = result * c; return result;
Factorial program in c using recursion #include<stdio.h> long factorial(int); int n; long f; printf("enter an integer to find factorial\n"); scanf("%d", &n); if (n < 0) printf("negative integers are not allowed.\n"); else f = factorial(n); printf("%d! = %ld\n", n, f); long factorial(int n) if (n == 0) return 1; else return(n * factorial(n-1)); Recursion is a technique in which a function calls itself, for example in above code factorial function is calling itself. To solve a problem using recursion you must first express its solution in recursive form.
Θέμα 10. Πρόγραμμα εφαρμογής που εμφανίζει και υποστηρίζει το μενού ενός Calculator Παραθέτουμε λύση από κωφή σπουδάστρια. Δοκιμάστε τη λύση και προχωρήστε σε δική σας. #include <iostream> main() float total; int choice,a,b; printf(" MENU "); printf("-------------"); printf("\n\n"); printf("1.prosthesi"); printf("2.afairesi"); printf("3.pollaplasiasmos"); printf("4.diairesi"); printf("\n\n"); printf("epilogh:"); printf("dose epilogh 1-4:"); scanf("%d",&choice); if (choice==1) printf("1.prosthesi"); printf("-----------"); printf("dose to noumero A:");scanf("%d",&a); printf("dose to noumero B:");scanf("%d",&b); printf("apotelesma: %d",a+b); goto end; if (choice==2) printf("2.afairesi"); printf("-----------"); printf("dose to noumero A:");scanf("%d",&a); printf("dose to noumero B:");scanf("%d",&b); printf("apotelesma: %d",a-b); goto end; if (choice==3)
printf("3.pollaplasiasmos"); printf("-----------"); printf("dose to noumero A:");scanf("%d",&a); printf("dose to noumero B:");scanf("%d",&b); printf("apotelesma: %d",a*b); goto end; if (choice==4) printf("4.diairesi"); printf("-----------"); printf("dose to noumero A:");scanf("%d",&a); again:; printf("dose to noumero B:");scanf("%d",&b); if (b==0) printf("to B den prepei na einai iso me 0"); goto again; printf("apotelesma: %d",a/b); goto end; end:; printf("\n\n\n\n\n"); system("pause");
Λυμένα θέματα εξέτασης Οι λύσεις που ακολουθούν δόθηκαν από κωφό σπουδαστή. Οι σπουδαστές πρέπει να δοκιμάσουν και να διορθώσουν όπου απαιτείται τις παρακάτω λύσεις. Μπορούν βέβαια να προχωρήσουν σε δικές τους λύσεις. Πρώτο #include <iostream> #define STOP '\n' #define ONE '1' #define SIZE '5' main() int i=0,count=0,sum=0,decimal,binary[size]; printf("enter a binary number(1s and 0s).\n"); i=1; while (getchar()!= STOP) if (getchar() == ONE) sum+=1*(i*i); count++; i++; printf("the Binary number is = %d %d %d %d %d.\n", binary[1],binary[2],binary[3],binary[4], binary[5]); printf("its decimal equivalent is = %d.\n", sum); system("pause");
Δεύτερο #include <iostream> main() int decimal,result,i,g,j,k; float binary[7]; printf("enter a decimal number.\n"); scanf("%d", &decimal); if (decimal>63) if (decimal<63) i=64; j=7; result=decimal; while (i!= 0) binary[j]=result/i; result=result%i; i=i/2; j--; g=32; k=6; result=decimal; binary[7]=0; while (g!= 0) binary[k]=result/g; result=result%g; g=g/2; k--; printf("input number is = %d.\n", decimal); printf("its Binary equivalent is = %1.0f %1.0f %1.0f %1.0f %1.0f %1.0f %1.0f.\n", binary[7],binary[6],binary[5], binary[4], binary[3], binary[2],binary[1]); system("pause");
Τρίτο #include <iostream> main() int decimal,result,i,g,j,k,count=0; float binary[7]; printf("enter a decimal number.\n"); scanf("%d", &decimal); if (decimal>63) if (decimal<63) i=64; j=7; result=decimal; while (i!= 0) binary[j]=result/i; if(binary[j]==1) count++; result=result%i; i=i/2; j--; g=32; k=6; result=decimal; binary[7]=0; while (g!= 0) binary[k]=result/g; if(binary[k]==1) count++; result=result%g; g=g/2; k--; printf("input number is = %d.\n", decimal); printf("its Binary equivalent is = %1.0f %1.0f %1.0f %1.0f %1.0f %1.0f %1.0f.\n", binary[7],binary[6],binary[5], binary[4], binary[3], binary[2],binary[1]); printf("no.of 1's in the binary number is = %d.\n",count);
system("pause");
Τέταρτο #include <iostream> main() char num, number[10]; int i=0, count=0; printf("enter the number.\n"); while (getchar()!= "\n") number[i]=getchar(); count++; i++; printf("its reverse is = "); for (i=count;i>0;i--) printf("%d",number[i]); printf(".\n"); system("pause");
Σημειώματα Σημείωμα Αναφοράς Copyright ΤΕΙ Αθήνας, Χ. Σκουρλάς, 2015. Χ. Σκουρλάς, «Εισαγωγή στον Προγραμματισμό. Αλγοριθμική. Ενότητα 2: Εισαγωγή στην Αλγοριθμική και στον Προγραμματισμό. Εισαγωγή στον Προγραμματισμό με γλώσσα c». Έκδοση: 1.0. Αθήνα 2015. Διαθέσιμο από τη δικτυακή διεύθυνση: https://pyles.teiath.gr. Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] http://creativecommons.org/licenses/by-nc-sa/4.0/ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί. Διατήρηση Σημειωμάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει: το Σημείωμα Αναφοράς το Σημείωμα Αδειοδότησης τη δήλωση Διατήρησης Σημειωμάτων το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει) μαζί με τους συνοδευόμενους υπερσυνδέσμους. Σημείωμα Χρήσης Έργων Τρίτων Το Έργο αυτό κάνει χρήση των ακόλουθων έργων: