Старшинство множественных операций

1. (высший) * - пересечение;

2. +, - - объединение, разность;

3. (низший) =, <>, >, <, in – равенство, неравенство, подмножество, принадлежность.

Например, определить результат выражения:

M1 := [‘a’, ‘e’, ‘x’];

M2 := [‘x’];

M3 := [‘a’..’z’];

If (M3 – M1 * M2 >= [‘p’]) and (‘a’ in M3) then writeln (‘Да’);

Задача 13.1. В строке определить цифры и количество букв.

Листинг программы

program Task;

uses crt;

var m, m1 : set of char;

s : string; i, n, l : byte;

begin

clrscr;

m := ['0'..'9'];

m1 := ['a'..'z'];

writeln ('Введите в строку символы, содержащие цифры и буквы');

readln (s);

n := 0; {Обнуление счётчика количества цифр}

writeln ('Вывод строки цифр: ');

for i := 1 to length (s) do

if (s[i] in m) and not (s[i] in m1) then

begin

inc (n);

write (s[i]);

end;

writeln;

writeln ('Их количество: ', n:3);

l := 0; {Обнуление счётчика количества букв}

writeln ('Вывод строки букв: ');

for i := 1 to length (s) do

if (s[i] in m1) and not (s[i] in m) then

begin

inc (l);

write (s[i]);

end;

writeln;

writeln ('Их количество: ', l:3);

readln;

end.

Задача 13.2. В строке определить количество пробелов.

Листинг программы

program Task;

uses crt;

var m, m1, m2 : set of char;

s : string; i, k : byte;

begin

clrscr;

m := ['0'..'9'];

m1 := ['a'..'z'];

m2 := [' '];

writeln ('Введите в строку символы, содержащие цифры, буквы и пробелы');

readln (s);

k := 0; {Обнуление счётчика количества пробелов}

for i := 1 to length (s) do

if (s[i] in m2) and not

(s[i] in m1) and not

(s[i] in m) then inc (k);

writeln;

writeln ('Их количество: ', k:3);

readln;

end.

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

Листинг программы

program task;

type st = string[100];

var s1 : st;

function chet (s : st) : integer;

var i,k : integer;

begin

k := 0;

for i := 1 to length (s) do

if (s[i] in ['0'..'9', '+', '-', '*', '/']) then inc (k);

chek := k;

end;

begin

clrscr;

writeln ('Введите строку символов');

readln (s1);

writeln ('Количество цифр и знаков ариф. операций', chet (s1));

readln;

end.

Задача 13.4. Программа позволяет выполнять операции над множествами и содержит процедуру, которая передаёт множество.

Листинг программы

program task;

uses crt;

type m = set of 'a'..'z';

var b, b1, b2 : m;

procedure print (a : m);

var c : char;

begin

for c := 'a' to 'z' do

if c in a then write (c);

end;

begin

clrscr;

b1 := ['a'..'f'];

b2 := ['t'..'z'];

writeln ('Первое множество');

print (b1);

writeln ('Второе множество');

print (b2);

writeln ('Первое множество + Второе множество');

b := b1 + b2;

print (b);

readln;

end.

Вопросы для самопроверки

1. Дайте определение множеству?

2. Что означает «пустое множество»?

3. Как определить мощность множества?

4. Каков формат объявления переменной типа множество?

5. Какие существуют операции над множествами?

6. Какие операции отношения применимы для сравнения множеств?

7. Каков формат процедуры include?

8. Каков формат процедуры exclude?

9. Каков порядок выполнения множественных операций?

Лабораторная работа №13

Множества

Цель работы. Получить навыки в задании переменных множественного типа и выполнении простейших операций над ними.

Задание. Работа с множественными типами данных.

Постановка задачи. Ознакомиться с конечным и упорядоченным множеством символов.

Варианты заданий

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

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

3. Из множества целых чисел от1 до 30 выделить множество простых чисел.

4. Имеются два множества символьного типа: X=[¢A¢,¢B¢,¢D¢,¢R¢,¢H¢]; Y=[¢R¢,¢A¢,¢H¢,¢D¢]. Сформировать новое множество X(Y*Y)+(Y-Y) и вывести его на печать.

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

