Πξνγξακκαηηζκόο Ι (ΗΥ120)

Σχετικά έγγραφα
(programming interfaceή/και application programming interface API).

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

Απαντήσεις θέματος 2. Παξαθάησ αθνινπζεί αλαιπηηθή επίιπζε ησλ εξσηεκάησλ.

ΓΗΑΓΩΝΗΣΜΑ ΣΤΑ ΜΑΘΖΜΑΤΗΚΑ. Ύλη: Μιγαδικοί-Σσναρηήζεις-Παράγωγοι Θεη.-Τετν. Καη Εήηημα 1 ο :

Constructors and Destructors in C++

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

iii. iv. γηα ηελ νπνία ηζρύνπλ: f (1) 2 θαη

Ενδεικτικά Θέματα Στατιστικής ΙΙ

ΘΔΜΑ 1 ο Μονάδες 5,10,10

Απνηειέζκαηα Εξσηεκαηνινγίνπ 2o ηεηξάκελν

Βάσεις Δεδομέμωμ. Εξγαζηήξην V. Τκήκα Πιεξνθνξηθήο ΑΠΘ

Αιγόξηζκνη Γνκή επηινγήο. Πνιιαπιή Δπηινγή Δκθωιεπκέλεο Δπηινγέο. Δηζαγωγή ζηηο Αξρέο ηεο Δπηζηήκεο ηωλ Η/Υ. introcsprinciples.wordpress.

ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ. Οξηδόληηα θαη θαηαθόξπθε κεηαηόπηζε παξαβνιήο

ΠΑΝΔΛΛΑΓΗΚΔ ΔΞΔΣΑΔΗ Γ ΣΑΞΖ ΖΜΔΡΖΗΟΤ ΓΔΝΗΚΟΤ ΛΤΚΔΗΟΤ Γευηέρα 11 Ηουνίου 2018 ΔΞΔΣΑΕΟΜΔΝΟ ΜΑΘΖΜΑ: ΜΑΘΖΜΑΣΗΚΑ ΠΡΟΑΝΑΣΟΛΗΜΟΤ. (Ενδεικηικές Απανηήζεις)

Αζκήζεις ζτ.βιβλίοσ ζελίδας 13 14

TOOLBOOK (μάθημα 2) Δεκηνπξγία βηβιίνπ θαη ζειίδσλ ΠΡΟΑΡΜΟΓΗ: ΒΑΛΚΑΝΙΩΣΗ ΔΗΜ. ΕΚΠΑΙΔΕΤΣΙΚΟ ΠΕ19 1 TOOLBOOK ΜΑΘΗΜΑ 2

ΡΤΘΜΙΕΙ ΔΙΚΣΤΟΤ ΣΑ WINDOWS

f '(x)g(x)h(x) g'(x)f (x)h(x) h'(x) f (x)g(x)

(Ενδεικηικές Απανηήζεις) ΘΔΜΑ Α. Α1. Βιέπε απόδεημε Σει. 262, ζρνιηθνύ βηβιίνπ. Α2. Βιέπε νξηζκό Σει. 141, ζρνιηθνύ βηβιίνπ

Κευάλαιο 8 Μονοπωλιακή Συμπεριφορά- Πολλαπλή Τιμολόγηση

ΔΕΟ 13. Ποσοτικές Μέθοδοι. θαη λα ππνινγίζεηε ην θόζηνο γηα παξαγόκελα πξντόληα. Να ζρεδηαζηεί γηα εύξνο πξντόλησλ έσο

ΚΕΦ. 2.3 ΑΠΟΛΤΣΗ ΣΘΜΗ ΠΡΑΓΜΑΣΘΚΟΤ ΑΡΘΘΜΟΤ

ΑΠΛΟΠΟΙΗΗ ΛΟΓΙΚΩΝ ΤΝΑΡΣΗΕΩΝ ΜΕ ΠΙΝΑΚΕ KARNAUGH

Σχεδίαση Γλωσσών & Μεταγλωττιστζς

ΔΡΓΑΙΑ 1. Γιαδικησακά πληροθοριακά σζηήμαηα. Ομάδα Δργαζίας: Μεηαπηστιακοί Φοιηηηές. ηέθανος Κονηοβάς ΑΔΜ :283. Πάζτος Βαζίλειος ΑΔΜ :288

Μονοψϊνιο. Αγνξά κε ιίγνπο αγνξαζηέο. Δύναμη μονοψωνίος Η ηθαλόηεηα πνπ έρεη ν αγνξαζηήο λα επεξεάζεη ηελ ηηκή ηνπ αγαζνύ.

ΑΛΛΑΓΗ ΟΝΟΜΑΣΟ ΚΑΙ ΟΜΑΔΑ ΕΡΓΑΙΑ, ΚΟΙΝΟΥΡΗΣΟΙ ΦΑΚΕΛΟΙ ΚΑΙ ΕΚΣΤΠΩΣΕ ΣΑ WINDOWS XP

x x x x tan(2 x) x 2 2x x 1

Ζαχαρίας Μ. Κοντοπόδης Εργαστήριο Λειτουργικών Συστημάτων ΙΙ

B-Δέλδξα. Τα B-δέλδξα ρξεζηκνπνηνύληαη γηα ηε αλαπαξάζηαζε πνιύ κεγάισλ ιεμηθώλ πνπ είλαη απνζεθεπκέλα ζην δίζθν.

H ΜΑΓΕΙΑ ΤΩΝ ΑΡΙΘΜΩΝ

Γ ΣΑΞΖ ΔΝΗΑΗΟΤ ΛΤΚΔΗΟΤ ΔΞΔΣΑΕΟΜΔΝΟ ΜΑΘΖΜΑ: ΜΑΘΖΜΑΣΗΚΑ ΘΔΣΗΚΩΝ ΚΑΗ ΟΗΚΟΝΟΜΗΚΩΝ ΠΟΤΓΩΝ ΤΝΑΡΣΖΔΗ ΟΡΗΑ ΤΝΔΥΔΗΑ (έως Θ.Bolzano) ΘΔΜΑ Α

Δπηιέγνληαο ην «Πξνεπηινγή» θάζε θνξά πνπ ζα ζπλδέεζηε ζηελ εθαξκνγή ζα βξίζθεζηε ζηε λέα ρξήζε.

