1.1) Λογική Συνάρτηση σε Κύκλωμα
Λογική Συνάρτηση σε Πίνακα Αλήθειας
1.2) Αφαίρεση με Συμπλήρωμα ως προς 2
1.3) Πρόσθεση στο Δεκαεξαδικό
16δικό σε Δεκαδικό
1.1) Από δεκαεξαδικό σε οκταδικό
1.2) Αφαίρεση με συμπλήρωμα ως προς 2
1.3) Πρόσθεση στο δεκαεξαδικό
1.4) Εύρεση πύλης δεδομένου πίνακα αληθείας
2.1) Άθροισμα και Γινόμενο Τετραγώνων Αριθμών Πίνακα σε Ψευδογλώσσα
1.1) Λογική Συνάρτηση σε Κύκλωμα
Λογική Συνάρτηση σε Πίνακα Αλήθειας
1.2) Αφαίρεση με Συμπλήρωμα ως προς 2
1.3) Πρόσθεση στο Δεκαεξαδικό
16δικό σε Δεκαδικό
1.1) Από δεκαεξαδικό σε οκταδικό
1.2) Αφαίρεση με συμπλήρωμα ως προς 2
1.3) Πρόσθεση στο δεκαεξαδικό
1.4) Εύρεση πύλης δεδομένου πίνακα αληθείας
2.1) Άθροισμα και Γινόμενο Τετραγώνων Αριθμών Πίνακα σε Ψευδογλώσσα
1.1) Ιεραρχία Συναρτήσεων
1.2) Αναδρομικές Σχέσεις (Θεώρημα Κυριαρχίας, Μέθοδος Επανάληψης)
2) Άπληστος Αλγόριθμος (Αντιπαράδειγμα ε μη ορθό αλγόριθμο υπολογισμού συντομότερου μονοπατιού)
3.1) 0*1*11*: ΚΕ σε ΜΠΑε σε ΜΠΑ σε ΝΠΑ και Κανονική Γραμματική
3.2) Διακριση Κανονικών και μη Κανονικών Γλωσσών
4) Διάκριση Γλωσσών Χωρίς Συμφραζόμενα και Γλωσσών Όχι Χωρίς Συμφραζόμενα (Γραμματική Χωρίς Συμφραζόμενα, Αυτόματο Στοίβας) και (Λήμμα Άντλησης για Γλώσσες Χωρίς Συμφραζόμενα.
5.1) Μηχανή Turing για συμπλήρωμα ισότητας
5.2) Αναγωγές μη Επιλυσιμότητας
6) NP-πληρότητα (το πρόβλημα της κομβικής επικάλυψης και το πρόβλημα του ανεξαρτήτου συνόλου)
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)Dimitris Psounis
ΠΕΡΙΕΧΟΜΕΝΑ ΜΑΘΗΜΑΤΟΣ
Α. Θεωρία
1.Διαχείριση Μνήμης
1.1.Στατική Δέσμευση Μνήμης
1.2.Στατική Δέσμευση Μνήμης για Συνήθεις Μεταβλητές
1.3.Στατική Δέσμευση Μνήμης για Αντικείμενα
2.Δυναμική Δέσμευση Μνήμης
2.1.Δείκτες (Υπενθύμιση από C)
2.2.Οι τελεστές new και delete
2.3.Δυναμική Δέσμευση για Συνήθεις Μεταβλητές
2.4.Δυναμική Δέσμευση για Αντικείμενα
2.5.Δυναμική Δέσμευση και Κατασκευαστές
3.Κλάσεις που περιέχουν δείκτες
3.1.Παράδειγμα κλάσης που περιέχει δείκτες
3.2.…και ένα πρόβλημα (χωρίς λύση για την ώρα)
4..Δυναμική Δέσμευση Μνήμης για Πίνακες
4.1.Μονοδιάστατοι πίνακες
4.2.Παράδειγμα δέσμευσης μνήμης για μονοδιάστατους πίνακες
4.3.Διδιάστατοι πίνακες
4.4.Παράδειγμα δέσμευσης μνήμης για διδιάστατους πίνακες
B. Ασκήσεις
ΠΕΡΙΕΧΟΜΕΝΑ ΜΑΘΗΜΑΤΟΣ
Α. Θεωρία
1.Διαχείριση Μνήμης
1.1.Στατική Δέσμευση Μνήμης
1.2.Στατική Δέσμευση Μνήμης για Συνήθεις Μεταβλητές
1.3.Στατική Δέσμευση Μνήμης για Αντικείμενα
2.Δυναμική Δέσμευση Μνήμης
2.1.Δείκτες (Υπενθύμιση από C)
2.2.Οι τελεστές new και delete
2.3.Δυναμική Δέσμευση για Συνήθεις Μεταβλητές
2.4.Δυναμική Δέσμευση για Αντικείμενα
2.5.Δυναμική Δέσμευση και Κατασκευαστές
3.Κλάσεις που περιέχουν δείκτες
3.1.Παράδειγμα κλάσης που περιέχει δείκτες
3.2.…και ένα πρόβλημα (χωρίς λύση για την ώρα)
4..Δυναμική Δέσμευση Μνήμης για Πίνακες
4.1.Μονοδιάστατοι πίνακες
4.2.Παράδειγμα δέσμευσης μνήμης για μονοδιάστατους πίνακες
4.3.Διδιάστατοι πίνακες
4.4.Παράδειγμα δέσμευσης μνήμης για διδιάστατους πίνακες
B. Ασκήσεις
Α. Θεωρία
1. Κλάσεις
1.1 Γενικά
1.2 Ορισμός Κλάσης
1.3 Δημόσια (public) στοιχεία της κλάσης
1.4 Ιδιωτικά (private) στοιχεία της κλάσης
1.5 Παράδειγμα (προδιαγραφές)
2 Περισσότερα για τις κλάσεις
2.1 Ορισμός Συναρτήσεων έξω από την Κλάση
2.2 Παρουσίαση Ιδιωτικών – Δημόσιων Μέλων μιας κλάσης
2.3 Χωρισμός σε Αρχεία
3. Ειδικές Μεθόδοι Κλάσεων
3.1 Γενικά
3.2 Κατασκευαστής (constructor)
3.3 Καταστροφέας (destructor)
3.4 Ελεγκτές Πρόσβασης (accessors)
B. Ασκήσεις
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)Dimitris Psounis
Α. Θεωρία
1. Κλάσεις
1.1 Γενικά
1.2 Ορισμός Κλάσης
1.3 Δημόσια (public) στοιχεία της κλάσης
1.4 Ιδιωτικά (private) στοιχεία της κλάσης
1.5 Παράδειγμα (προδιαγραφές)
2 Περισσότερα για τις κλάσεις
2.1 Ορισμός Συναρτήσεων έξω από την Κλάση
2.2 Παρουσίαση Ιδιωτικών – Δημόσιων Μέλων μιας κλάσης
2.3 Χωρισμός σε Αρχεία
3. Ειδικές Μεθόδοι Κλάσεων
3.1 Γενικά
3.2 Κατασκευαστής (constructor)
3.3 Καταστροφέας (destructor)
3.4 Ελεγκτές Πρόσβασης (accessors)
B. Ασκήσεις
ΠΕΡΙΕΧΟΜΕΝΑ ΜΑΘΗΜΑΤΟΣ
Α. Θεωρία
1. Η Γλώσσα C++
1.1. Γενικά
1.2. Ιστορία – Εκδόσεις
1.3. Η αναγκαιότητα της C
1.4. Μεταγλωττιστές
2. Hello World!
2.1. Πηγαίος Κώδικας
2.2. Σχόλια
2.3. Βιβλιοθήκη iostream
2.4. main, block κώδικα, return
2.5 Είσοδος/Έξοδος
2.5.1. Έξοδος με την cout
2.5.2. Οδηγία using
2.5.3. Περισσότερα για την cout
2.5.4. Είσοδος με την cin
3. Στοιχεία της C
3.1. Μεταβλητές
3.2. Σταθερές
3.3. Τελεστές και η Δομή Ελέγχου
3.4. Δομές Επανάληψης
3.5. Συναρτήσεις
3.5.1. Πολυμορφισμός Συναρτήσεων
3.6. Πίνακες
3.7. Συμβολοσειρές
3.8. Δείκτες
B.Ασκήσεις
Εφαρμογή 1
Εφαρμογή 2
Εφαρμογή 3
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)Dimitris Psounis
ΠΕΡΙΕΧΟΜΕΝΑ ΜΑΘΗΜΑΤΟΣ
Α. Θεωρία
1. Η Γλώσσα C++
1.1. Γενικά
1.2. Ιστορία – Εκδόσεις
1.3. Η αναγκαιότητα της C
1.4. Μεταγλωττιστές
2. Hello World!
2.1. Πηγαίος Κώδικας
2.2. Σχόλια
2.3. Βιβλιοθήκη iostream
2.4. main, block κώδικα, return
2.5 Είσοδος/Έξοδος
2.5.1. Έξοδος με την cout
2.5.2. Οδηγία using
2.5.3. Περισσότερα για την cout
2.5.4. Είσοδος με την cin
3. Στοιχεία της C
3.1. Μεταβλητές
3.2. Σταθερές
3.3. Τελεστές και η Δομή Ελέγχου
3.4. Δομές Επανάληψης
3.5. Συναρτήσεις
3.5.1. Πολυμορφισμός Συναρτήσεων
3.6. Πίνακες
3.7. Συμβολοσειρές
3.8. Δείκτες
B.Ασκήσεις
Εφαρμογή 1
Εφαρμογή 2
Εφαρμογή 3
1. ∆ηµήτρης Ψούνης – ΠΛΗ10, Τεστ 28
www.psounis.gr
1
ΠΛΗ10 – ΤΕΣΤ 28
Θέµα 2: Ψευδογλώσσα και Αλγόριθµοι
Ερώτηµα 1
Να γραφεί σε ψευδοκώδικα αλγόριθµος για τον υπολογισµό του αθροίσµατος:
= 1 +
1
3!
+
1
5!
+
1
7!
+ ⋯ +
1
19!
2. ∆ηµήτρης Ψούνης – ΠΛΗ10, Τεστ 28
www.psounis.gr
2
Θέµα 3: Ερωτήµατα σε Γλώσσα C
Ερώτηµα 1
Να γραφεί στη γλώσσα προγραµµατισµού C η συνάρτηση:
int win(int nums[], int n)
που δέχεται ως όρισµα τον πίνακα nums[], ο οποίος περιέχει n ακεραίους αριθµούς. Η συνάρτηση να επιστρέφει:
1, αν στον πίνακα οι θετικοί αριθµοί είναι περισσότεροι από τους αρνητικούς αριθµούς
-1, αν στον πίνακα οι αρνητικοί αριθµοί είναι περισσότεροι από τους θετικούς αριθµούς
0, αν το πλήθος των θετικών αριθµών στον πίνακα είναι ίσο µε το πλήθος των αρνητικών
3. ∆ηµήτρης Ψούνης – ΠΛΗ10, Τεστ 28
www.psounis.gr
3
Ερώτηµα 2
Να γραφεί πρόγραµµα στη γλώσσα προγραµµατισµού C, το οποίο διαβάζει διαφορετικές µεταξύ τους ακέραιες τιµές
σε έναν πίνακα 100 θέσεων και στη συνέχεια υπολογίζει και εκτυπώνει τη µέγιστη και την ελάχιστη τιµή του πίνακα,
τη διαφορά αυτών των δύο τιµών και την απόσταση µεταξύ τους (δηλαδή πόσες θέσεις διαφορά έχουν στον πίνακα).
4. ∆ηµήτρης Ψούνης – ΠΛΗ10, Τεστ 28
www.psounis.gr
4
Ερώτηµα 3
Να γραφεί στη γλώσσα προγραµµατισµού C η συνάρτηση:
void sum_dig(int a[], int b[], int N)
που δέχεται ως ορίσµατα τους πίνακες a και b και το µέγεθός τους N (κάθε πίνακας περιέχει N ακεραίους αριθµούς
µε τιµές 0 ή 1 που αντιπροσωπεύουν τα ψηφία ενός δυαδικού αριθµού), η οποία υπολογίζει και εκτυπώνει το
άθροισµα των δύο δυαδικών αριθµών στο δυαδικό σύστηµα. Θεωρήστε ότι το πιο σηµαντικό ψηφίο κάθε δυαδικού
αριθµού βρίσκεται στη θέση 0 του αντίστοιχου πίνακα.
5. ∆ηµήτρης Ψούνης – ΠΛΗ10, Τεστ 28
www.psounis.gr
5
Ερώτηµα 4
Να γραφεί πρόγραµµα στη γλώσσα προγραµµατισµού C, στο οποίο να δηλώνεται δοµή πελάτη µε τα στοιχεία code
(ακέραιος αριθµός), onomateponymo (πίνακας χαρακτήρων 30 θέσεων) και ypoloipo (µη αρνητικός πραγµατικός
αριθµός), να διαβάζονται σε έναν πίνακα δοµών οι αντίστοιχες τιµές για 100 πελάτες (µε αµυντικό προγραµµατισµό
κατά την ανάγνωση του στοιχείου ypoloipo) και να εκτυπώνεται το ονοµατεπώνυµο των πελατών που έχουν
υπόλοιπο µεγαλύτερο από 10,000, καθώς και το συνολικό υπόλοιπο όλων των πελατών.
6. ∆ηµήτρης Ψούνης – ΠΛΗ10, Τεστ 28
www.psounis.gr
6
Θέµα 4: Ερωτήµατα σε ∆οµές ∆εδοµένων
Ερώτηµα 1
α) Σε αρχικά κενή στοίβα, εισάγουµε διαδοχικά τις τιµές 4, 6, 5, 1, 3 και 2. Σχεδιάστε το δέντρο - σωρό (µεγίστων)
που σχηµατίζεται αν διαγράψουµε ένα - ένα τα στοιχεία από τη στοίβα και τα εισάγουµε στο δέντρο (που αρχικά
είναι κενό). Στην απάντησή σας να φαίνεται η µορφή του δέντρου - σωρού που σχηµατίζεται µετά από κάθε
εισαγωγή.
β) ∆ώστε (i) την ενδο-διατεταγµένη και (ii) τη µετα-διατεταγµένη διαπέραση του δέντρου-σωρού που σχηµατίστηκε
στο ερώτηµα α.
γ) ∆ιαγράψτε δύο φορές το στοιχείο στη ρίζα του δέντρου - σωρού που σχηµατίστηκε στο ερώτηµα α και σχεδιάστε
τα δέντρα που θα προκύψουν µετά την πρώτη και τη δεύτερη διαγραφή, αντίστοιχα.
δ) Έστω ένα δέντρο - σωρός µε 20 στοιχεία. Ποιο είναι το ύψος του δέντρου; Τεκµηριώστε την απάντησή σας.
ε) Σε αρχικά κενή ουρά, εισάγουµε διαδοχικά τις τιµές 4, 6, 5, 1, 3 και 2. Σχεδιάστε το δυαδικό δέντρο αναζήτησης
που σχηµατίζεται αν διαγράψουµε ένα - ένα τα στοιχεία από την ουρά και τα εισάγουµε στο δέντρο (που αρχικά είναι
κενό). Στην απάντησή σας να φαίνεται η τελική µορφή του δυαδικού δέντρου αναζήτησης που σχηµατίζεται.
7. ∆ηµήτρης Ψούνης – ΠΛΗ10, Τεστ 28
www.psounis.gr
7
Ερώτηµα 2
Να γραφεί στη γλώσσα προγραµµατισµού C η συνάρτηση:
int sum_pos(struct nodelist *start)
η οποία δέχεται ως όρισµα µια απλά συνδεδεµένη λίστα ακεραίων αριθµών και επιστρέφει το άθροισµα εκείνων των
στοιχείων της λίστας που είναι θετικοί ακέραιοι αριθµοί. Αν η λίστα είναι κενή, η συνάρτηση επιστρέφει -1. Η δοµή
των κόµβων της λίστας δίνεται από τη δήλωση:
struct nodelist {
int number;
struct nodelist *next;
};