- •Ю.П. Чернов, о.П. Шафеева программирование для начинающих
- •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.8.4. Строковый тип
Тип динамических строк используется для обработки текстовой информации. Строка представляет собой цепочку символов. В программе строковая переменная может быть описана в блоках Type или Var. Например:
CONST N=16; {N255}
TYPE stroka: string[100];
VAR st:string; {строка может содержать не более 255 символов}
str:string[10]; {строка может содержать не более 10 символов} st1:string[N]; {строка может содержать не более N=16 символов} st2:stroka; {строка может содержать не более 100 символов}
Максимальная длина строки 255 символов. Строка имеет структуру, подобную одномерному массиву. Поэтому строка st1 трактуется как
st1:array[0..N] of char.
Отличие между строкой типа string и массивом состоит в том, что строка имеет переменную длину (количество символов) и нулевой элемент строки st[0] содержит информацию о длине строки. Длина строки может быть изменена: путем заполнения строки новым элементом или путем изменения ее нулевого элемента. Текущая длина строки может быть определена значением ORD(st[0]).
Строки можно присваивать и сравнивать. Операции >, <, =, >=, <=, <> выполняются посимвольно слева направо с учетом внутренней кодировки символов. Строки считаются одинаковыми, если они имеют одинаковую длину и одинаковые символы. Например:
'abcd'=abcd'
'abcd'<>'abcde'
'abcd'>' abc'
'abcd'<' ABC'.
К строкам применима операция сцепления (+), например:
st := 'AB' + 'BC';
st := st + 'CD'; {st содержит 'ABBCCD'}
Если количество символов превышает максимально допустимую длину, то "лишние" символы справа отбрасываются.
Отдельный элемент строки совместим с типом char. Пример:
Var
stt:string[2]; c:char;
Begin
stt:='123'; c:= 'a';
writeln(stt); {stt='12', излишек отсекается }
stt[2]:=c; {stt='1a' }
End.
Встроенные функции и процедуры для обработки строк
LENGTH(s:string):byte выдает длину строки в символах.
Например, функция LENGTH(st), где St='ABBCCD' возвратит значение 6. CONCAT(s1,s2,...,sN:string):string - осуществляет сцепление строк. Например:
St:='1a'; S3:=Concat(St,'bc'); аналог S3:=St+'bc' S3='1abc'.
COPY(S:string; Start,Len:integer):string выдает подстроку S длиной Len, начиная с символа с номером Start. Если Start >Length(S) (больше длины всей строки S), то функция вернет пустую строку; если Start>255, то возникает ошибка. Если Len больше, чем число символов от позиции Start до конца строки S, то вернется остаток строки S от Start до конца. Например, для выражения COPY('ABCDEF',2,3) результатом является строка 'BCD'.
DELETE(Var S:string; Start,Len:integer) удаляет из строки S подстроку длиной Len, начиная с символа с номером Start.
После стирания подстроки ее оставшиеся части "склеиваются". Если Start=0 или превышает длину строки S, то строка не изменяется. Не изменит строку и значение Len=0. При Len большем, чем остаток строки, будет удалена подстрока от Start до конца S. Например, для
Delete('aбвгде',4,2) результат будет “абве”.
INSERT(Subs:string; Var S:string;index:integer) вставляет в строку S подстроку Subs, начиная с символа с номеpом index;
Если измененная строка S оказывается слишком длинной, то она автоматически укорачивается до объявленной длины S (при этом всегда теряются символы справа). Например,
st:='abcdef' ;
Insert('-***-',st,4); {результат: St='abc-***-de' 0 }
POS(Subs,S:string):byte отыскивает вхождение подстроки Subs в строке S и выдает номер позиции, с которой начинается это вхождение. Если строка s не содержит данной подстроки, то функция POS выдает 0. Если в строке s несколько одинаковых подстрок subs, то функция выдает только номер первого вхождения.
Для St='abcdef' результатом функций
POS('de',St) является значение 4,
POS('k',St) является значение 0.