Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

ΜΑΘ 3122/106 – Εισαγωγή στους ΗΥΞενοφών Ζαμπούλης ΜΑΘ-3122/106 Προγραμματισμός Αλγόριθμοι και Προγράμματα.

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "ΜΑΘ 3122/106 – Εισαγωγή στους ΗΥΞενοφών Ζαμπούλης ΜΑΘ-3122/106 Προγραμματισμός Αλγόριθμοι και Προγράμματα."— Μεταγράφημα παρουσίασης:

1 ΜΑΘ 3122/106 – Εισαγωγή στους ΗΥΞενοφών Ζαμπούλης ΜΑΘ-3122/106 Προγραμματισμός Αλγόριθμοι και Προγράμματα

2 ΜΑΘ 3122/106- Εισαγωγή στους ΗΥ Ξενοφών Ζαμπούλης 2 Οργάνωση ενός ΗΥ

3 ΜΑΘ 3122/106- Εισαγωγή στους ΗΥ Ξενοφών Ζαμπούλης 3 Αλγόριθμοι Μια ακολουθία από βήματα/ενέργειες που είναι: – Καλώς (σαφώς) ορισμένα – Αποτελεσματικά (μπορούν να εκτελεστούν) – Συνήθως πεπερασμένα (τερματισμός) – Συνήθως δέχονται δεδομένα Παραδείγματα αλγορίθμων – Υπολογισμού ημερομηνίας Πάσχα – Υπολογισμός ριζών – Πολ/σμός – Αντιστροφής πινάκων – Αναζήτησης και Ταξινόμησης – Εύρεσης συντομότερου μονοπατιού – Πρόβλεψης – Ανάλυσης ιατρικών εικόνων – Δρομολόγησης πακέτων στο internet

4 ΜΑΘ 3122/106- Εισαγωγή στους ΗΥ Ξενοφών Ζαμπούλης 4 Αλγόριθμοι Απαιτήσεις - Πρόβλημα – Προδιαγραφές Σχεδίαση - Ορθότητα Πολυπλοκότητα (με βάση το μέγεθος των δεδομένων Ν) (προαιρετική για το μάθημα μας) – Υπολογιστικό Κόστος – Κόστος σε Μνήμη Βελτιστοποίηση (προαιρετική για το μάθημα μας) Υλοποίηση

5 ΜΑΘ 3122/106- Εισαγωγή στους ΗΥ Ξενοφών Ζαμπούλης 5 Αλγόριθμοι Απαιτήσεις - Πρόβλημα – Προδιαγραφές – Υπολογίστε το άθροισμα …+Ν Σχεδίαση (Υπολογίζω κανονικά το άθροισμα ξεκινώντας από το 1) Σ = 0 //άθροισμα Για κ=1 … Ν //μετρητής Σ = Σ + κ Ορθότητα Πολυπλοκότητα – Υπολογιστικό Κόστος, 2*Ν -> Ο(Ν) – Κόστος σε Μνήμη, 2 -> Ο(1) Βελτιστοποίηση: Σ = Ν*(Ν+1) / 2 – Πολυπλοκότητα Υπολογιστικό Κόστος, 3 -> Ο(1) Κόστος σε Μνήμη, 1 -> Ο(1)

6 ΜΑΘ 3122/106- Εισαγωγή στους ΗΥ Ξενοφών Ζαμπούλης 6 Αλγόριθμοι Απαιτήσεις - Πρόβλημα – Προδιαγραφές – Ταξινομήστε Ν φυσικούς, (μικρότεροι από το 1000) α[1], α[2], …, α[Ν] < 1000 Σχεδίαση – Ορθότητα (Βρίσκω το μικρότερο, μετά τον αμέσως επόμενο, …) Για κ=1 … Ν Για λ=κ+1 … Ν Αν α[λ] > α[κ] άλλαξε τη θέση των α[κ], α[λ] Πολυπλοκότητα – Υπολογιστικό Κόστος:Τ(Ν) = Τ(Ν-1)+Ν =>Τ(Ν)= Ν*(Ν+1)/2 -> Ο(Ν 2 ) – Κόστος σε Μνήμη, 2 -> Ο(1) 1 N 2

