📌 Τμηματικός Προγραμματισμός

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

🔹 Τι είναι ο Τμηματικός Προγραμματισμός;

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

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

🔹 Τι είναι Υποπρόγραμμα;

Υποπρόγραμμα (subprogram) ονομάζουμε ένα τμήμα του προγράμματος το οποίο επιτελεί ένα αυτόνομο έργο και έχει γραφτεί χωριστά από το υπόλοιπο.

🔹 Απαιτήσεις για Σωστή Εφαρμογή

  • Μελέτη στην ανάλυση του προβλήματος (δεν υπάρχουν συγκεκριμένοι κανόνες, η δυσκολία αυξάνεται όσο πιο μεγάλο και σύνθετο είναι το πρόβλημα).
  • Εμπειρία στον προγραμματισμό.
  • Ταλέντο.
  • Γνώσεις.

📌 Ιδιότητες Υποπρογραμμάτων

Κάθε υποπρόγραμμα πρέπει να έχει τις εξής ιδιότητες:

  1. Μία είσοδος και μία έξοδο: Το υποπρόγραμμα ενεργοποιείται με την είσοδο σε αυτό που γίνεται πάντοτε στην αρχή του, εκτελεί ορισμένες ενέργειες και απενεργοποιείται με την έξοδο από αυτό που γίνεται πάντοτε από το τέλος.
  2. Ανεξαρτησία: Το κάθε υποπρόγραμμα πρέπει να μπορεί να σχεδιαστεί, να αναπτυχθεί και να συντηρηθεί αυτόνομα χωρίς να επηρεαστούν άλλα υποπρογράμματα. Στην πράξη η απόλυτη ανεξαρτησία είναι δύσκολο να επιτευχθεί.
  3. Όχι πολύ μεγάλο: Το υποπρόγραμμα πρέπει να είναι τόσο, σε μέγεθος, ώστε να είναι εύκολα κατανοητό για να μπορέσει να ελεγχθεί. Πρέπει να εκτελεί μόνο μία λειτουργία — αν εκτελεί περισσότερες τότε θα πρέπει να διασπαστεί σε ακόμα μικρότερα.

📌 Πλεονεκτήματα Τμηματικού Προγραμματισμού

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

📌 Κλήση Υποπρογράμματος & Παράμετροι

🔹 Κλήση Υποπρογράμματος

Κλήση ενός υποπρογράμματος ονομάζεται η διαδικασία κατά την οποία ένα υποπρόγραμμα ενεργοποιείται είτε από ένα άλλο υποπρόγραμμα είτε από το αρχικό (κύριο) πρόγραμμα.

🔹 Παράμετροι

Μια παράμετρος είναι μια μεταβλητή που επιτρέπει το πέρασμα της τιμής της από ένα τμήμα προγράμματος σε ένα άλλο. Τα υποπρογράμματα είναι αυτόνομα και ανεξάρτητα, αλλά πρέπει να επικοινωνούν με το υπόλοιπο πρόγραμμα που τα καλεί. Συνήθως δέχονται τιμές από το τμήμα που τα καλεί και μετά την εκτέλεση επιστρέφουν νέες τιμές / αποτελέσματα.

📌 Είδη Υποπρογραμμάτων

Υπάρχουν δύο είδη υποπρογραμμάτων: οι διαδικασίες και οι συναρτήσεις. Και τα δύο τοποθετούνται μετά το τέλος του κυρίου προγράμματος.

🔹 Διαδικασίες

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

Ενεργοποιούνται με την εντολή ΚΑΛΕΣΕ και την εμφάνιση του ονόματός τους συνοδευόμενο με τη λίστα παραμέτρων σε παρενθέσεις.

ΚΑΛΕΣΕ Όνομα_Διαδικασίας (λίστα παραμέτρων)

🔹 Συναρτήσεις

