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

Μέγεθος: 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, επη-

EÈÛ ÁˆÁ ÛÙËÓ ÏËÚÔÊÔÚÈÎ

EÈÛ ÁˆÁ ÛÙËÓ ÏËÚÔÊÔÚÈÎ E π A π π ª π EÈÛ ÁˆÁ ÛÙËÓ ÏËÚÔÊÔÚÈÎ TfiÌÔ A' HÏ appleèù ÎË EÈÛ ÁˆÁ ÛÙËÓ EappleÈÛÙ ÌË ÙˆÓ YappleÔÏÔÁÈÛÙÒÓ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Σχολή Θετικών Επιστηµών και Τεχνολογίας Πρόγραµµα Σπουδών ΠΛHPOΦOPIKH

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

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

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

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

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

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

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

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

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

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

Επιµέλεια Θοδωρής Πιερράτος

Επιµέλεια Θοδωρής Πιερράτος Εισαγωγή στον προγραµµατισµό Η έννοια του προγράµµατος Ο προγραµµατισµός ασχολείται µε τη δηµιουργία του προγράµµατος, δηλαδή του συνόλου εντολών που πρέπει να δοθούν στον υπολογιστή ώστε να υλοποιηθεί

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

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

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

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

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

ΚΕΦΑΛΑΙΟ 7 ΕΙ Η, ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΚΕΦΑΛΑΙΟ 7 ΕΙ Η, ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ 7.1. Ανάπτυξη Προγράµµατος Τι είναι το Πρόγραµµα; Το Πρόγραµµα: Είναι ένα σύνολο εντολών για την εκτέλεση ορισµένων λειτουργιών από τον υπολογιστή.

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

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

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

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

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Δρ. Κόννης Γιώργος Πανεπιστήμιο Κύπρου - Τμήμα Πληροφορικής Προγραμματισμός Στόχοι 1 Να περιγράψουμε τις έννοιες του Υπολογιστικού Προβλήματος και του Προγράμματος/Αλγορίθμου

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

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 1 Εισαγωγή στη C Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Διαδικαστικά Ιστοσελίδα μαθήματος: http://eclass.uoa.gr/courses/f30/ Υποχρεωτική παρακολούθηση: Παρασκευή 14:00 16:00 στην

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

Κεφάλαιο 1: Εισαγωγή. Αρχές Γλωσσών και Προγραμματισμού και Μεταφραστών. Γιάννης Γαροφαλάκης ΤΜΗΥΠ - Πανεπιστήμιο Πατρών

Κεφάλαιο 1: Εισαγωγή. Αρχές Γλωσσών και Προγραμματισμού και Μεταφραστών. Γιάννης Γαροφαλάκης ΤΜΗΥΠ - Πανεπιστήμιο Πατρών Κεφάλαιο 1: Εισαγωγή Αρχές Γλωσσών και Προγραμματισμού και Μεταφραστών Εισαγωγή (1) Γιατί υπάρχουν τόσες πολλές Γλώσσες Προγραμματισμού (ΓΠ); o Εξέλιξη έχουμε μάθει καλύτερους τρόπους να κάνουμε πράγματα

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

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) Pascal- Εισαγωγή Η έννοια του προγράμματος Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει, όπως έχει ήδη αναφερθεί, τρία εξίσου

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

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

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

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

Προγραµµατισµός Η/Υ. Μέρος2

Προγραµµατισµός Η/Υ. Μέρος2 Προγραµµατισµός Η/Υ Μέρος2 Περιεχόμενα Επανάληψη Βασικών Σύμβολων Διαγραμμάτων Ροής Αλγόριθμος Ψευδοκώδικας Παραδείγματα Αλγορίθμων Γλώσσες προγραμματισμού 2 Επανάληψη Βασικών Σύμβολων Διαγραμμάτων Ροής

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

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5.1 Εισαγωγή στους αλγορίθμους 5.1.1 Εισαγωγή και ορισμοί Αλγόριθμος (algorithm) είναι ένα πεπερασμένο σύνολο εντολών οι οποίες εκτελούν κάποιο ιδιαίτερο έργο. Κάθε αλγόριθμος

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

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

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

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

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

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

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

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

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

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

