Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ОАФИ-Метод.указ-версия для студентов

.pdf
Скачиваний:
8
Добавлен:
10.03.2016
Размер:
330.52 Кб
Скачать

21

6.6) сорт длина ребра: (кубы R[0, ])

атрибут "длина ребра" моделируется конечным отображением, областью определения которого является множество - значение термина "кубы", а областью значений - бесконечное множество неотрицательных вещественных чисел

6.7) сорт ширина: (прямоугольные параллелепипеды R[0, ])

атрибут "ширина" моделируется конечным отображением, областью определения которого является множество - значение термина "прямоугольные параллелепипеды", а областью значений - бесконечное множество неотрицательных вещественных чисел

6.8) сорт длина: (прямоугольные параллелепипеды R[0, ])

атрибут "длина" моделируется конечным отображением, областью определения которого является множество - значение термина "прямоугольные параллелепипеды", а областью значений - бесконечное множество неотрицательных вещественных чисел

6.9) сорт высота: (прямоугольные параллелепипеды R[0, ])

атрибут "высота" моделируется конечным отображением, областью определения которого является множество - значение термина "прямоугольные параллелепипеды", а областью значений - бесконечное множество неотрицательных вещественных чисел

6.10) тела шары кубы прямоугольные параллелепипеды моделью объема понятия, обозначенного термином "тела", является

объединение множеств объемов понятий, обозначенных терминами "шары", "кубы" и "прямоугольные параллелепипеды"

6.11) сорт объем: (тела R[0, ])

атрибут "объем" моделируется конечным отображением, областью определения которого является множество - значение термина "тела", а областью значений - бесконечное множество неотрицательных вещественных чисел

6.12) (v: тела) объем(v) = / (v шары 4/3 * (радиус(v) 3) *pi), (v кубы длина ребра(v) 3), (v прямоугольные параллелепипеды длина(v) * ширина(v) * высота(v)) /

предложение задает связь между атрибутами

6.13) (v: шары) радиус(v) > 0

предложение уточняет область значений отображения, обозначенного термином "радиус"

6.14) (v: кубы) длина ребра(v) > 0

предложение уточняет область значений отображения, обозначенного термином "длина ребра"

6.15) (v: прямоугольные параллелепипеды) длина(v) > 0 & ширина(v) > 0 & высота(v) > 0

предложение уточняет область значений отображений, обозначенных терминами "длина", "ширина" и "высота"

22

7) Запишем программу на алгоритмическом языке программирования, который допускает множества элементов любого типа данных

множество (строки): шары, кубы, прямоугольные параллелепипеды; ввод : шары, кубы, прямоугольные параллелепипеды; массив[шары] вещ : радиус; ввод : радиус; массив[кубы] вещ : длина ребра;

массив[прямоугольные параллелепипеды] вещ : ширина, длина, высота; ввод : радиус, длина ребра, ширина, высота, длина; объединение (шары, кубы, прямоугольные параллелепипеды) : тела;

для v тела выполнить если v шары тогда объем[v] = 4/3 * (радиус[v]3)*pi; если v кубы тогда объем[v] = длина ребра[v] 3; если v прямоугольные параллелепипеды тогда объем[v] длина[v] * ширина[v] * высота[v];

для v тела выполнить вывод: "объем тела ", v, "равен ", объем; Запишем программу на алгоритмическом языке программирования

Паскаль. Для моделирования структурных объектов будем использовать тип данных "запись с вариантами".

Program объемы_тел;

Type

TBodyType = (шары, кубы, прям_парал);

TBody = record ИмяТела:string[8]; ТипТела: TBodyType;

Атрибуты: record case BodyType: TBodyType of

шары: (шары: record радиус:Real; end);

кубы: (кубы: record длина_ребра: Real; end);

прям_парал: (прям_парал: record

ширина, длина, высота: Real; end);

end; end; TbodySet = array[1..10] of TBody;

