Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf ·...

53
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Διάλεξη 2η: Αλγόριθμοι και Προγράμματα Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ. Παναγιωτάκη Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 1 / 14

Transcript of Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf ·...

Page 1: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης

Εισαγωγή στην Επιστήμη Υπολογιστών

Βασίζεται σε διαφάνειες του Κ. Παναγιωτάκη

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 1 /14

Page 2: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Αλγόριθμοι

Αλγόριθμος είναι μια ακολουθία από βήματα ή ενέργειεςπου είναι:

▶ Καλώς (σαφώς) ορισμένα▶ Αποτελεσματικά (μπορούν να εκτελεστούν)▶ Πεπερασμένα (τερματισμός)▶ Συνήθως εφαρμόζονται πάνω σε δεδομένα

Παραδείγματα αλγορίθμων▶ Διαίρεση ακεραίων▶ Υπολογισμός τετραγωνικής ρίζας▶ Πολλαπλασιασμός ή αντιστροφή πινάκων▶ Αναζήτηση και ταξινόμηση▶ Εύρεση συντομότερης διαδρομής▶ Ανάλυση ιατρικών εικόνων

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 2 /14

Page 3: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Χαρακτηριστικά

Απαιτήσεις, Πρόβλημα, ΠροδιαγραφέςΣχεδίαση και ΟρθότηταΠολυπλοκότητα σε σχέση με το μέγεθος των δεδομένων(προαιρετικά για αυτό το μάθημα)

▶ Υπολογιστικό κόστος, χρόνος▶ Κόστος σε μνήμη, χώρος

Βελτιστοποίηση (προαιρετικά)Υλοποίηση

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 3 /14

Page 4: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Παράδειγμα: Πρόσθεση N αριθμώνΑπαιτήσεις, Πρόβλημα, Προδιαγραφές

▶ Υπολογίστε το άθροισμαN∑i=1

i = 1 + 2 + 3 + . . .+N

Σχεδίαση και Ορθότητα▶ Ξεκινώ από το i = 1▶ Αρχικά, το άθροισμα “μέχρι τώρα” είναι Σ = 0▶ Για i = 1, 2, . . . ,N, προσθέτω i στο μέχρι τώρα Σ

Πολυπλοκότητα▶ Υπολογιστικό κόστος: 2N, ή O(N)▶ Κόστος σε μνήμη: 2, ή O(1)

Βελτιστοποίηση:Σ =

N(N+ 1)

2

▶ Υπολογιστικό κόστος: 3, ή O(1)▶ Κόστος σε μνήμη: 1, ή O(1)

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 4 /14

Page 5: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Παράδειγμα: ΤαξινόμησηΑπαιτήσεις, Πρόβλημα, Προδιαγραφές

▶ Ταξινομήστε N φυσικούς αριθμούς, μικρότερους από 1000▶ a[1],a[2], . . .a[N] < 1000

Σχεδίαση και Ορθότητα▶ Βρίσκω το μικρότερο και τον βάζω πρώτο▶ Επαναλαμβάνω για τον επόμενο μικρότερο, κ.ο.κ.

Πιό τυπικάΓια κ = 1 έως NΓια λ = κ+ 1 έως NΑν a[λ] < a[κ]τότε άλλαξε θέση των a[κ],a[λ]

Πολυπλοκότητα▶ Υπολογιστικό κόστος:

T(N) = T(N− 1) +N⇒ T(N) = N(N+ 1)

2

ή O(N2)▶ Κόστος σε μνήμη: 2, ή O(1)

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 5 /14

Page 6: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Παράδειγμα: Ταξινόμηση (2)Βελτιστοποίηση

ΒελτιστοποίησηΓια κ = 1 έως 1000θέτω h[κ] = 0

Για κ = 1 έως Nαυξάνω το h [a [κ]] κατά 1

Θέτω µ = 1Για κ = 1 έως 1000Για λ = 1 έως h[κ]Θέτω a[µ] = κΘέτω µ = µ+ 1

Πολυπλοκότητα▶ Υπολογιστικό κόστος: 1000 +N+ 1000 + 2N ή O(N)▶ Κόστος σε μνήμη: 1003, ή O(1)

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 6 /14

Page 7: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

