Турбо паскаль что это за программа для чего

Язык программирования TurboPascal

Turbo Pascal. Основные понятия и элементы языка

Первая версия языка программирования Паскаль была разработана на кафедре информатики Стэнфордского университета швейцарским ученым Никласом Виртом в 1968 году. Предложенный им язык назван в честь французского ученого Блеза Паскаля, который изобрел первую в мире вычислительную машину. Язык Паскаль создавался как средство для обучения студентов программированию.

В 1979 году был утвержден международный стандарт языка Паскаль. Дальнейшее развитие языка Паскаль связано с американской корпорацией Borland International. На основе стандартного языка Паскаль была разработана система программирования Турбо Паскаль. С этого момента язык Турбо Паскаль становится одним из наиболее важных и широко используемых языков программирования. Сегодня Турбо Паскаль не только профессиональная система программирования, но и классический язык обучения студентов основам программирования.

Основные понятия и элементы языка

Состав языка

В тексте на любом языке можно выделить четыре основных элемента: символы, слова, словосочетания, предложения. Аналогичные элементы содержит и алгоритмический язык Паскаль, только слова называются – лексемами, словосочетания – выражениями, а предложения – операторами. Лексемы образуются из символов, выражения – из лексем, а операторы – из символов, лексем и выражений.

Алфавит языка

Алфавит языка Турбо Паскаль включает:

а также символы, которые записываются как единое целое:

Каждому символу алфавита соответствует индивидуальный числовой код от 0 до 255. Символы с кодами от 0 до 127 образуют основную таблицу ASCII. Их состав и порядок определены международным стандартом. Символы с кодами от 128 до 255 образуют расширенную таблицу кодов ASCII. В ней находятся символы национального языка (для России – русского языка), символы псевдографики, а также некоторые другие символы, которые не входят в алфавит языка.

Из символов алфавита формируются лексемы языка:

Идентификаторы

В Турбо Паскале применяется очень гибкая и наглядная система обозначения объектов программы (переменных, констант и т.д.), которая опирается на понятие идентификатора.

Идентификатор – это имя объекта в программе. Например, идентификатор переменной – это имя, данное переменной автором программы. Так, в записи a+b*x буквы a,b,x – идентификаторы, выбранные для обозначения некоторых переменных в программе.

Различают два типа идентификаторов: стандартные и задаваемые пользователем. Стандартные идентификаторы определены в языке для обозначения стандартных программ, функций и т.д. В качестве примера стандартной программы можно привести программу ввода данных, которая имеет имя Read и программу вывода данных, имеющую имя Write.

Идентификаторы, определяемые пользователем, должны удовлетворять следующим правилам написания:

Нужно обратить особое внимание на то, что идентификатор в программе имеет тот и только тот смысл, который дан ему автором программы. Для улучшения читаемости программы следует объектам давать осмысленные имена. Неудачные имена часто являются источником проблем.

Примеры идентификаторов:

x, i, z, znak, x1, y1, flag, dy, _dat и т.д.

Примеры неправильных идентификаторов:

4a
a-b
A#1
Sin
My prog
@w
Begin

Зарезервированные слова

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

В Турбо Паскале зарезервированы следующие слова:

Источник

Введение

разработаны десятки диалектов и проблемно-ориентированных расширений языка Pascal;

обучение программированию и научно-технические публикации в значительной степени базируются на этом языке.

Характеристика и особенности языка

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

Pascal весьма технологичен для реализации практически для всех, в том числе и нетрадиционных, машинных архитектур. Утверждается, что разработка Pascal-транслятора «почти не превышает по трудоемкости хорошую дипломную работу выпускника вуза». Благодаря этому для многих ЭВМ существует несколько различных реализаций языка, отражающих те или иные практические потребности программистов.

Язык Pascal стандартизован во многих странах. В 1983 году был принят международный стандарт (ISO 7185:1983)

Основные особенности языка Pascal.

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

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

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

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

