Το forum του μαθήματος (στον ιστότοπο του myceid) http://my.ceid.upatras.gr/index.php



Σχετικά έγγραφα
Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

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

Προγραμματισμός Η/Υ. Ενότητα 2α: Εισαγωγή στη C (Μέρος Πρώτο)

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

Κεφάλαιο : Εισαγωγή στην C: (Διαλέξεις 3-4)

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

Προγραμματισμό για ΗΜΥ

Ανάπτυξη και Σχεδίαση Λογισμικού

Προγραμματισμός Η/Υ (ΤΛ2007 )

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

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

Στόχοι και αντικείμενο ενότητας. Συντακτικό Γλώσσας. Αλφάβητο. #2.. Εισαγωγή στη C (Μέρος Πρώτο)

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

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

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

Προγραμματισμός Η/Υ (ΤΛ2007 )

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

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

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

Διδάσκων: Δημήτριος Βαρσάμης

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

Κεφάλαιο : Εισαγωγή στην C. ( ιαλέξεις 3-4) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Οντοκεντρικός Προγραμματισμός

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

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

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

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

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

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

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

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

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

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

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

Γλώσσα Προγραμματισμού C

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 131 Αρχές Προγραµµατισµού I 3-2

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Στοιχειώδης προγραμματισμός σε C++

Αντικειμενοστρεφής Προγραμματισμός

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

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

3 &4. Εισαγωγήστη C Ιωάννης Κατάκης

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

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

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

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

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

Οικονόμου Βαγγέλησ Διάλεξη Νο 2. Δομημένοσ Προγραμματιςμόσ - Διάλεξη 2

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ

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

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

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

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

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

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

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

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

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

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

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

Αρχές Προγραμματισμού Υπολογιστών

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

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

Προγραμματισμός Ι. Εγγραφές. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

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

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

Αλγόριθμοι. Χρυσόστομος Στύλιος. Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής. Δομές Δεδομένων & Αλγόριθμοι 1

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

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

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

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

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

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

Διορθώσεις Συμπληρώσεις επί της επανεκτύπωσης 2003 της 2 ης έκδοσης του βιβλίου «Διαδικαστικός Προγραμματισμός C»

6. 1 Η έννοια του προγράμματος

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

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

ΣΥΝΟΠΤΙΚΟΣ ΟΔΗΓΟΣ ΓΛΩΣΣΑΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C

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

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

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

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

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

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

Περιεχόμενα. Πρόλογος... 21

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

Η Γλώσσα C Μία Σφαιρική Ανασκόπηση

1. Εισαγωγή βασικά στοιχεία προγράμματος

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

Ηλεκτρονικοί Υπολογιστές

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

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

Ενώσεις δεδομένων Απαριθμητές Ψηφιακοί τελεστές Αναδρομικές συναρτήσεις

Διαδικασία Ανάπτυξης Λογισμικού

Προγραμματισμός Η/Υ (ΤΛ2007 )

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

Transcript:

Tο e-class του μαθήματος μάθημα CEID 1122 Τεχνολογία και Προγραμματισμός Υπολογιστών (κλειστής προσβασης) Η ιστοσελίδα του Τμήματος: http://www.ceid.upatras.gr Η ιστοσελίδα του μαθήματος και του εργαστηρίου: http://software.hpclab.ceid.upatras.gr/ Το forum του μαθήματος (στον ιστότοπο του myceid) http://my.ceid.upatras.gr/index.php CEID - Προγραμματισμός σε ANSI C 1

Βιβλιογραφία Herbert Schildt, Ο οδηγός της C, εκδόσεις Γκιούρδας Brian Kernigham, Dennis Ritchie, H Γλώσσα Προγραμματισμού ANSI C, Κλειδάριθμος 1990. Κλεάνθης Θραμπουλίδης, Διαδικαστικός Προγραμματισμός: Από τη C στη JAVA, Εκδόσεις Τζιόλα, 2002 C How to Program, 5/E (Harvey & Paul) Deitel & Associates, Prentice Hall, 2007 N. Χατζηγιαννάκης, Η γλώσσα C σε βάθος, Κλειδάριθμος Γ. Τσελίκης, Ν. Τσελίκας, C από τη θεωρία στην πράξη http://software.hpclab.ceid.upatras.gr (εμπεριέχεται αναλυτική βιβλιογραφία) 2

