Προγραμματισμός Ι (ΗΥ120)

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Προγραμματισμός Ι (ΗΥ120)"

Transcript

1 Προγραμματισμός Ι (ΗΥ120) Διάλεξη 19: Λύση Προβλημάτων με Αναδρομή

2 Οι πύργοι του Hanoi Δίνεται ένα χώρος με τρείς θέσεις αποθήκευσης. Δίνεται μια στοίβα από Ν πλάκες σε φθίνων μέγεθος, σε μια από τις τρείς θέσεις. Ζητούμενο: μετακίνησε την στοίβα σε μια άλλη θέση χωρίς ποτέ να βάλεις μια μεγαλύτερη πλάκα πάνω από μια μικρότερη πλάκα. 2 Α Β Γ

3 Λύση με 1 πλάκα 3 Α Β Γ

4 Λύση με 2 πλάκες 4 Α Β Γ

5 Λύση με 2 πλάκες 5 Α Β Γ

6 Λύση με 2 πλάκες 6 Α Β Γ

7 Λύση με 2 πλάκες 7 Α Β Γ

8 Λύση με 2 πλάκες 8 Α Β Γ

9 Λύση για Ν πλάκες Θεωρούμε ότι οι μικρότερες Ν-1 πλάκες είναι μια πλάκα, η μετακίνηση της οποίας μπορεί να γίνει πλέον αναδρομικά (Ν-1 πλάκες πρέπει να μετακινηθούν από μια θέση σε μια άλλη μέσω μιας τρίτης). 9 Α Β Γ

10 Μοντελοποίηση της λύσης Μετακίνησε Ν πλάκες από την θέση Α μέσω της θέσης Β στην θέση Γ: Απλή περίπτωση: αν Ν==1 τότε μεταφέρουμε την πλάκα από την θέση Α απ ευθείας στην θέση Γ. Πολύπλοκη περίπτωση: αν Ν>1, τότε 10 (α) μεταφέρουμε τις πάνω Ν-1 πλάκες από την θέση Α μέσω της θέσης Γ στην θέση Β, (β) μεταφέρουμε την (μια) πλάκα που απέμεινε από την θέση Α απ ευθείας στην θέση Γ, και (γ) μεταφέρουμε τις Ν-1 πλάκες από την θέση Β μέσω της θέσης Α στην θέση Γ.

