extracted_text:
Множества
        Занятие 17
1. Урок 1.  Описание    множеств.     Операции   над   множествами:  объединение, пересечение, дополнение,
2. Урок 2.    Операции над множествами: проверка принадлежности, сравнение, включение.   Ввод и вывод
присваивание значения.
элементов множества.
3. Урок 3.  Программирование  алгоритмов с использованием  множеств.
4. Контрольные вопросы и упражнения.
Урок 1. Описание множеств. Операции над множествами
1.1. Описание множеств.
1.2. Операции над множествами.
1.1. Описание множеств
Теория множеств – это ветвь математики, основанная немецким математиком  Г. Кантором в конце   XIX
века.
Множество  –   это  любой   набор   объектов,   который   понимается   как   единое   целое.   Объекты   внутри
множества называются членами или элементами множества.  В языке Pascal  множество представляет собой набор
различных элементов одного (базового) типа.  Базовый тип – это совокупность всех возможных элементов множества,
начиная от 0 (пустое множество) до 255.
В   качестве  базового  типа   можно   использовать   любой  простой   тип  (стандартный,   перечисляемый   или
ограниченный)  за исключением целого shortint, integer, longint, word и вещественного типов. В качестве базового типа
целых чисел можно использовать только тип  byte.
Максимальное количество значений базового типа множества называется его мощностью.
Всему множеству в целом дается имя, которое образуется так же, как имена простых переменных и массивов.
Для обозначения множеств в  TP  7.0 используются  квадратные скобки, в которые заключаются элементы
множества, например, [1,2,3], [‘a’, ‘b’, ‘c’, ‘d’]. Запись  []  означает пустое множество. Мощность пустого множества
равна нулю.
Три множества [1,2,3,4,5], [1,2..5] и [1..5] считаются одинаковыми, поэтому можно использовать последнюю
сокращенную  форму записи множества.   Если значение  первой  константы диапазона  больше  значения  второй, то
задается  пустое  множество. Например, [5..3]  означает  пустое множество. Множества, используемые в программе,
могут быть описаны  либо в разделе  Type:
либо в разделе описания переменных Var:
Type <Имя типа> = set of <Тип элементов>;
Var <Имя множества> : <Имя типа>;
Var <Имя множества> : set of <Тип элементов>;
Вместо описания Тип элементов можно указывать  диапазон элементов. Например,  Var a :set of 2..10;  Это
означает, что описано множество  ‘a’, которое может содержать целые числа из диапазона  от 2 до 10.
1.2. Операции над множествами
Операции над множествами выполняются по правилам теории множеств.  К таким операциям относятся:
1. Объединение.
2. Пересечение.
3. Дополнение.
4. Присваивание значения.  Знак операции  “:=”.
5. Принадлежность.
6. Сравнение  (равенство,  неравенство).
7. Включение множества  (больше равно,  меньше равно).
Объединением (сложением) двух и более множеств называется множество элементов, принадлежащих хотя
бы одному из этих множеств. Знаком операции объединения множеств в TP 7.0 является  ‘+’.
         a
            b
                          c  =  a   +   b
107 Описание множеств. Операции над множествами.  Ввод и вывод элементов множества.  Программирование алгоритмов с использованием множеств
Например,   a:= [2..5];     b:= [4..6];   c:= a + b;.   В результате выполнения операции объединения получим
множество  “с ”  равное  [2..6].
Пересечением  (умножением) двух и более множеств называется  множество, которое содержит элементы,
находящиеся в области пересечения множеств.  Знак операции пересечения   “*”.

         a
             b
   c = a  *  b
Например,     a:=[2..5];     b:=[4..6];     c:=a  *  b;.   В результате выполнения операции   пересечения   получим
множество  “с”  равное [4,5].
Дополнением    (разностью)   двух и более множеств называется множество, как  остаток от   наложения
одного множества на другое.  Знаком операции  дополнения является  “”.
           a               b
  c = a     b
Например,     a:=[2..5];     b:=[4..6];     c:=a    b;.   В результате выполнения операции   дополнения   получим
множество  “с”  равное [2,3].
в математике
в TP 7.0
Знак  операции


\

=

 или  
или 
Действие
Объединение
Пересечение
Дополнение
Принадлежность
Равенство
Неравенство
Включение
(больше, равно)
Включение
(меньше, равно)
Пример
c = a   b
c := a + b
c = a   b
c := a * b
c = a \ b
c := a  b
c = a   b
c := a  in  b
a  =  b
a    b
a  <>  b
a   b
a  >=  b
a  b
a  <=  b
      Таблица 1
Тип
set
множество
set
множество
set
множество
boolean
булевский
boolean
булевский
boolean
булевский
boolean
булевский
boolean
булевский
+
*

in
=
<>
>=
<=
Присваивание   значений.   Некой   переменной   (переменным),   имеющей   тип    set    (множество)   может   быть
присвоено некоторое значение явно или неявно. При этом элементы множества заключаются в квадратные скобки.
Например,    a:=[];    b:=[2..7];    c:=[4,7,12,34];    d:=[‘a’,   ‘b’,   ‘c’];.   Такая   форма   определения   множеств   называется
конструктором множества.
Program V1L18P1; {Операции над множествами}
Uses Crt;
Var a,b,s,u,r :set of byte;
            i:byte;
begin
ClrScr;
{}
WriteLn('Заданные множества');
{Вызов модуля работы с дисплеем и клавиатурой}
{Описание множеств}
{Описание переменной циклов}
{Стирание экрана}
108 WriteLn('  a := [2,3,4,5];');
WriteLn('  b := [4,5,6];');
a:=[2..5];
b:=[4..6];
s:=a+b;
u:=a*b;
r:=ab;
{Конструктор множества ‘a’}
{Конструктор множества ‘b’}
{Определение множества }
{Определение множества }
{Объединение множеств}
{Пересечение множеств}
{Дополнение множества}
WriteLn('Объединение множеств s := a + b;');
for i:=0 to 10 do
{Цикл вывода на экран дисплея}
if i in s then Write(i:3);
WriteLn;
WriteLn('Пересечение множеств u := a * b;');
for i:=0 to 10 do
if i in u then Write(i:3);
WriteLn;
{}
WriteLn('Дополнение множества r := a  b;');
for i:=0 to 10 do
if i in r then Write(i:3);
{Определение принадлежности}
{Перевод строки}
{Цикл вывода на экран дисплея}
{Определение принадлежности}
{Перевод строки}
{Цикл вывода на экран дисплея}
{Определение принадлежности}
{}
ReadKey
end.
{Задержка работы программы до нажатия любой клавиши}
Результат работы программы.
Заданные множества
   a := [2,3,4,5];
   b := [4,5,6];
Объединение множеств s := a + b;
   2 3 4 5 6
Пересечение множеств u := a * b;
   4 5
Дополнение множества v := a – b;
   2 3

Урок 2.  Логические операции над  множествами.  Ввод и вывод элементов множества
2.1. Логические операции над множествами.
2.2. Ввод и вывод элементов множеств.
2.1. Операции  над множествами
Проверка принадлежности.   Выражение   x   in   a   принимает значение     True  (истина) если   значение   x
принадлежит  множеству  a  и  False (ложь)  в противном случае.  Тип переменной  x  должен быть таким  же,  что и
базовый тип элементов множества  a.
Сравнение множеств.  Выражение   a = b   принимает значение   True (истина) тогда и только тогда,  когда
множества содержат одни и те же элементы.  В противном случае выражение принимает значение  False (ложь).  Если
a  и   b  отличаются  хотя  бы  одним  элементом,  то  a  <> b  и  выражение принимает  значение  (истина)  и  (ложь)  в
противном случае.
     a
 b
Включение множества.   Выражение  a  <=  b  принимает значение   True  (истина),   когда все элементы   a
являются также  элементами   b.  В   противном   случае   выражение   принимает    значение False (ложь).   То есть
множество   a   входит во множество   b.
     b           a
Выражение   a >= b  принимает   значение   True (истина),  когда  все элементы  b  являются также  элементами
a.   В противном случае имеем  False (ложь).  То есть множество  b   входит  во  множество  a.
109 Описание множеств. Операции над множествами.  Ввод и вывод элементов множества.  Программирование алгоритмов с использованием множеств
     a
     b
2.2. Ввод и вывод элементов множества
В отличие от массивов данных к элементам множества нет прямого доступа по индексам этих переменных.
Поэтому   ввод   элементов   множества   осуществляется   с   использованием  операции   объединения  (+),     вывод   –   с
использованием операции проверки принадлежности (in).
Пример 1.  Программа  ввода  и  вывода числового множества.
Program V1L18P2; {Ввод и вывод элементов множества}
Uses Crt;
Var a:set of byte;
n,x,i:integer;
Label 10,20;
{}
begin
ClrScr;
10:WriteLn('Введи число элементов множества  n <= 255');
ReadLn(n);
if n>255 then
begin
{Стирание экрана}
{Вызов модуля работы с дисплеем и клавиатурой}
{Описание множества 'a'}
{Описание переменных}
{Описание меток}
{Ввод количества элементов множества}
WriteLn('Ошибка ввода!');
GoTo 10
{Безусловный переход на метку 10}
end;
{}
20:WriteLn('Введи значения элементов множества 0 <= x <= 255');
a:=[];
for i:=1 to n do
begin
{Определение пустого множества}
{Цикл формирования множества}
Read(x);      {Ввод значений вспомогательной переменной 'x'}
if (x<0)or(x>255) then
begin
WriteLn('Ошибка ввода!');
GoTo 20
{Безусловный переход на метку 20}
end;
a:=a+[x]
{Формирование значений элементов множества}
end;
{}
WriteLn('Вывод множества');
for x:=0 to 255 do  {Цикл определения принадлежности значения переменной 'x' множеству 'a'}
if (x in a) then Write(x:4);
{}
ReadKey  {Задержка работы программы до нажатия любой клавиши}
end.
Результат работы программы
Введи число элементов множества n <= 255
256
Ошибка ввода!
Введи число элементов множества n <= 255
5
Введи значения элементов множества 0 <= x <= 255
67
Ошибка ввода!
Введи значения элементов множества 0 <= x <= 255
67
3
91
2
5
Вывод множества
  2  3  5  67  91
Пример   2.   Программа   ввода   символьных   значений   множества     ‘m’,   вычисление   мощности   (количества
неодинаковых символов) множества и вывод его значения на экран дисплея.
110 Program V1L18P3; {Ввод символьных значений множества и вычисления его мощности}
Uses Crt;  {Вызов модуля работы с дисплеем и клавиатурой}
Var m :set of char;
    i:char;
    n:byte;
Label 10;
{}
begin
ClrScr;
WriteLn('   Введи строку на латинице не более 255');
WriteLn('   символов и поставь  в  конце   точку.');
m:=[];
while True do
begin
{Описание множества символов}
{Описание символьной переменной}
{Описание числовой переменной}
{Описание метки}
{Начальное пустое множество}
{Цикл ввода символов}
{Стереть экран}
Read(i);
if i='.' then GoTo 10;
m:=m+[i]
end;
{}
10: n:=0;
for i:='a' to 'z' do
{Ввод символов с клавиатуры}
{Условный переход на метку 10}
{Формирование множества символов}
{Начальное значение счетчика символов}
{Цикл просмотра символов}
if (i in m) then n:=n+1; {Определение принадлежности символа множеству и их количество}
Write('   Число различных букв в строке  ',n);
{}
ReadKey  {Задержка работы программы до нажатия любой клавиши}
end.
Результат работы программы
   Введи строку на латинице
   и поставь в конце точку.
