Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VPKS_v2_UKR_new.doc
Скачиваний:
24
Добавлен:
11.09.2019
Размер:
2.31 Mб
Скачать

Контрольні запитання

  1. Які різновиди процесів існують у мові OKKAM?

  2. Яким чином формуються послідовні процеси - композиції?

  3. Яким чином реалізуються умовні обчислення?

  4. Яким чином формуються паралельні процеси?

  5. Яким чином задають конструктор альтернативного процесу?

  6. Яким чином задаються канали зв’язку?

  7. Яким чином задаються описи масивів?

  8. Які правила оголошення процесів?

  9. Яким чином задаються описи циклів і масивів процесів?

Рекомендована література

1. Транспьютеры. Архитектура и программное обеспечение. Перевод с англ. – М., ”Радио и связь”, 1993.

2. Бахтеяров С. Д., Дудников Е. Е., Евсеев М. Ю. Транспьютерная технология. – М., ”Радио и связь”, 1993.

Лекція 17. Мова програмування OKKAM (продовження)

План лекції

  • 1. Вирази.

  • 2. Структура програмування.

  • 3. Мовні засоби для програмування в реальному масштабі часу.

  • 4. Використання мови OKKAM для рішення завдань системного програмування.

Виклад лекції

1. Вирази

Кожен вираз в мові Оккам має значення, що обчислюється під час виконання програми або при її компіляції. Значення виразу представляється в ЕОМ у вигляді бітового рядка довжиною в машинне слово.

У мові Оккам відсутні неявні пріоритети операцій, тому для однозначного тлумачення виразу, що містить більше однієї операції, необхідно використати дужки. Виключенням із цього правила є асоціативні операції, які в дужках не мають потреби.

Всі вирази будуються зі знаків операцій, констант, змінних і індексованих масивів. Операції у виразх можуть бути:

арифметичними

а + b

сума а й b

а – b

різниця а й b

а * b

добуток а й b

а / b

результат розподілу а на b з округленням

a mod b

залишок від розподілу а на b (можна використати символ ‘\’)

– а

взяття а зі зворотним знаком

операціями відношень

а < b

TRUE, якщо а менше b

a <= b

TRUE, якщо а менше або дорівнює b

a = b

TRUE, якщо а дорівнює b

a >= b

TRUE, якщо а більше або дорівнює b

а > b

TRUE, якщо а більше b

а <> b

TRUE, якщо а не дорівнює b

логічними

a AND b

TRUE, якщо a u b — TRUE одночасно

a OR b

TRUE, якщо хоча б а або b — TRUE

a XOR b

TRUE, якщо тільки a або тільки b — TRUE

NOT а

TRUE, якщо а — FALSE, і навпаки

бітовими

а \/ b

побітове АБО для слів а й b

a /\ b

побітове И для слів а й b

NOT а

побітове заперечення слова a

а b (><)

побітова сума по модулі 2 слів а й b

а « b

зрушення слова а на b біт уліво

а » b

зрушення слова а на b біт вправо

Наприклад,

арифметичні вирази в процесі-примітиві присвоювання

Estimate := (Estimate + (x/Estimate))/2

або в процесі-примітиві виводу

values [i+1] ! (Estimate + (x/Estimate))/2

логічні вирази

string[BYTE i] <> object [BYTE i]

('0' <= char) AND (char <='9')

бітові вирази

(ch/\(l < bit.number)) <> 0

Бітові операції зсуву нециклічні, тобто вивільняють біты, що, заповнюються нулями.

Значення булевих констант TRUE і FALSE є словами, причому TRUE позначає слово, що цілком складається з одних одиниць, a FALSE - з нулів. Тому

(х /\ TRUE) завжди х

(х /\ FALSE) завжди 0

Мова Оккам дозволяє також будувати різні бітові рядки, а потім використовувати їх як цілі, логічні або булеві константи або змінні. Наприклад, значення виразу

(NOT 0) > 1

цілком складається з одних одиниць за винятком старшого розряду машинного слова, тобто є максимально представленим позитивним числом на конкретній ЕОМ. Важливо те, що вид цього виразу не змінюється при переносі програми з однієї ЕОМ на іншу. Ще один приклад:

y := (NOT(TRUE<8)) /\ y

Цей вираз виділяє молодший байт слова y.

Подібні операції над бітовими рядками дозволяють складати Оккам-програми, що не залежать від розрядності процесора, для якого вони призначаються.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]