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

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Γλώσσες Προγραµµατισµού"

Transcript

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

2

3 ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Σχολή Θετικών Επιστηµών και Τεχνολογίας Πρόγραµµα Σπουδών ΠΛHPOΦOPIKH Θεµατική Ενότητα EΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ Τόµος ' Γλώσσες Προγραµµατισµού ΚΛΕΑΝΘΗΣ ΘΡΑΜΠΟΥΛΙ ΗΣ Επίκουρος Καθηγητής τµήµατος Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών Πανεπιστηµίου Πατρών ΠATPA 2000

4 ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Σχολή Θετικών Επιστηµών και Τεχνολογίας Πρόγραµµα Σπουδών ΠΛHPOΦOPIKH Θεµατική Ενότητα ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ Τόµος ' Γλώσσες Προγραµµατισµού Συγγραφή ΚΛΕΑΝΘΗΣ ΘΡΑΜΠΟΥΛΙ ΗΣ Επίκουρος Καθηγητής τµήµατος Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών Πανεπιστηµίου Πατρών Κριτική Ανάγνωση ΕΛΠΙ Α ΚΕΡΑΥΝΟY Καθηγήτρια Τµήµατος Πληροφορικής Πανεπιστηµίου Κύπρου Ακαδηµαϊκός Υπεύθυνος για την επιστηµονική επιµέλεια του τόµου ΠANAΓIΩTHΣ ΠINTEΛAΣ Καθηγητής Tµήµατος Mαθηµατικών Πανεπιστηµίου Πατρών Επιµέλεια στη µέθοδο της εκπαίδευσης από απόσταση ΓΕΡΑΣΙΜΟΣ ΚΟΥΣΤΟΥΡΑΚΗΣ Γλωσσική Επιµέλεια IΩANNHΣ ΘEOΦIΛAΣ Τεχνική Επιµέλεια ΕΣΠΙ ΕΚ ΟΤΙΚΗ Ε.Π.Ε. Καλλιτεχνική Επιµέλεια Σελιδοποίηση TYPORAMA Συντονισµός ανάπτυξης εκπαιδευτικού υλικού και γενική επιµέλεια των εκδόσεων ΟΜΑ Α ΕΚΤΕΛΕΣΗΣ ΕΡΓΟΥ ΕΑΠ / ISBN: Kωδικός Έκδοσης: ΠΛH 10/4 Copyright 2000 για την Ελλάδα και όλο τον κόσµο ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Οδός Παπαφλέσσα & Υψηλάντη, Πάτρα Τηλ: (0610) , Φαξ: (0610) Σύµφωνα µε το Ν. 2121/1993, απαγορεύεται η συνολική ή αποσπασµατική αναδηµοσίευση του βιβλίου αυτού ή η αναπαραγωγή του µε οποιοδήποτε µέσο χωρίς την άδεια του εκδότη.

5 ÂÚÈ fiìâó K º π 1 EÈÛ ÁˆÁ Σκοπός, Προσδοκώµενα αποτελέσµατα, Έννοιες κλειδιά Eισαγωγικές παρατηρήσεις Η γλώσσα προγραµµατισµού στη διαδικασία ανάπτυξης συστηµάτων λογισµικού Σκοπός, Προσδοκώµενα αποτελέσµατα, Eισαγωγικές παρατηρήσεις Τεχνολογία Λογισµικού Ιστορική αναδροµή στη διαδικασία ανάπτυξης λογισµικού Η διαδικασία ανάπτυξης λογισµικού ως διαδικασία παραγωγής µοντέλων Η διεργασία σαν βασικό δοµικό στοιχείο στη διαδικασία ανάπτυξης λογισµικού Η φάση της υλοποίησης Σκοπός, Προσδοκώµενα αποτελέσµατα, Eισαγωγικές παρατηρήσεις Τα βήµατα της φάσης της υλοποίησης Συγγραφή πηγαίου κώδικα Μεταγλώττιση Σύνδεση ιαδικασία ανάπτυξης παραδειγµάτων Μορφές προγραµµατισµού και ιστορία γλωσσών Σκοπός, Προσδοκώµενα αποτελέσµατα, Μορφές προγραµµατισµού Ιστορία των γλωσσών προστακτικού προγραµµατισµού Ιστορία της C Γιατί C; Σύνοψη Bιβλιογραφία κεφαλαίου... 34

6 6 ø E PO PAMMATI MOY K º π 2 ÓÙ ÎÙÈÎfi ÏÒÛÛ Σκοπός, Προσδοκώµενα αποτελέσµατα, Έννοιες κλειδιά Eισαγωγικές παρατηρήσεις Tι είναι το αλφάβητο µιας γλώσσας προγραµµατισµού; H έννοια του συντακτικού Tο λεξιλόγιο της γλώσσας εσµευµένες λέξεις Λέξεις κλειδιά Aναγνωριστές Συντακτικά Σηµασιολογικά λάθη Σύνοψη Bιβλιογραφία κεφαλαίου K º π 3 MÂÙ ÏËÙ Ù ıâú T appleôè Â ÔÌ ÓˆÓ Σκοπός, Προσδοκώµενα αποτελέσµατα, Έννοιες κλειδιά Eισαγωγικές παρατηρήσεις Eισαγωγή στις έννοιες της µεταβλητής, της σταθερής και του τύπου δεδοµένων Σκοπός, Προσδοκώµενα αποτελέσµατα, Eισαγωγικές παρατηρήσεις Τι είναι µεταβλητή; ήλωση µεταβλητής Τι είναι οι τύποι δεδοµένων; ήλωση µεταβλητών στη C Μεταβλητές που δεν αλλάζουν τιµή Η έννοια της σταθερής Oι τύποι δεδοµένων στη γλώσσα C Σκοπός, Προσδοκώµενα αποτελέσµατα, Eισαγωγικές παρατηρήσεις Τύπος χαρακτήρα Το πρώτο πρόγραµµά σας Τύπος ακεραίου Τύποι πραγµατικών αριθµών Σύνοψη Bιβλιογραφία κεφαλαίου... 67

7 EPIEXOMENA 7 K º π 4 Ó ÎÂ Â ÎÙÂ Σκοπός, Προσδοκώµενα αποτελέσµατα, Έννοιες κλειδιά Eισαγωγικές παρατηρήσεις Tύπος πίνακα ήλωση Πίνακα Αναφορά στοιχείου Πίνακα Το αλφαριθµητικό σαν πίνακας χαρακτήρων Αλφαριθµητική σταθερά Πολυδιάστατοι πίνακες O τύπος του δείκτη ήλωση δείκτη Ανάθεση τιµής σε δείκτη Τελεστές που έχουν σχέση µε δείκτες Σχέση δεικτών µε πίνακες Σύνοψη Bιβλιογραφία κεφαλαίου K º π 5 TÂÏÂÛÙ EÎÊÚ ÛÂÈ ÚÔÙ ÛÂÈ Σκοπός, Προσδοκώµενα αποτελέσµατα, Έννοιες κλειδιά Eισαγωγικές παρατηρήσεις O τελεστής στη γλώσσα προγραµµατισµού Έκφραση Συµβολισµοί στο σχηµατισµό εκφράσεων Κατηγορίες εκφράσεων της C Υπολογισµός τιµής έκφρασης ένδρο αφηρηµένης σύνταξης Mετατροπές τύπων Υπονοούµενες µετατροπές Ρητές µετατροπές Πρόταση Σύνθετη πρόταση Προτάσεις Προεπεξεργαστή Oι τελεστές της C... 93

8 8 ø E PO PAMMATI MOY Αριθµητικοί τελεστές Τελεστές ανάθεσης Συσχετιστικοί τελεστές Λογικοί τελεστές &&, και! Τελεστές Μνήµης Ο τελεστής µετατροπής τύπου Τελεστής sizeof Τελεστές διαχείρισης bits Υποθετικός Τελεστής Σύνοψη Bιβλιογραφία κεφαλαίου K º π 6 AÊ ÈÚÂÙÈÎfiÙËÙ ÛÙÈ ÈÂÚÁ Û Â Σκοπός, Προσδοκώµενα αποτελέσµατα, Έννοιες κλειδιά Eισαγωγικές παρατηρήσεις Aφαιρετικότητα στις διεργασίες Aρθρωτός σχεδιασµός Συναρτήσεις ήλωση συνάρτησης Κλήση συνάρτησης Ορισµός συνάρτησης Επεξήγηση του µηχανισµού κλήσης συνάρτησης H βασική βιβλιοθήκη της C Σύνοψη Bιβλιογραφία κεφαλαίου K º π 7 ÚÔÙ ÛÂÈ EÏ Á Ô PÔ Σκοπός, Προσδοκώµενα αποτελέσµατα, Έννοιες κλειδιά Eισαγωγικές παρατηρήσεις H διαµόρφωση της ροής ελέγχου προγράµµατος οµηµένος προγραµµατισµός Προτάσεις διακλάδωσης υπό συνθήκης Προτάσεις επανάληψης Προτάσεις διακλάδωσης χωρίς συνθήκη

9 EPIEXOMENA Προτάσεις ελέγχου ροής στη C Eισαγωγικές παρατηρήσεις Πρόταση if Η πρόταση switch Πρόταση επανάληψης while Πρόταση επανάληψης do while Πρόταση επανάληψης for Επιλογή βρόχου Ένθετοι βρόχοι Προτάσεις break, continue και goto Σύνοψη Bιβλιογραφία κεφαλαίου K º π 8 ÚÔ ˆÚËÌ Ó Ì Ù Ó ÚÙ ÛÂˆÓ Σκοπός, Προσδοκώµενα αποτελέσµατα, Έννοιες κλειδιά Eισαγωγικές παρατηρήσεις Eµβέλεια ονοµάτων ιάρκεια µεταβλητών Εµβέλεια ονοµάτων ιάρκεια µεταβλητών Οργάνωση προγράµµατος Mεταβίβαση παραµέτρων Aναδροµικότητα Σύνοψη Bιβλιογραφία κεφαλαίου K º π 9 AÊ ÈÚÂÙÈÎfiÙËÙ ÛÙ Â ÔÌ Ó Σκοπός, Προσδοκώµενα αποτελέσµατα, Έννοιες κλειδιά Eισαγωγικές παρατηρήσεις H έννοια της δοµής Ορισµός δοµής ήλωση µεταβλητών Απόδοση αρχικών τιµών Αναφορά στα µέλη δοµής Ένθεση δοµών Πέρασµα δοµής σε συνάρτηση

10 10 ø E PO PAMMATI MOY 9.8 Πίνακες δοµών είκτες σε δοµές Σύνοψη Bιβλιογραφία κεφαλαίου K º π 10 H ÏÒÛÛ ÚÔÁÚ ÌÌ ÙÈÛÌÔ Pascal Σκοπός, Προσδοκώµενα αποτελέσµατα, Έννοιες κλειδιά Eισαγωγικές παρατηρήσεις Γενικά Τύποι δεδοµένων Μορφή προγράµµατος Pascal Αφαιρετικότητα στις διεργασίες ιαµόρφωση της ροής εκτέλεσης προγράµµατος Σύνοψη Bιβλιογραφία κεφαλαίου Aπαντήσεις ασκήσεων αυτοαξιολόγησης Aπαντήσεις ραστηριοτήτων Bιβλιογραφία Γλωσσάρι όρων

11 EÈÛ ÁˆÁ ÎÔapplefi Σκοπός του κεφαλαίου είναι να προσδιορίσει το ρόλο των γλωσσών προγραµµατισµού στη διαδικασία ανάπτυξης λογισµικού και να κάνει µια σύντο- µη αναφορά, αφενός µεν στην εξέλιξη των γλωσσών προγραµµατισµού, αφετέρου δε στις σηµαντικότερες κατηγορίες στις οποίες αυτές κατατάσσονται. 1 º π ÚÔÛ ÔÎÒÌÂÓ appleôùâï ÛÌ Ù Όταν θα έχετε µελετήσει το κεφάλαιο αυτό θα µπορείτε να: περιγράψετε µε δικά σας λόγια τη διαδικασία ανάπτυξης λογισµικού αναφέροντας τις κυριότερες φάσεις της, προσδιορίσετε το ρόλο που διαδραµατίζει µια γλώσσα προγραµµατισµού στη διαδικασία αυτή, αιτιολογήσετε γιατί η φάση της υλοποίησης δεν είναι αρκετή για την ανάπτυξη ενός συστήµατος λογισµικού, χρησιµοποιήσετε τα κατάλληλα εργαλεία για τη συγγραφή πηγαίου κώδικα και την παραγωγή του αντίστοιχου εκτελέσιµου. ŒÓÓÔÈ ÎÏÂÈ È κύκλος ζωής λογισµικού µοντέλο ζωής λογισµικού µεθοδολογία φάση ανάλυσης φάση σχεδιασµού φάση υλοποίησης µεταγλώττιση πηγαίος κώδικας εκτελέσιµος κώδικας µοντέλο υλοποίησης µορφή προγραµµατισµού προστακτικός προγραµµατισµός ÈÛ ÁˆÁÈÎ Ú ÙËÚ ÛÂÈ Το κεφάλαιο αυτό περιλαµβάνει τρεις ενότητες. Στην πρώτη, εισάγονται βασικές έννοιες της διαδικασίας ανάπτυξης συστηµάτων λογισµικού, όπως τις ορίζει ο κλάδος της επιστήµης που υποστηρίζει τη διαδικασία αυτή, και προσδιορίζεται ο ρόλος της γλώσσας προγραµµατισµού. Στη δεύτερη, περιγράφε-

12 12 KEºA AIO 1: EI A ø H ται η διαδικασία ανάπτυξης προγράµµατος, µε ταυτόχρονη αναφορά στα εργαλεία που την υποστηρίζουν. Το κεφάλαιο ολοκληρώνεται µε µια σύντο- µη αναφορά στην ιστορία των γλωσσών προγραµµατισµού και στις διάφορες µορφές προγραµµατισµού που αυτές υποστηρίζουν.

13 ø ƒ ƒ ªª π ª À π π π À À ª ø π ªπ À ÁÏÒÛÛ appleúôáú ÌÌ ÙÈÛÌÔ ÛÙË È ÈÎ Û Ó appleù ÍË Û ÛÙËÌ ÙˆÓ ÏÔÁÈÛÌÈÎÔ ÎÔapplefi Σκοπός της ενότητας είναι να περιγράψει εν συντοµία βασικές έννοιες της διαδικασίας ανάπτυξης συστήµατος λογισµικού και να κάνει σαφή το ρόλο που οι γλώσσες προγραµµατισµού διαδραµατίζουν στη διαδικασία αυτή. ÚÔÛ ÔÎÒÌÂÓ appleôùâï ÛÌ Ù Όταν θα έχετε µελετήσει την ενότητα θα µπορείτε να: αναφέρετε 3 τουλάχιστον από τις φάσεις της διαδικασίας ανάπτυξης λογισµικού, αναφέρετε ποιος είναι ο στόχος των µοντέλων του κύκλου ζωής λογισµικού, αναφέρετε ποιος είναι ο στόχος των µεθοδολογιών, περιγράψετε µε µια φράση τι είναι γλώσσα προγραµµατισµού, δώσετε 6 τουλάχιστον παραδείγµατα διεργασιών, δώσετε τον ορισµό της υπολογιστικής διεργασίας, δώσετε 4 τουλάχιστον παραδείγµατα διεργασιών που µπορούν να αυτο- µατοποιηθούν. ÈÛ ÁˆÁÈÎ Ú ÙËÚ ÛÂÈ Καθηµερινά, η µία µετά την άλλη οι ανθρώπινες δραστηριότητες αυτοµατοποιούνται µε τη χρήση υπολογιστών. Οι υπολογιστές αυτοί, γενικού ή ειδικού σκοπού, αυτοµατοποιούν πλήρως ή κατά µέρος, όλο και περισσότερες εργασίες του ανθρώπου. Απλές εργασίες, όπως συγγραφή κειµένου, έκδοση κοινοχρήστων αλλά και πιο σύνθετες, όπως πρόβλεψη καιρού και έλεγχος τηλεπικοινωνιακών κέντρων, υποστηρίζονται πλέον από υπολογιστές µε τα κατάλληλα συστήµατα λογισµικού. Επιχειρήσεις, αλλά ακόµη και εθνικά αµυντικά συστή- µατα, βασίζουν την ύπαρξή τους σε ειδικά συστήµατα λογισµικού, απαιτώντας από αυτά αυξηµένη αξιοπιστία. Συστήµατα λογισµικού διαδραµατίζουν βασικό ρόλο στην εξέλιξη όλων σχεδόν των κλάδων της επιστήµης. Το µέγεθος και η πολυπλοκότητα των σηµερινών συστηµάτων µεγαλώνει µέρα µε τη µέρα και αντίστοιχα και οι απαιτήσεις από τη διαδικασία ανάπτυξής τους. Η ανάπτυξη συστηµάτων λογισµικού έχει γίνει πλέον µια πολύ σύνθετη διαδικασία.

