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

Σχετικά έγγραφα
Αρχές Προγραμματισμού

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός Η/Υ. Ενότητα 5: Εντολές Επανάληψης

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

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

Προγραμματισμός Η/Υ. Ενότητα 3: Top Down Σχεδιασμός

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

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

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

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

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

Προγραμματισμός Η/Υ. Ενότητα 4: Εντολές Επιλογής

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

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

Προγραμματισμός H/Y Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

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

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

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

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

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

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

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

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

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

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Εισαγωγή στην Πληροφορική

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

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

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

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

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

Μεταγλωττιστές. Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

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

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

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

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

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

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

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

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

Πληροφορική ΙΙ Θεματική Ενότητα 5

Οντοκεντρικός Προγραμματισμός

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

Εισαγωγή στους Υπολογιστές

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Επεξεργασία κειμένου και συμβολοσειρών σε C

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

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

Ηλεκτρονικοί Υπολογιστές

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

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

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

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

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

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

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

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

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

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

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

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

Transcript:

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κεφάλαιο 3 Επιμέλεια: Βασίλης Παλιουράς, Αναπληρωτής Καθηγητής Ευάγγελος Δερματάς, Αναπληρωτής Καθηγητής Σταύρος Νούσιας, Βοηθός Ερευνητή Πολυτεχνική Σχολή Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τυπου άδειας χρησης, η άδεια χρησης αναφερεται ρητώς. 2

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου των διδασκόντων καθηγητών. Το έργο «Ανοικτά Ακαδήμαϊκά Μαθήματα στο Πανεπιστήμιο Πατρών» έχει χρηματοδοτηθεί μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκη Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικους πόρους. 3

Ανάπτυξη Το παρόν εκπαιδευτικό υλικό αναπτύχθηκε στο τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών του Πανεπιστημίου Πατρών 4

Μέχρι τώρα... Οργάνωση Προγράμματος C Ενέργειες -> ρήματα (συντακτικό) -> συναρτήσεις Δεδομένα -> αντικείμενα(συντακτικό) -> μεταβλητές Αφαιρετικότητα (abstraction) εργαλείο για την αντιμετώπιση της πολυπλοκότητας Διαχωρίζουμε το "Tι γίνεται" => όνομα, δήλωση συνάρτησης από το "Πώς γίνεται" Χρήση σύνθετων τύπων Αυξητική Ανάπτυξη Προγράμματος Top-down ανάπτυξη Διευκολύνει ανάπτυξη του προγράμματος Διευκολύνει τον έλεγχο του προγράμματος Ξεκινάμε γράφοντας κάτι εκτελέσιμο. Διαδικασία compilation και link για δημιουργία εκτελέσιμου. Γίνονται από την εφαρμογή gcc/mingw 5

Μερικές καλές πρακτικές Πρώτα σκέφτομαι μετά γράφω κώδικα. Γράφω με μέθοδο, ώστε να είναι αμέσως εκτελέσιμος ο κώδικας. Γράφω τμήματα κώδικα και τα δοκιμάζω. Όταν σχεδιάζω την υλοποίηση, θα πρέπει να με απασχολεί πώς θα κάνω τις δοκιμές. 6

Έκδοση 0: θα πρέπει να είναι εκτελέσιμο! #include <stdio.h> 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"); 7

Έκδοση 1: πλήρης typwse() #include <stdio.h> 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); 8

Έκδοση 2: πλήρης ypologisepower() #include <stdio.h> 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); 9

Έκδοση 3: πλήρης diabase() #include <stdio.h> 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); 10

Στοιχεία της Γλώσσας C Γραμματική και Συντακτικό Διαθέσιμοι τύποι δεδομένων Απλοί και σύνθετοι τύποι Βασική βιβλιοθήκη της C παρέχει ένα σύνολο έτοιμων συναρτήσεων: printf( ), scanf( ), Eκτεταμένη τεκμηρίωση της GNU C library http://www.gnu.org/software/libc/manual/ 11

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

Αναγνωριστές (Identifiers) λέξεις που κατασκευάζει ο προγραμματιστής για να ονομάσει μεταβλητές σταθερές συναρτήσεις... Δεν θα πρέπει να είναι δεσμευμένες 13

