Εισαγωγή ΕΙΣΑΓΩΓΗ. Γεώργιος Παπαϊωάννου ( )

Σχετικά έγγραφα
Προγραμματισμός Υπολογιστών με C++

Εισαγωγή στο προγραμματιστικό περιβάλλον ANSI

Ηλεκτρονικοί Υπολογιστές

Προγραμματισμός Υπολογιστών με C++

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

Προγραμματισμός Υπολογιστών με C++

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

Βασίλειος Κοντογιάννης ΠΕ19

Πληροφορική 2. Γλώσσες Προγραμματισμού

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

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

Κεφάλαιο 1 Εισαγωγή στη C

Αρχεία Κεφαλίδων ΑΡΧΕΙΑ ΚΕΦΑΛΙΔΩΝ. Γεώργιος Παπαϊωάννου ( )

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά

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

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

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

Προγραμματισμός Υπολογιστών με C++

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

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

ΚΕΦΑΛΑΙΟ 6. Περιβάλλοντα Ανάπτυξης Εφαρμογών. ΚΕΦΑΛΑΙΟ 6 Περιβάλλοντα Ανάπτυξης Εφαρμογών. Α Γενικού Λυκείου

Λειτουργικά Συστήματα

Αντικειµενοστρεφής Προγραµµατισµός

Προγραµµατισµός Ι Εισαγωγή Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Προγραµµατισµός Ι Νικόλαος Δ. Τσελίκας

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

Αντικειμενοστραφής Προγραμματισμός

Είναι μια αλληλουχία κατάλληλων οδηγιών(εντολών) που εκτελεί ο υπολογιστής για την επίλυση ενός προβλήματος.

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

ΔΗΜΙΟΥΡΓΙΑ & ΧΡΗΣΗ ΒΙΒΛΙΟΘΗΚΩΝ

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

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

Αντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Δομή του προγράμματος. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Τελεστές ΤΕΛΕΣΤΕΣ. Γεώργιος Παπαϊωάννου ( )

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

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

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

Αντικειμενοστρεφής Προγραμματισμός

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

ΔΕΙΚΤΕΣ ΚΑΙ ΔΙΕΥΘΥΝΣΕΙΣ

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

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

ΠΟΛΥΜΟΡΦΙΣΜΟΣ. 4.1 Κληρονομικότητα και Αρχή της Υποκατάστασης

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

Στοιχειώδης προγραμματισμός σε C++

Εισαγωγή στην επιστήμη των υπολογιστών

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική II. Ενότητα 3 : Γλώσσες προγραμματισμού. Δρ.

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου

Βασικές Αρχές Προγραμματισμού

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

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

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

<<ΔΗΜΗΤΡΗΣ ΜΑΝΩΛΗΣ ΦΥΣΙΚΟΣ ΜCs>> 1

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Συναρτήσεις I Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

. Μεθοδολογία Προγραμματισμού. Εισαγωγή στη Java. Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014

Αναφορές, είκτες και Αλφαριθμητικά

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

