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



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

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

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

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

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος

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

ΑΕΠΠ Ερωτήσεις θεωρίας

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

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

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

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

Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων. 1. Εισαγωγή. Ιωάννης Κατάκης. ΕΠΛ 032: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων

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

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

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

Ε Ι Α Γ Ω Γ Η Σ Ο Ν Π Ρ Ο Γ Ρ Α Μ Μ Α Σ Ι Μ Ο Κ Ε Υ Α Λ Α Ι Ο 6. Σο πρόγραμμα γράφεται σε κάποια γλώσσα προγραμματισμού.

Αντικειμενοστρεφής Προγραμματισμός -Python. Κ.Π. Γιαλούρης

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

Μαλούτα Θεανώ Σελίδα 1

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

Εισαγωγή στον δομημένο προγραμματισμό

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό

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

Περιεχόµενα. Ανασκόπηση - Ορισµοί. Ο κύκλος ανάπτυξης προγράµµατος. Γλώσσες Προγραµµατισµού Ασκήσεις

ΕΡΩΤΗΣΕΙΣ ΑΞΙΟΛΟΓΗΣΗΣ

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

Πληροφορική 2. Γλώσσες Προγραμματισμού

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. 03/01/09 Χαράλαμπος Τζόκας 1

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

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

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής

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

Θεωρητικές Ασκήσεις. ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. 1 ο Μέρος

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

ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ

<<ΔΗΜΗΤΡΗΣ ΜΑΝΩΛΗΣ ΦΥΣΙΚΟΣ ΜCs>> 1

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

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

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

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

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

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

Εισαγωγή στην Πληροφορική

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

Προγραμματισμός I (Θ)

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

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

ΚΑΤΑΝΟΗΣΗ ΑΝΑΛΥΣΗ ΕΠΙΛΥΣΗ. Ο προγραμματισμός ασχολείται με το σύνολο των εντολών που δίνονται στον υπολογιστή ώστε να υλοποιείται ο αλγόριθμος.

Διαδικασιακός Προγραμματισμός

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

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

Πρόβλημα 37 / σελίδα 207

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

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

Προγραμματισμός. Εαρινό Εξάμηνο 2011

Μάριος Αγγελίδης Ενότητες βιβλίου: 2.1, 2.3, 6.1 (εκτός ύλης αλλά χρειάζεται για την συνέχεια) Ώρες διδασκαλίας: 1

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

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

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

Προγραµµατισµός Ι Εισαγωγή Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Προγραµµατισµός Ι Νικόλαος Δ. Τσελίκας

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

ΕΠΛ 032 Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ. Γενική Περιγραφή

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

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

Α. Ερωτήσεις Ανάπτυξης

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

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

Προγραμματισμός Ι (ΗΥ120)

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

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει τρία εξίσου σημαντικά στάδια.

Κεφάλαιο 6 ο Εισαγωγή στον Προγραμματισμό 1

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΑ ΣΥΣΤΗΜΑΤΑ

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. (Διάλεξη 15)

Προγραμματισμός H/Y Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Γλώσσες υψηλού επιπέδου Περιέχουν περισσότερες εντολές για την εκτέλεση πολύπλοκων εργασιών Τα προγράµµατα µεταφράζονται σε γλώσσα µηχανής είτε από το

Εισαγωγή στις Αρχές της Επιστήμης των ΗΥ

Σύνοψη Θεωρίας ΟΡΙΣΜΟΣ ΚΑΙ ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΑΛΓΟΡΙΘΜΩΝ

Εισαγωγή - Βασικές έννοιες. Ι.Ε.Κ ΓΛΥΦΑΔΑΣ Τεχνικός Τεχνολογίας Internet Αλγοριθμική Ι (Ε) Σχολ. Ετος A Εξάμηνο

ΚΕΦΑΛΑΙΟ 6. Περιβάλλοντα Ανάπτυξης Εφαρμογών. ΚΕΦΑΛΑΙΟ 6 Περιβάλλοντα Ανάπτυξης Εφαρμογών. Α Γενικού Λυκείου

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

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