programma.
   Число различных букв в строке  6
Урок 3.  Программирование алгоритмов с использованием множеств
Рассмотрим примеры программ с использованием множеств.
Пример   1.   Отсортировать   массив   целых     положительных   чисел   от   0   до   255   по   возрастанию,     Значения
элементов массива получить генерацией случайных чисел в диапазоне от 0 до 25. Элементы с одинаковыми значениями
исключить, оставив одно из них.
Для  решения  данной   задачи  формируем  множество  генерацией   случайных  целых  положительных   чисел.
Затем формируется одномерный массив целых положительных чисел путем проверки вхождения элемента множества
в указанный  диапазон.
{Вызов библиотечного модуля работы с дисплеем и клавиатурой}
Program V1L18P4; {Сортировка массива целых положительных чисел}
Uses Crt;
Var a:set of byte;
    b:array[0..255] of byte;
  n,x:integer; m,i:byte;
Label 10;
{}
begin
ClrScr;
{Стирание экрана}
10:WriteLn('Введи количество генерируемых чисел 0 <= n <= 255');
Read(n);
if n>255 then
begin
{Описание множества}
{Описание массива}
{Описание целых переменных}
{Описание метки}
{Ввод количества генерируемых чисел}
{Проверка на ошибку}
WriteLn('Ошибка ввода!');
GoTo 10;
{Безусловный переход на метку}
end;
{}
Randomize;
a:=[];
WriteLn('Значения сгенерированных случайных чисел');
for i:=1 to n do   {Цикл генерации случайных чисел}
{Установка генератора случайных чисел}
{Определение пустого множества}
111 Описание множеств. Операции над множествами.  Ввод и вывод элементов множества.  Программирование алгоритмов с использованием множеств
begin
x:=Random(25);
Write(x:4);
a:=a+[x]
end;
m:=0;
for x:=0 to 255 do
if (x in a) then
begin
b[m]:=x;
m:=m+1;
{Генерация случайного числа}
{Печать случайного числа}
{Формирование множества случайных чисел}
{Начальное значение счетчика}
{Цикл формирования одномерного массива}
{Проверка принадлежности элемента диапазону}
{Запись элемента множества в массив}
{Счетчик записи элемента множества в массив}
end;
WriteLn('Вывод отсортированного массива данных');
WriteLn('с  удаленными   равными    элементами');
for i:=0 to m1 do
Write(b[i]:4);
{}
ReadKey
end.
{Цикл печати массива данных}
{Печать значения массива}
{Задержка работы программы до нажатия любой клавиши}
Возможный результат работы программы
Введи количество генерируемых чисел  0 <= n <= 255
10
Значения сгенерированных случайных чисел
24  4  0 12 19 21  4  1 21  5
Вывод отсортированного массива данных
с  удаленными   равными    элементами
   0   1   4   5  12  19  21  24
Здесь следует заметить, что в результате генерации случайных чисел были получены  две пары  одинаковых
чисел  4 и  21.  При формировании одномерного массива  путем проверки вхождения числа в указанное множество,
числа были автоматически отсортированы по возрастанию,  а  равные числа были автоматически заменены одним.
Пример 2.  Найти  все простые числа в указанном диапазоне. Пояснение. Простым называется число, которое
не имеет  других делителей, кроме 1 и самого этого числа.
Для решения данной задачи используется алгоритм, который  известен под названием  “решено Эратосфена”.
Начиная с набора, состоящего  из  всех целых чисел в интервале от  2  до  n,  происходит проверка числа, входящего во
множество.  Из множества удаляются все числа кратные данному числу. Затем процесс повторяется со следующим
числом интервала.
{Вызов библиотечного модуля работы с дисплеем и клавиатурой}
Program V1L18P5; {Нахождение всех простых чисел в указанном диапазоне. Решето Эратосфена}
Uses Crt;
Var a:set of byte;
i,k,m,n:integer;
Label 10,20;
{}
begin
ClrScr;
10:WriteLn
('Введи минимальное значение диапазона  1 <= m <= 255');
Read(m);
if (m<1)or(m>255) then
begin
{Описание множества}
{Описание целых переменных}
{Описание меток}
{Стирание экрана}
{Ввод значения}
{Условие проверки на ошибку}
WriteLn('Ошибка ввода!');
GoTo 10;
{Безусловный переход на метку}
end;
{}
20:WriteLn('Введи максимальное значение диапазона 1 <= n <= 255');
Read(n);
if (n<1)or(n>255) then
begin
{Ввод значения}
{Условие проверки на ошибку}
WriteLn('Ошибка ввода!');
GoTo 20;
{Безусловный переход на метку}
end;
{}
if m>n then
112
{Условие проверки на ошибку} {Безусловный переход на метку}
begin
WriteLn('Ошибка ввода!');
GoTo 10;
end;
{}
a:=[m..n];
for k:=2 to n div 2 do
for i:=2 to n do
{Конструктор начального множества}
{Цикл формирования делителей}
{Цикл удаления элементов кратных}
{2, 3, 4 и т.д.}
if (i mod k=0) and (i<>k) then a:=a[i];
WriteLn('Простые числа в указанном диапазоне');
for i:=1 to n do   {Цикл печати оставшихся элементов}
if i in a then Write(i:4);
{Условие вхождения в множество}
{}
ReadKey
end.
Возможный результат работы программы
Введи минимальное значение диапазона  1 <= m <= 255
3
Введи максимальное значение диапазона 1 <= n <= 255
12
Простые числа в указанном диапазоне
   3   5   7  11
Пример  3 (задача  шутка).  Если  взять   то  общее,   что   есть  у  автомобиля   и мотоцикла,  от   колес  отнять
велосипед и все это объединить, то получится ли трактор и изменится ли при этом климат?
В   данной   задаче     по   заданному   условию   необходимо   написать  формулу  вычисления   результативного
множества.  Затем сравнить его с множествами символов в словах  ‘трактор’  и ‘климат’ и вывести на экран шуточные
сообщения о результатах сравнения.
{Вызов библиотечного модуля работы с дисплеем и клавиатурой}
Program  V1L18P6; {Вычисление результативного множества}
Uses Crt;
Var a,x,y1,y2,y3,y4,y5,y6 :set of char;
s :char;
Label 10;
{}
begin
ClrScr;
y1:=['а','в','т','о','м','о','б','и','л','ь'];
y2:=['м','о','т','о','ц','и','к','л'];
y3:=['в','е','л','о','с','и','п','е','д'];
y4:=['к','о','л','е','с','а'];
y5:=['т','р','а','к','т','о','р'];
y6:=['к','л','и','м','а','т'];
{Описание множеств}
{Описание символьной переменной}
{Описание метки}
{Стирание экрана}
{Конструкторы}
{исходных}
{множеств}
WriteLn('Исходные множества символов:');
WriteLn('   автомобиль');
WriteLn('   мотоцикл');
WriteLn('   велосипед');
WriteLn('   колеса');
WriteLn('   трактор');
WriteLn('   климат');
x:=(y1*y2)+(y4y3);
WriteLn('Результативное множество символов');
Write('   ');
for s:='а' to 'я' do
if s in x then Write(s);
WriteLn;
{}
if y5<=x then
WriteLn('Получится трактор,')
else WriteLn('Трактора не получилось,');
if y6<=x then
WriteLn('а климат изменился.')
else WriteLn('а климат не изменится.');
{}
ReadKey
{Определение результативного множества}
{Цикл печати результативного множества}
{Проверка вхождения символа во множество}
{Перевод строки}
{Альтернативные}
{условия проверки}
{множеств и печать}
{сообщений}
{по результату}
{Задержка работы программы до нажатия любой клавиши}
113 Описание множеств. Операции над множествами.  Ввод и вывод элементов множества.  Программирование алгоритмов с использованием множеств
end.
Результат работы программы
Исходные множества символов:
   автомобиль
   мотоцикл
   велосипед
   колеса
   трактор
   климат
Результативное множество символов
   аиклмот
Трактора не получилось,
а климат изменился.
Пример 4. Дан ребус:
МУХА
     +
МУХА

СЛОН
Найти все решения данного ребуса, если таковые есть.
Постановка задачи
Входные данные определяются программно путем формирования множеств цифр символов от 0 до 9 исходных
слов по условию задачи.
Выходные данные представить в виде суммы чисел слова МУХА и результата сложения СЛОН в формате:
Вывести на экран дисплея количество решений данного ребуса с сообщением: “Количество решений”.
<Число МУХА> + <Число МУХА> = <Число СЛОН>.
Алгоритм решения задачи
Так как в словах ребуса имеется восемь различных букв, каждой букве ставится в соответствие цифра от 0 до
9. Все цифры слов должны быть соответственно буквам различны. Образованные таким способом числа слова МУХА
должны в сумме дать число СЛОН,  в котором цифры должны быть различны.  Букве “М”  в слове МУХА может
соответствовать цифры от 1 до 4, а букве “А”  не может соответствовать ноль.
{Вызов библиотечного модуля работы с экраном дисплея и клавиатурой}
Program V1L18P7; {Решение ребуса}
Uses Crt;
Type mn=set of 0..9;
Var m,y,x,a:0..9;
a1,a2,a3,a4:0..9;
s1,s2:mn;
n1,n2,k:integer;
{}
Procedure Print(x,y:integer);
begin
Write(x:5);
Write('+');
Write(x:5);
Write('=');
WriteLn(y:5);
end;
    {Основной блок программы}
begin
ClrScr;
k:=0;
s1:=[];s2:=[];
for m:=1 to 4 do
begin
s1:=s1+[m];
for y:=0 to 9 do
if not(y in s1)then
begin
114
{Определение типа множества}
{Цифры числа МУХА}
{Цифры числа СЛОН}
{Множества слов МУХА, СЛОН}
{Числа МУХА,СЛОН и переменная счетчика кол. решений}
{Печать результата решения}
{Начальное значение счетчика}
{Начальные значения множеств}
{Цикл формирования множества M}
{Формирование множества цифр M  тысячи}
{Цикл формирования множества Y}
{Условие не вхождения цифры Y} s1:=s1+[y];
for x:=0 to 9 do

if not(x in s1)then
begin
s1:=s1+[x];
{}
for a:=1 to 9 do
if not(a in s1)then
begin
s1:=s1+[a];
n1:=1000*m+100*y+10*x+a;
n2:=2*n1;
a1:=n2 div 1000;
a2:=n2 div 100 mod 10;
a3:=n2 div 10 mod 10;
a4:=n2 mod 10;
s2:=[a1,a2,a3,a4];
{}
if (a1<>a2)and(a1<>a3)and(a1<>a4) then
{Формирование множества цифр Y  сотни}
{Цикл формирования множества X}
{Условие не вхождения цифры X}
{Формирование множества цифр X  десятки}
{Цикл формирования множества M}
{Условие не вхождения цифры в A}
{Формирование множества цифр A  единицы}
{Число для слова МУХА}
{Число для слова СЛОН}
{Выделение цифр СЛОНа кол. тысячь}
{Количество сотен}
{Количество десятков}
{Количество единиц}
{Множество цифр СЛОНа}
{Если все}
if (a2<>a3)and(a2<>a4) then             {цифры СЛОНа}
if a3<>a4 then                    {различны}
if (s1*s2=[]) then
begin
Print(n1,n2);
k:=k+1
end;
{Если пересечение 2х множеств нулевое,}
{тогда печать решения на экране дисплея}
{Процедура печати результата}
{Увеличение значения счетчика на 1}
s1:=s1[a];   {Удаление из множества A занесенной цифры  единицы}
end;
s1:=s1[x];
end;
s1:=s1[y];
end;
{Удаление из множества X занесенной цифры  десятки}
{Удаление из множества Y занесенной цифры  сотни}
s1:=s1[m];
end;
WriteLn('Количество решений',k:4);
{}
ReadKey      {Задержка до нажатия любой клавиши}
end.
{Удаление из множества M занесенной цифры  тысячи}
Фрагмент решения задачи
 4076+ 4076= 8152
 4135+ 4135= 8270
 4176+ 4176= 8352
 4351+ 4351= 8702
 4356+ 4356= 8712
 4513+ 4513= 9026
 4516+ 4516= 9032
 4518+ 4518= 9036
 4531+ 4531= 9062
 4536+ 4536= 9072
 4538+ 4538= 9076
 4586+ 4586= 9172
 4615+ 4615= 9230
 4635+ 4635= 9270
 4651+ 4651= 9302
 4685+ 4685= 9370
 4781+ 4781= 9562
 4815+ 4815= 9630
 4835+ 4835= 9670
 4851+ 4851= 9702
 4853+ 4853= 9706
 4856+ 4856= 9712
 Количество решений  77
