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

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

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

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

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

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

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

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

Διάλεξη 15η: Αναδρομή, μέρος 1ο

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

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

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

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

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

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

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

Προγραμματισμός H/Y Ενότητα 5: Συναρτήσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

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

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

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

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

Διάλεξη 6: Δείκτες και Πίνακες

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

Εισαγωγή στον Προγραμματισμό (με. τη C)

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

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

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

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

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

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

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 3 Επανάληψη Γ μέρος

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

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

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

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

Βιβλιοθήκες Αφηρημένοι τύποι δεδομένων. Προγραμματισμός II 1

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 6 Ο. Συναρτήσεις Τοπικές, καθολικές, στατικές μεταβλητές Μεταβλητές τύπου extern και register Αναδρομή

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 3-4: Προγραμματισμός MIPS. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

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

Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C (2)

ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ

ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Κάθε υποπρόγραμμα έχει μόνο μία είσοδο και μία έξοδο. Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα.

Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C (2)

Προγραμματισμός H/Y Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

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

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες (Διάλεξη 19)

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

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

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

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

Προγραμματισμός ΙI (Θ)

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

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

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

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

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

Προγραµµατισµός. Αναδροµή (1/2)

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

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

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

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

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

Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα. Προγραμματισμός II 1

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

οµές (structures) και Eνώσεις (unions)

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Προγραμματισμός Συστημάτων

Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού

Διάλεξη 13η: Δυναμική Διαχείρηση Μνήμης, μέρος 1

Κεφάλαιο 10 ο Υποπρογράµµατα

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

Στόχοι και αντικείμενο ενότητας. Προτάσεις επανάληψης. Έλεγχος ροής προγράμματος. #5.. Εντολές Επανάληψης

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

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

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

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

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

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

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

Ενώσεις δεδομένων Απαριθμητές Ψηφιακοί τελεστές Αναδρομικές συναρτήσεις

Κεφάλαιο : Επαναλήψεις (for, do-while)

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

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

Γλώσσες Προγραμματισμού

Προγραμματισμός Η/Y. Διάλεξη 6 η : Συναρτήσεις

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 7 Ο. Αριθμητικές πράξεις Τυχαίοι αριθμοί Εφαρμογές σε προβλήματα ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

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

Προγραμματισμός ΙI (Θ)

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

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

Transcript:

Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου

Συναρτήσεις της C Τα Λοιπά Στοίβα και μηχανισμός κλήσης Αναδρομικές συναρτήσεις Στατικές μεταβλητές Άλλα θέματα

Μηχανισμός Στοίβας Δομή στοίβας στη μνήμη για να θυμόμαστε τη σειρά κλήσεων Κάθε κλήση συνάρτησης δεσμεύει χώρο στη στοίβα για τις τοπικές μεταβλητές Κάθε φωλιασμένη κλήση συνεχίζει με νέα δέσμευση Κάθε έξοδος από συνάρτηση αφαιρεί από τη στοίβα τον πιο πρόσφατα δεσμευμένο χώρο Ο μηχανισμός στοίβας επιτρέπει πολλαπλές δεσμεύσεις για την ίδια συνάρτηση

Αναδρομικές Συναρτήσεις Μια συνάρτηση μπορεί να καλεί τον εαυτό της Άμεσα ή έμμεσα Η κλήση προς συνάρτηση που ήδη εκτελείται δημιουργεί νέα δέσμευση στη στοίβα Έτσι μπορούμε να έχουμε απεριόριστες αναδρομικές κλήσεις Η αναδρομή τερματίζεται με κάποια δομή ελέγχου

Παράδειγμα int suma (int n, int *a) { if (n == 1) 0) return *a; 0; return *a + suma(n-1,a+1); } int main () { int P[] = {10, 9, -4, 3, 0, -2, 8, 3, 1}; printf( sum = %d\n, suma(9,p)); }

Στατικές Μεταβλητές Τοπικές μεταβλητές που δεν αποδεσμεύονται με την έξοδο από τη συνάρτηση Επομένως δε μπορούν να τοποθετούνται στη στοίβα Επιδέχονται αρχικοποίηση Διαφορετικά αρχικοποιούνται σε μηδενική τιμή Με επόμενη κλήση της συνάρτησης βρίσκουμε τις προηγούμενες τιμές τους

Πρωτότυπο Συνάρτησης (Δήλωση) Μια δήλωση χωρίς σώμα Τερματίζεται με ; μετά τη δήλωση παραμέτρων Τα ονόματα των παραμέτρων είναι προαιρετικά Αποσκοπεί στην ενημέρωση του μεταγλωττιστή για την ύπαρξη της συνάρτησης πριν αυτή δηλωθεί πλήρως Ο μεταγλωττιστής πρέπει να γνωρίζει τη συνάρτηση όταν αυτή καλείται! Έχει νόημα για έμμεση αναδρομή Επιπλέον δίνεται καλύτερη εικόνα στον κώδικα

Ημιτελείς Παράμετροι Παράμετροι τύπου πίνακα μπορούν να μη δηλώνουν το μέγεθος της πρώτης διάστασης Στην ουσία περνούν ως δείκτες, οπότε το μέγεθος πρώτης διάστασης είναι αδιάφορο Πώς όμως γνωρίζουμε το πλήθος στοιχείων; void fun(int n, int a[][100][100]);

Καθολικές Μεταβλητές (Ξανά) Τοποθετούνται στη μνήμη εκτός στοίβας Το ίδιο και οι στατικές μεταβλητές Λειτουργούν σαν τις στατικές, όμως τις βλέπουν όλες οι συναρτήσεις Πλην επισκιάσεων Προγραμματιστικά είναι καλύτερα να χρησιμοποιούνται τοπικές μεταβλητές Συνήθως δηλώνουμε μεγάλες δομές ως καθολικές για να μην γεμίζουμε τη στοίβα

Οι Παρενθέσεις ως Τελεστής Το ζεύγος παρενθέσεων ως τελεστής () επιτρέπει να δούμε την κλήση συνάρτησης ως μέρος έκφρασης x = x + a * *funy(y, &b); Προτεραιότητα ίδια με τους τελεστές [],., -> Η υψηλότερη από όλους τους τελεστές

Δείκτες συναρτήσεων Η συνάρτηση ως δομή δεδομένων Μπορούμε να περάσουμε μια συνάρτηση ως παράμετρο σε άλλη συνάρτηση typedef int (*funp) (int,int,int[]); void F1(funp f, int n, int a[]) { a[i] = x * (*f)(n,i-1,a); }

Συναρτήσεις Βιβλιοθήκης Τα αρχεία βιβλιοθήκης της οδηγίας #include δεν περιέχουν τα σώματα των συναρτήσεων Περιέχουν πρωτότυπα, ώστε να μπορεί ο μεταγλωττιστής να γνωρίζει τα ονόματα, τον τύπο και τις παραμέτρους των συναρτήσεων Τα σώματα είναι ήδη μεταφρασμένα σε άλλα αρχεία και συνδέονται με το πρόγραμμα κατά τη φάση της σύνδεσης

Τι Μάθαμε Σήμερα Μηχανισμός κλήσης Αναδρομή Στατικές μεταβλητές Πρωτότυπα συναρτήσεων Ημιτελείς παράμετροι Ο τελεστής () Δείκτες συναρτήσεων Συναρτήσεις βιβλιοθήκης