Τεχνολογία Λογισμικού

Σχετικά έγγραφα
Τεχνολογία Λογισμικού

Εισαγωγή στους Αλγορίθμους

Διοικητική Λογιστική

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

Εισαγωγή στους Αλγορίθμους

Λογιστική Κόστους Ενότητα 12: Λογισμός Κόστους (2)

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού σε κατάσταση Κορεσμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Τεχνολογία Λογισμικού

Λογιστική Κόστους Ενότητα 8: Κοστολογική διάρθρωση Κύρια / Βοηθητικά Κέντρα Κόστους.

Μηχανολογικό Σχέδιο Ι

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Δομές Δεδομένων Ενότητα 1

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 3: Έλεγχοι στατιστικών υποθέσεων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 1: Καταχώρηση δεδομένων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 2: Περιγραφική στατιστική

Εισαγωγή στους Αλγορίθμους

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός

Προγραμματισμός Η/Υ. Βασικές Προγραμματιστικές Δομές. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Εκκλησιαστικό Δίκαιο. Ενότητα 10η: Ιερά Σύνοδος της Ιεραρχίας και Διαρκής Ιερά Σύνοδος Κυριάκος Κυριαζόπουλος Τμήμα Νομικής Α.Π.Θ.

Εισαγωγή στους Αλγορίθμους Ενότητα 10η Άσκηση Αλγόριθμος Dijkstra

ΗΛΕΚΤΡΟΝΙΚΗ ΙIΙ Ενότητα 6

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Διοικητική Λογιστική

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Διδακτική της Πληροφορικής

Ιστορία της μετάφρασης

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Βάσεις Περιβαλλοντικών Δεδομένων

Διοίκηση Επιχειρήσεων

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

Τεχνικό Σχέδιο - CAD

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Prim

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού Υπέρθερμου Ατμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Λογιστική Κόστους Ενότητα 11: Λογισμός Κόστους (1)

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

Τεχνικό Σχέδιο - CAD

Μεθοδολογία Έρευνας Κοινωνικών Επιστημών Ενότητα 2: ΣΥΓΚΕΝΤΡΩΣΗ ΠΛΗΡΟΦΟΡΙΩΝ ΜΑΡΚΕΤΙΝΓΚ Λοίζου Ευστράτιος Τμήμα Τεχνολόγων Γεωπόνων-Kατεύθυνση

Γενικά Μαθηματικά Ι. Ενότητα 15: Ολοκληρώματα Με Ρητές Και Τριγωνομετρικές Συναρτήσεις Λουκάς Βλάχος Τμήμα Φυσικής

Τεχνικό Σχέδιο - CAD. Τόξο Κύκλου. Τόξο Κύκλου - Έλλειψη. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Γενικά Μαθηματικά Ι. Ενότητα 12: Κριτήρια Σύγκλισης Σειρών. Λουκάς Βλάχος Τμήμα Φυσικής ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Εκκλησιαστικό Δίκαιο

Εισαγωγή στην Διοίκηση Επιχειρήσεων

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

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Μυελού των Οστών Ενότητα #1: Ερωτήσεις κατανόησης και αυτόαξιολόγησης

Κβαντική Επεξεργασία Πληροφορίας

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Kruskal

Διοίκηση Εξωτερικής Εμπορικής Δραστηριότητας

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

Μηχανολογικό Σχέδιο Ι

Μάρκετινγκ Αγροτικών Προϊόντων

Τεχνολογία Λογισμικού

Εφαρμογές πληροφορικής σε θέματα πολιτικού μηχανικού

Εισαγωγή στους Η/Υ. Ενότητα 2β: Αντίστροφο Πρόβλημα. Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 1

Βέλτιστος Έλεγχος Συστημάτων

Λογιστική Κόστους Ενότητα 10: Ασκήσεις Προτύπου Κόστους Αποκλίσεων.

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

Ενότητα. Εισαγωγή στις βάσεις δεδομένων

Εκκλησιαστικό Δίκαιο

Μηχανολογικό Σχέδιο Ι

Λογιστική Κόστους Ενότητα 11: Λογισμός Κόστους

Θέματα Εφαρμοσμένης. Ενότητα 14.2: Η ψήφος στα πρόσωπα. Θεόδωρος Χατζηπαντελής Τμήμα Πολιτικών Επιστημών ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Διδακτική Πληροφορικής

Διδακτική Πληροφορικής

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

1 η Διάλεξη. Ενδεικτικές λύσεις ασκήσεων

ΗΛΕΚΤΡΟΝΙΚΗ IΙ Ενότητα 3

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Γραμμική Άλγεβρα και Μαθηματικός Λογισμός για Οικονομικά και Επιχειρησιακά Προβλήματα

Οικονομία των ΜΜΕ. Ενότητα 7: Μορφές αγοράς και συγκέντρωση των ΜΜΕ

Ιστορία της μετάφρασης

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

