Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 9 Συναρτήσεις Γεώργιος Λαμπρινίδης lamprinidis@pharm.uoa.gr
Ασκήσεις Προηγούμενου Εργαστηρίου
#include <stdio.h> main() { int i, flag, temp, a[5]; for (i=0;i<5;i++) { printf("dwse ton mistho tou %dou ergati\n",i+1); scanf("%d",&a[i]); do { flag=0; for(i=0;i<4;i++) { if(a[i]<a[i+1]) { temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; flag=1; while (flag==1); for (i=0;i<5;i++) { printf("o misthos tou %dou ergati einai %d\n",+1,a[i]);
#include <stdio.h> main() { int flag=0,a[10]={7,4,5,9,10,5,8,2,10,9,i,query; printf("dwse ton batho poy theleis na anazitisw\n"); scanf("%d",&query); for(i=0;i<10;i++) { if(a[i]==query) { printf("o %dos foititis exei batho %d\n",i+1,query); flag=1; if (flag==0) { printf("den Brethike pouthena o bathos %d\n",query);
Πινακες Δυο Διαστάσεων Με τη δήλωση char myarray[3][7]; ορίζουμε ένα διδιαστατο πίνακα χαρακτήρων με όνομα myarray με 3 γραμμές και 7 στήλες. 0 1 2 0 1 2 3 4 5 6
Πινακες Δυο Διαστάσεων Δηλώσεις τιμών: myarrary[0][0]= A myarray[2][3]= B 0 1 2 3 4 5 6 0 Α 1 2 Β
Παράδειγμα #include <stdio.h> main() { int a[6][10],i,j; for (i=0;i<6;i++) { for (j=0;j<10;j++) { a[i][j]=i*(5-i)+j*(9-j); for (i=0;i<6;i++) { for (j=0;j<10;j++) { printf("%d\t",a[i][j]); printf("\n");
Συναρτήσεις- Ορισμός l Μία συνάρτηση C είναι ένα αυτόνομο, πακεταρισμένο τμήμα προγράμματος που ϕέρει σε πέρας μία διαδικασία η οποία έχει σαϕείς προδιαγραϕές εισόδου και εξόδου και συγκεκριμένο όνομα. l Συνήθως, κωδικοποιούμε σε μία συνάρτηση έναν αλγόριθμο που πρόκειται να χρησιμοποιήσουμε στο πρόγραμμά μας αρκετές ϕορές ή εκτιμούμε ότι είναι γενικότερης χρησιμότητας και θα μπορούσε να ϕανεί χρήσιμος και σε προγράμματα που θα γράψουμε στο μέλλον.
Περισσότερες πληροφορίες l l Σε γενικές γραμμές, είναι καλή πρακτική να γράϕουμε προγράμματα C που αποτελούνται από πολλές και μικρές συναρτήσεις, παρά από λίγες και μεγάλες. Ακριβώς μία από τις συναρτήσεις ενός προγράμματος C πρέπει να έχει το όνομα main. Είναι η συνάρτηση από την οποία θα ξεκινήσει η εκτέλεση του προγράμματος.
Τυπικός Ορισμός Συνάρτησης l τύπος όνομα ( τυπικές παράμετροι ) { δηλώσεις και εντολές
Επεξήγηση Ορισμού (1) l l Για τον ορισμό κάθε συνάρτησης, δηλώνουμε το όνομα που έχει και, μέσα σε παρενθέσεις, τα ονόματα και τους τύπους που έχουν οι, λεγόμενες, τυπικές παράμετροι, εϕ όσον υπάρχουν. Οι τυπικές παράμετροι μίας συνάρτησης είναι μεταβλητές, στις οποίες δίνονται συγκεκριμένες τιμές κατά την κλήση της συνάρτησης και οι οποίες χρησιμοποιούνται μέσα στο σώμα της συνάρτησης ( δηλώσεις και εντολές ) για να επιτευχθεί ο στόχος της συνάρτησης.
Επεξήγηση Ορισμού (2) l Το σώμα μίας συνάρτησης περικλείεται μέσα σε { και. l Μία συνάρτηση μπορεί να επιστρέψει κάποια τιμή στο όνομά της, η οποία να χρησιμοποιηθεί από την συνάρτηση που την κάλεσε. Ο τύπος της τιμής που επιστρέϕει μία συνάρτηση δίνεται μπροστά από το όνομά της, στον ορισμό της. l Αν δεν ορίζεται τύπος επιστροϕής για μία συνάρτηση, θεωρείται ότι επιστρέϕει int.
Περισσότερες πληροφορίες (1) l Αν δεν ενδιαϕερόμαστε να επιστρέψει μία συνάρτηση κάποια τιμή, πρέπει να ορίζουμε ότι επιστρέϕει void, τον «κενό» τύπο. Ακόμα και αν έχουμε ορίσει μία συνάρτηση να επιστρέϕει κάποιο τύπο, όχι void, δεν είναι τελικά υποχρεωτικό να το κάνει, και αν το κάνει, δεν είναι υποχρεωτικό για την καλούσα συνάρτηση να χρησιμοποιήσει την επιστρεϕόμενη τιμή.
Περισσότερες πληροφορίες (2) l Η επιστροϕή τιμής από συνάρτηση γίνεται με την εντολή return παράσταση. Υπολογίζεται η τιμή που έχει η παράσταση, επιστρέϕεται και η συνάρτηση τερματίζει. Με μία απλή εντολή return τερματίζει χωρίς να επιστραϕεί κάποια τιμή
Περισσότερες πληροφορίες (3) l Ο μεταγλωττιστής απαιτεί πριν την κλήση μίας συνάρτησης να γνωρίζει τους τύπους των τυπικών παραμέτρων της και τον τύπο της επιστρεϕόμενης τιμής. Συνεπώς, ή πρέπει να προηγείται ο ορισμός μίας συνάρτησης από την κλήση της, ή, αν έπεται, να έχει προηγηθεί απλώς μία προαναγγελία της συνάρτησης (τύπος επιστρεϕόμενης τιμής, όνομα και τύποι τυπικών παραμέτρων), το λεγόμενο πρωτότυπο της συνάρτησης
Μια απλή συνάρτηση (1) void testfunc{on1() { prin ("Ektypwsi mesa s{ synar{si!!\n"); Όνομα συνάρτησης: testfunc{on1 Παράμετροι εισόδου: τίποτα (κενό) Παράμετρος εξόδου: void (δηλαδή η συνάρτηση δεν επιστρέφει τίποτα)
Μια απλή συνάρτηση (2) int testfunc{on2(int parametroseisodou) { return 0; Όνομα συνάρτησης: testfunc{on2 Παράμετροι εισόδου: μία ακέραια μεταβλητή με όνομα parametroseisodou Παράμετρος εξόδου: ένας ακέραιος int (δηλαδή η συνάρτηση επιστρέφει έναν ακέραιο στην προκειμένη περίπτωση επιστρέφει πάντα το 0)
Μια απλή συνάρτηση (3) int testfunc{on3(int parametroseisodou1, int parametroseisodou2) { return 0; Όνομα συνάρτησης: testfunc{on3 Παράμετροι εισόδου: δύο ακέραιες μεταβλητές με ονόματα parametroseisodou1, parametroseisodou2 Παράμετρος εξόδου: ένας ακέραιος int (δηλαδή η συνάρτηση επιστρέφει έναν ακέραιο στην προκειμένη περίπτωση επιστρέφει πάντα το 0)
Μια απλή συνάρτηση (4) int testfunc{on4(int parametroseisodou1, int parametroseisodou2) { prin ("Ektypwsi mesa s{ synar{si!!\n"); prin ("parametroseisodou1 = %d\n", parametroseisodou1); prin ("parametroseisodou2 = %d\n", parametroseisodou2); return 0; Όνομα συνάρτησης: testfunc{on3 Παράμετροι εισόδου: δύο ακέραιες μεταβλητές με ονόματα parametroseisodou1, parametroseisodou2 Παράμετρος εξόδου: ένας ακέραιος int (δηλαδή η συνάρτηση επιστρέφει έναν ακέραιο στην προκειμένη περίπτωση επιστρέφει πάντα το 0)
Ένα απλό παράδειγμα με συνάρτηση #include <stdio.h> void testfunc{on(){ prin ("Ektypwsi mesa s{ synar{si!!\n"); main(){ prin ("1.Ektypwsi mesa s{ main!!\n"); testfunc{on(); prin ("2.Ektypwsi mesa s{ main!!\n");
Άλλο ένα απλό παράδειγμα με συνάρτηση #include <stdio.h> int testfunc{on(int parametroseisodou1, int parametroseisodou2){ prin ("Ektypwsi mesa s{ synar{si!!\n"); prin ("parametroseisodou1 = %d\n", parametroseisodou1); prin ("parametroseisodou2 = %d\n", parametroseisodou2); return 0; main(){ prin ("1.Ektypwsi mesa s{ main!!\n"); testfunc{on(1,2); prin ("2.Ektypwsi mesa s{ main!!\n");
Άλλο ένα απλό παράδειγμα με συνάρτηση #include <stdio.h> int testfunction(int parametroseisodou1, int parametroseisodou2){ int epistrefomenitimi; printf("ektypwsi mesa sti synartisi!!\n"); printf("parametroseisodou1 = %d\n", parametroseisodou1); printf("parametroseisodou2 = %d\n", parametroseisodou2); epistrefomenitimi = parametroseisodou1 + parametroseisodou2; printf("h epistrefomeni timi einai %d\n", epistrefomenitimi); return epistrefomenitimi; main(){ int epistrofi; printf("1.ektypwsi mesa sti main!!\n"); epistrofi = testfunction(3,6); printf("2.ektypwsi mesa sti main!!\n"); printf("h epistrefomeni timi meta tin klisi tis synartisis einai %d\n", epistrofi);
Υπολογισμός Εμβαδού Τριγώνου όταν γνωρίζουμε το μήκος των πλευρών Τύπος του Ήρωνα όπου
#include <stdio.h> #include <math.h> /* Ορισµός Συνάρτησης iron */ double iron (int a, int b, int c) { double s,e; double E; s=(double)(a+b+c)/2; e=s*(s-a)*(s-b)*(s-c); E=sqrt(e); return E; main() { int a,b,c; double E; printf("dwse tis pleures trigwnou a,b,c\n"); scanf("%d",&a); scanf("%d",&b); scanf("%d",&c); E=iron(a,b,c); printf("to Embado einai %lf\n",e);
Υπολογισμός Μοριακού Βάρους και Βαθμού Ακορεστότητας Β.Α. = Η κορ Η πραγµ 2 Β.Α. = 2ν C + 2 +ν N ν Η ν χ 2 B.A (F) = νc (νη + νχ νν)/2 + 1
#include <stdio.h> int MB (int C, int H, int N, int O, int S) { int mw; mw=12*c+1*h+14*n+16*o+32*s; return mw; int BA (int C, int H, int N) { int ba; ba=c-((h-n)/2)+1; return ba; main() { int C,H,N,O,S,mw,ba; printf("ypologismos Moriakoy Barous kai Bathou akorestotitas\n"); printf("dwse Moriako Typo Enwsis CxHyNzOiSj\n"); printf("dwse arithmo atomwn C\n"); scanf("%d",&c); printf("dwse arithmo atomwn H\n"); scanf("%d",&h); printf("dwse arithmo atomwn N\n"); scanf("%d",&n); printf("dwse arithmo atomwn O\n"); scanf("%d",&o); printf("dwse arithmo atomwn S\n"); scanf("%d",&s); mw=mb(c,h,n,o,s); ba=ba(c,h,n); printf("to moriako baros tis enwsis einai %d\n",mw); printf("o Bathmos Akorestotitas tis enwsis einai %d\n",ba);
Ασκήσεις l Να γραφεί συνάρτηση που θα εµφανίζει το µήνυµα Hello World!. l Να γραφεί συνάρτηση που θα δέχεται σαν παραµέτρους δύο ακέραιες µεταβλητές και θα εµφανίζει την µεγαλύτερη. l Να γραφεί συνάρτηση που θα επιστρέφει το άθροισµα δύο πραγµατικών αριθµών. Οι αριθµοί θα περνούν ως παράµετροι στη συνάρτηση.