Ιωάννης Α Γκίνης
Πρώην Εκπαιδευτικός, ΠΕ20 Πληροφορικής
ΕΠΑΛ Σαλαμίνας
Ζωοδόχου Πηγής 21 – Τ.Κ. 189 00
Τηλ.: 210 46 50 614, Fax: 210 46 58 444

Αρχική σελίδα Δίκτυα Υπολογιστών ΙΙ Δομημένος Προγραμματισμός Περί του...

Δομημένος Προγραμματισμός

Περιγραφή του μαθήματος

Το μάθημα Δομημένος Προγραμματισμός εντάσσεται στο ωρολόγιο πρόγραμμα της Γ' Τάξης του τομέα Πληροφορικής της ειδικότητας Υποστήριξης Συστημάτων, Εφαρμογών και Δικτύων Η/Υ των ΕΠΑ.Λ.
Το μάθημα έχει γενικό σκοπό να αποκτήσει ο μαθητής ικανότητες μεθοδολογικού χαρακτήρα, να μπορεί να επιλύει απλά προβλήματα και να αναπτύσσει απλές εφαρμογές σε προγραμματιστικό περιβάλλον.

Το μάθημα δομείται σε τέσσερις άξονες-ενότητες:

  1. Ανάλυση προβλήματος
  2. Σχεδίαση και Ανάπτυξη αλγορίθμων
  3. Υλοποίηση σε Προγραμματιστικό Περιβάλλον
  4. Αξιολόγηση-Τεκμηρίωση προγράμματος

Αποθετήριο αρχείων

Στην ενότητα αυτή θα μπορείτε να μεταφορτώνετε αρχεία τα οποία θεωρούμε χρήσιμα για το μάθημά μας.
Για την αποσυμπίεση ίσως χρειαστεί να εγκαταστήσετε το πρόγραμμα 7-zip που μπορείτε να μεταφορτώσετε από την ιστοσελίδα του κατασκευαστή.
Ορισμένα από τα αρχεία είναι διαθέσιμα και σε μορφή αρχείου PDF. Αν χρειαστεί, μεταφορτώστε το Adobe Acrobat Reader.

  • Θέματα Πανελλαδικών εξετάσεων Ημερησίων και Εσπερινών Επαγγελματικών Λυκείων (Ομάδα Α') και μαθημάτων ειδικότητας Επαγγελματικών Λυκείων (Ομάδα Β')
    • 2015, 2014, 2013, 2012, 2011, 2010 — Διευκρίνηση, 2009
  • Ύλη των εξετάσεων του μαθήματος Δομημένος Προγραμματισμός
    • 2012, 2011, 2010
  • Κεφάλαιο 9 - Βασικές Εντολές
    • Οι λύσεις των ασκήσεων [pdf] και ο πηγαίος κώδικας των ασκήσεων [7z/pas]
  • Το βιβλίο του μαθητή από το Παιδαγωγικό Ινστιτούτο σε ηλεκτρονική μορφή

Το βιβλίο του μαθητή (πειραγμένη έκδοση v1.0)

Τι είναι αυτό;

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

Σε τι διαφέρει από αυτό του υπουργείου;

Στο ό,τι είναι πιο προσεγμένη η σάρωση αλλά κυρίως στο ό,τι έχω σημειώσει κάποιες παρατηρήσεις και έχω μαρκάρει αυτά που θεωρώ ως πιο σημαντικά.
Επίσης, το συγκεκριμένο ηλεκτρονικό έγγραφο μορφής pdf, περιέχει σελιδοδείκτες για την ευκολότερη πλοήγηση στα περιεχόμενά του.

Προσοχή: Μη θεωρηθεί ότι τα όσα δεν έχουν σημειωθεί, δεν ανήκουν στην ύλη και πως δε θα πρέπει να διαβαστούν.

Πως μπορώ να το μεταφορτώσω (κατεβάσω);

Κάντε κλικ εδώ για να μεταφορτώσετε το βιβλίο του μαθητή (πειραγμένη έκδοση v1.0)

Ποιες άλλες επιλογές υπάρχουν;

  • Κάντε κλικ εδώ για να το προβάλετε απευθείας σε μορφή pdf με χρήση της υπηρεσίας Scribd
  • Κάντε κλικ εδώ για να το προβάλετε απευθείας σε μορφή e-book με χρήση της υπηρεσίας issuu ή δείτε το παρακάτω.

Σύνδεσμοι σχετικοί με το μάθημα

Στην ενότητα αυτή θα παραθέτουμε υπερσυνδέσμους σε ιστοσελίδες τρίτων, με υλικό σχετικό με το μάθημά μας.

  • Blog με θέματα από τον Δομημένο Προγραμματισμό
  • Γ' Πληροφορικής 1ου ΕΠΑΛ Κιλκίς
  • Ο Δομημένος Προγραμματισμός στο blog του κυρίου των υπολογιστών
  • Ο Δομημένος Προγραμματισμός στο Στέκι των Πληροφορικών
    • Ηλεκτρονικό βιβλίο με τις απαντήσεις όλων των ερωτήσεων και ασκήσεων του σχολικού βιβλίου.
    • Ο κώδικας των ασκήσεων, ερωτήσεων, δραστηριοτήτων του ΔΠ.
  • Μεταφορτώστε το δωρεάν πρόγραμμα για τη δημιουργία Λογικών Διαγραμμάτων yEd Graph Editor.
  • Μεταφορτώστε το ολοκληρωμένο περιβάλλον ανάπτυξης (IDE) εφαρμογών σε γλώσσα Pascal, Dev-Pascal ver. 1.9.2.

Παρουσιάσεις του μαθήματος

Στην ενότητα αυτή θα μπορείτε να μεταφορτώνετε τα αρχεία τα οποία θα περιέχουν τις παρουσιάσεις σε Microsoft Office PowerPoint 2007 που θα προβάλλονται κατά τη διάρκεια του μαθήματος.
Τα αρχεία είναι συμπιεσμένα σε μορφή 7z. Για την αποσυμπίεση ίσως χρειαστεί να εγκαταστήσετε το κατάλληλο πρόγραμμα που μπορείτε να μεταφορτώσετε από την ιστοσελίδα του κατασκευαστή. Θα πρέπει να σημειωθεί ότι το εργαλείο 7-zip παρέχεται ως freeware.
Ορισμένα από τα αρχεία είναι διαθέσιμα και σε μορφή αρχείου PDF. Αν χρειαστεί, μεταφορτώστε το Adobe Acrobat Reader.

  • Διάφορες παρουσιάσεις
    • Ανάλυση των Ασκήσεων έκδ. 9.90 (20.11.2010) [7z/ppt]
    • Το Κόσκινο του Ερατοσθένη [7z/ppt]
    • Τελεστές Mod και Div [7z/ppt]
  • Κεφάλαιο 8 - Η γλώσσα Pascal
    • 8.1 Εισαγωγή [7z/pptx] [pdf] [e-book]
    • 8.2 Βασικοί τύποι δεδομένων [7z/pptx] [pdf] [e-book]

Λογικά Διαγράμματα

Ο τρόπος αναπαράστασης του αλγορίθμου που χρησιμοποιεί απλά σχήματα που υποστηρίζονται από απλές λέξεις για την αναπαράσταση συγκεκριμένων λειτουργιών καλείται Λογικό Διάγραμμα ή Διάγραμμα Ροής.
Στην ενότητα αυτή μπορείτε να μεταφορτώνετε το αρχείο παρουσίασης σε Microsoft Office PowerPoint που θα περιέχει λογικά διαγράμματα από ασκήσεις του βιβλίου. Το αρχείο αυτό θα ενημερώνεται κατά τακτά χρονικά διαστήματα με νέα διαγράμματα και γι' αυτό το λόγο θα συνοδεύεται από αριθμό έκδοσης.
Το αρχείο είναι συμπιεσμένο σε μορφή 7z. Για την αποσυμπίεση ίσως χρειαστεί να εγκαταστήσετε το κατάλληλο πρόγραμμα που μπορείτε να μεταφορτώσετε από την ιστοσελίδα του κατασκευαστή. Θα πρέπει να σημειωθεί ότι το εργαλείο 7-zip παρέχεται ως freeware.

  • Μεταφόρτωση του Λογικά Διαγράμματα έκδ. 3.81 (20.11.2010) [7z/ppt]
  • Μεταφορτώστε το δωρεάν πρόγραμμα για τη δημιουργία Λογικών Διαγραμμάτων yEd Graph Editor.

Ψευδοκώδικας

Η καταγραφή του αλγορίθμου με χρησιμοποίηση της προστατικής διαφόρων ρημάτων (Διάβασε, Εμφάνισε, κ.λπ.), απλών προτάσεων και συμβόλων καλείται ψευδοκώδικας.
Στην ενότητα αυτή παραθέτουμε αλγορίθμους από τις ασκήσεις του βιβλίου του μαθήματος Προγραμματισμός Υπολογιστών υπό μορφή ψευδοκώδικα, έτσι όπως αυτός προτείνεται από τους συγγραφείς του.

Άσκηση 1η (Άσκηση 1, Σελίδα 7)

Δίνεται ο αριθμός των νικών και των ηττών μιας ομάδας καλαθοσφαίρισης (μπάσκετ) σε μια αγωνιστική περίοδο. Η ομάδα βαθμολογείται για κάθε νίκη με δύο βαθμούς και για κάθε ήττα με ένα. Ζητείται να υπολογισθεί η συνολική βαθμολογία της ομάδας στο τέλος της περιόδου. Να παραστήσετε με ψευδοκώδικα τον αλγόριθμο του προβλήματος.

Ψευδοκώδικας Ασκ1Σελ7

Αρχή
  Διάβασε τα δεδομένα: Αριθμός_Νικών
                       Αριθμός_Ηττών

  Συνολική_Βαθμολογία = Αριθμός_Νικών * 2 + Αριθμός_Ηττών * 1

  Εμφάνισε Συνολική_Βαθμολογία
Τέλος

Άσκηση 2η (Άσκηση 2, Σελίδα 7)

Δίνονται το ονοματεπώνυμο, η διεύθυνση, το τηλέφωνο και το πλήθος των KW ρεύματος που κατανάλωσε ένας πελάτης της ΔΕΗ. Η ηλεκτρική εταιρεία κοστολογεί τα πρώτα 100 KW προς 0,05€ το ένα και τα υπόλοιπα προς 0,07€. Ζητείται να υπολογισθεί το ποσό που θα καταβάλει ο καταναλωτής. Να παραστήσετε με ψευδοκώδικα τον αλγόριθμο του προβλήματος.

Ψευδοκώδικας Ασκ2Σελ7

Αρχή
  Διάβασε τα δεδομένα: Ονοματεπώνυμο
                       Διεύθυνση
                       Τηλέφωνο
                       KW

  Αν KW > 100 Τότε
    Ποσό = 100 * 0,05 + (KW - 100) * 0,07
  Αλλιώς
    Ποσό = KW * 0,05

  Εμφάνισε 'Ο πελάτης ', Ονοματεπώνυμο, ' οφείλει ', Ποσό, ' €'
Τέλος

Άσκηση 3η (Άσκηση 3, Σελίδα 7)

Δίνονται οι δικαιολογημένες και οι αδικαιολόγητες απουσίες ενός μαθητή με δεδομένο ότι το όριο των δικαιολογημένων απουσιών είναι 50 και το όριο των αδικαιολόγητων 60. Να ελέγξετε, αν ο μαθητής προάγεται ή απορρίπτεται λόγω απουσιών. Να παραστήσετε με ψευδοκώδικα τον αλγόριθμο του προβλήματος.

Ψευδοκώδικας Ασκ3Σελ7

Αρχή
  Διάβασε τα δεδομένα: Δικαιολογημένες
                       Αδικαιολόγητες

  Αν (Δικαιολογημένες > 50) ή (Αδικαιολόγητες > 60) Τότε
    Εμφάνισε 'Ο μαθητής απορρίπτεται'
  Αλλιώς
    Εμφάνισε 'Ο μαθητής προάγεται'
Τέλος

Άσκηση 4η (Άσκηση 4, Σελίδα 14)

Δίνονται το μήκος και το πλάτος μιας διδακτικής αίθουσας, να υπολογίσετε το εμβαδόν της. Να παραστήσετε με ψευδοκώδικα τον αλγόριθμο του προβλήματος.

Ψευδοκώδικας Ασκ4Σελ14

Αρχή
  Διάβασε τα δεδομένα: Μήκος
                       Πλάτος

  Εμβαδόν = Μήκος * Πλάτος

  Εμφάνισε 'Το εμβαδόν της αίθουσας είναι ', Εμβαδόν