1. Что понимается под множеством?
Контрольные вопросы и упражнения
115 Описание множеств. Операции над множествами.  Ввод и вывод элементов множества.  Программирование алгоритмов с использованием множеств
2. Какие  операции  над  множествами  существуют  в  математике и  TP 7.0?
3. Что такое пустое множество и как оно задается?
4. Как  в TP 7.0 описываются и задаются множества?
5. Как организовать ввод значений элементов множества с клавиатуры?
6. Как организовать вывод значений элементов множества на экран дисплея?
7. Написать программу  вычисления   следующих   выражений,   содержащих   множества: [1..4] * [3..5],  [1..4] +
[3..5],  [1..4] – [3..5].
8. Написать программу определения следующих логических выражений,  которые  дают  значения   True,   а какие
False:   [1, 2, 3] = [1..3],   [1, 2, 3] <= [1..3],  [0, 2, 3] >= [2, 3],  5 in  [0..3, 4..8].
9. Написать программу для подсчета количества гласных и согласных букв в заданной строке. Определить каких
букв больше.
10. Написать   программу   поиска  и  печати   в  порядке  убывания   всех     простых  чисел   из  указанного  диапазона
случайных целых чисел.
11. Написать программу игры для двух игроков, в которой из букв исходного слова игроки составляют новые
слова.  Побеждает  тот игрок, который составит большее количество слов.
12. Написать программу решения ребуса  ABC = AB + BC + CA.
13. Написать программу решения ребуса
ЛОБ
+
ТРИ

САМ
14. Написать программу решения ребуса
ТОЧК
   +
КРУГ

    КОНУС
15. Написать программу решения ребуса
VOLVO
    +
    FIAT

     MONOR
Для заметок, вопросов и ответов
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
116 ______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
117

file_name: Занятие 17ч1.doc

title: Множества


extracted_text:
Записи

        Занятие 18
1. Урок 1.  Определение  записи. Фиксированные записи.
2. Урок 2.  Ввод и вывод записей.
3. Урок 3.  Оператор присоединения. Вариантные записи.
4. Контрольные вопросы и упражнения.
Урок 1. Определение записи. Фиксированные записи
1.1. Определение записи.
1.2. Фиксированные записи.
1.1. Определение записи.
При решении на ЭВМ многих экономических и информационных задач,   происходит обработка   различных
документов,   которые   содержат   текстовые   и   цифровые   данные,   при   этом   возникает   необходимость  объединения
различного типа данных в  одну  группу. Для работы с группой данных различного типа в  TP  7.0 введено понятие
записи.
Запись – это структура данных, состоящая из фиксированного числа элементов различного типа.
Элементы различного типа в  записи называются полями. В одном поле данные имеют один и тот же тип, а
в  разных  полях могут иметь  разные  типы. Например,   ведомость учета товара на складе продукции может иметь
следующий вид.
№
Наименование
1
0
1 Монитор
2 Принтер лазерный
3 Сканер
Тип
2
17” Samsung 757MB
Canon LBP1120
HP Scan Jet 2300C
Цена
за шт. в дол.
3
229,00
244,00
74,00
Итого
      Таблица 1
Кол.
Сумма
шт.
в  дол.
4
10
20
10
40
2290,00
4880,00
740,00
7910,00
5
Каждая строка этой таблицы представляет собой запись с различными типами данных и состоит из  пяти
полей. Первое и второе поле имеют символьный тип, третье, четвертое и  пятое поле  числовой.
Практически  все базы данных экономической информации состоят из записей. Обработка такой информации
на ЭВМ осуществляется по необходимым полям записей, это сортировка, поиск  и выборка, с целью формирования
различных документов.
Запись в целом и ее отдельные элементы обозначаются именами.
Обращение к записи в  программе допускается лишь в операторе присваивания, т.е.
<Имя записи 1> := <Имя записи 2>;,
где записи имеют идентичную структуру.
Обращение к элементу записи  в программе выполняется с помощью  уточненного  (составного)  имени.
Уточненное имя записи содержит имя записи и имя поля и записывается в следующем виде:
<Имя записи> . <Имя поля>
Например,  для указанной выше таблицы, могут быть введены следующие обозначения:

 w
 names
 types
 price
 namber
 sum
 имя записи;
  имя первого поля  наименование продукции;
 имя второго поля  тип продукции;
 имя третьего поля  цена за единицу продукции;
 имя четвертого поля  количество;
 имя пятого поля  сумма.
Тогда,   например,     для   того   чтобы   явно   присвоить   третьему   полю   записи   необходимое   значение,   следует
написать  w.price := 229;.  Элемент записи используется в программе в том же качестве, что и обычная переменная.
Таким образом, элемент записи можно указывать как в левой части оператора присваивания, так и в выражениях.
Над элементом записи можно выполнять действия, допустимые для данных его типа.
В  TP 7.0  различают фиксированные (обычные) и  вариантные записи.
1.2. Фиксированные записи
Фиксированная запись состоит из одного или нескольких полей, для каждого из которых при объявлении
указывается имя и тип.
117 Описание множеств. Операции над множествами.  Ввод и вывод элементов множества.  Программирование алгоритмов с использованием множеств
Объявление фиксированной записи можно сделать в разделе типов Type.
Type <Имя типа записи> = record
<Имя поля 1> :<тип поля 1>;
<Имя поля 2> :<тип поля 2>;
…
<Имя поля N> :<тип поля N>
end;
Var <Имя записи> :<Имя типа записи>;
Где   служебное   слово  record  (запись)     используется   как  указатель  типа   и   в   качестве  открывающей
операторной скобки,  а  end  закрывающей операторной скобки полей записи.
Например, для приведенной выше таблицы, записи могут быть объявлены в   разделе описания переменных
программы в следующем виде.
Type produce=record
{Имя типа записи}
names  :string[20]; {Наименование продукции 20 симв.}
types  :string[35]; {Тип продукции 35 символов}
{Цена за единицу продукции}
price  :longint;
namber :longint;
{Количество продукции}
{Сумма}
sum    :longint
end;
Var w: produce;
{Имя записи с объявленным типом}
Здесь сначала указан тип записи с именем  produce (продукт), а затем определено имя записи   w,  указанного
типа записи.
Или в разделе переменных Var.
Var <Имя записи> :record
<Имя поля 1> :<тип поля 1>;
<Имя поля 2> :<тип поля 2>;
…
<Имя поля N>:<тип поля N>
end;
например:
Var   w :record
{Имя записи}
names :string[20];  {Наименование продукции 20 симв.}
types :string[35];
price :longint;
namber:longint;
sum :longint
{Тип продукции 35 символов}
{Цена за единицу продукции}
{Количество}
{Сумма}
end;
Здесь указаны имя записи, имена полей и их типы.
Урок 2.  Ввод и вывод записей
2.1. Организация ввода записей с клавиатуры в ОЗУ компьютера.
2.2. Вывод записей из ОЗУ компьютера на экран дисплея.
2.1. Организация ввода записей с клавиатуры в ОЗУ компьютера
Программирование   ввода   одной   записи   с   клавиатуры   в   ОЗУ   компьютера,   ничем  не   отличается  от
программирования ввода значений каких либо переменных. Ввиду того, что запись может состоять из полей разных
типов, полезно  организовать  интерфейс, т. е. систему    подсказок. Для программирования ввода  значений  полей
записи необходимо пользоваться оператором  ReadLn.  В качестве примера, приведена программа ввода с клавиатуры
строки ведомости учета товара на складе продукции   (см. таблицу 1). Операторы ввода значений полей  выделены
курсивом.
Program V1L19P1; {Ввод одной записи в ОЗУ компьютера}
Uses Crt;
 {Вызов библиотечного модуля работы с дисплеем и клавиатурой}