ΕΠΛ 001: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Προγραμματισμός

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. Στέφανος Ουγιάρογλου

Βασικές Αρχές Προγραμματισμού

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

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

Μεθόδων Επίλυσης Προβλημάτων

Κεφάλαιο 6 Εισαγωγή στον Προγραμματισμό. 26-Jun-15 ΑΕΠΠ - Καραμαούνας Π. 1

Ενότητα 2 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

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

ΑΣΚΗΣΗ 1: TO ΠΕΡΙΒΑΛΛΟΝ ΕΡΓΑΣΙΑΣ DEV-C++

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

Κεφάλαιο 1 Εισαγωγή στη C

Γενικά περί υπολογιστών

Προγραμματισμός Η/Υ. 1 η ενότητα: Εισαγωγή στις γλώσσες προγραμματισμού. Τμήμα. Τεχνολόγων Περιβάλλοντος. ΤΕΙ Ιονίων Νήσων

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική II. Ενότητα 3 : Γλώσσες προγραμματισμού. Δρ.

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

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

Βασικές Αρχές Προγραμματισμού

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

Transcript:

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

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

Μέσα Διαλέξεις Εργαστήρια Η παρακολούθηση και η ενεργή συμμετοχή θεωρούνται εξ ορισμού αναγκαία για την επιτυχή ολοκλήρωση του μαθήματος. 3

LOGISTICS ΜΑΘΗΜΑΤΟΣ 4

Διδάσκοντες Θεωρία Χρήστος Γκουμόπουλος (goumop@aegean.gr) Εργαστήριο Αναστασία Δούμα (sia@aegean.gr) Δημήτρης Δαμόπουλος (ddamop@aegean.gr) 5

Βαθμολογία 50% Τελική Εξέταση 20% Πρόοδος 30% Βαθμός εργαστηρίου που προκύπτει από μια σειρά ασκήσεων και εργασιών, καθώς και τελική εξέταση εργαστηρίου. Για να μπορεί να δώσει κάποιος τελικές εξετάσεις, πρέπει να έχει περάσει με 5 το εργαστήριο. Ο βαθμός της προόδου και του εργαστηρίου ενεργοποιούνται μόνον όταν ο φοιτητής επιτύχει στις τελικές εξετάσεις, δηλ. εάν σε αυτές λάβει βαθμό τουλάχιστον 5. 6

Πρόοδος/Εξετάσεις Η εξέταση προόδου θα πραγματοποιηθεί την πρώτη εβδομάδα του Δεκέμβρη και θα εξεταστεί γραπτώς η ύλη που θα έχει καλυφθεί μέχρι εκείνο το σημείο. Η συμμετοχή στην πρόοδο είναι επιβεβλημένη. Η εξεταστική περίοδος ξεκινά 24.01.2011 και τελειώνει 18.02.2011 Η εξέταση τόσο στην πρόοδο όσο και στις τελικές εξετάσεις είναι με περιορισμένο χρόνο και με ανοικτές σημειώσεις. Οι σημειώσεις που μπορείτε να έχετε μαζί σας περιορίζονται στα εξής: το σύγγραμμα που έχετε επιλέξει, δικές σας χειρόγραφες σημειώσεις από το μάθημα, τυπωμένο υλικό (ασκήσεις, διαφάνειες) που έχει αναρτηθεί στο site του μαθήματος. Δεν επιτρέπεται οποιαδήποτε συσκευή υπολογισμού (laptop, pda, smart phone, calculator, κ.α.) 7

