Алгоритмизация. Процедурно-ориентированное программирование. Вопросы: Алгоритм. Блок-схема. Процедурное программирован

Содержание

Слайд 2

Ключевые слова * Key words Алгоритм Блок-схема Модуль Процедура Процедурная декомпозиция

Ключевые слова * Key words

Алгоритм
Блок-схема
Модуль
Процедура
Процедурная декомпозиция
Процедурное программирование
Модульное программирование
Структурное программирование

Algorithm
Flow chart
Module
Procedure
Procedure

decomposition
Procedure programming
Modular programming
Structured programming
Слайд 3

Идея: Чтобы решить задачу, надо Разработать последовательность элементарных действий →разработать алгоритм

Идея:

Чтобы решить задачу, надо
Разработать последовательность элементарных действий
→разработать алгоритм
Каждое действие преобразовать

в инструкции, понятные компьютеру
→ написать текст программы
Слайд 4

Алгоритм - точно определённая последовательность действий для решения задачи. Страница из

Алгоритм

- точно определённая последовательность действий для решения задачи.

Страница из «Китаб ал

джабр ал Хорезми», старейшей арабской работы по алгебре
Слайд 5

Процедура законченная точно определённая последовательность операций для решения отдельной задачи. Procedure

Процедура

законченная точно определённая последовательность операций для решения отдельной задачи.
Procedure Vvod_ID(var x,y:byte);
Begin


End;

Слайд 6

Особенности процедурного (модульного) программирования Процедурная декомпозиция - разделение большой программы на

Особенности процедурного (модульного) программирования

Процедурная декомпозиция - разделение большой программы на отдельные

части, процедуры (модули) - облегчает разработку, отладку и сопровождение программы.
В свою очередь модуль также представляет собой совокупность процедур.
Программа всегда имеет начальную процедуру и окончание.
Для начала действия последующей процедуры необходимо завершение всех действий предшествующей процедуры.
Вся программа может быть представлена в виде направленной последовательности графических блоков:
Слайд 7

Блок-схема алгоритма (ГОСТ 19.701-90)

Блок-схема алгоритма (ГОСТ 19.701-90)

Слайд 8

Слайд 9

Слайд 10

Сложность программы = f (количество строк программного кода)? Фредерик Брукс. «Мифический

Сложность программы = f (количество строк программного кода)?

Фредерик Брукс.
«Мифический человеко-месяц,
или

Как создаются программные системы»
Слайд 11

Закон Брукса ☹ Глава 2. Мифический человеко-месяц 2.1 Программные проекты чаще

Закон Брукса ☹

Глава 2. Мифический человеко-месяц
2.1 Программные проекты чаще проваливаются

из-за нехватки календарного времени, чем по всем остальным причинам, вместе взятым.
2.2 Чтобы приготовить вкусную пищу, нужно время; некоторые задачи нельзя ускорить, не испортив результат.
2.3 Все программисты являются оптимистами: "Все будет хорошо".
2.4 Поскольку программист работает с чистыми идеями, мы не ожидаем особых трудностей при реализации.
2.5 Но сами наши идеи бывают ошибочными - отсюда и ошибки в программах.
2.6 Наши методы оценивания, основанные на учете затрат, смешивают затраты с полученным результатом. Человеко-месяц является ошибочным и опасным заблуждением, поскольку предполагает, что месяцы и количество людей можно менять местами.
2.7 Разделение задачи между несколькими людьми вызывает дополнительные затраты на обучение и обмен информацией.
2.8 Мое практическое правило: 1/3 времени - на проектирование, 1/6 - на написание программы, 1/4 - на тестирование компонентов и 1/4 - на системное тестирование.
2.9 Как научной дисциплине нам не хватает методов оценки.
2.10 Поскольку мы не уверены в своих оценках сроков работы, нам часто не достает смелости упрямо отстаивать их под нажимом руководства и клиентов.
2.11 Закон Брукса: если проект не укладывается в сроки, то добавление рабочей силы задержит его еще больше.
2.12 Добавление рабочей силы увеличивает общий объем затрат тремя путями: труд по перекраиванию задач и происходящее при этом нарушение работы, обучение новых людей, дополнительное общение.
Слайд 12

