Програмований калькулятор — калькулятор, який має функції введення та виконання програм.
Параметри та можливості До загальних для всіх типів калькуляторів параметрів, таких як логіка обчислень, число регістрів пам'яті, набір підтримуваних функцій і можливості відображення, у програмованих калькуляторів додаються:
Обсяг програмної пам'яті, який може вимірюватися в байтах, командах або вказівках мови програмування. Об'єм програмної пам'яті обмежує найбільший розмір виконуваної програми, визначаючи тим самим межі можливостей калькулятора. У багатьох калькуляторах оперативна пам'ять, як і в звичайних комп'ютерах з архітектурою фон Неймана, єдина і не ділиться на пам'ять даних (регістри пам'яті) та пам'ять програм. Поділом пам'яті на регістрову та програмну керує користувач, що підвищує гнучкість використання. Спосіб програмування визначає мова, якою складаються програми. Технічні обмеження програм, пов'язані з особливостями реалізації командної мови та схемотехніки калькулятора. Наприклад, кількість підпрограм, які можна вкласти одна в одну, наявність або відсутність у командній мові непрямої адресації. Наявність енергонезалежної пам'яті, тобто можливість тривалого зберігання вмісту оперативної пам'яті після вимкнення калькулятора та наявність або можливість підключення пристроїв для оперативного введення-виведення програм та даних. Для програмованих калькуляторів ця особливість є вкрай важливою, оскільки саме вона визначає витрати часу на приведення калькулятора в робочий стан: при тривалому зберіганні або можливості швидкого завантаження заздалегідь підготовленої до використання програми його можна просто увімкнути та працювати, за відсутності енергонезалежної пам'яті кожному сеансу роботи вимушено передує підготовчий процес, що полягає у введенні програми та її перевірці.
Прості програмовані калькулятори дозволяють лише зберігати і багаторазово використовувати лінійні послідовності операцій, тобто просто багаторазово виконувати обчислення за одними й тими ж формулами без повторного їх уведення. Складніші дозволяють писати повноцінні програми символьно-кодовою мовою, адаптованим варіантом Бейсику або іншими мовами програмування.
Найпотужніші програмовані калькулятори мають графічний екран, вбудовану мову програмування високого рівня, можливість зв'язку з комп'ютером для завантаження програм або даних, інтерфейс із зовнішніми пристроями; використовують процесори з тактовою частотою в десятки мегагерц, пам'ять може включати сотні кілобайтів ОЗУ та мегабайти флеш-пам'яті. Такі калькулятори також нерідко мають систему символьних обчислень, що включає різні маніпуляції з виразами, розв'язування рівнянь та їх систем, символьне диференціювання та інтегрування, а часто й розв'язання диференціальних рівнянь у символьному вигляді. Може підтримуватися малювання двовимірних та тривимірних графіків та діаграм, операції лінійної алгебри, розвинені засоби статистичного аналізу даних, фінансові обчислення, обчислення з комплексними числами. Для деяких є можливість програмування мовою C на комп'ютері з подальшою крос-компіляцією та завантаженням коду.
Історія
1965 року італійська фірма Olivetti випустила настільний програмований обчислювальний пристрій . Апарат здатний виконувати арифметичні дії, добувати корені, знаходити абсолютну величину числа. Пам'ять 240 байт розподілялася між регістрами пам'яті і програмою. Для керування використовувалася проста клавіатура, виводилися дані на принтер. Програмування виконувалося простою символьно-кодовою мовою, що включала операції передавання даних між регістрами, операції з даними та умовні й безумовні переходи. Імовірно, Olivetti Programma 101 можна вважати першим у світі програмованим калькулятором, як і першим відносно портативним персональним комп'ютером, хоча і той, і інший термін з'явилися пізніше.
1967 року японська фірма Casio представила калькулятор Casio AL-1000. Він виконаний на дискретних напівпровідникових елементах (284 окремих транзистори, переважно Toshiba 2SC371, і 1500 діодів), мав 14-розрядний індикатор на газорозрядних лампах, пам'ять на феритових осердях і інтерфейс для виведення даних на електричну друкарську машинку. Можливості калькулятора дуже обмежені: чотири арифметичні дії, добування квадратного кореня, 4 регістри пам'яті, програмна пам'ять на 30 кроків. У калькуляторі реалізовано просту арифметичну логіку операцій (див. нижче). При цьому апарат мав розміри 380×440×238 мм, важив більше 12 кг і продавався за ціною, еквівалентною 900 американським доларам.
1969 року в США фірма Hewlett-Packard випустила настільний програмований калькулятор для науково-технічних розрахунків . Він важив 18 кг, продавався за 4900 $ (близько 33 000 $ за сучасними цінами), мав індикатор і клавіатуру. Окремо продавався друкарський пристрій, зчитувач магнітних карток та додатковий зовнішній інтерфейс для підключення принтера IBM. HP 9100A мав пам'ять із 16 числових регістрів і 192 кроків програми, реалізовував зворотну польську логіку обчислень зі стеком із трьох регістрів, обчислював кілька десятків математичних функцій, а при використанні програм — корені многочленів до п'ятого степеня, функції Бесселя, еліптичні інтеграли та виконував регресійний аналіз.
Завдяки цьому пристрою стало відомим саме поняття «програмованого калькулятора». Спочатку HP 9100A назвали «персональним комп'ютером» (personal computer), але відповідальні особи фірми HP вважали, що назва «калькулятор» зробить товар продаванішим, зокрема, через те, що служби закупівлі підприємств і організацій, як правило, мали повноваження купувати «калькулятори» за власною ініціативою, тоді як придбання «комп'ютера», незалежно від вартості, вимагало санкції вищого керівництва. Білл Г'юлет зауважив: «Якби ми назвали його комп'ютером, його б відкинули комп'ютерні профі наших користувачів, оскільки він не схожий на IBM». До того ж реклама HP 9100A прямо протиставляла його комп'ютерам, обіцяючи покупцеві «позбавлення очікування черги до великого комп'ютера».
1970 року в НДІ «Циклон» (тоді — ЦБ ПНПП при НДІ-35 Центральный научно-исследовательский институт «Циклон» (ЦНИИ «Циклон») Министерства электронной промышленности СССР и его предшественник, г. Москва (1961—1991 гг.) / Филиал Российского государственного архива научно-технической документации в г. Самаре. Путеводитель. — 2007.) розроблено перший радянський стаціонарний професійний програмований калькулятор , який мав 23 регістри і дозволяв зберігати 186 команд. Було передбачено підключення периферійних пристроїв, зокрема зовнішнього пристрою «Электроника-72», в якому можна було зберігати 248 чисел або 3472 кроки програми. Створені програми можна було записувати на магнітні карти (5×9 см) і використовувати багаторазово.
1977 року розроблено перший радянський кишеньковий програмований мікрокалькулятор . 13 регістрів пам'яті, 60 кроків програми, зворотна бездужкова логіка обчислень. Калькулятор започаткував серію, яку продовжили настільні калькулятори , МК-64, MC-1103, сумісні за архітектурою та системою команд, з додатковими можливостями — могли працювати як засіб контролю виробничого процесу, для чого мали систему введення з вимірювачем напруги на 8 каналів та додатковий індикатор для відображення відхилення виміряного значення від заданого. Ці (й наступні МК-54, МК-52, МК-61… МК-161) калькулятори використовували той самий зворотний польський запис RPL. 1979 року Hewlett Packard випустила перший програмований калькулятор із алфавітно-цифровим індикатором — . Він мав можливість підключення додаткових модулів — RAM, ROM, пристроїв читання штрих-кодів, касет із магнітною стрічкою, гнучких дисків, принтерів, роз'ємів RS-232, , HP-IB. 1980 року з'явився Б3-34 — суттєво допрацьований варіант Б3-21, родоначальник наймасовішої серії радянських і російських програмованих калькуляторів так званого «розширюваного ряду». Практично вся література щодо програмованих калькуляторів, серії статей у журналах «Наука и жизнь» та «Техника – молодежи», довідники з розрахунків на мікрокалькуляторах, які виходили СРСР у 1980-ті роки, орієнтувалися на систему команд цього калькулятора. Більшість моделей радянських програмованих калькуляторів були або його повними функціональними аналогами (, ), або розширеннями (, МК-52, МС-1104). 1985 року в СРСР з'явилися і МК-52 — розширені версії сімейства Б3-34, в яких збільшено обсяг програмної пам'яті, додано один регістр та кілька нових функцій. За винятком кількох недокументованих функцій, збережено сумісність із Б3-34. Також, у МК-52 з'явилася можливість збереження програми у вбудованій ППЗП та можливість підключення зовнішньої пам'яті — сховища бібліотеки програм. 1985 року з'явився перший програмований калькулятор із графічним дисплеєм .
Режими роботи Щоб забезпечити роботу з програмами, програмований калькулятор, окрім звичайного режиму ручних обчислень (того режиму, в якому постійно працюють звичайні калькулятори), має підтримувати ще, принаймні, два режими роботи: режим програмування та режим виконання програми.
У режимі програмування натискання клавіш приводять не до виконання обчислень, а до внесення в програмну пам'ять калькулятора команд (операторів) програми. Залежно від моделі, калькулятор може підтримувати різні способи перегляду та редагування програми. У найпростіших моделях перегляду та редагування не передбачено, і виправлення програми здійснюється введенням її замість наявної. Режим виконання програми оператор вмикає командою запуску програми. У цьому режимі калькулятор автоматично виконує задану програму над даними, введеними раніше або тими, що вводяться в міру виконання програми. Вихід із режиму виконання відбувається або примусово, за командою оператора (таке переривання зазвичай є аварійним), або після досягнення в програмі команди завершення чи призупинення виконання.
Додатково програмований калькулятор може підтримувати режим покрокового виконання програми (він може бути суміщеним зі звичайним режимом ручних обчислень). У такому режимі калькулятор після натискання певної клавіші на клавіатурі виконує рівно одну, поточну команду програми і переходить у ручний режим. Покрокове виконання призначене для налагодження програм: після виконання чергової операції або кількох операцій оператор має можливість проаналізувати стан калькулятора та переконатися, що виконання програми відбувається саме так, як планувалося, а в разі виявлення помилок може усунути їх, увівши вручну правильні дані, та продовжити перевірку, щоб виявити всі можливі несправності та згодом виправити їх.
Способи програмування Відомо три принципово різних способи програмування калькуляторів: символьно-кодова машинна мова, AER (Algebraic Expression Reserve) та мова високого рівня.
Символьно-кодова мова Програма є, по суті, записаною за допомогою кодів послідовністю натискань на клавіші калькулятора (аналог комп'ютерного макроса). Будь-яка клавіша або допустима комбінація клавіш має код. Програма записується у програмну пам'ять калькулятора в режимі програмування. Оператор вводить її, натискаючи клавіші, при цьому в пам'ять записуються відповідні коди.