Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Структурное программирование. Трассировка программы




Трассировка программы

Языки блок-схем

 

В программировании важно отделять имена от значений. Очень похожие имена (формулы, языковые конструкции) могут обозначать разные вещи (функции), наоборот разные имена могут обозначать одну и ту же вещь.

В реальной жизни для того, чтобы отделить собственно имя от значения обычно используют кавычки:

‘Маша’ состоит из 4-х букв.

В языке блок-схем для этого используют рамку, например:

y:=succ(x)

здесь через succ обозначена одноместная функция – следующий за x в естественном порядке натуральных чисел.

 

Способы определения функций

 

Наиболее очевидный способ такой конструкции – это композиция или суперпозиция функции, описывающая последовательность применения функций.

φ(x)=f(g(x))

Функция φ – результат композиции функций f и g.

Обозначение суперпозиции процедур в терминах блок-схем.

P1 → P2

 

Содержательный смысл композиции – последовательное выполнение фиксированного, явно заданного числа действий.

 

Предикат – условие, определяемое как функция.

 

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

 

ение 1 неявно, до начала работы операторов программы.

 

 

Для выходных потоков определен оператор записи write(f,e), где e – некоторое выражение.

{f→<a1, a2, …, an>, e→X}

write(f,e)

{f→<a2, …, an, X>}

 

Выходные потоки изменяют количество компонентов, в ходе выполнения программы. Такие типы данных называются динамическими.

 

 

 

Очевидно, в ходе выполнения вычислений согласно некоторой блок-схеме для каждого входного состояния S выбирается некоторая ветка блок-схемы, т.е. последовательность операторных блоков S1, …, Sn. Последовательность значений S1(S), S2S1(S), …, SnSn-1…S1(S) называется трассой выполнения.

 

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

x,y:=y,x

x:=X y:=Y

x:=x•y y:=x/y x:=x/y z:=x x:=y y:=z x:=x+y y:=x-y x:=x-y

 

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

 

 

Самые простые для понимания алгоритмы – это линейные алгоритмы, представляющие собой последовательность или композицию операторных блоков, это вычисления с единственной трассой.

В общем случае произвольных блок-схем, множество всех трасс очень богато, его крайне трудно описать, такие блок-схемы с многообразными и запутанными трассами называют спагетти (блок-схем).

Идея упростить язык блок-схем с помощью выделения небольшого числа операторных конструкций соответствующих удобным и знакомым схемам определения функций.

Структурный подход к программированию выделяет три операторных конструкции (структуры):

1. Композиция

Если S1 и S2 – допустимые блок-схемы, то S1→ S2 также допустима.

Структура полного условного оператора. Блок-схема – определение (процедуры вычисления) оператора, состоящая из

- операторных блоков в квадратах,

- предикатных блоков в ромбах,

- значков Н (начало вычисления), К (конец вычисления) и

- соединяющих их стрелок.

 

При этом в операторный блок могут входить несколько стрелок, а выходит единственная. В условный блок входит несколько стрелок, а выходит – две, помеченных знаками + и -, соответствующих значениям true и false. Из значка Н выходит единственная стрелка, не входит ни одна. В значок К входит единственная стрелка, не выходит ни одна.

 

Содержательная семантика. После выполнения операторного блока выполняется блок, на который указывает единственная выходящая из него стрелка. После выполнения условного блока выполняется блок, на который указывает стрелка, иначе – в зависимости от условий. Первым выполняется блок, на который указывает стрелка Н, последним блок К.

 

 




Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 299; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.