
- •1. Алгоритм и его свойства
- •1 Теорема о структурировании
- •Постановка задачи
- •Метод простых итераций в общем виде
- •Сходимость метода простых итераций
- •Геометрическая интерпретация
- •Билет 7 Процедурный тип
- •Пример задачи, где используется явное преобразование типов
- •Операция явного приведения типов
- •1. Определения
- •2. Примеры
- •3. Свойства алгоритмов
- •4. Способы описания алгоритмов
- •Оператор условного перехода
- •Билет 15
- •Цикл со счётчиком
- •Начало развития
- •[Править]Язык ассемблера
- •[Править]Структурное программирование
- •[Править]ооп
Пример задачи, где используется явное преобразование типов
Вычислить значение функции sign(x) = 1 при x>0; 0 при x=0; -1 при x<0.
var
x: real;
sign: integer;
begin
readln(x);
sign:= byte(x>0)-byte(x<0);
writeln(sign);
end.
В программе при положительном значении x выражение x>0 принимает значение true, а выражение x<0 — false. В результате получается, что byte(x>0) = 1, byte(x<0)=0, а sign=1. При отрицательном значении x byte(x>0)=0, byte(x<0)=1, sign=-1. При нулевом значении x sign=0.
Оператор цикла с постусловием
Оператор цикла с пост-условием применяется если во время написания программы количество повторений неизвестно. Общий вид этого оператора таков:
repeat
<операторы>;
until <условие>;
Зарезервированные слова repeat и until по действию похожи на операторные скобки, вследствие этого между словами repeat и until можно поместить несколько операторов, отделяя их друг от друга точкой с запятой.
Примечание При записи оператора слово until обычно выравнивается на слово repeat, к которому оно относится, а внутренние операторы цикла несколько сдвигаются вправо.
Исполнение цикла повторяется до того момента, когда <условие> станет истинным.
При составлении цикла с пост-условием необходимо принимать во внимание три момента:
Операторы внутри цикла должны иметь правильную последовательность, причем должен присутствовать хотя бы один оператор, влияющий на условие окончания (иначе цикл будет продолжаться бесконечно).
Условие окончания должно в конце концов быть удовлетворено.
Оператор цикла с предусловием
Другой способ организации повторного выполнения оператора связан с использованием цикла с пред-условием. Этот оператор похож на оператор цикла с пост-условием (repeat), однако условие вычисляется и проверяется в начале цикла повторения, а не в конце. Оператор цикла с пред-условием имеет вид:
while <условие> do
<оператор>;
Тело цикла может состоять только из одного оператора. Если необходимо выполнить более одного оператора, то нужно использовать составной оператор.
Исполнение цикла повторяется до тех пор, пока <условие> истинно.
Существенным является тот факт, что один из операторов, находящихся внутри цикла, должен в конечном счете влиять на значение условия, поскольку иначе цикл будет повторяться бесконечно. Кроме того, нужно наложить дополнительное требование на условие, которое заключается в том, что это условие должно иметь определенное значение перед началом выполнения оператора.
Примечание При практическом программировании оператор цикла с пред-условием оказывается гораздо полезнее оператора цикла с пост-условием. Это связано с тем фактом, что во многих случая необходимо вначале установить, не следует ли пропустить цикл целиком. Если возникают сомнения при выборе операторов цикла с пред-условием и пост-условием, рекомендуется сначала использовать оператор цикла с пред-условием.
Билет №9
Операция явного приведения типов
Операция явного приведения типов имеет вид
ИмяТипа(выражение)
и позволяет преобразовать выражение к типу ИмяТипа. Тип выражения и тип с именем ИмяТипа должны оба принадлежать либо к порядковому типу, либо к типу указателя, либо один тип должен быть наследником другого, либо тип выражения должен поддерживать интерфейс с именем ИмяТипа. В случае указателей запрещено преобразовывать типизированный указатель к типу указателя на другой тип.
Пример.
type pinteger = ^integer; Season = (Winter,Spring,Summer,Autumn); var i: integer; b: byte; p: pointer := @i; s: Season; begin i := integer('z'); b := byte(i); i := pinteger(p); s := Season(1); end.
// НеРеализовано Как и для неявного приведения типов, если при приведении типа происходит выход за диапазон значений типа-результата, то при отключенной директиве компилятора #rangecheck off (по умолчанию) значения приводимого типа усекаются до значений типа-результата, при установленной директиве компилятора #rangecheck on генерируется исключение.
Логический, булев (англ. Boolean или logical data type) тип данных — примитивный тип данных в информатике, которые могут принимать два возможных значения, иногда называемых правдой (true) и ложью (false). Присутствует в подавляющем большинстве языков программирования как самостоятельная сущность или реализуется через численный тип. В подавляющем большинстве языков за истину полагается единица, за ложь — ноль.
Доступные операции
К этому типу данных применимы следующие операции:
И (логическое умножение) (AND, &, *),
ИЛИ (логическое сложение) (OR, |, +),
исключающее ИЛИ (умножение с переносом) (xor, NEQV, ^),
эквивалентность (равенство) (EQV, =, ==)
инверсия (NOT, ~, !)
сравнение (>, <, <=, >=)
Так же могут использоваться и другие операции булевой алгебры. Большинство языков программирования позволяют использовать булев тип и в арифметических операциях, приводя его к численному типу согласно принятым в языке правилам приведения типов.
Билет №10
Алгоритмизация: основные понятия