Геометрический калькулятор: разработка программного модуля для вычисления площадей и периметров

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

Геометрический калькулятор: разработка программного модуля для вычисления площадей и периметров

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

Введение

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

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

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

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

Задачи проекта:

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

  • Спроектировать и реализовать структуру базы данных в Microsoft Excel для хранения параметров фигур.

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

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

  • Протестировать работоспособность программы и проанализировать полученные результаты.

Объект исследования: Геометрические фигуры (квадрат, прямоугольник, треугольник, круг).

Предмет исследования: Методы автоматизации математических расчётов и визуализации данных с помощью языков программирования и электронных таблиц.

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

  • Теоретические: анализ учебной литературы по геометрии и информатике, поиск и изучение алгоритмов решения задач.

  • Практические: моделирование (создание базы данных), программирование (написание кода на Python), эксперимент (запуск программы и анализ результатов).

Практическая значимость: созданный инструмент может быть использован для решения прикладных задач: от расчёта необходимого количества стройматериалов (площадь стен, пола) до планирования земельных участков и дизайна помещений.

Развитие цифровых навыков: работа связывает два мощных инструмента – электронные таблицы и язык программирования, что является востребованным навыком в области анализа данных.

Наглядность: Визуализация фигур позволяет лучше понять связь между абстрактными числами в таблице и реальными геометрическими объектами.

Раздел 1. Теоретический этап

1.1. Введение в планиметрию и понятие площади

Основой данного проекта является раздел математики, называемый планиметрией — геометрией на плоскости. Ключевой характеристикой любой плоской фигуры является её площадь. Интуитивно площадь можно определить, как величину, показывающую размер части плоскости, ограниченной замкнутым контуром.

В математике площадь обладает важными свойствами [1]:

  • Положительность: площадь любой фигуры — число положительное.

  • Аддитивность: площадь всей фигуры равна сумме площадей её частей, если эти части не перекрывают друг друга.

  • Инвариантность: равные фигуры имеют равные площади.

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

1.2. Обзор формул для вычисления площадей

Для реализации проекта были выбраны и проанализированы формулы для вычисления площадей наиболее распространённых геометрических фигур. Проект основан на использовании фундаментальных формул планиметрии. [2, 5] Рассмотрим каждую формулу подробнее.

Квадрат – это правильный четырёхугольник, у которого все стороны равны, а все углы прямые. Для вычисления его площади достаточно знать длину одной стороны a. Формула имеет вид:

Эта формула является частным случаем формулы площади прямоугольника.

Прямоугольник – это четырёхугольник, у которого все углы прямые. Его площадь равна произведению длин смежных сторон a и b:

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

Треугольник.Вычисление площади произвольного треугольника, длины сторон которого известны (a, b, c), но неизвестна высота, производится с помощью формулы Герона. Этот метод является универсальным и не требует дополнительных построений. Алгоритм вычисления состоит из двух шагов:

  1. Сначала вычисляется полупериметр треугольника p:

  1. Затем вычисляется площадь S по формуле:

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

Круг – это множество всех точек плоскости, расстояние от которых до заданной точки (центра) не превышает заданного числа r (радиуса). Площадь круга вычисляется через число π (пи) и радиус r:

Здесь π — математическая константа, приблизительно равная 3.14159, которая выражает отношение длины окружности к её диаметру.

Все необходимые теоретические сведения сведены в таблицу 1.

Таблица 1. Теоретические сведения о геометрических фигурах

Фигура

Площадь

Периметр

Квадрат

   

Прямоугольник

   

Треугольник

   

Круг

   

1.3. Выбор инструментов для реализации

Для автоматизации процесса вычислений был выбран язык программирования Python. Он обладает простым синтаксисом и мощной экосистемой библиотек для научных вычислений. Для выполнения математических операций, таких как извлечение квадратного корня (sqrt) и использование числа Пи (pi), будет использована стандартная библиотека math.

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

Для реализации проекта были выбраны инструменты: Excel для структурированного хранения данных и Python с библиотеками pandas (для анализа данных) и matplotlib (для построения графиков).

Раздел 2. Практический этап

2.1. Создание базы данных в Excel