14 14 KEºA AIO 1: EI A ø H Μπορούµε να παραλληλίσουµε τη διαδικασία ανάπτυξης προϊόντων λογισµικού µε αυτήν της ανέγερσης κτιρίων. Για την ανέγερση ενός µικρού κτιρίου, είναι πιθανόν, να µην ακολουθηθούν αυστηρές διαδικασίες και να µην εµπλακούν µηχανικοί, µε αµφίβολα όµως σε κάθε περίπτωση, αποτελέσµατα. Όσο όµως το µέγεθος του κτιρίου γίνεται µεγαλύτερο, τόσο πιο επιτακτική είναι η ανάγκη εµπλοκής µηχανικών στη διαδικασία ανέγερσής του. Η δηµιουργία ενός συνόλου σχεδίων και προγραµµατισµού δουλειάς πριν την έναρξη της κατασκευής, είναι άκρως απαραίτητη. εν µπορεί να διανοηθεί κανείς, την κατασκευή των σύγχρονων σηµερινών κτισµάτων, χωρίς την ύπαρξη µελέτης αρχιτεκτονικών, στατικών, θερµοµόνωσης και, γιατί όχι, ακόµη και πρωτοτύπου (µακέτας). Όλα αυτά, έχουν τη δική τους βαρύτητα και θέση στη διαδικασία της ανέγερσης του κτιρίου. Αντίστοιχα, για την παραγωγή ενός σύγχρονου συστήµατος λογισµικού, είναι απαραίτητη η υιοθέτηση σαφώς ορισµένων βηµάτων, που θα επιτρέπουν την ταυτόχρονη ικανοποίηση της πληθώρας των απαιτήσεων, που τα σύγχρονα συστήµατα έχουν. Οι απαιτήσεις αυτές, που τις περισσότερες φορές είναι αντιµαχόµενες µεταξύ τους, καθιστούν το έργο του δηµιουργού λογισµικού εξαιρετικά σύνθετο. Στην προσπάθειά του αυτή, έρχεται να τον στηρίξει ο κλάδος της επιστήµης του Μηχανικού Λογισµικού, που είναι γνωστός ως Τεχνολογία Λογισµικού [1] (Software Engineering). [1] Xρησιµοποιείται ο όρος Τεχνολογία Λογισµικού, γιατί έχει επικρατήσει στην ελληνική βιβλιογραφία παρότι δεν αποδίδει σωστά τον αντίστοιχο αγγλικό όρο. Ένας πιο δόκι- µος όρος είναι «Μηχανίκευση ή Μηχανιστική Λογισµικού».

15 ø ƒ ƒ ªª π ª À π π π À À ª ø π ªπ À  ÓÔÏÔÁ ÔÁÈÛÌÈÎÔ Η επιστήµη της Τεχνολογίας Λογισµικού είναι η εφαρµογή επιστηµονικών αρχών για το µεθοδικό µετασχηµατισµό ενός προβλήµατος σε µια λειτουργούσα λύση λογισµικού και για τη µετέπειτα συντήρησή του για το διάστη- µα που αυτό είναι χρήσιµο. Η επιστήµη αυτή, της οποίας το αντικείµενο θα µελετήσετε σε βάθος στην θεµατική ενότητα 4.1 «Tεχνολογία Λογισµικού Ι», ορίζει, αφενός µεν ένα σύνολο από µοντέλα κύκλου ζωής λογισµικού (Software life cycle models), αφετέρου δε ένα σύνολο από µεθοδολογίες. Τα µοντέλα ζωής λογισµικού, µεταξύ των οποίων το µοντέλο καταρράκτη (waterfall model) [Boehm 76] και το σπειροειδές µοντέλο (spiral model) [Boehm 88], περιγράφουν τον κύκλο ζωής λογισµικού, τη διαδικασία δηλαδή, η οποία αρχίζει από τη σύλληψη της ιδέας και τελειώνει όταν το προϊόν δεν είναι πλέον διαθέσιµο για χρήση. Οι τρεις πρώτες φάσεις, όπως τις ορίζει η πλειοψηφία των µοντέλων είναι οι εξής: Φάση Ανάλυσης (Analysis), η οποία περιλαµβάνει την κατανόηση του προβλήµατος και καταγραφή των απαιτήσεων από το σύστηµα. Φάση Σχεδιασµού (Design), η οποία περιλαµβάνει το σχεδιασµό µιας λειτουργούσας λύσης. Φάση Υλοποίησης (Implementation), η οποία περιλαµβάνει την ανάπτυξη του εκτελέσιµου κώδικα. Αντίθετα, µια µεθοδολογία ορίζει τα επιµέρους βήµατα που πρέπει να εκτελέσει ο δηµιουργός λογισµικού σε µια συγκεκριµένη συνήθως φάση της διαδικασίας ανάπτυξης. Για παράδειγµα, η µεθοδολογία της οµηµένης Ανάλυσης (Structured Analysis/SA) ορίζει τον τρόπο µε τον οποίο προσεγγίζουµε τη φάση της κατανόησης και καταγραφής απαιτήσεων του συστήµατος πûùôúèî Ó ÚÔÌ ÛÙË È ÈÎ Û Ó appleù ÍË ÏÔÁÈÛÌÈÎÔ Η διαδικασία που οι δηµιουργοί λογισµικού ακολουθούσαν τα πρώτα χρόνια της εµφάνισης των υπολογιστών, χαρακτηρίζεται πλήρως από το όνοµα code and fix που αποδόθηκε στο µοντέλο το οποίο αργότερα την αναπαράστησε. Η διαδικασία χαρακτηρίζεται από δύο βασικά βήµατα: συγγραφή κώδικα και διόρθωση των προβληµάτων του κώδικα. Καµία ενέργεια δε γινόταν για απαιτήσεις, σχεδιασµό, έλεγχο και συντήρη-

16 16 KEºA AIO 1: EI A ø H ση, µε αποτέλεσµα σύντοµα να γίνουν εµφανή τα προβλήµατα της διαδικασίας. Το σηµαντικότερο από αυτά, ήταν ότι µετά από ένα αριθµό διορθώσεων (επεµβάσεων) στον κώδικα, αυτός έχανε κάθε µορφή δόµησης µε απαγορευτικά πλέον κόστη συντήρησης. Η διαπίστωση του προβλήµατος αυτού οδήγησε στην υιοθέτηση µίας φάσης πριν την κωδικοποίηση η οποία ονο- µάστηκε φάση σχεδιασµού. Στη συνέχεια, διαπιστώθηκε ότι ακόµη και καλοσχεδιασµένα συστήµατα ήταν πολλές φορές άχρηστα, γιατί δεν κάλυπταν τις απαιτήσεις του χρήστη. Αυτό οδήγησε στην υιοθέτηση µιας επιπλέον φάσης πριν από την φάση του σχεδιασµού, της φάσης της ανάλυσης. Το αποτέλεσµα ήταν περί το 1959 να διακριθούν οι παραπάνω φάσεις, δια- µορφώνοντας το κατά στάδια µοντέλο (stage wise), από το οποίο προήλθε το µοντέλο του καταρράκτη (waterfall model). Παράλληλα, διαπιστώθηκε ότι το κόστος διόρθωσης του κώδικα ήταν πολύ µεγάλο, εξαιτίας της µηδαµινής προετοιµασίας για έλεγχο και τροποποιήσεις. Η διαπίστωση αυτή, οδήγησε σε αναγνώριση της ανάγκης για προετοιµασία για τις ενέργειες αυτές πριν από τη συγγραφή κώδικα È ÈÎ Û Ó appleù ÍË ÏÔÁÈÛÌÈÎÔ Û Ó È ÈÎ Û apple Ú - ÁˆÁ ÌÔÓÙ ÏˆÓ Τα παραπάνω οδηγούν στην αναπαράσταση της διαδικασίας ανάπτυξης λογισµικού όπως αυτή δίνεται στο σχήµα 1.1. Σύµφωνα µε την αναπαράσταση αυτή, η διαδικασία ξεκινά από το ονοµαζόµενο ιδεατό µοντέλο (conceptual model) και ολοκληρώνεται µε τη δηµιουργία του µοντέλου υλοποίησης (implementation model). Το ιδεατό µοντέλο, είναι αυτό που έχει στο µυαλό του ο χρήστης πριν αρχίσει τη διαδικασία ανάπτυξης του συστήµατος, ενώ το µοντέλο υλοποίησης είναι σε µορφή που µπορεί να εκτελέσει ο υπολογιστής και αυτή δεν είναι άλλη από την γλώσσα µηχανής (machine language) [1]. Η µετάβαση από το ιδεατό µοντέλο στο µοντέλο υλοποίησης γίνεται σταδιακά και µε την παρεµβολή δύο άλλων µοντέλων: του µοντέλου ανάλυσης και του µοντέλου σχεδιασµού. Το µοντέλο σχεδιασµού, µεταξύ των άλλων, ορίζει επακριβώς τις επιµέρους υπολογιστικές διεργασίες που πρέπει να εκτελέσει ο υπολογιστής για την ικανοποίηση των καταγεγραµµένων απαιτήσεων του χρήστη, καθώς και τα επί µέρους βήµατα της κάθε διεργασίας [2]. Μπορούµε να πούµε ότι είναι µια [1] Mια σηµειογραφία που άµεσα κατανοεί ο υπολογιστής. [2] H διεργασία αποτελεί το βασικό δοµικό στοιχείο των παραδοσιακών µεθοδολογιών ανάπτυξης συστηµάτων λογισµικού.

17 ø ƒ ƒ ªª π ª À π π π À À ª ø π ªπ À Iδεατό µοντέλο 2. Mοντέλο ανάλυσης 6 Get_Input Error_Message Input Kind_Of_Input Error_Message Aνάλυση Number 3 Process_Inputs Activate_Display_Result 4 Display_Result Number Number Number Output Error_Message 2 Store_Number Number Number 7 Get_Stored_Number Numbers_To_Be_Processed Error_Message Σχεδιασµός Πολωνική αριθµοµηχανή «Mήνυµα λάθους» type ώσε αποτέλεσµα Calculator.exe Aποθήκευσε τελεστέο s num num s Kάνε πράξεις num «αποτέλεσµα» Yλοποίηση s atof() push() pop() Πρόσθεσε Aφαίρεσε Πολλαπλασίασε ιαίρεσε 1. Mοντέλο υλοποίησης 3. Mοντέλο σχεδιασµού περιγραφή του τρόπου επίλυσης ενός προβλήµατος [1] ή εκτέλεσης µιας εργασίας. Για την περιγραφή των επί µέρους βηµάτων της κάθε διεργασίας, η επιστήµη του Software Engineering προτείνει ένα σύνολο από τεχνικές, µεταξύ των οποίων τα δοµηµένα αγγλικά (structured English) ή τα αντίστοιχα δοµηµένα ελληνικά, που εµείς θα χρησιµοποιήσουµε στα πλαίσια αυτού του βιβλίου, τα διαγράµµατα ροής (flow charts) καθώς και άλλες τεχνικές που θα γνωρίσετε στην θεµατική ενότητα 4.1. Τέλος, η φάση της υλοποίησης έχει σαν στόχο τη µετατροπή του µοντέλου σχεδιασµού σε µοντέλο υλοποίησης. Στη µετατροπή αυτή, που θα δούµε αναλυτικά στη συνέχεια, η γλώσσα προγραµµατισµού διαδραµατίζει το σηµαντικότερο ρόλο. Ì 1.1. Μοντέλα στη διαδικασία ανάπτυξης λογισµικού. [1] H προσέγγιση ή η µέθοδος που χρησιµοποιείται για την επίλυση ενός προβλήµατος αποτελεί τον αλγόριθµο

18 18 KEºA AIO 1: EI A ø H ÈÂÚÁ Û Û Ó ÛÈÎfi ÔÌÈÎfi ÛÙÔÈ Â Ô ÛÙË È ÈÎ Û Ó appleù ÍË ÏÔÁÈÛÌÈÎÔ Στην καθηµερινή µας οµιλία χρησιµοποιούµε πολύ συχνά ονόµατα διεργασιών. Η παρακάτω φράση «Παρακαλώ φτιάξε ένα νες µέτριο µε γάλα και σερβίρισέ το στο 5» χρησιµοποιεί τα ονόµατα των διεργασιών «φτιάξε ένα νες» και «σερβίρισε» για να αναθέσει την εκτέλεση του έργου που οι διεργασίες αυτές προσδιορίζουν στο άτοµο στο οποίο απευθύνεται η πρόταση. Ο όρος «διεργασία» αναφέρεται σε ένα σύνολο βηµάτων που µπορεί να εκτελέσει µια οντότητα του φυσικού κόσµου για να φέρει εις πέρας ένα απλό ή σύνθετο έργο. Στη συγκεκριµένη περίπτωση που η διεργασία εκτελείται από έναν υπολογιστή ονοµάζεται «υπολογιστική διεργασία». Σαν παραδείγµατα διεργασιών µπορούν να αναφερθούν οι παρακάτω: 1. H διεργασία του υπολογισµού του µέσου όρου δεδοµένων αριθµών. 2. H διεργασία της ανεύρεσης των πελατών µιας επιχείρησης που έχουν υπερβεί το όριο πίστωσης. 3. H διεργασία της ανεύρεσης των φοιτητών της δανειστικής βιβλιοθήκης, οι οποίοι έχουν υπερβεί το χρονικό όριο δανεισµού. 4. H διεργασία του καθαρισµού ρούχων. 5. H διεργασία της ετοιµασίας φαγητού. Ορισµένες από τις παραπάνω διεργασίες µπορούν να ανατεθούν στον υπολογιστή όπως οι 1, 2 και 3, άλλες όπως οι 4 και 5 όχι, τουλάχιστον µέχρι σήµερα. Η διεργασία καθαρισµού των ρούχων, για παράδειγµα, µπορεί να υποστηριχθεί εν µέρει από µια µηχανή. Η περιγραφή µιας διεργασίας πρέπει να δίνεται σαν ένα σύνολο από βήµατα σε µορφή που µπορεί να κατανοήσει και εποµένως, να εκτελέσει η οντότητα στην οποία ανατίθεται η εκτέλεσή της. Για παράδειγµα, αν η διεργασία πρόκειται να εκτελεστεί από ένα άνθρωπο, αυτή θα πρέπει να περιγραφεί σε µία από τις οµιλούµενες γλώσσες (Ελληνική, Αγγλική, κ.λπ.). Αν η διεργασία πρόκειται να εκτελεστεί από έναν υπολογιστή, η περιγραφή θα πρέπει να γίνει σε µία σηµειογραφία που άµεσα ή έµµεσα κατανοεί ο υπολογιστής. Άµεσα κατανοεί µόνο τη γλώσσα µηχανής, αλλά η περιγραφή µιας διεργασίας µε τη γλώσσα αυτή είναι σχεδόν αδύνατη για τα σηµερινά, πολύπλοκα και αυξηµένων απαιτήσεων, συστήµατα. Εποµένως, η µόνη επιλογή είναι αυτή της έµµεσης κατανόησης. Λέµε ότι ο υπολογιστής κατανοεί έµµεσα τις γλώσσες προγραµµατισµού γιατί µια περιγραφή µε αυτές µπορεί αυτόµατα να µεταγλωττιστεί σε γλώσσα

