- Разработка «Калькулятор систем счислений в программной среде Lazarus»
- 1. Теоретическая часть
- 1.1 Актуальность темы
- 1.2 Выбор и описание программных средств и среды разработки реализации калькулятора
- 2. Практическая часть
- 2.1 Калькулятор
- 2.2 Калькулятор систем счислений.
- Заключение
- Приложение 1 «Калькулятор систем счислений»
- Перевод из любой системы счисления в любую чисел большой длины
Разработка «Калькулятор систем счислений в программной среде Lazarus»
В современном обществе компьютер играет огромную роль. Уже трудно представить труд ученых, инженеров, экономистов, бухгалтеров без использования вычислительной техники. Но компьютер сам по себе не способен даже на простые операции, поэтому для того, чтобы человек мог использовать компьютер, необходимо программное обеспечение.
Программа руководит ресурсами компьютера и предоставляет их в распоряжение пользователя. Существует огромное количество разнообразных по своим функциям и возможностям программ, но среди них выделяют два основных типа: системное и прикладное программное обеспечение. К системному программному обеспечению относят операционную систему и все программы, предназначенные для создания рабочей среды для прикладных программ, которые в свою очередь выполняют ту самую, необходимую пользователю, работу.
Цель проекта : Создать готовое приложение «Калькулятор систем счислений» в программе Lazarus для использования математических расчётов.
Для достижения данной цели необходимо решить следующие задачи:
1. Изучить основы языка Lazarus ;
2. Познакомиться с одной из основных концепций программирования: модульным подходом ;
3. Познакомиться с технологией разработки программного обеспечения на всех этапах: от постановки задачи, выбора алгоритма, его реализации до сопровождения программы;
4. Разработать программный продукт.
Объект исследования : приложение Lazarus .
1. Теоретическая часть
1.1 Актуальность темы
Тема данной работы – разработка приложения «Калькулятор систем счислений». Актуальность данной темы обусловлена популярностью математических расчётов в повседневной жизни, а так как в большинстве случаев приходится работать за компьютером, то, следовательно, калькулятор должен быть виртуальным. Люди и компьютеры используют разные системы счисления, и из этого появляется потребность перевода систем счислений.
Проанализировав цели, задачи проектной работы, приступим непосредственно к разработке приложения.
1.2 Выбор и описание программных средств и среды разработки реализации калькулятора
Для разработки и реализации приложения была выбрана следующая программа:
Free Pascal Compiler – это свободно распространяемый компилятор языка Паскаль с открытыми исходными кодами, распространяется на условиях GNU General Public License (GNU GPL). Он совместим с Borland Pascal 7 и Object Pascal – Delphi, но при этом обладает рядом дополнительных возможностей, например, поддерживает перегрузку операторов.
Lazarus – это бесплатный инструмент разработки с открытым кодом. IDE Lazarus представляет собой среду с графическим интерфейсом для быстрой разработки программ, аналогичную Delphi. В принципе, такого набора достаточно для создания программ с графическим интерфейсом и приложений, работающих с базами данных и Интернетом.
Lazarus – это стабильная богатая возможностями среда разработки для создания самостоятельных графических и консольных приложений. В настоящее время она работает на Linux, FreeBSD, Windows и предоставляет настраиваемый редактор кода и визуальную среду создания форм вместе с менеджером пакетов, отладчиком и графическим интерфейсом, полностью интегрированным с компилятором FreePascal.
Ниже представлены скриншоты из приложения Lazarus :
Рис . 1. Вид IDE Lazarus в Windows
Рис. 2. Главное окно IDE Lazarus
С помощью этого окна можно управлять процессом разработки приложения. В нем предусмотрены команды управления файлами, компиляцией, редактированием, окнами и т.д.
В верхней части окна показывается иерархия объектов, а снизу, расположены три вкладки: «Свойства», «События», «Избранное», «Ограничения». Во вкладке «Свойства» перечисляются все свойства выбранного объекта. Во вкладке «События» находятся действия для объекта. Во вкладке «Избранное» – все избранные свойства и методы. Вкладка «Ограничения» показывает ограничения, накладываемые на данный компонент.
Рис. 4. Редактор исходного кода
Многие функции и возможности этого редактора совпадают с возможностями обычных текстовых редакторов, например, «Блокнота». Текст в редакторе можно выделять, копировать, вырезать, вставлять. Кроме того, в редакторе можно осуществлять поиск заданного фрагмента текста, выполнять вставку и замену. Но, конечно, этот редактор исходных текстов Lazarus обладает еще рядом дополнительных возможностей к разработке программ. Основное преимущество редактора заключается в том, что он обладает возможностями подсветки синтаксиса, не только Pascal, но и других языков, а также рядом других удобств.
2. Практическая часть
Начнем создание математического приложения с главной страницы. Главная страница – это страница, на которую попадает пользователь, как только открывает приложение (Рис. 5).
На главной странице я расположила 2 кнопки:
— Калькулятор (2.1 и рис. 6). На этой вкладке располагается инженерный калькулятор.
— Калькулятор систем счислений (2.2 и рис. 7). На этой вкладке расположен калькулятор, с помощью которого можно перевести любое число из одной системы счисления в другую.
2.1 Калькулятор
Мы пользуемся простыми калькуляторами для математических вычислений в школе и для подсчета денег в магазине. Ученые и инженеры пользуются другими калькуляторами, способными выполнять сложные операции. Современные калькуляторы – это электронные приборы с маленькими силиконовыми микросхемами, производящими любые вычисления. Разновидность калькулятора – кассовый аппарат. Он суммирует цены и делает распечатку чека. Большинство кассовых аппаратов автоматически считывают цены по коду, указанному на каждом товаре. «Мозг» калькулятора может только складывать и вычитать. Умножение и деление он выполняет путем многократного сложения или вычитания.
Калькулятор – программа , предназначенная для выполнения несложных вычислительных операций: сложения, вычитания, умножения, деления и т.д. Также в калькуляторе предусмотрены возможности выполнения более сложных операций для инженерных и статистических вычислений.
Перед созданием кода я расположила однострочное поле Edit, которое отвечает за ввод и вывод чисел, и кнопку Button. После этого я написала код программы (Приложение А) в редакторе исходного кода (Рис. 4)
2.2 Калькулятор систем счислений.
Для записи чисел мы применяем десятичную систему счисления, для измерения промежутков времени — шестидесятеричную систему счисления. В компьютерах используется двоичная система счисления. Из этого появляется необходимость перевода систем счисления.
Система счисления — символический метод записи чисел, представление чисел с помощью письменных знаков. Наиболее употребляемыми системами являются:
16 — шестнадцатеричная (34A16).
Для перевода числа из одной системы счисления в другую существуют специальные таблицы и правила. Но я решила создать приложение с помощью программы Lazarus , которое поможет переводить, как и простые, так и составные числа.
Для этого я расположила текстовые поля Label , Edit , отвечающий за ввод числа и вывод ответа, кнопку Button . Используя алгоритм решения, я написала код для перевода числа из одной системы счисления в другую.
Рис. 7. Калькулятор систем Рис. 8. Пример вычисления
Заключение
На современном этапе информатизации общества программирование остается очень актуальным. Результатом работы стало готовое к работе приложение, которое выполняет множество различных вычислений.
В ходе проведенной работы были решены поставленные в работе задачи. Оценивая проделанную работу, можно сделать следующие выводы:
— Приложение предоставляет пользователям готовую продукцию, которая делает точные сложные вычисления.
— Приложение сделано очень удобно, понятно и с красивым интерфейсом.
В дальнейшем разработанное приложение можно будет использовать в реальной жизни. Так же возможно обновление и добавления много нового. Данный продукт стабилен в работе и не требует высоких знаний для работы с ним.
Список использованной литературы
1. Учебник Мансуров К.Т. “Основы программирования в среде Lazarus”
2. CleverStudents [Электронный ресурс] URL : http :// www . cleverstudents . ru /
3. StudWood [Электронный ресурс] URL : https :// studwood . ru /
Приложение 1 «Калькулятор систем счислений»
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Перевод из любой системы счисления в любую чисел большой длины
Недавно решал задачи по криптографии, и возникла необходимость переводить очень большие числа из одной системы счисления в другую. С двоичной, восьмеричной, десятичной и шестнадцатеричной системой справляется и стандартный калькулятор ОС. Но он не рассчитан на числа большой длины. А мне как раз необходимо работать с числами длиной >1000 знаков.
Для этих целей решил написать небольшой консольный конвертер, позволяющий работать с числами любой длины и любой системы счисления от 2 до 36.
Требования:
• Конвертер должен работать с числами любой длины.
• Конвертер должен работать в любой системе счисления от 2 до 36.
• Конвертер должен уметь работать с файлами.
Реализация:
Писать решил на языке C++. Люблю этот язык, да и перевести исходники в другой язык из C++ не составляет особого труда.
Написал следующий класс:
class Converter < private: //Вектор содержит исходное число vectora; //Исходная система счисления int iriginal; public: //Конструктор, содержит 2 параметра: строка исходного числа, исходная система счисления Converter(string str, int original)< this->iriginal = original; //Заносит числа исходного числа в вектор for ( int i=0; i < str.length(); i++ )< this->a.push_back(charToInt(str[i])); > > //Переводит символ в число, вместо некорректных символов возвращает -1 int charToInt(char c)< if ( c >= '0' && c iriginal )< return c - '0'; >else< if ( c >= 'A' && c iriginal )< return c - 'A' + 10; >else < return -1; >> > //Переводит число в символ char intToChar(int c)< if ( c >= 0 && c else < return c + 'A' - 10; >> //Получает следующую цифру числа в новой системе счисления int nextNumber(int final)< int temp = 0; for ( int i = 0; ia.size(); i++)< temp = temp*this->iriginal + this->a[i]; a[i] = temp / final; temp = temp % final; > return temp; > //Возвращает true - если массив состоит из одних нулей и false в противном случае bool zero()< for ( int i=0; ia.size(); i++ ) < if ( a[i] != 0 )< return false; >> return true; > //Конвертирует исходное число в заданную систему счисления string convertTo(int final) < vectorb; int size = 0; do < b.push_back(this->nextNumber(final)); size++; >while( !this->zero() ); string sTemp=""; for (int i=b.size()-1; i>=0; i--) < sTemp += intToChar(b[i]); >return sTemp; > >;
Далее прикрутил его в проект:
//Адрес файла, содержащего исходное число string inputFile = argv[1]; //Исходная система счисления int original = atol(argv[2]); //Требуемая система счисления int final = atol(argv[3]); //Строка, содержащая исходное число string origNumber; ifstream fin(inputFile.c_str()); if ( fin.is_open() )< fin >> origNumber; >else < cout fin.close(); Converter conv(origNumber,original); //Если не был задан файл для вывода, то результат отобразиться на экране if ( argc > 4 )< //Адрес файла для записи нового числа string outputFile = argv[4]; ofstream fout(outputFile.c_str()); if ( fout.is_open() )< fout else < cout >else
Теперь можно протестировать.
Конвертер готов, теперь осталось его испытать. Создаю файл, содержащий число, представляющее из себя тысячу девяток.
Запускаю в консоли:
Конвертер удачно создает файл output.txt, содержащий число, длиной 3322 символа.
Теперь выведу его на экран, для этого достаточно не задавать файл для вывода.
Так же можно задавать исходное число прямо в консоли
Вывод:
Если нужно конвертировать что-то очень большое, то данный конвертер отлично для этого подойдет. Отсутствие интерфейса позволяет без изменения запускать написанный код на любой платформе. А консоль забывать нельзя, будь то windows или Linux…
Скачать проект(VS 2008) можно здесь.