Θεωρία και Εργαστήριο (4 τμήματα την εβδομάδα, Δευτέρα και Παρασκευή) Θεωρία Γραπτές Εξετάσεις Εργαστήριο 2-4συνολικά ασκήσεις τη διάρκεια του εξαμήνου, εξετάσεις μπορούν να συμμετέχουν οι υπό μετεγγραφή (εφόσον έχει ολοκληρωθεί η μετακίνησή τους). Τελικός Βαθμός: 10%Εργαστήριο (τελικές εξετάσεις)+90%θεωρία, αν βαθμός εξέτασης >= 5 3

Σειρά Μαθημάτων 1. Εισαγωγή 2. Τύποι δεδομένων, Τελεστές και Παραστάσεις 3. Ροή Ελέγχου και Εντολές Επανάληψης 4. Συναρτήσεις και Δομή του Προγράμματος (κατηγορίες μεταβλητών) 5. Δείκτες και Πίνακες 6. Δομές και ενώσεις 7. Αρχεία 8. Προχωρημένα Θέματα στη C 4

Γλώσσες Προγραμματισμού Αλγόριθμος: Διαδικασία επίλυσης προβλήματος. Γλώσσα Προγραμματισμού: Γλώσσα διατύπωσης αλγορίθμων. Πρόγραμμα: Αλγόριθμος διατυπωμένος σε κάποια γλώσσα προγραμματισμού. Λεξιλόγιο (σύνολο εντολών) Γλώσσα Προγραμματισμού Συντακτικό (κανόνες σύνταξης προτάσεων) Σημασιολογία (μοντέλο υπολογισμού) 5

Χαρακτηριστικά Αλγορίθμου Αλγόριθμος (πεπερασμένος, καλά ορισμένος, είσοδος, έξοδος, αποτελεσματικός) Δομή Αλγορίθμου (κεφαλή (header), τμήμα δηλώσεων δεδομένων, κυρίως τμήμα αλγορίθμου) Τρόποι περιγραφής -- λεκτική (ψευδοκώδικας) -- διαγράμματα ροής προγράμματος 6

Διαγράμματα Ροής Προγράμματος Αρχή Τέλος: Έλλειψη Είσοδος Έξοδος: Παραλληλόγραμμο Διάβασμα τιμής από πληκτρολόγιο, Εκτύπωση Ανάθεση τιμής: Ορθογώνιο Απόφαση: Ρόμβος Λογική συνθήκη με δύο εξόδους: Αληθής - Ψευδής Σύνδεση με άλλο τμήμα του ΔΡΠ: Κύκλος Σε πολύπλοκα ΔΡΠ (π.χ. όταν δεν χωράνε σε μία σελίδα) 7

Υπολογισμός μέγιστου Ν αριθμών MAX = πολύ μικρή τιμή I = 1 ΔΙΑΒΑΣΕ Α I = I + 1 MAX := -32768; ΓΙΑ I := 1 ΕΩΣ Ν ΕΠΑΝΑΛΑΒΕ ΔΙΑΒΑΣΕ (Α); ΕΑΝ (A>MAX) ΤΟΤΕ MAX:=A; ΓΙΑ-ΤΕΛΟΣ; ΤΥΠΩΣΕ(MAX); Α > MAX ΟΧΙ ΝΑΙ MAX = A Το Ελάχιστο βρίσκεται με ακριβώς τον ίδιο τρόπο, θέτοντας ως MIN μια πολύ μεγάλη τιμή (π.χ. 32767). ΝΑΙ ΕΑΝ (A<MIN) ΤΟΤΕ MIN:=A; I <= N ΟΧΙ ΤΥΠΩΣΕ MAX 8

Είδη Γλωσσών Προγραμματισμού (1) Υψηλού Επιπέδου User Oriented Γλώσσες Γλώσσες Προγραμματισμού Problem Oriented Γλώσσες (π.χ.sql) Χαμηλού Επιπέδου (Γλώσσα Μηχανής, Συμβολική Γλώσσα) 9

Είδη Γλωσσών Προγραμματισμού (2) User Oriented Γλώσσες Προγραμματισμού Επιτακτικές ή Διαδικαστικές ή Προστακτικές Γλώσσες π.χ. FORTRAN, ALGOL,COBOL, BASIC, PL/1, C, ADA Αντικειμενοστραφείς (C++, Java) Οπτικές (Visual Basic) Εφαρμοστικές ή Δηλωτικές ή Περιγραφικές Γλώσσες Συναρτησιακές (Lisp, Haskell) Λογικές (Prolog) 10

