Αποστολέας Θέμα: ΔΙΑΔΙΚΑΣΙΑ ΧΩΡΙΣ ΠΑΡΑΜΕΤΡΟΥΣ  (Αναγνώστηκε 17697 φορές)

Αλεξόπουλος Ανδρέας

  • Θαμώνας
  • ***
  • Μηνύματα: 44
ΔΙΑΔΙΚΑΣΙΑ ΧΩΡΙΣ ΠΑΡΑΜΕΤΡΟΥΣ
« στις: 08 Απρ 2008, 12:01:00 πμ »
Καλησπέρα,
δεν ξέρω αν έχει συζητηθεί ποτέ κάτι παρόμοιο, αλλά με μια γρήγορη αναζήτηση δε βρήκα κάτι σχετικό. Η απορία λοιπόν είναι η εξής: μπορούμε να φτιάξουμε μια διαδικασία η οποία δεν έχει καμμία παράμετρο; Αν ναι, πώς την δηλώνουμε και πώς την καλούμε;
Ένα απλό παράδειγμα μιας τέτοιας διαδικασίας θα μπορούσε να είναι ένα υποπρόγραμμα το οποίο διαβάζει δυο μεταβλητές, τις προσθέτει και εμφανίζει το αποτέλεσμα. Επομένως στην συγκεκριμένη περίπτωση δεν χρειάζεται να περνάει κάποια τιμή από ή προς το πρόγραμμα.
Το ερώτημά μου είναι κυρίως στο πώς θα την δηλώσουμε, πχ θα ήταν σωστό το ακόλουθο;
Κώδικας: [Επιλογή]
ΔΙΑΔΙΚΑΣΙΑ πρόσθεση()
ΜΕΤΑΒΛΗΤΕΣ
........
και να την καλούσαμε με το ακόλουθο
Κώδικας: [Επιλογή]
ΚΑΛΕΣΕ πρόσθεση()

Δεν θυμάμαι να έχω δει κάποιο ανάλογο παράδειγμα στο βιβλίο.

Ευχαριστώ,
Ανδρέας

ΥΓ: δεν με ενδιαφέρει να σχολιάσουμε το γιατί να κάνουμε κάτι τέτοιο, απλώς αν μπορούμε να το κάνουμε.

petrosp13

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 2305
Απ: ΔΙΑΔΙΚΑΣΙΑ ΧΩΡΙΣ ΠΑΡΑΜΕΤΡΟΥΣ
« Απάντηση #1 στις: 08 Απρ 2008, 12:13:16 πμ »
Όλα όσα λες, όπως και τα συντακτικά που αναφέρεις είναι σωστά
Ένα υποπρόγραμμα οφείλει να είναι ανεξάρτητο από τα άλλα και κάποιες φορές δεν χρειάζεται καν να επικοινωνεί με αυτά ή το κύριο πρόγραμμα
Θα είναι ένα υποπρόγραμμα που κάνει ολοκληρωμένα μια αυτόνομη δουλειά
Όπως "Υποπρόγραμμα που διαβάζει αριθμούς μέχρι να δοθεί το μηδέν και εμφανίζει το άθροισμα τους".
Φυσικά, υλοποιείται μόνο με διαδικασία
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 5541
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: ΔΙΑΔΙΚΑΣΙΑ ΧΩΡΙΣ ΠΑΡΑΜΕΤΡΟΥΣ
« Απάντηση #2 στις: 08 Απρ 2008, 12:35:55 πμ »
Το είχαμε συζητήσει και παλιότερα, αλλά δεν μπορώ να το βρω. Σαφώς και γίνεται, αν και δεν συνηθίζεται, ειδικά στη ΓΛΩΣΣΑ που δεν έχουμε καθολικές μεταβλητές και επομένως δεν θα υπάρχει επικοινωνία του κυρίως προγράμματος με τη διαδικασία.

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

Αλεξόπουλος Ανδρέας

  • Θαμώνας
  • ***
  • Μηνύματα: 44
