Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
bILYeT_NOV_Ye.docx
Скачиваний:
72
Добавлен:
09.06.2015
Размер:
658.19 Кб
Скачать

30…Понятие структурного программирования, этап проектирования – композиция и декомпозиция, понятие статической и динамической структуры программы, спецификация программы.

Структурное программирование:

  1. Проектирование сверху вниз

  2. Функциональное программирование

  3. Структурное кодирование

Задача нахождения НОД.

I. Общая постановка: даны целые a и b, найти их НОД.

Пусть a и b ≠ 0 и есть НОД(a,b). Ноль делится на любое число, поэтому НОД(0, 0) = 0 и

НОД(u, v) = НОД(v, u) и

НОД(u, v) = НОД (-u, v) и

НОД(u, 0) = u

II. Даны целые, неотрицательные a и b, найти их НОД.

Проведем декомпозицию этой задачи. Предположим, что можно привести задачу нахождения НОД(a,b) для b > 0, к задаче нахождения НОД(x,y), где x и y тоже неотрицательные и y < b. Тогда после выполнения такого преобразования конечное число раз, придем к ситуации, когда y = 0. С учетом соотношений получим

НОД(a, b) = НОД (x, y) = x

Декомпозиция на три подзадачи:

    1. положить x = a и y = b

    2. если y ≠ 0, то а) уменьшить y и изменить x так, чтобы x и y оставались >= 0, и чтобы значение НОД(x,y) оставалось тем же. b) повторить второй этап

    3. если y = 0, положить НОД(a,b) = x

Первая и третья задача уже достаточно просты, а вторая …решена Евклидом:

III. Если (x div y) – целая часть, а (x mod y) – остаток, то x = (x div y) * y + (x mod y)

и если x и y делятся на какое-то число, то на это число будет делиться y и x – (x div y) * y, то есть y и (x mod y)

и НОД(x, y) = НОД(y, x mod y),

так как (x mod y) < y, эти рассуждения показывают как «уменьшить» y и «изменить» x во второй подзадаче. Алгоритм:

1) положить x = a и y = b

    1. если y ≠ 0, то

а) установить r = x mod y b) положить x = y с) положить y = r. d) повторить второй этап

3) если y = 0, положить НОД(a,b) = x

  • В исходной постановке задаче только входные данные a и b, мы ввели в рассмотрение три переменные: x, y и r >= 0 …..

Представим этапы проектирования блок-схемами…

1. -- a>0, b>=0 2. -- a>0, b>=0

Найти НОД(a, b) положить x = a и y = b

--НОД(a, b) = x -- НОД(a, b)= НОД(x, y)

y ≠ 0 нет

НОД(a, b)= НОД(x, y) ---

да -- НОД(a, b) = x

уменьшить Y и изменить x

с сохранением НОД

3. -- a>0, b>=0

положить x=a

положить y = b

-- НОД(a, b)= НОД(a, b)

y ≠ 0 нет

да -- НОД(a, b) = x

НОД(a, b)= НОД(x, y) r = x mod y

x = y

y = r

Это процесс декомпозиции

Способы композиции действий, составляющих алгоритм:

линейная,

итерационная. Продолжение декомпозиции – положить r = x mod y:

Статическая и динамическая структура программы

Каждый алгоритм имеет статическую и динамическую структуру.

Статическая структура представляется текстом программы или его

структурной схемой, описывающими действия и проверки, которые

должны быть выполнены для решения конкретной задачи.

Статическая структура, текст не зависит от исходных данных.

Динамическая структура отражает процесс вычислений и

представляет собой последовательность состояний вычислений.

ДС зависит, определяется набором исходных данных, так как от

них зависит последовательность вычислений и переходов в

программе. Текущее состояние вычислений включает в себя

значения всех программных переменных в данный момент

времени и зависит от входных данных и от предыдущих состояний

вычислений.

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