7 ΜΑΘ 3122/106- Εισαγωγή στους ΗΥ Ξενοφών Ζαμπούλης 7 Αλγόριθμοι Απαιτήσεις - Πρόβλημα – Προδιαγραφές – Ταξινομήστε Ν φυσικούς, (μικρότεροι από το 1000) α[1], α[2], …, α[Ν] < 1000 Βελτιστοποίηση: Για κ=1 … 1000 h[k] = 0 Για κ=1 … Ν h[a[k]] = h[a[k]]+1 μ = 1 Για κ=1 …1000 Για λ=1 …h[k] a[μ] = κ μ = μ+1 – Πολυπλοκότητα Υπολογιστικό Κόστος: Ν *Ν -> Ο(Ν) Κόστος σε Μνήμη, > Ο(1) N

8 ΜΑΘ 3122/106- Εισαγωγή στους ΗΥ Ξενοφών Ζαμπούλης 8 Προγραμματισμός και Αλγόριθμοι Πρόγραμμα = Αλγόριθμος σε μια συγκεκριμένη γλώσσα υπολογιστή Γλώσσα Μηχανής: η μόνη γλώσσα που πραγματικά καταλαβαίνει ο υπολογιστής Άλλες γλώσσες υπολογιστών ≠ γλώσσα προγραμματισμού Γλώσσες Προγραμματισμού – Χαμηλού επιπέδου, πιο κοντά στη γλώσσα μηχανής – Μεσαίου – Υψηλού, πιο κοντά στην καθομιλουμένη Η επιλογή της γλώσσας προγραμματισμού εξαρτάται από την εφαρμογή Συνήθως το πρόγραμμα γράφεται «ευκολότερα» (είναι πιο σύντομο) στις Υψηλού επιπέδου γλώσσες όμως εκτελείται με μικρότερη ταχύτητα σε σύγκριση με μια χαμηλού επιπέδου υλοποίηση. – Πολλά όμως εξαρτώνται και από τον προγραμματιστή.

9 ΜΑΘ 3122/106- Εισαγωγή στους ΗΥ Ξενοφών Ζαμπούλης 9 Οικογένειες Γλωσσών Προγραμματισμού Δύσκολη η ταξινόμηση Ένα «παράδειγμα» γλωσσών παρέχει την άποψη που έχει ο προγραμματιστής για το πρόγραμμα. Μερικές σημαντικές κλάσεις: Διαδικαστικές (Procedural) : C, Pascal, Fortran – Παραδοσιακός τρόπος προγραμματισμού – Σειρά εντολών - ρουτίνες Συναρτησιακές (Functional) : Lisp, Mathematica – Σειρά εντολών – Οι συναρτήσεις – συμβολισμοί είναι αντίστοιχοι με τα μαθηματικά Δηλωτικές (Declarative) : Prolog, XML – Αποτελούνται από σειρά ορισμούς και δηλώσεις – Λογικός Προγραμματισμός (Logic Programming) – Προγραμματισμός με βάση Περιορισμούς (Constraint Programming) Αντικειμενοστραφής Προγραμματισμός Παράλληλος Προγραμματισμός Διαδικτυακός Προγραμματισμός

10 ΜΑΘ 3122/106- Εισαγωγή στους ΗΥ Ξενοφών Ζαμπούλης 10 Προγράμματα σε C Εντολές και Δεδομένα Εντολές – Μια σειρά από εντολές προς τον επεξεργαστή – Αποθηκεύονται στη μνήμη του υπολογιστή Δεδομένα – Διαβάζουμε από τη μνήμη του υπολογιστή – Αποθηκεύονται (γράφονται) στη μνήμη του υπολογιστή Οι εντολές πρέπει να έχουν μια λογική αλληλουχία Και να ακολουθούν κάποια βήματα Αλγόριθμοι …

