Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόµων Τοπογράφων Μηχανικών Εισαγωγή στην πληροφορική Βασίλειος Βεσκούκης ρ. Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών ΕΜΠ v.vescoukis@cs.ntua.gr Η γλώσσα προγραµµατισµού C++ Συναρτήσεις, πίνακες
Εισαγωγή στις συναρτήσεις οµή προγράµµατος Εντολές -> συναρτήσεις -> προγράµµατα Μια υποχρεωτική συνάρτηση που ονοµάζεται main() Οσες συναρτήσεις απαιτούνται, σύµφωνα µε τις ανάγκες του προβλήµατός µας Το main() καλεί άλλες συναρτήσεις Συγγραφή προγράµµατος Πρώτα οι συναρτήσεις και τέλος το κύριο πρόγραµµα (main()) Παραδείγµατα ορισµού συναρτήσεων Είσοδος, επεξεργασία, έξοδος Συχνή χρήση κάποιων υπολογισµών ηµιουργία της δικής µας "βιβλιοθήκης" ΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ main() d readabc() d=findmax() printmax() main() d a,b,c ΤΙΜΗ ΠΟΥ ΕΠΙΣΤΡΕΦΕΙ Η ΣΥΝΑΡΤΗΣΗ d readabc() d=findmax(a,b,c) printmax(d)
Το παράδειγµα 2 µε συναρτήσεις
Παράδειγµα
Συναρτήσεις ήλωση συναρτήσεων στη C++ [τύπος]] [όνοµα](τύπος1 παράµετρος1, τύπος2 παράµετρος2,,...) <εντολές> [τύπος]] ένας από τους τύπους δεδοµένων της C++ ή void [όνοµα] οποιοδήποτε νόµιµο όνοµα της C++ (µη( δεσµευµένη λέξη) [παράµετρος]... τυπικές παράµετροι που περνάνε µέσα στη συνάρτηση Οι συναρτήσεις Επιστρέφουν κάποια τιµή, εκτός αν είναι τύπου void έχονται κάποιες παραµέτρους τις οποίες αναγνωρίζουν ως µεταβλητές µνήµης µέσα στο σώµα τους
Συναρτήσεις Οι παράµετροι µιας συνάρτησης χρησιµοποιούνται από τη συνάρτηση µε τα ονόµατα που αποκτούν µέσα στην παρένθεση του ορισµού της συνάρτησης int maximum(int a, int b) if (a>b) return a; else return b; int main() int k,l,m; cin>>k; cin>>l; m=maximum(k,l); cout<<m;
Συναρτήσεις και παράµετροι #include <iostream> using namespace std; int maximum(int a, int b) if (a>b) return a; else return b; int main() int k,l,m,q,p,r; cin>>k; cin>>l; m=maximum(k,l); cout<<"the max of "<<k<<" and "<<l<<" is "<<m<<"\n"; cin>>q; cin>>p; r=maximum(q,p); cout<<"the max of "<<q<<" and "<<p<<" is "<<r<<"\n";
Συναρτήσεις και παράµετροι int factorial(int x) if (x==0) return 1; else return x*factorial(x-1); int permunations(int x, int y) return factorial(x)/factorial(x-y); int combinations(int x, int y) return factorial(x)/((factorial(y)*factorial(x-y)); int main() int a=5,b=3,c,d=52,e=5,f; cout<<combinations(a,b)<<"\n"; cout<<combinations(d,e)<<"\n";
Πίνακες (arrays) Οι µεταβλητές µνήµης προσφέρουν χώρο αποθήκευσης ατοµικών (απλών) δεδοµένων int a; float x, y, z; char c1, c2, c3; Συνήθως τα δεδοµένα των οποίων κάνουµε την επεξεργασία µε χρήση ΗΥ δεν είναι απλά αλλά πρέπει να οργανωθούν κατάλληλα Παραδείγµατα Τα στοιχεία ταυτότητας των πολιτών Τα δεδοµένα ιατρικών εξετάσεων σε νοσοκοµεία και διαγνωστικά κέντρα Οι εγγραφές και η βαθµολογία των σπουδαστών στο πανεπιστήµιο Οι µετρήσεις της θερµοκρασίας για κάποια χρονική περίοδο Οι πωλήσεις ενός συνόλου προϊόντων σε κάποιες χρονικές στιγµές Τα δεδοµένα αυτά έχουν είτε σύνθετη δοµή, είτε/και διάταξη
Πίνακες Για την παράσταση σύνθετων δεδοµένων, η C++ διαθέτει ένα σύνολο εργαλείων και µηχανισµών, όπως: οµές (structures) Κλάσεις (classes) Απαριθµητούς τύπους (enumerated types) Πίνακες (arrays) Αρχεία (files) Πίνακες Ενας πίνακας είναι µια συλλογή ενός προκαθορισµένου αριθµού στοιχείων, τα οποία είναι όλα του ίδιου τύπου δεδοµένων 10 ακέραιοι 24 πραγµατικοί αριθµοί 25 χαρακτήρες κοκ
Πίνακες Τα στοιχεία ενός πίνακα µπορούν να διατάσσονται σε µία ή περισσότερες ρες διαστάσεις (dimensions)( Μονοδιάστατοι πίνακες ισδιάστατοι πίνακες Τρισδιάστατοι κλπ Μας διευκολύνει να αντιλαµβανόµαστε την οργάνωση των µονοδιάστατων και δισδιάστατων πινάκων σε γραµµές και στήλες Κάθε στοιχείο σε έναν πίνακα διακρίνεται από τα άλλα από τη θέση του 3ο στοιχείο 2η γραµµή 1η στήλη
Πίνακες στη C++ ήλωση πινάκων τύπος ονοµα [µέγεθος διάστασης1] ] [µέγεθος[ διάστασης2] ] [µέγεθος[ διάστασης3]... Παραδείγµατα int exam_grades[120] δηλώνει έναν µονοδιάστατο πίνακα ακεραίων µε όνοµα exam_grades και µέγεθος 120 120 float temperatures[12][31] δηλώνει έναν δισδιάστατο πίνακα ακεραίων µε όνοµα temperatures και µήκος 12x31 31 12
Πίνακες στη C++ Μετά τη δήλωση του πίνακα, κάθε στοιχείο του διακρίνεται από τα υπόλοιπα από τον/τους δείκτες που ακολουθούν το όνοµα του πίνακα int grades[120]; // η δήλωση grades[20]=9; // αναφορά σε στοιχεία grades[21]=4; ΠΡΟΣΟΧΗ!!! Στη C++ η αρίθµηση των στοιχείων ξεκινά από το 0 (µηδέν). Τα στοιχεία ενός πίνακα που δηλώνεται µε µέγεθος n,, αριθµούνται από 0 έως n-1 int grades[120]; // grades[0] -> grades[119] float temp[12][31]; // temp[0][0] -> temp[11][30] 2,8 2,30 0,0 5,3
Παράδειγµα Υπολογισµός µέσης θερµοκρασίας του έτους, όταν δίνονται οι µέσες θερµοκρασίες ες για κάθε µήνα
Παράδειγµα Υπολογισµός µέγιστης θερµοκρασίας του έτους
Παράδειγµα Βελτίωση για την εισαγωγή των θερµοκρασιών και την εύρεση του µήνα στον οποίο προκύπτει η µέγιστη θερµοκρασία