E π A π π ª π AÚ TÂ ÓÔÏÔÁ ÔÁÈÛÌÈÎÔ. TfiÌÔ B' ÂÈÙÔ ÚÁÈÎ ÛÙ Ì Ù I

E π A π π ª π AÚ TÂ ÓÔÏÔÁ ÔÁÈÛÌÈÎÔ. TfiÌÔ B' ÂÈÙÔ ÚÁÈÎ ÛÙ Ì Ù I E π A π π ª π AÚ TÂ ÓÔÏÔÁ ÔÁÈÛÌÈÎÔ TfiÌÔ B' ÏÔ apple Ú ÎË ÂÈÙÔ ÚÁÈÎ ÛÙ Ì Ù I ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Σχολή Θετικών Επιστηµών και Τεχνολογίας Πρόγραµµα Σπουδών ΠΛHPOΦOPIKH Θεµατική Ενότητα APXEΣ TEXNOΛOΓIAΣ

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

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

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

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

6. Εισαγωγή στον προγραµµατισµό

6. Εισαγωγή στον προγραµµατισµό 6. Εισαγωγή στον προγραµµατισµό 6.1 Η έννοια του προγράµµατος. 6.2 Ιστορική αναδροµή. 6.2.1 Γλώσσες µηχανής. ΗΜ04-Θ1Α 1. Ένα πρόγραµµα σε γλώσσα µηχανής είναι µια ακολουθία δυαδικών ψηφίων. 5. Ένα πρόγραµµα

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

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

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

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

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα Διάλεξη 2η: Αλγόριθμοι και Προγράμματα Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα

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

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

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

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

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

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

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

ΕΠΛ 034: Εισαγωγήστον ΠρογραµµατισµόγιαΗΜΥ

ΕΠΛ 034: Εισαγωγήστον ΠρογραµµατισµόγιαΗΜΥ ΕΠΛ 034: Εισαγωγήστον ΠρογραµµατισµόγιαΗΜΥ Αχιλλέας Αχιλλέως, Τµήµα Πληροφορικής, Πανεπιστήµιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 2 ΠρογραµµατισµόςΗ/Υ Θέµατα ιάλεξης οµή Προγράµµατος C Μεθοδολογία

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

ΠαράδειγµαΠρογραµµατισµού

ΠαράδειγµαΠρογραµµατισµού Προγραµµατισµός Η/Υ Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Μεθοδολογία Προγραµµατισµού Αφαιρετικότητα Ροή Ελέγχου/ εδοµένων Βιβλίο µαθήµατος: Chapter 1,, Sec. 4-54 ΕΠΛ 131 Αρχές Προγραµµατισµού

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

Π ρ ο γ ρ α μ μ α τ ι σ μ ό ς Β α σ ι κ έ ς έ ν ν ο ι ε ς Ι σ τ ο ρ ι κ ή α ν α δ ρ ο μ ή Η έννοια του προγράμματος Ιστορική αναδρομή

Π ρ ο γ ρ α μ μ α τ ι σ μ ό ς Β α σ ι κ έ ς έ ν ν ο ι ε ς Ι σ τ ο ρ ι κ ή α ν α δ ρ ο μ ή Η έννοια του προγράμματος Ιστορική αναδρομή Προγραμματισμός Βασικές έννοιες Ιστορική αναδρομή Η έννοια του προγράμματος Η περιγραφή της λύσης ενός προβλήματος, ως γνωστόν, γίνεται με τη βοήθεια ενός αλγορίθμου. Έτσι οι εντολές ενός προγράμματος

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

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

Εισαγωγή στην γλώσσα προγραμματισμού C Εισαγωγή στην γλώσσα προγραμματισμού C Χαρακτηριστικά της C Ιδιαίτερα δημοφιλής Έχει χρησιμοποιηθεί για τον προγραμματισμό ευρέος φάσματος συστημάτων και εφαρμογών Γλώσσα μετρίου επιπέδου Φιλοσοφία: Ο

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

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

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

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

Μέρος Α. Λογισµικό & Προγράµµατα συστήµατος και εφαρµογών ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ. Το σηµερινό µάθηµα. Λογισµικό συστηµάτων & εφαρµογών

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

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

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

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

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

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

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

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

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

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Οργάνωση Προγράµµατος Header Files Μετάφραση και σύνδεση αρχείων προγράµµατος ΕΠΛ 132 Αρχές Προγραµµατισµού

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

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

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

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

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

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

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

