2014 dxdy logo

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

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


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


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



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


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

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


12/07/07
4522
Записи (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
11766
Россия, Москва
arseniiv в сообщении #1262928 писал(а):
например, был тип Variant,
Я именно про него. Когда он появился не проверял, говорил по Delphi5 (потому что в основном ей пользуюсь). И у него детали реализации скрыты, приведения типов неявные (в хелпе большая квадратная табличка с пояснениями). От записей, точнее объединений (union в C), отличается как раз приведением типов, а не просто хранением в одном физическом месте.
А вообще рассматривать серьёзно эти предложения нет смысла: программа заявленную задачу не решает даже после исправления явных ошибок, ТС же сказал что уже разобрался, так что ... Переносить в Юмор - это само по себе шутка была, зачем, здесь ей самое место, тема же по программе на паскале. Ну а что в ней много смешных моментов можно найти - так это не наказуемо. ;-)

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


12/07/07
4522
Нет, в 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
5627
кран.набрать.грамота
GAA в сообщении #1262937 писал(а):
Нет, в TP 7.0 типа Variant не было.
Компиляция
Код:
var x: varianr;
begin
end.
приведёт к ошибке “unknown identifier”.
У вас ус отклеился опечатка в коде :mrgreen:

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


20/08/14
11766
Россия, Москва
Тут говорят этот тип появился лишь в Дельфи, без указания версии:
Кто-то писал(а):
В 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
4522
Понятно. Но в 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

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



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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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