Арифметические действия в позиционных системах счисления при помощи компьютерных программ

XXIII Международный конкурс научно-исследовательских и творческих работ учащихся
Старт в науке

Арифметические действия в позиционных системах счисления при помощи компьютерных программ

Белогуров П.С. 1Кривонос А.С. 1
1ГБОУ "СПЕЦИАЛИЗИРОВАННАЯ ШКОЛА № 35 Г.О. ДОНЕЦК"
Кузнецова И.В. 1
1ГБОУ "СПЕЦИАЛИЗИРОВАННАЯ ШКОЛА № 35 Г.О. ДОНЕЦК"
Автор работы награжден дипломом победителя II степени
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

Введение

На уроках математики мы узнали, что, кроме десятичной, существуют и другие системы счисления, а на уроках информатики мы познакомились с ними подробней. Из школьного курса нам знакомы двоичная, десятичная, восьмеричная и шестнадцатеричная системы счисления.

Актуальность данной работы заключается в том, что знание основных систем счисления в информатике, обеспечивает понимание способов кодирования информации, принципов сжатия и шифрования информации. Мы живем в век компьютерных технологий, а в электронных вычислительных машинах используется двоичная система счисления и вычисления в ней. При разработке программного обеспечения для компьютеров, иногда возникает необходимость сократить количество знаков в записи чисел, тогда используются восьмеричная и шестнадцатеричная системы счисления.

При выполнении действий в двоичной системе счисления на уроках информатики, у нас возник вопрос: «Как можно автоматически проверить правильность их выполнения?». И тут пришла мысль, а можно ли с помощью компьютера сделать такую программу, которая при вводе значений и указании системы счисления, выдавала бы ответ. В нынешний высокотехнологичный век компьютер помогает нам при решении многих задач, может помочь и в этом. Успех решения задачи на компьютере зависит от правильности и точности разработки алгоритма. А это уже задача человека. Тогда мы начали искать ответ на этот вопрос, изучив множество интернет-ресурсов. Мы поняли, что таких вариантов программ может быть несколько.

Проблема. Создать программу для автоматического выполнения арифметических действий в любых позиционных системах счисления.

Объект исследования: выполнения арифметических действий в любых позиционных системах счисления при помощи компьютера.

Предмет исследования: компьютерная программа MS Excel, язык программирования Python.

Гипотеза. Компьютерные программы для выполнения арифметических действий в любых позиционных системах счисления позволяют автоматизировать процесс вычисления и на одинаковых наборах данных дают один и тот же результат.

Цель: изучить и разработать программы для выполнения арифметических действий в любых позиционных системах счисления.

Поставленная цель исследования предполагает решение ряда задач:

  • исследовать историю возникновения счёта, появление цифр и систем счисления;

  • изучить правила арифметических действий в различных позиционных системах счисления;

  • разработать вычислительные программы для выполнения арифметических действий в любых позиционных системах счисления;

  • провести сравнительный анализ работы программ для выполнения арифметических действий в любых позиционных системах счисления в MS Excel и на языке программирования Python.

Методы исследования:

  • теоретический - анализ статей, обзоров информационных ресурсов Интернет по обозначенной теме;

  • эмпирический - проведение эксперимента по созданию программ для автоматического выполнения арифметических действий.

Новизна исследования заключается в экспериментальной проверке компьютерных вычислений с помощью различных программ, в том числе и на языке программирования. В своей работе мы затрагиваем вопросы выполнения арифметических действий в любых позиционных системах счисления при помощи табличного процессора MS Excel, на языке программирования Python.

Практическая значимость состоит в том, что созданные для проведения эксперимента программы можно будет использовать и в дальнейшем для выполнения арифметических действий в любых позиционных системах счисления.

Раздел 1. Теоретическая часть

    1. История возникновения счёта, появление цифр и систем счисления

Система счисления – символический метод записи чисел с помощью письменных знаков. Система счисления даёт представление множества чисел, отражает структуру числа.

Системы счисления подразделяются на позиционные и непозиционные.

В непозиционных системах счисления величина, которую образует цифра, не зависит от положения в числе. При этом система может накладывать ограничения на положения цифр, например, чтобы они были расположены в порядке убывания.

Примерами таких систем являются: славянская, древнегреческая римская системы счисления.

     

Рис. 1. Славянская, древнегреческая, римская системы счисления

В позиционных системах счисления одна и та же цифра находится в зависимости от того разряда, где она расположена. Изобретение позиционной нумерации, основанной на поместном значении цифр, приписывается шумерам и вавилонянам. Развита была такая нумерация индусами и имела неоценимые последствия в истории человеческой цивилизации.

