Δομημένος Προγραμματισμός (1.004)

Νίκος Παπαδάκης, Ελευθέριος Κοσμάς & Κωνσταντίνος Βασιλάκης

Περιγραφή

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

Με την επιτυχή ολοκλήρωση του μαθήματος ο φοιτητής / τρια θα:

  • αποκτήσει δεξιότητες προγραμματισμού και θα αναπτύσσει λογισμικό στη γλώσσα προγραμματισμού C,
  • έχει κατανοήσει τις βασικές αρχές σχεδίασης και υλοποίησης προγραμμάτων με εφαρμογή του δομημένου προγραμματισμού,
  • μπορεί να επιλύει προβλήματα με την βοήθεια υπολογιστών,
  • είναι σε θέση ν’ ανταποκριθεί στα μαθήματα ειδικότητας που απαιτούν προγραμματισμό υπολογιστών.
CC - Αναφορά Δημιουργού
Μαθησιακοί στόχοι

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

Με την επιτυχή ολοκλήρωση του μαθήματος ο φοιτητής / τρια:

  • θα μπορεί να επιλέξει και να συνδυάζει τεχνικές προγραμματισμού για να αναπτύσσει λογισμικό στη γλώσσα προγραμματισμού C,
  • θα έχει κατανοήσει τις βασικές αρχές σχεδίασης και υλοποίησης προγραμμάτων με εφαρμογή του δομημένου προγραμματισμού,
  • θα μπορεί να αναλύει προβλήματα και να τα επιλύει με την βοήθεια υπολογιστών,
  • θα είναι σε θέση ν’ ανταποκριθεί στα μαθήματα ειδικότητας που απαιτούν προγραμματισμό υπολογιστών.
Περιεχόμενο μαθήματος
  • Λειτουργία του υπολογιστή. Αρχιτεκτονική, οργάνωση μνήμης. Ροή των δεδομένων μέσα στο υπολογιστικό σύστημα. Εκτέλεση εντολών. Ανάπτυξη λογισμικού. Τεχνολογία  λογισμικού. Κύκλος ζωής έργου λογισμικού. Οι φάσεις ανάλυσης, σχεδίασης ελέγχου και συντήρησης. 
  • Λογισμικό και γλώσσες προγραμματισμού. Πηγαίο-εκτελέσιμο πρόγραμμα. Το προγραμματιστικό περιβάλλον. Διαδικασία μεταγλώττισης και εκτέλεσης προγράμματος.
  • Δομημένος προγραμματισμός. Σημασία της δόμησης προγραμμάτων. Βασικές αρχές δομημένου προγραμματισμού. Τεχνικές δομημένου προγραμματισμού.
  • Αλγόριθμοι - γενικά. Αλγόριθμοι με βήματα. Λογικά διαγράμματα. Ψευδοκώδικας. Αλγοριθμική επίλυση προβλημάτων. Αλγόριθμοι αναζήτησης και ταξινόμησης.
  • Η γλώσσα C, χαρακτηριστικά και δυνατότητες. Η δομή προγραμμάτων της C. Συναρτήσεις στη C, εισαγωγικές έννοιες. Μαθηματικές συναρτήσεις της C.
  • Αναπαράσταση δεδομένων: χαρακτήρες, ακέραιοι, πραγματικοί. Βασικοί τύποι δεδομένων, σταθερές, μεταβλητές, ο τελεστής εκχώρησης. Αριθμητικά συστήματα.
  • Συναρτήσεις εισόδου/εξόδου.
  • Τελεστές: αριθμητικοί, σχεσιακοί, επιπέδου bit. Αληθείς-ψευδείς προτάσεις, εκφράσεις συσχετισμού, λογικές παραστάσεις, προτεραιότητα τελεστών. Σύνθετοι τελεστές. Δείκτες, διευθύνσεις θέσεων μνήμης.
  • Δομές ελέγχου ροής προγράμματος. Ένθετες δομές ελέγχου.
  • Βρόγχοι επανάληψης. Ένθετοι βρόγχοι.
  • Οι συναρτήσεις στη C. Ορισμός, δήλωση, κλήση συνάρτησης. Επιστροφή τιμής από συνάρτηση. Τύποι συναρτήσεων. Πέρασμα διευθύνσεων σε συναρτήσεις. Κατηγορίες μνήμης. Αυτόματες, εξωτερικές, στατικές μεταβλητές. Εμβέλεια και χρόνος ζωής μεταβλητών. Αναδρομικότητα συναρτήσεων.
  • Πίνακες μιας διάστασης. Δήλωση, αρχικοποίηση, διάβασμα και εκτύπωση πινάκων. Μαζική επεξεργασία στοιχείων πινάκων. Συμβολοσειρές. Χειρισμός συμβολοσειρών. Πίνακες πολλών διαστάσεων. Δείκτες και πίνακες. Πίνακες σαν ορίσματα συναρτήσεων.
  • Απαριθμήσεις, δομές, ενώσεις.
  • Χειρισμός αρχείων. Συναρτήσεις προσπέλασης σε αρχεία.
  • Συναρτήσεις για δυναμική διαχείριση μνήμης.
  • Δομές δεδομένων. Στοίβες, συνδεδεμένες λίστες.