Τέλος

Άσκηση 5η (Πρόβλημα 1, Σελίδα 22)

Να υπολογισθεί το πληρωτέο ποσό ενός εργαζομένου, όταν είναι γνωστός ο βασικός μισθός του, οι υπερωρίες, η ωριαία αποζημίωση των υπερωριών, το ποσοστό κρατήσεων για ασφάλιση και το ποσοστό κράτησης φόρου, εφόσον οι καθαρές αποδοχές του υπερβαίνουν ένα ελάχιστο όριο. Να παραστήσετε με ψευδοκώδικα τον αλγόριθμο του προβλήματος.

Ψευδοκώδικας Προ1Σελ22

Αρχή
  Διάβασε τα δεδομένα: Βασικός_Μισθός
                       Αριθμός_Ωρών_Υπερωριών
                       Ωριαία_Αποζημίωση_Υπερωρίας
                       Ποσοστό_Κρατήσεων_Ασφάλισης
                       Ποσοστό_Κρατήσεων_Φόρου
                       Ελάχιστο_Όριο

  Υπερωριακή_Αποζημίωση = Αριθμός_Ωρών_Υπερωριών * Ωριαία_Αποζημίωση_Υπερωρίας
  Αποδοχές = Βασικός_Μισθός + Υπερωριακή_Αποζημίωση
  Κρατήσεις_Ασφάλισης = Αποδοχές * Ποσοστό_Κρατήσεων_Ασφάλισης
  Καθαρές_Αποδοχές = Αποδοχές - Κρατήσεις_Ασφάλισης
  Αν Καθαρές_Αποδοχές > Ελάχιστο_Όριο Τότε
    Φόρος = Καθαρές_Αποδοχές * Ποσοστό_Κρατήσεων_Φόρου
  Αλλιώς
    Φόρος = 0
  Πληρωτέο_Ποσό = Καθαρές_Αποδοχές - Φόρος

  Εμφάνισε Πληρωτέο_Ποσό
Τέλος

Άσκηση 6η (Άσκηση 1, Σελίδα 34)

Δίνονται το ονοματεπώνυμο του κάθε μαθητή μιας τάξης και η βαθμολογία του στο μάθημα της Πληροφορικής και θέλουμε να υπολογίσουμε το μέσο όρο της βαθμολογίας των μαθητών της τάξης στο μάθημα αυτό. Να παραστήσετε με ψευδοκώδικα τον αλγόριθμο του προβλήματος.

Παρατήρηση: Ακολουθούμε την υπόδειξη του σχολικού βιβλίου σελ. 10 Από τα στοιχεία … καλούμαστε να επιλέξουμε εκείνα τα οποία είναι απαραίτητα για τη λύση του προβλήματος… Τα απαραίτητα αυτά στοιχεία είναι τα Δεδομένα.

Ψευδοκώδικας Ασκ1Σελ34

Αρχή
  Πλήθος_Μαθητών = 0
  Συνολική_Βαθμολογία = 0

  Επανάλαβε
    Διάβασε τα δεδομένα: Βαθμός_Μαθητή
    Πλήθος_Μαθητών = Πλήθος_Μαθητών + 1
    Συνολική_Βαθμολογία = Συνολική_Βαθμολογία + Βαθμός_Μαθητή
    Διάβασε τα δεδομένα: Συνέχεια
  Μέχρι Συνέχεια = 'Ο'
  Μέσος_Όρος_Βαθμολογίας = Συνολική_Βαθμολογία / Πλήθος_Μαθητών

  Εμφάνισε Μέσος_Όρος_Βαθμολογίας
Τέλος

Άσκηση 7η (Άσκηση 2, Σελίδα 34)

Δίνεται η ηλικία καθενός από τους καθηγητές του σχολείου μας και ζητείται να υπολογισθεί ο μέσος όρος της ηλικίας τους. Να παραστήσετε με ψευδοκώδικα τον αλγόριθμο του προβλήματος.

Παρατήρηση: Κάνουμε χρήση της επαναληπτικής δομής Εφόσον <συνθήκη> Επανάλαβε για λόγους διαφοροποίησης από τη προηγούμενη άσκηση. Αυτό σημαίνει ότι θα μπορούσαμε και ίσως ήταν προτιμότερο, να χρησιμοποιήσουμε τη δομή επανάληψης Επανάλαβε … Μέχρι <συνθήκη>.

Ψευδοκώδικας Ασκ2Σελ34

Αρχή
  Πλήθος = 0
  Συνολική_Ηλικία = 0

  Διάβασε τα δεδομένα: Ηλικία

  Εφόσον Ηλικία > 0 Επανάλαβε
  Αρχή
    Πλήθος = Πλήθος + 1
    Συνολική_Ηλικία = Συνολική_Ηλικία + Ηλικία
    Διάβασε τα δεδομένα: Ηλικία
  Τέλος

  Αν Πλήθος > 0 Τότε
  Αρχή
    Μέσος_Όρος_Ηλικίας = Συνολική_Ηλικία / Πλήθος
    Εμφάνισε Μέσος_Όρος_Ηλικίας
  Τέλος
  Αλλιώς
    Εμφάνισε 'Δεν δώσατε καμία ηλικία.'
Τέλος

Άσκηση 8η (Άσκηση 3, Σελίδα 34)

Δίνονται το ονοματεπώνυμο κάθε μαθητή μιας τάξης και η βαθμολογία του στο ένα μάθημα της Πληροφορικής. Ζητείται να υπολογίσουμε το πλήθος των μαθητών της τάξης που έχουν βαθμολογία σε αυτό το μάθημα μεγαλύτερη από 18. Να παραστήσετε με ψευδοκώδικα τον αλγόριθμο του προβλήματος.

Παρατήρηση: Ακολουθούμε ξανά την υπόδειξη του σχολικού βιβλίου σελ. 10 Από τα στοιχεία … καλούμαστε να επιλέξουμε εκείνα τα οποία είναι απαραίτητα για τη λύση του προβλήματος… Τα απαραίτητα αυτά στοιχεία είναι τα Δεδομένα. Αυτό σημαίνει ότι δε λαμβάνουμε υπόψη το ονοματεπώνυμο του μαθητή καθώς δεν είναι απαραίτητο για τη λύση του συγκεκριμένου προβλήματος.

Ψευδοκώδικας Ασκ3Σελ34

Αρχή
  Πλήθος_Μαθητών = 0

  Επανάλαβε
    Διάβασε τα δεδομένα: Βαθμός_Μαθητή
    Αν Βαθμός_Μαθητή > 18 Τότε
      Πλήθος_Μαθητών = Πλήθος_Μαθητών + 1
  Μέχρι Βαθμός_Μαθητή < 0

  Εμφάνισε Πλήθος_Μαθητών
Τέλος

Άσκηση 9η (Άσκηση 4, Σελίδα 34)

Δίνονται οι βαθμοί του τριμήνου ενός μαθητή σε όλα τα μαθήματά του. Να υπολογίσετε το πλήθος των μαθημάτων του που έχουν βαθμολογία έως 10, το πλήθος των μαθημάτων, που έχουν βαθμολογία από 11 - 15, από 16 - 18 και από 19 - 20. Να παραστήσετε με ψευδοκώδικα τον αλγόριθμο του προβλήματος.

Υπόδειξη: Να γίνει έλεγχος της ορθότητας των δεδομένων.

Ψευδοκώδικας Ασκ4Σελ34

Αρχή
  Κατηγορία_1 = 0
  Κατηγορία_2 = 0
  Κατηγορία_3 = 0
  Κατηγορία_4 = 0

  Επανάλαβε
    Διάβασε τα δεδομένα: Βαθμός_Μαθητή
    Αν (Βαθμός_Μαθητή < 0) ή (Βαθμός_Μαθητή > 20) Τότε
      Εμφάνισε 'Μη αποδεκτός βαθμός'
    Αλλιώς
      Αν Βαθμός_Μαθητή <= 10 Τότε
        Κατηγορία_1 = Κατηγορία_1 + 1
      Αλλιώς
        Αν Βαθμός_Μαθητή <= 15 Τότε
          Κατηγορία_2 = Κατηγορία_2 + 1
        Αλλιώς
          Αν Βαθμός_Μαθητή <= 18 Τότε
            Κατηγορία_3 = Κατηγορία_3 + 1
          Αλλιώς
            Κατηγορία_4 = Κατηγορία_4 + 1
    Διάβασε τα δεδομένα: Συνέχεια
  Μέχρι Συνέχεια = 'Ο'

  Εμφάνισε Κατηγορία_1, Κατηγορία_2, Κατηγορία3, Κατηγορία_4
Τέλος

Άσκηση 10η (Άσκηση 5, Σελίδα 34)

Στον Πανελλήνιο Διαγωνισμό Πληροφορικής που γίνεται κάθε χρόνο μπορούν να συμμετάσχουν μαθητές από κάθε ταξη του Γυμνασίου, των ΕΠΑ.Λ. και του ΓΕ.Λ. Αν μας δίνεται η τάξη και ο τύπος του σχολείου που φοιτά ο μαθητής, να υπολογισθεί το πλήθος των μαθητών που συμμετέχουν από κάθε τάξη. Να παραστήσετε με ψευδοκώδικα τον αλγόριθμο του προβλήματος.

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

Ψευδοκώδικας Ασκ5Σελ34

Αρχή
  Γυμ_Α = 0
  Γυμ_Β = 0
  Γυμ_Γ = 0
  ΕΠΑΛ_Α = 0
  ΕΠΑΛ_Β = 0
  ΕΠΑΛ_Γ = 0
  ΓΕΛ_Α = 0
  ΓΕΛ_Β = 0
  ΓΕΛ_Γ = 0

  Επανάλαβε
    Διάβασε τα δεδομένα: Τύπος_Σχολείου
                         Τάξη
    Αν Τύπος_Σχολείου
      = 1 Τότε
      Αρχή
        Αν Τάξη
          = 'Α' Τότε Γυμ_Α = Γυμ_Α + 1
          = 'Β' Τότε Γυμ_Β = Γυμ_Β + 1
          = 'Γ' Τότε Γυμ_Γ = Γυμ_Γ + 1
      Τέλος
      = 2 Τότε
      Αρχή
        Αν Τάξη
          = 'Α' Τότε ΕΠΑΛ_Α = ΕΠΑΛ_Α + 1
          = 'Β' Τότε ΕΠΑΛ_Β = ΕΠΑΛ_Β + 1
          = 'Γ' Τότε ΕΠΑΛ_Γ = ΕΠΑΛ_Γ + 1
      Τέλος
      = 3 Τότε
      Αρχή
        Αν Τάξη
          = 'Α' Τότε ΓΕΛ_Α = ΓΕΛ_Α + 1
          = 'Β' Τότε ΓΕΛ_Β = ΓΕΛ_Β + 1
          = 'Γ' Τότε ΓΕΛ_Γ = ΓΕΛ_Γ + 1
      Τέλος
    Διάβασε τα δεδομένα: Συνέχεια
  Μέχρι Συνέχεια = 'Ο'

  Εμφάνισε Γυμ_Α, Γυμ_Β, Γυμ_Γ, ΕΠΑΛ_Α, ΕΠΑΛ_Β, ΕΠΑΛ_Γ, ΓΕΛ_Α, ΓΕΛ_Β, ΓΕΛ_Γ
Τέλος

Άσκηση 11η (Άσκηση 6, Σελίδα 34)

Σε μια εταιρεία γίνονται κρατήσεις, από το μισθό του υπαλλήλου, υπέρ του συνδικαλιστικού του σωματείου, ανάλογα με το ύψος του μισθού του. Για μισθό έως 500€ η κράτηση είναι 1%, έως 800€ 1,5%, έως 1000€ 2%, έως 1200€ 2,5% και για πάνω από 1200€ 3,5%. Δίνονται για κάθε υπάλληλο το ονοματεπώνυμό του και ο μισθός του. Να υπολογισθεί το ποσό κράτησης που αντιστοιχεί στον κάθε υπάλληλο. Να παραστήσετε με ψευδοκώδικα τον αλγόριθμο του προβλήματος.

Παρατήρηση: Για τη λύση του προβλήματος θα θεωρήσουμε ότι ο αριθμός των υπαλλήλων της εταιρείας είναι δεδομένος, κάτι το οποίο δεν διευκρινίζεται σαφώς στην εκφώνηση του προβλήματος και γι' αυτό το λόγο θα χρησιμοποιήσουμε την επαναληπτική δομή Για ν φορές επανάλαβε.

Ψευδοκώδικας Ασκ6Σελ34

