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

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

Κεφάλαιο : Επαναλήψεις (oι βρόχος While) ( ιάλεξη 9) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07

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

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

Θέματα Προγραμματισμού Η/Υ

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

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

Επανάληψη για τις Τελικές εξετάσεις

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

ΕΠΛ 034: Εισαγωγή στον Προγραμματισμό για ΗΜΥ

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

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

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

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

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

Γλώσσα Προγραμματισμού C

Δομές Επανάληψης. Εισαγωγή στη C++

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

Διάλεξη 5η: Εντολές Επανάληψης

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

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

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

Β7.1.4 Δομές Επανάληψης. Β Λυκείου Κατεύθυνσης

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

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

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

4. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Α' μέρος: for)

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

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

Εντολές Επανάληψης. int sum = 0, i=1; sum += i++ ; sum += i++ ; Η πράξη αυτή θα πρέπει να επαναληφθεί Ν φορές!

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

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

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

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

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

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

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

Πληροφορική 2. Αλγόριθμοι

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

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

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

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

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

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

Δομή Επανάληψης. Κεφάλαιο 7 Mike Trimos

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

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

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

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

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

ικτυακά Πολυμέσα Ι (Β Έτος, 3ο εξ) ιάλεξη #8η: Javascript: Τεχνικές εντοπισμού/διόρθωσης λαθών, τελεστές, δομές ελέγχου, βρόχοι επανάληψης

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

EΒ ΟΜΑ Α 4 Η. οµές επανάληψης while και do while

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

Διάλεξη 6: Δείκτες και Πίνακες

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

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

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

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

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

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

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

