🎯 Ασκήσεις PHP

Κεφάλαια 4.1 - 4.10 | Πανεπιστήμιο Πελοποννήσου

📚 Οδηγίες για τις Ασκήσεις

  • Κάθε άσκηση έχει επίπεδο δυσκολίας (Εύκολη, Μέτρια, Δύσκολη)
  • Διάβασε προσεκτικά την εκφώνηση
  • Χρησιμοποίησε τις βοηθητικές υποδείξεις αν χρειαστείς
  • Προσπάθησε να λύσεις την άσκηση μόνος σου πρώτα
  • Στη συνέχεια δες τη λύση και σύγκρινε με το δικό σου κώδικα

📦 Κεφάλαιο 1: Μεταβλητές και Τύποι Δεδομένων

Άσκηση 1.1 Προσωπικά Στοιχεία Εύκολη

📝 Εκφώνηση:

Δημιούργησε μεταβλητές για τα εξής προσωπικά σας στοιχεία:

  • Όνομα (string)
  • Επώνυμο (string)
  • Ηλικία (integer)
  • Μέσος όρος βαθμολογίας (float)
  • Είμαι φοιτητής (boolean)

Εμφάνισε όλες τις πληροφορίες στην οθόνη με την echo.

💡 Υποδείξεις:
  • Οι μεταβλητές ξεκινούν με το σύμβολο $
  • Χρησιμοποίησε διπλά εισαγωγικά " " για strings
  • Για boolean χρησιμοποίησε true ή false
  • Χρησιμοποίησε την τελεία (.) για να ενώσεις κείμενα
📊 Αναμενόμενο Αποτέλεσμα:

Το πρόγραμμα θα πρέπει να εμφανίσει:

  • Τίτλο "Τα Στοιχεία μου"
  • Όνομα: (το όνομά σας)
  • Επώνυμο: (το επώνυμό σας)
  • Ηλικία: (η ηλικία σας) χρονών
  • Μέσος Όρος: (ο μέσος όρος σας)
  • Κατάσταση: Φοιτητής (ή Όχι φοιτητής)
Άσκηση 1.2 Έλεγχος Τύπων Εύκολη

📝 Εκφώνηση:

Δημιούργησε τις παρακάτω μεταβλητές και χρησιμοποίησε τη συνάρτηση var_dump() για να δεις τον τύπο και την τιμή τους:

  • Ένας θετικός ακέραιος αριθμός
  • Ένας αρνητικός ακέραιος αριθμός
  • Ένας δεκαδικός αριθμός
  • Ένα κενό string
  • Μια τιμή null
💡 Υποδείξεις:
  • Η var_dump() εμφανίζει τον τύπο και την τιμή
  • Για κενό string χρησιμοποίησε ""
  • Για null χρησιμοποίησε τη λέξη-κλειδί null
📊 Αναμενόμενο Αποτέλεσμα:

Για κάθε μεταβλητή θα εμφανιστεί:

  • Θετικός αριθμός: int(42)
  • Αρνητικός αριθμός: int(-15)
  • Δεκαδικός αριθμός: float(3.14)
  • Κενό string: string(0) ""
  • Null τιμή: NULL

🔢 Κεφάλαιο 2: Τελεστές

Άσκηση 2.1 Υπολογιστής Τιμής Εύκολη

📝 Εκφώνηση:

Φτιάξε έναν υπολογιστή που:

  • Έχει την τιμή ενός προϊόντος: 100€
  • Έχει ποσοστό έκπτωσης: 20%
  • Υπολογίζει το ποσό της έκπτωσης
  • Υπολογίζει την τελική τιμή
  • Εμφανίζει όλες τις πληροφορίες
💡 Υποδείξεις:
  • Έκπτωση = τιμή * (ποσοστό / 100)
  • Τελική τιμή = τιμή - έκπτωση
  • Χρησιμοποίησε τους τελεστές *, /, -
📊 Αναμενόμενο Αποτέλεσμα:

Το πρόγραμμα θα εμφανίσει:

  • Αρχική τιμή: €100
  • Έκπτωση: 20%
  • Ποσό έκπτωσης: €20
  • Τελική τιμή: €80
Άσκηση 2.2 Συγκρίσεις Αριθμών Εύκολη

📝 Εκφώνηση:

Δημιούργησε δύο μεταβλητές με αριθμούς και:

  • Έλεγξε αν είναι ίσοι
  • Έλεγξε ποιος είναι μεγαλύτερος
  • Έλεγξε ποιος είναι μικρότερος
  • Εμφάνισε τα αποτελέσματα με var_dump()

Παράδειγμα: $a = 15, $b = 20

📊 Αναμενόμενο Αποτέλεσμα:

Για $a = 15 και $b = 20:

  • Είναι ίσοι; bool(false)
  • Το 15 είναι μεγαλύτερο από το 20; bool(false)
  • Το 15 είναι μικρότερο από το 20; bool(true)
  • Το 15 είναι μικρότερο ή ίσο με το 20; bool(true)

🔀 Κεφάλαιο 3: Δομές Ελέγχου

Άσκηση 3.1 Έλεγχος Βαθμού Μέτρια

📝 Εκφώνηση:

Φτιάξε ένα πρόγραμμα που:

  • Έχει μια μεταβλητή $grade με βαθμό (0-100)
  • Ελέγχει τον βαθμό και εμφανίζει μήνυμα:
    • 90-100: "Άριστα! 🌟"
    • 80-89: "Πολύ Καλά! 👍"
    • 70-79: "Καλά 👌"
    • 50-69: "Μέτρια 😐"
    • 0-49: "Απορρίπτεις ❌"
💡 Υποδείξεις:
  • Χρησιμοποίησε if-elseif-else
  • Ξεκίνα από τη μεγαλύτερη τιμή (90) και πήγαινε προς τα κάτω
  • Χρησιμοποίησε τον τελεστή >= για τις συγκρίσεις
📊 Αναμενόμενο Αποτέλεσμα:

Ανάλογα με τον βαθμό:

  • Βαθμός 85: "Βαθμός: 85 - Άριστα! Συγχαρητήρια!"
  • Βαθμός 75: "Βαθμός: 75 - Πολύ καλά!"
  • Βαθμός 55: "Βαθμός: 55 - Πέρασες!"
  • Βαθμός 45: "Βαθμός: 45 - Απέτυχες. Προσπάθησε ξανά."
Άσκηση 3.2 Μήνες του Χρόνου Μέτρια

📝 Εκφώνηση:

Χρησιμοποίησε το switch για να φτιάξεις ένα πρόγραμμα που:

  • Έχει μια μεταβλητή $month με αριθμό μήνα (1-12)
  • Εμφανίζει το όνομα του μήνα στα ελληνικά
  • Εμφανίζει πόσες μέρες έχει ο μήνας
  • Για μη έγκυρο αριθμό εμφανίζει μήνυμα λάθους
💡 Υποδείξεις:
  • Χρησιμοποίησε switch ($month) { case 1: ... }
  • Μην ξεχάσεις το break; μετά από κάθε case
  • Χρησιμοποίησε default: για μη έγκυρες τιμές
  • Ιανουάριος = 31, Φεβρουάριος = 28, κλπ.
📊 Αναμενόμενο Αποτέλεσμα:

Πίνακας αριθμών από 1 έως 10 με τα τετράγωνά τους:

  • 1 στο τετράγωνο = 1
  • 2 στο τετράγωνο = 4
  • 3 στο τετράγωνο = 9
  • ... μέχρι το 10 στο τετράγωνο = 100
Άσκηση 3.3 Πίνακας Πολλαπλασιασμού Μέτρια

📝 Εκφώνηση:

Χρησιμοποίησε το for loop για να φτιάξεις τον πίνακα πολλαπλασιασμού του 5:

  • Εμφάνισε: 5 x 1 = 5
  • 5 x 2 = 10
  • ... μέχρι το 5 x 10 = 50
💡 Υποδείξεις:
  • Χρησιμοποίησε for ($i = 1; $i <= 10; $i++)
  • Υπολόγισε το γινόμενο: $result = 5 * $i
  • Χρησιμοποίησε <br> για νέα γραμμή
📊 Αναμενόμενο Αποτέλεσμα:

Θα εμφανιστούν μόνο οι άρτιοι αριθμοί από 1 έως 20:

2, 4, 6, 8, 10, 12, 14, 16, 18, 20

Άσκηση 3.4 Άθροισμα Αριθμών Μέτρια

📝 Εκφώνηση:

Χρησιμοποίησε το while loop για να:

  • Υπολογίσεις το άθροισμα των αριθμών από 1 έως 100
  • Εμφανίσεις το τελικό αποτέλεσμα
  • Εμφανίσεις πόσες επαναλήψεις έγιναν
💡 Υποδείξεις:
  • Ξεκίνα με $sum = 0 και $i = 1
  • Στο loop: $sum += $i
  • Αύξησε το $i σε κάθε επανάληψη
  • Συνέχισε μέχρι το $i να γίνει > 100
📊 Αναμενόμενο Αποτέλεσμα:

Με $day = 3 (Τρίτη):

"Σήμερα είναι: Τρίτη"

Για κάθε διαφορετικό αριθμό (1-7) θα εμφανίζεται η αντίστοιχη ημέρα.

⚙️ Κεφάλαιο 4: Συναρτήσεις

Άσκηση 4.1 Υπολογισμός Εμβαδού Εύκολη

📝 Εκφώνηση:

Δημιούργησε συναρτήσεις για τον υπολογισμό εμβαδών:

  • calculateRectangleArea($width, $height) - Εμβαδόν ορθογωνίου
  • calculateCircleArea($radius) - Εμβαδόν κύκλου (π * r²)
  • calculateTriangleArea($base, $height) - Εμβαδόν τριγώνου (β * υ / 2)

Κάλεσε τις συναρτήσεις με παραδείγματα και εμφάνισε τα αποτελέσματα.

💡 Υποδείξεις:
  • Χρησιμοποίησε return για να επιστρέψεις το αποτέλεσμα
  • Για το π χρησιμοποίησε 3.14 ή pi()
  • Φόρμουλες: ορθογώνιο = πλάτος * ύψος, κύκλος = π * r², τρίγωνο = (βάση * ύψος) / 2
📊 Αναμενόμενο Αποτέλεσμα:

Λίστα με bullet points:

  • Μήλα
  • Πορτοκάλια
  • Μπανάνες
  • Φράουλες
  • Σταφύλια

Σύνολο: 5 φρούτα

Άσκηση 4.2 Ελεγκτής Κωδικών Μέτρια

📝 Εκφώνηση:

Δημιούργησε μια συνάρτηση validatePassword($password) που ελέγχει αν ένας κωδικός είναι ισχυρός:

  • Πρέπει να έχει τουλάχιστον 8 χαρακτήρες
  • Επιστρέφει true αν ο κωδικός είναι έγκυρος
  • Επιστρέφει false αν όχι

Δοκίμασε τη συνάρτηση με διάφορους κωδικούς.

💡 Υποδείξεις:
  • Χρησιμοποίησε strlen($password) για να βρεις το μήκος
  • Σύγκρινε με τον τελεστή >=
  • Επίστρεψε boolean τιμή (true/false)
📊 Αναμενόμενο Αποτέλεσμα:

Πίνακας HTML με τα εξής στοιχεία για κάθε φοιτητή:

  • Γιώργος - Ηλικία: 22 - Βαθμός: 85
  • Μαρία - Ηλικία: 21 - Βαθμός: 92
  • Νίκος - Ηλικία: 23 - Βαθμός: 78

📚 Κεφάλαιο 5: Arrays (Πίνακες)

Άσκηση 5.1 Λίστα Αγορών Εύκολη

📝 Εκφώνηση:

Δημιούργησε ένα indexed array με προϊόντα για αγορά:

  • Τουλάχιστον 5 προϊόντα
  • Χρησιμοποίησε foreach για να τα εμφανίσεις σε μια HTML λίστα (<ul><li>)
  • Εμφάνισε επίσης πόσα προϊόντα έχεις στη λίστα
💡 Υποδείξεις:
  • Χρησιμοποίησε $products = ["item1", "item2", ...]
  • Χρησιμοποίησε count($products) για το πλήθος
  • Χρησιμοποίησε foreach ($products as $product)
📊 Αναμενόμενο Αποτέλεσμα:

Για input $num = 5:

"Το τετράγωνο του 5 είναι: 25"

Για input $num = 7:

"Το τετράγωνο του 7 είναι: 49"

Άσκηση 5.2 Βαθμολογία Φοιτητών Μέτρια

📝 Εκφώνηση:

Δημιούργησε ένα associative array με φοιτητές και βαθμούς:

  • Κλειδιά: Ονόματα φοιτητών
  • Τιμές: Βαθμοί (0-100)
  • Χρησιμοποίησε foreach για να εμφανίσεις όλους τους φοιτητές
  • Υπολόγισε και εμφάνισε τον μέσο όρο βαθμολογίας