Наименьшее число, которое можно взять за основание системы счисления – это 2. Двоичная система счисления издавна была предметом пристального внимания многих ученых. Первый кто заговорил о двоичном кодировании, был Лейбниц Готфрид Вильгельм. Он написал трактат об использовании двоичной системы счисления в вычислительных машинах. В рукописи на латинском языке, написанной в марте 1679 года, Лейбниц разъясняет, как выполнять вычисление в двоичной системе, в частности умножение, а позже в общих чертах разрабатывает проект вычислительной машины, работающей в двоичной системе счисления.

Изобретение десятичной системы приписывают древним арабам, развитие индусам. Десять пальцев рук – вот первоначальный аппарат для счёта, которым пользовался человек, начиная с доисторических времён. По пальцам удобно считать от одного до десяти.

Появление её в Европе датируется примерно 1200 годом нашей эры. Десятичными цифрами выражается время, номера домов, телефоны, цены, показания приборов и т.д. На них базируется метрическая система мер.

Происхождение двенадцатеричной системы счисления связано со счётом на пальцах, а именно, так как четыре пальца руки (кроме большого) имеют в совокупности 12 фаланг, то по этим фалангам, перебирая их по очереди большим пальцем, и ведут счёт от 1 до 12, принимая за единицу следующего разряда и т.д. Многие предметы (ножи, вилки, тарелки, носовые платки т. д.) очень часто считают именно дюжинами, а не десятками. Так же сервиз бывает, как правило, на 12 или на 6 человек и значительно реже на 10 или 5.

Двенадцать – первое число с многими делителями, 12 месяцев в году, 12 знаков Зодиака, 12 часов на циферблате, 12 частей храма Соломона, 12 5: основа 60-ричной системы счисления.

В древнем Вавилоне, культура которого, в том числе и математическая, была довольно высока, существовала весьма сложная шестидесятеричная система. Эта система в какой-то мере сохранилась и до наших дней (например, в делении часа на 60 минут, а минуты – на 60 секунд и в аналогичной системе измерения углов: градус равен 60 минутам, а 1 минута равна 60секундам). В целом, однако, эта система, требующая шестидесяти различных «цифр», довольно громоздка и менее удобна, чем десятичная.

Далее речь пойдет только о позиционных системах счисления.

    1. Сложение и вычитание чисел в системе счисления с основанием q

Рассмотрим сложение.

Чтобы в системе счисления с основанием q получить сумму S двух чисел A и B, надо просуммировать образующие их цифры по разрядам справа налево:

  1. если ai + bi < q, то si = ai + bi, старший (i + 1)-й разряд не изменяется

  2. если ai + b≥ q, то si = ai + bi – q, старший (i + 1)-й разряд увеличивается на 1

Рассмотрим правило сложения на примере в двоичной системе счисления

Это мы рассмотрели сложение в двоичной системе счисления, а теперь сложим два числа в троичной, восьмеричной и шестнадцатеричной системе счисления.

1 + 2 = 3 ≥ 3 записываем 3 – 3 = 0 под 1-м разрядом,
а 2-й разряд увеличиваем на 1

1 + 2 = 3 ≥ 3 записываем 3 – 3 = 0 под 2-м разрядом,
а 3-й разряд увеличиваем на 1

1 + 1 + 2 = 4 ≥ 3 записываем 4 – 3 = 1 под 3-м разрядом,
а 4-й разряд увеличиваем на 1

1 + 1 = 2 < 3 записываем 2 под 4-м разрядом

Сложим в восьмеричной и шестнадцатеричной системе счисления.

Теперь разберём вычитание в системах счисления с основанием q.

Чтобы в системе счисления с основанием получить разность R двух чисел A и B, надо вычислить разности образующих их цифр по разрядам i справа налево:

— если ai ≥ bi, то ri = ai – bi, старший (i + 1)-й разряд не изменяется

— если i < , то ri = q + ai b, старший (i + 1)-й разряд уменьшается на 1

Рассмотрим правило вычитания в двоичной системе счисления на примере.

Рассмотрим правило вычитания в троичной системе счисления, где q=3

  1. 1 ≥ 0 записываем 1 – 0 = 1 под 1-м разрядом

  2. 0 < 1 записываем 3 + 0 – 1 = 2 под 2-м разрядом,
    делая заем в 3-м разряде

  3. 0 < 2 записываем 3 + 0 – 2 = 1 под 3-м разрядом,
    делая заем в 4-м разряде

  4. 0 = 0 записываем 0 под 4-м разрядом

  5. 0 < 1 записываем 3 + 0 – 1 = 2 под 5-м разрядом,
    делая заем в 6-м разряде

