Προγραμματισμός Ηλεκτρονικών Υπολογιστών 2 - Εργαστήριο Ενότητα 3: Αρχεία script- Αρχεία συναρτήσεων Διδάσκουσα: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών ΤΕ
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο TEI Δυτικής Μακεδονίας και στην Ανώτατη Εκκλησιαστική Ακαδημία Θεσσαλονίκης» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3
Σκοποί ενότητας Να κατανοήσει ο φοιτητής τα αρχεία script και τα αρχεία συναρτήσεων στο MatLab. 4
Περιεχόμενα Μ-Files. Αρχεία Εντολών. Δημιουργία Αρχείων εντολών και Συναρτήσεων (functions). Εντολές Αρχείων. Εκτέλεση Αρχείου. Αρχεία Συναρτήσεων-Εκτέλεση Αρχείου Συναρτήσεων. 5
M-FILES_1 Εκτός από την εκτέλεση εντολών και την κλήση ενσωματωμένων συναρτήσεων μέσω του παραθύρου εντολών της, η MATLAB παρέχει τη δυνατότητα κλήσης συναρτήσεων και αρχείων εντολών που δημιουργούνται από το χρήστη. 6
M-FILES_2 Οι συναρτήσεις (functions) και τα αρχεία εντολών (scripts) είναι αρχεία κειμένου τα οποία περιέχουν κώδικα MATLAB και χαρακτηρίζονται ως m-files, καθώς τα ονόματα τους έχουν την κατάληξη.m. Τα m-files είναι ειδικά αρχεία τα οποία περιέχουν εντολές και διακρίνονται σε αρχεία εντολών και αρχεία συναρτήσεων. 7
Αρχεία Εντολών_1 Τα Αρχεία script ή αρχεία εντολών αποτελούν ένα σύνολο από εντολές του MATLAB και εκτελούνται μέσα από το παράθυρο εντολών πληκτρολογώντας το όνομα του αρχείου. Βασική προϋπόθεση για την εκτέλεσή τους είναι να περιέχονται στον τρέχοντα φάκελο (current directory). 8
Αρχεία Εντολών_2 Τα Αρχεία script ή αρχεία εντολών είναι χρήσιμα για την εισαγωγή δεδομένων (π.χ. μεγάλων πινάκων) και όταν ο χρήστης πρέπει να επαναλάβει μια ροή εντολών και πράξεων πολλές φορές για διαφορετικές τιμές. 9
Αρχεία Εντολών_3 Ένα αρχείο εντολών δεν δέχεται ως ορίσματα ούτε μεταβλητές εισόδου ούτε μεταβλητές εξόδου. Οι μεταβλητές ενός αρχείου εντολών μετά την εκτέλεσή τους αποθηκεύονται στο χώρο εργασίας και είναι διαθέσιμες είτε σε άλλα αρχεία εντολών είτε σε απλές εντολές που δίδονται από το command window. 10
Δημιουργία αρχείων εντολών & συναρτήσεων Τα αρχεία εντολών ή των συναρτήσεων δημιουργούνται με κάποιο συντάκτη (editor) όπως notepad ή wordpad ή με το συντάκτη της MATLAB. Για να ανοίξουμε τον editor της MATLAB >> edit. 11
Ονομασία αρχείων Ίδιοι κανόνες με τις μεταβλητές: Το όνομα αρχίζει από γράμμα (αγγλικό αλφάβητο). Περιέχει γράμματα, αριθμούς και υποπαύλες. Δεν χρησιμοποιούνται ονόματα που έχουν δεσμευθεί από τη MATLAB. Δεν υπάρχει περιορισμός στο μήκος, αλλά χρησιμοποιούνται μικρά ονόματα. 12
Εντολές αρχείων_1 Εικόνα 1: Εντολές Αρχείων 1. Πηγή: Διδάσκουσα (2015). 13
Εντολές αρχείων_2 Εικόνα 2: Εντολές Αρχείων 2. Πηγή: Διδάσκουσα (2015). 14
Τα Αρχεία script Τα Αρχεία script ή αρχεία εντολών περιέχουν εντολές οι οποίες εκτελούνται όταν γράψουμε το όνομα του αρχείου στο command window. 15
1ο Παράδειγμα_1 Το πρόγραμμα υπολογίζει την περίμετρο και το εμβαδόν τριγώνου από τις πλευρές του disp('το πρόγραμμα υπολογίζει την περίμετρο και το εμβαδόν τριγώνου από τις πλευρές του') a=input('δώσε την πλευρά a'); b=input('δώσε την πλευρά b'); c=input('δώσε την πλευρά c'); per=a+b+c; 16
1ο Παράδειγμα_2 disp('η περίμετρος είναι:') disp(per) t=per/2; embadon=(t*(t-a)*(t-b)*(t-c))^(1/2); disp('το εμβαδον είναι:') disp(embadon) 17
Εκτέλεση Αρχείου Θα εκτελεστεί το παραπάνω πρόγραμμα γράφοντας το όνομα του αρχείου στο command window. >> embadon_trigonou 18
fprintf Η εντολή disp εμφανίζει κείμενο ή την τιμή της μεταβλητής που θέλουμε. disp(a) %εμφανίζει την τιμή της μεταβλητής a. disp( ΤΕΙ ΚΟΖΑΝΗΣ ) % εμφανίζει το μήνυμα που είναι μέσα στα μονά εισαγωγικά. Η fprintf εμφανίζει μήνυμα μαζί με τιμές μεταβλητών. fprintf( αλφαρ. μορφοποίησης,μεταβλητές); 19
Ειδικοί χαρακτήρες για fprintf Εικόνα 3: Ειδικοί χαρακτήρες για fprintf. Πηγή: Διδάσκουσα (2015). 20
2 ο Παράδειγμα Ζητείται από το χρήστη η θερμοκρασία σε βαθμούς κελσίου και μετατρέπεται σε Φάρεναϊτ. %Μετατροπή θερμοκρασίας. C=input( ΔΩΣΕ ΒΑΘΜΟΥΣ ΚΕΛΣΙΟΥ '); F=9*C/5+32; fprintf( Οι %f βαθμοί κελσίου αντιστοιχούν σε %f φαρενάιτ, C,F). % τέλος προγράμματος. 21
Αρχεία συναρτήσεων_1 Οι συναρτήσεις αποθηκεύονται σε ξεχωριστά αρχεία και μπορούν να κληθούν για εκτέλεση από το κυρίως πρόγραμμα το οποίο είναι τύπου script. H επικοινωνία με το πρόγραμμα γίνεται μέσω ορισμάτων, τα οποία περιέχουν μεταβλητές εισόδου και εξόδου. 22
Αρχεία συναρτήσεων_2 Στα Αρχεία συναρτήσεων οι μεταβλητές είναι τοπικά ορισμένες και όχι όπως στα αρχεία κειμένου όπου οι μεταβλητές είναι καθολικής εμβέλειας. Οι μεταβλητές αποθηκεύονται εσωτερικά και δεν είναι διαθέσιμες στο χώρο εργασίας. 23
Αρχεία συναρτήσεων_3 Τα Αρχεία συναρτήσεων περιέχουν ακολουθία εντολών εισόδου με την οποία υπολογίζονται οι νέες μεταβλητές εξόδου. Δεν «τρέχουν» από μόνα τους, αλλά καλούνται με το όνομά τους από άλλα προγράμματα ή από το command window. 24
Αρχεία συναρτήσεων_4 Η δομή τους είναι: function [output 1, output 2,..] =filename (input1, input2,..) Το filename είναι το όνομα του αρχείου συνάρτησης με το οποίο αποθηκεύεται στο m-file με το όνομα filename.m. Οι μεταβλητές εισόδου είναι σε παρενθέσεις και εξόδου σε αγκύλες. 25
Αρχεία συναρτήσεων_5 Σχόλια Είναι προαιρετικά. Εντολές Ακολουθία εντολών με την οποία υπολογίζονται οι μεταβλητές εξόδου. function a=sind(b) Έχουμε ένα όρισμα εισόδου a ένα εξόδου b. function name=area(a,b,c) τρια ορίσματα εισόδου (a,b,c) ένα εξόδου (name). function [a,b]=motion(v,angle) δυο ορίσματα εισόδου (v,angle) και δυο εξόδου (a,b). 26
Διαφορές scripts files και functions files Tα scripts files δε δέχονται ορίσματα εισόδου και εξόδου, ενώ τα functions files δέχονται. 27
3 ο Παράδειγμα Το παρακάτω αρχείο συνάρτησης υπολογίζει το άθροισμα και το γινόμενο τριών αριθμών. function [ath, gin] =athgin(a, b, c) % όνομα συνάρτησης : athgin % όνομα m-file : athgin.m % μεταβλητές εισόδου a, b, c % μεταβλητές εξόδου ath, gin ath=a+b+c; gin=a*b*c; 28
Εκτέλεση του αρχείου συνάρτησης_1 Για να καλέσουμε το παραπάνω αρχείο θα γράψουμε στο command window: >> [s,p] = athgin(1, -3, 4) s = p = 2-12 29
4 ο Παράδειγμα Να δημιουργηθεί ένα αρχείο συνάρτησης που υπολογίζει το μέσο όρο τριών αριθμών. function [x] = mesos( a,b,c )% mesos το όνομα με το οποίο θα αποθηκεύσουμε το αρχείο x=(a+b+c)/3; end 30
Εκτέλεση του αρχείου συνάρτησης_2 Για να καλέσουμε το παραπάνω αρχείο θα γράψουμε στο command window: >> [z]=mesos(2,4,6) z = 4 31
Τέλος Ενότητας
Σημείωμα Αναφοράς Copyright ΤΕΙ Δυτικής Μακεδονίας, Τσαγκαλίδου Ροδή. «Προγραμματισμός Ηλεκτρονικών Υπολογιστών 2 - Εργαστήριο». Έκδοση: 1.0. Κοζάνη 2015. Διαθέσιμο από τη δικτυακή διεύθυνση: URL. 33
Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] http://creativecommons.org/licenses/by-nc-sa/4.0/ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο. που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο. που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο. Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί. 34
Διατήρηση Σημειωμάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει: το Σημείωμα Αναφοράς. το Σημείωμα Αδειοδότησης. τη δήλωση Διατήρησης Σημειωμάτων. το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει). μαζί με τους συνοδευόμενους υπερσυνδέσμους. 35