Η λειτουργία τους είναι πιο περιορισμένη. Υπολογίζουν μια τιμή (ακέραια, πραγματική, χαρακτήρα ή λογική) και μόνο αυτή επιστρέφουν στο υποπρόγραμμα που την κάλεσε. Μοιάζουν με τις μαθηματικές συναρτήσεις και η χρήση τους είναι όμοια με τις ενσωματωμένες συναρτήσεις της γλώσσας.

Εκτελούνται απλά με την εμφάνιση του ονόματός τους σε μια έκφραση ή εντολή.

Σημείωση: Μια συνάρτηση δεν μπορεί να καλεί διαδικασία, μπορεί όμως να καλεί άλλη συνάρτηση. Μια διαδικασία μπορεί να καλεί και διαδικασία και συνάρτηση.

📌 Δομή και Σύνταξη Συνάρτησης

ΣΥΝΑΡΤΗΣΗ Όνομα(Λίστα παραμέτρων): Τύπος_Συνάρτησης
  Τμήμα Δηλώσεων
  ΑΡΧΗ
    ...εντολές...
    Όνομα ← Έκφραση
    ...εντολές...
  ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ
  • Το όνομα της συνάρτησης είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ.
  • Η λίστα παραμέτρων είναι μια λίστα μεταβλητών, των οποίων οι τιμές μεταβιβάζονται στη συνάρτηση κατά την κλήση.
  • Οι συναρτήσεις μπορούν να επιστρέφουν τιμές όλων των τύπων δεδομένων (Ακέραια, Πραγματική, Χαρακτήρας, Λογική).
  • Στο σώμα της συνάρτησης πρέπει υποχρεωτικά να υπάρχει μια εντολή εκχώρησης στο όνομα της συνάρτησης.

📌 Δομή και Σύνταξη Διαδικασίας

ΔΙΑΔΙΚΑΣΙΑ Όνομα(Λίστα παραμέτρων)
  Τμήμα Δηλώσεων
  ΑΡΧΗ
    ...εντολές...
  ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
  • Το όνομα της διαδικασίας είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ.
  • Η λίστα παραμέτρων δεν είναι υποχρεωτική. Όταν δεν υπάρχουν παράμετροι, η διαδικασία ούτε παίρνει τιμές ούτε επιστρέφει (π.χ. μια διαδικασία που εμφανίζει ένα μενού επιλογών).
  • Η εκτέλεση του προγράμματος διακόπτεται και εκτελούνται οι εντολές της διαδικασίας. Μετά το τέλος της, η εκτέλεση συνεχίζεται από την εντολή που ακολουθεί.
  • Στο σώμα της διαδικασίας μπορεί να υπάρχουν οποιεσδήποτε εντολές της γλώσσας.

📌 Πραγματικές και Τυπικές Παράμετροι

  • Τυπικές παράμετροι (ορίσματα): Καθορίζουν τις παραμέτρους στη δήλωση του υποπρογράμματος.
  • Πραγματικές παράμετροι: Καθορίζουν τις παραμέτρους στην κλήση του υποπρογράμματος.

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

🔹 Κανόνες Παραμέτρων

  1. Ο αριθμός των πραγματικών και τυπικών παραμέτρων πρέπει να είναι ίδιος.
  2. Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική που βρίσκεται στην αντίστοιχη θέση (η πρώτη στην πρώτη, η δεύτερη στη δεύτερη κ.λπ.).
  3. Η τυπική παράμετρος και η αντίστοιχη πραγματική πρέπει να είναι του ίδιου τύπου.

📌 Χρήση Στοίβας στην Κλήση Υποπρογραμμάτων

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

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

Ιδιότητα LIFO: Η στοίβα λειτουργεί με την αρχή Last In – First Out (Τελευταίο Μέσα – Πρώτο Έξω). Η τελευταία διεύθυνση που μπήκε είναι η πρώτη που βγαίνει.

📌 Εμβέλεια Μεταβλητών

Οι μεταβλητές στη ΓΛΩΣΣΑ έχουν ισχύ μόνο για το τμήμα προγράμματος στο οποίο έχουν δηλωθεί — ισχύουν τοπικά. Το τμήμα του προγράμματος που ισχύουν οι μεταβλητές λέγεται εμβέλεια (scope) μεταβλητών.

