- •Ю.П. Чернов, о.П. Шафеева программирование для начинающих
- •1. Среда программирования turbo pascal 7.0
- •1.1. Структура меню среды
- •1.2. Правила оформления программ
- •1.3. Команды редактора тп
- •Команды удаления и вставки
- •1.4. Компиляция и исправление синтаксических ошибок
- •2. Элементы языка pascal
- •2.1. Алфавит языка
- •2.2. Константы. Идентификаторы
- •2.3. Операторы
- •2.3.1. Оператор присваивания
- •2.3.2. Оператор безусловного перехода
- •Стандартные функции
- •2.3.3. Условный оператор if
- •2.3.4. Опеpатоp варианта case
- •2.3.5. Составной и пустой операторы
- •2.3.6. Операторы цикла
- •2.4. Процедуры прерываний
- •2.5. Типизированные константы
- •2.6. Структура программы
- •2.7. Подпрограммы
- •2.7.1. Определение процедур и функций
- •2.7.2. Вложенные подпрограммы
- •2.7.3. Вызов подпрограмм
- •2.7.4. Процедуры
- •2.7.5. Функции
- •2.7.6. Передача в подпрограмму параметров-массивов и параметров-строк
- •2.7.7. Рекурсия
- •2.8. Типы в Турбо Паскале
- •2.8.1. Целые типы
- •Классификация целых типов
- •Встроенные процедуры и функции для целых типов
- •2.8.2. Логический тип
- •2.8.3. Символьный тип
- •Служебные символы
- •2.8.4. Строковый тип
- •Встроенные функции и процедуры для обработки строк
- •Процедуры преобразования
- •2.8.5. Перечислимый тип
- •2.8.6. Ограниченный тип (диапазон)
- •2.8.7. Вещественные типы
- •Вещественные типы
- •Встроенные функции
- •2.8.8. Структурированные типы данных. Массивы
- •2.8.9. Множества
- •2.8.10. Записи
- •2.9. Изменение типа выражения
- •2.10. Процедурные типы
- •2.11. Файлы
- •Общие процедуры и функции для работы с файлами
- •2.11.1. Текстовые файлы
- •2.11.2. Типизированные файлы
- •2.11.3. Нетипизированные файлы
- •2.12. Указатели и динамическая память
- •2.13. Модули
- •2.14. Библиотека Турбо Паскаля
- •2.14.1. Модуль crt
- •2.14.2. Модуль graph
- •Var driver, Mode: integer переменные драйвера и режима.
- •Управление графическим режимом
- •Управление экраном, окном, страницей
- •Управление цветом и палитрой
- •Работа с точками
- •Работа с линиями
- •Построение фигур из линий
- •Построение криволинейных фигур
- •Работа с текстом
- •Обмен с памятью
- •2.15. Динамические структуры данных
- •2.15.1. Связанные динамические данные. Списки
- •Чтобы сослаться на двунаправленный кольцевой список как на единый программный объект, используется указатель, значением которого является ссылка на заглавное звено списка.
- •2.15.2 Очередь
- •2.15.3. Стек
- •3. Практическое программирование Этапы подготовки и решения задач на компьютере
- •Порядок выполнения лабораторных работ
- •Лабораторная работа 1 Основы программирования в среде Турбо Паскаля.
- •Приоритет операций в выражении
- •Задание 1 (программа 1_1)
- •Лабораторная работа 2 Программирование разветвленных алгоритмов. Операторы передачи управления
- •Лабораторная работа 3 Программирование циклических алгоритмов с заданным числом повторений
- •Лабораторная работа 4 Программирование циклических алгоритмов с предусловием
- •Лабораторная работа 5 Программирование циклических алгоритмов с постусловием
- •Модифицировать программу 3_2 для вычисления функций f1(X) и f2 (X) с применением оператора цикла с постусловием. Выполнить ее и сравнить результаты с полученными ранее.
- •Лабораторная работа 6 Программирование алгоритмов обработки одномерных массивов
- •Задание 1
- •Лабораторная работа 7
- •Лабораторная работа 8 Программирование с использованием функций
- •Лабораторная работа 9 Программирование с использованием процедур
- •Лабораторная работа 10 Обработка символьных и строковых данных
- •Лабораторная работа 11 Файлы
- •Лабораторная работа 12 Записи
- •Лабораторная работа 13 Решение нелинейных уравнений
- •Задание (программа_13)
- •Лабораторная работа 14 Вычисление приближенного значения определенного интеграла
- •Лабораторная работа 15 Модульное программирование
- •Лабораторная работа 16 Графика
- •Библиографический список
- •Обозначения графические в схемах алгоритмов (гост 19.701-90)
- •Зарезервированные слова Turbo Pascal 7.0
- •Приложение в
- •Кодировка символов в соответствии с кодами ascii
- •Приложение г
- •Альтернативная кодировка госТа для кодов 128...255
- •Клавиши с кодами из двух частей
- •Содержание
2.9. Изменение типа выражения
Тип значения, полученного в результате обработки выражения, можно явным образом изменить на другой (стандартный или объявленный в программе) с помощью операции преобразования (приведения) типа:
<имяТипа> (<выражение>);
например:
Var D, K: byte; B: boolean; C: char; R: real;
Begin
D := Byte('A');
C := Char(D);
K := Byte(Pi*10);
B := Boolean(100); {True}
End.
При явном преобразовании типа выражения может произойти изменение длины его машинного представления (длина увеличивается или уменьшается).
2.10. Процедурные типы
Применяются в ТП для организации передачи в качестве фактических параметров процедур и функций.
Существует два процедурных типа: тип-процедура и тип-функция. При объявлении процедурных типов используется заголовок процедуры, в котором опускается ее имя, например:
TYPE
Proc1=Procedure(a,b,c:real; var d:real);
Proc2=Procedure(var b1,b2:byte);
Proc3=Procedure;
Func=Function(x:real):real;
Func2=Function(s:string):string;
Для объявления переменных процедурного типа производится как
VAR pr: proc1;
f: func;
После описания заголовка функции (процедуры), которая является параметром, при ее определении должна следовать стандартная директива FAR, служащая для установления правильных связей параметра-функции (процедуры) с вызывающей подпрограммой. Такие параметры должны компилироваться с учетом на дальнюю модель памяти.
Пример определения параметра-функции:
Function F1(x: real): real; FAR; дальнее описание
Begin
. . .
end;
Procedure FF(n:byte;F:Func);
Var ...;
Begin
. . .
end;
BEGIN
. . .
FF(2,F1); ... FF(5,F1);
END.
В качестве параметров не могут передаваться рассмотренным способом стандартные процедуры (функции).
2.11. Файлы
Файл именованная область внешней памяти ПК. Файлом может называться логическое устройство, потенциальный источник или приемник информации.
Файл характеризуется именем, содержит компоненты одного типа (типом может быть любой тип, кроме файлов). Длина вновь создаваемого файла не указывается при его объявлении.
Файлы делятся на типизированные, текстовые, нетипизированные. Определяются файловые типы в блоке TYPE следующим способом:
Type
<имя>=FILE OF <тип>; {типизированный}
<имя>=TEXT; {текстовый}
<имя>=FILE; {нетипизированный}
где <имя> имя файлового типа (правильный идентификатор);
FILE, OF зарезервированные слова (файл, из),
TEXT имя стандартного типа для текстовых файлов;
<тип> любой тип, кроме файлов.
Например:
TYPE
FIL=file of char; {файл символов}
text30=file of string[30]; {файл строк }
Вид файла определяет способ хранения информации в файле. Переменные файловых типов объявляются в разделе VAR
VAR f: FIL;
ff: text30;
а также
f1: TEXT; {переменная текстового файлового типа}
f2: file of real; {переменная файла вещественных чисел}
f3: file; {переменная для нетипизированного файла}
т. е. сразу можно описывать файловые переменные без объявления типа:
VAR
<имя_переменной>: TEXT;
<имя_переменной>: FILE OF <тип>;
<имя_переменной>: FILE;
Некоторые файлы могут только выдавать информацию (клавиатура), другие только принимать ее (устройства печати), третьи позволяют и считывать, и записывать (файл на диске). Именно с помощью файловой системы осуществляется весь ввод и вывод информации программой.
Любой программе доступны два предварительно объявленных файла со стандартными файловыми переменными: INPUT для чтения данных с клавиатуры и OUTPUT для вывода на экран.
Другие файлы, а также логические устройства, становятся доступными программе только после связывания ранее обьявленной файловой переменной с именем существующего или вновь создаваемого файла, а также в указании направления обмена информацией: чтение из файла или запись в него.
Связывание выполняется стандартной процедурой ASSIGN:
ASSIGN (<файловая_переменная>,<имя_файла_или_л.у.>);
где <файловая_переменная> правильный идентификатор, обьявленный как переменная файлового типа; <имя_файла_или_л.у.> текстовое выражение, содержащее имя файла или логического устройства (заключается в апострофы).
Пример. VAR
f,f1, f2:text; {объявление файловых переменных}
Begin
ASSIGN(f, 'nameF.txt'); связывание с файлом nameF.txt
ASSIGN(f1, 'PRN'); связывание с принтером
Если имя файла задается в виде пустой строки
ASSIGN(f2, ''),
то в зависимости от направления обмена данными файловая переменная связывается со стандартным файлом INPUT или OUTPUT.
<Имя_файла> это любое выражение строкового типа, которое строится по правилам определения имен в MS DOS:
содержит до 8 разрешенных символов: прописные и строчные латинские буквы, цифры и следующие символы ! @ # $ % ^ & ( ) ' ~ - _ ;
начинается с любого разрешенного символа;
за именем может следовать расширение последовательность до трех разрешенных символов. Расширение, если оно есть отделяется от имени точкой, например: Lab1.pas date.txt.
Имя физического файла должно быть корректным и уникальным. Нельзя вставлять символы шаблонов '*' и '?' в имя файла, но можно связывать файловые переменные с несуществующими пока на диске файлами (для их создания).
Перед именем может указываться путь к файлу, имя диска и/или имя текущего каталога и имена каталогов вышестоящих уровней. Если имени каталога предшествует обратная косая черта, то путь к файлу начинается из корневого каталога, если черты нет - из текущего каталога, установленного в системе по умолчанию.
Имя диска это один из символов А: В: С: ... Z: А: и В: относятся к дисковым накопителям на гибких дискетах, С:, D: и т.д. к жестким и виртуальным дискам. Если имя диска не указано, подразумевается по умолчанию устройство, установленной в операционной системе перед началом работы программы.
Максимальная длина имени вместе с путем 79 символов, например:
VAR
f1, f2: text;
...
Assign(f1,'d:\V-129\date.txt');
Assign(f2, name.dat); {текущий каталог}
Логические устройства в ТурбоПаскале - это стандартные аппаратные средства (клавиатура, экран дисплея, принтер, коммуникационные каналы ввода-вывода). За каждым логическим устройством закреплено имя, которое связывается с файловой переменной текстового типа:
CON (консоль) клавиатура (для чтения) или экран дисплея (для записи);
PRN логическое имя принтера; если принтеров несколько, то доступ осуществляется по логическим именам LPT1(синоним PRN), LPT2, LPT3.
Стандартный библиотечный модуль PRINTER, входящий в библиотеку TURBO.TPL, объявляет имя файловой переменной LST и связывает его с логическим устройством LPT1. Например, следующая программы выдает на принтер указанный текст:
Uses Printer;
Begin
Writeln(LST,'печатаемый текст');
End.
AUX логическое имя коммуникационного канала. Обычно используется для связи с другими компьютерами. Может выполнять и прием, и передачу информации (но не две функции одновременно). Как правило, в составе ПК имеется два канала COM1 (AUX) и COM2.
NUL логическое имя пустого устройства, используется в отладочном режиме и трактуется как устройство-приемник информации неограниченной емкости. При обращении к NUL как к источнику информации выдается признак конца файла (EOF).
Однажды установленная связь процедурой Assign между файловой переменной f и физическим файлом сохраняется до следующего вызова Assign с той же файловой переменной f. То есть можно проделывать различные операции с файлом, лишь однажды связав его с файловой переменной f. Для инициализации файла необходимо указать имя физического файла и направление передачи данных. В ТП можно открыть файл для чтения, записи, а также для чтения и записи одновременно.
Следующие процедуры открывают логический файл с файловой переменной <ф.п.>, связанной ранее с уже существующим файлом или логическим устройством:
RESET(<ф.п.>) - для чтения, REWRITE(<ф.п.>) - для записи.
Только после открытия файла становится возможным чтение и запись данных. При их выполнении переменная-указатель, связанная с файлом, будет указывать на начало этого файла, т.е. компонент с номером нуль.
Процедуры открытия могут применяться многократно к одному и тому же файлу. Если файл был до этого открыт, то он автоматически предварительно закрывается. Повторный вызов RESET переустановит последовательность чтения вновь на самый первый элемент файла (потеря данных исключена). Но повторное обращение в REWRITE сотрет текущее содержимое файла и подготовит файл к заполнению с первого элемента.
В таблице 7 сведены общие процедуры и функции для работы с файлами, наиболее применимые на практике.
Таблица 7