Στο βιβλίο του μαθήματος «Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον» υπάρχουν τα παρακάτω 6 (έξι) λάθη και παραλείψεις:
Στα δεδομένα δηλώνεται και ο τύπος των μεταβλητών ή έγινε από παραδρομή;
1. Είναι στο μόνο παράδειγμα που ορίζονται οι τύποι των μεταβλητών.
ΣΕΛΙΔΑ 48
Αλγόριθμος Πολλαπλασιασμός_αλά_ρωσικά
Δεδομένα // Μ1,Μ2 ακέραιοι //
Ρ-> 0
Όσο Μ2 > 0 επανάλαβε
Αν μ2 mod 2=1 τότε Ρ<- Ρ+Μ1
Μ1 <- *2
Μ2 <- [Μ2/2] ! γιατί δεν χρησιμοποιείται το div
Τέλος _επανάληψης
Αποτέλεσμα // Ρ, το γινόμενο των ακεραίων Μ1,Μ2 //
Τέλος Πολλαπλασιασμός _αλά_ρωσικά
2. Τι υπολογίζεται στον αλγόριθμο της σελίδας 72
Αλγόριθμος Fibonacci2
Δεδομένα // n //
Αν n< 1 τότε
Fib <- n
Αλλιώς
Fib <- fib (n-1) + fib (n-2)
Τέλος _Αν
Αποτέλεσμα // fib //
Τέλος Fibonacci2
Πως τερματίζει ένα πρόγραμμα σε γλώσσα προγραμματισμού «ΓΛΩΣΣΑ»
Με
Α ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ή
Β ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ και όνομα προγράμματος
Διότι ενώ στην θεωρία αναφέρει ως τερματισμό του προγράμματος την πρώτη περίπτωση, στην συνέχει σε πολλά παραδείγματα υιοθετεί την δεύτερη περίπτωση
3. Όπως αυτό που ακολουθεί την παράγραφο 7.10 Δομή Προγράμματος
4.Στην σελίδα 158 «ΠΡΟΓΡΑΜΜΑ Κόστος_Υπολογιστών»,
5.Στην σελίδα 175 «ΠΡΟΓΡΑΜΜΑ Άθροισμα» και
6.Στην σελίδα 188-189 «ΠΡΟΓΡΑΜΜΑ Στατιστική».
Στο Τετράδιο του Μαθητή υπάρχουν τα παρακάτω 12 λάθη και παραλήψεις:
1. Στον αλγόριθμο της σελίδας 33 του τετραδίου του Μαθητή υπάρχει ο παρακάτω αλγόριθμος τι εκφράζουν τα L,M γιατί δεν δηλώνονται στα δεδομένα;
Αλγόριθμος Αραιός
Δεδομένα // sparse, n //
Flag ← 0
k ← 0
Όσο flag = 0 επανάλαβε
i ← sparse [3*k+1]
j ← sparse [3*k+2]
Αν i =L και j =M τότε
result ← sparse [3*k+3]
flag ← 1
αλλιώς_αν i > L ή (i =L και j > M) τότε
result ← 0
flag ← 1
αλλιώς
k ← k+1
Τέλος_αν
Τέλος_επανάληψης
Αποτελέσματα // result //
Τέλος Αραιός
Ο σωστός αλγόριθμος θα ήταν:
Αλγόριθμος Αραιός
Δεδομένα // sparse, n, L, M //
! sparse πίνακας μονοδιάστατος 3*Ν θέσεων
! L:γραμμές του δισδιάστατου αραιού πίνακα
!M:στήλες του δισδιάστατου αραιού πίνακα
για κ από 0 μέχρι Ν με βήμα 3 επανάλαβε
i ← sparse [k+1]
j ← sparse [k+2]
result ← sparse [k+3]
Αν i <=L και j< =M τότε
Result[I, j] ← sparse [k+3]
Τέλος_αν
Τέλος_επανάληψης
Αποτελέσματα // result //
Τέλος Αραιός
2 Αν και εκτός ύλης ο αλγόριθμος της δυαδικής αναζήτησης στην σελίδα 39 δεν τερματίζει ποτέ
Αλγόριθμος Δυαδική_αναζήτηση
Δεδομένα // ΟΝΟΜΑ, ΚΑΤ //
low ← 0
high ← 50
found ← 0
όσο low <= high επανάλαβε
mid ← ( low + high) /2
Aν KAT [mid] < ΟΝΟΜΑ τότε
low ← mid +1
αλλιώς_αν KAT [mid] > ONOMA τότε
high ← mid -1
αλλιώς
found ← 1
Τέλος_αν
Τέλος_επανάληψης
Αποτελέσματα // found //
Τέλος Δυαδική_αναζήτηση
Το σωστό:
Αλγόριθμος Δυαδική_αναζήτηση
Δεδομένα // ΟΝΟΜΑ, ΚΑΤ //
low ← 1
high ← 50
found ← 0
όσο low <= high επανάλαβε
mid ← ( low + high) div 2
Aν KAT [mid] < ΟΝΟΜΑ τότε
low ← mid +1
αλλιώς_αν KAT [mid] > ONOMA τότε
high ← mid -1
αλλιώς
found ← mid
low ← high +1
Τέλος_αν
Τέλος_επανάληψης
Αποτελέσματα // found //
Τέλος Δυαδική_αναζήτηση
Σε basic:
Dim a(10), i, key, low, high, found, midi As Integer
For i = 1 To 10: a(i) = i: Next
key = 1
low = 1
high = 10
found = 0
While low <= high
midi = (low + high) 2
If a(midi) < key Then
low = midi + 1
ElseIf a(midi) > key Then
high = midi - 1
Else
found = midi: low = high + 1
End If
Wend
3 O αλγόριθμος στην σελίδα 39 «Αλγόριθμος Δύο_μικρότεροι» βρίσκει τους δύο μικρότερους, μόνο αν στον πίνακα υπάρχουν διαφορετικές τιμές. Αν στην πρώτη και δεύτερη θέση υπάρχει ίδια τιμή η οποία είναι η μικρότερη του πίνακα, τότε ο αλγόριθμος δεν βρίσκει την δεύτερη μικρότερη τιμή.
Αλγόριθμος Δύο_μικρότεροι
Δεδομένα // Μ //
Low1¬ M[1]
Pos ¬ 1
Για i από 2 μέχρι 50
Αν Μ[I]< Low1 τότε
Low1¬ M[i]
Pos ¬ I
Τέλος_Αν
Τέλος_επανάληψης
Αν Pos<>1 τότε
Low2¬Μ[1]
Αλλιώς
Low2¬Μ[2]
Τέλος_Αν
Για i από 2 μέχρι 50
Αν (I<> Pos και Μ[I]< Low2 τότε
Low2¬ M[i]
Τέλος_Αν
Τέλος_επανάληψης
Αποτελέσματα // Low1, Low2//
Τέλος Δύο_μικρότεροι
Ο σωστός:
Αλγόριθμος Δύο_μικρότεροι
Δεδομένα // Μ //
Low1¬ M[1]
ΜΑΧ¬ M[1]
Για i από 2 μέχρι 50
Αν Μ[I]< Low1 τότε
Low1¬ M[i]
Τέλος_Αν
Αν Μ[I]>ΜΑΧ τότε
ΜΑΧ¬ M[i]
Τέλος_Αν
Τέλος_επανάληψης
Low2¬ ΜΑΧ
Για i από1 μέχρι 50
Αν (Μ[i]<> Low1 και Μ[i]< Low2 τότε
Low2¬ M[i]
Τέλος_Αν
Τέλος_επανάληψης
Αποτελέσματα // Low1, Low2//
Τέλος Δύο_μικρότεροι
Dim a(10) As Integer
Dim max1, max2, pos, i As Integer
a(1) = 12: a(2) = 10: a(3) = 5: a(4) = 5: a(10) = 12: a(6) = 4
a(7) = 12: a(8) = 12: a(9) = 5: a(9) = 10: a(10) = 4
max1 = a(1)
pos = 1
For i = 2 To 10
If a(i) > max1 Then
max1 = a(i)
pos = i
End If
Next
If pos <> 1 Then
max2 = a(1)
Else
max2 = a(2)
End If
For i = 2 To 10
If a(i) > max1 Then
max2 = a(i)
End If
Next
ma1.Caption = max2
ma2.Caption = max1
4 Στην σελίδα 49 στο παράδειγμα 3 «Αλγόριθμος Ευθεία_Ανταλλαγή»
στην σειρά Δεδομένα έπρεπε να υπήρχε : Δεδομένα //Α,Ν//
5 Στην σελίδα 52 στο παράδειγμα
Αλγόριθμος Fibonacci
Δεδομένα //Ν//
Αν Ν<=1 τότε
Fib ¬ N
Αλλιώς
J ¬ 0
k ¬ 1
Για i από 1 μέχρι N
J ¬ J+K
K¬ J-K το σωστό K¬ J+K
Τέλος_επανάληψης
Fib ¬ J
Τέλος_αν
Αποτελέσματα // Fib//
Τέλος Fibonacci
Τελικά τι θα υπολογίσει σαν Ν-οστό όρο της ακολουθίας Fibonacci
6 Στην σελίδα 53 στην άσκηση ΔΤ3
Πρέπει να προστεθεί η γραμμή "Δεδομένα //Ν//” μετά την γραμμή «Αλγόριθμος Fibonacci»
7 Στην σελίδα 55 στην άσκηση ΔΣ43
Πρέπει στην γραμμή "Δεδομένα //Α//” να προσθέσουμε και το Ν δηλαδή να γίνει "Δεδομένα //Α,Ν//”.
8 Στην σελίδα 63 στο παράδειγμα ΠΡΟΓΡΑΜΜΑ Τροχιά_μπάλας πρέπει να διαγραφεί το όνομα του προγράμματος από την τελευταία σειρά
Δηλαδή αντί για ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Τροχιά_μπάλας να γίνει ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
9 Στην ίδια σελίδα στο πρόγραμμα σε γλώσσα Pascal στο τελευταίο end λείπει η τελεία (.)
10 Στην σελίδα 64 στο παράδειγμα ΠΡΟΓΡΑΜΜΑ Υπολογισμός_δόσεων πρέπει να διαγραφεί το όνομα του προγράμματος από την τελευταία σειρά
Δηλαδή αντί για ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Υπολογισμός_δόσεων να γίνει ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
11 Στην σελίδα 73 στο πρόγραμμα σε Pascal υπάρχει η εντολή endif πράγμα απαράδεκτο για την Pascal.
12 Στην σελίδα 93 στο πρόγραμμα σε Pascal λείπει το do στο τελευταίο for.
Τελικά ρωτώ
Πόσο αυστηρά μπορείτε να βαθμολογήσετε τους μαθητές:
Αν αντί Δεδομένα //Α // γράψουν Διάβασε Α.
Αν αντί για ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ γράψουν
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ όνομα_προγράμματος
Αν ξεχάσουν να δηλώσουν μια μεταβλητή.
Αν βάλουν τις συναρτήσεις και τις διαδικασίες πριν από το κυρίως πρόγραμμα.
Βρακόπουλος Λ. Αθανάσιος
Τηλέφωνο: 6945283261
http://2lyk-kater.pie.sch.gr/users/braat/