Τύποι Δεδομένων στη C char χαρακτήρας int ακέραιος float αριθμός κινητής υποδιαστολής απλής ακρίβειας double αριθμός κινητής υποδιαστολής διπλής ακρίβειας απαριθμητικός τύπος enum boolean {FALSE, TRUE; σύνθετοι τύποι πίνακες και δομές (struct) Τύποι του C90. To C99 επεκτείνει. 14

Παραδείγματα Αναγνωριστών - ποιοί είναι σωστοί; j 5j lname _Fname $amount set_password int MaXveLocity find_max#of_lements get_word isdigit get@name 15

Μετατροπή Fahrenheit σε Celcius #include <stdio.h> /* 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; 16

Μετατροπή Fahrenheit σε Celcius #include <stdio.h> /* 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; δήλωση μεταβλητών 17

Μετατροπή Fahrenheit σε Celcius(1) #include <stdio.h> /* print Fahrenheit-Celcius table for fahr = 0, 20,, 300 */ main () { int fahr, celcius; int lower = 0, upper = 300, step = 20; δήλωση μεταβλητών Μαζί με αρχικοποίηση fahr = lower ; while (fahr <= upper) { celcius = 5* (fahr 32) / 9; printf ( %d\t%d\n, fahr, celcius); fahr = fahr + step; 18

Μετατροπή Fahrenheit σε Celcius(2) #include <stdio.h> /* 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; Χρήση άλλης μεταβλητής Για αρχικοποίηση 19

Ομαδοποίηση Τελεστών Κατηγορία Ενδεικτικά C Ενδεικτικά FORTRAN Ενδεικτικά Python Αριθμητικοί * / % + - * / + - Όπως C Λογικοί &&!.AN D..OR..NOT. Συσχετιστικοί > >= ==!=.G T..G E..EQ..NE. and, or, not Όπως C (το διάφ ορο και <>) Διαχείρισης δυαδικών ψηφίων μιας λέξης >> & ^ έκδοση Όπως C Τελεστές διαχείρισης μνήμης & [ ]. -> 20

Εκφράσεις και προτάσεις a = f(g[3]) + 3*d sum = sum + total έκφραση (expression) πρόταση (statement) a = f(g[3]) + 3*d ; 21

Προτάσεις και σύνθετες προτάσεις πρόταση1; { πρόταση1; πρόταση2; πρόταση3; Σύνθετη πρόταση: Μπλοκ προτάσεων π ου ορίζεται με άγκισ τρα. 22

Προτάσεις και σύνθετες προτάσεις ; -->Κενή πρόταση: Δεν είναι συντακτικό λάθος. Δεν κάνει κάτι. Εξηγεί συμπεριφορές. 13; Δεν είναι συντακτικό λάθος. 23

Τελεστής Aνάθεσης = int a, b; a = 5 ; b = a ; int a, b; b = a = 5; όλη η έκφραση έχει ως α ξία την τιμή 5 σημαίνει b = (a = 5); 24

Συγκρίσεις >, >=, <, <= Παράδειγμα a < 5 Σχεσιακοί Τελεστές αν το a είναι μικρότερο του πέντε η έκφραση είναι αληθής διαφορετικά είναι ψευδής 25

Έλεγχος Ισότητας a == 5 ; /* αληθές αν το a είναι 5 */ a!= 5 ; /* αληθές αν το a δεν είναι 5 */ άλλος ο ρόλος του = άλλος του == 26

if (/* */) /* */ else /* */ ; if (έκφραση) (σύνθετη) εντολή 1; else (σύνθετη) εντολή 2; if ( a == 5) printf ("a equals five.\n"); else printf("a does not equal five\n"); 27

Παράδειγμα 1: if με απλή πρόταση #include <stdio.h> int main() { int a = 3; printf("a:%d\n", a); if (a==5) printf("is five\n"); printf("a:%d\n",a); return 0; 28

Παράδειγμα 2: if με σύνθετη πρόταση #include <stdio.h> 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); return 0; 29

(αντί)-παράδειγμα 1: Τι θα τυπώσει; Γιατί; #include <stdio.h> int main() { int a = 3; printf("a:%d\n", a); if (a==5) printf("is "); printf("five\n"); printf("a:%d\n",a); return 0; 30

(αντί)-παράδειγμα 2:Τι θα τυπώσει; Γιατί; #include <stdio.h> int main() { int a = 3; printf("a:%d\n", a); if (a=5) printf("is five\n"); printf("a:%d\n",a); return 0; 31

(αντί)-παράδειγμα 3: Τι θα τυπώσει; Γιατί; #include <stdio.h> int main() { int a = 3; printf("a:%d\n", a); if (a==5) ; printf("is five\n"); printf("a:%d\n",a); return 0; 32

Bρόχος while συνθήκη εισόδου στο βρόχο και συνέχειας main ( ) { int condition; condition = 1; while (condition) { printf("loop body"); condition = f(); condition!=0 condition true εντολές condition = = 0 false για να βγούμε από το βρόχο, θα πρέπει να επηρεάζεται η τιμή του condition! 33

while (έκφραση) σύνθετη (ή όχι) πρόταση Bρόχος while a = 0 ; while (a < 5) { printf ( value of a is %d\n, a); a ++; 34

Βρόχος 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); 35

Βρόχος do /* */ while (/* */); main ( ) { int condition; do { printf("loop body"); condition = f(); while (condition) ; condition!=0 true συνθήκη εξόδου από το βρόχο εντολές condition condition = = 0 false 36

Παραδείγματα χρήσης δομών ελέγχου Σταθερός αριθμός επαναλήψεων Αριθμός επαναλήψεων εξαρτώμενος από τα δεδομένα Ένθετες (nested) δομές ελέγχου 37

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

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

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

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

Λεκτική περιγραφή Επανάλαβε για δέκα φορές { Διάβασε το num Υπολόγισε το sum Τύπωσε το sum scanf() computesum() ή sum = sum + num printf() 42

Υλοποίηση #include <stdio.h> 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); #include <stdio.h> #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); 43

Παράδειγμα Να γραφεί ένα πρόγραμμα που διαβάζει ακεραίους, έναν κάθε φορά και τυπώνει το μ ερικό άθροισμα και το μερικό γινόμενο, όσο ο χρήστης δίνει ως είσοδο αριθμούς > 0. Αριθμοί 0 δεν λαμβάνονται υπόψη στους υπολογισμούς. Στο τέλος τυπώνεται το συνολικό άθροισμα και το γινόμενό τους. 44

Έκδοση 1 #include <stdio.h> int main( ) { 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); return 0; 45

Έκδοση 2 #include <stdio.h> int main( ) { 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); return 0; 46

Έκδοση 3 #include <stdio.h> #include <stdlib.h> int main() { 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); return 0; 47

Έκδοση 4 #include <stdio.h> 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 (input>0) ; printf("sum: %d\n", sum); printf("product: %d\n", prod); return 0; 48

Έκδοση 4a #include <stdio.h> 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 (input>0) ; printf("sum: %d\n", sum); printf("product: %d\n", prod); return 0; Έξοδος από βρόχο Ούτως ή άλλως μόνο με break => Απλή συνθήκη στο while 49

Έκδοση 5 #include <stdio.h> int main( ) { Αρχικοποίηση του input για εξασφάλιση εισόδου στο βρόχο while int input=1, sum = 0, prod = 1; 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); return 0; 50

Έκδοση 6 #include <stdio.h> int getinput(void); int partialsums(int); void report(int); int main( ) { int input, sum ; sum = partialsums(1); report(sum); return 0; int getinput(void) { int a; scanf("%d", &a); return a; 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); return sum; 51

Έκδοση 6a (απλούστερη διεπαφή της partialsums ) #include <stdio.h> int getinput(void); int partialsums(void); void report(int); int main( ) { int input, sum ; sum = partialsums(); report(sum); return 0; 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); int getinput(void) { int a; scanf("%d", &a); return a; return sum; 52

Σημείωμα αναφοράς Copyright Πανεπιστήμιο Πατρών, Παλιουράς Βασίλειος, Δερματάς Ευάγγελος «Αρχές Προγραμματισμού». Έκδοση: 1.0. Πάτρα 2015 Διαθέσιμο από τη δικτυακιακή διέυθυνση https://eclass.upatras.gr/modules/ 53