ΠρογραμματισμόςΠρόγραμμα: ένας αλγόριθμος σε συγκεκριμένη τυπικήγλώσσαΓλώσσα μηχανής: η γλώσσα που ερμηνεύει το hardware,μόνο λογικά 0 και 1 (ή οι αντίστοιχες τάσεις στοκύκλωμα)Επίπεδα γλωσσών προγραμματισμού

▶ Χαμηλού επιπέδου, κοντά στη γλώσσα μηχανής▶ Μεσαίου επιπέδου▶ Υψηλού επιπέδου, κοντά στα μαθηματικά (ή τηνκαθομιλουμένη)

Η επιλογή γλώσσας προγραμματισμού εξαρτάται από τηνεφαρμογήΣυνήθως:

▶ Χαμηλό επίπεδο ⇒ γρήγορο πρόγραμμα▶ Υψηλό επίπεδο ⇒ εύκολος προγραμματισμός, λιγότεραλάθη

▶ Πολύ βασικό: η ικανότητα και εμπειρία τουπρογραμματιστή

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 7 /14

Page 8: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Γλώσσες προγραμματισμούΑνάλογα με τον τρόπο περιγραφής του αλγορίθμου

▶ Προστακτικές (imperative): C, Pascal, Fortran⋆ Παραδοσιακός τρόπος προγραμματισμού⋆ Το πρόγραμμα είναι ακολουθία εντολών και ορισμός νέωνεντολών (ρουτίνες)

▶ Συναρτησιακές (functional): ML, Haskel, Lisp⋆ Μαθηματική περιγραφή υπολογισμών⋆ Το πρόγραμμα είναι ορισμοί μαθηματικών συναρτήσεων

▶ Δηλωτικές (declarative): Prolog, XML⋆ Δηλώσεις και ορισμοί⋆ Το πρόγραμμα είναι η λεπτομερής περιγραφή τουαποτελέσματος

Ανάλογα με τον τρόπο οργάνωσης του κώδικα▶ Διαδικαστικές (procedural): C, Pascal▶ Αντικειμενοστραφείς (Object-oriented): C++, Java

Ανάλογα με το χώρο των προβλημάτων που λύνουν▶ Παράλληλες, κατανεμημένες (parallel, distributed): CML,Erlang

▶ Διαδικτυακές: PHP, Javascript▶ . . .

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 8 /14

Page 9: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Προγράμματα σε C

Εντολές και δεδομέναΕντολές

▶ Μια σειρά από βασικές πράξεις, εντολές στον επεξεργαστή▶ Αποθηκεύονται στη μνήμη του υπολογιστή

Δεδομένα▶ Γράφονται και διαβάζονται από εντολές▶ Αποθηκεύονται στη μνήμη του υπολογιστή

Οι εντολές πρέπει να έχουν μια λογική αλληλουχίαΝα ακολουθούν συγκεκριμένα βήματαΑλγόριθμοι . . .

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 9 /14

Page 10: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Παράδειγμα

Το πρώτο C πρόγραμμα

hello.c

#include <stdio.h>int main(){printf(”Hello, world!\n”);return 0;

}

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 10 /14

Page 11: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Παράδειγμα

Το πρώτο C πρόγραμμα

hello.c

#include <stdio.h>int main(){printf(”Hello, world!\n”);return 0;

}

Βιβλιοθήκη Input/Output:χρειάζεται για την printf()

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 10 /14

Page 12: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Παράδειγμα

Το πρώτο C πρόγραμμα

hello.c

#include <stdio.h>int main(){printf(”Hello, world!\n”);return 0;

}

Τύπος συνάρτησης:η main επιστρέφει ακέραιο

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 10 /14

Page 13: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Παράδειγμα

Το πρώτο C πρόγραμμα

hello.c

#include <stdio.h>int main(){printf(”Hello, world!\n”);return 0;

}

Σε όλα τα προγράμματα C, ηεκτέλεση ξεκινάει από τη

συνάρτηση main

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 10 /14

Page 14: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Παράδειγμα

Το πρώτο C πρόγραμμα

hello.c

#include <stdio.h>int main(){printf(”Hello, world!\n”);return 0;

}

Συνάρτηση εκτύπωσης:γράφει Hello, world! στηνοθόνη και πηγαίνει στην

επόμενη γραμμή

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 10 /14

Page 15: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Παράδειγμα

Το πρώτο C πρόγραμμα

hello.c

#include <stdio.h>int main(){printf(”Hello, world!\n”);return 0;

}