ΣΕΙ ΙΟΝΙΩΝ ΝΗΩΝ ΣΜΗΜΑ: ΣΕΥΝΟΛΟΓΙΑ ΠΛΗΡΟΦΟΡΙΚΗ ΚΑΙ ΣΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΥΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ Ρέππα Μαξγαξίηα

Πολυεπίπεδα/Διασυμδεδεμέμα Δίκτυα

ΣΕΙ Δυτικήσ Μακεδονίασ, Παράρτημα Καςτοριάσ Τμήμα Πληροφορικήσ και Τεχνολογίασ Υπολογιςτών

Η αξρή ζύλδεζεο Client-Server

ΣΥΣΤΗΜΑΤΑ ΑΛΓΕΒΡΑ Α ΛΥΚΕΙΟΥ. 1. Να ιπζνύλ ηα ζπζηήκαηα. 1 0,3x 0,1y x 3 3x 4y 2 4x 2y ( x 1) 6( y 1) (i) (ii)

Διαςτήματα εμπιςτοςφνησ για την ευθεία παλινδρόμηςησ

Α. Εηζαγσγή ηεο έλλνηαο ηεο ηξηγσλνκεηξηθήο εμίζσζεο κε αξρηθό παξάδεηγκα ηελ εκx = 2

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΣΙΚΗ ΚΤΣΑΛΟΓΡΟΜΙΑ 2007 ΓΙΑ ΣΟ ΓΤΜΝΑΙΟ Παπασκευή 26 Ιανουαπίου 2007 Σάξη: Α Γυμνασίου ΥΟΛΕΙΟ..

Δξγαζηεξηαθή άζθεζε 03. Σηεξενγξαθηθή πξνβνιή ζην δίθηπν Wulf

Hellas online Προεπιλεγμένες ρσθμίσεις για FritzBox Fon WLAN 7140 (Annex B) FritzBox Fon WLAN Annex B ( )

Επωηήζειρ Σωζηού Λάθοςρ ηων πανελλαδικών εξεηάζεων Σςναπηήζειρ

ΔΝΓΔΙΚΣΙΚΔ ΛΤΔΙ ΣΑ ΜΑΘΗΜΑΣΙΚΑ ΠΡΟΑΝΑΣΟΛΙΜΟΤ 2017

Α Ο Κ Η Α Μ Α Ζ Η Η Ρ Η ( S E A R C H )

Σήκαηα Β Α Γ Γ Δ Λ Η Σ Ο Ι Κ Ο Ν Ο Μ Ο Υ Γ Ι Α Λ Δ Ξ Η - ( 2 ) ΕΙΣΑΓΨΓΗ ΣΤΙΣ ΤΗΛΕΠΙΚΟΙΝΨΝΙΕΣ

Διαηιμήζεις για Αιολικά Πάρκα. Κώδικες 28, 78 και 84

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΣΙΚΗ ΚΤΣΑΛΟΓΡΟΜΙΑ 2007 ΓΙΑ ΣΟ ΓΤΜΝΑΙΟ Παπασκευή 26 Ιανουαπίου 2007 Σάξη: Α Γυμνασίου ΥΟΛΕΙΟ..

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

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΔΣΑΙΡΔΙΑ ΠΑΓΚΤΠΡΙΟ ΓΙΑΓΩΝΙΜΟ Α ΛΤΚΔΙΟΤ. Ημεπομηνία: 10/12/11 Ώπα εξέτασηρ: 09:30-12:30 ΠΡΟΣΔΙΝΟΜΔΝΔ ΛΤΔΙ

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΤΙΚΗ ΣΚΥΤΑΛΟΓΡΟΜΙΑ 2015 ΓΙΑ ΤΟ ΓΥΜΝΑΣΙΟ Τεηάπηη 28 Ιανουαπίου 2015 ΛΔΥΚΩΣΙΑ Τάξη: Α Γυμναζίου

ΔΦΑΡΜΟΜΔΝΑ ΜΑΘΗΜΑΣΙΚΑ ΣΗ ΧΗΜΔΙΑ Ι ΘΔΜΑΣΑ Α επηέκβξηνο Να ππνινγηζηνύλ νη κεξηθέο παξάγσγνη πξώηεο ηάμεο ηεο ζπλάξηεζεο f(x,y) =

ΜΑΘΗΜΑ / ΤΑΞΗ : ΗΛΕΚΤΡΟΛΟΓΙΑ/Γ ΛΥΚΕΙΟΥ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 08/09/2014

ΟΣΑ Επηρεηξεζηαθή Ννεκνζύλε. Ελόηεηα: Ad1.2.2 «Ση θξύβεηαη» πίζω από κηα Επηρεηξεζηαθή Αλαθνξά (report): XML & XSD γηα αξράξηνπο

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

ΠΑΝΔΛΛΑΓΗΚΔ ΔΞΔΣΑΔΗ Γ ΖΜΔΡΖΗΟΤ ΓΔΝΗΚΟΤ ΛΤΚΔΗΟΤ Γεσηέρα 10 Ηοσνίοσ 2019 ΔΞΔΣΑΕΟΜΔΝΟ ΜΑΘΖΜΑ: ΜΑΘΖΜΑΣΗΚΑ ΠΡΟΑΝΑΣΟΛΗΜΟΤ. (Ενδεικηικές Απανηήζεις)

ΚΔΦ. 2.4 ΡΗΕΔ ΠΡΑΓΜΑΣΗΚΩΝ ΑΡΗΘΜΩΝ

ΘΔΚΑ ΡΖΠ ΑΛΑΓΛΩΟΗΠΖΠ

ΠΔΡΗΓΡΑΦΖ ΛΔΗΣΟΤΡΓΗΚΟΣΖΣΑ ΥΔΓΗΟΤ ΑΡΗΘΜ. 1

Ηλεκηπονικά Απσεία και Διεπαθέρ

Να ζρεδηάζεηο ηξόπνπο ζύλδεζεο κηαο κπαηαξίαο θαη ελόο ιακπηήξα ώζηε ν ιακπηήξαο λα θσηνβνιεί.

Άμεσοι Αλγόριθμοι: Προσπέλαση Λίστας (list access)