💡 Υποδείξεις:
  • Χρησιμοποίησε $students = ["name" => grade, ...]
  • Χρησιμοποίησε foreach ($students as $name => $grade)
  • Άθροισε όλους τους βαθμούς και διαίρεσε με το πλήθος
  • Χρησιμοποίησε round() για στρογγυλοποίηση
📊 Αναμενόμενο Αποτέλεσμα:

Πίνακας πολλαπλασιασμού του 7 (1-10):

  • 7 x 1 = 7
  • 7 x 2 = 14
  • 7 x 3 = 21
  • ... μέχρι το 7 x 10 = 70
Άσκηση 5.3 Κατάλογος Προϊόντων Δύσκολη

📝 Εκφώνηση:

Δημιούργησε έναν multidimensional array με προϊόντα που έχουν:

  • Όνομα προϊόντος
  • Τιμή
  • Ποσότητα σε stock

Εμφάνισε τα προϊόντα σε έναν HTML πίνακα και υπολόγισε:

  • Συνολική αξία αποθέματος για κάθε προϊόν (τιμή * ποσότητα)
  • Συνολική αξία όλων των προϊόντων
💡 Υποδείξεις:
  • Χρησιμοποίησε array of arrays
  • Κάθε προϊόν είναι ένα associative array
  • Χρησιμοποίησε foreach μέσα σε HTML table
  • Άθροισε τις τιμές σε μια μεταβλητή
📊 Αναμενόμενο Αποτέλεσμα:

Πίνακας HTML με:

  • Laptop - €799.99 - 2 τεμάχια - Σύνολο: €1,599.98
  • Ποντίκι - €25.50 - 5 τεμάχια - Σύνολο: €127.50
  • Πληκτρολόγιο - €59.99 - 3 τεμάχια - Σύνολο: €179.97

ΓΕΝΙΚΟ ΣΥΝΟΛΟ: €1,907.45

🎯 Κεφάλαιο 6: Συνδυαστικές Ασκήσεις

Άσκηση 6.1 Σύστημα Βαθμολόγησης Δύσκολη

📝 Εκφώνηση:

Δημιούργησε ένα ολοκληρωμένο σύστημα βαθμολόγησης που:

  • Έχει array με φοιτητές και βαθμούς τους
  • Δημιουργεί συνάρτηση getLetterGrade($score) που μετατρέπει αριθμό σε γράμμα (A, B, C, D, F)
  • Εμφανίζει πίνακα με: Όνομα, Βαθμός, Γράμμα
  • Υπολογίζει και εμφανίζει:
    • Μέσο όρο
    • Πλήθος επιτυχόντων (>= 50)
    • Πλήθος αποτυχόντων (< 50)
💡 Υποδείξεις:
  • Χρησιμοποίησε associative array για φοιτητές
  • Στη συνάρτηση χρησιμοποίησε if-elseif για γράμματα
  • Χρησιμοποίησε μετρητές για πλήθος επιτυχόντων/αποτυχόντων
  • 90-100: A, 80-89: B, 70-79: C, 60-69: D, 0-59: F
📊 Αναμενόμενο Αποτέλεσμα:

Πίνακας HTML με στήλες: Όνομα, Βαθμός, Γράμμα, Κατάσταση

Παράδειγμα γραμμών:

  • Γιώργος - 92 - A - ✅ Επιτυχία
  • Μαρία - 87 - B - ✅ Επιτυχία
  • Νίκος - 45 - F - ❌ Αποτυχία

Στατιστικά:

  • Μέσος Όρος: 67.5
  • Επιτυχόντες: 4 φοιτητές
  • Αποτυχόντες: 2 φοιτητές

🎉 Συγχαρητήρια!

Ολοκλήρωσες όλες τις ασκήσεις των κεφαλαίων 4.1 - 4.10!

Επόμενα βήματα:

  • Δοκίμασε να λύσεις ξανά τις ασκήσεις χωρίς να κοιτάς τις λύσεις
  • Πειραματίσου με τον κώδικα - άλλαξε τιμές και δες τι συμβαίνει
  • Προσπάθησε να δημιουργήσεις δικές σου παραλλαγές
  • Συνέχισε με το Κεφάλαιο 4.11 και μετά!