Κάθε εντολή τελειώνει μεsemicolon “;”

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 10 /14

Page 16: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Παράδειγμα

Το πρώτο C πρόγραμμα

hello.c

#include <stdio.h>int main(){printf(”Hello, world!\n”);return 0;

}

Η συνάρτηση επιστρέφει 0

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 10 /14

Page 17: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Δομή προγράμματος

Στη C το πρόγραμμα είναι μια λίστα από συναρτήσειςmax.c

int max(int x, int y){int z;

if (x < y){z = y;

} else {z = x;

}return z;

}

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 11 /14

Page 18: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Δομή προγράμματος

Στη C το πρόγραμμα είναι μια λίστα από συναρτήσειςmax.c

int max(int x, int y){int z;

if (x < y){z = y;

} else {z = x;

}return z;

}

Όρισμα συνάρτησης: οι τιμέςτου x και του y καθορίζονταιόταν καλούμε τη συνάρτηση

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 11 /14

Page 19: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Δομή προγράμματος

Στη C το πρόγραμμα είναι μια λίστα από συναρτήσειςmax.c

int max(int x, int y){int z;

if (x < y){z = y;

} else {z = x;

}return z;

}

Δήλωση τοπικής μεταβλητής:θα χρειαστούμε τη z για να

αποθηκεύσουμε τοαποτέλεσμα

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 11 /14

Page 20: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Δομή προγράμματος

Στη C το πρόγραμμα είναι μια λίστα από συναρτήσειςmax.c

int max(int x, int y){int z;

if (x < y){z = y;

} else {z = x;

}return z;

}

Η εντολή if ελέγχει μιασυνθήκη

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 11 /14

Page 21: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Δομή προγράμματος

Στη C το πρόγραμμα είναι μια λίστα από συναρτήσειςmax.c

int max(int x, int y){int z;

if (x < y){z = y;

} else {z = x;

}return z;

}

Συνθήκη: είναι το xμικρότερο από το y;

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 11 /14

Page 22: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Δομή προγράμματος

Στη C το πρόγραμμα είναι μια λίστα από συναρτήσειςmax.c

int max(int x, int y){int z;

if (x < y){z = y;

} else {z = x;

}return z;

}

Αν ισχύει η συνθήκη,εκτελούνται οι εντολές του

πρώτου block

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 11 /14

Page 23: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Δομή προγράμματος

Στη C το πρόγραμμα είναι μια λίστα από συναρτήσειςmax.c

int max(int x, int y){int z;

if (x < y){z = y;

} else {z = x;

}return z;

}

Αν δεν ισχύει η συνθήκη,εκτελούνται οι εντολές του

else block

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 11 /14

Page 24: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Δημιουργία προγράμματος

Αλγόριθμος

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 12 /14

Page 25: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Δημιουργία προγράμματος

Αλγόριθμος

π.χ. Bubble Sort

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 12 /14

Page 26: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Δημιουργία προγράμματος

Αλγόριθμος

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 12 /14

Page 27: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Δημιουργία προγράμματος

Αλγόριθμος

Προγραμματιστής

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 12 /14

Page 28: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Δημιουργία προγράμματος

Αλγόριθμος

Προγραμματιστής

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

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 12 /14

Page 29: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Δημιουργία προγράμματος

Αλγόριθμος

Προγραμματιστής

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

π.χ. bubblesort.c

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 12 /14

Page 30: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Δημιουργία προγράμματος

Αλγόριθμος

Προγραμματιστής

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

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 12 /14

Page 31: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Δημιουργία προγράμματος

Αλγόριθμος

Προγραμματιστής

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

Compiler

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 12 /14

Page 32: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Δημιουργία προγράμματος

Αλγόριθμος

Προγραμματιστής

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

Compiler

Ενδιάμεσος κώδικας

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 12 /14

Page 33: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Δημιουργία προγράμματος

Αλγόριθμος

Προγραμματιστής

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

Compiler

Ενδιάμεσος κώδικας

π.χ. bubblesort.o

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 12 /14

Page 34: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Δημιουργία προγράμματος

Αλγόριθμος

Προγραμματιστής

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

Compiler

Ενδιάμεσος κώδικας

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 12 /14

Page 35: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Δημιουργία προγράμματος

Αλγόριθμος

Προγραμματιστής

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

Compiler

Ενδιάμεσος κώδικας

Linker

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 12 /14