В рамках данного проекта Excel выступает не просто как «таблица», а как внешний источник структурированных данных (фактически – простейшая база данных). Хранение параметров фигур в Excel имеет ряд преимуществ: удобство ввода: данные легко вводить, изменять и проверять визуально; гибкость: можно добавлять неограниченное количество строк (фигур) без изменения программного кода; доступность: формат .xlsx является общепринятым стандартом.

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

Таблица 2. Структуры базы данный в Excel

Фигура

Параметр 1

Параметр 2

Параметр 3

Квадрат

5

-

-

Прямоугольник

4

6

-

Треугольник

5

4

7

Круг

7

-

-

Файл сохранён под именем figury.xlsx в той же директории, что и исполняемый скрипт. Скриншот таблицы проведен в Приложении 1.

2.2. Разработка программы на Python

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

Программа написана на языке Python версии 3.11. Логика работы скрипта разделена на логические блоки: чтение данных, вычисления, вывод результатов и визуализация. Опишем каждый блок более подробно.

Чтение данных. С помощью библиотеки pandas программа открывает файл figury.xlsx и считывает данные в структуру DataFrame (таблицу в памяти).

Для работы программы нужно установить необходимые библиотеки. Для этого вначале нужно определить версию Python в IDLE в которой была разработана программа. Для этого нужно:

  1. Открыть Python IDLE.

В интерактивном окне ввести команду

import sys

print(sys.version)

и нажать Enter.

  1. Выполнить установку библиотеки, указав нужную версию программы.

  1. Открой Командную строку (Win+R cmd).

  2. Введи команду, подставив свою версию из предыдущего шага:

py -3.14 -m pip install pandas matplotlib openpyxl

Эта команда установит сразу три библиотеки:

  • pandas — для обработки данных.

  • matplotlib — для рисования графиков.

  • openpyxl — для чтения файлов Excel.

Вычисления. Программа последовательно перебирает каждую строку таблицы. Для каждой фигуры вызывается функция ploshad_i_perimetr. Внутри неё с помощью конструкции if-elif определяется тип фигуры и применяется соответствующая математическая формула (включая формулу Герона для треугольника).

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

def ploshad_i_perimetr(figura, a, b=None, c=None, r=None):

if figura == 'Квадрат':

s = a ** 2

per = 4 * a

return s, per

elif figura == 'Прямоугольник':

s = a * b

per = 2 * (a + b)

return s, per

elif figura == 'Треугольник':

poluperimetr = (a + b + c) / 2

s = math.sqrt(poluperimetr * (poluperimetr - a) * (poluperimetr - b) * (poluperimetr - c))

per = a + b + c

return s, per

elif figura == 'Круг':

s = math.pi * r ** 2

per = 2 * math.pi * r

return s, per

else:

return None, None

Визуализация.Для каждой фигуры вызывается функция narisovat, которая использует библиотеку matplotlib для построения чертежа. Координаты вершин фигур подбираются так, чтобы чертеж был наглядным. Для круга используется объект Circle, для многоугольников — Polygon. Программныйкодвызуализациивыглядиттак:

def narisovat(figura, a, b=None, r=None, s=None):

plt.figure() # Новое окно для каждой фигуры

if figura == 'Квадрат':

square = plt.Polygon([(0,0), (a,0), (a,a), (0,a)], fill=None, edgecolor='blue', linewidth=2)

plt.gca().add_patch(square)

plt.text(a/2, a/2, f"Квадрат\nS={a*a}", ha='center')

elif figura == 'Прямоугольник':

rect = plt.Polygon([(0,0), (b,0), (b,a), (0,a)], fill=None, edgecolor='green', linewidth=2)

plt.gca().add_patch(rect)

plt.text(b/2, a/2, f"Пр-к\nS={a*b}", ha='center')

elif figura == 'Треугольник':

if a + b <= c or a + c <= b or b + c <= a:

print(f"Невозможно построить треугольник со сторонами {a}, {b}, {c}.")

plt.close() # Закрываем пустое окно

return

x1, y1 = 0, 0

x2, y2 = a, 0

x3 = (b**2 + a**2 - c**2) / (2 * a)

y3 = math.sqrt(b**2 - x3**2)

tri = plt.Polygon([(x1, y1), (x2, y2), (x3, y3)],

fill=None, edgecolor='red', linewidth=2)

plt.gca().add_patch(tri)

