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

Практичне заняття 7 Опис вкладеного повторення і з’єднання у програмних специфікаціях

Мета – дослідити та набути практичних навичок з використання вкладених управляючих дій повторення та їх з’єднання при складанні програмних специфікацій

Приклади складення специфікацій

Задача 1.8. Задана множина послідовностей A[M,N], де M – номер послідовності, N – кількість елементів в m-ній послідовності. Знайти добуток суми елементів послідовностей

Рішення

Програмні специфікації запишемо у псевдокоді (рис.1.15) та графічній формі (рис.1.16)

Крок 1. Визначимо основні дії (рис.1.15,а і рис.1.16,а)

Крок 2. Деталізуємо дію знаходження добутку Р з використанням управляючої дії повторення (рис.1.15,б і рис.1.16,б)

Крок 3. Деталізуємо дію знаходження добутку Р (рис.1.15,в і рис.1.16,в)

Крок 4. Деталізуємо дію знаходження суми S елементів i-ої послідовності (рис.1.15,г і рис.1.16,г)

початок

Знайти добуток Р

кінець

початок

Р:= 1

i := 1

покиi <= M

повторити

Знайти добуток Р

i := i + 1

все повторити

кінець

а) крок 1 б) крок 2

початок

Р:= 1

i := 1

покиi <= M

повторити

Знайти суму S

Р := Р * S

i := i + 1

все повторити

кінець

початок

Р:= 1

i := 1

покиi <= M

повторити

S := 0

j := 1

покиj <= N

повторити

S := S + A[i,j]

j := j + 1

все повторити

Р := Р * S

i := i + 1

все повторити

кінець

в) крок 3 г) крок 4

Рис.1.15. Програмна специфікація розв’язання задачі 1.8 у псевдокоді

а) крок 1 б) крок 2

в) крок 3 г) крок 4

Рис.1.16. Програмна специфікація розв’язання задачі 1.8

Задачі для самостійного розв’язання

  1. Задана множина послідовностей А[m,n], де m – номер послідовності, n – кількість елементів в m - ній послідовності. Знайти добуток суми елементів послідовності

  2. Задана множина послідовностей А[m,n], де m – номер послідовності, n – кількість елементів в m - ній послідовності. Знайти добуток всієї множини послідовностей

  3. Задана множина послідовностей А[m,n], де m – номер послідовності, а n – кількість елементів в m - ній послідовності. Знайти максимальне число за абсолютною величиною із всієї множини послідовностей

  4. Задана множина послідовностей А[m,n], де m – номер послідовності, а n – кількість елементів в m - ній послідовності. Знайти добуток від’ємних чисел всієї множини послідовностей

  5. Задана множина послідовностей А[m,n], де m – номер послідовності, а n – кількість елементів в m - ній послідовності. Знайти номер мінімального числа в множині

  6. Задані дві послідовності P1 і P2. Замінити в другій послідовності входження чисел з P1 в P2 на частку від ділення суми підпослідовності з P1 на кількість елементів підпослідовності

  7. Задане натуральне число і послідовність чисел, яка складається із 0 та 1. Скласти специфікацію для моделювання операцій зсуву вліво (SHL) і зсуву вправо (SHR)

Розділ 5. Програмні конструкції

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

Рівні абстракції та віртуальні машини як засоби моделювання програм упровадили Н.Вірт [30] та Е.Дейкстра [37]. Поняття модуляризація як засобу інкапсуляції (конструктивного виокремлення компонентів програми) увів Д.Парнас, ґрунтуючись на понятті інтерфейсу та принципі інформаційного приховування (information hiding) [65]. Л. Константин, розробляючи метод структурного проектування програм, запропонував два критерії оцінювання якості інкапсуляції – зв’язування (cohesion) елементів програми в компоненти (модулі) та поєднання (coupling) модулів між собою при складанні програми. Нарешті, Б.Лисков та С.Зайлис завершили формування конструктивного погляду на компоненти програм, запропонувавши поняття абстрактного типу даних.

Для кожного типу програмних компонентів як будівельних конструкцій програми було розроблено відповідний метод застосування – процедурне (підпрограмне), модульне та об’єктно-орієнтоване програмування.