Page 36: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Δημιουργία προγράμματος

Αλγόριθμος

Προγραμματιστής

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

Compiler

Ενδιάμεσος κώδικας

Linker

Τελικό εκτελέσιμο

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 12 /14

Page 37: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Δημιουργία προγράμματος

Αλγόριθμος

Προγραμματιστής

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

Compiler

Ενδιάμεσος κώδικας

Linker

Τελικό εκτελέσιμο

π.χ. bubblesort.exe

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 12 /14

Page 38: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Δημιουργία προγράμματος

Αλγόριθμος

Προγραμματιστής

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

Compiler

Ενδιάμεσος κώδικας

Linker

Τελικό εκτελέσιμο

Στο LinuxCompile & Link:$ gcc -Wall -g bubblesort.c -o bubblesortExecute:$ ./bubblesort

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 12 /14

Page 39: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Δημιουργία προγράμματος

Αλγόριθμος

Προγραμματιστής

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

Compiler

Ενδιάμεσος κώδικας

Linker

Τελικό εκτελέσιμο

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 12 /14

Page 40: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Δημιουργία προγράμματος

Αλγόριθμος

Προγραμματιστής

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

Compiler

Ενδιάμεσος κώδικας

Linker

Τελικό εκτελέσιμο

Συντακτικά λάθη

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 12 /14

Page 41: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Δημιουργία προγράμματος

Αλγόριθμος

Προγραμματιστής

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

Compiler

Ενδιάμεσος κώδικας

Linker

Τελικό εκτελέσιμο

Συντακτικά λάθη

Λάθη συμβόλων

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 12 /14

Page 42: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Δημιουργία προγράμματος

Αλγόριθμος

Προγραμματιστής

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

Compiler

Ενδιάμεσος κώδικας

Linker

Τελικό εκτελέσιμο

Συντακτικά λάθη

Λάθη συμβόλων

Run-time λάθη

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 12 /14

Page 43: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Δημιουργία προγράμματος

Αλγόριθμος

Προγραμματιστής

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

Compiler

Ενδιάμεσος κώδικας

Linker

Τελικό εκτελέσιμο

Συντακτικά λάθη

Λάθη συμβόλων

Run-time λάθη

Λογικά λάθη

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 12 /14

Page 44: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Διερμηνευόμενες Γλώσσες

Αλγόριθμος

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 13 /14

Page 45: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Διερμηνευόμενες Γλώσσες

Αλγόριθμος

π.χ. Bubble Sort

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 13 /14

Page 46: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Διερμηνευόμενες Γλώσσες

Αλγόριθμος

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 13 /14

Page 47: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Διερμηνευόμενες Γλώσσες

Αλγόριθμος

Προγραμματιστής

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 13 /14

Page 48: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Διερμηνευόμενες Γλώσσες

Αλγόριθμος

Προγραμματιστής

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

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 13 /14

Page 49: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Διερμηνευόμενες Γλώσσες

Αλγόριθμος

Προγραμματιστής

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

π.χ. bubblesort.c

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 13 /14

Page 50: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Διερμηνευόμενες Γλώσσες

Αλγόριθμος

Προγραμματιστής

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

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 13 /14

Page 51: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Διερμηνευόμενες Γλώσσες

Αλγόριθμος

Προγραμματιστής

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

Interpreter

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 13 /14

Page 52: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Διερμηνευόμενες Γλώσσες

Αλγόριθμος

Εκτελέσιμο

Προγραμματιστής

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

Interpreter

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 13 /14

Page 53: Διάλεξη 2η: Αλγόριθμοι και Προγράμματαhy100/Lecture02.pdf · Προγραμματισμός Πρόγραμμα:έναςαλγόριθμοςσεσυγκεκριμένητυπική

...

.

...........................

.

...

.

...

.

Διαδικασία εκτέλεσης

Φόρτωμα του κώδικα στη μνήμηΔέσμευση χώρου στη μνήμη για τις καθολικέςμεταβλητέςΕκτέλεση της συνάρτησης main()

Οι τοπικές μεταβλητές;▶ On-the-fly: Κάθε συνάρτηση δεσμεύει όση μνήμηχρειάζεται όταν αρχίζει

▶ Τελειώνοντας, απελευθερώνει ξανά τη μνήμη των τοπικώνμεταβλητών

Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα CS100, 2019-2020 14 /14