Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Паскаль_теория.doc
Скачиваний:
8
Добавлен:
08.11.2018
Размер:
341.5 Кб
Скачать

3. Контрольные вопросы.

  1. Когда используется подпрограмма-функция?

  2. В чем существенные отличия подпрограмм-функций от процедур?

  3. Как осуществляется вызов функции?

  4. В чем отличие применения функции и процедуры для решения одной и той же подзадачи?

Тема: “Множества”.

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

План работы.

1. Повторить теорию.

2. Выполнить практическую часть на компьютере, записав ответы в тетрадь.

3. Ответить на контрольные вопросы.

Ход работы.

  1. Теория.

Множество-это неупорядоченный, ограниченный набор данных одного типа. Элементы множества задаются некоторым базовым типом. Базовым типом может быть любой порядковый тип. Максимальное количество элементов, составляющих базовый тип не превышает диапазон 0..255.

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

Var

MN1:set of byte;

MN2:set of char;

MN3:set of Boolean;

MN4:set of (a,b,c,d);

При задании типа множества описывается максимальный возможный набор элементов, входящих в данное множество, но никаких значений в переменных это не создаёт. Значение множества задаётся в разделе операторов с помощью конструктора. Конструктор – это набор элементов базового типа, заключённый в [ ]. Множество может быть пустым – []. Конструируя множество, его элементами могут быть константы, переменные, выражения, значения которых принадлежат базовому типу. Например: MN1:=[1,3,..5,2,7,2];

MN2:=[’a’,’k’];

Mn3:=[boolean];

Mn4:=[] .

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

  1. Объединение двух множеств есть множество, элементы которого принадлежат или одному или другому множеству (А+В).

  2. Пересечение двух множеств есть множество, элементами которого являются элементы первого множества, являющиеся элементами второго множества (А*В).

  3. Разность двух множеств есть множество, элементы которого принадлежат первому множеству, но не принадлежат второму множеству (А-В).

  4. Вхождение. Логическая операция, с помощью которой можно определить принадлежность элемента какому-либо множеству (х in A). Если элемент принадлежит множеству, то результатом выполнения данной операции будет TRUE, в противном случае результат будет FALSE.

Множества можно сравнивать, для этого используют операции отношения =, <>, >=, <=.

Два множества называются равными, если каждый элемент первого множества является элементом другого множества и наоборот.

Множества не равны, когда не каждый элемент первого множества является элементом второго множества.

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

Первое множество меньше или равно второму множеству, когда все элементы первого множества входят во второе множество.

Элементы множества нельзя запросить с клавиатуры с помощью процедур read или readln, нельзя также элементы множества выводить с помощью write или writeln.

  1. Практическая часть.

Задание 1. Наберите заданную программу для решения следующей задачи: С клавиатуры вводятся 10 произвольных натуральных чисел из диапазона 0..255. Сформировать из этих чисел множество чётных чисел и вывести элементы полученного множества на экран.

Program mno;

Var a:set of byte;I,x:integer;

Begin a:=[];

For I:=1 to 10 do begin

Readln (x);

If x mod 2 = 0 then a:=a+[x]; end;

For I:=1 to 255 do

If I in a then write(i); end.

Измените программу таким образом, чтобы с клавиатуры вводилось 15 чисел, из них сформировать множество чисел кратных 7 и вывести их на экран.

Задание 2. Наберите заданную программу для решения следующей задачи: С клавиатуры вводится произвольная строка из строчных латинских букв. Определить количество гласных и количество согласных букв в этой строке.

Program stroka;

Var st:string; a,b,c:set of ’a’..’z’;

G,s,i:integer;

Begin

Readln(st); a:=[’a’,’e’,’I’,’o’,’u’]; b:=[’a’..’z’]; c:=b-a; g:=0; s:=0;

For I:=1 to length(st) do begin

If st[i]in a then g:=g+1;

If st[i]in c then s:=s+1; end; writeln(g,s); end.

Изменить программу таким образом, чтобы на экран выводилось сообщение о том, чего больше гласных или согласных букв.

Задание 3. Наберите заданную программу для решения следующей задачи: Дан текст из строчных латинских букв. Вывести на экран первые вхождения букв текст, сохраняя их исходный взаимный порядок, а также эти буквы в алфавитном порядке.

Program vhozdenie;

Var st:string; a:set of char;

I:byte; j:char;

Begin

Read(st); a:=[];

For I:=1 to length(st) do

If st[i]in a then a:=a else

begin a:=a+[st[i]];

write(st[i]);

end;

For j:=’a’ to ’z’ do

If j in a then write(j);

end.

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