Тема: «тип данных множество» 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Тема: «тип данных множество»



Типом множеством называется множество-степень исходного множе­ства объектов порядкового типа, т.е. множество всевозможных сочетаний объектов исходного множества.

Число элементов исходного множества не может быть больше 256, а порядковые номера элементов должны находится в пределах от 0 до 255.

Type

< имя множества > = set of < тип компонент >;

Var

< переменная >:< имя множества >;

Допустимые операции с множествами:

‘+’ объединение;

‘-‘ разность;

‘*’ пересечение;

‘=’,’<=’,’>=’ проверка эквивалентности двух множеств;

‘<>’ проверка неэквивалентности двух множеств;

in логический оператор проверки присутствия компоненты в множестве.

Примеры решений задач

1. Ввести строку символов, состоящую из латинских букв, символов и пробелов. Осуществить проверку правильности введенных символов.

Program stroka;

Var

   Str: string;

   L: byte;

   Tru: boolean;

Begin

   Writeln (‘Введите строку’)

   Readln (str);

   L: =Length (Str);

   Tru:= L>0;

   While Tru and (L>0) do

              Begin

              Tru:=Str [L] in [ ‘0’,’9’’,A’..’Z’,’a’..’z’,’ ‘];

              Dec (L)

              End;

   If Tru then

              WriteLn (‘Правильная строка’);

   Esle

              WriteLn (‘Неправильная строка’);

End.

Список задач

1. Дан текст из строчных латинских букв, за которым следует точка. Определить, каких букв - гласных (a, e, i, o, u) или согласных - больше в этом тексте.

2. Напечатать в возрастающем порядке все цифры, не входящие в десятичную запись натурального числа n.

3. Дан текст из строчных латинских букв, за которым следует точка. Напечатать:

а) все буквы, входящие в текст не менее двух раз;

б) все буквы, входящие в текст по одному разу;

в) первые вхождения букв в текст, сохраняя их исходный взаимный порядок.

4. В возрастающем порядке напечатать целые числа из диапазона 1.. 10000, представимые в виде n2 + m2, где n, m>0

5. Напечатать слова предложения в алфавитном порядке.

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

7. Подсчитать количество чётных цифр в исходной символьной строке и распечатать все, кроме пробелов, знаков операций и знаков препинания.

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


Практическая работа № 14

 

Тема: «Перечисляемый и интервальный (диапазоны) типы данных»

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

Type

< имя типа >:(< элемент 1 >, [< элемент 2 >,..., < элемент n >]);

Функции обработки данных перечисляемого типа:

Succ (x) – возвращает следующее за x значение в перечислимом типе.

Pred (x) - возвращает предыдущее значение в перечислимом типе.

>, <, >=, <=, <>, = - операции сравнения.

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

Type

< имя типа >:< интервал >

Пример:

 Type

Days_weeks: 1..7;

 

Примеры решений задач

1. Для целого числа k от 1 до 99 напечатать фразу "мне k лет", учитывая при этом, что при некоторых значениях k слово "лет" заменить на слово "год" или "года";

Program how_old_year;

Const t=10;

Var a,b: Integer;

         k:1..99;

Begin

Readln (k);

If (k>=5) and (k<=19) then Writeln (k,'лет');

a:=k div t;

b:=k-a*t;

If (b>=5) and (b<=9) then Writeln (k,'лет');

If b=0 then Write (k,'лет');

If (b>=2) and (b<=4) then Writeln (k,'года');

If b=1 then Write (k,'год');

End.

 


Список задач

1. Type

падеж=(им, род, дат, вин, твор, предл);

слово =(степь, боль, тетрадь, дверь);

Var w: слово;

 p:падеж;

Напечатать слово w в падеже p и единственном числе (например, при w = степь и p = твор. надо напечатать слово "степью");

2. Переменной d присвоить количество дней в месяце m (год считать не високосным);

3. По дате d, m, y определить d1, m1, y1 -дату следующего дня (Var d,d1:1..31; m,m1:месяц; y:1901..2000: y1:1901..2001;);

4. Определить k – порядковый номер того дня високосного года, который имеет дату d,m;

5. Пусть значение функции f(n) равно количеству букв в записи числа n русскими словами: f(1)=4 (один). f(3)=3 (три), f(42)=8 (сорок два) и т. п. Напечатать все натуральные числа n, меньшие 100, для которых f(n)=n.