plt.text(a/2, y3/3, f"Треуг.\nS={s:.2f}", ha='center', color='red')

elif figura == 'Круг':

circle = plt.Circle((0,0), r, fill=False, color='purple', linewidth=3)

plt.gca().add_patch(circle)

plt.text(0, 0, f"Круг\nS={math.pi*r*r:.2f}", ha='center')

plt.axis('equal')

plt.title(figura)

plt.grid(True)

plt.show()

Вывод результатов. Итоговая таблица с результатами выводится в консоль.

if results:

result_df = pd.DataFrame(results)

print("\nИтоговаятаблицарасчетов:")

print(result_df)

else:

print("\nНет данных для расчета.")

Листинг программы приведен в приложении 2.

    1. Примеры расчётов и чертежей в программе

При запуске программы были получены результаты, представленные в таблице 3 и на рисунках 1-4.

Таблица 3. Результат работы программы

Фигура

Параметры

Площадь

Периметр

Квадрат

a=5

25.00

20.00

Прямоугольник

a=4, b=6

24.00

20.00

Треугольник

a=5, b=4, c=7

9.80

16.00

Круг

r=7

153.94

43.98

Для каждой из этих фигур программа автоматически построила графическое изображение (чертеж) в отдельном окне.

Рис. 1. Расчет для фигуры Квадрат

Рис. 2. Расчет для фигуры Прямоугольник

Рис. 3. Расчет для фигуры Треугольник

Рис. 4. Расчет для фигуры Круг

Заключение

В ходе выполнения работы был проведён анализ фундаментальных формул планиметрии, что позволило сформировать каталог методов для вычисления площадей и периметров базовых геометрических фигур (квадрата, прямоугольника, треугольника и круга). В качестве теоретической базы выбраны классические формулы, включая универсальную формулу Герона для произвольного треугольника, что обеспечивает полноту охвата задач проекта.

Для решения задач автоматизации и хранения данных была выбрана связка современных и широко распространённых инструментов: Microsoft Excel, в качестве гибкого и доступного средства для организации структурированного хранения входных параметров фигур. Использование электронных таблиц позволяет легко масштабировать базу данных и изменять исходные данные без необходимости правки программного кода. В качестве основного инструмента для реализации алгоритма был определен язык программирования Python. Его выбор обусловлен его мощными возможностями по обработке данных, чтению файлов различных форматов и наличием библиотек для визуализации.

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

Таким образом, теоретическая проработка проекта является полной и достаточной. Определены объект и предмет исследования, сформулирована актуальная цель, а выбранный математический аппарат и инструментарий полностью соответствуют поставленным задачам, что создаёт прочную основу для успешной практической реализации автоматизированного инструмента.

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

Можно определить возможности дальнейшего развития проекта. Вo-первых, это доработка программы для автоматической записи итоговой таблицы с площадями и периметрами в новый файл Excel или текстовый документ. Также возможно добавление новых фигур в базу и реализация расчётов для более сложных фигур (трапеция, параллелограмм). Также возможна разработка простого графического интерфейса с использованием библиотеки tkinter, чтобы программой было удобнее пользоваться без написания кода.

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

  1. Геометрия: дополнительные главы к школьному учебнику 9 класса: учебное пособие для учащихся школ и классов с углубленным изучением математики / Л.С. Атанасян, В.Ф. Бутузов, С.Б. Кадомцев и др. – Москва: Просвещение, 1997. – 176 с.

  2. Геометрия: 7–9 классы: учебник для общеобразовательных организаций / Л.С. Атанасян, В.Ф. Бутузов, С.Б. Кадомцев и др. — Москва: Просвещение, 2023. – 390 с.

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

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

  5. Погорелов, А. В. Геометрия: учеб. для 7-11-х кл. общеобразоват. учреждений / А. В. Погорелов. - 5-е изд. - Москва : Просвещение : АО "Моск. учеб.", 1995. - 383 с. : ил.

ПРИЛОЖЕНИЯ

Приложение 1. Скриншоты Excel-таблицы

Рис. 1.1. Скриншот файла figury.xlsx

Приложение 2. Листинг программы

import pandas as pd

import math

import matplotlib.pyplot as plt

try:

df = pd.read_excel('figury.xlsx')

print("Данные из Excel успешно загружены:")

print(df)