Var МножТел: TbodySet; Numb: byte;

ОбъемыТел: array[1..10] of real; Procedure ввод_тела (var numb:byte); Var name: string[8]; BodyType: byte; Begin

Repeat

Writeln(‘введите название тела или *, если все тела’);

Readln(name);

If name <> ‘*’ then numb:= numb+1;

Repeat

Writeln(‘введите тип тела’);

23

Writeln(‘ 1: шар’); Writeln(‘ 2: куб’);

Writeln(‘ 3: прямоугольный параллелепипед’);

Readn(BodyType);

Until not(BodyType in {1, 2, 3 }; With МножТел[numb] do begin

ИмяТела:= name;

ТипТела:= bodyType; Case BodyType of

1:begin ТипТела:= шары;

writeln(‘задайте радиус’); readln(Атрибуты.шары.радиус);

end;

2:begin ТипТела:= кубы;

writeln(‘задайте длину ребра’); readln(Атрибуты.кубы.длина_ребра);

end;

1:begin ТипТела:= прям_парал;

writeln(‘задайте ширину, высоту и длину’);

readln(Атрибуты.прям_парал.ширина, Атрибуты.прям_парал.высота, Атрибуты.прям_парал.длина,);

end;

end;

end;

Until (name = ‘*’);

End;

Begin

numb:=0;

Ввод_тела(numb); For i:=1 to numb do

With МножТел[i] do begin

If ТипТела = шары then ОбъемыТел[i]:= 4/3*pi* Атрибуты.шары.радиус* Атрибуты.шары.радиус* Атрибуты.шары.радиус;

If ТипТела = кубы then ОбъемыТел[i]:= Атрибуты.кубы.длина_ребра* Атрибуты.кубы.длина_ребра* Атрибуты.кубы.длина_ребра;

If ТипТела = прям_парал then ОбъемыТел[i]:= Атрибуты.прям_парал.высота* Атрибуты.прям_парал.длина* Атрибуты.прям_парал.ширина;

24

End;

End.

7. Тема "Последовательности". Обязательным для выполнения является одно из заданий по данной теме. Никаких ограничений на выбор задания нет.

7.1."Последовательности общего вида". План ответа:

1)название и характеристика предметной области;

2)характеристика профессиональной деятельности в этой предметной области;

3)постановка всех классов задач, решаемых в ходе этой профессиональной деятельности;

4)замкнутые системы величин последовательностей предметной области и их обоснование;

5)система понятий предметной области, соответствующих последовательностям, и ее обоснование;

6)прикладная логическая теория, моделирующая эту систему понятий;

7)программы (на любом языке программирования, но с комментариями!) решения всех классов задач, указанных в п.3.

8)привести пример ситуации предметной области, записать логическую модель, описать состояния памяти.

7.2."Стеки". План ответа:

1)название и характеристика предметной области;

2)характеристика профессиональной деятельности в этой предметной области;

3)постановка всех классов задач, решаемых в ходе этой профессиональной деятельности;

4)замкнутые системы величин стеков предметной области и их обоснование;

5)система понятий предметной области, соответствующих стекам, и ее обоснование;

6)прикладная логическая теория, моделирующая эту систему понятий;

7)программы (на любом языке программирования, но с комментариями!) решения всех классов задач, указанных в п.3.

8)привести пример ситуации предметной области, записать логическую модель, описать состояния памяти.

7.3."Очереди". План ответа:

1)название и характеристика предметной области;

2)характеристика профессиональной деятельности в этой предметной области;

3)постановка всех классов задач, решаемых в ходе этой профессиональной деятельности;

4)замкнутые системы величин очередей предметной области и их обоснование;

25

5)система понятий предметной области, соответствующих очередям, и

ееобоснование;

6)прикладная логическая теория, моделирующая эту систему понятий;

7)программы (на любом языке программирования, но с комментариями!) решения всех классов задач, указанных в п.3.

