Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Основы программирования на языке Pascal (Характеристика языка программирования Pascal)

Содержание:

Введение

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

Язык программирования Pascal активно используется для обучения алгоритмизации и решения учебных задач. Современная трансформация языка программирования Pascal – Delphi, который уже является объектно-ориентированным и при помощи него можно решать профессиональные задачи и разрабатывать сложные программные системы.

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

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

Объект исследования – язык программирования Pascal.

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

Целью данной работы является изучение основ программирования на Pascal.

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

– описать язык программирования Pascal;

– описать состав языка программирования Pascal;

– выполнить постановку задачи;

– разработать программу генерации случайных чисел.

1. Теоретическая часть

1.1. Характеристика языка программирования Pascal

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

Особенностями языка являются строгая типизация и наличие средств структурного (процедурного) программирования. Паскаль был одним из первых таких языков [1]. По мнению Вирта, язык должен способствовать дисциплинированному программированию, поэтому, наряду со строгой типизацией, в Паскале сведены к минимуму возможные синтаксические неоднозначности, а сам синтаксис автор постарался сделать интуитивно понятным даже при первом знакомстве с языком.

Наиболее известной реализацией Паскаля, обеспечившей широкое распространение и развитие языка, является Turbo Pascal фирмы Borland, выросшая затем в объектный Pascal для DOS (начиная с версии 5.5) и Windows и далее в Delphi, в которой были внедрены значительные расширения языка [6].

PascalABC.NET представляет собой язык программирования Pascal нового поколения, который включает в себя классический Pascal, большую часть функциональных возможностей языка программирования Delphi, а также ряд собственных специализированных расширений. PascalABC.NET реализован на базе использования платформы Microsoft.NET и включает все современные языковые средства, среди которых можно выделить: классы, перегрузку операций, интерфейсы, обработку исключений, обобщенные классы и подпрограммы, сборку мусора, лямбда-выражения, средства параллельного программирования.

PascalABC.NET является мультипарадигменным языком программирования: на нём можно разрабатывать программы в структурном, объектно-ориентированном и функциональном стилях.

В тоже время, PascalABC.NET представляет собой простую и мощную интегрированную среду разработки, которая поддерживает уникальную технологию IntelliSense, которая содержит в себе специализированные средства автоформатирования, встроенный отладчик и дизайнер форм. Кроме того, консольный компилятор PascalABC.NET может работать в операционной системе Linux и MacOS под Mono [10].

Среди ключевых особенностей PascalABC.NET можно выделить следующие:

– ряд расширений языка программирования Pascal, в числе которых оператор foreach, внутриблочные описания переменных, автоопределение типа при описании, встроенные множества произвольных типов, case по строкам, упрощенный синтаксис модулей, методы в записях, операция new для создания объектов, определение тел методов внутри классов, целые произвольной длины, многомерные динамические массивы;

– самые современные средства языков программирования, среди которых выделяются: обобщенные классы и подпрограммы, интерфейсы, перегрузка операций, лямбда-выражения, исключения, сборка мусора, методы расширения, безымянные классы, автоклассы;

– генерация эффективного программного кода для технологической платформы .NET;

– реализована высокая совместимость с языком программирования Delphi;

– реализована высокая скорость выполнения разрабатываемых программ;

– возможность осуществления доступа к большому количеству .NET-библиотек от контейнерных классов до специализированных средств работы с компьютерной вычислительной сетью;

– среда разработки с встроенным отладчиком, обеспечивающая необходимые подсказки по программному коду, переход к определению и реализации необходимой подпрограммы, шаблоны кода, автоформатирование кода [7];

– встроенный в среду разработки PascalABC.NET специализированный дизайнер форм для быстрого создания оконных прикладных программных приложений;

– реализована простая и эффективная растровая графическая библиотека функций;

– средства параллельного программирования в виде специальных директив OpenMP;

– встроенный электронный задачник Programming Taskbook с набором программ;

– модули исполнителей Робот и Чертежник, используемых в школьной информатике;

– механизм проверяемых заданий, обеспечивающий автоматическую постановку и проверку заданий;

– возможность непосредственного запуска консольного компилятора под Mono в современных версиях операционной системы Linux, возможность встраивания PascalABC.NET в редактор Geany [9].