Κβαντική Επεξεργασία Πληροφορίας

Μάρκετινγκ Αγροτικών Προϊόντων

Ενδεικτικές λύσεις ασκήσεων διαχείρισης έργου υπό συνθήκες αβεβαιότητας

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

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

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

ΟΙΚΟΝΟΜΙΚΑ ΜΑΘΗΜΑΤΙΚΑ

Διδακτική Πληροφορικής

ΗΛΕΚΤΡΟΝΙΚΗ IΙ Ενότητα 6

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

Ψηφιακή Επεξεργασία Εικόνων

Εισαγωγή στους Αλγορίθμους Ενότητα 11η Άσκηση - Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων

Μηχανολογικό Σχέδιο Ι

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

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

Έλεγχος και Διασφάλιση Ποιότητας Ενότητα 4: Μελέτη ISO Κουππάρης Μιχαήλ Τμήμα Χημείας Εργαστήριο Αναλυτικής Χημείας

Τεχνολογία Λογισμικού

Διδακτική Πληροφορικής

Διαχείριση Πολιτισμικών Δεδομένων

Λογιστική Κόστους. Ενότητα 4: ΣΥΜΠΕΡΙΦΟΡΑ - ΦΥΣΗ ΚΟΣΤΟΥΣ. Μαυρίδης Δημήτριος Τμήμα Λογιστικής και Χρηματοοικονομικής

Transcript:

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΧΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ενότητα #10: Συγγραφή προγραμμάτων Σταμέλος Ιωάννης

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

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

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΧΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Συγγραφή προγραμμάτων

Περιεχόμενα ενότητας 1. Πρότυπα προγραμματισμού. 2. Κατευθυντήριες γραμμές επαναχρησιμοποίησης. 3. Χρήση σχεδίου για τη διαμόρφωση κώδικα. 4. Εσωτερική και εξωτερική τεκμηρίωση. 5

Πρότυπα και διαδικασίες προγραμματισμού -1- Πρότυπα για εσάς (Fairley 1985). Πρότυπα για τους άλλους. Ταίριασμα σχεδίασης και υλοποίησης.

Πρότυπα και διαδικασίες προγραμματισμού -2- *********************************************** * COMPONENT TO FIND INTERSECTION OF TWO LINES * * COMPONENT NAME: FINDPT * PROGRAMMER: E. ELLIS * VERSION: 1.0 (2 FEBRUARY 2001) * * PROCEDURE INVOCATION: * CALL FINDPT (A1, B1, C1, A2, B2, C2, XS, YS, FLAG) * INPUT PARAMETERS: * INPUT LINES ARE OF THE FORM * A1*X + B1*Y + C1 = 0 AND * A2*X + B2*Y + C2 = 0 * SO INPUT IS COEFFICIENTS A1, B1, C1 AND A2, B2, C2 * OUTPUT PARAMETERS: * IF LINES ARE PARALLEL, FLAG SET TO 1. * ELSE FLAG = 0 AND POINT OF INTERSECTION IS (XS, YS) ***********************************************

Λεπτομερές Τεχνικό Σχέδιο /* First version. Jan 25, 1995 */ /* This software is for scheduling a set of courses offered by the Computer * Science Department - requirements of which are given in the SRS. * The design was done using structured design methodology, and the structure * chart is given elsewhere. This design document specifies the design formally. * It contains all descriptions of the major data structures and the modules * that are needed to implement a solution. */ /******************************************************************* * TYPE AND DATA DEFINITIONS * *******************************************************************/ typedef char courseno[max_courseno_size]; typedef char timeslot[max_timeslot_size]; typedef struct { int room_no; int capacity; } room;

Σχέδιο (συν.): μεταβλητές... FILE *file1,*file2; /* input files */ courseno CourseDB[MAX_COURSES]; /* List of valid courses */ room ClassroomDB[MAX_ROOMS]; /* List of valid classrooms */ timeslot TimeslotDB[MAX_TIMES]; /* List of valid timeslots */ course SchCourses[MAX_COURSES]; /* list of courses to be scheduled */...

Σχέδιο (συν.): συναρτήσεις main(in:file1,file2) char *file1, *file2; { SUBORDINATES : get_validated_input(),schedule(),print_output(); SIZE: 10 } /* This module validates the contents of file1 and file2 and produces... */ get_validated_input(in:fd1,fd2, OUT:TimeslotDB,ClassroomDB,CourseDB,SchCourses) FILE *fd1,*fd2; timeslot *TimeslotDB; room *ClassroomDB; courseno *CourseDB; course *SchCourses; { SUBORDINATES :validate_file1(),validate_file2(),separate_courses(); SIZE: 20 }...

Κατευθυντήριες γραμμές προγραμματισμού Δομές ελέγχου: καθορίζονται από την αρχιτεκτονική και το σχέδιο. Η ροή να είναι από πάνω προς τα κάτω.

