В качестве наглядного примера приведём разработку проекта “Калькулятор для работы с системами счисления”.
Формальная модель
В проекте первоначально предусмотрена разработка обычного калькулятора: выполнение арифметических операций с двумя целыми числами (сложение, вычитание, умножение и деление) [4]; далее рассмотрен вариант перевода исходных данных и полученного результата в двоичную систему счисления с использованием функции bin().
Компьютерная модель
Создать программный код (скрипт) с комментариями и описанием следующих компонентов: для ввода и вывода информации создать компоненты Entry (текстовые окна), для добавления текста – компоненты Label (метки), для выполнения программы – командную кнопку Button [1, 2].
Программный код (виджет):
#Проектирование программ с графическим интерфейсом
#Graphical user interface – GUI
#Создать Приложение-Калькулятор с арифметическими операциями
#и переводом исходных данных и результата в двоичную систему счисления
#Создать Форму с компонентами (виджетами)
#Подключить графическую библиотеку Tkinter
from tkinter import *
import tkinter
top=tkinter.Tk()
#Функция пользователя для командной кнопки (скрипт – программный код)
def process():
L2=Entry.get(E1)
L3=Entry.get(E2)
L4=Entry.get(E3)
L7=Entry.get(E5)
L8=Entry.get(E6)
L9=Entry.get(E7)
#Преобразовать тип данных (строковую переменную в числовую)
L2=int(L2)
L3=int(L3)
#Арифметические операции
if L4 == "+":
L5=L2+L3
if L4 == "-":
L5=L2-L3
if L4 == "*":
L5=L2*L3
if L4 == "/":
L5=int(L2/L3)
#Перевести в двоичную систему счисления
L7=bin(L2), str(",")
L8=bin(L3),str(",")
L9=bin(L5),str(",")
#Занести полученный результат (10 с/с) в текстовое окно E4
Entry.insert(E4,0,L5)
#Занести полученные результаты (2-ая с/с) в текстовые окна E5,E6,E7
Entry.insert(E5,0,L7)
Entry.insert(E6,0,L8)
Entry.insert(E7,0,L9)
#Полученный результат выдать в окне выполнения программы
print(L5)
print(bin(L2))
print(bin(L3))
print(bin(L5))
#Создать интерфейс для десятичной системы счисления
#Создать 6 компонентов Label (метка): название, № позиций (строка, столбец)
#Позиции устанавливаются с помощью функции grid
L1=Label(top,text="Перевод чисел",).grid(row=0,column=1)
L1=Label(top,text="Десятичная система счисления",).grid(row=1,column=1)
L2=Label(top,text="Первое число",).grid(row=2,column=1)
L3=Label(top,text="Второе число",).grid(row=2,column=2)
L4=Label(top,text="Операция",).grid(row=2,column=3)
L4=Label(top,text="Результат",).grid(row=2,column=4)
#Для ввода информации создать 4 компонента Entry (текстовое окно)
E1=Entry(top,bd =5)
E1.grid(row=3,column=1)
E2=Entry(top,bd =5)
E2.grid(row=3,column=2)
E3=Entry(top,bd =5)
E3.grid(row=3,column=3)
E4=Entry(top,bd =5)
E4.grid(row=3,column=4)
#Создать интерфейс для двоичной системы счисления
#Создать 4 компонента Label (метка): название, № позиций (строка, столбец)
#Позиции устанавливаются с помощью функции grid
L6=Label(top,text="Двоичная система счисления",).grid(row=5,column=1)
L7=Label(top,text="Первое число",).grid(row=6,column=1)
L8=Label(top,text="Второе число",).grid(row=6,column=2)
L9=Label(top,text="Результат",).grid(row=6,column=4)
#Для ввода информации создать 3 компонента Entry (текстовое окно)
E5=Entry(top,bd =5)
E5.grid(row=7,column=1)
E6=Entry(top,bd =5)
E6.grid(row=7,column=2)
E7=Entry(top,bd =5)
E7.grid(row=7,column=4)
#Создать командную кнопку Button, ввести её название – Выполнить
B=Button(top,text="Выполнить",command = process).grid(row=8,column=1)
#Для работы с окнами (без функции mainloop() на экране проект не отобразится)
top.mainloop()
Компьютерный эксперимент
Запустить проект на выполнение: ввести значения первого и второго числа, арифметическую операцию и нажать на командную кнопку Выполнить.
Рис. 1. Перевод чисел из десятичного эквивалента в двоичную систему счисления
Анализ результатов и корректировка
После ввода двух целых положительных чисел, арифметической операции и нажатия на кнопку Выполнить в окне выполнения на форме в соответствующих текстовых окнах появятся полученные результаты (рис. 1). Удалив информацию (исходные данные, знак операции и полученный результат) в первой строке (десятичная система счисления), можно заново ввести два числа (или оставить предыдущие), ввести знак другой операции и вновь нажать на кнопку Выполнить. В этом случае появятся новые результаты выполнения программы. В окнах второй строки (двоичная система счисления) новые результаты появятся с левой стороны; предыдущий результат сохраняется и сдвигается через запятую вправо.
Программу можно доработать: добавив компоненты для описания восьмеричной и шестнадцатеричной систем счисления, получим перевод и в эти системы счисления (рис. 2) с использованием функций: oct() преобразует число в восьмеричную систему и hex() преобразует число в шестнадцатеричную систему. Во всех системах счисления (кроме десятичной) в полученных результатах числа обозначены префиксами (начало), которые указывают на использованную систему счисления:
0b соответствует двоичной системе счисления (b binary);
0o соответствует восьмеричной системе счисления (o octal);
0x соответствует двоичной системе счисления (x hexadecimal).
Рис. 2. Перевод чисел из десятичного эквивалента в другие системы счисления
Таким образом, рассмотренный вариант работы на языке программирования Python для проектирования программ с графическим интерфейсом можно применять на уроках информатики в старших классах информационно-технологического, физико-математического и естественно-научного профилей при изучении систем счисления и программирования. Проведение подобных уроков позволяет получить учащимся дополнительные знания по практическому использованию изучаемого языка.
Список использованных источников и литературы
Tkinter — создание графического интерфейса в Python [Электронный ресурс]. – Режим доступа: https://python-scripts.com/tkinter.
Делаем первое программное обеспечение на Python [Электронный ресурс]. – Режим доступа: https://arduinoplus.ru/delaem-po-na-python/.
Информатика. 11 класс (базовый и углублённый уровни) (в 2 частях): учебник. Ч. 2 / К.Ю. Поляков, Е.А. Еремин. – М. : БИНОМ. Лаборатория знаний, 2019. – 304 с.: ил.
Исследование информационных моделей. Элективный курс: Учебное пособие / Н.Д. Угринович – М.: БИНОМ. Лаборатория знаний, 2004. – 183 с.