Система PascalABC.NET является совместной разработкой российских и немецких программистов. В Российской Федерации центр разработки находится в институте математики, механики и компьютерных наук Южного федерального университета;

PascalABC.NET активно используется в большом количестве средних и высших учебных заведений Российской Федерации и ближнего зарубежья. Так, на мехмате Южного федерального университета PascalABC.NET используется для осуществления обучения 1 курса направления Фундаментальная информатика и информационные технологии в курсе Основы программирования, а также для непосредственного обучения школьников в одной из самых больших в России Детской компьютерной школе.

1.2. Состав языка программирования Pascal

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

Наиболее известной реализацией Паскаля, обеспечившей широкое распространение и развитие языка, является Turbo Pascal фирмы Borland, выросшая затем в объектный Паскаль для DOS (начиная с версии 5.5) и Windows и далее в Delphi, в которой были внедрены значительные расширения языка [3].

Паскаль, в его первоначальном виде, представляет собою чисто процедурный язык и включает в себя множество алголоподобных структур и конструкций с зарезервированными словами наподобие if, then, else, while, for, repeat и т. д.

В стандартном и расширенном Паскале есть такие простые типы: числа с плавающей запятой (real), целые (integer), символьный (char), логический (boolean) и перечисления (конструктор нового типа, введённый в Pascal) [4].

Turbo Pascal дополнил язык вариациями этих типов: например, shortint будет короче integer, а longint – длиннее.

Современные диалекты Pascal, такие, как FPC или Delphi, считают, что integer ­– это наиболее подходящий для данной машины целый, применяемый, например, для индексов массива, а shortint, longint и другие – целые определённой длины; это удобно при кроссплатформенном программировании. Аналогично и с дробными числами [5].

Для порядковых типов определены операции inc, dec, succ, pred, ord, операции сравнения (=>, <=>, <=, <>), их можно использовать в операторах case, for (как счётчик цикла), как границы массивов, для задания элементов множеств и типов-диапазонов [8].

В Pascal, в отличие от Си-подобных языков, с типами boolean и char арифметические целочисленные операции не определены [2].

Таким образом, анализируя возможности языка программирования Pascal и в частности PascalABC.NET можно сделать вывод о том, что данный язык программирования включает достаточное количество функциональных возможностей для разработки прикладных программ начального уровня. Например, в качестве примера демонстрации возможностей языка программирования можно разработать программу генерации случайных чисел при помощи функций random() и randomize().

2. Практическая часть

2.1. Постановка задачи

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

2.2. Разработка программ генерации случайных чисел

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

Для этого необходимо ввести специальный оператор randomize в промежутке после begin и до random (обычно оператор randomize ставится сразу после begin, так как это позволяет существенно упростить читаемость программного кода). Затем идет присвоение оператора random к выбранной переменной.

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

оператор:= random (max-min+1)+min;

– оператор - любая программная переменная;

– min - целое число, не превышающее значение max;

– max - целое число, большее значения min.

В представленном описании min и max являются диапазонами генератора случайных чисел.

Теперь для наглядности пример генератора случайных чисел от 2 до 5. Блок-схема реализации алгоритма может быть представлена следующим образом, рис. 1.

Рисунок 1 – Блок-схема алгоритма

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

var x:integer;

begin

randomize;

x :=random (4)+2;

write (x:5);

end.

Здесь 4 - это результат выражения 5-2+1.

Результат выполнения программы представлен в виде скриншота программы PascalABC.NET, рис. 2.

Рисунок 2 – Результат выполнения программы

Реализуя аналогичную прикладную программы для языка программирования PascalABC.NET необходимо внести некоторые изменения в работу программы.

Здесь можно применять оператор random так же как и для Turbo Pascal, однако есть еще один вариант, более простой в своем практическом использовании.

оператор:= random (min,max);

– оператор - любая переменная;

– min - целое число, не превышающее max;

– max - целое число, большее min.

Чтобы разница лучше просматривалась, можно решить тот же пример генератора случайных чисел от 2 до 5. Блок-схема реализации алгоритма может быть представлена следующим образом, рис. 3.

Исходный код программы на языке программирования PascalABC.NET примет такой вид

var x:integer;

begin

randomize;

x :=random (2,5);

write (x:5);

end.

Результат выполнения приведенной программы представлен в виде скриншота программы PascalABC.NET, рис. 4.

