- •Вятский госудаpственный технический унивеpситет Кафедpа электpопpивода и автоматики пpомышленных установок информатика
- •Редактор
- •1. Общая структура программы на языке турбо-паскаль.
- •1.1. Раздел описания меток.
- •1.2. Раздел определения констант.
- •1.3.Раздел описания типов.
- •1.4.Раздел описания переменных.
- •1.5.Раздел описания процедур и функций.
- •2.Компоненты языка паскаль.
- •3.Данные в языке паскаль.
- •3.1. Пpостые типы данных.
- •3.1.1.Целый тип данных.
- •3.1.2. Вещественный тип.
- •3.1.3. Символьный тип.
- •3.1.4.Логический тип.
- •3.1.5.Перечисляемый тип.
- •3.2.Структурные (структурированные) типы данных.
- •3.2.1.Массивы.
- •3.2.2.Строки.
- •3.2.3.Записи.
- •3.2.4. Множества.
- •4. Файлы.
- •4.1. Текстовые файлы.
- •4.2. Типизированные файлы.
- •4.3. Нетипизированные файлы.
- •5. Работа с памятью.
- •6. Объектно-ориентированное программирование.
- •7. Лабораторные работы.
- •7.1. Лабоpатоpная pабота n 1
- •"Работа с записями в Туpбо-Паскале"
- •2 : Sort(f2,X,I,z);
- •3 : Exit;
- •7. 3. Лабоpатоpная pабота n 3
- •Var gd,gm,XI,yi: integer; sx,sy:string[30];
- •X,y,x1,x2,y1,y2,n,m:real;
- •InitGraph(gd,gm,'');
- •7.4. Лабораторная работа n 4.
- •7.5. Лабораторная работа n 5.
- •X1,y1,x2,y2:integer;
- •Init(x1,y1,x2,y2,textcolor,backcolor,text);
- •InitGraph(grDriver, grMode,' ');
- •7.6. Лабораторная работа n 6.
- •S : String; {надпись}
- •Литература
4.1. Текстовые файлы.
Текстовый файл в ПАСКАЛЕ представляет собой совокупность строк переменной длины. Доступ к каждой строке последовательный. В конце каждой строки имеется признак конца строки EOLN – ASCII(13),(10). В конце файла имеется признак конца файла ASCII(26).
Читать и записывать информацию в текстовом файле можно командами (процедурами) READ( f, <список>), READLN (f, <список>), WRITE( f, <список>), WRITELN( f, <список> ). Проверять на конец строки функцией EOLN(f).
При каждой операции указатель положения смещается и можно делать проверки положения указателя функциями SeekEOF(f) и SeekEOLN(f).
4.2. Типизированные файлы.
Для типизированных файлов считается, что длина каждого компонента постоянна. Номер первого – 0. Чтение и запись информации аналогична, однако можно сразу перейти на нужный компонент командой Seek(f, <номер компоненты>).
Также можно получить номер текущей компоненты командой FILEPOZ(f) и общий размер файла командой FILESIZE(f).
Можно также удалить часть файла, начиная с текущей позиции, командой TRUNCATE(f).
4.3. Нетипизированные файлы.
Для файлов такого типа считается, что тип компонент может быть любым. Исходя из этого, программист сам должен определить размер читаемой/записываемой компоненты, а само действие производится командами BLOCKREAD(f, buf,N,[Result]) и BLOCKWRITE( f, buf, N, [Result]). Здесь buf – пременная-буфер, N – число компонент, Result – возврат фактического числа компонент операции.
Остальные команды и функции аналогичны работе с типизированными файлами.
5. Работа с памятью.
Вся оперативная память в компьютере, работающем в реальном режиме, сегментирована по 64 Кб. Паскаль позволяет управлять только размером стека. По умолчанию это 16 Кб. Директивой {$M<стек>, <мин.дин.память>, <макс.дин.память>} можно задать нужный размер стека и динамической памяти. Динамическая память используется для размещения в ней динамических переменных в виде например списков «резиновой» длины. Для размещения переменных любого типа используются указатели, которые обозначаются значок «^».
Для объявления типа указателя значок ставится перед этим типом, например:
Var point1:^integer;
Xp:^real;
Можно использовать и стандартный тип Pointer.
Память под любую типизированную динамическую переменную выделяется процедурой NEW, а освобождается DISPOSE. Для нетипизированных переменных используются GETMEM(P,<размер>) и FREEMEM(P,<размер>), где Р – нетипизированный указатель. Также можно освободить память процедурами MARK и Release, если запомнить текущее положение указателя HEAPPTR.
Если указатель не связан ни с каким конкретным объектом, то ему рекомендуется присвоить пустую ссылку NIL.
К памяти можно обращаться и прямо по физическим адресам через специальные массивы Mem – для байт, MemW – для слов, MemL – для двойных слов. Например Mem[5:10] означает обращение к ячейке памяти $0005:$000A.
Для обращения к портам ввода – вывода можно использовать массивы Port и PortW, найдя адреса устройств в справочнике.