НЕКОММЕРЧЕСКАЯ КОРПОРАТИВНАЯ ОРГАНИЗАЦИЯ
АССОЦИАЦИЯ ПЕДАГОГИЧЕСКИХ РАБОТНИКОВ МОСКОВСКОЙ ОБЛАСТИ

«ПРЕПОДАВАТЕЛИ ИНФОРМАТИКИ ПОДМОСКОВЬЯ»

Ул. Гагарина, д.42, г.Королев, М.О., 141070

ИНН/КПП 5018179774/501801001, ОГРН 1155000002750

Тел./факс 8-495-516-99-29

e-mail: api_korolev@ut-mo.ru

Курбасова Валентина Александровна

Разработка  Hackathon«Калькулятор»

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

У каждой команды есть возможность пользоваться сетью Интернет для поиска необходимой информации.

Написать программу на языке программирования Паскаль (Pascal)или Python, которая

  1. принимает два числа в любой из четырех систем счисления (2-й, 8-й, 10-й или 16-й),
  2. переводит их в остальные системы счисления,
  3. выполняет над числами указанную арифметическую операцию (+, -, *, /),
  4. выводит результат во всех четырех системах счисления.

Для упрощения программа будет рассчитана на работу с целыми положительными числами.

Ввод данных пользователем

  1. Система счисления: 2, 8, 10, 16.
  2. Первое число: от 0 до 32767.
  3. Второе число: от 0 до 32767.
  4. Операция: +, -, *, / (выполняется только деление нацело).

Вывод данных на экран

2

8

10

16

1-е число

1-е число

1-е число

1-е число

2-е число

2-е число

2-е число

2-е число

результат

результат

результат

результат

Этапы написания программы

  1. Перевод числа, заданного в десятичной системе счисления, во все остальные системы счисления. Организация вывода результата на экран.
  2. Перевод числа, заданного в любой системе счисления, во все остальные системы счисления.
  3. Перевод двух чисел в десятичную систему счисления (если требуется). Выполнение заданной арифметической операции. Перевод исходных чисел и результата во все остальные системы счисления. Организация вывода результата на экран.
  4. Обработка корректности ввода. Управляемый выход из программы.
  5. (дополнительно) Операции с отрицательными и дробными числами, оформление вывода с помощью модуля Crt.

Iэтап.

Перевод числа, заданного в десятичной системе счисления,

во все остальные системы счисления

Алгоритм основной ветки программы

1. Записать в переменную десятичное число.

2. Вызвать функцию перевода числа в двоичную систему счисления. Результат

присвоить переменной.

3. Вызвать функцию перевода числа в восьмеричную систему счисления. Результат присвоить переменной.

4. Вызвать функцию перевода числа в шестнадцатеричную систему счисления.

Результат присвоить переменной.

5. Вывод переменных на экран в табличной форме.

Алгоритм основной ветки программы

1. Узнать систему счисления.

2. Дважды вызвать процедуру, которая заполняет переменные значениями. В процедуру

передавать переменные, а не значения (использование var).

3. Узнать требуемую математическую операцию.

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

5. Перевести результат в остальные системы счисления.

6. Организовать вывод данных на экран.

IIэтап.

Перевод числа, заданного в любой системе счисления, во все

остальные системы счисления

Алгоритм основной ветки программы

1. В зависимости от указанной системы счисления записать в определенную

переменную число.

2. Если число двоичное, то перевести его в десятичную систему счисления. Полученное

десятичное число перевести в восьмеричную и шестнадцатеричную системы

счисления.

3. Если число восьмеричное, то перевести его в десятичную систему счисления.

Полученное десятичное число перевести в двоичную и шестнадцатеричную системы

счисления.

4. Если число десятичное, то перевести его в двоичную, восьмеричную и

шестнадцатеричную системы счисления.

5. Если число шестнадцатеричное, то перевести его в десятичную систему счисления.

Полученное десятичное число перевести в восьмеричную и шестнадцатеричную

системы счисления.

6. Вывести данные на экран.

Алгоритмы перевода числа в иные системы счисления

Перевод восьмеричного числа в десятичное почти аналогичен переводу двоичного.

 

IIIэтап.

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

чисел и результата во все остальные системы счисления

Алгоритм основной ветки программы

1. Узнать систему счисления.

2. Дважды вызвать процедуру, которая заполняет переменные значениями. В процедуру

передавать переменные, а не значения (использование var).

3. Узнать требуемую математическую операцию.

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

5. Перевести результат в остальные системы счисления.

6. Организовать вывод данных на экран.

 

 

IVэтап.

Обработка корректности ввода. Управляемый выход из программы

Обычно в программировании при обработке корректности ввода используют

синтаксические конструкции, обеспечивающие так называемую обработку исключений (т.е. исключительных, их ряда вон выходящих ситуаций). Если вы не знаете, как это делается и возможно ли это в языке программирования Паскаль, то можно пойти другим путем. Все, что вводит пользователь, следует «воспринимать» как строку. Это позволит избежать аварийного завершения программы, когда данным численного типа присваиваются нечисловые символы (пользователь осуществляет некорректный ввод). Однако следует помнить, что при этом объем кода существенно возрастает.

Проверка корректности ввода чисел существенно сложнее, т.к. надо учитывать предел допустимых значений и используемые знаки. Опустим ее из-за сложности.

Проверка знака операции приводилась на третьем этапе. Остается лишь в последнюю ветку elseдобавить метку перехода на начало ввода операции при некорректном вводе.

Для управляемого выхода из программы можно организовать переход на ее начало

при нажатии клавиши. Проще всего это сделать с помощью оператора goto. Следует иметь в виду, что от gotoможно легко избавиться, например, с помощью цикла while.