Редактирование: МФСП, 04 семинар (от 22 сентября)
Материал из eSyr's wiki.
Внимание: Вы не представились системе. Ваш IP-адрес будет записан в историю изменений этой страницы.
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия | Ваш текст | ||
Строка 1: | Строка 1: | ||
=Списки= | =Списки= | ||
- | + | Спискм в RSL нз. упорядч. типизир. набор эл-тов, эл-иы могут пвторяться. Списк в угловых скбкх, прядок вжен, все элементы дного типа | |
<1, 3, 1, 5, 4> | <1, 3, 1, 5, 4> | ||
<false, true> | <false, true> | ||
- | Для | + | Для спискв, кк и для всех типов в rsl пр. две перации: =, ≠ |
- | Для | + | Для список опр. дв типа: T-list(для конечных), T-inflist(для бесконечных) (по ANSI); T×, T^ω |
Определён пустой список: <> | Определён пустой список: <> | ||
Строка 14: | Строка 14: | ||
пр. синтаксис <v1..vn> | пр. синтаксис <v1..vn> | ||
- | Опр. | + | Опр. синтксис: <expr|limit> |
Пример: | Пример: | ||
Строка 22: | Строка 22: | ||
<7..3 > ≡ <> | <7..3 > ≡ <> | ||
- | Список может быть | + | Список может быть опр. для лдюбго ип, не олько бзового: мнжества, списка... |
==Индексация== | ==Индексация== | ||
- | Для того, чтобы | + | Для того, чтобы добрться д эл-та, исп. перация index, "()", в которой ук. номер эл-та: |
<1,4,5,6>(2) = 4 | <1,4,5,6>(2) = 4 | ||
<2,5,3>,<3,1>>(2) = <3,1> | <2,5,3>,<3,1>>(2) = <3,1> | ||
Строка 35: | Строка 35: | ||
Операции со списками: | Операции со списками: | ||
- | === | + | ===Конктенация=== |
- | + | Конк. мжно применять только к кнеч. спискм, второй эл-т мжет быть и конеч, и беск. Рез-т соотв. типа | |
l1^l2 | l1^l2 | ||
^:T-list x T-inflist -> T-inflist | ^:T-list x T-inflist -> T-inflist | ||
Head: Первый элемент | Head: Первый элемент | ||
- | hd: T^ω | + | hd: T^ω стрелочк с влной T |
hd<> = chaos | hd<> = chaos | ||
- | Tail: | + | Tail: Хвст |
- | tl: T^ω | + | tl: T^ω стрпелчк с волной T^ω |
tl<> = chaos | tl<> = chaos | ||
Len: длина списка | Len: длина списка | ||
- | len:T^ω | + | len:T^ω стрелочк с влной Nat |
len<n|n • is_prime> ≡ chaos | len<n|n • is_prime> ≡ chaos | ||
===elems: Элементы=== | ===elems: Элементы=== | ||
- | elems: T^ω | + | elems: T^ω стрелочк с волнлй T-infset |
Возвращает множество элементов списка | Возвращает множество элементов списка | ||
===inds: Индексы=== | ===inds: Индексы=== | ||
- | inds: T^ω | + | inds: T^ω стрелочк с волнлй Nat-infset |
inds FL={1..len FL} | inds FL={1..len FL} | ||
- | + | Задача: пр. функцию length, которя выч. длину списка | |
- | + | ||
- | Задача: пр. функцию length, которя | + | |
'''value''' | '''value''' | ||
length: T× → Nat | length: T× → Nat | ||
Строка 69: | Строка 67: | ||
length2(l) ≡ card inds l | length2(l) ≡ card inds l | ||
- | ==Case== | ||
Конструкция case: | Конструкция case: | ||
'''case''' ''cond'' '''of''' | '''case''' ''cond'' '''of''' | ||
Строка 78: | Строка 75: | ||
'''end''' | '''end''' | ||
- | + | Как это исп. для работы со спискми (на том же примере): | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | Как это | + | |
'''value''' | '''value''' | ||
length: T× → Nat | length: T× → Nat | ||
Строка 106: | Строка 84: | ||
'''end''' | '''end''' | ||
- | + | Задач. Опр. функцию Pascal, гненер. тр. Пскаля д урвня n вкл. Результат --- список списков. Например: | |
<<1>, | <<1>, | ||
<1,1>, | <1,1>, | ||
Строка 120: | Строка 98: | ||
pascal(i) ≡ if i=1 then <<1>> else pascal(i-1)^<<1>^<pascal(i-1)(i-1)(j)+pascal(i-1)(i-1)(j-)|j:T1 • j in <2..i-1>>^<1>> | pascal(i) ≡ if i=1 then <<1>> else pascal(i-1)^<<1>^<pascal(i-1)(i-1)(j)+pascal(i-1)(i-1)(j-)|j:T1 • j in <2..i-1>>^<1>> | ||
- | Задача. Реализовать функцию rev, | + | Задача. Реализовать функцию rev, кторая взвр. реверсивную версию списка. |
'''value''' | '''value''' | ||
Строка 138: | Строка 116: | ||
Word | Word | ||
- | (стандартный тип text в rsl | + | (стандартный тип text в rsl н смом деле text=char×) |
- | Для | + | Для тких типов тр. опр. функцию is_on, проверяющую, встречется ли данне слово на странице |
'''value''' | '''value''' | ||
Строка 149: | Строка 127: | ||
is_on(w,p) ≡ ∃ i : Nat • (i ∈ {1..len(p)}) ∧ (w ∈ elems p(i)) | is_on(w,p) ≡ ∃ i : Nat • (i ∈ {1..len(p)}) ∧ (w ∈ elems p(i)) | ||
- | Определить number_of, | + | Определить number_of, пдсчитывающую количество вхождений слоов в страницу |
'''value''' | '''value''' | ||
Строка 160: | Строка 138: | ||
number_of: Word × Page → Nat | number_of: Word × Page → Nat | ||
- | number_of(w,p) → | + | number_of(w,p) → {(i,j)|(i:Nat•j:Nat; • p(i)(j)=w ∧ i∈ p ∧ ∈p(i)} |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | <math>rng:(T[A] \overset{m}{\rightarrow} T[r] ) \rightarrow T[r]-infset</math> | ||
{{МФСП}} | {{МФСП}} | ||
{{Lection-stub}} | {{Lection-stub}} |