type valid_for_identifiers = 'a'..'z','A'..'Z','_','0..9';
У меня turbo pascal 7.0, но такая конструкция не работает(
Можно это как то испаравить или где она заработает (в кокой-то другой версии может)?
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
type lat_bukvy = 'a'..'z','A'..'Z'; -- не работает -- почему? |
udaaff |
Сообщение
#1
|
Гость |
В лекциях на intuit.ru встерчаются подобные конструкции --
type valid_for_identifiers = 'a'..'z','A'..'Z','_','0..9'; У меня turbo pascal 7.0, но такая конструкция не работает( Можно это как то испаравить или где она заработает (в кокой-то другой версии может)? |
Артемий |
Сообщение
#2
|
Помощник капитана Группа: Пользователи Сообщений: 601 Пол: Мужской Реальное имя: Артем Репутация: 2 |
А что за тип данных?Множество?Тогда set of добавь.
-------------------- Dum spiro spero!
|
udaaff |
Сообщение
#3
|
Группа: Пользователи Сообщений: 8 Пол: Мужской Реальное имя: Vitalik Репутация: 0 |
2 Артемий2
'a'..'z','A'..'Z','_','0..9' -- таким образом они задают тип -- т.е. диапазон всех возможных значений которые может принимать переменная данного типа дело тут не в множестве |
Алена |
Сообщение
#4
|
Гость |
Цитата таким образом они задают тип не задается тип таким образом...У тебя получается перемешивание: И перечислимый тип (о чем говорит запятая), И тип-интервал (о чем говорят две точки) одновременно. По отдельности это легально в синтаксисе Паскаля, вместе - нет. |
udaaff |
Сообщение
#5
|
Группа: Пользователи Сообщений: 8 Пол: Мужской Реальное имя: Vitalik Репутация: 0 |
2 Алена
если не лень посмотри на сайте ww.intuit.ru/department/pl/plpascal/2/ -- у них таким образом все прекрасно задается p.s. не могу почему-то в текст сообщения вставить гиперссылку и 3W тоже -- выдает ошибку Сообщение отредактировано: udaaff - |
Алена |
Сообщение
#6
|
Гость |
Цитата у них таким образом все прекрасно задется Пока сервис недоступен, но вот что получается:var s: string;У меня тоже все прекрасно задается. Пока не начнешь компилировать. Тогда тебя ждет сюрприз. Точно так же и там: что значит задается? Они говорят, что это делается так? И приводят пример? Так работай с ним. Однако, ты его не можешь откомпилировать, верно? Когда же тебе объяснили, почему ты его и не сможешь запустить, ты опять приводишь ссылку. Туда, где НЕ работает. Где же логика? Еще раз: единственное, что вот так можно описать - это константа: Constоткомпилируется как положено. Добавлено через 10 мин. Вот тебе еще информация к размышлению: Руководство по языку B.Pascal 7 & Objects/LR -> Перечислимые типы Посмотри в фирменной документации, как описываются перечислимые и интервальные типы. А на Intuit мне после вот этого: вообще не хочется заходить больше Сообщение отредактировано: Алена - |
udaaff |
Сообщение
#7
|
Группа: Пользователи Сообщений: 8 Пол: Мужской Реальное имя: Vitalik Репутация: 0 |
2 Алена
Пасиба за разъяснение. Я просто подумал, что может у меня pascal не такой как на intuin.ru)) ... Думаю, что это будет в рамках данной темы: предположим есть тип: superType = (elem_1, elem_2,... , elem_N); можно ли как-нибудь из этого типа создать тип subType, который бы содержал к примеру первый, пятый и десятый элементы? |
Lapp |
Сообщение
#8
|
|||
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
предположим есть тип: superType = (elem_1, elem_2,... , elem_N); можно ли как-нибудь из этого типа создать тип subType, который бы содержал к примеру первый, пятый и десятый элементы? Нет, в Паскале нет такой возможности. Встречный вопрос: а зачем она тебе? Обычно такие конструкции делаются в теле программы. Например, есть тип Year для любого года. И есть годы до нашей эры, годы нашей эры, в них средние века, возрождение - или, скажем, можно делить по векам. Проверка типа - это проверка на корректность выполняемого действия (операция с годами), и она производится на этапе компиляции. А принадлежность года к той или иной эпохе - это уже задача программирования, и она вычисляется в процессе работы программы. Если ты имеешь в виду range check, которая может работать и на этапе выполнения, то для перечислимых типов ее просто нету..
-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
|||
Алена |
Сообщение
#9
|
Гость |
Цитата Если ты имеешь в виду range check, которая может работать и на этапе выполнения, то для перечислимых типов ее просто нету.. Небольшое уточнение: нет только в 16-битных компиляторах... 32-битные (FPC в частности) прекрасно производят Range-Check и для перечислимых типов тоже. |
udaaff |
Сообщение
#10
|
Группа: Пользователи Сообщений: 8 Пол: Мужской Реальное имя: Vitalik Репутация: 0 |
Встречный вопрос: а зачем она тебе? В разделе задачи есть моя тема "типы данных определяемые пользователем". Тема лабы -- "типы данных определяемые пользователем", поэтому решение должно было строиться на этих типах. Задача была такая: вывести названия месяцев по сезону. Я решил решать ее исходя из того, что есть тип superType, ему соответствует массив названий его элементов (тип индексов массива -- superType), и есть подтипы данного типа. Затем, перечисляя элементы подтипа, можно было бы относительно их порядковых номеров, выводить названия его элементов. Я вначале из-за зимы тупился, пока месяца не сдвинул.)) Но потом я придумал другое решение попроще.. Хватит им и такого)) |
Текстовая версия | 7.10.2024 8:05 |