Απ: ΔΙΑΔΙΚΑΣΙΑ ΧΩΡΙΣ ΠΑΡΑΜΕΤΡΟΥΣ
« Απάντηση #3 στις: 08 Απρ 2008, 12:46:54 πμ »
Οκ, ευχαριστώ για τις απαντήσεις. Ούτε κι εγώ πιστεύω ότι θα ζητηθεί κάτι τέτοιο, απλώς είχα απορία το τι γίνεται. Κι εμένα το βασικό μου πρόβλημα ήταν για το αν πρέπει ή όχι να μπουν παρενθέσεις. Καμμιά φορά μπορεί να ρωτήσει κανένας μαθητής, οπότε ήθελα να ξέρω αν υπήρχε κάποια "τεκμηριωμένη" σωστή απάντηση να δώσω.
Παρεπιπτώντως, εντολώς αστήριχτα κι εγώ, θα τους έλεγα να βάλουν παρενθέσεις στα δεξιά τόσο στην δήλωση όσο και στην κλήση!

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 5541
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: ΔΙΑΔΙΚΑΣΙΑ ΧΩΡΙΣ ΠΑΡΑΜΕΤΡΟΥΣ
« Απάντηση #4 στις: 08 Απρ 2008, 07:53:04 πμ »
Με την ευκαιρία ξαναέριξα μια ματιά στο βιβλίο.

1) Τα προγράμματα δεν έχουν παρένθεση. Αυτό δεν είναι σοβαρό επιχείρημα, αλλά αν π.χ. λέγαμε ότι ισχύει το συντακτικό της C, τότε θα είχαμε int main(), δηλαδή ΠΡΟΓΡΑΜΜΑ Δοκιμή().

2) Σελίδα 220,
ΔΙΑΔΙΚΑΣΙΑ Πρώτη
...
ΔΙΑΔΙΚΑΣΙΑ Δεύτερη
...

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

3) Σελίδα 239, εκτός ύλης, ορισμός διαδικασίας - γεγονότος,
ΔΙΑΔΙΚΑΣΙΑ Αντικείμενο_Γεγονός
...
Εντολές κώδικα
...
ΤΕΛΟΣ ΔΙΑΔΙΚΑΣΙΑΣ

Μια από τα ίδια, απλές ενδείξεις, όχι επιχειρήματα.

Αλεξόπουλος Ανδρέας

  • Θαμώνας
  • ***
  • Μηνύματα: 44
Απ: ΔΙΑΔΙΚΑΣΙΑ ΧΩΡΙΣ ΠΑΡΑΜΕΤΡΟΥΣ
« Απάντηση #5 στις: 08 Απρ 2008, 11:15:50 πμ »
Βέβαια Άλκη, μερικές σελίδες παρακάτω στο κεφάλαιο 11 (συγκεκριμένα σελ 246), για την δήλωση διαδικασίας, έχει το εξής
Κώδικας: [Επιλογή]
ΔΙΑΔΙΚΑΣΙΑ ΠλήτροΕντολήςΒήμα1_Κλικ()
    Ετικέτα1.Ορατό = Αληθής
    Ετικέτα2.Ορατό = Ψευδής
    Ετικέτα3.Ορατό = Ψευδής
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
δηλαδή, χρεισημοποιεί παρενθέσεις, ώστε κι αν δεν έχει ορίσματα.

Όχι ότι έχει ιδιαίτερη σημασία όπως λες κι εσύ, αλλά μιας και του έριξα κι εγώ τώρα μια ματία, είπα να το αναφέρω  ;)

andreas_p

  • Ομάδα διαγωνισμάτων 2010
  • *
  • Μηνύματα: 1053
Απ: ΔΙΑΔΙΚΑΣΙΑ ΧΩΡΙΣ ΠΑΡΑΜΕΤΡΟΥΣ
« Απάντηση #6 στις: 08 Απρ 2008, 12:14:10 μμ »
Γεια σας.

Σε παλαιότερη συζήτηση είχαμε καταλήξει στο παρακάτω σχήμα :


στο Κύριο