В восьмеричной и шестнадцатеричной системе выполним вычитание.

    1. Умножение и деление чисел в системе счисления с основанием q

Чтобы в системе счисления q получить произведение M многозначного числа A и однозначного числа b, надо вычислить произведения b и цифр числа A по разрядам i:

  1. если ai · b <q, то mi = ai · b, старший (i + 1)-й разряд не изменяется

  2. если ai · b ≥ q, то mi = ai · b mod q, старший (i + 1)-й разряд увеличивается на ai · b div q

Рассмотрим примеры:

2 · 2 = 4 ≥ 3 записываем 4 mod 3 = 1 под 1-м разрядом,
2-й разряд увеличиваем на 4 div 3 = 1

1 · 2 + 1 = 3 ≥ 3 записываем 3 mod 3 = 0 под 2-м разрядом,
3-й разряд увеличиваем на 3 div 3 = 1

2 · 2 + 1 = 3 ≥ 3 записываем 5 mod 3 = 2 под 3-м разрядом,
4-й разряд увеличиваем на 5 div 3 = 1

2 · 1 + 1 = 3 ≥ 3 записываем 3 mod 3 = 0 под 4-м разрядом
и в 5-й разряд записываем 3 div 3 = 1

По этому алгоритму выполним умножение в других системах счисления.

Умножение многозначного числа на многозначное число выполняется столбиком. При этом два множителя располагаются один под другим так, чтобы разряды чисел совпадали (находились в одном столбце). Посмотрим пример в двоичной системе счисления.

Деление нельзя свести к поразрядным операциям над цифрами, составляющими число. Деление чисел в системе счисления с произвольным основанием q выполняется так же, как и в десятичной системе счисления. А значит, нам понадобятся правила умножения и вычитания чисел в системе счисления с основанием q. Давайте разберем деление в двоичной системе.

И попробуем поделить в восьмеричной системе счисления.

В числе 2338 поместится 2 ∙ 738 = 1668

В числе 4568 поместится 5 ∙ 738 = 4478

В числе 738 поместится 1 ∙ 738 = 738

Раздел 2. Практическая часть

2.1. Выполнение арифметических операций в MS Excel

Вначале для выполнения арифметических действий в любых позиционных системах счисления мы решили взять программу MS Excel.

Microsoft Excel — программа для работы с электронными таблицами.

В электронной таблице пользователю предоставляется возможность ввести любые числа для выполнения арифметических операций. Элементы управления из меню Разработчик позволяют добавить список с арифметическими операциями и выбором системы счисления. В ЭТ есть возможность выбора 2-ой, 10-ой, 8-ой и 16-ой систем.

Ниже представлена технология выполнения вычислений в MS Excel, которая основана на переводе чисел из указанной системы счисления в 10-ю, вычислений в десятичной системе и перевода ответа в указанную систему.

1. В ячейки В4:F4 введем соответственно тексты

«Число 1», «Операция», «Число 2», «Система счисления», «Результат».

2. В ячейки В5:E5 введем соответствующие значения.

3. Выбор операции в ячейке С5 свяжем с диапазоном L3:L6, а выбор системы счисления с диапазоном I3:I6.

4. В вспомогательные ячейки F9:F12 введём формулы, позволяющие выполнить операции +,-,*,/ в 2-ой, 8-ой и 16-ой системах счисления, путем перевода чисел в 10-ю систему счисления:

F9: =ЕСЛИ(E7=1;B5+D5;ЕСЛИ(E7=2;ДВ.В.ДЕС(B5)+ДВ.В.ДЕС(D5); ЕСЛИ(E7=3;ВОСЬМ.В.ДЕС(B5)+ВОСЬМ.В.ДЕС(D5);ШЕСТН.В.ДЕС(B5)+ШЕСТН.В.ДЕС(D5))))

F10: =ЕСЛИ(E7=1;B5-D5;ЕСЛИ(E7=2;ДВ.В.ДЕС(B5)-ДВ.В.ДЕС(D5); ЕСЛИ(E7=3;ВОСЬМ.В.ДЕС(B5)-ВОСЬМ.В.ДЕС(D5);ШЕСТН.В.ДЕС(B5)-ШЕСТН.В.ДЕС(D5))))