Αρχή
  Διάβασε τα δεδομένα: Αριθμός_Υπαλλήλων

  Για Αριθμός_Υπαλλήλων φορές επανάλαβε
  Αρχή
    Διάβασε τα δεδομένα: Ονοματεπώνυμο
                         Μισθός
    Αν Μισθός <= 500 Τότε
      Κρατήσεις = Μισθός / 100
    Αλλιώς
      Αν Μισθός <= 800 Τότε
        Κρατήσεις = Μισθός * 1.5 / 100
      Αλλιώς
        Αν Μισθός <= 1000 Τότε
          Κρατήσεις = Μισθός / 50
        Αλλιώς
          Αν Μισθός <= 1200 Τότε
            Κρατήσεις = Μισθός * 2.5 / 100
          Αλλιώς
            Κρατήσεις = Μισθός * 3.5 / 100
    Εμφάνισε 'Οι κρατήσεις του υπαλλήλου ', Ονοματεπώνυμο, ' είναι ', Κρατήσεις
  Τέλος
Τέλος

Άσκηση 12η (Πανελλήνιες 2009 ΔΠ, Θέμα 3ο)

Μια εταιρεία κινητής τηλεφωνίας ακολουθεί ανά μήνα την πολιτική τιμών, που φαίνεται στον παρακάτω πίνακα:

Πάγιο 4,5€
ΑΡΙΘΜΟΣ ΜΗΝΥΜΑΤΩΝ ΧΡΕΩΣΗ ΑΝΑ ΜΗΝΥΜΑ
1 - 50 0,10 €
51 - 150 0,08 €
από 151 και άνω 0,05 €

Να αναπτύξετε αλγόριθμο σε ψευδοκώδικα ο οποίος:

  1. Να διαβάζει τον αριθμό των μηνυμάτων ενός συνδρομητή στο τέλος ενός μήνα.
  2. Να υπολογίζει τη μηνιαία χρέωση του συνδρομητή. Η χρέωση των μηνυμάτων είναι κλιμακωτή με βάση τον παραπάνω πίνακα.
  3. Να εμφανίζει (τυπώνει) τη λέξη ΧΡΕΩΣΗ και τη μηνιαία χρέωση του συνδρομητή.
Ψευδοκώδικας Θέμα3ο

Αρχή
  Πάγιο = 4,5

  Διάβασε τα δεδομένα: Αριθμός_Μηνυμάτων

  Αν Αριθμός_Μηνυμάτων <= 50 Τότε
    Χρέωση = Αριθμός_Μηνυμάτων * 0,1
  Αλλιώς
    Αν Αριθμός_Μηνυμάτων <= 150 Τότε
      Χρέωση = 50 * 0,1 + (Αριθμός_Μηνυμάτων - 50) * 0,08
    Αλλιώς
      Χρέωση = 50 * 0,1 + 100 * 0,08 + (Αριθμός_Μηνυμάτων - 150) * 0,05
  Χρέωση = Χρέωση + Πάγιο

  Τύπωσε 'ΧΡΕΩΣΗ: ', Χρέωση
Τέλος

Άσκηση 13η (Πανελλήνιες 2003 ΑΕΠΠ, Θέμα 3ο)

Ο Δείκτης Μάζας του ανθρώπινου Σώματος (ΔΜΣ) υπολογίζεται από το βάρος (Β) σε χλγ. και το ύψος (Υ) σε μέτρα με τον τύπο ΔΜΣ=Β/Υ2. Ο ανωτέρω τύπος ισχύει για άτομα άνω των 18 ετών. Το άτομο ανάλογα με την τιμή του ΔΜΣ χαρακτηρίζεται σύμφωνα με τον παρακάτω πίνακα:

ΔΜΣ < 18,5 "αδύνατο άτομο"
18,5 ≤ ΔΜΣ < 25 "κανονικό άτομο"
25 ≤ ΔΜΣ < 30 "βαρύ άτομο"
30 ≤ ΔΜΣ "υπέρβαρο άτομο"

Να αναπτύξετε αλγόριθμο σε ψευδοκώδικα ο οποίος:

  1. Να διαβάζει την ηλικία, το βάρος και το ύψος του ατόμου.
  2. Εάν η ηλικία είναι μεγαλύτερη των 18 ετών, τότε:
    1. Να υπολογίζει το ΔΜΣ
    2. να ελέγχει την τιμή του ΔΜΣ από τον ανωτέρω πίνακα και να εμφανίζει τον αντίστοιχο χαρακτηρισμό.
  3. Εάν η ηλικία είναι μικρότερη ή ίση των 18 ετών, τότε να εμφανίζει το μήνυμα "δεν ισχύει ο δείκτης ΔΜΣ".

Παρατήρηση: Θεωρήστε ότι το βάρος, το ύψος και η ηλικία είναι θετικοί αριθμοί.

Ψευδοκώδικας Θέμα3ο

Αρχή
  Διάβασε τα δεδομένα: Ηλικία
                       Βάρος
                       Ύψος

  Αν Ηλικία > 18 Τότε
  Αρχή
    ΔΜΣ = Βάρος / (Ύψος * Ύψος)
    Αν ΔΜΣ < 18,5 Τότε
      Εμφάνισε 'αδύνατο άτομο'
    Αλλιώς
      Αν ΔΜΣ < 25 Τότε
        Εμφάνισε 'κανονικό άτομο'
      Αλλιώς
        Αν ΔΜΣ < 30 Τότε
          Εμφάνισε 'βαρύ άτομο'
        Αλλιώς
          Εμφάνισε 'υπέρβαρο άτομο'
  Τέλος
  Αλλιώς
    Εμφάνισε 'δεν ισχύει ο δείκτης ΔΜΣ'
Τέλος

Άσκηση 14η (Άσκηση 8, Σελίδα 35)

Δίνεται ο τύπος ενός οχήματος (μηχανή, ΙΧ επιβατηγό, ΙΧ φορτηγό, ΔΧ επιβατηγό, ΔΧ φορτηγό) και το μήκος του. Η χρέωση σε ένα οχηματαγωγό πλοίο είναι ανάλογη του τύπου του οχήματος και του μήκους του ως εξής:

ΜΗΚΟΣ
ΣΕ ΜΕΤΡΑ
 
μηχανή
ΙΧ
επιβατηγό
ΔΧ
επιβατηγό
ΙΧ
φορτηγό
ΔΧ
φορτηγό
έως 2 1 € 3 € 6 € 9 € 12 €
έως 3 2 € 6 € 9 € 12 € 15 €
έως 5   9 € 12 € 15 € 18 €
έως 10       18 € 21 €
> 10         24 €

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

Ψευδοκώδικας Ασκ8Σελ35

Αρχή
  Συνολικό_Ποσό = 0

  Διάβασε τα δεδομένα: Πλήθος_Μηχανές
                       Πλήθος_ΙΧεπιβατικά
                       Πλήθος_ΔΧεπιβατικά
                       Πλήθος_ΙΧφορτηγά
                       Πλήθος_ΔΧφορτηγά

  Για Πλήθος_Μηχανές φορές Επανέλαβε
  Αρχή
    Διάβασε τα δεδομένα: Μήκος
    Αν Μήκος ≤ 2 Τότε
      Συνολικό_Ποσό = Συνολικό_Ποσό + 1
    Αλλιώς
      Συνολικό_Ποσό = Συνολικό_Ποσό + 2
  Τέλος

  Για Πλήθος_ΙΧεπιβατικά φορές Επανέλαβε
  Αρχή
    Διάβασε τα δεδομένα: Μήκος
    Αν Μήκος ≤ 2 Τότε
      Συνολικό_Ποσό = Συνολικό_Ποσό + 3
    Αλλιώς Αν Μήκος ≤ 3 Τότε
      Συνολικό_Ποσό = Συνολικό_Ποσό + 6
    Αλλιώς
      Συνολικό_Ποσό = Συνολικό_Ποσό + 9
  Τέλος

  Για Πλήθος_ΔΧεπιβατικά φορές Επανέλαβε
  Αρχή
    Διάβασε τα δεδομένα: Μήκος
    Αν Μήκος ≤ 2 Τότε
      Συνολικό_Ποσό = Συνολικό_Ποσό + 6
    Αλλιώς Αν Μήκος ≤ 3 Τότε
      Συνολικό_Ποσό = Συνολικό_Ποσό + 9
    Αλλιώς
      Συνολικό_Ποσό = Συνολικό_Ποσό + 12
  Τέλος

  Για Πλήθος_ΙΧφορτηγά φορές Επανέλαβε
  Αρχή
    Διάβασε τα δεδομένα: Μήκος
    Αν Μήκος ≤ 2 Τότε
      Συνολικό_Ποσό = Συνολικό_Ποσό + 9
    Αλλιώς Αν Μήκος ≤ 3 Τότε
      Συνολικό_Ποσό = Συνολικό_Ποσό + 12
    Αλλιώς Αν Μήκος ≤ 5 Τότε
      Συνολικό_Ποσό = Συνολικό_Ποσό + 15
    Αλλιώς
      Συνολικό_Ποσό = Συνολικό_Ποσό + 18
  Τέλος

  Για Πλήθος_ΔΧφορτηγά φορές Επανέλαβε
  Αρχή
    Διάβασε τα δεδομένα: Μήκος
    Αν Μήκος ≤ 2 Τότε
      Συνολικό_Ποσό = Συνολικό_Ποσό + 12
    Αλλιώς Αν Μήκος ≤ 3 Τότε
      Συνολικό_Ποσό = Συνολικό_Ποσό + 15
    Αλλιώς Αν Μήκος ≤ 5 Τότε
      Συνολικό_Ποσό = Συνολικό_Ποσό + 18
    Αλλιώς Αν Μήκος ≤ 10 Τότε
      Συνολικό_Ποσό = Συνολικό_Ποσό + 21
    Αλλιώς
      Συνολικό_Ποσό = Συνολικό_Ποσό + 24
  Τέλος

  Εμφάνισε Συνολικό_Ποσό
Τέλος

