Παρουσίαση/Προβολή

Εικόνα επιλογής

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓ. ΠΕΡΙΒΑΛ.-Υποπρογράμματα-1 Γοικ

(EL226209) -  ΘΕΟΔΩΡΟΣ ΚΟΥΤΣΟΥΜΑΡΗΣ

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

                                                         ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

 

    Μια μέρα η φίλη μου η Ιωάννα που είναι ιδιοκτήτρια εταιρίας πληροφορικής μου είπε χαρούμενη ότι ανέλαβαν την μισθοδοσία μεγάλης εταιρίας fast food. Γιατί άραγε μια μεγάλη εταιρία να δώση μέρος της δραστηριότητάς της σε μία άλλη μικρότερη; Το ερώτημα έχει πολλές απαντήσεις. Ίσως να στοιχίζει λιγότερο σε εξοπλισμό και εργατικά αν το κάνει η Ιωάννα απ' ότι το fast food. Ισως το fast food να επιθυμεί το προσωπικό της να επικεντρώνεται περισσότερο στην δραστηριότητα παραγωγής - δημιουργίας και ποιότητας νέων προϊόντων από το να ασχολείται με δραστηριότητες τομέα πληροφορικής.

    Διεθνώς εδώ και δεκαετίες μεγάλες Αμερικάνικες - Ευρωπαϊκές εταιρίες παραχωρούν μέρος της δρατηριότητας τους σε άλλες μικρότερες εταιρίες και μάλιστα σε χώρες όπως η Ινδία. Η διαδικασία αυτή ονoμάζεται Outsourcing.

    Στον προγραμματισμό υπάρχει ανάλογη διαδικασία. Πιστεύεται ότι είναι καλύτερα να διαμοιράζεται η δουλειά που κάνει ένα πρόγραμμα σε άλλα μικρότερα προγράμματα γιατί έτσι απλουστεύεται η δουλειά του κυρίως προγράμματος. Τα προγράμματα αυτά ονομάζονται ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ και έχουν βοηθητικό ρόλο στην προγραμματιστική διαδικασία.

               ΕΡΩΤΗΣΗ SOS

Σε τι χρησιμεύουν τα Υποπρογράμματα

1. Μικραίνει το μέγεθος το κύριου προγράμματος και έτσι γίνεται ποιό κατανοητό

2. Γίνονται πιο κατανοητές οι επι μέρους εργασίες του κύριου προγράμματος.

3. Λόγω αποκέντρωσης αποφέγονται καλύτερα τα λογικά λάθη.

4. Ο εντοπισμός και διόρθωση των λαθών είναι ευκολότερη

5. Η μεταβολή και πρόσθεση νέων δραστηριοτήτων είναι απλούστερη.

Ποιά είναι τα είδη των Υποπρογραμμάτων;

Δύο είναι τα είδη των υποπρογραμμάτων: Τα ΕΞΩΤΕΡΙΚΑ και τα ΕΣΩΤΕΡΙΚΑ υποπρογράμματα. Εξωτερικά ονομάζονται αυτά που είναι σε ξεχωριστά αρχεία δηλ. έχουν ξεχωριστό όνομα αρχείου και διαφορετική θέση στον σκληρό δίσκο. Εσωτερικά είναι αυτά που βρίσκονται μαζί με το κύριο πρόγραμμα στο ίδιο αρχείο. Τα πρώτα είναι εκτός ύλης και θα τα συναντήσετε πιθανόν στο μέλλον. Τα ΕΣΩΤΕΡΙΚΑ, που θα ασχοληθούμε οπο εδώ και μπρός, χωρίζονται σε δύο  κατηγορίες:

Τις Διαδικασίες γνωστές διεθνώς σαν Procedures και

τις Συναρτήσεις  γνωστές διεθνώς σαν Functions.

Όταν θέλω ένα υποπρόγραμμα να βρεί ένα ή παραπάνω αποτέλεσματα χρησιμοποιώ ΔΙΑΔΙΚΑΣΙΑ. Εάν θέλω μόνον ένα αποτέλεσμα χρησιμοποιώ ΣΥΝΑΡΤΗΣΗ. Γενικά, οι διαδικασίες μπορούν να χρησιμοποιηθούν παντού αντικαθιστώντας τις συναρτήσεις.

Τώρα ας δούμε αυτά στην πράξη φτιάχνοντας ένα πρόγραμμα.

                              ΠΡΟΓΡΑΜΜΑ

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

 ΠΟΣΟΤΗΤΑ                                                          ΠΟΣΟΣΤΟ  ΕΚΠΤΩΣΗΣ

50 - 100

0%

101-500

5%

501-2000

8%

Πάνω από 2000

15%

Η τιμή της κάθε μάσκας είναι 0,5 ΕΥΡΩ

 

Να γράψετε πρόγραμμα το οποίο:

Α1) Να περιλαμβάνει κατάλληλο τμήμα δηλώσεων.

 

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

 