Закон Платта ☹ «Любой проект по разработке ПО потребует в три

Закон Платта ☹

«Любой проект по разработке ПО потребует в три раза

больше времени, чем вы рассчитываете, даже если вы учитываете этот закон»

Дэвид С.Платт, «Software Legend» по признанию Microsoft в 2002г.

Nickname: "The Mad Professor"

Слайд 13

«Death March» ☹ Edward Yourdon. «Death March. The Complete Software Developers’s

«Death March» ☹

Edward Yourdon. «Death March. The Complete Software Developers’s Guide

to Surviving “Mission Impossible” Projects»
Эдвард Йордон. «Путь камикадзе. Как разработчику программного обеспечения выжить в безнадёжном проекте»

Эдвард Йордон - автор и соавтор более двух десятков книг, включая "Путь камикадзе”, “Закат и падение американского программиста" ,"Подъем и возрождение американского программиста". В июне 1977 г. он был официально объявлен членом Зала славы компьютеров, объединяющим таких выдающихся людей, как Чарльз Бэббидж, Сеймур Крей, Джемс Мартин, Грейс Хоппер, Джеральд Вайнберг и Билл Гейтс. Широко известный как соавтор популярной методологии Коуда/Йордона, он создал и возглавил YOURDON - консалтинговую компанию, которая обучила уже более 250 000 человек во всем мире.

Слайд 14

Ветвления – «корень зла»?! Безусловный переход: GOTO Условный переход: IF THEN

Ветвления – «корень зла»?!

Безусловный переход:
GOTO <номер строки/метка>
Условный переход:
IF <условие>
THEN

<путь1>
ELSE <путь2>
Цикл:
DO WHILE <условие>
<тело цикла>
ENDDO
REPEAT
<тело цикла>
UNTIL <условие>
Выбор варианта:
DO CASE <выражение> OF
<значение1>: <путь1>
<значение2>: <путь3>

ENDDO
Слайд 15

За программирование без «GOTO»!

За программирование без «GOTO»!

Слайд 16

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

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

- методология и технология разработки программных комплексов, основанная на принципах:
-

нисходящего программирования;
- модульного программирования.
Основа методологии: процедурная декомпозиция на всех уровнях проектирования программной системы.

Эпоху
Структурного
Программирования
начали «Заметки о структурном программировании» (1960) датчанина
Эдсгера Дейкстры.

Слайд 17

«Структурирующая» блок-схема: вместо ветвления – линейный участок!

«Структурирующая» блок-схема: вместо ветвления – линейный участок!

Слайд 18

Правила хорошего стиля! Старайтесь, чтобы имена переменных отражали смысл их содержимого

Правила хорошего стиля!

Старайтесь, чтобы имена переменных отражали смысл их содержимого
Не используйте

одну и ту же переменную в разных смыслах
Пишите комментарии! Одна строка = один оператор + один комментарий
Выделяйте отступами блоки, вложенные циклы и условные операторы
Оптимальный по размерам модуль целиком должен помещаться на экране
Избегайте неявного преобразования типов данных

Слайд 19

Расчёт сложных процентов: условие задачи Дано: капитал Q вкладывается в предприятие

Расчёт сложных процентов: условие задачи

Дано: капитал Q вкладывается в предприятие с

ежегодным приростом D%.
Определить: текущую величину капитала в течение первых N лет.
Слайд 20

Расчёт сложных процентов: решение задачи Условие задачи. Дано: капитал Q вкладывается

Расчёт сложных процентов: решение задачи

Условие задачи.
Дано: капитал Q вкладывается в предприятие

с ежегодным приростом D%.
Определить: текущую величину капитала в течение первых N лет.
Решение:
Прирост D% означает увеличение капитала в (1+D/100) раз.
Введём коэффициент увеличения Draz = 1+ D/100.
Тогда текущая величина капитала по итогам:
1-го года равняется Q * Draz;
2-го года равняется Q * Draz * Draz;
…;
N-го года равняется Q * Draz.* Draz * …* Draz (умножать N раз).