6. Построить и напечатать множество, элементами которого являются встречающиеся в последовательности цифры от ¢0¢ до ¢9¢ и знаки арифметических операций.

7. Задать два произвольных символьных множества и произвести с ними все возможные операции.

8. Дан текст, содержащий N символов. Распечатать, какие из указанных символов (¢L¢, ¢T¢, ¢Z¢) входят в данный текст.

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

10. Напечатать множество, элементами которого являются встречающиеся в последовательности буквы от ¢F¢ до ¢М¢ и знаки арифметических операций.

11. Пусть A есть множество, определенное с базовым типом х. Предположим, что low и high являются соответственно первым и последним значением базового типа х. Определить количество элементов во множестве А.

12. Даны два множества A и В с одним и тем же базовым типом. Определить суммарное количество элементов в A и В.

13. Даны два множества A и В с одним и тем же базовым типом. Определить новое множество, равное пересечению элементов A и В.

14. Даны два множества A и В с одним и тем же базовым типом. Определить разность элементов A и В.

15. Даны два множества A и B с одним и тем же базовым типом. Напишите программу, проверяющую принадлежность A к В.

16. Даны два множества A и B с одним и тем же базовым типом. Напишите программу, проверяющую идентичность элементов A и В.

17. Содержимое всего множества нельзя отпечатать непосредственно предложением writeln. Для заданного множества A и его базового типа x (первый и последний элементы которого есть low и high) напишите процедуру, печатающую элементы множества A.

18. Даны два множества A и В. Постройте из них следующее множество: A*В- A.

19. Даны два множества A и В. Постройте из них следующее множество: A - (A - В).

20. Даны два множества A и В. Постройте из них следующее множество: (A+В) - (A - В) - (В - A).

21. Даны два множества A и В. Постройте из них следующее множество: (A - В)+(B- A)+A*В.

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

23. Написать функцию, подсчитывающую общее количество цифр и знаков «+», «-», «*», входящих в строку s.

24. Дано 100 целых чисел от 1 до 50. Определить, сколько среди них чисел Фибоначчи. Числа Фибоначчи можно определить следующим образом: Первое и второе равны 1; каждое последующее (начиная с третьего) есть сумма двух предшествующих. Вот так выглядит начало такой последовательности: 1,1,2,3,5,8,...

25. Написать функцию, определяющую количество дней в месяце m (не високосного года). В современном (григорианском) календаре каждый год, номер которого делится на 4, является високосным, за исключением тех, которые делятся на 100 и не делятся на 400. Например, 1900 г. - не високосный, 2000 г. - високосный.

26. Даны два множества A и В. Постройте из них следующее множество: A*(A- B).

27. Даны два множества A и В. Постройте из них следующее множество: A + (A + В).

28. Даны два множества A и В. Постройте из них следующее множество: (A+В) * (A - В) + (В - A).

29. Даны два множества A и В. Постройте из них следующее множество: (A - В)*(B- A)-A*В.

30. Дан текст из цифр и строчных латинских букв, за которыми следует точка. Определить, каких букв – заглавных (A, E, F, H, L) или строчных - больше в этом тексте.

Приложение 1

Тестовые вопросы для проверки теоретического
материала по разделу «основы алгоритмизации
и программирования»

1. Шестиугольник на блок-схеме обозначает процесс

a. вычислений;

b. останова программы;

c. принятия решения;

d. модификации;

e. передачи данных;

f. пуска программы

g. подпрограмму.

2. Описательная часть программы Турбо Паскаль включает раздел

a. констант;

b. переменных;

c. функций;

d. типов;

e. подключения модуля;

f. процедур;

g. меток;

h. операторов;

i. заголовок программы;

3. Заголовок основной программы в среде Турбо Паскаль обозначают служебным словом

a. var

b. label

c. type

d. procedure

e. end.

f. const

g. end;

h. function

i. begin

j. begin…end

k. uses

l. program <имя программы>

4. Служебным словом file обозначают тип

a. целый;

b. типизированный файл;

c. одномерный массив;

d. вещественный;

e. символьный;

f. текст;

g. записи;

h. строковый;

i. перечисляемый;

j. логический;

k. двумерный массив;

l. тип-диапазон;

m. нетипизированный файл;

n. множество;