Εργαστήριο 4 ώρες (Δευτέρα & Τετάρτη 9.00 13.00) Δύο ομάδες, αλφαβητικός διαχωρισμός Ο διαχωρισμός των ομάδων είναι αυστηρόςγια όλους! Η παρακολούθηση εργαστήριου δεν είναι υποχρεωτική, η πείρα όμως δείχνει ότι η συμμετοχή στο εργαστήριο και η εξάσκηση αποδίδουν. Φοιτητές που έχουν κατοχυρώσει προβιβάσιμο βαθμό το ακαδημαϊκό έτος 2009-2010 μπορούν να μεταφέρουν το βαθμό τους στο τρέχον ακαδημαϊκό έτος. 8

Εργαστήριο Η αξιολόγηση περιλαμβάνει: 8 ασκήσεις εργαστηρίου 3 εργασίες πιο σύνθετες από τις ασκήσεις. τελική εξέταση του εργαστηρίου παρουσία στο εργαστήριο Οι εργασίες και οι ασκήσεις είναι ατομικές και θα πρέπει να παραδίνονται ηλεκτρονικά εντός αυστηρής προθεσμίας. Δεν θα δίνεται παράταση στην παράδοση των εργασιών και ασκήσεων. Η εξέταση του εργαστηρίου, θα γίνει την εβδομάδα 17-21 Ιανουαρίου 2011 με ένα θέμα, διαφορετικό αλλά ίδιας δυσκολίας, για την κάθε ομάδα. 9

Εργαστήριο Ο τελικός βαθμός εργαστηρίου (ΤΒΕ) υπολογίζεται ως εξής: ΤΒΕ = 0,5 * ΒΕΕ + 0,3 * ΣΒΕi + 0,2 * ΣΒΑi όπου ΒΕΕ ο βαθμός εξέτασης του εργαστηρίου, ΣΒΕi ο μέσος όρος των βαθμών των εργασιών και ΣΒΑiο μέσος όρος των βαθμών των ασκήσεων. Θα πρέπει BEE> 5. Όλες οι εργασίες είναι ισοδύναμες. Όλες οι ασκήσεις είναι ισοδύναμες. 10

Δεοντολογία Οι εργασίες είναι ατομικές Γόνιμη ανταλλαγή απόψεων μεταξύ των φοιτητών σχετικά με τις εργασίες και επιτρέπεται και ενθαρρύνεται. Η συνεργασία ΔΕΝ πρέπει να οδηγεί σε από κοινού επίλυση και συγγραφή της εργασίας. Η υποβολή κοινών απαντήσεων από διαφορετικούς φοιτητές που συνεργάστηκαν δεν επιτρέπεται και θεωρείται ως ΑΝΤΙΓΡΑΦΗ. Η αντιγραφή έχει ως αποτέλεσμα το μηδενισμό της εργασίας και τη δυσμενή αξιολόγηση συνολικά για το μάθημα. 11

Συμβουλή Να μην βλέπετε τις εργασίες των συμφοιτητών σας κατά την διάρκεια της εκπόνησής τους Να μην δίνετε το κείμενο ή/και τον κώδικα των εργασιών σας στους συμφοιτητές σας. Στην τεκμηρίωση των εργασιών σας θα πρέπει να αναφέρετε όλες τις πηγές που χρησιμοποιήσατε (π.χ. βιβλία, διαδίκτυο, κτλ) Εάν είναι απαραίτητο ρωτήστε τους διδάσκοντες για διευκρινήσεις 12

Βιβλία Η Γλώσσα Προγραμματισμού C Brian Kernighan & Dennis Ritchie 2 η έκδοση/2008 ISBN: 978-960-461-132-4 Εκδόσεις Κλειδάριθμος ΕΠΕ C Προγραμματισμός Deitel Harvey M.,Deitel Paul J. 5η έκδοση/2010 ISBN: 978-960-512-590-5 Εκδόσεις Α. Γκιούρδα & ΣΙΑ ΟΕ 13

Ερωτήσεις; 14

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