except FileNotFoundError:

print("Ошибка: Файл 'figury.xlsx' ненайден.")

df = pd.DataFrame()

def narisovat(figura, a, b=None, r=None, s=None):

plt.figure() # Новое окно для каждой фигуры

if figura == 'Квадрат':

square = plt.Polygon([(0,0), (a,0), (a,a), (0,a)], fill=None, edgecolor='blue', linewidth=2)

plt.gca().add_patch(square)

plt.text(a/2, a/2, f"Квадрат\nS={a*a}", ha='center')

elif figura == 'Прямоугольник':

rect = plt.Polygon([(0,0), (b,0), (b,a), (0,a)], fill=None, edgecolor='green', linewidth=2)

plt.gca().add_patch(rect)

plt.text(b/2, a/2, f"Пр-к\nS={a*b}", ha='center')

elif figura == 'Треугольник':

# --- Проверка возможности построения треугольника ---

if a + b <= c or a + c <= b or b + c <= a:

print(f"Невозможно построить треугольник со сторонами {a}, {b}, {c}.")

plt.close() # Закрываем пустое окно

return

# --- Вычисление координат вершин ---

# Вершина 1: (0, 0)

x1, y1 = 0, 0

# Вершина 2: (a, 0) - располагаем сторону 'a' на оси X

x2, y2 = a, 0

# Вершина 3: (x3, y3)

# Используем теорему косинусов для нахождения координат

x3 = (b**2 + a**2 - c**2) / (2 * a)

y3 = math.sqrt(b**2 - x3**2)

# Создаем многоугольник (треугольник)

tri = plt.Polygon([(x1, y1), (x2, y2), (x3, y3)],

fill=None, edgecolor='red', linewidth=2)

plt.gca().add_patch(tri)

# Подписьсплощадью

plt.text(a/2, y3/3, f"Треуг.\nS={s:.2f}", ha='center', color='red')

elif figura == 'Круг':

circle = plt.Circle((0,0), r, fill=False, color='purple', linewidth=3)

plt.gca().add_patch(circle)

plt.text(0, 0, f"Круг\nS={math.pi*r*r:.2f}", ha='center')

plt.axis('equal')

plt.title(figura)

plt.grid(True)

plt.show()

def ploshad_i_perimetr(figura, a, b=None, c=None, r=None):

if figura == 'Квадрат':

s = a ** 2

per = 4 * a

return s, per

elif figura == 'Прямоугольник':

s = a * b

per = 2 * (a + b)

return s, per

elif figura == 'Треугольник':

poluperimetr = (a + b + c) / 2

s = math.sqrt(poluperimetr * (poluperimetr - a) * (poluperimetr - b) * (poluperimetr - c))

per = a + b + c

return s, per

elif figura == 'Круг':

s = math.pi * r ** 2

per = 2 * math.pi * r

return s, per

else:

return None, None

results = []

for index, row in df.iterrows():

try:

figura = row['Фигура']

# --- Блок обработки данных ---

param1 = row['Параметр1']

if param1 == '-' or pd.isnull(param1):

print(f"Строка {index + 1}: Нет данных в Параметр1. Пропускаем.")

continue

a = float(param1)

r = a if figura == 'Круг' else None

b_raw = row['Параметр2']

c_raw = row['Параметр3']

b = float(b_raw) if (pd.notnull(b_raw) and b_raw != '-') else None

c = float(c_raw) if (pd.notnull(c_raw) and c_raw != '-') else None

s, per = ploshad_i_perimetr(figura, a, b=b, c=c, r=r)

if s is not None:

results.append({

'Фигура': figura,

'Площадь': round(s, 2),

'Периметр': round(per, 2)

})

print(f"\nРасчетдля {figura}: Площадь={s:.2f}, Периметр={per:.2f}")

# --- Вызов функции рисования ---

# Передаем только нужные параметры. Для треугольника передаем высоту (a) и основание (b).

narisovat(figura, a=a, b=b, r=r, s=s)

except Exception as e:

print(f"\nОшибкаприобработкестроки {index + 1}: {e}")

# --- Вывод итоговой таблицы ---

if results:

result_df = pd.DataFrame(results)

print("\nИтоговаятаблицарасчетов:")

print(result_df)

else:

print("\nНет данных для расчета.")

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