- •1…Понятие информатики, информации, кодирования информации.
- •2…Системы счисления, переводы чисел из одной позиционной системы счисления в другую.
- •3… Понятия алгоритма: рекурсивные функции системы текстовых замен.
- •4… Способы описания языков программирования: бнф-нотации, синтаксические диаграммы
- •12…Оператор безусловного перехода, операторы продолжения и завершения, примеры использования.
- •16…Ввод/Вывод данных в с.
- •18…Производные типы данных, массивы, работа с массивами.
- •22…Файлы прямого и последовательного доступа к данным, форматизованный и неформатизованный ввод/вывод.
- •24…Понятие подпрограммы, назначение подпрограмм, использование подпрограмм.
- •26…Передача параметров в подпрограмму, параметры входные и выходные, параметры , передаваемые по значению и по адресу.
- •27…Использование подпрограмм, параметры формальные, локальные, глобальные, обращения к подпрограммам, фактические параметры.
- •28…Передача параметров массивов в подпрограмму, примеры.
- •29…Рекурсивные функции, примеры.
- •30…Понятие структурного программирования, этап проектирования – композиция и декомпозиция, понятие статической и динамической структуры программы, спецификация программы.
- •31…Понятие частичной и полной корректности программы, правила вывода – общий вид, правила консеквенции.
- •32… Правила вывода для операторов: пустого, присваивания, составного.
- •33… Правила вывода для оператора ветвления.
- •34… Правило вывода для операторов: оператора выбора, операторов цикла с параметром.
- •35… Правила вывода для циклов с предусловием и постусловием, пример использования правил вывода для реализации цикла с постусловием оператором цикла с постусловием.
- •36… Пример для доказательства правильности программы.
30…Понятие структурного программирования, этап проектирования – композиция и декомпозиция, понятие статической и динамической структуры программы, спецификация программы.
Структурное программирование:
Проектирование сверху вниз
Функциональное программирование
Структурное кодирование
Задача нахождения НОД.
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
Декомпозиция на три подзадачи:
положить x = a и y = b
если y ≠ 0, то а) уменьшить y и изменить x так, чтобы x и y оставались >= 0, и чтобы значение НОД(x,y) оставалось тем же. b) повторить второй этап
если 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
если 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:
Статическая и динамическая структура программы
Каждый алгоритм имеет статическую и динамическую структуру.
Статическая структура представляется текстом программы или его
структурной схемой, описывающими действия и проверки, которые
должны быть выполнены для решения конкретной задачи.
Статическая структура, текст не зависит от исходных данных.
Динамическая структура отражает процесс вычислений и
представляет собой последовательность состояний вычислений.
ДС зависит, определяется набором исходных данных, так как от
них зависит последовательность вычислений и переходов в
программе. Текущее состояние вычислений включает в себя
значения всех программных переменных в данный момент
времени и зависит от входных данных и от предыдущих состояний
вычислений.