Διδακτική της Πληροφορικής ΙΙ

Διδακτική της Πληροφορικής ΙΙ Διδακτική της Πληροφορικής ΙΙ Ομάδα Γ Βότσης Ευστάθιος Γιαζιτσής Παντελής Σπαής Αλέξανδρος Τάτσης Γεώργιος Προβλήματα που αντιμετωπίζουν οι αρχάριοι προγραμματιστές Εισαγωγή Προβλήματα Δυσκολίες Διδακτικό

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

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

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

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

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

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

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

Μεταγλωττιστές. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Εισαγωγή. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Μεταγλωττιστές. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Εισαγωγή. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Μεταγλωττιστές Εισαγωγή Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Βιβλιογραφία Alfred V. Aho, Monica S. Lam, Ravi Sethi and Jeffrey D. Ullman. Compilers:

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

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

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

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

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Έλεγχος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Σχεσιακοί Τελεστές και Ισότητας Ένα πρόγραμμα εκτός από αριθμητικές πράξεις

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

Συμβολική γλώσσα Εκπαιδευτικού Υπολογιστή - Λογισμικό Υπολογιστών

Συμβολική γλώσσα Εκπαιδευτικού Υπολογιστή - Λογισμικό Υπολογιστών Συμβολική γλώσσα Εκπαιδευτικού Υπολογιστή - Λογισμικό Υπολογιστών Πρόγραμμα σε γλώσσα μηχανής του ΕΚΥ Θέση μνήμης Περιεχόμενα μνήμης Εντολή (assembly) 0 0001 000000000011 lda 3 1 0011 000000000100 ada

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

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

ΕΙΣΑΓΩΓΗ ΣΤOΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΕΙΣΑΓΩΓΗ ΣΤOΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Στόχοι του μαθήματος Μετά το τέλος του μαθήματος οι μαθητές πρέπει να είναι σε θέση: Να περιγράφουν τι είναι πρόγραμμα Να εξηγούν την αναγκαιότητα για τη δημιουργία γλωσσών

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

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

Εισαγωγή στο προγραμματιστικό περιβάλλον ANSI Εργαστήριο 1ο Εισαγωγή στο προγραμματιστικό περιβάλλον ANSI Σε αυτό το κεφάλαιο θα ασχοληθούμε με την περιγραφή της διαδικασίας μεταγλώττισης ενός προγράμματος C κάνοντας χρήση του μεταγλωττιστή gcc σε

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Οικονοµικό Πανεπιστήµιο Αθηνών. Τµήµα Πληροφορικής. Φθινοπωρινό Εξάµηνο 2015. Δοµές Δεδοµένων - Εργασία 2. Διδάσκων: E. Μαρκάκης

Οικονοµικό Πανεπιστήµιο Αθηνών. Τµήµα Πληροφορικής. Φθινοπωρινό Εξάµηνο 2015. Δοµές Δεδοµένων - Εργασία 2. Διδάσκων: E. Μαρκάκης Οικονοµικό Πανεπιστήµιο Αθηνών Τµήµα Πληροφορικής Φθινοπωρινό Εξάµηνο 2015 Δοµές Δεδοµένων - Εργασία 2 Διδάσκων: E. Μαρκάκης Ταξινόµηση και Ουρές Προτεραιότητας Σκοπός της 2 ης εργασίας είναι η εξοικείωση

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

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

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

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

Προγραμματισμός ΗΥ. 1. Γλώσσα μηχανής

Προγραμματισμός ΗΥ. 1. Γλώσσα μηχανής Προγραμματισμός ΗΥ Ήδη προαναφέρθηκε ότι ο υπολογιστής είναι μια προγραμματιζόμενη μηχανή. Δηλαδή, για να εκτελέσει ακόμη και την πιο απλή εργασία, θα πρέπει να του έχουν δοθεί λεπτομερείς οδηγίες για

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

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

