Η βασική συνάρτηση προγράμματος main()

Σχετικά έγγραφα
Ηβασικήσυνάρτηση προγράμματος main()

Ηβασικήσυνάρτηση προγράμματος main()

Προγραμματισμός Ι (ΗΥ120)

Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 9.8

Η γλώσσα προγραμματισμού C

Εισαγωγή στον Προγραμματισμό

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

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή

Η γλώσσα προγραμματισμού C

Προγραμματισμός Η/Υ (ΤΛ2007 )

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Εξοικ Εξ ε οικ ίωση ε με το το πρόγ ραμμα πρόγ DEV C++ Επικοι Επικ νωνία οι Χρήσ Χρήστη τη Υπολ Υπο ογισ λ τή

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12)

Κεφάλαιο 6: Συναρτήσεις IΙΙ Αρθρωτός Προγραμματισμός. Δείκτες (Διάλεξη 14)

Απλά Προγράμματα. Βήματα: 1. Καθορισμός παράστασης δεδομένων στη μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων

Προγραμματισμός Η/Υ (ΤΛ2007 )

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

Δομημένος Προγραμματισμός (ΤΛ1006)

Κεφάλαιο 6: Συναρτήσεις IΙΙ Αρθρωτός Προγραμματισμός. (Διάλεξη 14) Παράδειγμα: Αλλαγή τιμής μεταβλητής μόνο τοπικά

Κεφάλαιο , 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

ΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β

Δομημένος Προγραμματισμός

Διαδικασία Ανάπτυξης Λογισμικού

Μεθόδων Επίλυσης Προβλημάτων

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

Εισαγωγή στον Προγραμματισμό

ΣΥΝΑΡΤΗΣΕΙΣ (Functions)

Συναρτήσεις και διαδικασίες

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 2 η

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Βήματα: μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων. Δομές Δεδομένων + Αλγόριθμοι = Προγράμματα

Προγραμματισμό για ΗΜΥ

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

ΣΧΕΔΙΑΣΗ ΚΑΙ ΥΛΟΠΟΙΗΣΗ ΛΟΓΙΣΜΙΚΟΥ

ΑΡ Χ Ε Ι Α Κ Ε Ι Μ Ε Ν Ο Υ (text files)

Ανάπτυξη και Σχεδίαση Λογισμικού

ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ. for (παράσταση_1; παράσταση_2; παράσταση_3) εντολή επόμενη εντολή

Σε γενικές γραμμές, είναι καλή πρακτική να γράϕουμε προγράμματα C που αποτελούνται από πολλές και μικρές συναρτήσεις, παρά από λίγες και μεγάλες.

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008

12. Συναρτήσεις (Μέρος ΙI)

Ανάπτυξη και Σχεδίαση Λογισμικού

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (Programming in the large)

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

Η γλώσσα προγραμματισμού C

Ανάπτυξη και Σχεδίαση Λογισμικού

Συναρτήσεις. Εισαγωγή

ΕΡΓΑΣΤΗΡΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Τµήµα Πληροφορικής και Τηλεπικοινωνιών

Εντολές Επανάληψης. int sum = 0, i=1; sum += i++ ; sum += i++ ; Η πράξη αυτή θα πρέπει να επαναληφθεί Ν φορές!

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

Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις. Επανάληψη για την ενδιάμεση εξέταση. (Διάλεξη 13)

Διαδικασιακός Προγραμματισμός

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

Μεθόδων Επίλυσης Προβλημάτων

Προγραμματισμός Η/Υ (ΤΛ2007 )

Εισαγωγή στον Προγραμματισμό

Δομημένος Προγραμματισμός

Εργαστήριο 1: Επανάληψη Βασικών Εννοιών στη Γλώσσα C

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Προγραμματισμός Η/Υ. Ενότητα 7: Συναρτήσεις

Προγραμματισμός Ι. Συναρτήσεις. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 3 η : Επίλυση Προβληµάτων Χειµερινό Εξάµηνο 2011

Προγραµµατιστικές Τεχνικές

Εισαγωγή στον δομημένο προγραμματισμό

Διάλεξη 11η: Δείκτες, μέρος 1

Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 9.8

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

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

Διαδικασιακός Προγραμματισμός

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

Προγραμματισμός Ι (ΗΥ120)

Κεφάλαιο 3.1, : Συναρτήσεις I. (Διάλεξη 11)

