ТОП 10:

Стандартные процедуры работы с множествами



 

Имя и параметры Типы параметров Действие
Include(s,x) s - множество, x - элемент, тип которого совместим с базовым типом множества включает элемент x во множество s
Exclude(s,x) s - множество, x - элемент, тип которого совместим с базовым типом множества исключает элемент x из множества s

Вывод элементов множества

x=’a’,’z’,1
Вывод х
X in A aaaaaaaaaaaaaaaaaaaaaaaaaf=a
выход


Program VivodMN;

Type mn=set of char;

Vara:mn;

x: char;

Begin

a:=[‘f’, ‘j’, ‘e’];

For x:=’a’ to ‘z’ do

If x in a then write (x)

End.

Пример 1: Дана строка символов , слова разделены любым знаком препинания . Вывести слова начинающиеся гласной буквой , оканчивающиеся согласной.

 

начало
конец
zn=[знаки препинания] glas=[гласные буквы] sog=[согласные буквы]
Ввод st
I=1,length(st),1
Not(st[i] in zn)
sl[1] inglas

 


sl:=sl+st[i]

 

sl[length(sl)] insog
Вывод sl
sl:=’’

 

programMnog; const zn=[',','.',':',';','?','!',' ']; glas=['а','е','и','о','у','ю','я','э','ы','ё']; sog=['б','в','г','д','ж','з','й','к','л','м','н','п','р','с','т','ф','х','ц','ч','ш','щ']; var st,sl:string; i:integer; begin Writeln('Введите Строку'); readln(st); Fori:=1 tolength(st) do If not(st[i] inzn) then sl:=sl+st[i] else begin if(sl[1] inglas) and (sl[length(sl)] insog) thenWriteln(sl); sl:=''; end; end.     Результат решения задачи   Введите Строку мама,арбуз помой! арбуз

 

Тема 2.9 Записи

Запись – это структурированный тип данных, состоящий из фиксированного числа компонентов одного или нескольких типов, называемых полями. Идентификатор (имя) поля должен быть уникален только в пределах записи. Обращение к значению поляосуществляется с помощью составного имени - идентификатора переменной (имени записи) и идентификатора поля, разделенных точкой.

 

имя записи. имя поля

 

В языке Turbo Pascal различают фиксированные и вариантные записи.

 

Описание фиксированной записи

 

Typeимя типа = record

имя поля 1 : тип;

имя поля 2 : тип;

. . .

имя поля N: тип

end;

Varимя записи : имя типа;

 

где record, end– зарезервированные слова ( запись, конец);

имя поля1,..имя поляnсписок полей;

Например:

Type Car = record

Number: integer; {номер}

Marka: string[20]; {марка автомобиля}

FIO: string[50] {фамилия владельца}

end;

Var a,b: Car;

Пример обращения к полям записи: a. Marka, B.FIO, A.Number

Для упрощения доступа к полям записи используется оператор присоединения With

Withимя записиdoоператор

 

где With, do –зарезервированные слова ( с, делать);

имя записи – имя переменной типа запись, за которым возможно следует список вложенных полей;

оператор – любой (один) оператор языка Pascal .

Например: WithAdoMarka:=’Жигули’

 

К записям в целом применим оператор присваивания . Например А :=В

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

Pascal допускает использование вложенных записей (т.е. поле записи может быть в свою очередь тоже записью). Уровень вложения не должен превышать 9.

 

Например: Type zap1 = record

Day : byte; {день}

Month : 1..12; {месяц}

Year : word {год}

end;

zap2 = record

FIO: string[30]; {фамилия студента}

Gruppa: integer; {номер группы}

Birthday: zap1 {дата рождения}

end;

Var Spisok: array [1..10] of zap2;

 

Пример обращения к дню рождения студента:

For i:=1 to 10 do

With spisok[i] , birthday do

day := 23;

 

В языке Pascal имеется возможность задать тип записи, содержащий произвольное число вариантов структуры. Такие записи называются записями с вариантами. Записи с вариантами обеспечивают средства объединения записей, которые похожи , но не идентичны. Они состоят из фиксированной и вариантной частей. Вариантная часть формируется с помощью оператора Case.Он задает поле признака, которое определяет, какой из вариантов в данный момент будет активизирован. Значением признака в каждый текущий момент выполнения программы должна быть одна из расположенных далее констант. Константа, служащая признаком , задает вариант записи и называется константой выбора. Количество полей каждого из вариантов неограниченно. Объем памяти, необходимый для записи с вариантами, складывается из объемов полей фиксированной части и максимального по объему поля переменной (вариантной) части. Запись может иметь только одну вариантную часть и она должна размещаться в конце записи.

 

Описание вариантной записи

 

Typeимя типа = record

имя поля 1 : тип;

. . .

имя поля N: тип;

Case поле признака : тип of

константа выбора1 : (поле, … : тип);

. . .

константа выбора n : (поле, … : тип)

end;

Varимя записи : имя типа;

 

Например:

Type Tmark1=record {экзамены 1 семестра}

