Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Встроенные стандартные функции для обработки строк




Length(S:String): Byte возвращает текущую длину строки S. Результат имеет целочисленный тип.

Пример. Var L:Byte;

...

L:=Length(S);

Concat(S1,S2,…,SN:String): String выполняет слияние строк S1,S2,…,SN в том порядке, в каком они указаны в списке параметров.

Пример. Var Ssum:String[50];

...

Ssum:=Concat(S1,S2,S3);

Если сумма длин строк в Concat превысит объявленную длину строки в левой части оператора присваивания, то излишек будет отсечен. Следует помнить, что вместо Concat можно пользоваться операцией сцепления.

Пример. Ssum:=S1+S2+S3;

Copy(S:String; Poz, L:Length): String;

позволяет выделить из строки S последовательность из L символов, начиная с позиции Poz. Если Poz>Length(S), то функция вернет пустую строку, а если L больше, чем число символов от Poz до конца строки S, то вернется остаток строки S от Poz до конца.

Пример. Var Ssum:String;

...

Ssum:=Copy(‘ABC***123’, 4, 3); {Ssum=’***’}

Ssum:=Copy(‘ABC’, 4, 3); {Ssum=’ ‘}

Ssum:=Copy(‘ABC***123’, 4, 11); {Ssum=’***123’]

Pos(S1, S:String): Byte

возвращает номер символа в строке S, с которого начинается включение в S подстроки S1. Если S не содержит в себе S1, то функция вернет 0. Недостатком функции Poz является то, что она возвращает ближайшую стартовую позицию S1 в S от начала строки, т.е. вызов

Var P:Byte;

...

P:=Poz(‘abc’, ’Nom abcabcabcfcd’);

завершит свою работу, вернув значение 5, хотя есть еще и 8, и 11.

UpCase(C:Ch): Char;

преобразует строчную букву латинского алфавита в прописную, возвращая все остальные, в том числе и буквы русского алфавита, в исходном виде.

 

Pred(C:Char): Char выдает ЬЮM__п”___предшествующий C символ.

Succ(C:Char): Char выдает следующий за C символ.

Chr(X:Byte): Char возвращает символ, код которого равен X.

Ord(C:Char): Byte возвращает число, равное коду символа C.

 

Учитывая, что текущая длина строки S содержится в S[0], она может быть определена следующим образом:

Var S:String;

L:Byte;

...

Read(S);

L:=Ord(S[0]);

Запись ― это структура данных, состоящая из фиксированного числа элементов, которые называют полями. В отличие от массива поля могут иметь разные типы. Чтобы можно было ссылаться на тот или иной элемент записи, поля именуются.

Форма описания записи:

type имя типа = record

список идентификаторов полей1: тип полей1;

список идентификаторов полей2: тип полей2;

...

список идентификаторов полейN: тип полейN;

end;

var имя записи: имя типа;

или:

var имя записи: record

список идентификаторов полей1: тип полей1;

список идентификаторов полей2: тип полей2;

...

список идентификаторов полейN: тип полейN;

end;

Пример записи, объединяющей данные об одном студенте:

type student = record

nom: string[8]; {номер группы}

fio: string[25]; {фамилия,имя,отчество}

year: word; {год рождения}

pasport: string[12]; {серия и номер паспорта}

address: string[30]; {домашний адрес}

end;

var stud, bun: student;

Обращение к элементам записи производится с помощью составного имени. Составное имя имеет следующий вид:

Имя записи. имя поля

Например, для обращения к паспортным данным и адресу студента нужно воспользоваться следующими составными именами:

stud.pasport и stud.adress

Элементы записи используются в программе так же, как и обычные переменные.

Пример.

Stud.address:= ’г.Минск, ул. Скорины 8, кв. 36.’;

Обращение к записи как к единому блоку допускается только в операторе присваивания.

Пример.

Bun:= stud;

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

type student = record

nom: string[8]; {номер группы}

fio: string[25]; {фамилия, имя, отчество}

year: word; {год рождения}

pasport: string[12]; {серия и номер паспорта}

address: string[30]; {домашний адрес}

end;

var group: array[1..20] of student;

Для обращения, например, к полю fio 10-го элемента этого массива, т.е. к ФИО студента, имеющему 10-й порядковый номер, нужно использовать следующее составное имя:

group[10].fio;

Обращение к полям записи по составному имени имеет достаточно громоздкий вид. Поэтому для сокращения записи составных имен в языке Паскаль предусмотрен оператор WITH, который имеет следующий формат:

With имя записи Do оператор;

где имя записи - имя переменной типа «запись», а оператор - простой или составной оператор Паскаля, в котором имена полей указываются как обычные переменные.

 

Множества

Еще один структурированный тип данных ― это множество (set). В нем может содержаться не более 256 элементов.

Важное отличие множества от остальных структурированных типов состоит в том, что его элементы не являются упорядоченными.

 

Описание множеств

В разделе var множества описываются следующим образом:

var < имя_множества >: set of < тип_элементов_множества >;

Элементы могут принадлежать к любому порядковому типу, размер которого не превышает 1 байт (256 элементов). Например:

var s1: set of char; {множество из 256-ти элементов}

s2: set of 'a'..'z','A'..'Z'; {множество из 52-х элементов}

s3: set of 0..10; {множество из 11-ти элементов}

s4: set of boolean; {множество из 2-х элементов}


Множество-константа

Наименованная константа

Множество можно задать неименованной константой прямо в тексте программы. Для этого необходимо заключить список элементов создаваемого множества в квадратные скобки:

[<список_элементов>]

Список элементов может быть задан перечислением элементов нового множества через запятую, интервалом или объединением этих двух способов. Элементы и границы интервалов могут быть переменными, константами и выражениями. Если левая граница интервала окажется больше правой, результатом будет пустое множество.

Примеры конструирования и использования различных множеств:

if c in ['a','e','i','o','u']

then writeln('Гласная буква');

if set1 < [k*2+1..n,13] then set1:=[];





Поделиться с друзьями:


Дата добавления: 2016-10-06; Мы поможем в написании ваших работ!; просмотров: 451 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Студент может не знать в двух случаях: не знал, или забыл. © Неизвестно
==> читать все изречения...

2817 - | 2385 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.