Α Β Γ static; printf("%c\n", putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf("*");

Εισαγωγή στην γλώσσα προγραμματισμού C

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

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( )

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι είναι ; Συναρτήσεις. Παράδειγμα #1. double convert ( double cm ) { double inch;

Ενδεικτική περιγραφή μαθήματος

scanf() scanf() stdin scanf() printf() int float double %lf float

Κεφάλαιο : Επαναλήψεις (oι βρόγχοιfor, do-while) (Διάλεξη 10) Εντολές Επανάληψης που θα καλυφθούν σήμερα

7. ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΣΥΝΑΡΤΗΣΕΙΣ

Εισαγωγή στον Προγραμματισμό με C++

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. (Διάλεξη 15)

Κεφάλαιο 8.7. Πίνακες & Συναρτήσεις ( ιάλεξη 17) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

Εισαγωγή στον δομημένο προγραμματισμό

ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ

Δομημένος Προγραμματισμός

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

ΑΣΚΗΣΗ 6: ΔΕΙΚΤΕΣ. Σκοπός της Άσκησης. 1. Εισαγωγικά στοιχεία για τους Δείκτες

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Transcript:

Η βασική συνάρτηση προγράμματος main() HEADER FILES main(){ ΔΗΛΩΣΕΙΣ ΜΕΤΑΒΛΗΤΩΝ ΕΝΤΟΛΕΣ (σειριακές, επιλογής ή επανάληψης) ΕΠΙΣΤΡΕΦΟΜΕΝΟΣ ΤΥΠΟΣ (return 0;)

Συναρτήσεις Η συνάρτηση είναι ένα υποπρόγραμμα που εκτελεί συγκεκριμένες λειτουργίες και ανάλογα με τα δεδομένα εισόδου (παράμετροι συνάρτησης) υπολογίζει τα δεδομένα εξόδου (επιστρεφόμενος τύπος). Δεδομένα Εισόδου ΣΥΝΑΡΤΗΣΗ Δεδομένα Eξόδου Πχ η τριγωνομετρική συνάρτηση sin(x), υπολογίζει το ημίτονο της γωνίας x.

Δήλωση Συνάρτησης (Επικεφαλίδα) Τύπος Δεδομένων ΌνομαΣυνάρτησης ( Παράμετροι ); Αν δεν επιστρέφεται τίποτα: void Αν δεν υπάρχουν: void Αν υπάρχουν λίστα τυπικών παραμέτρων: Τύπος1 μεταβλ1,..,τύποςν μεταβλν Παράδειγμα: int CalculateSum( int a, int b );

Υλοποίηση Συνάρτησης Τύπος Δεδομένων ΌνομαΣυνάρτησης ( Παράμετροι ) { Δηλώσεις μεταβλητών Εντολές Επιστροφή τύπου δεδομένων (όταν υπάρχει)

Κλήση Συνάρτησης ΌνομαΣυνάρτησης( Λίστα Πραγματικών Παραμέτρων ); Αν δεν υπάρχουν, κενό Πχ. Function1(); Αν υπάρχουν, λίστα μεταβλητών ή αριθμητικών τιμών, διαχωρισμένες με κόμμα Πχ. Function1(12,4,a,b);

Κλήση H ροή ελέγχου του προγράμματος είναι σειριακή και εκτελούνται οι εντολές και συναρτήσεις της main. Όταν κληθεί μια συνάρτηση ο έλεγχος του προγράμματος μεταφέρεται στην καλούμενη συνάρτηση. Κάθε συνάρτηση μπορεί να καλέσει και άλλες συναρτήσεις. (Δεν μπορεί να καλέσει τη main.)

Συναρτήσεις Δομή προγράμματος Όλες οι συναρτήσεις πρέπει να δηλωθούν Η δήλωση γίνεται πάντα πριν τη main. Η υλοποίηση μπορεί να γίνει ταυτόχρονα με τη δήλωση, ή ξεχωριστά πριν ή μετά τη main.

Συναρτήσεις Δομή προγράμματος 1 HEADER FILES ΔΗΛΩΣΗ ΚΑΙ ΥΛΟΠΟΙΗΣΗ ΣΥΝΑΡΤΗΣΗΣ main(){ Δηλώσεις Μεταβλητών ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΗΣ Σώμα εντολών return 0;

Παράδειγμα 1 Δήλωση μαζί με #include <stdio.h> #include <stdlib.h> υλοποίηση void ektyposi_epilogwn( void ) { printf( 1. Method 1\n ); printf( 2. Method 2\n ); printf( 3. Method 3\n );

Παράδειγμα 1 - Κλήση main(){ ektyposi_epilogwn(); system( pause ); return 0;

Συναρτήσεις Δομή προγράμματος HEADER FILES ΔΗΛΩΣΗ ΣΥΝΑΡΤΗΣΗΣ main(){ Δηλώσεις Μεταβλητών 2 ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΗΣ Σώμα εντολών return 0; ΥΛΟΠΟΙΗΣΗ ΣΥΝΑΡΤΗΣΗΣ

Παράδειγμα 2 Δήλωση #include <stdio.h> #include <stdlib.h> void ektyposi_epilogwn( void ) ;

Παράδειγμα 2 - Κλήση main(){ ektyposi_epilogwn(); system( pause ); return 0;

Παράδειγμα 2 - Υλοποίηση void ektyposi_epilogwn( void ) { printf( 1. Method 1\n ); printf( 2. Method 2\n ); printf( 3. Method 3\n );

Συναρτήσεις με επιστρεφόμενο τύπο int CalculateSum( int a, int b ) { int c; c = a + b; return c ; Η εντολή return παραλείπεται ΜΟΝΟ στην περίπτωση που η συνάρτηση δεν επιστρέφει κάποιο τύπο δεδομένων (void). Με την εντολή return ο έλεγχος ροής του προγράμματος επιστρέφει στο σημείο απ όπου κλήθηκε η συνάρτηση.

Κλήση main(){ int k; k = CalculateSum(5,2); printf( Calculated:%d,k); system( pause ); return 0;

Παράμετροι Λίστα τυπικών παραμέτρων στη δήλωση: int CalculateSum( int a, int b ) ; Λίστα πραγματικών παραμέτρων στην κλήση int k=2,l=5; CalculateSum( k, l ) ; Μεταβλητές ή αριθμητικές τιμές Οι τιμές των πραγματικών παραμέτρων αντιγράφονται στις τυπικές παραμέτρους όταν καλείται η συνάρτηση

Παράδειγμα Φτιάξτε μία συνάρτηση που να προσδιορίζει το πρόσημο ενός αριθμού (τύπος δεδομένων float).

Αλγόριθμος 1. Ζητάω από το χρήστη να δώσει έναν πραγματικό 2. Διαβάζεται ο αριθμός που θα δώσει ο χρήστης 3. Φτιάχνω συνάρτηση με παράμετρο τον αριθμό και επιστρεφόμενο τύπο χαρακτήρα 4. Αν ο αριθμός είναι αρνητικός επιστρέφεται -, διαφορετικά επιστρέφεται + 5. Εκτύπωση του χαρακτήρα

Επικεφαλίδα Συνάρτησης char CalcProsimo( float a ); Είσοδος: ο πραγματικός αριθμός Έξοδος: χαρακτήρας που δηλώνει το πρόσημο του a

Πρόγραμμα #include <stdio.h> #include <stdlib.h> char CalcProsimo( float a) { if (a < 0) return - ; else return + ; Η εντολή return θα πρέπει να υπάρχει σε όλες τις περιπτώσεις

Πρόγραμμα main(){ float w; char c; printf( Input float\n ); scanf( %f,&w); c = CalcProsimo( w ); printf( To prosimo einai: %c,c); system( pause ); return 0; Η αριθμητική τιμή της w θα αντιγραφεί στην τυπική παράμετρο a της συνάρτησης CalcProsimo Αναθέτω στη c την τιμή που επιστρέφει η συνάρτηση

Παράδειγμα Γράψτε μια συνάρτηση που να επιστρέφει το μεγαλύτερο από 3 ακέραιους αριθμούς.

Αλγόριθμος 1. Ζητώ από το χρήστη να δώσει 3 αριθμούς 2. Διαβάζονται οι αριθμοί 3. Σχεδιάζω συνάρτηση με παραμέτρους τους 3 ακεραίους και επιστρεφόμενη τιμή ακέραιο (για το μέγιστο)

Αλγόριθμος 4. Θα χρησιμοποιήσω μια μεταβλητή για να κρατήσω προσωρινό μέγιστο 5. Αν ο 1 ος ακέραιος είναι μεγαλύτερος από τον 2 ο, ο προσωρινός μέγιστος θα έχει την τιμή του 1 ου, διαφορετικά θα έχει την τιμή του δεύτερου 6. Αν ο 3ος ακέραιος είναι μεγαλύτερος από τον προσωρινό μέγιστο, ο προσωρινός μέγιστος θα πάρει την τιμή του 3 ου ακεραίου.

Σχηματικά 7. Επιστρέφεται ο προσωρινός ακέραιος 1 ος ακέραιος int arithmos1; 2 ος ακέραιος int arithmos2; 3 ος ακέραιος int arithmos3; 1. Αν arithmos1>arithmos2 Max = arithmos1 2. Διαφορετικά Max = arithmos2 1. Αν arithmos3>max Max = arithmos3

Επικεφαλίδα συνάρτησης int FindMax (int number1, int number2, int number3);

Πρόγραμμα #include <stdio.h> #include <stdlib.h> int FindMax( int number1, int number2, int number3) { int max; if ( number1 > number2) max = number1; else max = number2;

Πρόγραμμα if ( number3 > max) max = number3; return max;

Πρόγραμμα main(){ int a,b,c,result; printf( Input 3 integers\n ); scanf( %d%d%d,&a,&b,&c); result = FindMax(a,b,c); printf( Max number is:%d\n,result); system( pause ); return 0;

Παράδειγμα Ένα πρόγραμμα που να βρίσκει το μεγαλύτερο από 5 αριθμούς χρησιμοποιώντας τη συνάρτηση FindMax

Πρόγραμμα main(){ int a,b,c,d,e,result; printf( Input 5 integers\n ); scanf( %d%d%d%d%d,&a,&b,&c,&d,&e); result = FindMax(a,b,c); result = FindMax(result,d,e); printf( Max number is:%d\n,result); system( pause ); return 0;

Κατάσταση Μνήμης Η μνήμη είναι οργανωμένη σε «κελιά». Στα κελιά αποθηκεύονται οι τιμές των μεταβλητών και κάθε κελί έχει μία μοναδική διεύθυνση. 1000 1001 1002 1003 1004 132 8 5 43 1 1005 1006 1007 1008 1009 a 0 16000 b 800 1010 1011 1012 1013 1014 7 13 C 3 21

Μεταβλητές και μνήμη 1000 1001 1002 1003 1004 132 8 5 43 1 1005 1006 1007 1008 1009 a 0 16000 b 800 Οι μεταβλητές είναι συμβολικά ονόματα που χρησιμοποιούμε για να αναφερθούμε σε δεδομένα που είναι αποθηκευμένα στη μνήμη. 1010 1011 1012 1013 1014 7 13 C 3 21 int x = 21;

Μεταβλητές και μνήμη Μετά την εκτέλεση κάθε εντολής, αλλάζει η κατάσταση της μνήμης. Πχ με εντολή x=2; Αλλάζει η αριθμητική τιμή της x

Χαρακτηριστικά Μεταβλητών Εμβέλεια (ορατότητα) Διάρκεια ζωής (δημιουργία καταστροφή) Θέση στη μνήμη

Καθολικές (public) Μεταβλητές Δηλώνονται έξω από τη main Εμβέλεια: Είναι ορατές από όλες τις συναρτήσεις που ακολουθούν της δήλωσης Διάρκεια: Δημιουργούνται με την εκκίνηση εκτέλεσης του προγράμματος και καταστρέφονται με το τέλος εκτέλεσης Θέση στη μνήμη: Τοποθετούνται σε θέσεις οι οποίες υπάρχουν καθόλη τη διάρκεια εκτέλεσης του προγράμματος

Παράδειγμα #include <stdio.h> #include <stdlib.h> int a; void print(void){ printf( To a exei timh:%d\n, a ); main(){ a = 4; print(); system( pause ); return 0; Καθολική (public). Ορατή από όλες τις συναρτήσεις που έχουν δηλωθεί ΠΑΡΑΚΑΤΩ

Βρείτε το λάθος #include <stdio.h> #include <stdlib.h> void menu(void){ printf( Value of a is:%d, a ); int a; void print(void){ printf( To a exei timh:%d\n, a ); main(){ a = 4; menu(); print(); system( pause ); return 0; Μήνυμα λάθους από τον Compiler: To a δεν έχει δηλωθεί

Τοπικές (local) μεταβλητές Δηλώνονται μέσα σε κάποιο σώμα εντολών ή σε σώμα συνάρτησης Εμβέλεια: Είναι ορατές μόνο στο σώμα συνάρτηση που τις εμπεριέχει Διάρκεια: Δημιουργούνται κατά την εκκίνηση του σώματος εντολών ή της συνάρτησης και καταστρέφονται με το τέλος εκτέλεσης του σώματος ή της συνάρτησης Θέση στη μνήμη: Τοποθετούνται σε θέσεις που δεσμεύονται μόνο για την εκτέλεση του σώματος εντολών ή της συνάρτησης

Σχηματικά 1000 1001 9.8 1002 1003 3 1004 124 1005 26 Διευθύνσεις μνήμης που δεσμεύονται για τις τοπικές μεταβλητές της main. Διευθύνσεις μνήμης που void print(void){ δεσμεύονται για τις τοπικές μεταβλητές της print. int a,b,k; a =3; b=124; k = 26; printf( A:%d,B:%d,k:%d,a,b,k); main(){ double k; k=9.8; print(); printf( k:%d,k);

Έλεγχος ροής προγράμματος 4. Δέσμευση μνήμης για τοπικές μεταβλητές της print 5. 6. 7. 8. 1. Δέσμευση μνήμης για τοπικές μεταβλητές της main 2. 3. 9. void print(void){ int a,b,k; a =3; b=124; k = 26; printf( A:%d,B:%d,k:%d,a,b,k); main(){ double k; k=9.8; print(); printf( k:%d,k);

Βρείτε τι θα εκτυπωθεί int CalculateDiff(int a, int b ) { int c=9; printf( Value of c is:%d,c); return (a b); main() { int a=3, b=1, c=7, d=2; printf( Difference is : %d\n, CalculateDiff( c, d ) );

Στατικές Μεταβλητές - Static Δήλωση: static τύπος ΌνομαΜεταβλητής Πχ static int a=0; Οι στατικές μεταβλητές δεσμεύουν θέσεις μνήμης καθόλη τη διάρκεια του προγράμματος (η μνήμη δεν αποδεσμεύεται στο τέλος εκτέλεσης της συνάρτησης)

Παράδειγμα void printvalue(void){ static int k = 0; k++; printf( To k:%d\n,k); main(){ printvalue(); printvalue(); printvalue(); Η αρχικοποίηση γίνεται κατά το compilation Η μεταβλητή k δεν καταστρέφεται στο τέλος εκτέλεσης της συνάρτησης. Η τιμή της διατηρείται μέχρι το τέλος εκτέλεσης του προγράμματος. Θα εκτυπωθεί To k:1 To k:2 To k:3

Τι θα εκτυπωθεί void print(){ int k = 0; while(k<5) k++; printf( To k:%d\n,k); main() { print(); print(); void print(){ static int k = 0; while(k<5) k++; printf( To k:%d\n,k); main() { print(); print();

Άσκηση για το σπίτι Φτιάξτε ένα πρόγραμμα που να υπολογίζει το ελάχιστο κοινό πολλαπλάσιο 3 αριθμών Υπόδειξη: 1) Να υλοποιηθεί μία συνάρτηση με παραμέτρους τους 3 ακεραίους και επιστρεφόμενη τιμή το αποτέλεσμα (ακέραιος με το ελάχιστο κοινό πολλαπλάσιο) (Θα χρειαστεί να υλοποιήσετε και μια συνάρτηση που να υπολογίζει το μέγιστο από τους 3 αριθμούς)

Άσκηση για το σπίτι Υπενθύμιση Για 3 αριθμούς α, β, γ, το ΕΚΠ ανήκει στο σύνολο Α = [max(α,β,γ), α*β*γ], όπου max(α,β,γ) ο μέγιστος εκ των 3 αριθμών. Το ΕΚΠ είναι ο μικρότερος αριθμός του συνόλου Α που διαιρεί ακριβώς και τους 3 αριθμούς.

Υπενθύμιση Η πράξη a % b επιστρέφει το υπόλοιπο της διαίρεσης του a με το b. Αν ο b διαιρεί ακριβώς τον a, το υπόλοιπο είναι 0.

Υπoδείξεις Θα χρησιμοπιήσετε εντολή επανάληψης Η μεταβλητή στον έλεγχο συνθήκης θα παίρνει τιμές στο διάστημα Α (όπως προαναφέρθηκε) Στο σώμα εντολών της επανάληψης θα πρέπει να ελεγχθεί αν η μεταβλητή διαιρεί ακριβώς τους αριθμούς

Υποδείξεις Έξοδος από την επανάληψη: Το ΕΚΠ ενδέχεται να βρεθεί σε λιγότερα βήματα από αυτά που έχουμε ορίσει στην επανάληψη. Στην περίπτωση αυτή θέλουμε να διακοπεί η επανάληψη. 2 τρόποι: 1) Χρήση της εντολής break (διακόπτει την επανάληψη)

Υποδείξεις 2) Χρήση μιας μεταβλητής με ρόλο «διακόπτη» (όπως έχει υλοποιηθεί σε προηγούμενη διάλεξη η μεταβλητή flag για έξοδο από τη while) Δίνουμε στη μεταβλητή αυτή αρχικά την τιμή 1 και την ενσωματώνουμε, με χρήση κατάλληλου λογικού τελεστή, στη συνθήκη επανάληψης. Της δίνουμε την τιμή 0, όταν ικανοποιηθεί η συνθήκη που θέλουμε (στο σώμα εντολών) για να τερματίσουμε «πρόωρα» την επανάληψη.