8)привести пример ситуации предметной области, записать логическую модель, описать состояния памяти.

7.4."Деки". План ответа:

1)название и характеристика предметной области;

2)характеристика профессиональной деятельности в этой предметной области;

3)постановка всех классов задач, решаемых в ходе этой профессиональной деятельности;

4)замкнутые системы величин деков предметной области и их обоснование;

5)система понятий предметной области, соответствующих декам, и ее обоснование;

6)прикладная логическая теория, моделирующая эту систему понятий;

7)программы (на любом языке программирования, но с комментариями!) решения всех классов задач, указанных в п.3.

8)привести пример ситуации предметной области, записать логическую модель, описать состояния памяти.

Примеры выполнения задания Пример 1. Стеки.

1)Предметная область "Формирование железнодорожного состава".

2)Профессиональная деятельность в этой предметной области состоит в решении задач формирования уходящих с некоторой станции железнодорожных составов. Пунктом назначения разных вагонов каждого уходящего состава являются пункт А или пункт В. Состав должен быть сформирован так, чтобы все вагоны, которые требуется доставить в один и тот же пункт, образовывали непрерывную последовательность вагонов, тогда по прибытии в пункт назначения достаточно отсоединить нужные вагоны не переформировывая состав. При формировании состава используются вагоны пришедшего на станцию состава, причем про каждый вагон известно, каков его пункт назначения. Вагоны к пришедшему составу присоединялись на станциях и остановочных пунктах, через которые проходил поезд. Поэтому вагоны с одним и тем же пунктом назначения располагаются в пришедшем

поезде не подряд. Будем считать, что при решении каждой задачи используется только один пришедший состав и формируется только один уходящий состав. При сортировке используется три тупика. Пришедший состав стоит в первом тупике. Во второй тупик ставят вагоны, пункт назначения которых А. В третий тупик ставят вагоны, пункт назначения

26

которых В. После окончания сортировки вагоны из второго тупика добавляют

кпоследовательности вагонов первого тупика.

3)В предметной области решаются задачи одного класса. Приведем постановку задач данного класса.

Дано: пришедший состав, состоящий из вагонов.

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

4)В данной предметной области используются следующие замкнутые системы объектов: замкнутая система разреженных множеств, конечные отображения, замкнутая система стеков, замкнутая система скалярных значений, замкнутая система безразмерных значений, замкнутая система структурных значений.

5)Систему понятий предметной области образуют следующие понятия: "вагоны", "пункт назначения", составы, "пришедший состав", "уходящий состав", процесс сортировки". Объем понятия "вагоны" состоит из конечных подмножеств множества всех вагонов, т.е. это понятие соответствует разреженным множествам. Понятия "пункт назначения" и "процесс сортировки" соответствуют конечным отображениям. Конечное отображение, которому соответствует понятие "пункт назначения", отображает вагон в некоторый элемент конечного множества, элементами которого являются скалярные значения "А" и "В". Конечное отображение, которому соответствует понятие "процесс сортировки", отображает элемент безразмерной величины в некоторый элемент замкнутой системы структурных значений, каждое структурное значение состоит из четырех компонент. Компонентами являются элементы замкнутой системы стеков.

6)Прикладная логическая теория имеет название "Сортировка вагонов". При ее построении используются стандартное расширение ST и специализированное расширение "Последовательности". Запишем теорию на языке прикладной логики.

Формирование составов(ST, Последовательности) 6.1) сорт вагоны: {}N

моделью объема понятия, обозначенного термином "вагоны" является бесконечное множество конечных подмножеств бесконечного множества обозначений

6.2) сорт пункт назначения: (вагоны {А, В})

моделью объема понятия, обозначенного термином "пункт назначения" является множество конечных отображений, областью определения каждого отображения является значение термина "вагоны", а областью значений - конечное множество названий пунктов назначения

