Методические указания часть 1 | Язык программирования «Turbo Pascal»


Содержание

Программирования и алгоритмические языки методические указания часть 1 Язык программирования «Turbo Pascal»

ВВЕДЕНИЕ

Эти методические указания предназначены для студентов первого курса по направлению подготовки «Электроника» (0908) по специальности «Электронные системы» (6.090803) дневной формы обучения и служат для помощи студентам во время подготовки и выполнения лабораторных работ по дисциплинам «Программирование и алгоритмические языки» в первом семестре при изучении языка программирования «Turbo Pascal».

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

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

Язык «Pascal» специально разрабатывалась Н. Виртом как учебная.Именно ее целесообразно использовать как первый язык программирования, чтобы научиться программированию.Овладев этот язык, в дальнейшем без особого труда можно самостоятельно перейти на любой другой язык программирования высокого уровня.Несмотря на изначальное предназначение языка «Pascal» как учебной, ее дальнейшая реализация фирмой Borland Inc в виде языка «Turbo Pascal» и «Object Pascal» позволила подняться на высшую ступень наравне с ведущими мощными языками программирования такими, как «С», «Java «и др. Современные реализации этого языка дают возможность проектировать различные приложения, от решения небольших задач численного характера до разработки сложных программных систем.

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

Описания лабораторных работ выполнены по единой структуре и включают в себя цель работы, краткие теоретические сведения, методические указания для подготовки к работе и ее выполнения, индивидуальные задания к лабораторной работе, контрольные вопросы для подготовки к защите работы.Тематика лабораторных работ охватывает практически все основные типы данных и основные операторы языка «Turbo Pascal».

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

1) Название лабораторной работы.

2) Тема лабораторной работы.

3) Краткие теоретические сведения.

4) Методические указания.

5) Задания для лабораторной работы своего варианта с соответствующими указаниями.

6) Блок-схемы программ.

После выполнения лабораторной работы для ее защиты необходимо составить отчет, который в себя включает: пункты 1-6 плана работы, текст программы, результаты выполнения указаний и тестов по программе, вывод по работе.

Лабораторная работа защищается на лабораторном занятии или на консультации (по разрешению преподавателя).Студент, не защитил две предыдущие работы не допускается к следующей. Также к лабораторной работе не допускается студент, который не имеет плана проведения текущей лабораторной работы.

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

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

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

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

 

 

1 Лабораторная работа №1 .ОПЕРАТОРЫ условного перехода

 

Цель работы: получение навыков по составлению простых программ с использованием условных операторов; знакомство с задачами, для решения которых требуются условные операторы; получение навыков по использованию простых типов данных, операторов ввода — вывода.Получение навыков по составлению простейших блок — схем.

 

1.1 теоретические сведения

типы данных

 

Таблица 1.1 — Типы данных языка программирования Turbo Pascal

типы данных простые действительны Real 2.9e-39..1.7e38
Single 1.5e-45..3.4e38
Double 5.0e-324..1.7e308
Extended 3.4e-4932..1.1e4932
Comp -9.2e18..9.2e18
ординальные перечисленные    
диапазонные    
логический Boolean False, True
цели Shortint -128..127
Integer -32768..32767
Longint -2147483648 .. 2147483647
Byte 0..255
Word 0..65535
символьный Char  
сложенные массив Array    
файл File    
множество Set    
строка String    
запись Record    
указательные        
           

 

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

Для всех ординальных и действительных типов указанные операции отношения = (равно), <> (не равно), <(меньше), <= (не более),> (больше),> = (не менее).Результат отношение определяется как отношение значений ординальных номеров или значений операндов.

В таблице 1.2 описаны стандартные операции над данными простых типов.Принятые обозначения: И Ипteger (целый) B Вооlеап (логический) R Rеаl (действительный).

 

Таблица 1.2 — Операции над данными простых типов

операция содержание Тин операндов Тип результата
+ плюс И, R И, R
минус И, R И, R
* умножения И, R И, R
DIV целочисленных деления И И
МОD Остаток от деления И И
/ Диленные И, R R
OR арифметическое ИЛИ И И
логическое ИЛИ В В
AND арифметическое И И И
логическое И В В
NOT арифметическое НЕТ И И
логическое НЕТ В В
XOR Арифметическое «раздельное» ИЛИ И И
Логическое «раздельное» ИЛИ B В
SHL Арифметический сдвиг влево I И
SHR Арифметический сдвиг вправо И И

 

Если в операциях +, -, * хотя бы один из операндов имеет тип Real, то результат тоже будет тип Real.

Для всех ординальных типов обозначенные функции Succ, Pred и Ord:

Ord (x) — ординальное номер x;

Succ (x) — следующее за x ординальное значения;

Pred (x) — ординальное значения, предшествует х.

Применение функции Succ до максимального значения или функции Pred до минимального значения любого ординальное типа приводит к неопределенному результату.

Целый тип (Shortint, Integer, Longint, Byte, Word).Целый результат дают следующие функции:

Abs (x) — модуль целого значения x;

Addr (x) — адрес первого байта переменной x;

Hi (x) — значение старшего байта целого значения x;

Lo (х) — значение младшего байта целого значения x;

Round (x) — закругленное значение действительного значения x;

SizeOf (x) — размер в байтах памяти, необходимой для хранения значения x или типа х;

Sqr (x) — квадрат целого значения х;

Swap (x) — переставляет старший и младший байты целого значения x;

Trunc (х) — целая часть действительного значения х.

Символьный тип (Char).Данные символьного типа принимают значения упорядоченного набора символов, изображенных в конкретном ПК. Значение символьного типа записываются одним символом, ставится в одинарные кавычки, например ‘A’.В ПК преимущественное применение имеет кодирования символов в системе АSCII (American Standard Code for Information Interchange — американский стандартный код для обмена информацией).

Для символьных данных обозначенные следующие функции:

Chr (х) — символ АSCII с кодом х — байтового типа,)

Ord (х) — АSCII — код символа х;

UpCase (х) — переводит малую латинскую букву х в большую, остальные символы не меняется.

Логический тип (Boolean).Данные логического типа могут принимать значения True и False.Считают, что значений False <True логический результат дают следующие функции:

КеуРrеssed — возвращает True, если была нажму и любая клавиша, в противном случае — False;

Odd (х) — возвращает True, если целое число х — нечетное и False, если х — четное.

Действительный тип (Real, Single, Double, Extended, Comp).Действительный результат дают следующие функции:

Abs (х) — модуль действительного значения х:

ArcTan (x) — главное значение арктангенса в радианах;

Cos (x) — косинус х — в радианах)

Exp (x) -значение экспоненциальной функции;

Frac (x) — дробная часть x;

Int (х) — целая часть действительного значения x;

Ln (x) — значение натурального логарифма х;

Sin (x) — синус х — в радианах)

Sqr (x) — квадрат действительного значения х;

Sqrt (х) — квадратный корень из х.

Операторы. Оператор присваивания состоит из левой и правой частей, разделенных знаком присвоение «=». В левой части находится имя переменной или функции, а в правой — выражение, имя другой переменной или имя функции.Действие оператора присваивания заключается в вычислении выражения или функции и замены текущего значения переменной в левой части на вычисленное значение выражения в правой части.Тип переменной, стоит слева, и тип правой части должны быть одинаковыми. Существует единственное исключение: переменной действительного типа можно присваивать целочисленных значения. Присваивать можно данные любых типов, кроме файловых.

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

1) операция отрицания NOT;

2) мультипликативные операции *, /, DIV, MOD, AND, SHL, SHR;

3) аддитивные операции +, -, OR, XOR;

4) операции отношения =, <> <>, <=,> =, IN.

Оператор перехода состоит из ключевого слова Goto, за которым следует метка.Выполнение этого оператора приводит к тому, что управление выполнением программы передается на оператор, перед которым имеется соответствующая метка. При использовании оператора перехода должны выполняться следующие правила:

1) областью действия метки тот блок, в котором она описана и переход возможен только внутри этого блока;

2) запрещается переход внутрь структурного оператора.

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

