Файл: Основы программирования на языке Pascal.pdf

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

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

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

Добавлен: 31.03.2023

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

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

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

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

  1. Постановка задачи. Задача формулируется на уровне понятий проблемной области, к которой она относится, и должна быть понятна исполнителю (пользователю).
  2. Математическая формулировка задачи (формализация задачи). Формализация задачи фактически представляет разработку математической модели решаемой задачи и включает в себя:
  • описание задачи с помощью формул;
  • определение перечней исходных данных и получаемых результатов;
  • задание начальных условий и точности вычислений.
  1. Выбор (поиск) метода решения задачи. В ряде случаев одна и та же задача может быть решена с помощью различных методов.
  2. Разработка алгоритма решения задачи. На данном этапе устанавливается необходимая логическая последовательность вычислений с учетом выбранного метода решения задачи и других действий, с помощью которых будут получены результаты.
  3. Написание программы на одном из имеющихся языков программирования .
  4. Тестирование и отладка программы при различных входных данных.

Обычно последний пункт может занимать значительное время, иногда сравнимое со временем разработки программного продукта. Современные языки высокого уровня вкупе со специальными средами разработки значительно сокращают длительность этого этапа[5-7].

2 Язык программирования Pascal

Pascal - это императивный и процедурный язык программирования, разработанный Никлаусом Виртом как небольшой эффективный язык, предназначенный для поощрения хороших практик программирования с использованием структурированного программирования и структурирования данных. Он назван в честь французского математика, философа и физика Блеза Паскаля.

Паскаль был разработан по образцу языка ALGOL 60. Вирт участвовал в процессе улучшения языка в рамках усилий ALGOL X и предложил версию, известную как ALGOL W. Она не была принята, и процесс ALGOL X застопорился. В 1968 году Вирт решил отказаться от процесса ALGOL X и еще больше улучшить ALGOL W, выпустив его как Pascal в 1970 году.

Паскаль стал очень успешным в 1970-х годах, особенно на растущем рынке мини-компьютеров. Компиляторы также были доступны для многих микрокомпьютеров, поскольку эта область появилась в конце 1970-х годов. Он широко используется в качестве языка преподавания в университетских курсах программирования в 1980 - х годах, а также используется в установках производства для написания коммерческого программного обеспечения в течение того же периода. Он был вытеснен языком программирования C в конце 1980-х и начале 1990-х годов, когда системы на основе UNIX стали популярными, особенно с выпуском C ++.


Производная, известная как Object Pascal, предназначенная для объектно-ориентированного программирования, была разработана в 1985 году; он использовался Apple Computer и Borland в конце 1980-х годов, а затем превратился в Delphi на платформе Microsoft Windows. Расширение понятий Паскаля привело к языкам Модула-2 и Оберон [8].

Pascal в своей первоначальной форме является чисто процедурным языком и включает в себя традиционный массив ALGOL- подобных структур[9] управления с зарезервированными словами, такими как if , then, else, while, for и case в пределах одного оператора или begin - end блока инструкций.Pascal также имеет конструкции структурирования данных, не включенные в исходные типыALGOL 60 , такие как записи, варианты, указатели, перечисления и наборы, а также процедуры/указатели.Такие конструкции были частично унаследованы или вдохновлены Simula 67, ALGOL 68 , собственным ALGOL WНиклауса Вирта и предложениями CAR Hoare .

Программы на Паскале начинаются с ключевого словаprogram со списком внешних файловых дескрипторов в качестве параметров,затем следует основной блок, заключенный в квадратные скобки с начала и конца ключевых слов.Точки с запятой разделяют операторы, и точка (то есть точка) завершает всю программу [10].Пример программы, выводящей фразу «Hello, World!»показан на рисунке 1

Рисунок 1 – Helloworldна Pascal

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

Таблица 1 – Предопределенный типы данных в Pascal

Тип данных

Тип значений, которые может хранить переменная

integer

целые числа

real

числа с плавающей точкой

boolean

значения True или False

char

один символ из упорядоченного набора символов

string

последовательность или «строка» символов

set

эквивалентно массиву логических значений

Диапазон значений, разрешенных для каждого (кроме логического) типа, определяется реализацией.Для некоторых преобразований данных предусмотрены функции.Для преобразования real в integer доступны следующие функции: round и trunc ( округление до нуля).

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


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

  • Delphi является флагманским продуктом быстрой разработки приложений (RAD) Embarcadero (ранее Borland/CodeGear). Для создания приложений для Windows, macOS, iOS и Android он использует язык Object Pascal (названный Borland «Delphi»). Поддержка .NET, существовавшая с D8 по D2005, D2006 и D2007, была прекращена и заменена новым языком (Prism, который переименован в Oxygene), который не полностью обратно совместим. В последние годы добавлена поддержка Unicode и дженериков (D2009, D2010, Delphi XE).
  • Free Pascal - это мультиплатформенный компилятор, написанный на Object Pascal. Он нацелен на создание удобного и мощного компилятора, способного как компилировать устаревшие приложения, так и быть средством разработки новых. Он распространяется под GNU GPL, в то время как пакеты и библиотека времени выполнения подпадают под модифицированный GNU LGPL. Помимо режимов совместимости для Turbo Pascal, Delphi и Mac Pascal, он также имеет свои процедурные и объектно-ориентированные синтаксические режимы с поддержкой расширенных функций, таких как перегрузка операторов. Поддерживает множество платформ и операционных систем. Текущие версии также имеют режим ISO.
  • Modern Pascal - это мультиплатформенный интерпретатор и компилятор p-кода, написанный на Free Pascal. Он нацелен на предоставление альтернативных решений для PHP и node.js, использующих либо паскаль стандарта ISO, либо гибрид, поддерживающий операторы JavaScript/C. Из CLI это полезно в качестве интерпретатора Free Pascal.
  • Turbo51 - это бесплатный компилятор Pascal для семейства микроконтроллеров 8051 с синтаксисом Turbo Pascal 7.
  • Oxygene (ранее известный как Chrome) - это компилятор Object Pascal для платформ .NET и Mono. Он был создан и продается RemObjects Software, и некоторое время продавался Embarcadero в качестве внутреннего компилятора Prism.
  • Kylix был потомком Delphi, с поддержкой операционной системы Linux и улучшенной объектной библиотекой. Это больше не поддерживается. Компилятор и IDE теперь доступны для некоммерческого использования.
  • GNU Pascal Compiler (GPC) - это компилятор Pascal из коллекции компиляторов GNU (GCC). Сам компилятор написан на C, библиотека времени выполнения в основном на Pascal. Распространяется по лицензии GNU General Public License, работает на многих платформах и операционных системах. Он поддерживает стандартные языки ANSI/ISO и частично поддерживает диалект Turbo Pascal. Одним из наиболее болезненных упущений является отсутствие 100% -го совместимого с Turbo Pascal (короткого) типа строки. Поддержка Borland Delphi и других языковых вариаций довольно ограничена. Однако есть некоторая поддержка Mac-паскаля.
  • Virtual Pascal был создан Виталием Мирьяновым в 1995 году как собственный компилятор OS / 2, совместимый с синтаксисом Borland Pascal. Затем он был коммерчески разработан компанией fPrint, добавив поддержку Win32, и в 2000 году он стал бесплатным. Сегодня он может компилироваться для Win32, OS/2 и Linux и в основном совместим с Borland Pascal и Delphi. Разработка была отменена 4 апреля 2005 года.
  • Компилятор P4, основа для многих последующих компиляторов, реализованных на языке Pascal. Он реализует подмножество полного Паскаля.
  • Компилятор P5, является ISO 7185 (полный Паскаль) адаптация P4.
  • Smart Mobile Studio - это компилятор из Паскаля в HTML5/Javascript
  • Turbo Pascal был доминирующим компилятором Pascal для ПК в 1980-х и начале 1990-х годов, популярным благодаря мощным расширениям и чрезвычайно короткому времени компиляции. Turbo Pascal был компактно написан и мог компилировать, запускать и отлаживать все из памяти без доступа к диску. В те времена медленные флоппи-дисководы были обычным явлением для программистов, что еще больше увеличивало преимущество Turbo Pascal в скорости. В настоящее время более старые версии Turbo Pascal (до 5.5) доступны для бесплатной загрузки с сайта Borland.
  • IP Pascal. Реализует язык «Pascaline» (названный в честь калькулятора Pascal), который является сильно расширенным Pascal, совместимым с оригинальным Pascal в соответствии с ISO 7185. Он включает в себя модули с управлением пространством имен, в том числе модули параллельных задач с семафорами, объектами, динамическими массивами любых типов. измерения, которые выделяются во время выполнения, перегрузки, переопределения и многие другие расширения. IP Pascal имеет встроенную библиотеку переносимости, специально адаптированную для языка Pascal. Например, стандартное приложение для вывода текста из оригинального Pascal 1970-х годов можно перекомпилировать для работы в окне и даже добавить графические конструкции.
  • Pascal-XT был создан Siemens для своих мэйнфреймовых операционных систем BS2000 и SINIX.
  • PocketStudio - это компилятор подмножеств Pascal и инструмент RAD для процессоров Palm OS и MC68xxx с некоторыми собственными расширениями, помогающими взаимодействовать с API Palm OS. Он напоминает Delphi и Lazarus с визуальным конструктором форм, инспектором объектов и редактором исходного кода.
  • MIDletPascal - компилятор Pascal и IDE, который генерирует небольшой и быстрый Java-байт-код, специально разработанный для создания программного обеспечения для мобильных телефонов.
  • Vector Pascal Vector Pascal - это язык для наборов инструкций SIMD, таких как MMX и AMD 3d Now, поддерживающих все процессоры Intel и AMD и Sony PlayStation 2 Emotion Engine.
  • Morfik Pascal позволяет разрабатывать веб-приложения, полностью написанные на Object Pascal (как на стороне сервера, так и на стороне браузера).
  • WDSibyl - визуальная среда разработки и компилятор Pascal для Win32 и OS/2
  • PP Compiler, компилятор для Palm OS, который работает непосредственно на КПК.
  • Компилятор CDC 6000 Pascal является исходным кодом для первого (CDC 6000) компилятора Pascal.
  • AmigaPascal - это бесплатный компилятор Pascal для компьютера Amiga [11,12].

