SlideShare a Scribd company logo
1 of 14
Download to read offline
Αλγοριθμική και Δομές Δεδομένων
Μαθησιακά Αποτελέσματα / Γνώσεις
• Βασικές έννοιες της ανάλυσης και της σύνθεσης ενός
προβλήματος
• Κατανοήση της έννοιας του αλγορίθμου και αποκτήση
αλγοριθμικής σκέψης.
• Σχεδιασμός αλγορίθμων και την συγγραφή αποδοτικών
προγραμμάτων σε γλώσσα προγραμματισμού C
• Επιλογή κατάλληλων αλγοριθμικών δομών ανάλογα με το
πρόβλημα προς επίλυση
Λογική Ανάλυση Προβλήματος
 Ένας Η/Υ μπορεί να κάνει μόνο στοιχειώδεις πράξεις και να
παίρνει κάποιες μηχανικές αποφάσεις.
 Η λογική ανάλυση ενός προβλήματος είναι συχνά δύσκολη και
απαιτεί γνώσεις και ανθρώπινη ευφυΐα.
 Βήματα ανάλυσης ενός προβλήματος:
 Φραστική ∆ιατύπωση του Προβλήματος.
 Μαθηματική ∆ιατύπωση του Προβλήματος
 Αρχική Επίλυση του Προβλήματος.
 Αριθμητική Ανάλυση του Προβλήματος
 Προγραμματισμός και Χρήση του Η/Υ
 Λογικό ∆ιάγραμμα
 Επιλογή Γλώσσας
 Προγραμματισμός
 Εκτέλεση του Προγράμματος και Έλεγχος
Αλγόριθμοι
 Αλγόριθμος: Μέθοδος για την επίλυση ενός προβλήματος
 Σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε
πεπερασμένο χρόνο, που στοχεύουν στην επίλυση ενός
προβλήματος.
 Δεδομένα: Σύνολο από πληροφορίες που αποθηκεύονται στον
υπολογιστή για τη λύση ενός προβλήματος
 Δομή Δεδομένων: Μέθοδος αποθήκευσης και επεξεργασίας δεδομένων
 Προγράμματα = Αλγόριθμοι + Δομές Δεδομένων
 Παράδειγμα: Εύρεση ταχύτερης διαδρομής