MIPS Interactive Learning Environment. MILE Simulator. Version 1.0. User's Manual

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Συναρτήσεις II Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Η εντολή if-else. Η απλή μορφή της εντολής if είναι η ακόλουθη: if (συνθήκη) { Η γενική μορφή της εντολής ifelse. εντολή_1; εντολή_2;..

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

Εντολές εισόδου - εξόδου. Εισαγωγή στη C++

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό

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

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

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ

Προγραμματισμός ΙΙ. Ενότητα 9: Πρότυπες συναρτήσεις και πρότυπες κλάσεις - Μέρος 1 Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Περιεχόμενα. Πρόλογος... 21

ΚΑΤΑΝΟΗΣΗ ΑΝΑΛΥΣΗ ΕΠΙΛΥΣΗ. Ο προγραμματισμός ασχολείται με το σύνολο των εντολών που δίνονται στον υπολογιστή ώστε να υλοποιείται ο αλγόριθμος.

Προγραμματισμός Υπολογιστών με C++

Κλάσεις και Αντικείµενα

Προγραμματισμός Υπολογιστών με C++

Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 9ο Γλώσσες Προγραμματισμού

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

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

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών

2.1 Αντικειµενοστρεφής προγραµµατισµός

Αντικειμενοστρεφής Προγραμματισμός

Μαλούτα Θεανώ Σελίδα 1

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

Συμβολοσειρές ΣΥΜΒΟΛΟΣΕΙΡΕΣ. Γεώργιος Παπαϊωάννου ( )

Κεφάλαιο : Εισαγωγή στην C. ( ιαλέξεις 3-4) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

Προγραμματισμός Υπολογιστών με C++

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Τύποι δεδομένων, μεταβλητές, πράξεις. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ. Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης

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

Ανάπτυξη Plugins για το AgentSheets

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 26/2/2008

Γενικά περί υπολογιστών

Προγραμματισμός Υπολογιστών με C++

Προγραμματισμός Χειμερινό Εξάμηνο 2014

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

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

Περιεχόμενα. Λίγα λόγια για αυτή την έκδοση... 23

ΚΕΦΑΛΑΙΟ 2: Τύποι δεδομένων και εμφάνιση στοιχείων...33

Transcript:

ΕΙΣΑΓΩΓΗ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr

Περιγραφή: Εισαγωγή στη C++ Ιστορικά στοιχεία για τη C/C++ Ένα βασικό πρόγραμμα Μεταγλώττιση ενός προγράμματος Τελευταία ενημέρωση: Σεπτέμβριος 2016 Εισαγωγή - 2

Δεκαετία '70: Ο D. Ritchie δημιουργεί στα Bell Labs τη C επηρεασμένος από τις B και BCPL. Η C χρησιμοποιείται στην ανάπτυξη του UNIX Υποκαθιστά σε πολλές περιπτώσεις τη χρήση συμβολογλώσσας (assembly) 1978: The C Programming Language των Kernighan & Ritchie Δεκαετία '80: Η C σταδιακά κυριαρχεί Πρώτα πρότυπα ANSI C (1989) και ISO C (1999) Εισαγωγή - 3

Δεκαετία '80: Ο B. Stroustrup δημιουργεί στα Bell Labs την C++ ως επέκταση της C. Η C++ υποστηρίζει αντικειμενοστρεφή, διαδικασιακό και γενικευμένο προγραμματισμό. Πρώτο πρότυπο ANSI/ISO C++ (1998). Κοινά υλοποιημένο πρότυπο: C++11 (2011) Πρόσφατο νέο πρότυπο ISO C++14 (2014). Πολλοί μεταγλωττιστές υποστηρίζουν ήδη τις περισσότερες προσθήκες της C++14 H C είναι περίπου υποσύνολο της C++, αλλά υπάρχουν εξαιρέσεις και πρακτικές της C που δεν συνιστώνται στην C++. Εισαγωγή - 4

Δεκαετία '90: Η Sun (τώρα μέρος της Oracle) δημιουργεί την Java, δανειζόμενη πολλά στοιχεία από τη C++ Παρόλο που η Java μοιάζει με τη C++, πρόκειται για διαφορετικές γλώσσες. Π.χ: Η C++ επιτρέπει συναρτήσεις που δεν είναι μέθοδοι κλάσεων Η C++ επιτρέπει τη χρήση δεικτών και δεν παρέχει αυτόματη αποκομιδή απορριμμάτων (Η C++11 καθορίζει μηχανισμούς αποκομιδής απορριμάτων, αλλά η υποστήριξή τους από τους μεταγλωττιστές είναι προαιρετική) Ο κάθε μεταγλωττιστής της C++ παράγει εκτελέσιμο κώδικα για συγκεκριμένο ρεπερτόριο εντολών επεξεργαστή C++: περισσότερες δυνατότητες, πιο δύσκολη Εισαγωγή - 5

Ο μεταγλωττιστής της C/C++ παράγει τελικά εκτελέσιμο κώδικα σε γλώσσα μηχανής Εκτελέσιμα αρχεία (π.χ..exe στα Windows) Βιβλιοθήκες εκτελέσιμου κώδικα Στατικές (.lib στα Windows,.o στο Unix/Linux) Δυναμικές (.dll στα Windows,.so στο Unix/Linux) Τα εκτελέσιμα μπορούν να φορτωθούν ως αυτόνομα προγράμματα και να εκτελεστούν απευθείας σε μια συγκεκριμένη αρχιτεκτονική (π.χ. Win32, x64 κλπ) Τα εκτελέσιμα αρχεία δεν είναι μεταφέρσιμα σε άλλα λειτουργικά συστήματα (π.χ. από Windows σε Linux) Εισαγωγή - 6

part1.cpp, part2.cpp, Προεπεξεργαστής (preprocessor) Μεταγλωττιστής (compiler) ~part1.cpp, ~part2.cpp, Τροποποιημένος πηγαίος κώδικας (σε C/C++) part1.o, part2.o, Αρχεία αντικειμενικού κώδικα (κωδ. μηχανής) Συνδέτης (linker) Αρχείο εκτελέσιμου κώδικα (κώδικας μηχανής) Βιβλιοθήκες (κωδ. μηχανής) Myprogram.exe library1.lib, lib2.dll, Εισαγωγή - 7

part1.cpp, part2.cpp, Προεπεξεργαστής (preprocessor) Μεταγλωττιστής (compiler) ~part1.cpp, ~part2.cpp, Τροποποιημένος πηγαίος κώδικας (σε C/C++) part1.o, part2.o, Αρχεία αντικειμενικού κώδικα (κωδ. μηχανής) Συνδέτης (linker) Αρχείο εκτελέσιμης βιβλιοθήκης (κώδικας μηχανής) Βιβλιοθήκες (κωδ. μηχανής) Mylibrary.lib library1.lib, lib2.dll, Εισαγωγή - 8

C++ Java Ύπαρξη σταδίου προεπεξεργασίας του κώδικα Ο μεταγλωττιστής παράγει κώδικα μηχανής Τα αρχεία αντικειμενικού κώδικα αντιστοιχούν σε αρχεία C/C++ Η σύνδεση του κώδικα γίνεται κατά τη δημιουργία του προγράμματος (*) Δεν υπάρχει αντίστοιχο στάδιο Ο μεταγλωττιστής παράγει bytecode Τα αρχεία που παράγει ο μεταγλωττιστής αντιστοιχούν σε κλάσεις που έχουν δηλωθεί Η σύνδεση του κώδικα και η μετατροπή σε κώδικα μηχανής γίνεται από τη JVM κατά το φόρτωμα των κλάσεων (*) Οι βιβλιοθήκες που φορτώνονται δυναμικά έχουν άλλο μηχανισμό που πάλι πραγματοποιεί ένα στάδιο σύνδεσης Εισαγωγή - 9

#include <iostream> using namespace std; // Εντολή προς τον προεπεξεργαστή. int main( ) { } cout << "Το πρώτο μου πρόγραμμα\n"; cout << "Γεια σου " << "κόσμε!" << endl; /* cout << "Αυτό δεν τυπώνεται." << endl; cout << "Ούτε και αυτό." << endl; */ return 0; // Επιστρέφεται στο λειτουργικό. Όλα καλά. Εισαγωγή - 10

Ενσωμάτωση δηλώσεων από υπάρχοντα κώδικα #include <iostream> // Εντολή προς τον προεπεξεργαστή. using namespace std; Δήλωση χρήσης του χώρου ονομάτων («πακέτου») std. Μας επιτρέπει να αναφερόμαστε στο αντικείμενο std::cout ως cout int main( ) { Κύρια συνάρτηση του προγράμματος (code entry point) cout << "Το πρώτο μου πρόγραμμα\n"; } Έναρξη εντολής προεπεξεργαστή cout << "Γεια σου " << "κόσμε!" << endl; /* cout << "Αυτό δεν τυπώνεται." << endl; cout << "Ούτε και αυτό." << endl; */ return 0; Τελεστής // Επιστρέφεται που έχει επαπροσδιοριστεί στο λειτουργικό. (όχι, δεν είναι Όλα το binary καλά. shift!) Εισαγωγή - 11

int main( ) { cout << "Το πρώτο μου πρόγραμμα\n"; return 0; } + Εξοικονόμηση γραμμών + Στοίχιση } με το όνομα int main( ) { cout << "Το πρώτο μου πρόγραμμα\n"; return 0; } + Ξεκάθαρη αντιστοίχιση { με } + Συμβατό με preprocessor conditionals - Σπάταλο σε γραμμές Πολλές παραλλαγές Βλ. http://www.riedquat.de/prog/style Υπάρχει κάποια καθιερωμένη; ΟΧΙ!! Εισαγωγή - 12

