ΠΕΡΙΕΧΟΜΕΝΑ ΜΕΡΟΣ Α : ΘΕΜΑΤΑ ΒΑΣΗΣ 1. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ...11 1.1 Τι είναι Πληροφορική;...11 1.1.1 Τι είναι η Πληροφορική;...12 1.1.2 Τι είναι ο Υπολογιστής;...14 1.1.3 Τι είναι το Υλικό και το Λογισμικό Υπολογιστή;...16 1.1.4 Τι είναι ένα Υπολογιστικό Σύστημα;...16 1.1.5 Τι είναι ένα Πληροφοριακό Σύστημα;...16 1.2 Εξέλιξη των Υπολογιστικών Συστημάτων...17 1.2.1 Η Προ-ιστορία της Πληροφορικής...17 1.2.2 Η Ιστορία της Πληροφορικής...18 1.2.3 Υπολογιστές Βασισμένοι σε Λυχνίες Κενού (Δεκαετία 1950)...20 1.2.4 Υπολογιστές Βασισμένοι σε Τρανζίστορ (Δεκαετία 1960)...21 1.2.5 Υπολογιστές Βασισμένοι σε Ολοκληρωμένα Κυκλώματα (1970-σήμερα)...21 1.2.6 Υπολογιστές του Μέλλοντος...23 1.3 Δομή των Υπολογιστικών Συστημάτων...25 1.3.1 Τύποι υπολογιστικών συστημάτων...26 1.4 Περίληψη...28 1.5 Ερωτήσεις Ασκήσεις...29 2. ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ...30 2.1 Εισαγωγή στα Αριθμητικά Συστήματα...30 2.2 Παράσταση Αριθμών σε Αριθμητικά Συστήματα...32 2.3 Αριθμητικά Συστήματα σχετικά με την Πληροφορική...33 2.4 Μετατροπές Αριθμών Μεταξύ Διαφορετικών Συστημάτων...34 2.4.1 Μετατροπές αριθμών από αριθμητικό σύστημα στο δεκαδικό...34 2.4.2 Μετατροπές δεκαδικών αριθμών σε οποιοδήποτε άλλο σύστημα...35 2.4.3 Μετατροπές μεταξύ δυαδικού και οκταδικού / δεκαεξαδικού...38 2.4.4 Μετατροπές μεταξύ άλλων αριθμητικών συστημάτων...39 2.5 Το δυαδικό σύστημα...40 2.5.1 Απαρίθμηση...41 2.5.2 Πρόσθεση και Αφαίρεση στο Δυαδικό Σύστημα...42 2.6 Το Δυαδικό Σύστημα και ο Η/Υ...45 2.7 Αποθήκευση Φυσικών Αριθμών στον Υπολογιστή...45 2.7.1 Ερμηνεία αριθμών που βρίσκονται στη μνήμη...46 2.7.2 Τοποθέτηση αριθμών στη μνήμη...47 2.8 Αποθήκευση Προσημασμένων Ακεραίων Αριθμών στον Υπολογιστή...47 2.8.1 1η περίπτωση: Χρήση bit προσήμου...47 2.8.2 Ερμηνεία αριθμών που βρίσκονται σε μνήμη με bit προσήμου...48 2.8.3 Τοποθέτηση αριθμών σε μνήμη με bit προσήμου...49 2.8.4 2η περίπτωση: Χρήση συμπληρώματος ως προς 1 για τους αρνητικούς...49 2.8.5 Ερμηνεία αριθμών που βρίσκονται σε μνήμη με χρήση συμπληρώματος ως προς 1...50 2.8.6 Τοποθέτηση αριθμών σε μνήμη με χρήση συμπληρώματος ως προς 1...51 2.8.7 3η περίπτωση: Χρήση συμπληρώματος ως προς 2 για τους αρνητικούς...51 2.8.8 Ερμηνεία αριθμών που βρίσκονται σε μνήμη με χρήση συμπληρώματος ως προς 2...52 2.8.9 Τοποθέτηση αριθμών σε μνήμη με χρήση συμπληρώματος ως προς 2...53 2.8.10 Πράξεις με Προσημασμένους Ακεραίους στον Υπολογιστή...54 2.9 Αποθήκευση Πραγματικών Αριθμών στον Υπολογιστή...57 2.9.1 Παράσταση πραγματικών αριθμών με τη Μέθοδο Σταθερής Υποδιαστολής...57 2.9.2 Παράσταση πραγματικών αριθμών με τη Μέθοδο Κινητής Υποδιαστολής...59
2.10 Αποθήκευση χαρακτήρων στον υπολογιστή...60 2.11 Αποθήκευση εικόνων και ήχων στον υπολογιστή...62 2.12 Περίληψη...62 2.13 Ερωτήσεις Ασκήσεις...64 3. ΠΥΛΕΣ ΚΑΙ ΨΗΦΙΑΚΑ ΚΥΚΛΩΜΑΤΑ...66 3.1 Εισαγωγή...66 3.2 Άλγεβρα Boole...67 3.2.1 Πράξη AND (Σύζευξη / Λογικό ΚΑΙ)...67 3.2.2 Πράξη OR (Διάζευξη / Λογικό Ή)...67 3.2.3 Πράξη NOT (Άρνηση / Λογικό ΌΧΙ)...68 3.2.4 Άλλες Λογικές Πράξεις...68 3.3 Λογικές Πύλες...68 3.3.1 Πύλη ΝΟΤ...69 3.3.2 Πύλη AND...69 3.3.3 Πύλη OR...70 3.3.4 Πύλη NAND...70 3.3.5 Πύλη NOR...71 3.3.6 Πύλη XOR...71 3.3.7 Πύλη XΝOR...72 3.4 Κυκλώματα...72 3.4.1 Από τις βασικές πύλες στα ηλεκτρονικά κυκλώματα...72 3.4.2 Δημιουργία Πίνακα Αλήθειας για ένα ηλεκτρονικό κύκλωμα...74 3.4.3 Δημιουργία Κυκλώματος από Πίνακα Αλήθειας...76 3.4.4 Συνδυαστικά και ακολουθιακά ηλεκτρονικά κυκλώματα...77 3.4.5 Το κύκλωμα του Hμιαθροιστή...78 3.4.6 Το κύκλωμα του Πλήρους Αθροιστή...79 3.4.7 Το κύκλωμα του flip-flop...80 3.5. Περίληψη...81 3.6 Ερωτήσεις Ασκήσεις...82 ΜΕΡΟΣ Β : ΑΡΧΕΣ ΛΕΙΤΟΥΡΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ 4. ΥΛΙΚΟ... 87 4.1 Η Μνήμη...87 4.1.1 Είδη Κύριων και Βοηθητικών Μνημών...89 4.2 Η Κύρια μνήμη...90 4.2.1 Οργάνωση της μνήμης...90 4.2.2 Διευθυνσιοδότηση της μνήμης...91 4.2.3 Η Μνήμη Τυχαίας Προσπέλασης (RAM)...93 4.2.4 H Μνήμη Ανάγνωσης Μόνο (ROM)...93 4.2.5 Η Κρυφή Μνήμη (Cache)...95 4.2.6 Η Εικονική Μνήμη (Virtual Memory)...95 4.3 Η Βοηθητική Μνήμη...95 4.3.1 Μαγνητικές και Οπτικές Μνήμες...96 4.3.2 Σκληροί Δίσκοι...96 4.3.3 Μαγνητικές Ταινίες...99 4.3.4 Συμπαγείς Δίσκοι (Compact Disks, CD)...99 4.3.5 Ψηφιακοί Ευέλικτοι Δίσκοι (Digital Versatile Disks, DVD)...100 4.3.6 Δίσκοι Μπλέ Ακτίνας (BluRay Disks, BRD)...101 4.4 Η Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ, CPU)...102 4.4.1 Αριθμητική και Λογική Μονάδα...102 4.4.2 Μονάδα Ελέγχου...103 4.4.3 Δίαυλοι Επικοινωνίας...104 -iv-
4.5 Εκτέλεση ενός Προγράμματος στην ΚΜΕ...104 4.5.1 Κύκλος ανάκλησης και εκτέλεσης μιας εντολής στην ΚΜΕ...105 4.5.2 Παράδειγμα Εκτέλεσης ενός προγράμματος...105 4.6 Χαρακτηριστικά της ΚΜΕ...114 4.7 Παράλληλη Επεξεργασία...115 4.7.1 Παραλληλία με πολλαπλές ΚΜΕ...115 4.7.2 Παραλληλία σε μια ΚΜΕ...117 4.8 Συσκευές Εισόδου...117 4.8.1 Το Πληκτρολόγιο...117 4.8.2 Συσκευές κατάδειξης (pointing devices)...119 4.8.3 Η web κάμερα...121 4.8.4 Ο σαρωτής...121 4.8.5 Συσκευές αναγνώρισης ήχου...122 4.8.6 Αναγνώστες barcode...122 4.8.7 Ασύρματη αναγνώριση μέσω ραδιοσυχνοτήτων (RFID)...123 4.9 Συσκευές Εξόδου...124 4.9.1 Η Οθόνη...124 4.9.2 Ο Εκτυπωτής...125 4.10 Επικοινωνία των συσκευών εισόδου-εξόδου με τον υπολογιστή...127 4.11 Περίληψη...127 4.12 Ερωτήσεις Ασκήσεις...129 5. ΛΟΓΙΣΜΙΚΟ...131 5.1 Εισαγωγή...131 5.2 Λογισμικό Συστήματος...132 5.2.1 Λειτουργικό Σύστημα...132 5.2.2 Βοηθητικά προγράμματα...133 5.3 Λογισμικό Εφαρμογών...133 5.3.1 Εφαρμογές γραφείου...134 5.3.2 Προγράμματα διαχείρισης γραφικών και πολυμέσων...134 5.3.3 Ψυχαγωγικές εφαρμογές (παιχνίδια)...134 5.3.4 Γεωγραφικά πληροφοριακά συστήματα (geographic information systems, GIS)...135 5.3.5 Συστήματα διαχείρισης μάθησης (learning management systems, LMS)...135 5.3.6 Συστήματα διαχείρισης επιχειρησιακών πόρων (enterprise resource planning, ERP)...135 5.3.7 Εφαρμογές Προσομοίωσης...135 5.3.8 Εφαρμογές Διαδικτύου...135 5.4 Εισαγωγή στα Πληροφοριακά Συστήματα...136 5.4.1 Επιχειρηματικά Πληροφοριακά Συστήματα...136 5.4.2 Ανάπτυξη πληροφοριακών συστημάτων...138 5.5 Περίληψη...139 5.6 Ερωτήσεις Ασκήσεις...139 ΜΕΡΟΣ Γ : ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ 6. ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ...143 6.1 Γλώσσες Προγραμματισμού...143 6.1.1 Γλώσσες μηχανής (1η γενιά)...143 6.1.2 Συμβολικές γλώσσες (2η γενιά)...144 6.1.3 Γλώσσες υψηλού επιπέδου (3η γενιά)...145 6.1.4 Γλώσσες πολύ υψηλού επιπέδου (4η γενιά)...146 6.2 Ταξινόμηση γλωσσών προγραμματισμού...146 6.3 Μεταφραστές γλωσσών προγραμματισμού...147 6.4 Αλγόριθμοι...147 6.4.1 Η έννοια του αλγόριθμου...148 6.4.2 Παράσταση αλγόριθμων...149 -v-
6.5 Παράσταση αλγόριθμων...150 6.5.1 Παράσταση αλγόριθμων με ψευδοκώδικα...150 6.5.2 Παράσταση αλγόριθμων με διαγράμματα ροής...153 6.6 Βασικές δομές διαδικασιακού προγραμματισμού: ακολουθία, επιλογή, επανάληψη...155 6.7 Ένας ολοκληρωμένος αλγόριθμος με επιλογή και επανάληψη...157 6.8 Περίληψη...159 6.9 Ερωτήσεις Ασκήσεις...160 7. ΕΙΣΑΓΩΓΗ ΣΤΗ ΓΛΩΣΣΑ C...161 7.1 Βασική δομή προγράμματος...161 7.2 Ένα απλό πρόγραμμα...162 7.3 Μεταβλητές...166 7.4 Σταθερές...167 7.5 Αναγνωριστικά...168 7.6 Τύποι δεδομένων...169 7.6.1 Ακέραιοι αριθμοί (int)...169 7.6.2 Πραγματικοί αριθμοί (float)...169 7.6.3 Χαρακτήρες (char)...170 7.6.4 Δείκτες...170 7.7 Τελεστές...171 7.7.1 Αριθμητικοί τελεστές...171 7.7.2 Τελεστές σύγκρισης...172 7.7.3 Λογικοί τελεστές...172 7.7.4 Τελεστής εκχώρησης...172 7.7.5 Σύνθετες παραστάσεις...173 7.8 Είσοδος και Έξοδος Δεδομένων...174 7.8.1 Η συνάρτηση scanf...174 7.8.2 Η συνάρτηση printf...174 7.8.3 Προσδιοριστές μετατροπής...175 7.8.4 Μη εκτυπούμενοι χαρακτήρες (ακολουθίες διαφυγής)...175 7.8.5 Είσοδος και έξοδος χαρακτήρων...175 7.9 Συναρτήσεις...176 7.9.1 Δήλωση συνάρτησης...176 7.9.2 Ορισμός συνάρτησης...176 7.9.3 Κλήση συνάρτησης...177 7.9.4 Μεταβίβαση παραμέτρων...178 7.9.5 Δηλώσεις συναρτήσεων με πολλές παραμέτρους...180 7.9.6 Συναρτήσεις Βιβλιοθήκης...180 7.10 Εντολές επιλογής...181 7.10.1 Η εντολή if-else...181 7.10.2 Η εντολή switch...181 7.11 Εντολές επανάληψης...182 7.11.1 Η εντολή while...182 7.11.2 Η εντολή do-while...183 7.11.3 Η εντολή for...183 7.12 Αποσφαλμάτωση και αμυντικός προγραμματισμός...183 7.12.1 Λάθη σε ένα πρόγραμμα...183 7.12.2 Αμυντικός προγραμματισμός...184 7.13 Περίληψη...185 7.14 Ερωτήσεις Ασκήσεις...186 -vi-
8 ΠΡΟΧΩΡΗΜΕΝΑ ΘΕΜΑΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C...188 8.1 Πίνακες...188 8.1.1 Ανάθεση τιμών στα στοιχεία μονοδιάστατου πίνακα...189 8.1.2 Εκτύπωση στοιχείων μονοδιάστατου πίνακα...190 8.1.3 Ασκήσεις με λύσεις...191 8.2 Πολυδιάστατοι Πίνακες...192 8.2.1 Ανάθεση τιμών στα στοιχεία πολυδιάστατου πίνακα...192 8.2.2 Εκτύπωση στοιχείων πολυδιάστατου πίνακα...193 8.2.3 Ασκήσεις με λύσεις...194 8.3 Αλγόριθμοι αναζήτησης σε πίνακες...195 8.3.1 Γραμμική Αναζήτηση...196 8.3.2 Ασκήσεις με λύσεις...196 8.3.3 Δυαδική Αναζήτηση...197 8.4 Αλγόριθμοι ταξινόμησης πινάκων...198 8.4.1 Ταξινόμηση με επιλογή...198 8.4.2 Ταξινόμηση φυσαλίδας...199 8.5 Εγγραφές ή Δομές...200 8.6 Πίνακες Δομών (Βάσεις Δεδομένων)...200 8.6.1 Ασκήσεις με λύσεις...201 8.7 Περίληψη...203 8.8 Ερωτήσεις Ασκήσεις...203 9 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C...205 9.1 Δυναμικές Δομές Δεδομένων...205 9.2 Λίστες...206 9.2.1 Δημιουργία λίστας...206 9.2.2 Διάσχιση λίστας...211 9.2.3 Αναζήτηση στοιχείου σε λίστα...212 9.2.4 Εισαγωγή στοιχείου σε λίστα...212 9.2.5 Διαγραφή στοιχείου από λίστα...214 9.2.6 Άλλες μορφές λιστών...215 9.3 Στοίβες... 216 9.3.1 Ορισμός στοίβας...216 9.3.2 Εισαγωγή στοιχείου σε στοίβα...217 9.3.3 Εξαγωγή στοιχείου από στοίβα...217 9.3.4 Υλοποίηση στοίβας με πίνακα...217 9.4 Ουρές...219 9.4.1 Ορισμός ουράς...219 9.4.2 Εισαγωγή στοιχείου σε ουρά...220 9.4.3 Εξαγωγή στοιχείου από ουρά...220 9.4.4 Υλοποίηση ουράς με πίνακα...220 9.5 Δένδρα και Γράφοι...222 9.5.1 Ορισμοί δένδρων...223 9.5.2 Παράσταση δένδρων στη C...223 9.5.3 Διάσχιση δένδρου...225 9.5.4 Δυαδικά δένδρα αναζήτησης...227 9.6 Περίληψη...228 9.7 Ερωτήσεις Ασκήσεις...229 ΜΕΡΟΣ Δ : ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ, ΔΙΑΔΙΚΤΥΟ & ΑΝΑΠΤΥΞΗ ΙΣΤΟΣΕΛΙΔΩΝ 10 ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΔΙΑΔΙΚΤΥΟ...233 10.1 Εισαγωγή...233 -vii-
10.2 Τεχνολογίες μετάδοσης δεδομένων...233 10.2.1 Ενσύρματη μετάδοση...234 10.2.2 Aσύρματη μετάδοση...235 10.3 Δίκτυα υπολογιστικών συστημάτων...236 10.4 Διαδίκτυο...237 10.4.1 World Wide Web (WWW)...239 10.5 Κινητή και Ασύρματη Επικοινωνία...239 10.5.1 Τεχνολογίες κινητής τηλεφωνίας...239 10.5.2 Τεχνολογίες Ασύρματης Δικτύωσης...240 10.6 Περίληψη...242 10.7 Ερωτήσεις Ασκήσεις...243 11 ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΠΤΥΞΗ ΙΣΤΟΣΕΛΙΔΩΝ ΜΕ HTML...245 11.1 Οι Γλώσσες Σήμανσης...245 11.2 Γράφοντας τον πρώτο κώδικα σε HTML...246 11.3 Η Ετικέτα <BODY>...247 11.4 Βασικές Ετικέτες Κειμένου HTML...248 11.5 Εισάγοντας Λίστες...252 11.6 Εισάγοντας Πίνακες...255 11.7 Εισάγοντας Εικόνες και Γραφικά...259 11.8 Εισάγοντας Υπερσυνδέσμους...260 11.9 Εισάγοντας Φόρμες...262 11.10 Δομώντας τη σελίδα με πλαίσια...268 11.11 Εισαγωγή στα Επικαλυπτόμενα Φύλλα Στυλ (Cascading Style Sheets)...272 11.12 Περίληψη...276 11.13 Ερωτήσεις Ασκήσεις...278 ΜΕΡΟΣ Ε : Η ΠΛΗΡΟΦΟΡΙΚΗ ΣΤΗ ΖΩΗ ΜΑΣ 12 Η ΠΛΗΡΟΦΟΡΙΚΗ ΣΤΗΝ ΟΙΚΟΝΟΜΙΑ ΚΑΙ ΤΗΝ ΚΟΙΝΩΝΙΑ...283 12.1 Τεχνολογία: Για καλό ή για κακό;...283 12.2 Κοινωνικές και οικονομικές επιπτώσεις της πληροφορικής...284 12.2.1 Αλλαγές στην αγορά εργασίας...285 12.2.2 Επιπτώσεις στις επιχειρήσεις...285 12.2.3 Απομακρυσμένη εργασία (remote work)...285 12.2.4 Ηλεκτρονικό επιχειρείν...286 12.2.5 Προς πιο μοναχικές κοινωνίες;...286 12.2.6 Δημιουργία και διάδοση περιεχομένου...286 12.3 Έλεγχος και προστασία προσωπικών δεδομένων...287 12.3.1 Χρήση από κυβερνήσεις...287 12.3.2 Χρήση από επιχειρήσεις...288 12.4 Ασφάλεια υπολογιστών και ηλεκτρονικό έγκλημα...288 12.5 Η βιομηχανία πληροφορικής...290 12.5.1 Βιομηχανία υλικού...290 12.5.2 Βιομηχανία λογισμικού...291 12.5.3 Μονοπωλιακά φαινόμενα...293 12.6 Λογισμικό Ανοικτού Κώδικα (Open Source Software)...295 12.7 Πειρατεία Λογισμικού...295 12.8 Περίληψη...296 12.9 Ερωτήσεις Ασκήσεις...297 -viii-