Αλγόριθμοι
Εφαρμογές Αλγορίθμων:
• Ανάκτηση πληροφοριών: αναζήτηση, ευρετήρια, κατάταξη
• Ασφάλεια: ασφαλής μετάδοση δεδομένων, πιστοποίηση, ηλεκτρονικό εμπόριο
• Βιολογία: χαρτογράφηση ανθρώπινου γονιδιώματος, αναδίπλωση πρωτεϊνών
• Βιομηχανία: κατανομή πόρων, βελτιστοποίηση παραγωγής,
χρονοπρογραμματισμός
• Επικοινωνίες: κωδικοποίηση, συμπίεση, μετάδοση, επεξεργασία σημάτων
• Μεταφορές: συστήματα πλοήγησης, οργάνωση δρομολογίων, προσομοίωση
• Υπολογιστές: σχεδιασμός κυκλωμάτων, μεταγλωττιστές, γραφικά
Κριτήρια αλγορίθμων
Οι αλγόριθμοι θα πρέπει να πληρούν κάποια πρότυπα και να
διατυπώνονται με συγκεκριμένο τρόπο:
• Καθοριστικότητα
• Κάθε κανόνας του ορίζεται επακριβώς και η αντίστοιχη διεργασία είναι συγκεκριμένη.
Κάθε εντολή πρέπει να καθορίζεται χωρίς καμία αμφιβολία για τον τρόπο εκτέλεσής
της
• Περατότητα - Finiteness
• Κάθε εκτέλεση είναι πεπερασμένη, δηλαδή τελειώνει ύστερα από έναν πεπερασμένο
αριθμό διεργασιών ή βημάτων
• Αποτελεσματικότητα - Effectiveness
• Είναι μηχανιστικά αποτελεσματικός, δηλαδή όλες οι διαδικασίες που περιλαμβάνει
μπορούν να πραγματοποιηθούν με ακρίβεια και σε πεπερασμένο χρόνο "με μολύβι και
χαρτί"
• Είσοδος δεδομένων - Input
• Δυνατότητα εισαγωγής δεδομένων
• Έξοδος αποτελεσμάτων - Output
• Ο αλγόριθμος πρέπει να δημιουργεί τουλάχιστον μία τιμή (δεδομένων) ωςαποτέλεσμα
προς το χρήστη ή προς ένα άλλο αλγόριθμο.
Περιγραφή και αναπαράσταση
Βασικοί τρόποι αναπαράστασης ενός αλγορίθμου:
• Ελεύθερο κείμενο
• Διάγραμμα ροής
• Ψευδογλώσσα ή γλώσσα προγραμματισμού
Λογικό Διάγραμμα
• Περιγράφει έναν αλγόριθμο βολικά και παραστατικά με απλά
γεωμετρικά σχήματα:
• Ορθογώνιο παραλληλόγραμμο
(ενδιάμεση πράξη)
• Ρόμβος (απόφαση)
• Έλλειψη(Αρχή/Τέλος)
• Πλάγιο Παραλληλόγραμμο
(Είσοδος/Έξοδος Δεδομένων)
Γλώσσες Προγραμματισμού
Γλώσσα
προγραμματισμού C
• Dennis Ritchie, Bell Labs το 1972, για τις ανάγκες του UNIX
• Γλώσσα μέσου επιπέδου:
• Εμπεριέχει στοιχεία γλωσσών υψηλού επιπέδου (Cobol,
Pascal) και στοιχεία των γλωσσών χαμηλού επιπέδου
(Assembly)
• Έφερε τον προγραμματιστή πιο κοντά στο hardware σε σχέση
με τις υπόλοιπες γλώσσες υψηλου επιπέδου
• Ιδιαίτερα δημοφιλής
• Έχει χρησιμοποιηθεί για τον προγραμματισμό ευρέος φάσματος
συστημάτων και εφαρμογών
• Φιλοσοφία: Ο προγραμματιστής έχει τον πλήρη έλεγχο και
ευθύνεται για τα σφάλματά του
Μεταγλώττιση και εκτέλεση
προγραμμάτων
• Μεταγλωττιστής ή μεταφραστής (compiler): μετατρέπει/μεταφράζει
κείμενο γραμμένο σε μια γλώσσα προγραμματισμού σε μια άλλη
γλώσσα προγραμματισμού (τη γλώσσα στόχο)
• Πηγαίος κώδικας (source code): Κείμενο εισόδου
• Από γλώσσα υψηλού επιπέδου σε μια γλώσσα χαμηλότερου
επιπέδου
• Ο προγραμματιστής γράφει το προραμμα σε μία γλώσσα
προγραμματισμού (π.χ. C++) και στη συνέχεια μεταγλωτίζει (compile)
το πρόγραμμα
• Ο compiler μας ειδοποιεί για συντακτικά λάθη και αρνείται να
προχωρήσει εάν υπάρχουν.
• Κάποιες γλώσσες αντί για μεταγλωττιστή (compiler) έχουν διερμηνευτή
(interpreter). Εκτελείται εντολή-εντολή ο κώδικας σταματά σε λάθος
Μεταγλώττιση και εκτέλεση
προγραμμάτων
Είδη Λαθών Μεταγλώτισης
• Συντακτικά λάθη:
• Έχουμε γράψει με λάθος τρόπο κάποιες εντολές
• Λάθη χρόνου εκτέλεσης:
• Δίχως συντακτικά λάθη
• Το πρόγραμμα αυτό κολλάει ή δεν βγάζει αποτελέσμα, π.χ. εάν
γίνει διαίρεση με το μηδέν
• Λογικά λάθη:
• Δίχως συντακτικά λάθη
• Εμφανίζει αποτελέσματα
• Λανθασμένα αποτελέσματα
• Δύσκολο να ανακαλυφθούν και να διορθωθούν.
• Σχεδόν όλα τα προγράμματα έχουν λάθη (bugs), τα οποία τα
διορθώνουμε με επανέλεγχο και αποσφαλμάτωση του κώδικα
(debuging)
Μεταγλώττιση και εκτέλεση
προγραμμάτων
Πρώτο Πρόγραμμα
Δεύτερο Πρόγραμμα