118 Var w :record
{Описание записи}
names :string[20];   {Описание строковых переменных объявлено максимально 20 символов}
types :string[35];
price,namber,sum :longint
{Описание целых переменных}
end;
{}
begin
ClrScr;
WriteLn('Введи запись:');
Write('Наименование');
GoToXY(21,2);
{Стирание экрана}
{Позиция курсора}
ReadLn(w.names);
{Ввод наименования товара}
{}
WriteLn('Тип');
GoToXY(21,3);
{Позиция курсора}
ReadLn(w.types);
{Ввод типа товара}
{}
WriteLn('Цена');
GoToXY(21,4);
{Позиция курсора}
ReadLn(w.price);
{Ввод цены товара}
{}
WriteLn('Количество');
GoToXY(21,5);
{Позиция курсора}
ReadLn(w.namber);
{Ввод количества товара}
{Перевод строки}
WriteLn;
{}
w.sum:=w.namber*w.price;   {Вычисление суммы}
{}
WriteLn('Запись введена');
WriteLn('Наименование        ',w.names);
WriteLn('Тип                 ',w.types);
WriteLn('Цена                ',w.price);
WriteLn('Количество          ',w.namber);
WriteLn('Сумма               ',w.sum);
{}
ReadKey    {Задержка до нажатия любой клавиши}
end.
Возможный вариант работы программы
Введи запись:
Наименование
Тип
Цена
Количество
Запись введена
Наименование
Тип
Цена
Количество
Сумма
Монитор
15” Samtron 56E
132
12
Монитор
15” Samtron 56E
132
12
1584
Для программирования ввода в ОЗУ  компьютера  группы  записей  с клавиатуры,  потребуется  организация
циклической  операции ввода данных полей записи. В приведенной ниже программе такая операция организована с
использованием  цикла  с предусловием   while  …  do. Цикл ввода реквизитов записей      прекращается  при вводе
символа  “0” (ноль).
Program V1L19P2; {Ввод группы записей в ОЗУ компьютера}
Uses Crt;
Var w :array[1..10] of record
{Вызов библиотечного модуля работы с дисплеем и клавиатурой}
{Объявление массива записей}
names,types :string[30];
price,namber,sum :longint;
{Объявление строковых переменных записи}
{Объявление целых переменных записи}
end;
i,j :integer;
{Объявление целых переменных}
119 Описание множеств. Операции над множествами.  Ввод и вывод элементов множества.  Программирование алгоритмов с использованием множеств
Label 10;
{}
begin
ClrScr;
i:=0;
while True do
begin
{Объявление метки}
{Стирание экрана}
{Начальное значение счетчика записей}
{Цикл ввода записей}
{Начало цикла ввода записей}
{Стирание экрана}
ClrScr;
WriteLn('Введи реквизиты, заканчивая ввод ревизита кл. "Enter".');
WriteLn('Закончи   работу   с   программой      вводом     "0".');
i:=i+1;
w[i].names:=''; w[i].types:='';
w[i].price:=0;  w[i].namber:=0;
w[i].sum:=0;
{}
Write('Наименование');
GoToXY(15,3);
ReadLn(w[i].names);
if (w[i].names='0') then
begin
{Счетчик записей}{}
{Обнуление}
{реквизитов}
{записи}
{Позиция курсора}
{Ввод наименования товара}
{Условие окончания цикла ввода}
WriteLn('Ввод закончен');
GoTo 10;
{Безусловный переход на метку}
{Позиция курсора}
{Ввод цены товара}
{Позиция курсора}
{Ввод типа товара}
end;
WriteLn('Тип');
GoToXY(15,4);
ReadLn(w[i].types);
WriteLn('Цена');
GoToXY(15,5);
ReadLn(w[i].price);
WriteLn('Количество');
GoToXY(15,6);
ReadLn(w[i].namber);
WriteLn;
WriteLn('Введи "0" для окончания работы с программой');
WriteLn;
{}
w[i].sum:=w[i].namber*w[i].price;
end;           {Конец цикла ввода записей}
{}
10:ClrScr;                       {Стирание экрана}
WriteLn('Всего введено строк.');
for j:=1 to i1 do               {Цикл печати записей}
begin
{Перевод строки}
{Позиция курсора}
{Ввод количества товара}
{Перевод строки}
{Вычисление суммы}
Write(j,'.  ',w[j].names);
GoToXY(25,j+1);
Write(w[j].types);
GoToXY(40,j+1);
Write(w[j].price:8,w[j].namber:8,w[j].sum:10);
WriteLn    {Перевод строки}
{Печать наименования}
{Позиция курсора}
{Печать типа}
{Позиция курсора}
{Печать цены, количества, суммы}
end;
{}
ReadKey
end.
{Задержка до нажатия любой клавиши}
Возможный вариант работы программы
Введи реквизиты, заканчивая ввод реквизита кл. “Enter”.
Закончи     работу   с   программой     вводом     “0”.
Наименование
Тип
Цена
Количество
Монитор
15” Samtron 56E
132
12
Аналогично  вводятся  с клавиатуры  остальные необходимые записи.  Работа с программой  заканчивается
вводом значения "0" (ноль).
120 Введи реквизиты, заканчивая ввод реквизита кл. “Enter”.
Закончи     работу   с   программой     вводом     “0”.
Наименование
0
Далее, на экране дисплея  индицируются введенные строки.
Всего введено строк.
1. Монитор
2. Принтер лазерный   Canon LBP1120
3. Сканер
  15” Samtron 56E
  HP Scan Jet 230
132
244
 74
12
20
12
1584
4880
 880
Изучая   текст   программы,   следует   обратить   внимание   на   выделенный   курсивом   фрагмент   обнуления
реквизитов записи.  При написании и отладке данной программы, отсутствие этого фрагмента вызывало ошибку.
2.2. Вывод записей из ОЗУ компьютера на экран дисплея
Вывод полей записи из ОЗУ компьютера на экран дисплея в программе организован с помощью оператора
WriteLn. Для вывода  нескольких записей из ОЗУ компьютера на экран дисплея организуется циклическая операция со
счетчиком. Количество введенных данных подсчитывается при вводе записей   за исключением последней записи со
значением  “0” (см. программу V1L19P2).
Урок 3.  Оператор присоединения. Вариантные записи
3.1. Оператор присоединения.
3.2. Вариантные записи.
Как было показано выше,  обращение к полям записи происходит с помощью уточненного имени. В TP 7.0
существует еще один способ обращения к полям записи –  с помощью оператора присоединения  with.
3.1.  Оператор присоединения
Оператор   присоединения  with  позволяет  упростить   обращение  к   полю   записи.   При   этом   имя   записи
выносится в заголовок оператора присоединения, а в блоке оператора используются только имена полей.
Оператор присоединения  with имеет следующий формат:
with <Имя записи> do
begin
<Имя поля 1> : <Тип поля 1>;
<Имя поля 2> : <Тип поля 2>;
…
<Имя поля N> : <Тип поля N>
end;
В качестве примера рассмотрим предыдущую программу, откорректированную с использованием оператора
присоединения with.
Program V1L19P3; {Ввод записей с использованием оператора присоединения}
Uses Crt;  {Вызов библиотечного модуля работы с дисплеем и клавиатурой}
Var w :array[1..10] of record
names,types :string[20];
price,namber,sum :longint;
{Объявление массива записей}
{Объявление строковых полей записи}
{Объявление числовых полей записи}
end;
i,j :integer;
Label 10;
{}
begin
ClrScr;
i:=0;
{}
while True do

begin
{Конец объявления записи}
{Объявление числовых переменных}
{Объявление метки}
{Стирание экрана дисплея}
{Начальное значение счетчика записей}
{Цикл формирования записей}
ClrScr;
WriteLn('Введи реквизиты, заканчивая ввод ревизита кл. "Enter".');
WriteLn('Закончи   работу   с   программой      вводом     "0".');
{Начало цикла формирования записей}
{Стирание экрана дисплея}
121 Описание множеств. Операции над множествами.  Ввод и вывод элементов множества.  Программирование алгоритмов с использованием множеств
i:=i+1;
with w[i] do
begin
{Счетчик количества записей}
{Оператор присоединения}
names:=''; types:='';             {Обнуление реквизитов}
price:=0; namber:=0; w[i].sum:=0  {полей записи}
end;                         {Конец оператора присоединения}
{}
with w[i] do
begin
{Оператор присоединения}
Write('Наименование');
GoToXY(15,3);                {Позиционирование курсора}
ReadLn(names);               {Ввод наименования продукции}
if names='0' then GoTo 10;   {Условие конца цикла ввода}
WriteLn('Тип');
GoToXY(15,4);                {Позиционирование курсора}
ReadLn(types);               {Ввод типа продукции}
WriteLn('Цена');
GoToXY(15,5);                {Позиционирование курсора}
ReadLn(price);               {Ввод цены продукции}
WriteLn('Количество');
GoToXY(15,6);                {Позиционирование курсора}
ReadLn(namber);              {Ввод количества продукции}
{}
sum:=namber*price;           {Вычисление суммы}
end                          {Конец оператора присоединения}
end;                         {Конец цикла ввода строк}
10:ClrScr;
WriteLn('Всего введено строк');
for j:=1 to i1 do
{Цикл печати введенных строк}
with w[j] do                   {Оператор присоединения}
begin
Write(j,'  ',names);
GoToXY(20,j+1);
Write(types);
GoToXY(35,j+1);
Write(price:8,namber:8,sum:10);   {Печать числовых реквизитов}
WriteLn                           {Перевод строки}
{Печать номера позиции и наименования}
{Позиционирование курсора}
{Печать типа}
{Позиционирование курсора}
end;                          {Конец оператора присоединения}
{}
ReadKey
end.
3.2.  Вариантные записи
{Задержка до нажатия любой клавиши}
В   приведенных   выше   примерах   (см.   таблицу   1   и   программы)   показана   запись   документа,   имеющего
фиксированную  (простую)   структуру,   которая   для  данной   записи  неизменна.   Существуют  документы,   в  которых
некоторая группа полей записи  меняется  в процессе их ведения, т.е. имеются другие варианты полей записей.
Записи, которые состоят из фиксированной и вариантной части,  называются вариантными записями.
В некоторых случаях записи могут не иметь фиксированной части.
Формат описания вариантной записи следующий:
Var <Имя записи> record
<Поле 1> : <Тип поля 1>;
<Поле 2> : <Тип поля 2>;
…
<Поле N> : <Тип поля N>;
{}
case <Указатель> : < Тип указателя > of
k1: (<Поле 1 k1> : <Тип поля 1 k1>;
<Поле 2 k1> : <Тип поля 2 k1>;
<Поле N k1> : <Тип поля N k1>);

         …

{Фиксированная}
{часть записи}
{Вариантная}
{часть записи}
122 {}
k2: (<Поле 1 k2> : <Тип поля 1 k2>;
<Поле 2 k2> : <Тип поля 2 k2>;
<Поле N k2> : <Тип поля N k2>);

         …

……………………………………………
kN: (<Поле 1 kN> : <Тип поля 1 kN>;
<Поле 2 kN> : <Тип поля 2 kN>;
<Поле N kN> : <Тип поля N kN>);

         …

end;,

где  k1, k2, …, kN  указатели вариантных полей записи.
Вариантная  часть  записи  формируется  с  помощью  оператора  case … of.        При   этом  использование
оператора  альтернативы   else   не допускается. Константы указателя должны быть одного типа, что и  переменная
указателя. Если список элементов, соответствующий какой либо константе, является пустым, то следует написать,
например, k1 : ();.  К элементам вариантной части  можно обращаться с помощью составных имен или использовать
оператор присоединения.
  В качестве примера приведем запись, учета кадров высшего учебного заведения. Программа предназначена
для ввода учетных данных студентов и сотрудников (работников) учебного заведения.
Program V1L19P4; {Вариантная запись}
Uses Crt;
Var z:array[1..100] of record
fio:string[100];
case p:char of
'с':
(ngr:string[20];
pns:byte);
{}
'р':
(nkf:string[40];
stg:byte);
end;
i,j:byte;
{}
begin
ClrScr;
i:=0;
while True do
begin
{Ф.И.О. студента или работающего}
{Варианты записей}
{Метка варианта ”студент”}
{Наименование группы студента}
{Порядковый номер студента в группе}
{Метка варианта ”работник”}
{Наименование кафедры работающего}
{Стаж работы работающего}
{Конец вариантов выбора записей}
{Счетчики циклов}
{Начало основного блока программы}
{Стирание экрана}
{Начальное значение счетчика}
{Цикл ввода записей}
{Начало группы операторов цикла}
{Начальное значение счетчика итераций}
ClrScr;
i:=i+1;
Write('Введи Ф.И.О.:               ');
ReadLn(z[i].fio);
if z[i].fio='.' then Break;  {Условие окончания ввода}
Write('Введи признак:              ');
ReadLn(z[i].p);
case z[i].p of
'с':
begin
{Выбор варианта ввода по указ. признаку}
{Метка варианта ”студент”}
{Начало группы операторов варианта}
Write('Введи обозначение   группы: ');
ReadLn(z[i].ngr);
Write('Введи порядковый в  списке: ');
ReadLn(z[i].pns)
end;
'р':
begin
{Конец группы операторов варианта}
{Начало группы операторов варианта}
{Метка варианта ”работник”}
Write('Введи наименование кафедры: ');
ReadLn(z[i].nkf);
Write('Введи стаж работы:          ');
123 Описание множеств. Операции над множествами.  Ввод и вывод элементов множества.  Программирование алгоритмов с использованием множеств
ReadLn(z[i].stg)
end
end
{Конец группы операторов варианта}
{Конец выбора варианта по указ. признаку}
end;
{}
ClrScr;
for j:=1 to i1 do {Цикл вывода записей}
begin
{Начало гр. операторов цикла}
{Конец цикла ввода записей}
WriteLn(j:3,'. Ф.И.О.                   ',z[j].fio);
if z[j].p='с' then {Условие "студент"}
begin
{Начало гр. операторов}
WriteLn('     Статус:                  студент');
WriteLn('     Группа:                  ',z[j].ngr);
WriteLn('     № п.п. в списке группы:  ',z[j].pns:2);
end;
{Конец гр. операторов}
if z[j].p='р' then {Условие "работник"}
begin
end
WriteLn('     Статус:                  работник');
WriteLn('     Кафедра:                 ',z[j].nkf);
WriteLn('     Стаж работы:             ',z[j].stg:2);
end;
{}
ReadKey
end.
{Конец цикла вывода записей}
{Задержка до нажатия любой клавиши}
{Конец программы}
Возможный вариант работы программы
Введи Ф.И.О.:
Введи признак:
Введи обозначение группы:
Введи порядковый номер в группе: 12
Петров Василий Иванович
с
пи100
Введи Ф.И.О.:
Введи признак:
Введи наименование кафедры:
Введи стаж работы:
Горюхин Эдуард Петрович
р
зки
23
Введи Ф.И.О.:
.
Поле Ф.И.О. является фиксированным. При вводе признака   “с” – студент или “р.” – работник, выбирается
один   из   вариантов   ввода   следующих   полей.   На   экран   дисплея   последовательно   выводятся   подсказки,   которые
помогают оператору в работе. Цикл ввода  информации  закачивается точкой. После чего на экран выводится список
введенных записей.
1. Ф.И.О.:
   Статус:
   Группа:
   №  п.п. студента в группе:
2. Ф.И.О.:
   Статус:
   Кафедра:
   Стаж работы:
Петров Василий Иванович
студент
пи100
12
Горюхин Эдуард Петрович
работник
зки
23
Контрольные вопросы и упражнения
1. Что понимается под записью в языке Pascal?
2. Приведите пример записи?
3. Как объявляются записи?
4. Какие операции допустимы над элементами записи?
5. Для чего предназначено уточненное имя?
6. Как организовать ввод и вывод данных записи?
7. Как записывается уточненное имя?
8. Чем отличается запись от массива?
9. Можно ли использовать в записи элементы одного типа?
124 10. Какие операции допустимы над записью в целом?
11. Каково назначение оператора присоединения?
12.
13. Написать программу формирования списка учащихся первого года обучения на 10 человек некого учебного.
Для каждого учащегося указать:

Ф.И.О.;
дату рождения;
наименование группы;
год поступления в учебное заведение;
среднюю оценку за первый год обучения.
Вывести на экран дисплея списки учащихся, имеющих высокий, средний  и низкий балл за год обучения.
Для заметок, вопросов и ответов
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
125

file_name: Занятие 18ч1.doc

intro:
Занятие строится таким образом, что после прослушивания теоретического материала (10 –15 мин.), учащимся предлагается практическое задание, которое выполняется ими за 20 - 30 мин. и корректируется в процессе изучения материала в более сложную задачу по изучаемой теме.
Автор сознательно избегал сложных примеров, будучи убежденными, в том, что гораздо важнее для учащихся понимание алгоритмов предлагаемых  задач,  приобретение навыков  разработки  алгоритмов, их программирования и выполнения на компьютере в течение одного занятия. Такой подход к изучению языка программирования позволяет сосредоточить внимание на самом процессе программирования, который в данном случае более важен для изучения языка, чем  решение сложной задачи, наверняка трудной большинству учащихся. Такие задачи, по мнению авторов, неоправданно занимают большое количество учебного времени, превращая учителя из инициатора процесса обучения  в диктатора.

информатика

group: Дисциплины

title: Записи


extracted_text:
Файлы
    Занятие 19
1. Урок 1.  Определение  файла. Внутренние и внешние файлы.
2. Урок 2.  Стандартные процедуры работы с типизированными файлами.
3. Урок 3.  Текстовые и нетипизированные файлы.
4. Контрольные вопросы и упражнения.
Урок 1. Определение файла.  Внутренние и внешние файлы
1.1. Определение файла.
1.2. Внутренние и внешние файлы.
1.3. Описание внешних файлов в Pascalпрограмме.
1.4. Классификация файлов.
1.1. Определение файла
Файлом называют область памяти компьютера, содержащую набор данных одного и того же простого или
сложного  типа. При этом число его  элементов, которое называется длиной файла не  фиксировано. Этим файлы
отличаются  от   массивов   данных.   Файл,   не  содержащий   ни  одного   элемента,   называется  пустым,   и  его   длина
равняется  нулю.    По определению  файлом может быть  сама  программа,  исходные данные  и  результаты    ее
выполнения.
1.2. Внутренние и внешние файлы
По отношению к программе файлы могут быть внутренними и внешними. Внутренними файлами являются
те файлы, которые создаются, используются и существуют во время работы программы.  Эти файлы размещаются в
ОЗУ  компьютера и с каждым запуском  программы  формируются  вновь.  Примером  таких  файлов  могут служить
стандартные файлы ввода – исходные данные и стандартные файлы вывода – результаты выполнения программы.
Файлы, которые существуют  вне  программы, называют  внешними  файлами. Это  поименованная область
внешней памяти компьютера. Эти файлы формируются и сохраняются на внешних носителях памяти компьютера. В
качестве носителей внешних файлов используются магнитные ленты, магнитные и лазерные диски. Внешние файлы
могут многократно использоваться, корректироваться, дополняться или уничтожаться по мере  необходимости.
Внешние файлы должны быть определены в разделе описаний Pascalпрограммы.
1.3. Описание внешних файлов в Pascalпрограмме
Описание файлов имеет следующий вид:
Type  <Имя типа>=file of  <Базовый тип>;
Var  <Имя файла>:<Имя типа>;
где, <Базовый тип>  стандартный (integer, real, boolean, char) или сложный (array, set, record) тип  данных.
Например, для текстового файла  FileText  описание имеет вид:
или
Type Text = file of char;
Var FileText : Text;
Var <Имя файла> : file of <Базовый тип>;
Например, для целочисленного файла данных  FileInt имеем:
Для стандартных (простых) и сложных типов данных может иметь место, следующее описание:
Var  FileInt : file of integer;
{Тип – множество целых чисел от 1 до 10}
{Тип  запись}
{Поля записи – целые числа}
{Конец описания записи}
Type
Mas=array[1..10] of real; {Тип – массив действительных чисел}
Mno=set of 1..10;
Zap=record
Re,Im :integer
end;
Var
F1 :file of integer;{Элементы файла – целые числа}
{Элементы файла – действительные числа}
F2 :file of real;
F3 :file of char;
{Элементы файла  символы}
F4 :file of Mas;    {Элементы файла – массивы}
F5 :file of Mno;
F6 :file of Zap;
{Элементы файла – множества}
{Элементы файла – записи}
125 Описание множеств. Операции над множествами.  Ввод и вывод элементов множества.  Программирование алгоритмов с использованием множеств
1.4. Классификация файлов

Файлы в TP 7.0 классифицируются по двум признакам:

по типу (логической структуре);
по методу доступа к элементам файла.
В таблице 1 показаны типы файлов и методы доступа к ним.
Тип (логическая структура)
Метод доступа

Файлы
      Таблица  1
Текстовые
Типизированные
Нетипизированные
Типизированные
Нетипизированные
Последовательный
Прямой
Текстовые файлы являются особым типом файлов, которые содержат некоторый текст, состоящий из  букв
алфавита, цифр и  специальных символов. Доступ к текстовым файлам может быть только последовательным.
Типизированные   файлы  –   файлы   одного   и   того   же  стандартного  (простого)   или  сложного  типа.
Типизированные   файлы   допускают  последовательный  и  прямой  доступ.   Работая   с   прямым   доступом,   следует
помнить, что элементы в файле нумеруются, начиная с нуля.
Нетипизированные  файловые   переменные   предназначены   для  низкоуровневой  работы   с   файлами.   С   их
помощью можно обратиться к файлу любого типа и логической структуры. Не типизированный файл не имеет жестко
установленной единицы чтениязаписи, как типизированные файлы. В этих файлах за одно обращение считывается или
записывается число байт приблизительно равное величине  буфера  вводавывода, что увеличивает скорость работы с
файлами.   В   качестве   буфера   вводавывода   не   типизированных   файлов   может   выступать   любая   переменная.   Не
типизируемые файлы допускают последовательный и прямой доступ.
Урок 2.  Стандартные процедуры работы с типизированными файлами
2.1. Общие средства работы с каталогами модуля System.
2.2. Средства работы с файлами  назначение, открытие и закрытие.
2.3. Переименование и удаление файлов.
2.1. Общие  средства  работы  с  каталогами модуля System
Процедуры и функции модуля System вызываются по умолчанию (т.е. без команды   Uses – использование),
доступны для вызова всегда и не требуют подключения дополнительных модулей.
2.1.1. Процедуры и функции работы  с каталогами
Для работы с каталогами в модуль  System  включены процедуры, которые  определяют  носители  внешней
памяти компьютера.  Создают  на них каталоги и подкаталоги.  Показывают  на экране дисплея текущий  носитель
внешней памяти, каталоги, подкаталоги и файлы. Осуществляют переходы в каталоги, подкаталоги и файлы внешних
носителей памяти компьютера. Переименовывают или удаляют их по необходимости.
ChDir – процедура, выполняет установку или смену каталога, подкаталогов и имеет следующий формат:
ChDir(‘<Носитель>:\<Каталог>\<Подкаталог 1>\ …\ <Подкаталог N>’);
где: <Носитель>   логическое имя внешнего носителя памяти компьютера;
<Каталог>,  <Подкаталог> … – логические  имена  каталога  и   подкаталога  и т.д. на указанном внешнем носителе
памяти. В формате:
ChDir(‘<Каталог>\<Подкаталог 1>\ …\ <Подкаталог N>’);
 осуществляется переход в указанный каталог и подкаталог.