Паскаль – компилятор, тоесть, прежде чем начать испоолнение программы, Паскаль полностью прочитывает исходный текст, написанный программистом, и составляет последовательность машинных кодов, выполняющую те действия, которые описал программист в hqundmnl тексте. Эта последовательность сохраняется в файл с расширением “.EXE” и является самостоятельным исполняемым файлом, который может быть запущен сам по себе, уже без участия Паскаля и, даже, на другом компъютере, на котором Паскаль может быть не установлен.

TURBO PASCAL

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

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

Был улучшен компилятор, вследствие чего «коды программ» стали более эффективными.

Был улучшен интерфейс пользователя. Кроме того, в ТП 7.0 расширены возможности объектно-ориентированного программирования (в частности, расширены и улучшены возможности Turbo Vision).

Основы языка Pascal.

Лингвистическая концепция языка Паскаль

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

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

Объектно-ориентированное программирование делает следующий шаг от ремесла к науке программирования. Данные объединяются со свойственными им операциями обработки в некоторые объекты (Инкапсулирование). Например, данным «Человек» присуща операция «Идти». При этом свойства одних объектов могут передаваться другим, переноситься на другие классы объектов (Наследование). С другой стороны, в объектно-ориентированном программировании существует явление полиморфизма: часы тоже могут «Идти», но не ногами.

Влияние Паскаля ощущается в настоящее время в разных языках программирования. Так, среди новых диалектов Бейсика есть Паскаль с символикой Бейсика. Даже в язык С встраивается все больше элементов, порожденных Паскаль-концепцией. Необходимо отметить, что все эти явления находятся в русле характерной для современных языков программирования тенденции к конвергенции. Набор операторов стандартного Паскаля относительно мал и легко изучаем. Но это порождает проблему расширения языка в приложениях. В ТП эта проблема решается за счет поставок большого количества библиотек разнообразных процедур, готовых к употреблению в прикладных программах. Широкое распространение Паскаля привело к появлению на рынке программного обеспечения большого числа инструментальных и прикладных программ. Подобные программы разработаны для многих проблемных областей, однако задача их настройки в соответствии с требованиями пользователей продолжает оставаться достаточно важной.

Алфавит языка и специфика использования символов

«Неиспользуемые» символы.
Символы так называемой расширенной таблицы ASCII, т.е. символы, имеющие коды от 128 до 255 (в этой области находятся символы алфавита русского языка и символы псевдографики на IBM-совместимых компьютерах), а также некоторые символы из основной таблицы ASCII (например: (&), (!), (%), (), («) и некоторые другие) не входят в алфавит языка, т.е. эти символы не используются в идентификаторах. Тем не менее, их можно использовать в тексте комментариев, а также в виде значений констант строк или констант символов.

Зарезервированные слова.
ТП 7.0, как и его предшественники, включает в себя так называемые ключевые или зарезервированные слова (BEGIN, END, PROGRAM). В качестве имен идентификаторов в программе зарезервированные слова использоваться не могут. Если Вы будете использовать зарезервированные слова не по назначению, это вызовет ошибку при попытке откомпилировать программу.

Понятие лексемы и разделителя

Идентификаторы

Идентификатор должен начинаться буквой или символом подчеркивания “_”.

ТП 7.0 не различает прописные и строчные буквы. Поэтому можно записать WriteLN, Writeln или даже wRITeLn, не опасаясь быть непонятым компилятором. Для него все три записи эквивалентны.

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

Пробел в ТП 7.0 является разделителем и не может стоять внутри идентификатора. Для создания идентификаторов, состоящих из двух слов, можно воспользоваться большими буквами (например,

ReadText) или символом подчеркивания (Read_Text), но не пробелом (bRead Text – два отдельных слова).

Применение других символов (букв неанглийского алфавита, знаков препинания, псевдографических символов и т.п.) в идентификаторах не допускается.

Зарезервированные слова (такие как BEGIN, END или PROGRAM) в качестве идентификаторов не используются.

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

Кроме того, при написании программы рекомендуется следовать ряду правил хорошего тона, которые упрощают редактирование программы и повышают ее наглядность:

Структура программы

Общая структура программ в ТП 7.0

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

Раздел текстов процедур и функций

В этом разделе записываются подпрограммы, осуществляющие сложные действия, которые необходимо произвести неоднократно на разных этапах выполнения программы. Подпограммы бывают двух типов: прjцедуры (PROCEDURE) и функции (FUNCTION). И те и другие пребставляют собой программы в миниатюре:

PROCEDURE (FUNCTION) Заголовок процедуры (функции);
LABEL Подраздел объявления локальных меток;
CONST Подраздел объявления локальных констант;
TYPE Подраздел объявления локальных типов;
VAR Подраздел объявления локальных переменных;
BEGIN Раздел текстов подпрограмм.
END; Основной блок процедуры или функции;

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

Раздел основного блока программы
BEGIN

END.
В этом разделе содержится смысловая часть программы.

Заголовок программы

Раздел объявлений и соглашений

В этом разделе программы компилятору можно дать указания, определяющие режимы его работы при трансляции последующей программы. Эти указания оформляются в тексте программы как комментарии, начинающиеся парой символов “<$” и заканчивающиеся символом “>”. Такие указания могут содержать указания на включение в текст программы фрагментов других программ (из соответствующих файлов), информацию для отладчика или сведения о необходимости использования арифметического сопроцессора.
Оператор USES

Оператор USES играет важную роль в подключении к тексту программы системных модулей из библиотек. В этом операторе Вы указываете компилятору, из какой библиотеки использует модули данная программа, чтобы компилятор выбрал соответствующие модули из этой библиотеки и включил их в текст программы. Понятия «библиотека», «модуль», «блок» составляют основу терминологии программирования на Паскале. Библиотека включает набор модулей, каждый из которых замкнут, имеет свое имя, компилируется отдельно и к нашей программе подключается уже как «черный ящик» с известным интерфейсом. Каждый модуль (блок (UNIT), как его называют на Паскале) представляет собой программу, включающую декларации типов и переменных, процедуры и функции.
Оператор USES может быть использован в программе только один раз, при этом у него есть свое четко определенное место, (он предваряет все прочие операторы и разделы). Названия библиотек, подключаемых к программе с помощью оператора USES, должны разделяться запятой. Например:
USES Crt, Graph, String, Overlay;
Объявления глобальных меток, констант, типов и переменных

Следом за строкой, содержащей оператор USES, идут строки объявляющие:

В разделе CONST содержатся определения констант, используемых в программе. Например:
CONST
Year=1995;
Month=’Июль’;
Day=’Понедельник’;
Примечание:

Заметьте, что при присвоении значений константам вместо оператора присвоения “:=” используется просто знак равенства “=”. Тип константы определяется автоматически по виду значения, присваемового константе и не может быть сложным.
Раздел описания типов TYPE позволяет программисту определить новый тип в программе. В данном разделе могут быть использованы ранее определенные в разделе CONST константы.
В разделе описания глобальных переменных VAR содержится список переменных, используемых в программе, и определяется их тип. Например:
VAR
А, В, С: INTEGER;

DDT: REAL;

Примечание:

Разделы LABEL, CONST, TYPE и VAR могут располагаться в произвольном месте программы. При этом каждый из этих разделов может встречаться в программе несколько раз или вообще не встречаться в ней.

Основной блок программы

Ступенчатое оформление программы преследует только «эстетические» цели и не влияет на эффективность работы компилятора или программы. Компилятор обрабатывает Паскаль- программы с любым расположением операторов: как разделенные построчно нажатием клавиши [Enter] при подготовке текста программы, так и записанные подряд в одну строку.

Типы переменных.