Ο μόνος τρόπος για να περάσει μια τιμή από ένα υποπρόγραμμα σε ένα άλλο ή από το κυρίως πρόγραμμα σε ένα υποπρόγραμμα είναι δια μέσου των παραμέτρων κατά το στάδιο της κλήσης και μετά το τέλος της εκτέλεσης.

🔹 Τύποι Εμβέλειας

  • Απεριόριστη εμβέλεια: Όλες οι μεταβλητές είναι καθολικές (γνωστές σε οποιοδήποτε τμήμα). Καταστρατηγεί την αρχή της αυτονομίας και δημιουργεί προβλήματα σε μεγάλα προγράμματα.
  • Περιορισμένη εμβέλεια: Όλες οι μεταβλητές είναι τοπικές (ισχύουν μόνο στο υποπρόγραμμα που δηλώθηκαν). Αυτό έχει η ΓΛΩΣΣΑ. Πλεονεκτήματα: απόλυτη αυτονομία, δυνατότητα χρήσης οποιουδήποτε ονόματος.
  • Μερικώς περιορισμένη εμβέλεια: Κάποιες μεταβλητές είναι τοπικές και κάποιες καθολικές. Προσφέρει πλεονεκτήματα στον πεπειραμένο προγραμματιστή, αλλά για τον αρχάριο περιπλέκει το πρόγραμμα.
💡 Συμβουλή: Κάνε κλικ σε κάθε ερώτηση για να δεις την αναλυτική απάντηση.

1. Τι ονομάζουμε τμηματικό προγραμματισμό; Τι μας εξασφαλίζει;

▼

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

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

2. Τι ονομάζεται υποπρόγραμμα;

▼

Υποπρόγραμμα (subprogram) ονομάζουμε ένα τμήμα του προγράμματος το οποίο επιτελεί ένα αυτόνομο έργο και έχει γραφτεί χωριστά από το υπόλοιπο.

Τα υποπρογράμματα είναι αυτόνομα και ανεξάρτητα τμήματα προγράμματος που πρέπει να επικοινωνούν με το υπόλοιπο πρόγραμμα που τα καλεί. Συνήθως δέχονται τιμές από το τμήμα που τα καλεί και μετά την εκτέλεση επιστρέφουν νέες τιμές / αποτελέσματα.

3. Ποιες ιδιότητες διακρίνουν τα υποπρογράμματα;

▼
  1. Μία είσοδος και μία έξοδο: Το υποπρόγραμμα ενεργοποιείται με την είσοδο σε αυτό (πάντοτε στην αρχή), εκτελεί ορισμένες ενέργειες και απενεργοποιείται με την έξοδο (πάντοτε από το τέλος).
  2. Ανεξαρτησία: Το κάθε υποπρόγραμμα πρέπει να μπορεί να σχεδιαστεί, να αναπτυχθεί και να συντηρηθεί αυτόνομα χωρίς να επηρεαστούν άλλα υποπρογράμματα.
  3. Όχι πολύ μεγάλο: Πρέπει να είναι τόσο σε μέγεθος, ώστε να είναι εύκολα κατανοητό και ελέγξιμο. Εκτελεί μόνο μία λειτουργία — αν εκτελεί περισσότερες, διασπάται σε μικρότερα.

4. Ποια είναι τα πλεονεκτήματα του τμηματικού προγραμματισμού;