6.3) составы seq вагоны

моделью объема понятия, обозначенного термином "составы", является бесконечное множество конечных последовательностей, элементы каждой последовательности принадлежат значению термина "вагоны"

6.4) сорт пришедший состав: составы

27

моделью объема понятия, обозначенного термином "пришедший состав" является бесконечное множество, являющееся значением термина "составы

6.5) сорт уходящий состав: составы моделью объема понятия, обозначенного термином "уходящий состав"

является бесконечное множество, являющееся значением термина "составы

6.6) n length(пришедший состав)

значением термина "n" является значение длины пришедшего состава 6.7) сорт процесс сортировки: (I[0,n] (составы 3))

объемом понятия, обозначенного термином "процесс сортировки", является множество конечных отображений; областью определения каждого отображения является множество целых чисел, не меньших 0 и не больших значения термина "n", а областью значений - множество структурных значений; элементы каждого структурного значения принадлежат множеству последовательностей, обозначенных термином "составы"

6.8) (1, процесс сортировки(0)) = пришедший состав

6.9) (2, процесс сортировки(0)) =

6.10) (3, процесс сортировки(0)) = на первом шаге сортировки в первом тупике находятся пришедший

состав, второй и третий тупики пусты

6.11) уходящий состав = (2, процесс сортировки(n)) (3, процесс сортировки(n))

уходящий состав формируется из вагонов второго и третьего тупиков, полученных на последнем шаге сортировки

6.12) (v: I[1,n]) пункт назначения(last( (1, процесс сортировки(v-1))) = A(2, процесс сортировки(v)) = addend( (2, процесс сортировки(v-1)), last( (1, процесс сортировки(v-1))) & (3, процесс сортировки(v)) = (3, процесс сортировки(v-1))

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

6.13) (v: I[1,n]) пункт назначения(last( (1, процесс сортировки(v-1))) = B(3, процесс сортировки(v)) = addend( (3, процесс сортировки(v-1)), last( (1, процесс сортировки(v-1))) & (2, процесс сортировки(v)) = (2, процесс сортировки(v-1))

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

6.14) (v: I[1,n]) (1, процесс сортировки(v)) = head( (1, процесс сортировки(v- 1)))

на каждом шаге процесса формирования из первого тупика забирается первый вагон

28

7) Запишем программу на алгоритмическом языке программирования Паскаль.

program сортировка_вагонов; type составы = ^ вагон;

вагон = record

номер вагона: integer; пункт_назначения: char; следующий: составы; предыдущий: составы;

end;

var начало_уходящего, конец_уходящего, начало_пришедшего, конец_пришедшего: составы; текущий_вагон: составы;

все_вагоны: byte; i, n: integer;

процесс_сортировки: record

конец_первого: составы; конец_второго: составы; конец_третьего: составы;

end;

function head(конец_состава: составы): составы; begin

head := конец_состава.предыдущий; head^.следующий:= nil;

end;

procedure addend(var конец_состава: составы; добавляемый: составы); begin

добавляемый.предыдущий := конец_состава; конец_состава:= добавляемый; конец_состава.следующий:= nil;

end; begin

{ ввод информации о пришедшем составе }

writeln('введите информацию о вагонах пришедшего состава');

все_вагоны:= 2; n:= 0;

конец_пришедшего:=nil; начало_пришедшего:=nil; while все_вагоны = 2 do

begin

write('номер вагона и пункт назначения:'); new(текущий_вагон);

with текущий_вагон^ do begin

readln( номер вагона, пункт_назначения); следующий:=nil;

29

предыдущий:=nil; end;

addend(конец_пришедшего, текущий_вагон); n:= n+1;

writeln('все вагоны? 1 – да, 2 – нет '); readln(все_вагоны);

end;

процесс_сортировки.конец_первого:= конец_пришедшего; процесс_сортировки.конец_второго:= nil; процесс_сортировки.конец_третьего:= nil;

for i:=1 to n do

if процесс_сортировки.конец_первого.пункт_назначения = 'A' then

begin

текущий_вагон:= процесс_сортировки.конец_первого; процесс_сортировки.конец_первого:=

head(процесс_сортировки.конец_первого); addend(процесс_сортировки.конец_второго,

текущий_вагон);

end

else

if процесс_сортировки.конец_первого.пункт_назначения = 'B' then

begin

текущий_вагон:= процесс_сортировки.конец_первого; процесс_сортировки.конец_первого:=

head(процесс_сортировки.конец_первого); addend(процесс_сортировки.конец_третьего,

текущий_вагон);

end;

начало_уходящего:= процесс_сортировки.конец_второго; {объединяем две последовательности} { так как обе моделируются стеком, то адрес начала не хранится} текущий_вагон:= начало_уходящего;

while текущий_вагон <> nil do begin

конец_уходящего:= текущий_вагон; текущий_вагон:= текущий_вагон^.следующий;

end;

конец_уходящего^.следующий:= процесс_сортировки.конец_третьего;

Пример 2. Деки.

1)Предметная область "Формирование железнодорожного состава".