Βασικές έννοιες Ο υπολογιστής είναι μια ηλεκτρονική συσκευή που έχει την δυνατότητα να εκτελεί εντολές με πολύ μεγαλύτερη ταχύτητα και ακρίβεια από ότι ένας άνθρωπος Λειτουργίες εισόδου/εξόδου δεδομένων Αριθμητικές λειτουργίες Κίνηση πληροφοριών μέσα στη CPU Λογικές ή συγκριτικές λειτουργίες 16

Βασικές έννοιες Πρόβλημα (Problem) Το υπολογιστικό πρόβλημα που καλούμαστε να επιλύσουμε, π.χ., ένας αριθμητικός υπολογισμός, η διαχείριση μιας βάσης δεδομένων, ο έλεγχος ενός ρομπότ,μια ιατρική διάγνωση, η πρόγνωση του καιρού. Αλγόριθμος(Algorithm) Μια σαφώς καθορισμένη διαδικασία αποτελούμενη από ένα σύνολο εκτελέσιμων βημάτων που θα τερματίσει με ένα αποτέλεσμα μετά από πεπερασμένο πλήθος βημάτων που θα εκτελεσθούν. Πρόγραμμα(Program) Μια κωδικοποίηση του αλγόριθμου σε μια γλώσσα προγραμματισμού Διεργασία(Process) Το πρόγραμμα που εκτελείται σε έναν υπολογιστή 17

Δομημένος προγραμματισμός Ανάλυση του προγράμματος που επιλύει ένα πρόβλημα σε τμήματα (υποπρογράμματα, modules) τα οποία συνεργάζονται για να δώσουν το τελικό αποτέλεσμα, αλλά ταυτόχρονα δημιουργούνται (και ελέγχονται) ανεξάρτητα το ένα από το άλλο. 18

Δομημένος προγραμματισμός Πλεονεκτήματα: Ευκολότερη κατανόηση της λειτουργίας του προγράμματος από τρίτους Ευκολότερος έλεγχος της ορθότητας του προγράμματος Ευκολότερη αποσφαλμάτωσηπρογράμματος (debugging) Δυνατότητα ανάπτυξης υποπρογραμμάτων ανεξάρτητα, από διαφορετικές ομάδες Δυνατότητα επαναχρησιμοποίησης υποπρογραμμάτων Ευκολότερη συντήρηση 19

Top-down σχεδιασμός λύσεων Divide-and-conquer:Διαίρεση μεγάλου (και δύσκολου) προβλήματος σε περισσότερα μικρά (και πιο εύκολα) προβλήματα 20

Bottom-up σχεδιασμός λύσεων Ανάπτυξη των τμημάτων του προγράμματος ξεκινώντας από τα μικρότερα προς τα μεγαλύτερα (που τα περικλείουν). Συνηθίζεται περισσότερο στην κωδικοποίηση του αλγορίθμου σε πρόγραμμα. 21

Πρόβλημα -παράδειγμα Έχουμε ένα αρχείο με τα ονόματα των φοιτητών. Θέλουμε να βρούμε τους φοιτητές του 1 ου έτους. 22

Σχεδιασμός μιας λύσης (αλγόριθμος) 1. Απέκτησε πρόσβαση στο αρχείο των φοιτητών 2. Διάβασε την πρώτη γραμμή του αρχείου που περιέχει τα στοιχεία του πρώτου φοιτητή 3. Αν είναι πρωτοετής φοιτητής τύπωσε το όνομά του. 4. Αν υπάρχει επόμενη γραμμή στο αρχείο διάβασέ την και επανέλαβε τα βήματα 3-4. 23

Αναπαράσταση αλγόριθμων Ελεύθερο κείμενο (freetext): ανεπεξέργαστος και αδόμητος τρόπος παρουσίασης αλγόριθμου Διαγραμματικές τεχνικές (diagramming techniques): γραφικός τρόπος παρουσίασης του αλγόριθμου(διάγραμμα ροής) Κωδικοποίηση(coding): πρόγραμμα γραμμένο είτε σε ψευδογλώσσα, είτε σε προγραμματιστικό περιβάλλον που όταν εκτελεσθεί θα δώσει τα ίδια αποτελέσματα με τον αλγόριθμο 24