Κώδικας με Περίπλοκο Έλεγχο benefit = minimum; if (age < 75) goto A; benefit = maximum; goto C; if (AGE < 65) goto B; if (AGE < 55) goto C; A: if (AGE < 65) goto B; benefit = benefit * 1.5 + bonus; goto C; B: if (age < 55) goto C; benefit = benefit * 1.5; C: next statement

Ευανάγνωστη έκδοση if (age < 55) benefit = minimum; elseif (AGE < 65) benefit = minimum + bonus; elseif (AGE < 75) benefit = minimum * 1.5 + bonus; else benefit = maximum;

Κατευθυντήριες γραμμές προγραμματισμού: υλοποίηση αλγορίθμων Αλγόριθμοι Η ταχύτερη απόδοση κρύβει κάποια προβλήματα: Κόστος συγγραφής ταχύτερου κώδικα. Κόστος ελέγχου του κώδικα. Κόστος κατανόησης του κώδικα από τους χρήστες. Κόστος τροποποίησης κώδικα. Ο χρόνος εκτέλεσης αφορά ένα μικρό μόνο τμήμα του κόστους υλοποίησης.

Κατευθυντήριες γραμμές προγραμματισμού: δομές δεδομένων Η διαχείριση και ο χειρισμός των δεδομένων πρέπει να είναι απλός. Παράδειγμα: Ως είσοδος δίνεται το ποσό του φορολογητέου εισοδήματος: 1. Για τα πρώτα 10.000 ο φόρος είναι 10% 2. 10.000-20000 ο φόρος είναι 12%. 3. 20.000-30000 ο φόρος είναι 15%. 4. 30.000-40000 ο φόρος είναι 18%. 5. > 40.000 ο φόρος είναι 20%.

Δομές δεδομένων: 1η υλοποίηση tax = 0; if(taxable_income == 0) goto EXIT; if(taxable_income > 10000) tax = tax + 1000; else { } tax = tax + 10 * taxable_income; goto EXIT; if(taxable_income > 20000) tax = tax + 1200; else { } tax = tax + 12 * (taxable_income - 10000); goto EXIT; if(taxable_income > 30000) tax = tax + 1500; else { } tax = tax + 15 * (taxable_income - 20000); goto EXIT; if(taxable_income < 40000) { tax = tax + 18 * (taxable_income - 30000); goto EXIT; } else EXIT:; tax = tax + 1800 + 20 * (taxable_income - 40000);

Δομές δεδομένων: 2η υλοποίηση bracket base percent 0 0 10 10.000 1000 12 20.000 2200 15 30.000 3700 18 40.000 5500 20 for(int i-2; level=1; i<=5; i++) if(taxable_income > bracket[i]) level = level + 1; tax = base[level] + percent[level] * (taxable_income bracket[level]);

Κατευθυντήριες γραμμές προγραμματισμού (συν.) Γενικές κατευθυντήριες γραμμές Απομόνωση εισόδου εξόδου. Χρήση ψευδοκώδικα. Αναθεώρηση και επιδιόρθωση, όχι 'patching. Επαναχρησιμοποίηση (γενίκευση, αλλά με μέτρο).

Τεκμηρίωση Εσωτερική τεκμηρίωση. Εξωτερική τεκμηρίωση.

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

Εξωτερική Τεκμηρίωση Εξωτερική τεκμηρίωση Περιγραφή προβλήματος. Περιγραφή αλγορίθμων. Περιγραφή δεδομένων.

Σημείωμα Χρήσης Έργων Τρίτων Όλα τα σχήματα/διαγράμματα έχουν συμπεριληφθεί μετά από κατάλληλη τροποποίηση, από το σύγγραμμα «S. L. Pfleeger (Γ. Σταμέλος), «, Θεωρία και Πράξη», Εκδ. ΚΛΕΙΔΑΡΙΘΜΟΣ, 2012». Fairley R, (1985), Software engineering concepts, McGraw-Hill, ISBN:007066272X, 9780070662728 22

Σημείωμα Αναφοράς Copyright, Σταμέλος Ιωάννης. «. Συγγραφή προγραμμάτων». Έκδοση: 1.0. Θεσσαλονίκη 2014. Διαθέσιμο από τη δικτυακή διεύθυνση: http://eclass.auth.gr/courses/ocrs221/

Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά - Μη Εμπορική Χρήση - Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί. Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο [1] http://creativecommons.org/licenses/by-nc-sa/4.0/

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Τέλος ενότητας Επεξεργασία: <Τέγος Στέργιος > Θεσσαλονίκη, <Χειμερινό Εξάμηνο 2013-2014>

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ Σημειώματα

Διατήρηση Σημειωμάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει: το Σημείωμα Αναφοράς το Σημείωμα Αδειοδότησης τη δήλωση Διατήρησης Σημειωμάτων το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει) μαζί με τους συνοδευόμενους υπερσυνδέσμους.