Matem1:byte; {математика}

LinAlg:byte; {линейная алгебра}

Program: byte; {программирование}

end;

 

Tmark2=record {экзамены 2 семестра}

Mаtem2: byte; {математика}

Electron: byte; {электроника}

Fisika: byte; {физика}

DigAutom: byte; {цифровые автоматы}

end;

Tstudent= record {информация о студенте}

FIO:string[40]; {фамилия,имя,отчество}

Gruppa:string[4]; {группа}

Year: integer; {год рождения}

{вариантная часть}

Case semester: byte of{выбор семестра}

1: (mark1: Tmark1);

2: (mark2: Tmark2)

End;

Vargr921: array[1..15] ofTstudent;

 

Пример1: Из массива записей, содержащего информацию о преподавателях (фамилия_имя_отчество, читаемые дисциплины) вывести алфавитном порядке фамилии преподавателей, читающих заданную дисциплину.

Programzapis;

Type

Mas=array[1..10] ofstring;

TRec = Record

FIO: String[40]; {ФИО преподавателя}

KOL: integer; {количество читаемых дисциплин}

DIS: Mas; {перечень читаемых дисциплин}

end;

zap=array[1..15] ofTrec;

varrec:zap;

k:trec;

op,kol,i,j,n:integer;

st:string;

 

Begin

writeln('Введите количество преподавателей ');

readln(kol);

Fori:=1 tokol do

Begin

Write('Введите ФИО -');

readln(rec[i].fio);

write('Введите количество дисциплин -');

readln(rec[i].kol);

Forj:=1 torec[i].kol do

Begin

Write('Введите ',j,'-ую дисциплину- ');

readln(rec[i].dis[j]);

end;

end;

op:=1;

 

{сортировка массива записей в алфавитном порядке фамилий}

whileop=1 do {op=1 – сортировка закончена}

Begin

op:=0;

fori:=1 tokol-1 do

ifrec[i].FIO>rec[i+1].FIO then

Begin

k:=rec[i];

rec[i]:=rec[i+1];

rec[i+1]:=k;

op:=1;

end;

end;

 

Writeln('Введите название дисциплины для поиска преподавателя');

readln(st);

op:=0; {op- признак наличия преподавателей, читающих заданную дисциплину}

Fori:=1 tokol do

Forj:=1 torec[i].kol do

ifrec[i].dis[j]=st then begin

op:=1;

writeln(rec[i].Fio);

end;

if op=0 then

writeln (‘нет преподавателей, читающих дисциплину -’, st);

end.

 

Результаты решения задачи

 

Введите количество преподавателей

Введите ФИО -Смирнова Ольга Петровна

Введите количество дисциплин -2

Введите 1-ую дисциплину- информатика

Введите 2-ую дисциплину- вычислительная техника

Введите ФИО -Авдеева Людмила Петровна

Введите количество дисциплин -1

Введите 1-ую дисциплину- вычислительная техника

Введите ФИО -Фомин Иван Сергеевич

Введите количество дисциплин -2

Введите 1-ую дисциплину- физика

Введите 2-ую дисциплину- электроника

Введите название дисциплины для поиска преподавателя

вычислительная техника

Авдеева Людмила Петровна

Смирнова Ольга Петровна

 

 

Введите количество преподавателей

Введите ФИО -Романова Елена Сергеевна

Введите количество дисциплин -2

Введите 1-ую дисциплину- физика

Введите 2-ую дисциплину- математика

Введите ФИО -Дмитриев Андрей Владимирович

Введите количество дисциплин -2

Введите 1-ую дисциплину- история

Введите 2-ую дисциплину- философия

Введите название дисциплины для поиска преподавателя

информатика

нет преподавателей, читающих дисциплину -информатика

 

 

 

Тема 2.10 Файлы данных

Файл –представляет собой последовательность компонент, расположенных на внешнем носителе информации.

Любой файл имеет три характерные особенности:

- у него есть имя;

- содержит компоненты одного типа;

- длина создаваемого файла никак не оговаривается при его объявлении ограничивается только емкостью устройства внешней памяти.

В языке Pascal различают 3 типа файлов данных:

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

2. Текстовые – это совокупность символов, разделенных на строки переменной длины. В конце каждой строки стоит признак конца строки EOLN( end of line). Доступ к каждой строке возможен только последовательно, начиная с первой. Компонентами текстового файла могут быть данные следующих типов: символьные, стринги, вещественные и целочисленные.

3. Нетипизированные – отсутствие типа компонентов делает эти файлы совместимыми с любыми другими файлами и позволяет организовать высокий скоростной обмен данными между внешним запоминающим устройством (ВЗУ) и оперативной памятью (ОП). Относятся к файлам прямого доступа.

 

Чтение данных из файла (т.е. ввод данных в ОП машины) и запись данных в файл (т.е. вывод данных из ОП на ВЗУ) осуществляется через файловые переменные.

 







Последнее изменение этой страницы: 2016-08-15; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.232.51.69 (0.016 с.)