....
ΑΡΧΗ
  ΚΑΛΕΣΕ   Δ1()

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΔΙΑΔΙΚΑΣΙΑ  Δ1()
...
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

Ανδρέας

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 5541
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: ΔΙΑΔΙΚΑΣΙΑ ΧΩΡΙΣ ΠΑΡΑΜΕΤΡΟΥΣ
« Απάντηση #7 στις: 08 Απρ 2008, 02:05:25 μμ »
Κώδικας: [Επιλογή]
ΔΙΑΔΙΚΑΣΙΑ ΠλήτροΕντολήςΒήμα1_Κλικ()
    Ετικέτα1.Ορατό = Αληθής
    Ετικέτα2.Ορατό = Ψευδής
    Ετικέτα3.Ορατό = Ψευδής
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

Σ' αυτό το σημείο είχα την εξής απορία: πώς θα καταφέρει να δει τη μεταβλητή Ετικέτα1 αφού δεν υπάρχουν καθολικές μεταβλητές;  :o
Και προτίμησα να το αγνοήσω και να πάρω σαν σωστό τον ορισμό που είχε πιο πριν.
...καλά που δεν είναι εντός ύλης!  ;D  ;D  ;D

meteo_xampos

  • Ομάδα διαγωνισμάτων 2010
  • *
  • Μηνύματα: 187
Απ: ΔΙΑΔΙΚΑΣΙΑ ΧΩΡΙΣ ΠΑΡΑΜΕΤΡΟΥΣ
« Απάντηση #8 στις: 04 Μάρ 2009, 09:47:33 πμ »
Καλημέρα σας συνάδλεφοι... Ο προβληματισμός για τις διαδικασίες χωρίς παραμέτρους με έπιασε σήμερα το πρωί... Αφού το λέει στον ορισμό, αποκλείεται να βάλουν πίνακα μεταβλητών από το παρακάτω πρόγραμμα, λέγοντας τι εισόδους δίνουμε;

ΠΡΟΓΡΑΜΜΑ ΤΑΔΕ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: α, β, γ
ΑΡΧΗ
  ΔΙΑΒΑΣΕ α, β
  γ <- ΥΠΟ(α, β)
  ΚΑΛΕΣΕ ΔΙΑΔ
  ΓΡΑΨΕ α, β, γ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΔΙΑΔΙΚΑΣΙΑ ΔΙΑΔ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: x, y, z
ΑΡΧΗ
  ΔΙΑΒΑΣΕ x, y
  z <- (x + y) DIV 2
  ΓΡΑΨΕ x, y, z
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

ΣΥΝΑΡΤΗΣΗ ΥΠΟ(m, n): ΑΚΕΡΑΙΑ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: m, n
ΑΡΧΗ
  ΥΠΟ <- (m + n)^2
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

EleniK

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 708
Απ: ΔΙΑΔΙΚΑΣΙΑ ΧΩΡΙΣ ΠΑΡΑΜΕΤΡΟΥΣ
« Απάντηση #9 στις: 08 Μάρ 2009, 11:44:12 πμ »
Μια διαδικασία που απλά εμφανίζει ένα μενού επιλογών, επίσης δεν έχει όρισμα. Το Διάβασε της επιλογής μπορεί να είνα μέσα στο πρόγραμμα καθώς και η τυχόν επανάληψη.
Ελένη Κοκκίνου
Καθηγήτρια Πληροφορικής, ΠΕ19

P.Tsiotakis

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 3302
  • agent romanoff you miss me?
    • P.Tsiotakis
Απ: ΔΙΑΔΙΚΑΣΙΑ ΧΩΡΙΣ ΠΑΡΑΜΕΤΡΟΥΣ
« Απάντηση #10 στις: 08 Μάρ 2009, 01:26:56 μμ »
Εγώ βάζω κενές παρενθέσεις, θεωρώ πιο συνεπές προς τον μαθητή οπτικά να βλέπει:

ΔΙΑΔΙΚΑΣΙΑ Μενού()

