В
Все
М
Математика
О
ОБЖ
У
Українська мова
Д
Другие предметы
Х
Химия
М
Музыка
Н
Немецкий язык
Б
Беларуская мова
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
Р
Русский язык
У
Українська література
Ф
Французский язык
П
Психология
А
Алгебра
О
Обществознание
М
МХК
В
Видео-ответы
Г
География
П
Право
Г
Геометрия
А
Английский язык
И
Информатика
Қ
Қазақ тiлi
Л
Литература
И
История
Дарига65
Дарига65
27.10.2021 01:04 •  Информатика

Пусть у меня есть действительная переменная в, диапазон которой (-10; 10). как ограничить ее в диапазоне типа real, чтобы нельзя было использовать значения выходящие за диапазон. аналогично, если переменная тип integer. видел такой вариант var b: -10..10; но тут же не понятно к какому типу переменная относится. объясните .

Показать ответ
Ответ:
111759
111759
09.10.2020 01:14

ответ на Ваш вопрос простой: никак!

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

Например, описание k: -10..10 означает, что k целочисленное и может изменять от -10 до 10. Целочисленное оно потому, что константы -10 и 10 в PascalABC.NET имеют тип integer. Проблема же состоит в том, что в PascalABC.NET контроль за выходом значения переменной за отведенные границы всего лишь... отсутствует! Т.е. описание k: -10..10 - это просто "хотелка". И Вы можете продолжать этого хотеть. Может быть, Вы подумали, что это PascalABC.NET такой плохой язык? Спешу разочаровать: так ведут себя все диалекты Паскаля. Дело в том. что проверка границ диапазона фактически должна делаться при каждой машинной операции с участием переменной диапазонного типа. И это настолько замедляет программу, что такая проверка, даже если она предусмотрена в конкретном компиляторе, по умолчанию выключена. Более того, оказывается, что гораздо проще проверять выход за границы диапазона напрямую в программе!

Что касается переменной типа real - с ней еще хуже: ее даже нельзя объявить в диапазонном типе, поскольку тип real не является порядковым.

Как итог: проверяем if (k>=-10) and (k<=10) then <все хорошо>.

Можно воспользоваться вариантом if k.Between(-10,10) then ...

Between работает и с real: if r.Between(3.4,15.063) then ...

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота