Изучение и использование основных возможностей языка Pascal в рамках одной программы

в 1:37, , рубрики: open source, Pascal, PascalABC, исследование, Лабиринт, Программирование, разработка, метки: , , ,

Наливайте чай, доставайте печеньки. Надолго я вас задерживать не буду.

Введение

Как известно, для обучения программированию очень часто используют язык Pascal, потому что этот язык программирования позволяет наиболее легко понять основные структуры, используемые во всех языка программирования. Причем не только в школах, но и в СУЗах и даже ВУЗах. Изучая возможности этого языка на протяжении довольно длительного времени (около 3х лет) и в различных средах (от Borlad Pascal до Pascal ABC) перед переходом к изучению других языков программирования я задался целью реализовать большую часть возможностей языка Pascal в одной программе.

Цели и задачи проекта

Цель

Создать программу, используя большинство возможностей языка программирования Pascal.

Задачи
  1. Выбрать среду программирования.
  2. Определить тему и создать сценарий программы.
  3. Изучить различные возможности языка Pascal.
  4. Создать программу.
  5. Протестировать программу.

Исследование для выбора среды программирования.

Перед тем, как писать программу, было необходимо определиться со средой, в которой она будет реализовываться. Я решил сравнить три доступных для меня среды программирования: «Pascal ABC», «Free Pascal» и «Borland Pascal». Так как все эти среды обладают необходимыми стандартными функциями и возможностями (ввод/вывод данных, использование сложных алгоритмических структур, стандартные процедуры и функции и процедуры и функции пользователя, операции с различными типами данных от целых чисел до массивов и файлов), то я решил «копнуть глубже», и сравнить эти среды по «дополнительным показателям».
Исходя из собственного опыта, а также при помощи информации с различных Интернет источников, я определил критерии и выполнил сравнение сред (результаты представлены в таблице 1).

I. Дружественный, понятный интерфейс:

1. Правильное отображение русских символов. Во «Free Pascal» при написании кода программы, пользователь не имеет возможности просматривать русские символы, так как они отображаются символами «Dos». Это значительно ухудшает возможность редактирования русского текста, выводимого в программе.

2. Язык среды. «Pascal ABC» обладает возможностью выбора языка (Русский, Английский) панели меню и описания ошибок. Что значительно упрощает возможность написания программ для Русских пользователь. В остальных средах язык только Английский.

image

3. Подробная справка, понятная справочная система. «Pascal ABC» обладает, подробной, удобной, структурированной справкой. Благодаря тому, что справка в «Pascal ABC» разбита на тематические блоки, в ней достаточно легко ориентироваться. Чего не скажешь о справке «Borland Pascal», которая так же русскоязычная, но разбита не по блокам, а по командам. Что удобно для опытных пользователей, которым нужно найти конкретный оператор и пример его использования. Есть возможность перехода к оператору той же группы действия. И не удобна начинающим пользователям, которым надо найти оператор для конкретной ситуации, не зная его названия, лишь его тематику. «Free Pascal» справочная система почти никак не структурированная, на английском языке и нет возможности перехода к оператору той же группы действия.

4. Использование функций редактирования и клавиатурных сокращения. В «Pascal ABC» есть возможность использовать привычные клавиатурные сокращения Windows, для копирования, перемещения, выделения текста. «Borland Pascal» тоже обладает теми же функциями, но операции копировать – вставить и подобные совершаются другими клавиатурными сокращениями, к которым придётся привыкать. «Free Pascal» не имеет возможности быстро и корректно выделить текст, а, следовательно, и совершить какие-либо операции с ним.

5. Настройка внешнего вида среды. «Borland Pascal» обладает возможностью менять цвет фона, для более приятного использования. А «Free Pascal» не обладает этой функцией. Но только «Pascal ABC» обладает возможностью менять цвета подсветки кода, размера шрифта, размера окна (рисунок 1).

image
Рисунок 1.

6. Подсветка кода. Этой функцией обладают все среды выше представленные среды. Идентификаторы подсвечиваются другим цветом.

II. Дополнительные функции:

1. Работа с мышью. Операторы работы с мышью есть во всех средах. Работа в каждой среде требует знания разных команд, но, на мой взгляд, общая суть управление манипулятором «мышь» не имеет больших отличий.
2. Работа с графикой. Функции и процедуры работы с графикой доступны во всех средах, это круг, квадрат, линия, размер окна. Но в «Pascal ABC» параметры задаются не так как в «Borland Pascal» и «Free Pascal», а так, же везде используются разные команды.
3. Работа с изображениями. Работа с изображениями из файла (вставка, перемещение, изменение размера), доступно только в «Pascal ABC» (Рисунок 2).

image
Рисунок 2.

4. Работа с текстом в графическом режиме. Только «Pascal ABC» позволяет задать тип, размер, шрифт, цвет текста, а так же настроить попиксельно его положение в программе и задать размер окна программы.

III. Работа со звуком.

1. Системный динамик. В «Borland Pascal» есть возможность программировать системный динамик. В остальных средах этой возможности нет.
2. Вставка звука из файла. «Pascal ABC» обладает процедурами и функциями, для вставки музыки (.wav) из файла. (Рисунок 3).

image
Рисунок 3.

IV. Бесплатное распространение.

«Pascal ABC» — существуют две версии: свободно распространяемая и коммерческая.
«Free Pascal» — распространяется свободно.
«Borland Pascal» — коммерческая.

V. Наличие компилятора

«Pascal ABC» не имеет встроенного компилятора и не может создавать (*.exe) файлы. А «Free Pascal» и «Borland Pascal» имеют встроенный компилятор и могут создавать (.exe) файлы.

Сравнив по представленным выше критериям среды для программирования на языке Pascal: «Free Pascal», «Borland Pascal» и «Pascal ABC». Я сделал вывод, что для создания программы с большинством возможных функций языка Pascal и что бы я мог легко ориентироваться в коде программы. А так же что бы эта среда распространялась бесплатно. Я подвёл итоги и решил написать свою программу в среде «Pascal ABC» хоть она и не делает (*.exe) файлы, но обладает удобной оболочкой, хорошей справкой, и позволяет добавлять различные функции программе, недоступные в других средах.

Описание программы

Саму программу можно скачать: Здесь

Программа представляет собой, сборник из 3х игр.

1ая игра — лабиринт. Для победы необходимо собрать некое количество монет (оно различно), указанное в мини справке в правом углу экрана, при этом нужно избегать бомб, через стены пройти нельзя.
Элементы игры: бомбы (противники, движутся в случайном направлении), монетки (нужно собрать для победы), телепорты (перемещают игрока в клетку другого телепорта, в том числе и в текущую).
2ая и 3я игры — подобны (гонки и молекулы), обе программы представляют собой «игры на везение» пользователь до начала игры выбирает, какая машина или молекула достигнет финиша первой (машины: правый конец экрана, молекулы: границы сосуда, экрана). А в конце пользователю объявляется, какой № выиграл и, соответственно, угадал он или нет.
Программа записывает данные пользователя, запрашиваемые в начале работы программы, в текстовый файл.

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

Раздел меню «звук» позволяет выбрать музыку для весёлой или спокойной игры, моя программа позволяет выбирать 1 из 3 треков или работать без звука.

Так же в меню присутствует одна из самых важных кнопок в программе — «выход».

Описание среды и средств программирования

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

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

Repeat
Textout (200, 130,'1. Лабиринт');
Textout (200, 160,'2. Гонки.');
gotoxy (36,23); readln(x12);
If x12='1' then play1;
If x12='2' then play2;
until x12='7';

Цикл while и оператор выбора case для создания лабиринта.
Реализована вставка картинок из файла.

picture:=LoadPicture('datapicture4.jpg');
DrawPicture(picture,380,110,228,180);

В программе использованы процедуры и функции модулей: модуля crt для оформления текстов и очистки экрана;

textcolor(4);
gotoxy(22,8);
Writeln('"Прямоугольники" справка:');

модуля graphABC для оформления программы: вставки различных геометрических фигур, создания рамок, графического оформления текста, вставки объектов графики;

procedure ramka;
begin
clrscr;
SetPenColor(clRed);
Rectangle(9,12,629,387);
SetPenColor(clLime);
Rectangle(19,22,619,377);
end;

модуля Sounds для подключения звука к программе.

z:=LoadSound('datamuzlife is real.wav');
PlaySound(z);

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

Сложные (массивы, строки, файлы)

Для создания лабиринта: массивы и файлы (для сохранения данных пользователя и сохранения самой игры). Строки и цикл repeat для защиты от ошибок пользователя. Так же для запроса имени игрока после его победы или проигрыша.

gotoxy(5,10);textcolor(3);writeln('Введите вашу фамилию:');
gotoxy(20,12);textcolor(1);readln(dinam_1^);
gotoxy(9,14);textcolor(3);writeln('Введите ваше имя:');
gotoxy(20,16);textcolor(1);readln(dinam_2^);

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

textcolor(4);
gotoxy(22,8);

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

repeat
textout(200,130,'1. Лабиринт');
textout(200,160,'2. Гонки.');
textcolor(3);
SetFontSize(12);
SetFontStyle(0);
gotoxy(36,23);readln(x12);
if x12='1' then play1;
if x12='2' then play2;
until x12='7';

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

В программе реализованная база данных по итогам игр при помощи динамических списков.

New(dinam_sp_1);
readln(fil,dinam_sp_1^.name);
readln(fil,dinam_sp_1^.sname);
readln(fil,dinam_sp_1^.rez);
dinam_sp_1^.next:=nil;
while not eof(fil) do
begin
new(dinam_sp_2);
str(dop_1_1,dop_2_1);
readln(fil,dinam_sp_2^.name);
readln(fil,dinam_sp_2^.sname);
readln(fil,dinam_sp_2^.rez);
dinam_sp_2^.next:=dinam_sp_1;
dinam_sp_1:=dinam_sp_2;
dop_1_1:=dop_1_1+1;

Выводы

В ходе работы была выбрана наиболее оптимальная среда программирования, позволяющая максимально эффективно использовать возможности языка Pascal.
А также была создана программа «Сборник игр»

Список литературы

1. Справка среды программирования Pascal ABC.
2. Открытые источники Интернет:
ru.wikipedia.org/wiki/FPC
www.cyberforum.ru/pascal/
www.cyberforum.ru/pascal/thread60157.html
translated.by/you/free-pascal-user-s-guide/into-ru/?page=21
tpdn.ru/files/103/?PAGEN_1=2&sid=103
www.cyberforum.ru/pascalabc/thread120741.html
citforum.ru/programming/bp70_ug/index.shtml
www.helloworld.ru/texts/comp/lang/pascal/bp70/bp70ug_02.htm
www.sai.msu.su:7000/programming/bp70_lr/lr1.shtml
3. Открытые web книги:
pascal.proweb.kz/index.php?page=3
www.tp7.info/ebook.php
roinet.narod.ru/op/DocumentsTP/tp6userg.doc/index3.htm

Автор: xkelx

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js