Διαγράμματα ροής Χρησιμοποιούνται διάφορα γεωμετρικά σχήματα με ορισμένη σημασία Τα σχήματα συνδέονται με συνεχείς γραμμές και χρησιμοποιούνται τόξα για να δείξουν την ροή των δεδομένων Ένα διάγραμμα ροής δεν είναι ένα συμπληρωμένο πρόγραμμα, αλλά αποτελεί μια γραφική αναπαράσταση των βημάτων ενός αλγόριθμου που μπορεί να χρησιμοποιηθεί ως βοήθεια για τον προγραμματιστή

Σύμβολα διαγράμματος ροής 26

Σύμβολα διαγράμματος ροής 27

Διάγραμμα ροής για το παράδειγμα ΑΡΧΗ Άνοιγµα αρχείου φοιτητών για ανάγνωση ιάβασµα γραµµής αρχείου Τέλος αρχείου? ΝΑΙ Κλείσιµο αρχείου φοιτητών ΤΕΛΟΣ ΟΧΙ Φοιτητής 1ου έτους? ΝΑΙ Τύπωσε στοιχεία φοιτητή ΟΧΙ ιάβασµα γραµµής αρχείου 28

Κώδικας σε C #include <stdio.h> int main() { FILE *fp; char line[100], *c; /* open the file */ fp = fopen( STUDENT.DAT, r ); if (fp == NULL) { printf( Unable to open this file.\naborting \n ); exit(-1); } /* read a line */ c = fgets(line, 100, fp); while (c!= NULL) /* Check EOF */ { if (getyear(line) == 1) /* getyear function returns the year */ printf(( %s, line); c = fgets(line, 100, fp); /* read the next line */ } fclose(fp); return 0; } 29

Διάγραμμα ροής για μετάφραση εκτέλεση ενός C προγράμματος 30

Έλεγχος αποτελεσμάτων Σε περίπτωση που το αποτέλεσμα δεν είναι το αναμενόμενο θα πρέπει να εντοπισθούν τα λογικά λάθη του προγράμματος που συνδέονται με το σχεδιασμό της λύσης Το πρόγραμμα θα πρέπει να ελεγχθεί με περισσότερα δεδομένα (εμπειρική απόδειξη ορθότητας έναντι αναλυτικής μεθόδου με μαθηματική απόδειξη). 31

Βήματα ανάπτυξης προγράμματος 1. Διατύπωση του προβλήματος με σαφήνεια. Ένα πρόβλημα δεν μπορεί να επιλυθεί ορθά αν δεν γίνει πρώτα κατανοητό. 2. Ανάλυση του προβλήματος και προσδιορισμός της λύσης. Ένα πρόβλημα μπορεί να έχει πολλές λύσεις. 3. Διατύπωση της λύσης υπό τη μορφή αλγόριθμου. 4. Κωδικοποίηση του αλγόριθμου. Επιλογή γλώσσας προγραμματισμού. 5. Μετάφραση και εκτέλεση του προγράμματος στον υπολογιστή. 6. Έλεγχος και διόρθωση συντακτικών και λογικών λαθών. 32

ΓΛΩΣΣΕΣΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ 33

Κωδικοποίηση αλγόριθμου 34

Γλώσσες προγραμματισμού Γλώσσες μηχανής Άμεση επικοινωνία με το υλικό του υπολογιστή Συμβολικές γλώσσες Χρήση συμβολικών ονομάτων για τις βασικές εντολές Υψηλού επιπέδου Προσανατολισμένες στο πρόβλημα και όχι στον υπολογιστή

