Файл: Разработка модуля для выполнения операций с натуральными числами в 16-ричной системе счисления.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 15.06.2023

Просмотров: 145

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Говоря о кроссплатформенности, одним из первых языков, что приходят на ум программиста, является Java. Это объектно-ориентированный язык и одноименная платформа для выполнения программ, написанных на нем. На момент написания данной работы, Java является одним из самых востребованных языков. Одна из основных причин успеха Java как системы ПО заключается в ее стандартизации. Это означает, что Java имеет спецификации, описывающие как должна работать платформа. Стандартизация позволяет различным производителям и участникам разнообразных проектов создавать реализации, которые теоретически должны работать одинаково. Такие спецификации не гарантируют, насколько высока будет производительность конкретной реализации одной конкретной задачи, но вполне гарантируют правильность результатов.[16]

Java активно используется для создания как настольных (Windows, Linux), так и мобильных приложений, в том числе и под платформу Android.

Однако разработка на Java под iOS – очень сомнительная идея. Во-первых, для разработки под данную операционную систему придется обзавестись Apple Mac. Во-вторых, возможность выполнять Java под iOS конечно есть, благодаря наличию виртуальных машин, но в любом случае придется изучать Objective C или Swift, да и удобства и гибкости при использовании такой связки будет не хватать.

Следующим кандидатом будет язык JavaScript. Это интерпретируемый язык программирования с объектно-ориентированными возможностями. В отличии от компилируемых[17] языков, где код программы заранее переводится в низкоуровневые команды и сохраняется в виде исполняемого файла, код JavaScript исполняется «на лету» программой интерпретатором.

Как правило, код JavaScript встраивается в HTML[18]-документ, а в роли интерпретатора выступает веб-браузер. JavaScript предоставляет широкие возможности по взаимодействию с пользователем: изменение содержимого документа, обработка нажатий клавиш, считывание позиции курсора, определение координат устройства и т.д.

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

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


Еще одним языком программирования, позволяющим создавать кроссплатформенные решения является PHP. PHP, как и JavaScript, также является интерпретируемым языком программирования. Однако код программы выполняется на стороне веб-сервера[19], а не на устройстве пользователя.

Пример работы PHP-приложения выглядит следующим образом: используя элементы управления и ввода, размещенные в форме в HTML-документе, либо используя адресную строку веб-браузера, пользователь создает http-запрос, содержащий введенные им данные. Запрос передается веб-серверу, тот в свою очередь обрабатывает полученные данные, производит необходимые вычисления, и генерирует результат. Результатом выполнения как правило является готовый HTML-документ, который отправляется в ответ пользователю, создавшему запрос.

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

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

Используя информацию выше, подведем итоги, и перечислим главные особенности при использования каждого из языков в небольшой таблице (таблица 5):

Таблица 7

Особенность

Java

JavaScript

PHP

Нет платформо-зависимого кода

-

+

+

Легко разворачивать продукт на разных платформах

-

+

+

Легко отлаживать продукт

-

+

-

Не требуются дополнительные вычислительные мощности

+

+

-

Автономная работа

+

+

-

Учитывая значительно бо́льший объем работ при реализации программы используя Java, а также тот факт, что для реализации на PHP необходимо разворачивать web-сервер для связи с пользователем, логичнее всего будет использовать JavaScript.


Выбор среды разработки

Разработка модуля происходит на компьютере с операционной системой Windows 10. Отладка модуля будет производиться на нем же, а также на мобильном телефоне с операционной системой Android 4.4.2.

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

  • Notepad++. Весьма быстро работает, обладает достаточным функционалом. Долгое время был очень популярен в качестве редактора для web-разработки. Сейчас его вытесняют более современные редакторы. Доступен только на Windows.
  • Sublime Text. Более удобен в использовании, функционален и достаточно быстр в работе. Имеется возможность расширять функционал с помощью плагинов и тем оформления, под них выделен целый репозиторий. Обновления выпускаются достаточно редко, наиболее актуальная на данный момент версия до сих пор находится в стадии beta. Доступен на Windows, Linux и MacOS.
  • Atom. Наименее производительный при работе с большими файлами, потребляет значительно больше ресурсов чем конкуренты. Однако отличается широчайшим функционалом. Активно развивается и улучшается сообществом разработчиков. Благодаря гибкой системе плагинов, редактор можно приспособить практически под любую задачу. Доступен на Windows, Linux и MacOS.

Notepad++ выглядит устаревшим, и ему не хватает гибкости. А выбор между Sublime Text и Atom зависит в основном от личных предпочтений и привычки, нежели от функционала: в обоих редакторах широкий набор функций. Но все же, Atom развивается гораздо активнее и имеет крепкое подспорье в виде большой команды разработчиков. Благодаря им, редактор и его компоненты будут оставаться актуальными на протяжении долгого времени. Именно это и располагает к выбору.

Для отладки программного кода модуля будет использован кроссплатформенный web-браузер Google Chrome. Он разработан на основе свободного браузера Chromium, движка отображения web-страниц Blink и интерпретатора JavaScript V8.

