# ΕΑΠ - ΠΛΗΠΡΟ (ΟΣΣ2)
**Ομάδα ΗΛΕ65**
2η Ομαδική Συμβουλευτική Συνάντηση (ΟΣΣ) στις 4/12/2021
Τελευταία ενημέρωση: 4/2/2022
Σ.Ε.Π.: Γκόγκος Χρήστος
:::danger
Η συγκεκριμένη σελίδα μπορεί να χρησιμοποιηθεί για ερωτήσεις κατά τη διάρκεια της ΟΣΣ.
:::
Η παρουσίαση της 2ης ΟΣΣ έχει αναρτηθεί στο [study.eap.gr](https://study.eap.gr/).
## Πρόγραμμα ΟΣΣ
| Ώρα | Θέμα |
| --- | ---- |
|4:00-4:30| Συζήτηση για τη [Γραπτή Εργασία 1](https://github.com/chgogos/PLHPRO_HLE65/raw/gh-pages/ge1/GE1_2021-2022.pdf) [thema1.py](https://github.com/chgogos/PLHPRO_HLE65/blob/gh-pages/ge1/thema1.py), [thema2.py](https://github.com/chgogos/PLHPRO_HLE65/blob/gh-pages/ge1/thema2.py), [thema3.py](https://github.com/chgogos/PLHPRO_HLE65/blob/gh-pages/ge1/thema3.py), [thema4.py](https://github.com/chgogos/PLHPRO_HLE65/blob/gh-pages/ge1/thema4.py) |
|4:30-4:40| Σύνοψη ύλης μέχρι και την ΓΕ1, [άσκηση 1](#Άσκηση-1) |
|4:40-5:00| Δομές Δεδομένων - Λίστες (lists) [άσκηση 2](#Άσκηση-2), [άσκηση 3](#Άσκηση-3) |
|5:00-5:15| Δομές Δεδομένων - Πλειάδες (tuples) [άσκηση 4](#Άσκηση-4) |
|5:15-5:30| Διάλειμμα |
|5:30-5:45| Δομές Δεδομένων - Σύνολα (sets) [άσκηση 5](#Άσκηση-5) |
|5:45-6:00| Δομές Δεδομένων - Λεξικά (dictionaries) [άσκηση 6](#Άσκηση-6)|
|6:00-6:30| Δομημένος προγραμματισμός [άσκηση 7](#Άσκηση-8) |
|6:30-6:40| Γραπτή Εργασία 1.4 - μηχανή καφέ (λύση με λίστες, λεξικά και δομημένο προγραμματισμό) [coffee-vending-v1.py](https://github.com/chgogos/PLHPRO_HLE65/blob/gh-pages/coffee-vending-v1.py), [coffee-vending-v2.py](https://github.com/chgogos/PLHPRO_HLE65/blob/gh-pages/coffee-vending-v2.py)|
|6:40-7:00| Συζήτηση για τη [Γραπτή Εργασία 2](https://github.com/chgogos/PLHPRO_HLE65/raw/gh-pages/ge2/GE_2_2021-2022.pdf) |
### Άσκηση 1
Συνεργασία σε τετράδες, 5 λεπτά
Ποιο είναι το κόστος αγοράς για X βιβλία όταν η αρχική τιµή ενός βιβλίου είναι B ευρώ, αλλά το βιβλιοπωλείο κάνει έκπτωση 20% στις online παραγγελίες. Το κόστος αποστολής είναι 2 ευρώ για το πρώτο βιβλίο και 1 ευρώ για κάθε επιπλέον βιβλίο. Ζητήστε τα Χ και Β από τον χρήστη και τυπώστε το κόστος της παραγγελίας.
* [Λύση](https://github.com/chgogos/PLHPRO_HLE65/blob/gh-pages/oss2_slide6.py)
* [Μια πληρέστερη λύση](https://github.com/chgogos/PLHPRO_HLE65/blob/gh-pages/oss2_slide7.py)
### Άσκηση 2
Συνεργασία σε τετράδες, 3 λεπτά
Κατασκευάστε ένα πρόγραμμα που θα βρίσκει τον μικρότερο αριθμό σε μία λίστα.
```
li = [10, 5, 125, 44, 2]
```
* [Λύση](https://github.com/chgogos/PLHPRO_HLE65/blob/gh-pages/oss2_slide22.py)
### Άσκηση 3
Συνεργασία σε τετράδες, 4 λεπτά
Κατασκευάστε ένα πρόγραμμα που:
1. Θα ζητάει έναν ακέραιο αριθμό από τον χρήστη.
2. Θα ψάχνει να βρει αυτό τον ακέραιο αριθμό σε μια λίστα που θα υπάρχει στην μνήμη.
```
li = [10, 5, 125, 44, 2]
```
3. Την πρώτη φορά που θα τον βρει στην λίστα θα τερματίζει το πρόγραμμα και ενημερώνει τον χρήστη σε ποια θέση της λίστας είναι ο αριθμός.
4. Εάν ο αριθμός αυτός δεν υπάρχει στην λίστα θα ενημερώνει τον χρήστη.
* [Λύση](https://github.com/chgogos/PLHPRO_HLE65/blob/gh-pages/oss2_slide25.py)
* [Μια εναλλακτική λύση](https://github.com/chgogos/PLHPRO_HLE65/blob/gh-pages/oss2_slide26.py)
### Άσκηση 4
Συνεργασία σε τετράδες, 5 λεπτά
Κατασκευάστε ένα πρόγραμμα το οποίο θα ζητάει από τον χρήστη να πληκτρολογήσει μια συμβολοσειρά και να την τοποθετεί στην θέση του τρίτου στοιχείου (index = 2) της πλειάδας:
```
t = ('a', 'b', 'c', 'd', 'e')
```
Υπόδειξη: επειδή η πλειάδα είναι μη τροποποιήσιμη, πρώτα την μετατρέπουμε σε λίστα list(), στη συνέχεια κάνουμε την τροποποίηση και τέλος την ξανακάνουμε πλειάδα tuple()
* [Λύση](https://github.com/chgogos/PLHPRO_HLE65/blob/gh-pages/oss2_slide35.py)
### Άσκηση 5
Συνεργασία σε τετράδες, 5 λεπτά
Κατασκευάστε ένα πρόγραμμα το οποίο θα βρίσκει τα μοναδικά στοιχεία δύο συνόλων Α και Β, δηλαδή αυτά που εμφανίζονται ή μόνο στο ένα ή μόνο στο άλλο σύνολο, και να εκτυπώνει:
1. Τα μοναδικά στοιχεία ως νέο σύνολο με όνομα C.
2. Τον αριθμό των μοναδικών στοιχείων.
3. Ένα μήνυμα για το εάν η συμβολοσειρά «test» υπάρχει σε ένα από τα δυο σύνολα και σε ποιο;
4. Τον τύπο του κάθε στοιχείου του συνόλου C.
```
a = {'a', '2', 'test', 'b', 23}
b = {'a', '3', 'b', 'E', 24}
```
* [Λύση](https://github.com/chgogos/PLHPRO_HLE65/blob/gh-pages/oss2_slide44.py)
### Άσκηση 6
Συνεργασία σε τετράδες, 5 λεπτά
Να γράψετε εφαρμογή διαχείρισης επαφών (όνομα και τηλέφωνο) που να έχει την εξής συμπεριφορά: όταν ο χρήστης πατήσει '+' ζητάει όνομα και τηλέφωνο και προσθέτει τη νέα επαφή. Όταν ο χρήστης πατήσει '?' παρουσιάζει αλφαβητικό κατάλογο των επαφών, όταν πατήσει ```<enter>``` τερματίζει.
```
πατήστε + για νέα επαφή, ? για λίστα επαφών
>>>+
όνομα:Νίκος
τηλέφωνο:5678
πατήστε + για νέα επαφή, ? για λίστα επαφών
>>>+
όνομα:Κατερίνα
τηλέφωνο:8899
πατήστε + για νέα επαφή, ? για λίστα επαφών
>>>?
Κατερίνα: 8899
Νίκος: 5678
πατήστε + για νέα επαφή, ? για λίστα επαφών
>>>
```
* [Λύση](https://github.com/chgogos/PLHPRO_HLE65/blob/gh-pages/oss2_slide57.py)
### Άσκηση 7
Συνεργασία σε τετράδες, 5 λεπτά
Να κατασκευαστεί πρόγραμμα που θα υπολογίζει το Ν! (=1 * 2 * 3 * ... * Ν) ενός μη αρνητικού ακεραίου. Να λυθεί επαναληπτικά και αναδρομικά.
* [Λύση](https://github.com/chgogos/PLHPRO_HLE65/blob/gh-pages/oss2_slide75.py)
### Άσκηση 8
Συνεργασία σε τετράδες, 8 λεπτά
Γράψτε ένα πρόγραμμα που θα έχει μια συνάρτηση και θα παίρνει ως όρισμα έναν φυσικό αριθμό n και θα επιστρέφει τη n-ιοστή γραμμή του τριγώνου του Pascal. Οι δύο πλευρές του τριγώνου πρέπει να είναι 1, οι υπόλοιποι συντελεστές προκύπτουν αθροίζοντας τους δύο πάνω δεξιά και αριστερά όρους, όπως φαίνεται στην εικόνα.

https://en.wikipedia.org/wiki/Pascal%27s_triangle
* [Λύση](https://github.com/chgogos/PLHPRO_HLE65/blob/gh-pages/oss2_slide80.py)
* [Εναλλακτική λύση με αναδρομή](https://github.com/chgogos/PLHPRO_HLE65/blob/gh-pages/oss2_slide80.py)
## Ερωτήσεις και απαντήσεις
- Έτσι κάνουμε ερωτήσεις;
- ναι, και εδώ είναι μια απάντηση
- Τι τρέχει με τους πραγματικούς αριθμούς; Γιατί 0.1 + 0.1 + 0.1 != 0.3;
- https://betterprogramming.pub/why-is-0-1-0-2-not-equal-to-0-3-in-most-programming-languages-99432310d476
- https://docs.python.org/3/tutorial/floatingpoint.html
- ...
:::info
* Πάντα, κάνετε ερωτήσεις στο κάτω μέρος του εγγράφου, ακριβώς πάνω από εδώ
:::