Γλώσσες μηχανής Η μόνη γλώσσα που «καταλαβαίνει» άμεσα ο υπολογιστής Κάθε υπολογιστής έχει τη δική του διαφορετική γλώσσα μηχανής Κάθε κωδικός της γλώσσας μηχανής συμβολίζει μία συγκεκριμένη λειτουργία π.χ. Πολλαπλασιασμός = 1001 Ο προγραμματισμός σε γλώσσα μηχανής είναι εξαιρετικά επίπονη διαδικασία Ξένη προς τον τρόπο που σκέφτεται ο άνθρωπος Μεγάλη ταχύτητα εκτέλεσης των προγραμμάτων

Συμβολικές γλώσσες Για την καλύτερη απομνημόνευση των κωδικών μηχανής χρησιμοποιούνται μνημονικοί κωδικοί π.χ. Πολλαπλασιασμός = MULT= 1001 Η μετάφραση από τα συμβολικά ονόματα Η μετάφραση από τα συμβολικά ονόματα στους αριθμητικούς κωδικούς γίνεται μέσω του συμβολομεταφραστή (assembler)

Γλώσσες υψηλού επιπέδου Δεν εξαρτώνται από την μηχανή αλλά από το πρόβλημα Επιτρέπουν στον προγραμματιστή να γράψει εντολές χρησιμοποιώντας κωδικές λέξεις και συμβατικούς μαθηματικούς συμβολισμούς π.χ. D = A * B + C Επιτρέπουν στον προγραμματιστή να εκφράσει σε υψηλό επίπεδο δομές ελέγχου ροής: ακολουθιακή, επιλογής και επανάληψης Cobol, Fortran, Algol, Ada, Pascal, C, C++, Java, C#, Visual Basic, SQL, Prolog, PHP, Perl, Python

Μεταγλώττιση (compilation) Ο υπολογιστής δεν «καταλαβαίνει» άμεσα μια γλώσσα υψηλού επιπέδου Η μετάφραση από μία γλώσσα υψηλού επιπέδου στη γλώσσα μηχανής γίνεται μέσω των μεταγλωττιστών (compilers) Οδηγίες του προγραμματιστή: αποθηκευμένες στο πηγαίο πρόγραμμα(source program) Αντίστοιχες οδηγίες επιπέδου μηχανής: αποθηκευμένες στο αντικειμενικό ή τελικό πρόγραμμα (object program) Σε ορισμένα μικρά υπολογιστικά συστήματα (π.χ. PC) το αντικειμενικό πρόγραμμα πρέπει να προετοιμαστεί για εκτέλεση από άλλο ειδικό πρόγραμμα, τον συνδέτη (linkage editor)

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

Ιστορική αναδρομή της C 41

Χαρακτηριστικά της C Είναι σχετικά μικρή και εύκολη στην εκμάθηση Υποστηρίζει top-downκαι bottom-upσχεδιασμό αλλά και δομημένο προγραμματισμό Είναι αποτελεσματική (οδηγεί σε γρήγορα στην εκτέλεση προγράμματα) Είναι φορητή (portable) σε πολλά συστήματα Ο προγραμματιστής έχει τον πλήρη έλεγχο, αλλά και την ευθύνη των σφαλμάτων (π.χ. διαχείριση δεικτών και δυναμικής μνήμης) 42

Χαρακτηριστικά της C Υπάρχει μεγάλη βάση εφαρμογών που αναπτύχθηκαν με τη γλώσσα αυτή Μπορεί να χρησιμοποιηθεί και ως γλώσσα χαμηλού επιπέδου (άμεση πρόσβαση στους πόρους) και ως γλώσσα υψηλού επιπέδου (διαθέσιμες βιβλιοθήκες) Δημιουργήθηκε για την ανάπτυξη του UNIX Η γνώση της C είναι καλό εφόδιο για την εκμάθηση άλλων γλωσσών όπως: C++, Java και PHP. 43

Απλό πρόγραμμα σε C 44

Διαδικασία μεταγλώττισης C Preprocessor int printf(char *format, ); #include <stdio.h> int main(void) { printf("hello, world\n"); return 0; } Επαυξηµένος Κώδικας Πηγής 45