Άσκηση 15η (Απολυτήριες εξετάσεις Δ' τάξης Εσπερινού Ενιαίου Λυκείου 2002 ΑΕΠΠ, Θέμα 1ο, Δ)

Να γράψετε σε ψευδοκώδικα τα τμήματα του αλγορίθμου, που αντιστοιχούν στα τμήματα των λογικών διαγραμμάτων (α) και (β), που ακολουθούν.

Τμήμα Ψευδοκώδικα Λογικό_διάγραμμα_α

  .
  .
  .
  Μ1 = 0

  Διάβασε τα δεδομένα: x

  Εφόσον x >= 0 Επανάλαβε
  Αρχή
    M1 = M1 + 1
    Διάβασε τα δεδομένα: x
  Τέλος

  Εμφάνισε Μ1
  .
  .
  .

----

Τμήμα Ψευδοκώδικα Λογικό_διάγραμμα_β

  .
  .
  .
  Α = 20

  Επανάλαβε
    Β = Α * Α
    Εμφάνισε Β
    Α = Α - 3
  Μέχρι Α < 0

  Εμφάνισε Α, Β
  .
  .
  .

Άσκηση 16η (Επαναληπτικές Απολυτήριες Εξετάσεις 2002 ΑΕΠΠ, Θέμα 3ο)

Σε ένα κέντρο νεοσύλλεκτων υπάρχει η πρόθεση να δημιουργηθούν δύο ειδικές διμοιρίες. Η διμοιρία Α θα αποτελείται από νεοσύλλεκτους πτυχιούχους τριτοβάθμιας εκπαίδευσης, ηλικίας από 24 έως και 28 χρόνων. Η διμοιρία Β θα αποτελείται από νεοσύλλεκτους απόφοιτους δευτεροβάθμιας εκπαίδευσης, ηλικίας από 18 έως και 24 χρόνων. Οι υπόλοιποι νεοσύλλεκτοι δεν κατατάσσονται σε καμία από αυτές τις διμοιρίες.

Να αναπτύξετε αλγόριθμο σε ψευδοκώδικα ο οποίος:

  1. διαβάζει το ονοματεπώνυμο, την ηλικία και έναν αριθμό που καθορίζει το επίπεδο σπουδών του νεοσύλλεκτου και παίρνει τιμές από 1 έως 3 (1: τριτοβάθμια εκπαίδευση, 2: δευτεροβάθμια εκπαίδευση, 3: κάθε άλλη περίπτωση).
  2. εκτυπώνει:
    1. το ονοματεπώνυμο του νεοσύλλεκτου
    2. το όνομα της διμοιρίας (A ή Β), εφόσον ο νεοσύλλεκτος κατατάσσεται σε μία από αυτές.
Ψευδοκώδικας Θέμα3ο

Αρχή
  Διάβασε τα δεδομένα: Ονοματεπώνυμο
                       Ηλικία
                       Σπουδές

  Εμφάνισε Ονοματεπώνυμο
  Αν (Σπουδές = 1) και (Ηλικία >= 24) και (Ηλικία <= 28) Τότε
    Εμφάνισε 'Κατατάσσεται στη διμοιρία Α'
  Αλλιώς
    Αν (Σπουδές = 2) και (Ηλικία >= 18) και (Ηλικία <= 24) Τότε
      Εμφάνισε 'Κατατάσσεται στη διμοιρία Β'

Τέλος

Προγράμματα σε γλώσσα Pascal

Στην ενότητα αυτή θα βρίσκονται τα προβλήματα που εξετάζονται κατά τη διάρκεια του μαθήματος, με τις λύσεις τους υπό μορφή προγραμμάτων σε γλώσσα Pascal.

Για τη δοκιμή και εκτέλεση των προγραμμάτων σε περιβάλλον MS Windows μπορεί να χρησιμοποιηθεί το ολοκληρωμένο περιβάλλον ανάπτυξης (IDE) εφαρμογών σε γλώσσα Pascal Dev-Pascal το οποίο θα βρείτε στην ιστοσελίδα αυτή ή κάντε κλικ στο σύνδεσμο για απ' ευθείας μεταφόρτωση του Dev-Pascal ver. 1.9.2

Για τη δημιουργία εφαρμογών σε γλώσσα Pascal σε περιβάλλον Ubuntu/Mint, τρέξτε σε τερματικό την παρακάτω εντολή:

sudo apt-get install fpc geany

Θα γίνει εγκατάσταση του Free Pascal compiler και του επεξεργαστή κειμένου Geany.

Υπόδειξη για το Dev-Pascal:
Για τη σωστή εμφάνιση των ελληνικών χαρακτήρων, αποτέλεσμα εκτέλεσης εντολών εξόδου όπως η Write ή η Writeln, θα πρέπει να γίνουν οι ακόλουθες αλλαγές στην εφαρμογή Γραμμή εντολών την οποία βρίσκουμε στο μενού Έναρξη ⇒ Όλα τα προγράμματα ⇒ Βοηθήματα.

  1. Αφού εκκινήσουμε την εφαρμογή Γραμμή εντολών, κάνουμε κλικ στο εικονίδιο που βρίσκεται στο αριστερό μέρος της γραμμής τίτλου του παραθύρου της. Στο μενού επιλογών που εμφανίζεται, κάνουμε κλικ στην επιλογή Προεπιλογές.
  2. Στο πλαίσιο διαλόγου με τίτλο Ιδιότητες: Κονσόλα Windows που εμφανίζεται, επιλέγουμε την καρτέλα Γραμματοσειρά.
  3. Από τη λίστα Γραμματοσειρά επιλέγουμε τη γραμματοσειρά με όνομα Lucida Console και από τη λίστα Μέγεθος επιλέγουμε το 14.
  4. Για να εφαρμόσουμε τις αλλαγές κάνουμε κλικ στο κουμπί OK. Θα πρέπει να επανεκκινήσουμε την εφαρμογή για να δούμε το αποτέλεσμα.
  5. Για να τρέξουμε ένα εκτελέσιμο αρχείο (.exe) που κατασκευάσαμε με τη γλώσσα Pascal πρέπει:
    1. Να εκκινήσουμε την εφαρμογή Γραμμή εντολών.
    2. Να εκτελέσουμε την εντολή chcp 1253 για να επιλέξουμε την κωδικοσελίδα που εμφανίζει σωστά τις Ελληνικές γραμματοσειρές.
    3. Να εντοπίσουμε το εκτελέσιμο αρχείο μας πλοηγούμενοι στο περιβάλλον με εντολές του ΛΣ DOS
    4. και τέλος να τρέξουμε το εκτελέσιμο πληκτρολογώντας το όνομά του και πατώντας το πλήκτρο Enter.

Για να απλοποιήσουμε την παραπάνω διαδικασία και να τρέχουμε το εκτελέσιμό μας κάνοντάς του ένα διπλό (ή απλό!) κλικ, όπως συνήθως στις εφαρμογές των Windows, θα πρέπει να αλλάξουμε μόνιμα την κωδικοσελίδα της γραμματοσειράς που χρησιμοποιεί η εφαρμογή Γραμμή εντολών σε 1253.
Προσοχή όμως αυτό θα στερήσει τη δυνατότητα να πληκτρολογούμε χαρακτήρες όπως π.χ. το χαρακτήρα ♥ με χρήση του συνδυασμού πλήκτρων Alt + Numeric-pad key.
Δεκτού λοιπόν του περιορισμού, για να επιτύχουμε τα όσα είπαμε θα πρέπει, εφόσον γνωρίζουμε το πως να διαχειριζόμαστε το Μητρώο των Windows, να κάνουμε τα εξής:

  1. Εκτελούμε τα βήματα 1 έως 4 όπως περιγράψαμε παραπάνω.
  2. Τρέχουμε την εφαρμογή Επεξεργαστής Μητρώου.
  3. Αλλάζουμε σε 1253 την τιμή της ιδιότητας OEMCP του κλειδιού HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage.
  4. Τέλος, κλείνουμε την εφαρμογή και κάνουμε επανεκκίνηση του υπολογιστή μας.

Άσκηση 1η

Το πρώτο μου πρόγραμμα στην Pascal.

program HelloWorld;

begin
  Writeln('Hello World');
end.

Άσκηση 2η

Το άχρηστο πρόγραμμα ή αλλιώς το πιο μικρό αλλά συντακτικά σωστό πρόγραμμα σε γλώσσα Pascal.

begin
end.

Άσκηση 3η

Πρόγραμμα με το οποίο εμφανίζουμε στην οθόνη το όνομά μας.

program MyName;

begin
  Writeln('Hi!... My name is John. What''s yours?');
end.

Άσκηση 4η

Πρόγραμμα με το οποίο εμφανίζουμε στην οθόνη έναν υποθετικό διάλογο μεταξύ χρήστη και υπολογιστή.

program Dialog;

var
  Name: string;
  Age: Integer;

begin
  Writeln('[ME] Hello computer!');
  Writeln('[PC] Hi... but...');
  Writeln('[PC] ...can I ask with whom I have the honor to speak?');
  Write('[PC] What''s your name my friend: ');
  Readln(Name);
  Writeln('[PC] Hello ', Name);
  Writeln('[PC] Well, if you don''t mind', ' can you tell me your age?');
  Write('[PC] How old are you: ');
  Readln(Age);
  Writeln('[PC] You are ', Age, ' years old. That''s amazing!');
end.

Άσκηση 5η

Πρόγραμμα που διαβάζει δύο ακέραιους αριθμούς και εμφανίζει στην οθόνη το άθροισμα και την διαφορά τους.

program Maths;

var{iable}
  Num_1, Num_2: Integer;
  Sum, Subst: Integer;

begin
  Write('Give me the 1st number: ');
  Readln(Num_1);
  Write('Give me the 2nd number: ');
  Readln(Num_2);

  Sum := Num_1 + Num_2;
  Subst := Num_1 - Num_2;

  Writeln('The sum is equal to: ', Sum);
  Writeln('The sub is equal to: ', Subst);
end.

Άσκηση 6η

Πρόγραμμα που διαβάζει την ακτίνα ενός κύκλου και εμφανίζει στην οθόνη το εμβαδό και την περίμετρό του.

program Circle;

const
  PI = 3.141592653;

var
  Embado, Perimetros, R: Real;
  { Otan oi metavlites einai tou idiou typou
    mporoun na dilw8oun stin idia grammi
    xwrizontas tis me komma }

begin
  { Eisodos }
  Write('Dwse thn aktina tou kykloy: ');
  Readln(R);

  (* Epeksergasia *)
  Embado := PI * Sqr(R);
  Perimetros := 2 * PI * R;

  { Exodos }
  Writeln('To embado tou kykloy einai iso me ', Embado:8:2, ' t.m.');
  Writeln('H perimetros tou idiou kykloy einai ', Perimetros:8:4, ' m.');
end.

Άσκηση 7η

Πρόγραμμα με λάθη που καλείστε να διορθώσετε. Στο πρόγραμμα αυτό εξετάζουμε τον ακέραιο τύπο δεδομένων.

program IntDataType;

const
  AKERAIOS    = 10;
  PRAGMATIKOS = 2.5;

var
  Akeraios_1, Akeraios_2: ShortInt;
  Akeraios_3, Akeraios_4: Integer;
  Akeraios_5, Akeraios_6: LongInt;
  Akeraios_7: Byte;
  Akeraios_8: Word;

begin
  Writeln('Enas akeraios (Integer) pernei times sto diastima [',
    -MaxInt - 1, ', ', MaxInt, ']');

  Akeraios_1 := PRAGMATIKOS;
  Akeraios_2 := 128;

{ Oi epitreptes prakseis akeraiwn einai:
    +    Pros8esi
    -    Afairesi
    *    Pol/smos
    div  Akeraia diairesi
    mod  Ypoloipo akeraias diairesis }

  Writeln;
  Writeln('Merika perierga twra...');

  Akeraios_3 := 99; Akeraios_4 := 100;
  Akeraios_7 := Akeraios_3 - Akeraios_4;
  Writeln(Akeraios_3, '-', Akeraios_4, '=', Akeraios_7);

  Akeraios_1 := Akeraios_3 * Akeraios_4;
  Writeln(Akeraios_3, '*', Akeraios_4, '=', Akeraios_1);

  Akeraios_3 := -100;
  Akeraios_8 := Akeraios_3;
  Writeln('O Akeraios_8 egine: ', Akeraios_8);

  Writeln;
  Writeln('As kanoume prakseis twra...');

  Akeraios_2 := (Akeraios_3 + 110) div 3;
  Writeln('O Akeraios_2 egine: ', Akeraios_2);

  Akeraios_2 := (Akeraios_3 + 110) mod 3;
  Writeln('O Akeraios_2 egine: ', Akeraios_2);
end.

Άσκηση 8η

Πρόγραμμα το οποίο διαβάζει από το πληκτρολόγιο έναν ακέραιο αριθμό και εμφανίζει στην οθόνη την απόλυτη τιμή του αριθμού. Περίπτωση της απλής if χωρίς else.

program AbsVal;

var
  Num: Integer;

{
  Syntaktikos typos tis entolis if…then…else

  if <sin8iki> then
    <entoli>
  [else
    <entoli>];
}

begin
  Write('Dwse enan akeraio ari8mo: ');
  Readln(Num);

  if Num < 0 then
    Num := Num * (-1);

  Writeln('H apoliti timi tou ari8mou einai to ', Num);
end.

Άσκηση 9η

Πρόγραμμα το οποίο διαβάζει από το πληκτρολόγιο έναν ακέραιο αριθμό και εμφανίζει στην οθόνη τη λέξη Άρτιος ή τη λέξη Περιττός ανάλογα με τον αριθμό που δόθηκε. Περίπτωση εντολής if με else.

program ArtPer;

var
  Num: Integer;

{
  Syntaktikos typos tis entolis if…then…else

  if <sin8iki> then
    <entoli>
  [else
    <entoli>];
}

begin
  Write('Dwse ari8mo: ');
  Readln(Num);

  if Num mod 2 = 0 then
    Writeln('Artios')
  else
    Writeln('Peritos');
end.

Άσκηση 10η

Πρόγραμμα το οποίο διαβάζει από το πληκτρολόγιο έναν ακέραιο αριθμό και εμφανίζει στην οθόνη τη φράση Εντός ορίου στην περίπτωση που ο αριθμός βρίσκεται στο διάστημα (0, 10] ή τη φράση Εκτός ορίου για κάθε άλλη περίπτωση. Χρήση λογικών τελεστών σε συνδυασμό με σχεσιακούς τελεστές σε συνθήκη.

program WithIn;

var
  Num: Integer;

{
  Syntaktikos typos tis entolis if…then…else

  if <sin8iki> then
    <entoli>
  [else
    <entoli>];
}

begin
  Write('Dwse arithmo: ');
  Readln(Num);

{ H parenthensi einai ipoxrewtiki logo tou oti
  oi logikoi telestes exoun megaliteri proteraiotita
  apo tous sxesiakous }
  if (Num > 0) and (Num <= 10) then
    Writeln('Entos oriou')
  else
    Writeln('Ektos oriou');
end.

Άσκηση 11η

Πρόγραμμα το οποίο διαβάζει τους βαθμούς των δύο τετραμήνων για κάποιο μάθημα και εμφανίζει το μήνυμα ΕΠΙΤΥΧΙΑ σε περίπτωση που ο μέσος όρος είναι μεγαλύτερος ή ίσος του 9,5 διαφορετικά το μήνυμα ΑΠΟΤΥΧΙΑ. Χρήση σταθερών σε συνθήκη.

program Apodosi;

const
  BASH = 9.5;

var
  B1T, B2T, MO: Real;

{
  Syntaktikos typos tis entolis if…then…else

  if <sin8iki> then
    <entoli>
  [else
    <entoli>];
}

begin
  Write('Dwse to ba8mo tou 1ou tetraminou: ');
  Readln(B1T);
  Write('Dwse to ba8mo tou 2ou tetraminou: ');
  Readln(B2T);

  MO := (B1T + B2T) / 2;

  if MO >= BASH then
    Writeln('EPITYXIA')
  else
    Writeln('APOTYXIA');
end.

Άσκηση 12η

Πρόγραμμα το οποίο διαβάζει από το πληκτρολόγιο δύο ακέραιους αριθμούς Α, Β και να εμφανίζει τα μηνύματα Ο Α είναι μεγαλύτερος του Β και Ο Β είναι μικρότερος του Α εφόσον ισχύει κάτι τέτοιο ή τα αντίστροφα μηνύματα σε άλλη περίπτωση. Κατανόηση της εντολής if και χρήση της σύνθετης εντολής (Compound statement).

program MinMax;

var
  A, B: Integer;

{
  Syntaktikos typos tis entolis if…then…else

  if <sin8iki> then
    <entoli>
  [else
    <entoli>];
}

begin
  Write('Dwse to A: ');
  Readln(A);
  Write('Dwse to B: ');
  Readln(B);

  if A > B then
  begin
    Writeln('O A einai megaliteros tou B');
    Writeln('O B einai mikroteros tou A');
  end
  else
  begin
    Writeln('O A einai mikroteros h isos tou B');
    Writeln('O B einai megaliteros h isos tou A');
  end;
end.

Άσκηση 13η

Ο διαιτητής ενός αγώνα μπάσκετ αξιολογείται και χαρακτηρίζεται από την ομοσπονδία καλαθοσφαίρισης με τρόπο τέτοιο όπως φαίνεται στον παρακάτω πίνακα:

Μονάδες αξιολόγησης Χαρακτηρισμός
0 - 20 'E'
21 - 40 'D'
41 - 60 'C'
61 - 80 'B'
81 - 100 'A'

Να γραφεί πρόγραμμα σε γλώσσα Pascal το οποίο:

  1. Να διαβάζει τις μονάδες αξιολόγησης που έλαβε ο διαιτητής χωρίς να γίνεται έλεγχος των δεδομένων εισόδου.
  2. Να υπολογίζει τον χαρακτηρισμό του διαιτητή.
  3. Να εμφανίζει τη λέξη ΧΑΡΑΚΤΗΡΙΣΜΟΣ και δίπλα το χαρακτηρισμό του διαιτητή.
program Assessment;

var
  MonAks: Integer;
  Xarakt: Char;

begin
  Write('Dwse tis monades aksiologisis tou diaititi: ');
  Readln(MonAks);

  if MonAks <= 20 then
    Xarakt := 'E'
  else if MonAks <= 40 then
    Xarakt := 'D'
  else if MonAks <= 60 then
    Xarakt := 'C'
  else if MonAks <= 80 then
    Xarakt := 'B'
  else
    Xarakt := 'A';

  Writeln('XARAKTHRISMOS: ', Xarakt);
end.

Άσκηση 14η

Μια εταιρεία κινητής τηλεφωνίας ακολουθεί ανά μήνα την πολιτική τιμών που φαίνεται στον παρακάτω πίνακα:

ΠΑΓΙΟ 20,23€
Χρόνος ομιλίας
(δευτερόλεπτα)
Χρονοχρέωση
(€ / δευτερόλεπτο)
1 - 7200 0
7201 - 10800 0,004
10801 - 14400 0,003
14401 και άνω 0,002

Να γραφεί πρόγραμμα σε γλώσσα Pascal το οποίο:

  1. Να διαβάζει τη χρονική διάρκεια των τηλεφωνημάτων ενός συνδρομητή σε διάστημα ενός μήνα
  2. Να υπολογίζει τη μηνιαία χρέωση του συνδρομητή
  3. Να εμφανίζει τη λέξη ΧΡΕΩΣΗ και δίπλα τη μηνιαία χρέωση του συνδρομητή

Παρατήρηση: Η χρονοχρέωση θεωρείται ότι είναι κλιμακωτή

program Mobile;

const
  PAGIO = 20.23;

var
  XrOmilias: WORD;
  Xrewsi: Real;

begin
  Write('Dwse ton xrono omilias tou sindromiti: ');
  Readln(XrOmilias);

  if XrOmilias <= 7200 then
    Xrewsi := PAGIO
  else if XrOmilias <= 10800 then
    Xrewsi := PAGIO + (XrOmilias - 7200) * 0.004
  else if XrOmilias <= 14400 then
    Xrewsi := PAGIO + 3600{=10800 - 7200} * 0.004 + (XrOmilias - 10800) * 0.003
  else
    Xrewsi := PAGIO + 3600 * 0.004 + 3600{=14400 - 10800} * 0.003 + (XrOmilias - 14400) * 0.002;

  Writeln('XREWSH: ', Xrewsi:8:3);
end.

Άσκηση 15η (Από το σχολικό βιβλίο, ασκήσεις 5 & 6, σελ. 96)

Πρόγραμμα το οποίο διαβάζει την ηλικία ενός ψηφοφόρου και εμφανίζει το κατάλληλο μήνυμα ανάλογα με την περίπτωση, για ηλικία >65, για ηλικία <18 και για 18 < ηλικία < 65.

Παρατηρήσεις:

  • Δε γίνεται έλεγχος μη αποδεκτών τιμών
  • Πιο σωστά θα λέγαμε: 18 ≤ ηλικία ≤ 65
program Elections;

var
  Age: Integer;

begin
  Write('Dwse tin ilikia tou psifoforou: ');
  Readln(Age);

{ Xrisi tis entolis if…then…else }
  if Age > 65 then
    Writeln('H psifos einai proairetiki')
  else if Age < 18 then
    Writeln('Den exei dikaiwma psifou')
  else
    Writeln('H psifos einai ypoxrewtiki');

{ Xrisi tis entolis case }
  case Age > 65 of
    TRUE: Writeln ('H psifos einai proairetiki');
    FALSE: case Age < 18 of
             TRUE: Writeln('Den exei dikaiwma psifou');
             FALSE: Writeln('H psifos einai ypoxrewtiki');
           end;
  end;
end.

Άσκηση 16η (Από το σχολικό βιβλίο, άσκηση 6, σελ. 89)

Πρόγραμμα το οποίο διαβάζει ένα τριψήφιο ακέραιο αριθμό και τον τυπώνει ανάστροφα. Π.χ.
Αν ο αριθμός είναι 123
Ο ανάστροφος είναι 321.

program Reverse;

var
  Num, RevNum: Integer;
  N0, N1, N2: Integer;

begin
  Write('Dwste enan tripsifio akeraio arithmo: ');
  Readln(Num);

  N0 := Num div 1 mod 10; { Monades }
  N1 := Num div 10 mod 10; { Dekades }
  N2 := Num div 100 mod 10; { Ekatontades }

(*
  N3 := Num div 1000 mod 10; { Xiliades }
  N4 := Num div 10000 mod 10; { Dekades xiliadwn }
  N5 := Num div 100000 mod 10; { Ekatontades xiliadwn }
  …
  H praksi div metakinei ta psifia pros ta deksia
  kai h praksh mod 10 epistrefei to deksiotero psifio
  tou arithmou
*)

  RevNum := N0 * 100 + N1 * 10 + N2;
  Writeln('O anastrofos tou ', Num, ' einai o ', RevNum);

{ Ylopoiisi xwris ti xrisi boi8itikwn metablitwn }
  Writeln('O anastrofos tou ', Num, ' einai o ',
    Num div 1 mod 10 * 100 +
    Num div 10 mod 10 * 10 +
    Num div 100 mod 10 * 1);
end.

Άσκηση 17η (Από το σχολικό βιβλίο, άσκηση 6, σελ. 97)

Πρόγραμμα το οποίο εμφανίζει menu με τις τέσσερις πράξεις:

  1. Πρόσθεση
  2. Αφαίρεση
  3. Πολλαπλασιασμός
  4. Διαίρεση

στη συνέχεια διαβάζει τον κωδικό της πράξης και τους δύο αριθμούς και εμφανίζει το αποτέλεσμα. (Διαίρεση με μηδέν δε γίνεται).

program Menu;

var
  Epilogi: Char;
  N1, N2: Real;

begin
  Writeln('+-------------------+');
  Writeln('|   MENU EPILOGWN   |');
  Writeln('+-------------------+');
  Writeln('| 1. PROSTHESI      |');
  Writeln('| 2. AFAIRESI       |');
  Writeln('| 3. POLLAPLASIASMO |');
  Writeln('| 4. DIAIRESH       |');
  Writeln('+-------------------+');

  Write('Epilogh: ');
  Readln(Epilogi);
  Write('Dwste tous duo arithmous: ');
  Readln(N1, N2);

  case Epilogi of
    '1': Writeln(N1 + N2:8:2);
    '2': Writeln(N1 - N2:8:2);
    '3': Writeln(N1 * N2:8:2);
    '4': if N2 = 0 then
           Writeln('(!) H diairesh me 0 einai adynati')
         else
           Writeln(N1 / N2:8:2);
  else
    Writeln('(!) Dwsate lathos kwdiko');
  end;
end.

Άσκηση 18η (Από το σχολικό βιβλίο, άσκηση 3, σελ. 97)

Η ωριαία αμοιβή εργαζομένου είναι 2000 δρχ. Αν οι ώρες εργασίας είναι περισσότερες από 18, παίρνει επιπλέον υπερωριακή αποζημίωση 1000 δρχ για κάθε υπερωριακή ώρα. Να γράψετε πρόγραμμα που να διαβάζει τις ώρες εργασίας και να υπολογίζει τις αποδοχές του εργαζομένου. Τα αποτελέσματα να ακολουθήσουν το υπόδειγμα:

Κανονική αμοιβή
Αμοιβή υπερωριών
-------------------------
Συνολικές αποδοχές

program Payment;

var
  Hours: WORD; { Apokleioume tin periptwsi na einai
                 arnitikos arithmos }
  Salary, OverTime, Total: Integer;

begin
{ Prepei na exei arxiki timi h metabliti OverTime
  gia tin periptwsi opou den yparxoun yperwries }
  OverTime := 0;

  Write('Dwse tis wres pou ergastike o ergazomenos: ');
  Readln(Hours);

  if Hours <= 18 then
    Salary := Hours * 2000
  else
  begin
    Salary := 18 * 2000;
    OverTime := (Hours - 18) * 3000;
  end;

  Total := Salary + OverTime;

  Writeln('Kanoniki amoivi   : ', Salary:6);
  Writeln('Amoivi yperwriwn  : ', OverTime:6);
  Writeln('---------------------------');
  Writeln('Synolikes apodoxes: ', Total:6);
end.

Άσκηση 19η (Από το σχολικό βιβλίο, άσκηση 7, σελ. 97)

Πρόγραμμα το οποίο διαβάζει δύο ηλικίες και δίνει τη διαφορά τους. Η εισαγωγή στοιχείων και τα αποτελέσματα είναι σύμφωνα με το υπόδειγμα:

Δεδομένα: 9 6
Αποτελέσματα:
  Ο Νίκος είναι 9 ετών
  Ο Γιώργος είναι 6 ετών
  Ο Νίκος είναι 3 έτη μεγαλύτερος από τον Γιώργο

Να γίνουν άλλες δύο εκτελέσεις με δεδομένα 6, 9 και 9, 9.

program AgeDiff;

var
  Age1, Age2, Diff: Integer;

begin
  Write('Dwse tis ilikies: ');
  Readln(Age1, Age2);

  Writeln('Apotelesmata:');
  Writeln('  O Nikos einai ', Age1, ' etwn');
  Writeln('  O Giorgos einai ', Age2, ' etwn');

  if Age1 > Age2 then
  begin
    Diff := Age1 - Age2;
    Writeln('  O Nikos einai ', Diff, ' eti megaliteros apo to Giorgo');
  end
  else if Age1 < Age2 then
  begin
    Diff := Age2 - Age1;
    Writeln('  O Giorgos einai ', Diff, ' eti megaliteros apo to Niko');
  end
  else
    Writeln('  O Giorgos kai o Nikos einai sinomilikoi!');
end.

Άσκηση 20η (Από το σχολικό βιβλίο, άσκηση 1, σελ. 107)

Πρόγραμμα το οποίο υπολογίζει τη μικρότερη δύναμη του 2 που είναι μεγαλύτερη από έναν δεδομένο, μη αρνητικό ακέραιο αριθμό και τυπώνει ποια είναι η δύναμη αυτή.

Τα αποτελέσματα να δοθούν με τη μορφή:
Η μικρότερη δύναμη του 2
μεγαλύτερη από τον αριθμό …
είναι …
δηλ. είναι το 2 στην … δύναμη.

Υπόδειξη: Η άσκηση να λυθεί με δύο τρόπους (με χρήση WHILE και REPEAT-UNTIL)

program SmallPow;

var
  Exponent, Power, Number: WORD; { Φυσικοί αριθμοί >=0 }

begin
  Write('Δώστε έναν μη αρνητικό ακέραιο αριθμό: ');
  Readln(Number);

  Writeln('Η μικρότερη δύναμη του 2');
  Writeln('μεγαλύτερη από τον αριθμό ', Number);

{ 1ος τρόπος: Χρήση της εντολής while…do }

  Exponent := 0;
  Power := 1; { Αρχική τιμή: 2^Exponent = 2^0 }
  while Power <= Number do
  begin
    Exponent := Exponent + 1;
    Power := Power * 2;
  end;

  Writeln('είναι ', Power);
  Writeln('δηλαδή, είναι το 2 στην ', Exponent, 'η δύναμη.');

{ 2ος τρόπος: Χρήση της εντολής repeat…until }

  Exponent := 0;
  Power := 1; { Αρχική τιμή: 2^Exponent = 2^0 }
  if Number > 0 then { Αν το Number είναι ίσο με 0 δεν χρειάζεται
                       η επανάληψη. Είναι η μηδενική δύναμη.
                       Αυτό οδηγεί στο συμπέρασμα ότι η εντολή while…do
                       αρμόζει καλύτερα στο συγκεκριμένο πρόβλημα. }
    repeat
      Exponent := Exponent + 1;
      Power := Power * 2;
    until Power > Number;

  Writeln('είναι ', Power);
  Writeln('δηλαδή, είναι το 2 στην ', Exponent, 'η δύναμη.');
end.

Άσκηση 21η (Από το σχολικό βιβλίο, άσκηση 2, σελ. 107)

Πρόγραμμα το οποίο υπολογίζει το μικρότερο αριθμό Fibonacci που δεν είναι μικρότερος από ένα προκαθορισμένο όριο. Κάθε αριθμός της σειράς Fibonacci, εκτός από τους δύο πρώτους που είναι 0 και 1, σχηματίζεται από το άθροισμα των δύο προηγουμένων του.

Υποδείξεις:

  1. Να χρησιμοποιηθεί η εντολή while
  2. Τα αποτελέσματα να δοθούν με τη μορφή:
    Αποτελέσματα:
    ο μικρότερος αριθμός Fibonacci
    που δεν είναι μικρότερος από …
    είναι ο αριθμός …
program Fibonacci;

var
  N, Fn_2, Fn_1, Fn: LongInt;

begin
  Write('Dwse enan fisiko ari8mo: ');
  Readln(N);

  Fn_1 := 0;
  Fn_2 := 1;
  Fn := Fn_2 + Fn_1;

  Writeln('Apotelesmata:');
  Writeln('O mikroteros ari8mos Fibonacci');
  Writeln('pou den einai mikroteros apo ', N);

  while Fn < N do
  begin
    Fn_1 := Fn_2;
    Fn_2 := Fn;
    Fn := Fn_2 + Fn_1;
  end;

  Writeln('einai o ari8mos ', Fn);
end.

Άσκηση 22η

Πρόγραμμα το οποίο: α) Διαβάζει το πλήθος των μαθητών μιας τάξης, β) Για κάθε μαθητή διαβάζει το βαθμό του στο μάθημα του Δομημένου Προγραμματισμού, γ) Υπολογίζει το μέσο όρο των βαθμών της τάξης και δ) Διαβάζει τον βαθμό ενός μαθητή και υπολογίζει και εμφανίζει τη διαφορά που έχει ο βαθμός αυτός (κατά απόλυτη τιμή) από το μέσο όρο των βαθμών της τάξης. Η διαδικασία θα πρέπει να τερματίζεται όταν διαβαστεί ο βαθμός 21