More Related Content

Similar to C_27102023.pdf

επαναληψη κεφ 1
επαναληψη κεφ 1επαναληψη κεφ 1
επαναληψη κεφ 1mnikol
 
ενότητα 2
ενότητα 2 ενότητα 2
ενότητα 2 tryfonid
 
Pliroforiki
PliroforikiPliroforiki
Pliroforikipapettas
 
Εφαρμογές Ανοιχτού Κώδικα για τη Διδασκαλία Προγραμματισμού με την LOGO
Εφαρμογές Ανοιχτού Κώδικα για τη Διδασκαλία Προγραμματισμού με την LOGOΕφαρμογές Ανοιχτού Κώδικα για τη Διδασκαλία Προγραμματισμού με την LOGO
Εφαρμογές Ανοιχτού Κώδικα για τη Διδασκαλία Προγραμματισμού με την LOGOIraklis Markelis
 
κεφάλαιο 02 anaptixi-2
κεφάλαιο 02 anaptixi-2κεφάλαιο 02 anaptixi-2
κεφάλαιο 02 anaptixi-2evaplyta
 
Python. 1 1 σχεδίαση και συγγραφή κώδικα
Python. 1 1 σχεδίαση και συγγραφή κώδικαPython. 1 1 σχεδίαση και συγγραφή κώδικα
Python. 1 1 σχεδίαση και συγγραφή κώδικαΙωάννου Γιαννάκης
 
κεφ 6 ανάπτυξη εφαρμογών
κεφ 6 ανάπτυξη εφαρμογώνκεφ 6 ανάπτυξη εφαρμογών
κεφ 6 ανάπτυξη εφαρμογώνakarathanos
 
Πρόβλημα-->Αλγόριθμος-->Πρόγραμμα
Πρόβλημα-->Αλγόριθμος-->ΠρόγραμμαΠρόβλημα-->Αλγόριθμος-->Πρόγραμμα
Πρόβλημα-->Αλγόριθμος-->Πρόγραμμαxristiana georgous
 
Kef10 a synartiseis
Kef10 a synartiseisKef10 a synartiseis
Kef10 a synartiseismnikol
 
γλώσσες εργαλεία προγραμματισμού
γλώσσες εργαλεία προγραμματισμούγλώσσες εργαλεία προγραμματισμού
γλώσσες εργαλεία προγραμματισμούkmag388
 
κεφάλαιο 6
κεφάλαιο 6κεφάλαιο 6
κεφάλαιο 6sotiriasa
 
Σημειώσεις Logo με ασκήσεις και θέματα θεωρίας
Σημειώσεις Logo με ασκήσεις και θέματα θεωρίαςΣημειώσεις Logo με ασκήσεις και θέματα θεωρίας
Σημειώσεις Logo με ασκήσεις και θέματα θεωρίαςDimitra Adamidou
 
Αλγόριθμος- Πρόγραμμα
Αλγόριθμος- ΠρόγραμμαΑλγόριθμος- Πρόγραμμα
Αλγόριθμος- ΠρόγραμμαIliopoulou Anthi
 
Η γλώσσα προγραμματισμού Clipper.
Η γλώσσα προγραμματισμού Clipper.Η γλώσσα προγραμματισμού Clipper.
Η γλώσσα προγραμματισμού Clipper.Stathis Gourzis
 

Similar to C_27102023.pdf (20)

