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

Σχετικά έγγραφα
ΣΧΕΔΙΑΣΗ ΚΑΙ ΥΛΟΠΟΙΗΣΗ ΛΟΓΙΣΜΙΚΟΥ

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

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

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

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

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

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

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

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

Οντοκεντρικός Προγραμματισμός

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων

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

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

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

Ορισμός μεταβλητών δεικτών και αρχικοποίηση

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

Προγραμματισμός Η/Υ. Ενότητα 8: Ειδικά Θέματα Αλγορίθμων

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

8. Μέθοδοι (Methods)

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

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

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

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

ΠΛΗ111. Ανοιξη Μάθηµα 1 ο Ανασκόπηση της Γλώσσας Προγραµµατισµού C. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

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

Τεχνολογία και Προγραμματισμός Υπολογιστών. Η γλώσσα προγραμματισμού C

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact:

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

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

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

Υπολογισμός - Εντολές Επανάληψης

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

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

B. Ενσωμάτωση Ιθαγενών Μεθόδων

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

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

ΗΥ-150. Προγραμματισμός

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

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

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

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

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

Προγραμματισμός Η/Υ. Ενότητα 3: Top Down Σχεδιασμός

Ο πιο κάτω πίνακας περιγράφει σε ποιες περιπτώσεις χρησιμοποιούμε τους τρεις πιο πάνω τρόπους:

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

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

Κεφάλαιο : Εισαγωγή στην C: (Διαλέξεις 3-4)

Εργαστήριο 2ο. Περίγραμμα Εργαστηριακής Άσκησης

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Προγραμματισμός II. Συναρτήσεις

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος lantzos@teiser.gr

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

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

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

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

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

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

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

Section 8.3 Trigonometric Equations

Διάλεξη 5: Δείκτες και Συναρτήσεις

The Simply Typed Lambda Calculus

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

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

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

Προεπεξεργαστής της C. C Preprocessor. Προγραμματισμός II 1

Οντοκεντρικός Προγραμματισμός

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

Προεπεξεργαστής C. Προγραμματισμός Ι 1

The challenges of non-stable predicates

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

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

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

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

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

Κεφάλαιο 2.5: Τύποι εδοµένων, Τελεστές και Αριθµητικές Εκφράσεις. ( ιαλέξεις 5-6) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Οντοκεντρικός Προγραμματισμός

Εισαγωγή στην πληροφορική

Επανάληψη. Εντολές while, for, do-while

Διάλεξη 9η: Πίνακες (arrays)

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

Transcript:

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

Εμβέλεια Μεταβλητών Εμβέλεια = το τμήμα του προγράμματος στο οποίο έχει ισχύ ή είναι ορατή η μεταβλητή. Πότε μας αφορά η εμβέλεια; Όταν έχουμε μεταβλητές με το ίδιο όνομα. 2

