рефераты

Рефераты

рефераты   Главная
рефераты   Краткое содержание
      произведений
рефераты   Архитектура
рефераты   Астрономия
рефераты   Банковское дело
      и кредитование
рефераты   Безопасность
      жизнедеятельности
рефераты   Биографии
рефераты   Биология
рефераты   Биржевое дело
рефераты   Бухгалтерия и аудит
рефераты   Военное дело
рефераты   География
рефераты   Геодезия
рефераты   Геология
рефераты   Гражданская оборона
рефераты   Животные
рефераты   Здоровье
рефераты   Земельное право
рефераты   Иностранные языки
      лингвистика
рефераты   Искусство
рефераты   Историческая личность
рефераты   История
рефераты   История отечественного
      государства и права
рефераты   История политичиских
      учений
рефераты   История техники
рефераты   Компьютерные сети
рефераты   Компьютеры ЭВМ
рефераты   Криминалистика и
      криминология
рефераты   Культурология
рефераты   Литература
рефераты   Литература языковедение
рефераты   Маркетинг товароведение
      реклама
рефераты   Математика
рефераты   Материаловедение
рефераты   Медицина
рефераты   Медицина здоровье отдых
рефераты   Менеджмент (теория
      управления и организации)
рефераты   Металлургия
рефераты   Москвоведение
рефераты   Музыка
рефераты   Наука и техника
рефераты   Нотариат
рефераты   Общениеэтика семья брак
рефераты   Педагогика
рефераты   Право
рефераты   Программирование
      базы данных
рефераты   Программное обеспечение
рефераты   Промышленность
      сельское хозяйство
рефераты   Психология
рефераты   Радиоэлектроника
      компьютеры
      и перифирийные устройства
рефераты   Реклама
рефераты   Религия
рефераты   Сексология
рефераты   Социология
рефераты   Теория государства и права
рефераты   Технология
рефераты   Физика
рефераты   Физкультура и спорт
рефераты   Философия
рефераты   Финансовое право
рефераты   Химия - рефераты
рефераты   Хозяйственное право
рефераты   Ценный бумаги
рефераты   Экологическое право
рефераты   Экология
рефераты   Экономика
рефераты   Экономика
      предпринимательство
рефераты   Юридическая психология

 
 
 

Реферат: Обучение начальных курсов методам программирования на языке Turbo Pascal [Программа]


я21 Краткая теория

Строковые типы

Значением строкового типа является последовательность симво-
лов с динамическим атрибутом длины (в зависимости от действитель-
ного числа символов при выполнении программы) и постоянным атри-
бутом размера в диапазоне от 1 до 255. Текущее значение атрибута
длины можно получить с помощью стандартной функции Length.

ЪДДДДДДї
строковый тип ДДД>іstringГДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД>
АДДДДДДЩ і ^
і ЪДДДї ЪДДДДДї ЪДДДї і
АД>і [ ГДД>іцелоеГДД>і ] ГДЩ
АДДДЩ і без і АДДДЩ
ізнакаі
АДДДДДЩ

Отношение между любыми двумя строковыми значениями устанав-
ливается согласно отношению порядка между значениями символов в
соответствующих позициях. В двух строках разной длины каждый сим-
вол более длинной строки без соответствующего символа в более ко-
роткой строке принимает значение "больше"; например, 'Xs' больше,
чем 'X'. Нулевые строки могут быть равны только другим нулевым
строкам, и они являются наименьшими строковыми значениями.

К идентификатору строкового типа и к ссылке на переменную
строкового типа можно применять стандартные функции Low и High. В
этом случае функция Low возвращает 0, а High возвращает атрибут
размера (максимальную длину) данной строки.

Параметр-переменная, описанная с помощью идентификатора
OpenString и ключевого слова string в состоянии {$P+}, является
открытым строковым параметром. Открытые строковые параметры поз-
воляют передавать одной и той же процедуре или функции строковые
переменные изменяющегося размера.

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


данный элемент.

Конкретный символ в строковой переменной обозначается с по-
мощью ссылки на строковую переменную, за которой указывается ин-
декс, определяющий позицию символа.