19 º À π 19 µηχανής και, άρα, να γίνει κατανοητή από τον υπολογιστή. Μπορούµε να πούµε λοιπόν, ότι µια γλώσσα προγραµµατισµού είναι µία συστηµατική σηµειογραφία (notation) µε την οποία περιγράφουµε υπολογιστικές διεργασίες. Θεωρήστε τη διαδικασία υπολογισµού της µέσης θερµοκρασίας του µήνα από τις µέσες ηµερήσιες θερµοκρασίες. Καταγράψτε βασικές υπολογιστικές διεργασίες που ένα σύστηµα πρέπει να εκτελέσει για να την φέρει σε πέρας. ÕÛÎËÛË ÙÔ ÍÈÔÏfiÁËÛË Ê ÛË ÙË ÏÔappleÔ ËÛË ÎÔapplefi Σκοπός της ενότητας είναι να περιγράψει τα επί µέρους βήµατα που πρέπει να ακολουθήσετε, για να δηµιουργήσετε ένα πρόγραµµα που θα µπορεί να εκτελέσει ο υπολογιστής σας. ÚÔÛ ÔÎÒÌÂÓ appleôùâï ÛÌ Ù Όταν θα έχετε ολοκληρώσει την ενότητα θα µπορείτε να: κατασκευάσετε τον εκτελέσιµο κώδικα για έναν πηγαίο κώδικα που θα σας δοθεί, αναφέρετε τα βασικά βήµατα για τη δηµιουργία του εκτελέσιµου κώδικα, αναφέρετε ποια εργαλεία χρησιµοποιούνται στη διαδικασία αυτή, εξηγήσετε το ρόλο της βιβλιοθήκης στη διαδικασία αυτή. ÈÛ ÁˆÁÈÎ Ú ÙËÚ ÛÂÈ Η φάση της υλοποίησης µπορεί να θεωρηθεί σαν µία σύνθετη διεργασία, η οποία λαµβάνει σαν είσοδο το µοντέλο σχεδιασµού [1] και έχει σαν έξοδο τον εκτελέσιµο κώδικα. Η διεργασία αυτή µπορεί να ανατεθεί σε µια οντότητα του πραγµατικού κόσµου για να την φέρει σε πέρας. Η οντότητα αυτή είναι συνήθως ο προγραµµατιστής, ο οποίος, όπως φαίνεται στο σχήµα 1.2, χρησιµοποιεί τη γνώση της γλώσσας προγραµµατισµού, τις γενικότερες γνώσεις του για προγραµµατισµό και τον υπολογιστή σαν εργαλείο για να τον υποστηρίξει στο δύσκολο αυτό έργο. Στη συνέχεια, θα περιγράψουµε τα επιµέρους βήµατα που πρέπει να ακολουθήσει ο προγραµµατιστής, για τη δηµιουργία του εκτελέσιµου κώδικα. [1] Για απλά προβλήµατα το µοντέλο αυτό δηµιουργείται στο µυαλό του προγραµµατιστή.

20 20 KEºA AIO 1: EI A ø H γνώση της γλώσσας προγραµµατισµού text Editor Compiler γνώσεις προγραµµατισµού Linker Debuger MTA get message Send auto responce handle delivery options update alt. recipient update auto responce text Prepear auto responce Put auto responce Prepear delivered message Put message in mailbox design model implementation model Ì 1.2 Ο προγραµµατιστής εκτελώντας την διεργασία της φάσης της υλοποίησης Ì Ù ÙË Ê ÛË ÙË ÏÔappleÔ ËÛË Το σχήµα 1.3 αναπαριστά µε την τεχνική σχεδιασµού flow chart, τη διεργασία της φάσης της υλοποίησης. Μπορούµε να διακρίνουµε τις παρακάτω βασικές επί µέρους διεργασίες: 1. συγγραφή πηγαίου κώδικα 2. µεταγλώττιση πηγαίου κώδικα 3. σύνδεση τµηµάτων που αποτελούν το µοντέλο υλοποίησης (εκτελέσιµο κώδικα) 4. έλεγχος καλής λειτουργίας Οι διεργασίες αυτές, που διαφοροποιούνται ανάλογα µε το υπολογιστικό σύστηµα αλλά και το συγκεκριµένο µεταγλωττιστή, είναι πλήρως ή εν µέρει αυτοµατοποιηµένες. Για παράδειγµα, η διεργασία της συγγραφής κώδικα υποστηρίζεται εν µέρει από τον υπολογιστή, απαιτεί όµως ουσιαστική συµ-

21 º À π 21 µετοχή του προγραµµατιστή [1]. Αντίθετα, η διεργασία της µεταγλώττισης είναι πλήρως αυτοµατοποιηµένη και απαιτεί από τον προγραµµατιστή µόνο την ενεργοποίηση του µεταγλωττιστή. Σε κάθε περίπτωση, για τη διεξαγωγή στην πράξη της φάσης της υλοποίησης, απαιτείται αναφορά στα εγχειρίδια του λειτουργικού συστήµατος για οδηγίες σχετικές µε τη µεταγλώττιση και σύνδεση (linking) αλλά και στα αντίστοιχα εγχειρίδια του µεταγλωττιστή για πληροφορίες σχετικά µε τη διαδικασία της µεταγλώττισης. Aρχή Eπεξεργασία πηγαίου κώδικα example.c Mεταγλώττιση πηγαίου κώδικα ναι Συντακτικά λάθη; example.obj Bιβλιοθήκες object αρχεία όχι Σύνδεση Eκτέλεση example.exe ναι Λάθη; ÁÁÚ Ê appleëá Ô ÎÒ ÈÎ όχι Tέλος Ì 1.3 H διεργασία της φάσης της υλοποίησης Στο πρώτο αυτό βήµα, ο προγραµµατιστής επιλέγοντας µία από τις διαθέσιµες γλώσσες προγραµµατισµού και χρησιµοποιώντας έναν επεξεργαστή κειµένου [2] (text editor), δηµιουργεί ένα αρχείο που περιέχει τον πηγαίο κώδικα του προγράµµατός του. Η C επιβάλει την αποθήκευση του πηγαίου [1] Tα περισσότερα CASE εργαλεία υποστηρίζουν αυτόµατη παραγωγή µέρους του πηγαίου κώδικα από το µοντέλο σχεδιασµού. [2] Προσέξτε υπάρχει διαφορά µεταξύ text editor και word processor. Έχει επικρατήσει να αποδίδονται µε τον ίδιο ελληνικό όρο επεξεργαστής κειµένου.

22 22 KEºA AIO 1: EI A ø H κώδικα [1] σε ένα αρχείο µε επέκταση.c. Στα πλαίσια του παραδείγµατός µας, γράψτε τον παρακάτω πηγαίο κώδικα [2] χωρίς να ασχοληθείτε µε τη σηµασία του πηγαίου κώδικα. Αποθηκεύστε τον στο αρχείο example.c. /* A Simple C Program */ #include <stdio.h> main( ) { printf("hello, world");i } ªÂÙ ÁÏÒÙÙÈÛË Η διεργασία της µεταγλώττισης είναι, όπως αναφέραµε, πλήρως αυτοµατοποιηµένη. Ο προγραµµατιστής αρκεί να ενεργοποιήσει τον µεταγλωττιστή ενηµερώνοντάς τον µε το όνοµα του αρχείου που θέλει να µεταγλωττίσει και µε ένα σύνολο από παραµέτρους που καθορίζουν τις απαιτήσεις του από τον µεταγλωττιστή. Η ενεργοποίηση του µεταγλωττιστή γίνεται απλά εκτελώντας το πρόγραµµα του µεταγλωττιστή, όπως το λειτουργικό σας σύστηµα ορίζει. Για τον τρόπο µε τον οποίο µπορείτε να ενηµερώσετε τον µεταγλωττιστή για τις ιδιαίτερες απαιτήσεις που έχετε από αυτόν, π.χ., παραγωγή κώδικα µε βελτιστοποίηση ως προς το χρόνο εκτέλεσης ή ως προς το µέγεθος του κώδικα, ή συµπερίληψη πληροφορίας εκσφαλµάτωσης κ.λπ., ενηµερωθείτε από το εγχειρίδιο χρήσης του ή τις on line οδηγίες του. Σε ένα γραφικό περιβάλλον, τα παραπάνω εκτελούνται συνήθως µέσα από τις επιλογές ενός µενού που παρέχει το περιβάλλον ανάπτυξης. Αντίθετα, σε ένα παραδοσιακό περιβάλλον µε γραµµή εντολής (command line) η ενεργοποίηση του µεταγλωττιστή έχει τη µορφή: <όνοµα µεταγλωττιστή> [<λίστα παραµέτρων>] <όνοµα αρχείου> Για παράδειγµα, για το µεταγλωττιστή της WATCOM [3] στο MSDOS, η εντολή wcc example [1] Σε επόµενο κεφάλαιο, θα δούµε ότι ο πηγαίος κώδικας οργανώνεται σε περισσότερα του ενός αρχεία, καθώς και τους λόγους που επιβάλουν µια τέτοια οργάνωση. [2] Tο κλασικό πια παράδειγµα που ο Dennis Ritchie είχε στην αντίστοιχη ενότητα του ιστορικού κειµένου [Kernighan 74]. [3] Πρόκειται για µια εκπαιδευτική έκδοση του εµπορικού µεταγλωττιστή Watcom C/C++.

23 º À π 23 ενεργοποιεί το µεταγλωττιστή, ο οποίος µεταγλωττίζει το αρχείο example.c, και σε περίπτωση µη ανεύρεσης λαθών, τυπώνει στην οθόνη τα παρακάτω: WATCOM C Optimizing Compiler Version 8.5e Copyright by WATCOM Systems Inc. 1984, All rights reserved. WATCOM is a trademark of WATCOM Systems Inc. example.c: 4 lines, 0 warnings, 0 errors Code size: 17 και παράγει το αρχείο example.obj. Αντίθετα, στην περίπτωση ανεύρεσης λαθών, το αποτέλεσµα της διεργασίας της µεταγλώττισης είναι µια λίστα µε τα λάθη που εντόπισε ο µεταγλωττιστής. Τα λάθη αυτά έχουν σχέση µε το συντακτικό της γλώσσας και είναι γνωστά σαν συντακτικά λάθη (syntax errors). Παρακάτω, δίνεται η αναφορά του µεταγλωττιστή για την περίπτωση που λείπει η αγκύλη στο τέλος του πηγαίου κώδικα. example.c(4): Error! E1077: Missing '}' example.c: 4 lines, 0 warnings, 1 errors Στην περίπτωση αυτή, θα πρέπει να εντοπίσετε τα λάθη, µε τη βοήθεια της πληροφορίας που αναφέρει ο µεταγλωττιστής, και χρησιµοποιώντας τον text editor να τα διορθώσετε. Στη συνέχεια, επαναλαµβάνετε τη διαδικασία της µεταγλώττισης µέχρι την επιτυχή έκβασή της Ó ÂÛË H διεργασία της σύνδεσης που ακολουθεί είναι και αυτή πλήρως αυτοµατοποιηµένη και εκτελείται από τον υπολογιστή µε τη βοήθεια του προγράµµατος του συνδέτη (Linker). Ο προγραµµατιστής θα πρέπει να ενεργοποιήσει το συνδέτη και να ορίσει τις παραµέτρους της διεργασίας της σύνδεσης. Στα περισσότερα περιβάλλοντα ανάπτυξης, ο συνδέτης καλείται αυτόµατα µετά από επιτυχή µεταγλώττιση χωρίς τη µεσολάβηση του προγραµµατιστή [1]. Το αποτέλεσµα της σύνδεσης είναι η δηµιουργία του εκτελέσιµου κώδικα ή η αναφορά τυχόν προβληµάτων, όπως για παράδειγµα, αδυναµία εντοπισµού µιας συνάρτησης ή µιας εξωτερικής µεταβλητής. Ο εκτελέσιµος κώδικας αποθηκεύεται σε αρχείο που έχει το όνοµα του αρχείου πηγαίου κώδικα και επέκταση.exe (για Dos και Windows). [1] Eνηµερωθείτε για το τρόπο λειτουργίας του δικού σας συστήµατος.

24 24 KEºA AIO 1: EI A ø H Ο συνδέτης έχει τη δυνατότητα να συνδέσει περισσότερα του ενός αρχεία αντικείµενου κώδικα (object code), των οποίων µάλιστα, ο αντίστοιχος πηγαίος κώδικας δεν είναι αναγκαστικά στην ίδια γλώσσα προγραµµατισµού. Αναζητεί επιπλέον, σε βιβλιοθήκες τα σώµατα των συναρτήσεων που ο προγραµµατιστής χρησιµοποίησε στο πρόγραµµά του (Στο θέµα αυτό θα αναφερθούµε αναλυτικά στο κεφάλαιο περί συναρτήσεων. ες ένθετο πλαίσιο για βιβλιοθήκη). Για τον WATCOM µεταγλωττιστή, η εντολή wcl example έχει σαν αποτέλεσµα την ενεργοποίηση του µεταγλωττιστή και στη συνέχεια του συνδέτη, ο οποίος δίνει µια αναφορά της παρακάτω µορφής: WATCOM Linker Version 7.0 Copyright by WATCOM Systems Inc. 1985, All rights reserved. WATCOM is a trademark of WATCOM Systems Inc. loading object files searching libraries creating a DOS executable και παράγει το αρχείο example.exe, το οποίο αποτελεί το µοντέλο υλοποίησης, ή αλλιώς, τον εκτελέσιµο κώδικα του προγράµµατος, τον οποίο µπορείτε να εκτελέσετε για να διαπιστώσετε την ορθή λειτουργία του. Η πρόταση example στη γραµµή διαταγών του DOS δίνει εντολή στο λειτουργικό να φορτώσει και εκτελέσει το αρχείο example.exe. Στην οθόνη θα έχετε το παρακάτω αποτέλεσµα: hello, world Τα πιθανά λάθη που θα εµφανιστούν, εντοπίζονται, διορθώνονται και η διεργασία µεταγλώττισης και σύνδεσης επαναλαµβάνεται µέχρι την επιτυχή λειτουργία του προγράµµατος. ªÂÙ ÁÏÒÙÙÈÛË Μεταγλώττιση είναι η διαδικασία της µετάφρασης υψηλού επιπέδου περιγραφής, όπως περιγραφή σε Basic, Pascal, C, σε γλώσσα µηχανής που αποτελεί µορφή κατανοητή από τον υπολογιστή. Η µεταγλώττιση, αποτελεί µια σύνθετη και χρονοβόρο για τον άνθρωπο διεργασία και για το λόγο αυτό την ανέθεσε στον υπολογιστή.

