Введение
Структурное программирование является первым направлением, которое оформилось в виде парадигмы. Предпосылкой этого был тот факт, что Э. Дейкстра выявил обратную зависимость между числом неограниченных операторов перехода go to и качеством программы. Качество программы в данном случае определялось двумя показателями – скоростью отладки и степенью надежности.
Так появилась парадигма структурного программирования, которое многие имеют просто как «программирование без go to». В основе данной технологии лежит простой факт, гласящий о том, что любая структура управления может быть функционально эквивалентно выражена суперпозицией последовательного выполнения, ветвления по условию и цикла с предусловием.
Подобный стиль программирования предполагает проведение тестовых испытаний всех завершенных модулей в случае добавления или редактирования любого модуля. Это требует дополнительных трудозатрат, однако оказывает чрезвычайно благотворное психологическое воздействие на разработчика, и еще более благотворное воздействие такой стиль программирования оказывает на заказчика. Важно отметить, что свойство структурности программы не предопределяется системой программирования – оно вносится самим программистом. Любая программа в любой системе программирования может быть написано структурно, а может и не структурно (например, с использованием оператора безусловного перехода go to).
Информатика 11 класс (Урок№4 — Вспомогательные алгоритмы.)
- Понятие структурного программирования
- История структурного программирования и проектирования программ
- Основы структурного программирования
- Принципы структурного программирования
- Методика разработки программ
- программирование должно осуществляться «сверху вниз»;
- весь проект должен быть разбит на модули/подпрограммы с одним входом и одним выходом;
- любая подпрограмма должна допускать только три основные структуры: последовательное выполнение операторов, ветвление и цикл;
- недопустим оператор безусловной передачи управления goto;
- документация должна создаваться одновременно с программированием, частично в виде комментариев к программе. Применение принципов и методов структурного программирования позволяет повысить надежность программ (благодаря хорошему структурированию при проектировании программа легко поддается тестированию и отладке) и их эффективность (структурирование программы позволяет легко находить и корректировать ошибки, а отдельные подпрограммы можно переделывать/модифицировать независимо от других), уменьшить время и стоимость программной разработки, улучшить читабельность программ.
- Берг О.Ю. Метрики оценки качества программного обеспечения // Труды международного симпозиума надежность и качество. — Пенза: Пензенский государственный университет, 2005. — Т.1. — С. 321-322.
- Благодатских В.А. Стандартизация разработки программных средств / Благодатских В.А., Волнин В.А., Поскакалов К.Ф. — М.: Финансы и статистика, 2005. — 288 с.
- Валова О.В. Программная инженерия. — Чита: Читинский гос. ун-т, 2009. — 175 с.
- Захарова А.А. Информатика и программирование: программные средства реализации информационных процессов / А.А. Захарова, Е.В. Молнина, Т.Ю. Черныева. – Томск: Изд-во ТПУ, 2013. – 318 с.
- Звездин С.В. Проблемы измерения качества программного кода // Вестник Южно-Уральского государственного университета. Серия: Компьютерные технологии, управление, радиоэлектроника. — 2010. — № 2. — С. 62-66.
- Иванова Г.С. Технология программирования. – М.: Изд-во МГТУ им. Н.Э. Баумана, 2014. – 56 с.
- Кознов Д.В. Введение в программную инженерию. — М.: Национальный открытый университет «Интуит», 2016. — 307 с.
- Константайн Л., Локвуд Л. Разработка программного обеспечения. — СПб: Питер, 2004. — 592 с.
- Липаев В.В. Качество программных средств. — М.: Янус-К, 2002. — 400 с.
- Макарова Н.В. Основы программирования. — М.: КНОРУС, 2016. — 454 с.
- Мухортов В.В. Объектно-ориентированное программирование, анализ и дизайн / В.В. Мухортов, В.Ю. Рылов. – Новосибирск: Изд-во ООО «Новософт», 2012. – 108 с.
- Назаров С.В., Белоусова С.Н., Бессонова И.А., Гиляревский Р.С., Гудыно Л.П. Введение в программные системы и их разработку. — М.: Интернет-Университет Информационных Технологий (ИНТУИТ), 2012. — 456 с.
- Назаров С.В. Архитектуры и проектирование программных систем. — М.: ИНФРА-М, 2013. — 413 с.
- Новиков Ф.А. Технологические подходы к разработке программного обеспечения. – СПб.: Изд-во ИТМО, 2014. -137 с.
- Соловьев С.В. Технология разработки прикладного программного обеспечения / С.В. Соловьев, Л.С. Гринкруг, Р.И. Цой. – М.: БИНОМ, 2012. – 321 с.
- Степович-Цветкова Г.С. Стандарты качества компьютерных программ // Наука сегодня. Сборник научных трудов по материалам VII международной научно-практической конференции: в 4 частях. Научный центр «Диспут». — Вологда: ООО «Маркер», 2015. — С. 96-97.
Источник: kopilkaurokov.ru
Подпрограммы, процедуры и функции
Урок 13
§9 (1, 2). Структурное программирование
Программирование как род занятий и сфера деятельности интенсивно развивается со второй половины прошлого века. За это время сложились определённые технологии, способствующие повышению производительности труда программистов, в том числе сокращению числа ошибок, упрощению отладки, модификации и сопровождения программного обеспечения. Особенно это важно при разработке больших и сложных программных комплексов, осуществляемой усилиями целых коллективов программистов.
Одна из таких технологий — структурное программирование — была разработана ещё в начале 70-х годов прошлого века и связана с именем выдающегося нидерландского ученого Эдсгера Дейкстры (1930-2002).
Структурное программирование — технология разработки программного обеспечения, в основе которой лежит представление программы в виде иерархической структуры логически целостных фрагментов (блоков).
Перечислим некоторые принципы структурного программирования.
1. Любая программа строится из трёх базовых управляющих конструкций: последовательность, ветвление, цикл.
2. В программе базовые управляющие конструкции могут быть вложены друг в друга произвольным образом.
3. Повторяющиеся фрагменты программы можно оформить в виде подпрограмм (процедур и функций). В виде подпрограмм можно оформить логически целостные фрагменты программы, даже если они не повторяются.
4. Все перечисленные конструкции должны иметь один вход и один выход.
5. Разработка программы ведётся пошагово, методом «сверху вниз».
Cкачать материалы урока
Источник: xn—-7sbbfb7a7aej.xn--p1ai
Структурное программирование. Лекция 3
Теорема Бёма – Якопини – любой исполняемый алгоритм
может быть преобразован к структурированному виду, то есть
такому виду, когда ход его выполнения определяется только
при помощи трех структур управления: последовательной,
ветвлений и повторов (циклов) [1].
Коррадо Бём
• последовательность – обозначается: f THEN g,
• ветвление – обозначается: IF p THEN f ELSE g,
• цикл – обозначается: WHILE p DO f,
где f, g – блок-схемы с одним входом и одним выходом, р – условие,
THEN, IF, ELSE, WHILE, DO – ключевые слова.
1. Bohm, Corrado; and Giuseppe Jacopini (May 1966). «Flow Diagrams, Turing Machines and Languages with Only Two
Formation Rules». Communications of the ACM 9 (5): 366–371. DOI:10.1145/355592.365646
3
4.
Принципы структурного программирования
Принцип 1. Следует отказаться от использования
оператора безусловного перехода goto.
Принцип 2. Любая программа строится из трех базовых
управляющих
конструкций:
последовательность,
ветвление, цикл.
Эдсгер Вибе Дейкстра
Последовательность – однократное выполнение операций в том порядке,
в котором они записаны в тексте программы.
Ветвление – однократное выполнение одной из двух или более операций, в
зависимости от выполнения заданного условия.
Цикл – многократное исполнение одной и той же операции до тех пор,
пока выполняется заданное условие (условие продолжения цикла).
4
5. Управляющие конструкции
6. Принципы структурного программирования
Принцип 3. В программе базовые управляющие
конструкции могут быть вложены друг в друга
произвольным образом. Никаких других средств
управления последовательностью выполнения
операций не предусматривается.
Вложенный цикл – цикл, входящий в тело другого цикла.
• вложенный цикл по отношению к циклу, в тело которого
он вложен, будет называться внутренним циклом.
• цикл, в теле которого существует вложенный цикл, будет
называться внешним циклом.
• количество уровней вложенности не ограничено.
6
7.
Принципы структурного программирования
Принцип 4. Повторяющиеся фрагменты программы можно оформить
в виде подпрограмм (процедур и функций). Таким же образом (в виде
подпрограмм) можно оформить логически целостные фрагменты
программы, даже если они не повторяются.
Функция – это подпрограмма специального вида, которая, кроме
получения параметров, выполнения действий и передачи результатов
работы через параметры имеет еще одну особенность – она всегда должна
возвращать результат.
Процедура – это независимая именованная часть программы, которую
после однократного описания можно многократно вызвать по имени из
последующих частей программы для выполнения определенных действий.
7
8. Принципы структурного программирования
Принцип 5. Каждую логически законченную группу инструкций следует
оформить как блок.
Блок – это логически сгруппированная часть исходного кода.
C
Python 3
обращение к блоку происходит PascalABC.NET
var n,s:integer; #include
n = 0
как к единой конструкции;
begin
s = 0
void main()
while s блоки
применяются
для n := 0;
s := 0;
s = s + 3
ограничения области видимости; while s n = n + 2
n = 0;
print(n)
блоки могут быть пустыми или begin
s := s + 3;
s = 0;
вложенными один в другой;
n := n + 2;
while (s границы
блока
выделяются end;
write(n)
s = s + 3;
разными конструкциями;
end.
n = n + 2;
>
блоки
являются
основой
структурного программирования.
print(“%d)”,n);
8
>
9. Принципы структурного программирования
Принцип 6. Все
перечисленные
конструкции
должны
иметь
один вход и один
выход.
• красный цвет указывает на вход, зеленый на выход;
• в случае условий выход будет один из двух, отмеченных в блок-схеме.
9
10. Принципы структурного программирования
Принцип 7. Разработка программы ведется пошагово, методом
«сверху вниз» (top–down method)
• разработка основной программы, в
которой вместо каждого связного
логического фрагмента текста
вставляется вызов функции, которая
будет выполнять этот фрагмент;
• вместо функций в программу
вставляются фиктивные части –
«заглушки», которые ничего не делают;
• проверка и отладка программы;
• последовательная замена заглушек по
механизму, описанному выше.
10
11. Варианты ветвлений
Условный оператор
Условный оператор с одной ветвью
if p then f
Условный оператор с двумя ветвями
if p then f else s
Условный оператор с несколькими
условиями
if p1 then f else if p2 then s …
Переключатель
(оператор выбора)
Оператор выбора (case, switch)
11
12. Варианты ветвлений (реализация)
PascalABC.NET
if a > 0 then
writeln(“yes”)
else
writeln(“no”);
C
if (a > 0) printf(“yes”);
> else print(“no”)
>
PascalABC.NET
Case someChar of
‘a’: actionOnA;
‘x’: actionOnX;
‘y’,‘z’: actionOnYandZ;
else actionOnNoMatch;
end
Shell
if [ $a –gt 0]; then
echo “yes”
else
echo “no”
fi
C
Python 3
if a > 0:
print(“yes”)
else:
print(“no”)
Shell
Switch (someChar) case $coneChar in
case ‘a’: actionOnA; break;
a)
actionOnA ;;
case ‘x’: actionOnX; break;
x)
actionOnX ;;
case ‘y’:
[yz]) actionOnYandZ ;;
case ‘z’: actionOnYandZ; break;
*)
actionOnNoMatch ;;
default: actionOnNoMatch;
esac
>
12
13. Варианты циклов. Цикл с предусловием (while)
Цикл с предусловием (while) – цикл, который выполняется, пока истинно
некоторое условие, указанное перед его началом (тело может быть не
выполнено ни разу).
PascalABC.NET
program Fact;
var
Counter, Factorial: integer;
begin
Counter := 5;
Factorial := 1;
while Counter > 0 do
begin
Factorial := Factorial * Counter;
Counter := Counter — 1
end;
WriteLn(Factorial)
end.
PHP
$counter = 5; $factorial = 1;
while($counter > 0) $factorial *= $counter;
$counter—;
>
print $factorial;
13
14. Варианты циклов. Циклы с постусловием
Цикл с постусловием (repeat … until) – цикл, в котором условие
проверяется после выполнения тела цикла. Пока условие ложно.
Цикл с постусловием (do … while) – цикл, в котором условие проверяется
после выполнения тела цикла. Пока условие истинно.
Тело в любом варианте выполняется хотя бы один раз.
PascalABC.NET
repeat
until
Цикл с постусловием
(repeat … until)
С
do
> while ()
14
15. Варианты циклов. Цикл со счетчиком (for)
Цикл со счетчиком (for) – цикл, в котором некоторая переменная изменяет
свое значение от заданного начального значения до конечного значения с
некоторым шагом, и для каждого значения этой переменной тело цикла
выполняется один раз.
JavaScript
for (var i = 0; i < 5; i++) // .
>
Lua
MATLAB
for i = start, stop, interval do for n = 1:5
— statements
— statements
end
end
15
16. Пропуск итерации и досрочный выход из цикла
Досрочный выход из цикла. Команда
for i in range(1, 6, 1):
досрочного выхода применяется, когда
if i == 3:
необходимо прервать выполнение цикла, в
котором условие выхода еще не достигнуто.
break
Команда досрочного выхода обычно
print(i)
называется exit или break
Пропуск итерации. Данный оператор
применяется, когда в текущей итерации
цикла необходимо пропустить все команды
до конца тела цикла.
Команда пропуска итерации обычно
называется continue
for i in range(1, 6, 1):
if i == 3:
continue
print(i)
16
Источник: ppt-online.org