Mοντέλα Εφαρμογών Μοντέλα= διαμερίζουν την ανάπτυξη λογισμικού σε φάσεις και καθορίζουν: τις δραστηριότητες που την απαρτίζουν τα προϊόντα στα οποία καταλήγει τις διαδικασίες επαλήθευσης των αποτελεσμάτων τα κριτήρια ολοκλήρωσης της Υπάρχουν αρκετά μοντέλα εφαρμογών, τα κυριότερα είναι: το μοντέλο του καταρράκτη (waterfall model) τo μοντέλο του έλικα ή σπειροειδές μοντέλο (spiral model) 11

Μοντέλο Καταρράκτη Η ανάπτυξη λογισμικού υποδιαιρείται στις φάσεις: ανάλυσης απαιτήσεων σχεδίασης υλοποίησης ολοκλήρωσης λειτουργίας και συντήρησης Κάθε εργασία υπόκειται σε διαδικασίες επικύρωσης (validation) και επαλήθευσης (verification) με στόχο: τη συνέπεια με τις απαιτήσεις του χρήστη τη συνοχή με το αποτέλεσμα των προηγουμένων φάσεων 12

Ανάλυση Απαιτήσεων Η φάση της ανάλυσης είναι εκείνη στην οποία: καθορίζονται οι στόχοι διαμορφώνεται το πλάνο εργασίας καταγράφονται και αναλύονται οι απαιτήσεις που υπάρχουν υπολογίζεται το κόστος ανάπτυξης της εφαρμογής Κύρια προϊόντα της φάσης αυτής είναι: ο καθορισμός των προδιαγραφών της εφαρμογής η δημιουργία ενός πλάνου εργασίας για τον τρόπο εκτέλεσης του έργου. 13

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

Υλοποίηση Στη φάση υλοποίησης υλοποιούνται: Η συγγραφή και η διόρθωση του κώδικα της εφαρμογής Ο ποιοτικός έλεγχος της εφαρμογής, δηλαδή η διενέργεια κατάλληλων δοκιμών από την ομάδα ανάπτυξης και από επιλεγμένες ομάδες χρηστών. Οι εργασίες γίνονται σε τέσσερα βασικά στάδια: Πρώτο Στάδιο (Έκδοση Άλφα): δημιουργία μιας πιλοτικής εφαρμογής με μικρό αριθμό αντιπροσωπευτικών δεδομένων. Δεύτερο Στάδιο (Έκδοση Βήτα): περιλαμβάνει την ολοκλήρωση της εφαρμογής. Τρίτο Στάδιο (Έκδοση Γάμμα): γίνονται δοκιμές και διορθώσεις προγραμματιστικών λαθών της εφαρμογής και η τελική επιμέλεια όλων των δεδομένων της. Τέταρτο Στάδιο (Χρυσή Έκδοση) 15

Ολοκλήρωση/Διανομή Το στάδιο ολοκλήρωσης ασχολείται : Με τρόπους προστασίας της εφαρμογής (νομική προστασία, προστασία από παράνομη αντιγραφή και χρήση) Με τη δημιουργία προγράμματος εγκατάστασης απεγκατάστασης (install uninstall) Με την προετοιμασία της συσκευασίας του προϊόντος Με τη μαζική αναπαραγωγή του προϊόντος και του συνοδευτικού υλικού (εγχειρίδιο εγκατάστασης, συνοδευτικά φυλλάδια, κ.ά.). Στο στάδιο διανομής οριστικοποιούνται οι στρατηγικές: Τιμολόγησης Προβολής και προώθησης προϊόντος στην αγορά. 16

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

Πλεονεκτήματα/Μειονεκτήματα Το κύριο πλεονέκτημα του μοντέλου είναι η οργάνωση της διαδικασίας ανάπτυξης σε διακριτές φάσεις, που συμφωνούν με την ακολουθούμενη πρακτική ανάπτυξης εφαρμογών στην αγορά. Το συγκεκριμένο χαρακτηριστικό εξηγεί και τη μεγάλη δημοτικότητά του σε σχέση με κάθε άλλο μοντέλο ανάπτυξης λογισμικού που χρησιμοποιείται σήμερα. Το κύριο μειονέκτημα της χρήσης του συγκεκριμένου μοντέλου προκύπτει από την ανάγκη του ακριβούς καθορισμού προδιαγραφών του τελικού προϊόντος αρκετά νωρίς κατά τη διαδικασία ανάπτυξης και πιο συγκεκριμένα με την ολοκλήρωση του σταδίου της ανάλυσης. 18