6. В старояпонском календаре был принят 60-летний цикл, состоящий из пяти 12-летних подциклов. Подциклы обозначались названиями цветов: зелёный, красный, жёлтый, белый и чёрный. Внутри каждого подцикла годы носили названия животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, курицы, собаки и свиньи. (1984 год – год зелёной крысы – был началом очередного цик­ла).

Написать программу, которая выводит номер некоторого года нашей эры и печатает его название по старояпонскому календарю.

 


Практическая работа № 15

 

Тема: «Тип данных запись»

Тип запись включает ряд компонент, называемых полями, которые могут быть разных типов. При задании типа-записи после зарезервированного слова record следует перечислять все поля типа записи с указанием через двоеточие их типов и завершить задание типа словом end. Поля отделяются друг от друга точкой с запятой. Количество полей записи может быть любым.

 

Тип данных запись описывается следующим образом:

Type

Record

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

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

  .     .     .

   < имя поля n >:< тип поля n >;

End;

Если тип нескольких полей совпадает, то имена полей могут быть просто перечислены. После объявления в программе переменной типа «запись» к каждому ее полю можно обратиться, указав сначала идентификатор переменной-записи, а затем через точку – имя поля. Поле записи может иметь практически любой тип. Доступ к вложенным элементам таких структур осуществляется по тем же правила, как и обычно.

Переменная типа «запись» может участвовать только в операциях присваивания. Но поле записи может принимать участие во всех операциях, применимых к типу этого поля.

Присвоение значений переменным типа запись производится одним из двух способов:

1) < имя переменной >.< имя поля 1 >:=< выражение >;

< имя переменной >.< имя поля 2 >:=< выражение >;

  .     .     .     .     .     .     .     .

< имя переменной >.< имя поля n >:=< выражение >;

 

2) для облегчения работы с полями записей вводится оператор присоединения.

With < имя переменной > do

    begin

                     < имя поля 1 >:=< выражение >

                      < имя поля 2 >:=< выражение >

             .     .     .     .     .

                       < имя поля n >:=< выражение >

    end;

 

Примеры решений задач

1. Для каждого студента указаны фамилия и оценки в баллах по пяти дисциплинам. Требуется вычислить средний балл.

Program BAL;

   Type STR=

Record

                          Fam: Array [1..15] of char;

                          B1, B2, B3, B4, B5: 2..5;

                          SB: real;

              End;

Var

   Tbl: array [1..25] of str;  

   I: integer;

Begin

   For I:=1 to 25 do

              Read (TBL [I].FAM, TBL [I].B1, TBL [I].B2,

TBL [I].B3, TBL [I].B4, TBL [I].B5);

   For I:=1 to 25 do

              begin

TBL[I].SB:=(TBL[I].B1+TBL[I].B2+TBL[I].B3+

+ TBL[I].B4+TBL[I].B5)/5;

                          Writeln (TBL[I].SB);

              end;

End.                 

 


Список задач

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

И. Петров

П. Иванов

и т. д.

2. Переменная содержит сведения об учениках некоторой школы (см. задачу 1).

а) Собрать в сведения об учениках девятых классов школы,

б) Выяснить, на сколько человек в восьмых классах больше, чем в девятых.

3. Багаж пассажира характеризуется количеством вещей и общим весом вещей. Сформировать переменную Bagaj, содержащую сведения о багаже нескольких пассажиров. Сведения о багаже каждого пассажира представляют собой запись с двумя полями: одно поле целого типа (количество вещей) и одно-действительное (вес в килограммах).

а) Найти багаж, средний вес одной вещи в котором отличается не более, чем на 0,3 кг от общего среднего веса одной вещи.

б) Найти число пассажиров, имеющих более двух вещей и число пассажиров, количество вещей которых превосходит среднее число вещей.

в) Выяснить, имеется ли пассажир, багаж которого состоит из одной вещи весом менее 30 кг.

4. Упорядочить сведения о багаже, записанные в переменной bagaje(см. предыдущую задачу) по невозрастанию веса багажа. Предполагается, что число пассажиров, зарегистрировавших багаж, известно заранее и равно п (некоторая константа), при этом п – не слишком велико. Указание. Перенести сведения о багаже из переменной багаж в массив B1,...Bn, затем упорядочить этот массив, используя то, что для переменных х, у одного и того же комбинированного типа можно использовать оператор присваивания х:=у После этого переписать элементы массива BI,..., Bn в переменную Bagaje.