11 11 void movetower(int from, int through, int to, int n) { if (n==1) { movepiece(from,to); else { movetower(from,to,through,n-1); movepiece(from,to); movetower(through,from,to,n-1);

12 Σχεδίαση αναδρομικών σχημάτων Η draw_cross(int x, int y, int len) ζωγραφίζει ένα σταυρό, με κέντρο το σημείο (x,y) και μήκος 2*len. 12 len x y

13 Σχεδίαση αναδρομικών σχημάτων Ζητούμενο: υλοποιήστε μια συνάρτηση που σχεδιάζει τα εξής σχήματα με βάση τις ακέραιες παραμέτρους x, y, len και level. level=1 level=2 level=3 13 len len len len x,y len x,y len x,y

14 Σχεδίαση αναδρομικών σχημάτων Παρατήρηση: το ίδιο σχέδιο επαναλαμβάνεται σε μικρότερη κλίμακα σε όλα τα τεταρτημόρια του σχεδίου της αμέσως μεγαλύτερης κλίμακας. level=1 level=2 level=3 14

15 void draw_grid(int x, int y, int len, int level) { if (level==1) { draw_cross(x,y,len); else { draw_cross(x,y,len); draw_drid(x-len/2,y+len/2,len/2,level-1); draw_grid(x-len/2,y-len/2,len/2,level-1); draw_grid(x+len/2,y-len/2,len/2,level-1); draw_grid(x+len/2,y+len/2,len/2,level-1); 15

16 Έλεγχος και αποτίμηση εκφράσεων 16 Δίνεται το συντακτικό των επιτρεπτών αριθμητικών εκφράσεων (προτάσεων) με βάση EBNF. Δεν υπάρχουν συγκεκριμένες προτεραιότητες, και η αποτίμηση γίνεται από δεξιά προς τα αριστερά. Ζητούμενο: να υλοποιηθεί μια συνάρτηση που ελέγχει κατά πόσο η έκφραση που δίνεται από τον χρήστη σαν είσοδος αντιστοιχεί σε μια επιτρεπτή πρόταση, και αν ναι να υπολογίζει και να επιστρέφει το αποτέλεσμα. Επιτρέπονται μονά κενά (εκτός ανάμεσα στα ψηφία ενός αριθμού), και το τέλος της έκφρασης σηματοδοτείται από τον χαρακτήρα '\n'.

17 ΕBNF ακέραια-έκφραση=ακέραιος[ πράξη ακέραια-έκφραση] ακέραιος=νούμερο{νούμερο νούμερο= πράξη== + - * / 17 Syntax diagram πράξη ακέραια-έκφραση ακέραια-έκφραση ακέραιος ψηφίο ακέραιος ψηφίο + 0 πράξη - ψηφίο 1 * / 9

18 11 parse_expr() parse_expr() 8 / 2 4 parse_expr() 2 \n / 2 <return>

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

20 Συνδυαστικά προβλήματα

21 Επίλυση συνδυαστικών προβλημάτων 21 Συχνά ένα πρόβλημα μπορεί να εκφραστεί ως μια «αναζήτηση» ενός επιτρεπτού συνδυασμού κάποιων μεταβλητών μέσα από όλους τους δυνατούς συνδυασμούς που μπορεί να γίνουν. Κάποιες φορές, το ζητούμενο είναι να βρεθεί ο βέλτιστος συνδυασμός, που ελαχιστοποιεί ή μεγιστοποιεί κάποια συνάρτηση των μεταβλητών. Λύση με αναδρομή: 1. Κατασκευάζουμε το σύνολο των συνδυασμών αναδρομικά (με διεξοδική «αναζήτηση» σε βάθος). 2. Ελέγχουμε κάθε συνδυασμό για το κατά πόσο είναι επιτρεπτός ή/και καλύτερος σε σχέση με τους συνδυασμούς που έχουν κατασκευαστεί / εξεταστεί.

22 Δέντρα συνδυασμών και αποφάσεων Όλοι οι δυνατοί συνδυασμοί (μεταβλητών) μπορεί να μοντελοποιηθούν (αναπαρασταθούν) ως ένα δέντρο. Κάθε κόμβος του δέντρου σε επίπεδο L αντιστοιχεί σε ένα συγκεκριμένο συνδυασμό επιλογών (τιμών) για L διαφορετικές μεταβλητές. Ξεκινώντας από ένα κόμβο σε επίπεδο L, επιλέγουμε την επόμενη μεταβλητή, και για κάθε τιμή που αυτή μπορεί να λάβει κατασκευάσουμε ένα κόμβο παιδί σε επίπεδο L+1, κλπ. Ένας κόμβος αποτελεί «φύλλο» όταν δεν υπάρχουν άλλες «ελεύθερες» μεταβλητές όλες έχουν λάβει συγκεκριμένες τιμές. 22

23 (αναδρομική) παραγωγή όλων των δυνατών συνδυασμών 23 έλεγχος για επιθυμητούς ή βέλτιστους συνδυασμούς δυνατοί συνδυασμοί επιθυμητοί συνδυασμοί

24 Αποφυγή της συνδυαστικής έκρηξης Ο αριθμός των μεταβλητών μπορεί να είναι μεγάλος και οι πιθανές τιμές για κάθε μεταβλητή πολλές. Η παραγωγή όλων των δυνατών συνδυασμών απαιτεί πόρους (μνήμη, χρόνος) μπορεί να είναι πρακτικά ανέφικτη (ακόμα και με τη σημερινή τεχνολογία). Επιπλέον, οι περισσότεροι από τους συνδυασμούς που παράγονται «στα τυφλά» είναι καταδικασμένοι εκ των προτέρων (πολύ πριν δημιουργηθούν οι τερματικοί κόμβοι «φύλλα» του δέντρου) να μην επιλεγούν ποτέ ως επιθυμητοί (ή βέλτιστοι). Βελτιστοποίηση: πρόωρος αποκλεισμός ολόκληρων υποδέντρων από την ρίζα τους χωρίς υπολογισμό των αντίστοιχων συνδυασμών (branch and bound). 24

25 παραγωγή των συνδυασμών με αποκλεισμό όλων των «αδιάφορων» υποδέντρων 25 δεν παράγεται επιπλέον έλεγχος για επιθυμητούς ή/και βέλτιστους συνδυασμούς επιθυμητοί συνδυασμοί

26 Απλό παράδειγμα - 8 Queens Ζητούμενο: να βρεθεί λύση στο εξής πρόβλημα: να τοποθετηθούν 8 ντάμες σε μια σκακιέρα έτσι ώστε να μην απειλούνται μεταξύ τους 26

27 Εντοπισμός σύγκρουσης (col,row) ίδια στήλη: col==col διαγώνιος 1: col+row==col +row 27 (0,0) ίδια γραμμή: row==row διαγώνιος 2: col-row==col -row int check(int col1,int row1,int col2,int row2) { return((col1!=col2) && (row1!=row2) && (col1+row1!=col2+row2) && (col1-row1!=col2-row2));

28 Δύο προσεγγίσεις Προσέγγιση 1 (brute force): 1. Δημιουργούμε όλους τους συνδυασμούς θέσεων. 2. Διαγράφουμε τους συνδυασμούς όπου δύο ή περισσότερες ντάμες απειλούν η μια την άλλη. 3. Οι συνδυασμοί που απομένουν είναι αποδεκτοί. Προσέγγιση 2 (branch and bound - b&b): 1. Για κάθε νέα ντάμα που τοποθετούμε, ελέγχουμε προκαταβολικά κατά πόσο απειλεί μια από τις ντάμες που έχουν ήδη τοποθετηθεί στη σκακιέρα. 2. Σε αυτή τη περίπτωση, τερματίζουμε την αναδρομή (όλοι οι περαιτέρω συνδυασμοί είναι μη αποδεκτοί). 3. Οι συνδυασμοί που μένουν είναι οι επιθυμητοί. 28

29 αριθμός στήλης για τις ντάμες 0<=i<n που έχουν τοποθετηθεί μέχρι στιγμής αριθμός γραμμής για τις ντάμες 0<=i<n που έχουν τοποθετηθεί μέχρι στιγμής 29 void putnxtqueen(int cols[], int rows[], int n, int M) { αριθμός επόμενης ντάμας προς τοποθέτηση /* κλήση */ τελικός αριθμός από ντάμες προς τοποθέτηση #define Μ 8 int main (int argc, char *argv[]) { int cols[μ],rows[μ]; putnxtqueen(cols,rows,0,μ); return(0);

30 Προσέγγιση 1 (έλεγχος στο τέλος) void putnxtqueen(int cols[], int rows[], int n, int M) { int i,j; (άσκοπη) δημιουργία όλων των συνδυασμών (φύλλων του δέντρου) if (n<m) { for (i=0; i<m; i++) { for (j=0; j<m; j++) { cols[n]=j; rows[n]=i; putnxtqueen(cols,rows,n+1,m); απόρριψη συνδυασμού (φύλλου) αν υπάρχει κάποια σύγκρουση else { for (i=0; i<m; i++) { for (j=i; j<m; j++) { if (!check(cols[i],rows[i],cols[j],rows[j])) {return; for (i=0; i<m; i++) {printf("(%d,%d)\n",cols[i],rows[i]); εκτύπωση αποδεκτού συνδυασμού 30

31 Προσέγγιση 2 (έλεγχος στην τοποθέτηση) void putnxtqueen(int cols[], int rows[], int n, int M) { int i,j,k,ok; if (n<m) { for (i=0; i<m; i++) { for (j=0; j<m; j++) { ok = 1; for (k=0; (k<n) && (ok); k++) { ok = check(j,i,cols[k],rows[k]); if (ok) { col[n]=j; row[n]=i; putnxtqueen(cols,rows,n+1,m); εκτύπωση αποδεκτού συνδυασμού else { for (i=0; i<m; i++) {printf("(%d,%d)\n",cols[i],rows[i]); έλεγχος σύγκρουσης για την νέα τοποθέτηση j,i 31

32 Βελτιστοποίηση Ακόμα και ένας πρωτάρης σκακιστής, μπορεί να συμπεράνει ότι κάθε ντάμα πρέπει υποχρεωτικά να τοποθετηθεί σε ξεχωριστή γραμμή. Ιδέα: παράγουμε τους συνδυασμούς υπό τον περιορισμό ότι η i-οστή ντάμα τοποθετείται (κάπου) στην i-οστή γραμμή. Η λύση ακολουθεί τη φιλοσοφία της προσέγγισης 2, αλλά αποφεύγει με ιδιαίτερα αποδοτικό τρόπο πάρα πολλούς μη αποδεκτούς συνδυασμούς. Σημείωση: η συνάρτηση δεν χρειάζεται να δέχεται πλέον ως παράμετρο τους αριθμούς γραμμής από τις ντάμες που έχουν τοποθετηθεί, αφού row[i]==i. 32

33 αριθμός στήλης για τις ντάμες 0<=i<n που έχουν τοποθετηθεί μέχρι στιγμής ο αριθμός γραμμής για τις ντάμες 0<=i<n που έχουν τοποθετηθεί μέχρι στιγμής είναι row[i]==i 33 void putnxtqueen(int cols[], int n, int M) { αριθμός επόμενης ντάμας προς τοποθέτηση τελικός αριθμός από ντάμες προς τοποθέτηση /* κλήση */ #define Μ 8 int main (int argc, char *argv[]) { int cols[μ],rows[μ]; putnxtqueen(cols,0,μ); return(0);

34 Προσέγγιση 3 void putnxtqueen(int cols[], int n, int M) { int i,k,ok; if (n<m) { for (i=0; i<m; i++) { ok = 1; for (k=0; (k<n) && (ok); k++) { ok=check(i,n,cols[k],k); if (ok) { col[n]=i; putnxtqueen(col,n+1,m); έλεγχος σύγκρουσης για τη νέα τοποθέτηση i,n εκτύπωση αποδεκτού συνδυασμού else { for (i=0; i<m; i++) {printf("(%d,%d)\n",cols[i],i); 34

35 Σχόλιο Οι παραπάνω προσεγγίσεις βρίσκουν όλους τους επιτρεπτούς συνδυασμούς (συμπεριλαμβανομένων και ισοδύναμων «συμμετρικών» λύσεων). Όταν απορρίπτεται ένας συνδυασμός (φύλλο ή/και υποδέντρο) είναι εγγυημένα μη αποδεκτός. 35

36 Μονοπάτι σε γράφο 36 Ένας γράφος κωδικοποιείται μέσω ενός 2-διάστατου πίνακα c, όπου c[i][j]==1 αν υπάρχει ακμή από τον κόμβο i στον j, διαφορετικά c[i][j]==0. Επιθυμούμε να βρούμε ένα μονοπάτι από τον κόμβο n1 προς ένα άλλο κόμβο n2: path(n1,n2) Περίπτωση εύκολου τερματισμού: c[n1][n2]==1 Γενική περίπτωση: αν n:[n1][n]==1 και path(n,n2) τότε το ζητούμενο μονοπάτι είναι n+path(n,n2), διαφορετικά, δεν υπάρχει κανένα μονοπάτι που να οδηγεί από n1 προς n2.

37 c[0][0]=0; c[0][1]=0; c[0][2]=1; c[0][3]=0; c[1][0]=1; c[1][1]=0; c[1][2]=0; c[1][3]=0; c[2][0]=0; c[2][1]=1; c[2][2]=0; c[2][3]=0; c[3][0]=0; c[3][0]=0; c[3][2]=1; c[3][3]=0;

38 int path(int n1, int n2) { int n; 38 if (c[n1][n2]) { return(1); else { for (n=0; n<n; n++) { if ((c[n1][n]) && path(n,n2)) { return(1); return(0);

39 Σχόλια για την προηγούμενη λύση Η αναζήτηση του μονοπατιού γίνεται «σε βάθος» (depth first) Υπάρχει και αναζήτηση «σε πλάτος». Επιστρέφεται το πρώτο μονοπάτι που θα βρεθεί, χωρίς να εξερευνώνται οι υπόλοιπες πιθανές λύσεις. Δεν επιστρέφεται εγγυημένα η πιο σύντομη διαδρομή (μόνο κατά τύχη, αν αυτή τυχαίνει να είναι η πρώτη διαδρομή που βρέθηκε μέσω της αναδρομής). Δεν λαμβάνονται υπ όψη πιθανοί κύκλοι στον γράφο, οπότε υπάρχει πιθανότητα ατέρμονης αναδρομής. Η υλοποίηση μπορεί να επεκταθεί «σχετικά» εύκολα έτσι ώστε να αντιμετωπιστούν όλες οι παραπάνω αδυναμίες / ατέλειες. 39

40 Κατασκευή «δέντρου» συνδυασμών Προσέγγιση «σε βάθος» (depth first): αρχίζουμε από τη ρίζα και κατασκευάζουμε / διερευνούμε τους κόμβους ανά υποδέντρο (από πάνω προς τα κάτω). Η προσέγγιση σε βάθος μπορεί εύκολα να υλοποιηθεί αναδρομικά σε αυτή την περίπτωση ονομάζεται και «αναδρομική κάθοδος» (recursive descent). Προσέγγιση «κατά πλάτος» (breadth first): αρχίζουμε από τη ρίζα και κατασκευάζουμε / διερευνούμε τους κόμβους ανά επίπεδο (από αριστερά προς τα δεξιά). Η προσέγγιση κατά πλάτος απαιτεί επιπλέον διαχείριση κατάστασης από το πρόγραμμα για την αποθήκευση των κόμβων έτσι ώστε να γίνεται έλεγχος με τη σωστή σειρά (ουρά FIFO). 40

41

42

43 βέλτιστος συνδυασμός συνδυασμοί που δεν ελέγχονται 14 15

44 βέλτιστος συνδυασμός συνδυασμοί που δεν ελέγχονται 14 15

45 Παράδειγμα Knapsack / Rucksack Δίνεται: αντικείμενα Ο[i] με βάρος W[i] και αξία V[i]. Ζητούμενο: να επιλεγούν τα αντικείμενα τα οποία μεγιστοποιούν την αξία ενός φορτίου με μέγιστο συνολικό βάρος ένα γνωστό άνω όριο maxweight. Προσέγγιση 1 (brute force): κατασκευή όλων των συνδυασμών, και επιλογή του συνδυασμού με την μεγαλύτερη αξία στα πλαίσια του επιτρεπτού βάρους. Προσέγγιση 2 (branch & bound): όπως 1, αλλά σε κάθε βήμα ελέγχεται το βάρος του συνδυασμού και αυτός απορρίπτεται (πρόωρα) αν υπερβαίνει το όριο. Προσέγγιση 3 (heuristic b&b): όπως 2, αλλά σε κάθε βήμα επιλέγεται (αμετάκλητα) το αντικείμενο με το μεγαλύτερο ειδικό βάρος που χωρά στο φορτίο. 45

46 Μη βέλτιστες (ευρετικές) λύσεις Μερικά προβλήματα είναι δύσκολο να λυθούν διεξοδικά, με έλεγχο όλων των επιτρεπτών συνδυασμών (με b&b). Ακόμα και για «σχετικά μικρά» Ν, π.χ , ένας σύγχρονος Η/Υ μπορεί να χρειαστεί μέρες ή και βδομάδες να ολοκληρώσει τον υπολογισμό (αν στο μεταξύ δεν του έχει ήδη σωθεί η διαθέσιμη μνήμη). Ευρετικές μέθοδοι: εκτός από τα υποδέντρα που σίγουρα δεν οδηγούν σε λύση, αποκλείουμε και τα υποδέντρα που πιστεύουμε, σύμφωνα με μια «κοινή» λογική, ότι δεν θα οδηγήσουν σε κάποια (καλή) λύση. Οι ευρεστικές μέθοδοι μειώνουν σημαντικά τον αριθμό των συνδυασμών προς έλεγχο, αλλά στην γενική περίπτωση δεν οδηγούν εγγυημένα σε βέλτιστη λύση. 46

47 αποκλεισμός υποδέντρων που σίγουρα δεν οδηγούν σε λύση αποκλεισμός υποδέντρων που μάλλον δεν οδηγούν σε λύση 47 βέλτιστος συνδυασμός

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

49 Λίστα ως αναδρομική δομή Μια λίστα μπορεί να θεωρηθεί ως αναδρομική δομή, όχι μόνο συντακτικά αλλά και ουσιαστικά: μια λίστα είναι είτε κενή, είτε αποτελείται από ένα κόμβο που δείχνει σε μια λίστα. Η αναζήτηση μπορεί να υλοποιηθεί αναδρομικά, π.χ. για λίστα χωρίς τερματικό στοιχείο ως εξής: 1. Αν το πρώτο στοιχείο της λίστας είναι NULL, τότε το στοιχείο που αναζητούμε δεν υπάρχει. 2. Αν το πρώτο στοιχείο της λίστας περιέχει την τιμή που αναζητούμε, τότε βρέθηκε. 3. Αν το πρώτο στοιχείο της λίστας δεν περιέχει την τιμή που αναζητούμε, συνέχισε την αναζήτηση στην λίστα στην οποία δείχνει ο πρώτος κόμβος. 49

50 50 root A nxt C nxt B nxt

51 int list_find_rec(struct list *root, int v) { 51 if (root == NULL) { return(0); else if (root->v == v) { return(1); else { return(list_find_rec(root->nxt,v));

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 17: Λύση Προβλημάτων με Αναδρομή Οι πύργοι του Hanoi Δίνεται ένα χώρος με τρεις θέσεις αποθήκευσης. Δίνεται μια στοίβα από Ν πλάκες σε φθίνον μέγεθος, σε μια από τις τρεις

Διαβάστε περισσότερα

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 17: Λύση Προβλημάτων με Αναδρομή Οι πύργοι του Hanoi Δίνεται ένα χώρος με τρεις θέσεις αποθήκευσης. Δίνεται μια στοίβα από Ν πλάκες σε φθίνον μέγεθος, σε μια από τις τρεις

Διαβάστε περισσότερα

Οι πύργοι του Hanoi ίνεται ένα χώρος µε τρείς θέσεις αποθήκευσης. ίνεται µια στοίβα από Ν πλάκες σε φθίνων µέγεθος, σε µια από τις τρείς θέσεις. Ζητού

Οι πύργοι του Hanoi ίνεται ένα χώρος µε τρείς θέσεις αποθήκευσης. ίνεται µια στοίβα από Ν πλάκες σε φθίνων µέγεθος, σε µια από τις τρείς θέσεις. Ζητού Προγραµµατισµός Ι (ΗΥ120) ιάλεξη 17: Λύση Προβληµάτων µε Αναδροµή Οι πύργοι του Hanoi ίνεται ένα χώρος µε τρείς θέσεις αποθήκευσης. ίνεται µια στοίβα από Ν πλάκες σε φθίνων µέγεθος, σε µια από τις τρείς

Διαβάστε περισσότερα

Αναδροµή. Προγραµµατισµός Ι 1

Αναδροµή. Προγραµµατισµός Ι 1 Αναδροµή Προγραµµατισµός Ι lalis@inf.uth.gr 1 Συναρτήσεις που καλούν τον εαυτό τους Μια συνάρτηση ονοµάζεται αναδροµική όταν καλεί τον εαυτό της άµεσα ή έµµεσα (µέσα από άλλες συναρτήσεις). Μια αναδροµική

Διαβάστε περισσότερα

διεύθυνση πρώτου στοιχείου διεύθυνση i-οστού στοιχείου T t[n]; &t[0] είναι t &t[i] είναι t + i*sizeof(t)

διεύθυνση πρώτου στοιχείου διεύθυνση i-οστού στοιχείου T t[n]; &t[0] είναι t &t[i] είναι t + i*sizeof(t) Προγραµµατισµός Ι (ΗΥ120) ιάλεξη 18: ιασυνδεµένες οµές - Λίστες ιασυνδεδεµένες δοµές δεδοµένων Η µνήµη ενός πίνακα δεσµεύεται συνεχόµενα. Η πρόσβαση στο i-οστό στοιχείο είναι άµεσηκαθώς η διεύθυνση του

Διαβάστε περισσότερα

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 15: Διασυνδεμένες Δομές - Λίστες Διασυνδεδεμένες δομές δεδομένων Η μνήμη ενός πίνακα δεσμεύεται συνεχόμενα. Η πρόσβαση στο i-οστό στοιχείο είναι άμεση καθώς η διεύθυνση

Διαβάστε περισσότερα

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 9: Συναρτήσεις Ορισμός συναρτήσεων () { /* δήλωση μεταβλητών */ /* εντολές ελέγχου/επεξεργασίας */ o Μια συνάρτηση ορίζεται δίνοντας

Διαβάστε περισσότερα

Διασυνδεδεμένες Δομές. Λίστες. Προγραμματισμός II 1

Διασυνδεδεμένες Δομές. Λίστες. Προγραμματισμός II 1 Διασυνδεδεμένες Δομές Λίστες Προγραμματισμός II 1 lalis@inf.uth.gr Διασυνδεδεμένες δομές Η μνήμη ενός πίνακα δεσμεύεται συνεχόμενα η πρόσβαση στο i-οστό στοιχείο είναι άμεση καθώς η διεύθυνση του είναι

Διαβάστε περισσότερα

Αναδρομικοί Αλγόριθμοι

Αναδρομικοί Αλγόριθμοι Αναδρομικός αλγόριθμος (recursive algorithm) Επιλύει ένα πρόβλημα λύνοντας ένα ή περισσότερα στιγμιότυπα του ίδιου προβλήματος. Αναδρομικός αλγόριθμος (recursive algorithm) Επιλύει ένα πρόβλημα λύνοντας

Διαβάστε περισσότερα

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128] ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2017 (27/1/2017) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

Διαβάστε περισσότερα

Διασυνδεδεμένες Δομές. Δυαδικά Δέντρα. Προγραμματισμός II 1

Διασυνδεδεμένες Δομές. Δυαδικά Δέντρα. Προγραμματισμός II 1 Διασυνδεδεμένες Δομές Δυαδικά Δέντρα Προγραμματισμός II 1 lalis@inf.uth.gr Δέντρα Τα δέντρα είναι κλασικές αναδρομικές δομές Ένα δέντρο αποτελείται από υποδέντρα, καθένα από τα οποία μπορεί να θεωρηθεί

Διαβάστε περισσότερα

Προγραµµατισµός Ι (ΗΥ120)

Προγραµµατισµός Ι (ΗΥ120) Προγραµµατισµός Ι (ΗΥ120) Διάλεξη 15: Διασυνδεµένες Δοµές - Λίστες Δοµές δεδοµένων! Ένα τυπικό πρόγραµµα επεξεργάζεται δεδοµένα Πώς θα τα διατάξουµε? 2 Τι λειτουργίες θέλουµε να εκτελέσουµε? Πώς θα υλοποιήσουµε

Διαβάστε περισσότερα

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

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf(%u\n, x); Β. unsigned char ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Β Περιόδου 2015 (8/9/2015) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

Διαβάστε περισσότερα

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 20: Δυαδικό Δέντρο Αναζήτησης Δυαδικό δέντρο Κάθε κόμβος «γονέας» περιέχει δύο δείκτες που δείχνουν σε δύο κόμβους «παιδιά» του ιδίου τύπου. Αν οι δείκτες προς αυτούς

Διαβάστε περισσότερα

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2016-17 Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) http://mixstef.github.io/courses/csintro/ Μ.Στεφανιδάκης Αφηρημένες

Διαβάστε περισσότερα

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Δυναμική Κατανομή Μνήμης Δυναμική εκχώρηση μνήμης Σωρός Συναρτήσεις malloc(), calloc(), realloc(), free() Δυναμικές δομές

Διαβάστε περισσότερα

Προγραμματιστικές Ασκήσεις, Φυλλάδιο 1

Προγραμματιστικές Ασκήσεις, Φυλλάδιο 1 ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΕ C Προγραμματιστικές Ασκήσεις, Φυλλάδιο Εκφώνηση: 9/3/0 Παράδοση: 5/4/0,.59 Άσκηση 0 η : Το πρόβλημα της βελόνας του Buffon Θέμα της εργασίας

Διαβάστε περισσότερα

Δομές Δεδομένων (Data Structures)

Δομές Δεδομένων (Data Structures) Δομές Δεδομένων (Data Structures) Στοίβες Ουρές Στοίβες: Βασικές Έννοιες. Ουρές: Βασικές Έννοιες. Βασικές Λειτουργίες. Παραδείγματα. Στοίβες Δομή τύπου LIFO: Last In - First Out (τελευταία εισαγωγή πρώτη

Διαβάστε περισσότερα

Επίλυση Προβλημάτων 1

Επίλυση Προβλημάτων 1 Επίλυση Προβλημάτων 1 Επίλυση Προβλημάτων Περιγραφή Προβλημάτων Αλγόριθμοι αναζήτησης Αλγόριθμοι τυφλής αναζήτησης Αναζήτηση πρώτα σε βάθος Αναζήτηση πρώτα σε πλάτος (ΒFS) Αλγόριθμοι ευρετικής αναζήτησης

Διαβάστε περισσότερα

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ Εισαγωγή στον Προγραµµατισµό Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ Συναρτήσεις 19.11.16 Β. Ντουφεξή 2 Προβλήματα: Οσο μεγαλώνουν τα προγράμματα, γίνονται πιο πολύπλοκα.

Διαβάστε περισσότερα

Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή

Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή raniah@hua.gr 1 Αναζήτηση Δοθέντος ενός προβλήματος με περιγραφή είτε στον χώρο καταστάσεων

Διαβάστε περισσότερα

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Λειτουργικά

Διαβάστε περισσότερα

Διάλεξη 17: Δυαδικά Δέντρα. Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διάλεξη 17: Δυαδικά Δέντρα. Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 7: Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δυαδικά Δένδρα Δυαδικά Δένδρα Αναζήτησης Πράξεις Εισαγωγής, Εύρεσης Στοιχείου, Διαγραφής Μικρότερου Στοιχείου Διδάσκων:

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Πίνακες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Πίνακες Πολλές φορές θέλουμε να κρατήσουμε στην μνήμη πολλά αντικείμενα

Διαβάστε περισσότερα

Διαχείριση Εφοδιαστικής Αλυσίδας ΙΙ

Διαχείριση Εφοδιαστικής Αλυσίδας ΙΙ Διαχείριση Εφοδιαστικής Αλυσίδας ΙΙ 1 η Διάλεξη: Αναδρομή στον Μαθηματικό Προγραμματισμό 2019, Πολυτεχνική Σχολή Εργαστήριο Συστημάτων Σχεδιασμού, Παραγωγής και Λειτουργιών Περιεχόμενα 1. Γραμμικός Προγραμματισμός

Διαβάστε περισσότερα

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 11: Δείκτες & Πίνακες Δείκτες και πίνακες Μια μεταβλητή «μονοδιάστατος πίνακας από αντικείμενα τύπου Τ» μπορεί να θεωρηθεί ως (είναι συντακτικά συμβατή με) μια μεταβλητή

Διαβάστε περισσότερα

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Συναρτήσεις της C Τα Λοιπά Στοίβα και μηχανισμός κλήσης Αναδρομικές συναρτήσεις Στατικές μεταβλητές Άλλα θέματα Μηχανισμός

Διαβάστε περισσότερα

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 4: Δείκτες και Πίνακες Στην ενότητα αυτή θα μελετηθούν τα εξής θέματα: Πίνακες Δεικτών, Παραδείγματα, Πολυδιάστατοι πίνακες Πέρασμα παραμέτρων σε προγράμματα C Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες:

Διαβάστε περισσότερα

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 2. Πίνακες 45 23 28 95 71 19 30 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 12/10/2017

Διαβάστε περισσότερα

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ Επανάληψη για τις Τελικές εξετάσεις (Διάλεξη 24) Εισαγωγή Το μάθημα EPL032 έχει ως βασικό στόχο την επίλυση προβλημάτων πληροφορικής με την χρήση της γλώσσας προγραμματισμού C. Επομένως πρέπει: Nα κατανοήσετε

Διαβάστε περισσότερα

Διδάσκων: Κωνσταντίνος Κώστα

Διδάσκων: Κωνσταντίνος Κώστα Διάλεξη Ε4: Επανάληψη Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή σε δενδρικές δομές δεδομένων, Δυαδικά Δένδρα Αναζήτησης Ισοζυγισμένα Δένδρα & 2-3 Δένδρα Διδάσκων: Κωνσταντίνος

Διαβάστε περισσότερα

ΥΣ02 Τεχνητή Νοημοσύνη Χειμερινό Εξάμηνο

ΥΣ02 Τεχνητή Νοημοσύνη Χειμερινό Εξάμηνο ΥΣ02 Τεχνητή Νοημοσύνη Χειμερινό Εξάμηνο 2010-2011 Πρώτη Σειρά Ασκήσεων (20% του συνολικού βαθμού στο μάθημα, Άριστα = 390 μονάδες) Ημερομηνία Ανακοίνωσης: 6/10/2010 Ημερομηνία Παράδοσης: 15/11/2010 σύμφωνα

Διαβάστε περισσότερα

Διάλεξη 22: Δυαδικά Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 22: Δυαδικά Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 22: Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Δυαδικά Δένδρα - Δυαδικά Δένδρα Αναζήτησης - Πράξεις Εισαγωγής, Εύρεσης Στοιχείου, Διαγραφής Μικρότερου Στοιχείου

Διαβάστε περισσότερα

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 6. Δυαδικά Δέντρα 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 18/11/2016 Εισαγωγή Τα

Διαβάστε περισσότερα

Τεχνητή Νοημοσύνη. 2η διάλεξη (2015-16) Ίων Ανδρουτσόπουλος. http://www.aueb.gr/users/ion/

Τεχνητή Νοημοσύνη. 2η διάλεξη (2015-16) Ίων Ανδρουτσόπουλος. http://www.aueb.gr/users/ion/ Τεχνητή Νοημοσύνη 2η διάλεξη (2015-16) Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Οι διαφάνειες αυτής της διάλεξης βασίζονται στα βιβλία: Τεχνητή Νοημοσύνη των Βλαχάβα κ.ά., 3η έκδοση, Β. Γκιούρδας

Διαβάστε περισσότερα

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 8: Πίνακες, Αλφαριθμητικά Πίνακες Ο πίνακας είναι μια ειδική δομή για την αποθήκευση μιας σειράς από δεδομένα του ίδιου τύπου. Η δήλωση ενός πίνακα γίνεται όπως για μια

Διαβάστε περισσότερα

Sheet2. - Άσκηση 1 οκ - Άσκηση 2 οκ. Σκέψου πώς θα µπορούσες να την

Sheet2. - Άσκηση 1 οκ - Άσκηση 2 οκ. Σκέψου πώς θα µπορούσες να την AEM ΒΑΘΜΟΣ ΣΧΟΛΙΑ 1413. Σκέψου πώς θα µπορούσες να την 1417 κάνεις χωρίς χρήση της βοηθητικής µεταβλητής curr - Πρώτη άσκηση οκ - Στη δεύτερη άσκηση το free(head) δεν έπρεπε να είναι στο else, αλλά να

Διαβάστε περισσότερα

ΠΛΗ111. Ανοιξη 2005. Μάθηµα 7 ο. έντρο. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

ΠΛΗ111. Ανοιξη 2005. Μάθηµα 7 ο. έντρο. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης ΠΛΗ111 οµηµένος Προγραµµατισµός Ανοιξη 2005 Μάθηµα 7 ο έντρο Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης έντρο Ορισµός Υλοποίηση µε Πίνακα Υλοποίηση µε είκτες υαδικό έντρο

Διαβάστε περισσότερα

Δένδρα. Μαθηματικά (συνδυαστικά) αντικείμενα. Έχουν κεντρικό ρόλο στην επιστήμη των υπολογιστών :

Δένδρα. Μαθηματικά (συνδυαστικά) αντικείμενα. Έχουν κεντρικό ρόλο στην επιστήμη των υπολογιστών : Δένδρα Μαθηματικά (συνδυαστικά) αντικείμενα. Έχουν κεντρικό ρόλο στην επιστήμη των υπολογιστών : Ανάλυση αλγορίθμων (π.χ. δένδρα αναδρομής) Δομές δεδομένων (π.χ. δένδρα αναζήτησης) ακμή Κατηγορίες (αύξουσα

Διαβάστε περισσότερα

που θα δώσει αποτέλεσµα 48, λόγω της αριστερής προσεταιριστικότητας των τελεστών / και *, ενώ η επιθυµητή αντικατάσταση θα ήταν η

που θα δώσει αποτέλεσµα 48, λόγω της αριστερής προσεταιριστικότητας των τελεστών / και *, ενώ η επιθυµητή αντικατάσταση θα ήταν η ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ενδεικτικές Απαντήσεις Εξετάσεων Α' Περιόδου 2013 Θέµα 1 (α') Η απάντηση είναι λάθος. Αν χρησιµοποιήσουµε την µακροεντολή, για παράδειγµα, στην έκφραση 24/CUBE(2) η έκφραση

Διαβάστε περισσότερα

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ IΙ Λύβας Χρήστος chrislibas@ssl-unipi.gr Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος >_ ΣΥΝΑΡΤΗΣΕΙΣ ΣΤΗ C (1/3) +- Στη C χρησιμοποιούμε συχνα τις συναρτήσεις (functions),

Διαβάστε περισσότερα

είκτες και Πίνακες (2)

είκτες και Πίνακες (2) είκτες και Πίνακες (2) Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Πολυδιάστατοι πίνακες Πέρασµα παραµέτρων σε προγράµµατα C ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 1-1 Πίνακες εικτών Πίνακας δεικτών είναι

Διαβάστε περισσότερα

Διάλεξη 6: Δείκτες και Πίνακες

Διάλεξη 6: Δείκτες και Πίνακες Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 6: Δείκτες και Πίνακες (Κεφάλαιο 12, KNK-2ED) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132 6-1 Περιεχόμενο

Διαβάστε περισσότερα

Δομές Δεδομένων & Αλγόριθμοι

Δομές Δεδομένων & Αλγόριθμοι Θέματα Απόδοσης Αλγορίθμων 1 Η Ανάγκη για Δομές Δεδομένων Οι δομές δεδομένων οργανώνουν τα δεδομένα πιο αποδοτικά προγράμματα Πιο ισχυροί υπολογιστές πιο σύνθετες εφαρμογές Οι πιο σύνθετες εφαρμογές απαιτούν

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ Η/Υ ΠΡΩΤΗ ΠΡΟΟΔΟΣ ΣΤΗΝ «ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Y»

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ Η/Υ ΠΡΩΤΗ ΠΡΟΟΔΟΣ ΣΤΗΝ «ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Y» ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ Η/Υ ΠΡΩΤΗ ΠΡΟΟΔΟΣ ΣΤΗΝ «ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Y» Σάββατο, 31 Οκτωβρίου 2015 ΔΙΑΡΚΕΙΑ ΔΙΑΓΩΝΙΣΜΑΤΟΣ 150 ΛΕΠΤΑ ΘΕΜΑ 1.

Διαβάστε περισσότερα

Πληροφορική 2. Αλγόριθμοι

Πληροφορική 2. Αλγόριθμοι Πληροφορική 2 Αλγόριθμοι 1 2 Τι είναι αλγόριθμος; Αλγόριθμος είναι ένα διατεταγμένο σύνολο από σαφή βήματα το οποίο παράγει κάποιο αποτέλεσμα και τερματίζεται σε πεπερασμένο χρόνο. Ο αλγόριθμος δέχεται

Διαβάστε περισσότερα

Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή

Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή raniah@hua.gr 1 Αλγόριθμοι Τυφλής Αναζήτησης Οι αλγόριθμοι τυφλής αναζήτησης εφαρμόζονται σε

Διαβάστε περισσότερα

Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 7: Διαχείριση Μνήμης,Δυναμικές Δομές Δεδομένων, Αναδρομή Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Δυναμικές Δομές Δεδομένων Γενικά - Δυναμική Δέσμευση/Αποδέσμευση

Διαβάστε περισσότερα

Θέμα 1: Robbie και Αναζήτηση

Θέμα 1: Robbie και Αναζήτηση Θέμα : Robbie και Αναζήτηση Ο Robbie, το ρομπότ του παρακάτω σχήματος-χάρτη, κατά τη διάρκεια των εργασιών που κάνει διαπιστώνει ότι πρέπει να γυρίσει όσο το δυνατόν πιο γρήγορα, από την τρέχουσα θέση,

Διαβάστε περισσότερα

Α Β Γ static; printf("%c\n", putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf("*");

Α Β Γ static; printf(%c\n, putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf(*); ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2016 (1/2/2016) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

Διαβάστε περισσότερα

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Οι αλγόριθμοι ταξινόμησης: Α. SelectionSort Ταξινόμηση με Επιλογή Β. InsertionSort Ταξινόμηση με Εισαγωγή

Διαβάστε περισσότερα

Δομές Δεδομένων & Αλγόριθμοι

Δομές Δεδομένων & Αλγόριθμοι - Πίνακες 1 Πίνακες Οι πίνακες έχουν σταθερό μέγεθος και τύπο δεδομένων. Βασικά πλεονεκτήματά τους είναι η απλότητα προγραμματισμού τους και η ταχύτητα. Ωστόσο δεν παρέχουν την ευελιξία η οποία απαιτείται

Διαβάστε περισσότερα

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 16: Σωροί Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις Ουρά Προτεραιότητας Η δομή

Διαβάστε περισσότερα

Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού

Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού Προπτυχιακό μάθημα Αρχές Γλωσσών Προγραμματισμού Π. Ροντογιάννης 1 Μεταγλωττιστής Πρόγραμμα Διαβάζει προγράμματα δεδομένης γλώσσας (πηγαία γλώσσα) και τα μετατρέπει

Διαβάστε περισσότερα

Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές

Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ευθύγραμμες Απλά Συνδεδεμένες Λίστες (εισαγωγή, εύρεση, διαγραφή) Ευθύγραμμες Διπλά Συνδεδεμένες Λίστες

Διαβάστε περισσότερα

Προγραμματισμός Δομές Δεδομένων

Προγραμματισμός Δομές Δεδομένων Προγραμματισμός Δομές Δεδομένων Προγραμματισμός Δομές Δεδομένων (Data Structures) Καινούργιοι τύποι δεδομένων που αποτελούνται από την ομαδοποίηση υπαρχόντων τύπων δεδομένων Ομαδοποίηση πληροφορίας που

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ενδεικτικές Απαντήσεις Εξετάσεων Α' Περιόδου Θέµα 1. (α') 2 - ii 3 - iii 4 - iv

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ενδεικτικές Απαντήσεις Εξετάσεων Α' Περιόδου Θέµα 1. (α') 2 - ii 3 - iii 4 - iv ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ενδεικτικές Απαντήσεις Εξετάσεων Α' Περιόδου 2011 Θέµα 1 (α') 1 - i 2 - ii 3 - iii 4 - iv 5 - v 6 - vi 7 - vii 8 - viii 9 - ix 10 - x Το αποτέλεσµα είναι η αντιστοιχία των

Διαβάστε περισσότερα

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 2. Πίνακες 45 23 28 95 71 19 30 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 21/10/2016

Διαβάστε περισσότερα

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 12: Συναρτήσεις & Δείκτες Αλλαγή του «εξωτερικού» περιβάλλοντος Αν σαν παράμετρος μιας συνάρτησης δοθεί μια μεταβλητή, σαν πραγματική παράμετρος θα περαστεί η τιμή της.

Διαβάστε περισσότερα

Εργαστήριο 8: Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ

Εργαστήριο 8: Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ Εργαστήριο 8: Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ με αλφαβητική σειρά

Διαβάστε περισσότερα

Ασκήσεις μελέτης της 4 ης διάλεξης. ), για οποιοδήποτε μονοπάτι n 1

Ασκήσεις μελέτης της 4 ης διάλεξης. ), για οποιοδήποτε μονοπάτι n 1 Οικονομικό Πανεπιστήμιο Αθηνών, Τμήμα Πληροφορικής Μάθημα: Τεχνητή Νοημοσύνη, 2016 17 Διδάσκων: Ι. Ανδρουτσόπουλος Ασκήσεις μελέτης της 4 ης διάλεξης 4.1. (α) Αποδείξτε ότι αν η h είναι συνεπής, τότε h(n

Διαβάστε περισσότερα

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Προβλήματα, αλγόριθμοι, ψευδοκώδικας Προβλήματα, αλγόριθμοι, ψευδοκώδικας October 11, 2011 Στο μάθημα Αλγοριθμική και Δομές Δεδομένων θα ασχοληθούμε με ένα μέρος της διαδικασίας επίλυσης υπολογιστικών προβλημάτων. Συγκεκριμένα θα δούμε τι

Διαβάστε περισσότερα

Τεχνητή Νοημοσύνη. 3η διάλεξη ( ) Ίων Ανδρουτσόπουλος.

Τεχνητή Νοημοσύνη. 3η διάλεξη ( ) Ίων Ανδρουτσόπουλος. Τεχνητή Νοημοσύνη 3η διάλεξη (2016-17) Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Οι διαφάνειες αυτής της διάλεξης βασίζονται στα βιβλία Τεχνητή Νοημοσύνη των Βλαχάβα κ.ά., 3η έκδοση, Β. Γκιούρδας

Διαβάστε περισσότερα

Διάλεξη 15: Αναδρομή (Recursion) Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 15: Αναδρομή (Recursion) Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 15: Αναδρομή (Recursion) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Η έννοια της αναδρομής Μη αναδρομικός / Αναδρομικός Ορισμός Συναρτήσεων Παραδείγματα Ανάδρομης Αφαίρεση της Αναδρομής

Διαβάστε περισσότερα

Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 9.8

Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 9.8 Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 1000 1001 1002 1003 1004 1005 12 9.8 9976 3 1010 26 1006 1007 1008 1009 1010 1011 16 125 1299 a 13 1298 Δήλωση Δήλωση Τύπος

Διαβάστε περισσότερα

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της;

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της; 1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες (μορφές) της; Η δομή επανάληψης χρησιμοποιείται όταν μια σειρά εντολών πρέπει να εκτελεστεί σε ένα σύνολο περιπτώσεων, που έχουν κάτι

Διαβάστε περισσότερα

Βιβλιοθήκες Αφηρημένοι τύποι δεδομένων. Προγραμματισμός II 1

Βιβλιοθήκες Αφηρημένοι τύποι δεδομένων. Προγραμματισμός II 1 Βιβλιοθήκες Αφηρημένοι τύποι δεδομένων Προγραμματισμός II 1 lalis@inf.uth.gr Βιβλιοθήκες Τμήματα λογισμικού ευρύτερης χρησιμότητας που έχουν σχεδιαστεί με σκοπό να διευκολύνουν την ανάπτυξη πολλών διαφορετικών

Διαβάστε περισσότερα

ΔΙΑΓΩΝΙΣΜΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ 2008

ΔΙΑΓΩΝΙΣΜΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ 2008 Τετάρτη 25/6/2008 Σελ 1/8 Π Α Ν Ε Π Ι Σ Τ Η Μ Ι Ο Θ Ε Σ Σ Α Λ Ι Α Σ Π Ο Λ Υ Τ Ε Χ Ν Ι Κ Η Σ Χ Ο Λ Η Τ Μ Η Μ Α Μ Η Χ Α Ν Ι Κ Ω Ν Η Λ Ε Κ Τ Ρ Ο Ν Ι Κ Ω Ν Υ Π Ο Λ Ο Γ Ι Σ Τ Ω Ν, Τ Η Λ Ε Π Ι Κ Ο Ι Ν Ω Ν Ι

Διαβάστε περισσότερα

ΑΚΕΡΑΙΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ & ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ΚΕΦΑΛΑΙΟ 1

ΑΚΕΡΑΙΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ & ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ΚΕΦΑΛΑΙΟ 1 ΑΚΕΡΑΙΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ & ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ΚΕΦΑΛΑΙΟ 1 1 Βελτιστοποίηση Στην προσπάθεια αντιμετώπισης και επίλυσης των προβλημάτων που προκύπτουν στην πράξη, αναπτύσσουμε μαθηματικά μοντέλα,

Διαβάστε περισσότερα

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής Ενότητα 8: Γραμμική Αναζήτηση και Δυαδική Αναζήτηση-Εισαγωγή στα Δέντρα και Δυαδικά Δέντρα-Δυαδικά Δέντρα Αναζήτησης & Υλοποίηση ΔΔΑ με δείκτες Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Αναδροµή. Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής

Αναδροµή. Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής Αναδροµή Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής 1 Αναδροµή Βασική έννοια στα Μαθηµατικά και στην Πληροφορική.

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16

Διαβάστε περισσότερα

Ανάλυση αλγορίθμων. Χρόνος εκτέλεσης: Αναμενόμενη περίπτωση. - απαιτεί γνώση της κατανομής εισόδου

Ανάλυση αλγορίθμων. Χρόνος εκτέλεσης: Αναμενόμενη περίπτωση. - απαιτεί γνώση της κατανομής εισόδου Ανάλυση αλγορίθμων Παράμετροι απόδοσης ενός αλγόριθμου: Χρόνος εκτέλεσης Απαιτούμενοι πόροι, π.χ. μνήμη, επικοινωνία (π.χ. σε κατανεμημένα συστήματα) Προσπάθεια υλοποίησης Ανάλυση της απόδοσης Θεωρητική

Διαβάστε περισσότερα

Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1

Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1 Σχεδίαση Αλγορίθμων Δυναμικός Προγραμματισμός http://delab.csd.auth.gr/~gounaris/courses/ad Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1 Δυναμικός προγραμματισμός Ο Δυναμικός Προγραμματισμός

Διαβάστε περισσότερα

Διάλεξη 20: Αναδρομή (Recursion) Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 20: Αναδρομή (Recursion) Διδάσκων: Παναγιώτης Ανδρέου 1 Διάλεξη 20: Αναδρομή (Recursion) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Η έννοια της αναδρομής - Μη-αναδρομικός / Αναδρομικός Ορισμός Συναρτήσεων - Παραδείγματα Ανάδρομης - Αφαίρεση

Διαβάστε περισσότερα

ιαφάνειες παρουσίασης #5 (β)

ιαφάνειες παρουσίασης #5 (β) ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ http://www.softlab.ntua.gr/~nickie/courses/progtech/ ιδάσκοντες: Γιάννης Μαΐστρος (maistros@cs.ntua.gr) Στάθης Ζάχος (zachos@cs.ntua.gr) (nickie@softlab.ntua.gr) ιαφάνειες παρουσίασης

Διαβάστε περισσότερα

Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής

Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής Δεύτερη Σειρά Ασκήσεων 22 Νοεμβρίου 2016 (χειρόγραφη και ηλεκτρονική παράδοση 9 Δεκεμβρίου) Άσκηση 1: Θεωρήστε τη γραμματική με κανόνες: Α B a A a c B B b A b

Διαβάστε περισσότερα

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Βασικά Στοιχεία Το αλφάβητο της C Οι βασικοί τύποι της C Δηλώσεις μεταβλητών Είσοδος/Έξοδος Βασικές εντολές της C Αλφάβητο

Διαβάστε περισσότερα

Θεωρητικό Μέρος. int rec(int n) { int n1, n2; if (n <= 5) then return n; else { n1 = rec(n-5); n2 = rec(n-3); return (n1+n2); } }

Θεωρητικό Μέρος. int rec(int n) { int n1, n2; if (n <= 5) then return n; else { n1 = rec(n-5); n2 = rec(n-3); return (n1+n2); } } Πανεπιστήµιο Ιωαννίνων, Τµήµα Πληροφορικής 2 Νοεµβρίου 2005 Η/Υ 432: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκού Έτους 2005-2006 Παναγιώτα Φατούρου Ηµεροµηνία Παράδοσης 1 ο Σετ Ασκήσεων Θεωρητικό Μέρος:

Διαβάστε περισσότερα

ΠΛΕ075: Προηγμένη Σχεδίαση Αλγορίθμων και Δομών Δεδομένων. Λουκάς Γεωργιάδης

ΠΛΕ075: Προηγμένη Σχεδίαση Αλγορίθμων και Δομών Δεδομένων. Λουκάς Γεωργιάδης ΠΛΕ075: Προηγμένη Σχεδίαση Αλγορίθμων και Δομών Δεδομένων Λουκάς Γεωργιάδης loukas@cs.uoi.gr www.cs.uoi.gr/~loukas Βασικές έννοιες και εφαρμογές Αλγόριθμος: Μέθοδος για την επίλυση ενός προβλήματος Δομή

Διαβάστε περισσότερα

Πξνγξακκαηηζκόο Ι (ΗΥ120)

Πξνγξακκαηηζκόο Ι (ΗΥ120) Πξνγξακκαηηζκόο Ι (ΗΥ120) Γηάιεμε 18: Λύζε Πξνβιεκάησλ κε Αλαδξνκή Οη πύξγνη ηνπ Hanoi Γίλεηαη έλα ρώξνο κε ηξείο ζέζεηο απνζήθεπζεο. Γίλεηαη κηα ζηνίβα από Ν πιάθεο ζε θζίλσλ κέγεζνο, ζε κηα από ηηο ηξείο

Διαβάστε περισσότερα

Προγραμματισμός Ι (HY120)

Προγραμματισμός Ι (HY120) Προγραμματισμός Ι (HY20) # μνήμη & μεταβλητές πρόγραμμα & εκτέλεση Ψηφιακά δεδομένα, μνήμη, μεταβλητές 2 Δυαδικός κόσμος Οι υπολογιστές είναι δυαδικές μηχανές Όλη η πληροφορία (δεδομένα και κώδικας) κωδικοποιείται

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στη Python Νικόλαος Ζ. Ζάχαρης Αναπληρωτής

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Λογικός Προγραμματισμός Ασκήσεις Λογικός Προγραμματισμός Ασκήσεις Παναγιώτης Σταματόπουλος Τμήμα Πληροφορικής και Τηλεπικοινωνιών Περιεχόμενα 1. Β Ομάδα Ασκήσεων "Λογικού Προγραμματισμού" Ακαδημαϊκού Έτους 2007-08... 3 1.1 Άσκηση 5...

Διαβάστε περισσότερα

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 10: Δείκτες Δείκτες Υπάρχουν περιπτώσεις που δεν ενδιαφέρει το περιεχόμενο αλλά η μιας μεταβλητής. Χρειάζεται κατάλληλος μηχανισμός αναφοράς και επεξεργασίας τιμών που

Διαβάστε περισσότερα

Θεωρήστε ένα puzzle (παιχνίδι σπαζοκεφαλιάς) με την ακόλουθη αρχική διαμόρφωση : b b b w w w e

Θεωρήστε ένα puzzle (παιχνίδι σπαζοκεφαλιάς) με την ακόλουθη αρχική διαμόρφωση : b b b w w w e Άσκηση 1 Θεωρήστε ένα puzzle (παιχνίδι σπαζοκεφαλιάς) με την ακόλουθη αρχική διαμόρφωση : b b b w w w e Υπάρχουν τρία μαύρα τετραγωνάκια (b), τρία άσπρα (w) και ένα κενό (e). Η σπαζοκεφαλιά έχει τις ακόλουθες

Διαβάστε περισσότερα

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ Θέμα Α ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ 2014-2015 Πάτρα 5/5/2015 Ονοματεπώνυμο:.. Α1. α. Να γράψετε στο τετράδιό σας τον

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΤΥΞΗ ΚΑΙ ΣΧΕΔΙΑΣΗ ΛΟΓΙΣΜΙΚΟΥ Η γλώσσα προγραμματισμού C ΕΡΓΑΣΤΗΡΙΟ 2: Εκφράσεις, πίνακες και βρόχοι 14 Απριλίου 2016 Το σημερινό εργαστήριο

Διαβάστε περισσότερα

Διάλεξη 17: O Αλγόριθμος Ταξινόμησης HeapSort

Διάλεξη 17: O Αλγόριθμος Ταξινόμησης HeapSort Διάλεξη 17: O Αλγόριθμος Ταξινόμησης HeapSort Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Η διαδικασία PercolateDown, Δημιουργία Σωρού O Αλγόριθμος Ταξινόμησης HeapSort Υλοποίηση, Παραδείγματα

Διαβάστε περισσότερα

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις 3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις 5 Απριλίου 01 1 Πίνακες Είδαμε ότι δηλώνοντας μία μεταβλητή κάποιου συγκεκριμένου τύπου δεσμεύουμε μνήμη κατάλληλη για να αποθηκευτεί μία οντότητα

Διαβάστε περισσότερα

Προγραμματισμός Ι (HY120)

Προγραμματισμός Ι (HY120) Προγραμματισμός Ι (HY120) #6 εκτέλεση σε επανάληψη 1 Σπύρος Λάλης Εκτέλεση σε επανάληψη: while while () lexpr body true false Όσο η λογική συνθήκη επανάληψης lexpr αποτιμάται σε μια τιμή

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΝΠΙΣΤΗΜΙΟ ΘΣΣΛΙΣ ΣΧΟΛΗ ΘΤΙΚΩΝ ΠΙΣΤΗΜΩΝ ΤΜΗΜ ΠΛΗΡΟΦΟΡΙΚΗΣ ΝΠΤΥΞΗ ΚΙ ΣΧΔΙΣΗ ΛΟΓΙΣΜΙΚΟΥ Η γλώσσα προγραμματισμού C ΡΓΣΤΗΡΙΟ 4.4: λφαριθμητικά, αρχεία, πίνακες, δομές, συναρτήσεις+ 2 Ιουνίου 2016 Η παρακάτω

Διαβάστε περισσότερα

Συνδυαστικά Λογικά Κυκλώματα

Συνδυαστικά Λογικά Κυκλώματα Συνδυαστικά Λογικά Κυκλώματα Ένα συνδυαστικό λογικό κύκλωμα συντίθεται από λογικές πύλες, δέχεται εισόδους και παράγει μία ή περισσότερες εξόδους. Στα συνδυαστικά λογικά κυκλώματα οι έξοδοι σε κάθε χρονική

Διαβάστε περισσότερα

Προγραμματιστικές Τεχνικές

Προγραμματιστικές Τεχνικές Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόμων Τοπογράφων Μηχανικών Προγραμματιστικές Τεχνικές Βασίλειος Βεσκούκης Δρ. Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών ΕΜΠ Επικ. Καθηγητής ΕΜΠ v.vescoukis@cs.ntua.gr

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων

Διαβάστε περισσότερα

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

ΑΕΠΠ Ερωτήσεις θεωρίας ΑΕΠΠ Ερωτήσεις θεωρίας Κεφάλαιο 1 1. Τα δεδομένα μπορούν να παρέχουν πληροφορίες όταν υποβάλλονται σε 2. Το πρόβλημα μεγιστοποίησης των κερδών μιας επιχείρησης είναι πρόβλημα 3. Για την επίλυση ενός προβλήματος

Διαβάστε περισσότερα

Διάλεξη 15η: Αναδρομή, μέρος 1ο

Διάλεξη 15η: Αναδρομή, μέρος 1ο Διάλεξη 15η: Αναδρομή, μέρος 1ο Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Αναδρομή I CS100, 2016-2017

Διαβάστε περισσότερα

Το Πρόβλημα του Περιοδεύοντος Πωλητή - The Travelling Salesman Problem

Το Πρόβλημα του Περιοδεύοντος Πωλητή - The Travelling Salesman Problem Το Πρόβλημα του Περιοδεύοντος Πωλητή - The Travelling Salesman Problem Έλενα Ρόκου Μεταδιδακτορική Ερευνήτρια ΕΜΠ Κηρυττόπουλος Κωνσταντίνος Επ. Καθηγητής ΕΜΠ Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

Διαβάστε περισσότερα

Ενδεικτικές λύσεις και στατιστικά

Ενδεικτικές λύσεις και στατιστικά Προγραμματισμός 1 Σύντομο Quiz 25/9/9 Ενδεικτικές λύσεις και στατιστικά Ερώτηση 1: Γράψτε παρακάτω συνάρτηση η οποία δέχεται ως παραμέτρους ένα string και ένα χαρακτήρα και επιστρέφει τον αριθμό των εμφανίσεων

Διαβάστε περισσότερα