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

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

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

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

Добавлен: 29.03.2023

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

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

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

#Функция преобразования текста в матрицу типа int16

def TextToMatrix(text):

text = Alignment(text)

steps = int(len(text) / 3)

data = np.zeros((steps, 3), dtype = np.int16)

for i in range(steps):

temp = text[3*i:3*i+3:1]

for j in range(3):

data[i][j] = ord(temp[j])

return(data)

Функция шифрования/дешифрования открывает текстовый файл, читает данные, преобразует их в совокупность векторов, шифрует/дешифрует с помощью умножения на матрицу шифрования/дешифрования, преобразует полученную совокупность векторов в текст и записывает этот текст в выходной файл.

Таблица 3 — Параметры функции EncryptOrDecrypt

Тип

Параметр

Описание

Входной

Matrix

Матрица шифрования/дешифрования

PathFirst

Путь к файлу с исходным текстом

Выходной

PathLast

Пусть выходному файлу

Text

Зашифрованный текст

#Функция шифрования/дешифрования текста

def EncryptOrDecrypt(Matrix, PathFirst, PathLast):

f = open(PathFirst, 'r')

text = f.read()

f.close()

DataMatrix = TextToMatrix(text)

Shape = DataMatrix.shape

CipheredMatrix = np.zeros((Shape[0], Shape[1]), dtype = np.int16)

for i in range(Shape[0]):

CipheredMatrix[i] = ( np.dot(Matrix, DataMatrix[i]) ) % Module

CipheredMatrix = CipheredMatrix.reshape(1,Shape[0]*Shape[1])

Text = ''

for i in range(CipheredMatrix.size):

Text = Text + chr(CipheredMatrix[0][i])

f = open(PathLast, 'w')

f.write(Text)

f.close()

return (Text)

Авторские выводы по третьей главе: В третьей главе был рассмотрен пример реализации алгоритма шифрования Хилла на языке программирования Pascal. В ходе реализации, студент впервые столкнулся с практическим применением данного ЯП. Характерно то, что Pascal является языком с небольшим обилием синтаксических конструкций. Это позволяет получить базовые знания по языку в короткое время 1-2 дня. После чего уже можно реализовывать небольшие скрипты. Особо стоит отметить большое количество дополнительных модулей, которые могут быть использованы для решения различного рода задач.

Заключение

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

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


В первой главе даётся краткая история и описание поколений языков прогрмирования, приводится их классификация. Особое внимание уделяется различиям между компилируемыми и интерпретируемыми ЯП, видам типизации, указываются преимущества и недостатки каждого из методов.

Современные высокоуровневые ЯП предоставляют программистам широкий спектр возможностей для создания приложений любой сложности. Различные стили исполнения программ позволяют находить баланс между скоростью и гибкостью исполнения программ на платформах различных архитектур.

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

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

