2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


В этом разделе нельзя создавать новые темы.



Начать новую тему Ответить на тему На страницу Пред.  1, 2
 
 Re: [Pascal] Помогите, пожалуйста, проверить программу.
Сообщение06.11.2017, 22:13 
Заслуженный участник


06/07/11
5629
кран.набрать.грамота
Dmitriy40 в сообщении #1262842 писал(а):
n - вариантного (variant) типа
В Turbo Pascal 7.0 такого типа, емнип, нет, а в тех паскалях, в которых есть, еще много чего есть, чтобы слегка улучшить программу. Те же динамические массивы, например.

 Профиль  
                  
 
 Re: [Pascal] Помогите, пожалуйста, проверить программу.
Сообщение06.11.2017, 23:38 
Заслуженный участник


12/07/07
4544
Записи (record type) c вариантными полями есть и в TP 7, и в более ранних версиях (только что проверил по Turbo Pascal 7.0 Language Guide, 1992) [Есть ли в более ранних версиях, я не проверял, и так помню.].

Переносил из раздела «Работа форума» в этот раздел --- я. Во-первых, это первая тема участника. Во-вторых, простой вопрос: можно быстро дать ответ и потом перенести в Чулан (и не морочить голову ни участнику, ни модераторам). Если есть серьёзное желание переноса в «Юмор», то пишите (например, мне ) в ЛС.

 Профиль  
                  
 
 Re: [Pascal] Помогите, пожалуйста, проверить программу.
Сообщение06.11.2017, 23:56 
Заслуженный участник


27/04/09
28128
Судя по всему, Dmitriy40 имел в виду не вариантные поля записи, потому что там никакого приведения между целым и плавающим полями не появится. В Delphi 7 (и наверняка в некоторых версиях раньше и позже), например, был тип Variant, который, конечно, определялся как запись с вариантными полями и полем-селектором текущего типа, но выражения этого типа ешё и обрабатывались компилятором особенным образом, чтобы делать неявные приведения и смены типа актуального представляемого значения.

-- Вт ноя 07, 2017 02:01:57 --

Подобный тип был в VB6 (опять же, наверняка и раньше), но, я думаю, время показало, что такой способ встраивания «динамичности» в язык со статической типизацией бесперспективен — если уж выбранная статическая типизация так плоха (что приходится делать такое), то лучше уж полностью динамическая; если уж уровень пользователей подразумевается таким низким, то… хотя вот в VB6 это было как раз к месту.

 Профиль  
                  
 
 Re: [Pascal] Помогите, пожалуйста, проверить программу.
Сообщение07.11.2017, 00:26 
Заслуженный участник


20/08/14
11967
Россия, Москва
arseniiv в сообщении #1262928 писал(а):
например, был тип Variant,
Я именно про него. Когда он появился не проверял, говорил по Delphi5 (потому что в основном ей пользуюсь). И у него детали реализации скрыты, приведения типов неявные (в хелпе большая квадратная табличка с пояснениями). От записей, точнее объединений (union в C), отличается как раз приведением типов, а не просто хранением в одном физическом месте.
А вообще рассматривать серьёзно эти предложения нет смысла: программа заявленную задачу не решает даже после исправления явных ошибок, ТС же сказал что уже разобрался, так что ... Переносить в Юмор - это само по себе шутка была, зачем, здесь ей самое место, тема же по программе на паскале. Ну а что в ней много смешных моментов можно найти - так это не наказуемо. ;-)

 Профиль  
                  
 
 Re: [Pascal] Помогите, пожалуйста, проверить программу.
Сообщение07.11.2017, 00:26 
Заслуженный участник


12/07/07
4544
Нет, в TP 7.0 типа Variant не было.
Компиляция
Код:
var x: variant;
begin
end.
приведёт к ошибке “unknown identifier”.
Variants types появились в более поздних версиях BP — в среде Delphi.
В Delphi 5.0 предыдущий исходный текст скомпилируется.

Или я вас, arseniiv, не понял. Тогда приведите конкретные примеры.

-- Пн 06.11.2017 23:32:07 --

Вообще, в старых версиях Borland Pascal (TP 5, нарпимер) универсальности добивались именно при помощи записей с вариантным полями и при помощи указателей без типа (Pointer).

rockclimber, спасибо, исправил. Не копировал текст из окна редактора.

 Профиль  
                  
 
 Re: [Pascal] Помогите, пожалуйста, проверить программу.
Сообщение07.11.2017, 00:32 
Заслуженный участник


06/07/11
5629
кран.набрать.грамота
GAA в сообщении #1262937 писал(а):
Нет, в TP 7.0 типа Variant не было.
Компиляция
Код:
var x: varianr;
begin
end.
приведёт к ошибке “unknown identifier”.
У вас ус отклеился опечатка в коде :mrgreen:

 Профиль  
                  
 
 Re: [Pascal] Помогите, пожалуйста, проверить программу.
Сообщение07.11.2017, 00:33 
Заслуженный участник


20/08/14
11967
Россия, Москва
Тут говорят этот тип появился лишь в Дельфи, без указания версии:
Кто-то писал(а):
В Delphi появляется принципиально новый тип данных VARIANT, который может помещать внутрь переменной значения разного типа: например, сначала INTEGER, а затем STRING. В классическом Паскале такое вообще невозможно.

 Профиль  
                  
 
 Re: [Pascal] Помогите, пожалуйста, проверить программу.
Сообщение07.11.2017, 00:49 
Заслуженный участник


27/04/09
28128
GAA в сообщении #1262937 писал(а):
Или я вас, arseniiv, не понял. Тогда приведите конкретные примеры.
Я как раз просто имел в виду, что Dmitriy40, как он уже и сам подтвердил, говорил про Variant, а не про записи с вариантными частями.

 Профиль  
                  
 
 Re: [Pascal] Помогите, пожалуйста, проверить программу.
Сообщение07.11.2017, 00:52 
Заслуженный участник


12/07/07
4544
Понятно. Но в TP 7.0 его (Variant) не было. И после этой версии языка (среда TP 7.0 или BP 7.0) Borland уже перешёл на Delphi 1. В TP приходилось играть с записями.

-- Пн 06.11.2017 23:58:49 --

В общем, этот разговор к исходному вопросу отношения не имеет. Через некоторое время молча ветку перенесу в Чулан.

-- Вт 07.11.2017 00:39:50 --

На всякий случай.
Тип вариант был, по крайней мере, в Delphi 2 (проверил по книге Калверт Ч. Delphi 2 Энциклопедия пользователя.) А динамические массивы появились позже. Если не изменяет память, то в Delphi 3.
В Delphi 1 не игрался (он не был 32 битным, проку в вычислительных задачах от него не было). А вот с Delphi 2 быстро перешёл на Delphi 3. Но в вычислительных задачах динамические массивы не рулят. Программы с ними работали медленнее, поэтому приходилось использовать статические массивы и перекомпилировать при изменении параметров.

Upd "не был 32 битным" --- массивы были не больше 64 k.

Upd2. Даже не в 3, а в 4 появились динамические массивы.

 i  19.11/2017 ветка перенесена в «Чулан».

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу Пред.  1, 2

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: YandexBot [bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group