Файл: Основы программирования на языке Pascal (Вариант 15).pdf
Добавлен: 02.04.2023
Просмотров: 302
Скачиваний: 2
Введение
Актуальность исследования: Но на сегодняшний день существует большое количество языков программирования. Они подразделяются на языки программирования низкого и высокого уровней, а также специализированные языки программирования. В данной курсовой работе рассматривается один из наиболее популярных языков программирования высокого уровня Pascal, который, несмотря на свою концептуальную простоту, позволяет решать широкий круг задач.
Цель исследования: изучить основы языка программирования на языке Pascal.
Задачи исследования: изучить модификации программы, освоить синтаксис и особенности языка.
Объект исследования: программа Pascal.
О языке Pascal
Паскаль (англ. Pascal) — один из наиболее известных языков программирования, используется для обучения программированию в старших классах и на первых курсах вузов, является базой для ряда других языков.
Язык Паскаль был создан Никлаусом Виртом в 1968—1969 годах после его участия в работе комитета разработки стандарта языка Алгол-68. Язык назван в честь французского математика, физика, литератора и философа Блеза Паскаля, который создал первую в мире механическую машину, складывающую два числа. Первая публикация Вирта о языке датирована 1970 годом; представляя язык, автор в качестве цели его создания указывал построение небольшого и эффективного языка, способствующего хорошему стилю программирования, использующему структурное программирование и структурированные данные.
Последующая работа Вирта была направлена на создание на основе Паскаля языка системного программирования, с сохранением возможности вести на его базе систематический, целостный курс обучения профессиональному программированию. Результат этой работы — язык Модула-2.
Реализации и диалекты
UCSD Pascal
В 1978 году в Калифорнийском университете в Сан-Диего была разработана система UCSD p-System. Она включала порт компилятора Вирта с языка Паскаль в переносимый p-код, редактор исходных кодов, файловую систему и прочее, а также реализовывавшая значительное число расширений языка Паскаль, такие как модули, строки символов переменной длины, директивы трансляции, обработка ошибок ввода-вывода, обращение к файлам по именам и другое. Впоследствии основные реализации языка Паскаль основывались на этом диалекте.
Object Pascal
В 1986 году фирма Apple разработала объектное расширение языка Паскаль, получив в результате Object Pascal. Он был разработан группой Ларри Теслера, который консультировался с Никлаусом Виртом.
Turbo Pascal и Object Pascal
В 1983 году появилась первая версия интегрированной среды разработки Turbo Pascal фирмы Borland, основывавшаяся на одноимённой реализации Паскаля.
В 1989 году объектное расширение языка было добавлено в Turbo Pascal версии 5.5.
Последняя версия (7.0) была переименована в Borland Pascal.
Объектные средства были позаимствованы из Object Pascal от Apple, языковые различия между объектным Turbo Pascal 5.5 и Object Pascal от Apple крайне незначительны.
Почти в то же самое время, что и Borland, Microsoft выпустил свою версию объектно-ориентированного языка Паскаль. Эта версия Паскаля не получила широкого распространения.
Дальнейшее развитие реализации Паскаля от Borland породило вариант Object Pascal от Borland, впоследствии, в ходе развития среды программирования Delphi, получивший одноимённое название.
Современные версии Object Pascal
Важным шагом в развитии языка является появление свободных реализаций языка Паскаль Free Pascal и GNU Pascal, которые не только вобрали в себя черты множества других диалектов языка, но и обеспечили чрезвычайно широкую переносимость написанных на нём программ (например GNU Pascal поддерживает более 20 различных платформ, под более чем 10 различными операционными системами, Free Pascal обеспечивает специальные режимы совместимости с различными распространёнными диалектами языка, такими как Turbo Pascal (полная совместимость), Delphi и другими).
Начиная с Delphi 2003, создана реализация языка для платформы .Net, хотя разработчики продолжают использовать Delphi более ранних версий.
О коммерческих разработках на Free Pascal, GNU Pascal и TMT Pascal на данный момент известно мало. Кроме того, в Южном федеральном университете разработан PascalABC.NET — язык программирования Паскаль, включающий большинство возможностей языка Delphi, а также ряд собственных расширений.
Он основан на платформе Microsoft.NET и содержит практически все современные языковые средства: классы, перегрузку операций, интерфейсы, обработку исключений, обобщенные классы и подпрограммы, сборку мусора, лямбда-выражения.
Особенности языка
Особенностями языка являются строгая типизация и наличие средств структурного (процедурного) программирования. Паскаль был одним из первых таких языков. По мнению Вирта, язык должен способствовать дисциплинированному программированию, поэтому, наряду со строгой типизацией, в Паскале сведены к минимуму возможные синтаксические неоднозначности, а сам синтаксис автор постарался сделать интуитивно понятным даже при первом знакомстве с языком.
Тем не менее, первоначально язык имел ряд ограничений: невозможность передачи функциям массивов переменной длины, отсутствие нормальных средств работы с динамической памятью, ограниченная библиотека ввода-вывода, отсутствие средств для подключения функций, написанных на других языках, отсутствие средств раздельной компиляции и т.п. Подробный разбор недостатков языка Паскаль того времени был выполнен Брайаном Керниганом в статье «Почему Паскаль не является моим любимым языком программирования» [10] (эта статья вышла в начале 1980-х, когда уже существовал язык Модула-2, потомок Паскаля, избавленный от большинства его пороков, а также более развитые диалекты Паскаля). Некоторые недостатки Паскаля были исправлены в ISO-стандарте 1982 года, в частности, в языке появились открытые массивы, давшие возможность использовать одни и те же процедуры для обработки одномерных массивов различных размеров.
Однако многие недостатки языка не проявляются или даже становятся достоинствами при обучении программированию. Кроме того, по сравнению с основным языком программирования в академической среде 1970-х (которым был Фортран, обладавший гораздо более существенными недостатками), Паскаль представлял собой значительный шаг вперёд. К 1980-м годам Паскаль стал основой для многочисленных учебных программ, в отдельных случаях на его основе были созданы специализированные обучающие языки программирования, так, в начале 1980-х годов в СССР для обучения школьников основам информатики и вычислительной техники Андрей Ершов разработал алголо-паскалеподобный «учебный алгоритмический язык».
Наиболее известной реализацией Паскаля, обеспечившей широкое распространение и развитие языка, является Turbo Pascal фирмы Borland, выросшая затем в объектный Паскаль для DOS (начиная с версии 5.5) и Windows и далее в Delphi, в которой были внедрены значительные расширения языка.
Стандарты
После начала использования Паскаля в 1970 году и появления реализаций, расходящихся не только в дополнениях, но и в синтаксисе, был поднят вопрос о стандартизации языка. Стандарт языка был разработан Никлаусом Виртом в 1974 году совместно с Кетлин Йенсен (Kathleen Jensen). [11] В дальнейшем, были приняты международный стандарт от ISO и американский от ANSI. На данный момент, выделяют три принципиально разных стандарта: Unextended Pascal (исходный), Extended Pascal (расширенный), Object-Oriented Extensions to Pascal (объектно-ориентированное расширение Паскаля).
|
Название |
Вариант |
Кем/где разработан |
Год создания |
|
Pascal Standard |
Исходный |
Н. Вирт, Кетлин Йенсен |
1974 |
|
Pascal Standard |
Исходный |
ISO 7185:1983 ANSI/IEEE 770X3.97:1983 |
1982 |
|
Unextended Pascal |
Исходный |
ISO 7185:1990 |
1989 |
|
Extended Pascal |
Расширенный |
ANSI/IEEE 770X3.160:1989 |
1989 |
|
ISO/IEC 10206 |
1991 |
||
|
Object-Oriented Extension to Pascal |
Объектно-ориентированное расширение |
ANSI/X3-TR-13:1994 |
1993 |
Табл.Стандарты языка Pascal: исходный, международные ISO и американские ANSI
Одним из главных дополнительных свойств объектно-ориентированного расширения Extended Pascal стала модульность и средства, облегчающие раздельную компиляцию.
Стандартизация языка была запаздывающей по отношению к реальному появлению в языке тех или иных возможностей. Коммерческие реализации расширяли стандартный Паскаль; так было сделано в UCSD Pascal, модификации Object Pascal фирмой Apple, Turbo Pascal от Borland (незначительно модифицированная версия Apple) и его ответвлений. Ни одна из распространённых коммерческих реализаций Паскаля не соответствует в точности ни одному из официальных стандартов языка.
Синтаксис и языковые конструкции
Паскаль, в его первоначальном виде, представляет собою чисто процедурный язык и включает в себя множество алголоподобных структур и конструкций с зарезервированными словами наподобие if, then, else, while, for, repeat и т. д.
Тем не менее, Паскаль также содержит большое количество возможностей для структурирования информации и абстракций, которые отсутствуют в изначальном Алголе-60, такие как определение типов, записи, указатели, перечисления, и множества. Эти конструкции были частично унаследованы или инспирированы от языков Симула-67, Алгол-68, созданного Никлаусом Виртом AlgolW и предложены Хоаром.
В современных диалектах (Free Pascal) доступны такие операции, как перегрузка операторов и функций.
Hello, world!
Программы на Паскале начинаются с ключевого слова Program и следующего за ним имени программы с точкой с запятой (в некоторых диалектах является необязательным), за именем может в скобках следовать
список внешних файловых дескрипторов («окружение») в качестве параметров; за ним следует тело программы, состоящее из секций описания констант (Const), типов (Type), переменных (Var), объявлений процедур (Procedure) и функций (Function) и следующего за ними блока операторов, являющегося точкой входа в программу. В языке Паскаль блок ограничивается ключевыми словами begin и end. Операторы разделяются точками с запятой, после тела помещается точка, служащая признаком конца программы.
Регистр символов в Паскале не имеет значения.
Таким образом, простейшая («пустая») программа на Паскале будет выглядеть следующим образом:
program p;
begin
end.
Приведённая выше программа не выполняет никаких действий и содержит пустой блок операторов.
Пример программы, выводящей строку «Hello, world!»:
begin
writeln('Hello, World!'); { оператор вывода строки }
end.
Типы данных
В стандартном и расширенном Паскале есть такие простые типы:
- числа с плавающей запятой (real)
- целые(integer)
- символьный (char)
- логический (boolean)
- перечисления (конструктор нового типа, введённый в Pascal)
Turbo Pascal дополнил язык вариациями этих типов: например, shortint будет короче integer, а longint —
длиннее.
Современные диалекты Pascal, такие, как FPC или Delphi, считают, что integer — это наиболее подходящий для данной машины целый, применяемый, например, для индексов массива, а shortint, longint и другие - целые определённой длины; это удобно при кроссплатформенном программировании. Аналогично и с дробными числами.
Ещё раз расширили типы при переходе на x64 — «просто целое» (integer) осталось 32-битным, но потребовался особый тип, который равен longint на x86 и int64 на x64.
Целочисленные типы:
|
Тип |
Диапазон |
Формат |
Размер в байтах |
Примечания |
|
Byte |
0..255 |
Беззнаковый |
1 |
|
|
ShortInt |
-128...127 |
Знаковый |
1 |
|
|
SmallInt |
−32768..32767 |
Знаковый |
2 |
Может не существовать; вместо него Integer с тем же диапазоном |
|
Word |
0..65535 |
Беззнаковый |
2 |
|
|
LongWord |
0..4294967295 |
Беззнаковый |
4 |
|
|
LongInt |
−2147483648..2147483647 |
Знаковый |
4 |
|
|
Int64 |
−9223372036854775808..9223372036854775807 |
Знаковый |
8 |
|
|
Qword |
0..18446744073709551615 |
Беззнаковый |
8 |
|
|
Integer |
-32768..32767. |
Знаковый |
2 |
Наиболее быстрый целый; SmallInt или LongInt |
|
Cardinal |
? |
Беззнаковый |
? |
Наиболее быстрый целый; обычно LongWord |
|
NativeInt |
? |
Знаковый |
? |
Соответствует машинному регистру; LongInt или Int64 |
|
NativeUInt |
? |
Беззнаковый |
? |
Соответствует машинному регистру; LongWord или QWord |