ΠΑΝΔΛΛΑΓΗΚΔ ΔΞΔΣΑΔΗ Γ ΣΑΞΖ ΖΜΔΡΖΗΟΤ ΓΔΝΗΚΟΤ ΛΤΚΔΗΟΤ ΚΑΗ ΔΠΑΛ ΣΔΣΑΡΣΖ 25 ΜΑΨΟΤ 2016 ΔΞΔΣΑΕΟΜΔΝΟ ΜΑΘΖΜΑ: ΑΡΥΔ ΟΗΚΟΝΟΜΗΚΖ ΘΔΧΡΗΑ ΠΡΟΑΝΑΣΟΛΗΜΟΤ - ΔΠΗΛΟΓΖ

Case Study. Παξαθάηω παξνπζηάδνπκε βήκα - βήκα κε screenshots έλα παξάδεηγκα ππνβνιήο κηαο εξγαζίαο θαη ηελ παξαγωγή ηνπ Originality Report.

ΣΕΙ Δυτικήσ Μακεδονίασ, Παράρτημα Καςτοριάσ Τμήμα Πληροφορικήσ και Τεχνολογίασ Υπολογιςτών

ΑΝΤΗΛΙΑΚΑ. Η Μηκή ζθέθηεθε έλαλ ηξόπν, γηα λα ζπγθξίλεη κεξηθά δηαθνξεηηθά αληειηαθά πξντόληα. Απηή θαη ν Νηίλνο ζπλέιεμαλ ηα αθόινπζα πιηθά:

Οδηγίες τρήζης για λειηοσργία μεηαθοράς καναλιών ζε υηθιακό δέκηη OST-7060 HD

Intel Accelerate Your Code

ΔΠΙΣΡΟΠΗ ΓΙΑΓΩΝΙΜΩΝ 74 ος ΠΑΝΔΛΛΗΝΙΟ ΜΑΘΗΣΙΚΟ ΓΙΑΓΩΝΙΜΟ ΣΑ ΜΑΘΗΜΑΣΙΚΑ Ο ΘΑΛΗ 19 Οκηωβρίοσ Δνδεικηικές λύζεις

ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΣΗΜΑΤΩΝ & ΣΥΣΤΗΜΑΤΩΝ. ΜΕΤΑΣΦΗΜΑΤΙΣΜΟΣ Laplace

5 η Δργαζηηριακή Άζκηζη Κσκλώμαηα Γσαδικού Αθροιζηή/Αθαιρέηη

ΠΑΡΑΡΣΗΜΑ Δ. ΔΤΡΔΗ ΣΟΤ ΜΔΣΑΥΗΜΑΣΙΜΟΤ FOURIER ΓΙΑΦΟΡΩΝ ΗΜΑΣΩΝ

Δομή ππογπάμμαηορ ζηη C++

Πξνγξακκαηηζκόο Ι (ΗΥ120)

ΜΗΧΑΝΟΛΟΓΙΚΟ ΣΧΔΓΙΟ ΙΙ

Έκδοζη /10/2014. Νέα λειηοσργικόηηηα - Βεληιώζεις

Η/Υ A ΤΑΞΕΩΣ ΑΕ Συστήματα Αρίθμησης. Υποπλοίαρχος Ν. Πετράκος ΠΝ

ΓΔΧΜΔΣΡΙΑ ΓΙΑ ΟΛΤΜΠΙΑΓΔ

Δηζαγωγή ζηε γιώζζα C Παξνπζίαζε 3 ε : Δίζνδνο/ Έμνδνο - Σπλαξηήζεηο - Pointers

ΑΠΑΝΤΗΣΔΙΣ ΓΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ II ΔΠΑΛ

Γοκή επαλάιευες Δληοιές Όζο & Μέτρης_όηοσ

Άζκηζη ζτέζης κόζηοσς-τρόνοσ (Cost Time trade off) Καηαζκεσαζηική ΑΔ

ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ 4 ΣΥΝΔΥΑΣΤΙΚΑ ΚΥΚΛΩΜΑΤΑ

Παιχνίδι γλωζζικής καηανόηζης με ζχήμαηα!

1. Οδηγίερ εγκαηάζηαζηρ και σπήζηρ έξςπνυν καπηών και τηθιακών πιζηοποιηηικών με σπήζη ηος λογιζμικού Μοzilla Thunderbird

ΔΝΓΔΙΚΤΙΚΔΣ ΛΥΣΔΙΣ ΣΤΑ ΜΑΘΗΜΑΤΙΚΑ ΚΑΤΔΥΘΥΝΣΗΣ Γ ΛΥΚΔΙΟΥ ΓΔΥΤΔΡΑ 27 ΜΑΪΟΥ 2013

Βάσεις Δεδομέμωμ. Δξγαζηήξην Ι. Τκήκα Πιεξνθνξηθήο ΑΠΘ

ΔΙΑΓΩΝΙΣΜΑ ΣΤΗ ΦΥΣΙΚΗ. Ύλη: Εσθύγραμμη Κίνηζη

x-1 x (x-1) x 5x 2. Να απινπνηεζνύλ ηα θιάζκαηα, έηζη ώζηε λα κελ ππάξρνπλ ξηδηθά ζηνπο 22, 55, 15, 42, 93, 10 5, 12

6 η Εργαζηηριακή Άζκηζη Επαλήθεσζη Λειηοσργίας Βαζικών Φλιπ-Φλοπ

Αζθήζεηο 5 νπ θεθαιαίνπ Crash course Step by step training. Dipl.Biol.cand.med. Stylianos Kalaitzis

Τν Πξόγξακκα ζα αλαθνηλσζεί, ακέζσο κεηά ηηο γηνξηέο ηνπ Πάζρα.

α) ηε κεηαηόπηζε x όηαλ ην ζώκα έρεη κέγηζην ξπζκό κεηαβνιήο ζέζεο δ) ην κέγηζην ξπζκό κεηαβνιήο ηεο ηαρύηεηαο

Βιομησανικόρ ζσεδιαζμόρ πποϊόνηων από ανακςκλωμένερ ζςζκεςαζίερ

ΥΡΙΣΟΤΓΔΝΝΙΑΣΙΚΔ ΚΑΣΑΚΔΤΔ

1 Είζοδορ ζηο Σύζηημα ΣΔΕΔ ή BPMS

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΛΟΠΟΝΝΗΣΟΥ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΚΑΙ ΤΕΦΝΟΛΟΓΙΑΣ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ Μάθημα: Πιθανόηηηες και Σηαηιζηική Διδάζκων: Σ. Γ.

