Αποστολέας Θέμα: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας  (Αναγνώστηκε 6452 φορές)

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 5795
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
« Απάντηση #90 στις: 25 Φεβ 2021, 07:32:11 πμ »
Μπορεί να μου εξηγήσει κανείς πως ακριβώς δουλεύει αυτός ο μηχανισμός; Τι γίνεται αν έχω πολλά διάβασε και πολλά γράψε; Αν είναι κάπως έτσι:

Για την κλήση αλγορίθμων, μπορεί να γίνει αντιστοίχιση των ουσιαστικών παραμέτρων της κλήσης με τις εντολές Δεδομένα και Αποτελέσματα του αλγορίθμου. Όμως δεν πρέπει να γίνει καμία αντιστοίχιση με τις Διάβασε.

Υ.Γ. δεν μου έρχονται πλέον email για απαντήσεις στο ποστ @alkisg

Κομνηνέ δες λίγο στα spam σου, μόλις το δοκίμασα και μου δούλεψε κανονικά.

pgrontas

  • Ομάδα διαγωνισμάτων 2016
  • *
  • Μηνύματα: 1437
  • There are always possibilities...
Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
« Απάντηση #91 στις: 25 Φεβ 2021, 03:50:38 μμ »
Καλησπέρα,

στον παρακάτω αλγόριθμο
Κώδικας: [Επιλογή]
Αλγόριθμος Ασκ6
χ <- 1200
ετ <- 0
Όσο χ <= 2000 επανάλαβε
  χ <- χ + χ*0.038
  ετ <- ετ + 1
  Εμφάνισε ετ, χ
Τέλος_επανάληψης
Εμφάνισε ετ
Τέλος Ασκ6
ο διερμηνευτής δίνει:
1 1245.60
2 1292.93
3 1342.06
4 1393.06
5 1446.00
6 1500.95
7 1557.98
8 1617.19
9 1678.64
10 1742.43
11 1808.64
12 1877.37
13 1948.71
14 2022.76
14

ενώ το https://pseudo.gloglossa.gr/ δίνει

1 1236
2 1273.08
3 1311.27
4 1350.6
5 1391.11
6 1432.84
7 1475.82
8 1520.09
9 1565.69
10 1612.66
11 1661.04
12 1710.87
13 1762.19
14 1815.05
15 1869.5
16 1925.58
17 1983.34
18 2042.84
18
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

komni

  • Θαμώνας
  • ***
  • Μηνύματα: 44
Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
« Απάντηση #92 στις: 25 Φεβ 2021, 04:17:46 μμ »
Καλησπέρα,

στον παρακάτω αλγόριθμο
Κώδικας: [Επιλογή]
Αλγόριθμος Ασκ6
χ <- 1200
ετ <- 0
Όσο χ <= 2000 επανάλαβε
  χ <- χ + χ*0.038
  ετ <- ετ + 1
  Εμφάνισε ετ, χ
Τέλος_επανάληψης
Εμφάνισε ετ
Τέλος Ασκ6
ο διερμηνευτής δίνει:
1 1245.60
2 1292.93
3 1342.06
4 1393.06
5 1446.00
6 1500.95
7 1557.98
8 1617.19
9 1678.64
10 1742.43
11 1808.64
12 1877.37
13 1948.71
14 2022.76
14

ενώ το https://pseudo.gloglossa.gr/ δίνει

1 1236
2 1273.08
3 1311.27
4 1350.6
5 1391.11
6 1432.84
7 1475.82
8 1520.09
9 1565.69
10 1612.66
11 1661.04
12 1710.87
13 1762.19
14 1815.05
15 1869.5
16 1925.58
17 1983.34
18 2042.84
18


Καλησπέρα,

Θα το κοιτάζω βραδάκι αλλά φαντάζομαι έχει σχέση με τον τρόπο που χειρίζομαι τους πραγματικούς. Σε κάθε πράξη κάνω truncate τα δεκαδικά ψηφία και αφήνω μόνο τα πρώτα δύο. Δεν είμαι σίγουρος τι κάνει ο @alkisg

Άρχισαν να μου ξαναέρχονται τα email, τέλεια.

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 5795
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
« Απάντηση #93 στις: 25 Φεβ 2021, 04:25:43 μμ »
Σε κάθε πράξη κάνω truncate τα δεκαδικά ψηφία και αφήνω μόνο τα πρώτα δύο. Δεν είμαι σίγουρος τι κάνει ο @alkisg

Ο Διερμηνευτής δεν κάνει ποτέ truncate σε πράξεις ώστε τα αποτελέσματα να είναι όσο σωστά υποστηρίζει ο επεξεργαστής.
Κάνει όμως σε συγκρίσεις, ώστε π.χ. η συνθήκη 0.9999999999999 = 1 να είναι ΑΛΗΘΗΣ, στην Α_Μ(0.9999999999999) ώστε να βγαίνει 1, και φυσικά τυπώνει με πεπερασμένα δεκαδικά ψηφία τους αριθμούς. Και για τις δύο αυτές λειτουργίες υπάρχουν σχετικές επιλογές στον διάλογο ρυθμίσεων.