Рисунок 3 – Блок-схема алгоритма

Как уже стало заметно второй способ гораздо проще реализовать, однако его можно использовать только в PascalABC.NET.

Рассмотрим еще несколько практических примеров реализации генератора случайных чисел.

Например, нужно написать генератор паролей на 10 символов (английских букв и цифр).

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

– randomize();

– random().

Рисунок 4 – Результат выполнения программы

Программный код генератора паролей на 10 символов примет следующий вид

var s:string;

i,k:byte;

begin

randomize;

s:='';

for i:=1 to 10 do

begin

repeat

k:=48+random(75);

until k in [48..57,97..122];

s:=s+chr(k);

end;

write(s);

end.

Результат выполнения приведенной программы представлен на следующем рис. 5.

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

Рассмотрим следующий пример, демонстрирующий реализации генератора случайных чисел для решения конкретной аналитической задачи средствами языка программирования Pascal.

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

Пример исходной таблицы значений:

а б в г д е ё ж з и й к л м н о п

р с т у ф х ц ч ш щ ъ ы ь э ю я -

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

Сообщение: степень выполнения работы

Шифр: вх-хюл тк-яьюхющо арсявк

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

var

a, c, cOut: string;

i,j,L: integer;

begin

a := 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя-';

write('Enter string:');

readln(c);

L:=length(a) div 2;

setlength(cOut,length(c));

for i := 1 to length(c) do

begin

for j := 1 to length(a) do

begin

if c[i]=a[j] then

if j>L then cOut[i]:=a[j-L]

else cOut[i]:=a[j+L];

end;

end;

writeln('Result:', cOut);

end.

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

Рисунок 6 – Результат выполнения программы

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

Обозначим этот массив как A(52). Каждый элемент массива – A(I). Где I – это номер символа в массиве, I изменяется от 1 до 52.

A(I)=''a,b,c,d,e..."

Перемешаем исходный алфавит и можно получить следующий например

B(I)=''d,f,g,h,o..."

Используем исходный массив B(52) в виде специального ключа для шифрования.

Текст для осуществления шифрования возьмем произвольно, например, «студент». Определяем номер первой буквы текста в исходном алфавите: a=A(1).

В зашифрованный файл первой буквой записываем букву с тем же номером из перемешанного алфавита, а то есть B(1)=A(1)=d.

То есть, например, в этом случае последовательность abd шифруется как dfh. Исходный код программы шифрования файла алфавитом примет следующий вид

const alh1: array[0..51] of char =

('a', 'b', 'c', 'd', 'e', 'f',

'g', 'h', 'i', 'j', 'k', 'l',

'm', 'n', 'o', 'p', 'q', 'r', 's',

't', 'u', 'v', 'w', 'x', 'y', 'z',

'A', 'B', 'C', 'D',

'E', 'F', 'G', 'H', 'I', 'J', 'K',

'L', 'M', 'N', 'O', 'P', 'Q', 'R',

'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z');

var i, mk, j, dlina, nk: integer;

f11: string;

f1,f2: text;

alh2: array[0..51] of char;

newtext: string;

buf: char;

begin

Randomize;

for i:=0 to 51 do alh2[i] := alh1[i];

writeln(alh1);

i:=0;

while i < 52 do

begin

mk := random(51);

buf := alh2[i];

alh2[i] := alh2[mk];

alh2[mk] := buf;

i := i + 1;

end;

writeln(alh2);

assign(f1, 'c:\file1.txt');

reset(f1);

readln(f1, f11);

close(f1);

writeln(f11);

dlina := length(f11);

newtext := '';

j := 1;

while j <= dlina

do begin

nk := 0;

while nk <= 51

do begin

if f11[j] = alh1[nk]

then begin newtext := newtext + alh2[nk];

end;

nk := nk + 1;

end;

j := j + 1;

end;

assign(f2, 'c:\file2.txt');

rewrite(f2);

writeln(f2,newtext);

close(f2);

writeln(newtext);

readln;

end.

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

Приведем еще один интересный пример шифрования данных по средствам использования шифра Цезаря.

Шифр Цезаря, также известный как шифр сдвига, код Цезаря или сдвиг Цезаря – один из самых простых и наиболее широко известных методов шифрования.