Μέθοδοι διδασκαλίας

Η διδασκαλία περιλαμβάνει παρουσιάσεις θεωρίας, παραδείγματα προγραμμάτων, επίλυση προβλημάτων, ερωτήσεις-αποκρίσεις, ασκήσεις αυτοαξιολόγησης, συμμετοχή σε δραστηριότητες (forum, chat, wall). Η υποστήριξη της μαθησιακής διαδικασίας γίνεται μέσω ηλεκτρονικής πλατφόρμας ασύγχρονης εκπαίδευσης (Learning Management System). Για τις διαλέξεις από απόσταση χρησιμοποιούνται υποδομές διαδικτυακών συσκέψεων.

Τρόπος παράδοσης:

  • θεωρητικές διαλέξεις και δραστηριότητες μέσα από τη πλατφορμα ηλεκτρονικής μάθησης eclass
  • φροντιστήριο και παραδείγματα προγραμμάτων σε εργαστηριακές ομάδες (δια ζώσης και απο απόσταση διδασκαλία).

Εργασίες:

  • Εβδομαδιαίες ατομικές ασκήσεις που υποβάλονται στη πλατφόρμα eclass
  • Ατομικές εργασίες κατά τη διάρκεια του εξαμήνου, που υποβάλονται στη πλατφόρμα eclass και εξετάζονται.

Εξετάσεις:

  • εξετάσεις περιόδου
  • ενδιάμεσες εξετάσεις

Υποδομές:

  • Μεταγλωττιστές της C (Dev C++, Code Blocks, Gnu C).
  • https://eclass.hmu.gr (LMS, τηλε-συσκέψεις: BigBlueButoon)
  • https://classroom.google.com (τηλε-συσκέψεις: google meet)
Μέθοδοι αξιολόγησης
Για όλους τους φοιτητές, η αξιολόγηση γίνεται ως εξής:
 
  • Εξετάσεις 60% (πάνω από 45% για περάσει κάποιος το μάθημα)
    • Τελική εξέταση: 60% ή 100% (χωρίς την ενδιάμεση εξέταση)
    • Ενδιάμεση εξέταση: 40% (προαιρετική)
  • Εργασίες: 40% (με προφορική εξέταση)
  • Εβδομαδιαίες ασκήσεις & συμμετοχή στις Διαλέξεις: 10%
Συγγράμματα
  • Η γλώσσα C σε βάθος, Ν. Χατζηγιαννάκης, εκδόσεις  Κλειδάριθμος, 5η έκδοση
  • C: Από τη Θεωρία στην Εφαρμογή, Γ. Σ. Τσελίκης, Ν. Δ. Τσελίκας, eκδόσεις Ν. Τσελίκας, 3η έκδοση
  • Η Γλώσσα Προγραμματισμού C, Kernighan B., Ritchie D., Εκδόσεις Κλειδάριθμος, 2η έκδοση.
  • C για μηχανικούς, Tan H. H.,D' Orazio T. B., εκδόσεις Τζιόλα, ISBN: 978-960-8050-33-4
  • Διαδικαστικός Προγραμματισμός (Η γλώσσα C), Πάρις Μαστοροκώστας, αποθετήριο «Κάλλιπος»
Διδάσκοντες

Ελευθέριος Κοσμάς, ekosmas@hmu.gr

Κωνσταντίνος Βασιλάκης, καθηγητής, kostas@cs.hmu.gr

Ωρολόγιο πρόγραμμα

Θεωρία:

  • Τρίτη 12:00-14:00, αμφιθέατρο ΚΑΜΑΡΗ
  • Πέμπτη 14:00-16:00, αμφιθέατρο ΚΑΜΑΡΗ

Εργαστήρια πρωτοετών φοιτητών:

<<<υπό κατάσκευή>>>

Ημερολόγιο