Οδηγός Μελέτης - Εισαγωγή στον Προγραμματισμό

Διάλεξη 0 · 29/09/2025 · Διαφάνειες (PDF) · Σημειώσεις 0 · Σημειώσεις 1 · Εργαστήριο 0

Κεφάλαιο 0: Καλημέρα Κόσμε!

Στόχοι: μετά από αυτό το κεφάλαιο θα μπορείτε να

Προαπαιτούμενα: κανένα, αυτό είναι το πρώτο κεφάλαιο.

Χρόνος μελέτης: ~1 ώρα

Σύνοψη

Η πρώτη διάλεξη του μαθήματος «Εισαγωγή στον Προγραμματισμό» (K04) είναι κυρίως εισαγωγική: γνωρίζουμε το Τμήμα, τα διαδικαστικά του μαθήματος (ώρες, βαθμολογία, εργαστήριο, εργαλεία) και τον σκοπό του, που είναι να γίνετε junior software developers με προοπτικές. Στη συνέχεια θέτουμε τα θεμέλια: τι είναι ένας υπολογιστής, τι σημαίνει προγραμματισμός και τι είναι ένα πρόγραμμα. Βλέπουμε γιατί χρειαζόμαστε ειδικές γλώσσες προγραμματισμού (η ανθρώπινη γλώσσα είναι γεμάτη αμφισημίες) και γιατί το μάθημα διδάσκεται σε C, μια γλώσσα δημοφιλή εδώ και δεκαετίες και από τις ταχύτερες και οικονομικότερες σε ενέργεια. Κλείνουμε με το πρώτο μας πρόγραμμα, το κλασικό Hello World.

Θεωρία

§0.1 Γιατί προγραμματισμός

Η διάλεξη ξεκινά με το ερώτημα «Γιατί να ασχοληθείς με τον προγραμματισμό το 2025;» και δίνει τέσσερις ενδεικτικούς λόγους:

Το Τμήμα Πληροφορικής και Τηλεπικοινωνιών του ΕΚΠΑ, σύμφωνα με τις διαφάνειες, βρίσκεται στα 250 καλύτερα πανεπιστήμια του κόσμου στην Επιστήμη Υπολογιστών (Computer Science), και το ΕΚΠΑ ήταν το πιο βελτιωμένο πανεπιστήμιο της Ευρώπης και 6ο παγκοσμίως το 2024-25 σε ποιοτική εκπαίδευση (κατάταξη QS). Πάνω απ’ όλα, είναι ευκαιρία να συναναστραφείτε ιδιαίτερα ταλαντούχους συμφοιτητές.

§0.2 Τα διαδικαστικά του μαθήματος

Site. Όλο το υλικό (διαφάνειες, ασκήσεις, εργαστήρια) βρίσκεται στο progintro.github.io. Το μάθημα διδάσκεται σε δύο τμήματα (άρτιοι / περιττοί αριθμοί μητρώου), με διδάσκοντες τον Θανάση Αυγερινό και τον Τάκη Σταματόπουλο· η ύλη, το εργαστήριο, οι ασκήσεις και το διαγώνισμα είναι ίδια και για τα δύο.

Ώρες. Οι διαλέξεις γίνονται Δευτέρα και Παρασκευή 9πμ–11πμ, στο Αμφιθέατρο (άρτιοι) και στην Α2 (περιττοί). Ώρες γραφείου:

Ημέρα Ώρα Αυγερινός Σταματόπουλος
Δευτέρα 11πμ–12μμ Α40 Α48
Παρασκευή 11πμ–12μμ Α3 Α48

Βαθμολογία. Ο τελικός βαθμός υπολογίζεται ως εξής:

Ισχύει και μια αναπροσαρμογή: αν ο βαθμός των Ασκήσεων είναι πάνω από 3 μονάδες μεγαλύτερος από τον βαθμό της Τελικής Εξέτασης, τότε ο βαθμός των Ασκήσεων γίνεται Τελική Εξέταση + 3. Η Τελική Εξέταση είναι γραπτή με κλειστά βιβλία. Οι Ασκήσεις (εργασίες για το σπίτι) είναι προαιρετικές, αλλά η επίλυσή τους βοηθάει σημαντικά. Στο Εργαστήριο η παρουσία είναι υποχρεωτική για τους πρωτοετείς (μέχρι 2 απουσίες).