25 º À π 25 µè ÏÈÔı ÎË Κατά τη συγγραφή προγραµµάτων ο προγραµµατιστής έχει τη δυνατότητα να επαναχρησι- µοποιεί (reuse) έτοιµα κοµµάτια κώδικα, τα οποία είτε έχει ο ίδιος αναπτύξει και χρησιµοποιήσει στο παρελθόν είτε προσφέρονται από άλλους δηµιουργούς λογισµικού. Τα έτοιµα αυτά τµήµατα κώδικα είναι συνήθως µε τη µορφή µονάδων (συναρτήσεων, κλάσεων) µε την κάθε µονάδα να εκτελεί µια συγκεκριµένη διεργασία, η οποία όσο γενικότερη είναι τόσο µεγαλύτερες είναι οι πιθανότητες επαναχρησιµοποίησής της. Οι µονάδες αυτές είναι οργανωµένες κατά λογικές κατηγορίες µε κάθε λογική κατηγορία να συνθέτει µια βιβλιοθήκη που χαρακτηρίζεται από ένα όνοµα. Κάθε µεταγλωττιστής της C συνοδεύεται από τη βασική βιβλιοθήκη της γλώσσας (standard C library), η οποία περιέχει ένα σύνολο από συναρτήσεις που υλοποιούν πολύ βασικές διεργασίες. Μια τέτοια συνάρτηση είναι η printf, η οποία υλοποιεί τη διεργασία της εξόδου µορφοποιηµένης πληροφορίας στην κύρια έξοδο του υπολογιστή (συνήθως οθόνη). Στη C, για να χρησιµοποιήσετε µια συνάρτηση της βασικής βιβλιοθήκης είναι απαραίτητο να συµπεριλάβετε στον πηγαίο κώδικα ένα ή περισσότερα αρχεία επικεφαλίδας (header files), όπως ορίζει το εγχειρίδιο χρήσης της βιβλιοθήκης για κάθε συνάρτησή της. Για παράδειγµα, για τη χρήση της printf πρέπει να περιλάβετε στην αρχή του πηγαίου κώδικα την πρόταση #include <stdio.h> È ÈÎ Û Ó appleù ÍË apple Ú ÂÈÁÌ ÙˆÓ Για την ανάπτυξη των προγραµµάτων που χρησιµοποιούνται σαν παραδείγ- µατα στα επόµενα κεφάλαια του βιβλίου, θα ξεκινάµε αµέσως τη συγγραφή του πηγαίου κώδικα χωρίς να ασχολούµαστε καθόλου, στις περισσότερες περιπτώσεις, µε τα µοντέλα ανάλυσης και σχεδιασµού. Και αυτό γιατί, αφενός µεν στόχος της θεµατικής αυτής ενότητας είναι ο προγραµµατισµός, αφετέρου δε δεν έχετε ακόµη τις απαραίτητες γνώσεις για να δηµιουργήσετε τα µοντέλα ανάλυσης και σχεδιασµού, αντικείµενο που θα καλύψετε σε άλλη θεµατική ενότητα, αργότερα. Επιπλέον, τα παραδείγµατά µας είναι συνήθως απλά και δεν απαιτούν από τη φύση τους, την επισταµένη δηµιουργία των µοντέλων αυτών. Σε ορισµένες περιπτώσεις, πιθανόν να χρησιµοποιήσουµε τα δοµηµένα ελληνικά σαν πρώτη µορφή περιγραφής πριν από τη δηµιουργία πηγαίου κώδικα. Aς σηµειωθεί πως αυτό το τελευταίο αποτελεί µέρος της φάσης σχεδιασµού.

26 26 KEºA AIO 1: EI A ø H ÕÛÎËÛË ÙÔ ÍÈÔÏfiÁËÛË 1.2 Τοποθετήστε τις παρακάτω διεργασίες που έχουν σχέση µε την ανάπτυξη και εκτέλεση ενός προγράµµατος σε σωστή χρονική σειρά. 1. αποθήκευση πηγαίου κώδικα 2. σύνδεση 3. αναφορά λαθών από µεταγλωττιστή 4. εκτέλεση προγράµµατος 5. συγγραφή πηγαίου κώδικα 6. µεταγλώττιση 7. εµφάνιση αποτελεσµάτων προγράµµατος 8. αναφορά λαθών από συνδέτη Ú ÛÙËÚÈfiÙËÙ 1.1 Ακολουθήστε τη διαδικασία δηµιουργίας εκτελέσιµου κώδικα για το πρόγραµµα που έχει σαν πηγαίο κώδικα τον παρακάτω. #include <stdio.h> main() { int num1 = 10; int num2 = 20; int sum; sum = num1 + num2; printf( ÙÔ ıúôèûì ÙÔ %d Ì ÙÔ %d Â Ó È: %d, num1, num2, sum); } Στη συνέχεια, εκτελέστε το για να ελέγξετε την ορθή λειτουργία του. Το αποτέλεσµα της εκτέλεσης µπορείτε να δείτε στο τέλος του βιβλίου. Ú ÛÙËÚÈfiÙËÙ 1.2 Αναζητήστε στον υπολογιστή σας το ευρετήριο όπου έχει εγκατασταθεί ο C µεταγλωττιστής σας. Εντοπίστε και καταγράψτε τα εκτελέσιµα αρχεία του µεταγλωττιστή και του συνδέτη. Κάντε το ίδιο για τις βιβλιοθήκες που τον συνοδεύουν. Τέλος, αναζητήστε τα αρχεία επικεφαλίδας και δείτε το περιεχόµενο του αρχείου math.h. Σχολιάστε το. Τα δικά µας σχόλια θα βρείτε στο τέλος του βιβλίου.

27 ª ƒº ƒ ƒ ªª π ª À π π ƒπ ø ø ªÔÚÊ appleúôáú ÌÌ ÙÈÛÌÔ Î È ÈÛÙÔÚ ÁψÛÛÒÓ ÎÔapplefi Ο σκοπός της ενότητας είναι να κάνει µια σύντοµη αναφορά στις εναλλακτικές µορφές προγραµµατισµού (programming paradigms) [1] και, ταυτόχρονα, µια ιστορική αναδροµή στην γλώσσα προστακτικού προγραµµατισµού C, αιτιολογώντας παράλληλα την επιλογή της στα πλαίσια αυτού του βιβλίου. ÚÔÛ ÔÎÒÌÂÓ appleôùâï ÛÌ Ù Όταν θα έχετε µελετήσει την ενότητα, θα µπορείτε να : αναφέρετε 4 τουλάχιστον µορφές προγραµµατισµού, περιγράψετε τη διαφορά µεταξύ προστακτικού και δηλωτικού προγραµ- µατισµού, αναφέρετε τουλάχιστον 4 γλώσσες που υποστηρίζουν την προστακτική µορφή προγραµµατισµού, αναφέρετε τη βασική διαφορά µεταξύ των γλωσσών Pascal και Prolog, αναφέρετε 6 τουλάχιστον λόγους για τους οποίους επιλέχθηκε να χρησι- µοποιηθεί η C στο παρόν βιβλίο ªÔÚÊ appleúôáú ÌÌ ÙÈÛÌÔ Μορφή ή στυλ προγραµµατισµού (programming paradigm/programming style) είναι µια συλλογή από έννοιες, οι οποίες προσδιορίζοντας έναν ορισµένο τρόπο σκέψης και, άρα, έκφρασης της λύσης, επηρεάζουν το σχεδιασµό των προγραµµάτων. Εάν µπορούµε να δοµήσουµε τη λύση ενός προβλήµατος µε τις βασικές έννοιες µιας µορφής προγραµµατισµού, τότε µόνο µπορούµε να χρησιµοποιήσουµε µια γλώσσα προγραµµατισµού που υποστηρίζει τη συγκεκριµένη µορφή προγραµµατισµού για να υλοποιήσουµε τη λύση. Ορισµένες γλώσσες (βλέπε Πίνακα 1.1), εισήγαγαν νέα στυλ προγραµµατισµού, νέους δηλαδή τρόπους σκέψης στον προγραµµατισµό. Οι µορφές που υποστηρίζουν προγραµµατισµό υψηλού επιπέδου, µπορούν να διακριθούν σε τρεις κατηγορίες [Ambler 92]: [1] Στην ελληνική βιβλιογραφία χρησιµοποιείται ευρέως ο όρος µοντέλα προγραµµατισµού.

28 28 KEºA AIO 1: EI A ø H Ó Î 1.1 Γλώσσες που εισήγαγαν βασικά στυλ προγραµµατισµού. Γλώσσα FORTRAN Lisp Simula Prolog Στυλ προγραµµατισµού προστακτικό συναρτησιακό αντικειµενοστρεφές λογικό Operational, µε βασικό χαρακτηριστικό την βήµα προς βήµα περιγραφή της πορείας εξεύρεσης µιας λύσης. Στην κατηγορία αυτή ανήκουν ο προστακτικός (imperative), ο αντικειµενοστρεφής (object oriented) καθώς και ο συναρτησιακός (functional) προγραµµατισµός. Demonstrational, γνωστή και σαν programming by example [1], είναι η µορφή προγραµµατισµού που επεξηγεί τη λύση µε χρήση συγκεκριµένων παραδειγµάτων και αφήνει στο σύστηµα να γενικεύσει για άλλες περιπτώσεις. Ορισµένοι τη θεωρούν υποκατηγορία της operational µορφής προγραµµατισµού. Σαν παραδείγµατα γλωσσών αυτής της κατηγορίας αναφέρονται η PT [Hsia 88] και η Metamouse [Maulsby 89]. Definitional, µε βασικό χαρακτηριστικό την έκθεση των χαρακτηριστικών της λύσης, τα οποία συνήθως περιορίζουν το πεδίο τιµών της, χωρίς αυτό να συνοδεύεται από περιγραφή του τρόπου εξεύρεσής της. Στην κατηγορία αυτή, ανήκουν ο λογικός προγραµµατισµός (logic programming), ο βασισµένος σε περιορισµούς προγραµµατισµός (constraint programming), ο λογικός βασισµένος σε περιορισµούς προγραµµατισµός (Constraint Logic Programming) και µια όψη του συναρτησιακού προγραµµατισµού [2]. Ο συναρτησιακός προγραµµατισµός περιλαµβάνει την έννοια της συνάρτησης (function) σαν βασικό δοµικό στοιχείο. Στην πράξη, οι γλώσσες που υποστηρίζουν αυτό το στυλ προγραµµατισµού περιλαµβάνουν και δοµικά στοιχεία προστακτικού προγραµµατισµού. Eπίσης, οι περισσότερες προστακτικές και αντικειµενοστρεφείς γλώσσες έχουν υιοθετήσει κάποια µορφή συνάρτησης, χωρίς όµως αυτό να σηµαίνει πως υποστηρίζουν πλήρως τη συναρ- [1] Programming by Example Home Page [2] Ένα καλό παράδειγµα σύγχρονης συναρτησιακής γλώσσας αποτελεί η Haskell.

29 ª ƒº ƒ ƒ ªª π ª À π π ƒπ ø ø 29 τησιακή µορφή προγραµµατισµού. Στην πράξη, µία γλώσσα προγραµµατισµού σπάνια υποστηρίζει µια µόνο µορφή προγραµµατισµού. Συνήθως, δανείζεται έννοιες από περισσότερες µορφές και σαν αποτέλεσµα, υποστηρίζει περισσότερα από ένα στυλ προγραµµατισµού. Για παράδειγµα, η C++ υλοποιεί βασικές έννοιες από το προστακτικό και το αντικειµενοστρεφές παράδειγµα. Η ML από το συναρτησιακό και το προστακτικό, η CLOS αποτελεί επέκταση της συναρτησιακής γλώσσας Lisp εισάγοντας έννοιες της αντικειµενοστρεφούς µορφής, η Prolog++ αποτελεί επέκταση της γλώσσας λογικού προγραµµατισµού Prolog εισάγοντας έννοιες του αντικειµενοστρεφούς παραδείγµατος, κ.ο.κ. Γλώσσες όπως οι Pascal, Ada, Algol, Fortran και C υποστηρίζουν την προστακτική µορφή προγραµµατισµού. Ο προγραµµατιστής µε τις γλώσσες αυτές προσδιορίζει, βήµα προς βήµα την πορεία επίλυσης του προβλήµατος. Χρησιµοποιεί µεταβλητές, για να αναπαραστήσει τα δεδοµένα και ενέργειες (actions), που αποτελούν τις βασικές µονάδες του προστακτικού στυλ προγραµµατισµού, για να αλλάξει τις τιµές των µεταβλητών [Sethi 97]. Αντίθετα, µε την Prolog ο προγραµµατιστής δουλεύει στην definitional ή declarative κατηγορία µορφών προγραµµατισµού. Σύµφωνα µε αυτή, ο προγραµµατιστής δεν περιγράφει στον υπολογιστή πώς να λύσει το πρόβληµα, αλλά τον εφοδιάζει µε όλη τη διαθέσιµη πληροφορία που είναι απαραίτητη σε κάποιον για να λύσει το πρόβληµα. Το σύστηµα χρησιµοποιεί αυτή την πληροφορία µε το δικό του τρόπο για να οδηγηθεί στην ανεύρεση της λύσης [1]. Η προµήθεια ενός χάρτη της περιοχής για την ανεύρεση της πορείας για συγκεκριµένο προορισµό, αποτελεί χαρακτηριστικό παράδειγµα δηλωτικής (declarative) µορφής, σε αντίθεση µε τις σαφείς οδηγίες κατεύθυνσης (π.χ., τρία τετράγωνα παρακάτω δεξιά, µετά από δύο τετράγωνα αριστερά, κ.λπ.) που αποτελούν προστακτική µορφή. Μία µορφή προγραµµατισµού που, τα τελευταία χρόνια, γνωρίζει µεγάλη εξάπλωση γιατί υπόσχεται να δώσει (και ήδη δίνει) λύσεις σε πολλά από τα προβλήµατα της διαδικασίας ανάπτυξης λογισµικού και όχι µόνο [2], είναι η Αντικειµενοστρεφής Προσέγγιση [3] (ΑΠ). Η ΑΠ θεωρεί το σύστηµα σαν συνά- [1] Aυτό γίνεται για παράδειγµα διαµέσου του ενσωµατωµένου inference Engine της Prolog. [2] Bλέπε αντικειµενοστρεφή συν σχεδιασµό (co design) υλικού λογισµικού. [3] Στην πράξη υπάρχει αντικειµενοστρεφής προστακτική αλλά και αντικειµενοστρεφής δηλωτική µορφή.