C++ Java Στον κώδικά μου ενσωματώνω (#include) δηλώσεις κώδικα από εξωτερικά αρχεία, δικά μου, άλλων ή του συστήματος Διαθέτω στάδιο προεπεξεργασίας στο οποίο: Εκτελώ «μακροεντολές» τροποίησης και εισαγωγής κώδικα (βλ. Preprocessor directives) Επιτρέπω την «υπό συνθήκη» μεταγλώττιση κώδικα Επιτρέπω την παραμετροποίηση του κώδικά μου (βλ. templates) Επιτρέπω τη χρήση διαφορετικού / εξειδικευμένου κώδικα για κάθε αρχιτεκτονική Στον κώδικά μου εισάγω (γνωστοποιώ - #import) δηλώσεις κλάσεων από άλλα πακέτα, δικά μου ή άλλων Δεν υπάρχει η έννοια της προεπεξεργασίας του κώδικα Εισαγωγή - 13

C++ Java Ο κώδικάς μου μπορεί να βρίσκεται σε μια ελεύθερη συνάρτηση ή διαδικασία που δεν ανήκει σε κάποια κλάση (π.χ. εδώ η main() ) Μπορώ να υπερφορτώσω και να επαναπροσδιορίσω όλους τους γνωστούς τελεστές σε μια κλάση, ακόμα και τους: =, <, new, [ ] Όλος ο κώδικας υποχρεωτικά εντάσσεται σε μεθόδους κάποιας κλάσης Δεν υπάρχουν «συναρτήσεις» Δεν υπάρχει η έννοια του custom τελεστή Εισαγωγή - 14

Ενσωματωμένες δηλώσεις από το iostream using namespace std; Tο #include <iostream> εισάγει εδώ τα περιεχόμενα του αρχείου κεφαλίδας iostream. Το αρχείο αυτό υπάρχει σε έναν ειδικό φάκελο του συστήματος. Περιέχει δηλώσεις που χρειάζονται π.χ. για να χρησιμοποιήσουμε το cout. int main( ) { cout << "Το πρώτο μου πρόγραμμα\n"; cout << "Γεια σου " << "κόσμε!" << endl; return 0; } Τα σχόλια απομακρύνονται Εισαγωγή - 15

#include <iostream> using namespace std; Δήλωση «ελεύθερης» συνάρτησης int compute(int arg) { } return 2 * arg; Χρήση συνάρτησης int main( ) { int i = 5; cout << compute(i) << endl << i << endl; return 0; } Εισαγωγή - 16

#include <iostream> using namespace std; int compute(int arg); Δήλωση (declaration) συνάρτησης int main( ) { int i; cin >> i; cout << compute(i) << endl; return 0; } Χρήση της συνάρτησης πριν τον προσδιορισμό (του περιεχομένου) της int compute(int arg) { return 2 * arg; } Προσδιορισμός (definition) συνάρτησης: Το σώμα μιας συνάρτησης μπορεί να δοθεί σε άλλο σημείο του κώδικα ή και σε άλλο αρχείο Εισαγωγή - 17

C++ Μια συνάρτηση (ή έναν τύπο δεδομένων π.χ. μια κλάση) μπορώ να τα δηλώσω σε ένα σημείο του κώδικα και να τα προσδιορίσω αλλού Έτσι αποσυσχετίζω τη δήλωση («υπογραφή») μιας συνάρτησης από την υλοποίησή της Μπορώ να έχω χωριστά αρχεία δηλώσεων («header» files -.h) και χωριστά αρχεία υλοποίησης (.cpp files) Java Η δήλωση μιας μεθόδου και η υλοποίησή της είναι ενοποιημένες. Μόνο οι διεπαφές και οι απροσδιόριστες μέθοδοι δε συνοδεύονται από υλοποίηση αλλά δε μπορούν να προσδιοριστούν σε κάποιο άλλο σημείο για την ίδια δήλωση κλάσης Η υλοποίηση και η δήλωση μιας κλάσης και των μεθόδων της βρίσκονται στο ίδιο αρχείο υποχρεωτικά (.java) H ονομασία ενός αρχείου δεν έχει καμία σχέση με το περιεχόμενό του Το όνομα του αρχείου πρέπει να ταυτίζεται με τη μοναδική public κλάση μέσα σε αυτό Εισαγωγή - 18

Στη C/C++ μπορώ να οργανώσω τον κώδικά μου ως μια ιεραρχική κλήση αυτόνομων συναρτήσεων ή «διαδικασιών» Η εκτέλεση ξεκινά από μία κεντρική συνάρτηση (τη main), η οποία καλεί αναδρομικά με τη σειρά όλες τις περιεχόμενες συναρτήσεις Μια «αμιγής» διαδικασία (procedure) μπορεί να είναι μια συνάρτηση που δεν επιστρέφει τίποτα (void) Εισαγωγή - 19

#include <iostream> using namespace std; void compute(float); int main( ) { float f; cin >> f; compute(f); return 0; } Στις δηλώσεις συναρτήσεων και μεθόδων, τα ονόματα είναι προαιρετικά (γιατί;) αλλά για να είναι ο κώδικας ευανάγνωστος να τα βάζετε πάντα! void compute(float arg) { cout << arg / 2 << endl; } Εισαγωγή - 20

Για το μάθημα, μπορείτε να χρησιμοποιήσετε είτε τον GCC, είτε τον Microsoft C/C++ Compiler μέσω του Integrated Development Environment (IDE) Visual Studio GCC: Διατίθεται ελεύθερα (βλ. ιστοσελίδα συνδέσμων μαθήματος). Μπορεί να χρησιμοποιηθεί από γραμμή εντολών σε Unix (θα δείτε πώς στα εργαστήρια, μαζί με τη χρήση makefiles). Σε Windows μπορεί να χρησιμοποιηθεί μέσω της γραμμής εντολών της συλλογής Cygwin (βλ. ιστοσελίδα συνδέσμων), ή μέσω του περιβάλλοντος MinGW. Μπορεί να χρησιμοποιηθεί και μέσω των Eclipse και NetBeans (βλ. ιστοσελίδα συνδέσμων). Visual C++: Οι φοιτητές του Τμήματος Πληροφορικής έχουν δικαίωμα να πάρουν δωρεάν αντίγραφο. Ρωτήστε στα CSLAB. Εισαγωγή - 21

Όλα τα βήματα μαζί: g++ -o myprog.exe part1.cpp part2.cpp part3.cpp Δημιουργία αντικειμενικού κώδικα χωρίς σύνδεση: g++ -c part1.cpp part2.cpp part3.cpp g++ -c part2.cpp (αν έγιναν αλλαγές μόνο σε αυτό το αρχείο.cpp) Σύνδεση αρχείων αντικειμενικού κώδικα: g++ -o myprog.exe part1.o part2.o part3.o 22

Εισαγωγή - 23

Εισαγωγή - 24