Μπορεί λοιπόν κανείς να περάσει χωρίς εργασίες και εργαστήριο; «In theory, theory and practice are the same. In practice, they are not.» Θεωρητικά ναι, στην πράξη όχι: όπως κανείς δεν μαθαίνει αναρρίχηση διαβάζοντας ένα εγχειρίδιο, έτσι και ο προγραμματισμός μαθαίνεται μόνο γράφοντας κώδικα.

Εργαστήριο. Γίνεται σε εβδομαδιαία βάση και ξεκινά την εβδομάδα της 6ης Οκτωβρίου. Γράφεστε στην εργαστηριακή ομάδα που σας ταιριάζει μέσω του eclass· αν δεν βρίσκετε θέση, θα ανοίξουν και άλλες.

Εργαλεία του μαθήματος. Χρειάζεστε:

  1. προσωπικό λογαριασμό email στο Gmail·
  2. προσωπικό λογαριασμό στο GitHub, με ένα «cool αλλά και επαγγελματικό» ψευδώνυμο·
  3. τον ακαδημαϊκό σας λογαριασμό, μέσω του webadm.uoa.gr·
  4. εγγραφή στο Piazza, το φόρουμ επικοινωνίας του μαθήματος·
  5. εγγραφή σε τμήμα εργαστηρίου στο eclass·
  6. να συμπληρώσετε τη φόρμα του μαθήματος με τα στοιχεία σας.

Συνιστάται να έχετε υπολογιστή μαζί σας στο μάθημα, για να προγραμματίζετε ζωντανά.

Έχω μια ερώτηση, τι κάνω; Η διάλεξη βάζει δύο επιλογές: (Α) στέλνω email στον Αυγερινό ή στον Τάκη, ή (Β) ελέγχω αν έχει ήδη απαντηθεί στο Piazza και, μόνο αν δεν έχει απαντηθεί, ποστάρω καινούρια ερώτηση. Ο δρόμος του μαθήματος είναι το (Β), αφού γι’ αυτό υπάρχει το Piazza: η απάντηση ωφελεί όλους και δεν επαναλαμβάνεται.

§0.3 Σκοπός και περιεχόμενο του μαθήματος

Το μάθημα έχει τρεις στόχους:

Με άλλα λόγια, στο τέλος του εξαμήνου θέλουμε να είστε junior software developers με προοπτικές. Η ύλη χωρίζεται σε πέντε ενότητες, με τα εργαστήρια να τρέχουν παράλληλα και τις εργασίες (hw0, hw1, hw2 και ένα τελικό project) να κλείνουν τις ενότητες:

flowchart LR
  A["Βασικά / Διαδικαστικά<br/>(γραμμή εντολών, μνήμη, git)"] --> B["Πρώτα Προγράμματα<br/>(τελεστές, ροή ελέγχου, είσοδος)"]
  B --> C["Σύνθετα Προγράμματα<br/>(πίνακες, δείκτες, μνήμη)"]
  C --> D["Αλγόριθμοι και Δομές<br/>(ταξινόμηση, δομές, λίστες, δέντρα)"]
  D --> E["Προχωρημένα Θέματα<br/>(οργάνωση κώδικα)"]
  B -.-> H0["hw0"]
  C -.-> H1["hw1"]
  D -.-> H2["hw2"]
  E -.-> P["project"]

Σχήμα: οι ενότητες του μαθήματος και οι εργασίες που αντιστοιχούν σε καθεμία.

Στον χάρτη μαθημάτων του Τμήματος, το K04 είναι συνιστώμενο προαπαιτούμενο για τις Δομές Δεδομένων (K08) και τον Αντικειμενοστρεφή Προγραμματισμό (K10), και μέσω αυτών για μεγάλο μέρος του προγράμματος σπουδών (Λειτουργικά Συστήματα, Προγραμματισμός Συστήματος, Μεταγλωττιστές κ.ά.). Αν όλα αυτά ακούγονται πολλά: ένα βήμα τη φορά. Η καμπύλη Dunning-Kruger δείχνει ότι η αυτοπεποίθηση ενός αρχάριου συχνά ανεβαίνει απότομα («Peak of Mount Stupid»), πέφτει όταν συνειδητοποιεί πόσα δεν ξέρει («Valley of Despair») και μετά ανεβαίνει σταθερά όσο μεγαλώνει η πραγματική γνώση. Η απογοήτευση των πρώτων εβδομάδων είναι φυσιολογικό στάδιο, όχι ένδειξη ότι «δεν κάνετε».