Υποδείξεις:

  1. Να χρησιμοποιηθεί η εντολή while
  2. Να γίνει κατάλληλος έλεγχος τιμών ώστε οι βαθμοί που διαβάζονται να βρίσκονται μέσα στα αποδεκτά όρια της εικοσαβάθμιας κλίμακας
program WhileLoop;

var
  N, i: Integer;
{ Oi ba9moi mporei na einai kai dekadikoi }
  Grade, Sum, MO, Diff: Real;

begin
  Write('Dwse to pli9os twn ma9itwn: ');
  Readln(N);

  Sum := 0; { H metabliti Sum einai o a9roistis k san
              tetoios prepei na arxikopoiitai stin timi miden }

{ 1o eidos epanalipsis while: Xrisi metriti epanalipsewn }

  i := 1;
  while i <= N do
  begin
  { Elegxos timwn }
    repeat
      Write('Dwse to ba9mo tou ', i, 'ou ma9iti: ');
      Readln(Grade);
    until (Grade >= 0) and (Grade <= 20);

    Sum := Sum + Grade;

    i := i + 1; { PROSOXI!!! Den prepei na ksexasoume
                  auti tn entoli gt 9a dimiourgi9ei
                  atermonos brogxos }
  end;

  MO := Sum / N;
  Writeln('O mesos oros ba9mologias tis ta3is einai: ', MO:3:1);