▼
  1. Διευκολύνει την ανάπτυξη: Ένα σύνθετο πρόβλημα αναλύεται σε απλούστερα υποπροβλήματα που επιλύονται σταδιακά.
  2. Διευκολύνει την κατανόηση και τη διόρθωση: Ο χωρισμός σε αυτοτελή τμήματα επιτρέπει γρήγορη διόρθωση ενός τμήματος χωρίς να επηρεάζεται όλο το πρόγραμμα. Επίσης διευκολύνει οποιονδήποτε να διαβάσει και να κατανοήσει τη λειτουργία του.
  3. Λιγότερος χρόνος και προσπάθεια: Μια λειτουργία που επαναλαμβάνεται μπορεί να γραφτεί μία φορά και να καλείται από πολλά σημεία. Μειώνεται το μέγεθος, ο χρόνος συγγραφής και οι πιθανότητες λάθους.
  4. Επεκτείνει τις δυνατότητες των γλωσσών: Η δημιουργία βιβλιοθηκών υποπρογραμμάτων επεκτείνει την ίδια τη γλώσσα προγραμματισμού.

5. Τι ονομάζουμε κλήση του υποπρογράμματος;

▼

Κλήση ενός υποπρογράμματος ονομάζεται η διαδικασία κατά την οποία ένα υποπρόγραμμα ενεργοποιείται είτε από ένα άλλο υποπρόγραμμα είτε από το αρχικό (κύριο) πρόγραμμα.

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

6. Τι ονομάζουμε παράμετρο; Πώς χρησιμοποιείται κατά την κλήση;

▼

Μια παράμετρος είναι μια μεταβλητή που επιτρέπει το πέρασμα της τιμής της από ένα τμήμα προγράμματος σε ένα άλλο.

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

Τυπικές παράμετροι (ορίσματα): καθορίζονται στη δήλωση του υποπρογράμματος.

Πραγματικές παράμετροι: καθορίζονται στην κλήση του υποπρογράμματος.

7. Ποια είδη υποπρογραμμάτων γνωρίζετε; Ποιες οι λειτουργίες του καθενός;

▼

Υπάρχουν δύο είδη: οι διαδικασίες και οι συναρτήσεις.

Διαδικασίες: Μπορούν να εκτελέσουν οποιαδήποτε λειτουργία: εισαγωγή δεδομένων, υπολογισμούς, μεταβολή τιμών παραμέτρων, εκτύπωση αποτελεσμάτων. Ενεργοποιούνται με ΚΑΛΕΣΕ.

Συναρτήσεις: Υπολογίζουν μια τιμή (ακέραια, πραγματική, χαρακτήρα ή λογική) και μόνο αυτή επιστρέφουν. Μοιάζουν με μαθηματικές συναρτήσεις και ενεργοποιούνται με την εμφάνιση του ονόματός τους σε μια έκφραση.

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

8. Ποιοι κανόνες πρέπει να ακολουθούνται στις λίστες παραμέτρων;

▼
  1. Ο αριθμός των πραγματικών και τυπικών παραμέτρων πρέπει να είναι ίδιος.
  2. Κάθε πραγματική παράμετρος αντιστοιχεί στην τυπική που βρίσκεται στην αντίστοιχη θέση (πρώτη με πρώτη, δεύτερη με δεύτερη κ.λπ.).
  3. Η τυπική παράμετρος και η αντίστοιχη πραγματική πρέπει να είναι του ίδιου τύπου.

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

9. Πώς χρησιμοποιείται η στοίβα στην κλήση υποπρογραμμάτων;

▼

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

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

Η στοίβα λειτουργεί με την αρχή LIFO (Last In – First Out): η τελευταία διεύθυνση που μπήκε είναι η πρώτη που βγαίνει.

10. Τι είναι η εμβέλεια των μεταβλητών; Ποιοι τύποι εμβέλειας υπάρχουν;

▼

Η εμβέλεια (scope) είναι το τμήμα του προγράμματος που ισχύουν οι μεταβλητές. Στη ΓΛΩΣΣΑ οι μεταβλητές είναι τοπικές — ισχύουν μόνο στο υποπρόγραμμα που δηλώθηκαν.

Ο μόνος τρόπος για πέρασμα τιμών μεταξύ τμημάτων είναι δια μέσου των παραμέτρων.