11 ΜΑΘ 3122/106- Εισαγωγή στους ΗΥ Ξενοφών Ζαμπούλης 11 Οργάνωση ενός ΗΥ RAM Disk Main Secondary

12 ΜΑΘ 3122/106- Εισαγωγή στους ΗΥ Ξενοφών Ζαμπούλης 12 Πρώτο Παράδειγμα /*Filename: 00-my_first_program.c Author: X. Zabulis Date: 14/03/07 Function: Prints the following string of characters: ‘Hello world!’ */ #include int main() { printf(“Hello world!\n”); return 0; }

13 ΜΑΘ 3122/106- Εισαγωγή στους ΗΥ Ξενοφών Ζαμπούλης 13 Γενική Δομή Λίστα από συναρτήσεις Συνάρτηση Τύπος-επιστρεφόμενης-τιμής όνομα(λίστα-παραμέτρων) { δηλώσεις μεταβλητών λίστα εντολών } /*Επιστρέφει το μέγιστο μεταξύ των x, y*/ int max(int x,int y) { int z = x; /*δηλώσεις μεταβλητών*/ if (y > x) /*λίστα εντολών*/ z = y; return z; }

14 ΜΑΘ 3122/106- Εισαγωγή στους ΗΥ Ξενοφών Ζαμπούλης 14 Δημιουργία Προγράμματος Αλγόριθμος (π.χ. Bubble Sort) | Γλώσσα Προγραμματισμού (BubbleSort.c) | compiler Ενδιάμεσος Κώδικας (object code) (BubbleSort.o) | linker Εκτελέσιμο (Executable) (BubbleSort.exe) >gcc –Wall -g BubbleSort.c >./a.out

15 ΜΑΘ 3122/106- Εισαγωγή στους ΗΥ Ξενοφών Ζαμπούλης 15 Δημιουργία Προγράμματος Αλγόριθμος | Γλώσσα Προγραμματισμού | Συντακτικά Λάθη Ενδιάμεσος Κώδικας (object code) | Λάθη Συμβόλων Εκτελέσιμο (Executable) Λογικά Λάθη Run Time Errors

16 ΜΑΘ 3122/106- Εισαγωγή στους ΗΥ Ξενοφών Ζαμπούλης 16 Ακολουθία «τρεξίματος»: Φόρτωμα του κώδικα στη μνήμη Δέσμευση μνήμης για (καθολικές) μεταβλητές Εκτέλεση της συνάρτησης main ! Κι οι τοπικές μεταβλητές; – Δέσμευση μνήμης ανάλογα με την ροή του προγράμματος: κάθε συνάρτηση δεσμεύει όση μνήμη χρειάζεται την ώρα που τρέχει – Not enough memory: runtime error

17 ΜΑΘ 3122/106- Εισαγωγή στους ΗΥ Ξενοφών Ζαμπούλης 17 Διερμηνευμένες Γλώσσες (Interpreted) Αλγόριθμος | Γλώσσα Προγραμματισμού ( κώδικας ) (π. χ. QuickSort.c) | Διερμηνέας (Interpreter) (CInterpreter.exe) Εκτελέσιμο

18 ΜΑΘ 3122/106- Εισαγωγή στους ΗΥ Ξενοφών Ζαμπούλης 18 Ακολουθία «τρεξίματος» Καθολικές (global) έναντι τοπικών μεταβλητών (local) double sum;//καθολικές int bigsum; void f(int x, int sum) { sum = 1; x = 1+sum; bigsum = 1; } main() { int x = 0; //τοπική f(1,0); bigsum=0; }


Κατέβασμα ppt "ΜΑΘ 3122/106 – Εισαγωγή στους ΗΥΞενοφών Ζαμπούλης ΜΑΘ-3122/106 Προγραμματισμός Αλγόριθμοι και Προγράμματα."

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google