{ 2o eidos epanalipsis while: Xrisi gegonotos }

{ Elegxos timwn }
  repeat
    Write('Dwse ba9mo (21 gia telos): ');
    Readln(Grade);
  until (Grade >= 0) and (Grade <= 21); { !!! <= 21 }

  while Grade <> 21 do
  begin
    Diff := MO - Grade;
    if Diff < 0 then Diff := Diff * (-1); { Apoliti timi }
    Writeln('O ba9mos ', Grade:3:1, ' pou dwsate diafairei ', Diff:3:1,
      ' monades apo to Meso Oro');

  { Elegxos timwn }
    repeat
      Write('Dwse ba9mo (21 gia telos): ');
      Readln(Grade);
    until (Grade >= 0) and (Grade <= 21); { !!! <= 21 }
  end;
end.

Άσκηση 23η (Από το σχολικό βιβλίο, άσκηση 6, σελ. 108)

Πρόγραμμα το οποίο διαβάζει τις 4 πλευρές και μία γωνία ενός τετραπλεύρου και υπολογίζει το είδος του (τετράγωνο, ρόμβος, ορθογώνιο, παραλληλόγραμμο, τυχαίο). Να γίνει χρήση της εντολής repeat…until και δυαδικών τελεστών.

program Shape;

var
  A, B, C, D: Real;
  G: Real;
  Cont: Char;

begin
  repeat
    Write('Dwste ta miki twn tessapwn pleurwn tou sximatos: ');
    Readln(A, B, C, D);
    Write('Dwste mia gwnia tou sximatos: ');
    Readln(G);

    if (A = B) and (B = C) and (C = D) then
      if G = 90 then
        Writeln('To sxima einai ena tetragwno')
      else
        Writeln('To sxima einai enas rombos')
    else if (A = C) and (B = D) then
      if G = 90 then
        Writeln('To sxima einai ena or8ogwnio parallilogrammo')
      else
        Writeln('To sxima einai ena parallilogrammo')
    else
      Writeln('To sxima einai tyxaio');

    Write('8elete na sunexisete? (y/n) ');
    Readln(Cont);
  until (Cont = 'N') or (Cont = 'n');
end.

Άσκηση 24η

Πρόγραμμα το οποίο εκτυπώνει τα γράμματα του λατινικού αλφαβήτου από το A έως το G με την ακόλουθη μορφή:
A
AB
ABC
ABCD
ABCDE
ABCDEF
ABCDEFG
ABCDEF
ABCDE
ABCD
ABC
AB
A

program LetterTree;

var
  Teleutaio, ProsEmfanisi: Char;

begin
  for Teleutaio := 'A' to 'G' do
  begin
    for ProsEmfanisi := 'A' to Teleutaio do
      Write(ProsEmfanisi);
    Writeln;
  end;
  for Teleutaio := 'F' downto 'A' do
  begin
    for ProsEmfanisi := 'A' to Teleutaio do
      Write(ProsEmfanisi);
    Writeln;
  end;
end.

Άσκηση 25η (Πανελλήνιες 2002 ΑΕΠΠ, Θέμα 3ο)

Με το νέο σύστημα πληρωμής των διοδίων, οι οδηγοί των τροχοφόρων έχουν τη δυνατότητα να πληρώνουν το αντίτιμο των διοδίων με ειδική μαγνητική κάρτα. Υποθέστε ότι υπάρχει μηχάνημα το οποίο διαθέτει είσοδο για την κάρτα και φωτοκύτταρο. Το μηχάνημα διαβάζει από την κάρτα το υπόλοιπο των χρημάτων και το αποθηκεύει σε μία μεταβλητή Υ και, με το φωτοκύτταρο, αναγνωρίζει τον τύπο του τροχοφόρου και το αποθηκεύει σε μία μεταβλητή Τ. Υπάρχουν τρεις τύποι τροχοφόρων: δίκυκλα (D), επιβατικά (E) και φορτηγά (F), με αντίτιμο διοδίων 1, 2 και 3 € αντίστοιχα.
Να αναπτύξετε πρόγραμμα σε γλώσσα Pascal, το οποίο:

  1. Διαβάζει στις μεταβλητές Y και T το υπόλοιπο της κάρτας και τον τύπο του τροχοφόρου
  2. Ελέγχει τον τύπο του τροχοφόρου και εκχωρεί στη μεταβλητή Α το αντίτιμο των διοδίων, ανάλογα με τον τύπο του τροχοφόρου
  3. Ελέγχει την πληρωμή των διοδίων με τον παρακάτω τρόπο
    Αν το υπόλοιπο της κάρτας επαρκεί για την πληρωμή του αντιτίμου των διοδίων, αφαιρεί το ποσό αυτό από την κάρτα. Αν η κάρτα δεν έχει υπόλοιπο, το μηχάνημα ειδοποιεί με μήνυμα για το ποσό που πρέπει να πληρωθεί. Αν το υπόλοιπο δεν επαρκεί, μηδενίζεται η κάρτα και δίνεται με μήνυμα το ποσό που απομένει να πληρωθεί.
program Diodia;

var
  Y, A, O: Real;
  T: Char;

begin
  Write('Dwse to ypoloipo tis kartas: ');
  Readln(Y);
  Write('Dwse ton typo tou troxoforou (D/E/F): ');
  Readln(T);

  if (T = 'D') then
    A := 1
  else if (T = 'E') then
    A := 2
  else
    A := 3;

  if Y >= A then
  begin
    Y := Y - A;
    Writeln('Neo dia8esimo ypoloipo kartas: ', Y:0:2, ' euro');
  end
  else if Y = 0 then
    Writeln('Keni karta! Xrwstate ', A:0:2, ' euro')
  else
  begin
    O := A - Y;
    Y := 0;
    Writeln('To ypoloipo tis kartas den itan eparkes. Ofeiletai: ', O:0:2,
      ' euro');
  end;
end.

Άσκηση 26η

Πρόγραμμα το οποίο διαβάζει έναν ακέραιο αριθμό ο οποίος αναπαριστά του ποσό αγοράς ενός αυτοκινήτου σε € και εμφανίζει την κερματική ανάλυση του ποσού. Δηλαδή, από πόσα χαρτονομίσματα και κέρματα αποτελείται των 500, 200, 100, 50, 20, 10, 5, 2 και 1 €.

program Cash;

var
  Money,
  E500, E200, E100, E50, E20, E10, E5, E2, E1: Integer;

begin
  Write('Dwse to poso agoras tou autokinitou: ');
  Readln(Money);

  E500 := Money div 500;
  Money := Money mod 500;
  E200 := Money div 200;
  Money := Money mod 200;
  E100 := Money div 100;
  Money := Money mod 100;
  E50 := Money div 50;
  Money := Money mod 50;
  E20 := Money div 20;
  Money := Money mod 20;
  E10 := Money div 10;
  Money := Money mod 10;
  E5 := Money div 5;
  Money := Money mod 5;
  E2 := Money div 2;
  Money := Money mod 2;
  E1 := Money div 1;

  Writeln('Kermatiki analisi:');
  Writeln('500 = ', E500);
  Writeln('200 = ', E200);
  Writeln('100 = ', E100);
  Writeln('50  = ', E50);
  Writeln('20  = ', E20);
  Writeln('10  = ', E10);
  Writeln('5   = ', E5);
  Writeln('2   = ', E2);
  Writeln('1   = ', E1);