ЪДДДї ЪДДДДДДДДДї ЪДДДї
индекс ДД>і [ ГДДДДДДД>івыражениеГДДДДВДД>і ] ГДД>
АДДДЩ ^ АДДДДДДДДДЩ і АДДДЩ
і ЪДДДї і
АДДДДДДДґ , і<ДДДДДДДЩ
АДДДЩ

Индексные выражения обозначают компоненты в соответствующей
размерности массива. Число выражений не должно превышать числа
индексных типов в описании массива. Более того, тип каждого выра-
жения должен быть совместимым по присваиванию с соответствующим
индексным типом.

В случае многомерного массива можно использовать несколько
индексов или несколько выражений в индексе. Например:

Matrix[I][J]

что тождественно записи:

Matrix[I,J]

Строковую переменную можно проиндексировать с помощью оди-
ночного индексного выражения, значение которого должно быть в ди-
апазоне 0...n, где n - указанный в описании размер строки. Это
дает доступ к каждому символу в строковом значении, если значение
символа имеет тип Char.

Первый символ строковой переменной (индекс 0) содержит дина-
мическую длину строки, то есть Length(S) тождественно Ord(S[0]).
Если атрибуту длины присваивается значение, то компилятор не про-
веряет, является ли это значение меньшим описанного размера стро-


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

Когда с помощью директивы компилятора {$X+} разрешен расши-
ренный синтаксис, значение PChar может индексироваться одиночным
индексным выражением типа Word. Индексное выражение задает смеще-
ние, которое нужно добавить к символу перед его разыменованием
для получения ссылки на переменную типа Char.

Открытые параметры позволяют передавать одной и той же про-
цедуре или функции строки и массивы различных размеров.

Открытые строковые параметры могут описываться двумя спосо-
бами:

- с помощью идентификатора OpenString;
- с помощью ключевого слова string в состоянии {$P+}.

Идентификатор OpenString описывается в модуле System. Он
обозначает специальный строковый тип, который может использовать-
ся только в описании строковых параметров. В целях обратной сов-
местимости OpenString не является зарезервированным словом и мо-
жет, таким образом, быть переопределен как идентификатор, задан-
ный пользователем.

Когда обратная совместимость значения не имеет, для измене-
ния смысла ключевого слова string можно использовать директиву
компилятора {$P+}. В состоянии {$P+} переменная, описанная с клю-
чевым словом string, является открытым строковым параметром.

Для открытого строкового параметра фактический параметр мо-
жет быть переменной любого строкового типа. В процедуре или функ-
ции атрибут размера (максимальная длина) формального параметра
будет тем же, что у фактического параметра.

Открытые строковые параметры ведут себя также как парамет-


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

В следующем примере параметр S процедуры AssignStr - это
открытый строковый параметр:

procedure AssignStr(var S: OpenString);
begin
S := '0123456789ABCDEF';
end;

Так как S - это открытый строковый параметр, AssignStr можно
передавать переменные любого строкового типа:

var
S1: string[10];
S1: string[20];
begin
AssignStr(S1); { S1 := '0123456789' }
AssignStr(S2); { S2 := '0123456789ABCDEF' }
end;

В AssingStr максимальная длина параметра S та же самая, что
у фактического параметра. Таким образом, в первом вызове
AssingStr при присваивании параметра S строка усекается, так как
максимальная длина S1 равна 10.

При применении к открытому строковому параметру стандартная
функция Low возвращает 0, стандартная функция High возвращает
описанную максимальную длину фактического параметра, а функция
SizeOf возвращает размер фактического параметра.

В следующем примере процедура FillString заполняет строку
заданным символом до ее максимальной длины. Обратите внимание на
использование функции High для получения максимальной длины отк-
рытого строкового параметра.



procedure FillStr(var S: OpenString; Ch: Char);
begin
S[0] := Chr(High(S)); { задает длину строки }
FillChar(S[1], High(S), Ch); { устанавливает число
символов }
end;

Значения и параметры-константы, описанные с использованием
идентификатора OpenString или ключевого слова string в состоянии
{$P+}, не являются открытыми строковыми параметрами. Они ведут
себя также, как если бы были описаны с максимальной длиной стро-
кового типа 255, а функция Hingh для таких параметров всегда
возвращает 255.




© 2011 Рефераты