- •Министерство образования и науки российской федерации
- •Оглавление предисловие
- •Составление структурных схем алгоритмов и программ
- •Пример 1
- •Пример 2
- •Задания
- •Пример 3
- •Задания
- •Пример 4
- •Пример 5
- •Задания
- •Алфавит языка pascal. Типы данных. Раздел описаний. Оператор присваивания. Ввод-вывод. Составление простейших программ
- •Стандартные процедуры
- •Стандартные функции
- •Пример 1
- •Пример 2
- •Задания
- •Пример 3
- •Задания
- •Задания
- •Использование переменных логического типа. Логический оператор присваивания
- •Логический оператор присваивания
- •R операция_сравнения s
- •Пример 1
- •Задания
- •4. Программирование разветвляющихся структур
- •4.1. Использование в программах условного оператора
- •Пример 1
- •Задания
- •4.2. Использование в программах оператора варианта
- •Case выражение-селектор of метка_случая : оператор;
- •Пример 1
- •Задания
- •5. Использование переменных типа char
- •Задания
- •6. Реализация циклических структур
- •6.1. Применение оператора цикла с параметром
- •Шаг изменения параметра цикла:
- •Пример 1
- •Задания
- •Пример 2
- •Пример 3
- •Задания
- •Пример 4
- •Задания
- •Таким образом изображаются циклы в структурных схемах (в лабораторных работах, курсовых работах и т.Д.). Пример 5
- •Задания
- •Задания
- •Пример 6
- •Задания
- •Не смотря на то, что есть еще другие операторы цикла, обычно вводят и выводят массивы с помощью оператора цикла с параметром.
- •6.2. Применение оператора цикла с постусловием
- •Пример 1
- •Задания
- •6.3. Применение оператора цикла с предусловием
- •Основные различия между операторами циклов с постусловием и предусловием
- •Пример 1
- •Задания
- •6.4. Работа с двухмерными массивами.
- •Задания
- •Пример 1
- •Задания
- •7. Поиск и сортировка числовых данных
- •Пример 1
- •Задания
- •8. Решение задач с применением подпрограмм
- •Procedure имя(список параметров);
- •Var идентификаторы:имя типа;...; var идентификаторы: имя типа
- •Var идентификаторы:имя типа;...;var идентификаторы: имя типа;...; идентификаторы:имя типа;...;идентификаторы:имя типа
- •Идентификаторы:имя типа;идентификаторы:имя типа; ...;идентификаторы:имя типа
- •Локальные переменные доступны только внутри процедур, в которых они определены!
- •Пример 1
- •Задания
- •9. Использование переменных перечисляемого типа
- •Ввод и вывод значений переменных перечисляемого типа запрещен.
- •Задания
- •10. Использование переменных ограниченного типа
- •Задания
- •11. Использование переменных множественного типа
- •Var идентификатор : set of порядковый тип;
- •Запрещен.
- •Правила приоритета для множественных операций:
- •Задания
- •12. Использование записей
- •With префикс[,префикс [...]] do оператор
- •Пример 1
- •Задания
- •13. Работа со строками
- •Каждая переменная типа string вводится отдельной процедурой readln
- •Пример 1
- •Задания
- •14. Работа с файлами
- •Пример 1
- •Пример 2
- •Пример 3
- •Задания
- •Библиографический список
Var идентификатор : set of порядковый тип;
(имя_множества) (список_элементов_множества)
Примеры описания:
type
cw = ( Red, Vellow, Blue, White ); {перечислимый тип}
cv = set of 'a'..'k'; {ограниченный тип}
const
ch : cv = ['a','d'..'z']; {задание множества константой}
var
c4 : cv; { c4 типа cv, т.е. множество символов от 'a' до 'f' }
cc,c : set of char;
c2 : set of 1..7; {множество чисел от 1 до 7}
c5 : set of RED..BLUE; {при наличии предыдущего описания cw}
cha: char; {элемент множеств cc,c,c4,ch}
i : integer; {элемент множества c2}
Чтобы во множестве появились какие-то элементы, необходимо выполнить предложение назначения, в левой части которого надо указать имя SET-переменной, а в правой - некоторое множественное выражение, например c2:=[1, 3..7] .
Над множествами допустимы следующие операции (А, В - выражения (множества); x - выражение со значением (элемент множества), относящимся к базовому типу (типу, указанному после set of)):
A + B - объединение множеств (множество всех элементов A и B);
A * B - пересечение множеств (множество общих для А и В элементов);
A – B - разность множеств (множество всех элементов А, не входящих в В);
x in A - проверка на вхождение элемента во множество (если x входит в A, результат равен true, в противном случае – false);
A = B - равенство множеств;
A<>B - неравенство множеств;
A<=B - включение множества (true, если A подмножество В (все элементы множества A содержатся в множестве B), иначе - false);
A>=B - включение множества (true, если B подмножество A (все элементы множества B содержатся в множестве A), иначе - false).
Ввод значений и вывод переменных множественного т ипа
Запрещен.
Примеры применения переменных множественного типа, описанных выше:
c :=['a'..'e']; {c:=['a','b','c','d','e']}
ch:=['d'..'f']; {c:=['d','e','f'] , c<>ch}
cc:=c+ch; {cc=['a','b','c','d','e','f'], cc>=c или c<=cc}
cc:=c*ch; {cc=['d','e']}
cc:=c-ch; {cc=['a','b','c']}
for cha:='a' to 'z' do if cha in cc then write(cha); {печать элементов множества сс}
c2:=[]; {пустое множество}
for i:=1 to 7 do можно заменить одним оператором:
c2:=c2+[i]; {множество c2:=[1..7];
чисел от 1 до 7}
for i:=1 to 7 do if i in c2 then write(i); {печать множества с2}
Правила приоритета для множественных операций:
Приоритетный уровень |
Операции |
Пояснения |
1 (высший) |
* |
| Пересечение |
2 |
+ – |
Объединение, разность |
3 (низший) |
= <> in >= <= |
Равенство, неравенство, принадлежность, подмножество (две операции) - |
Задания
№1. Какие из следующих описаний неверны и почему?
type
{ 1 } Tochki = set of real;
{ 2 } bajt = array [1.. 8] of 0..1;
{ 3 } europe = (england, france,germany,spain,italy);
{ 4 } oset = set of europe;
{ 5 } vektor = array [1..10] of boolean;
{ 6 } oneset = set of vektor;
{ 7 } digits = '0'..'9';
{ 8 } threeset = set of digits;
{ 9 } matrica = array [digits] of threeset;
{ 10 } fiveset = set of boolean;
{ 11 } fourset = set of integer;
№2. Какие из следующих конструкций являются множествами (в смысле языка PASCAL), а какие нет и почему?
а) [9,3,6,0]; б) [2..3],5,7; в) [1..15,4..18];
г) ['*','*']; д) [0..0]; е) [true..false];
ж) [2,sqrt(9)]; з)['=','>=','>']; и) [[],[5]];
к) [ord(7),0<2]
№3. Что будет на экране в результате выполнения следующей программы:
Type
Primery=(Red,Yellow,Blue,White,Black);
Color =set of Primery;
Var
H0,H1:Color;
C1,C2,C3:set of Char;
B1,B2:Boolean;
Ch:Char;
Begin
{ лат.алф.:A,B,C,D,E,F,G,H,I,J,K,L,M,
N,O,P,Q,R,S,T,U,V,W,X,Y,Z }
H0:=[Yellow];
H1:=H0+[succ(Blue)];
if Blue in H1 then writeln('Blue');
C2:=['F'..'K','M','X'..'Z'];
C1:=['L','N'..'W'];
C3:=C1+C2;
for Ch:='A' TO 'Z' DO
if Ch in C3 THEN
Write(Ch:2);
Writeln;
B1:= C3 = C1 + C2;
B2:= C3 <= C2;
Writeln(B1,B2:6,'M' in C1:6);
End.
№4. Имеется описание:
var
x,y,z:set of 8..22;
Переменной x присвоить множество всех целых чисел от восьми до 22, переменной y - множество всех составных чисел из этого же диапазона, а переменной z присвоить множество всех простых чисел из того же диапазона.
№5. Не используя дополнительные переменные, поменять местами значения переменных-множеств АиВ.