Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные Паскаль.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
780.93 Кб
Скачать

1 Цель работы

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

2 Краткая теоретическая справка

2.1 Строковый тип данных

Для обработки текста в Турбо Паскале был введён строковый тип данных string (строка). Строковый тип обобщает понятие символьных массивов, позволяя динамически изменять длину строки. Различают строковые переменные и строковые константы.

Строковый тип данных подобен одномерному массиву символов, задаваемому в виде array [0 .. N] of char.

Строковый тип данных может быть объявлен в разделах констант, типов и переменных:

const

Strcon = ' Strcon – это строковая константа';

type

S1 = string [N];

S2 = string;

var

S3, S4: string [M];

S5: string;

S6, S7: S1;

S8: S2;

Строковую константу объявляют в разделе констант. Строковая константа – последовательность любых символов, кроме символа возврата каретки, заключённая в апострофы. Если в строковой конс­танте встречается апостроф, то он удваивается.

Строковую константу можно записать как последовательность ASCII- кодов символов, перед каждым из которых должен стоять символ сеточки #. Например, строки #139#165#170#230#168#239 и 'Лекция' эквиваленты.

Допускается в одной строковой константе совмещать оба вида запи­си, чередуя их любым образом. Это позволяет использовать в строке все виды символов, включая управляющие. Например, допустима запись

#7'Допущена ошибка !'#13'Нажмите клавишу ввода "Enter"',

что означа­ет подачу звукового сигнала (#7) для привлечения внимания оператора, вывод текста "допущена ошибка!", переход на новую строку (#13) и вывод текста на ней "Нажмите клавишу ввода "Enter".

Выражения в квадратных скобках после слова string указывают максимальную длину строки и могут быть любыми константами порядкового типа, принимающими заданные значения в интервале от 1 до 255 включительно, т.е. N ≤ 255 и M ≤ 255. Если значение константы не указано, то длина строки принимается максимально возможной и равной 255 байтам (элементам).

2.2 Операции над строками

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

S3 := 'Тульский государственный университет'

S5 := S3;

readln (F, S5) ; {Чтение из файла F}

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

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

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

В отличие от массивов переменные строкового типа могут участвовать как операнды в инструкциях ввода-вывода, например, в виде readln (S3) или в виде write (S3).

Самый первый байт в строке имеет индекс "0" и содержит текущую длину строки. Поэтому по оператору write (S3 [0]) на экран монитора будет выведен символ, описывающий длину строки S3. Количество символов в строке при её вводе определяется автоматически, при этом также автоматически заполняется нулевой байт.

К строкам можно применять операцию объединения (сцепления) строк, называемую конкатенацией и обозначаемую знаком "+". Например, после выполнения оператора

S6 := 'a' + 'b' + 'c';

строка S6 будет содержать текст "abc", а после выполнения оператора

S6 := S6 + 'd' + 'e' + 'f';

– текст "abcdef".

Все остальные действия над строками реализуются с помощью четырёх стандартных строковых функций Concat, Length, Copy, Pos и четырёх строковых процедур Delete, Insert, Str и Val, находящихся в модуле System.

Строковая функция Concat (St1, St2 [, St3, .., StN]) – конкатенация – имеет тип string и возвращает строку, полученную в результате слияния ("сцепления") строк-параметров St1, St2, .., StN. Например, функция