Экспериментальная работа по информатике
Разработать обучающую программу, дающую представление о различных системах счисления, выполняющую функции перевода из одной системы счисления в другую и осуществляющую арифметические операция над числами, представленными в разных системах.
Задачи:
✓ Осуществление перевода целых и десятичных чисел из одной системы счисления в другую (2,3,4,5,6,7,8,9,10,11,12,13,14,15,16-ричные);
✓ Выполнение арифметических действий над числами в любых комбинациях систем счисления;
✓ Вывод решения.
Актуальность и новизна:
В программе удалось реализовать функции, которых нет в других типовых калькуляторах: так например даже в самом знаменитом калькуляторе от фирмы Microsoft, которым все пользуются, нет функции по переводу десятичной части числа. А так же Стандартный калькулятор позволяет выполнять действия над числами лишь в двоичной, восьмеричной и шестнадцатеричной системах счисления.
В программе реализована уникальная функция: подробный вывод всех расчётов над числами, так называемое решение. Эта функция пригодится для использования калькулятора в учебных целях, так например, для сравнения результатов перевода сделанных учеником на бумаге с полученными результатами в программе, при этом, если учеником допущена ошибка, то её поиск не составит труда при выводе полного решения.
Среда реализация:
Для осуществления поставленной задачи был выбран язык программирования Visual Basic 6. 0. Многие программы из школьного курса по программированию невелики по размерам, поэтому написать такие программы можно без процедур. Иное дело – создание программ в сотни, тысячи строк. Писать такие программы как нечто единое целое, без расчленения на относительно самостоятельные фрагменты (без структурирования) просто невозможно. Языки, в которых предусмотрены такие механизмы, называются процедурно-ориентированными. К их числу принадлежит и Visual Basic. Эта возможность была по достоинству оценена при разработке программы.
Историческая справка
Счёты использовались в Древнем Египте и Месопотамии, откуда они пришли в Древнюю Грецию и Рим.
Счёты – это простой инструмент, позволяющий осуществлять базовые арифметические операции. Они сделаны из прямоугольной рамки-каркаса, на которой закреплены металлические стержни с подвижными шариками-костяшками.
Положение каждого стержня соответствуют десятичной единице: собственно единицам, десяткам, сотням и т. д.
Первый примитивный механический калькулятор появился лишь в XVII веке, который в последствии назвали «паскалина» по имени ученого Блеза Паскаля.
Размер «паскалины» соответствовал обувной коробке. Она была наполнена зубчатыми колесами, соединяющимися между собой. Вращение колес позволяло осуществлять счетные операции, которые ограничивались сложением и вычитанием.
Каждое колесо при вращении вызывало вращение следующего колеса — оно продвигалось на один шаг.
Колеса представляли собой систему десятичного счисления, соответственно в каждом колесе было 10 шагов (от 0 до 9). Всего колес было 8 (6 для целых цифр и 2 — для десятичных).
В конце XVII века философ и математик Готфрид Лейбниц занялся изучением различных счетных машин, которые были созданы до этого времени, и постарался усовершенствовать их. Плодом его исследований стало создание механического калькулятора, который, кроме сложения и вычитания, также мог умножать и делить.
Этот калькулятор получил название арифмометра, и он стал основой всех счетных устройств, которые использовались вплоть до появления современных электронных калькуляторов.
Англичанин Чарльз Бэббидж сконструировал в первой половине XIX века машину, которую назвал «машиной разниц». На ней можно было осуществлять сложные расчёты с многочленами. Несколько лет спустя, он же сконструировал другую машину — «аналитическую», — по принципу действия очень похожую на современный компьютер. К сожалению, уровень развития техники и механики того времени не позволял осуществить все замыслы Бэббиджа.
В конце XIX века Герман Холлерит, работавший в Федеральном бюро переписи населения, в числе прочих сотрудников этого учреждения должен был считать население Соединенных Штатов Америки и классифицировать его по возрасту, полу, семейному положению и т. д. Холлерит изобрел устройство, основанное на использовании перфорированных карточек, которое позволяло ему обрабатывать не менее 50 карточек в минуту. Такая скорость позволила ему выполнить работу, на которую по прежним меркам, требовалось около шести лет, всего за два с половиной года!
Испанский инженер Леонардо Торрес Кеведо, сконструировал несколько счетных машин. Эти устройства классифицировались в две группы:
1) аналоговые устройства, которые были способны решать сложные уравнения;
2) цифровые устройства, снабженные электромеханической памятью, в которой накапливались цифры, в конце заданной операции автоматически выдавался результат.
Учёным потребовалось ещё несколько десятков лет, чтобы создать первый примитивный компьютер, и в 1938 году немецкий инженер Конрад Зусе разработал цифровой бинарный компьютер, основанный на бинарной системе, т. е. с использованием только двух цифр – 0 и 1.
С тех пор как человечество придумало знаки для обозначения чисел, мы каждый день пользуемся этим удивительным изобретением. Покупая продукты, мы считаем сдачу, спросив время, мы получаем ответ в виде нескольких цифр, в школе нам ставят оценки. Всё это казалось бы одни и те же цифры, но оказывается, что представлены они в разных системах счисления. В Древнем Вавилоне была распространена шестидесятеричная система, следы которой сохранились до сих пор в делении часа на 60 минут и минуты на 60 секунд. В школе знания оцениваются в пятеричной системе. Наиболее употребительная система счисления — десятичная, с цифрами 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Происхождение десятичной системы счисления связано с пальцевым счетом. В ЭВМ часто применяется двоичная система счисления, в которой каждое число выражается при помощи двух цифр 0 и 1.
Системы счисления
Системой счисления называют систему приемов и правил, позволяющих устанавливать взаимно-однозначное соответствие между любым числом и его представлением в виде совокупности символов. Множество символов, используемых для такого представления, называют цифрами. Различают два вида систем счисления: позиционные и непозиционные.
➢ В позиционных системах счисления одна и та же цифра может принимать разные значения, в зависимости от номера разряда этой цифры в совокупности чисел, представляющих данное число.
➢ В непозиционных системах счисления число определяется как некоторая функция численных значений совокупности цифр, представляющих данное число. Цифры в непозиционных системах счисления соответствуют некоторым фиксированным значениям. Пример такой системы – римская система счисления.
Каждая система счисления использует конкретный алфавит, с помощью которого она представляет числа в виде определенной совокупности символов, а именно цифр: 0,1,2,3,4,5,6,7,8,9 и букв латинского алфавита: A,B,C,D,,Z. Самыми распространенными системами счисления являются:
✓ двоичная (0,1),
✓ шестнадцатеричная (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F),
✓ восьмеричная (0,1,2,3,4,5,6,7)
✓ десятичная (0,1,2,3,4,5,6,7,8,9), которой мы пользуемся каждый день.
Двоичная система счисления очень широко используется в различного вида ЭВМ и подобных им машинах, чтобы, например, определять, идет ли электрический сигнал (1) или не идет (0). Шестнадцатеричная система счисления очень широко используется программистами, так как из нее очень легко переводить числа в двоичную систему. Восьмеричная система так же используется в основном программистами и операторами ЭВМ, так как она, также, удобна для перевода в двоичную системe счисления, хотя и используется гораздо реже.
Способы перевода чисел из одних систем счисления в другие.
Определим основные правила перевода чисел из одной системы счисления в другую.
1. При переводе числа произвольной системы счисления в десятичную нужно воспользоваться всего лишь одной формулой:
N = anpn+ an-1pn-1+ + a1p1+ a0p0+ a-1p-1+ a-2p-2++ a-kp-k[Формула №1]
Где p – основание системы счисления,
Коэффициенты a – цифры, обозначающие числа, которые меньше p.
Последовательность с an по a0– запись целой части числа, а последовательность с a-1 по a-k – запись дробной части.
2. При переводе в систему счисления отличную от десятичной нужно следовать следующим правилам:
[Алгоритм №1]
❖ Последовательно делим данное нам число и получаемое целое частное на основание системы счисления в которую мы хотим перевести, до тех пор пока частное не станет равным 0.
❖ Полученные остатки выразить алфавитом (набор символов, которые образуют числа нужной нам системы счисления).
❖ Составить число в новой системе счисления, начиная с последнего остатка.
3. При переводе дробных чисел из одной системы счисления в другую нужно следовать следующим правилам:
[Алгоритм №2]
❖ Последовательно умножаем дробную часть данного числа на основание нужной нам системы счисления до тех пор пока дробная часть не станет равной 0 (или до нужной степени точности, так как не всегда частное может стать равным 0). При получении целой части ее отбрасываем.
❖ Полученные целые части произведений являются числами новой системы счисления.
❖ Составить дробную часть числа в новой системе, начиная с целой части первого произведения.
Вот кратко и все, что можно сказать о переводе чисел из одной системы счисления в другую.
Мультисистемный калькулятор разделён на две самостоятельные части: переводчик, который позволяет перевести одно число из какой-либо системы в другую, и непосредственно сам калькулятор, который способен производить операции сложения, вычитания, умножения и деления чисел разных систем счисления и представить результат в любой из них.
Для реализации программы был составлен следующий алгоритм работы:
➢ Для переводчика
1. Если исходное число не в десятичной системе счисления то, воспользовавшись формулой 1, переводим его в десятичную, иначе сразу переход к пункту два.
2. Перевод в заданную систему счисления (Алгоритм 1), если задана не десятичная.
➢ Для калькулятора
1. Перевод первого и второго числа в десятичную систему счисления, если они заданы не в десятичной. Use [Формула №1]
2. Выполнение арифметической операции: сложение, вычитание, умножение или деление.
3. Если вывод данных требуется в десятичной – оставляем число как есть, если задана другая система счисление – осуществляется перевод. Use [Алгоритм №1 и №2]
На основе этих алгоритмов разработаны две главные функции:
▪ Function from_N_to_10_system – для перевода из n-ой системы счисления в десятичную.
▪ Function from_10_to_N_system – для перевода из десятичной системы счисления в n-ую.
В каждую из функций встроен механизм по выводу действий на экран.
Примеры
Теперь посмотрим программу в работе.
Переведём число 18,678 из десятичной в пятнадцатеричную систему счисления. Таковым числом является 13. A283B3B3B3B 3B – в периоде В программе удалось осуществить подфункцию распознавания периодичности, вы только что могли увидеть эту функцию в работе (13. A28(3B)). Функция по умолчанию включена, но её можно легко выключить, нажав Режим – Настройки – Периодичность. Все действия, которые выполнял компьютер, приведены в окне «Решение». Для большей наглядности компьютер целую запись числа переводит отдельно от десятичной. При переводе этого числа 18,67810 использовалась лишь одна функция и лишь один раз (from_10_to_N_system), так как исходное число было в десятичной системе. Попробуем задать это же число только в двенадцатеричной системе счисления и опять его переведём
Получим 15. 8472C2C2C2BC7D, так как число при переводе не даёт точного результата и не имеет периодичности, как в прошлом примере, в правом окошке появляется символ (() приблизительно. При переводе программе пришлось выполнять уже две функции: по переводу числа в десятичную систему и перевод числа из десятичной системе в пятнадцатеричную. Все действия компьютер разбивает на отдельные шаги и выполняет их по порядку, соответственно всё заносится в окно «Решение».
Теперь рассмотрим Калькулятор, он интереснее и сложнее Переводчика, так как может складывать, вычитать, умножать и делить числа.
Самый простой пример 210 * 210 = 410, решение такой задачи по силам и первокласснику, калькулятор справляется с ней также с успехом.
Сложим 10011. 101012 + 173. 16038= ?16. Этот пример уже потребовал от компьютера решение разбить на 4 этапа. Здесь и выражается преимущество использования функций, два раза пришлось использовать from_N_to_10_system для того, чтобы перевести первое и второе число, и перевод из десятичной в шестнадцатеричную систему.
Заключение
Все поставленные цели, а также задачи в начале данной работы были достигнуты. По окончанию работы, в итоге, получен готовый программный продукт способный работать под управлением операционной системой семейства Microsoft.
Не менее важными результатом, но уже для меня, является совершенствование навыков программирования на Visual Basic – в процессе работы над проектом необходимо было придумывать новые механизмы, функции, с которыми до этого не сталкивался. Зная теперь полностью механизм перевода чисел из различных систем счисления можно смело заявить, что бояться здесь нечего.
Комментарии