ΒΗΜΑ 2. Εηζάγεηε ηνλ Κωδηθό Πξόζβαζεο πνπ ιακβάλεηε κε SMS & δειώλεηε επηζπκεηό Όλνκα Πξόζβαζεο (Username) θαη ην ζαο

Σύνθεζη ηαλανηώζεων. Έζησ έλα ζώκα πνπ εθηειεί ηαπηόρξνλα δύν αξκνληθέο ηαιαληώζεηο ηεο ίδηαο ζπρλόηεηαο πνπ πεξηγξάθνληαη από ηηο παξαθάησ εμηζώζεηο:

Transcript:

Πξνγξακκαηηζκόο Ι (ΗΥ120) Γηάιεμε 21: Μεηαγιώηηηζε θαη ζύλδεζε πνιιαπιώλ αξρείσλ θώδηθα - Βηβιηνζήθεο

Δπαλαρξεζηκνπνίεζε θώδηθα Μεγάιν «ζηνίρεκα» ζηελ βηνκεραλία ινγηζκηθνύ. Ιδαληθά, δελ ρξεηάδεηαη λα μαλαγξάςνπκε θώδηθα πνπ έρεη ήδε γξαθηεί (από θάπνηνπο άιινπο). Πώο ρξεζηκνπνηνύκε θώδηθα πνπ ππάξρεη; Πξνζέγγηζε Α: αληηγξάθνπκε ηνλ πεγαίν θώδηθα, θάλνληαο ίζσο πξνζαξκνγέο γηα ηηο αλάγθεο καο. Πξνζέγγηζε Β: θαινύκε ηνλ εθηειέζηκν θώδηθα, πεξλώληαο ηηο παξακέηξνπο πνπ ρξεηάδνληαη ζύκθσλα κε ηηο νδεγίεο ρξήζεο / πεξηγξαθή ιεηηνπξγηθόηεηαο ηνπ. Τν Β απαηηεί κεραληζκό ζύλδεζεο θώδηθα πνπ έρεη ήδε κεηαθξαζηεί κε ηνλ θώδηθα πνπ γξάθνπκε. 2

Γνκεκέλε αλάπηπμε ζπζηεκάηωλ Ο θώδηθαο ελόο πνιύπινθνπ ζπζηήκαηνο αλαπηύζζεηαη ζηαδηαθά, «ρηίδνληαο» λέα ιεηηνπξγηθόηεηα πάλσ ζηελ ήδε ππάξρνπζα. Πωο ρξεζηκνπνηνύκε ππάξρνπζα ιεηηνπξγηθόηεηα; Mέζσ ηεο αληίζηνηρεο δηεπαθήο πξνγξακκαηηζκνύ (programming interface ή/θαη application programming interface API). Σην πιηθό απηό γίλεηαη κέζσ ηεο αληίζηνηρεο θπζηθήο δηεπαθήο (physical interface): π.ρ. πηλάθηα, θαιώδηα. Πξέπεη λα ηεξνύληαη πνιύ ζπγθεθξηκέλνη θαλόλεο αιιειεπίδξαζεο, ζύκθσλα κε ηηο αληίζηνηρεο πξνδηαγξαθέο ρξήζεο. 3

0A1F68CED90B3020D85F1397C 5D90A3120D35F1197FFFF0131 D28CEB95F3420C85C11100 00B19D5711C210AA00B5A911F F2F8D9C5B3B20B851A0AC10 4 void init(int); int rnd(); hardware interface software interface

hardware documentation 5 void init(int); /* initialize random number generator with a seed; call once, before rnd */ int rnd(void); /* returns next random number */ software documentation

Γηεπαθή Λνγηζκηθνύ Απνηειείηαη (θπξίσο) από δειώζεηο ζηαζεξώλ, κεηαβιεηώλ θαη ζπλαξηήζεσλ. Κάζε ζπλάξηεζε ρξεζηκεύεη γηα έλα ζπγθεθξηκέλν ζθνπό π.ρ. ηελ εθηέιεζε θάπνηαο ιεηηνπξγηθόηεηαο. Η ζεκαζία / θσδηθνπνίεζε ησλ παξακέηξσλ θαη ιεηηνπξγηθόηεηα ησλ ζπλαξηήζεσλ νξίδεηαη κέζσ θαηάιιεισλ πξνδηαγξαθώλ (ηεθκεξίσζε). Γηα λα ρξεζηκνπνηήζνπκε έλα ηκήκα ινγηζκηθνύ, πξέπεη Να ην ζπλδέζνπκε θαηάιιεια κε ην πξόγξακκα καο Να «θαινύκε» ηηο ζπλαξηήζεηο ζύκθσλα κε ηηο πξνδηαγξαθέο. 6

Η Λνγηθή ηνπ Μαύξνπ Κνπηηνύ (Black Box) Μαο ελδηαθέξεη ε ιεηηνπξγηθόηεηα ηνπ θώδηθα πνπ ρξεζηκνπνηνύκε Όρη νη «εζσηεξηθέο» ιεπηνκέξεηεο πινπνίεζεο ηεο. Λνγηθή ηνπ black-box: γλσξίδνπκε ην πσο πξέπεη λα ρξεζηκνπνηήζνπκε θάηη ρωξίο απαξαίηεηα λα γλσξίδνπκε θαη ην πσο (αθξηβώο) απηό «δνπιεύεη». Π.ρ. όηαλ νδεγνύκε, αιιάδνπκε ηαρύηεηεο κε ηνλ κνριό ηαρπηήησλ ζύκθσλα κε θάπνηνπο απινύο(;) θαλόλεο ρωξίο λα γλσξίδνπκε ην πσο ιεηηνπξγεί εζσηεξηθά ν κεραληζκόο επηινγήο / κεηάδνζεο. Π.ρ. ρξεζηκνπνηνύκε κηα ζπλάξηεζε κε βάζε ηελ πεξηγξαθή ηεο ιεηηνπξγηθόηεηαο ηεο (manuals) ρωξίο λα γλσξίδνπκε ην πσο απηή πινπνηείηαη. 7