MkDir   процедура, которая создает каталог и подкаталоги на установленном процедурой   ChDir  носителе
внешней памяти компьютера, имеет следующий формат:
MkDir(‘<Каталог>\<Подкаталог 1>\ …\ <Подкаталог N>’);
где, <Каталог>,  <Подкаталог> … – логические имена каталога, подкаталога  и т.д. на указанном внешнем носителе
памяти компьютера.
При попытке создания каталога с логическим именем и адресом,  который уже существует, возникает ошибка:
Error 5: File access denied.
126 Для  устранения  этой  ошибки,  следует  назначить  для  создаваемого  каталога  другое  логическое  имя  или  удалить
содержимое старого каталога и сам каталог.
GetDir  процедура, которая возвращает текущий каталог на указанном внешнем носителе памяти компьютера
имеет следующий формат:
GetDir(<Код дисковода>,<Строковая переменная>);
где, <Код дисковода>  целое число, определяющее логическое имя дисковода: 0  текущий дисковод,  1  дисковод A,
2 – дисковод B;
<Строковая   переменная>      переменная,   в   которую   возвращается   значение   текущего   каталога,   заданного   кодом
дисковода.
RmDir  процедура удаления пустого подкаталога или каталога имеет следующий формат:
RmDir('<Имя каталога (подкаталога)>');
где, <Имя каталога (подкаталога)>  имя каталога (подкаталога) или путь к каталогу (подкаталогу). Если путь не
указан или не существует, то происходит ошибка вводавывода.
Ниже, в качестве примера, приведена программа, которая показывает приемы работы с каталогами. Жирным
курсивом указаны процедуры работы с каталогами.
Program V1L20P1; {Работа с каталогами}
Uses Crt;
Var s :string; k :char;
{}
begin
ClrScr;
WriteLn('Удали каталог, созданный программой ранее, вводом символа "d".');
WriteLn('Если  каталога  нет,  то   введи с клавиатуры любой символ.');
ReadLn(k);
ChDir('e:\');
if k='d' then RmDir('myfile');
MkDir('myfile');
ChDir('myfile');
GetDir(0,s);
WriteLn('Определен текущий диск и создан каталог: ',s);
{}
ReadKey
end.
{Ввод символа с клавиатуры}
{Создать каталог}
{Удаление ранее созданного этой программой каталога}
{Перейти в каталог}
{Перейти в каталог}
{Показать текущий диск и каталог}
При повторном запуске программы, следует удалить созданный ранее каталог или указать новое имя каталога.
В противном случае возникает ошибка:
Error 5: File access denied.
2.2. Средства работы с файлами  назначение, открытие и закрытие
Для работы  с какимлибо физическим  файлом,  находящимся  на устройстве внешней  памяти  компьютера,
необходимо первоначально  связать  его с  файловой переменной  (логическим файлом), с помощью которой будет
осуществлен   доступ   к   этому  физическому  файлу.   Связывание   логического   и   физического   файлов   выполняется
процедурой Assign.
   Assign  – процедура  назначения  (связывания) файловой переменной с файлом на внешнем носителе имеет
следующий формат:
Assign (<Имя файловой переменной>, '<Местонахождение файла>');
где <Местонахождение файла>  указание пути к файлу, находящемуся на устройстве внешней памяти компьютера.
После   выполнения   процедуры   назначения,   все   действия   над   файловой   переменной   будут  эквивалентны
действиям  над файлом.
Например,   для   работы   с   целочисленным   файлом    MyFile  .  dat,   который   находится   на   жестком   диске   с
логическим именем  “d”, в каталоге “Vvv”, необходимо записать назначение:
Assign (Fn,’d:\Vvv\MyFile.dat’);
Файловую переменную Fn необходимо определить  в блоке описания переменных Pascalпрограммы как:
Var Fn :file of integer;
После проведения назначения необходимо открыть файл для выполнения чтения данных из внешнего файла
в   память   компьютера   или  записи  данных   из   памяти   компьютера   во   внешний   файл.   Эти   операции   выполняются
процедурами  Reset  и  Rewrite.
127 Описание множеств. Операции над множествами.  Ввод и вывод элементов множества.  Программирование алгоритмов с использованием множеств
Reset   процедура открытия файла для  чтения  с внешнего носителя в  ОЗУ  компьютера имеет следующий
формат:
Reset(<Имя файловой переменной>);
при этом  указатель  файла устанавливается на  первый  элемент файла.  Нумерация  элементов файла начинается с
нуля.
Типизированный файл будет открыт для чтения при последовательном и прямом доступе.
Если физический файл с указанным именем отсутствует, то возникает ошибка:
Error 2: File not found
Read  процедура чтения одного элемента файла, определенного файловой переменной,  в некую переменную
имеет следующий формат:

Read(<Имя файловой переменной>,<Переменная 1, …, Переменная N>);
Чтение элементов файла начинается с элемента, на который  указывает  текущий указатель и продолжается
пока не найден конец файла.
Rewrite     процедура   открывает   файл   для  записи  данных   из  ОЗУ  компьютера   на  внешний   носитель,
например, на магнитный диск и имеет следующий формат:
Rewrite(<Имя файловой переменной>);
Процедура  создает  новый  физический  файл,  имя  которого  связано  с  файловой переменной.  Если такой
физический файл уже существует, то он удаляется, а на его месте создается новый пустой файл.
Write  процедура записи некоторого значения (значений) в файл, определенный файловой переменной, имеет
следующий формат:
Write(<Имя файловой переменной>,<Переменная 1, …, Переменная N>);
Запись должна быть закончена установкой признака конца файла, которая выполняется процедурой Close.
Close  процедура закрытия файла при завершении работы с ним имеет следующий формат:
Close(<Имя файловой переменной>);
Процедура   закрывает   файл,   при   этом  связь  файловой   переменной   с   именем   файла   установленная   ранее
процедурой   Assign   сохраняется. Функция процедуры выполняется автоматически для всех открытых файлов при
нормальном   завершении   программы.   Поскольку  связь  файла   с   файловой   переменной  сохраняется,   файл   можно
повторно открыть для записи или чтения без дополнительного использования процедуры Assign.
По структуре построения файлов  число  его элементов не задается, поэтому для определения  конца  файла
существует функция такого определения  Eof .
Eof  функция определения конца файла имеет следующий формат:
Когда достигается конец файла, функция принимает значение   True  (Истина), в противном случае –  False
Eof(<Имя файловой переменной>);
(Ложь).
Seek – процедура прямого доступа к элементу файла. Процедура перемещает указатель к элементу файла,
указанному в виде номера имеет следующий формат:
Seek(<Имя файловой переменной>,<Номер элемента в файле>);
Нумерация элементов файла начинается с нуля.
Rename  –   процедура   переименования   файла   присваивает  внешнему  файлу,   связанному   с   файловой
переменной новое имя. Процедура имеет следующий формат:
Rename(<Имя файловой переменной>,<Новое имя файла>);
Erase – процедура удаления внешнего файла, который связан с файловой переменной.
Erase(<Имя файловой переменной>);
128 Приведенная в качестве примера программа демонстрирует работу, изложенных выше процедур и функций.
Программа    создает  на  диске   с  логическим  именем     “e”   в  каталоге   “vvv”   в  подкаталоге  "ppvv"  файл    десять
случайных  целых  чисел   с  именем   “myfile.dat”.   Затем  читает  данные   с  диска   и  выводит  их  на   экран  дисплея.
Словесный алгоритм данной программы следующий:
1. Определить имя и тип файловой переменной (Var).
2. Определить  внешний носитель (диск) и местонахождение файла на нем (путь к файлу).
3. Связать имя файловой переменной с именем файла на внешнем носителе памяти компьютера (Assign).
4. Открыть файл для записи (Rewrite).
5.
6.
7. Открыть файл для чтения (Reset).
8. Читать  файл в ОЗУ компьютера (Read) до обнаружения конца файла (Eof) и печатать значения элементов
Записать данные в файл (Write).
Закрыть файл (Close).
файла на экране дисплея (Write).
Закрыть файл (Close).
9.
Program V1L20P2; {Запись данных в файл и их чтение}
Uses Crt;
Var  F1 :file of integer;
a,i,j :integer;
p:string[25];
{}
begin
ClrScr;
Randomize;
WriteLn('Запись в файл');
{Описание файловой переменной}
{Описание целых переменных}
{Описание строковой переменной}
{Инициализация (установка) генератора случ. чисел}
p:=’e:\vvv\ppvv\myfile.dat’;
Assign(F1,p);
Rewrite(F1);

{Определение имени файла и его места}
{Связь имени файловой переменной F1 в памяти компьютера с}
{именем файла myfile.dat на диске}
{Открывает новый файл для записи на диске это myfile}
for i:=1 to 10 do    {Циклическая операция}
begin
a:=Random(50);
Write(F1,a);
Write(a:4);
{Генерация случайного целого числа}
{Запись значения в файл}
{Закрытие файла}
end;
Close(F1);
WriteLn;
WriteLn('Чтение из файла');
Reset(F1);
{}
i:=1;
while not Eof(F1) do {Читать данные из файла, пока не будет обнаружен признак конца файла}
begin
{Начальное значения счетчика итераций}

Read(F1,i);
Write(i:4);
i:=i+1

{Чтение одного элемента файла в переменную F1}
{Печать элемента файла}
{Счетчик итераций}
end;
Close(F1);
WriteLn;
{}
ReadKey
end.
{Закрытие файла}
Примечание.   Строковая переменная   '  p  '   указана для компьютера, на котором было написано данное
пособие. В случае написания текста данной программы на другом компьютере, строковой переменной следует указать
соответствующий путь (адрес).
Возможный результат работы программы
Запись в файл
 8 49 25  3 32 46 48 36  3 24
Чтение из файла
 8 49 25  3 32 46 48 36  3 24
129 Описание множеств. Операции над множествами.  Ввод и вывод элементов множества.  Программирование алгоритмов с использованием множеств
Стандартные  функции:    FilePos    и   FileSize,   позволяют   определить     соответственно  текущую  позицию
указателя  и число элементов (длину) файла. Функции имеют следующий формат:
FilePos(<Имя файловой переменной>);
FileSize(<Имя файловой переменной>);,
где сами функции могут иметь тип integer или longint.
  Откорректированный вариант приведенной выше программы, демонстрирует пример использования данных
функций.   В   программе  случайным   образом  выбирается  длина  файла,  значения  его   элементов   и  позиция
указателя номера элемента файла, с которого он читается с диска и выводится на экран дисплея.
{Описание файловой переменной}
{Описание целых переменных}
{Описание строковой переменной}
Program V1L20P3; {Запись данных в файл и их чтение}
Uses Crt;
Var  F1 :file of integer;
a,i,j,n,fp,fs :integer;
p:string[25];
{}
begin
ClrScr;
Randomize;
n:=Random(9)+1;
WriteLn('Запись в файл');
p:='d:\vvv\ppvv\myfile.dat';
Assign(F1,p);
{Инициализация (установка) генератора случайных чисел}
{Это для того, чтобы длина файла была не 0}
{Определение имени файла и его места}
{Связь имени файловой переменной F1 в памяти}
{компьютера, с именем файла myfile на диске}
{Открывает новый файл для записи на диске. Это myfile}
{Циклическая операция формирования файла целых чисел}
Rewrite(F1);
for i:=1 to n do
begin
a:=Random(50);
Write(F1,a);
Write(a:4);
{Генерация случайного целого числа}
{Запись значения элемента в файл}
{Вывод значения элемента на экран}
{Закрытие файла}
{Перевод строки}
{Открытие файла для чтения}
{Определение длины файла}
end;
Close(F1);
WriteLn;
Reset(F1);
fs:=FileSize(F1);
Write('Количество    элементов     файла  ',fs);
i:=Random(n);
Seek(F1,i);
fp:=FilePos(F1);
Write('Позиция указателя, начиная с нуля  ',fp);
WriteLn('Чтение файла с указанной позиции до конца файла');
{}
while not eof(F1) do    {Читать данные из файла, пока не будет обнаружен признак конца файла}
begin
{Вычисление позиции указателя}
{Перемещение указателя в указанную позицию}
{Определение позиции указателя}
Read(F1,i);
Write(i:4);
i:=i+1
{Чтение файла}
{Печать значения элемента файла}
{Увеличение значения счетчика на 1}
end;
Close(F1);
WriteLn;
{}
ReadKey
end.
Возможный результат работы программы
Запись в файл
21 20 35  15
Количество    элементов     файла  4
Позиция указателя, начиная с нуля  2
Чтение из файла с заданной позиции до конца файла
35  15
130 Следующая   программа   демонстрирует   работу   следующих  функций:   добавление   данных   в   файл,   прямая
выборка элементов файла, переименование и удаление файла.
Program V1L20P4; {Добавление данных в файл и их чтение}
Uses Crt;
Var  F1 :file of integer;
a,i,j :integer;
p:string[25];
{}
begin
ClrScr;
Randomize;
WriteLn('Запись в файл');
p:='e:\vvv\ppvv\myfile.dat';
Assign(F1,p);

Rewrite(F1);
for i:=1 to 5 do
begin
{Инициализация (установка) генератора случайных чисел}
{Строка местонахождения файла}
{Связь имени файловой переменной F1 в памяти}
{компьютера с именем файла myfile на диске}
{Открывает новый файл для записи на диске}
{Циклическая операция}
a:=Random(50);             {Генерация случайного целого числа}
Write(F1,a);               {Запись значения в файл}
Write(a:4);
end;
{}
Close(F1);
WriteLn;
WriteLn('Данные, добавляемые в файл');
Reset(F1);
{Закрытие файла}
{Открывает файл для записи на диске}
Seek(F1,FileSize(F1));
{Добавление данных в конец файла}
for i:=1 to 3 do
begin
{Циклическая операция записи целых чисел в файл}
Write(F1,i);
Write(i:4);
{Запись значения "i" в файл}
{Закрытие файла}
end;
Close(F1);
WriteLn;
{}
WriteLn('Чтение данных из файла');
Reset(F1);
i:=1;         {Начальное значение указателя на элемент файла}
while not eof(F1) do  {Читать данные из файла, пока не будет обнаружен признак конца файла}
begin
Read(F1,i);                {Чтение элемента файла}
Write(i:4);                {Печать значения файла}
i:=i+1                     {Увеличение значения указателя}
end;
{}
WriteLn;
Write('Укажи номер элемента файла для выборки, начиная с нуля: ');
Read(n);
Seek(F1,n);
Read(F1,i);
Write('Значение ',n,' го элемента файла:',i:4);
{}
Close(F1);
Erase(F1);
WriteLn;
{}
ReadKey
end.
{Закрытие файла}
{Уничтожение файла}
{Ввод номера элемента файла}
{Перемещение указателя к элементу файла}
{Чтение значения в указанную переменную}
Возможный результат работы программы
Запись в файл
 8 49 25  3 32
Данные, добавляемые в файл
131 Описание множеств. Операции над множествами.  Ввод и вывод элементов множества.  Программирование алгоритмов с использованием множеств
 1  2  3
Чтение данных из файла
 8 49 25  3 32  1  2  3
Укажи номер элемента файла для выборки, начиная с нуля: 2
Значение 2 го элемента файла: 25
Урок 3.  Текстовые и нетипизированные файлы
3.1. Стандартные процедуры работы с текстовыми файлами.
3.2. Стандартные файлы работы с внешними устройствами компьютера.
3.1. Стандартные процедуры работы с текстовыми файлами
Как   было   указано   выше,  текстовые  файлы   являются  особым   видом   файлов.  Эти файлы   формируются  из
символов,   составленных   в  строки   некоторого   осмысленного   текста.  Строки,  имеющие   различную   длину   в   тексте,
разделяются друг от друга специальным символом конца строки.
Описание текстового файла имеет следующий вид:
Здесь –  text  стандартный идентификатор, такой же, как остальные, описанные выше ( integer, real, char, string и т .д).
Var <Имя файла> :  text;
Отличие текстового файла  text, от  файлов типа  char или  string состоит в том, что файл типа  text состоит из
последовательности   строк    различной  длины,   каждая   из   которых     заканчивается   специальным  символом  конца
строки. Для определения конца строки текстового файла используется функция   Eoln  , которая имеет следующий
формат:
Eoln(<Имя файловой переменной>);
Функция  принимает  значение   True  (Истина),  если достигнут  конец  строки и значение    False  (Ложь)  в
противном   случае.   Если   в   функции   опущен   параметр  <Имя   файловой   переменной>,   то   подразумевается
использование стандартного файла ввода Input.
Наряду с рассмотренными выше процедурами и функциями (кроме  Seek,  FilePose,  FileSize), для работы с
текстовыми файлами используются следующие стандартные процедуры:
Append(<Имя текстового файла>);
   открытие   уже   существующего   текстового   файла   типа    text  для
добавления данных в конец файла;
WriteLn(<Имя  текстового файла>);
записи;
  завершение текущей строки текстового файла  типа   file при его
ReadLn(<Имя текстового файла>);
  переход к началу следующей строки текстового файла типа   file
при его чтении;
WriteLn(<Имя текстового файла>,  X1, X2, …,  Xn);
переменных с завершением текущей строки;
     запись   в   текстовый   файл   типа  file  значений
ReadLn(<Имя текстового файла> , X1, X2, …< Xn);
  чтение слов файла типа  file с переходом к новой
строке.
3.2. Стандартные файлы работы с внешними устройствами компьютера
Стандартные файлы  это особый тип заранее определенных файлов, поставленных в соответствие внешним
устройствам   компьютера.   Фактически   эти   файлы   являются   драйверами   (специальными   программами),   которые
поддерживают   операции   вводавывода   между   процессором   компьютера   и   конкретными   внешними   устройствами.
Такими стандартными файлами являются следующие файлы:
Input
Output
Lst
  доступный только для чтения текстовый файл, связанный с клавиатурой;
  доступный только для записи текстовый файл, связанный с дисплеем;
  доступный только для записи (вывода) текстовый файл, связанный с принтером.
Файлы  Input,  Output  открываются автоматически при выполнении программы, и после завершения работы
программы автоматически  закрываются. В связи с этим к указанным файлам не применяются процедуры  Append,
Reset, Rewrite, Close.
Файл  Lst    введен для облегчения использования в программе устройства печати. Он описан в стандартном
модуле Printer  и связан с устройством Ltp1. В качестве примера приведена простая программа вывода сообщения на
принтер.  В случае отсутствия принтера на экран дисплея выводится курсор. Индикации ошибки нет.
Program V1L20P5;  {Вывод сообщения на принтер}
Uses Crt,Printer;
{}
{Вызов библиотечных модулей работы с дисплеем и принтером}
132 begin
ClrScr;
WriteLn(Lst,'Это сообщение выводится на принтер');
ReadKey
end.
Результат работы программы
Это сообщение выводится на принтер
В  TP  7.0, так же как и в операционной системе  MSDOS, вся внешняя аппаратура   (клавиатура, дисплей,
принтер и т.д.)  является техническими устройствами. С точки зрения программиста устройство рассматривается как
файл, для которого можно использовать стандартные процедуры и функции, рассмотренные выше.
Устройства  в  MSDOS  реализованы с помощью зарезервированных имен.
Con
 – консоль посредством которой информация выводится   на   дисплей  и  вводится
    с  клавиатуры. При   вводе   информации   допускается  ее  редактирование.    При
    нажатии   клавиш   Ctrl+Z  генерируется символ конца файла.
Ltp1, Ltp2, Ltp3  – устройства печати. Если на компьютер присоединено только одно устройство

    печати, то на него ссылаются как на  Ltp1 или  Prn.
Com1, Com2
– последовательные коммуникационные порты.
1. Что называется файлом и как его организовать на внешнем устройстве компьютера, и на каком?
2. Как    называются файлы, организованные на разных устройствах  компьютера и как долго они могут быть
Контрольные вопросы и упражнения
доступны пользователю?
3. Как классифицируются файлы?
4. Как описываются внешние файлы в Pascalпрограмме?
5. Для чего предназначены процедуры работы с файлами библиотечного модуля System?  Назовите некоторые из
них и укажите, для каких целей они служат.
6. Напишите программу записи 10 случайных целых чисел в диапазоне 20 : 20  на диск   C:  в каталог  MyFile  в
файл  namber.dat. Прочтите его системными средствами.
7. Напишите программу чтения файла, созданного решением предыдущей задачи.
8. Напишите программу дополнения в конец файла, созданного программой  задачи  6  нескольких целых чисел,
вводимых с клавиатуры.
9. Напишите программу дополнения в конец файла, созданного программой  задачи  6  нескольких целых чисел,
вводимых с клавиатуры с указанной с клавиатуры позиции.
10. Напишите программу  чтения  нескольких  значений  файла,   созданного  программой задачи  6  с указанных  с
клавиатуры позиций.
11. Напишите программу формирования текстового файла, его чтения и вывода на экран дисплея и на печатающее
устройство, если это возможно.
12. Напишите программу добавления некоторого текста, в ранее созданный текстовый файл.
13. Напишите программу создания нескольких записей в некотором файле и прочтите их с выводом на экран
дисплея  и на печатающее устройство.
Для заметок, вопросов и ответов
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
133 Описание множеств. Операции над множествами.  Ввод и вывод элементов множества.  Программирование алгоритмов с использованием множеств
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
134

file_name: Занятие 19ч1.doc

title: Файлы


extracted_text:
Основы безопасности жизнедеятельности 7 класс
Пояснительная записка
Настоящая рабочая  программа разработана на основе следующих документов:
Федеральный закон от 29.12.2012г. № 273ФЗ «Об образовании в Российской Федерации»;
Программы основного общего образования по ОБЖ авторов: А.Т. Смирнова, Б.О. Хренникова;
 основной образовательной программы МБОУ Бирикчульской СОШ (протокол № 1 от 30.08.2016г.);
 учебного плана  МБОУ Бирикчульской СОШ  на 20162017 учебный год;
положения о рабочей программе МБОУ Бирикчульской СОШ (протокол № 4 от 28.03.2013г).
Учебный   курс   Основы   безопасности   жизнедеятельности   в   основной   школе   строится   так,   чтобы   были
достигнуты следующие цели:
1. Безопасное поведение учащихся в чрезвычайных ситуациях природного, техногенного и социального
характера.
2. Понимание каждым учащимся важности сбережения и защиты личного здоровья как индивидуальной и
общественной ценности.
3. Принятие   учащимися   ценностей   гражданского   общества,   прав   человека,   правового     государства,
ценностей семьи, справедливости судов и ответственности власти.
4. Антиэкстремистское
нетерпимость к действиям и влияниям, представляющим угрозу для жизни человека.
5. Отрицательное отношение учащихся  к приёму психоактивных веществ, в том числе наркотиков.
6. Готовность и способность учащихся к нравственному совершенствованию.
  мышление   и  антитеррористическое  поведение   учащихся,   в   том   числе
  и   антитеррористической   личностной   позиции   и
Достижение этих целей обеспечивается решением таких учебных задач, как:
1. Формирование   у  учащихся   модели   безопасного  поведения   в  повседневной   жизни,   в  транспортной
среде и чрезвычайных ситуациях природного, техногенного и социального характера.
2. Формирование индивидуальной системы здорового образа жизни.
3. Выработка   у   учащихся   антиэкстремистской
отрицательного отношения к психоактивным веществам и асоциальному поведению.
Выбор программы обусловлен модульной структурой содержания курса, лёгкостью её корректировки под
особенности   нашего   региона,   обеспеченностью   учебниками   и   методическими   пособиями   для   учителя.
Данная рабочая программа скорректирована, так как согласно учебного плана МБОУ Бирикчульской
СОШ на изучение курса «Основы безопасности жизнедеятельности»   в 7 классе отводится 0,5 часа в
неделю, 17 часов в год.
Структура предмета  «Основы безопасности жизнедеятельности» при модульном построении содержания
образования включает в себя  два учебных модуля и пять разделов.
Под учебным модулем следует понимать конструктивно завершенную часть предмета, основанную на его
методологии и включающую  в себя такой объем учебного материала, который позволяет использовать его
как самостоятельный учебный компонент системы предмета «Основы безопасности жизнедеятельности».
                                                                 Учебные модули
Модуль1
Основы безопасности личности,
общества и государства.
                                                                         Разделы
1
4
Модуль2
Основы медицинских знаний
и здорового образа жизни.
Основы комплексной
безопасности
Защита населения РФ от ЧС
Основы противодействия
терроризму и экстремизму в РФ
2
3
Основы здорового образа жизни
5

Основы медицинских знаний и оказание
ПП
 Программа курса ОБЖ  7 класс предназначена для ознакомления учащихся с общими характеристиками
различных  чрезвычайных ситуаций  природного характера, их последствиями, а так же для приобретения
знаний и умений по защите жизни и здоровья в   данных опасных ситуациях. В программе также изучаются
основы   противодействия   терроризму   и   экстремизму   в   Российской   Федерации   и   основы   медицинских
знаний и здорового образа жизни.
Программа   предполагает   возможность   реализации   актуальных   в   настоящее   время   компетентностного,
личностноориентированного, деятельностного подходов в обучении. Кроме того, обучение построено по
принципам   преемственности,   «от   простого      к   сложному».   Учебный   процесс   осуществляется   по
спиралевидной схеме: одна и та же тема подается в каждом классе с возрастанием сложности.
Содержание тем учебного курса ОБЖ в 7 классе
Тема 1.   Общие понятия об опасных и чрезвычайных ситуациях природного характера
Атмосфера,   биосфера,   гидросфера,   биосфера.   Геологические,   метеорологические,   гидрологические,
биологические,   космические   опасные     природные   явления.   Опасные   и   ЧС   природного   характера,
стихийное бедствие.
Тема 2.    ЧС геологического происхождения
Очаг землетрясения, магнитуда, эпицентр землетрясения, шкала Меркали. Прогноз землетрясений,
оповещение и обучение населения, организация АСР. Как подготовиться и вести себя во время
землетрясения, как действовать после него. Вулкан, активные окраины, извержение вулкана, типы
вулканов, последствия извержения, защита населения. Оползень, обвал, их причины и последствия,
защита населения.
Тема 3.    ЧС метеорологического происхождения
Погода, ветер, ураган, буря, циклон (тропические и внетропические), шкала Бофорта. Снежные
бури,   их   прогнозирование   и   защита   населения,   правила   поведения   населения.   Смерчи,   шкала
разрушений, рекомендации населению по действиям при угрозе и во время смерча.
Тема 4. ЧС гидрологического происхождения
Наводнение, виды наводнений, защита населения, рекомендации  по действиям  при угрозе и во
время   наводнений.  Сель,   его   формирование,   источники   составляющих   селевого   потока,   защита
населения. Цунами, высота, длина, скорость перемещения морской волны, интенсивность цунами,
где чаще всего на Земле встречаются цунами, защита населения. Снежные лавины, образование,
сход, скорость, формирование, сила удара   лавины, защита населения и правила поведения   в
лавиноопасных зонах.
Тема 5. Природные пожары и ЧС биологосоциального происхождения
Лесной пожар, причины возникновения, пожароопасный сезон.   Низовой, верховой, подземный пожар,
скорость   распространения,   классы   лесных   пожаров,   последствия   пожаров.   Профилактика   пожаров   и
защита населения. Инфекционные болезни, пути распространения инфекции, периоды развития и течения
инфекционной   болезни.   Эпидемия,   пандемия,   противоэпидемические   мероприятия.   Характеристика
наиболее распространенных инфекционных  заболеваний и их профилактика. Эпизоотиии, эпифитотии,
противоэпизоотические и противоэпифитотические  мероприятия.
Тема 6. Духовнонравственные основы противодействия терроризму и экстремизму
Понятие   «терроризм».
  националистический,
технологический, ядерный, кибертерроризм. Факторы  и социальные явления способствующие вовлечению
человека   в   террористическую   деятельность.
  Формирование
антитеррористического   поведения,   профилактика   вредных   привычек,   профилактика   террористической
деятельности, культура БЖД.
Тема 7. ЗОЖ и его значение для гармоничного развития человека
Эмоции, эмоциональность, психологическая уравновешенность и ее воспитание, уверенность, работа по
самосовершенствованию,   умение   приобретать   друзей,   строить   взаимоотношения   с   окружающими
  Телефонные   террористы.
  криминальный,

  Политический,
  религиозный, людьми. Стрессовый фактор, стресс, общий адаптационный синдром и его стадии, общие принципы
борьбы со стрессом. Подростковый возраст, правила личной гигиены.
Тема 8. Первая    помощь  при неотложных состояниях
Первая помощь, общий порядок действий оказывающего первую помощь. ПМП при незначительных
ранах,   при   сильном   кровотечении.   Общие   правила   оказания   ПП   при   ушибах,   при   переломах
конечностей. Общие правила транспортировки пострадавшего.
Критерии оценки:
Все тестовые и письменные  задания оцениваются:
 правильный ответ – 1 балл;
 отсутствие ответа или неправильный ответ – 0 баллов
Критерии оценивания:
«2»  менее 25% правильных ответов.
«3»  от 25% до 50% правильных ответов.
«4»  от 50% до 75% правильных ответов.
«5»  от 75% и более правильных ответов.
Оценка устных ответов учащегося:
Ответ оценивается отметкой «5», если учащийся:
• полно раскрыл содержание материала в объеме, предусмотренном программой и учебником;
• изложил материал грамотным языком в определенной логической последовательности, точно используя
терминологию;
• показал умение иллюстрировать теоретические положения конкретными примерами, применять их в новой
ситуации при выполнении практического задания;
•   продемонстрировал   усвоение   ранее   изученных   сопутствующих   вопросов,   сформированность   и
устойчивость используемых при ответе умений и навыков;
• отвечал самостоятельно без наводящих вопросов учителя.
   Возможны   одна   –   две   неточности   при   освещении   второстепенных   вопросов   или   выкладках,   которые
учащийся легко исправил по замечанию учителя.
Ответ оценивается отметкой «4», если: он удовлетворяет в основном требованиям на отметку «5», но
при этом имеет один из недостатков:
• в изложении допущены небольшие пробелы, не исказившие общего содержания ответа;
• допущены один или два недочета при освещении содержания ответа, исправленные по замечанию учителя;
• допущена ошибка или более двух недочетов при освещении второстепенных вопросов, легко исправленные
по замечанию учителя.
Отметка «3» ставится в следующих случаях:
• неполно или непоследовательно раскрыто содержание материала, но показано общее понимание вопроса и
продемонстрированы   умения,   достаточные   для   дальнейшего   усвоения   программного   материала
(определенные «Требованиям к математической подготовки обучающегося»);
• имелись затруднения или допущены ошибки в определении понятий, исправленные после нескольких
 вопросов;
Отметка «2» ставится в следующих случаях:
• не раскрыто основное содержание учебного материала;
• ученик обнаружил полное незнание и непонимание изучаемого материала или не ответил ни на один из
поставленных вопросов.
Требования к уровню подготовки учащихся
В результате освоения обязательного минимума содержания программы «ОБЖ – 7 класс», учащиеся к
концу учебного года должны:
  знать

правила безопасного поведения на улицах и дорогах; общие понятия об опасных и ЧС природного характера;
правила   безопасного   поведения   во   время,   при   угрозе,   заблаговременном   оповещении   о
о возможных чрезвычайных  и опасных ситуациях природного  характера, наиболее вероятных для
основы противодействия терроризму и экстремизму в РФ;
основы медицинских знаний и здорового образа жизни.


приближающейся опасной или ЧС природного характера или после нее;

нашего региона;


уметь

выявить причины и возможные последствия;



логические части.

предвидеть   возможную   опасность     чрезвычайных   и   опасных   ситуаций   природного   характера,
вырабатывать безопасный алгоритм действий при чрезвычайной или опасной ситуации;
 оказывать первую медицинскую помощь после стихийных бедствий;
работать   с   учебной   литературой,   анализировать   текст,   выделять   в   нем   смысловые   блоки   и
использовать приобретенные знания и умения в практической деятельности и повседневной жизни.
Тематическое планирование 7 класс
                     Наименование модуля, раздела, темы
Основы безопасности личности, общества и государства
Основы комплексной безопасности
Общие понятия об опасных и чрезвычайных ситуациях
 природного характера
ЧС геологического происхождения
ЧС метеорологического происхождения
ЧС гидрологического происхождения
Природные пожары и ЧС биологосоциального
происхождения
Самостоятельная работа по 1 разделу
Защита населения Российской Федерации от ЧС
Защита населения от ЧС геологического происхождения
Защита населения от ЧС метеорологического происхождения
Защита населения от ЧС гидрологического происхождения
Защита населения от природных пожаров
Основы противодействия терроризму  и экстремизму  в РФ
Духовнонравственные основы противодействия терроризму
 и экстремизму
Основы медицинских знаний и здорового образа жизни
Основы здорового образа жизни
ЗОЖ и его значение для гармоничного развития человека
Основы медицинских знаний и  оказание первой
медицинской помощи
Первая    помощь  при неотложных состояниях
№
модуля,
 раздела,
МI
РI
Тема  1.
Тема 2.
Тема 3.
Тема 4.
Тема 5.
РII
Тема 2.
Тема 3.
Тема 4.
Тема 5.
РIII
Тема 6.
МII
РIV
Тема 7.
РV
Тема 8.
Всего часов
Колич
ество
часов
13
8
1
2
1
2
2
1
4
1
0,5
1,5
1
1
1
3
1
1
2
2
17 Список литературы
1. Смирнов А.Т. ОБЖ. Рабочие программы. Предметная линия учебников под редакцией А.Т. Смирнова.
59 классы: пособие для учителей общеобразовательных учреждений. М.: Просвещение, 2012г.;
2. Смирнов   А.Т.   ОБЖ.   7   класс:   учебник   для   общеобразовательных   учреждений.   М.:   Просвещение,
2011г.;
3. Г.П. Попова. Формирование универсальных учебных действий в курсе ОБЖ 59 классы. Волгоград:
Учитель, 2015г.;
4. М.И.   Глинский.   Обеспечение   жизнедеятельности   в   экстремальных   ситуациях.   ООО   «Армпресс»,
2007г.;
5. Г.П. Попова. Основы безопасности жизнедеятельности. 58 классы. Школьный курс в тестах, играх,
кроссвордах, заданиях с картинками. Волгоград: Учитель, 2006г.;
6. А.Л. Рыбин. Дорожная азбука велосипедиста. М.: Просвещение, 1992г.;
7. Основы безопасности жизнедеятельности: секреты преподавания: рекомендации, конспекты уроков,
разработки мероприятий / авт. – сост. Л.А.  Тетушкина. – Волгоград: Учитель, 2009г.;
8. Мультимедийные   уроки   по   ОБЖ.   7   класс.   Сборник   составлен   по   программе   Смирнова   А.Т.
www
9. Павлова   О.В.,   Попова   Г.П.   Пожарная   безопасность:   конспекты   занятий   и   классных   часов   в   511
классах   (игры,   тесты,   практикумы,   анализ   ситуаций,   «круглый   стол»).   Изд.   3е.   –   Волгоград:
Учитель,2013г.
10. Комплект плакатов №1. Действия населения при авариях и катастрофах. «Библиотечка «Военные
знания». ООО «Типография Принт Класс».
 .  urokicd

 .  ru;

file_name: рабочая программа 7 класс.docx

intro:
Рабочая программа по ОБЖ для 7 класса составлена по учебнику А.Т. Смирнова, Б.О. Хренникова
(Москва, Просвещение, 2011 год, не для ФГОС класса), исходя из программы 0.5 часа в неделю, 16 часов в год.
Без регионального компонента, поэтому подойдет для любого региона.

title: Рабочая программа по ОБЖ для 7 класса ( без ктп)