Τύποι εμβέλειας:

  • Απεριόριστη: Όλες οι μεταβλητές είναι καθολικές. Προβληματική για μεγάλα προγράμματα.
  • Περιορισμένη: Όλες οι μεταβλητές είναι τοπικές. Αυτό έχει η ΓΛΩΣΣΑ. Πλεονέκτημα: απόλυτη αυτονομία.
  • Μερικώς περιορισμένη: Κάποιες τοπικές, κάποιες καθολικές. Περιπλέκει το πρόγραμμα για αρχάριους.
🎯 Οδηγίες: Επίλεξε μία απάντηση σε κάθε ερώτηση. Θα δεις άμεση ανατροφοδότηση.

1. Τι ονομάζεται τμηματικός προγραμματισμός;

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

2. Ποια από τις παρακάτω ΔΕΝ είναι ιδιότητα υποπρογράμματος;

Να έχει πολλές εισόδους και εξόδους
Να είναι ανεξάρτητο από τα άλλα
Να μην είναι πολύ μεγάλο
Να εκτελεί μία λειτουργία

3. Ποιο από τα παρακάτω είναι πλεονέκτημα του τμηματικού προγραμματισμού;

Αυξάνει το μέγεθος του προγράμματος
Δυσκολεύει τη διόρθωση λαθών
Διευκολύνει την κατανόηση και τη διόρθωση
Απαιτεί περισσότερο χρόνο συγγραφής

4. Πώς ενεργοποιείται μια συνάρτηση;

Με την εντολή ΚΑΛΕΣΕ
Με την εμφάνιση του ονόματός της σε μια έκφραση
Με την εντολή ΕΚΤΕΛΕΣΕ
Αυτόματα στην αρχή του προγράμματος

5. Πώς ενεργοποιείται μια διαδικασία;

Με την εντολή ΚΑΛΕΣΕ και το όνομά της
Με την εμφάνιση του ονόματός της σε έκφραση
Αυτόματα μετά το κύριο πρόγραμμα
Με την εντολή ΕΝΑΡΞΗ

6. Τι επιστρέφει μια συνάρτηση;

Πολλές τιμές διαφορετικού τύπου
Μόνο ακέραιες τιμές
Μόνο μία τιμή (οποιουδήποτε τύπου)
Τίποτα — εκτελεί μόνο εντολές

7. Πού τοποθετούνται τα υποπρογράμματα στο πρόγραμμα;

Πριν από το κύριο πρόγραμμα
Μετά το τέλος του κυρίου προγράμματος
Μέσα στο κύριο πρόγραμμα
Σε ξεχωριστό αρχείο μόνο

8. Μια συνάρτηση μπορεί να καλέσει:

Άλλη συνάρτηση
Διαδικασία
Και τα δύο
Κανένα από τα δύο

9. Ποιος κανόνας ισχύει για τις παραμέτρους;

Οι πραγματικές και τυπικές πρέπει να έχουν ίδια ονόματα
Ο αριθμός των πραγματικών μπορεί να είναι μικρότερος
Κάθε πραγματική αντιστοιχεί στην τυπική της ίδιας θέσης και ίδιου τύπου
Οι παράμετροι δεν χρειάζεται να είναι του ίδιου τύπου

10. Ποια εμβέλεια έχουν οι μεταβλητές στη ΓΛΩΣΣΑ;

Απεριόριστη (καθολικές)
Περιορισμένη (τοπικές)
Μερικώς περιορισμένη
Δεν έχουν εμβέλεια
💪 Προκλήσεις: Προσπάθησε να τις λύσεις μόνος σου πριν δεις την απάντηση!

Άσκηση 1: Συνάρτηση υπολογισμού εμβαδού κύκλου

⭐

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

ΠΡΟΓΡΑΜΜΑ Εμβαδο_Κυκλου
ΜΕΤΑΒΛΗΤΕΣ
  ΠΡΑΓΜΑΤΙΚΕΣ: r, εμβαδο