Операторы ввода-вывода Read, Readln, Write, Writeln позволяют работать с различными физическими устройствами: клавиатурой, дисплеем, принтером, дисководами и др.Рассмотрим организацию ввода с клавиатуры и вывод на дисплей.

Оператор ввода Read предназначен для предоставления необходимых значений данным программы.Формат оператора: Read (а1, а2, …, an), где а1, а2, …, an — переменные допустимых типов.Значение а1, …, аn при вводе отделяются пробелом, введение завершаются нажатием клавиши Enter (возврат каретки или клавиша ввода).Количество вводимых значений и их типы должны соответствовать количеству и типам переменных в операторе Read.В противном случае возникает ошибка ввода-вывода.Например, во время выполнения программы

Читать  Одномерные массивы – Понятие массива и его свойства, инициализация массива

Var i: integer;

      c: Char;

begin

Read (c, i) end.

Правильным является введение: А 1234.

Оператор ввода Readln аналогичный оператору Read, однако следующий оператор ввода-вывода будет вводить или выводить данные с новой строки.

Оператор вывода Write служит для вывода значений переменных, выражений и строк символов.Формат оператора: Write (а1, а2, …, аn), где а1, …, an — переменные допустимых типов, выражения или строки.Строка, когда в иводиться, берется в одинарные кавычки.

Можно осуществлять также отформатировано вывода данных. Для этого после имени переменной через двоеточие ставится число — количество знакомест на дисплее, которые выделяются для вывода значения данной переменной.Например, во время выполнения программы

Var i: Integer;

       S: String [10];

begin

t = 1234; s: = ‘Формат’;

Write (i: 6, i + i: 6, s: 10) end.

результат будет выглядеть: _ _1234_ _2468_ _ _ _Формат.

Если выводится переменная или выражение, имеющие тип Real, то можно указать общее количество знакомест и количество знакомест для вывода десятичной части значения переменной или выражения.Например,

Write (-Pi: 10: 5,29 / 3: 7: 4) выдает .Результат: _ _-3.14159_9.6667.

Оператор вывода Writeln аналогичный оператору Write, однако следующий оператор ввода-вывода будет вводить или выводить данные с новой строки.

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

Условный оператор служит для выполнения или невыполнения некоторого оператора в зависимости от истинности тех или иных условий.Условный оператор состоит из ключевого слова If, за которым следует выражение логического типа, ключевого слова then и оператора.По оператором может идти ключевое слово else и новый оператор.

Выполнение условного оператора заключается в вычислении логического выражения. Если его значение True, то выполняется оператор, стоящий за словом then.Если значение выражения-условия False и условный оператор не содержит слова else, то его выполнение завершается.Если есть слово else, то выполняется оператор, стоящий после него.

Общие виды условного оператора:

If <условие> then <оператор1> или If <условие> then <оператор1>;

If <условие> else <оператор1> else <оператор2>;

Первая форма называется сокращенной (неполной), вторая — полной форме условного оператора. Точка с запятой перед else не ставится.

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

Таким образом, конструкция следующего вида:

If <умова1> then If <умова2> then <оператор1> else <оператор2>;

трактуется как

If <умова1> then

begin If <умова2> then <оператор1> else <оператор2> end.

Примеры сокращенной и полной форм условного оператора:

If x> y then z = x;

If x> y then Write ( ‘X больше Y’)

else begin z = y; Write ( ‘X не превышает Y’) end;

Оператор выбора предназначен для выполнения одного из нескольких возможных операторов.Он состоит: из ключевого слова Case, за которым следует селекторная выражение; ключевого слова of; последовательности операторов, каждому из которых предшествует метка (или список меток, или некоторый диапазон значений меток), которая отделена от оператора двоеточием (:) ключевого слова end.Как и условный оператор, оператор выбора может содержать ключевое слово else, которое должно стоять последним перед end.

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

Общий вид оператора выбора;

Case <выражение-селектор> of

<список меток 1>: <оператор1>;

…………………………………

<список меток N> <оператор N>;

else <оператор>;

end;

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

Например,

Var letter: Char;

begin

readln (letter)

Case UpCase (letter) of

A, ‘E’, ‘I’, ‘J’, ‘O’, ‘U’, ‘Y’: Write ( ‘Латинская громкая’);

‘B’ .. ‘D ‘,’ F ‘..’H ‘,’ K ‘..’N ‘,’ P ‘..’T ‘,’ V ‘..’X ‘,’ Z ‘: Write (‘ Латинская согласная ‘)

else Write ( ‘Символ не является латинской буквой’)

end end.

2 Лабораторная работа №2.Оператор цикла

 

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

 

2.1 теоретические сведения

Операторы повторения предназначены для организации циклов.Язык Паскаль содержит три оператора повторения: For, While, Repeat.

Оператор цикла с параметром состоит из ключевого слова For, за которым следуют переменная цикла; знак присвоения; выражение, определяющее начальное значение переменной цикла; ключевое слово to или downto; выражение, определяющее конечное значение переменной цикла; ключевое слово do, оператор, выполняется в цикле (простой или составной).Общий вид оператора цикла с параметром:

For <переменная> = <поч.вир.> to <кин.вир.> do <оператор>;

For <переменная> = <поч.вир.> Downto <кин.вир.> Do <оператор>;

Переменная цикла, начальный и конечный выражения должны быть одного и того же ординальное типа. Во время выполнения переменная цикла приобретает последовательных значений данного ординальное типа в порядке их увеличения (если есть слово to) или уменьшение (если есть слово downto).Количество исполнений тела цикла вычисляется для выполнения операторов и равна <кин.вир> — <поч.вир.> + 1 (если есть слово to) или <поч.вир.> — <кин.вир> + 1 (если есть слово downto ).Если в цикле со словом to (Downto) начальный выражение больше (меньше) от конечного, то тело цикла не выполняется ни разу.Внутри тела цикла не следует заменять значение переменной цикла, хотя такое изменение не фиксируется как ошибка и не влияет на количество исполнений тела цикла. После окончания работы оператора цикла For значение переменной цикла равна конечному значению.Если тело цикла не исполнилось, то значение переменной не определено.

Например,

Var c: Char;

bgin For c = ‘z’ downto ‘a’ do Writeln (c) end.

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

Блок-схема оператора For изображена на рисунке 1.4.

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

Общий вид оператора цикла с предусловием:

While <выражение> do <оператор>;

Выполнение этого цикла осуществляется следующим образом. Сначала вычисляется значение логического выражения.Если это значение False, то тело цикла не выполняется; если значение True, то тело цикла выполняется, после чего снова вычисляется выражение.Чтобы предотвратить «зацикливания», следует предусмотреть изменение значения выражения внутри тела цикла.

Рисунок 2.1 — Блок — схема оператора For

Например, следующая программа вычисляет сумму

Var s, p: Real;

begin

s = 0; p = 0.1;

while p <= 2 do begin s: = s + sin (p) p = p + 0.1 end;

writeln (s) end.

Оператор цикла с постусловием состоит из ключевого слова Repeat, за которым следует исполняемый в цикле оператор (или операторы) ключевого слова until, выражения логического типа.Выражение задает условие прекращения выполнения цикла.

Общий вид оператора цикла с постусловием:

Repeat <операторы> until <выражение>;

Выполнение этого цикла происходит так. Сначала выполняется тело цикла, а затем определяется значение логического выражения.Если значение Тruе, то выполнение цикла прекращается; если значение False, то снова происходит выполнение тела цикла, затем снова вычисляется выражение.Если в теле цикла необходимо выполнить несколько операторов, то операторные скобки begin и end можно опускать, их роль играют слова Repeat и until.

Например, программа находит ту же сумму, что и в предыдущем примере:

Var s, p: Real;

begin

s: = 0; г. = 0.1; Repeat s = s + sиn (г); р: = р + 0.1 until р> 2; witeln (s) end.

Блок-схемы операторов циклов с предусловием и после условием изображены на рисунке 2.2.

Рисунок 2.2 — Блок-схемы операторов циклов while, repeat

 

Пример решения лабораторного задачи:

2.2 методические указания

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

б) разработать алгоритмы решения задач своего варианта, записав их в виде блок-схем;

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

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

 

2.3 контрольные вопросы

  1. Оператор цикла с параметром.
  2. Блок-схема оператора цикла с параметром.
  3. Оператор цикла с предусловием.
  4. Блок-схема оператора цикла с предусловием.
  5. Оператор цикла с постусловием.
  6. Блок-схема оператора цикла с постусловием.

3 Лабораторная работа №3.РАБОТА С массив чисел

 

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

 

3.1 теоретические сведения

Перечислен тип является ординальное типу, что создается программистом. (Ординальнисть — свойство типа.Ординальное является тип с ограниченным количеством констант.Каждая константа имеет свой порядковый номер. К ординальных относятся цели, символьный, логический, перечислен, диапазонный типы) перечислен тип задается перечислением всех своих значений, которые являются идентификаторами, причем каждое значение может принадлежать только одному перечисленному типа.Ординальное номер первой константы есть 0, а следующих 1,2 … В отличие от данных других ординальных типов, данные перечисленного типа не могут быть непосредственно введены или выведены, их можно присваивать, сравнивать, принимать следующее, предыдущее значение, определять ординальное номер.

Приведем примеры описания данных перечисленного типа:

Type month = (jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec)

Var m: month;

        s: (CPM, MSXDOS_2_0, PCDOC, UNIX)

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

Приведем примеры описания данных диапазонного типа:

Type spring = mar..may;

Var sm: spring;

         a: 0..100;

В данном случае считают, что перечисленный тип, содержащий mar и may, уже описанный ранее.

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

Описание одномерного масивов типа состоит из ключевого слова array, по которому в квадратных скобках записано тип индекса, ключевого слова of и описание типа элементов.

Общий вид описания масивов типа:

Type <имя типа> = array [<тип индекса>] of <тип элементов>;

Например,

Const n = 10;

Type rgb = (red, green, blue)

           nat = 1 ..MaxInt;

ar = array [0..n] of Integer;

Var matrix: array [1 ..8,1 .. 8] of Real;

color: array [rgb] of Byte;

           a, b: ar;

ar2: array [nat] of ar;

c: array [0..n] of Integer;

Следует отметить, что типы переменных а и с не эквивалентны, так как переменная а имеет тип аr, а переменная с не является типа аr.

Если базовым типом является масивов, то получаем многомерный массив.В приведенном примере переменные ar2 и matrix является двумерными массивами.Описание переменной matrix эквивалентен такому описанию

Var matrix: array [1..8] of array [1..8] of Real;

То есть многомерные массивы можно описать двумя формами:

полная:

Type <имя типа> = array [<тип индекса 1>] of array [<тип индекса 2>] ofarray [<тип индекса n>] of <тип элементов>;

сокращенное:

Type <имя типа> = array [<тип индекса 1>, <тип индекса 2> … <тип индекса n>] of <тип элементов>;

Оператор присваивания можно применять к массиву как к единому целому. Для этого необходимо, чтобы массивы были одного и того же типа. В результате выполнения оператора а = b все значения элементов массива b будут присвоены соответствующим элементам массива а.

Так, для описанных выше переменных правильным является оператор аr2 [3] = а (поскольку аr2 [3] является массив того же типа, что и массив а).Оператор присваивания с = а неправильный, поскольку массивы а и С не эквивалентных типов.

Читать  Файлы Паскаль, файловый тип, Процедуры и Функции в Pascal

Доступ к элементам массива.Элементы массива изображаются в программе с помощью имени элемента массива, который состоит из имени массива и индекса в квадратных скобках. Для приведенного выше примера color [green] — байтовая величина, matrix [4,7] — действительная величина, аr2 [10] — величина типа аr.Для многомерных массивов допускается такая форма записи доступа к элементу: matrix [1] [2], аr2 [4] [0] — соответственно то же, что и matrix [1,2], аr2 [4,0].

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

Например,

Type rgb = (red, green, blue)

Const color: array [1..4] of rgb = (red, green, blue, green)

table: array [1..5] of Real = (0,0.5,1,1.5, -8e10)

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

Например,

Type rectangle = array [1..4,1..2] of Integer;

Const box: rectangle = ((0,0), (0,1), (5,1), (5,0));

Задавать символьные констант-массивы можно двумя способами:

Const vocal: array [1..7] of Char = ( «А», «Е», «И», «J», «В», «U», «Y»);

Const vocal: array [1..7] of Char = ‘АЕИJОUY «.

Пример решения лабораторного задачи:

3.2 методические указания

а) изучить правила организации массивов и синтаксис описания в программе одномерных и двухмерных массивов (матриц)

б) изучить организацию вложенных циклов с учетом порядка перебора элементов матрицы;

в) изучить правила использования приемов программирования в структурах с вложенными циклами;

г) разработать алгоритм решения задач своего варианта, записав их в виде блок-схем;

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

 

3.3 контрольные вопросы

  1. Задания одномерного массива.
  2. Формы задания многомерного массива.
  3. Доступ к элементам массива.
  4. Тип индекса массива.
  5. Тип элементов массива.
  6. Перечислен тип данных.
  7. Диапазонный тип данных.

4 Лабораторная работа №4.ПРОГРАММИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ подпрограммы ПОЛЬЗОВАТЕЛЯ

 

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

 

4.1 теоретические сведения

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

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

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

Например, описание вида:

Procedure sum (n: Integer, а именно: array [1..50] of Real)

не допускается. Этот заголовок следует описать так:

Type ar = array [1..50] of Real;

Procedure sum (n: Integer, а именно: ar)

Блок процедуры аналогичный блока Паскаль-программы, за исключением лишь того, что после последнего end процедуры ставится точка с запятой, а не точка. Могут присутствовать все разделы, кроме раздела подключения модулей.

Общий вид описания процедуры:

Procedure <имя процедуры> (<описание формальных параметров>);

<Раздел описаний>

begin

<Раздел операторов>

end;

Например, процедура frame формирует на экране рамку размером 10х10 из знаков ‘*’.Левый верхний угол рамки имеет координаты (x, y). Программа demo_procedure строит на экране две рамки.

Program demo_procedure;

Uses crt;

Procedure frame (x, y: Byte)

Var i: Byte;

begin

              GotoXY (x, y) Write ( ‘**********’);

For i: = 1 to 8 do begin GotoXY (x, y + i) Write ( ‘* *’) end;

              GotoXY (x, y + 9); Write ( ‘***********’);

end;

begin

ClrScr; fram (31,2) frame (41,12)

end.

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

Общий вид описания функции:

Function <имя функции> (<описание формальных параметров>) <имя типа функции;

<Раздел описаний>

begin

<Раздел операторов>

end;

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

Например, функция ch (x) вычисляет значение гиперболического косинуса.

Программа demo_function находит значение выражения: y = ch (1) + ch (2).

Program demo_function;

Var y: Real;

Function ch (x: Real): Real;

begin

Ch = (Exp (x) + Exp (-x)) / 2

end;

begin

Y = ch (1) + ch (2) Writeln ( ‘y =’, y)

end.

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

Количество формальных и фактических параметров должна быть одинаковой. Типы формальных и фактических параметров должны совпадать. Исключением является передача параметров строчной типа. В этом случае с помощью директивы компилятора {$ V +} можно активизировать проверку совпадения длин фактических и формальных параметров. По умолчанию установлен режим {$ V +}.

Turbo Pascal поддерживает следующие виды параметров: параметры-значения, параметры-константы, параметры-переменные и без типичные параметры-переменные.

Параметр значения.Это локальное изменение для подпрограммы. Формальный параметр отражает эту переменную в внутри процедуры или функции.Фактический параметр в этом случае должен быть константой, переменной или выражением соответствующего типа.В момент вызова процедуры или функции происходит вычисление выражения и полученное значение присваивается локальной переменной. В дальнейшем при выполнении подпрограммы эта изменений н а вовсе не отличается от других локальных переменных.Изменение формальных параметров внутри процедуры или функции не вызывает изменения соответствующих фактических параметров. В приведенных выше примерах demo_procedure и demo_function все параметры являются параметрами-значениями.

