Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекционный материал по Аи ЯП.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
687 Кб
Скачать
☆

3 In s6 возвращает true;

2*2 In s1 возвращает false.

Дополнительно к этим операциям можно использовать две процедуры. INCLUDE - включает новый элемент во множество. Обращение к процедуре: INCLUDE (S,I)

Здесь S - множество, состоящее из элементов базового типа TSetBase;

I - элемент типа TSetBase, который необходимо включить во множество.

EXCLUDE - исключает элемент из множества. Обращение: EXCLUDE(S,I)

Параметры обращения - такие же, как у процедуры INCLUDE.

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

4.3 Строки

Тип STRING (строка) в Турбо Паскале широко используется для обработки текстов. Он во многом похож на одномерный массив символов ARRAY[O..N] OF CHAR, однако, в отличие от последнего, количество символов в строке-переменной может меняться от 0 до N, где N - максимальное количество символов в строке. Значение N определяется объявлением типа STRING [N] и может быть любой константой порядкового типа, но не больше 255 . Турбо Паскаль разрешает не указывать N, в этом случае длина строки принимается максимально возможной, а именно N=255 .

Строка в Турбо Паскале трактуется как цепочка символов. К любому символу в строке можно обратиться точно так же, как к элементу одномерного массива ARRAY [0..N] OF CHAR, например:

var

st : String;

begin

...

if st[5] = 'A' then...

end.

Самый первый байт в строке имеет индекс 0 и содержит текущую длину строки, первый значащий символ строки занимает второй байт и имеет индекс 1. Над длиной троки можно осуществлять необходимые действия и таким способом изменять длину. Например, удалить из строки все ведомые пробелы можно следующим образом:

var

st : String;

i : Byte;

begin

i := ord(st [0] ) ; {i - текущая длина строки}

while (i <> 0) and (st[i] = ' ') do

begin

dec(i);

st[0] := chr(i)

end;

.....

end.

Значение ORD(st[0]) , т.е. текущую длину строки, можно получить и с помощью функции LENGTH(st), например:

while (Length(st)<>0) and (st[Length(st)]=' ') do

st[0] := chr(Length(st)-1)

К строкам можно применять операцию «+» - сцепление, например:

st := 'а1 + 'b';

st := st + 'с'; {st содержит "abc"}

Если длина сцепленной строки превысит максимально допустимую длину N, то «лишние» символы отбрасываются. Следующая программа, например, напечатает символ 1:

var

st: String [1] ;

begin

St:='123';

WriteLn(st)

end.

Операции отношения =, о, >, <, >=, <= выполняются над двумя строками посимвольно, слева направо с учетом внутренней кодировки символов (см. табл.4.1 и прил.2). Если одна строка меньше другой по длине, недостающие символы короткой строки заменяются значением СНR(0) .

Следующие операции отношения дадут значение TRUE:

'''' < ' . '

'А' > '1'

'Turbo' <' Turbo Pascal'

'Паскаль' >'Turbo Pascal'

Функции и процедуры работы со строками

4.4. Совместимость и преобразование типов

Как уже неоднократно отмечалось, Турбо Паскаль - это типизированный язык. Он построен на основе строгого соблюдения концепции типов, в соответствии с которой все применяемые в языке операции определены только над операндами совместимых типов. При обсуждении операций над вещественными данными мы уже затрагивали проблему совместимости вещественных и целых типов. Аналогичные проблемы возникают при операциях над строками разной длины, строками и символами и т.д. Ниже приводится более полное определение совместимости типов.

Два типа считаются совместимыми, если:

  • оба они есть один и тот же тип;

  • оба вещественные;

  • оба целые;

  • один тип есть тип-диапазон второго типа;

  • оба являются типами-диапазонами одного и того же базового типа;

  • оба являются множествами, составленными из элементов одного и того же базового типа;

  • оба являются упакованными строками (определены с предшествующим словом PACKED) одинаковой максимальной длины;

  • один тип есть тип-строка, а другой - тип-строка, упакованная строка или символ;

  • один тип есть любой указатель, а другой - нетипизированный указатель;

  • один тип есть указатель на объект, а другой - указатель на родственный ему объект;

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

Совместимость типов приобретает особое значение в операторах присваивания. Пусть T1 - тип переменной, а Т2 - тип выражения, т.е. выполняется присваивание T1 := T2. Это присваивание возможно в следующих случаях:

  • T1 и T2 есть один и тот же тип и этот тип не относится к файлам или массивам файлов, или записям, содержащим поля-файлы, или массивам таких записей;

  • T1 и T2 являются совместимыми порядковыми типами и значение T2 лежит в диапазоне возможных значений T1;

  • T1 и T2 являются вещественными типами и значение T2 лежит в диапазоне возможных значений T1;

  • T1 - вещественный тип и T2 - целый тип; ,

  • T1 - строка и T2 - символ;

  • T1 - строка и T2 - упакованная строка;

  • T1 и T2 - совместимые упакованные строки;

  • T1 и T2 - совместимые множества и все члены T2 принадлежат множеству возможных значений T1;

  • T1 и T2 - совместимые указатели;

  • T1 и T2 - совместимые процедурные типы;

  • T1 - объект и T2 - его потомок.

В программе данные одного типа могут преобразовываться в данные другого типа. Такое преобразование может быть явным или неявным.

Лекция № 5

Тема: Управляющие конструкции Turbo Pascal

Цель: Ознакомить студентов с управляющими конструкциями языка Turbo Pascal. Дать понятия о операторах цикла с известным числом повторов, с предусловием, с постусловиям, с оператором выбора и оператором безусловного перехода. Научить применять при решении задач.

План:

5.1 Условный оператор.

5.2 Оператор повторений.

5.3 Операторы цикла.

5.4 Оператор выбора.

5.5 Метки и операторы перехода.