Αρχές Προγραμματισμού

Σχετικά έγγραφα
ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

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

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

Αρχές Προγραμματισμού

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Τύποι δεδομένων, τελεστές, μεταβλητές

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι

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

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

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

ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ

Γ7.1 Επανάληψη ύλης Β Λυκείου. Γ Λυκείου Κατεύθυνσης

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

Βασικές Αρχές Προγραμματισμού

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

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

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

Προγραμματισμός Η/Υ. Ενότητα 2β: Εισαγωγή στη C (Μέρος Δεύτερο)

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II

Κεφάλαιο : Επαναλήψεις (o βρόγχος While) (Διάλεξη 9) Δομές Έλεγχου Προγράμματος

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

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

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

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

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

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

Προγραμματισμός Η/Υ. Ενότητα 2α: Εισαγωγή στη C (Μέρος Πρώτο)

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

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

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

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

Προγραμματισμό για ΗΜΥ

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

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

Παίρνοντας Αποφάσεις 1

Εισαγωγή στον δομημένο προγραμματισμό

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

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

Μέρος 2 Κατασκευή Συντακτικού Αναλυτή

Δοκιμή και Αποσφαλμάτωση Testing and Debugging

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

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

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

Διδάσκων: Δημήτριος Βαρσάμης

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

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

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

Transcript:

Αρχές Προγραμματισμού https://eclass.upatras.gr/courses/ee806/index.php Βασίλης Παλιουράς paliuras@ece.upatras.gr Μέχρι τώρα... Οργάνωση Προγράμματος C Ενέργειες -> ρήματα (συντακτικό) -> συναρτήσεις Δεδομένα -> αντικείμενα(συντακτικό) -> μεταβλητές Αφαιρετικότητα (abstraction) εργαλείο για την αντιμετώπιση της πολυπλοκότητας Διαχωρίζουμε το τι γίνεται -> όνομα, δήλωση συνάρτησης από το Πώς γίνεται Χρήση σύνθετων τύπων Αυξητική Ανάπτυξη Προγράμματος top-down ανάπτυξη Διευκολύνει ανάπτυξη του προγράμματος Διευκολύνει τον έλεγχο του προγράμματος Ξεκινάμε γράφοντας κάτι εκτελέσιμο C: για να είναι εκτελέσιμο, πρέπει να έχει main() διαφορά από Pytthon. Διαδικασία compilation και link για δημιουργία εκτελέσιμου. Γίνονται από την εφαρμογή gcc/mingw 2 1