5. Тип данных shortint в среде Турбо Паскаль занимает памяти (в байтах)

a. 1

b. 2

c. 4

d. 6

e. 8

6. Оператор объявления новой константы

a. const <имя константы> : <значение>;

b. var <имя переменной> = <тип>;

c. const <имя константы> : <тип>;

d. type <имя типа> = <тип>;

e. var <имя переменной> : <значение>;

f. type <имя типа> : <тип>;

g. const <имя константы> = <значение>;

h. var <имя переменной> = <значение>;

i. type <имя типа> : <значение>;

7. Простая форма условного оператора

a. if < условие > then <оператор>;

b. if < условие > then begin < оператор >; end else < оператор >;

c. if < условие > then begin < оператор >; end;

d. if < условие > then < оператор > else < оператор >;

e. if < условие > then begin < оператор >; end else begin < оператор >; end;

f. if < условие > then < оператор > else begin < оператор >; end;

8. К данным типа диапазон применимы функции и операторы

a. Succ

b. writeln

c. Pred

d. Readln

e. :=

f. Ord

9. Краткая форма объявления типа данных «строка» имеет вид

a. var <имя пер.> : string;

b. var <имя пер.> : text;

c. var <имя пер.> : array <нач_индекс..кон_индекс> of <тип элементов>;

d. var <имя пер.> : file of <тип>;

e. var <имя пер.> : record <имя поля> : <тип>; end;

f. var <имя пер.> : array <нач_индекс1..кон_индекс1, нач_индекс2..кон_индекс2> of <тип элементов>;

g. var <имя пер.> : file;

10. Объявление одномерного массива размерностью 10 элементов вещественного типа

a. Var a : array[1..10] of real;

b. Var a : array[1..10, 1..2] of integer;

c. Var a : array[1..10, 2..3] of string;

d. Var a : array[0..9, 4..6] of real;

e. Var a : array[3..12] of char;

f. Var a : array[0..9] of integer;

g. Var a : array[2..11] of integer;

h. Var a : array[0..9] of string;

i. Var a : array[3..12, 0..1] of char;

11. Оператор вывода значений элементов двумерного массива

a. For i:=1 to 10 do For j:=1 to 10 do a[I, j]:= random;

b. For i:=1 to 10 do For j:=1 to 10 do readln(a[I, j]);

c. For i:=1 to 10 do For j:=1 to 10 do a[I, j]:= random(11);

d. For i:=1 to 10 do For j:=1 to 10 do writeln(a[I, j]);

e. For i:=1 to 10 do For j:=1 to 10 do a[I, j]:= random-5;

f. For i:=1 to 10 do For j:=1 to 10 do read(a[I, j]);

g. For i:=1 to 10 do For j:=1 to 10 do a[I, j]:= random(11)-5;

h. For i:=1 to 10 do For j:=1 to 10 do write(a[I, j]);

12. Произведение отрицательных элементов массива

a. For i:=1 to n do For j:=1 to n do if a[I, j] < 0 then inc(k);

b. For i:=1 to n do For j:=1 to n do if a[I, j] < 0 then k:=k*1;

c. For i:=1 to n do For j:=1 to n do if a[I, j] < 0 then dec(k);

d. For i:=1 to n do For j:=1 to n do if a[I, j] < 0 then k:= k*a[i];

e. For i:=1 to n do For j:=1 to n do if a[I, j] < 0 then k:=k+1;

f. For i:=1 to n do For j:=1 to n do if a[I, j] < 0 then k:= k+a[i];

13. Стандартная функция Турбо Паскаля преобразует строковый аргумент в его численное представление

a. Length();

b. Upcase();

c. Copy();

d. Pos();

e. Insert();

f. Delete();

g. Val();

14. Оператор Турбо Паскаля после создания текстового файла позволяет ввести в файл дополнительную информацию

a. Assign();

b. Reset();

c. Read();

d. Close();

e. Eof();

f. Append();

g. Eol();

h. Rewrite();

i. Write();

j. Erase();

15. Результатом оператора include([3..9],2) является

a. True

b. [0,12,3,4,5,6]

c. [2,3..9]

d. [2,3,4,5,6,7,8,9]

e. [3,6]

f. False

g. [ ]