Τύποι Εμβέλειας (1) - Εξωτερικές μεταβλητές Γενικές ή καθολικές μεταβλητές (global variables) - Δηλώνονται έξω και πάνω από κάθε συνάρτηση (και την main), στο τμήμα δηλώσεων μεταβλητών. - Η εμβέλειά τους είναι όλο το αρχείο του πηγαίόυ κώδικα που ανήκει η δήλωση, από το σημείο της δήλωσης και κάτω (εμβέλεια αρχείου 3

Τύποι Εμβέλειας (2) - Εσωτερικές ή αυτόματες μεταβλητές Τοπικές μεταβλητές (local variables) - Δηλώνονται μέσα σε μία συνάρτηση. - Η εμβέλειά τους είναι το σώμα της συνάρτησης (εμβέλεια μπλοκ) Τυπικές παράμετροι συναρτήσεων - Η εμβέλειά τους είναι το σώμα της συνάρτησης (εμβέλεια μπλοκ) Μεταβλητές σύνθετης πρότασης - Δηλώνονται μέσα σε μία σύνθετη πρόταση - Η εμβέλειά τους είναι το σημείο της δήλωσης μέχρι το τέλος της σύνθετης πρότασης (εμβέλεια μπλοκ). Στατικές Μεταβλητές - Δηλώνονται σε κάποια (ες) συνάρτηση (εις) (μετά την main) με τη λέξη κλειδί static πριν από τον τύπο μεταβλητής. - Η εμβέλειά τους είναι το αρχείο του πηγαίόυ κώδικα που ανήκει η δήλωση, από το σημείο της δήλωσης και κάτω (εμβέλεια αρχείου) 4

Κανόνες Εμβέλειας Μεταβλητών Μεταβλητές με το ίδιο όνομα επιτρέπονται μόνο όταν έχουν διαφορετική εμβέλεια Μεταβλητή με μικρότερη εμβέλεια αποκρύπτει πιθανώς ομώνυμες μεταβλητές μεγαλύτερης εμβέλειας. 5

Εμβέλεια Συνάρτησης Οι συναρτήσεις, όπως και οι μεταβλητές έχουν εμβέλεια Η εμβέλεια μίας συνάρτησης εκτείνεται από το σημείο της δήλωσής της μέχρι το τέλος του προγράμματος. Αν μία συνάρτηση δηλωθεί static, τότε η εμβέλειά της περιορίζεται το αρχείο που δηλώθηκε. Μεταβλητή με μικρότερη εμβέλεια αποκρύπτει πιθανώς ομώνυμες μεταβλητές μεγαλύτερης εμβέλειας. 6

Διάρκεια Μεταβλητής Ο χρόνος δέσμευσης της μνήμης που περιέχει την τιμή της μεταβλητής Καθολική μεταβλητή: διάρκεια εκτέλεσης προγράμματος (πλήρης διάρκεια). Τοπική μεταβλητή: διάρκεια εκτέλεσης συνάρτησης (περιορισμένη διάρκεια) Τυπική παράμετρος: διάρκεια εκτέλεσης συνάρτησης (περιορισμένη διάρκεια) Στατική τοπική μεταβλητή: διάρκεια εκτέλεσης προγράμματος (πλήρης διάρκεια) 7

Αρχικοποίηση Μεταβλητών Μία τοπική μεταβλητή περιορισμένης διάρκειας αρχικοποιείται με κάθε είσοδο στο μπλοκ (συνάρτηση) που ορίζεται Μία τοπική μεταβλητή πλήρους διάρκειας αρχικοποιείται με την έναρξη εκτέλεσης του προγράμματος Π.χ. static int num; func (int) { static int count = 0; int num =100;... } 8

#include <stdio.h> void increment(void) Παράδειγμα main() { int j=0; increment ( ); increment ( ); increment ( ); printf( %d, j} void increment(void) { int j=2; static int k=2; printf( j: %d\t k: %d\n, j++, k++); } 9

Πέρασμα Παραμέτρων Κατ αξία ή τιμή (by value) H συνάρτηση δουλεύει σε αντίγραφα των πραγματικών παραμέτρων Κατ αναφορά (by reference) H συνάρτηση δουλεύει στις πραγματικές παραμέτρους (μόνο για πίνακες) 10

Παράδειγμα (1) void swap (int a, int b) { int temp; temp=a; num1 10 num2 40 a=b; b=temp;} swap (num1, num2); Ενώ οι τιμές των a,b αλλάζουν, οι τιμές των num1, num2 παραμένουν αμετάβλητες a 40 2 b 40 1 temp 3 10 11

Παράδειγμα (2) void swap (int *a, int * b) { int temp; temp=* a; num1 10 2 num2 40 *a=*b; *b=temp;} a b swap (&num1, &num2); 005 006 1 temp 3 10 12

Πολλαπλά αρχεία -Σε πολλαπλά αρχεία υπάρχει ΜΟΝΟ ένα αρχείο με τη main() - Μία εξωτερική μεταβλητή μπορεί να χρησιμοποιηθεί από περισσότερα από ένα αρχεία αν και μόνο εάν η δήλωσή της στα άλλα αρχεία συνοδεύεται από keyword extern - Μία συνάρτηση θα πρέπει να δηλωθεί σε κάθε αρχείο που τη χρησιμοποιεί, ορίζεται όμως ΜΟΝΟ σε ένα - Αν μία συνάρτηση ή μεταβλητή δηλωθεί static, τότε η εμβέλειά της περιορίζεται αναγκαστικά στο αρχείο που δηλώθηκε. CEID - Προγραμματισμός σε ANSI C 13

Οδηγίες (http://stackoverflow.com/questions/1433204/how-do-i-use-externto-share-variables-between-source-files-in-c) Ένα header file περιέχει μόνο extern δηλώσεις μεταβλητών ποτέ static Για κάθε μεταβλητή μόνο ένα header file τη δηλώνει (SPOT Single Point of Truth). Ένα αρχείο πηγαίου κώδικα δεν περιέχει extern δηλώσεις μεταβλητών τα αρχεία πηγαίου κώδικα πάντα περιλαμβάνουν το (μόνο) αρχείο κεφαλίδα που τα δηλώνει. For any given variable, exactly one source file defines the variable, preferably initializing it too. (Although there is no need to initialize explicitly to zero, it does no harm and can do some good, because there can be only one initialized definition of a particular global variable in a program). The source file that defines the variable also includes the header to ensure that the definition and the declaration are consistent. A function should never need to declare a variable using extern. Avoid global variables whenever possible use functions instead. CEID - Προγραμματισμός σε ANSI C 14