pgrontas

  • Ομάδα διαγωνισμάτων 2016
  • *
  • Μηνύματα: 1437
  • There are always possibilities...
Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
« Απάντηση #94 στις: 25 Φεβ 2021, 09:02:44 μμ »
Ναι μάλλον έτσι εξηγείται. Οπότε αφού πολλαπλασιάζεις με το 0.03 αντί για το 0.038 υπάρχει αυτή η αποκλιση.
Καλησπέρα,

Θα το κοιτάζω βραδάκι αλλά φαντάζομαι έχει σχέση με τον τρόπο που χειρίζομαι τους πραγματικούς. Σε κάθε πράξη κάνω truncate τα δεκαδικά ψηφία και αφήνω μόνο τα πρώτα δύο. Δεν είμαι σίγουρος τι κάνει ο @alkisg

Άρχισαν να μου ξαναέρχονται τα email, τέλεια.
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

dpa2006

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 767
Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
« Απάντηση #95 στις: Χθες στις 04:22:18 μμ »
Καλησπέρα και πάλι,

Το σφάλμα που επισήμανε ο dpa, το code formatting(αντί για κουμί θα γίνεται αυτόματα οταν ο χρήστης πατάει το κουμπί εκτέλεση) και η πρόταση του George Eco θα εχουν υλοποιηθεί μέχρι την Κυριακή.

Όσο για το κάλεσμα αλγορίθμων/προγραμμάτων, θα αργήσει λιγάκι. Πιθανότατα να το κάνω την επόμενη βδομάδα.

Υ.Γ. δεν μου έρχονται πλέον email για απαντήσεις στο ποστ @alkisg

Ευχαριστώ και πάλι.
Ελπίζω να μπορείς να λαμβάνεις email από το στέκι πλέον.
Computer science (abbreviated CS or CompSci) is the scientific and practical approach to computation and its applications. It is the systematic study of the feasibility, structure, expression, and mechanization of the methodical processes (or algorithms) that underlie the acquisition, representation, processing, storage, communication of, and access to information, whether such information is encoded in bits and bytes in a computer memory or transcribed engines and protein structures in a human cell.source:http://en.wikipedia.org/wiki/Computer_science

dpa2006

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 767
Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
« Απάντηση #96 στις: Χθες στις 05:21:49 μμ »
Καλησπέρα,

στον παρακάτω αλγόριθμο
Κώδικας: [Επιλογή]
Αλγόριθμος Ασκ6
χ <- 1200
ετ <- 0
Όσο χ <= 2000 επανάλαβε
  χ <- χ + χ*0.038
  ετ <- ετ + 1
  Εμφάνισε ετ, χ
Τέλος_επανάληψης
Εμφάνισε ετ
Τέλος Ασκ6
ο διερμηνευτής δίνει:
1 1245.60
2 1292.93
3 1342.06
4 1393.06
5 1446.00
6 1500.95
7 1557.98
8 1617.19
9 1678.64
10 1742.43
11 1808.64
12 1877.37
13 1948.71
14 2022.76
14

ενώ το https://pseudo.gloglossa.gr/ δίνει

1 1236
2 1273.08
3 1311.27
4 1350.6
5 1391.11
6 1432.84
7 1475.82
8 1520.09
9 1565.69
10 1612.66
11 1661.04
12 1710.87
13 1762.19
14 1815.05
15 1869.5
16 1925.58
17 1983.34
18 2042.84
18


Ο αλγόριθμος και σε Python

# Αλγόριθμος Άσκηση_6

x=1200
et=0

while x<=2000:
    x=x+0.038*x
    et=et+1
    print('{:d}'.format(et),'{:6.2f}'.format(x))

   
print("et=",et)
   

Έξοδος

1 1245.60
2 1292.93
3 1342.06
4 1393.06
5 1446.00
6 1500.95
7 1557.98
8 1617.19
9 1678.64
10 1742.43
11 1808.64
12 1877.37
13 1948.71
14 2022.76
et= 14
Computer science (abbreviated CS or CompSci) is the scientific and practical approach to computation and its applications. It is the systematic study of the feasibility, structure, expression, and mechanization of the methodical processes (or algorithms) that underlie the acquisition, representation, processing, storage, communication of, and access to information, whether such information is encoded in bits and bytes in a computer memory or transcribed engines and protein structures in a human cell.source:http://en.wikipedia.org/wiki/Computer_science

bugman

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 564
  • The Bug Eater
    • Πληροφορική Προγραμματισμός
Απ: ΝΕΟΣ διαδικτυακός διερμηνευτής της Γλώσσας
« Απάντηση #97 στις: Χθες στις 10:34:17 μμ »
Το λάθος βγαίνει σε οποιαδήποτε γλώσσα όταν το 0.038  λαμβάνεται ως 0.03.
Δηλαδή κατά τη σάρωση του κώδικα, η μετατροπή του 0.038 γίνεται με αποκοπή από το τρίτο δεκαδικό (truncate και όχι round). Κανονικά θα έπρεπε να μην γίνει αποκοπή και το round (στρογγυλοποίηση) να είναι στο 15 ή 16 δεκαδικό αν μιλάμε για double τύπο πραγματικού των 80bit - IEEE 754).