Α3) Για κάθε παραγγελία, να διαβάζει την ζητούμενη ποσότητα και, εφόσον το απόθεμα επαρκεί για την κάλυψη της ποσότητας, να εκτελεί την παραγγελία με την ποσότητα που ζητήθηκε. Αν το απόθεμα του εργοστασίου δεν επαρκεί, η παραγγελία απορρίπτεται. Τέλος, η εισαγωγή παραγγελιών τερματίζεται, μέχρι να εξαντληθεί το απόθεμα.   (Παραγγελία μικρότερη των 50 τεμαχίων απορρίπτεται με σχετικό μήνυμα)

 

Α4) Για κάθε παραγγελία το πρόγραμμα να εμφανίζει το ποσό που πρέπει να πληρώσει ο αγοραστής. (Αφού λάβετε υπ’ όψιν την ανάλογη έκπτωση)

 

Α5) Να εμφανίζει το επιπλέον ποσό που πρέπει να πληρώσει ο αγοραστής για τα ταχυδρομικά έξοδα

        ώς εξής: ‘R’ =(Regular Mail)   : 0,050% της αξίας της παραγγελίας

                      ‘Α’ =(Air Mail)           : 0,1%         »      »     »              »

                      ‘E’ =(Express Mail)    : 0,5%         »      »     »               »

 Τους παραπάνω χαρακτήρες (‘R’, ‘A’, ’E’) θα εισάγει επιπλέον ο χρήστης σε κάθε παραγγελία.

 

Συνήθως με αυτή την μορφή δίνονται τα προγράμματα στις πανελλήνιες. Τώρα θα το λύσουμε μαζί!

!ΚΥΡΙΟ ΠΡΟΓΡΑΜΜΑ

ΠΡΟΓΡΑΜΜΑ Mask_Factory
ΣΤΑΘΕΡΕΣ
  price = 
0.5
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: posotita, stock   
! ποσοτητα παραγγελίας και απόθεμα
  ΠΡΑΓΜΑΤΙΚΕΣ: cost, mail_exp
  ΧΑΡΑΚΤΗΡΕΣ: mail_type

ΑΡΧΗ
  stock <- read_stock(stock) 
  ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ                             
!Λήψη Παραγγελιών
    ΓΡΑΨΕ 
'Πόσες Μάσκες θέλετε; '
    ΔΙΑΒΑΣΕ posotita
    ΑΝ posotita > stock 
ΤΟΤΕ
      ΓΡΑΨΕ 
'άκυρη παραγγελία - δεν υπάρχει απόθεμα'
    ΑΛΛΙΩΣ_ΑΝ posotita < 50 
ΤΟΤΕ
      ΓΡΑΨΕ 
'άκυρη παραγγελία - πολύ μικρή ποσότητα'
   
ΑΛΛΙΩΣ
      stock <- stock - posotita
      ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ                 
! Ελεγχος εξόδων αποστολής
        ΓΡΑΨΕ 
'Πώς θέλετε να γίνει η αποστολή; Regular/Αir/Εxpress: '
        ΔΙΑΒΑΣΕ mail_type
      ΜΕΧΡΙΣ_ΟΤΟΥ mail_type = 'R' Η mail_type = 'A' Η mail_type = 
'E'
      ΚΑΛΕΣΕ calculate_cost(posotita, cost) 
      ΓΡΑΨΕ 'παραγγελία: ', posotita, ' Μάσκες ', ' κόστος:', cost
      ΚΑΛΕΣΕ calculate_mail(cost, mail_type, mail_exp) 
      ΓΡΑΨΕ 'Κόστος Αποστολής:', mail_exp, ' Συνολικό κόστος:', cost + mail_exp
   
ΤΕΛΟΣ_ΑΝ
  ΜΕΧΡΙΣ_ΟΤΟΥ stock < 
50
  ΓΡΑΨΕ 'Yπόλοιπο stock: ', stock, 
' Τέλος παραγγελιών'
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

 

! ΥΠΟΠΡΟΓΡΑΜΜΑ 1ο

! Η συνάρτηση αυτή διαβάζει το απόθεμα του εργοστασίου
ΣΥΝΑΡΤΗΣΗ read_stock(st): 
ΑΚΕΡΑΙΑ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: st
ΑΡΧΗ
  ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ                   
! έλεγχος θετικών αποθεμάτων
    ΓΡΑΨΕ 
'Πόσο απόθεμα μασκών έχουμε; '
    ΔΙΑΒΑΣΕ st
  ΜΕΧΡΙΣ_ΟΤΟΥ st > 
0
  read_stock <- st

ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ 

! ΥΠΟΠΡΟΓΡΑΜΜΑ 2ο

ΔΙΑΔΙΚΑΣΙΑ calculate_cost(posotita1, cost1) 
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: posotita1
  ΠΡΑΓΜΑΤΙΚΕΣ: cost1
ΑΡΧΗ
  ΑΝ posotita1 > 2000 ΤΟΤΕ
    cost1 <- posotita1* 0.5 - (posotita1* 0.5* 0.15) 
  ΑΛΛΙΩΣ_ΑΝ (posotita1 > 500) ΚΑΙ (posotita1 <= 2000) ΤΟΤΕ
    cost1 <- posotita1* 0.5 - (posotita1* 0.5* 0.08) 
  ΑΛΛΙΩΣ_ΑΝ (posotita1 > 100) ΚΑΙ (posotita1 <= 500) ΤΟΤΕ
    cost1 <- posotita1* 0.5 - (posotita1* 0.5* 0.05) 
  ΑΛΛΙΩΣ_ΑΝ (posotita1 > 50) ΚΑΙ (posotita1 <= 100) ΤΟΤΕ
    cost1 <- posotita1* 0.5
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

 

