Σχεδιαγράμματα για τη θεωρία του μαθήματος ΑΕΠΠ

Ξεκίνησε από ptsiotakis, 15 Φεβ 2006, 09:25:21 ΠΜ

« προηγούμενο - επόμενο »

P.Tsiotakis

Θα ήθελα να ενημερώσω τους συναδέλφους οτι σχεδιαγράμματα για τη θεωρία του μαθήματός μας (και για τα υπόλοιπα στο Ενιαίο Λύκειο) υπάρχουν στην ιστοσελίδα της συναδέλφου Λέττα Ελένης - http://users.sch.gr/elant/   (αν και διαφωνώ σε κάποια σημεία του κεφαλαίου 10)

Πάντως, για το κεφάλαιο 6 , για το οποίο οι μαθητές χρειάζονται σχεδιάγραμμα, έχει κάνει ΕΚΠΛΗΚΤΙΚΗ δουλειά (πιο συγκεκριμένα http://users.sch.gr/elant/anaptixi/anaptixi.htm )

Γνώμη: Οι clopy-righters μπορούν να βγάλουν φωτοτυπίες αφού κόψουν το υποσέλιδο στην εκτύπωση    :o


nikolasmer

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

Πάνω σε αυτό το κομμάτι ήθελα να εκφράσω μια απορία.
Θα μπορούσε η κλήση της διαδικασίας να είναι:

ΚΑΛΕΣΕ Αντιμετάθεση(Πίνακας[ j-1], Πίνακας[ j ])

και η επικεφαλίδα της Διαδικασίας να είναι:

Διαδικασία Αντιμετάθεση (α,β)

με τις ανάλογες τροποποιήσεις του κώδικα;

Ταξινόμηση φυσσαλίδας με χρήση διαδικασίας αντιμετάθεσης

Πρόγραμμα_ταξινόμηση_φύσαλίδας2
Μεταβλητές
ακέραιος:  Πίνακας[100 ], ι, j : ακέραιος

Αρχή
Για ι από 1 μέχρι 100
	Γράψε «Δώσε στοιχείο του πίνακα»
	Διάβασε Πίνακας[ι]
Τέλος_Επαναληψης

Για ι από 2 μέχρι ν100
	Για j από 100 μέχρι ι με βήμα –1
		Αν Πίνακας[j-1] >Πίνακας[j] τότε

			ΚΑΛΕΣΕ Αντιμετάθεση(Πίνακας[ j-1], Πίνακας[ j ], j )

		Τέλος_Αν
	Τέλος_Επαναληψης
Τέλος_Επανάληψης
Γ
ια ι από 1 μέχρι 100
	Γράψε Πίνακας[ι]
Τέλος_Επαναληψης
Τέλος_Προγράμματος

Διαδικασία Αντιμετάθεση (Α[δείκτης-1], Α[δείκτης], δείκτης)
Μεταβλητές
ακέραιος: Α[100], δείκτης, βοηθητική

Αρχή
βοηθητική <-- Α [δείκτης-1]
	 Α[δείκτης-1] <-- Α[δείκτης]
	 Α[δείκτης] <-- βοηθητική
Τέλος_διαδικασίας

Μερεντίτης Νικόλαος
Πληροφορικός

P.Tsiotakis

αν όλα είναι ακέραια τότε ΝΑΙ

ένα κελί ενός πίνακα είναι στην ουσία μεταβλητή

(http://ptsiotakis.mysch.gr/old/aepp/aepp_ask10_1.htm ασκήσεις 14, 15)

petrosp13

Θα έλεγα ότι η υλοποίηση της συναδέλφου δεν είναι η ιδανική, καθώς έχει ως παραμέτρους στην διαδικασία 2 στοιχεία ενός πίνακα και έτσι αναγκάζεται να στείλει ολόκληρο τον πίνακα στην διαδικασία
Επίσης, δεν γνωρίζω κατά πόσο είναι εφικτό να υπάρχει τέτοια λίστα παραμέτρων
Διαδικασία δ (Α[i],i)


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

pgrontas

Παράθεση από: nikolasmer στις 16 Μαρ 2013, 12:07:28 ΜΜ
Πάνω σε αυτό το κομμάτι ήθελα να εκφράσω μια απορία.
Θα μπορούσε η κλήση της διαδικασίας να είναι:

ΚΑΛΕΣΕ Αντιμετάθεση(Πίνακας[ j-1], Πίνακας[ j ])

και η επικεφαλίδα της Διαδικασίας να είναι:

Διαδικασία Αντιμετάθεση (α,β)

με τις ανάλογες τροποποιήσεις του κώδικα;
Φυσικά και ναι και έτσι θα έπρεπε να είναι το σωστό.

Αντίθετα ο ορισμός συνάρτησης
Διαδικασία Αντιμετάθεση (Α[δείκτης-1], Α[δείκτης], δείκτης)

είναι εντελώς λάθος, καθώς συγχέει τις τυπικές παραμέτρους με τις πραγματικές και τον ορισμό της συνάρτησης με την κλήση της.
Άσε που η δήλωση Α[δείκτης-1] δεν ξέρω αν θα μπορούσε ποτέ να αποτιμηθεί στο compilation.
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

nikolasmer

Παράθεση από: pgrontas στις 16 Μαρ 2013, 08:37:29 ΜΜ
Φυσικά και ναι και έτσι θα έπρεπε να είναι το σωστό.

Αντίθετα ο ορισμός συνάρτησης
Διαδικασία Αντιμετάθεση (Α[δείκτης-1], Α[δείκτης], δείκτης)

είναι εντελώς λάθος, καθώς συγχέει τις τυπικές παραμέτρους με τις πραγματικές και τον ορισμό της συνάρτησης με την κλήση της.
Άσε που η δήλωση Α[δείκτης-1] δεν ξέρω αν θα μπορούσε ποτέ να αποτιμηθεί στο compilation.

Συμφωνώ απόλυτα μαζί σου pgrontas.

Σας ευχαριστώ πολύ κύριοι για τις απαντήσεις και τις παρατηρήσεις σας .
Μερεντίτης Νικόλαος
Πληροφορικός

Λευτέρης Δουκέρης

Καλησπέρα. Νομίζω ότι η γλώσσα απαγορεύει αυτού του είδους κλήση:
ΚΑΛΕΣΕ Αντιμετάθεση(Πίνακας[ j-1], Πίνακας[ j ])
Παρόλο που συμφωνώ με τον Παναγιώτη ότι και ο Πίνακας[ j-1], Πίνακας[ j ] είναι στην ουσία μεταβλητές άρα ορθά χρησιμοποιούνται σαν παράμετροι. Εγώ θα πρωτινά
στο πρόγραμμα να γράφαμε το εξής:

Για ι από 2 μέχρι ν100
   Για j από 100 μέχρι ι με βήμα –1
      Αν Πίνακας[j-1] >Πίνακας[j] τότε
                      α<-- Πίνακας[ j-1]
                       β <--Πίνακας[ j]
      ΚΑΛΕΣΕ Αντιμετάθεση(α , β)

      Τέλος_Αν
   Τέλος_Επαναληψης
Τέλος_Επανάληψης
ΛΕΥΤΕΡΗΣ  ΚΕΡΑΤΕΑ
http://glavrio.blogspot.com"Ο ιδανικός δάσκαλος είναι εκείνος που γίνεται γέφυρα για να περάσει αντίπερα ο μαθητής του και όταν , πια του διευκολύνει το πέρασμα , αφήνεται χαρούμενα να γκρεμιστεί , ενθαρρύνοντας το μαθητή του να φτιάξει τις δικές του γέφυρ

petrosp13

Για ποιο λόγο να απαγορεύεται η κλήση με παραμέτρους στοιχεία πίνακα;
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

andreas_p

Για ι από 2 μέχρι ν100
   Για j από 100 μέχρι ι με βήμα –1
      Αν Πίνακας[j-1] >Πίνακας[j] τότε
                      α<-- Πίνακας[ j-1]
                       β <--Πίνακας[ j]
      ΚΑΛΕΣΕ Αντιμετάθεση(α , β)
      Τέλος_Αν
   Τέλος_Επαναληψης
Τέλος_Επανάληψης

Ναι, αλλά έτσι αφήνεις "άθικτα" , τα στοιχεία  Πίνακας[ j-1], Πίνακας[ j]  ....


Α

Λευτέρης Δουκέρης

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

Για ι από 2 μέχρι ν100
Για j από 100 μέχρι ι με βήμα –1
      Αν Πίνακας[j-1] >Πίνακας[j] τότε
                      α<-- Πίνακας[ j-1]
                       β <--Πίνακας[ j]
      ΚΑΛΕΣΕ Αντιμετάθεση(α , β)
                      Πίνακας[ j-1] <-- α
                       Πίνακας[ j] <-- β

      Τέλος_Αν
   Τέλος_Επαναληψης
Τέλος_Επανάληψης

ΛΕΥΤΕΡΗΣ  ΚΕΡΑΤΕΑ
http://glavrio.blogspot.com"Ο ιδανικός δάσκαλος είναι εκείνος που γίνεται γέφυρα για να περάσει αντίπερα ο μαθητής του και όταν , πια του διευκολύνει το πέρασμα , αφήνεται χαρούμενα να γκρεμιστεί , ενθαρρύνοντας το μαθητή του να φτιάξει τις δικές του γέφυρ

evry

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

Παράθεση από: lefteris_doy στις 18 Μαρ 2013, 09:46:44 ΜΜ
καλησπέρα.
εχεις απόλυτο δίκιο.
το συμπληρώνω

Για ι από 2 μέχρι ν100
Για j από 100 μέχρι ι με βήμα –1
      Αν Πίνακας[j-1] >Πίνακας[j] τότε
                      α<-- Πίνακας[ j-1]
                       β <--Πίνακας[ j]
      ΚΑΛΕΣΕ Αντιμετάθεση(α , β)
                      Πίνακας[ j-1] <-- α
                       Πίνακας[ j] <-- β

      Τέλος_Αν
   Τέλος_Επαναληψης
Τέλος_Επανάληψης


What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

Λευτέρης Δουκέρης

καλησπέρα.
δεν νομίζω ότι είναι περιττή η διαδικασία Αντιμετάθεση(α , β) γιατί η διαδικασία αντιμεταθέτει τις τιμές  και σκοπός της άσκησης είναι να γίνεται κλιση υποπρογράμματος που να αντιμεταθέτει τις τιμές.
Συμφωνώ πάντως ότι είναι σωστό , να γίνει  κλίση της διαδικασίας με
ΚΑΛΕΣΕ Αντιμετάθεση(Πίνακας[ j-1] , Πίνακας[ j] ) απλά θυμάμαι ότι πριν καιρό σε μια ενημέρωση μας είχαν πει ότι κάτι τέτοιο δεν το υποστηρίζει η ΓΛΩΣΣΑ άποψη με την οποία διαφωνώ και για αυτό πρότεινα και την παρακάτω λύση

Για ι από 2 μέχρι ν100
Για j από 100 μέχρι ι με βήμα –1
      Αν Πίνακας[j-1] >Πίνακας[j] τότε
                      α<-- Πίνακας[ j-1]
                       β <--Πίνακας[ j]
      ΚΑΛΕΣΕ Αντιμετάθεση(α , β)
                      Πίνακας[ j-1] <-- α
                       Πίνακας[ j] <-- β
      Τέλος_Αν
   Τέλος_Επαναληψης
Τέλος_Επανάληψης
ΛΕΥΤΕΡΗΣ  ΚΕΡΑΤΕΑ
http://glavrio.blogspot.com"Ο ιδανικός δάσκαλος είναι εκείνος που γίνεται γέφυρα για να περάσει αντίπερα ο μαθητής του και όταν , πια του διευκολύνει το πέρασμα , αφήνεται χαρούμενα να γκρεμιστεί , ενθαρρύνοντας το μαθητή του να φτιάξει τις δικές του γέφυρ

petrosp13

Παράθεση από: lefteris_doy στις 19 Μαρ 2013, 11:23:54 ΜΜ
σε μια ενημέρωση μας είχαν πει ότι κάτι τέτοιο δεν το υποστηρίζει η ΓΛΩΣΣΑ

Ενημέρωση από ποιον και πάνω σε τι;
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

evry

Αν αφαιρέσεις την Αντιμετάθεσε το πρόγραμμα δεν θα κάνει ακριβώς τα ίδια? Δεν θα έχεις το ίδιο αποτέλεσμα?
Ποιος ο λόγος λοιπόν να τη χρησιμοποιήσεις?

Παράθεση από: lefteris_doy στις 19 Μαρ 2013, 11:23:54 ΜΜ
καλησπέρα.
δεν νομίζω ότι είναι περιττή η διαδικασία Αντιμετάθεση(α , β) γιατί η διαδικασία αντιμεταθέτει τις τιμές  και σκοπός της άσκησης είναι να γίνεται κλιση υποπρογράμματος που να αντιμεταθέτει τις τιμές.
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

novaro

#14
Συνάδελφοι οι παράμετροι σε διαδικασίες σίγουρα μπορούν να είναι κελιά ενός πίνακα αφού αυτά συνιστούν απλές μεταβλητές. Η κλήση αυτή θα είναι call by reference οπότε κάθε αλλαγή των τυπικών παραμέτρων στη ΔΙΑΔΙΚΑΣΙΑ θα έχει αντίκτυπο στις πραγματικές παραμέτρους (κελιά του πίνακα του κυρίου προγράμματος). Φαίνεται ξεκάθαρα στο παράδειγμα του σχολικού βιβλίου στα υποπρογράμματα με το Διαφ1 κτλ. Όπως αφήνεται να εννοηθεί στο βιβλίο όλα τα περάσματα στις διαδικασίες είναι call by reference και όλα τα περάσματα σε συναρτήσεις είναι call by value π.χ

{κύριο}
Β<----10
Α<---- ΑΥΞ(Β)
ΓΡΑΨΕ 'Β=',Β,' Α=', Α   
ΚΑΛΕΣΕ ΑΥΞΗΣΗ(Β)
ΓΡΑΨΕ 'Β=', Β

Το πρόγραμμα θα γράψει Β=10 Α=11
και Β=11



ΣΥΝΑΡΤΗΣΗ ΑΥΞ(Α)
....
ΑΥΞ<---Α+1
Α<-Α+5 //ΔΕΝ ΘΑ ΕΧΕΙ ΑΝΤΙΚΤΥΠΟ ΣΤΗΝ ΠΡΑΓΜΑΤΙΚΗ ΠΑΡΑΜΕΤΡΟ Β
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

ΔΙΑΔΙΚΑΣΙΑ ΑΥΞΗΣΗ(Α)
....
Α<---Α+1  //ΘΑ ΕΧΕΙ ΑΝΤΙΚΤΥΠΟ ΣΤΗΝ ΠΡΑΓΜΑΤΙΚΗ ΠΑΡΑΜΕΤΡΟ

ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ



Παραθέτω τον ορισμό
The call by reference method of passing arguments to a subprogram copies the address of an argument into the formal parameter. Inside the subprogram, the address is used to access the actual argument used in the call. This means that changes made to the parameter affect the passed argument.

Σχετικά με τη γλώσσα και το πέρασμα παραμέτρων.
https://alkisg.mysch.gr/%CE%93%CE%9B%CE%A9%CE%A3%CE%A3%CE%91/%CE%9C%CE%B5%CF%84%CE%B1%CE%B2%CE%AF%CE%B2%CE%B1%CF%83%CE%B7_%CF%80%CE%B1%CF%81%CE%B1%CE%BC%CE%AD%CF%84%CF%81%CF%89%CE%BD/


novaro

Αυτό συνάδελφοι δουλεύει κανονικά με βάση το προηγούμενο ποστ

ΠΡΟΓΡΑΜΜΑ τεστ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Α[5], Ι
ΑΡΧΗ
  ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 5
    Α[Ι] <- Ι
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

  ΓΡΑΨΕ 'ΠΡΙΝ'
  ΓΡΑΨΕ Α[2], ',', Α[3]
  ΓΡΑΨΕ 'ΜΕΤΑ'

  ΚΑΛΕΣΕ ΑΝΤΙΜ(Α[2], Α[3])
  ΓΡΑΨΕ Α[2], ',', Α[3]
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΔΙΑΔΙΚΑΣΙΑ ΑΝΤΙΜ(Α, Β)
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Α, Β, Τ
ΑΡΧΗ
  Τ <- Α
  Α <- Β
  Β <- Τ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