Μοντέλο Έλικας Το μοντέλο της έλικας υποστηρίζει μια εξελικτική διαδικασία δημιουργίας μιας εφαρμογής. Πιο συγκεκριμένα, η ανάπτυξη στο μοντέλο αυτό αποτελείται από την επαναληπτική εκτέλεση ενός κύκλου φάσεων. Κάθε φορά ο κύκλος παράγει μια ενδιάμεση έκδοση του τελικού προϊόντος η οποία βελτιώνεται κατά τον επόμενο κύκλο κ.ο.κ. Το κύριο πλεονέκτημα του μοντέλου είναι η δυνατότητα ελέγχου και αξιολόγησης από τους χρήστες κάθε ενδιάμεσου προϊόντος σε κάθε κύκλο ανάπτυξης. Με τον τρόπο αυτό διασφαλίζεται ότι το τελικό προϊόν θα ανταποκρίνεται όσο το δυνατόν καλύτερα στις απαιτήσεις των χρηστών. Το κύριο μειονέκτημα της χρήσης του συγκεκριμένου μοντέλου είναι οι αυξημένες απαιτήσεις σε χρόνο και πόρους που απαιτεί η υλοποίηση και αξιολόγηση μιας εφαρμογής σε διαδοχικούς κύκλους. Επίσης το συγκεκριμένο μοντέλο απαιτεί μια πολύπλοκη διαδικασία ανάπτυξης. 19

Πρακτικές Προγραμματισμού Κατά βήμα εκλέπτυνση (παραγωγή διαδοχικών «εκδόσεων» προγράμματος) Αρθρωτός προγραμματισμός (υλοποίηση διάσπασης προβλήματος σε απλούστερα) 20

Τεχνοτροπίες Προγραμματισμού Προγραμματισμός για επαναχρησιμοποίηση Προγραμματισμός με πλεονασμό (για ανοχή σε σφάλματα) Αμυντικός Προγραμματισμός 21

1. Δομή Ακολουθίας Εντολών Δομημένη Υλοποίηση 2. Δομή Απόφασης (επιλογή υπό συνθήκη) 3. Δομή Επανάληψης (επανάληψη υπό συνθήκη) Απαραίτητη προϋπόθεση το να ισχύουν τα εξής: -- σε κάθε δομή προγραμματισμού (και κατ επέκταση στο πρόγραμμα) υπάρχει μόνο μία είσοδος (αρχή της ροής ελέγχου) και μία μόνο έξοδος (τέλος της ροής ελέγχου) -- η ροή μεταξύ εισόδου και εξόδου σε κάθε δομή είναι ομαλή και απρόσκοπτη 22

Φάση Υλοποίησης Αρχή Συγγραφή/Επεξεργασία Πηγαίου Κώδικα Μεταγλώττιση Πηγαίου Κώδικα Βιβλιοθήκες Object αρχεία ναι Συντακτικά Λάθη; όχι Σύνδεση (Link) Εκτέλεση ναι Λάθη; όχι ΤΕΛΟΣ 23

Ιστορία της C 1969-1973: AT&T Bell Labs από Dennis Ritchie ως συνέχεια των BCPL, B (ανάπτυξη νέας έκδοσης UNIX). 1978: The C Programming Language K&R: Kernigham & Ritchie. 1983: Σύσταση ANSI Standardization Commitee X3J11. 1989-1990: Aποδοχή ΑNSI/ISO Standard (ANSI C) C89 ISO/IEC 9899:1990 Information Technology Programming Language C. ISO/IEC 9899 AM1 αποτελεί τροποποίηση του C πρωτοτύπου. Έγινε αποδεκτό το 1995. ISO/IEC 9899 TCOR1 Technical Corrigendum 1. Έγινε αποδεκτό τo 1995. ISO/IEC 9899 TCOR2 Technical Corrigendum 2. Έγινε αποδεκτό το 1996. C99, C11 24