Επεξήγηση κώδικα Οτιδήποτε περικλείεται ανάμεσα σε /*και */ υποδηλώνει σχόλιο του προγραμματιστή σχετικά με το πρόγραμμα Τα σχόλια δεν μεταγλωττίζονται, αλλά αφαιρούνται κατά την διάρκεια της προεπεξεργασίας(c Preprocessor) 46

Επεξήγηση κώδικα Οδηγία προς τον C Preprocessor να συμπεριλάβει τα περιεχόμενα του αρχείου επικεφαλίδας (header file) stdio.hτο οποίο περιέχει τις δηλώσεις συναρτήσεων της C βιβλιοθήκης για είσοδο/έξοδο στην κονσόλα. Στο πρόγραμμα μας τέτοιες συναρτήσεις είναι οι printf(), getchar() 47

Επεξήγηση κώδικα Κάθε έγκυρο C πρόγραμμα πρέπει να διαθέτει μια συνάρτηση main(). Από αυτή την συνάρτηση αρχίζει η εκτέλεση του προγράμματος μετά την μεταγλώττιση. Όταν ολοκληρωθεί η εκτέλεση των εντολών της main() από τον υπολογιστή, μια ακέραια τιμή (int)επιστρέφεται στο περιβάλλον από όπου έγινε η εκκίνηση της εκτέλεσης του προγράμματος και τελικά στον χρήστη. 48

Επεξήγηση κώδικα Η συνάρτηση printf()μας παρέχεται ως έτοιμη λειτουργία καθώς ορίζεται σε μια από τις βιβλιοθήκες της C (libc.a) Τυπώνει στην οθόνη τη συμβολοσειρά που λαμβάνει ως όρισμα. Η συμβολοσειρά ορίζεται μεταξύ των διπλών εισαγωγικών και. Η ακολουθία \nσημαίνει newline (νέα γραμμή) και υποδηλώνει πως η επόμενη εκτύπωση χαρακτήρων στην οθόνη θα γίνει σε νέα γραμμή. Το ερωτηματικό ;στο τέλος της πρότασης είναι μέρος της σύνταξης της C για να τερματίσει μια εντολή. 49

Επεξήγηση κώδικα Η συνάρτηση getchar() διαβάζει ένα χαρακτήρα από την κύρια είσοδο (πληκτρολόγιο) και τον επιστρέφει στο πρόγραμμα ως μια ακέραια τιμή. Η επιστρεφόμενη τιμή της getchar() που πηγαίνει στο συγκεκριμένο πρόγραμμα; 50

Περιβάλλοντα C προγραμματισμού Περιβάλλον Microsoft Visual C++ Express Edition για Windows (παρέχεται σε CD με το βιβλίο) ΜεταγλωττιστήςGNU gcc για UNIX (ελεύθερο λογισμικό) Σε Windows τα παρακάτω περιβάλλοντα υποστηρίζουν τον μεταγλωττιστή gcc Dev-C++ Cygwin MinGW 51

Dev-C++ Ανοικτό λογισμικό (GNU General Public License) Integrated Development Environment για C/C++ προγράμματα Χρησιμοποιεί την MinGW υλοποίηση του gcc H τελευταία έκδοση μπορεί να βρεθεί στην παρακάτω διεύθυνση: http://www.bloodshed.net/dev/devcpp.html Dev-C++ 5.0 beta 9.2 (4.9.9.2)(9.0 MB) with Mingw/GCC 3.4.2 Κατεβάζετε ένα setup αρχείο της μορφής devcpp- 4.9.9.2_setup.exe 52

Το περιβάλλον Dev-C++ 53

Δημιουργία αρχείου κώδικα πηγής 54

Συγγραφή προγράμματος Το πρόγραμμα σε C Αρχείο κώδικα πηγής 55

Μεταγλώττιση προγράμματος 56

Εκτέλεση προγράμματος Προκαθορισμένη έξοδος (οθόνη ως παράθυρο) 57