Параметр константа.Это локальная константа для подпрограммы. Этот параметр полностью подобен параметра значение за исключением того, что его значение нельзя изменять в подпрограмме. Для описания параметров-констант в заголовке подпрограммы существует ключевое слово const, которое ставится перед соответствующими параметрами.

Параметр-переменная.Если процедура или функция содержит формальный параметр смену, то фактический параметр может быть только переменной того же типа, а формальный параметр п означает эту переменную на все время выполнения подпрограммы.Характерным признаком параметра переменной является тот факт, что любое изменение формального параметра вызывает изменение соответствующего фактического параметра.Параметры-переменные используются тогда, когда этот параметр предназначен для передачи результата процедуры или функции в программу.Для описания параметров-переменных в заголовке подпрограммы существует ключевое слово var, которая ставится перед соответствующими переменными.

Например,

Type st80 = string [80];

Procedure demo (a, b: Byte; c: Char; var s: st80; var n: Byte)

В процедуре demo параметры a, b и c являются параметрами-значениями, а параметры s i n — параметрами-переменными.

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

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

Если имя или метка описаны или обозначенные в блоке основной программы, то они называются глобальными. Если же имя или метка описаны или обозначенные внутри блока, то они называются локальными. Имя или метка глобальные относительно блока, если они описаны или обозначенные в блоке, включая данный блок. Описание или определения локальной метки или имени вне «своего» блока неопределенны. Если во вложенном блоке описана или данная локальная метка или имя, совпадающее с глобальной, то областью действия этой локальной метки или имени будет «свой» блок, за его пределами действует описание или определение глобальной метки или имени.

Например, во время выполнения программы:

Program demo_var;

Var a, b, c, d: Integer;

Procedure change (c: Integer; var d: Integer);

Var b: Integer;

begin

a = 1; b = 1; c = 1; d = 1

end;

begin

     a = 0; b = 0; c = 0; d = 0; change (c, d)

     Write ( ‘a =’, a, ‘b =’, b, ‘c =’, c, ‘d =’, d)

end.

Получаем результат:

a = 1 b = 0 c = 0 d = 1.

Переменная а является глобальной для программы demo_var, область ее действия распространяется и на процедуру change. Изменение значения а внутри процедуры change вызывает изменение ее значение и в основной программе.В процедуре change описана локальная переменная b, значение ее действительно только внутри этой процедуры.Глобальная переменная b своего значения не меняет.Переменная с, как параметр значение, тоже локальной и своего значения за пределами процедуры change не меняет.Присвоение внутри процедуры change новое значение переменной d, как параметра-переменной, вызывает изменение фактического параметра d.

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

Рекурсивные процедуры и функции.Если процедура или функция вызывает сама себя, то она называется рекурсивной. Глубина рекурсии, то есть количество вызовов, системой Тurbo Pascal не ограничивается.Реально она зависит от ресурсов памяти конкретного компьютера.

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

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

Блок-схема программы, в которой есть подпрограмма, и блок-схема подпрограммы приведены на рисунке 4.1.

Рисунок 4.1 — Блок — схема программы по подпрограммой

Пример решения лабораторного задачи:

4.2 методические указания

а) изучить правила записи подпрограмм различных типов и средств обращения к ним;

б) изучить способы передачи параметров в подпрограммы ;

в) усвоить правила записи программ, которые используют подпрограммы различных видов;

г) разработать алгоритмы решения задач своего варианта, записав их в виде блок-схем;

д) подготовить текстовый вариант программы и предварительных данных.

 

4.3 контрольные вопросы

  1. Подпрограммы-процедуры в программе.
  2. Подпрограммы-функции в программе.
  3. Разница между процедурами и функциями.
  4. Формальные и фактические параметры.
  5. Принцип локализации.
  6. Особенности составления блок-схемы программы, имеет подпрограммы.
  7. Процедурный тип данных.
  8. Рекурсия.

5 Лабораторная работа №5.ОТДЕЛКА символьной ДАННЫХ

 

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

 

5.1 теоретические сведения

Теоретические сведения о символьного типа данных (char) приведены в первой лабораторной работе.

Строка — это последовательность произвольных символов.Строчные константы при использовании берутся в апострофы.В строке может содержаться от 0 до 255 символов. Описание строчной типа состоит из ключевого слова string, по которому в квадратных скобках записано максимальное количество символов, которое может иметь переменная описываемого типа.

Например,

type line = string [80];

var s: line;

t: string [15];

begin

s: = ‘Произвольная последовательность символов’; t = ‘TURBO’; writeln (s, », t)

end.

Символы строки имеют номера от 0 до 255, причем ASCII код символа с номером 0 равна текущей длине данной строки.Отдельный символа строки можно обратиться за помощью индекса, так же, как при обращении к элементу массива. Так, s [11] = ‘о’ — 11-й символ строки s, t [0] — нулевой символ строки t, причем Ord (t [0]) = 5 — текущая длина строки t.

Операции над строками.Над данным строчной типа определены операции сложения, отношение и оператор присваивания. Также их можно вводить с клавиатуры и выводить на экран.

Читать  Строки Паскаль – Тип STRING для обработки текстов

Сцепление двух или более строк в один реализуется с помощью операции сложения или конкатенации, которая обозначается знаком «+». Добавляться могут строки произвольной длины, но необходимо, чтобы длина строки-результата не превышала 255.

выражение Результат

‘Turbo’ + » + ‘Pascal’ + ‘v.7.1’ ‘Turbo Pascal v.7.1 «

«ТРАН ‘+’ ‘+’ ЗИСТОР » транзистор»

Во втором примере пара апострофов, идущие подряд, изображает пустой символ.Он не отображается на экране и не имеет порядкового номера.

Произвольные две строки можно сравнивать друг с другом с помощью операций отношения (=, <> <>, <=,> =). Сравнение строк происходит слева направо, к первому отличного символа. Две строки равны, если они имеют одинаковую длину и состоят из одинаковых символов, идущих в одном порядке. Меньше будет та строка, в котором символ, не совпадает, имеет меньший ординальное номер. Если строки имеют различную длину, но в общей части совпадают, тем меньше считается короче строку. Результат операции отношение имеет логический тип.

выражение Результат

«ABCDE»> ‘ABcde’ False

‘Turbo’> = ‘Turbo’ True

» <Char (0) True

«0123» <> ‘1023’ True

«Pascal ‘=’ Pascal ‘True

Оператор присваивания используется для присвоения строчной переменной результата выражения, имеет строковый тип. Если с правой стороны от оператора присваивания иметь строка, содержащая больше символов, чем может содержать переменная, стоит слева, то лишние праве символы отбрасываются.В операторе присваивания допускается смешивание символьного и строкового типов. Если в данном случае символьной величине присваивается строка, текущая длина которого больше 1, то возникает ошибка во время выполнения.

Например,

var s, t: string [12];

          c: char;

begin

     c = ‘T’; s = c + ‘urbo’; t = ‘A’;

s = s + ‘Pascal v.7.1’; {В результате s равна ‘Turbo Pascal v.7.1’}

c = t; {допустим, потому что текущая длина и — 1 символ}

c = s { «недопустимо, так как текущая длина s — 12 символов}

end.

Стандартные подпрограммы обработки строк.Во время дальнейшего описания процедур и функций под типом anystring понимать любой строчный тип.

Процедуры. Delete (Var s: anystring; n, m: Integer) — извлечение m символов из строки s, начиная с n- го символа.Если n больше длины строки, то не происходит никаких действий.Если n + m больше длины строки, то изымаются все символы до конца строки.Значение n должно лежать в пределах 1..255.

выражение Результат

s = ‘Turbo’ Delete (s, 2,3) ‘To’

s = ‘Turbo’ Delete (s, 9,4) ‘Turbo’

s = ‘Turbo’ Delete (s, 4,3) ‘Tur «

Insert (s: anystring; Var t: anystring; n: Integer) — вставка строки s в строку t перед символом с номером n.Если n больше длины строки t, то происходит конкатенация t i s. Если длина результата превышает максимальную длину строки t, то в t остаются только левые символы.Значение n должно лежать в пределах 1..255.

Пусть t имеет тип string [9].

 

выражение Результат