Γιατί C; Είναι σχετικά μικρή και εύκολη στην εκμάθηση υποστηρίζοντας top down/modular σχεδιασμό και δομημένο προγραμματισμό Υπάρχει μεγάλη εγκατεστημένη βάση εφαρμογών που αναπτύχθηκαν με τη γλώσσα αυτή. Μπορεί να διαχειριστεί: δυαδικά ψηφία (bits), ψηφιολέξεις (bytes), συμβολοσειρές (words), δείκτες (pointers). Μπορεί να χρησιμοποιηθεί για χαμηλού επιπέδου προγραμματισμό επιτρέποντας άμεση πρόσβαση στους πόρους του υπολογιστή. Συνεπώς είναι κατάλληλη γλώσσα για ανάπτυξη προγραμμάτων συστήματος (systems programs) όπως είναι: λειτουργικά συστήματα (operating systems), διερμηνευτές (interpreters), συντάκτες (editors), συμβολομεταφραστές (assemblers), μεταγλωττιστές (compilers), διαχειριστές βάσεων δεδομένων (database managers). 25

Δομή Προγράμματος (1) Γλώσσα C - Εντολές προεπεξεργαστή - Δηλώσεις συναρτήσεων - Δηλώσεις μεταβλητών - Κυρίως πρόγραμμα - Ορισμοί συναρτήσεων main() { -δηλώσεις μεταβλητών - προτάσεις γλώσσας } 26

Δομή Προγράμματος (2) Κυρίως Πρόγραμμα - Είσοδος Δεδομένων - Επεξεργασία Δεδομένων - Έξοδος Αποτελεσμάτων Προτάσεις Γλώσσας 27

Ένα Απλό Πρόγραμμα (test.c) #include <stdio.h> int k=0; float f; int n=5; int a; int main ( ) { int i; /* this is a comment */ for (i=1; i<=n; i++) { scanf( %d, &a); k=k+a; } f=k/n; printf( %f/n,f); } εντολή προεπεξεργαστή δηλώσεις μεταβλητών κυρίως πρόγραμμα εισαγωγή δεδομένων επεξεργασία δεδομένων έξοδος δεδομένων 28

Βασικά Σημεία του Προγράμματος (1) 1. #include <stdio.h> Περιέχεται στην αρχή κάθε προγράμματος και περιλαμβάνει οδηγίες προς τον προεπεξεργαστή. 2. int main() To σημείο έναρξης κάθε προγράμματος. 3. { } Δηλώνονται οι εντολές που είναι στη main και πρέπει να εκτελεστούν 29

Βασικά Σημεία του Προγράμματος (2) 4. printf(), scanf() Βασικές συναρτήσεις εισόδου/εξόδου της βασικής βιβλιοθήκης της C 5. \n Ακολουθία διαφυγής για την αναπαράσταση δύσκολων χαρακτήρων (π.χ. \t, \b, \\) 6. %f 7. ; Δηλώνεται η φόρμα (format) εμφάνισης πραγματικών. Όλες οι δηλώσεις των C-προγραμμάτων τελειώνουν σε ; (semicolon), που δηλώνει τέλος εντολής. 30

Χρήση Σχολίων σε C #include <stdio.h> main() { // This line is comments // This line also. // All those lines are NOT executed. /* Everything here is comments. we can place not needed lines of code here a=a+4; */ printf( This program shows the use of comments \n ); } 31

Διαδικασία Μεταγλώττισης test.c Πηγαίος Κώδικας (source) ΜΕΤΑΓΛΩΤΤΙΣΤΗΣ C Object Κώδικας stdio.h Header Files test.o test ΣΥΝΔΕΤΗΣ (LINKER) printf Library Εκτελέσιμος Κώδικας 32

Στοιχεία Γλώσσας Προγραμματισμού Αλφάβητο - Οι χαρακτήρες από τους οποίους σχηματίζονται οι λέξεις της γλώσσας Λεξιλόγιο - Οι λέξεις που χρησιμοποιεί η γλώσσα Συντακτικό - Οι κανόνες σύνταξης των προτάσεων της γλώσσας Σημασιολογία - Οι κανόνες ερμηνείας των προτάσεων της γλώσσας 33

Αλφάβητο Αποτελείται από 96 χαρακτήρες -Χαρακτήρας κενού -Χαρακτήρας ελέγχου οριζοντίου στηλοθέτη (tab) -Χαρακτήρας ελέγχου καθέτου στηλοθέτη -Χαρακτήρας αλλαγής σελίδας (form feed) -Χαρακτήρας νέας γραμμής (new-line) a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 _ { } [ ] # ( ) < > % : ;.? * + - / ^ & ~ =!, \ 34