και μόνο το κύριο πρόγραμμα να μην έχει παρενθέσεις (αφού δεν έχει και παραμέτρους)

andreas_p

  • Ομάδα διαγωνισμάτων 2010
  • *
  • Μηνύματα: 1053
Απ: ΔΙΑΔΙΚΑΣΙΑ ΧΩΡΙΣ ΠΑΡΑΜΕΤΡΟΥΣ
« Απάντηση #11 στις: 08 Μάρ 2009, 10:09:38 μμ »

ΔΙΑΔΙΚΑΣΙΑ ΔΙΑΔ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: x, y, z
ΑΡΧΗ
  ΔΙΑΒΑΣΕ x, y
  z <- (x + y) DIV 2
  ΓΡΑΨΕ x, y, z
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

ΔΙΑΔΙΚΑΣΙΑ ΔΙΑΔ()
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: x, y, z
ΑΡΧΗ
  ΔΙΑΒΑΣΕ x, y
  z <- (x + y) DIV 2
  ΓΡΑΨΕ x, y, z
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ


meteo_xampos

  • Ομάδα διαγωνισμάτων 2010
  • *
  • Μηνύματα: 187
Απ: ΔΙΑΔΙΚΑΣΙΑ ΧΩΡΙΣ ΠΑΡΑΜΕΤΡΟΥΣ
« Απάντηση #12 στις: 09 Μάρ 2009, 01:42:48 πμ »
Ανδρέα προσπάθησα να το τρέξω τη διαδικασία με (), αλλά η ΓΛΩΣΣΑ μου έβγαζε λάθος.
Μου έβγαζε μήνυμα ότι περίμενε όνομα παραμέτρου μέσα στις παρενθέσεις.

andreas_p

  • Ομάδα διαγωνισμάτων 2010
  • *
  • Μηνύματα: 1053
Απ: ΔΙΑΔΙΚΑΣΙΑ ΧΩΡΙΣ ΠΑΡΑΜΕΤΡΟΥΣ
« Απάντηση #13 στις: 09 Μάρ 2009, 08:42:08 πμ »
Στην επόμενη έκδοση του Διερμηνευτή της ΓΛΩΣΣΑΣ, ο Άλκης, μπορεί να το τροποποιήσει.

meteo_xampos

  • Ομάδα διαγωνισμάτων 2010
  • *
  • Μηνύματα: 187
Απ: ΔΙΑΔΙΚΑΣΙΑ ΧΩΡΙΣ ΠΑΡΑΜΕΤΡΟΥΣ
« Απάντηση #14 στις: 09 Μάρ 2009, 09:26:02 πμ »
Πάντως και η PASCAL λειτουργεί έτσι όπως λειτουργεί η ΓΛΩΣΣΑ σε διαδικασίες
χωρίς παραμέτρους. Να ένα πρόγραμμα σε PASCAL το οποίο χρησιμοποιεί
διαδικασίες χωρίς παραμέτρους...

program tade;
var
a,b, apot:real;
sumbolo: char;

procedure eisodos;
begin
   writeln('dwse duo arithmous');
   readln(a,b);
end;

procedure menoy;
begin
writeln('1. dwse + gia pros8esh');
writeln('2. dwse - gia afairesh');
writeln('1. dwse * gia pollaplasiasmo');
writeln('1. dwse / gia diairesh');
end;

procedure eidos_pra3hs;
begin   
   repeat
      writeln('dwse to sumbolo ths pra3hs'); 
      readln(sumbolo);
   until ((sumbolo='+') OR (sumbolo='-') OR (sumbolo='/') OR (sumbolo='*'))
end;

procedure pra3h;
begin
   if sumbolo='+' then
      apot:=a+b
   else if sumbolo='-' then
      apot:=a-b
   else if sumbolo='/' then
    begin
      if b<>0 then
      apot:=a/b
     else
       writeln('den orizetai h pra3h')
     end
   else
      apot:=a*b;
   writeln( a:3,sumbolo:3, b:3, '=', apot:3);
end;

begin
eisodos;
menoy;
eidos_pra3hs;
pra3h;
end.