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

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

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

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

Добавлен: 31.03.2023

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

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

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

Например, нужно написать генератор паролей на 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 с.