ΑΡΧΗ
  ΓΡΑΨΕ "Δώσε ακτίνα:"
  ΔΙΑΒΑΣΕ r
  εμβαδο ← Εμβαδο_Κ(r)
  ΓΡΑΨΕ "Το εμβαδόν είναι:", εμβαδο
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΣΥΝΑΡΤΗΣΗ Εμβαδο_Κ(ακτινα): ΠΡΑΓΜΑΤΙΚΗ
ΜΕΤΑΒΛΗΤΕΣ
  ΠΡΑΓΜΑΤΙΚΕΣ: ακτινα
ΑΡΧΗ
  Εμβαδο_Κ ← 3.14159 * ακτινα ^ 2
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

Άσκηση 2: Συνάρτηση μέγιστου δύο αριθμών

⭐

Να γραφεί συνάρτηση που δέχεται δύο ακέραιους και επιστρέφει τον μεγαλύτερο.

ΠΡΟΓΡΑΜΜΑ Μεγιστος_2
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: α, β, max
ΑΡΧΗ
  ΔΙΑΒΑΣΕ α, β
  max ← Μεγιστος(α, β)
  ΓΡΑΨΕ "Ο μεγαλύτερος είναι:", max
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΣΥΝΑΡΤΗΣΗ Μεγιστος(χ, ψ): ΑΚΕΡΑΙΑ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: χ, ψ
ΑΡΧΗ
  ΑΝ χ > ψ ΤΟΤΕ
    Μεγιστος ← χ
  ΑΛΛΙΩΣ
    Μεγιστος ← ψ
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

Άσκηση 3: Διαδικασία εμφάνισης μενού

⭐

Να γραφεί διαδικασία χωρίς παραμέτρους που εμφανίζει ένα μενού επιλογών (1. Πρόσθεση, 2. Αφαίρεση, 3. Έξοδος).

ΠΡΟΓΡΑΜΜΑ Μενου
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: επιλογη
ΑΡΧΗ
  ΚΑΛΕΣΕ Εμφανισε_Μενου
  ΔΙΑΒΑΣΕ επιλογη
  ΓΡΑΨΕ "Επέλεξες:", επιλογη
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΔΙΑΔΙΚΑΣΙΑ Εμφανισε_Μενου
ΑΡΧΗ
  ΓΡΑΨΕ "========== ΜΕΝΟΥ =========="
  ΓΡΑΨΕ "1. Πρόσθεση"
  ΓΡΑΨΕ "2. Αφαίρεση"
  ΓΡΑΨΕ "3. Έξοδος"
  ΓΡΑΨΕ "============================"
  ΓΡΑΨΕ "Επίλεξε (1-3):"
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

Άσκηση 4: Διαδικασία ανταλλαγής τιμών δύο μεταβλητών

⭐⭐

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

ΠΡΟΓΡΑΜΜΑ Ανταλλαγη
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: α, β
ΑΡΧΗ
  α ← 10
  β ← 20
  ΓΡΑΨΕ "Πριν:", α, β
  ΚΑΛΕΣΕ Swap(α, β)
  ΓΡΑΨΕ "Μετά:", α, β
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΔΙΑΔΙΚΑΣΙΑ Swap(χ, ψ)
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: χ, ψ, temp
ΑΡΧΗ
  temp ← χ
  χ ← ψ
  ψ ← temp
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

Άσκηση 5: Συνάρτηση υπολογισμού παραγοντικού

⭐⭐

Να γραφεί συνάρτηση που υπολογίζει και επιστρέφει το παραγοντικό ενός ακεραίου n (n!).

ΠΡΟΓΡΑΜΜΑ Παραγοντικο
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: ν, αποτελεσμα
ΑΡΧΗ
  ΓΡΑΨΕ "Δώσε n:"
  ΔΙΑΒΑΣΕ ν
  αποτελεσμα ← Παραγοντικο(ν)
  ΓΡΑΨΕ ν, "!=", αποτελεσμα
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΣΥΝΑΡΤΗΣΗ Παραγοντικο(ν): ΑΚΕΡΑΙΑ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: ν, i, π
ΑΡΧΗ
  π ← 1
  ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ ν
    π ← π * i
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  Παραγοντικο ← π
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