επαναληψη κεφ 1
επαναληψη κεφ 1επαναληψη κεφ 1
επαναληψη κεφ 1
 
ενότητα 2
ενότητα 2 ενότητα 2
ενότητα 2
 
Pliroforiki
PliroforikiPliroforiki
Pliroforiki
 
Πληροφορική
ΠληροφορικήΠληροφορική
Πληροφορική
 
Εφαρμογές Ανοιχτού Κώδικα για τη Διδασκαλία Προγραμματισμού με την LOGO
Εφαρμογές Ανοιχτού Κώδικα για τη Διδασκαλία Προγραμματισμού με την LOGOΕφαρμογές Ανοιχτού Κώδικα για τη Διδασκαλία Προγραμματισμού με την LOGO
Εφαρμογές Ανοιχτού Κώδικα για τη Διδασκαλία Προγραμματισμού με την LOGO
 
κεφάλαιο 02 anaptixi-2
κεφάλαιο 02 anaptixi-2κεφάλαιο 02 anaptixi-2
κεφάλαιο 02 anaptixi-2
 
Python. 1 1 σχεδίαση και συγγραφή κώδικα
Python. 1 1 σχεδίαση και συγγραφή κώδικαPython. 1 1 σχεδίαση και συγγραφή κώδικα
Python. 1 1 σχεδίαση και συγγραφή κώδικα
 
κεφ 6 ανάπτυξη εφαρμογών
κεφ 6 ανάπτυξη εφαρμογώνκεφ 6 ανάπτυξη εφαρμογών
κεφ 6 ανάπτυξη εφαρμογών
 
Εισαγωγή σε C# και .ΝΕΤ
Εισαγωγή σε C# και .ΝΕΤΕισαγωγή σε C# και .ΝΕΤ
Εισαγωγή σε C# και .ΝΕΤ
 
Πρόβλημα-->Αλγόριθμος-->Πρόγραμμα
Πρόβλημα-->Αλγόριθμος-->ΠρόγραμμαΠρόβλημα-->Αλγόριθμος-->Πρόγραμμα
Πρόβλημα-->Αλγόριθμος-->Πρόγραμμα
 
Kef10 a synartiseis
Kef10 a synartiseisKef10 a synartiseis
Kef10 a synartiseis
 
γλώσσες εργαλεία προγραμματισμού
γλώσσες εργαλεία προγραμματισμούγλώσσες εργαλεία προγραμματισμού
γλώσσες εργαλεία προγραμματισμού
 
SE4
SE4SE4
SE4
 
Κεφ. 10 Υποπρογράμματα
Κεφ. 10 ΥποπρογράμματαΚεφ. 10 Υποπρογράμματα
Κεφ. 10 Υποπρογράμματα
 
κεφάλαιο 6
κεφάλαιο 6κεφάλαιο 6
κεφάλαιο 6
 
Σημειώσεις Logo με ασκήσεις και θέματα θεωρίας
Σημειώσεις Logo με ασκήσεις και θέματα θεωρίαςΣημειώσεις Logo με ασκήσεις και θέματα θεωρίας
Σημειώσεις Logo με ασκήσεις και θέματα θεωρίας
 
4 - Computer Software
4 - Computer Software4 - Computer Software
4 - Computer Software
 
Αλγόριθμος- Πρόγραμμα
Αλγόριθμος- ΠρόγραμμαΑλγόριθμος- Πρόγραμμα
Αλγόριθμος- Πρόγραμμα
 
Η γλώσσα προγραμματισμού Clipper.
Η γλώσσα προγραμματισμού Clipper.Η γλώσσα προγραμματισμού Clipper.
Η γλώσσα προγραμματισμού Clipper.
 
Thessaloniki rb-24
Thessaloniki rb-24Thessaloniki rb-24
Thessaloniki rb-24
 

