IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

> Отличие type и var, Отличие type и var
-notpron
сообщение 5.07.2011 18:44
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 12
Пол: Мужской

Репутация: -  0  +


Всем добрый вечер, не могу никак понять, в чем разница между type и var? Скорее всего - я немного не допонял саму функцию type.
И я совсем запутался в порядковых типах данных, для чего они нужны? Как(не теоритически) можно проверить функцию, например, ord(x)? Заранее спасибо)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
IUnknown
сообщение 5.07.2011 22:07
Сообщение #2


a.k.a. volvo877
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской

Репутация: -  627  +


Цитата
И вы не правы - перечисляемый тип данных является не пользовательским, а конструируемым. Можете проверять.
Ты это "можете проверять" кому-нибудь другому расскажи, ладно? Я эту "Филькину грамоту" уже лет 20 как наизусть знаю, не надо мне ничего проверять... Конструируемый - это тот, который строится на основании простого. На основании какого именно простого типа построен тип Week, не подскажешь?

Цитата
Поэтому мое утверждение верно.
Какое утверждение? Что Dec(sun) = Sat? Это бред, а не утверждение. Знаешь, почему? По одной простой причине: Компилятору все равно, как там называются у тебя элементы перечисления... Для него это 0, 1, 2, ..., 255 (максимум). Заметь, от 0!!! Вот что получается:

type
Week = (sun, mon, tue, wed, thu, fri, sat);

begin
writeln( ord(sun) );
writeln( week(ord(sun) - 1) ); // <--- !!!
end.
Что выведется?

А вот что: Ord(Sun) = 0. Хорошо, это напечатается. А теперь - следующий шаг: попробуем напечатать предыдущий элемент перечисления... И вот тут тебя поджидает большой облом... Ошибка 107, вот и все... Нет предыдущего элемента у Sun... Он есть только в одном-единственном случае: когда перечисление содержит ровно 255 элементов, тогда Pred(первый_элемент) = последний_элемент, но это скорее побочный эффект, поэтому пользоваться этим не стоит...

Хотя writeln( week(ord(sun) + 1) ); прекрасно печатает mon (я пользуюсь FPC, и тебе советую, в Турбо Паскале будет ошибка, там такое не позволяется)...

Цитата
Тоже самое не получится(у меня не получилось) вывести просто 10 чисел.
Да что ты? Теория программирования понесла тяжелую утрату smile.gif :
var i : integer; // Integer - это по-твоему тоже НЕпорядковый тип? Ну-ну...
begin
for i := 1 to 10 do writeln(2 * i);
end.
Если у тебя что-то не получается - это не значит, что оно невозможно...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
-notpron   Отличие type и var   5.07.2011 18:44
IUnknown   Type - это не функция. Это зарезервированное слово...   5.07.2011 19:03
-notpron   2 IUnknown А можно не на примере массивов? Просто ...   5.07.2011 19:19
IUnknown   не на примере массивов? Ну, напечатай первые 10 че...   5.07.2011 20:36
-notpron   2 IUnknown Не, до циклов я дошел) И вы не правы - ...   5.07.2011 20:55
IUnknown   Ты это "можете проверять" кому-нибудь др...   5.07.2011 22:07
-notpron   Не надо ругаться, спокойнее. Просто аргументирован...   5.07.2011 22:59
Lapp   Я извиняюсь за встрятие.. Не надо ругаться, споко...   6.07.2011 5:09
IUnknown   Кстати, встроенной поддержки циклических перечисле...   6.07.2011 10:37
-notpron   2 Lapp Я понимаю что манера говорить у всех своя, ...   6.07.2011 11:18
Lapp   Чем вас не устраивает тег [cоde]? По-моему его мо...   6.07.2011 22:50
-TarasBer-   это тролль, не реагируйте   6.07.2011 14:52
-notpron   Не надо оффтопить, есть что сказать по теме - скаж...   6.07.2011 14:56
-TarasBer-   канонично...   6.07.2011 15:07
-notpron   Ну и сразу дурацкий вопрос - а как копипастить в t...   6.07.2011 16:13
sheka   .pas - текстовый документ. Создавай новые темы в н...   6.07.2011 17:27
-notpron   Ну про этот способ мне известно, но все равно спас...   6.07.2011 17:41
-notpron   2 Lapp 2. Все тексты фрагментов программ должны по...   7.07.2011 18:52
Lapp   2. Все тексты фрагментов программ должны помещатьс...   7.07.2011 22:21


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 17.07.2025 8:34
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"