! ΥΠΟΠΡΟΓΡΑΜΜΑ 3ο

ΔΙΑΔΙΚΑΣΙΑ calculate_mail(cost2, mail_type2, mail_exp2) 
ΜΕΤΑΒΛΗΤΕΣ
  ΧΑΡΑΚΤΗΡΕΣ: mail_type2
  ΠΡΑΓΜΑΤΙΚΕΣ: cost2, mail_exp2
ΑΡΧΗ
  ΑΝ mail_type2 = 'R' ΤΟΤΕ
    mail_exp2 <- cost2* 0.005
  ΑΛΛΙΩΣ_ΑΝ mail_type2 = 'A' ΤΟΤΕ
    mail_exp2 <- cost2* 0.01
  ΑΛΛΙΩΣ_ΑΝ mail_type2 = 'E' ΤΟΤΕ
    mail_exp2 <- cost2* 0.05
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

            ΑΝΑΛΥΣΗ ΘΕΜΑΤΟΣ

Τώρα λίγες διευκρινήσεις για το πρόγραμμα...

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

Η απάντηση στο Α2 θέμα είναι το ανοικτό κίτρινο μαρκαρισμένο τμήμα. Εδώ χρησιμοποίησα μία συνάρτηση. Εσείς θα μπορούσατε να χρησιμοποιήσετε και διαδικασία. Η εντολή: stock <- read_stock(stock)   καλεί την συνάρτηση για να μάθει πιό είναι το απόθεμα μασκών του εργοστασίου.                                                                               

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

Η απάντηση στο Α4 θέμα είναι το ανοικτό πράσινο μαρκαρισμένο τμήμα. Είναι η διαδικασία που βρήσκει το κόστος της παραγγελίας και την ονόμασα calculate_cost . Η διαδικασία αυτή παίρνει 2 παραμέτρους την posotita που περιέχει το πλήθος του εμπορεύματος που ζητήται και την παράμετρο cost που επιστρέφει το κόστος της παραγγελίας.

Τέλος, η απάντηση στο Α4 θέμα είναι το ανοικτό μπέζ μαρκαρισμένο τμήμα. Η διαδικασία αυτή καλείται να βρεί το κόστος μεταφοράς του εμπορεύματος . Ονομάζεται calculate_mail . Περιέχει 3 παραμέτρους. την cost που μεταφέρει το κόστος της παραγγελίας επί του οποίου θα υπολογιστούν τα ταχυδρομικά έξοδα, την mail_type που περιέχει έναν χαρακτήρα (R=regular, A= Air mail, E= Express) και την μεταβλητή mail_exp που θα επιστρέψει στο κύριο πρόγραμμα τα ταχυδρομικά έξοδα (mail expenses)

                          ΕΚΤΕΛΕΣΗ του προγράμματος

 

Πόσο απόθεμα μασκών έχουμε;2000
Πόσες Μάσκες θέλετε;
5
άκυρη παραγγελία - πολύ μικρή ποσότητα


Πόσες Μάσκες θέλετε;
400
Πώς θέλετε να γίνει η αποστολή; Regular/Αir/Εxpress:R
παραγγελία: 400 Μάσκες  κόστος:
190.00
Κόστος Αποστολής:0.95 Συνολικό κόστος:
190.95


Πόσες Μάσκες θέλετε;
1500
Πώς θέλετε να γίνει η αποστολή; Regular/Αir/Εxpress:A
παραγγελία: 1500 Μάσκες  κόστος:
690.00
Κόστος Αποστολής:6.90 Συνολικό κόστος:
696.90


Πόσες Μάσκες θέλετε;
300
άκυρη παραγγελία - δεν υπάρχει απόθεμα


Πόσες Μάσκες θέλετε;
60
Πώς θέλετε να γίνει η αποστολή; Regular/Αir/Εxpress:E
παραγγελία: 60 Μάσκες  κόστος:
30.00
Κόστος Αποστολής:1.50 Συνολικό κόστος:
31.50
Yπόλοιπο stock: 40 Τέλος παραγγελιών

ΠΡΟΤΑΣΗ: προσπαθήστε να γράψετε το παραπάνω πρόγραμμα στο υπολογιστή σας.

         Τρέξτε το

         Δοκιμάστε να μετατρέψετε τις ΔΙΑΔΙΚΑΣΙΕΣ σε ΣΥΝΑΡΤΗΣΕΙΣ

 

ΚΑΛΗ ΑΝΑΣΤΑΣΗ - ΚΑΛΟ ΠΑΣΧΑ

ΚΑΙ ΠΑΝΤΑ ΥΓΙΕΙΣ

 

    

 

 

 

 

Ημερομηνία δημιουργίας

Παρασκευή 17 Απριλίου 2020