§0.4 Τι είναι ο υπολογιστής

Υπολογιστής (computer) είναι μια κατασκευή που έχει την ικανότητα να επεξεργάζεται ένα σύνολο από δεδομένα (data) που του δίνονται και να παράγει τα απαιτούμενα αποτελέσματα (results). Το είδος της επεξεργασίας το καθορίζει το πρόγραμμα με το οποίο τον έχουμε τροφοδοτήσει.

flowchart LR
  D["Δεδομένα"] --> C["Υπολογιστής<br/>(εκτελεί το πρόγραμμα)"]
  P["Πρόγραμμα"] --> C
  C --> R["Αποτελέσματα"]

Σχήμα: ο υπολογιστής μετατρέπει δεδομένα σε αποτελέσματα, όπως ορίζει το πρόγραμμα.

Χρησιμοποιούμε υπολογιστές για δύο λόγους:

  1. ταχύτητα στην επεξεργασία δεδομένων (π.χ. χρονοβόροι αριθμητικοί υπολογισμοί)·
  2. μνήμη διαθέσιμη για αποθήκευση δεδομένων (π.χ. τραπεζικοί λογαριασμοί).

Πολλές εφαρμογές, όπως η πρόγνωση του καιρού, χρειάζονται και τα δύο ταυτόχρονα.

Οι σημειώσεις του μαθήματος συμπληρώνουν την εικόνα. Ένας υπολογιστής αποτελείται από την κεντρική μονάδα επεξεργασίας (CPU), τη μνήμη (memory) για προσωρινή αποθήκευση δεδομένων και προγραμμάτων, τη δευτερεύουσα μνήμη (δίσκοι) για μόνιμη αποθήκευση και τις μονάδες εισόδου/εξόδου (πληκτρολόγιο, οθόνη). Όλη η πληροφορία αποθηκεύεται ως δυαδικά ψηφία, bits (0 και 1), οργανωμένα σε bytes των 8 bits. Τα προγράμματα ενός υπολογιστή είναι το λογισμικό (software) του, ενώ η ίδια η συσκευή είναι το υλικό (hardware). Τη μνήμη και την αναπαράσταση των δεδομένων θα τις δούμε αναλυτικά στο Κεφάλαιο 2.

§0.5 Προγραμματισμός και πρόγραμμα

Προγραμματισμός (programming) είναι ο σαφής καθορισμός μιας διαδικασίας, σαν ένα σύνολο από εντολές (το πρόγραμμα), που περιγράφει λεπτομερώς τα βήματα που πρέπει να γίνουν για να επιλυθεί ένα πρόβλημα υπολογισμού.

Πρόγραμμα (program) είναι η καταγραφή της επίλυσης ενός προβλήματος. Κάθε εφαρμογή που χρησιμοποιείτε (ο browser, ένα παιχνίδι, το λειτουργικό σύστημα του κινητού σας) είναι πρόγραμμα. Όπως λέει ο Gusteau στο Ratatouille, «anyone can cook», και η διάλεξη το προσαρμόζει: οποιοσδήποτε μπορεί να προγραμματίσει, αλλά μόνο οι ατρόμητοι γίνονται σπουδαίοι.

Σύμφωνα με τις σημειώσεις, πίσω από κάθε πρόγραμμα βρίσκεται ένας αλγόριθμος (algorithm): μια σαφώς καθορισμένη διαδικασία από εκτελέσιμα βήματα, που είναι εγγυημένο ότι θα τερματίσει μετά από πεπερασμένο πλήθος βημάτων. Το πρόγραμμα είναι η διατύπωση ενός αλγορίθμου σε μια συγκεκριμένη γλώσσα προγραμματισμού.

§0.6 Αμφισημία και γλώσσες προγραμματισμού

Γιατί δεν δίνουμε απλώς τις οδηγίες στα ελληνικά ή στα αγγλικά; Επειδή η ανθρώπινη γλώσσα έχει αμφισημίες (ambiguities). Το quiz της διάλεξης, «Ποιο είναι το πιο ψηλό βουνό του κόσμου;», έχει τρεις σωστές απαντήσεις, ανάλογα με το τι εννοούμε «ψηλό»:

Ερμηνεία του «ψηλό» Βουνό
μεγαλύτερο υψόμετρο από τη μέση στάθμη της θάλασσας (8.848 m) Έβερεστ
πιο μακριά από το κέντρο της Γης Τσιμποράσο (Chimborazo)
μεγαλύτερο ύψος από τη βάση ως την κορυφή (10.210 m) Μάουνα Κέα (Mauna Kea)

Οι αμφισημίες είναι δύο ειδών. Λεξιλογική αμφισημία (lexical ambiguity) έχουμε όταν μία λέξη έχει δύο ή περισσότερες σημασίες: στο «I saw her duck.» το duck είναι είτε «πάπια» είτε «έσκυψε». Συντακτική αμφισημία (syntactic ambiguity) έχουμε όταν μια πρόταση ή ακολουθία λέξεων επιδέχεται περισσότερες από μία ερμηνείες: το «The chicken is ready to eat.» σημαίνει είτε ότι το φαγητό είναι έτοιμο είτε ότι η κότα πεινάει.

Ένας υπολογιστής δεν μπορεί να «μαντέψει» τι εννοούμε. Γι’ αυτό επινοήσαμε τις γλώσσες προγραμματισμού. Γλώσσα προγραμματισμού (programming language) είναι μια γλώσσα που μας επιτρέπει να επικοινωνούμε εντολές στον υπολογιστή. Μια καλή γλώσσα προγραμματισμού δεν επιτρέπει αμφισημία: κάθε πρόγραμμα έχει ακριβώς μία σημασία. Ως bonus, η γλώσσα προγραμματισμού μαζί με τον υπολογιστή μπορεί να λύσει και αμφισημίες ανάμεσα σε προγραμματιστές: αν διαφωνείτε για το τι κάνει ένα κομμάτι κώδικα, το τρέχετε και βλέπετε.

Οι σημειώσεις διακρίνουν τις γλώσσες χαμηλού επιπέδου (γλώσσα μηχανής, assembly), που είναι κοντά στον επεξεργαστή, από τις γλώσσες υψηλού επιπέδου (C, Python, Java κ.ά.), που είναι κοντά στον τρόπο που σκεφτόμαστε. Από μια γλώσσα υψηλού επιπέδου χρειαζόμαστε μηχανισμούς για είσοδο και έξοδο, ακολουθίες βημάτων, αποθήκευση τιμών στη μνήμη, επιλογή με βάση συνθήκη, επανάληψη και «πακετάρισμα» συχνών λειτουργιών. Όλα αυτά τα μαθαίνουμε στη C τα επόμενα κεφάλαια.

§0.7 Η γλώσσα C

Η C δημιουργήθηκε γύρω στο 1970 από τον Dennis Ritchie, ο οποίος μαζί με τον Ken Thompson δημιούργησε και το λειτουργικό σύστημα UNIX και τη γλώσσα B, την προκάτοχο της C. Τη μαθαίνουμε επειδή είναι:

Η C είναι επίσης το «αγωνιστικό» των γλωσσών. Σε μια σύγκριση πολλών γλωσσών στα ίδια προβλήματα (βλ. «Programming Language Shootout» στο «Διάβασμα»), με τιμές κανονικοποιημένες ως προς την καλύτερη γλώσσα (1.00 = η καλύτερη):

Μέτρο C Rust C++ Java Python
Ενέργεια 1.00 (1η) 1.03 1.34 1.98 75.88
Χρόνος 1.00 (1η) 1.04 1.56 1.89 71.90
Μνήμη 1.17 (3η) 1.54 1.34 6.01 2.80

Στη μνήμη η C έρχεται τρίτη, μετά την Pascal (1.00) και τη Go (1.05). Η Python, αν και σήμερα η πιο δημοφιλής γλώσσα, είναι περίπου 72 φορές πιο αργή από τη C σε αυτή τη σύγκριση. Η C σας δίνει ταχύτητα και έλεγχο, με αντίτιμο ότι πρέπει να καταλαβαίνετε τι κάνει ο υπολογιστής από κάτω.

§0.8 Από τον πηγαίο κώδικα στο εκτελέσιμο