t = ‘Tuo’ Insert ( ‘rb’, t, 3) ‘Turbo’

t = ‘Turbo’ Insert ( ‘.COM «, t, 7)                             «Turbo.COM «

t = ‘Turbo’ Insert ( ‘INST.COM «, t, 2)’ TINST.COM»

Str (n: Integer {или Real}; Var s: anystring) — преобразование целого или действительного значения n в строку s.Строка s должен иметь достаточную длину.После n может быть указан формат, как в операторе вывода Write.Если в формате указано количество позиций, которая больше длины строки s, то лишние праве символы будут отброшены.

В следующих примерах переменная r имеет тип Real и значение 567.89, s имеет тип string [5], г. имеет тип string [10].

Выражение Число Результат

Str (-100, s) -100 «-100»

Str (13: 4, s) _ _13 ’13’

Str (13: 6, s) _ _ _13 ‘1’

Str (r: 10 p) 5.6789E + 02 ‘5.6789E + 02’

Str (r 8, p) 5.68E + 02 ‘5.68E + 02’

Str (r: 8: 2, p) _ _ 567.89 «567.89»

Str (-r: 12: 2, p) _ _ _ _ _ -567.89 «-567.»

Val (s: anystring; Var n: Integer {или Real}; c: Integer) — преобразование строки s в число n.Строка s должен быть изображением некоторого числа и не должен содержать начальных и конечных пробелов. Если преобразование состоялось успешно, то с = 0, в противном случае значение n не определено, а переменная с равна номеру первого ошибочного символа в строке s.

выражение Результат

Val ( ‘1234’, n, c) Для n произвольного типа его значение 1234 i с = 0.

Val (’12 .34 ‘, n, c)          c = 3, n не определено для n целого типа;

с = 0, n = 12.34 для n действительного типа.

Val ( ‘- 149 _’, n, c) с = 5, n не определено для n произвольного типа.

Функции. Concat (s1, s2, …, sn: anystring): anystring — конкатенация строк s1, …, sn в один в указанном порядке.Если длина строки-результата превысит 255, то возникнет ошибка во время выполнения.

выражение Результат

Concat ( ‘Turbo’, », ‘Pascal’) ‘Turbo Pascal «

Сору (s: anystring; n, m: Integer): anystring — результатом является m символов из строки s, начиная с символа с номером n. Если n больше длины строки s, то результатом функции будет пустой символ.Если n + m больше длины строки s, то результатом функции будут конечные символы, начиная с символа с номером n. Значение n должно лежать в пределах 1..255.

выражение Результат

Copy ( ‘Turbo Pascal «, 7,6)’ Pascal ‘

        Copy ( ‘Turbo Pascal «, 14,3)’ ‘

        Copy ( ‘Turbo Pascal «, 9,7)’ scal»

Copy (s, n, 1) s [n], если

Length (s: anystring): Byte — результатом является текущая длина строки s есть количество в нем символов.

                         выражение Результат

                      Length ( ‘Turbo’) 6

                      Length ( ») 0

Pos (s, t: anystring): Byte — результатом является наименьший номер символа, начиная с которого строка s входит в строку t, если вхождение нет, то результатом будет 0.

выражение Результат

Pos ( ‘rb’, ‘Turbo’) 3

         Pos ( ‘AB’, ‘BABBABBAB’) 2

         Pos ( ‘Turbo’, ‘Pascal’) 0

Пример решения лабораторного задачи:

5.2 методические указания

а) изучить правила записи символьных данных (констант, переменных, массивов) и описание способа их ввода и вывода;

б) ознакомиться с основными стандартными процедурами и функциями, которые позволяют обрабатывать символьные строки.Обратить внимание на вызов подпрограмм и на типы формальных параметров;

в) разработать алгоритмы решения задач своего варианта, записав их в виде блок-схем;

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

 

5.3 контрольные вопросы

  1. Строчный тип данных.
  2. Символьный тип

3.Операции со строками.

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

  1. Стандартные функции для действий со строками.

6 Лабораторная работа №6.ОБРАБОТКИ файловой структуры данных, использование ЗАПАСОВ

 

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

 

6.1 теоретические сведения

Запись — это составленный или структурный тип данных, содержащий фиксированное количество компонент, каждая из которых может иметь свой тип.Тип компонент записи может быть произвольным: простым, составленным или указательным.

Описание записного типа состоит из ключевого слова Record, за которым следует список компонент с указанием их типов.Завершает описание, ключевое слово end.Компонента записи называется полем.

Общий вид описания записного типа:

Type <имя типа> = Record

<Имя поля> <тип поля>;

. . . . . . . . . . . . . . . . . . . . . .

<Имя поля> <тип поля>

end;

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

Над данным записного типа, как над одним целым, определены две операции: селекция (выделение) компоненты и оператор присваивания.Для селекции компоненты некоторого записи после имени переменной записного типа ставится знак «. «(Точка), по которому указывается имя поля.В операторе присваивания можно употреблять только записи, идентичные по структуре.

Например, для задания информации о студенте можно ввести записной тип student со структурой

Type exam = (phisik, program, math)

mark = Array [exam] of 0..100;

date = Record

                                   day: 1..31;

                               month: 1..12;

                                  уеаr: 1900..2010

                         end;

student = Record

name: string [40];

group: string [6];

                                 birthday: date;

                                    sesion: mark

                              end;

Var s, s1: student;

         d: date;

Размер s.name имеет тип string И40], величина s.sesion имеет тип mark, величина s.sesion [math] есть диапазонного типа 0..100.Поле birthday имеет, в свою очередь, записной тип, поэтому доступ к его полей будет иметь вид: s.birthday.day — день, s.birthday.year — год рождения.

Присвоение конкретного значения переменной s может иметь следующий вид:

s.name = ‘Суботiна Лилия Геннадьевна’; s.group:=’ПЕ-071 ‘;

s.birthday.day:=29; s.birthday.month = 3; s.birthday.year = 1988;

s.sesion [phisik] = 90; s.sesion [program] = 95; s.sesion [math] = 100.

оператор присоединения with.Использование полей является громоздким из-за того, что постоянно отмечается имя переменной-записи. Для сокращения подобных записей используют оператор присоединения with.Этот оператор задает область действия, в которой для записи, указанном после with, идентификация поля происходит с помощью простого имени поля.

Общий вид оператора присоединения:

with <имя переменной-записи> do <оператор>;

Таким образом, приведенный выше фрагмент будет выглядеть:

with s do begin

name = «Суботiна Лилия Геннадьевна ‘; group = ПЭ-991 ‘;

with birthday do begin

       day = 29; month = 3; year = 1980;

end;

      sesion [phisik] = 90; sesion [program] = 95; s.sesion [math] = 100

end.

Вложенные операторы присоединения допускают сокращенную форму записи.

запись

with a do

      with b do

            with c do <оператор>

эквивалентный записи

with a, b, c do <оператор>

Область действия имени поля записи — внутренний запись, в которой описано это поле.

Например,

Var x: Real;

y: Record x, y: Integer end;

Внутри блока операторов переменная вещественного типа х отличается от целочисленной переменной у.х, а переменная записного типа в — от целочисленной переменной у.у.внутри оператора

with y do <оператор>

переменные х и у обозначают соответственно переменные у.х и у.у, а настоящая переменная x недоступна.

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

Запись с вариантами состоит из фиксированной и вариантной частей, причем фиксированную часть можно опускать. Фиксированная часть является обычным записи, а вариантная состоит из ключевого слова Case, за которым следует описание поля — селектора вариантов, ключевого слова of и описания вариантов.Каждый вариант состоит из списка полей, определенных для данного варианта. Поля каждого варианта и описание их типа берутся в круглые скобки.

Общий вид описания записного типа с вариантами:

Type <имя типа> = Record <имя поля> <тип поля>;

. . . . . . . . . . . . . . . . . . . .

<Имя поля> <тип поля>;

Case <селектор> <тип селектора> of

<метка 1> (<имя поля> <тип поля> ….);

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

<метка n> (<имя поля> <тип поля> ….);

                                     end;

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

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

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

<Метка 1> ();