διεπαθή σπήζηρ 8 εζωηερική ςλοποίηζη λειηοςπγικόηηηαρ (πος δεν βλέπει ο εξωηεπικόρ παπαηηπηηήρ/σπήζηηρ) περιγραθή διεπαθήρ (οδηγίερ σπήζηρ) black box

9 σλοποίηζη ζσζηήμαηος διεύθσνζης περιγραθή διεπαθήρ οι ηποσοί ζηπίβοςν ππορ ηην καηεύθςνζη πος ζηπίβειρ ηο ηιμόνι black box

P1x compiler x -> y P1 y 10 P2x compiler x -> y P2 y P1 y P2 y linker P y CPU y

Σηαηηθή Γηαζύλδεζε P1 P linker P1 P 11 P2 P linker P2 P P3 P linker P3 P

Γπλακηθή Γηαζύλδεζε P1 linker P1 12 P P2 linker P2 P P P3 linker P3 P

Αλάπηπμε απηόλνκωλ ηκεκάηωλ ινγηζκηθνύ Σρεδίαζε πξνγξακκαηηζηηθήο δηεπαθήο: απνθαζίδνπκε ην πσο ζα ρξεζηκνπνηεζεί (πξνγξακκαηηζηηθά) ε ιεηηνπξγηθόηεηα. Καηαζθεπή header file: νξηζκόο ηεο δηεπαθήο κε ηελ κνξθή ελόο header file πνπ ζα ρξεζηκνπνηεζεί (θπξίσο) από ηα πξνγξάκκαηα «πειάηεο». Καηαζθεπή πινπνίεζεο: ζε μερσξηζηό αξρείν πινπνηνύκε ηε ιεηηνπξγηθόηεηα, όπσο νξίδεηαη ζην header file, πνπ κεηαθξάδεηαη γηα λα δεκηνπξγεζεί ην ηκήκα θώδηθα πνπ ζα ζπλδεζεί (αξγόηεξα) κε ηνλ θώδηθα από ηα πξνγξάκκαηα «πειάηεο». 13

Header files ζηελ C Η δηεπαθή πξνγξακκαηηζκνύ ζηελ C νξίδεηαη κέζσ ελόο header file, πνπ πεξηέρεη (α) νξηζκνύο ηύπσλ δεδνκέλσλ, (β) δειώζεηο ζηαζεξώλ θαη θαζνιηθώλ κεηαβιεηώλ, θαη (γ) δειώζεηο ζπλαξηήζεσλ. Οη δειώζεηο κεηαβιεηώλ θαη ζπλαξηήζεσλ πξέπεη λα έρνπλ ηνλ πξνζδηνξηζκό extern, ππνδεηθλύνληαο ζηνλ κεηαγισηηηζηή όηη νη αληίζηνηρεο πινπνηήζεηο ηνπο δελ βξίζθνληαη απαξαίηεηα ζην ίδην αξρείν. Κάλνληαο #include έλα header file, ην πξόγξακκα κπνξεί λα ρξεζηκνπνηεί ηύπνπο, κεηαβιεηέο θαη ζπλαξηήζεηο πνπ πινπνηνύληαη ζε μερωξηζηό ηκήκα ινγηζκηθνύ (ηνλ πεγαίν θώδηθα ηνπ νπνίνπ κπνξεί λα κελ γλσξίδνπκε) θαη λα κεηαθξαζηεί επηηπρώο. 14

Σύλδεζε Όηαλ έλα πξόγξακκα κεηαθξάδεηαη κε βάζε ηηο δειώζεηο πνπ πεξηέρεη έλα header file, ν θώδηθαο πνπ παξάγεηαη από ηνλ κεηαθξαζηή πεξηέρεη αλαθνξέο ζε εμωηεξηθέο κεηαβιεηέο θαη ζπλαξηήζεηο. Γηα λα παξαρζεί ν ηειηθόο εθηειέζηκνο θώδηθαο, απαηηείηαη κηα επηπιένλ δηαδηθαζία ελζωκάηωζεο ησλ νξηζκώλ θαη πινπνηήζεσλ ηνπο, πνπ βξίζθνληαη ζε θάπνην άιιν αξρείν πνπ έρεη ήδε κεηαθξαζηεί. Απηή ε δηαδηθαζία νλνκάδεηαη ζύλδεζε (linking). Αθνύ ν κεηαθξαζκέλνο θώδηθαο ζπλδεζεί κε όια ηα ππόινηπα κεηαθξαζκέλα ηκήκαηα πνπ παξέρνπλ ηνπο νξηζκνύο / πινπνηνύλ ησλ εμσηεξηθώλ κεηαβιεηώλ / ζπλαξηήζεσλ, δεκηνπξγείηαη ην ηειηθό εθηειέζηκν. 15

/* foo.h */ extern int i; extern void boo(); 16 ςλοποιείηαι από σπηζιμοποιείηαι από /* foo.c */ #include "foo.h" int i=0; /* main.c */ #include "foo.h" int main(int argc, char *argv[]) { void boo() { i++; boo(); i++; boo();

/* foo.h */ extern int i; extern void boo(); /* foo.c */ #include "foo.h" int i=0; void boo() { i++; /* foo.c */ #include /* foo.h foo.h */ extern int i; extern void boo(); int i=0; void boo() { i++; /* foo.o */ ------------ 17 i -> 0 boo -> 5 ------------ 0 1 2 3 4 5 6 7 8 > gcc foo.c c o foo.o >

/* foo.h */ /* main.c */ extern int i; #include "foo.h" extern void boo(); /* foo.h */ /* main.c */ #include "foo.h" int main( ) { boo(); i++; boo(); extern int i; extern void boo(); int main( ) { boo(); i++; boo(); 18 /* main.o */ ------------ i ->??? boo ->??? ------------ 0 boo 1 i 2 3 i 4 boo > gcc main.c c o main.o >

/* main.o */ ------------ i ->??? boo ->??? ------------ 0 boo 1 i 2 3 i 4 boo + /* foo.o */ ------------ i -> 0 boo -> 5 ------------ 0 1 2 3 4 5 6 7 8 /* test */ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 19 > gcc main.o foo.o o test >