Ο υπολογιστής δεν εκτελεί απευθείας κώδικα C. Γράφουμε το πρόγραμμα σε ένα αρχείο κειμένου, το πηγαίο αρχείο (source file), π.χ. helloworld.c. Ο μεταγλωττιστής (compiler) το μετατρέπει σε αντικειμενικό αρχείο (object file) σε γλώσσα μηχανής, και ο συνδέτης (linker) ενώνει τα αντικειμενικά αρχεία με τις βιβλιοθήκες (libraries) που χρειάζονται (π.χ. αυτή που περιέχει την printf) σε ένα εκτελέσιμο αρχείο (executable), που μπορεί να τρέξει ο επεξεργαστής. Στο μάθημα χρησιμοποιούμε τον μεταγλωττιστή gcc, που κάνει και τα δύο βήματα με μία εντολή.

flowchart LR
  S["helloworld.c<br/>(πηγαίος κώδικας)"] -->|"μεταγλωττιστής"| O["helloworld.o<br/>(αντικειμενικό αρχείο)"]
  O -->|"συνδέτης"| E["helloworld<br/>(εκτελέσιμο)"]
  L["βιβλιοθήκες<br/>(π.χ. printf)"] --> E
  E -->|"./helloworld"| R["Hello world"]

Σχήμα: μεταγλώττιση και σύνδεση ενός προγράμματος C.

Στη διάλεξη τρέξαμε το πρώτο πρόγραμμα σε έναν online compiler, μια ιστοσελίδα που κάνει όλα τα παραπάνω για λογαριασμό σας. Από το επόμενο κεφάλαιο (Κεφάλαιο 1) δουλεύουμε στη γραμμή εντολών, όπου καλούμε τον gcc μόνοι μας.

§0.9 Η δομή του Hello World

Το πρώτο πρόγραμμα που γράφει κανείς σε μια νέα γλώσσα, κατά παράδοση, τυπώνει «Hello world». Στη C μοιάζει έτσι:

/* File: helloworld.c */
#include <stdio.h>

int main() {
  printf("Hello world\n");
}

Κάθε γραμμή έχει ρόλο:

Το εργαστήριο γράφει το ίδιο πρόγραμμα με μια επιπλέον γραμμή return 0; στο τέλος της main. Και οι δύο μορφές είναι σωστές· τι σημαίνει η τιμή που επιστρέφει η main θα το δούμε στο Κεφάλαιο 3.

Παραδείγματα

§0.10 Hello World σε online compiler

Εφαρμόζει: «Η δομή του Hello World», «Από τον πηγαίο κώδικα στο εκτελέσιμο».

Η διάλεξη προτείνει να τρέξετε το πρόγραμμα αμέσως, χωρίς να εγκαταστήσετε τίποτα, στον online compiler του Programiz (σύνδεσμος στο «Διάβασμα»). Αντιγράψτε τον κώδικα της προηγούμενης ενότητας, πατήστε «Run» και στο παράθυρο εξόδου θα δείτε:

Hello world

Δοκιμάστε μικρές αλλαγές για να δείτε τι συμβαίνει: αλλάξτε το μήνυμα, βάλτε δύο printf τη μία μετά την άλλη, ή αφαιρέστε το \n και δείτε πού πάει η επόμενη έξοδος.

§0.11 Hello World στη γραμμή εντολών

Εφαρμόζει: «Από τον πηγαίο κώδικα στο εκτελέσιμο».

Στο εργαστήριο (και από το επόμενο κεφάλαιο) γράφετε το πρόγραμμα σε ένα αρχείο με έναν κειμενογράφο, το μεταγλωττίζετε με τον gcc και τρέχετε το εκτελέσιμο:

$ gcc -o helloworld helloworld.c
$ ./helloworld
Hello world
$

Η επιλογή -o helloworld δίνει όνομα στο εκτελέσιμο· χωρίς αυτήν, ο gcc το ονομάζει a.out. Το ./ λέει στο shell να βρει το πρόγραμμα στον τρέχοντα κατάλογο.

§0.12 Δύο αναγνώσεις μιας οδηγίας

Εφαρμόζει: «Αμφισημία και γλώσσες προγραμματισμού».

Η διάλεξη εξηγεί με ένα ανέκδοτο γιατί επινοήσαμε τις γλώσσες προγραμματισμού. Ο Joe λέει στον φίλο του, τον προγραμματιστή Charlie: «Go to the store and buy a loaf of bread. If they have eggs, buy a dozen.» Ο Charlie γυρίζει με 12 φραντζόλες ψωμί. Η φράση «buy a dozen» δεν λέει δώδεκα από τι:

flowchart TD
  S["Πήγαινε στο μαγαζί"] --> Q{"Έχουν αυγά;"}
  Q -->|"όχι"| B1["Αγόρασε 1 ψωμί"]
  Q -->|"ναι (ερμηνεία του Joe)"| B2["Αγόρασε 1 ψωμί και 12 αυγά"]
  Q -->|"ναι (ερμηνεία του Charlie)"| B3["Αγόρασε 12 ψωμιά"]

Σχήμα: η ίδια οδηγία, δύο διαφορετικά «προγράμματα».

Σε μια γλώσσα προγραμματισμού, όπως στη C, ο προγραμματιστής θα έπρεπε να γράψει ρητά τι αγοράζει και πόσο, οπότε η αμφισημία δεν θα μπορούσε να υπάρξει.

§0.13 Πού να εξασκηθείτε

Η διάλεξη προτείνει πηγές εξάσκησης πέρα από τις ασκήσεις του μαθήματος:

§0.14 Για την επόμενη φορά

Πριν από την επόμενη διάλεξη:

Κύρια σημεία

  1. Το μάθημα στοχεύει στις βασικές αρχές του προγραμματισμού και στην αλγοριθμική σκέψη, στη γραφή και αποσφαλμάτωση κώδικα σε C και στην εξοικείωση με τα εργαλεία της δουλειάς.
  2. Όλο το υλικό βρίσκεται στο progintro.github.io, και τα δύο τμήματα έχουν την ίδια ύλη, εργαστήριο, ασκήσεις και διαγώνισμα.
  3. Για τους πρωτοετείς ο βαθμός είναι 50% Τελική Εξέταση + 30% Ασκήσεις + 20% Εργαστήριο, και ο βαθμός των Ασκήσεων δεν μπορεί να ξεπεράσει την Τελική Εξέταση κατά περισσότερες από 3 μονάδες.
  4. Θεωρητικά μπορείτε να περάσετε χωρίς εργασίες και εργαστήριο, στην πράξη όχι: ο προγραμματισμός μαθαίνεται μόνο γράφοντας κώδικα.
  5. Για ερωτήσεις ψάχνετε πρώτα στο Piazza και ποστάρετε καινούρια ερώτηση μόνο αν δεν έχει ήδη απαντηθεί.
  6. Υπολογιστής είναι μια κατασκευή που επεξεργάζεται δεδομένα και παράγει αποτελέσματα· τον χρησιμοποιούμε για την ταχύτητα και τη μνήμη του.
  7. Προγραμματισμός είναι ο σαφής καθορισμός μιας διαδικασίας, ως σύνολο εντολών, που λύνει ένα πρόβλημα υπολογισμού· πρόγραμμα είναι η καταγραφή αυτής της λύσης.
  8. Η ανθρώπινη γλώσσα έχει λεξιλογικές και συντακτικές αμφισημίες· μια καλή γλώσσα προγραμματισμού δεν επιτρέπει καμία.
  9. Μαθαίνουμε C γιατί είναι απαραίτητη στο πρόγραμμα σπουδών, δημοφιλής και χρησιμοποιείται παντού, και είναι από τις πιο γρήγορες και ενεργειακά αποδοτικές γλώσσες.
  10. Ο μεταγλωττιστής και ο συνδέτης μετατρέπουν τον πηγαίο κώδικα C σε εκτελέσιμο πρόγραμμα.
  11. Κάθε πρόγραμμα C έχει ακριβώς μία συνάρτηση main, από την οποία ξεκινά η εκτέλεση· η printf τυπώνει μια συμβολοσειρά και το \n αλλάζει γραμμή.
  12. Η πρόοδος στον προγραμματισμό γίνεται ένα βήμα τη φορά· η αρχική απογοήτευση είναι φυσιολογική.

Ορολογία

