ΕΝ ΕΙΚΤΙΚΑ ΣΧΕ ΙΑ ΛΥΣΕΩΝ - ΥΠΟ ΕΙΞΕΙΣ



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

Ελεγχος, Αξιοπιστία και Διασφάλιση Ποιότητας Λογισµικού Πολυπλοκότητα

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΜΟΣ Εντολές επιλογής και αποφάσεων 1 ο Φύλλο Εργασιών Εισαγωγικές ασκήσεις για την εντολή if ΑΠΑΝΤΗΣΕΙΣ

ΕΡΓΑΣΤΗΡΙΟ 2 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Εργαστήριο 2. Τµήµα Πληροφορικής και Τηλεπικοινωνιών

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

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

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

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

Εργαστήριο 5. Εντολή if και παραλλαγές: if-else, πολλαπλές if, πολλαπλές if-else. Απλές και σύνθετες εντολές. Εντολή switch.

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

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

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

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

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

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

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

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

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

2. ΕΝΤΟΛΕΣ ΕΛΕΓΧΟΥ (Α' μέρος: if)

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #5

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

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

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

2.1. Εντολές Σχόλια Τύποι Δεδομένων

Χαράλαµπος Σκόκος ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ I ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C ΕΞΕΤΑΣΕΙΣ ΧΕΙΜΕΡΙΝΟΥ ΕΞΑΜΗΝΟΥ Ερωτήσεις

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

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

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

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

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

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

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

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

Δομές ελέγχου ροής προγράμματος

Τα δεδομένα στη C++ χωρίζονται σε 3 κατηγορίες: τους αριθμούς (numbers), τους χαρακτήρες (characters) και τις συμβολοσειρές (strings).

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

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

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

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

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

C Programming EPL032 Maria Stavrinou Ioannou Εισαγωγή στη Γλώσσα C

Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ

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

Προγραμματισμός I (Θ)

Κεφάλαιο 4ο: Εντολές επιλογής

Οργάνωση και Σχεδίαση Υπολογιστών Η ιασύνδεση Υλικού και Λογισµικού, 4 η έκδοση. Κεφάλαιο 3. Αριθµητική για υπολογιστές

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

Πίνακες. 1 Πίνακες. 30 Μαρτίου 2014

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

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

Βασικά στοιχεία της Java

Pascal, απλοί τύποι, τελεστές και εκφράσεις

1. ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C++

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΑΣΚΗΣΗ #5 Προτεινόμενη Λύση

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

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

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

Βασικά Στοιχεία της Java

Α3. Ποια είναι τα πλεονεκτήματα του Δομημένου προγραμματισμού; (Μονάδες 10)

ΕΡΓΑΣΤΗΡΙΟ 11 - Απαντήσεις

Δομές ελέγχου & επανάληψης

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

ΕΡΓΑΣΤΗΡΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Τµήµα Πληροφορικής και Τηλεπικοινωνιών

6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ

Οι δείκτες στη γλώσσα C

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 3 Εντολές Επιλογής. Γιώργος Λαμπρινίδης Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

Κεφάλαιο , 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

υναµική έσµευση Μνήµης (συν.) ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 2 Εφαρµογή

Προγραμματισμός Ι (HY120)

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

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

Προγραμματισμός Ι (HY120)

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

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

που θα δώσει αποτέλεσµα 48, λόγω της αριστερής προσεταιριστικότητας των τελεστών / και *, ενώ η επιθυµητή αντικατάσταση θα ήταν η

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΕΞΕΤΑΣΗ IOYNIOY 2018 ΘΕΜΑΤΑ Α ΟΝΟΜΑΤΕΠΩΝΥΜΟ:... ΑΕΜ: ΕΞΑΜΗΝΟ:

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

( ) = inf { (, Ρ) : Ρ διαµέριση του [, ]}

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

if(συνθήκη) {... // οµάδα εντολών } C: Από τη Θεωρία στην Εφαρµογή 5 ο Κεφάλαιο

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ Κεφάλαιο 10 : Εντολές επιλογής και αποφάσεων

ΘΕΜΑΤΑ ΕΞΕΤΑΣΗΣ ΚΑΙ ΑΠΑΝΤΗΣΕΙΣ ΤΟΥΣ

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

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

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

Σημειωματάριο Δευτέρας 9 Οκτ. 2017

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

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

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

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

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Θεόδωρος Γ. Λάντζος Διάλεξη Νο1

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ Κεφάλαιο 10 : Εντολές επιλογής και αποφάσεων

Βαθμός Σχόλια. lab5 PASS PASS PASS PASS PASS. Οριακά PASS - Καλή δουλειά

Βασικά Στοιχεία της Java

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

Ενότητα 4: «Εισαγωγή στον Προγραμματισμό. Τα πρώτα προγράμματα σε γλώσσα C»

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 9 Συναρτήσεις. Γεώργιος Λαμπρινίδης

Transcript:

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΛΗ42 - ΕΙ ΙΚΑ ΘΕΜΑΤΑ ΤΕΧΝΟΛΟΓΙΑΣ ΛΟΓΙΣΜΙΚΟΥ 2η ΓΡΑΠΤΗ ΕΡΓΑΣΙΑ ΑΚΑ ΗΜΑΪΚΟΥ ΕΤΟΥΣ 2009-2010 2 oς Τόµος ΕΝ ΕΙΚΤΙΚΑ ΣΧΕ ΙΑ ΛΥΣΕΩΝ - ΥΠΟ ΕΙΞΕΙΣ

ΕΡΓΑΣΙΑ 2 i. υναµική τεχνική επικύρωσης: Συµβολική Εκτέλεση Σύµφωνα µε την τεχνική της συµβολικής εκτέλεσης, αρχικά δίνουµε συµβολικές τιµές στις 3 παραµέτρους εισόδου του προγράµµατος και συνεχίζουµε περιγράφοντας τις διάφορες συνθήκες χρησιµοποιώντας τις συµβολικές τιµές εισόδου. Στον παρακάτω πίνακα οι συµβολικές τιµές που αποδίδονται στις µεταβλητές είναι οι Α, Β, C για τις µεταβλητές x, y και z αντίστοιχα. Επίσης, κάθε συνθήκη που περιγράφεται µε βάση τις συµβολικές τιµές εισόδου περικλείεται σε αγκύλες ([]). Επίσης, για κάθε εµφωλευµένη συνθήκη, περιγράφονται και όλες οι άλλες εξωτερικές συνθήκες που πρέπει να ικανοποιούνται. #include "stdio.h" #include "conio.h" void main() int x, y, z; printf("dwse treis akeraious arithmous: "); scanf("%i %i %i", &x, &y, &z); if (x>y) if (z>=y) z=y-1; else z=x+1; else if (y>x) if (z>=x) z=x-1; else z=y+1; else if (x==z) z=y+1; else if (y==z) z=x-1; else z=x+1; x=a, y=b, z=c [A>B] [A>B] && [C>=B] z=b-1 [A>B] && [C<B] z=a+1 [B>A] [B>A] && [C>=A] z=a-1 [B>A] && [C<A] z=b+1 [A=B] [A=B] && [A=C] z=b+1 [A=B] && [A<>C] [A=B] && [A<>C] && [B=C] z=a-1 [A=B] && [A<>C] && [B<>C] z=a+1 Με βάση τις διάφορες συνθήκες λοιπόν, παρατηρούµε ότι ο κώδικας που έχει σηµειωθεί µε κόκκινο χρώµα δεν πρόκειται να εκτελεστεί ποτέ (ονοµάζεται dead code) µιας που οι συνθήκες που µας οδηγούν στην εκτέλεσή του είναι αντικρουόµενες. Συγκεκριµένα, αν Α = Β και B = C, δεν είναι δυνατόν να αληθεύει και το ότι A<>C. ΕΝ ΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ 2

ii. Έλεγχος αδιαφανούς κουτιού: Κλάσεις Ισοδυναµίας, Οριακές τιµές, Γράφος αιτίου- αποτελέσµατος α. Περιπτώσεις ελέγχου που πρέπει να διεξαχθούν µε βάση τις τεχνικές διαµέρισης σε κλάσεις ισοδυναµίας και ανάλυσης οριακών τιµών. Για τη διαµέριση σε κλάσεις ισοδυναµίας θα πρέπει να δούµε κάθε µεταβλητή εισόδου ξεχωριστά και ανεξάρτητα από τις άλλες µεταβλητές εισόδου. Ειδικότερα, σύµφωνα µε την εκφώνηση, ο µεταβλητές εισόδου είναι οι: Grade που αντιστοιχεί στο βαθµό πτυχίου και είναι ένας πραγµατικός αριθµός µε ακρίβεια 2 δεκαδικών ψηφίων. Εδώ θα πρέπει να τονίσουµε ότι για να µπορεί κάποιος να πάρει πτυχίο, θα πρέπει ο βαθµός του πτυχίου να είναι τουλάχιστον 5 και να φτάνει µέχρι 10. Άρα λοιπόν, οι τιµές για τη συγκεκριµένη µεταβλητή που είναι µικρότερες από 5 και µεγαλύτερες από 10 είναι άκυρες τιµές. PhD που είναι µία Boolean µεταβλητή που καταγράφει αν ο υποψήφιος είναι κάτοχος διδακτορικού διπλώµατος ή όχι. MSc που οµοίως µε την µεταβλητή PhD είναι µία Boolean µεταβλητή που καταγράφει αν ο υποψήφιος είναι κάτοχος µεταπτυχιακού τίτλου ή όχι. Lang που είναι ένα σύνολο διακριτών τιµών που σχετίζονται µε τη γνώση ξένης γλώσσας και συγκεκριµένα είναι το σύνολο Καµία, Καλή, Πολύ καλή, Άριστη. Παρατηρήστε εδώ ότι εκτός από τις τιµές που αναφέρονται στην εκφώνηση έχουµε προσθέσει και την διακριτή τιµή Καµία που αντιστοιχεί στην περίπτωση που ο υποψήφιος δεν παίρνει κάποια µόρια µε βάση τη γνώση ξένης γλώσσας. Empl που είναι πεδίο τιµών που αναπαριστά τους µήνες εµπειρίας σε ακέραιο αριθµό. Στη συγκεκριµένη µεταβλητή, όπως αναφέρεται στην εκφώνηση, τυχόν εµπειρία που ξεπερνά τα 5 έτη δεν λαµβάνεται υπόψη. Έτσι λοιπόν, παρόλο που τιµές που ξεπερνούν τους 60 µήνες δεν θεωρούνται άκυρες, το πρόγραµµα σε αυτή την περίπτωση συµπεριφέρεται µε διαφορετικό τρόπο (προσθέτει 420 µόρια που αντιστοιχούν στους 60 µήνες). ΕΝ ΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ 3

Έτσι λοιπόν, έχουµε τις παρακάτω περιπτώσεις έλεγχου: Μεταβλητή Εισόδου (είδος) Grade (Πεδίο τιµών) PhD (Boolean) MSc (Boolean) Lang (σύνολο τιµών) Empl (Πεδίο τιµών) Κλάσεις Ισοδυναµίας Grade < 5 5 <= Grade <= 10 Grade > 10 PhD = True PhD = False MSc = True MSc = False Lang in Καµία, Καλή, Πολύ καλή, Άριστη Lang not in Καµία, Καλή, Πολύ καλή, Άριστη Empl < 0 0 <= Empl <= 12 12 < Empl <= 24 24 < Empl <= 36 36 < Empl <= 48 48 < Empl <= 60 Empl > 60 Περιπτώσεις Ελέγχου Grade = 3.00 Grade = 8.47 Grade = 12.50 PhD = True PhD = False MSc = True MSc = False Lang = Καλή Lang = Καλύτερη Empl = -10 Empl = 10 Empl = 20 Empl = 30 Empl = 40 Empl = 50 Empl = 70 Για την ανάλυση οριακών τιµών προσθέτουµε τις παρακάτω περιπτώσεις ελέγχου για τις µεταβλητές εισόδου, καθώς και των δύο µεταβλητών εξόδου, της Points που είναι ακέραιος αριθµός (µε το δεδοµένο ότι και ο βαθµός πτυχίου πολλαπλασιάζεται µε το 100 και έχει 2 δεκαδικά) και της Successful_Application που είναι µία Boolean µεταβλητή που καταγράφει αν η αίτηση του υποψηφίου είναι αποδεκτή ή όχι. Θα πρέπει να σηµειωθεί ότι η µεταβλητή Points έχει ως ελάχιστη αποδεκτή τιµή το 500 (που αντιστοιχεί σε έναν υποψήφιο που έχει ως µοναδικό προσόν το πτυχίο µε βαθµό 5) και ως µέγιστη αποδεκτή τιµή το 1940 (που αντιστοιχεί σε βαθµό πτυχίου 10, διδακτορικό και µεταπτυχιακό, άριστη γνώση ξένης γλώσσας και 60 ή και παραπάνω µήνες προϋπηρεσίας). ΕΝ ΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ 4

Μεταβλητή Εισόδου (είδος) Grade (Πεδίο τιµών) PhD (Boolean) MSc (Boolean) Lang (σύνολο τιµών) Empl (Πεδίο τιµών) Κλάσεις Ισοδυναµίας - Περιπτώσεις Ελέγχου Grade < 5 Grade = Ο µικρότερος δυνατός αρνητικός πραγµατικός. Grade = 4.99 5 <= Grade <= 10 Grade = 5.00 Grade = 5.01 Grade = 9.99 Grade = 10.00 Grade > 10 Grade = 10.01 Grade = Ο µεγαλύτερος δυνατός θετικός πραγµατικός. εν έχουµε να προσθέσουµε άλλες περιπτώσεις ελέγχου. εν έχουµε να προσθέσουµε άλλες περιπτώσεις ελέγχου. εν έχουµε να προσθέσουµε άλλες περιπτώσεις ελέγχου. Empl < 0 Empl = Ο µικρότερος δυνατός αρνητικός ακέραιος. Empl = -1 0 <= Empl <= 12 Empl = 0, Empl = 1 Empl = 11, Empl = 12 12 < Empl <= 24 Empl = 13, Empl = 14 Empl = 23, Empl = 24 24 < Empl <= 36 Empl = 25, Empl = 26 Empl = 35, Empl = 36 36 < Empl <= 48 Empl = 37, Empl = 38 Empl = 47, Empl = 48 48 < Empl <= 60 Empl = 49, Empl = 50 Empl = 59, Empl = 60 ΕΝ ΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ 5

Μεταβλητή Εξόδου (είδος) Successful_Application (Boolean) Points (Πεδίο τιµών) Empl > 60 Empl = 61 Empl = Ο µεγαλύτερος δυνατός θετικός ακέραιος. Κλάσεις Ισοδυναµίας - Περιπτώσεις Ελέγχου Successful_Application = True Successful_Application = False Points < 500 (άκυρες τιµές) Points = Ο µικρότερος δυνατός αρνητικός ακέραιος. Points = 499 500 <= Points <= 1940 Points = 500 Points = 501 Points = 1939 Points = 1940 Points > 1940 Points = 1941 Points = Ο µεγαλύτερος δυνατός θετικός ακέραιος. β. Για να σχεδιάσουµε το γράφηµα αιτίου αποτελέσµατος, αρχικά θα εντοπίσουµε τις αιτίες (περιορισµούς στα δεδοµένα εισόδου) και τα αποτελέσµατα (αν η αίτηση γίνεται αποδεκτή ή όχι). Από την εκφώνηση της άσκησης προκύπτουν οι παρακάτω συνθήκες για την αποδοχή ή όχι µίας αίτησης: Σ1 if (PhD = True) ^ (Lang in Πολύ Καλή, Άριστη) then Αίτηση αποδεκτή Σ2 if (Msc = True) ^ (Empl >= 36) ^ (Lang in Πολύ Καλή, Άριστη) then Αίτηση αποδεκτή Σ3 if (Lang not in Πολύ Καλή, Άριστη) then Αίτηση µη αποδεκτή Σ4 if (PhD = False) ^ ( (Msc = False) Empl < 36) ) then Αίτηση µη αποδεκτή Με βάση τις συνθήκες, µπορούµε πλέον να ορίσουµε τα τελικά αίτια και αποτελέσµατα: Αίτια Αποτελέσµατα 1. PhD = True 101. Αίτηση αποδεκτή 2. Msc = True 102. Αίτηση µη αποδεκτή 3. Empl >= 36 4. Lang in Πολύ Καλή, Άριστη ΕΝ ΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ 6

Χρησιµοποιώντας τα αίτια και αποτελέσµατα του παραπάνω πίνακα και τις συνθήκες της εκφώνησης δηµιουργούµε το παρακάτω γράφηµα αιτίου - αποτελέσµατος. 1 2 ~ ^ ^ 11 12 ^ 21 101 ~ 3 102 ~ ~ 4 13 ^ 22 Γράφηµα αιτίου αποτελέσµατος ΕΝ ΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ 7

iii. Έλεγχος διαφανούς κουτιού: Μέθοδος Βασικών Μονοπατιών α. Για να είναι ξεκάθαρο ποιες εντολές του κώδικα αντιστοιχούν σε κάθε κόµβο του γράφου της κυκλωµατικής πολυπλοκότητας, δίνεται παρακάτω ο κώδικας της εκφώνησης µε σηµειωµένη επάνω του την αντίστοιχη αρίθµηση. #include <stdio.h> #include <stdlib.h> #include <string.h> void main() int maxscore,maxid,stud_id,i,stud_ep,stud_master,stud_publ,stud_score,master; float stud_mark; maxscore=749; maxid=0; printf("\ndoste ton ari8mo twn foithtwn: "); scanf("%d",&stud_id); 1 for(i=1;i<=stud_id;i++) 2 printf("\n=================================================\n"); printf("\ndoste ton ari8mo twn systatikwn epistolwn tou %dou foithth: ", i); scanf("%d",&stud_ep); 3 5 if (stud_ep>=2) do printf("\ndoste to va8mo ptyxiou tou %dou foithth: ", i); scanf("%f",&stud_mark); while (stud_mark<5 stud_mark>10); master=0; printf("\ndoste ton ari8mo twn Masters tou %dou foithth: ", i); scanf("%d", &stud_master); 7 if (stud_master>0) master=1; stud_master--; 8 9 printf("\ndoste ton ari8mo twn dhmosieusewn tou %dou foithth: ", i); scanf("%d",&stud_publ); stud_score=100*stud_mark + 100*master + 10*stud_master + 50*stud_publ + 10*stud_ep; printf("\no foithths aksiologh8hke me %d moria\n", stud_score); 4 6 if (stud_score>maxscore) maxscore=stud_score; maxid=i; else printf("\n O foithths aporriptetai\n"); 10 11 12 13 printf("\n=================================================\n"); printf("\n=================================================\n"); printf("\no foithths pou epilegetai einai o %dos me %d moria\n", maxid, maxscore); system("pause"); return; 14 Χρησιµοποιώντας την παραπάνω αρίθµηση εντολών σχεδιάζουµε το γράφο κυκλωµατικής πολυπλοκότητας. ΕΝ ΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ 8

1 1 14 2 2 3 12 13 4 5 4 3 5 6 7 6 9 8 7 10 11 Η κυκλωµατική πολυπλοκότητα του προγράµµατος είναι: V(G) = E N + 2 = 19 14 + 2 = 7. Επίσης, στον παραπάνω γράφο παρουσιάζονται και οι διαφορετικές περιοχές που περικλείονται από ακµές, µαζί µε την εξωτερική περιοχή. Έχουµε συνολικά 7 περιοχές. Τέλος, θα µπορούσαµε να µετρήσουµε τις απλές συνθήκες του προγράµµατος αφού η κυκλωµατική πολυπλοκότητα ισούται µε το πλήθος των συνθηκών αυτών αυξηµένο κατά µία µονάδα. Άρα: V(G) = 6 +1 = 7. β. Τα βασικά µονοπάτια του γραφήµατος είναι τα εξής 7: 1. 1-2-14 2. 1-2-3-12-13-2-14 3. 1-2-3-4-5-6-7-9-11-13-2-14 4. 1-2-3-4-5-4-5-6-7-9-11-13-2-14 5. 1-2-3-4-5-6-4-5-6-7-9-11-13-2-14 6. 1-2-3-4-5-6-7-8-9-11-13-2-14 7. 1-2-3-4-5-6-7-9-10-11-13-2-14 ΕΝ ΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ 9

γ. Παρακάτω δίνονται οι περιπτώσεις ελέγχου (ενδεικτικές τιµές στα δεδοµένα ελέγχου) για τον έλεγχο των βασικών µονοπατιών. Ε ΟΜΕΝΑ ΕΛΕΓΧΟΥ Μονοπάτι 1 : 1-2-14 ίνουµε stud_id=0 (κανένας φοιτητής) Μονοπάτι 2 : 1-2-3-12-13-2-14 ίνουµε stud_id=1 και stud_ep=1 (1 φοιτητής µε λιγότερο από 2 συστατικές επιστολές) Μονοπάτι 3 : 1-2-3-4-5-6-7-9-11-13-2-14 ίνουµε stud_id=1, stud_ep=2, stud_mark=7, stud_master=0, stud_publ=0 Μονοπάτι 4 : 1-2-3-4-5-4-5-6-7-9-11-13-2-14 ίνουµε stud_id=1, stud_ep=2, πρώτα stud_mark=4 και µετά stud_mark=7, stud_master=0, stud_publ=0 Μονοπάτι 5 : 1-2-3-4-5-6-4-5-6-7-9-11-13-2-14 ίνουµε stud_id=1, stud_ep=2, πρώτα stud_mark=11 και µετά stud_mark=7, stud_master=0, stud_publ=0 Μονοπάτι 6 : 1-2-3-4-5-6-7-8-9-11-13-2-14 ίνουµε stud_id=1, stud_ep=2, stud_mark=5, stud_master=1, stud_publ=0 Μονοπάτι 7 : 1-2-3-4-5-6-7-9-10-11-13-2-14 ίνουµε stud_id=1, stud_ep=2, stud_mark=7, stud_master=0, stud_publ=1 ΑΝΑΜΕΝΟΜΕΝΑ ΑΠΟΤΕΛΕΣΜΑΤΑ O foithths aporriptetai O foithths aksiologh8hke me 720 moria O foithths aksiologh8hke me 720 moria O foithths aksiologh8hke me 720 moria O foithths aksiologh8hke me 620 moria O foithths aksiologh8hke me 770 moria O foithths pou epilegetai einai o 1os me 770 moria ΕΝ ΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ 10

iv. Έλεγχος διαφανούς κουτιού: Τεχνική Κάλυψης Συνθηκών Σύµφωνα µε την τεχνική ελέγχου condition coverage, ελέγχουµε τουλάχιστον 2 φορές κάθε υπο-συνθήκη του κώδικα. Πολλές φορές σε τέτοιες σύνθετες εκφράσεις είναι δύσκολο να υπολογίσουµε τον ελάχιστο αριθµό περιπτώσεων ελέγχου αφού πολλές αλληλεπικαλύπτονται. Στην περίπτωσή µας έχουµε: α/α k1==0 k2==0 k3==0 k4==0 k5==0 Περίπτωση ελέγχου (k1,k2,k3,k4,k5) 1 F - - - - (5,0,0,0,0) 2 T F - - - (0,5,0,0,0) 3 T T F F - (0,0,5,5,0) 4 T T F T F (0,0,5,0,5) 5 T T F T T (0,0,5,0,0) 6 T T T - - (0,0,0,5,5) Ας εφαρµόσουµε τη µέθοδο της κυκλωµατικής πολυπλοκότητας του κώδικα. Έχουµε V(g)= 6 (5 λογικές υπο-συνθήκες+1). Άρα µπορούµε να ελέγξουµε τον κώδικα µε το πολύ 6 περιπτώσεις ελέγχου. ΕΝ ΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ 11