30 30 KEºA AIO 1: EI A ø H θροιση αντικειµένων (objects) διαφόρων κατηγοριών (classes),τα οποία αλληλεπιδρούν µεταξύ τους για την παροχή των εξυπηρετήσεών του. Ο αντικει- µενοστρεφής προστακτικός προγραµµατισµός, πρώτα ορίζει τα κατάλληλα για το πρόβληµα αντικείµενα και, στη συνέχεια, τα χρησιµοποιεί για να περιγράψει βήµα προς βήµα την εξεύρεση της λύσης. Παραδείγµατα γλωσσών που υποστηρίζουν τη µορφή αυτή προγραµµατισµού, που αποτελεί το αντικείµενο της θεµατικής ενότητας 6.4, είναι οι Smalltalk, C++, Object Pascal και Java πûùôú ÙˆÓ ÁψÛÛÒÓ appleúôûù ÎÙÈÎÔ appleúôáú ÌÌ ÙÈÛÌÔ Η ιστορία των γλωσσών προστακτικού προγραµµατισµού υψηλού επιπέδου, αρχίζει το 1957 µε την εµφάνιση της FORTRAN (FORmula TRANslation), µιας γλώσσας φτιαγµένης για µαθηµατικούς υπολογισµούς. Η γλώσσα εξακολουθεί και σήµερα να αποτελεί την πιο δηµοφιλή επιλογή µεταξύ των επιστηµόνων και των µηχανικών. H διάδοχος της FORTRAN, η ALGOL, κυριάρχησε στη δεκαετία του 60 σε βαθµό που η κατηγορία των προστακτικών γλωσσών να αναφέρεται σαν ALGOL οικογένεια, από όπου και ο όρος ALGOL like. Στην πράξη, η γλώσσα περισσότερο θαυµάστηκε παρά υιοθετήθηκε, αντίθετα µε τις απογόνους της, Pascal και C, που υιοθετήθηκαν ευρέως. Αµφότερες εµφανίστηκαν στις αρχές της δεκαετίας του 70 και, η µεν Pascal σχεδιάστηκε σαν εκπαιδευτική γλώσσα από τον Nicklaus Wirth, η δε C σαν γλώσσα προγραµµατισµού συστήµατος (system programming) από τον Dennis Ritchie. Και οι δύο, εξελίχθηκαν σε γενικού σκοπού (general purpose) προστακτικές γλώσσες και επηρέασαν σε µεγάλο βαθµό επόµενες γλώσσες προστακτικού προγραµµατισµού µεταξύ των οποίων οι Modula, Concurrent Pascal και Ada (από την Pascal) και C++ και Java (από την C). Μεταξύ των γλωσσών που υιοθετήθηκαν σε µεγάλο βαθµό θα πρέπει να αναφέρουµε και την COBOL (Common Business Oriented Language) µε µεγάλη απήχηση στον επιχειρηµατικό κόσµο, καθώς και την BASIC (Beginners All purpose Symbolic Instruction Code) που, αν και σχεδιάστηκε για εκπαίδευση αρχαρίων στο προγραµµατισµό, εξελίχθηκε σε γενικού σκοπού γλώσσα. Το σχήµα 1.4, παρουσιάζει ένα τµήµα του γενεαλογικού δένδρου των γλωσσών προγραµµατισµού, όπου µπορείτε να δείτε τις σηµαντικότερες γλώσσες προγραµµατισµού και τον τρόπο µε τον οποίο αυτές επηρέασαν την εξέλιξη των υπολοίπων. Για µια σύντοµη αναδροµή στην ιστορία των γλωσσών προγραµµατισµού

31 ª ƒº ƒ ƒ ªª π ª À π π ƒπ ø ø 31 σάς συνιστώ να ανατρέξετε στο [Horowitz 84] ή [Horowitz 95] ή στο [Sethi 97]. Για ακόµη περισσότερα, µπορείτε να αναφερθείτε στο [Wexelblat 81] ή στο πιο πρόσφατο [Bergin 96]. Επίσης, στη διεύθυνση unige.ch/cgi bin/langlist και, κάτω από τον τίτλο «The Language List», µπορείτε να δείτε µία προσπάθεια δηµιουργίας µίας λίστας όλων των γνωστών γλωσσών προγραµµατισµού. FORTRAN Lisp BASIC ALGOL Common Lisp CLOS Prolog Smalltalk ML Eiffel Standard ML Self Simula UCSD Pascal Java Mesa Pascal Object Pascal Delphi Ada Modula C++ BCPL C Visual C++ B Objective C Ada 95 Ì 1.4. Μέρος του γενεαλογικού δένδρου των γλωσσών προγραµµατισµού. Ανατρέξτε στη βιβλιογραφία τη σχετική µε την ιστορία των γλωσσών προγραµµατισµού και γράψτε ένα κείµενο (1 µε 2 σελίδες), στο οποίο θα αναφέρεστε ιστορικά στις σηµαντικότερες, κατά τη γνώµη σας, γλώσσες προγραµµατισµού και στον τρόπο µε τον οποίο αυτές επηρέασαν την εξέλιξη των υπολοίπων. Ú ÛÙËÚÈfiÙËÙ πûùôú ÙË C Η γλώσσα C σχεδιάστηκε και αναπτύχθηκε το 1972 στα ΑΤ&Τ Bell Labs από τον Dennis Ritchie. Βασίστηκε στην BCPL [M. Richard, 1967] αλλά και στην απόγονο της Β [Thompson 72], την οποία ανέπτυξε ο Ken Thompson και το διάστηµα εκείνο χρησιµοποιούσε στην ανάπτυξη της νέας έκδοσης του λειτουργικού συστήµατος UNIX [1]. Ο Dennis Ritchie, προσθέτοντας και αφαιρώντας στοιχεία από την B µε στόχο να την αποµακρύνει από το υλικό, [1] Oι µέχρι τότε εκδόσεις του UNIX ήταν γραµµένες σε γλώσσα Assembly.

32 32 KEºA AIO 1: EI A ø H δηµιούργησε µια νέα γλώσσα που την ονόµασε C (η γλώσσα µετά την B). Η C όντας ευέλικτη και αποδοτική, χρησιµοποιήθηκε το 1973 για να ξαναγραφεί το µεγαλύτερο τµήµα του UNIX σε έναν PDP 11. Στη συνέχεια, και για χρόνια, χρησιµοποιήθηκε αποκλειστικά για system programming στο UNIX. Η πρώτη επίσηµη τεκµηρίωση της γλώσσας έκανε την εµφάνισή της µόλις το 1977, µε τίτλο «The C Programming Language» από τους Brian Kernighan και Dennis Ritchie. H τεκµηρίωση αυτή αποτέλεσε για χρόνια το «ευαγγέλιο» των προγραµµατιστών της C και είναι γνωστό σαν «white book» ή K&R πρότυπο [Kernighan 78]. Με την πάροδο των χρόνων, η γλώσσα άρχισε να χρησιµοποιείται και σε άλλα πεδία εφαρµογών εκτός του system programming για το οποίο σχεδιάστηκε, κατακτώντας ένα πολύ µεγάλο µέρος της αγοράς, µε αποτέλεσµα να θεωρείται στις αρχές τις δεκαετίας του 90 µία από τις επικρατέστερες γλώσσες. Σε αυτό, συνέτειναν και τα πολλά πλεονεκτήµατά της, όσον αφορά ευελιξία, αποδοτικότητα, φορητότητα και ταχύτητα εκτέλεσης, σε σύγκριση µε άλλες ανάλογες γλώσσες όπως Fortran, Basic, Pascal. Βέβαια, η γλώσσα γνώρισε πολλές αλλαγές από την πρώτη και γνωστή σαν K&R έκδοση. Οι αλλαγές αυτές οδήγησαν στη δεύτερη έκδοση της γλώσσας που είναι γνωστή σαν ANSI C πρότυπο [ANSI 88] [Kernighan 88]. Μια πολύ καλή αναφορά στην εξέλιξη της γλώσσας γίνεται στο άρθρο [Ritchie 93] È Ù C; Η επιλογή της C για τη διδασκαλία της προστακτικής µορφής προγραµµατισµού στο παρόν βιβλίο, έγινε για ένα σύνολο από λόγους που παρουσιάζονται παρακάτω: Eίναι σχετικά µικρή και εύκολη στην εκµάθηση. Yποστηρίζει top down και modular σχεδιασµό αλλά και δοµηµένο (structured) προγραµµατισµό. Eίναι αποτελεσµατική (efficient) παράγοντας συµπαγή και γρήγορα στην εκτέλεση προγράµµατα. Eίναι φορητή (portable), ευέλικτη (flexible) και ισχυρή (powerful). ε βάζει περιορισµούς, γεγονός πάντως που πολλές φορές αποβαίνει σε βάρος της. Aποτελεί µε την C++ την ευρύτερα χρησιµοποιούµενη γλώσσα σε ερευνητικά και αναπτυξιακά προγράµµατα.

33 ª ƒº ƒ ƒ ªª π ª À π π ƒπ ø ø 33 Yπάρχει µια πολύ µεγάλη εγκατεστηµένη βάση εφαρµογών που αναπτύχθηκαν µε τη γλώσσα αυτή και πρέπει να συντηρούνται και να εξελίσσονται. H C µπορεί να χρησιµοποιηθεί σαν χαµηλού επιπέδου γλώσσα προγραµ- µατισµού επιτρέποντας άµεση πρόσβαση στους πόρους του υπολογιστή και άρα στην αποτελεσµατική και χωρίς overhead αξιοποίησή τους. Ταυτόχρονα, µπορεί να χρησιµοποιηθεί και σαν γλώσσα υψηλού επιπέδου, καθώς η πληθώρα των διαθέσιµων βιβλιοθηκών υπερκαλύπτει τις απαιτήσεις ανάπτυξης λογισµικού εφαρµογής (Application Software). H γνώση της C αποτελεί ένα πολύ καλό εφόδιο για την εκµάθηση της Java. ÓÔ Ë Στο κεφάλαιο αυτό, αναφέραµε τις βασικές έννοιες της διαδικασίας ανάπτυξης λογισµικού και προσδιορίσαµε το ρόλο που διαδραµατίζει η γλώσσα προγραµµατισµού στη διαδικασία αυτή. Παρά το γεγονός ότι, τα πρώτα χρόνια της ζωής των ηλεκτρονικών υπολογιστών η γλώσσα προγραµµατισµού αποτέλεσε το κύριο εργαλείο για την ανάπτυξη λογισµικού, στη συνέχεια, αυτή περιορίστηκε σαν βασικό εργαλείο µόνο της φάσης της υλοποίησης, επηρεάζοντας βέβαια σηµαντικά και τη φάση του σχεδιασµού. Η ιστορία των γλωσσών προγραµµατισµού έχει να παρουσιάσει µια µεγάλη ποικιλία γλωσσών. Ορισµένες από αυτές, όπως οι Fortran, Lisp, Simula και Prolog, εισήγαγαν νέα στυλ προγραµµατισµού, νέους δηλαδή τρόπους σκέψης στη φάση του προγραµµατισµού. Άλλες πάλι αποτελούν απογόνους επιτυχηµένων γλωσσών όπως η C++ που αποτελεί απόγονο της C στην οποία πρόσθεσε τα πλεονεκτήµατα της Simula. Η οικογένεια των γλωσσών του προστακτικού προγραµµατισµού ξεκινά µε τη Fortran. C και Pascal αποτελούν επιτυχηµένες γενικού σκοπού γλώσσες αυτής της οικογένειας και επιλέχτηκαν να χρησιµοποιηθούν στα πλαίσια του βιβλίου για την παρουσίαση των βασικών στοιχείων του προστακτικού προγραµµατισµού. Ιδιαίτερα, χρησιµοποιείται η C, η οποία, αφενός µεν κυριάρχησε την περασµένη δεκαετία, αφ ετέρου δε αποτέλεσε τη βάση για γλώσσες που κυριαρχούν (C++) ή διαφαίνεται ότι θα κυριαρχήσουν (Java) την επόµενη δεκαετία.

34 34 KEºA AIO 1: EI A ø H µè ÏÈÔÁÚ Ê ÎÂÊ Ï Ô [ANSI 88] Περισσότερες πληροφορίες για το πρωτότυπο ISO/IEC 9899 µπορείτε να βρείτε στο δια δίκτυο στη διεύθυνση dk/jtc1/sc22/wg14/. [Bergin 96] Bergin Thomas, Gibson Richard, «History of Programming Languages», Addison Wesley, Το βιβλίο αποτελεί σηµαντική προσπάθεια συγκέντρωσης πολλών σηµαντικών γλωσσών και συνιστάται για κάθε αναγνώστη που εµπλέκεται στη χρήση ή ανάπτυξη γλωσσών προγραµµατισµού. Είναι βασισµένο στα πρακτικά του δεύτερου ACM SIGPLAN συνεδρίου «History of Programming Languages». Περιλαµβάνει περίληψη των πρακτικών του συνεδρίου, καθώς και άρθρα των σηµαντικότερων συντελεστών στο χώρο των γλωσσών προγραµµατισµού: Frederick Brooks, Alain Colmerauer, Richard Gabriel, Ralph Griswold, Per Brinch, Hansen, Alan Kay, C. H. Lindsey, Barbara Liskov, Richard Nance, Elizabeth Rather, Dennis Ritchie, Jean Sammet, Guy Steele, Bjarne Stroustrup, William Whitaker, και Niklaus Wirth. Μεταξύ των γλωσσών που ιδιαίτερα αναφέρονται είναι οι C, C++, Smalltalk,Pascal, Ada, Prolog, Lisp, ALGOL 68, FORMAC, CLU, Icon, Forth και Concurrent Pascal. [Boehm 76] Boehm W. Barry, «Software Engineering» IEEE Trans. Comput., vol. C 25, pp , Dec [Boehm 88] Boehm W. Barry, «A Spiral Model of Software Development and Enhancement» IEEE Computer, vol. 21, no 5, p.61 72, May [Horowitz 84] Horowitz Ellis, «Βασικές αρχές γλωσσών προγραµµατισµού», Εκδόσεις Κλειδάριθµος, Το βιβλίο είναι µετάφραση της δεύτερης Αµερικάνικης έκδοσης του «Fundamentals of Programming Languages» Horowitz Ellis, Computer Science Press, 1984

35 BIB IO PAºIA 35 [Horowitz 95] Horowitz Ellis, «Fundamentals of Programming Languages», Third edition, Computer Science Press, [Hsia 88] Hsia, Y. T., Ambler A., «Programming Through Pictorial transformations», Proc. Int l Conf. Computer Languages 88, IEEE CS Press, Los Alamitos, Calif., Order No. 1988, pp [Kernighan 88] Η δεύτερη έκδοση του βιβλίου «The C Programming Language» κυκλοφόρησε το 1988 καλύπτοντας πλέον την ANSI C. Αποτελεί το πλέον έγκυρο βιβλίο µετά το ISO/IEC 9899, πολύ καλό για αναφορά αλλά πολύ δύσκολο για να χρησιµοποιηθεί για εκµάθηση της γλώσσας. Ελληνική έκδοση σε µετάφραση από τον Κλειδάριθµο [Maulsby 89] Maulsby D. L., Witten H., «Inducing Programs in a Direct Manipulation Environment», Proc. CHI 89, ACM Press, New York, 1989, pp [Ritchie 93] Ritchie M. Dennis, «The Development of the C Language», ACM SIGPLAN Notices, March 93, p Το άρθρο δίνει µια πολύ καλή αναφορά στην εξέλιξη της γλώσσας C. [Sethi 97] Sethi Ravi, «Programming Languages: Concepts and Constructs» 2 nd Edition, Addison Wesley, Reprinted with corrections, April, [Wexelblat 81] Wexelblat L. Richard, «History of Programming Languages», Los Angeles, Περιέχει τα πρακτικά του πρώτου ACM SIGPLAN συνεδρίου «History of Programming Languages» Los Angeles on June 1 3, Καταγράφει τις γλώσσες προγραµµατισµού που δηµιουργήθηκαν το τέλος της δεκαετίας 60 (1967) και παρέµεναν σε χρήση µέχρι το 1977, επη-

Tεχνολογία Λογισµικού II

Tεχνολογία Λογισµικού II Tεχνολογία Λογισµικού II ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Σχολή Θετικών Επιστηµών και Τεχνολογίας Πρόγραµµα Σπουδών ΠΛHPOΦOPIKH Θεµατική Ενότητα ΣΧΕ ΙΑΣΜΟΣ ΛΟΓΙΣΜΙΚΟΥ Τόµος B' Tεχνολογία Λογισµικού II BAΣIΛEIOΣ

Διαβάστε περισσότερα

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Εισαγωγή στη C Λίγα λόγια για την C Γλώσσα προγραμματισμού υψηλού επιπέδου. Σχεδιάστηκε και υλοποιήθηκε από τον Dennis Richie στις αρχές της δεκαετίας του 1970 (Bell Labs). Η

Διαβάστε περισσότερα

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

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εισαγωγή Κώστας Στεργίου Τι είναι ο Η/Υ; Ένας ηλεκτρονικός υπολογιστής (Η/Υ) είναι

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 6 ΟΥ ΚΕΦΑΛΑΙΟΥ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ 6.1 Τι ονοµάζουµε πρόγραµµα υπολογιστή; Ένα πρόγραµµα