ΚΕΦΑΛΑΙΟ 2: Τύποι δεδομένων και εμφάνιση στοιχείων...33 ΠΕΡΙΕΧΟΜΕΝΑ Πρόλογος του συγγραφέα... 13 Πρόλογος του καθηγητή Τιμολέοντα Σελλή... 15 ΚΕΦΑΛΑΙΟ 1: Εργαλεία γλωσσών προγραμματισμού...17 1.1 Γλώσσες προγραμματισμού τρίτης γεννεάς... 18 τι είναι η γλώσσα

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

Σχεδιασµός βασισµένος σε συνιστώσες

Σχεδιασµός βασισµένος σε συνιστώσες Σχεδιασµός βασισµένος σε συνιστώσες 1 Ενδεικτικά περιεχόµενα του κεφαλαίου Ποια είναι τα "άτοµα", από τα οποία κατασκευάζονται οι υπηρεσίες; Πώς οργανώνουµε τις συνιστώσες σε ένα αρµονικό σύνολο; Τι είναι

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

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

Προγραμματισμός Υπολογιστών Προγραμματισμός Υπολογιστών Βασικές γνώσεις Κ. Βασιλάκης, ΣΤΕΦ, ΤΕΙ Κρήτης Η Πληροφορική και τα εργαλεία της Παροχή έγκαιρης και έγκυρης πληροφόρησης. Καταχώριση στοιχείων Αποθήκευση Επεξεργασία ψηφιακών

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

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

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

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

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Διάλεξη #1 η : Εισαγωγή: Λογισμικό, Γλώσσες Προγραμματισμού, Java

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Διάλεξη #1 η : Εισαγωγή: Λογισμικό, Γλώσσες Προγραμματισμού, Java Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Διάλεξη #1 η : Εισαγωγή: Λογισμικό, Γλώσσες Προγραμματισμού, Java Γαβαλάς Δαμιανός dgavalas@aegean.gr Στόχοι μαθήματος Διάκριση και κατανόηση των υφιστάμενων

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

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

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή Στο εργαστήριο αυτό θα μάθουμε για τη χρήση συναρτήσεων με σκοπό την κατασκευή αυτόνομων τμημάτων προγραμμάτων που υλοποιούν μία συγκεκριμένη διαδικασία, τα οποία

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

Εισαγωγή στην Πληροφορική Προγραμματισμός-Λειτουργικά

Εισαγωγή στην Πληροφορική Προγραμματισμός-Λειτουργικά Εισαγωγή στην Πληροφορική Προγραμματισμός-Λειτουργικά Ηλ. Γκρίνιας Τ. Ε. Ι. Σερρών Τμήμα Πληροφορικής και Επικοινωνιών Αλγόριθμοι Ορισμός: ο αλγόριθμος είναι μια σειρά από πεπερασμένα βήματα που καθορίζουν

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

a = 10; a = k; int a,b,c; a = b = c = 10;

a = 10; a = k; int a,b,c; a = b = c = 10; C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 4 ο Τελεστές Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Ο τελεστής εκχώρησης = Ο τελεστής = χρησιµοποιείται για την απόδοση τιµής (ή αλλιώς ανάθεση τιµής) σε µία µεταβλητή Π.χ.

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

Μεταγλωττιστής. Μεταφραστές. Γλώσσες. Είδη Μεταγλωττιστών. Μεταγλωττιστής Τελικό πρόγραµµα (object program) Εισαγωγή Αρχικό πρόγραµµα (source program)

Μεταγλωττιστής. Μεταφραστές. Γλώσσες. Είδη Μεταγλωττιστών. Μεταγλωττιστής Τελικό πρόγραµµα (object program) Εισαγωγή Αρχικό πρόγραµµα (source program) Μεταφραστές Εισαγωγή (source program) Τελικό πρόγραµµα (object program) Γιώργος Μανής Γλώσσες Είδη Μεταγλωττιστών Αρχική γλώσσα Γλώσσα υλοποίησης Τελική γλώσσα Απλοί µεταγλωττιστές Αντίστροφοι µεταγλωττιστές

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ ΣΤΟ ΕΝΙΑΙΟ ΛΥΚΕΙΟ

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

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

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

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

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

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

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

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

Επιλογή και επανάληψη. Λογική έκφραση ή συνθήκη

