Структурное программирование – это стиль программирования, позволяющий разрабатывать хорошо структурированные программы.
Основные положения структурного программирования:
- Программа разбивается на блоки, каждый из которых имеет один "вход" и один "выход".
- Любая программа может быть составлена из трех структур или блоков, которые представлены в таблице.
- Алгоритмы при структурном программировании представляются в виде структоргамм, элементы написания которых также приведены в таблице.
Таблица
Основные типы структур и примеры их изображения на структограммах
Название | Алгоритм | |
Блок-схема | Структограмма | |
а) линейная структура | ||
б) Ветвящаяся структура | ||
в) циклическая структура: | ||
с предусловием | ||
с постусловием |
Операторы цикла используются для многократного повторения аналогичных вычислений.
Для организации цикла в ТП имеются три различных оператора.
- Счетный оператор цикла For:
For <параметр цикла>:=<начальное значение> to <конечное значение> do Р;
|
|
P- простой или составной оператор.
При каждом прохождении цикла < параметр цикла >, начиная с <начального значения>, увеличивается на единицу. Цикл выполняется, пока <параметр цикла> не станет больше <конечного значения>.
Другой вариант записи оператора For:
For <параметр цикла >:=< начальное значение> downto <конечное значение> do Р;
В этом случае при каждом прохождении цикла < параметр цикла > уменьшается на единицу от <начального значения> до <конечного значения>.
- Оператор цикла While с проверкой предусловия:
While <условие> do P; {Пока выполняется условие, делать}
Цикл выполняется, пока условие истинно (true).
- Оператор цикла Repeat … until с проверкой постусловия:
Repeat P until <условие>; { Выполнять до тех пор, пока не будет выполнено условие}
Цикл выполняется, пока условие ложно (false).
Пример.
- Постановка задачи. Найти сумму 5 целых чисел от 1 до 5. Написать программы для определения суммы с помощью трех рассмотренных операторов цикла.
- Математическое описание.
- Структограммы и программы для каждого оператора цикла приведены в таблице:
Таблица
Структограммы и программы
Цикл For … | While… | Repeat… | |
3.1. | 3.2 | 3.3 | |
4.1: Program P2; Var i,S:integer; Begin S:=0; For i:=1 to 5 do S:=S+i; Writeln(‘S=’,S:5); End. | 4.2: Program P2; Var i,S:byte; Begin S:=0; i:=1; While i<=5 do Begin S:=S+i; I:=i+1; End; Writeln(‘S=’,S); End. | 4.3: Program P3; Var i,S:integer; Begin S:=0; i:=1; Repeat S:=S+i; I:=i+1; Until i>=6; Writeln(S); End. |
предназначен для ветвления программы на два направления.
Условный оператор позволяет проверить некоторое условие и в зависимости от результатов проверки выполнить то или иное действие.
|
|
Рассмотрим четыре варианта записи оператора IF:
- If <условие> then P1 else P2;
- If <условие> then P1;
- If (<условие1>) or (<условие2>) then P1 else P2;
- If (<условие1>) and (<условие2>) then P1 else P2;
где <условие>,<условие1>, <условие2> - переменные логического типа. Р1, Р2 - простые или составные операторы.
- В первом случае если условие истинно, то выполняется оператор P1, если ложно – то P2.
- Во втором варианте записана краткая форма оператора.
- В третьем и четвертом примерах два условия объединены служебными словами or (или) и and (и). В результате объединения получается новая логическая переменная, истинность которой определяется согласно следующей таблицы.
Таблица
Таблица истинности сложных условий: И - истинно, Л - ложно
(<условие1>) | И | И | Л | Л |
(<условие2>) | И | Л | И | Л |
(<условие1>) or (<условие2>) | И | И | И | Л |
(<условие1>) and (<условие2>) | И | Л | Л | Л |
Пример. Написать программу для решения квадратного уравнения a∙x2+b∙x+c=0.
Технологические операции программирования и их выполнение приведены в таблице
Таблица
N | Этапы программирования | Выполнение |
1. | Постановка задачи | Написать программу для решения квадратного уравнения a∙x2+b∙x+c=0. |
2. | Математическое описание | |
3. | Разработка структограммы | |
4. | Написание программы | Program P3; Var a,b,c,d,x1,x2:real; Begin a:=1; b:=3; c:=5; D:=sqr(b)-4*a*c; If D>=0 then Begin X1:=(-b+sqrt(D))/2/a; X2:=(-b-sqrt(D))/2/a; Writeln(x1,x2); End Else Writeln(‘Действ.корней нет’); End. |
5. | Отладка и получение результатов | Выполнить самостоятельно |