Например, описанный выше тип student можно расширить за счет изменения его структуры.Ввести поле-селектор sex (пол).Для студентов — мужчин определить поле логического типа mil_serv (military service — воинской обязанности).Для студенток создать вложенную вариантную часть с полем-селектором логического типа married (замужем или нет).Если замужем, то в поле naiden_name записать девичья фамилия, в противном случае не вводить никакой информации.Новый тип student будет выглядеть;

Type exam = (phisik, program, math)

mark = Array [exam] of 0 ..100;

date = Record

                                   day: 1..31;

                               month: 1..12;

                                  уеаr: 1950..1980

                         end;

student = Record

name: string [40];

group: string [6];

                                       birthday: date;

                                           sesion: mark

                                        Case sex: (male, female) of

                                               male: (mil_serv: Boolean);

female: (Case married: Boolean of

True: (maiden_name: string [20]);

                                                             False ())

                              end;

Констант-записи описываются как и обычные записи.Значения полей задаются в круглых скобках и отделяются знаками ‘; «.

Читать  Язык программирования Паскаль – Структура Паскаль - программы

Например, для описанного выше типа с вариантами student задания констант-записи s будет иметь вид:

Type student =

(Name: «Буря Оксана Михайловна ‘;

group: «ПЭ-072»;

birthday: (day: 22; month: 1; уеаr 1988)

                                            sesion: (91,98,96)

sex: female;

                                            married: True;

maiden_name: «Высоцкая»;)

Файловой тип (File) (типизированные файлы).В языке Паскаль термин «файл» касается объектов, образованных последовательностью компонент одного типа, причем считают, что файл находится снаружи программы. Компоненты файл в называются его элементами.В отличие от масивов типа, количество элементов файла не определяется во время описания файлового типа.

Работа с файлами сводится к открытию файла, выполнения операций над его элементами и закрытия файла.

Описание файлового типа состоит из ключевого слова File, за которым следуют ключевое слово of и типа элементов файла.Элементами файл в могут быть объекты произвольного типа, кроме файлового.Переменная файлового типа является весьма специфической, ее нельзя использовать в выражениях и в операторе присвоения. Файловая переменная отождествляется с некоторым физическим файлом и затем в программе только определяет файл, над которым выполняются операции.

Например,

Type complex = Record

                                  re, im: Real

                             end;

comp_fil = File of complex;

    Var f: comp_fil;

h: File of Integer;

Здесь файловая переменная f изображает файл, элементы которого имеют записной тип complex, h — файл, элементы которого являются целые числа.

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

Стандартные подпрограммы для обработки файлов.Они предназначены для организации и эффективной обработки файлов. В дальнейшем filevar означает любой файловый тип, anystring — любой строчный тип, filetype — тип, совпадает с типом элементов файла.

Процедуры.

Assing (Var f: filevar; s: anystring) — файловая переменная f отождествляется с физическим файлом с именем s.Имя s содержит основное или расширенное имя файла, а также может содержать имя дисковода.Любая работа с файлом должна начинаться с этой процедуры.

Например, процедура Assign (h, ‘a: myfile.dta’) отождествляет файловую переменную h физическим файлом «myfile.dta», содержащийся в дисководе A.

Close (Var f: filevar) — закрытие файла f.В этом случае в фа йл записывается метка конца файла и вносятся необходимые изменения в директорий.Эта процедура необходима для сохранения результатов при создании или обновления файлов.

Erase (Var f: filevar) — файл f вытирается с диска.

Flush (Var f: filevar) — очищает буфер файла f.Когда происходит запись в файл, то данные записываются в него не сразу. Сначала накапливаются в буфере, содержится в оперативной памяти, а когда буфер заполнится, происходит запись в файл. Процедура Flush записывает содержимое буфера в том состоянии, в котором он в момент вызова процедуры в файл.Если перед закрытием файла в буфер ни был пустым, то процедура Close автоматически переносит его содержание в файл.

Read (Var f: filevar; Var a1, …, an: filetype) — считывание элементов из файла f и присвоения их значений переменным из списка.Список должен состоять хотя бы из одной переменной, иначе не будут выполняться никакие действия. Считывания начинается с текущего местоположения указателя файла в, а после окончания процедуры он устанавливается на первом непрочитанных элементе.Если тип некоторой переменной из списка не совпадает с типом элементов файла в, то фиксируется ошибка ввода-вывода.

Rename (Var f: filevar; s: anystring) — имя файла f заменяется именем, заданным строкой s.Новое имя не должно совпадать с именами уже существующих файлов.

Reset (Var f: filevar) — открывает уже существующий файл f.Указатель файла в устанавливается н а первый элемент.Если такого файла в не существует, то возникает ошибка ввода-вывода.

Rewrite (Var f: filevar) — образует новый файл f.Если такой уже существовал, то он очищается. Указатель файла в находится в начале файла.

Seek (Var f: filevar; n: Integer) — устанавливает указатель файла f на n-й элемент.Первый элемент имеет номер 0, второй — 1 и т.д.

Write (Var f: filevar; a1, …., An: filetype) — запись в файл f значений переменных из списка.Список должен состоять хотя бы из одной переменной, и Накш не будут выполняться никакие действия.После выполнения процедуры указатель файла в содержится после последнего записанного элемента.Если тип некоторой переменной из списка не совпадает с типом элементов, то фиксируется ошибка ввода.

Процедуры Flush, Read, Seek, Write применяются только к открытым файлов, а процедуры Erase и Rename — до закрытых файлов.Нарушение этого правила приводит к возникновению ошибки ввода-вывода

функции

Eof (Var f: filevar): Boolean — имеет значение True, если указатель файла находится на метке конца файла, и False — в противном случае.

FilePos (Var f: filevar): Integer — определяет номер элемента, в котором содержится указатель файла.

FileSize (Var f: filevar): Integer- определяет количество элементов в файле.

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

Контроль операций ввода-вывода. Способ контроля правильности операций ввода-вывода зависит от состояния директивы контроля этих операций. Директива имеет вид: {$ I +} или {$ I-}. По умолчанию директива находится в активном состоянии {$ I +}. В этом режиме, если возникнет ошибка ввода-вывода, работа программы прерывается и пользователь получает сообщение о номер и местонахождение ошибки. Такой способ контроля неудобный, потому что может привести к потере данных.

Если директива {$ И} находится в пассивном состоянии {$ I-}, то при возникновении ошибки ввода-вывода выполнения программы не прекращается, но следующие операции ввода-вывода задерживаются. Состояние задержки сохраняется до тех пор, пока не будет вызвана целочисленных функция IOResult.Эта функция возвращает значение 0, если предыдущие операции ввода-вывода были корректными, и некоторое ненулевое значение, если обнаружены ошибки.После обращения к этой функции значение ее обнуляется. Хотя эта функция только фиксирует наличие или отсутствие ошибок, контролируя каждую операцию ввода-вывода путем перевода директивы {$ И} в пассивное состояние только на момент выполнения этой операции, можно идентифицировать причину возникновения ошибки и предусмотреть программные средства для ее устранения без прерывания работы программы и с сохранением данных.

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

Program demo_control_IO;

Uses crt;

Var s: string [14];

          b: Boolean;

f: File of byte;

begin

ClrScr; GotoXY (30,5) Write ( ‘Название файла:’); b = False;

     Repeat

          GotoXY (45,5) Readln (s) Assign (f, s);

          {$ I-} Reset (f); {$ I +}

           If IOResult = 0 then b = True

           else

                   begin

GotoXY (30,7) Write ( ‘Такой файл не найден’);

                       GotoXY (42,5) Write ( »);

                    end

           until b;

GotoXY (35,9) Write ( ‘Размер:’, FileSize (f), «байт»); Close (f)

Repeat until keypressed

end.

Текстовые файлы.Отдельное место в языке Паскаль занимают текстовые файлы. В отличие от других файлов, текстовые файлы не состоят из последовательности одинаковых элементов. Компонентами их есть строки символов, которые могут иметь произвольную длину. В конце каждой строки записывается знак конца строки. В конце файла в записывается признак конца файла.Текстовый файл описывается с помощью стандартного идентификатора Техt. Например,

Var f: Text.