Πεξηζζόηεξα γηα ην extern Ο πξνζδηνξηζκόο extern ρξεζηκνπνηείηαη γηα ηηο δειώζεηο εμωηεξηθώλ κεηαβιεηώλ / ζπλαξηήζεσλ, πνπ νξίδνληαη / πινπνηνύληαη ζε έλα άιιν αξρείν. Η παξάιεηςε ηνπ extern ζε δήισζε ζπλάξηεζεο (πνπ δελ πινπνηείηαη ηνπηθά) νδεγεί ζε αλαδήηεζε γηα «ηαηξηαζηή» πινπνίεζε ηεο ζπλάξηεζεο ζηα αξρεία κε ηα νπνία γίλεηαη ζύλδεζε ηνπ θώδηθα. Η παξάιεηςε ηνπ extern ζε δήισζε (θαζνιηθήο) κεηαβιεηήο δελ εγγπάηαη ηνπηθόηεηα Aλ κηα άιιε θαζνιηθή κεηαβιεηή δειώλεηαη ζε άιιν αξρείν κε ην ίδην όλνκα, θαηά ηελ δηαζύλδεζε νη αλαθνξέο ζε απηό ην όλνκα ζα αθνξνύλ ηελ ίδηα ζέζε κλήκεο. 20

/* a.c */ int i; void incval() { i++; > gcc a.c c o a.o > gcc b.c c o b.o > gcc a.o b.o o test > >./test 15 16 > /* b.c */ extern void incval(); int main(int argc, char *argv[]) { extern int i; i=15; incval(); 21

/* a.c */ int i; void incval() { i++; > gcc a.c c o a.o > gcc b.c c o b.o > gcc a.o b.o o test > >./test 15 15 > /* b.c */ extern void incval(); int main(int argc, char *argv[]) { int i; i=15; incval(); 22

/* a.c */ int i; void incval() { i++; /* b.c */ extern int i; extern void incval(); int main(int argc, char *argv[]) { i=15; incval(); 23 > gcc a.c c o a.o > gcc b.c c o b.o > gcc a.o b.o o test > >./test 15 16 >

/* a.c */ extern int i; void incval() { i++; /* b.c */ int i; extern void incval(); int main(int argc, char *argv[]) { i=15; incval(); 24 > gcc a.c c o a.o > gcc b.c c o b.o > gcc a.o b.o o test > >./test 15 16 >

/* a.c */ extern int i; void incval() { i++; /* b.c */ extern int i; extern void incval(); int main(int argc, char *argv[]) { i=15; incval(); 25 > gcc a.c c o a.o > gcc b.c c o b.o > gcc a.o b.o o test undefined reference to i >

26 όκσο...

/* a.c */ int i; void incval() { i++; /* b.c */ int i; extern void incval(); int main(int argc, char *argv[]) { i=15; incval(); 27 > gcc a.c c o a.o > gcc b.c c o b.o > gcc a.o b.o o test 15 16 >

/* a.c */ int i; void incval() { i++; /* b.c */ int i; void incval(); int main(int argc, char *argv[]) { i=15; incval(); 28 > gcc a.c c o a.o > gcc b.c c o b.o > gcc a.o b.o o test 15 16 >

/* a.c */ int i; void incval() { i++; /* b.c */ int i; int main(int argc, char *argv[]) { i=15; incval(); 29 > gcc a.c c o a.o > gcc b.c c o b.o > gcc a.o b.o o test >./test 15 16 >

Πεξηζζόηεξα γηα ην static Πσο απνθεύγνπκε κηα θαζνιηθή κεηαβιεηή ή/θαη ζπλάξηεζε πνπ πινπνηνύκε απνθιεηζηηθά γηα ηνπο ζθνπνύο ηνπ ηνπηθνύ θώδηθα ζε έλα αξρείν λα «πξνζπειαζζεί» (θαηά ιάζνο) κέζα από θώδηθα πνπ βξίζθεηαη ζε άιιν αξρείν; Με ηνλ πξνζδηνξηζκό static επηηπγράλεηαη ε επηζπκεηή ηνπηθόηεηα, δειαδή ε εκβέιεηα ησλ θαζνιηθώλ κεηαβιεηώλ / ζπλαξηήζεσλ πεξηνξίδεηαη ζην αξρείν όπνπ απηέο δειώλνληαη / πινπνηνύληαη. Δίλαη αδύλαην λα γίλεη αλαθνξά ζε απηέο (είηε επίηεδεο είηε θαηά ιάζνο) κέζα από θώδηθα πνπ βξίζθεηαη ζε έλα άιιν αξρείν. 30

/* a.c */ int i; void incval() { i++; /* b.c */ static int i; extern void incval(); int main(int argc, char *argv[]) { i=15; incval(); 31 > gcc a.c c o a.o > gcc b.c c o b.o > gcc a.o b.o o test > >./test 15 15 >

/* a.c */ static int i; void incval() { i++; /* b.c */ int i; extern void incval(); int main(int argc, char *argv[]) { i=15; incval(); 32 > gcc a.c c o a.o > gcc b.c c o b.o > gcc a.o b.o o test > >./test 15 15 >

/* a.c */ static int i; void incval() { i++; /* b.c */ extern int i; extern void incval(); int main(int argc, char *argv[]) { i=15; incval(); 33 > gcc a.c c o a.o > gcc b.c c o b.o > gcc a.o b.o o test undefined reference to i >

/* a.c */ int i; static void incval() { i++; /* b.c */ extern int i; extern void incval(); int main(int argc, char *argv[]) { i=15; incval(); 34 > gcc a.c c o a.o > gcc b.c c o b.o > gcc a.o b.o o test undefined reference to incval >

/* a.c */ int i; static void incval() { i++; /* b.c */ extern int i; int main(int argc, char *argv[]) { i=15; incval(); 35 > gcc a.c c o a.o > gcc b.c c o b.o > gcc a.o b.o o test undefined reference to incval >

Έλα «κηθξό» πξόβιεκα Όηαλ έλαο θώδηθαο Α νξίδεη κεηαβιεηέο θαη πινπνηεί ζπλαξηήζεηο κε ζθνπό απηέο λα ρξεζηκνπνηεζνύλ κέζα από νπνηνδήπνηε άιιν θώδηθα, ηόηε απηέο δελ κπνξεί λα δεισζνύλ σο static. Όηαλ ν θώδηθαο Α ζπλδεζεί κε έλα άιιν θώδηθα Β, νη κεηαβιεηέο / ζπλαξηήζεηο ηνπ Α είλαη δηαζέζηκεο γηα ζύλδεζε κε αληίζηνηρεο (άκεζεο ή έκκεζεο) εμσηεξηθέο δειώζεηο πνπ ππάξρνπλ ζηνλ Β. Αλ νη εμσηεξηθέο δειώζεηο ηνπ Β έρνπλ πξνθύςεη από ιάζνο (π.ρ. παξάιεηςε πξνζδηνξηζκνύ static ζε δήισζε θαζνιηθήο κεηαβιεηήο / ζπλάξηεζεο ή παξάιεηςε δήισζεο θαη πινπνίεζεο ζπλάξηεζεο), ε δηαζύλδεζε ζα νδεγήζεη ζε ιάζνο απνηέιεζκα. 36

Η ξίδα ηνπ πξνβιήκαηνο Αλαθνξά ζε εμσηεξηθέο κεηαβιεηέο / ζπλαξηήζεηο γίλεηαη κε βάζε έλαλ επίπεδν ρώξν νλνκάησλ, όπνπ δελ κπνξεί λα απνθιεηζζεί ε ηπραία ρξήζε ηνπ ίδηνπ νλόκαηνο από δηαθνξεηηθά ηκήκαηα θώδηθα. Ο πξνγξακκαηηζηήο δελ έρεη ηε δπλαηόηεηα λα πξνζδηνξίζεη ην ηκήκα ινγηζκηθνύ ην νπνίν ζα πξέπεη λα παξέρεη ηνλ νξηζκό / πινπνίεζε κηαο εμσηεξηθήο κεηαβιεηήο / ζπλάξηεζεο. Άιιεο γιώζζεο ιύλνπλ ην πξόβιεκα δίλνληαο ζε θάζε ηκήκα ινγηζκηθνύ έλα κνλαδηθό όλνκα κε βάζε ην νπνίν άιια ηκήκαηα θώδηθα κπνξεί λα αλαθέξνληαη (ρσξίο πηζαλόηεηα ιάζνπο) ζε κεηαβιεηέο θαη ζπλαξηήζεηο πνπ απηό πξνζθέξεη. 37

Βηβιηνζήθεο Τκήκαηα ινγηζκηθνύ γεληθήο ρξεζηκόηεηαο, πνπ έρνπλ ζρεδηαζηεί κε ζθνπό λα δηεπθνιύλεη ηελ αλάπηπμε δηαθνξεηηθώλ εθαξκνγώλ. Αλαπηύζζνληαη όπσο έλα (ζπκβαηηθό) αλεμάξηεην ηκήκα ινγηζκηθνύ, Με μερσξηζηή κεηάθξαζε θαη (εθ ησλ πζηέξσλ) ζύλδεζε κε ηνλ θώδηθα ησλ πξνγξακκάησλ πνπ ηηο ρξεζηκνπνηνύλ. Οη βηβιηνζήθεο ρξεζηκνπνηνύληαη από ηνπο πξνγξακκαηηζηέο ρωξίο γλώζε γηα ηελ εζσηεξηθή πινπνίεζε ηνπο (black box). Τεθκεξηώλνληαη κέζα από αλαιπηηθέο πεξηγξαθέο ρξήζεο ηεο πξνγξακκαηηζηηθήο δηεπαθήο ηνπο βιέπε εγρεηξίδηα & βηβιία πξνγξακκαηηζκνύ. 38

Αθεξεκέλνο Τύπνο Γεδνκέλωλ (ΑΤΓ) 39 Δίλαη ε πινπνίεζε λέαο ιεηηνπξγηθόηεηαο ζηελ κνξθή ελόο λένπ ηύπνπ δεδνκέλωλ (ζπλήζσο σο έλα black box). Δίλαη έλα ηκήκα ινγηζκηθνύ πνπ θηηάρλεηαη μερσξηζηά, θαη κπνξεί λα ρξεζηκνπνηεζεί κέζσ κηαο (ηεθκεξησκέλεο) δηεπαθήο.

Παξάδεηγκα: Πνιύ κεγάινη αθέξαηνη Λεηηνπξγηθόηεηα γηα αθεξαίνπο αιιά γηα πνιύ κεγάιεο ηηκέο, πνπ ππεξβαίλνπλ (θαηά πνιύ) ηα όξηα ησλ κεγάισλ αθεξαίσλ ηνπ επεμεξγαζηή καο. Μπνξνύκε λα εηζάγνπκε έλα λέν ηύπν δεδνκέλσλ VeryBigInt σο ΑΤΓ, π.ρ. κε πξάμεηο γηα ηελ: αξρηθνπνίεζε κεηαβιεηώλ πξόζζεζε θαη αθαίξεζε κεηαβιεηώλ θιπ Ο πξνγξακκαηηζηήο ρξεζηκνπνηεί ηελ παξαπάλσ ιεηηνπξγηθόηεηα ρσξίο λα λνηάδεηαη γηα ην πσο απηή πινπνηείηαη «εζσηεξηθά» ζηνλ ΑΤΓ. 40

διεπαθή για ηον ηύπο VeryBigInt typedef VeryBigInt; void vbi_set(verybigint *i, char *s); char *vbi_get(verybigint *i); 41 int vbi_add(verybigint *i1, const VeryBigInt *i2); int vbi_diff(verybigint *i1, const VeryBigInt *i2); vbi_set vbi_get vbi_add vbi_diff ανηικείμενο VeryBigInt ωρ black box

/* ελδεηθηηθή δηεπαθή γηα ΑΤΔ VeryBigInt */ typedef VeryBigInt; int vbi_set(verybigint *i, char *s); /* αξρηθνπνηεί ηελ κεηαβιεηή κε βάζε ηελ αθέξαηα ηηκή πνπ πεξληέηαη ωο αιθαξηζκεηηθό, θαη επηζηξέθεη 1 / 0 γηα επηηπρία / απνηπρία */ 42 char *vbi_get(verybigint *i); /* επηζηξέθεη ηελ ηηκή ωο αιθαξηζκεηηθό, ε κλήκε ηνπ νπνίνπ πξέπεη λα απνδεζκεπηεί από ηνλ θαιώλ θώδηθα */ int vbi_add(verybigint *i1, const VeryBigInt *i2); /* i1 = i1 + i2 θαη επηζηξέθεη 1 γηα επηηπρία ή 0 αλ μεπεξαζηεί ην ππνζηεξηδόκελν πεδίν ηηκώλ */ int vbi_diff(verybigint *i1, const VeryBigInt *i2); /* i1 = i1 - i2 θαη επηζηξέθεη 1 γηα επηηπρία ή 0 αλ μεπεξαζηεί ην ππνζηεξηδόκελν πεδίν ηηκώλ */

int main(int argc, char *argv[]) { int res; VeryBigInt i1,i2; char s[512],*s2; scanf("%511s,s); res=vbi_set(&i1,s); if (!res) { printf("set error for %s\n",s); return; 43 scanf("%511s,s); res=vbi_set(&i2,s); if (!res) { printf("set error for %s\n",s); return; res=vbi_add(&i1,&i2); if (!res) { printf("range error\n"); return; s2=vbi_get(&i1); printf("%s\n",s2); free(s2);

Δλδεηθηηθή Υινπνίεζε Κάζε κεηαβιεηή αληηζηνηρεί ζε έλα πίλαθα από ραξαθηήξεο, ζηνλ νπνίν απνζεθεύνληαη ηα δεθαδηθά ςεθία ηεο ηξέρνπζαο ηηκήο σο απινί ραξαθηήξεο. Τν πξόζεκν ηεο ηηκήο απνζεθεύεηαη ζηνλ πίλαθα. Η vbi_set αξρηθνπνηεί ηνλ πίλαθα κε βάζε ην αιθαξηζκεηηθό πνπ πεξληέηαη ζαλ παξάκεηξνο. Η vbi_get δεζκεύεη έλα πίλαθα ραξαθηήξσλ ζηε δπλακηθή κλήκε θαη απνζεθεύεη ηελ ηηκή σο θαλνληθό (εθηππώζηκν) αιθαξηζκεηηθό (κε ηεξκαηηθό). Οη vbi_add θαη vbi_diff πινπνηνύλ ηηο πξάμεηο κε ζπκβνιηθό ηξόπν ςεθίν πξνο ςεθίν.. 44

VeryBigInt i; vbi_set(&i,"-1234"); 45 0 N-1 '-' '0' '0' '1' '2' '3' '4' '5'

Παξάδεηγκα: Τύπνο Date Λεηηνπξγηθόηεηα γηα ηε δηαρείξηζε εκεξνκεληώλ. ΑΤΓ Date, π.ρ. κε πξάμεηο γηα ηελ: αλάζεζε ηηκήο ζε κεηαβιεηή εμαγσγή ηηκήο από κεηαβιεηή αύμεζε κεηαβιεηήο θαηά έλα (κηα κέξα) ζύγθξηζε ησλ ηηκώλ δύν κεηαβιεηώλ Θέινπκε ν πξνγξακκαηηζηήο λα ρξεζηκνπνηεί ηελ παξαπάλσ ιεηηνπξγηθόηεηα ρσξίο λα λνηάδεηαη γηα ην πσο απηή πινπνηείηαη «εζσηεξηθά» ζηνλ ΑΤΓ. 46

διεπαθή για ηον ηύπο Date typedef Date; int date_set(date *dt, int d, int m, int y); void date_get(date *dt, int *d, int *m, int *y); void date_inc(date *dt); int date_diff(date *dt1, Date *dt2); 47 date_set date_get date_inc ανηικείμενο Date ωρ black box date_diff

#define OK 0 #define ILLEGAL_DAY_VALUE -1 #define ILLEGAL_MONTH_VALUE -2 #define ILLEGAL_YEAR_VALUE -3 typedef struct { int day,month,year; Date; 48 int date_set(date *dt, int d, int m, int y); /* αξρηθνπνηεί ηελ κεηαβιεηή κε ηηο ηηκέο πνπ δίλνληαη ζαλ παξάκεηξνη, θαη επηζηξέθεη 0 γηα επηηπρία, δηαθνξεηηθά ηηκή < 0 */ void date_get(const Date *dt, int *d, int *m, int *y); /* απνζεθεύεη ηελ ηηκή ηεο κεηαβιεηήο ζηηο κεηαβιεηέο πνπ δίλνληαη ζαλ παξάκεηξνη */ void date_inc(date *dt); /* πξνρωξά ηελ ηηκή ηεο κεηαβιεηήο θαηά 1 κέξα */ int date_diff(const Date *dt1, const Date *dt2); /* επηζηξέθεη ηε δηαθνξά ηεο εκεξνκελίαο dt2 από ηελ εκεξνκελία dt1, ζε αξηζκό ηωλ εκεξώλ */

Γεκηνπξγία Σηαηηθήο Βηβιηνζήθεο Γεκηνπξγία ηεο πξνγξακκαηηζηηθήο δηεπαθήο θαη ηνπ αληίζηνηρνπ header file. Υινπνίεζε ηεο ιεηηνπξγηθόηεηαο (ζε έλα ή πεξηζζόηεξα αξρεία θώδηθα.c) Μεηαγιώηηηζε θάζε αξρείνπ θώδηθα θαη δεκηνπξγία ελόο αληίζηνηρνπ object file (.ν) gcc -Wall -c <code_filename> -o <object_filename> Γεκηνπξγία βηβιηνζήθεο ar rcs <static_library_filename> <object_filenames> Τν όλνκα ηεο ζηαηηθήο βηβιηνζήθεο πξέπεη λα αξρίδεη από lib ελώ ε θαηάιεμε ηνπ αξρείνπ πξέπεη λα είλαη.a Π.ρ. ar rcs libmy_lib.a my_lib.o 49

Φξήζε Σηαηηθήο Βηβιηνζήθεο Σπκπεξίιεςε (#include) ηνπ header file ηεο βηβιηνζήθεο Φξήζε ζηνλ θώδηθά καο ησλ ζπλαξηήζεσλ πνπ παξέρεη ε βηβιηνζήθε (όπσο ηεθκεξηώλνληαη ζηηο νδεγίεο ρξήζεο θαη ην header file) Μεηαγιώηηηζε & ζύλδεζε: gcc......... -l<όλνκα βηβιηνζήθεο> -L<ηνπνζεζία_βηβιηνζήθεο> Από ην όλνκα βηβιηνζήθεο αθαηξνύκε ην lib θαη ην.a Π.ρ. gcc my_code.c -o my_code -lmy_lib -L. 50