2)Профессиональная деятельность в этой предметной области состоит в

решении задач формирования уходящего с некоторой станции

30

железнодорожного состава. Пунктом назначения разных вагонов состава являются пункт А или пункт В. Состав должен быть сформирован так, чтобы все вагоны, которые требуется доставить в один и тот же пункт, образовывали непрерывную последовательность вагонов, тогда по прибытии в пункт назначения достаточно отсоединить нужные вагоны не переформировывая состав. При формировании состава используются вагоны пришедшего на станцию состава, причем про каждый вагон известно, каков его пункт назначения. Вагоны к пришедшему составу присоединялись на станциях и остановочных пунктах, через которые проходил поезд. Поэтому вагоны с одним и тем же пунктом назначения располагаются в пришедшем поезде не подряд. Будем считать, что при решении каждой задачи используется только один пришедший состав и формируется только один уходящий состав. При сортировке используются один тупик и один путь, к которому есть доступ с двух сторон. В тупике стоит пришедший поезд. На двухстороннем пути стоит формируемый состав. Вагоны, пункт назначения которых А, присоединяют к голове поезда, а вагоны, пункт назначения которых В, присоединяют к хвосту поезда.

3)В предметной области решаются задачи одного класса. Постановка задач данного класса.

Дано: пришедший состав, состоящий из вагонов. Найти: уходящий состав.

4)В данной предметной области используются следующие замкнутые системы объектов: замкнутая система разреженных множеств, конечные отображения, замкнутая система стеков, замкнутая система деков, замкнутая система скалярных значений, замкнутая система безразмерных значений, замкнутая система структурных значений.

5)Систему понятий предметной области образуют следующие понятия: "вагоны", "пункт назначения", "составы", "пришедший состав", "уходящий состав", "процесс сортировки". Объем понятия "вагоны" состоит из конечных подмножеств множества всех вагонов, т.е. это понятие соответствует разреженным множествам. Понятия "пункт назначения" и "процесс сортировки" соответствуют конечным отображениям. Конечное отображение, которому соответствует понятие "пункт назначения", отображает вагон в некоторый элемент конечного множества, элементами которого являются скалярные значения "А" или "В". Конечное отображение, которому соответствует понятие "процесс сортировки", отображает элемент безразмерной величины в некоторый элемент замкнутой системы структурных значений, каждое структурное значение состоит из трех компонент. Первый и второй компоненты являются элементами замкнутой системы стеков, третий компонент принадлежит замкнутой системе деков.

6)Прикладная логическая теория имеет название "Сортировка вагонов". При ее построении используются стандартное расширение ST и специализированное расширение "Последовательности". Запишем теорию на языке прикладной логики.

Формирование составов(ST, Последовательности)