Διαβάστε περισσότερα

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΣΚΗΣΕΙΣ 6 ΟΥ ΚΕΦΑΛΑΙΟΥ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΕΡΩΤΗΣΕΙΣ ΣΩΣΤΟ ΛΑΘΟΣ Σημειώστε αν είναι σωστή ή

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ VI. Εισαγωγή στον προγραμματισμό

ΚΕΦΑΛΑΙΟ VI. Εισαγωγή στον προγραμματισμό ΚΕΦΑΛΑΙΟ VI Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει, όπως έχει ήδη αναφερθεί, τρία εξίσου σημαντικά στάδια. Τον ακριβή προσδιορισμό του προβλήματος. Την ανάπτυξη του αντίστοιχου αλγορίθμου.

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Εισαγωγή Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Βιβλιογραφία "C Προγραμματισμός", Deitel & Deitel, Πέμπτη Έκδοση, Εκδόσεις

Διαβάστε περισσότερα

Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον

Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Κεφάλαιο 6ο Εισαγωγή στον Προγραµµατισµό Μέρος Πρώτο (6.1, 6.2 και 6.3) Α. Ερωτήσεις Σωστού Λάθους 1. Η γλώσσα µηχανής είναι µία γλώσσα υψηλού επιπέδου.

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 1: Εισαγωγή στη C - Αλγόριθμοι Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε

Διαβάστε περισσότερα

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος. 1. Δώστε τον ορισμό του προβλήματος. 2. Σι εννοούμε με τον όρο επίλυση ενός προβλήματος; 3. Σο πρόβλημα του 2000. 4. Σι εννοούμε με τον όρο κατανόηση προβλήματος; 5. Σι ονομάζουμε χώρο προβλήματος; 6.

Διαβάστε περισσότερα

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

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ Διδάσκουσα Δρ Β Καβακλή Χειμερινό Εξάμηνο 2001 Στόχοι του Μαθήματος! Ανάπτυξη αναλυτικής

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Εισαγωγή στην FORTRAN. Δρ. Ιωάννης Λυχναρόπουλος 2014-2015

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Εισαγωγή στην FORTRAN. Δρ. Ιωάννης Λυχναρόπουλος 2014-2015 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στην FORTRAN Δρ. Ιωάννης Λυχναρόπουλος 2014-2015 Fortran FORmula TRANslation: (Μία από τις πρώτες γλώσσες τρίτης γενιάς) Εκδόσεις FORTRAN (1957) FORTRAN II (1958) FORTRAN III

Διαβάστε περισσότερα

ιαφάνειες παρουσίασης #1

ιαφάνειες παρουσίασης #1 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ http://www.corelab.ece.ntua.gr/courses/programming/ ιδάσκοντες: Στάθης Ζάχος (zachos@cs.ntua.gr) Νίκος Παπασπύρου (nickie@softlab.ntua.gr) ιαφάνειες παρουσίασης

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα για τη γλώσσα C: τον gcc μεταγλωττιστή της C σε περιβάλλον

Διαβάστε περισσότερα

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

Μ Ε Ρ Ο Σ Γ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Μ Ε Ρ Ο Σ Γ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ 6.1 Γλώσσες Προγραμματισμού 6.1.1 Γλώσσες μηχανής (1 η γενιά) Η γλώσσα στην οποία ένας ηλεκτρονικός υπολογιστής καταλαβαίνει

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 6 ο

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 6 ο Με τι ασχολείται ο προγραμματισμός; Ο προγραμματισμός ασχολείται με την διατύπωση του αλγορίθμου σε κατανοητή μορφή από τον Η/Υ, δηλ. τη δημιουργία του προγράμματος, του συνόλου των εντολών που πρέπει

Διαβάστε περισσότερα

ΙΑΓΩΝΙΣΜΑ ΣΤΗΝ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΘΕΜΑ 1 Α.

ΙΑΓΩΝΙΣΜΑ ΣΤΗΝ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΘΕΜΑ 1 Α. ΙΑΓΩΝΙΣΜΑ ΣΤΗΝ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΘΕΜΑ 1 Α. 1. Αν το Α έχει την τιµή 10 και το Β την τιµή 20 τότε η έκφραση (Α > 8 ΚΑΙ Β < 20) Ή (Α > 10 Ή Β = 10) είναι αληθής 2. Σε περίπτωση εµφωλευµένων βρόχων, ο εσωτερικός

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Ενότητα 1 - Εισαγωγή Χρήστος Γκουμόπουλος Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Στόχοι Μαθήματος H ανάπτυξη ικανοτήτων και η απόκτηση

Διαβάστε περισσότερα

ιδάσκων: ηµήτρης Ζεϊναλιπούρ

ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 1.3-1.4: Εισαγωγή Στον Προγραµµατισµό ( ιάλεξη 2) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Περιεχόµενα Εισαγωγικές Έννοιες - Ορισµοί Ο κύκλος ανάπτυξης προγράµµατος Παραδείγµατα Πότε χρησιµοποιούµε υπολογιστή?

Διαβάστε περισσότερα

Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας

Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας Τ.Ε.Ι ΗΠΕΙΡΟΥ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ & ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΤΗΛΕΠΛΗΡΟΦΟΡΙΚΗΣ & ΔΙΟΙΚΗΣΗΣ Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας Πτυχιακή εργασία του φοιτητή Γιαννακίδη Αποστόλη Επιβλέπων καθηγητής Τσούλος

Διαβάστε περισσότερα

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

Κεφάλαιο 2.1-2.4: Εισαγωγή στην C. ( ιαλέξεις 3-4) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 2.1-2.4: Εισαγωγή στην C ( ιαλέξεις 3-4) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Περιεχόµενα Εισαγωγή στην C: Σύνταξη και Σηµασιολογία σχόλια µεταβλητές και σταθερές τύποι δεδοµένων Μετά αυτές τις δυο διαλέξεις

Διαβάστε περισσότερα

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ και ΔΟΜΗ ΑΚΟΛΟΥΘΙΑΣ 2.1 Να δοθεί ο ορισμός

Διαβάστε περισσότερα

Η ΑΕΠΠ IN A GLANCE! ΦΡΟΝΤΙΣΤΗΡΙΑ ΠΟΛΥΜΕΝΗ

Η ΑΕΠΠ IN A GLANCE! ΦΡΟΝΤΙΣΤΗΡΙΑ ΠΟΛΥΜΕΝΗ Η ΑΕΠΠ IN A GLANCE! Κατανομή μονάδων: 40 μονάδες το 1 ο Θέμα, από 20 τα υπόλοιπα τρία. Μην χαίρεστε όμως γιατί η «καθαρή» θεωρία περιορίζεται συνήθως- σε 5 ερωτήσεις σωστού ή λάθους και σε 1-2 ερωτήσεις

Διαβάστε περισσότερα

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client ΕΣΔ 516 Τεχνολογίες Διαδικτύου Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client Περιεχόμενα Περιεχόμενα Javascript και HTML Βασική σύνταξη Μεταβλητές Τελεστές Συναρτήσεις

Διαβάστε περισσότερα

ΑΛΓΟΡΙΘΜΟΙ. Τι είναι αλγόριθμος

ΑΛΓΟΡΙΘΜΟΙ. Τι είναι αλγόριθμος ΑΛΓΟΡΙΘΜΟΙ Στο σηµείωµα αυτό αρχικά εξηγείται η έννοια αλγόριθµος και παραθέτονται τα σπουδαιότερα κριτήρια που πρέπει να πληρεί κάθε αλγόριθµος. Στη συνέχεια, η σπουδαιότητα των αλγορίθµων συνδυάζεται

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 1ο 3ο. ΚΕΦΑΛΑΙΟ 5ο 6ο. ΚΕΦΑΛΑΙΟ 7ο. Δομημένος Προγραμματισμός - Γενικές Ασκήσεις Επανάληψης

ΚΕΦΑΛΑΙΟ 1ο 3ο. ΚΕΦΑΛΑΙΟ 5ο 6ο. ΚΕΦΑΛΑΙΟ 7ο. Δομημένος Προγραμματισμός - Γενικές Ασκήσεις Επανάληψης ΚΕΦΑΛΑΙΟ 1ο 3ο 1. Συμπληρώστε τα κενά με τη λέξη που λείπει. α. Ένα πρόβλημα το χωρίζουμε σε άλλα απλούστερα, όταν είναι ή όταν έχει τρόπο επίλυσης. β. Η επίλυση ενός προβλήματος προϋποθέτει την του. γ.

Διαβάστε περισσότερα

Fortran και Αντικειμενοστραφής προγραμματισμός. www.corelab.ntua.gr/courses/fortran_naval/naval

Fortran και Αντικειμενοστραφής προγραμματισμός. www.corelab.ntua.gr/courses/fortran_naval/naval Fortran και Αντικειμενοστραφής προγραμματισμός Διδάσκοντες: www.corelab.ntua.gr/courses/fortran_naval/naval Άρης Παγουρτζής (pagour@cs.ntua.gr) (Επίκουρος Καθηγητής ΣΗΜΜΥ ) Δώρα Σούλιου (dsouliou@mail.ntua.gr)

Διαβάστε περισσότερα

Κεφάλαιο 2: Μεταφραστές

Κεφάλαιο 2: Μεταφραστές Κεφάλαιο 2: Μεταφραστές Αρχές Γλωσσών και Προγραμματισμού Λειτουργία Μετάφρασης ΑΡΧΙΚΗ ΓΛΩΣΣΑ (Source) L A ΓΛΩΣΣΑ ΥΛΟΠΟΙΗΣΗΣ ΜΕΤΑΦΡΑΣΤΗ (Implementation) L Y ΤΕΛΙΚΗ ΓΛΩΣΣΑ (Target) L T Αρχικό Πρόγραμμα

Διαβάστε περισσότερα

Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές

Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές 1 ο Εξάμηνο Σπουδών Χειμερινό Εξάμηνο 2012/13 Τμήμα Εφαρμοσμένων Μαθηματικών, Πανεπιστήμιο Κρήτης Διδάσκων: Χαρμανδάρης Ευάγγελος, email: vagelis@tem.uoc.gr, Ιστοσελίδα

Διαβάστε περισσότερα

Περί Προγραμματισμού και Γλωσσών Προγραμματισμού

Περί Προγραμματισμού και Γλωσσών Προγραμματισμού ΚΕΦΑΛΑΙΟ 1 ο Περί Προγραμματισμού και Γλωσσών Προγραμματισμού Προγράμματα και Λειτουργικά Συστήματα Οι ηλεκτρονικοί υπολογιστές είναι ηλεκτρονικές συσκευές (όπως είναι και ένα ραδιόφωνο) που επιτρέπουν

Διαβάστε περισσότερα

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Βασικές Έννοιες Προγραμματισμού. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Βασικές Έννοιες Προγραμματισμού. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Βασικές Έννοιες Προγραμματισμού Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD Αριθμητικά συστήματα Υπάρχουν 10 τύποι ανθρώπων: Αυτοί

Διαβάστε περισσότερα

Παράλληλη Επεξεργασία

Παράλληλη Επεξεργασία Παράλληλη Επεξεργασία Φροντιστήριο: Εισαγωγή στο OpenMP Εργαστήριο Πληροφοριακών Συστημάτων Υψηλής Επίδοσης Parallel and Distributed Systems Group Τι είναι το OpenMP Πρότυπο Επέκταση στη C/C++ και τη Fortran

Διαβάστε περισσότερα

ΔΙΔΑΚΤΙΚΗ της ΠΛΗΡΟΦΟΡΙΚΗΣ

ΔΙΔΑΚΤΙΚΗ της ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΔΙΔΑΚΤΙΚΗ της ΠΛΗΡΟΦΟΡΙΚΗΣ Μ. Γρηγοριάδου Ρ. Γόγουλου Ενότητα: Η Διδασκαλία του Προγραμματισμού Περιεχόμενα Παρουσίασης

Διαβάστε περισσότερα

Ελληνικό Ανοικτό Πανεπιστήµιο. Η Ανάλυση και ο Σχεδιασµός στην Ενοποιηµένη ιαδικασία. ρ. Πάνος Φιτσιλής

Ελληνικό Ανοικτό Πανεπιστήµιο. Η Ανάλυση και ο Σχεδιασµός στην Ενοποιηµένη ιαδικασία. ρ. Πάνος Φιτσιλής 1 Ελληνικό Ανοικτό Πανεπιστήµιο Η και ο στην Ενοποιηµένη ιαδικασία ρ. Πάνος Φιτσιλής Περιεχόµενα Γενικές αρχές ανάλυσης και σχεδιασµού Τα βήµατα της ανάλυσης και του σχεδιασµού Συµπεράσµατα 2 3 Η ανάλυση

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΠΡΟΠΤΥΧΙΑΚΟ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ ΜΑΘΗΜΑ: ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ ΔΙΑΔΙΚΑΣΙΕΣ ΠΑΡΑΓΩΓΗΣ ΛΟΓΙΣΜΙΚΟΥ Διδάσκων: Γ. Χαραλαμπίδης,

Διαβάστε περισσότερα

Tεχνολογία Λογισµικού II

Tεχνολογία Λογισµικού II Tεχνολογία Λογισµικού II ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Σχολή Θετικών Επιστηµών και Τεχνολογίας Πρόγραµµα Σπουδών ΠΛHPOΦOPIKH Θεµατική Ενότητα ΣΧΕ ΙΑΣΜΟΣ ΛΟΓΙΣΜΙΚΟΥ Τόµος B' Tεχνολογία Λογισµικού II BAΣIΛEIOΣ

Διαβάστε περισσότερα

Τύποι, Σταθερές και Μεταβλητές

Τύποι, Σταθερές και Μεταβλητές ΚΕΦΑΛΑΙΟ 3 Τύποι, Σταθερές και Μεταβλητές Η έννοια της μεταβλητής Γενικά μπορούμε να πούμε ότι η έννοια της μεταβλητής στον προγραμματισμό είναι άμεσα συνδεδεμένη με την έννοια που αυτή έχει σε μαθηματικό

Διαβάστε περισσότερα

3 Αλληλεπίδραση Αντικειμένων

3 Αλληλεπίδραση Αντικειμένων Αφαίρεση και Αρθρωσιμότητα 3 Αλληλεπίδραση Αντικειμένων Πώς συνεργάζονται τα αντικείμενα που δημιουργούμε Αφαίρεση (abstraction) είναι η δυνατότητα να αγνοούμε τις λεπτομέρειες και να εστιάζουμε την προσοχή

Διαβάστε περισσότερα

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

ΕΠΛ031 - Εισαγωγή στον Προγραμματισμό Εισαγωγή στην Fortran ΕΠΛ031 Εισαγωγή στον Προγραμματισμό Νέαρχος Πασπαλλής Επισκέπτης Ακαδημαϊκός (Λέκτορας) nearchos@cs.ucy.ac.cy Γραφείο #B120, Τηλ. ext. 2744 FORTRAN: Ιστορική Αναδρομή 1954 1957, πρώτος

Διαβάστε περισσότερα

Tεχνολογία Λογισµικού I

Tεχνολογία Λογισµικού I Tεχνολογία Λογισµικού I ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Σχολή Θετικών Επιστηµών και Τεχνολογίας Πρόγραµµα Σπουδών ΠΛHPOΦOPIKH Θεµατική Ενότητα AΡΧΕΣ TΕΧΝΟΛΟΓΙΑΣ ΛΟΓΙΣΜΙΚΟΥ Τόµος A' Tεχνολογία Λογισµικού

Διαβάστε περισσότερα

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Υλοποίηση ΑΤΔ με Συνδεδεμένες Λίστες -

Διαβάστε περισσότερα

ΣΥΝΟΠΤΙΚΟΣ ΟΔΗΓΟΣ ΓΛΩΣΣΑΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C