Третья глава посвящена практической работе и в ней приводится пример реализации алгоритма шифрования Хилла на языке Pascal. В первую очередь приведено описание шифра Хилла и показан пример его математической реализации. Далее даётся описание основным функциям, написанным для реализации алгоритма Хилла. Большую работу на себя берёт модуль NumPy, избавляя программиста от написания функций линейной алгебры таких как, например, матричное умножение.

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

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

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


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

  1. Лутц М. Изучаем Pascal, 4-е издание. – Пер. с англ. – СПб.: Символ-Плюс, 2011. –. 1280 с., ил.
  2. Бизли Д. Pascal. Подробный справочник. – Пер. с англ. – СПб.: Символ-Плюс, 2017. – 864 с., ил.
  3. Мэтт Вайсфельд Объектно-ориентированное мышление. СПб.: Питер, 2014. — 304 с. — 4-е изд.
  4. The First Programmable Machine & the Earliest Known Mechanical Musical Instrument: [Электронный ресурс], — URL: [http://www.historyofinformation.com/expanded.php?id=699] (дата обращения: 01.08.2017)
  5. Ettinger, James (2004) Jacquard's Web, Oxford University Press
  6. J. Fuegi and J. Francis (October–December 2003), "Lovelace & Babbage and the creation of the 1843 'notes'", Annals of the History of Computing,
  7. Fundamentals of Computer Systems: Generations of programming language: [Электронный ресурс], — URL: [https://en.wikibooks.org/wiki/A-level_Computing/AQA/Computer_Components,_The_Stored_Program_Concept_and_the_Internet/Fundamentals_of_Computer_Systems/Generations_of_programming_language] (дата обращения: 01.06.2020)
  8. General Pascal FAQ. Pascal Software Foundation. Retrieved 22 March 2007.
  9. Kuhlman, Dave. "A Paascal Book: Beginning Python, Advanced Python, and Python Exercises".
  10. Van Rossum, Guido (20 January 2019). "A Brief Timeline of Python". The History of Python. Google. Retrieved 20 January 2009.
  11. Kuchling, A. M.; Zadka, Moshe (16 October 2000). "What's New in Python 2.0". Python Software Foundation. Retrieved 11 February 2012.
  12. Python Metaclasses: Who? Why? When?: [Электронный ресурс], — URL: [http://www.webcitation.org/5lubkaJRc] (дата обращения: 01.08.2017)
  13. "3.3. Special method names". The Python Language Reference. Python Software Foundation. Retrieved 27 June 2019.
  14. Hettinger, Raymond (30 January 2002). "PEP 289 – Generator Expressions". Python Enhancement Proposals. Python Software Foundation. Retrieved 19 February 2012.
  15. "6.5 itertools – Functions creating iterators for efficient looping". Docs.python.org. Retrieved 22 November 2016.
  16. Peters, Tim (19 August 2004). "PEP 20 – The Zen of Python". Python Enhancement Proposals. Python Software Foundation. Retrieved 24 November 2018.
  17. Venners, Bill (13 January 2003). "The Making of Python". Artima Developer. Artima. Retrieved 22 March 2007.
  18. Eby, Phillip J. (7 December 2013). "PEP 333 – Python Web Server Gateway Interface v1.0". Python Enhancement Proposals. Python Software Foundation. Retrieved 19 February 2012.
  19. Enthought, Canopy. "Canopy". www.enthought.com. Retrieved 20 August 2016.
  20. "STM with threads". Morepypy.blogspot.be. 10 June 2012. Retrieved 3 December 2016.
  21. Warsaw, Barry; Hylton, Jeremy; Goodger, David (13 June 2000). "PEP 1 – PEP Purpose and Guidelines". Python Enhancement Proposals. Python Software Foundation. Retrieved 19 April 2016.
  22. "Python Buildbot". Python Developer’s Guide. Python Software Foundation. Retrieved 24 September 2017.
  23. TIOBE Index for August 2017: [Электронный ресурс], — URL: [https://www.tiobe.com/tiobe-index/] (дата обращения: 25.07.2017)
  24. Prechelt, Lutz (14 March 2000). "An empirical comparison of C, C++, Java, Perl, Python, Rexx, and Tcl" (PDF). Retrieved 30 August 2013.
  25. Введение в криптографию / Под общ. ред. В. В. Ященко. — 4-е изд., доп. М.: МЦНМО, 2012. — 348 с
  26. Modular inverse of a matrix: [Электронный ресурс], — URL: [https://planetcalc.com/3324/] (дата обращения: 01.08.2017)
    1. V. N. Krishna, Dr. A. Vinaya Babu A Modified Hill Cipher Algorithm for Encryption of Data In Data Transmission (англ.) // Computer Science and Telecommunications : Georgian Electronic Scientific Journal. — 2007. — № 3(14). — С. 78—83.
  27. А. П. Алферов, А. Ю. Зубов, А. С. Кузьмин, А. В. Черёмушкин. Основы криптографии. — 2-е изд. — Гелиос АРВ, 2002. — С. 115-119. — 480 с.
  28. U.S. Patent 1 845 947: [Электронный ресурс], — URL: [http://www.google.com/patents/US1845947] (дата обращения: 01.08.2017)
  29. Friedrich L. Bauer. Decrypted Secrets: Methods and Maxims of Cryptology. — Springer, 2002. — С. 85. — 474 с