Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων 1. Εισαγωγή Ιωάννης Κατάκης
Συστάσεις
Σήμερα o Συμβόλαιο Μαθήματος o Περιγραφή Μαθήματος o Ιστορική Αναδρομή o Υλικό Υπολογιστή (Computer Hardware) o Λογισμικό Υπολογιστή (Computer Software) o Γλώσσες Προγραμματισμού o Παραδείγματα
Περιγραφή Μαθήματος o Ο προγραμματισμός αποτελεί αναπόσπαστο μέρος της Πληροφορικής. o Ο προγραμματισμός ενδιαφέρει και άτομα εκτός πληροφορικής λόγω των προεκτάσεων της στις διάφορες πτυχές της ζωής μας (επαγγελματικής και μη). o Στο μάθημα διδάσκεται ο προγραμματισμός μεθόδων επίλυσης προβλημάτων κάνοντας χρήση της διαδικασιακής γλώσσας προγραμματισμού C. o Διδάσκονται οι βασικές αρχές προγραμματισμού o Καλύπτονται πολύ βασικές έννοιες αναφορικά με την λειτουργία των ηλεκτρονικών υπολογιστών.
Διδάσκων, ηλεκτρονική παρουσία o Διδάσκων Ιωάννης Κατάκης, Επισκέπτης Λέκτορας Γραφείο: FST 01 Β118 Ώρες Γραφείου: Δευτέρα και Πέμπτη, 11.00-12.00 Email: katak@cs.ucy.ac.cy o Υποστήριξη διδασκαλίας: Θα ανακοινωθεί o Ιστοσελίδα Μαθήματος (032.2) http://www.cs.ucy.ac.cy/courses/epl032/ (032.2) Παρακαλώ να επισκέπτεστε συχνά τη σελίδα του μαθήματος!
Διδασκαλία o Διαλέξεις Δευτέρα και Πέμπτη, 13.30-15.00 o Εργαστήρια Dev++
Αξιολόγηση o Κατ οίκον εργασίες (x2): 20% Παραδίδονται ηλεκτρονικά o Διαγνωστικά (x2): 10% o Ενδιάμεση γραπτή εξέταση: 20% o Τελική γραπτή εξέταση: 50% Σε κάθε περίπτωση ο βαθμός της γραπτής εξέτασης πρέπει να είναι μεγαλύτερος του 4
Στόχος Η απόκτηση ικανότητας επίλυσης προγραμματισμό. προβλημάτων με Συγκεκριμένα o Θεμελίωση βασικών αρχών προγραμματισμού, αλγοριθμικής σκέψης, αλγοριθμικών τεχνικών και δομών προγραμμάτων o Σχεδίαση, υλοποίηση, δοκιμή και εξάλειψη σφαλμάτων o Αξιολόγηση λύσεων ενός προβλήματος o Εκμάθηση μιας υψηλού επιπέδου γλώσσας προγραμματισμού (γλώσσα C)
Προτεινόμενη Βιβλιογραφία J.R. Hanlyand E.B. Koffman, Problem Solving and Program Design in C, 5th edition, Addison-Wesley, 2007 Άλλη Βιβλιογραφία: o The C Programming Language, by Brian W. Kernighan and D. Ritchie, 2nd edition, Prentice Hall Software Series. o Διαφάνειες του δικτυακού τόπου του μαθήματος http://www.cs.ucy.ac.cy/courses/epl032/
Περιγραφή Διαλέξεων o Εισαγωγή στην Πληροφορική & Προγραμματισμό o Εισαγωγή στην γλώσσα C o Τύποι Δεδομένων, Τελεστές και Αριθμητικές Εκφράσεις o Είσοδος & Έξοδος Δεδομένων o Εντολές επιλογής & Συνθήκες επιλογής o Εντολές επανάληψης o Συναρτήσεις, Εμβέλεια Μεταβλητών o Πίνακες o Πίνακες και Συναρτήσεις o Αλφαριθμητικές σειρές χαρακτήρων o Αναδρομικές Συναρτήσεις
Τέλη 19 ου αιώνα Herman Hollerith εφευρίσκει την σύγχρονη διάτρητη κάρτα η οποία και χρησιμοποιείται για την απογραφή του πληθυσμού των Η.Π.Α το 1890. Η εργασία αυτή οδηγεί στην ίδρυση της ΙΒΜ
1936 Ο Alan Turing δημιουργεί ένα μαθηματικό υπολογιστικό μοντέλο το οποίο ονομάζει Τuring Machine. Διαφοροποιήσεις αυτού του μοντέλου μπορούν να εξομοιώσουν οποιοδήποτε υπολογιστή ο οποίος μπορεί να κατασκευαστεί
1939 Οι Atanasoff και Berry δημιουργούν στην Iowa τον ABC, τον πρώτο ψηφιακό Η/Υ για την εκτέλεση μαθηματικών υπολογισμών προβλημάτων πυρηνικής φυσικής.
1946 Αναπτύσσεται ο πρώτος ηλεκτρονικός ψηφιακός υπολογιστής γενικής χρήσης: ο ENIAC. Ζυγίζει 30 τόνους και έχει καλύπτει χώρο 30*50 πόδια. Στηρίζεται στο μοντέλο Von Neumann
1951 Παραδίδεται ο UNIVAC I, ο πρώτος εμπορικός ηλεκτρονικός υπολογιστής. Χρησιμοποιείται για την πρόβλεψη των προεδρικών εκλογών στην Αμερική
1959 Ανακαλύπτεται το transistor που οδηγεί σε μείωση του μεγέθους και κόστους των Η/Υ
1963 Εμφανίζονται τα ολοκληρωμένα κυκλώματα τα οποία μειώνουν ακόμα περισσότερο τον όγκο και αυξάνουν την ταχύτητα
1981 Κατασκευάζεται από την ΙΒΜ ο πρώτος προσωπικός Η/Υ
1986 Εμφανίζονται οι παράλληλοι υπολογιστές
Υλικό Υπολογιστή (Computer Hardware) Μονάδα εισόδου είναι µια συσκευή δια µέσου της οποίας δεδοµένα και προγράµµατα εισάγονται από τον έξω κόσµο στον Η/Υ (πληκτρολόγιο, ποντίκι). Μνήµηείναι µια συλλογή από κελιά (cells) το καθένα από τα οποία έχει µια µοναδική φυσική διεύθυνση. Υπάρχει η κύρια και η δευτερεύουσα µνήµη. Μονάδα εξόδου: Συσκευή δια μέσου της οποίας, αποτελέσματα αποθηκευμένα στον Η/Υ καθίστανται διαθέσιμα στον εξωτερικό κόσμο (εκτυπωτές, τερματικά). Κεντρική μονάδα επεξεργασίαςδέχεται εντολές και δεδομένα. Τα δεδομένα επεξεργάζονται σύμφωνα με τις εντολές που έχουν δοθεί και τα αποτελέσματα διαβιβάζονται στις κατάλληλες μονάδες.
Λογισμικό Υπολογιστή (Computer Software) o Λειτουργικό Σύστημα (Operating System) Το σύνολο των προγραμμάτων που είναι υπεύθυνα για την αλληλεπίδραση του χρήστη με το υλικό του υπολογιστή. o Εφαρμογές(Application Software) Λογιστικά Φύλλα, Επεξεργαστές Κειμένου, Παιχνίδια Βοηθούν το χρήστη να διεκπεραιώσει μία διεργασία
Γλώσσες Προγραμματισμού Τεχνητές γλώσσες οι οποίες επιτρέπουν το χρήστη (προγραμματιστή) να δίνει εντολές σε έναν υπολογιστή o Εκτέλεση αριθμητικών υπολογισμών o Ανάπτυξη εφαρμογών
Γλώσσα Μηχανής o Εντολές γραμμένες σε μορφή ακολουθιών 0 και 1 o Άμεσα εκτελέσιμες από τον επεξεργαστή o Συγκριτικά με άλλες γλώσσες υψηλότερου επιπέδου, αυτή είναι η πιο δυσνόητη από έναν ανθρώπινο νου
Συμβολική Γλώσσα (Assembly) o Ευκολότερη στη χρήση από τη γλώσσα μηχανής o Χρήση συμβόλων (συντομεύσεων) o Κάθε οικογένεια επεξεργαστή έχει τη δική της συμβολική γλώσσα
Γλώσσες Υψηλού Επιπέδου o Πιο κοντά στη φυσική γλώσσα o Αφαίρεση των λεπτομερειών που σχετίζονται με το υλικό Pascal, Basic, C, C++, Java
Μεταφραστές (Compilers) o Μεταφράζουν γλώσσες ψηλού επιπέδου σε κώδικα μηχανής o Πηγαίο Πρόγραμμα (Source code) το αρχικό πρόγραμμα σε γλώσσα ψηλού επιπέδου o Αντικείμενο Πρόγραμμα (Object code) το μεταφρασμένο πρόγραμμα σε κώδικα μηχανής
Μεταφραστές(Compilers)
Μέθοδος Επίλυσης Προβλημάτων 1. Περιγραφή προβλήματος Προσδιορισμός των απαιτήσεων του προβλήματος 2. Ανάλυση του προβλήματος Προσδιορισμός εισόδων, εξόδων Προσδιορισμός της λύσης 3. Σχεδίαση της λύσης του προβλήματος Ανάπτυξη αλγορίθμου Σχεδιασμός διαγραμμάτων ροής Δημιουργία ψευδοκώδικα 4. Υλοποίηση του αλγορίθμου. 5. Δοκιμή, έλεγχος και διόρθωση λαθών 6. Συντήρηση και εκσυγχρονισμός του προγράμματος
Παράδειγμα Πρόβλημα o Έχουμε στη διάθεσή μας μία λίστα ονομάτων φοιτητών o Επιθυμούμε να εντοπίσουμε τους φοιτητές του 1 ου έτους o STUDENTS.DAT
Ανάλυση Προβλήματος (1/2) o Δεδομένα Εισόδου STUDENTS.DAT o Επιθυμητό Αποτέλεσμα HΛίστα με τους φοιτητές του 1ου έτους o Για να επεξεργαστούμε μια εγγραφή πρέπει να ανακτηθεί (μεταφερθεί) από τον δίσκο (DISK) στην μνήμη (RAM)
Ανάλυση Προβλήματος (2/2) Προσδιορισμός της Λύσης- Ανάπτυξη Αλγορίθμου 1. Άνοιξε το αρχείο 2. Διάβασε μια εγγραφή από τον δίσκο στην μνήμη 3. Αν είναι φοιτητής είναι του πρώτου έτους τύπωσε το όνομα του 4. Αν υπάρχει επόμενη εγγραφή διάβασε την και μετά επανέλαβε τo βήμα 3-4
Σχεδίαση Λύσης Διάγραμμα Ροής Δεδομένων
Σχεδίαση Λύσης Ψευδοκώδικας /* This is a comment */ start /* Start program*/ open STUDENT.DAT /* Open file */ read rec /* Read Record */ while not EOF do /*repeat until end while*/ if rec.year==1 then print rec.name read rec /* Read next record*/ end while close STUDENT.DAT /* Close file */ end /* End of program */
Συγγραφή Πηγαίου Κώδικα (σε C) #include <stdio.h> int main() { } FILE *fp; char line[100], *c; /* open file*/ fp = fopen("student.dat","r"); if (fp==null) { printf("unable to open file!\n"); exit(-1); } /* read line (one record) */ c = fgets(line, 100, fp); while (c!= NULL) { /* getyear() returns the year */ if (getyear(line) == 1) printf("%s", line); /* read next line (one record) */ c = fgets(line, 100, fp); } fclose(fp); return 0;
Μετάφραση Κώδικας C C Compiler (μεταγλωττιστής) Κώδικας Μηχανής 00010101001111011110101010111000 0111010000100010010100000000111..
Έλεγχος Λαθών o Επέστρεψε το πρόγραμμα τις αναμενόμενες τιμές; o Το πρόγραμμα πρέπει να ελεγχθεί και με άλλες τιμές εισόδου πριν να χρησιμοποιηθεί o Αν βρεθούν λάθη τότε αυτά πρέπει να διορθωθούν
Συντήρηση Προγράμματος, Τεκμηρίωση o Αρχικά Συγγραφή τεκμηρίωσης Το λογισμικό εγκαθίσταται και ξεκινά η λειτουργία του o Το περιβάλλον αλλάζει άρα, (πρέπει να) αλλάζει και το πρόγραμμα o Οι χρήστες επιθυμούν (ή χρειάζονται) περισσότερα από το πρόγραμμα
Στόχος Μαθήματος o Η ανάπτυξη ικανοτήτων ανάλυσης προβλημάτων o Η θεμελίωση βασικών αρχών αλγοριθµικήςσκέψης και προγραμματισμού (στην γλώσσα C) o Σχεδίαση, υλοποίηση, δοκιµή και εξάλειψη σφαλµάτων αρθρωτών προγραµµάτων.
Τέλος διάλεξης