- •Ю.П. Чернов, о.П. Шафеева программирование для начинающих
- •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
- •Клавиши с кодами из двух частей
Процедуры преобразования
STR(x[:w[:n]], Var s:string) преобразует числовое значение x в строковое s, x может быть переменной или выражением целого или вещественного типа. Для переменной x может быть указана ширина поля w, которое она занимает, а также n количество знаков после десятичной точки. Параметры [:w[:n]] не обязательны. Если параметр n отсутствует для вещественного типа, то используется экспоненциальное представление. Если w больше, чем реальное количество знаков в числе, то производится выравнивание числа по правому краю. Для выравнивания по левому краю используется отрицательное значение w. Если в дробной части числа x знаков больше, чем указано в n, выполняется округление. Например:
str(6.66:8:1,s); {результат: S='6.7' c округлением}
str(6.66:-8:2,s); {результат: S='6.66'}
VAL(S:string,Var x,Var ErrCod) преобразует числовую строку S в числовую переменную x и формирует код ошибки ErrCod. Строка S не должна содержать незначащих пробелов, в том числе в начале и конце. ErrCod целочисленная переменная. Она равна 0, если преобразование выполнено. В противном случае (если преобразование невозможно) эта функция выдает код символа, на котором прекратилось преобразование, значение x в этом случае неопределено. Если в строке S имеется десятичная точка или символ E, то переменная x должна быть определена вещественной.
Например, результат преобразования VAL(1324,x,Cod) есть x=1324,Cod=0;
FILLCHAR(Var X; k:word; Value) процедура заполнения k последовательных байт переменной Х значением Value. Х многобайтовая переменная. Процедура служит для заполнения участков памяти ОЗУ одним и тем же однобайтовым значением.
2.8.5. Перечислимый тип
Перечислимый тип это тип данных, в котором количество всех возможных значений конечно и определяется набором идентификаторов.
К предопределенным перечислимым типам относятся: Boolean, Byte, Char, Word (номера элементов в них 0,1,...), а также другие целые типы: ShortInt, Int, Integer, LongInt (нумерация которых начинается с отрицательного числа). Эти типы можно расписать в ряд по значениям. Например:
TYPE
Boolean=(False,True);
Byte=(0,1,2,...,255);
ShortInt=(-128,-127,...,128).
В любом целом типе порядковый номер элемента определяется значением числа.
В Турбо Паскале могут быть введены новые нестандартные типы. Для этого в разделе TYPE указывается имя типа и в круглых скобках, перечисляются значения, которые могут принимать элементы данного типа:
TYPE
<имя типа1>=(<значение1>,...,<значениеN>);
<имя типаK>=(<значение1>,...,<значениеM>);
Перечислимые данные должны иметь синтаксис идентификаторов, поэтому не могут перечисляться цифры и символы. Один и тот же идентификатор можно использовать только в определении одного перечислимого типа.
Пример: TYPE
TEST=(test1,test2,...,test5);
BOOLEAN3=(False_,Noinfo,True_);
в типе BOOLEAN3 для моделирования трехзначной логики видоизменены уже задействованные в BOOLEAN имена False и True.
Первый элемент всегда имеет номер 0. Максимальное количество элементов в одном перечислимом типе равно 65535.
После описания новых типов и их значений могут вводиться переменные данных типов. Например:
Var
T1,T2:TEST;
B1,B2:BOOLEAN3;
Begin ...
for T1:=test1 to test5 do <оператор>;
...
End.
Для работы с перечислимыми типами определены общепринятые функции Ord, Pred и Succ:
Ord(test1)=0, Ord(test5)=4,
Ord(False_)=0, Ord(True_)=2,
Pred(True_)=Succ(False_)=Noinfo.
Обратной функции для извлечения значения по его порядковому номеру в языке нет, хотя выражение вида
X:=<ИмяПеречислимогоТипа>(номер значения)
запишет в Х значение, соответствующее порядковому номеру элемента перечисления. Например, запись T1:=TEST(2) эквивалентна Т1:=test3.
Поскольку перечислимые значения упорядочены, их можно сравнивать:
True_ > Noinfo; test2 > test1.
Элементы разных типов сравнивать нельзя.
Перечислимые типы обладают рядом преимуществ:
1) улучшается числовая читаемость программы;
2) более четко проводится контроль значений;
3) перечислимые типы имеют компактное машинное представление.
Недостатком применения перечислимых типов является то, что их значения не могут быть выведены на экран или принтер и не могут быть явно введены с клавиатуры.