Λεξιλόγιο Κατηγορίες Λέξεων Δεσμευμένες λέξεις (reserved words) -Λέξεις κλειδιά (π.χ. int, if, for) -Ονόματα συναρτήσεων βιβλιοθήκης (π.χ. printf(), isdigit() ) -Ονόματα εντολών προεπεξεργαστή (π.χ. #include, #define) Αναγνωριστές (identifiers) - Ονόματα μεταβλητών, σταθερών, συναρτήσεων, τύπων δεδομένων, τα οποία δίνονται από τον προγραμματιστή Τελεστές (operators) - Ειδικά σύμβολα που παριστάνουν μία συγκεκριμένη στοιχειώδη διεργασία που εκτελείται σε δεδομένα 35

Keywords auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if static while Fig. 2.15 C s reserved keywords. CEID - Προγραμματισμός σε ANSI C 36

Κανόνες Δημιουργίας Αναγνωριστών (1) Αποτελούνται από γράμματα, αριθμούς και τον ειδικό χαρακτήρα _. Αρχίζουν πάντα από γράμμα ή _ Δεν μπορεί να είναι ίδια με κάποια δεσμευμένη λέξη (C ) Διάκριση μικρών και κεφαλαίων (case sensitive) Όριο μήκους (π.χ. 31, για ANSI C) Παραδείγματα 2class class1 Class-1 Class_1 Class#1 CLaSs1 37

Κανόνες Δημιουργίας Αναγνωριστών (2) Αποφύγετε ονόματα ενός χαρακτήρα όπως i, j,x, y. Χρησιμοποιείστε εκφραστικά ονόματα. Χρησιμοποιείστε μικρά γράμματα, για ονόματα μεταβλητών. Κατά κανόνα χρησιμοποιούμε κεφαλαία γράμματα για μακροεντολές Διατηρείστε ενιαίο κανόνα όσον αφορά το διαχωριστικό για μεταβλητές που αποτελούνται από 2 ή περισσότερες λέξεις. 38

Αναγνωριστές - Αναγνωσιμότητα x=20; If ( x > y ) function1( ); else function2( ); baros=20; If ( baros > max_baros ) ADD_baros( ); else DECREASE_baros( ); 39

Δεδομένα Είναι η είσοδος, η ακατέργαστη γνωστή πληροφορία, με την επεξεργασία της οποίας θα παραχθούν τα αποτελέσματα (η λύση του προβλήματος) Δεδομένα=τιμές ή πλειάδες τιμών που σχετίζονται με τις οντότητες του προβλήματος. 40

Δεδομένα Είσοδος Επεξεργασία Έξοδος Ενδιάμεσα Αποτελέσματα Πρόγραμμα Μνήμη 41

Μεταβλητές (1) Είναι υπολογιστικές οντότητες μέσω των οποίων χρησιμοποιούνται τα δεδομένα. Το περιεχόμενο (τιμή) μίας μεταβλητής μπορεί να μεταβάλλεται κατά τη διάρκεια εκτέλεσης ενός προγράμματος Η χρήση των μεταβλητών πηγάζει από την ανάγκη για - αποθήκευση δεδομένων - ανάκληση αποθηκευμένων δεδομένων 42

Μεταβλητές (2) Οι μεταβλητές αποτελούν αναφορά - σε μία θέση μνήμης - στο περιεχόμενο μίας θέσης μνήμης Χαρακτηριστικά μεταβλητής - το όνομά της (θέση μνήμης) - η τιμή της (περιεχόμενο) Οι μεταβλητές παριστάνουν οντότητες του προβλήματος που επιλύει το πρόγραμμα Π.χ. Πρόβλημα υπολογισμού της επιφάνειας ενός ορθογωνίου. Οντότητες: μήκος, πλάτος, εμβαδόν Μεταβλητές: mikos, platos, embadon 43

Σταθερές - Τιμές Σταθερές (constants) είναι υπολογιστικές οντότητες που έχουν σταθερή τιμή κατά την διάρκεια εκτέλεσης ενός προγράμματος (π.χ. PI για το 3.14) Τιμές (lirerals) είναι δεδομένα που δεν χρειάζονται αποθήκευση, χρησιμοποιούνται όπως είναι (π.χ. οι αριθμοί 2, 3.5) 44

Δήλωση Σταθερών #define <όνομα> <τιμή> #define TRUE 1 #define FALSE 0 #define JANUARY 1 #define PI 3.1453 45

Σταθερά Απαρίθμησης enum boolean { NO, YES}; enum boolean { TRUE, FALSE}; enum months { JAN=1, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC}; 1 46

Τύποι Δεδομένων Τα δεδομένα δεν έχουν όλα τις ίδιες ιδιότητες, δεν είναι όλα του ίδιου τύπου. Τύπος δεδομένων = πεδίο τιμών + τρόποι διαχείρισης = πεδίο τιμών + πράξεις Τύποι δεδομένων - βαθμωτοί ή ατομικοί ή πρωτογενείς (int, float, double, char) - συναθροιστικοί ή σύνθετοι (πίνακες, δείκτες, ενώσεις, δομές) (- ενσωματωμένοι - παραγόμενοι) 47

Πρωτογενείς Τύποι Δεδομένων Ακέραιος (int) Πραγματικός (float, double) Χαρακτήρας (char) Λογικός (η C δεν διαθέτει) 48

Γιατί τύποι δεδομένων; Οικονομία χώρου (λόγω διαφορετικής αποθήκευσης) Καλύτερος έλεγχος κατά τη μετάφραση και εκτέλεση του προγράμματος 49

Δήλωση Μεταβλητής <τύπος δεδομένων> <λίστα μεταβλητών>; ή <τύπος δεδομένων> <μεταβλητή>=<τιμή>; π.χ. float mikos, platos, embadon; int i=1; Μεταβλητές που δεν αλλάζουν τιμή (Σταθερές) π.χ. const float pi=3.14; 50

Βασικές Πράξεις Τελεστής ανάθεσης: x=3; Αριθμητικοί τελεστές (+, -, /, *, %) x=5+3; y=5*6; Διαφορά στην ερμηνεία του τελεστή διαίρεσης μεταξύ ακεραίων και πραγματικών τελεστέων. CEID - Προγραμματισμός σε ANSI C 51

Τύπος «ακέραιος» Αναπαράσταση ακεραίων, θετικών ή αρνητικών αριθμών Λέξη κλειδί: int Εύρος: εξαρτάται από το μήκος λέξης του Η/Υ, π.χ. για λέξη 16- bit: -32768 έως 32767 ή 0 έως 65335 Προσδιοριστές: short, long, unsigned O short έχει μήκος >=16 bit, ο long <=32 bit και ο int 16 ή 32 bits. Ακέραιες τιμές: τις χειρίζεται σαν ακεραίους αριθμούς ανάλογα με το μέγεθος, π.χ. την 125 την χειρίζεται σαν int, ενώ την 135840 σαν long int (μπορούμε όμως να επιβάλουμε τον τύπο χειρισμού, π.χ. 6524L) 52

Τύπος «πραγματικός» Αναπαράσταση πραγματικών αριθμών Εκφράσεις - Σταθερής υποδιαστολής: 120.52, 0.035 - Εκθετικής ή επιστημονικής μορφής: 1.2052e+02, 3.5e-2 Λέξεις κλειδιά - float: απλής ακρίβειας (6-7 δεκαδικά ψηφία) - double: διπλής ακρίβειας (14-15 δεκαδ. ψηφία) Προσδιοριστές: long για το double Πραγματικές τιμές: θεωρούνται σαν double π.χ. 0.13, 56.48, 8e-3, 15e05, 0.004e-0.4 53

Τύπος «χαρακτήρας» Αναπαράσταση απλών χαρακτήρων του αλφαβήτου της γλώσσας Λέξη κλειδί: char H C χειρίζεται τους χαρακτήρες σαν ακεραίους. Κάθε χαρακτήρας θεωρείται σαν ακέραιος με τιμή τον αντίστοιχο κωδικό ASCII (στο δεκαδικό σύστημα, π.χ. 0 και 48) Οι τιμές σε μία τέτοια μεταβλητή αποδίδονται όταν ο χαρακτήρας εμπεριέχεται σε. Για παράδειγμα: a είναι ο χαρακτήρας a b είναι ο χαρακτήρας b c είναι ο χαρακτήρας c 54

CEID - Προγραμματισμός σε ANSI C 55