Ελληνικά English Σύντομος ορισμός
υπολογιστής computer Κατασκευή που επεξεργάζεται δεδομένα και παράγει αποτελέσματα
προγραμματισμός programming Σαφής καθορισμός διαδικασίας που λύνει πρόβλημα υπολογισμού
πρόγραμμα program Η καταγραφή της επίλυσης ενός προβλήματος, ως σύνολο εντολών
αλγόριθμος algorithm Σαφής διαδικασία από εκτελέσιμα βήματα που τερματίζει
γλώσσα προγραμματισμού programming language Γλώσσα χωρίς αμφισημίες για εντολές σε υπολογιστή
αμφισημία ambiguity Όταν μια λέξη ή πρόταση έχει περισσότερες από μία σημασίες
λογισμικό / υλικό software / hardware Τα προγράμματα / η ίδια η συσκευή
αποσφαλμάτωση debugging Εντοπισμός και διόρθωση λαθών σε πρόγραμμα
πηγαίο αρχείο source file Αρχείο κειμένου με τον κώδικα, π.χ. helloworld.c
μεταγλωττιστής compiler Μετατρέπει πηγαίο κώδικα σε γλώσσα μηχανής (π.χ. gcc)
συνδέτης linker Ενώνει αντικειμενικά αρχεία και βιβλιοθήκες σε εκτελέσιμο
εκτελέσιμο executable Αρχείο που μπορεί να τρέξει ο επεξεργαστής
σχόλιο comment Κείμενο μέσα σε /* */ που αγνοεί ο μεταγλωττιστής
αρχείο επικεφαλίδας header file Αρχείο με δηλώσεις, π.χ. stdio.h
συμβολοσειρά string Κείμενο ανάμεσα σε διπλά εισαγωγικά, π.χ. "Hello world\n"
αλλαγή γραμμής newline Ο χαρακτήρας \n

Διάβασμα

Συχνά λάθη

Τι δυσκόλεψε την τάξη

Από τα Kahoot των διαλέξεων: οι ερωτήσεις όπου μια λάθος απάντηση μάζεψε πολλές ψήφους, με το ποσοστό σωστών απαντήσεων.

Ερωτήσεις κατανόησης

Kahoot από το αμφιθέατρο (Κ0.1–Κ0.6)

Ερωτήσεις που παίχτηκαν στις διαλέξεις, με το ποσοστό των φοιτητών που απάντησαν σωστά.

Ασκήσεις

Ζέσταμα: από τις διαφάνειες (Α0.1–Α0.7)

Σχετικές ασκήσεις από άλλα κεφάλαια

  1. Την ταχύτητα στην επεξεργασία δεδομένων και τη μνήμη που διαθέτουν για αποθήκευση δεδομένων. ↩

  2. Ο σαφής καθορισμός μιας διαδικασίας, σαν ένα σύνολο από εντολές (το πρόγραμμα), που περιγράφει λεπτομερώς τα βήματα που πρέπει να γίνουν για να επιλυθεί ένα πρόβλημα υπολογισμού. ↩

  3. Λεξιλογική: μία λέξη με πολλές σημασίες («I saw her duck.»). Συντακτική: μια πρόταση που διαβάζεται με πολλούς τρόπους («The chicken is ready to eat.»). ↩

  4. Επειδή η φυσική γλώσσα έχει αμφισημίες και ο υπολογιστής δεν μπορεί να μαντέψει ποια ερμηνεία εννοούμε· μια γλώσσα προγραμματισμού δεν επιτρέπει αμφισημία. ↩

  5. Ο Dennis Ritchie, γύρω στο 1970 (μαζί με τον Ken Thompson δημιούργησαν και το UNIX και τη γλώσσα B). ↩

  6. Ζητά από τον προεπεξεργαστή να συμπεριλάβει το αρχείο επικεφαλίδας stdio.h, που δηλώνει τις συναρτήσεις εισόδου/εξόδου όπως η printf. ↩

  7. Από τη main· κάθε πρόγραμμα C έχει ακριβώς μία. ↩

  8. Δεν θα αλλάξει γραμμή μετά το μήνυμα, οπότε ό,τι τυπωθεί μετά (π.χ. το prompt του shell) θα εμφανιστεί στην ίδια γραμμή. ↩

  9. Ο μεταγλωττιστής μετατρέπει τον πηγαίο κώδικα σε αντικειμενικό αρχείο σε γλώσσα μηχανής· ο συνδέτης ενώνει αντικειμενικά αρχεία και βιβλιοθήκες σε εκτελέσιμο. ↩

  10. Όχι. Η αναπροσαρμογή εφαρμόζεται μόνο όταν οι Ασκήσεις ξεπερνούν την Τελική Εξέταση κατά περισσότερες από 3 μονάδες· εδώ είναι μικρότερες. ↩

Κατεβάστε το κεφάλαιο: PDF · Markdown · GitHub