F11: =ЕСЛИ(E7=1;B5*D5;ЕСЛИ(E7=2;ДВ.В.ДЕС(B5)*ДВ.В.ДЕС(D5); ЕСЛИ(E7=3;ВОСЬМ.В.ДЕС(B5)*ВОСЬМ.В.ДЕС(D5);ШЕСТН.В.ДЕС(B5)*ШЕСТН.В.ДЕС(D5))))

F12: =ЕСЛИ(E7=1;B5/D5;ЕСЛИ(E7=2;ДВ.В.ДЕС(B5)/ДВ.В.ДЕС(D5); ЕСЛИ(E7=3;ВОСЬМ.В.ДЕС(B5)/ВОСЬМ.В.ДЕС(D5);ШЕСТН.В.ДЕС(B5)/ШЕСТН.В.ДЕС(D5))))

4. В вспомогательные ячейки G9:G12 введём формулы, позволяющие перевести результат в 2-ю, 8-ю и 16-ю системы счисления, из 10-й:

G9: =ЕСЛИ($E$7=1;F9;ЕСЛИ($E$7=2;ДЕС.В.ДВ(F9);ЕСЛИ($E$7=3; ДЕС.В.ВОСЬМ(F9);ДЕС.В.ШЕСТН(F9))))

G10: =ЕСЛИ($E$7=1;F10;ЕСЛИ($E$7=2;ДЕС.В.ДВ(F10);ЕСЛИ($E$7=3; ДЕС.В.ВОСЬМ(F10);ДЕС.В.ШЕСТН(F10))))

G11: =ЕСЛИ($E$7=1;F11;ЕСЛИ($E$7=2;ДЕС.В.ДВ(F11);ЕСЛИ($E$7=3; ДЕС.В.ВОСЬМ(F11);ДЕС.В.ШЕСТН(F11))))

G12: =ЕСЛИ($E$7=1;F12;ЕСЛИ($E$7=2;ДЕС.В.ДВ(F12);ЕСЛИ($E$7=3; ДЕС.В.ВОСЬМ(F12);ДЕС.В.ШЕСТН(F12))))

5. В ячейке F5 введем формулу =ЕСЛИ(C7=1;G9;ЕСЛИ(C7=2;G10; ЕСЛИ(C7=3;G11;G12))) для выбора соответствующей арифметической операции.

6. На экране мы видим такой результат. Все промежуточные вычисления и формулы скрыты.

Рис. 2. Окно работы программы вMS Excel

2.2. Выполнение арифметических операций на языке Python

Python – это мощный профессиональный язык программирования, который благодаря своему простому синтаксису позволяет обучающимся быстро освоить базовые алгоритмические структуры и акцентировать основное внимание на оттачивании навыков программирования [6, с. 96]. Он преднамеренно оптимизирован для ускорения разработки – его встроенный инструментальный набор предоставляет программистам возможность разрабатывать программы за гораздо меньшее время, чем то, которое пришлось бы потратить, применяя ряд других инструментов [5, с. 43].

Изучение Python п в старших классах также обусловлено интересом к нему на более высокой ступени обучения – в российских и зарубежных университетах, популярностью в индустрии информационных технологий, о чем свидетельствует и достаточное количество онлайн-курсов, предлагающих научить программировать на Python и новичка, и специалиста [8, с. 48]

Для реализации программы выполнения арифметических действий в любых позиционных системах счисления мы решили использовать язык программирования Python.

Для этого вначале была составлена схема решения:

Рис. 3. Блоки программы

Блок-схема программы имеет вид:

Рис. 4. Блок-схема программы

Рис. 5. Блок-схема подпрограммы convert_to

На языке программирования Python, программа для выполнения арифметических действий в любых системах счисления будет иметь следующий вид:

def convert_to(num, base, upper=False):

digits = '0123456789abcdefghijklmnopqrstuvwxyz'

if base <= len(digits):

result = ''

while num > 0:

result = digits[num % base] + result

num = num//base

return result.upper() if upper else result

else:

return None

n = int(input('В какой системе счисления работаем? 2<=n<=36, n = '))

a = input('Введите первое число a = ')

c = input('Введите выполняемую операцию ')

b = input('Введите второе число b = ')

a1=int(a,n)

b1=int(b,n)

if c=='+':

c1=a1+b1

elif c=='-':

c1=a1-b1

elif c=='*':

c1=a1*b1

else:

c1=a1//b1

s1=convert_to(c1,n, True)

print(a,c,b,'=',s1)

2.3. Сравнительный анализ работы программ MS Excel и Python

