Реферат: Обучение начальных курсов методам программирования на языке Turbo Pascal [Программа] Реферат: Обучение начальных курсов методам программирования на языке Turbo Pascal [Программа]
Реферат: Обучение начальных курсов методам программирования на языке Turbo Pascal [Программа] РЕФЕРАТЫ РЕКОМЕНДУЕМ  
 
Тема
 • Главная
 • Авиация
 • Астрономия
 • Безопасность жизнедеятельности
 • Биографии
 • Бухгалтерия и аудит
 • География
 • Геология
 • Животные
 • Иностранный язык
 • Искусство
 • История
 • Кулинария
 • Культурология
 • Лингвистика
 • Литература
 • Логистика
 • Математика
 • Машиностроение
 • Медицина
 • Менеджмент
 • Металлургия
 • Музыка
 • Педагогика
 • Политология
 • Право
 • Программирование
 • Психология
 • Реклама
 • Социология
 • Страноведение
 • Транспорт
 • Физика
 • Философия
 • Химия
 • Ценные бумаги
 • Экономика
 • Естествознание




Реферат: Обучение начальных курсов методам программирования на языке 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.





      ©2010