Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Билет отв.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
337.48 Кб
Скачать

Пример задачи, где используется явное преобразование типов

Вычислить значение функции 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

Алгоритмизация: основные понятия

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]