Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
ций отображают состояния в состояния. Эти изменения состояний используются
для определения смысла программных конструкций.
Такие языковые конструкции, как выражения, отображаются в значения, а не
в состояния.
Денотационная семантика. Выражения.Будем рассматривать очень простые выражения:
. в них используется только одна операция + или ∗;
. операндами являются только целые переменные и константы;
. скобки не используются;
. значение выражения — целое число.
BNF-правила для таких выражений имеют вид:
<expr> ::= <dec_num><var><bin_expr>
<bin_expr> ::= <left_expr> <op> <right_expr>
<op> ::= +*
1. Выражение является десятичным числом. В этом случае всю работу выполняет
семантическая функция Mdec.
2. Выражение является переменной. Проверяется: имеет ли переменная значение;
после чего значение возвращается из состояния программы S с помощью функ-
ции VARMAP. Если же значение не определено, фиксируется ошибка.
3. Выражение содержит операцию, которая применяется к значениям аргументов,
вычисляемых рекурсивными вызовами функции Me.
Денотационная семантика. Операторы присваивания и циклы с предусловием.По сути, выполнение оператора присваивания складывается из вычисления вы-
ражения (из правой части) и занесения в переменную (из левой части) значения
выражения.
Циклы с предусловием.
При отсутствии ошибок значение цикла — это значения программных перемен-
ных после выполнения в цикле операторов, причем заданное число раз.
По сути, здесь цикл преобразуется из итерации в рекурсию. Необходимость
преобразования диктуется простым соображением: математически рекурсию
описать легче, чем итерацию. Для управления количеством рекурсивных вызовов
используются вспомогательные семантические функции.
Требования структурированного программирования.1. Следует отказаться от использования оператора безусловного перехода goto.
2. Любая программа строится из трёх базовых управляющих конструкций: последовательность, ветвление, цикл.
3. В программе базовые управляющие конструкции могут быть вложены друг в друга произвольным образом.
4. Каждую логически законченную группу инструкций следует оформить как блок
5. Все перечисленные конструкции должны иметь один вход и один выход.
6. Разработка программы ведётся пошагово, методом «сверху вниз»
Структурированный поток управления (композиция, развилка, цикл).Для облегчения понимания операторы императивного языка программирования
должны обеспечивать структурированный поток управления.
Структурированным называют поток управления, который удобен для понима-
ния человеком и максимально близок к структуре текста программы.
Программа является структурированной, если ее поток управления очевиден
из структуры программного текста.
. Композиция. Эта структура является средством группировки линейной после-
довательности простых операторов.
. Ветвление. Структура обеспечивает выбор для выполнения одной из нескольких
альтернативных последовательностей операторов.
. Цикл. Последовательность операторов может повторяться многократно, ноль
или более раз. Ноль означает, что последовательность может быть вообще
пропущена.
Циклы: оператор For.В общем случае оператор цикла for для С-подобных языков задает не определенное
заранее количество повторений.
Оператор for языка С имеет следующий вид:
for (выражение_1; выражение_2; выражение_3)
тело цикла
Как видим, секция управления содержит три выражения:
. выражение_1 — вычисляется перед входом в цикл;
. выражение_2 — определяет условие продолжения цикла;
. выражение_3 — вычисляется перед каждой следующей итерацией цикла.
Внутри всех выражений могут содержаться присваивания. Первое выражение
может использоваться для инициализации цикла и вычисляется только один раз
в начале выполнения оператора for. Второе выражение предназначено для управ-
ления повторениями, оно вычисляется перед каждым выполнением тела цикла. Как
это принято в языке С, нулевое значение означает ложь, а все ненулевые значения
означают истину. Если значение второго выражения равно нулю, то происходит
выход из цикла; в противном случае тело цикла повторяется. Третье выражение
применяется для подготовки следующей итерации и вычисляется после каждого
выполнения тела цикла. Например, оно может обеспечивать увеличение счетчика
цикла.
Развилка – оператор выбора.Оператор выбора позволяет произвести ветвление по одному из многих вариантов.
Причем каждый вариант может включать один оператор или целую группу опе-
раторов. Следовательно, оператор выбора может рассматриваться как обобщение
условного оператора. Конечно, ветвление по многим направлениям можно реали-
зовать и с помощью условных операторов, но такое решение оказывается трудным
для чтения, громоздким и ненадежным.
Оператор выбора в языке Pascal называется case-оператором и имеет следую-
щий вид:
case выражение of
список констант 1: оператор_1;
список констант n: оператор_n;
end
Количество значений выражения должно быть счетным (дискретным). Вы-
бираемые операторы могут быть либо отдельными, либо составными. Семантика
оператора заключается в следующем: вычисляется выражение, и его значение
сравнивается с константами во всех списках констант. Если найдено совпадение,
то управление передается оператору, приписанному к соответствующей константе.
После выполнения этого оператора происходит выход из case-оператора.
Синтаксис операторовСинтаксис операторов оказывает решающее воздействие на регулярность языка, удобство
чтения и создания программы. В одних языках принята единая форма для записи
операторов, в других различные виды операторов имеют разные формы типов.
В первом случае говорят о максимальной регулярности языков, во втором — об
удобстве чтения и написания программ.
Поток управления Си. Присваивания, цикл For, операторы Break и Continue.Поток управления — это последовательность передач управления между опера-
торами. Он задает порядок выполнения операторов.
Программа вводится в компьютер как последовательность строк. Отдельные
строки программы могут выполняться неоднократно, приводят к долгим вычис-
лениям.
В языке C в качестве формы более безопасного управления переходами пред-
усмотрен оператор break. Этот оператор может размещаться внутри операторов
управления while, for, switch. Оператор break передает управление оператору,
непосредственно следующему за структурой управления, в которой он сам содер-
жится. Считается, что использование оператора break не ухудшает читабельность
программы.
Помимо этого, язык C имеет родственный оператору break оператор continue.
Забегая вперед, отметим: данный оператор завершает выполнение текущей итера-
ции цикла в операторах while и for и переводит управление в конец тела цикла.
Таким образом, оператор break прерывает цикл, в то время как оператор continue
досрочно передает управление на следующую итерацию цикла.
Роль типов данных.Тип данных — это механизм классификации объектов данных.
Физический мир, являющийся предметной областью программы, содержит разно-
образные объекты, рассматриваемые в задачах вычислений как элементы данных.
Это могут быть дома, машины, деревья, самолеты, собаки, люди, туфли и т. д. Все
эти физические объекты отличаются друг от друга, имеют разнообразные характе-
ристики. Для удобства вычислений физические объекты можно классифицировать,
выделяя, например, класс домов, класс автомобилей. Программы же обрабатывают
представления элементов данных.
Тип данных определяет:
1) значения объектов;
2) операции, применимые к значениям;
3) размещение значений в машинной памяти.
Базовые типы. Перечисления, целые и вещественные типы, поддиапазоныЭлементарный (базовый) объект данных может содержать только одно значение. Тип таких объектов, для которых задан набор операций, называется элементарным типом
данных. Конечно, в каждом языке программирования присутствует свой перечень
элементарных типов данных, но вещественный и целый типы, а также перечисления
и указатели имеются почти во всех языках.
Поддиапазоны представляют собой подтипы некоторых базовых типов, которые
имеют счетное количество значений.
Перечисление — это тип данных, представляемый конечной последовательностью
имен, записанных внутри скобок.
Объявление
type день = (пон, втр, срд, чтв, птн, сбт, вск);
Наиболее распространенными являются целый и вещественный типы, поскольку
они непосредственно поддерживаются аппаратурой компьютера.
Базовый целый тип в языке Pascal обозначается именем integer, в языке С —
именем int. Базовый вещественный тип в языке Pascal обозначается именем real, в язы-
ке С — именем float.
Типы данных: Массивы.
Массив является наиболее популярной и востребованной структурой данных.
Массив — это структура данных, которая содержит последовательность элементов
одинакового типа. Фундаментальное свойство массива — время доступа к любому
его элементу A[i] не зависит от значения индекса i. Индекс первого элемента называют нижней границей, а индекс последнего элемента — верхней границей массива.
Типы данных: Записи.В общем случае объект данных может включать в себя переменные различных
типов. Записи позволяют сгруппировать переменные, относящиеся к объекту,
и рассматривать их как единый модуль.
Запись — это неоднородная структура данных, в которой отдельные элементы
идентифицируются именами.
В языке Pascal тип записи с k полями может представляться в виде
type
record
<имя1>: <тип1>;
<имя2>: <тип2>;
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 |


