Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Σκοπός Να αναπτύξουν ένα πρόγραμμα όπου θα επαναλάβουν τα βήματα ανάπτυξης μιας παραθυρικής εφαρμογής. Να χρησιμοποιήσουν τα βασικά ελεγκτήρια (controls) της εργαλειοθήκης, Κουτί Κειμένου (TextBox), Ετικέτα (Label), Κουμπί Εντολών (Button). Να κατανοήσουν τους βασικούς τύπους δεδομένων και την ανάγκη μετατροπή του κειμένου σε αριθμητικό τύπο. Να χρησιμοποιήσουν τους βασικούς τελεστές. Να χρησιμοποιήσουν σύνθετες δομές if Εκφώνηση Να δημιουργήσετε ένα πρόγραμμα βαθμολογίας το οποίο θα δέχεται έναν πραγματικό αριθμό ο οποίος αντιστοιχεί στην βαθμολογία ενός μαθητή, και ανάλογα εμφανίζει τα παρακάτω μηνύματα : 8,5 έως 10 : Αριστα 7,5 έως 8.5 : Πολύ Καλά 6,0 έως 7.5 : Καλά 5,0 έως 6,0 : Μέτρια 0 έως 5 : Αποτυχία Σε οποιαδήποτε άλλη περίπτωση : Αριθμός εκτός ορίων Επίλυση Δημιουργούμε ένα νέο έργο (File New Project) τύπου Windows Application με όνομα Marks. Σχεδιάζουμε την διεπαφή της εφαρμογής όπως παρακάτω :
Επιλέξτε ένα προς ένα τα αντικείμενα της φόρμας και στο παράθυρο Properties αλλάξτε τις παρακάτω ιδιότητες : Η φόρμα Form1 Name frmmark Το όνομα του Text Βαθμολογίες Μαθητών Η γραμμή τίτλου MaximizeButton False Για να μην FormBorderStyle FixedSingle αλλάζει το μέγεθος της φόρμας. Το πρώτο κουτί κειμένου textbox1 Name txtmark Το όνομα του Text Το δεύτερο κουτί κειμένου textbox2 Name txtmessage Το όνομα του Text ReadOnly True Για να μην μπορεί να γράψει ο χρήστης Το κουμπί εντολών button1 Name btndisplay Το όνομα του Text Εμφάνισε Η πρώτη ετικέτα label1 Name lblmark Το όνομα του
Text Βαθμολογία Μαθητή Επιλέξτε το κουμπί εντολών btndisplay και στο παράθυρο Properties κάντε κλικ στο εικονίδιο με το κεραυνό για να εμφανιστούν τα γεγονότα. Βρείτε το γεγονός Click κάντε διπλό κλικ πάνω για να εμφανιστεί το παράθυρο με το προγραμματισμό των γεγονότων. Μέσα στη μέθοδο btndisplay_click πληκτρολογείστε τις παρακάτω εντολές : Πίνακας 1. Ο κώδικας της εφαρμογής 1 private void btndisplay_click(object sender, EventArgs e) 2 { 3 float stdmark; 4 string Message; 5 6 stdmark = float.parse(txtmark.text); 7 8 if ((stdmark > 10) (stdmark < 0)) 9 { 10 Message = "Αριθμός εκτός ορίων"; 11 } 12 else 13 { 14 if ((stdmark >= 8.5) && (stdmark <= 10)) 15 { 16 Message = "Άριστα"; 17 } 18 else if ((stdmark >= 7.5) && (stdmark < 8.5)) 19 { 20 Message = "Πολύ Καλά"; 21 } 22 else if ((stdmark >= 6) && (stdmark < 7.5)) 23 { 24 Message = "Καλά"; 25 } 26 else if ((stdmark >= 5) && (stdmark < 6)) 27 { 28 Message = "Μέτρια"; 29 } 30 else 31 { 32 Message = "Αποτυχία"; 33 } 34 } 35 36 txtmessage.text = Message; 37 }
Στις γραμμές 3 και 4 δηλώνετε δύο μεταβλητές, την stdmark για την βαθμολογία του μαθητή και την Message για το μήνυμα που θα εμφανιστεί αναλόγως της βαθμολογίας. Στην γραμμή 6 μετατρέπετε το περιεχόμενο του txtmark σε δεκαδικό αριθμό. Στις επόμενες γραμμές χρησιμοποιείτε την δήλωση if για να συγκρίνετε την βαθμολογία του μαθητή εάν είναι εκτός των ορίων 0 έως 10. Η γενική σύνταξη της εντολής if είναι : Η δήλωση if if(συνθήκη) {... Εντολές που θα εκτελεστούν αν η συνθήκη είναι αληθής... } Για την κατασκευή μιας συνθήκης θα πρέπει να χρησιμοποιήσετε έναν από τους τελεστές σύγκρισης. Για παράδειγμα αν θέλατε να εκτελέσετε κάποιες εντολές στην περίπτωση που η βαθμολογία του μαθητή ήταν μικρότερη η ίση από 10, θα γράφατε : if(stdmark <= 10) {...εντολές που θα εκτελεστούν αν η βαθμολογία είναι μικρότερη ή ίση του 10... } Στην προκειμένη περίπτωση για να ελέγξετε αν η βαθμολογία είναι εκτός ορίων θα πρέπει να την συγκρίνετε αν είναι μικρότερη του 0 ή μεγαλύτερη του 10. Η συνθήκη είναι σύνθετη, δηλαδή αποτελείται από δύο άλλες συνθήκες συνθήκη Α (stdmark < 0) και συνθήκη Β (stdmark > 10) - που συνδέονται με έναν λογικό τελεστή. Οι λογικοί τελεστές είναι : Τελεστής && Σημασία Λογικό ΚΑΙ Λογικό Η! Λογικό ΟΧΙ
Το αποτέλεσμα, αληθές ή ψευδές από την ένωση δύο συνθηκών με ένα λογικό τελεστή εξαρτάται από τους πίνακες αλήθειας : Συνθήκη Α Συνθήκη Β Α && Β false false false false true false true false false true true true Η σύνθετη συνθήκη με λογικό ΚΑΙ είναι αληθής (true) μόνο όταν και οι δύο συνθήκες είναι αληθής. Σε οποιαδήποτε άλλη περίπτωση είναι ψευδής (false) Συνθήκη Α Συνθήκη Β Α Β false false false false true true true false true true true true Η σύνθετη συνθήκη με λογικό Ή είναι ψευδής (false) μόνο όταν και οι δύο συνθήκες είναι ψευδής. Σε οποιαδήποτε άλλη περίπτωση είναι αληθής (true). Στη γραμμή 6 του Πίνακα 1, χρησιμοποιείτε το λογικό τελεστή Ή ώστε εάν μια από τις δύο συνθήκες είναι αληθής τότε ολόκληρη η συνθήκη είναι αληθής άρα η βαθμολογία είναι εκτός ορίων. Συνθήκη Α!Α false true True False O λογικός τελεστής ΟΧΙ αντιστρέφει το αποτέλεσμα της συνθήκης, αν είναι αληθής το κάνει ψευδές και το αντίστροφο. Με τους λογικούς τελεστές μπορείτε να συνδέσετε περισσότερες από δύο συνθήκες αφού η C# - όπως και κάθε γλώσσα προγραμματισμού θα εκτιμήσει ανά δύο τις
συνθήκες και το αποτέλεσμα θα το συγκρίνει με την επόμενη συνθήκη και ούτω καθεξής. Για παράδειγμα, αν σε ένα πρόγραμμα οι μεταβλητές x και y έχουν τιμές 18 και 3 αντίστοιχα, τότε η έκφραση if((x > 10) && (x <= 20) && (y > 5)) θα εκτιμηθεί ως εξής : Πρώτα θα υπολογιστεί το αποτέλεσμα των δύο πρώτων συνθηκών (x > 10) && (x <= 20) και θα δώσουν αποτέλεσμα αληθές αφού η τιμή του x είναι 18. Εν συνεχεία θα υπολογιστεί το αποτέλεσμα της συνθήκης true && (y > 5), όπου true είναι το αποτέλεσμα της προηγούμενης σύνθετης συνθήκης. Σύμφωνα με την γραμμή 3 τού πίνακα του λογικού ΚΑΙ το αποτέλεσμα είναι ψευδές γιατί η δεύτερη συνθήκη είναι ψευδής αφού το y έχει τιμή 3. Κατά αυτό το τρόπο, ανά δύο, μπορείτε να υπολογίσετε το αποτέλεσμα αρκετά σύνθετων συνθηκών.