Присвоение записей, Возможно ли и в каких версиях Паскаля |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
Присвоение записей, Возможно ли и в каких версиях Паскаля |
sheka |
7.11.2010 1:10
Сообщение
#1
|
Я. Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: 11 |
Собственно вопрос - в названии темы.
Пример: type rec = record Будет ли работать и в каких версиях? Просто препод доказывал, что так записи присваивать нельзя, а нужно только поочередно присваивать поля. PS: TP, FPC, Delphi - ест как миленький. ЗЗЫ: Или препод как обычно мороз сморозил ? |
TarasBer |
7.11.2010 1:47
Сообщение
#2
|
Злостный любитель Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
Присваивать можно, если они одного типа. То есть совсем одного.
А вот сравнивать - нельзя. И если var a: rec; b: record x, y: integer; end; то тоже нельзя - компилятор думает, что они разного типа. -------------------- |
volvo |
7.11.2010 1:49
Сообщение
#3
|
Гость |
Цитата Будет ли работать и в каких версиях? В любых. Эта возможность закладывалась в язык изначально, еще Виртовский Паскаль умел присваивать записи.Главное - чтобы выполнялись правила Совместимости по присваиванию (в частности, запись не должна содержать файловых переменных). Ну, и аккуратно работать с записями, содержащими поля-указатели, можно нарваться на ошибку. Для простых типов языка такой способ (присваивание записи целиком) гораздо предпочтительнее, чем по отдельным полям, ибо позволяет очень сильно разгрузить программу. |
Lapp |
7.11.2010 2:24
Сообщение
#4
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Конечно можно, в этом приличная такая часть сути языка. Учитывая, конечно, что сказано выше. Шек, а тебе не пришло в голову просто прогнать ту прогу, что ты привел, через компайлер и найти ответ на свой вопрос за 6 миллисекунд?
Не забывый, что у тебя всегда есть этот способ под рукой: экспериментировать. препод как обычно мороз сморозил ? Вот тут поподробнее.. Это серьезное обвинение. Если это правда - такого препа нужно срочно гнать в шею. Но я допускаю, что тут какое-то ндопонимание друг друга. Напиши, пожалуйста, точно, что он сказал.-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
sheka |
7.11.2010 2:33
Сообщение
#5
|
Я. Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: 11 |
Цитата Напиши, пожалуйста, точно, что он сказал. "-В реализации Паскаля 95 года такого не было. Вернешься домой посмотришь.-Но... -Вернешься - посмотришь. -Да, конечно, но в 95й год я уж точно не вернусь" Добавлено через 1 мин. Цитата Шек, а тебе не пришло в голову просто прогнать ту прогу, что ты привел, через компайлер и найти ответ на свой вопрос за 6 миллисекунд? PS: TP, FPC, Delphi - ест как миленький. А на пару, как на зло, никто ноут не принес.. Сообщение отредактировано: sheka - 7.11.2010 2:38 |
Lapp |
7.11.2010 6:05
Сообщение
#6
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
"-В реализации Паскаля 95 года такого не было. ..." Это только конец диалога. Вопрос стоял действмтельно о присвоении значений переменных типа запись? Но если так - кошмар.. Мое мнение по этому поводу остается прежним (выше, выделено жирным). Когда у нас в школе был учитель математики, который.. мм.. не очень хорошо ее знал.. - мы собрались и пошли к завучу. Через неделю его поперли. Мне кажется, что в ВУЗе, да еще в нынешние времена (то было при советской власти) это более чем возможно. Найди несколько человек, которые тебя поддержат (но не двоечников)), и пойдите в деканат. Такое нельзя спускать с рук. Ссылаться на то, что НЕ ЗНАЛ в 95 году - и при этом учить студентов?? У меня слов не хватает.. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
sheka |
10.11.2010 23:58
Сообщение
#7
|
Я. Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: 11 |
Потепление.
Понедельник: - Уточните, пожалуйста, вопрос на счет записей, ведь завтра все таки кр. Я проверил, вроде работает. - Конечно все возможно ... Все зависит от реализации ... А вот классический Паскаль ... строгий язык ... (вместо точек - куча каких-то объяснений типа "вода" продолжительностью 30-60 секунд) - Извините что прерываю, ТП где-то 90го года компилирует нормально. Или это не классический паскаль? - Классический, это тот, который Вирт сделал ... Как он это объяснял студентам ... Все как можно проще ... для обучения ... - Ну хорошо, а где я тогда могу встретить этот "классический паскаль"? - Оо. Ну он был еще на машинах, когда были еще такие машины (показал руками), как комнаты, где-то 65й -75й год... - (я обнаглел) Т.е. во всех реализациях после средины 70х это присутствует? - Ну это удобнее ... поэтому новые веения ... современные студенты законодатели моды ... - Т.е. я могу в кр так написать? - Но только с пометкой "в ТП реализовано". Вторник: Контрольной не дал. Уже без агрессии сам начал говорить что записи присваивать можно ... студенты ... мода ... так им проще ... Что-то этот рассказ напомнил мне как описывали рождение Полиграфа Полиграфовича Шарикова Цитата Эта возможность закладывалась в язык изначально, еще Виртовский Паскаль умел присваивать записи. volvo, защищайтесь! |
Lapp |
11.11.2010 0:25
Сообщение
#8
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Все зависит от реализации ... А вот классический Паскаль ... строгий язык ... В таком присвоении содержится, как я уже говорил, львиная доля понятия переменной. При чем тут реализация? какая еще простота? СТРОГОСТЬ от этого абсолютно не страдает, а только выигрывает..капец, приехали.. ГНАТЬ В ТРИ ШЕИ я еще понял бы, если бы он признал ошибку и извинился бы - за это честь и хвала. Но если начинает юлить и оправбываться - ГНАТЬ В ТРИ ШЕИ. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
sheka |
11.11.2010 1:29
Сообщение
#9
|
Я. Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: 11 |
А можете это предоставить в виде цитаты из книги?
(я не нашел ничего) |
volvo |
11.11.2010 1:55
Сообщение
#10
|
Гость |
Цитата volvo, защищайтесь! От кого защищаться? От твоего преподавателя, что-ли? Так пусть откроет книгу "К.Йенсен, Н.Вирт: Паскаль. Руководство для пользователя и описание языка" на страницах 22-23 и прочтет буквально следующее (цитирую) Цитата("Глава 4.1 @ Оператор присваивания") Оператор имеет такой вид: <переменная> := <выражение> <cut> Допустимо присваивание переменных любого типа, за исключением файлов. Однако переменная (или функция) и выражение должны быть идентичного типа: как исключение допускается использование переменной вещественного типа с выражением целого типа. Если речь идет об ограниченном типе, то правомочность присваивания определяется его базовым скалярным типом; см. разд. 5.2. Или твой преподаватель лучше автора знает, что может язык Вирта, а что - нет? Так что пускай он теперь защищается... |
sheka |
11.11.2010 2:02
Сообщение
#11
|
Я. Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: 11 |
Вот блин.. А я 12ю страницу читал
|
Lapp |
11.11.2010 2:46
Сообщение
#12
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
А можете это предоставить в виде цитаты из книги? Я боюсь, что именно такую цитату: "записи можно присваивать" - ты и не найдешь никогда. Это же просто неотделимо от самой КОНЦЕПЦИИ ПЕРЕМЕННОЙ. А иначе половина ее смысла теряется. Формально же следует из общих принципов и определения а) оператора присваивания; б) совместимости типов.(я не нашел ничего) Например, берем вот это описание стандарта Pascal ISO 7185 :1990. Читаем описание оператора присваивания: Цитата 6.8 .2.2 Assignment-statements An assignment-statement shall attribute the value of the expression of the assignment-statement either to the variable denoted by the variable-access of the assignment-statement or to the activation result that is denoted by the function-identifier of the assignment-statement ; the value shall be assignment-compatible with the type possessed, respectively, by the variable or by the activation result. The function-block associated (see 6 .6.2) with the function-identifier of an assignment-statement shall contain the assignment-statement. assignment-statement = ( variable-access | function-identifier ) ` :=' expression . Главное я выделил, вот перевод: "значение должно быть совместимым по присваиванию". Заметим, что других ограничений не наложено. Про "совместимость по присваиванию" читаем ранее: Цитата 6.4.6 Assignment-compatibility A value of type T2 shall be designated assignment-compatible with a type T1 if any of the following five statements is true: a) T1 and T2 are the same type ... ... Ч., как говорится, и Т.Д. ГНАТЬ В ШЕЮ Добавлено через 1 мин. Блин, долго я писал, однако.. )) -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Текстовая версия | 22.09.2024 14:59 |