Google Chrome является самым популярным браузером на данный момент, и уже не первый год возглавляет списки самых распространенных браузеров[20]. Он заслужил всеобщее признание благодаря своей быстрой работе и отличной поддержке стандартов.

Кроме Google Chrome, движок Blink и интерпретатор V8 используются в следующих web-браузерах:


  • Safari (входит в состав операционных систем iOS и MacOS)
  • Яндекс.Браузер
  • Opera (до 2013 года использовался движок Presto)
  • Vivaldi

Не стоит обделять вниманием и следующие браузеры:

  • Mozilla Firefox (движок Gecko, второй по популярности на 2016 год20)
  • Microsoft Internet Explorer (движок Trident, разработка прекращена)
  • Microsoft Edge (движок Spartan)

Для корректной работы модуля во всех браузерах следует обходить использование функций языка JavaScript, специфичных для какого-то отдельного движка и стоит придерживаться информации о поддерживаемых различными браузерами стандартах и функциях. Про поддержку технологии тем или иным движком можно прочитать на специализированных веб-ресурсах[21],[22].

Итог выбора средств разработки

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

  • Персональный компьютер со следующими характеристиками:
    • Операционная система: Microsoft Windows 10 Professional
    • Системная плата: Gigabyte GA-Z170-Gaming K3
    • Чипсет:
      • Северный мост: Intel Skylake-S IMC
      • Южный мост: Intel Sunrise Point Z170
    • Центральный процессор: Intel Core i5-6600K Skylake
    • Оперативная память: Corsair 8 ГБ DDR4 SDRAM
    • Графический процессор: ASUS GeForce GTX 550 Ti
    • Накопители:
      • OCZ VERTEX 460A 240 ГБ
      • Western Digital Caviar Blue 1 ТБ
    • Сетевой адаптер: e2200 Gigabit Ethernet Controller
    • Периферийные устройства:
      • Монитор: Samsung SyncMaster 2333sw 1920x1080
      • Мышь: A4Tech A9
      • Клавиатура: Logitech Wave Keyboard
  • Мобильный телефон со следующими характеристиками:
    • Операционная система: Android 4.4.2
    • Чипсет:
      • Центральный процессор: Samsung Exynos 3 Quad 3470
      • Графический процессор: Mali-400 MP4
      • Модуль связи: Exynos ModAP
    • Оперативная память: 1.5 ГБ
    • Дисплей: Сенсорный 4,5" 720 x 1280
    • Накопитель: 16 ГБ
  • Текстовый редактор: Atom 1.13.0
  • Web-браузер: Google Chrome 55.0.2883.87

Разработка программного модуля

Выбор концепции работы с модулем

Разрабатываемый модуль по сути является программой-эмулятором работы калькулятора, и подход к его разработке будет схожим. Из всех видов программ, эмулирующих работу калькулятора, выделяются два вида калькуляторов:

  • Инфиксный калькулятор с регистрами. Инфиксная форма записи математических и логических выражений предполагает, что операторы будут располагаться между операндами, т.е. аргументами операции (например, 2 * 3 + 4). Каждая операция выполняется поочередно, по мере ввода выражения. Подобная схема работы знакома нам по обычным электронным калькуляторам.
  • Строковый калькулятор. Программа принимает выражение, записанное в виде строки, и затем преобразует его в более простой для разбора вид записи, интерпретирует и вычисляет. Как правило, выражение транслируется в обратную польскую запись. В этой форме записи операторы располагаются после подконтрольных им операндов (например, 2 3 * 4 +). Строковые калькуляторы удобнее в использовании, так как не принуждают вводить операции по очереди, и все выражение можно записать сразу, изменяя по мере необходимости.

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

Разработка пользовательского интерфейса

Разработка пользовательского интерфейса JavaScript-приложения начинается с разметки объектов управления в HTML-документе. На данном этапе практически не затрагивается графический дизайн и удобство пользования интерфейсом. Разметка отвечает лишь за смысловое содержание документа: какие объекты в нем присутствуют, за что они отвечают, и в какой последовательности они расположены в документе.

Простейший HTML-документ выглядит следующим образом:

<html>

<head>

<title>Название</title>

</head>

<body>

<p>Тело документа</p>

</body>

</html>

HTML-документ по сути является обычным текстовым файлом, содержание которого составляют «теги» объектов, определяющих его структуру. Тег представляет собой ключевое слово, заключенное в угловые скобки.

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

  • Одинарным (например, <br> - перенос строки)
  • Парным (например, <h1> … </h1> - обозначение заголовка)

Сам документ объявляется тегом <html>…</html>, затем разделяется на две части – заголовок и тело. Заголовок объявляется тегом <head>…</head> и содержит в себе информацию о документе, используемой кодировке, подключенных скриптах и таблицах стилей, информацию для поисковых систем и другие данные, не относящиеся к структуре и контенту. Тело страницы объявляется тегом <body>…</body>, и содержит информацию о структуре документа и его контенте, т.е. ту информацию, которую должен увидеть пользователь.

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

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

  • <input type="textbox"> - создаст текстовое поле
  • <input type="checkbox"> - создаст чекбокс[23]