Εισαγωγή στους Αλγόριθμους και τον Προγραμματισμό 4η Διάλεξη Πίνακες Συναρτήσεις
Πίνακες (1) Μια συλλογή μεμονωμένων τιμών δεδομένων Οι πίνακες είναι διατεταγμένοι τα στοιχεία ενός πίνακα είναι τοποθετημένα με συγκεκριμένη σειρά Οι πίνακες είναι ομοιογενείς όλα τα στοιχεία ενός πίνακα είναι μεταβλητές του ίδιου τύπου
Πίνακες (2) <τύπος> <όνομα_πίνακα>[<μέγεθος>] Το μέγεθος του πίνακα είναι μία σταθερά που μπορεί να οριστεί και με την χρήση της #define Το μέγεθος του πίνακα δεν μπορεί να είναι η τιμή μίας μεταβλητής Οι θέσεις του πίνακα ξεκινάνε από 0 και τελειώνουν στο στοιχείο <μεγεθος> -1 παραδείγματα: int A[10] πίνακας ακεραίων με 10 θέσεις float grades[10] πίνακας από δεκαδικούς 10 θέσεων
Πίνακες (3) 0 1 2 3 4 5 6 7 8 9 Σωστό int table[10]; Σωστό #define N 10 int table[n]; Λάθος int N=10; int table[n];
Ανάθεση Τιμών και χρήση <ονομα_πίνακα>[<θέση>] παραδείγματα pinakas[0] = 5; x = pinakas[3]; Προσοχή: Όταν αναφερόμαστε σε ένα πίνακα δεν γίνεται έλεγχος αν αυτή η θέση υπάρχει παράδειγμα: int pinakas[3]; pinakas[10] = 0; Παρόλου που δεν υπάρχει η θέση 10, το πρόγραμμα θα μεταγλωτιστεί σωστά
Πίνακες Παράδειγμα(1) Το πρόγραμμα θα διαβάζει από τον χρήστη τις θερμοκρασίες για ένα μήνα και θα εμφανίζει την μεγαλύτερη θερμοκρασία. Παρατήρηση: Ο χρήστης δίνει τιμές για τις ημέρες 1 μέχρι 30. Ο πίνακας όμως έχει θέσεις από 0 μέχρι 29.
Πίνακες Παράδειγμα(2) #include <stdio.h> int main(void) { float temperature[30],max; int i; for(i=0; i<30; i++){ printf("dwse thermokrasia gia thn %d hmera: ",i+1); scanf("%f",&(temperature[i]); max = temperature[0]; for(i=1;i<30; i++){ if(temperature[i]>max){ max=temperature[i]; printf("megisth thermokrasia: %f\n",max);
Συναρτήσεις (1) Σύνολο εντολών που έχουν ομαδοποιηθεί και τους έχει αποδοθεί ένα όνομα Κάθε συνάρτηση δέχεται ένα σύνολο ορισμάτων μπορεί να είναι και το κενό σύνολο με τα ορίσματα γίνεται η μεταβίβαση πληροφορίας στην συνάρτηση Επιστροφή τιμής το αποτέλεσμα της συνάρτησης μετα το τέλος των εντολών είναι μόνο μία μεταβλητή
Συναρτήσεις (2) Παραδείγματα: main() printf() printf("hello world\n"); sqrt() y=sqrt(x); pow() y=pow(x,2); y=pow(10,2); y=pow(3,20);
Δήλωση Συναρτήσεων Πρωτότυπο συνάρτησης: <επιστρεφόμενος τυπος> <όνομα συνάρτησης>(<ορίσματα>) Από το προτότυπο της συνάρτησης καταλαβαίνουμε τι ορίσματα δέχεται και τι επιστέφει το όνομα συνήθως, διαλέγουμε να είναι αντιπροσωπευτικό, ΑΛΛΑ δεν είναι υποχρεωτικό <επιστρεφόμενος τύπος>: τι τύπου είναι τα δεδομένα που επιστρέφει η συνάρτηση <όνομα συνάρτησης>: είναι το όνομα της συνάρτησης δεν γίνεται δύο συνάρτήσεις να έχουν το ίδιο όνομα <ορίσματα>: μία λίστα χωρισμένη με κόμματα από τύπο δεδομένων και όνομα μεταβλητής
Παράδειγμα int max(int a1, int a2) Οι συνάρτηση δέχεται δύο ακέραιους ως ορίσματα επιστρέφει έναν ακέραιο το όνομα είναι max μπορούμε να υποθέσουμε οτι θα επιστρέφει το μέγιστο εκ των δύο αριθμών η υπόθεσή μας ΔΕΝ είναι ασφαλής. Πρέπει να δούμε τον κώδικα για να δούμε τι ακριβώς κάνει
Υλοποίηση Συνάρτησης - Παράδειγμα int max(int a1, int a2) { if(a1 > a2){ return a1; else{ return a2; Η επιστροφή τιμής γίνεται με την εντολή return Όταν συναντήσουμε return η συνάρτηση ολοκληρώνεται και δεν προχωράει στην επόμενη εντολή
Υλοποίηση Συνάρτησης - Παράδειγμα int max(int a1, int a2) { if(a1 > a2){ return a1; return a2; Η συνάρτηση δουλεύει σωστά και επιστρέφει το μέγιστο εκ των a1,a2 Αν εκτελεστεί η εντολή return a1, τότε δεν θα προχωρήσει παρακάτω η συνάρτηση
Πέρασμα Παραμέτρων Οι συναρτήσεις δεν μπορούν να αλλάξουν τις τιμές των μεταβλήτων που δέχονται ως ορίσματα Όμως μπορούν να αλλάξουν τις τιμές ενός πίνακα Ερώτηση: Πως μπορεί η scanf() και αλλάζει την τιμή μίας μεταβλητής; Χρησιμοποιείται ο χαρακτήρας &, όπου περνάει η διεύθυνση μίας μεταβλήτης. Δεν αποτελεί ύλη του συγκεκριμένου μαθήματος
Παραδείγμα 1 int fun(int x) { χ++; return (x); int main(void) { int a=2, b; b=fun(a); printf("a: %d - b%d\n",a,b); Το παραπάνω πρόγραμμα θα εκτυπώσει a: 2 - b:3
Παράδειγμα 2 int fun(int X[3]) { int i; for(i=0; i<3; i++) X[i]++; int main(void) { int A[3],i; for(i=0; i<3; i++){ A[i]=0; fun(a); for(i=0;i<3;i++){ printf("%d ",A[i]); Το παραπάνω πρόγραμμα θα εκτυπώσει: 1 1 1