Поскольку текстовые файлы не имеют регулярной структуры, то к ним нельзя применять стандартные подпрограммы FilePos, FileSize и Seek.Запрещается также одновременно читать и писать в один и тот же текстовый файл.

Процедуры. Стандартные процедуры Assign, Close, Reset, Rewrite имеют то же действие.Процедуры Read и Write модифицированы.

Read (Var f: Text; Var a1, …, an: anytype) — считывает из файла f значение и присваивает их переменным из списка.Тип anytype может быть символьным, строчным, целым или действительным.Действие и результат процедуры Read зависят от типа величин, считываются.Для параметра переменной символьного типа с файл в будет считан символ и присвоен соответствующей переменной.Если к выполнению процедуры Read функция Eof приобрела значение Тruе, то символьной переменной будет присвоено символ Chr ($ 1А) (символ ^ Z — конец файлe), а если функция Eoln приобрела значение Тruе (в то-же время функция Eof приобрела значение False) , то переменной будет присвоено значение СHR ($ 0D) и СHR ($ 0A) (символ Сr — возврат каретки).

Для параметра переменной строчной типа процедура Read будет читать все символы из одной строки файла к символу конца строки, но не включая его.Если длина строки превышает длину строки-переменной, то лишние праве символы будет отвергнуто.

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

Например, если в текстовом файле есть последовательность символов

-149 5К4 и процедуры считывания имеют вид

read (f, a) Read (f, b)

и b — целочисленные переменные), то переменной а будет присвоено значение -149, а при попытке считать значение переменной b фиксируется ошибка ввода-вывода ( ‘5К4 «не является целочисленных константой).

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

Например, если в текстовом файле есть последовательность символов

1965.0503_ _-1.607 + 04

2.1А-05

и процедуры считывания имеют вид

Read (f, a, b) Read (f, c)

(A, b и с -переменного действительного типа), то переменной а будет присвоено значение 1.9650503Е + 03 переменной b — значение -7.607Е + 04, а при попытке считать значение переменной с фиксируется ошибка ввода-вывода (последовательность ‘2.1 А-05 «не является действительной константой).

Если в двух последних случаях (при чтении величин числового типа) функция Еоf имела значение Тruе перед выполнением процедуры Read или функция Еоln приобрела значение Тruе при пропуске начальных пробелов, знаков табуляции или меток конца строки, то переменной, что считывается, а не присваивается никакое значения.

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

Readln (Var f: Text; Var a1, …, an: anytype) — процедура, аналогичная процедуре Read, однако с той разницей, что следующий оператор считывания выполняться с начала строки, а символы, оставленные в предыдущей строке, игнорируются.Вызов процедуры Readln без списка параметров-переменных приводит просто к перемещению указателя файла на начало следующей строки.Таким образом оператор Readln (f, a, b) аналогичный сложенном оператору;

begin Read (f, a) Read (f, b) Readln (f) end; .

Write (Var f: Text; Var a1, …, an: anytype) — записывает в файл, который определяет f, одно или более значений из списка переменных.Тип anytype может быть символьным, строчным, целым, логическим или действительным.В процедуре Write допускается отформатировано вывода аналогично форматированном выводу на экран.В данном случае свободные знакоместа записываются в файл как пробелы.

Writeln (Var f: Text; Var a1, …, an: anytype) — процедура, аналогичная процедуре Write, но в отличие от нее после окончания записи значений переменных из списка в файл записывается метка конца строки и следующий оператор вывода осуществлять запись данных с нового строки.Вызов процедуры Writeln без списка параметров-переменных приводит к записи в файл пустой строки.

Следует отметить, что стандартные системные файлы (con, com1, lpt1 ш т.д.) системой Turbo Pascal интерпретируются как текстовые и к ним можно применять процедуры Readln и Writeln с тем же содержанием.

Например, процедуры Readln (Con) или Readln ждут нажатия клавиши ввода, процедура Writeln (Lst) выводит на печатающее устройство пустая строка.

функции

Eof (f: text): Boolean — аналогичная Eof для типизированных файлов.

Eoln (f: text): Boolean — функция приобретает значение Тruе, если указатель файла находится на метке конца строки или на метке конца файла, и False — в противном случае.

Читать  Введение и вывод значений величин | Составляющие алгоритма обработки величин

SeekEof (f: text): Boolean — функция, аналогичная функции Eof, но в отличие от нее игнорирует все пробелы, символы табуляции и конца строки.

SeekEoln (f: text): Boolean — функция, аналогичная функции Eoln, но в отличие от нее игнорирует все пробелы и символы табуляции.

Файлы без типа. Система Turbo Pascal предусматривает операции с файлами, которые не имеют типа.Эти файлы совместимы со всеми типами файлов и предназначены, как правило, для прямого доступа к файл в.

Описание бестиповых файла состоит из ключевого слова File (например Var f: File;).К файлов без типа можно применять все стандартные подпрограммы, кроме Read, Write и Flush.Считают, что элементами файлов без типа являются объекты длиной 128 байтов. При использовании процедуры Seek указатель файла передвигаться по элементам такой длины.Так, процедура Seek (f, 2) поместит указатель на третий элемент (байты с номерами 256..383).Операции чтения и записи происходят только порциями по 128 байтов. Это осуществляют процедуры BlockRead и BlockWrite.

BlockRead (Var f: File; Var v: anytype; n: Integer; Var m: Integer) — процедура считывает n блоков по 128 байт с бестиповых файла f.Результат помещается в область оперативной памяти, которую занимает переменная v (anytype — любой тип.).Необязательный параметр m показывает, сколько блоков было фактически считаны.Если m <n, то это означает, что в процессе считывания файла истек.

BlockWrite (Var f: File; Var v: anytype; n: Integer; Var m: Integer) процедура записывает n блоков по 128 байт в бестиповых файл f.Данные, которые записываются, берутся из области оперативной памяти, которую занимает переменная v (Anytype — любой тип).Необязательный параметр m показывает сколько блоков было фактически записано.Если m <n то это означает, что по некоторой причине не все блоки были записаны.

Пример решения лабораторного задачи:

6.2 методические указания

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

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

в) усвоить правила работы с комбинированными типами данных: структура записей, описание записей в программе, доступ к отдельным полям записей, записи с вариантами, оператор присоединения;

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

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

 

6.3 контрольные вопросы

  1. Тип данных запись.
  2. Запись с вариантом.
  3. Файловый тип данных.
  4. Оператор присоединения.
  5. Операции с файлами прямого доступа (типизованимы).
  6. Операции с файлами последовательного доступа (текстовыми).
  7. Операции с бестиповых файлами.
  8. Особенности работы с файлами в программе.

Приложение А — Работа в среде Turbo (Borland) Pascal

Система программирования Turbo (Borland) Pascal является интегрированной средой, включающее экранный редактор; компилятор; редактор связей; отладчик. Интегрированная среда позволяет набирать тексты программ с использованием встроенного редактора текстов, компилировать их, выполнять, проводить отладку программ.

После успешного запуска системы появляется экранный редактор, имеет вид, приведенный на рисунке А.1.

Рисунок A.1 — Окно программы Turbo Pascal

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

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

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

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

Слева от стрелки размещается цифра 1 — номер окна. Одновременно можно работать с несколькими программами, каждая из которых будет размещена в отдельном окне редактора.

Внизу слева два числа, записанные через «:», которые указывают текущую позицию курсора — номер строки и позицию в строке соответственно.

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

Главное меню можно активизировать с помощью мышки или нажатие клавиши F10.Такая клал иша (или комбинация клавиш) называется горячей клавишей.

Главное меню включает в себя следующие пункты:

File — действия с файлами и выход из системы;

Edit — редактирование текста;

Search — поиск текстовой строки, процедуры, функции или места ошибки;

Run — выполнение программы;

Compile — компиляции программы с активного окна;

Debug — отладка программы;

Tools — запуск вспомогательных программ;

Options — установка параметров среды;

Window — работа с окнами;

Help — справочная система.

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

Пункт File содержит следующие подменю:

New — создает и открывает новое окно редактора с именем nonameAA.pas, где АА порядковый номер окна с именем noname;