ΣΥΝΟΠΤΙΚΟΣ ΟΔΗΓΟΣ ΓΛΩΣΣΑΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C ΣΥΝΟΠΤΙΚΟΣ ΟΔΗΓΟΣ ΓΛΩΣΣΑΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C 1 Εισαγωγή Ο προγραμματισμός είναι μια διαδικασία επίλυσης προβλημάτων με χρήση Η/Υ. Ένα πρόγραμμα είναι ένα σύνολο εντολών κάποιας γλώσσας προγραμματισμού,

Διαβάστε περισσότερα

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

Διάλεξη 6: Δείκτες και Πίνακες Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 6: Δείκτες και Πίνακες (Κεφάλαιο 12, KNK-2ED) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132 6-1 Περιεχόμενο

Διαβάστε περισσότερα

Σχεδιασµός και Eκτίµηση Έργων

Σχεδιασµός και Eκτίµηση Έργων Σχεδιασµός και Eκτίµηση Έργων Σηµείωση Το ΕΑΠ είναι υπεύθυνο για την επιµέλεια έκδοσης και την ανάπτυξη των κειµένων σύµφωνα µε τη Μεθοδολογία της εξ Αποστάσεως Εκπαίδευσης. Για την επιστηµονική αρτιότητα

Διαβάστε περισσότερα

Μεταφερσιμότητα Τα προγράμματα μεταφέρονται εύκολα σε διαφορετικά λειτουργικά συστήματα

Μεταφερσιμότητα Τα προγράμματα μεταφέρονται εύκολα σε διαφορετικά λειτουργικά συστήματα Η ΓΛΩΣΣΑ C Η C είναι μια γλώσσα προγραμματισμού υψηλού επιπέδου η οποία αναπτύχθηκε στις αρχές της δεκαετίας του 70 από τον Dennis Ritchie στα Bell Labs. Η σημερινή μορφή της γλώσσας ακολουθεί το πρότυπο

Διαβάστε περισσότερα

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Βήματα προς τη δημιουργία εκτελέσιμου κώδικα

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Βήματα προς τη δημιουργία εκτελέσιμου κώδικα Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Βήματα προς τη δημιουργία εκτελέσιμου κώδικα Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD Βήματα προς τη δημιουργία εκτελέσιμου κώδικα

Διαβάστε περισσότερα

Διδάσκων:Μ.Χατζόπουλος, Παραδόσεις:Τρίτη 4-6, Τετάρτη 1-3; (Αμφιθέατρο Α15) Πληροφορίες στην ιστοσελίδα του μαθήματος http://www.di.uoa.

Διδάσκων:Μ.Χατζόπουλος, Παραδόσεις:Τρίτη 4-6, Τετάρτη 1-3; (Αμφιθέατρο Α15) Πληροφορίες στην ιστοσελίδα του μαθήματος http://www.di.uoa. Πληροφορική 1 Διδάσκων:Μ.Χατζόπουλος, Παραδόσεις:Τρίτη 4-6, Τετάρτη 1-3; (Αμφιθέατρο Α15) Πληροφορίες στην ιστοσελίδα του μαθήματος http://www.di.uoa.gr/~organosi/ 2 Η δομή του μαθήματος Εισαγωγή στην

Διαβάστε περισσότερα

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Σκοπός Να αναπτύξουν ένα πρόγραμμα όπου θα επαναλάβουν τα βήματα ανάπτυξης μιας παραθυρικής εφαρμογής.

Διαβάστε περισσότερα

ΤΙ ΕΙΝΑΙ Ο ΥΠΟΛΟΓΙΣΤΗΣ

ΤΙ ΕΙΝΑΙ Ο ΥΠΟΛΟΓΙΣΤΗΣ ΤΙ ΕΙΝΑΙ Ο ΥΠΟΛΟΓΙΣΤΗΣ Ο όρος είναι συντομογραφία του όρου «Αυτόματος, Ηλεκτρονικός Ψηφιακός Υπολογιστής Γενικού Σκοπού» [1]. Αυτόματος Μετά την έναρξη της λειτουργίας του εργάζεται μόνος του εκτελώντας

Διαβάστε περισσότερα

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής. Ακαδημαϊκό Έτος 2007-2008

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής. Ακαδημαϊκό Έτος 2007-2008 Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Ακαδημαϊκό Έτος 2007-2008 ΠΑΡΑΔΟΤΕΟ: Έκθεση Προόδου Υλοποίησης του Μαθήματος Εισαγωγή στην Επιστήμη των Υπολογιστών Διδάσκοντες: Θ.Ανδρόνικος - Μ.Στεφανιδάκης Περιεχόμενα

Διαβάστε περισσότερα

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Μεταγλώτιση, σύνδεση

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Μεταγλώτιση, σύνδεση ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Μεταγλώτιση, σύνδεση Αρης Ευθυμίου Ανακοινώσεις! Βαθμοί: 1ης εργαστηριακής άσκησης Βαθμός 0 χωρίς σχόλια δεν έχω πάρει την άσκηση! ελέγξτε μήπως δεν το στέλνετε στο σωστό

Διαβάστε περισσότερα

Σενάριο 15: Ενεργός Μετεωρολογικός Χάρτης

Σενάριο 15: Ενεργός Μετεωρολογικός Χάρτης Σενάριο 15: Ενεργός Μετεωρολογικός Χάρτης Ταυτότητα Σεναρίου Τίτλος : Ενεργός Μετεωρολογικός Χάρτης Γνωστικό Αντικείμενο: Εφαρμογές Πληροφορικής-Υπολογιστών Διδακτική Ενότητα: Διερευνώ - Δημιουργώ Ανακαλύπτω,

Διαβάστε περισσότερα

ΔΟΜΗΜΕΝΟΣ ΟΠΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΕ ΠAΡΑΘΥΡΙΚΟ ΠΕΡΙΒΑΛΛΟΝ με τη Γλώσσα Προγραμματισμού VISUAL BASIC (1 ο ΕΠΙΠΕΔΟ)

ΔΟΜΗΜΕΝΟΣ ΟΠΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΕ ΠAΡΑΘΥΡΙΚΟ ΠΕΡΙΒΑΛΛΟΝ με τη Γλώσσα Προγραμματισμού VISUAL BASIC (1 ο ΕΠΙΠΕΔΟ) Γενικός Σκοπός Το αναλυτικό πρόγραμμα έχει ως γενικό σκοπό να δώσει στους μαθητές τις απαιτούμενες γνωστικές, κριτικές και αναλυτικές δεξιότητες ώστε να είναι ικανοί να χρησιμοποιούν τους υπολογιστές για

Διαβάστε περισσότερα

1. ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C++

1. ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C++ Email: liliadis@fmenr.duth.gr 1. ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C++ Τα προγράµµατα αποτελούνται από εντολές οι οποίες γράφονται σε έναν απλό επεξεργαστή που προσφέρει και το Περιβάλλον της Visual C++. Οι εντολές

Διαβάστε περισσότερα

Πληρουορική Γ Γσμμασίοσ

Πληρουορική Γ Γσμμασίοσ Πληρουορική Γ Γσμμασίοσ Προγραμματισμός και Αλγόριθμοι Από το και τημ Χελώμα στημ Ευριπίδης Βραχνός http://evripides.mysch.gr/ 2014 2015 1 Προγραμματισμός Ζάννειο Πρότυπο Πειραματικό Γυμνάσιο Πειραιά Ενότητα:

Διαβάστε περισσότερα

Λογισμική Εφαρμογή Διαχείρισης Ερωτηματολογίων ΟΔΗΓΟΣ ΧΡΗΣΗΣ System Συμβουλευτική Α.Ε

Λογισμική Εφαρμογή Διαχείρισης Ερωτηματολογίων ΟΔΗΓΟΣ ΧΡΗΣΗΣ System Συμβουλευτική Α.Ε σχετικά με τον έλεγχο της καπνιστικής συνήθειας 1 22 Λογισμικές εφαρμογές καταγραφής και αξιοποίησης πληροφοριών σχετικά με τον έλεγχο της καπνιστικής συνήθειας Λογισμική Εφαρμογή Διαχείρισης Ερωτηματολογίων

Διαβάστε περισσότερα

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ & ΤΕΧΝΟΛΟΓΙΑΣ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥ ΩΝ «ΠΛΗΡΟΦΟΡΙΚΗ»

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ & ΤΕΧΝΟΛΟΓΙΑΣ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥ ΩΝ «ΠΛΗΡΟΦΟΡΙΚΗ» ΤΕΛΙΚΗ ΕΞΕΤΑΣΗ Σάββατο 5 Ιουνίου 2010 Οδηγίες: Η διάρκεια της εξέτασης είναι τρεις και µισή (3 ½) ώρες. Ισχύουν όσα αναφέρονται στους Κανονισµούς Εξετάσεων του ΕΑΠ γενικότερα και της Θ.Ε. ειδικότερα. Τα

Διαβάστε περισσότερα

Aνακοίνωση Εξετάσεων Προγραμματισμού με τη Χρήση Ηλεκτρονικού Υπολογιστή και Μεταγλωττιστή στις Γλώσσες Προγραμματισμού PASCAL, C, C++ και JAVA

Aνακοίνωση Εξετάσεων Προγραμματισμού με τη Χρήση Ηλεκτρονικού Υπολογιστή και Μεταγλωττιστή στις Γλώσσες Προγραμματισμού PASCAL, C, C++ και JAVA Ο Κυπριακός Σύνδεσμος Πληροφορικής (www.ccs.rg.cy ), ανταποκρινόμενος θετικά στην παρότρυνση και τις εισηγήσεις αριθμού συνεργατών τους τελευταίους δεκαοκτώ μήνες και τα θετικά σχόλια κατά τις συζητήσεις

Διαβάστε περισσότερα

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Κλάσεις.

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Κλάσεις. 1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 5η Ιστοσελίδα του µαθήµατος 2 http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα

Διαβάστε περισσότερα

III. Πως μετατρέπεται το πηγαίο πρόγραμμα σε εκτελέσιμο πρόγραμμα;

III. Πως μετατρέπεται το πηγαίο πρόγραμμα σε εκτελέσιμο πρόγραμμα; ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΙΑΓΩΝΙΣΜΑ ΟΝΟΜΑΤΕΠΩΝΥΜΟ: Θέμα 1ο I. Τι πρέπει να ικανοποιεί ένα κομμάτι κώδικα ώστε να χαρακτηριστεί ως υποπρόγραμμα; Τα υποπρογράμματα πρέπει

Διαβάστε περισσότερα

Περιεχόμενο του μαθήματος

Περιεχόμενο του μαθήματος ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Απαιτήσεις Λογισμικού Περιπτώσεις χρήσης Δρ Βαγγελιώ Καβακλή Τμήμα Πολιτισμικής Τεχνολογίας και Επικοινωνίας Πανεπιστήμιο Αιγαίου Εαρινό Εξάμηνο 2012-2013 1 Περιεχόμενο του μαθήματος

Διαβάστε περισσότερα

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διαχείριση μνήμης III

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διαχείριση μνήμης III ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Διαχείριση μνήμης III Υλικό από: Tanenbaum, Modern Operating Systems,Structured Computer Organization Stallings, Operating Systems: Internals and Design Principles. Silberschatz,

Διαβάστε περισσότερα

Είδη εντολών. Απλές εντολές. Εντολές ελέγχου. Εκτελούν κάποια ενέργεια. Ορίζουν τον τρόπο με τον οποίο εκτελούνται άλλες εντολές

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

Διαβάστε περισσότερα

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Βασικά Στοιχεία Το αλφάβητο της C Οι βασικοί τύποι της C Δηλώσεις μεταβλητών Είσοδος/Έξοδος Βασικές εντολές της C Αλφάβητο

Διαβάστε περισσότερα

Περιεχόµενα. I Βασικές Γνώσεις 1

Περιεχόµενα. I Βασικές Γνώσεις 1 Περιεχόµενα I Βασικές Γνώσεις 1 1 Μοντελοποίηση Προγραµµάτων 3 1.1 Ψευδογλώσσα....................... 6 1.2 Διαγράµµατα Ροής..................... 6 1.3 Παραδείγµατα σε Ψευδογλώσσα και Διαγράµµατα Ροής.

Διαβάστε περισσότερα

ΟΔΗΓΙΕΣ ΕΓΚΑΤΑΣΤΑΣΗΣ & ΧΡΗΣΗΣ ΟΛΟΚΛΗΡΩΜΕΝΟΥ ΠΕΡΙΒΑΛΛΟΝΤΟΣ ΑΝΑΠΤΥΞΗΣ BloodShed Dev-C++

ΟΔΗΓΙΕΣ ΕΓΚΑΤΑΣΤΑΣΗΣ & ΧΡΗΣΗΣ ΟΛΟΚΛΗΡΩΜΕΝΟΥ ΠΕΡΙΒΑΛΛΟΝΤΟΣ ΑΝΑΠΤΥΞΗΣ BloodShed Dev-C++ ΟΔΗΓΙΕΣ ΕΓΚΑΤΑΣΤΑΣΗΣ & ΧΡΗΣΗΣ ΟΛΟΚΛΗΡΩΜΕΝΟΥ ΠΕΡΙΒΑΛΛΟΝΤΟΣ ΑΝΑΠΤΥΞΗΣ BloodShed Dev-C++ Α. ΠΡΙΝ ΤΗΝ ΕΓΚΑΤΑΣΤΑΣΗ Το πρόγραμμα BloodShed Dev-C++ είναι ένα ολοκληρωμένο περιβάλλον ανάπτυξης* κώδικα για γλώσσες

Διαβάστε περισσότερα

ÑÏÕËÁ ÌÁÊÑÇ. Β. Να αναφέρετε τις κυριότερες τυποποιηµένες τεχνικές σχεδίασης αλγορίθµων. ΜΟΝΑ ΕΣ 3

ÑÏÕËÁ ÌÁÊÑÇ. Β. Να αναφέρετε τις κυριότερες τυποποιηµένες τεχνικές σχεδίασης αλγορίθµων. ΜΟΝΑ ΕΣ 3 1 Γ' ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ ΘΕΜΑ 1 Ο ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Α. Να γράψετε στο τετράδιό σας τον αριθµό καθεµιάς από τις παρακάτω προτάσεις 1-5 και δίπλα τη λέξη Σωστό

Διαβάστε περισσότερα

Κεφάλαιο 5ο: Εντολές Επανάληψης

Κεφάλαιο 5ο: Εντολές Επανάληψης Χρήστος Τσαγγάρης ΕΕ ΙΠ Τµήµατος Μαθηµατικών, Πανεπιστηµίου Αιγαίου Κεφάλαιο 5ο: Εντολές Επανάληψης Η διαδικασία της επανάληψης είναι ιδιαίτερη συχνή, αφού πλήθος προβληµάτων µπορούν να επιλυθούν µε κατάλληλες

Διαβάστε περισσότερα

Βασικά Στοιχεία της Java

Βασικά Στοιχεία της Java Βασικά Στοιχεία της Java Παύλος Εφραιμίδης Java Βασικά Στοιχεία της γλώσσας Java 1 Τύποι Δεδομένων Η Java έχει δύο κατηγορίες τύπων δεδομένων: πρωτογενείς (primitive) τύπους δεδομένων αναφορές Java Βασικά

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C Ιανουάριος 2013 Τι είναι ένα πρόγραμμα; Πρόγραμμα είναι μία σειρά από οδηγίες που δίνουμε στον υπολογιστή προκειμένου αυτός να κάνει κάποια συγκεκριμένη εργασία Πώς

Διαβάστε περισσότερα

Περιεχόμενα 1 Εισαγωγή Η φράση επιστήµη των υπολογιστών σήµερα έχει αποκτήσει ευρύτατο νόηµα. Ωστόσο, στο βιβλίο αυτό ορίζουµε τη φράση ως "θέµατα που σχετίζονται µε τον υπολογιστή". Αυτό το εισαγωγικό

