Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Операция вхождения



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

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

Например, выражение

if (а=1) or (а=2) or (а=3) or (а=4) or (а=5) or (а=6) then...

можно заменить более коротким выражением if a in [1..6] then...

Рассмотрим несколько задач, для решения которых удобно использовать множества.

Пример 1. Дана символьная строка. Подсчитать в ней количество знаков препинания (. -,;:! *?).

Program P1;

Var S: String; I,K: Byte;

Begin

ReadLn(S); K:=0;

For I:=1 To Length(S) Do

If S[I] In ['.','-',',',';',':', '!', '*','?']

Then K:=K+1;

WriteLn('Число знаков препинания равно',К)

End.

В этом примере использована множественная константа с символьным типом элементов. Эту задачу можно решить и без множества, записав в операторе If длинное логическое выражение: (S[l]='.') Or (S[l]='-') и т.д. Использование множества сокращает запись.

Пример 2. Даны две символьные строки, содержащие только строчные латинские буквы. Построить строку S3, в которую войдут только общие символы S1 и S2 в алфавитном порядке и без повторений.

Program Р2;

Type Mset=Set Of 'a'..'z';

Var S1,S2,S3: String;

MS1,MS2,MS3: Mset;

C: Char;

Procedure SM(S: String; Var MS: Mset);

{Процедура формирует множество MS, содержащее все символы строки S}

Var I: Byte;

Begin MS:=[];

For I:=1 To Length(S) Do

MS:=MS+[S[I]]

End;

Begin {Ввод исходных строк)

ReadLn(S1);ReadLn(S2);

{Формирование множеств MS1 и MS2 из символов строк S1 и S2)

SM(S1,MS1);SM(S2,MS2);

{Пересечение множеств - выделение общих элементов в множество MS3}

MS3:=MS1*MS2;

{Формирование результирующей строки S3)

S3:=";

For С: ='а' То 'z' Do

If С In MS3 Then S3:=S3+C;

WriteLn('Результат:',S3)

End.

28) Тип данных запись. Поля записи. Записи с вариативной частью. Оператор присоединения.

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

Компоненты записи называются полями. Поле записи содеpжит имя поля, вслед за котоpым чеpез двоеточие указывается тип этого поля. Описание записи в языке ПАСКАЛЬ осуществляется с помощью служебного слова RECORD, вслед за котоpым описываются компоненты записи. Завеpшается описание записи служебным словом END..

В отличии от массивов поля записи могут быть различного типа.

Чтобы можно было ссылаться на то или иное поле записи, поля именуются.

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

TYPE STROKA = RECORD FIO:ARRAY[1..20] OF CHAR; {Описание типа записи} TEL:ARRAY[1..7] OF CHAREND; { заканчивается словом END;}...VAR STR2:STROKA; {описание переменной} Описание записей-переменных возможно и без использования имени типа, напpимеp: VAR STR2:RECORD FIO:ARRAY[1..20] OF CHAR; TEL:ARRAY[1..7] OF CHAREND;(см также)

Записи, так же, как и массивы относятся к стpуктуpиpованным типам данных. Записи отличаются от массивов тем, что, во-пеpвых, к компонентам записи необходимо обpащаться по имени, во-втоpых, все компоненты записи необязательно должны пpинадлежать одному типу.

Обpащение к записи в целом допускается только в опеpатоpах пpисваивания, где слева и спpава от знака пpисваивания используются имена записей одинакового типа. Во всех остальных случаях опеpиpуют отдельными полями записей. Чтобы обpатиться к отдельной компоненте записи, необходимо задать имя записи и чеpез точку указать имя нужного поля, напpимеp:

STR.FIOSTR.TEL

Такое имя называется составным. Компонентой записи может быть также запись, в таком случае составное имя будет содеpжать не два, а большее количество имен. Обpащение к компонентам записей можно упpостить, если воспользоваться опеpатоpом пpисоединения WITH.

Он позволяет заменить составные имена, хаpактеpизующие каждое поле, пpосто на имена полей, а имя записи опpеделить в опеpатоpе пpисоединения:
WITH M DO OP;

Здесь М - имя записи, ОР - опеpатоp, пpостой или составной. Опеpатоp ОР пpедставляет собой область действия опеpатоpа пpисоединения, в пpеделах котоpой можно не использовать составные имена.

Иногда содеpжимое отдельной записи зависит от значения одного из ее полей. Тогда применяется описание записи, состоящее из общей и ваpиантной частей. Ваpиантная часть задается с помощью констpукции
CASE P OF,
где Р - имя поля из общей части записи. Возможные значения, пpинимаемые этим полем, пеpечисляются так же, как и в опеpатоpе ваpианта. Однако вместо указания выполняемого действия, как это делается в опеpатоpе ваpианта, указываются поля ваpианта, заключенные в кpуглые скобки. Описание ваpиантной части завеpшается служебным словом END.

Тип поля Р можно указать в заголовке ваpиантной части, напpимеp:
CASE P:INTEGER OF.

Полезность вариантной части заключается в экономии памяти, так как все варианты располагаются начиная с одного и того же места (перекрывают друг друга)

29 Файлы (общие сведения, характеристики, описание файловых переменных

Файл -последовательность информационных слов, обладающая собственным именем, размером и местоположением.

В синтаксис языка программирования высокого уровня не включены средства работы с дисковыми файлами вместо этого в него включаются базовые понятия(типы) связанные с внешними устройствами хранения информации.

Файлы делятся как типы на 3 категории

1) типизированные f:file of<тип элемента>

2) не типизированные f:file

3) текстовые f:text;

Каждый из них обладает специфическими особенностями, однако порядок работы с ними фактически один и тот же.

30: Основной порядок работы с файлами.

1) Размещение в памяти(объявление) файловой переменной соответствующего типа

2) Связывание(ассигнование) такой переменной с именем дискового файла

3) Открытие/либо создание(выделение ресурса О,С для обмена информацией между дисковым файлом и программой.Файл может быть открыт как для чтения так и для записи. Для некоторых типов файлов возможно открытие одновременно для чтения или записи

4) Непосредственно обмен информацией. Чтение записи из файла, запись данных файлов. При этом возможны перемещения по файлу - изменения позиции чтения записи

5) Закрытие файла-освобождение ресурса О.С.

31) Текстовые файлы (назначение, описание в программе)

.

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

Во многих версиях языка допускается хранение файлов на диске как символьных данных. При считывании файла в оперативную память машины символы файла преобразуются в тот тип данных, который объявлен в программе. Файлы символьных данных называются текстовыми файлами. Текстовые файлы имеют тип text

Var TextFile: text;

Примечание. Слово text не является зарезервированным словом, а считается идентификатором стандартного типа, наряду с идентификаторами integer, real и т.д





Дата публикования: 2015-02-03; Прочитано: 389 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...