Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Σκοπός Να αναπτύξουν ένα πρόγραμμα όπου θα επαναλάβουν τα βήματα ανάπτυξης μιας παραθυρικής εφαρμογής. Να χρησιμοποιήσουν τα βασικά ελεγκτήρια (controls) της εργαλειοθήκης, Κουτί Κειμένου (Box), Ετικέτα (Label), Κουμπί Εντολών (Button). Να κατανοήσουν τους βασικούς τύπους δεδομένων και την ανάγκη μετατροπή του κειμένου σε αριθμητικό τύπο. Να χρησιμοποιήσουν τους βασικούς τελεστές. Να χρησιμοποιήσουν την δομή for Εκφώνηση Να δημιουργήσετε ένα πρόγραμμα το οποίο θα δέχεται δύο ακεραίους αριθμούς και υπολογίζει το άθροισμα όλων των ενδιάμεσων αριθμών. Για παράδειγμα αν οι αριθμοί είναι οι 1 και 6 τότε το πρόγραμμα θα εμφανίσει σαν αποτέλεσμα το 21 επειδή είναι το άθροισμα 1+2+3+4+5+6 Επίλυση Δημιουργείστε ένα νέο έργο (File New Project) τύπου Windows Application με όνομα SumNumbers. Σχεδιάστε την διεπαφή της εφαρμογής όπως παρακάτω :
Επιλέξτε ένα προς ένα τα αντικείμενα της φόρμας και στο παράθυρο Properties αλλάξτε τις παρακάτω ιδιότητες : Η φόρμα Form1 Name frmsumnumbers Το όνομα του Άθροισμα Η γραμμή τίτλου MaximizeButton False Για να μην FormBorderStyle FixedSingle αλλάζει το μέγεθος της φόρμας. Το πρώτο κουτί κειμένου textbox1 Name txtstart Το όνομα του Το δεύτερο κουτί κειμένου textbox2 Name txtend Το όνομα του Το τρίτο κουτί κειμένου textbox3 Name txtresult Το όνομα του ReadOnly True Για να μην μπορεί να γράψει ο χρήστης Το κουμπί εντολών button1 Name btncalculate Το όνομα του Υπολόγισε
Η πρώτη ετικέτα label1 Name lblstart Το όνομα του Αρχή Η δεύτερη ετικέτα label2 Name lblend Το όνομα του Τέλος Η τρίτη ετικέτα label3 Name lblresult Το όνομα του Άθροισμα Η δήλωση if επιτρέπει την εκτέλεση εντολών στην περίπτωση που αληθεύει μία συνθήκη. Η δήλωση for μας επιτρέπει την επανάληψη των εντολών ενώ αληθεύει μία συνθήκη. Η σύνταξη της for είναι όπως παρακάτω : Η δήλωση for for(αρχική_τιμή; Συνθήκη; Βήμα) { H for εκτελείται σε διακριτά βήματα. Αρχικά εκτελείται η δήλωση Αρχική_Τιμή. Εν συνεχεία γίνεται εκτίμηση της Συνθήκης το αποτέλεσμα της οποίας αν είναι ψευδής οδηγεί στον τερματισμό της επανάληψης διαφορετικά αν είναι αληθής τότε εκτελούνται οι εντολές. Τέλος εκτελείται η δήλωση Βήμα και η ροή του προγράμματος συνεχίζεται με την εκτίμηση της Συνθήκης. Σε αρκετές περιπτώσεις για την υλοποίηση μιας επανάληψης χρησιμοποιούμε έναν μετρητή. Για παράδειγμα αν θέλουμε να κάνουμε μια επανάληψη 3 φορές τότε αρχικοποιούμε το μετρητή με μια ακέραια τιμή έστω 1 και εν συνεχεία
συγκρίνουμε την τιμή του μετρητή αν είναι μικρότερος ή ίσος από 3. Το βήμα είναι η τιμή του μετρητή +1. Η σύνταξη των εντολών θα είναι : Πρώτο παράδειγμα επανάληψης int i; for(i = 1; i <= 3; i=i+1) { To ίδιο αποτέλεσμα θα είχαμε αν σε περίπτωση ξεκινούσαμε το μετρητή από 50, στην συνθήκη ελέγχαμε αν η τιμή του μετρητή είναι μικρότερη ή ίση από 150 και το βήμα ήταν η τιμή του μετρητή +50. Η σύνταξη των εντολών θα είναι : Δεύτερο παράδειγμα επανάληψης int i; for(i = 50; i <= 150; i=i+50) { Τέλος τo ίδιο αποτέλεσμα θα είχαμε αν σε περίπτωση ξεκινούσαμε το μετρητή από 150, στην συνθήκη ελέγχαμε αν η τιμή του μετρητή είναι μεγαλύτερη ή ίση από 50 και το βήμα ήταν η τιμή του μετρητή -50. Η σύνταξη των εντολών θα είναι : Τρίτο παράδειγμα επανάληψης int i; for(i = 150; i >= 50; i=i-50) { Και στις τρεις περιπτώσεις θα λάμβαναν χώρα τρεις επαναλήψεις. Όταν το βήμα αυξάνετε κατά 1 ή μειώνετε κατά 1 τότε μπορούμε να χρησιμοποιήσουμε τις εκφράσεις i++ και i που είναι ισοδύναμες με τις εκφράσεις i = i + 1 και i = i 1 αντίστοιχα.
Επιλέξτε το κουμπί εντολών btncalculate και στο παράθυρο Properties κάντε κλικ στο εικονίδιο με το κεραυνό για να εμφανιστούν τα γεγονότα. Βρείτε το γεγονός Click κάντε διπλό κλικ πάνω για να εμφανιστεί το παράθυρο με το προγραμματισμό των γεγονότων. Μέσα στη μέθοδο btncalculate_click πληκτρολογείστε τις παρακάτω εντολές : Πίνακας 1. Ο κώδικας της εφαρμογής 1 private void btncalculate_click(object sender, EventArgs e) 2 { 3 int Start, End; 4 int i; 5 long Sum; 6 7 Sum = 0; 8 9 Start = int.parse(txtstart.); 10 End = int.parse(txtend.); 11 12 for (i = Start; i <= End; i = i + 1) 13 { 14 Sum = Sum + i; 15 16 txtresult. = Sum.ToString(); 17 Στην for δεν είναι απαραίτητο να δηλώσουμε Αρχική_Τιμή, Συνθήκη και Βήμα. Η παρακάτω δήλωση είναι αποδεκτή : Μη προκαθορισμένη επανάληψη for for(;;) { Πρόκειται για μια ατελείωτη επανάληψη. Αυτού του είδους οι επαναλήψεις είναι χρήσιμες όταν δεν γνωρίζουμε εξαρχής πόσες φορές θα εκτελέσουμε την επανάληψη. Σε αυτή την περίπτωση για να τερματίσει η επανάληψη θα πρέπει μέσα στις εντολές να υπάρχει η break. Θα μπορούσατε να ξαναγράψετε το κώδικα του προγράμματος όπως παρακάτω :
Πίνακας 2. Ο κώδικας της εφαρμογής 1 private void btncalculate_click(object sender, EventArgs e) 2 { 3 int Start, End; 4 int i; 5 long Sum; 6 7 Sum = 0; 8 9 Start = int.parse(txtstart.); 10 End = int.parse(txtend.); 11 12 i = Start; 13 for (; ; ) 14 { 15 Sum = Sum + i; 16 i = i + 1; 17 if (i > End) 18 break; 19 20 21 txtresult. = Sum.ToString(); 22 Παρ όλο που είναι ίδιος σχεδόν ο κώδικας με τον Πίνακα 1, θα πρέπει να σημειώσετε ότι πρόκειται για μια ατελείωτη επανάληψη όπου τερματίζεται με την εντολή break και η ροή του προγράμματος συνεχίζει στη πρώτη εντολή εκτός for.