end.

Άσκηση 27η (Πανελλήνιες 2006 ΑΕΠΠ, Θέμα 3ο)

Σε ένα διαγωνισμό του ΑΣΕΠ εξετάζονται 1500 υποψήφιοι. Ως εξεταστικό κέντρο χρησιμοποιείται ένα κτίριο με αίθουσες διαφορετικής χωρητικότητας. Ο αριθμός των επιτηρητών που απαιτούνται ανά αίθουσα καθορίζεται αποκλειστικά με βάση τη χωρητικότητα της αίθουσας ως εξής:

ΧΩΡΗΤΙΚΟΤΗΤΑ ΑΡΙΘΜΟΣ ΕΠΙΤΗΡΗΤΩΝ
Μέχρι και 15 θέσεις 1
Από 16 μέχρι και 23 θέσεις 2
Πάνω από 23 θέσεις 3

Να γραφεί πρόγραμμα σε γλώσσα Pascal το οποίο:

  1. Για κάθε αίθουσα θα διαβάζει τη χωρητικότητά της, θα υπολογίζει και θα εμφανίζει τον αριθμό των επιτηρητών που χρειάζονται. Ο υπολογισμός του αριθμού των επιτηρητών να γίνεται από συνάρτηση που θα κατασκευάσετε για το σκοπό αυτό.
  2. Θα σταματάει όταν εξασφαλισθεί ο απαιτούμενος συνολικός αριθμός θέσεων.

Σημείωση: Να θεωρήσετε ότι η συνολική χωρητικότητα των αιθουσών του κτιρίου επαρκεί για τον αριθμό των υποψηφίων.

program ASEP;

var
  RoomCapacity, Candidates: Integer;


function Monitors(RC: Integer): Integer;
begin
  if RC <= 15 then
    Monitors := 1
  else
    if RC <= 23 then
      Monitors := 2
    else
      Monitors := 3;
end;


begin
  Candidates := 0;
  repeat
    Write('Δώστε τη χωρητικότητα της αίθουσας: ');
    Readln(RoomCapacity);
    Candidates := Candidates + RoomCapacity;
    Writeln('Για την αίθουσα αυτή θα χρειαστούν ', Monitors(RoomCapacity),
      ' επιτηρητές.');
  until Candidates >= 1500;
end.

Άσκηση 28η (Πανελλήνιες 2010 ΔΠ, Θέμα 4ο)

Να γράψετε στο τετράδιό σας πρόγραμμα σε γλώσσα Pascal, το οποίο:

  1. Να διαβάζει το επώνυμο του υποψηφίου με τη χρήση κατάλληλου μηνύματος.
  2. Να διαβάζει τους βαθμούς στα τέσσερα μαθήματα του υποψηφίου με τη χρήση κατάλληλου μηνύματος.
  3. Να υπολογίζει το μέσο όρο και να κατατάσσει τον υποψήφιο σε μία από τις τέσσερις κατηγορίες, ανάλογα με την επίδοσή του, δηλαδή:

    κλίμακα 1-150 151-300 301-350 351-400
    χαρακτηρισμός D C B A
  4. Να εμφανίζει σε ποια κατηγορία ανήκει ο κάθε υποψήφιος.
  5. Η επανάληψη θα συνεχίζεται έως ότου στη θέση του επωνύμου γραφτεί η λέξη: τέλος .

Υποδείξεις:

  1. Η αποδεκτή βαθμολογία σε κάθε μάθημα είναι από 1…100 και δεν χρειάζεται να γίνει έλεγχος ορθότητας τιμών.
  2. Όπου απαιτείται επανάληψη, να γίνει χρήση μόνο της εντολής while…do.

Διευκρίνιση: Η Κ.Ε.Π.Ε. ΕΠΑΛ διευκρινίζει ότι στο ΜΑΘΗΜΑ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ στο Θέμα Δ, υπόδειξη α, η πρόταση: Η αποδεκτή βαθμολογία σε κάθε μάθημα είναι από 1…100 και δε χρειάζεται να γίνει έλεγχος ορθότητας τιμών. να αντικατασταθεί με την πρόταση: Η αποδεκτή βαθμολογία σε κάθε μάθημα είναι από 1…400 και δε χρειάζεται να γίνει έλεγχος ορθότητας τιμών.

Προσωπικό σχόλιο: Η λύση που παρατίθεται είναι η επίσημη λύση της Κ.Ε.Π.Ε. ΕΠΑΛ με την οποία διαφωνώ γιατί η λογική της χρησιμοποιεί περιττούς ελέγχους, δείγμα όχι καλού προγραμματισμού. Γι' αυτό το λόγο μετά το τέλος της υλοποίησης αυτής ακολουθεί η πρότασή μου.

program Classification;

var
  Surname: string;
  B1, B2, B3, B4: Integer;
  MO: Real;

begin
  Write('Δώσε το επώνυμο του υποψηφίου ή τη λέξη τέλος για τερματισμό: ');
  Readln(Surname);
  while Surname <> 'τέλος' do
  begin
    Write('Δώσε τους βαθμούς των τεσσάρων μαθημάτων: ');
    Readln(B1, B2, B3, B4);

    MO := (B1 + B2 + B3 + B4) / 4;

    if (MO >= 1) and (MO <= 150) then
      Writeln('Ο υποψήφιος ', Surname, ' ανήκει στην κατηγορία D')
    else if (MO >= 151) and (MO <= 300) then
      Writeln('Ο υποψήφιος ', Surname, ' ανήκει στην κατηγορία C')
    else if (MO >= 301) and (MO <= 350) then
      Writeln('Ο υποψήφιος ', Surname, ' ανήκει στην κατηγορία B')
    else if (MO >= 351) and (MO <= 400) then
      Writeln('Ο υποψήφιος ', Surname, ' ανήκει στην κατηγορία A');

    Write('Δώσε το επώνυμο του υποψηφίου ή τη λέξη τέλος για τερματισμό: ');
    Readln(Surname);
  end;

{ Ακολουθεί η υλοπίηση της δικής μου πρότασης }

  Write('Δώσε το επώνυμο του υποψηφίου ή τη λέξη τέλος για τερματισμό: ');
  Readln(Surname);
  while Surname <> 'τέλος' do
  begin
    Write('Δώσε τους βαθμούς των τεσσάρων μαθημάτων: ');
    Readln(B1, B2, B3, B4);

    MO := (B1 + B2 + B3 + B4) / 4;

    if (MO < 1) or (MO > 400) then
      { Μην κάνεις τίποτα! }
    else { Η εντολή που προηγήθηκε ίσως να μην ήταν καν απαραίτητη
           εφόσον ΔΕΝ ζητείται έλεγχος τιμών εισόδου }
    if (MO <= 150) then
      Writeln('Ο υποψήφιος ', Surname, ' ανήκει στην κατηγορία D')
    else if (MO <= 300) then
      Writeln('Ο υποψήφιος ', Surname, ' ανήκει στην κατηγορία C')
    else if (MO <= 350) then
      Writeln('Ο υποψήφιος ', Surname, ' ανήκει στην κατηγορία B')
    else
      Writeln('Ο υποψήφιος ', Surname, ' ανήκει στην κατηγορία A');

    Write('Δώσε το επώνυμο του υποψηφίου ή τη λέξη τέλος για τερματισμό: ');
    Readln(Surname);
  end;
end.

Άσκηση 29η (Πανελλήνιες 2011 ΔΠ, Θέμα 4ο)

Μια εταιρεία παραγωγής γραφικής ύλης που διανέμει τα προϊόντα της μέσω πωλητών της, επιθυμεί στο τέλος της χρονιάς να ελέγξει την απόδοσή τους.
Να γράψετε στο τετράδιό σας πρόγραμμα σε γλώσσα Pascal το οποίο:

  1. Να περιλαμβάνει το τμήμα δηλώσεων μεταβλητών.
  2. Να διαβάζει το όνομα του πωλητή.
  3. Το ανωτέρω (2) να επαναλαμβάνεται έως ότου δοθεί για όνομα πωλητή η τιμή ΤΕΛΟΣ.
  4. Κατά τη διάρκεια της επανάληψης να διαβάζεται το ποσό των ετήσιων πωλήσεων κάθε πωλητή και μετά το τέλος των επαναλήψεων να έχουν υπολογιστεί τα ακόλουθα:
    α) Το πλήθος των πωλητών με πωλήσεις >=50000 Ευρώ.
    β) Το πλήθος των πωλητών με πωλήσεις <50000 Ευρώ.
    γ) Το συνολικό ποσό των πωλήσεων όλων των πωλητών.
  5. Στο τέλος των επαναλήψεων να:
    α) τυπώσει το πλήθος των πωλητών με πωλήσεις >=50000 Ευρώ
    β) τυπώσει το πλήθος των πωλητών με πωλήσεις <50000 Ευρώ
    γ) τυπώσει το συνολικό ποσό των πωλήσεων όλων των πωλητών
    δ) υπολογίσει και να τυπώσει το μέσο όρο των πωλήσεων όλων των πωλητών με ακρίβεια ενός δεκαδικού στοιχείου.

Υποδείξεις:

  1. Η εταιρεία διαθέτει τουλάχιστον έναν πωλητή.
  2. Για την επανάληψη να γίνει χρήση της εντολής while…do ή της εντολής repeat…until.
  3. Στις εντολές εισόδου και εξόδου να υπάρχουν τα κατάλληλα μηνύματα.
program Stationery;

var
  SellersName: string;
  SalesUp, SalesDown: Integer;
  YearTotalPerSeller, YearTotal,
  YearAverage: Real;

begin
{ Αρχικοποιούμε τους μετρητές και το συνολικό ποσό (αθροιστής)
  θέτοντάς τα στην τιμή 0 }
  SalesUp   := 0;
  SalesDown := 0;
  YearTotal := 0.0;

{ Εφόσον η υπόδειξη (α) μας πληροφορεί ότι η εταιρεία διαθέτει
  τουλάχιστον έναν πωλητή και κατά συνέπεια θα γίνουν μία ή και
  περισσότερες επαναλήψεις, θεωρούμε ότι η εντολή επανάληψης
  repeat…until ενδείκνυται για το συγκεκριμένο πρόβλημα και
  γι' αυτό θα το επιλύσουμε με χρήση αυτής.
  Δίπλα απ' τα repeat και until, σε σχόλιο τι θα έπρεπε να γράψουμε
  εφόσον επιλέγαμε να χρησιμοποιήσουμε την εντολή while…do }

{ Εξασφάλιση της ύπαρξης τουλάχιστον ενός πωλητή με χρήση της εντολής
  repeat…until }
  repeat
    Write('Δώσε το όνομα του πωλητή: ');
    Readln(SellersName);
  until SellersName <> 'ΤΕΛΟΣ';
  repeat { while SellersName <> 'ΤΕΛΟΣ' do begin }
  { Ο έλεγχος τιμών δεν διευκρινίζεται το αν ζητείται ή όχι οπότε,
    δεν είναι λάθος να γίνει }
    repeat
      Write('Δώσε το ποσό των ετήσιων πωλήσεων του πωλητή: ');
      Readln(YearTotalPerSeller);
    until YearTotalPerSeller >= 0;

    if YearTotalPerSeller >= 50000 then
      SalesUp := SalesUp + 1
    else
      SalesDown := SalesDown + 1;

    YearTotal := YearTotal + YearTotalPerSeller;

    Write('Δώσε το όνομα του πωλητή ή τη λέξη “ΤΕΛΟΣ” για τερματισμό: ');
    Readln(SellersName);
  until SellersName = 'ΤΕΛΟΣ' { end };

  Writeln('Πλήθος πωλητών με πωλήσεις >=50000€: ', SalesUp);
  Writeln('Πλήθος πωλητών με πωλήσεις <50000€: ', SalesDown);
  Writeln('Συνολικό ποσό πωλήσεων όλων των πωλητών σε €: ', YearTotal:0:1);
{ Εφόσον η υπόδειξη (α) μας πληροφορεί ότι η εταιρεία διαθέτει τουλάχιστον
  έναν πωλητή δεν απαιτείται να γίνει έλεγχος του παρονομαστή }
  YearAverage := YearTotal / (SalesUp + SalesDown);
  Writeln('Μέσος όρος πωλήσεων όλων των πωλητών σε €: ', YearAverage:0:1);