Μερικές καλές πρακτικές που είδαμε μέχρι τώρα Πρώτα σκέφτομαι μετά γράφω κώδικα. Γράφω με μέθοδο, ώστε να είναι αμέσως εκτελέσιμος ο κώδικας. Γράφω τμήματα κώδικα και τα δοκιμάζω. Όταν σχεδιάζω την υλοποίηση, θα πρέπει να με απασχολεί πώς θα κάνω τις δοκιμές. 3 έκδοση 0: θα πρέπει να είναι εκτελέσιμο! int diabase(); int ypologisepower(int); void typwse(int); main( ) { int number, power; number = diabase( ); power = ypologisepower(number); typwse(power); int diabase ( ) { printf ("function: diabase\n"); return 5; int ypologisepower(int x ) { printf ("function: ypologise\n"); return x; void typwse (int x ) { printf("function: typwse\n"); 4 2

έκδοση 1: πλήρης typwse() int diabase(); int ypologisepower(int); void typwse(int); main( ) { int number, power; number = diabase( ); power = ypologisepower(number); typwse(power); int diabase ( ) { printf ("function: diabase\n"); return 5; int ypologisepower(int x ) { printf ("function: ypologise\n"); return x; void typwse (int x ) { printf("function: typwse\n"); printf("apotelesma: %d\n",x); 5 έκδοση 2: πλήρης ypologisepower() int diabase(); int ypologisepower(int); void typwse(int); main( ) { int number, power; number = diabase( ); power = ypologisepower(number); typwse(power); int diabase ( ) { printf ("function: diabase\n"); return 5; int ypologisepower(int x ) { printf ("function: ypologise\n"); return x * x * x; void typwse (int x ) { printf("function: typwse\n"); printf("apotelesma: %d\n",x); 6 3

Έκδοση 3: πλήρης diabase() int diabase(); int ypologisepower(int); void typwse(int); main( ) { int number, power; number = diabase( ); power = ypologisepower(number); typwse(power); int diabase ( ) { int aninput; printf ("function: diabase\n"); scanf("%d", &aninput); return aninput; int ypologisepower(int x ) { printf ("function: ypologise\n"); return x * x * x; void typwse (int x ) { printf("function: typwse\n"); printf("apotelesma: %d\n",x); 7 Στοιχεία της Γλώσσας C Γραμματική και Συντακτικό Διαθέσιμοι τύποι δεδομένων Απλοί και σύνθετοι τύποι Βασική βιβλιοθήκη της C παρέχει ένα σύνολο έτοιμων συναρτήσεων: printf( ), scanf( ), Eκτεταμένη τεκμηρίωση της GNU C library http://www.gnu.org/software/libc/manual/ 8 4

Δεσμευμένες λέξεις (reserved words) Λέξεις κλειδιά (keywords) Ονόματα συναρτήσεων της βασικής βιβλιοθήκης Ονόματα μακροεντολών που ορίζονται σε αρχεία επικεφαλίδας: EOF, Oνόματα τύπων που ορίζει η βασική βιβλιοθήκη: time_t, Oνόματα εντολών προεπεξεργαστή: include, define Oνόματα της μορφής _DATE_, _FILE_, κτλ. 9 Αναγνωριστές (Identifiers) λέξεις που κατασκευάζει ο προγραμματιστής για να ονομάσει μεταβλητές σταθερές συναρτήσεις... Δεν θα πρέπει να είναι δεσμευμένες 10 5

Τύποι Δεδομένων στη C char χαρακτήρας int ακέραιος float αριθμός κινητής υποδιαστολής απλής ακρίβειας double απαριθμητικός τύπος enum boolean {FALSE, TRUE; σύνθετοι τύποι πίνακες και δομές (struct) αριθμός κινητής υποδιαστολής διπλής ακρίβειας Τύποι του C90. To C99 επεκτείνει. #include <stdbool.h> 11 Παραδείγματα Αναγνωριστών - ποιοί είναι σωστοί; j 5j lname _Fname $amount set_password int MaXveLocity find_max#of_lements get_word isdigit get@name δοκιμή 12 6

/* print Fahrenheit-Celcius table for fahr = 0, 20,, 300 */ main () { int fahr, celcius; δήλωση μεταβλητών int lower, upper, step; lower = 0 ; /* lower limit of temperature */ upper = 300; step = 20 ; fahr = lower ; while (fahr <= upper) { celcius = 5* (fahr 32) / 9; printf ( %d\t%d\n, fahr, celcius); fahr = fahr + step; 14 /* print Fahrenheit-Celcius table for fahr = 0, 20,, 300 */ Χρήση άλλης μεταβλητής main () { Για αρχικοποίηση int lower = 0, upper = 300, step = 20; int fahr = lower, celcius; while (fahr <= upper) { celcius = 5* (fahr - 32) / 9; printf ("%d\t%d\n", fahr, celcius); fahr = fahr + step; cygwin 16 7

Ομαδοποίηση Τελεστών Κατηγορία Ενδεικτικά C Ενδεικτικά FORTRAN Ενδεικτικά Python Αριθμητικοί * / % + - * / + - Όπως C Λογικοί &&!.AND..OR..NOT. Συσχετιστικοί > >= ==!= Διαχείρισης δυαδικών ψηφίων μιας λέξης Τελεστές διαχείρισης μνήμης.gt..ge..eq..ne. and, or, not Όπως C (το διάφορο και <>) >> & ^ έκδοση Όπως C & [ ]. -> 17 Εκφράσεις και προτάσεις a = f(g[3]) + 3*d sum = sum + total έκφραση (expression) πρόταση (statement) a = f(g[3]) + 3*d ; 18 8

Προτάσεις και σύνθετες προτάσεις πρόταση1; { πρόταση1; πρόταση2; πρόταση3; Σύνθετη πρόταση: Μπλοκ προτάσεων που ορίζεται με άγκιστρα. 19 ; Κενή πρόταση: Δεν είναι συντακτικό λάθος. Δεν κάνει κάτι. Εξηγεί συμπεριφορές. 13; Δεν είναι συντακτικό λάθος. 20 9

Τελεστής Aνάθεσης = int a, b; a = 5 ; b = a ; int a, b; b = a = 5; όλη η έκφραση έχει ως αξία την τιμή 5 σημαίνει b = (a = 5); 21 Σχεσιακοί Τελεστές Συγκρίσεις >, >=, <, <= Παράδειγμα a < 5 αν το a είναι μικρότερο του πέντε η έκφραση είναι αληθής διαφορετικά είναι ψευδής 23 10

Έλεγχος Ισότητας a == 5 ; /* αληθές αν το a είναι 5 */ a!= 5 ; /* αληθές αν το a δεν είναι 5 */ άλλος ο ρόλος του = άλλος του == 24 Διαφορές C, python Το a == b ==c δεν είναι το ίδιο!!! int main() { int a = 5, b =5, c =5; if (a==b==c) printf("equal?\n") ; else printf("or not?\n"); 25 11

int main() { int a = 5, b =5, c =5; if (a==b && b==c) printf("equal\n") ; else printf("or not\n"); 26 if (/* */) /* */ else /* */ ; if (έκφραση) (σύνθετη) εντολή 1; else (σύνθετη) εντολή 2; if ( a == 5) printf ("a equals five.\n"); else printf("a does not equal five\n"); 27 12

Παράδειγμα 1: if με απλή πρόταση int main() { int a = 3; printf("a:%d\n", a); if (a==5) printf("is five\n"); printf("a:%d\n",a); 28 Παράδειγμα 2: if με σύνθετη πρόταση int main() { int a = 3; printf("a:%d\n", a); if (a==5) { printf("is five\n"); printf("nothing else\n"); printf("a:%d\n",a); 29 13

(αντί)-παράδειγμα 1: Τι θα τυπώσει; Γιατί; int main() { int a = 3; printf("a:%d\n", a); if (a==5) printf("is "); printf("five\n"); printf("a:%d\n",a); 30 (αντί)-παράδειγμα 2: Τι θα τυπώσει; Γιατί; int main() { int a = 3; printf("a:%d\n", a); if (a=5) printf("is five\n"); printf("a:%d\n",a); 31 14

(αντί)-παράδειγμα 3: Τι θα τυπώσει; Γιατί; int main() { int a = 3; printf("a:%d\n", a); if (a==5) ; printf("is five\n"); printf("a:%d\n",a); 32 SyntaxError για την Python, όχι για τη C 33 15

Bρόχος while συνθήκη εισόδου στο βρόχο και συνέχειας main ( ) { int condition; condition = 1; while (condition) { printf("loop body"); condition = f(); condition!=0 condition true εντολές condition = = 0 false για να βγούμε από το βρόχο, θα πρέπει να επηρεάζεται η τιμή του condition! 34 Bρόχος while while (έκφραση) σύνθετη (ή όχι) πρόταση a = 0 ; while (a < 5) { printf ( value of a is %d\n, a); a ++; όσο η έκφραση είναι αληθής, εκτελείται η (σύνθετη) πρόταση. 35 16

Βρόχος while και βρόχος for a = 0 ; while (a < 5) { printf ( value of a is %d\n, a); a ++; for (a = 0; a < 5; a ++) { printf ( value of a is %d\n, a); Στη C o βρόχος for ορίζεται ως άλλη γραφή του while for (a = 0 ; a < 5; a++) printf ("value of a is %d\n", a); 36 Βρόχος do /* */ while (/* */); main ( ) { int condition; do { printf("loop body"); condition = f(); while (condition) ; condition!=0 true συνθήκη εξόδου από το βρόχο εντολές condition condition = = 0 false 37 17

Παραδείγματα χρήσης δομών ελέγχου 1. Σταθερός αριθμός επαναλήψεων 2. Αριθμός επαναλήψεων εξαρτώμενος από τα δεδομένα 3. Ένθετες (nested) δομές ελέγχου 38 Παράδειγμα 1 καθορισμένος αριθμός επαναλήψεων Να γραφεί ένα πρόγραμμα που διαβάζει δέκα ακεραίους, έναν κάθε φορά και τυπώνει το μερικό άθροισμα. Στο τέλος τυπώνεται το συνολικό άθροισμα και το γινόμενό τους. (Εδώ λύση χωρίς πίνακες). 39 18

Λεκτική περιγραφή Διάβασε έναν αριθμό Υπολόγισε το μερικό άθροισμα Τύπωσε το μερικό άθροισμα Έχεις διαβάσει δέκα αριθμούς; Αν όχι, επανάλαβε. 40 Λεκτική περιγραφή Διάβασε έναν αριθμό num Υπολόγισε το μερικό άθροισμα Τύπωσε το μερικό άθροισμα Έχεις διαβάσει δέκα αριθμούς; Αν όχι, επανάλαβε. sum sum int num, sum; 41 19

Λεκτική περιγραφή Διάβασε το num Υπολόγισε το sum Τύπωσε το sum Έχεις διαβάσει δέκα αριθμούς; Αν όχι, επανάλαβε. 42 Λεκτική περιγραφή Επανάλαβε για δέκα φορές { Διάβασε το num Υπολόγισε το sum Τύπωσε το sum scanf() computesum() ή sum = sum + num printf() 43 20

main() { int i, num, sum=0; for (i=0; i<10; i++) { scanf("%d", &num); sum = sum + num; printf("partial sum: %d\n", sum); printf("total: %d", sum); #define N 10 main() { int i, num, sum=0; for (i=0; i<n; i++) { scanf("%d", &num); sum = sum + num; printf("partial sum: %d\n", sum); printf("total: %d", sum); 44 Παράδειγμα Να γραφεί ένα πρόγραμμα που διαβάζει ακεραίους, έναν κάθε φορά και τυπώνει το μερικό άθροισμα και το μερικό γινόμενο, όσο ο χρήστης δίνει ως είσοδο αριθμούς > 0. Αριθμοί 0 δεν λαμβάνονται υπόψη στους υπολογισμούς. Στο τέλος τυπώνεται το συνολικό άθροισμα και το γινόμενό τους. 45 21

int main( ) { έκδοση 1 int input, sum = 0, prod = 1; scanf("%d", &input); while (input>0) { sum = sum + input ; printf("partial sum: %d\n", sum); prod = prod * input ; scanf("%d", &input); printf("sum: %d\n", sum); printf("product: %d\n", prod); 46 int main( ) { έκδοση 2 int input, sum = 0, prod = 1; for (scanf("%d", &input); input>0; scanf("%d", &input) ) { sum = sum + input ; printf("partial sum: %d\n", sum); prod = prod * input ; printf("sum: %d\n", sum); printf("product: %d\n", prod); 47 22

#include <stdlib.h> int main() { έκδοση 3 int input, sum = 0, prod = 1; do { scanf("%d", &input); if (input >0 ) { sum = sum + input ; printf("partial sum: %d\n", sum); prod = prod * input ; while (input>0) ; printf("sum: %d\n", sum); printf("product: %d\n", prod); 48 int main() { int input, sum = 0, prod = 1; έκδοση 4 do { scanf("%d", &input); if (input <=0 ) break; sum = sum + input ; printf("partial sum: %d\n", sum); prod = prod * input ; while (input>0) ; printf("sum: %d\n", sum); printf("product: %d\n", prod); 49 23

int main() { int input, sum = 0, prod = 1; do { scanf("%d", &input); if (input <=0 ) break; sum = sum + input ; printf("partial sum: %d\n", sum); prod = prod * input ; while (1) ; printf("sum: %d\n", sum); printf("product: %d\n", prod); έκδοση 4a Έξοδος από βρόχο Ούτως ή άλλως μόνο με break => Απλή συνθήκη στο while 50 int main( ) { Αρχικοποίηση του input για εξασφάλιση εισόδου στο βρόχο while int input=1, sum = 0, prod = 1; έκδοση 5 while ( input > 0) { scanf("%d", &input) ; if (input <=0 ) break; sum = sum + input ; printf("partial sum: %d\n", sum); prod = prod * input ; printf("sum: %d\n", sum); printf("product: %d\n", prod); 51 24

int getinput(void); int partialsums(int); void report(int); int main( ) { int input, sum ; sum = partialsums(1); report(sum); έκδοση 6 void report(int sum) { printf("sum: %d\n", sum); int partialsums(int input) { int sum = 0 ; while ((input=getinput())>0) { sum = sum + input ; printf("partial sum: %d\n", sum); int getinput(void) { int a; scanf("%d", &a); return a; return sum; 52 int getinput(void); int partialsums(void); void report(int); int main( ) { int input, sum ; sum = partialsums(); report(sum); int getinput(void) { int a; scanf("%d", &a); return a; έκδοση 6a (απλούστερη διεπαφή της partialsums ) void report(int sum) { printf("sum: %d\n", sum); int partialsums(void) { int input ; int sum = 0 ; while ((input=getinput())>0) { sum = sum + input ; printf("partial sum: %d\n", sum); return sum; 53 25