Первый допустим. 2) k:=10; Не должен быть допустим, поскольку 10 не входит в 0..9. НО...по умолчанию Паскаль игнорирует эту ошибку, позволяя даже 255 присвоить. Третий оператор допустим. 4) k:='5'; недопустимо, потому что нельзя преобразовать тип char в правой части к типу 0..9, являющемуся подмножеством однобайтных целых. 5) k:=ord(d); в таком виде записать нельзя, потому что d нигде не описано. Если предположить, что на месте d находится цифра, то оператор допустим. 6) k:=ord(d)-ord('0'); Как и для 2) - оператор не должен быть допустим... но он допустим. Допустим он будет и в варианте k:=ord(d)-ord(0), даже когда выдаст отрицательные значения.
Все это сужает область возможного применения данных типа "диапазон" и в целом типа "set of ...". не позволяя во многих случаях использовать их для организации эффективных проверок . Например, для можно было бы описать диапазон 6..18 для контроля принадлежности возраста к школьному. Можно было БЫ... но, как выясняется, нельзя.
Что-то у меня не придумывается меньше, чем за 18 телодвижений.
1. Залил полный бак в 10-литровый 2. Перелил его в 9-литровый. В 10 остался 1 литр 3. 9 опустошил, теперь в нём пусто, а в 10 по-прежнему 1 л. 4. перелил 1 л в 9. Этот 1 литр - назовём его переходящим остатком.
Опять погнали те же 4 телодвижения, по результатам переходящим остатком будет 2 литра.
Ещё раз - и получили переходящий остаток 3 литра Ещё раз, и получили 4 литра. К этому моменту сделали этот цикл уже 4 раза, итого 4*4 = 16 движений.
Опять делаем этот же цикл, но достаточно двух первых операций, и в 10-литровом баке получаем остаток 5 литров.
Итого, 16+2 = 18.
Ну, у меня так получилось. Может кто лучше придумает.
2) k:=10; Не должен быть допустим, поскольку 10 не входит в 0..9. НО...по умолчанию Паскаль игнорирует эту ошибку, позволяя даже 255 присвоить.
Третий оператор допустим.
4) k:='5'; недопустимо, потому что нельзя преобразовать тип char в правой части к типу 0..9, являющемуся подмножеством однобайтных целых.
5) k:=ord(d); в таком виде записать нельзя, потому что d нигде не описано. Если предположить, что на месте d находится цифра, то оператор допустим.
6) k:=ord(d)-ord('0'); Как и для 2) - оператор не должен быть допустим... но он допустим. Допустим он будет и в варианте k:=ord(d)-ord(0), даже когда выдаст отрицательные значения.
Все это сужает область возможного применения данных типа "диапазон" и в целом типа "set of ...". не позволяя во многих случаях использовать их для организации эффективных проверок . Например, для можно было бы описать диапазон 6..18 для контроля принадлежности возраста к школьному. Можно было БЫ... но, как выясняется, нельзя.