Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Используется для проверки принадлежности какого либо значения указанному множеству. Обычно применяется в условных операторах.
Операция 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!