Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по ПА и ПО (с пояснениями).doc
Скачиваний:
10
Добавлен:
23.09.2019
Размер:
851.97 Кб
Скачать

Структурное программирование (без go to).

Структурное программирование – такой тип программирования при котором на каждом шаге детализации используется только стандартные управляющие структуры.

Простая программа – программа которую можно представить в виде блок-схемы со следующими св-вами: 1) имеется только одна входная и одна выходная ветвь 2) для каждого узла существует путь от входа к выходу проходящей через этот узел.

К таким структурам относятся 3 управляющие структуры:

1 ) следование: -императивные языки (Pascal, C, …)

декоративные языки (ненужно писать алгоритм, а только сформулировать задачу) (Prolog).

2) Ветвление (if): 3) цикл с предусловием (do while):

Доказано, что достаточно иметь в языке эти 3 структуры чтобы реализовать любой алгоритм.

Примеры:

При структурном программировании процесс детализации структуры программы можно представить как:

Программа представлена одним блоком;

do while (проектирование не закончено)

заменить очередной блок простой программой;

end;

Такой подход исключает использование оператора “go to”. “go to” может использоваться только для реализации стандартных управляющих конструкций.

Пример (Fortran):

if (a. it. b) go to 100 //если то идти на метку 100

100 continue

c:=sqrt(b);

Пример программы с беспорядочной передачей управления:

if (a. it. b) go to 100

12 continue

go to 11

100 continue

c:=sqrt(b)

11:=1+sqrt(b)

go to 12

Указанные управляющие структуры позволяют создавать формальное описание программы.

Например, пусть некоторая программная ф-ция задана следующей управляющей структурой: f(x): if p(x) then g(x) else h(x);

Такую программную ф-цию можно формально представить в виде:

f(x) = [p(x) => g(x)]U[ p(x) => h(x)]

Такого рода описания могут быть получены для любых управляющих структур или для всей программы. При таком способе ф-ции выражаются через ф-ции. Если используется goto, то такие формальные выражения записать невозможно, а они позволяют доказать правильность программы.

Все современные алгоритмические языки обязательно включают указанные управляющие структуры. Они являются min-ым набором. На их основе могут быть созданы более сложные специализированные управляющие структуры. Например, цикл с постусловием.

repeat

| набор операторов;

until (условие)

На основе стандартного набора:

набор операторов;

| do while ( условие);

end do

Для замены goto для передачи управления вперёд в некоторых языках используется оператор leave – передать управление за пределы той управляющей конструкции, где он встретился (например, цикл).

| do while (условие)

| …

| if (ошибка) leave;

| end

leave применяется в ситуации ошибок ввода-вывода.

1.2.4. Язык проектирования (метаязык)

Метаязык -это один из способов документирования алгоритмов. Язык проектирование создаётся самими разработчиками “под себя”. Помимо наглядности для разработчика, алгоритм понятен и неспециалисту. В тексте программы на метаязыке допустимо использовать любые выражения, что позволяет гибко управлять степенью детализации. Прог-у на языке проектирования нельзя выполнить. Могут быть созданы автоматические анализаторы (PDL).

В отличии от блок-схем, язык проектирования позволяет описывать типы и структуры данных.

Рекомендации к созданию языка проектирования:

  • Язык проектирования состоит из 2-х частей

  1. заданного набора операторов, построенных по образцу языков проектирования

  2. общего неопределяемого синтаксиса, пригодного для описания задач в данной области.

    • Следует использовать общепринятые управляющие структуры: следование, if then else или do while, repeat until, do case, leave, оператор вызова процедуры.

    • Необходимо определить способ обозначения областей действия операторов.

do while ( условие )

|

end do

Или могут использоваться отступы:

|if условие then

|_набор операторов;

Продолжение текста;

Кроме слов end do и end if можно использовать операторные скобки, ограничивающие область действия (begin end, {}).

Но тем не менее обязательно нужно использовать отступы.

  • Описание языка проектирования обязательно включается в конструкторскую документацию.

Пример: образец спецификации языка проектирования PDL.

Язык включает в себя следующие группы операторов:

  1. Оператор выбора

if выражение

then оператор1;

else оператор2;

где слова оператор1 и оператор2 могут обозначать и группу операторов. И в дальнейшем так же.

  1. Оператор множественного выбора

do case ( выражение )

| /индекс1/ оператор1;

| /индекс2/ оператор2;

|

| /индекс n/ оператор n;

| else оператор n+1;

end;

  1. Оператор цикла

3.1 ( с предусловием )

do while ( выражение )

| операторы;

end;

3.2 ( со счетчиком )

do переменная = значение1 to значение2 by значение3

| операторы;

end;

4. Оператор описания данных

declare имя атрибуты(тип); - объявление скалярных переменных.

Объявление массива или векторной переменной:

declare имя(размер) атрибуты(тип);

Допускается и описание более сложных структур данных:

declare 1_A,

_2_B,

_3_C,

_3_D,

_2_E,

_2_F;

Обращение: A.B.D=2;

5. Другие операторы:

5.1 Оператор присваивания

переменная = выражение;

5.2 Оператор вызова процедуры

call имя_процедуры(список фактических параметров);

5.3 Возврат из подпрограммы или функции

return (значение)

5.4 Описание процедуры

Имя_процедуры: procedure (описание формальных параметров);

| тело процедуры

end;

    1. Оператор ввода get (список переменных)

    2. Оператор вывода put (список переменных)

6. Предложения на естественном языке

Например:

Наибольший элемент массива А;

Отсортировать список S1 по алфавиту;

A:=E*D;

x(t)= h(t, )y( )d с шагом =0,01с

и тд.