Διαβάστε περισσότερα

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Εκφράσεις και Λίγες Εντολές Οι εκφράσεις της C Τελεστές Απλές και σύνθετες εντολές Εντολές ελέγχου (επιλογής) Εισαγωγή σε

Διαβάστε περισσότερα

ISBN 960-431-204-9. K ıâ ÁÓ ÛÈÔ ÓÙ Ù appleô appleôáú ÊÂÙ È applefi ÙÔÓ Û ÁÁÚ Ê Â ÙÂÚË Î ÔÛË 1993

ISBN 960-431-204-9. K ıâ ÁÓ ÛÈÔ ÓÙ Ù appleô appleôáú ÊÂÙ È applefi ÙÔÓ Û ÁÁÚ Ê Â ÙÂÚË Î ÔÛË 1993 2 K ıâ ÁÓ ÛÈÔ ÓÙ Ù appleô appleôáú ÊÂÙ È applefi ÙÔÓ Û ÁÁÚ Ê Â ÙÂÚË Î ÔÛË 1993 Copyright 1989, 1993,. ËÌËÙÚÔappleÔ ÏÔ - æˆìôappleô ÏÔ ISBN 960-431-204-9 Φωτοστοιχειοθεσία-Eκτ πωση: Bι λιοπωλείο: Π. ZHTH

Διαβάστε περισσότερα

Visual Basic Βασικές Έννοιες

Visual Basic Βασικές Έννοιες Visual Basi Βασικές Έννοιες «Είδα στον ύπνο µου ότι η ζωή είναι χαρά. Ξύπνησα και είδα ότι είναι χρέος. Αγωνίστηκα και είδα ότι τo χρέος είναι χαρά.» Ραµπριτανάθ Ταγκόρ Κουλλάς Χρίστος www.oullas.om oullas

Διαβάστε περισσότερα

Χειµερινό Εξάµηνο 2013

Χειµερινό Εξάµηνο 2013 Προγραµµατισµός Χειµερινό Εξάµηνο 2013 Προγραµµατισµός Εισαγωγή Περιεχόµενο : γλώσσα προγραµµατισµού: C++ µέθοδοι προγραµµατισµού προγραµµατιστικές αρχές δοµηµένος προγραµµατισµός, αφαιρετικότητα, υλοποίηση,

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 18. 18 Μηχανική Μάθηση

ΚΕΦΑΛΑΙΟ 18. 18 Μηχανική Μάθηση ΚΕΦΑΛΑΙΟ 18 18 Μηχανική Μάθηση Ένα φυσικό ή τεχνητό σύστηµα επεξεργασίας πληροφορίας συµπεριλαµβανοµένων εκείνων µε δυνατότητες αντίληψης, µάθησης, συλλογισµού, λήψης απόφασης, επικοινωνίας και δράσης

Διαβάστε περισσότερα

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΤΕΛΟΣ 1ΗΣ ΑΠΟ 6 ΣΕΛΙ ΕΣ

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΤΕΛΟΣ 1ΗΣ ΑΠΟ 6 ΣΕΛΙ ΕΣ ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΠΑΝΕΛΛΑ ΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΗΜΕΡΗΣΙΩΝ ΚΑΙ ΕΣΠΕΡΙΝΩΝ ΕΠΑΓΓΕΛΜΑΤΙΚΩΝ ΛΥΚΕΙΩΝ (ΟΜΑ Α A ) ΚΑΙ ΜΑΘΗΜΑΤΩΝ ΕΙ ΙΚΟΤΗΤΑΣ ΕΠΑΓΓΕΛΜΑΤΙΚΩΝ ΛΥΚΕΙΩΝ (ΟΜΑ Α Β ) ΕΥΤΕΡΑ 16 ΙΟΥΝΙΟΥ 2014 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ:

Διαβάστε περισσότερα

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της;

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της; 1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες (μορφές) της; Η δομή επανάληψης χρησιμοποιείται όταν μια σειρά εντολών πρέπει να εκτελεστεί σε ένα σύνολο περιπτώσεων, που έχουν κάτι

Διαβάστε περισσότερα

Γενετικοί Aλγόριθµοι και Eφαρµογές

Γενετικοί Aλγόριθµοι και Eφαρµογές Γενετικοί Aλγόριθµοι και Eφαρµογές ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Σχολή Θετικών Επιστηµών και Τεχνολογίας Πρόγραµµα Σπουδών ΠΛΗΡΟΦΟΡΙΚΗ Θεµατική Ενότητα TΕΧΝΗΤΗ NΟΗΜΟΣΥΝΗ ΚΑΙ EΦΑΡΜΟΓΕΣ Τόµος Γ' Γενετικοί

Διαβάστε περισσότερα

Τεχνολογίες Υλοποίησης Αλγορίθµων

Τεχνολογίες Υλοποίησης Αλγορίθµων Τεχνολογίες Υλοποίησης Αλγορίθµων Σχολιασµένη Βιβλιογραϕία Χρηστος. Ζαρολιαγκης Καθηγητής Τµήµα Μηχ/κων Υπολογιστών & Πληροϕορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Φεβρουάριος 2013 1 Περίληψη

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Τεχνικός Εφαρμογών Πληροφορικής

Τεχνικός Εφαρμογών Πληροφορικής Τεχνικός Εφαρμογών Πληροφορικής ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΠΙΝΑΚΕΣ Εξάμηνο: 2014Β Διδάσκουσα: Ηλεκτρονική Τάξη: Κανελλοπούλου Χριστίνα_ΠΕ19 Πληροφορικής Περιεχόμενα Πίνακες Τι είναι πίνακας; Οι πίνακες χρησιμοποιούνται

Διαβάστε περισσότερα

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

Προγραμματισμός Χειμερινό Εξάμηνο 2014 Χειμερινό Εξάμηνο 2014 Εισαγωγή Περιεχόμενο : μέθοδοι προγραμματισμού προγραμματιστικές αρχές δομημένος προγραμματισμός, αφαιρετικότητα, υλοποίηση, έλεγχος, και αποσφαλμάτωση καλές πρακτικές γλώσσα προγραμματισμού:

Διαβάστε περισσότερα

ΠΕΡΙΕΧΟΜΕΝΑ ΜΕΡΟΣ Α : ΘΕΜΑΤΑ ΒΑΣΗΣ 1. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ...11 2. ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ...30

ΠΕΡΙΕΧΟΜΕΝΑ ΜΕΡΟΣ Α : ΘΕΜΑΤΑ ΒΑΣΗΣ 1. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ...11 2. ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ...30 ΠΕΡΙΕΧΟΜΕΝΑ ΜΕΡΟΣ Α : ΘΕΜΑΤΑ ΒΑΣΗΣ 1. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ...11 1.1 Τι είναι Πληροφορική;...11 1.1.1 Τι είναι η Πληροφορική;...12 1.1.2 Τι είναι ο Υπολογιστής;...14 1.1.3 Τι είναι το Υλικό και το

Διαβάστε περισσότερα

ÏÅÖÅ. Β. Να αναφέρετε τις κυριότερες τυποποιηµένες τεχνικές σχεδίασης αλγορίθµων. ΜΟΝΑ ΕΣ 3

ÏÅÖÅ. Β. Να αναφέρετε τις κυριότερες τυποποιηµένες τεχνικές σχεδίασης αλγορίθµων. ΜΟΝΑ ΕΣ 3 1 Γ' ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ ΘΕΜΑ 1 Ο ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Α. Να γράψετε στο τετράδιό σας τον αριθµό καθεµιάς από τις παρακάτω προτάσεις 1-5 και δίπλα τη λέξη Σωστό

Διαβάστε περισσότερα

«Μηχανή Αναζήτησης Αρχείων» Ημερομηνία Παράδοσης: 30/04/2015, 09:00 π.μ.

«Μηχανή Αναζήτησης Αρχείων» Ημερομηνία Παράδοσης: 30/04/2015, 09:00 π.μ. ΕΡΓΑΣΙΑ 4 «Μηχανή Αναζήτησης Αρχείων» Ημερομηνία Παράδοσης: 30/04/2015, 09:00 π.μ. Στόχος Στόχος της Εργασίας 4 είναι να η εξοικείωση με την αντικειμενοστρέφεια (object oriented programming). Πιο συγκεκριμένα,

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

ΚΡΥΠΤΟΓΡΑΦΙΑ Α. ΑΠΟ ΤΟ ΒΙΒΛΙΟ «Η ΦΥΣΗ ΚΑΙ Η ΔΥΝΑΜΗ ΤΩΝ ΜΑΘΗΜΑΤΙΚΩΝ»

ΚΡΥΠΤΟΓΡΑΦΙΑ Α. ΑΠΟ ΤΟ ΒΙΒΛΙΟ «Η ΦΥΣΗ ΚΑΙ Η ΔΥΝΑΜΗ ΤΩΝ ΜΑΘΗΜΑΤΙΚΩΝ» ΚΡΥΠΤΟΓΡΑΦΙΑ Α. ΑΠΟ ΤΟ ΒΙΒΛΙΟ «Η ΦΥΣΗ ΚΑΙ Η ΔΥΝΑΜΗ ΤΩΝ ΜΑΘΗΜΑΤΙΚΩΝ» - Κρυπτογραφία είναι - Κρυπτανάλυση είναι - Με τον όρο κλειδί. - Κρυπτολογία = Κρυπτογραφία + Κρυπτανάλυση - Οι επιστήµες αυτές είχαν

Διαβάστε περισσότερα

Εντολές γλώσσας μηχανής

Εντολές γλώσσας μηχανής Εντολές γλώσσας μηχανής Στον υπολογιστή MIPS η εντολή πρόσθεσε τα περιεχόμενα των καταχωρητών 17 και 20 και τοποθέτησε το αποτέλεσμα στον καταχωρητή 9 έχει την μορφή: 00000010001101000100100000100000 Πεδία

Διαβάστε περισσότερα

ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ

ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ ΒΑΙΚΕ ΕΝΝΟΙΕ ΑΓΟΡΙΘΜΩΝ ΕΡΩΤΗΕΙ ΑΞΙΟΟΓΗΗ ΕΡΩΤΗΕΙ ΩΤΟΥ ΑΘΟΥ 1. ηµειώστε το γράµµα αν η πρόταση είναι σωστή και το γράµµα αν είναι λάθος. 1. Ο αλγόριθµος πρέπει να τερµατίζεται µετά από εκτέλεση πεπερασµένου

Διαβάστε περισσότερα

Πληροφοριακά Συστήµατα

Πληροφοριακά Συστήµατα Nell Dale John Lewis Chapter 12 Πληροφοριακά Συστήµατα Στόχοι Ενότητας Η κατανόηση της έννοιας «Πληροφοριακό Σύστηµα» Επεξήγηση της οργάνωσης λογιστικών φύλλων (spreadsheets) Επεξήγηση της ανάλυσης δεδοµένων

Διαβάστε περισσότερα

Συστήματα Αυτομάτου Ελέγχου

Συστήματα Αυτομάτου Ελέγχου ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΠΕΙΡΑΙΑ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΑΥΤΟΜΑΤΙΣΜΟΥ Καθ. Εφαρμογών: Σ. Βασιλειάδου Εργαστήριο Συστήματα Αυτομάτου Ελέγχου για Ηλεκτρολόγους Μηχανικούς Εργαστηριακές Ασκήσεις Χειμερινό

Διαβάστε περισσότερα

7.5 ΑΡΑΙΕΣ ΜΗΤΡΕΣ 290 7.5.1 Κατασκευή αραιών µητρών... 290 7.5.2 Πράξεις και συναρτήσεις αραιών µητρών... 294 7.5.3 Συναρτήσεις για γραφήµατα...

7.5 ΑΡΑΙΕΣ ΜΗΤΡΕΣ 290 7.5.1 Κατασκευή αραιών µητρών... 290 7.5.2 Πράξεις και συναρτήσεις αραιών µητρών... 294 7.5.3 Συναρτήσεις για γραφήµατα... Κ. Π Α Π Α Ρ Ρ Ι Ζ Ο Σ M A T L A B 6. 5 Π Ε Ρ Ι Ε Χ Ο Μ Ε Ν Α Π Ρ Ο Λ Ο Γ Ο Σ............. v Κ Ε Φ Α Λ Α Ι Ο 1 Β Α Σ Ι Κ Ε Σ Λ Ε Ι Τ Ο Υ Ρ Γ Ι Ε Σ Τ Ο Υ M A T L A B 1 1.1 ΠΡΑΞΕΙΣ ΚΑΙ ΑΡΙΘΜΗΤΙΚΕΣ ΠΑΡΑΣΤΑΣΕΙΣ

Διαβάστε περισσότερα

Mοντελοποίηση και Προσοµοίωση

Mοντελοποίηση και Προσοµοίωση Mοντελοποίηση και Προσοµοίωση Σηµείωση Το ΕΑΠ είναι υπεύθυνο για την επιµέλεια έκδοσης και την ανάπτυξη των κειµένων σύµφωνα µε τη Μεθοδολογία της εξ Αποστάσεως Εκπαίδευσης. Για την επιστηµονική αρτιότητα

Διαβάστε περισσότερα

ΓΕΝΙΚ Ι Ο Κ Ο Ε ΠΙ Π Τ Ι Ε Τ Λ Ε ΕΙΟ Ι Ο Ε Θ Ε Ν Θ ΙΚ Ι Η Κ Σ Η Α Μ

ΓΕΝΙΚ Ι Ο Κ Ο Ε ΠΙ Π Τ Ι Ε Τ Λ Ε ΕΙΟ Ι Ο Ε Θ Ε Ν Θ ΙΚ Ι Η Κ Σ Η Α Μ ΓΕΝΙΚΟ ΕΠΙΤΕΛΕΙΟ ΕΘΝΙΚΗΣ ΑΜΥΝΑΣ ΚΛΑΔΟΣ ΣΤΡΑΤΗΓΙΚΗΣ & ΠΟΛΙΤΙΚΗΣ ΔΙΕΥΘΥΝΣΗ ΑΜΥΝΤΙΚΟΥ ΣΧΕΔΙΑΣΜΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Σεμινάριο ΔΙΑΚΛΑΔΙΚΟ ΣΧΟΛΕΙΟ ΔΙΑΛΕΙΤΟΥΡΓΙΚΟΤΗΤΑΣ -ΠΟΙΟΤΗΤΑΣ - ΣΤΟΧΟΘΕΣΙΑΣ Θέμα: «Τεχνικές Διαχείρισης

Διαβάστε περισσότερα

ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ. Python & NLTK: Εισαγωγή

ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ. Python & NLTK: Εισαγωγή ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ Python & NLTK: Εισαγωγή Εισαγωγή Γιατί Python? Παρουσίαση NLTK Πηγές και χρήσιμα εργαλεία Φροντιστήριο σε Python Στο φροντιστήριο: Εισαγωγή στην Python Ζητήματα προγραμματισμού για

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Ενότητα 12 Δομές (Structures) Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Αφαιρετικότητα Με τις συναρτήσεις επιτυγχάνουμε αφαιρετικότητα

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Διδάσκουσα Δρ Β.

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Διδάσκουσα Δρ Β. ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ Διδάσκουσα Δρ Β. Καβακλή Χειμερινό Εξάμηνο 2001 1 Σύνολο χαρακτήρων της Pascal Για

Διαβάστε περισσότερα

1. ΑΡΧΕΣ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

1. ΑΡΧΕΣ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ 12 Σχεδιασμός Ανάπτυξη Λειτουργία Π.Σ. 1. ΑΡΧΕΣ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ 1.1 Δυνατότητες Λειτουργικών Συστημάτων 1.1.1 Εισαγωγή Ο όρος Λειτουργικό Σύστημα (Operating System), εκφράζει το σύνολο των προγραμμάτων

Διαβάστε περισσότερα