Επιλογή και επανάληψη. Λογική έκφραση ή συνθήκη Επιλογή και επανάληψη Η ύλη που αναπτύσσεται σε αυτό το κεφάλαιο είναι συναφής µε την ύλη που αναπτύσσεται στο 2 ο κεφάλαιο. Όπου υπάρχουν διαφορές αναφέρονται ρητά. Προσέξτε ιδιαίτερα, πάντως, ότι στο

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

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

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

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

Τo πρόγραμμα «Διάγραμμα Ροής» και η διδακτική του αξιοποίηση στην Διδασκαλία του προγραμματισμού

Τo πρόγραμμα «Διάγραμμα Ροής» και η διδακτική του αξιοποίηση στην Διδασκαλία του προγραμματισμού Τo πρόγραμμα «Διάγραμμα Ροής» και η διδακτική του αξιοποίηση στην Διδασκαλία του προγραμματισμού Α. Βρακόπουλος 1, Θ.Καρτσιώτης 2 1 Καθηγητής Πληροφορικής Δευτεροβάθμιας Εκπαίδευσης Vraa8@sch.gr 2 Σχολικός

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

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

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

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

ΟΜΑΔΑ Ε ΓΕΩΡΓΙΟΥ ΦΩΤΕΙΝΗ ΗΛΙΟΥΔΗ ΑΦΡΟΔΙΤΗ ΜΕΤΑΛΛΙΔΟΥ ΧΡΥΣΗ ΝΙΖΑΜΗΣ ΑΛΕΞΑΝΔΡΟΣ ΤΖΗΚΑΛΑΓΙΑΣ ΑΝΔΡΕΑΣ ΤΡΙΓΚΑΣ ΑΓΓΕΛΟΣ

ΟΜΑΔΑ Ε ΓΕΩΡΓΙΟΥ ΦΩΤΕΙΝΗ ΗΛΙΟΥΔΗ ΑΦΡΟΔΙΤΗ ΜΕΤΑΛΛΙΔΟΥ ΧΡΥΣΗ ΝΙΖΑΜΗΣ ΑΛΕΞΑΝΔΡΟΣ ΤΖΗΚΑΛΑΓΙΑΣ ΑΝΔΡΕΑΣ ΤΡΙΓΚΑΣ ΑΓΓΕΛΟΣ ΟΜΑΔΑ Ε ΓΕΩΡΓΙΟΥ ΦΩΤΕΙΝΗ ΗΛΙΟΥΔΗ ΑΦΡΟΔΙΤΗ ΜΕΤΑΛΛΙΔΟΥ ΧΡΥΣΗ ΝΙΖΑΜΗΣ ΑΛΕΞΑΝΔΡΟΣ ΤΖΗΚΑΛΑΓΙΑΣ ΑΝΔΡΕΑΣ ΤΡΙΓΚΑΣ ΑΓΓΕΛΟΣ Η ΔΙΔΑΣΚΑΛΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΣΤΟ ΛΥΚΕΙΟ Εισαγωγή Η μεγάλη ανάπτυξη και ο ρόλος που

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

1 η ΕΝΟΤΗΤΑ ΕΙΣΑΓΩΓΗ (Προγραμματισμός & MATLAB)

1 η ΕΝΟΤΗΤΑ ΕΙΣΑΓΩΓΗ (Προγραμματισμός & MATLAB) ΣΧΟΛΗ ΠΟΛΙΤΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΕΜΠ ΜΕΘΟΔΟΙ ΕΠΙΛΥΣΗΣ ΜΕ Η/Υ 1 η ΕΝΟΤΗΤΑ ΕΙΣΑΓΩΓΗ (Προγραμματισμός & MATLAB) Ν.Δ. Λαγαρός Μ. Φραγκιαδάκης Α. Στάμος Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων

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

Επανάληψη για τις Τελικές εξετάσεις

Επανάληψη για τις Τελικές εξετάσεις Επανάληψη για τις Τελικές εξετάσεις ( ιάλεξη 21) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Εισαγωγή Το µάθηµα EPL032 έχει ως βασικό στόχο την επίλυση προβληµάτων πληροφορικής µε την χρήση της γλώσσας προγραµµατισµού

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

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

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή Δημιουργία Νέου αρχείου Από το μενού προγραμμάτων ανοίγετε το DEV C++ Επιλέγετε File-> New-> Source File (συντόμευση πληκτρολογίου Ctrl+N)

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ ΣΤΟ ΕΝΙΑΙΟ ΛΥΚΕΙΟ

