Тема 5. Строки. Записи. Множества. Работа с файлами
Строки Особое место в языке ПАСКАЛЬ занимают массивы символов. Стандартный ПАСКАЛЬ допускает два способа хранения символьных массивов в памяти ЭВМ: распакованный и упакованный. Распакованные массивы символов хранятся в памяти ЭВМ по одному символу в машинном слове, упакованные - по одному символу в байте. При описании упакованного массива символов используют служебное слово PACKED, например:
var MAS: Packed Array[1..20] of Char;
Описание распакованного массива символов имеет вид:
var M: Array[1..20] of char;
Для преобразования символьного массива из распакованной формы в упакованную и наоборот, из упакованной в распакованную, в язык ПАСКАЛЬ введены две стандартные функции Pack, UnPack. Упакованный массив символов образует символьную строку. Символьная строка может быть либо строковой константой, либо строковой переменной. Строковая константа, или строка, представляет собой совокупность символов, заключенную в апострофы. Строка - это элементарная конструкция языка ПАСКАЛЬ. Строковые константы могут входить в состав выражений. Как и числовые константы, они могут быть описаны в разделе описания констант. Строковые переменные - это одномерные упакованные массивы символов, для описания которых в TURBO PASCAL введен тип String. Тип String (строка) в Турбо Паскале широко используется для обработки текстов. Этот тип является стандартным и во многом похож на одномерный массив символов Array [0..N] of Char. Значение N соответствует количеству символов в строке и может меняться от 0 до 255. Символы, входящие в строку, занимают позиции с 1 до N. Можно, также описывать переменные типа String[K], где K - целое число не больше 255. Так определяются строки с длиной не больше K. Этот тип уже не является стандартным.
Например, если строка содержит до 30 символов, ее тип будет определен как type s= String[30]; В TURBO PASCAL определено понятие строки переменной длины, в этом случае ее описание задается как type s= String; Тип String без указания длины совместим со всеми типами строк. Особенностью строковых переменных является то, что к ним можно обращаться как к скалярным переменным, так и к массивам. Во втором случае применяется конструкция "переменная с индексом", что обеспечивает доступ к отдельным символам строки. При этом нижняя граница индекса равна 1. Отдельный символ строки совместим с типом Char. В памяти ЭВМ строка занимает количество байтов, на единицу большее ее длины. Нулевой байт строки содержит ее длину. Для строк определены операции присваивания, слияния (конкатенации) и сравнения. Для сравнения строк применяются все операции отношения. Сравнение строк происходит посимвольно, начиная с первого символа. Строки равны, если имеют одинаковую длину и посимвольно эквивалентны. Строки могут быть элементами списка ввода - вывода, при этом записывается имя строки без индекса. При вводе строковых переменных количество вводимых символов может быть меньше, чем длина строки. В этом случае вводимые символы размещаются с начала строки, а оставшиеся байты заполняются пробелами. Если количество вводимых символов превышает длину строки, лишние символы отбрасываются. Инициализация строк может производиться как с помощью типизированных констант:
const sName: String[9]= 'IBM PC/AT';
так и с использованием второй разновидности функции FillChar:
FillChar(var V; NBytes: Word; C: Char);
например:
FillChar(A, SizeOf(A), '0');
ПРИМЕР: Работа со строками. var s,x,y,z:string; Begin x:='turbo'; y:='pascal'; z:=x+' '+y; { z='turbo pascal' } s:=''; { пустая строка } for c:='a' to 'z' do s:=s+c; { s='abcd..xyz' } writeln (s); end. Сравнение строк выполняется посимвольно в соответствии с их кодами до первого несовпадения. Если одна из строк закончилась до первого несовпадения, то она считается меньшей. Пустая строка меньше любой строки.
ПРИМЕР: Сравнение строк. 'abcd' > 'abcD' { 'd'>'D' } 'abcd' > 'abc' { 'd'>'' } 'abc' < 'axxc' { 'b'<'x' } 'abcd' = 'abcd'
Читайте также: A) Лица, старше 14 лет, работающие на момент обследования не менее определенного краткосрочного периода. Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|