Шифр Цезаря – это вид шифра подстановки, в котором каждый символ в открытом тексте заменяется символом, находящимся на некотором постоянном числе позиций левее или правее него в алфавите. Например, в шифре со сдвигом вправо на 3, А была бы заменена на Г, Б станет Д, и так далее.

Шифр назван в честь римского полководца Гая Юлия Цезаря, использовавшего его для секретной переписки со своими генералами.

Шаг шифрования, выполняемый шифром Цезаря, часто включается как часть более сложных схем, таких как шифр Виженера, и всё ещё имеет современное приложение в системе ROT13. Как и все моноалфавитные шифры, шифр Цезаря легко взламывается и не имеет почти никакого применения на практике.

Так, алгоритм шифрования примет следующий вид

var

lalp: integer;

const

alp = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя' +

'АБВГДЕЁЖЗИЙКЛМНПОРСТУФХЦЧШЩЪЫЬЭЮЯ' + 'abcdefghijklmnopqrstuvwxyz' +

'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + '0123456789';

function Caesar_cipher(str: string; way: integer; key: integer): string;

var

s: string;

i, t, p: integer;

begin

if way > 0 then

key := -key;

key := key mod lalp;

if key = 0 then

begin

writeln('Error: wrong key (key not equals zero and not divisible by ',

lalp, ')');

Caesar_cipher := str;

exit;

end;

s := str;

p:= random(1);

for i := 1 to length(str) do

begin

t := pos(str[i], alp);

if t <> 0 then

s[i] := alp[(t - 1 + key + lalp) mod lalp + 1];

end;

Caesar_cipher := s;

end;

begin

randomize;

lalp := length(alp);

writeln(Caesar_cipher('Программировать просто', 0, 12));

readln;

end.

Результат выполнения разработанной программы представлен на рис. 7.

Рисунок 7 – Результат выполнения программы

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

Заключение

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

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

Анализируя возможности языка программирования Pascal и в частности PascalABC.NET был сделан вывод о том, что средств в нем для разработки прикладных программ достаточно. И в качестве примера был реализован генератор случайных чисел при помощи внутренних функций random() и randomize().

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

  1. Архитектура и проектирование программных систем : монография / С.В. Назаров. – 2-е изд., перераб. и доп. – М. : ИНФРА-М, 2018. – 374 с.
  2. Архитектура ЭВМ и вычислительные системы : учебник / В.В. Степина. – М.: КУРС: ИНФРА-М, 2018. – 384 с.
  3. Баранова Е.К. Информационная безопасность и защита информации : учебное пособие / Е. К. Баранова, А. В. Бабаш. - 3-е изд., перераб. и доп. – М. : РИОР ; М. : ИНФРА-М, 2017. – 322 с.
  4. Борзунов С.В. Практикум по параллельному программированию: учеб. пособие / С.В. Борзунов, С.Д. Кургалин, А.В. Флегель. – СПб.: БХВ, 2017. – 236 с.
  5. Информатика : учебник / И.И. Сергеева, А.А. Музалевская, Н.В. Тарасова. – 2-е изд., перераб. и доп. – М. : ИД «ФОРУМ» : ИНФРА-М, 2018. – 384 с.
  6. Информатика и ИКТ : учеб. пособие / Н.Г. Плотникова. – М. : РИОР : ИНФРА-М, 2018. – 124 с.
  7. Информационные технологии в профессиональной деятельности : учеб. пособие / Е.Л. Федотова. – М. : ИД «ФОРУМ» : ИНФРА-М, 2018. – 367 с.
  8. Программирование в алгоритмах / Окулов С.М., – 6-е изд., (эл.) - М.:Лаборатория знаний, 2017. – 386 с.
  9. Программирование на языке высокого уровня. Программирование на языке Object Pascal : учеб. пособие / Т.И. Немцова, С.Ю. Голова, И.В. Абрамова ; под ред. Л.Г. Гагариной. – М. : ИД «ФОРУМ» : ИНФРА-М, 2018. – 496 с.
  10. Федорова Г.Н. Разработка, внедрение и адаптация программного обеспечения отраслевой направленности: учеб. пособие для студ. учреждений сред. проф. образования / Г.Н. Федорова. –: М.: КУРС : ИНФРА – М, 2017. – 334 с.

Приложение

Результат выполнения программы шифрования файла алфавитом