ΠΛΗΡΟΦΟΡΙΚΗ ΣΤΟ ΕΝΙΑΙΟ ΛΥΚΕΙΟ ΥΠΟΥΡΓΕΙΟ ΠΑΙ ΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΠΛΗΡΟΦΟΡΙΚΗ ΣΤΟ ΕΝΙΑΙΟ ΛΥΚΕΙΟ ΑΝΑΛΥΤΙΚΟ ΠΡΟΓΡΑΜΜΑ Α ΛΥΚΕΙΟΥ ΟΚΤΏΒΡΙΟΣ 2005 ΑΝΑΛΥΤΙΚΟ ΠΡΟΓΡΑΜΜΑ - Α ΕΝΙΑΙΟΥ ΛΥΚΕΙΟΥ Το µάθηµα της Πληροφορικής στην Α Λυκείου έχει ως γενικό

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

ΕΠΛ 032 Προγραµµατισµός Μεθόδων Επίλυσης Προβληµάτων

ΕΠΛ 032 Προγραµµατισµός Μεθόδων Επίλυσης Προβληµάτων ΕΠΛ 032 Προγραµµατισµός Μεθόδων Επίλυσης Προβληµάτων Διάλεξη 1 Παύλος Αντωνίου Εισαγωγή στην Πληροφορική και Προγραµµατισµό Συµβόλαιο Μαθήµατος. Ιστορική Αναδροµή. Υλικό Υπολογιστή (Computer Hardware).

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

Σκοπός του μαθήματος

Σκοπός του μαθήματος ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Εισαγωγή Βασικές Έννοιες Βαγγελιώ Καβακλή Τμήμα Πολιτισμικής Τεχνολογίας και Επικοινωνίας Πανεπιστήμιο Αιγαίου Εαρινό Εξάμηνο 2012-2013 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)

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

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C Εισαγωγή στην C Μορφή Προγράµµατος σε γλώσσα C Τµήµα Α Με την εντολή include συµπεριλαµβάνω στο πρόγραµµα τα πρότυπα των συναρτήσεων εισόδου/εξόδου της C.Το αρχείο κεφαλίδας stdio.h είναι ένας κατάλογος

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