h. [6,7,8,9]

i. [0,1,2,3,6]

Приложение 2

Горячие клавиши

Горячая клавиша Эквивалентная команда меню ТП Функция
[F1] - Активизация окна контекстно-зависимой помощи
[Ctrl+F1] Help/Topic search Активизация синтаксической справки, то есть справки об операторе, на который указывает маркер
[Shift+F1] Help/Index Вызов содержания справочной подсистемы
[F2] File/Save Сохранение на диске файла из активного окна
[Ctrl+F2] Run/Program reset Установка программного счётчика на начало программы и закрытие всех ранее открытой программой файлов
[F3] File/Open Открытие нового окна и загрузка в него выбранного файла
[Alt+F3] Window/Close Закрытие активного окна
[Alt+F5] Debug/User screen Переключение на пользовательский экран
[F6] Window/Next Переход к следующему окну
[Shift+F6] Window/Previous Возврат к предыдущему окну
[F7] Run/Trace Into Трассировка программы пооператорно с пооператорным выполнением всех подпрограмм
[F8] Run/Step over Трассировка программы пооператорно с выполнением подпрограмм без пооператорной детализации
[F9] Compile/Make Компиляция и редактирование связей программы
[Alt+F9] Compile/Compile Компиляция программы из активного окна
[Ctrl+F9] Run/Run Компиляция и выполнение программы под выполнением интегрированной инструментальной оболочки
[F10] - Активизация строки меню
[Alt+F10] - Вызов локального меню
[Alt+Литера] - Открытие озаглавленного выбранной литерой подчинённого меню из строки меню
[Alt+Backspace] Edit/Undo Отмена всех изменений в текущей строке
[Alt+X] File/Exit Завершение сеанса работы с ТП с сохранением (после подтверждения) файлов, изменённых редактором текста
[Alt+Цифра] - Переход к окну с указанным номером
[Alt+0] Window/List Вызов окна, в котором содержится список всех открытых окон
[Ctrl+Del] Edit/Clear Удаление выделенного блока
[Ctrl+Ins] Edit/Copy Копирование блока в буфер промежуточного хранения
[Shift+Del] Edit/Cut Перенос выделенного блока в буфер промежуточного хранения
[Shift+Ins] Edit/Paste Копирование блока из буфера промежуточного хранения в окно редактирования

Библиографический список

1. Турбо Паскаль 7.0 – Киев: BHV, 2000. – 432 с.: ил.

2. Фаронов В. В. Турбо Паскаль 7.0. Начальный курс. Учебное пособие. Издание 7-е, переработанное. – М.: «Нолидж», 2001. – 576 с., ил.

3. Немнюгин С. А. Turbo Pascal: практикум – СПб: Питер, 2001. – 256 с.: ил.

4. Turbo Pascal / Немнюгин С. А. – СПб: Издательство «Питер», 2001. – 496 с.: ил.

5. Абрамов С. А., Зима Е. В. Начала информатики. – М.: Наука. Гл. ред. Физ.-мат. Лит., 1989. – 256 с.

6. Васильев П. П. Турбо Паскаль в примерах и задачах: Освой самостоятельно: Учеб. пособие. – М.: Финансы и статистика, 2002ю – 496 с.: ил.

7. Сборник задач по базовой компьютерной подготовке: Учебное пособие для втузов / В. С. Зубов, И. Н. Котарова, О. Г. Архипов и др.: Под ред. И. Н. Котаровой. – М.: Изд-во МВИ, 1998. - 178 с.: ил.

8. Альфред В. Ахо, Джон Э.Хопкрофт, Джеффри Д. Ульман. Структуры данных и алгоритмы. : Пер. с англ.: М. : Издательский дом «Вильямс», 2001ю – 384 с.: ил. – Парал. тит. англ.

9. Колесниченко Е. В. Язык Паскаль: Лабораторный практикум / Норильск. 1993. – 107 с.



[*] Название quicksort (быстрая сортировка) этому алгоритму дал его автор Хоар (Ноаге С. A. R.)

[†] Имена, локализованные в подпрограмме, могут совпадать с ранее объявленными глобальными именами. В этом случае считается, что локальное имя «закрывает» глобальное и делает его недоступным.

Наши рекомендации