end.

Άσκηση 30η (Πανελλήνιες 2012 ΔΠ, Θέμα 4ο)

Μια ναυτιλιακή εταιρεία σε ένα οχηματαγωγό της πλοίο και μόνο σε σχέση με τα οχήματα, εφαρμόζει την τιμολογιακή πολιτική που φαίνεται στον παρακάτω πίνακα:

Τύπος οχήματος Χρέωση ανά όχημα
Μηχανή 10 ευρώ
Αυτοκίνητο ΙΧ 20 ευρώ
Φορτηγό 30 ευρώ

Ο οδηγός δεν πληρώνει εισιτήριο, ενώ κάθε επιπλέον επιβάτης του οχήματος πληρώνει 5 ευρώ.

Να γραφεί πρόγραμμα σε Pascal, το οποίο:

  1. Να περιλαμβάνει το τμήμα δηλώσεων μεταβλητών.
  2. Να διαβάζει τον τύπο του οχήματος (Μ για μηχανή, Α για αυτοκίνητο, Φ για φορτηγό) και τον αριθμό των επιβατών του (μαζί με τον οδηγό).
  3. Να υπολογίζει το κόστος για κάθε όχημα, στο οποίο να συμπεριλαμβάνεται και το κόστος των επιβατών.
  4. Η διαδικασία (2-3) επαναλαμβάνεται για όλα τα οχήματα και μέχρι να δοθεί η τιμή ΤΕΛΟΣ στον τύπο του οχήματος.
  5. Μετά την επανάληψη να εμφανίζονται:
    α) Το πλήθος των φορτηγών.
    β) Η συνολική χρέωση όλων των οχημάτων μαζί με τους επιβάτες τους.

Υποδείξεις:

  1. ∆ε χρειάζεται να γίνει έλεγχος ορθότητας τιμών, ούτε να υπάρχουν τα κατάλληλα μηνύματα στις εντολές εισόδου και εξόδου.
  2. Το πρόγραμμα δεν ασχολείται με τους επιβάτες άνευ οχήματος.
  3. Για την επανάληψη να γίνει χρήση της εντολής while…do ή της εντολής repeat…until.
  4. Στο πλοίο εισέρχεται τουλάχιστον ένα όχημα, ενώ όλα τα οχήματα είναι με οδηγό.
program ShippingCo;

var
  VehicleType: string;
  nPassengers: Integer;
  NumberOfTrucks, VehicleCost, TotalVehicleCost: Integer;

begin
{ Αρχικοποιούμε τον μετρητή και το συνολικό ποσό (αθροιστής)
  θέτοντάς τα στην τιμή 0 }
  NumberOfTrucks   := 0;
  TotalVehicleCost := 0;

{ Εφόσον η υπόδειξη (δ) μας πληροφορεί ότι στο πλοίο εισέρχεται τουλάχιστον
  ένα όχημα και κατά συνέπεια θα γίνουν μία ή και
  περισσότερες επαναλήψεις, θεωρούμε ότι η εντολή επανάληψης
  repeat…until ενδείκνυται για το συγκεκριμένο πρόβλημα και
  γι' αυτό θα το επιλύσουμε με χρήση αυτής.
  Δίπλα απ' τα repeat και until, σε σχόλιο τι θα έπρεπε να γράψουμε
  εφόσον επιλέγαμε να χρησιμοποιήσουμε την εντολή while…do }

  Readln(VehicleType);

  repeat { while VehicleType <> 'ΤΕΛΟΣ' do begin }

    Readln(nPassengers);

    if VehicleType = 'Μ' then
      VehicleCost := 10
    else if VehicleType = 'Α' then
      VehicleCost := 20
    else { VehicleType = 'Φ' }
    begin
      VehicleCost := 30;
      NumberOfTrucks := NumberOfTrucks + 1;
    end;

    TotalVehicleCost := TotalVehicleCost +
                        VehicleCost +
                        (nPassengers - 1) * 5;

    Readln(VehicleType);

  until VehicleType = 'ΤΕΛΟΣ' { end };

  Writeln(NumberOfTrucks:4, TotalVehicleCost:8);
end.

Άσκηση 31η (Πανελλήνιες 2013 ΔΠ, Θέμα 4ο)

Μια αεροπορική εταιρεία πρόκειται να δρομολογήσει μία πτήση με αεροπλάνο 100 θέσεων. Τα λειτουργικά έξοδα της πτήσης είναι 5.000€ και όλα τα εισιτήρια έχουν διατεθεί. Η τιμή του εισιτηρίου, που πλήρωσε ο κάθε επιβάτης, μπορεί να κυμαινόταν από 20€ έως και 200€. Να γράψετε στο τετράδιό σας, έναν αλγόριθμο, ο οποίος:

  1. Να διαβάζει το όνομα του κάθε επιβάτη.
  2. Να διαβάζει την τιμή του εισιτηρίου του κάθε επιβάτη με έλεγχο ορθότητας τιμών.
  3. Να υπολογίζει τις συνολικές εισπράξεις της εταιρείας από τη συγκεκριμένη πτήση.
  4. Να υπολογίζει και να εμφανίζει το όνομα του επιβάτη με τη μικρότερη τιμή εισιτηρίου. Να θεωρήσετε, ότι η μικρότερη τιμή είναι μοναδική.
  5. Να εμφανίζει το μήνυμα «ΚΕΡ∆ΟΣ», αν οι συνολικές εισπράξεις είναι μεγαλύτερες από τα λειτουργικά έξοδα ή το μήνυμα «ΖΗΜΙΑ», αν οι συνολικές εισπράξεις είναι μικρότερες από τα λειτουργικά έξοδα ή το μήνυμα «ΜΗ∆ΕΝΙΚΟ ΑΠΟΤΕΛΕΣΜΑ», αν είναι ίσα.

Υποδείξεις:

  1. Ο αλγόριθμος μπορεί να αποδοθεί είτε με ψευδοκώδικα, είτε με στοιχεία (εντολές) της γλώσσας Pascal, είτε με συνδυασμό αυτών.
  2. ∆ε χρειάζεται να υπάρχουν τα κατάλληλα μηνύματα στις εντολές εισόδου και εξόδου, εκτός του ερωτήματος 5.
program Airlines;

var
  sPassengerName, sPassengerNameWithLowestPrice: string;
  nTicketPrice, nLowestTicketPrice, nTotalTicketsPrice: real;
  i: integer;


begin
  nTotalTicketsPrice := 0.0;
  nLowestTicketPrice := 201.0;

  for i := 1 to 100 do
  begin
    Readln(sPassengerName);

    repeat
      Readln(nTicketPrice);
    until (nTicketPrice >= 20.0) and (nTicketPrice <= 200.0);

    nTotalTicketsPrice := nTotalTicketsPrice + nTicketPrice;

    if nTicketPrice < nLowestTicketPrice then
    begin
      nLowestTicketPrice := nTicketPrice;
      sPassengerNameWithLowestPrice := sPassengerName;
    end;
  end;

  Writeln(sPassengerNameWithLowestPrice);

  if nTotalTicketsPrice > 5000.0 then
    Writeln('ΚΕΡΔΟΣ')
  else if nTotalTicketsPrice < 5000.0 then
    Writeln('ΖΗΜΙΑ')
  else
    Writeln('ΜΗΔΕΝΙΚΟ ΑΠΟΤΕΛΕΣΜΑ');
end.

Γρήγοροι σύνδεσμοι

Στην ενότητα αυτή παραθέτουμε συνδέσμους στα θέματα της τρέχουσας ιστοσελίδας με σκοπό την ευκολότερη πλοήγηση σ' αυτά.

Κατάλογος θεμάτων

  • Περιγραφή του μαθήματος
  • Αποθετήριο αρχείων
  • Το βιβλίο του μαθητή
  • Σύνδεσμοι σχετικοί με το μάθημα
  • Παρουσιάσεις του μαθήματος
  • Λογικά Διαγράμματα
  • Ψευδοκώδικας
  • Προγράμματα σε γλώσσα Pascal

Χρήσιμοι σύνδεσμοι

Στην ενότητα αυτή παραθέτουμε συνδέσμους σε ιστοτόπους σχετικούς με την εκπαίδευση.

Πανελλήνιο Σχολικό Δίκτυο (Π.Σ.Δ.)

  • Κεντρική σελίδα
  • Υπηρεσία web-mail
  • Διαχείριση & Διαμοιρασμός Αρχείων
  • sch.gr Web Analytics
  • Υπηρεσία Συνεργατικών Εγγράφων
  • Υπηρεσία Επικοινωνίας & Συνεργασίας
  • Υπηρεσία Ψηφιακών Πιστοποιητικών
  • Υπηρεσία Εικονικής Τάξης
  • Υπηρεσία Τηλεκπαίδευσης
  • Υποστήριξη Χρηστών, Σ.Ε.Π.Ε.Η.Υ. & Σχολικών Μονάδων (Helpdesk)
  • Τεχνική Στήριξη Πληροφοριακών Συστημάτων
  • Εκπαιδευτικό Λογισμικό Ανοικτού Κώδικα
  • Ασφάλεια στο Διαδίκτυο
  • Δράση Ενημέρωσης και Επαγρύπνησης Saferinternet.gr – Ιστοχώρος για τους εκπαιδευτικούς
  • Μαθητική Πύλη
  • Ηλεκτρονικά Σχολικά Περιοδικά & Εφημερίδες
  • Εκπαιδεύομαι και εγώ!
  • Υπηρεσίες βίντεο

Υπ.Π.Ε.Θ

  • Κεντρική σελίδα
  • Ψηφιακό Σχολείο
  • Εκπαιδευτική Τηλεόραση

Παιδαγωγικό Ινστιτούτο

  • Κεντρική σελίδα
  • ΕΠΑ.Λ.
  • Δικτυακή Εκπαιδευτική Πύλη
  • Πληροφορική – Υποστηρικτικό υλικό
  • Αριστεία και Καινοτομία στην Εκπαίδευση

Π.Ε.Κα.Π.

  • Κεντρική σελίδα

Εκπαιδευτική επικαιρότητα

  • Αλφαβήτα
  • dictyo.gr
  • e-sos.gr
  • likio.gr
  • PDE – Η κοινότητα των εκπαιδευτικών
  • Αθανάσιος Κουτσονικόλας
  • pe19.gr
  • Οι περιπέτειες του κυρίου των υπολογιστών στην εκ+παίδευση
  • Το Στέκι των Πληροφορικών

Ενδιαφέροντες ιστότοποι

  • Αρχή Προστασίας Δεδομένων Προσωπικού Χαρακτήρα
  • Creative Commons
    Λόγω της μεγάλης εκμετάλλευσης και κακοποίησης των ηλεκτρονικών εγγράφων, δημιουργήθηκαν ειδικές άδειες που ορίζουν τα όρια της πνευματικής τους ιδιοκτησίας. [...]
  • Εταιρεία Ελεύθερου Λογισμικού / Λογισμικού Ανοικτού Κώδικα (ΕΕΛ/ΛΑΚ) και το πολύ χρήσιμο εργαλείο Γλωσσάρι Ελληνοποιήσεων
  • Τα νέα της Πληροφορικής
  • Η Πληροφορική στο Σχολείο
  • Κατεβάστε δωρεάν παιχνίδια & προγράμματα για υπολογιστές με Windows

Ας Επικοινωνήσουμε

Wordpress Twitter Facebook YouTube Scoop.it! issuu Edmodo Google+ Scribd RSS Feeds e-mail

 

Tweets by @jginis

 

 

Τι είναι για σένα η Βικιπαίδεια;

myWikipedia logo

Η Διακήρυξη του Ανοικτού Σεβασμού

OpenRespect logo

 

Signature

Β' Τάξη

  • Βασικές Αρχές Ψηφιακής Τεχνολογίας
  • Προγραμματιστικά Εργαλεία για το Διαδίκτυο

Γ' Τάξη

  • Δίκτυα Υπολογιστών ΙΙ
  • Δομημένος Προγραμματισμός
  • Στοιχεία Προγραμματισμού σε Γραφικό Περιβάλλον

Projects curated by me

  • Δομημένος Προγραμματισμός
  • PullOS
  • ΣΕΚ Σαλαμίνας
  • ΕΠΑΛ Σαλαμίνας
  • The silver drawer
  • Τηλεφωνικός Κατάλογος 2008
  • Windows7 Themes
  • ΟΔΟΣ Υπολογιστών
  • Προγραμματιστικά Εργαλεία για το Διαδίκτυο