Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 1: Εισαγωγή στη C - Αλγόριθμοι Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε.
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο TEI Δυτικής Μακεδονίας και την Ανώτατη Εκκλησιαστική Ακαδημία Θεσσαλονίκης» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3
Σκοποί ενότητας Να κατανοήσει ο φοιτητής τις έννοιες της αλγοριθμικής σκέψης. Τη διαδικασία μετατροπής ενός προγράμματος σε γλώσσα μηχανής. Τη συγγραφή και ανάλυση ενός απλού προγράμματος στη γλώσσα προγραμματισμού C. 4
Περιεχόμενα ενότητας Εισαγωγή στη γλώσσα προγραμματισμού C. Αλγόριθμος. Ψευδοκώδικας. Λογικό διάγραμμα. Συγγραφή ενός προγράμματος στη C. 5
Εισαγωγή Η γλώσσα προγραμματισμού C είναι μια γλώσσα υψηλού επιπέδου και δημιουργήθηκε από τον Dennis Richie στις αρχές του 1970 στα εργαστήρια Bell. Αποτελεί εξέλιξη μιας παλαιότερης γλώσσας προγραμματισμού της Β, γι αυτό και ο δημιουργός της την ονόμασε C. Η C έχει συνδέσει το όνομά της με το λειτουργικό σύστημα UNIX, καθώς για πολλά χρόνια συνόδευε το Λειτουργικό Σύστημα UNIX. 6
Πλεονεκτήματα της C (1) Δίνει ελευθερία στον προγραμματιστή να εφαρμόσει το προσωπικό του στυλ και να εκμεταλλευτεί όλες τις δυνατότητες του υπολογιστή. Η C έχει δομές ελέγχου για να μπορούμε να κάνουμε επαναληπτικές εργασίες και για εύκολη επιλογή εναλλακτικών τρόπων δράσης. Είναι μια ευέλικτη γλώσσα προγραμματισμού υψηλού επιπέδου που μπορεί να χρησιμοποιηθεί για την ανάπτυξη σύνθετων εφαρμογών παρότι έχει χαρακτηριστικά που έχουν γλώσσες χαμηλού επιπέδου. 7
Πλεονεκτήματα της C (2) Έχει λίγες αλλά ισχυρά δομημένες εντολές. Ένα πρόγραμμα C υποστηρίζει το δομημένο προγραμματισμό και εκτελείται γρήγορα. Ο C μεταγλωττιστής παρέχει έτοιμες συναρτήσεις και επιβάλλει τη διάσπαση του προγράμματος σε αυτοδύναμες ενότητες. 8
Πλεονεκτήματα της C (3) Είναι δημοφιλής γλώσσα και υπάρχουν αρκετοί μεταγλωττιστές σε όλα σχεδόν τα λειτουργικά συστήματα. Δε δημιουργήθηκε για την εκμάθηση του προγραμματισμού, αλλά ως προγραμματιστικό εργαλείο και αποτελεί βάση για τη C++ και τη Java. 9
Μειονεκτήματα της C (1) Οι λίγες εντολές που διαθέτει η C σε συνδυασμό με τον πλούτο των τελεστών που έχει, έχει σαν αποτέλεσμα τη δημιουργία προγραμμάτων που είναι τόσο δυσανάγνωστα, ώστε να είναι δύσκολο να τα κατανοήσει κάποιος με την πρώτη ματιά. H C, απαιτεί από τον προγραμματιστή μια αυξημένη επαγρύπνηση και υπευθυνότητα. 10
Μειονεκτήματα της C (2) Συχνά είναι πολύ δύσκολο να ανιχνευθούν τα λογικά λάθη σ ένα πρόγραμμα της C. Η C έχει τελικά τόσες πολλές δυνατότητες έκφρασης, ώστε να χρειαστεί πολύς καιρός για να μπορεί να πει κανείς με βεβαιότητα ότι την έμαθε καλά. Δεν είναι αντικειμενοστρεφής γλώσσα προγραμματισμού. 11
Αλγόριθμος (1) Αλγόριθμος καλείται η διαδοχική σειρά ορισμένου πλήθους λογικών βημάτων τα οποία απαιτούνται για την επίλυση ενός προβλήματος. Είναι μια μέθοδος για την επίλυση ενός προβλήματος. Κάθε ενέργεια ή βήμα του αλγόριθμου λέγεται εντολή. Κάθε εντολή πρέπει να είναι κατανοητή από εκείνον που θα εκτελέσει τον αλγόριθμο. 12
Αλγόριθμος (2) Ο αλγόριθμος για κάθε πρόβλημα θα πρέπει να είναι κατανοητός και από άλλους και από εμάς όταν μετά από καιρό θέλουμε να θυμηθούμε ή να τροποποιήσουμε τον αλγόριθμό μας. Απαραίτητο είναι να γίνει τυποποίηση του τρόπου με τον οποίο κάθε φορά θα αναπαρίστανται οι αλγόριθμοι που σχεδιάζουμε. 13
Αναπαράσταση αλγορίθμων Σκοπός ενός αλγορίθμου είναι να εκφράσει την διαδικασία επίλυσης ενός προβλήματος με τρόπο κατανοητό και κατάλληλο για κωδικοποίηση σε μια γλώσσα προγραμματισμού. Οι κυριότεροι τρόποι αναπαράστασης ενός αλγορίθμου είναι ο ψευδοκώδικας και το λογικό διάγραμμα (flow chart). 14
Ψευδοκώδικας Ψευδοκώδικας είναι εργαλείο που χρησιμοποιείται από προγραμματιστές, κυρίως στα αρχικά στάδια της σχεδίασης και κατασκευής ενός προγράμματος. Με τον ψευδοκώδικα, τα βήματα μιας λύσης ή η μορφή ενός αλγορίθμου περιγράφονται με σύντομες και περιεκτικές προτάσεις που όμως υπακούουν σε μια τυποποίηση που πλησιάζει την τυποποίηση μιας γλώσσας προγραμματισμού. 15
Παράδειγμα ψευδοκώδικα (1) Δίδονται όνομα, επώνυμο μαθητή, δικαιολογημένες και αδικαιολόγητες απουσίες. Ο μαθητής προάγεται όταν το σύνολο των δικαιολογημένων και αδικαιολόγητων απουσιών είναι μικρότερο από 100. Να γραφεί ο ψευδοκώδικας. 16
Παράδειγμα ψευδοκώδικα (2) Αρχή Διάβασε τα δεδομένα: Όνομα μαθητή, επώνυμο, Αριθμός Δικαιολογημένων Απουσιών (Αρ. Δικ. Απ) και Αριθμός Αδικαιολόγητων Απουσιών (Αρ. Αδικ. Απ). Άθροισμα Απ=Δικ+Αδικ. Αν (Άθροισμα Απ)<=100 Τότε εμφάνισε «Προάγεται» Διαφορετικά εμφάνισε «Δεν Προάγεται» 17
Λογικό Διάγραμμα Λογικό Διάγραμμα είναι ο τρόπος αναπαράστασης του αλγορίθμου που χρησιμοποιεί απλά σχήματα που υποστηρίζονται με απλές λέξεις για την αναπαράσταση συγκεκριμένων λειτουργιών. Τα σχήματα είναι ενωμένα με γραμμές και με βέλη κατεύθυνσης. 18
Σύμβολα Λογικού διαγράμματος (1) Αρχή/ ή τέλος Προγράμματος Σχήμα 1. Αρχή / ή τέλος προγράμματος, πηγή: Διδάσκων, 2014. 19
Σύμβολα Λογικού διαγράμματος (2) Σύμβολο Επεξεργασίας Σχήμα 2. Σύμβολο επεξεργασίας, πηγή: Διδάσκων, 2014. 20
Σύμβολα Λογικού διαγράμματος (3) Είσοδος ή Έξοδος Σχήμα 3. Είσοδος ή έξοδος, πηγή: Διδάσκων, 2014. 21
Σύμβολα Λογικού διαγράμματος Έλεγχος (4) Σχήμα 4. Έλεγχος, πηγή: Διδάσκων, 2014. 22
Συγγραφή ενός προγράμματος C (1) Για να γράψουμε ένα πρόγραμμα C απαιτούνται: Ένας text editor για να γράψουμε το πρόγραμμα. Ο μεταγλωττιστής της C που θα μεταφράσει το πρόγραμμα σε κώδικα μηχανής και ο οποίος αποτελείται από τον preprocessor και τον compiler. O preprocessor παράγει ενδιάμεσα αρχεία από τα οποία ο compiler παράγει αρχεία με κώδικα μηχανής. 23
Συγγραφή ενός προγράμματος C (2) Ο linker που συνδέει τον κώδικα μηχανής του προγράμματος με κώδικα που υπάρχει σε βιβλιοθήκες και παράγει το εκτελέσιμο αρχείο. Στα περισσότερα λειτουργικά συστήματα δεν είναι απαραίτητο να ασχοληθούμε με τη διαδικασία αυτή καθώς υπάρχει κάποιο πρόγραμμα που την αναλαμβάνει. 24
Δημιουργία προγράμματος σε C Σχήμα 5. Δημιουργία προγράμματος σε C, πηγή: Διδάσκων, 2014. 25
Το πρώτο πρόγραμμα στη C 26
Βιβλιογραφία μαθήματος Kernighan, B. & Ritchie D. (1990). H Γλώσσα Προγραμματισμού C, Κλειδάριθμος, Αθήνα. Καρολίδης Δ. (2013). Μαθαίνετε εύκολα C. ISBN 978-960- 93-5034-1. Τσελίκης Γ. & Τσελίκας, Ν. (2012).C Από τη θεωρία στην Εφαρμογή (β Έκδοση). ISBN: 978-960-93-1961-4. Χατζηγιαννάκης, Ν. (2012). Η γλώσσα C σε βάθος. Κλειδάριθμος, Αθήνα. 27
Τέλος Ενότητας