Програмований калькулятор

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
Сучасний програмований калькулятор
Радянський калькулятор «Електроніка МК-52», модуль розширення пам'яті та посібник з експлуатації

Програмований калькулятор — калькулятор, який має функції введення та виконання програм.

Параметри та можливості[ред. | ред. код]

До загальних для всіх типів калькуляторів параметрів, таких як логіка обчислень, число регістрів пам'яті, набір підтримуваних функцій і можливості відображення, у програмованих калькуляторів додаються:

  • Обсяг програмної пам'яті, який може вимірюватися в байтах, командах або вказівках мови програмування. Об'єм програмної пам'яті обмежує найбільший розмір виконуваної програми, визначаючи тим самим межі можливостей калькулятора. У багатьох калькуляторах оперативна пам'ять, як і в звичайних комп'ютерах з архітектурою фон Неймана, єдина і не ділиться на пам'ять даних (регістри пам'яті) та пам'ять програм. Поділом пам'яті на регістрову та програмну керує користувач, що підвищує гнучкість використання.
  • Спосіб програмування визначає мова, якою складаються програми.
  • Технічні обмеження програм, пов'язані з особливостями реалізації командної мови та схемотехніки калькулятора. Наприклад, кількість підпрограм, які можна вкласти одна в одну, наявність або відсутність у командній мові непрямої адресації.
  • Наявність енергонезалежної пам'яті, тобто можливість тривалого зберігання вмісту оперативної пам'яті після вимкнення калькулятора та наявність або можливість підключення пристроїв для оперативного введення-виведення програм та даних. Для програмованих калькуляторів ця особливість є вкрай важливою, оскільки саме вона визначає витрати часу на приведення калькулятора в робочий стан: при тривалому зберіганні або можливості швидкого завантаження заздалегідь підготовленої до використання програми його можна просто увімкнути та працювати, за відсутності енергонезалежної пам'яті кожному сеансу роботи вимушено передує підготовчий процес, що полягає у введенні програми та її перевірці.

Прості програмовані калькулятори дозволяють лише зберігати і багаторазово використовувати лінійні послідовності операцій, тобто просто багаторазово виконувати обчислення за одними й тими ж формулами без повторного їх уведення. Складніші дозволяють писати повноцінні програми символьно-кодовою мовою, адаптованим варіантом Бейсику або іншими мовами програмування[джерело?].

Найпотужніші програмовані калькулятори мають графічний екран, вбудовану мову програмування високого рівня, можливість зв'язку з комп'ютером для завантаження програм або даних, інтерфейс із зовнішніми пристроями; використовують процесори з тактовою частотою в десятки мегагерц, пам'ять може включати сотні кілобайтів ОЗУ та мегабайти флеш-пам'яті. Такі калькулятори також нерідко мають систему символьних обчислень, що включає різні маніпуляції з виразами, розв'язування рівнянь та їх систем, символьне диференціювання та інтегрування, а часто й розв'язання диференціальних рівнянь у символьному вигляді. Може підтримуватися малювання двовимірних та тривимірних графіків та діаграм, операції лінійної алгебри, розвинені засоби статистичного аналізу даних, фінансові обчислення, обчислення з комплексними числами. Для деяких є можливість програмування мовою C на комп'ютері з подальшою крос-компіляцією та завантаженням коду.

Історія[ред. | ред. код]

Olivetti Programma 101 — Національний музей науки і техніки, Мілан
  • 1965 року італійська фірма Olivetti[it] випустила настільний програмований обчислювальний пристрій Programma 101[en]. Апарат здатний виконувати арифметичні дії, добувати корені, знаходити абсолютну величину числа. Пам'ять 240 байт розподілялася між регістрами пам'яті і програмою. Для керування використовувалася проста клавіатура, виводилися дані на принтер. Програмування виконувалося простою символьно-кодовою мовою, що включала операції передавання даних між регістрами, операції з даними та умовні й безумовні переходи. Імовірно, Olivetti Programma 101 можна вважати першим у світі програмованим калькулятором, як і першим відносно портативним персональним комп'ютером, хоча і той, і інший термін з'явилися пізніше[1][2][3].
Casio AL-1000 — перший програмований калькулятор фірми Casio
  • 1967 року японська фірма Casio представила калькулятор Casio AL-1000. Він виконаний на дискретних напівпровідникових елементах (284 окремих транзистори, переважно Toshiba 2SC371, і 1500 діодів), мав 14-розрядний індикатор на газорозрядних лампах, пам'ять на феритових осердях і інтерфейс для виведення даних на електричну друкарську машинку. Можливості калькулятора дуже обмежені: чотири арифметичні дії, добування квадратного кореня, 4 регістри пам'яті, програмна пам'ять на 30 кроків. У калькуляторі реалізовано просту арифметичну логіку операцій (див. нижче). При цьому апарат мав розміри 380×440×238 мм, важив більше 12 кг і продавався за ціною, еквівалентною 900 американським доларам[4].
HP9100A
Завдяки цьому пристрою стало відомим саме поняття «програмованого калькулятора». Спочатку HP 9100A назвали «персональним комп'ютером» (personal computer), але відповідальні особи фірми HP вважали, що назва «калькулятор» зробить товар продаванішим, зокрема, через те, що служби закупівлі підприємств і організацій, як правило, мали повноваження купувати «калькулятори» за власною ініціативою, тоді як придбання «комп'ютера», незалежно від вартості, вимагало санкції вищого керівництва. Білл Г'юлет зауважив: «Якби ми назвали його комп'ютером, його б відкинули комп'ютерні профі наших користувачів, оскільки він не схожий на IBM»[6]. До того ж реклама HP 9100A прямо протиставляла його комп'ютерам, обіцяючи покупцеві «позбавлення очікування черги до великого комп'ютера».
  • 1970 року в НДІ «Циклон» (тоді — ЦБ ПНПП при НДІ-35 Мінелектронпрому СРСР[ru][7]) розроблено перший радянський стаціонарний професійний програмований калькулятор «Електроніка-70»[ru], який мав 23 регістри і дозволяв зберігати 186 команд. Було передбачено підключення периферійних пристроїв, зокрема зовнішнього пристрою «Электроника-72», в якому можна було зберігати 248 чисел або 3472 кроки програми. Створені програми можна було записувати на магнітні карти (5×9 см) і використовувати багаторазово.
  • 1977 року розроблено перший радянський кишеньковий програмований мікрокалькулятор «Електроніка Б3-21»[ru]. 13 регістрів пам'яті, 60 кроків програми, зворотна бездужкова логіка обчислень. Калькулятор започаткував серію, яку продовжили настільні калькулятори МК-46[ru], МК-64, MC-1103, сумісні за архітектурою та системою команд, з додатковими можливостями — могли працювати як засіб контролю виробничого процесу, для чого мали систему введення з вимірювачем напруги на 8 каналів та додатковий індикатор для відображення відхилення виміряного значення від заданого. Ці (й наступні МК-54, МК-52, МК-61… МК-161) калькулятори використовували той самий зворотний польський запис RPL.
  • 1979 року Hewlett Packard випустила перший програмований калькулятор із алфавітно-цифровим індикатором — HP-41C[en]. Він мав можливість підключення додаткових модулів — RAM, ROM, пристроїв читання штрих-кодів, касет із магнітною стрічкою, гнучких дисків, принтерів, роз'ємів RS-232, HP-IL[en], HP-IB.
  • 1980 року з'явився Б3-34 — суттєво допрацьований варіант Б3-21, родоначальник наймасовішої серії радянських і російських програмованих калькуляторів так званого «розширюваного ряду». Практично вся література щодо програмованих калькуляторів, серії статей у журналах «Наука и жизнь» та «Техника – молодежи», довідники з розрахунків на мікрокалькуляторах, які виходили СРСР у 1980-ті роки, орієнтувалися на систему команд цього калькулятора. Більшість моделей радянських програмованих калькуляторів були або його повними функціональними аналогами (МК-54[ru], МК-56[ru]), або розширеннями (МК-61[ru], МК-52, МС-1104).
  • 1985 року в СРСР з'явилися МК-61[ru] і МК-52 — розширені версії сімейства Б3-34, в яких збільшено обсяг програмної пам'яті, додано один регістр та кілька нових функцій. За винятком кількох недокументованих функцій, збережено сумісність із Б3-34. Також, у МК-52 з'явилася можливість збереження програми у вбудованій ППЗП та можливість підключення зовнішньої пам'яті — сховища бібліотеки програм.
  • 1985 року з'явився перший програмований калькулятор із графічним дисплеєм Casio fx-7000G[en].

Режими роботи[ред. | ред. код]

Щоб забезпечити роботу з програмами, програмований калькулятор, окрім звичайного режиму ручних обчислень (того режиму, в якому постійно працюють звичайні калькулятори), має підтримувати ще, принаймні, два режими роботи: режим програмування та режим виконання програми.

  • У режимі програмування натискання клавіш приводять не до виконання обчислень, а до внесення в програмну пам'ять калькулятора команд (операторів) програми. Залежно від моделі, калькулятор може підтримувати різні способи перегляду та редагування програми. У найпростіших моделях перегляду та редагування не передбачено, і виправлення програми здійснюється введенням її замість наявної.
  • Режим виконання програми оператор вмикає командою запуску програми. У цьому режимі калькулятор автоматично виконує задану програму над даними, введеними раніше або тими, що вводяться в міру виконання програми. Вихід із режиму виконання відбувається або примусово, за командою оператора (таке переривання зазвичай є аварійним), або після досягнення в програмі команди завершення чи призупинення виконання.

Додатково програмований калькулятор може підтримувати режим покрокового виконання програми (він може бути суміщеним зі звичайним режимом ручних обчислень). У такому режимі калькулятор після натискання певної клавіші на клавіатурі виконує рівно одну, поточну команду програми і переходить у ручний режим. Покрокове виконання призначене для налагодження програм: після виконання чергової операції або кількох операцій оператор має можливість проаналізувати стан калькулятора та переконатися, що виконання програми відбувається саме так, як планувалося, а в разі виявлення помилок може усунути їх, увівши вручну правильні дані, та продовжити перевірку, щоб виявити всі можливі несправності та згодом виправити їх.

Способи програмування[ред. | ред. код]

Відомо три принципово різних способи програмування калькуляторів: символьно-кодова машинна мова, AER (Algebraic Expression Reserve) та мова високого рівня.

Символьно-кодова мова[ред. | ред. код]

Програма є, по суті, записаною за допомогою кодів послідовністю натискань на клавіші калькулятора (аналог комп'ютерного макроса). Будь-яка клавіша або допустима комбінація клавіш має код. Програма записується у програмну пам'ять калькулятора в режимі програмування. Оператор вводить її, натискаючи клавіші, при цьому в пам'ять записуються відповідні коди.

У найпростіших програмованих калькуляторах програма може бути лише лінійною. У тих місцях, де за логікою формули потрібне ручне введення даних, уводиться спеціальна команда; під час виконання програми калькулятор за цією командою перериває обчислення, видає запрошення на введення даних та чекає, поки оператор введе значення та натисне клавішу продовження обчислень. У потужніших калькуляторах, окрім звичайних обчислювальних операцій та команд роботи з пам'яттю, командна мова містить спеціальні команди керування, тобто перевірки умов, розгалуження, організації циклів, безумовні переходи за адресою або міткою, команди постановки символьних міток, звернення до підпрограм і повернення з підпрограм. Розвинені символьно-кодові мови відрізняє наявність команд переходів та звернення до пам'яті з непрямою адресацією (звернення за адресою, записаною в регістр пам'яті, або до регістра, код якого записано в інший регістр) — такі команди дозволяють організовувати складну логіку виконання та використовувати механізми, аналогічні масивам у мовах високого рівня.

Обов'язково в командній мові є команда зупинки програми (виходу з режиму виконання), за якою калькулятор завершує виконання програми та зупиняється, щоб показати результати.

AER (Algebraic Expression Reserve)[ред. | ред. код]

Оригінальний метод програмування AER реалізовано в японському програмованому калькуляторі фірми Sharp моделі EL-5100 і наступних калькуляторах цієї серії: EL-5100S, EL-5101, EL-5103, EL-5150, EL-5050, що випускалися наприкінці 1970-х — у першій половині 1980-х років. Він полягає в поданні програми як набору формул. Для кожного необхідного результату обчислень створюється формула. Для кожної формули оператор визначає аргументи (що позначаються символами) і записує у звичайному, алгебричному вигляді саму формулу (наприклад, для формули «f(A, B,C)=0,5·A·B·sin(C)» резервуються змінні A, B, C та вводиться сама формула у вигляді «f() = .5 AB sin C»). Коли оператор натискає клавішу обчислення формули, калькулятор спочатку самостійно запитує користувача значення аргументів A, B і C, після чого обчислює введену формулу. Легко бачити, що можливості власне програмування (тобто створення програм зі складною логікою) за такого методу обмежені, натомість він дуже наочний, вимагає мінімум часу на вивчення і цілком достатній, якщо потрібно багато разів обчислювати значення за одними й тими ж складними формулами. Менш очевидною, але теж істотною позитивною якістю логіки AER є менше, порівняно зі звичайною алгебричною логікою, число натискань клавіш для введення одних і тих самих формул. Можливості калькулятора з логікою AER обмежуються найбільшою кількістю та розміром формул і найбільшим допустимим числом одночасно використовуваних змінних. У найпотужнішого представника серії, EL-5150, найбільша кількість програмованих формул становить 99 при граничній сумарній довжині 1400 знаків, найбільша кількість змінних — 26.Значного поширення логіка AER не набула, оскільки за обмежених можливостей вимагала складної клавіатури з великою кількістю знаків та складного алфавітно-цифрового дисплея, які в період її появи були ще рідкістю. Проте деякі сучасні програмовані калькулятори підтримують близькі до AER методи програмування. Так, наприклад, калькулятор Citizen SRP-325G, крім програмування на спрощеній версії Бейсику, підтримує збереження та виконання як програм уведених оператором формул. Цей режим дуже близький до AER: оператор набирає формулу обчислення з використанням символьних змінних та команду збереження цієї формули у програмній пам'яті під одним із 10 доступних номерів; згодом за командою виконання програми з цим номером калькулятор автоматично запитує користувача значення використаних у формулі змінних і обчислює результат. Допускається навіть пропуск операції множення у формулах, характерний для AER.

Мова високого рівня[ред. | ред. код]

Перші калькулятори, що програмуються мовою високого рівня, реалізовували підмножину мови Бейсик, адаптованої для використання в калькуляторі. Донині калькулятори, що програмуються мовами високого рівня, використовують або Бейсик, або власну мову, побудовану за його зразком. Серед нечисленних винятків із цього правила — мова Reverse Polish Lisp (RPL)[en], що використовується в калькуляторах Hewlett-Packard, і Lua, що використовується в останніх моделях калькуляторів Texas Instruments. Найбільш потужні й складні з калькуляторів, що випускаються зараз, мають системи крос-компіляції з мови C й завантаження виконуваного коду.

Виробники[ред. | ред. код]

Найвідомішими виробниками програмованих калькуляторів є американські фірми Texas Instruments та Hewlett-Packard, а також японська Casio. У лінійці моделей цих фірм є програмовані калькулятори всіх типів. Топові моделі мають великі графічні екрани (серед моделей другого десятиліття XXI століття — кольорові та сенсорні), забезпечені вбудованими системами символьних обчислень (CAS), підтримують потужні мови програмування.

Texas Instruments[ред. | ред. код]

Серія TI-89 і TI-92 фірми Texas Instruments використовують алгебричну нотацію і версію Бейсику, звану TI-BASIC. Любителі цього калькулятора створили компілятор із C для ПК, а також засоби програмування на асемблері. Різні автори написали багато програм, зокрема ігор. Різниця між двома серіями полягає в дизайні: калькулятори серії TI-92 мають клавіатуру QWERTY і великий екран, відповідно, вони не кишенькові. Недоліком є відсутність друкованого посібника (в США вони продаються з таким посібником). Для більшості посібник доступний тільки на CD-ROM і в інтернеті. Крім того, кабель для зв'язку з ПК треба купувати окремо. Калькулятори використовують процесор 68000 з тактовою частотою 12 МГц (10 МГц у деяких старих примірниках старих моделей). Інші параметри цих калькуляторів наведено в таблиці.

Обсяг доступного користувачу ОЗП Обсяг доступної користувачу флешпам'яті Дисплей Рік випуску
TI-89 188K 384K 160×100 1998
TI-89 Titanium 188K 2.7M 160×100 2004
TI-92 68K немає 240×128 1995
TI-92 Plus 188K 384K 240×128 1998
Voyage 200 188K 2.7M 240×128 2000

Нині виробляються тільки TI-89 Titanium та Voyage 200. Серед молодших моделей особливо популярний TI-83 Plus.

Hewlett-Packard[ред. | ред. код]

Серія HP-49G[en] (до якої належать калькулятори HP-49G, HP-49G+, а також HP-48GII та HP 50g) фірми Hewlett-Packard використовує швидкі процесори ARM9, має розвинену систему алгебричної (символьної) математики, зворотну польську нотацію та мову (Reverse Polish Lisp). За своїми можливостями ці калькулятори просунутіші, ніж TI-89/92. Однак, за відгуками користувачів, ці калькулятори, що виготовляються в Китаї, страждають від проблем суто механічного роду: корпус пластиковий, клавіші гумові, а головне, швидко (часто за кілька місяців) виходять із ладу. Фірма надсилає новий калькулятор, але й там кнопки так само швидко ламаються. Щодо посібника, то він уривчастий: багатьох відомостей там просто немає. Посібник на 800 сторінок викладено на сайт в електронному вигляді, але він не повний та не перекладений із англійської мови.

Калькулятори попередньої серії, HP-48G, відрізнялася значно вищою якістю клавіатури та складання, але їх більше не виробляють. Частково ці недоліки виправлено в моделі HP 50g. Як і для TI-89/92, для HP-49G існує компілятор Сі, і багато ігор та інших програм. Параметри цих калькуляторів наведено в таблиці.

Обсяг доступного
користувачу ОЗП
Обсяг доступної
користувачу флешпам'яті
Дисплей Процесор Рік випуску
HP-48GII 80.7K немає 131×64 Arm9 48 МГц 2004
HP-49G 330K 500K 131×64 Saturn 4 МГц 2000
HP-49G+ 330K 500K 131×80 Arm 75 МГц 2003

Casio[ред. | ред. код]

Фірма Casio також випускає програмовані калькулятори, зокрема й кольорові графічні, а також із уведенням інформації за допомогою стилусу (ClassPad 300 Plus). Калькулятори Casio програмуються на спрощеному Бейсику, реалізують алгебричну логіку обчислень. За можливостями програмування вони дещо слабші, за іншими показниками перебувають на одному рівні або навіть перевершують провідні моделі TI і HP.

Інші[ред. | ред. код]

Програмовані калькулятори також випускають фірми Sharp та Citizen. Калькулятори цих виробників, порівняно з топовими моделями HP, Casio й TI, значно простіші та не мають ні великого обсягу пам'яті, ні системи символьних обчислень.

Див. також[ред. | ред. код]

Примітки[ред. | ред. код]

  1. 'Desk-top' computer is typewriter size. Business Week. 23 жовтня 1965.
  2. Desk-Top Size Computer Is Being Sold by Olivetti For First Time in US. The Wall Street Journal. 15 жовтня 1965. Архів оригіналу за 8 листопада 2012. Процитовано 5 січня 2018.
  3. 2008/107/1 Computer, Programma 101, and documents (3), plastic / metal / paper / electronic components, hardware architect Pier Giorgio Perotto, designed by Mario Bellini, made by Olivetti, Italy, 1965-1971. www.powerhousemuseum.com (англ.). Архів оригіналу за 23 липня 2010. Процитовано 20 березня 2016.
  4. Casio AL-1000 на сайте Vintagecalculators. Архів оригіналу за 8 січня 2018. Процитовано 5 січня 2018.
  5. Описание калькулятора HP 9100A (англ.). Архів оригіналу за 8 грудня 2007. Процитовано 5 січня 2018.
  6. HP9100A на офіційному сайті фірми HP. Архів оригіналу за 11 березня 2010. Процитовано 20 червня 2013.
  7. Центральный научно-исследовательский институт «Циклон» (ЦНИИ «Циклон») Министерства электронной промышленности СССР и его предшественник, г. Москва (1961—1991 гг.) [Архівовано 2020-02-25 у Wayback Machine.] / Филиал Российского государственного архива научно-технической документации в г. Самаре. Путеводитель. — 2007.

Література[ред. | ред. код]

  • Я. К. Трохименко, В. П. Захаров, Н. П. Ромашко, В. А. Жижко, Ю.М. Польский. Программируемые микрокалькуляторы: устройство и пользование. — Москва : Радио и связь, 1990. — 272 с. — 40000 прим. — ISBN 5-256-00318-6.

Посилання[ред. | ред. код]