COM σημείων Paul Hartrick






Το πρώτο πρόγραμμα Ι πάντα έγραψε

7η Φεβρ. 2008
2 σχόλια
αποκριθείτε
trackback

Η σημερινή θέση είναι σε απάντηση σε έναν καλό φίλο του ορυχείου πάντα που ρωτά για «Jumbo Mumbo» που μιλώ για ή δημιουργώ κατά τη διάρκεια της εργασίας μου. «Jumbo Mumbo» είναι πραγματικά «ιαπωνοαγγλικό» για την τεχνική συζήτηση σύμφωνα με μερικούς. Πρέπει να σας πάρω όλοι πίσω όταν ήμουν περίπου 14 ετών, τότε είναι που αγόρασα τον πρώτο υπολογιστή μου. Ο πρώτος υπολογιστής μου δεν ήταν η ΙΒΜ 486 ή 386, ή ακόμα και 286, ο πρώτος υπολογιστής μου ήταν ένα Casio PB-100.

Εδώ είναι οι λεπτομέρειες του πρώτου PC μου.

PB 100 Casio

Τα PB-100 αντιπροσωπεύουν το βήμα Casio προς τους «πραγματικούς» υπολογιστές τσεπών. Ενώ ο πρόγονός του, Fx-702P, κλήθηκε ακόμα «προγραμματίσημο υπολογιστή», τα PB-100 υπερήφανα φέρουν τον τίτλο «προσωπικός υπολογιστής».

Στην τυποποιημένη έκδοσή του, είναι εξοπλισμένο με 1 KB του RAM που οδηγεί σε μόνο 544 ψηφιολέξεις για το BASIC, το οποίο περιορίζει πραγματικά. Τουλάχιστον, με την ενότητα ή-1 μνήμης, μπορεί να αναβαθμιστεί σε 1568 ψηφιολέξεις της μνήμης χρηστών, έτσι αρχίζει να έχει νόημα ότι η μνήμη BASIC μπορεί να υποδιαιρεθεί σε 10 ανεξάρτητες περιοχές προγράμματος.

Τα κύρια κυκλώματα των PB-100 είναι βασικά φιαγμένα επάνω από δύο τσιπ. Οι λογικές επεξεργαστών, το ROM, ο οδηγός επίδειξης, και ο ελεγκτής πληκτρολογίων είναι ενσωματωμένοι σε ένα ενιαίο τσιπ HD61913 CMOS VLSI, το οποίο έχει ένα εξωτερικό λεωφορείο 4 μπιτ. Το δεύτερο κύριο συστατικό είναι ένα HD61914, το οποίο είναι ένα στατικό RAM 8192 μπιτ που οργανώνεται ως 2048 λέξεις από 4 μπιτ.

Είχα το μέρος, 1k βελτίωση κριού για συνολικά 1.5k του κριού, θερμικός εκτυπωτής και η κίνηση ταινιών, άχρηστη να πει αυτό θέλει ένα πολύ ισχυρό PC, αλλά θα εκπλησσόσαστε τι μπόρεσε να γίνει με ένα τέτοιο μικρής ισχύος PC, να συνεχίσει….

Το πρώτο πρόγραμμά μου γράφτηκε στο BASIC, και θα μπορούσε να υπολογίσει τον παραγοντικό οποιουδήποτε αριθμού που συμπαθείτε. Τι είναι παραγοντικός; Στα μαθηματικά, ο παραγοντικός ενός μη αρνητικού ακέραιου αριθμού ν, που δείχνεται από το ν! , είναι το προϊόν όλων των θετικών ακέραιων αριθμών λιγότερο ή ίσο προς του ν. Παραδείγματος χάριν, 5! = 1 X 2 X 3 X 4 X 5 = 120 και 6! = 1 X 2 X 3 X 4 X 5 X 6 = 720. Όπως μπορείτε να φανταστείτε ότι οι αριθμοί παίρνουν πολύ μεγάλοι πολύ γρήγορα. Οι περισσότεροι υπολογιστές, ακόμα και σήμερα, μπορούν μόνο να διαχειριστούν 69! , αυτό είναι το σημείο όπου ο εκθέτης υπερβαίνει 99.

Έτσι είχα ένα πρόβλημα που θέλω να λύσω, ποιος είναι ο παραγοντικός 1 εκατομμυρίου, 1.000.000! λογάριθμοι στη διάσωση. Τι είναι ένα χρονών αγόρι 14 που κάνει που ερευνά τους λογαρίθμους που ρωτάτε; I guess thats a story for another post. After a few hours of reading a book, yes a book!( no internet in those days) I was able to establish that product of integers is the sum of their logs.

so 1 * 2 * 3 * 4 * 5 … is equal to exp( log(1) + log(2) + log(3)+ log(4) + log(5) )

Easy right… yeah right!

So I embarked on my first programming task. I was able to come up with a simple routine that broke the calculation down into small chunks easily handled by any programmable calculator or PC.

10 input x
20 for a = 1 to x
30 b = b + log10(a)
40 next a
50 c = b - frac(b)
60 d = b - c
70 e = 10 ^ d
80 print e , “E+” , c

Certainly not the best way to achieve the result by todays standards, and faced with many command restrictions,  still not to bad for a 14 year old boy.

You can still use this program today, go and download small basic and copy/paste the code and give it a try. It took more than 12 hours on my PB-100 to calculate 1,000,000!, now it takes about 1 second, I can now appreciate how much performance my laptop has, however my little program still beats the WindowXP calculator at Factorial.. try it and see.

So what is 1 million Factorial? 1,000,000! = 8.263930499EXP5565708, that 5.5 million zeros, give or take a few.

Now for all the other math heads who read this, I know it is an approximation as I am only using 16 significant digits, and there are more accurate ways to do this, blah blah blah, please remember I was only 14 at the time.

If you have managed to maintain interest and get to the end of this post, maybe your the type who can impress their friends with some geeky code.


This post is tagged , , ,

2 Comments

  1. Gil Hartrick

    Pauly, do you remember where you got the workings from ?…… It was me who brought the Swinburne Uni PC’s to a grinding hault in the early eighties with this Factorial Formulae on PUNCH CARDS… YES! punch card programming LOL

  2. Gil Hartrick

    Remember my Casio Calculator the FX-602P?? It computed 1,000,000 factorial in 4 minutes flat, not bad for a meek calculator

Incoming Links

Leave a Reply