C_27102023.pdf

  • 1. Αλγοριθμική και Δομές Δεδομένων Μαθησιακά Αποτελέσματα / Γνώσεις • Βασικές έννοιες της ανάλυσης και της σύνθεσης ενός προβλήματος • Κατανοήση της έννοιας του αλγορίθμου και αποκτήση αλγοριθμικής σκέψης. • Σχεδιασμός αλγορίθμων και την συγγραφή αποδοτικών προγραμμάτων σε γλώσσα προγραμματισμού C • Επιλογή κατάλληλων αλγοριθμικών δομών ανάλογα με το πρόβλημα προς επίλυση
  • 2. Λογική Ανάλυση Προβλήματος  Ένας Η/Υ μπορεί να κάνει μόνο στοιχειώδεις πράξεις και να παίρνει κάποιες μηχανικές αποφάσεις.  Η λογική ανάλυση ενός προβλήματος είναι συχνά δύσκολη και απαιτεί γνώσεις και ανθρώπινη ευφυΐα.  Βήματα ανάλυσης ενός προβλήματος:  Φραστική ∆ιατύπωση του Προβλήματος.  Μαθηματική ∆ιατύπωση του Προβλήματος  Αρχική Επίλυση του Προβλήματος.  Αριθμητική Ανάλυση του Προβλήματος  Προγραμματισμός και Χρήση του Η/Υ  Λογικό ∆ιάγραμμα  Επιλογή Γλώσσας  Προγραμματισμός  Εκτέλεση του Προγράμματος και Έλεγχος
  • 3. Αλγόριθμοι  Αλγόριθμος: Μέθοδος για την επίλυση ενός προβλήματος  Σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο χρόνο, που στοχεύουν στην επίλυση ενός προβλήματος.  Δεδομένα: Σύνολο από πληροφορίες που αποθηκεύονται στον υπολογιστή για τη λύση ενός προβλήματος  Δομή Δεδομένων: Μέθοδος αποθήκευσης και επεξεργασίας δεδομένων  Προγράμματα = Αλγόριθμοι + Δομές Δεδομένων  Παράδειγμα: Εύρεση ταχύτερης διαδρομής
  • 4. Αλγόριθμοι Εφαρμογές Αλγορίθμων: • Ανάκτηση πληροφοριών: αναζήτηση, ευρετήρια, κατάταξη • Ασφάλεια: ασφαλής μετάδοση δεδομένων, πιστοποίηση, ηλεκτρονικό εμπόριο • Βιολογία: χαρτογράφηση ανθρώπινου γονιδιώματος, αναδίπλωση πρωτεϊνών • Βιομηχανία: κατανομή πόρων, βελτιστοποίηση παραγωγής, χρονοπρογραμματισμός • Επικοινωνίες: κωδικοποίηση, συμπίεση, μετάδοση, επεξεργασία σημάτων • Μεταφορές: συστήματα πλοήγησης, οργάνωση δρομολογίων, προσομοίωση • Υπολογιστές: σχεδιασμός κυκλωμάτων, μεταγλωττιστές, γραφικά
  • 5. Κριτήρια αλγορίθμων Οι αλγόριθμοι θα πρέπει να πληρούν κάποια πρότυπα και να διατυπώνονται με συγκεκριμένο τρόπο: • Καθοριστικότητα • Κάθε κανόνας του ορίζεται επακριβώς και η αντίστοιχη διεργασία είναι συγκεκριμένη. Κάθε εντολή πρέπει να καθορίζεται χωρίς καμία αμφιβολία για τον τρόπο εκτέλεσής της • Περατότητα - Finiteness • Κάθε εκτέλεση είναι πεπερασμένη, δηλαδή τελειώνει ύστερα από έναν πεπερασμένο αριθμό διεργασιών ή βημάτων • Αποτελεσματικότητα - Effectiveness • Είναι μηχανιστικά αποτελεσματικός, δηλαδή όλες οι διαδικασίες που περιλαμβάνει μπορούν να πραγματοποιηθούν με ακρίβεια και σε πεπερασμένο χρόνο "με μολύβι και χαρτί" • Είσοδος δεδομένων - Input • Δυνατότητα εισαγωγής δεδομένων • Έξοδος αποτελεσμάτων - Output • Ο αλγόριθμος πρέπει να δημιουργεί τουλάχιστον μία τιμή (δεδομένων) ωςαποτέλεσμα προς το χρήστη ή προς ένα άλλο αλγόριθμο.
  • 6. Περιγραφή και αναπαράσταση Βασικοί τρόποι αναπαράστασης ενός αλγορίθμου: • Ελεύθερο κείμενο • Διάγραμμα ροής • Ψευδογλώσσα ή γλώσσα προγραμματισμού
  • 7. Λογικό Διάγραμμα • Περιγράφει έναν αλγόριθμο βολικά και παραστατικά με απλά γεωμετρικά σχήματα: • Ορθογώνιο παραλληλόγραμμο (ενδιάμεση πράξη) • Ρόμβος (απόφαση) • Έλλειψη(Αρχή/Τέλος) • Πλάγιο Παραλληλόγραμμο (Είσοδος/Έξοδος Δεδομένων)
  • 9. Γλώσσα προγραμματισμού C • Dennis Ritchie, Bell Labs το 1972, για τις ανάγκες του UNIX • Γλώσσα μέσου επιπέδου: • Εμπεριέχει στοιχεία γλωσσών υψηλού επιπέδου (Cobol, Pascal) και στοιχεία των γλωσσών χαμηλού επιπέδου (Assembly) • Έφερε τον προγραμματιστή πιο κοντά στο hardware σε σχέση με τις υπόλοιπες γλώσσες υψηλου επιπέδου • Ιδιαίτερα δημοφιλής • Έχει χρησιμοποιηθεί για τον προγραμματισμό ευρέος φάσματος συστημάτων και εφαρμογών • Φιλοσοφία: Ο προγραμματιστής έχει τον πλήρη έλεγχο και ευθύνεται για τα σφάλματά του
  • 10. Μεταγλώττιση και εκτέλεση προγραμμάτων • Μεταγλωττιστής ή μεταφραστής (compiler): μετατρέπει/μεταφράζει κείμενο γραμμένο σε μια γλώσσα προγραμματισμού σε μια άλλη γλώσσα προγραμματισμού (τη γλώσσα στόχο) • Πηγαίος κώδικας (source code): Κείμενο εισόδου • Από γλώσσα υψηλού επιπέδου σε μια γλώσσα χαμηλότερου επιπέδου • Ο προγραμματιστής γράφει το προραμμα σε μία γλώσσα προγραμματισμού (π.χ. C++) και στη συνέχεια μεταγλωτίζει (compile) το πρόγραμμα • Ο compiler μας ειδοποιεί για συντακτικά λάθη και αρνείται να προχωρήσει εάν υπάρχουν. • Κάποιες γλώσσες αντί για μεταγλωττιστή (compiler) έχουν διερμηνευτή (interpreter). Εκτελείται εντολή-εντολή ο κώδικας σταματά σε λάθος
  • 11. Μεταγλώττιση και εκτέλεση προγραμμάτων Είδη Λαθών Μεταγλώτισης • Συντακτικά λάθη: • Έχουμε γράψει με λάθος τρόπο κάποιες εντολές • Λάθη χρόνου εκτέλεσης: • Δίχως συντακτικά λάθη • Το πρόγραμμα αυτό κολλάει ή δεν βγάζει αποτελέσμα, π.χ. εάν γίνει διαίρεση με το μηδέν • Λογικά λάθη: • Δίχως συντακτικά λάθη • Εμφανίζει αποτελέσματα • Λανθασμένα αποτελέσματα • Δύσκολο να ανακαλυφθούν και να διορθωθούν. • Σχεδόν όλα τα προγράμματα έχουν λάθη (bugs), τα οποία τα διορθώνουμε με επανέλεγχο και αποσφαλμάτωση του κώδικα (debuging)