Open — открывает для редактирования файл был создан и сохранен ранее;

Save — записывает содержимое активного окна редактора в файл; горячая клавиша F2;

Save as — записывает содержимое активного окна редактора в файл под другим именем;

Save all — записывает содержимое всех окон редактора в соответствующие файлы;

Change dir — изменяет текущий каталог пользователя;

Print — печатает текущий файл;

Print setup — настраивает среду для печати текущего файла;

Dos shell — осуществляет временный выход в MS DOS. Для возврата в редактор среды Pascal необходимо в командной строке набрать Exit;

Exit — завершает работу в среде Borland Pascal; горячая клавиша Alt-X.

Пункт Edit содержит подменю:

Undo — отменяет последнюю смену, то есть восстанавливает вид активного окна редактора, который предшествует последней смене; горячая клавиша Alt-Backspace;

Redo — отменяет действие последней команды Undo;

Cut — удаляет выделенный блок, помещая его при этом в буфер обмена Clipboard; горячая клавиша Shift-Del;

Copy — копирует выделенный блок в буфер обмена Clipboard; горячая клавиша Ctrl-Ins или Ctrl-C;

Paste — копирует содержимое буфера обмена Clipboard в активное окно редактора; горячая клавиша Shift-Ins или Ctrl-V;

Clear — удаляет выделенный блок, а не помещая его в буфер обмена Clipboard; горячая клавиша Ctrl-Del;

Show Clipboard — показывает содержимое буфера обмена.

Пункт Search включает в себя подменю:

Find — выполняет поиск текстовой строки в активном окне редактора;

Replace — ищет в активном окне заданный текстовый фрагмент и заменяет его на новый;

Search Again — повторяет поиск (и замену) заданного фрагмента во всем текста;

Go To Line Number — перемещает курсор в окне редактора на строку с заданным номером;

Show Last Compiler Error — выделяет строку текста с выявленной во время компиляции синтаксической ошибкой;

Find Error — выполняет поиск строки в тексте программы, вызвал ошибку выполнения;

Find Procedure — выполняет поиск в тексте программы заданной процедуры или функции.

Пункт Run содержит подменю:

Run — выполняет компиляцию, компоновку выполнения программы из файла редактора; горячая клавиша Ctrl-F9;

Step Over — осуществляет пошаговое выполнение главного тела программы, исключая пошаговое выполнение процедур и функций пользователя; горячая клавиша F8;

Trace Into — обеспечивает пошаговое выполнение программ, включая пошаговое выполнение всех процедур и функций пользователя; горячая клавиша F7;

Go To Cursor — осуществляет выполнение программы после компиляции и компоновки к первому оператора в строке с курсором; горячая клавиша F4;

Program Reset — прекращает отладки программы и удаляет программу, выполняется из памяти, закрывает все открытые в ней на данный момент файлы; горячая клавиша Ctrl-F2;

Parameters — позволяет задать строку параметров, которые передаются программе, выполняется.

Пункт Compile содержит подменю:

Compile — компилирует программу или модуль, находящийся в активном окне редактора; горячая клавиша Alt-F9;

Make — компилирует программу по перекомпиляцией только измененных модулей (TPU-файлов); горячая клавиша F9;

Build — полностью Перекомпилируйте программу, включая перекомпиляцию всех модулей;

Target — позволяет выбрать режим компиляции;

Primary File — задает имя исходного файла, то есть того файла, из которого необходимо начинать компиляцию и выполнение программы;

Clear Primary File — очищает имя, заданное опцией Primary File;

Information — показывает статистику программы.

Пункт Debug включает в себя:

Breakpoints — позволяет просматривать, корректировать и удалять контрольные точки;

Call Stack — активизирует окно программного стека, отображающий все вызовы подпрограмм; горячая клавиша Ctrl-F3;

Register — активизирует окно регистра, отображающий текущее состояние всех регистров процессора персонального компьютера;

Watch — активизирует окно отладки;

Output — активизирует окно вывода результата работы программы;

User Screen — активизирует окно вывода результата работы программы и разворачивает его на весь экран; горячая клавиша Alt-F5;

Evaluate / Modify — позволяет в процессе отладки просматривать или заменять значение любой переменной, а также найти значение любого выражения; горячая клавиша Ctrl-F4;

Add Watch — добавляет в окно наблюдения (отладки) переменные или выражения вместе с их текущими значениями, тем самым позволяя наблюдать за изменением этих значений; горячая клавиша Ctrl-F7;

Add Breakpoint — позволяет установить в текущей строке точку; горячая клавиша Ctrl-F8 позволяет как устанавливать, так и снимать точку.

Пункт Tools содержит подменю:

Messages — активизирует окно сообщений.С ередовище ищет и показывает файл с нужным фрагментом текста программы;

Go To Next — ищет фрагмент, заданный следующим сообщением в окне Messages; горячая клавиша Alt-F8;

Go To Previous — ищет фрагмент, соответствует предыдущему сообщению в окне Messages; горячая клавиша Alt-F7;

Grep — инициирует работу утилиты Grep; по умолчанию ищет во всех файлах с расширением.PAS текущего каталога имя переменной, процедуры или функции, на которой к моменту вызова опции стоял курсор; горячая клавиша Shift-F2.

Пункт Options включает в себя:

Compiler — задает параметры, с помощью которых можно управлять генерацией машинного кода программы;

Memory Sizes — регулирует размер памяти, которую занимает рабочая программа;

Linker — регулирует режим работы компоновщика;

Debugger — определяет отладчик, который используется и режим обновления экрана дисплея в процессе отладки;

Directories — определяет группы функциональных каталогов: XE & TPU directories указывает каталог, где будут располагаться готовы к работе .exe- и .tpu-файлы; Include directories содержит имена каталогов, в которых необходимо искать файлы, включаемых если таковые не найдены в текущем каталоге; Unit directories содержит каталоги, в которых будет вестись поиск .tpu файлов, если среда не оказывает их в текущем каталоге; Object directories указывает имена каталогов для поиска .obj-файлов, если таковые не найдены в текущем каталоге;

Environment — позволяет установить некоторые дополнительные опции окружения (цвет, работа с мышкой и т.д.);

Open — позволяет задать имя конфигурационного файла, в котором содержится информация о настройке среды;

Save — сохраняет текущее настройки среды в конфигурационном файле;

Save As — позволяет указывать имя каталога и файла, в котором среда будет сохранять свои настройки.

Пункт Window содержит подменю:

Tile — располагает окна так, чтобы каждое было видно на экране, выравнивая, по возможности, их размеры;

Cascade — располагает окна на экране каскадом;

Close All — закрывает все открытые окна;

Refresh Display — обновляет экран путем удаления следов программы, работала в режиме отладки,

Size / Move — позволяет перемещать активное окно по экрану или изменять его размеры; горячая клавиша Ctrl-F5;

Zoom — разворачивает окно на весь экран или возвращает ему предварительный вид; горячая клавиша F5;

Next — активизирует следующее окно; горячая клавиша F6;

Previous — активизирует предыдущее окно; горячая клавиша Shift-F6;

Close — закрывает активное окно; горячая клавиша Alt-F3;

List — выводит список всех открытых окон; горячая клавиша Alt-0.

Пункт Help содержит подменю:

Contents — позволяет просматривать содержимое справочной службы;

Index — выводит алфавитный список всех ссылок справочной службы; горячая клавиша Shift-F1;

Topic Search — выдает информацию о зарезервированное слово в пределах курсора; горячая клавиша Ctrl-F1;

Previous Topic — выводит предварительное справочное сообщение; горячая клавиша Alt-F1;

Using Help — дает разъяснения о том, как пользоваться справочной службой;

Files — позволяет установить нужный файл справочной службы;

Compiler Directives — выводит справку директив компилятора;

Procedures And Functions — содержит справку о стандартные процедуры и функции;

Reserved Words — содержит справку о зарезервированные слова;

Standard Units — содержит справку о стандартные модули;

Borland Pascal Language — содержит справку о языке Borland Pascal;

Error Messages — содержит справку сообщений об ошибках;

About — содержит информацию об авторских правах

[Всего голосов: 3    Средний: 5/5]