Выполняя сравнительный анализ разработанных программ, можно сделать следующие выводы:

  • на одинаковых наборах данных программы выдают одинаковые результаты;

  • обе программы выдают информацию об ошибке, если введенные данные некорректны;

  • операция деление корректно выполняется только если первое число делится на второе без остатка;

  • программа в MS Excel позволяет выполнять действия только в стандартных системах счисления, а программа на языке программирования Python позволяет работать с любыми позиционными системами счисления.

Эти выводы говорят о преимуществе программного способа решения поставленной задачи.

Проверка работы обеих программ на разных примерах и сравнение результатов их работы приведено в Приложении.

Заключение

Практической значимостью даннойработы стало проведения эксперимента по разработке программы, которую можно будет использовать и в дальнейшем для выполнения арифметических действий в любых позиционных системах счисления.

В ходе выполнения исследовательской работы были изучены основные принципы работы с формулами в MS Excel программирования на языке программирования Питон при разработке программы для выполнения арифметических действий в любых позиционных системах счисления.

Подводя итоги исследования, можно сказать, что цель работы достигнута и получены следующие результаты:

  • исследована история возникновения счёта, появление цифр и систем счисления;

  • изучены правила арифметических действий в различных системах счисления;

  • разработаны вычислительные программы для выполнения арифметических действий в любых позиционных системах счисления на MS Excel и на языке программирования Python;

  • проведен сравнительный анализ и сформулированы выводы о работе программ для выполнения арифметических действий в любых позиционных системах счисления в MS Excel и на языке программирования Python.

Разработанные в MS Excel и Python программы можно использоваться на уроках по теме «Системы счисления» при выполнении операций в различных позиционных системах счисления и для проверки навыков выполнения таких операций, а также на кружке по информатике.

Список используемых источников и литературы

  1. Винер, Н. Я – математик / Н.Я. Винер. – Текст: электронный. –URL: http://www.ega-math.narod.ru/Wiener/ch01.htm

  2. Депман, И.Я. Мир чисел: рассказы о математике / И.Я. Депман. - Текст: электронный. - Мюнхен: Некоммерческое электронное издание, 2004. – 72 с. - URL: http://www.koob.ru/depman_i_ya/mir_chisel

  3. Ермилов, А. Математические представления у первобытных народов / А. Ермилов. – Текст: электронный // Философия концептуального плюрализма: официальный сайт. – 2023. – URL: http://nounivers.narod.ru/pub/ae_math.htm

  4. История математики с древнейших времен до начала ХIХ столетия / Под ред. А.П. Юшкевича. - В 3-х тт. Т.1. - Москва: Наука, 1970. - 496 с.

  5. Лутц, М. Изучаем Руthon / М. Лутц; пер. с англ. Ю. Н. Артеменко. - 5-е изд. – Санкт-Петербург: Диалектика, 2019. - 832 с.

  6. Маркелов, В. К.Инструментарий облачной среды Google Colaboratoty для обучения програм­мированию и подготовки к ЕГЭ по информатике / В.К. Маркелов, О.А. Завьялова // Инфор­матика в школе. - 2022. - № 6. - С. 68–80.

  7. Андреева, Е.В. Математические основы информатики: учебное пособие / Е. В. Андреева, Л. Л Босова, И. Н. Фалина – Москва: БИНОМ. Лаборатория знаний, 2008. - 328 с.

  8. Панова, И. В. Методические аспекты обучения программированию на языке Python в школьном курсе информатики / И.В. Панова, А.А. Коливнык // Информатика в школе. - 2020. - № 6. - С. 47-50.

  9. Фомин, С.В. Системы счисления / С.В. Фомин. – Москва: Наука, 1987. – 48 с. – (Популярные лекции по математике).

Приложение. Примеры работы программ в различных системах счисления

Рис.1.1. Решение задачи 1010102 / 1018 в MS Excel

Рис.1.2. Решение задачи 1010102 / 1018 в Python

Рис.1.3. Решение задачи 1248 – 218 в MS Excel

Рис.1.4. Решение задачи 1248 – 218 в Python

Рис.1.5. Решение задачи 102410 + 11910 в MS Excel

Рис.1.6. Решение задачи 102410 + 11910 в Python

Рис.1.7. Решение задачи 183916 * A16 в MS Excel

Рис.1.8. Решение задачи 183916 * A16 в Python

Рис.1.9. Решение задачи 1245 + 2415 в Python

Рис.1.10. Решение задачи DEG425 * 4JKN25 в Python

Просмотров работы: 48