Η εντολή if-else. Η απλή μορφή της εντολής if είναι η ακόλουθη: if (συνθήκη) { Η γενική μορφή της εντολής ifelse. εντολή_1; εντολή_2;..

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

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

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

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

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

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

ΕΠΛ 032.3: Προγραµµατισµός ΜεθόδωνΕπίλυσηςΠροβληµάτων

Αναφορά (1/2) Μπορούμε να ορίσουμε μια άλλη, ισοδύναμη αλλά ίσως πιο σύντομη, ονομασία για ποσότητα (μεταβλητή, σταθερή, συνάρτηση, κλπ.

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

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

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

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

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

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

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

Ο βρόχος for Η εντολή for χρησιμοποιείται για τη δημιουργία επαναληπτικών βρόχων στη C

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Εντολές Ελέγχου & Επανάληψης

Βρόχοι. Εντολή επανάληψης. Το άθροισμα των αριθμών 1 5 υπολογίζεται με την εντολή. Πρόβλημα. Πώς θα υπολογίσουμε το άθροισμα των ακέραιων ;

Transcript:

ΕΠΛ 032.3: 3: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy

Κεφάλαιο 7 ομές Επαναλήψεις Ο βρόχος While

ομές Έλεγχου Προγράμματος Μέχρι τώρα είδαμε τις ακόλουθες δομές έλεγχου (program control structure) ενός προγράμματος Α) Sequence π.χ. int a=1; b=34; printf( Hello ); B) Selection π.χ. if (a>1) { printf( a>1 ); a>1); ή switch (a) { Σήμερα θα δούμε ένα τρίτο τύπο δομής έλεγχου ενός προγράμματος: Γ) Repetition (Επαναληπτική ομή Έλεγχου) π.χ. while (α>0) {ή ή for (i=0;i<5;i++) { Η δομές επανάληψης επιτρέπουν στους προγραμματιστές να προσδιορίσουν μία ενέργεια που θα επαναλαμβάνεται όσο μία συνθήκη παραμένει αληθής. 9-3

Εισαγωγή: ομές Επανάληψης Παράδειγμα Θέλουμε να τυπώσουμε τους αριθμούς από το μηδέν έως τρία στην οθόνη Ανεπιτυχής Προσπάθεια int main() { printf( 0 ); printf( 1 ); 1); printf( 2 ); printf( 3 ); return 0; Τι γίνεται αν θέλω να εκτυπώσω τους αριθμούς από 0 έως 100? Φαίνεται α ότι η ρητή απαρίθμηση αρ δεν είναι πολύ εύχρηστη

Εισαγωγή: ομές Επανάληψης (συν.) Επιτυχής Προσπάθεια int a = 0; συνθήκη while (α<4) { printf( %d,, a); a = a+1; Ενέργεια επανάληψης (iteration) Μας τυπώνει 0,1,2,3,

Εισαγωγή: ομές Επανάληψης (συν.) Ας δούμε τι ακριβώς εκτελείτε α α<4 output 0 1 0 1 1 1 2 1 2 3 1 3 4 0 int a=0; while (α<4) { printf( %d,, a); a=a+1; a+1;

Εισαγωγή: ομές Επανάληψης (συν.) Εκτύπωση σε αντίστροφη σειρά int a = 4; Σιγουρευτείτε ότι καταλαβαίνεται την διαφορά του while και if int a = 4; while (α>0) { a = a-1; printf( %d,, a); if (α>0) { a = a-1; printf( %d,, a); Μας τυπώνει 3,2,1,0 Μας τυπώνει 3

Κατηγορίες Βρόχων Επανάληψης Για δημιουργία επανάληψης σε ένα πρόγραμμα υπάρχουν διάφοροι τρόποι: Α) Counting Loops (Με μετρητή) Προσδιορισμένος αριθμός επαναλήψεων π.χ. int a =0; while (a<2) { printf( Hello ); a = a+1; B) Sentinel Loops (Με σημαία) Απροσδιόριστος αριθμός επαναλήψεων. Το loop διακόπτεται όταν δοθεί κάποιος ειδικός χαρακτήρας. π.χ. int a =0; while (a!=-1) { scanf( %d, &a); printf( Hello ); C) Συνδυασμός (με χρήση λογικών τελεστών)

Εντολές Επανάληψης που θα καλυφθούν αυτή την βδομάδα Σημερινή ιάλεξη while(){ τελεστές postfix/prefix (++, --,...) και σύνθετοι τελεστές Παραδείγματα Επόμενη ιάλεξη for(){ Η εντολές break/continue; do{ while() Φωλιασμένοι Βρόχοι (Nested Loops) Παραδείγματα

While Loop Σύνταξη: while (έκφραση) εντολή; while (έκφραση){ εντολη1; εντολη2; Σημασία: εφόσον η έκφραση (συνθήκης == αληθής) εκτέλεσε τις εξαρτώμενες εντολές αλλιώς συνέχισε με τις εντολές που ακολουθούν το while block... ΠΡΟΣΟΧΗ ΛΑΘΟΣ!!! while (εκφραση); εντολη;

Ροή Ελέγχου while false συνθ. true εφόσον η έκφραση (συνθήκης ή == αληθής) εκτέλεσε τις εξαρτώμενες εντολές αλλιώς συνέχισε με τις εντολές που ακολουθούν το while block Επόμενες εντολές

Πρόβλημα 1: Εκτύπωση Αριθμών Γράψετε ένα τμήμα προγράμματος που τυπώνει τους ακέραιους αριθμούς από το 1 μέχρι το 12. Κάθε αριθμός που διαιρείται με το 3 να τυπώνεται * δίπλα του. Ο κάθε αριθμός να τυπώνεται σε ξεχωριστή γραμμή. ηλαδή: 1 2 3* 4 5 6*

Πρόβλημα 1(Λύση): Εκτύπωση Αριθμών int i; /* loop counter */ i = 1; while (i <= 12){ printf( %d,i); if((i%3) == 0){ printf( * ); printf( \n ); i = i + 1;

Τελεστές Prefix and Postfix Συχνά θέλουμε να αυξάνουμε/μειώνουμε μετρητές κατά 1. Υπάρχει πιο εύκολος τρόπος! Prefix Operator (προ-σημειογραφική) ++i; <==> i = i + 1; --i; <==> i = i - 1; Postfix Operator (μετά-σημειογραφική) φ i++; <==> i = i + 1; i--; <==> i = i - 1; Και οι δυο τελεστές εκτελούν την ίδια πράξη (αφαίρεση / πρόσθεση) αλλά με διαφορετική σειρά. Ακολουθούν Παραδείγματα

Prefix vs Postfix Τελεστές x = ++i; y = i++; Πρώτα αύξησε και μετά ανάθεσε x=6 Πρώτα ανάθεσε και μετά αύξησε y=6 i=7 x είναι 6, y είναι 6 και το i είναι 7 int my_int = 3; int my_int = 3; printf ("%d, ", my_int++); printf ("%d, ", ++my_int); printf ("%d, ", my_int++); printf ("%d, ", ++my_int); printf ("%d, ", my_int); printf ("%d, ", my_int); Εκτυπώνει: 3,4,5 Εκτυπώνει: 4,5,5

Σύνθετοι Τελεστές Ανάθεσης Συχνά θέλουμε να αυξάνουμε / μειώνουμε μετρητές κατά κάποιο Κ (>1) Υπάρχει πιο συνοπτικός τρόπος! Πρόσθεση: i+=k; <==> i = i + k; Πολλαπλασιασμός: i*=k; <==> i = i * k; ιαίρεση: i/=k; <==> i = i / k; Υπόλοιπο: i%=k; <==> i = i%k; iop= k; <==> i = i op (k); 9-16

Πρόβλημα: Άθροισμα Σειράς - Περιγραφή Γράψετε ένα πρόγραμμα το οποίο υπολογίζει το άθροισμα μιας σειράς ακέραιων αριθμών. Η σειρά εισάγεται από μονάδα εισόδου και τερματίζεται με την τιμή 0. π.χ. Enter series: 2 4 236 6 31 23 0 >> 302

Πρόβλημα: Άθροισμα Σειράς Άθροιση Στοιχείων α1 α2 α3 α4 + Sum + Sum + Sum

Πρόβλημα Άθροισμα Σειράς: Ολοκληρωμένος κώδικας int number; /* holds input number one at a time */ int sum=0; /* current sum */ // διάβασμα πρώτου αριθμού scanf( %d,&number); while(number!= 0){ // εκτέλεση πράξης sum += number; // άθροιση με υπάρχων sum // διάβασμα επόμενου scanf( %d,&number); printf( To άθροισμα της σειράς είναι %d\n,sum);

Πρόβλημα: Εύρεσης Μέγιστου Σειράς - Περιγραφή Γράψετε ένα πρόγραμμα που αναγνωρίζει τον πιο μεγάλο αριθμό σε μια σειρά ακέραιων αριθμών. Η σειρά εισάγεται από μονάδα εισόδου και τερματίζεται με την τιμή 0. π.χ. Enter series: 2 4 5236 6 31 978 5555 23 0 >> 5555

Πρόβλημα: Εύρεσης Μέγιστου από σειρά Ν στοιχείων α1 α2 α3 α4 max megistos max megistos max megistos

Πρόβλημα : Εύρεσης Μέγιστου Σειράς - Ολοκληρωμένος Κώδικας int main(){ int number; /* hold input number one at a time */ int maximum; /* hold current maximum */ scanf("%d",&number); /* diabase prwto stoixeio */ maximum = number; /* arxikopoihsh */ while(number!= 0){ scanf("%d",&number); /*diabase epomeno stoixeio*/ if (number>maximum) maximum = number; printf("to megisto stoixeio της σειρας ειναι %d\n", maximum);

Παράδειγμα Τι θα εκτυπώσει? int main(){ printf( Enter an integer ); scanf("%d",&number); count = 0; /* αρχικοποίηση */ product = number; while(count < 3){ printf("%d\n", product); product *=number; count +=1;

Τέλος 7 ου Κεφαλαίου