5. Требуется удалить из данной переменной Bagaje сведения о багаже, общий вес вещей в котором меньше, чем 10 кг. Использовать вспомогательную переменную F.

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

7. Сформирована переменная bibl, содержащий сведения о книгах. Сведения о каждой из книг – это фамилия автора, название и год издания.

а) Найти названия книг данного автора, изданных с 1960 года

б) Определить имеется ли книга с названием "Информатика". Если да, то сообщить фамилию автора и год издания. Если таких книг несколько, то сообщить сведения обо всех этих книгах.

8. Дана переменная Т, которая содержит номера телефонов сотрудников учреждения: Указывается фамилия сотрудника, его инициалы и номер телефона. Найти номер телефона сотрудника по его фамилии и инициалам.

9. Сформирована переменная типа запись, содержащая различные даты. Каждая дата - это число, месяц и год. Найти:

а) год с наименьшим номером.

б) все весенние даты.

в) самую позднюю дату.

10. Сформировать переменную Tovar, содержащую сведения об экспор­тируемых товарах: Указывается наименование товара, страна импортирующая товар, и объем поставляемой партии в штуках. Составить список стран, в которые экспортируется данный товар, и общий объем его экспорта.

11. Сформирована переменная Assortim, содержащая сведения об игрушках: указано название игрушки, ее стоимость в рублях, и возрастные границы. Получить следующие сведения:

а) название игрушек цена которых не превышает 4 руб., и которые подходят детям 5 лет.

б) цену самого дорогого конструктора.

в) Название наиболее дорогих игрушек. (цена которых отличается не более чем на 1 руб. от самой дорогой.)

г) название игрушек которые подходят как детям 4 лет так и детям 10 лет.

д) можно ли подобрать игрушку, любую кроме мяча, подходящую ребенку 3 лет, и дополнительно мяч, так, чтобы суммарная стоимость игрушек не превосходила 5 руб.?


Практическая работа № 16

 

Тема: «Тип данных файл»

 

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

Структура физического файла представляет собой простую последовательность байт памяти носителя информации. Структура логического файла – это способ восприятия файла в программе.

Любой файл имеет следующие характеристики-требования:

– у него есть имя (набор из восьми, допустимых для имени файла, символов плюс расширение, указываемое после точки в имени файла состоящее из трех символов);

– он должен содержать данные одного типа (любой тип Турбо Паскаля, кроме типа Файл, то есть не существует типа «Файл файлов»);

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

Работа с файлами в Турбо Паскале осуществляется следующим образом: сначала объявляется переменная файлового типа, с указанием свойств переменной (то есть типом содержимого), затем данная файловая переменная связывается («ассигнуется») с именованным дисковым пространством (то есть непосредственно с конкретным файлом, содержащим или, который будет содержать данные того же типа, что и связываемая переменная-файл) или логическим устройством)

Переменная файлового типа может быть объявлена одной из следующих строк:

<имя> = file of <тип>;

<имя> = text;

<имя> = file;

где <имя> – имя переменной-файла;

file of – зарезервированные слова (файл, из);

text – имя стандартного типа текстовых файлов;

<тип> – имя любого стандартного типа Турбо Паскаля, кроме типа файл.

 

Например файл, содержащий список учеников и их возраст:

Type

pupil = record

  surname: string;

  name: string;

  age: word

end;

Var

journal: file of pupil;

В зависимости от способа объявления можно выделить три вида файлов:

¨ типизированные файлы (задаются предложением file of);

¨ текстовые файлы (определяются типом text);

¨ нетипизированные файлы (определяются типом file).

Файловые переменные имеют специфическое назначение. Такие операции, как присвоение значения, сравнение и т.д. над переменными типа файл осуществлять нельзя.

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

Нетипизированные файлы предназначены для низкоуровневой работы с файлами. С их помощью можно обратиться к файлу любого типа и логической структуры. За одно обращение считывается/записывается число байт, приблизительно равное величине буфера ввода/вывода. В качестве буфера может выступать любая переменная. Для записи и чтения используются процедуры BlockRead, BlockWrite.

 



Поделиться:


Последнее изменение этой страницы: 2021-07-18; просмотров: 152; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

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