Είναι πολύ πιθανό να παραξενευτείτε βλέποντας σύµβολα όπως { και *ptr++.

Είναι πολύ πιθανό να παραξενευτείτε βλέποντας σύµβολα όπως { και *ptr++. 2 Εισαγωγή στη C Από το βιβλίο C: Βήµα-Πρός-Βήµα, Κεφάλαιο 2 ο Συγγραφείς: Οµάδα Waite, Mitchell Waite και Stephen Prata Εκδότης: Μ. Γκιούρδας Ανατύπωση σε ηλεκτρονική µορφή: Αλέξανδρος Στεφανίδης Είναι

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

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

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

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

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Τμήμα Πληροφορικής & Επικοινωνιών Τομέας Υπολογιστικών Τεχνικών & Συστημάτων Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Ιωάννης Γεωργουδάκης - Πάρις Μαστοροκώστας Σεπτέμβριος 2011 ΠΕΡΙΕΧΟΜΕΝΑ

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

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι Λειτουργικά Συστήματα 1 Λογισμικό του Υπολογιστή Για να λειτουργήσει ένας Η/Υ εκτός από το υλικό του, είναι απαραίτητο και το λογισμικό Το σύνολο των προγραμμάτων που συντονίζουν τις λειτουργίες του υλικού

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

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ Σκοπός της Άσκησης Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η ανάλυση των βασικών χαρακτηριστικών της Γλώσσας

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

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

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

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

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

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μεταβλητές,

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

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

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

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

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

ΑΠΟΛΥΤΗΡΙΕΣ ΕΞΕΤΑΣΕΙΣ ΤΗΣ Γ' ΛΥΚΕΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ ΑΠΟΛΥΤΗΡΙΕΣ ΕΞΕΤΑΣΕΙΣ ΤΗΣ Γ' ΛΥΚΕΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ ΟΙ ΛΥΣΕΙΣ ΤΩΝ ΘΕΜΑΤΩΝ ΑΠΟ ΤΟΝ ΚΑΘΗΓΗΤΗ κύριο ΤΑΣΟ ΓΙΑΝΝΟΥΛΑΚΗ του ΦΡΟΝΤΙΣΤΗΡΙΟΥ ΘΕΜΑ Α Α1.

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

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

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών Εισαγωγή στη γλώσσα προγραμματισμού JAVA Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών Το πρώτο φλιτζάνι Java Λίστα με τα απαραίτητα Το πρώτο μου πρόγραμμα(hello World) Συνεχίζοντας

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

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 2 ο Τύποι Δεδοµένων Δήλωση Μεταβλητών Έξοδος Δεδοµένων Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Μνήµη και Μεταβλητές Σχέση Μνήµης Υπολογιστή και Μεταβλητών Η µνήµη (RAM) ενός

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

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

Περιεχόμενα. Πρόλογος... 17 Περιεχόμενα Πρόλογος... 17 Κεφάλαιο 1: Εισαγωγή... 19 Πώς να διαβάσετε αυτό το βιβλίο... 20 Η γλώσσα C Ιστορική αναδρομή... 22 Τα χαρακτηριστικά της C... 23 C Μια δομημένη γλώσσα... 23 C Μια γλώσσα για

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

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

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

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

Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 131 Αρχές Προγραµµατισµού I 3-2

Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 131 Αρχές Προγραµµατισµού I 3-2 Εισαγωγή στην C Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Σύνταξη και Σηµασιολογία της C Σχολιασµός Μεταβλητές / Σταθερές Τύποι εδοµένων και Τελεστές Βιβλίο µαθήµατος: Chapter 2,, Sec.

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

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

Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 12-1 Ανασκόπηση οµής Προγράµµατος µε Συναρτήσεις #include 1 void PrintMessage (); Πρότυπο ( ήλωση) Συνάρτησης (

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

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

ΟΜΟΣΠΟΝ ΙΑ ΕΚΠΑΙ ΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑ ΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2012 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ: ΚΑΤΕΥΘΥΝΣΗ: ΜΑΘΗΜΑ: ΘΕΜΑ Α Γ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ (2ος Κύκλος) ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Ηµεροµηνία: Κυριακή 22 Απριλίου 2012 ΕΚΦΩΝΗΣΕΙΣ Α1. Να γράψετε στο τετράδιό

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

Εισαγωγή στους Αλγόριθµους. Αλγόριθµοι. Ιστορικά Στοιχεία. Ο πρώτος Αλγόριθµος. Παραδείγµατα Αλγορίθµων. Τι είναι Αλγόριθµος

Εισαγωγή στους Αλγόριθµους. Αλγόριθµοι. Ιστορικά Στοιχεία. Ο πρώτος Αλγόριθµος. Παραδείγµατα Αλγορίθµων. Τι είναι Αλγόριθµος Εισαγωγή στους Αλγόριθµους Αλγόριθµοι Τι είναι αλγόριθµος; Τι µπορεί να υπολογίσει ένας αλγόριθµος; Πως αξιολογείται ένας αλγόριθµος; Παύλος Εφραιµίδης pefraimi@ee.duth.gr Αλγόριθµοι Εισαγωγικές Έννοιες

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

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

Προγραμματισμός Ι. Προχωρημένα Θέματα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Προχωρημένα Θέματα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ανακατεύθυνση Εισόδου/Εξόδου Συνήθως η τυπική είσοδος ενός προγράμματος (stdin) προέρχεται

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

Εισαγωγή στο Συναρτησιακό Προγραμματισμό

Εισαγωγή στο Συναρτησιακό Προγραμματισμό Εισαγωγή στο Συναρτησιακό Προγραμματισμό Γιάννης Κασσιός Σε αυτό το μάθημα θα εξερευνήσουμε ένα σπουδαίο μοντέλο προγραμματισμού, το συναρτησιακό προγραμματισμό. Θα δούμε το συναρτησιακό προγραμματισμό

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