Άσκηση 6: Συνάρτηση έλεγχου πρώτου αριθμού

⭐⭐⭐

Να γραφεί συνάρτηση που δέχεται έναν ακέραιο και επιστρέφει ΑΛΗΘΗΣ αν είναι πρώτος, αλλιώς ΨΕΥΔΗΣ.

ΠΡΟΓΡΑΜΜΑ Πρωτος_Αριθμος
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: ν
ΑΡΧΗ
  ΔΙΑΒΑΣΕ ν
  ΑΝ Πρωτος(ν) = ΑΛΗΘΗΣ ΤΟΤΕ
    ΓΡΑΨΕ "Πρώτος αριθμός"
  ΑΛΛΙΩΣ
    ΓΡΑΨΕ "Όχι πρώτος"
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΣΥΝΑΡΤΗΣΗ Πρωτος(ν): ΛΟΓΙΚΗ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: ν, i
  ΛΟΓΙΚΕΣ: flag
ΑΡΧΗ
  flag ← ΑΛΗΘΗΣ
  ΑΝ ν <= 1 ΤΟΤΕ
    flag ← ΨΕΥΔΗΣ
  ΑΛΛΙΩΣ_ΑΝ ν = 2 ΤΟΤΕ
    flag ← ΑΛΗΘΗΣ
  ΑΛΛΙΩΣ
    ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ ν - 1
      ΑΝ ν MOD i = 0 ΤΟΤΕ
        flag ← ΨΕΥΔΗΣ
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΤΕΛΟΣ_ΑΝ
  Πρωτος ← flag
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

Άσκηση 7: Διαδικασία ταξινόμησης πίνακα

⭐⭐⭐

Να γραφεί διαδικασία που δέχεται έναν πίνακα 20 ακεραίων και τον ταξινομεί κατά αύξουσα σειρά με τη μέθοδο της ευθείας ανταλλαγής.

ΠΡΟΓΡΑΜΜΑ Ταξινομηση_Διαδ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Α[20], i
ΑΡΧΗ
  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 20
    ΔΙΑΒΑΣΕ Α[i]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

  ΚΑΛΕΣΕ BubbleSort(Α)

  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 20
    ΓΡΑΨΕ Α[i]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΔΙΑΔΙΚΑΣΙΑ BubbleSort(Π)
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Π[20], i, j, temp
ΑΡΧΗ
  ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 20
    ΓΙΑ j ΑΠΟ 20 ΜΕΧΡΙ i ΜΕ ΒΗΜΑ -1
      ΑΝ Π[j-1] > Π[j] ΤΟΤΕ
        temp ← Π[j-1]
        Π[j-1] ← Π[j]
        Π[j] ← temp
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

Άσκηση 8: Συνάρτηση Fibonacci

⭐⭐⭐

Να γραφεί συνάρτηση που δέχεται έναν ακέραιο n και επιστρέφει τον n-οστό όρο της ακολουθίας Fibonacci (1, 1, 2, 3, 5, 8...).

ΠΡΟΓΡΑΜΜΑ Fibonacci
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: ν, αποτελεσμα
ΑΡΧΗ
  ΓΡΑΨΕ "Δώσε n:"
  ΔΙΑΒΑΣΕ ν
  αποτελεσμα ← Fib(ν)
  ΓΡΑΨΕ "Ο", ν, "ος όρος Fibonacci είναι:", αποτελεσμα
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΣΥΝΑΡΤΗΣΗ Fib(ν): ΑΚΕΡΑΙΑ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: ν, i, α, β, temp
ΑΡΧΗ
  ΑΝ ν <= 2 ΤΟΤΕ
    Fib ← 1
  ΑΛΛΙΩΣ
    α ← 1
    β ← 1
    ΓΙΑ i ΑΠΟ 3 ΜΕΧΡΙ ν
      temp ← α + β
      α ← β
      β ← temp
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
    Fib ← β
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