При присвоении этой переменной строки длиннее X, присваиваемая строка будет обрезана с конца после X-того символа.
Размер переменной типа STRING в памяти можно узнать следующим способом:
Size:=SizeOf(MyString);

Функция SizeOf() возвращает размер, занимаемый переменной, служащей параметром. Параметром может служить и тип переменной; строка:
&nbspWriteln(SizeOf(STRING));

Выведет на экран число 256, так как по умолчанию под все строки отводится по 256 байт.

Кроме того, можно узнать, сколько символов в строке (индекс последнего непустого символа в строке):
&nbspSize:=Ord(MyString[0]);

О приводимости типов.

Операторы языка Pascal

Составной и пустой операторы.

Операторы ветвлений.

Условный оператор.

Операторы повторений.

Цикл с предопределенным числом повторений.

Переменная должна быть целого или перечислимого типа. При исполнении цикла переменная цикла изменяется от начального до конечного значения с шагом 1. Если стоит to, то переменная увеличивается, если downto – уменьшается.
Условия выполнения цикла проверяются перед выполнением блока операторов. Если условие не выполнено, цикл For не выполняется. Следующая программа подсчитывает сумму чисел от 1 до введенного:
Program Summa;
Var
I, N, S: Integer;
Begin
Write(‘N = ‘);
Readln(N);
S:=0;
For I:=1 To N Do
S:=S + I;
Writeln (‘Cумма = ‘, S)
End.

Условный цикл с проверкой условия перед исполнением блока операторов.

Блок операторов будет исполняться, пока условие имеет значение true. Необходимо, чтобы значение условия имело возможность изменения при исполнении блока операторов, иначе исполнение цикла не закончится никогда (в DOS это приведет к зависанию компыютера). Если условие зарание ложно, блок операторов не исполнится ни разу.
Найдем машинное «эпсилон» для переменной типа Real:
Program Epsilondetect;
Var
Epsilon: Real;
Begin
Epsilon:=1;
While Epsilon + 1 > 1 Do
Epsilon: = Epsilon/2;
Writeln (‘Эпсилон = ‘, Epsilon);
End.

Условный цикл с проверкой после выполнения блока операторов.

Оператор выбора одного из вариантов.

Оператор безуслов ного перехода на строку с меткой.

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

Простые и структурные типы данных.

Перечисляемый и ограниченный типы.

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

Program DAY (Input, Output);
Type
DayOfWeek = (Sun, Mon, Tue, Wen, Thu, Fri, Sat);
Var
D: DayOfWeek;
Well: Boolean;

Type
Mas = Array [1..3] Of Array [1..5] Of Integer;
Var
A, B: Mas;
C: Array [1..3, 1..5] Of Integer;

Символьные строки.

Множества.

Записи.

Можно сократить длинные обозначения элементов записи:
With имя записи Do оператор.
Оператор With открывает область действия, содержащую имена полей указанной переменной типа записи так, что эти имена фигурируют в качестве имён переменных. Кроме экономии места при написании программ, оператор With экономит так же время при выполнении программы, так как ссылка на запись подготавливается только один раз.
Пример:

Запись с вариантами.

Совместимость и преобразования типов.

Типизированные константы

Типизированные константы-записи.
: = ( )
— предварительно объявленный тип записи.
— список из последовательностей следующего вида: имя поля, двоеточие и константа; элементы списка отделятся друг от друга точкой с запятой.
Пример:

Процедуры и функции.

Блочная структура программ.

Общая структура подпрограммы.

Интерфейс подпрограммы (информация, необходимая для её вызова). Сосредоточен в заголовке.

Локальный контекст подпрограммы (совокупность описаний объектов, с которыми осуществляются действия)

Области видимости объектов.

    Имена объектов, описанных в некотором блоке, считаются известными в пределах данного блока, включая и все вложенные блоки.

Имена объектов, описанные в блоке, должны быть уникальными в пределах данного блока и могут совпадать с именами объектов из других блоков.

