Структурированные типы в Pascal

Слайд 2

Структурированные типы в Pascal

Pascal

Множества

Примеры определения и задания множественных типов:

type Caps =

Структурированные типы в Pascal Pascal Множества Примеры определения и задания множественных типов:
set of 'A' .. 'Z';
Colors = set of (RED, GREEN, BLUE);
Numbers = set of byte;
var oct : set of 0 .. 5;

type
digitchar = set of '0' .. '9';
digit = set of 0 .. 9;
var
s1, s2, s3 : digitchar;
s4, s5, s6 : digit;
begin
…………….
s1 := ['1', '2', '3'];
s2 := ['3', '2', '1'];
s3 := ['2', '3'];
s4 := [0 .. 3, 6];
s5 := [4, 5];
s6 := [3 .. 9];
……………..
end.

Тип "множество" задает набор всех возможных подмножеств входящих в него элементов (включая пустое). Если базовый тип, на котором строится множество имеет N элементов, то число подмножеств, входящих в это множество, равно 2N.
А переменная типа "множество" содержит одно конкретное подмножество значений множества.
Например:
var s : 1 .. 3; - переменная интервального типа, принимает значения: 1, 2 и 3,
а множество
var m : set of 1 .. 3; может принимать значения:
[ ] [1] [2] [3] [1, 2] [1, 3] [2, 3] [1, 2, 3]

Инициализация переменной-множества:
var index set of 1 .. 9 = [0, 2, 4, 6, 8,];
В Конструкторе в качестве элемента может быть выражение или диапазон: [R, а mod 15, 14] или [chr(65) .. chr(90)]

Pascal

И+ПРГ

Слайд 3

Структурированные типы в Pascal

Pascal

Множества

Операции над множествами.

Результат операции – множество
:=

Структурированные типы в Pascal Pascal Множества Операции над множествами. Результат операции –
- Присваивание
+ - Объединение – элементы первого множества, дополненные элементами второго
* - Пересечение – элементы, общие для обоих множеств
- - Разность – элементы первого множества, которые не принадлежат второму
Результат операции – логический
= - Тождественность – true, когда все элементы обоих множества одинаковы (множества эквивалентны)
<> - Нетождественность – true, когда множества неэквивалентны
<= - Содержится в – true, если первое множество включено во второе
>= - Содержит – true, если второе множество включено во первое
in - Принадлежность – true, если первый (левый) операнд операции –выражение- принадлежит второму (правому) операнду -множеству (включен в него)

Процедуры

Include (s, i) - включает элемент i во множество s
Exclude (s, i) - исключает элемент i из множества s

Pascal

И+ПРГ

Слайд 4

Структурированные типы в Pascal

Pascal

Множества

Program CalcSet;
var x,y,r : real; op :

Структурированные типы в Pascal Pascal Множества Program CalcSet; var x,y,r : real;
char;
begin
repeat
write('Ввести op ->'); readln(op);
write('Ввести x, y -> '); readln(x,y);
if op in ['+','-','*','/',';']
then
begin case op of
'+' : r:=x+y;
'-' : r:=x-y;
'*' : r:=x*y;
'/' : r:=x/y;
';': end;
writeln (x:4:2,' ',op,' ',y:4:2,' =',' ',r:4:2)
end
else writeln('Ошибка ввода операции');
until op=';'
end.

Pascal

И+ПРГ

Пример: Программа – простой калькулятор на 4-е арифметических действия. Завершение работы – ввод символа ';'

Слайд 5

Структурированные типы в Pascal

Pascal

Множества

Program mnog_twolet;
uses crt;
Сonst text : string = 'рефракция

Структурированные типы в Pascal Pascal Множества Program mnog_twolet; uses crt; Сonst text
много заноза факт фанфары'; world : string[10] = '';
Var partworld : set of char ; letter : char; i: integer;
begin
clrscr;
letter := text[1];
for i := 1 to length(text)+1 do
begin
if (text[i] <> ' ') and (i <= length(text))
then
begin world := world+text[i]; include (partworld, text[i+1]); end
else
begin if (letter in partworld)
then
writeln('Слово с повторяющейся первой буквой: ', world);
letter := text[i+1]; partworld := []; world := '';
end;
end;
end.

Дана последовательность русских слов (строчными буквами) разделенных пробелами (не менее 5-ти слов). Вывести на экран слова, в которых первая буква встречается ещё раз.

Pascal

И+ПРГ

Практическое занятие – ПЗ-1

Слайд 6

Структурированные типы в Pascal

Pascal

Множества

program Glasn_Sogl;
Type mnoj= set of 'A'..'я'; (* Задаем

Структурированные типы в Pascal Pascal Множества program Glasn_Sogl; Type mnoj= set of
тип данных - множество букв русского алфавита *)
var glasn, sogl: mnoj;
sr: string; (* строковая переменная sr хранит вводимый текст *)
i: byte; (* параметр цикла *)
g, s: byte; (* переменные накапливающие количество гласных и согласных букв
соответственно *)
begin
(* Задаем множества гласных букв перечислением, а множество согласных вычитанием из
всего алфавита гласных букв, мягкого и твердого знаков *)
  glasn:=['A','a','O','o','E','e', 'Ё','ё', 'И','и', 'У','у', 'Ы','ы','Э','э','Я','я','Ю','ю'];
sogl:=['A'..'я'] – glasn – ['Ъ' ,'ъ' , 'Ь' , 'ь'];
  write('Введите предложение: ');
readln(sr);
(* Обнуляем счетчики количества *)
g:=0;
s:=0;
(* Просматриваем все элементы предложения и ищем их в множествах glasn и sogl *)
For i:=1 to Length(sr) do begin
if sr[i] in glasn then g:=g+1;
if sr[i] in sogl then s:=s+1;
end;
writeln('В данном предложении ',g,' гласных и ',s,' согласных букв');
End.

Посчитать количество гласных и согласных букв в предложении.

Pascal

И+ПРГ

ПЗ-2