3 РАЗРАБОТКА ПРОГРАММЫ СОРТИРОВКИ МАССИВОВ

3.1 Программа сортировки массива

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

В качестве среды программирования использовалась Embarcadero Delphi.

Среда Embarcadero Delphi представляет собой интегрированную оболочку разработчика, в которую входит набор специализированных программ, ответственных за разные этапы создания готового приложения. Delphi – язык и среда программирования, относящаяся к классу RAD-средств. Мощность и гибкость языка программирования Delphi – это важное достоинство языка, выгодно отличающее эту систему программирования от других инструментов RAD.

Среда предназначена для быстрой разработки прикладного ПО для операционных систем Windows, Mac OS X, а также iOS и Android. Благодаря уникальной совокупности простоты языка и генерации машинного кода, позволяет непосредственно, и, при желании, достаточно низкоуровнево взаимодействовать с ОС, а также с библиотеками, написанными на C/C++. Созданные программы независимы от стороннего ПО, как то Microsoft .NET Framework или Java Virtual Machine. Выделение и освобождение памяти контролируется в основном пользовательским кодом, что, с одной стороны, ужесточает требования к качеству кода, а с другой делает возможным создание сложных приложений с высокими требованиями к отзывчивости (работа в реальном времени). В кросс-компиляторах для мобильных платформ предусмотрен автоматический подсчёт ссылок на объекты, облегчающий задачу управления их временем жизни. На рисунке 2 представлен процесс разработки программы в среде AmbarcoderoDelphi.

Рисунок 1‑Разработка программы в среде Embarcadero Delphi

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

На рисунке 3 представлена упрощенная диаграмма состояний программы.


Рисунок 2‑ Состояния программы

На рисунке 4 представлена блок-диаграмма программы

Рисунок 4 ‑ Блок-схема программы

Интерфейс пользователя изображён на рисунке 5

Рисунок 5‑ Интерфейс пользователя программы

После нажатия кнопки «Сортировать» значение размера массива, введенное в поле «Введите размер массива» передается в 3 динамические массивы arr,arr2 и arr3. Ниже представлен код, реализующий этот процесс.

N := StrToInt(edit1.Text);

setlength(arr,N);

setlength(arr2,N);

setlength(arr3,N);

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

forI := 0 toN-1 do

begin

arr[I]:=Random(100);

arr2[I]:=arr[I];

arr3[I]:=arr[I];

end;

Значения первого массива выводятся на экран в элемент индикации Memo1.

Memo1.Clear();

for I := 0 to N-1 do

begin

Memo1.Lines.Add(IntToStr(arr[I]));

end;

Второй массив подвергается процедуре сортировке пузырьками. Во первых перед сортировкой обнуляются все счетчики, потом с помощью функций QueryPerformanceFrequency и QueryPerformanceCounter возвращаются значения тактовой частоты процессора и значение системного таймера, эти параметры нужны для вычисления времени выполнения участка кода. После выполнения сортировки QueryPerformanceCounter вызывается еще раз и по разнице значений системного таймера, частоте процессора и количестве итераций цикла вычисляется время работы цикла. Ниже представлена блок-схема этого метода сортировки (рисунок 6) и исходный код.

Рисунок 6 ‑ Блок-схема метода сортировки пузырьками

iter:=0;

ch:=0;

QueryPerformanceFrequency(Fr);

QueryPerformanceCounter(t0);

for j:= 0 to N do

begin

iter:=iter+1;

for i := 0 to N-j do

begin

iter:=iter+1;

if arr2[i]>arr2[i+1] then

begin

ch:=ch+1;

temp:=arr2[i];

arr2[i]:=arr2[i+1];

arr2[i+1]:= temp;

end;

end;

end;

QueryPerformanceCounter(t1);

dt := (t1-t0)/(N*Fr);

Третий массив сортируется методом вставок. На рисунке 7 представлена блок-схема этого метода.

Рисунок 7 ‑ Блок-схема метода сортировки вставками

Полностью программный код представлен в приложении А.

3.2 Тестирование программы