Если в некотором блоке описан объект, имя которого совпадает с именем объекта, описанного в объемлющем блоке, то последнее становится недоступным в данном блоке (экранировка).

Пример: Приведенная ниже диаграмма показывает видимость идентификаторов в примере. Каждый идентификатор виден в пределах того прямоуголльника, в котором он описан и в прямоугольниках, содержащихся в данном. За пределами этого прямоугольника идентификатор либо неизвестен, либо имеет другое значение, тип. Так, например, функция y4 может быть вызвана лишь внутри процедур x2 и x3, аналогично и x3. Переменные z в теле пограммы и в каждой из x2, x3, y4 имеют абсолытно разные и независимые значения, а в x1 видима таже z, что и в теле программы.В тоже время переменные i и j перекрыты в x1 новыми определениями, а в x2, x3, y4, они те же, что и в основной программе.

Procedure X;
Var
i,j:integer;
z:real;
Procedure X1(i:integer);
Var
j:integer
Procedure X2;
Var
z:integer
Procedure X1(z:string);
Function Y4(z:string);

Механизм передачи параметров.

Типы формальных параметров должны обязательно обозначаться идентификаторами.
Недопустимо:
Procedure InCorrect (Var A: Array [1..10] of Byte);

Безтиповые параметры.

Описать в подпрограмме локальную переменную определённого типа с совмещением её в памяти с нетипизированным параметром.

Пример1: функция для сравнения значений двух переменных любых типов и, соответственно, любых размеров:

Function Equal (Var Source, Dest; Size: Word): Boolean;
Type
Bytes = Array [0..MaxInt] of Byte;
Var
N: Integer;
Begin
N:= 0;
While (N > Для обеспечения корректности такого подключения необходимо соблюдать определённые межъязыковые соглашения о связях принятые в Турбо-Паскале.

Специальные случаи.

В описании процедуры перед блоком может указываться специальное слово interrupt, которое служит для определения процедур прерываний.

Допускается указание “типа вызова” процедуры (Far, Near). Для функций не допускается interrupt, тоесть она не может быть обработчиком прерывания.

Рекурсия и побочный эффект.

Begin
Assign(F, ‘Prn’);
Rewrite (F);

Z:= 10;
A:= Change (Z);
WriteLn (F, A,’ ’,Z);

Z:= 10;
A:= Change (10) * Change (Z);
WriteLn (F,A,’ ‘,Z);

Z:= 10;
A:= Change (Z) * Change (10);
WriteLn (F,A,’ ‘,Z);
End;

Результаты:

Распределение памяти под данные.

Процедурные типы.

Правила корректной работы с процедурными типами.

    Подпрограмма, присваиваемая процедурной переменной должна быть странслирована в режиме “дальнего вызова”.

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

Приведение типов переменных для процедурных типов.

Определены следующие типы и переменные: Можно построить следующие присваивания:

F:= MyFunc
N:= F(N)
P:= @F
N:= Func (P)(N)
F:= Func (P)
Func(P):= F
@F:= P

Динамическая память.

Распределение памяти IBM PC.

Типы прерываний.

Объявление указателей.

Выделение и освобождение динамической памяти.

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

Полезно ввести две вспомогательных функции GetExt и PutExt. Каждая из них будет обращаться к функции вычисления адреса AddrE.
Program Demo;
Const
SizeOfExt = 10;
N = 100;
M = 200;
Type
ExtPoint = ^Extended;
Var
i,j: Integer;
PtrStr: Array[1..N] of Pointer;
S: Extended;

Function GetExt(i,j: Integer): Extended;
Begin
GetExt:= AddrE(i,j)^;
End;

Procedure PutExt(i,j: Integer; X: Extended);
Begin
AddrE(i,j)^:= X;
End;

For i:=1 to N do
Begin
GetMem (PtrStr[i], M*SizeOfExt);
For i:= 1 to m do
PutExt(i, j, Random(255));
End;
S:= 0;
For i:= 1 to N do
For j:= 1 to M do
S:= S + GetExt(i,j);
WriteLn(S/(N*M));
End.
Мы предполагали, что каждая строка размещается в куче с начала границы параграфа и смещение каждого указателя PtrStr ровно 0. В действительности при последовательных обращениях к GetMem начало очередного фрагмента следует за концом предыдущего и может не попасть на границу сегмента. В результате при размещении фрагментов максимальной длины (65521 байт) может возникнуть переполнение при вычислении смещения последнего байта.

Процедуры и функции для работы с динамической памятью.

Проблема потерянных ссылок

Модули

Структура модулей.

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

Заголовок модуля и связь модулей друг с другом

Интерфейсная часть.

Исполняемая часть

Инициирующая часть

Компиляция модулей

Доступ к объявленным в модуле объектам

Стандартные модули

Ниже приводится краткая характеристика стандартных модулей.

    В модуль System входят все процедуры и функции стандартного Паскаля, а также встроенные процедуры и функции Турбо-Паскаля, которые не вошли в другие стандартные модули (например, Inc, Dec, Getdir и т.п.). Как уже говорилось, модуль System подключается к любой Турбо-Паскалевой программе независимо от, того, объявлен ли он в предложении Uses или нет.

Модуль Printer упрощает вывод текстов на матричный принтер. В нем определяется файловая переменная Lst типа Text, которая связывается с логическим устройством Prn. После подключения модуля может быть выполнена, например, такая программа:
USES
Printer;
Begin
WriteLn (Lst, ‘TEST’); <Выводит строку на принтер>
End.

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

Модуль Graph содержит обширный набор типов, констант, процедур и функций для управления графическим режимом работы экрана. С помощью блоков, входящих в модуль Graph, можно создавать самые разнообразные графические изображения и выводить на экран текстовые надписи стандартными или разработанными программистом шрифтами. Программы модуля Graph после соответствующей настройки могут поддержать любой тип аппаратных графических средств (CGA, EGA, VGA).
Настройка на имеющиеся в распоряжении программиста технические средства графики осуществляется специальными программами-драйверами, которые не входят в библиотечный файл TURBO.TPL, но поставляются вместе с ним.

В модуле Dos собраны процедуры и функции, открывающие доступ Турбо-Паскалевым программам ко всем средствам дисковой операционной системы PC DOS (MS DOS).
Блоки модуля Overlay понадобятся при разработке громоздких программ с перекрытиями (позволяет хранить в памяти только нужные части программы, а не требующиеся на данный момент удалять из памяти, сохраняя на диск, либо возвращать в память при необходимости). Как уже говорилось, Турбо-Паскаль обеспечивает создание программ, длина которых ограничивается лишь доступной памятью. Для большинства отечественных IBM-совместимых ПЭВМ доступная программе память составляет около 550 Кбайт (без инстру ментальных оболочек типа Norton Commander и без самой системы Турбо-Паскаль). Память такого размера достаточна для большинства прикладных задач, тем не менее, использование программ с перекрытиями снимает и это ограничение.

Два библиотечных модуля Turbo3 и Graph3 введены для совместимости с ранней версией 3.0 системы Турбо-Паскаль.

Ключи и директивы компилятора.

В Турбо-Паскале 7.0 существует три основных вида директив:

Директивы с параметрами.
Позволяют задавать компилятору параметры, такие как имена подключаемых файлов, размеры памяти, выделяемые под определённую задачу, и так далее.

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

Все директивы, кроме директив-переключателей, должны иметь по крайней мере один пробел между именем директивы и параметром.
Чтобы не прописывать директивы компилятора в тексте программы можно воспользоваться пунктом «Options» меню ИПО и далее подпунктом «Compiler». Но при этом все изменения будут иметь силу при всех последующих компиляциях других программ. Однако, если указать в исходном тексте какие-либо директивы, противоречащие установленным в ИПО, то последние будут проигнорированы. Это справедливо как для командно- строчного компилятора, так и для встроенного в ИПО.

Директивы-переключатели.

Директивы:

Эмуляция сопроцессора. (Emulation).

Тип глобальный. В процессе генерации кода нет библиотеки, реализующей функции сопроцессора программы.

Дальний тип вызова (Force Far Calls).

Тип локальный, (Far) или (Near).

Проверка ошибок ввода-вывода (I/O checking).

Тип локальный. Если , то результат ввода-вывода может быть проанализирован с помощью функции IOResult.

Информация о локальных идентификаторах. (Local Symbols)

Тип глобальный. Используется в основном для модулей, дает возможность проверить и модифицировать локальные переменные модуля. Увеличивает размер .TPU, на размер и скорость работы выполняемой программы не влияет. В Турбо-Паскале 7.0 директива не будет работать до тех пор, пока в меню не будет Debuginfo или для TPC.EXE ключ /V.

Использование оверлейных структур. (Overlays allowed).

Тип глобальный. Разрешает или запрещает генерацию оверлейного кода, то есть Турбо-Паскаль 7.0 может использовать модуль в качестве оверлейного, если он был скомпилирован с . Задание данного режима компиляции не обязывает использовать данный модуль в качестве оверлейного. Директиву почти всегда используют с .

Использование в качестве параметров массивов открытого типа (Open parameters).

Тип глобальный.

Проверка переполнения при математических операциях (Overflow checking).

Тип глобальный.

Проверка границ. (Range-Checking).

Тип локальный. Рекомендуется использовать R+ при отладке, а затем отключать так как “+” увеличивает размер и замедляет работу программ. R+ осуществляет так же проверку виртуальных методов на состояние инициализации для экземпляра объекта, выполняющего вызов.

Проверка переполнения стека (Stack Checking)

Тип локальный. При “+” компилятор генерирует вначале каждой процедуры или функции код, который проверяет, достаточно ли в стеке выделено места для локальных переменных.

Использование типизированного адресного оператора @ (Typed @ operator).

Тип глобальный. Позволяет или запрещает использовать в тексте оператор @.

Проверка параметров переменных строкового типа (Strict Var String).

Тип локальный. Управляет проверкой типа при передачи строк в качестве параметров-переменных. В состоянии “+” выполняется строгая проверка типа. Требуется, чтобы формальный и фактический параметр имели идентичные строковые типы; при “” длины могут не совпадать.

Расширенный синтаксис. (Extended Syntax).

Тип глобальный. При X+ вызов функции можно использовать как оператор, то есть результат функции может быть отброшен (функция может быть интерпретирована как процедура).

Директивы с параметрами.

    Включение файла для компиляции (Include Directories).

    Тип локальный. Сообщает компилятору о необходимости включить в компиляцию названный файл. Текст файла вставляется сразу за директивой. Расширение по умолчанию .PAS. Турбо-Паскаль допускает одновременно не более 15 входных файлов. Значит допускается вложенность до 15-ти уровней. Так же включаемый файл не может указываться в середине раздела операторов. Это означает, что все операторы между Begin и End раздела операторов должны быть в одном файле.

Компоновка объектного файла. (Object Directories).

Тип локальный. Предписывает компилятору использовать указанный файл (.Obj) при компоновке компилируемой программы или модуля.
$nbsp Директива используется для компоновки кода Ассемблера для подпрограмм, описанных External.

Компоновка оверлейного модуля.

Тип локальный. Можно преобразовать обычный модуль в оверлейный. Игнорируется при попытке объявить её в теле какого-либо модуля. Директива должна указываться в тексте программы после слова Uses. Любой модуль, который указывается в качестве параметра, должен быть откомпилирован с директивами и .

Условные директивы.

ФАЙЛЫ

Основные определения.

Любой файл имеет три характерных особенности:

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

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

Доступ к файлам.

Имена файлов

имя начинается с любого разрешенного символа;

Логические устройства

Инициализация файла

Процедуры и функции для работы с файлами.

CLOSE( )
Закрывает файл, однако связь файловой переменной с именем файла, установленная ранее процедурой АSSIGN(), сохраняется.
Поскольку связь файла с файловой переменной сохраняется, файл можно повторно открыть без дополнительного использования процедуры ASSIGN.

ERASE( ).
Уничтожает файл

MKDIR( ).
Создает новый каталог на указанном диске.
Имя уже существующего каталога не может быть последним именем в пути, т.е. именем вновь создаваемого каталога.

ДРУГИЕ ВОЗМОЖНОСТИ ТУРБО-ПАСКАЛЯ

Внешние процедуры (функции)

Использование встроенных машинных кодов.

Обращение к функциям операционной системы

Так, прерывание с номером 18 ($12) возвращает в регистре AX объем оперативной памяти ПЭВМ. Пример программы выводящей на экран сообщение об этом объеме:

Процедура MSDOS.

Программное прерывание с номером 33 ($21) стоит особняком: как уже говорилось, оно дает доступ к большому количеству функций ДОС (этим прерыванием вызывается 85 функций). Рассматриваемая процедура полностью эквивалентна вызову процедуры INTR c номером прерывания 33. Программа примера выведет на экран версию операционной системы:

Поддержка процедур обработки прерываний.

Запуск внешних программ.

Оверлей

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

В главной части программы необходимо указать с помощью директив компилятора вида те модули, которые будут оверлейными, например: Учтите, что из всех стандартных библиотечных модулей только модуль DOS может быть оверлейным, остальные же модули (CRT, Graph, Printer и т.д.) не могут объявляться оверлейными.

Необходимо предусмотреть перед первым по логике работы программы обращением к какому-либо оверлейному модулю вызов процедуры инициализации оверлея OVERINIT. Здесь же, если это необходимо, следует установить размер оверлейного буфера и указать возможность использования расширенной памяти (см. ниже).

Наконец, в начале главной программы и каждого оверлейного модуля необходимо поместить директивы компилятора и или установить опции OPTIONS/COMPILE/FORCE FAR CALLS и OPTIONS/COMPILE/OVERLAYS ALLOWED в состояние ОN, после чего следует откомпилировать программу на диск. Программа готова к работе.

Прямое обращение к памяти и портам ввода-вывода

ТурбоПаскаль 6.0 и структурное программирование.

ТурбоПаскаль и объектно-ориентированное программирование.

Основные свойства объектов.

Инкапсуляция

Наследование.

Star = Object
X: Integer;
Y: Integer;
Procedure Init(CoordX, CoordY: Integer);
Function GetX: Integer;
Function GetY: Integer;
Visible: Boolean;
Color: Word;
Procedure Init(CoordX, CoordY: Integer; InitColor: Word);
Function IsVisible: Boolean;
Procedure Show;
Procedure Blind;
Procedure Jump(NextX, NextY: Integer);
End;
Заметим, однако, что поля Х,У и методы GetХ, GetУ практически совпадают с соответствующими полями и методами обьекта Pozition.
&nnsp Турбо-Паскаль предоставляет возможность учесть эту ситуацию. Следует считать тип объекта Star порожденным типом Pozition, записав это следующим образом (наследование):
Star = Object(Pozition)
Visible: Boolean;
Color: Word;
Procedure Init(CoordX, CoordY: Integer; InitColor: Word);
Function IsVisible: Boolean;
Procedure Show;
Procedure Blind;
Procedure Jump(NextX, NextY: Integer);
End;

Объект Star теперь наследует свойства объекта Pozition. Поля Х,У явно не заданы в Star, но Star ими обладает благодаря наследованию, т.е. можно написать:
Star.X:=17;

Смысл обьектно-ориентированного программирования заключается именно в работе с полями объекта через его методы.

Источник

Читайте также:  с днем рождения картинки с собачками прикольные
Обучающий онлайн портал