Страница 5 из 17

Re: Книга «Экспресс курс программирования в Lazarus»

СообщениеДобавлено: 28.12.2014 10:08:46
Vadim
Тип Real в компиляторе FPC x86_64 поддерживается и имеет размер 8 байт, т.е. как Double. Так что товарищи, резко переходящие с TurboPascal на FreePascal, плакать не будут. :-)

Добавлено спустя 5 минут 29 секунд:
SSerge писал(а):А зачем? Хоть один аргумент в пользу этого.

Потому что:
SSerge писал(а):И, к сожалению, :D Turbo Pascal все еще жив... в некоторых учебных заведениях - реально жив :D.

;-)
Рискну так же предположить, что и учебники в этих заведениях относятся к TurboPascal, так что в них вещественные переменные с типом Real будут обязательно присутствовать, как это ни печально... ;-)

Re: Книга «Экспресс курс программирования в Lazarus»

СообщениеДобавлено: 29.12.2014 22:00:29
PapaNT
Привязка данных
Одним и тем же данным могут соответствовать две переменных. Эта
возможность реализуется при помощи небольшого технического приема.
Переменным назначается одна и та же область памяти.
Синтаксис: var имя: тип absolute цель;


Я бы написал несколько иначе...
Абсолютные переменные

Одним и тем же данным могут соответствовать несколько переменных. Эта
возможность реализуется при помощи небольшого технического приема.
Переменным назначается одна и та же область памяти.
Синтаксис: var имя: тип absolute цель.
Пример:
Код: Выделить всё
var
  a : byte;
  c : char absolute a;

В данном примере сперва объявляется переменная "a" типа byte, а затем создаётся абсолютная переменная "c", адресующаяся в оласть памяти используемую переменной a.
Данный приём позволяет оперировать одним участком памяти как целым числом (если использовать обращение к переменной "a") или как симоволом (если использовать обращение к переменной "c").

Добавлено спустя 14 минут 47 секунд:
Про типизированные констатны поднимите выше по тексту к константам.
Соберите описание будевых типов в одно место.
По Вашей книге человеку впервые севшему за программирование едва будет понятно о пользовательский типах данных и зачем они бывают нужны.
Трудно будет осознать понятие видимости переменных в блоках данных. Не четкое дано определение блока и нет примеров.
Она должна быть объявлена перед определением
У Вас книга по PL/1?
Объявление метки
располагается там же где и объявления переменных
- это после VAR?
Определение метки
должно находиться в теле подпрограммы или программы
Попробуйте перейти по метке между процедурами/функциями... В Вашем описании это не воспрещается.

Re: Книга «Экспресс курс программирования в Lazarus»

СообщениеДобавлено: 30.12.2014 23:45:00
tuzik87@inbox.ru
Выкладываю новый вариант в котором постарался учесть ваши замечания. Исправлено много неточностей и ошибок. Также благодарю всех тех, кто помог обнаружить в книге грубые ошибки. Огромная просьба перечитать всю книгу заново для обнаружения оставшихся ошибок в описании синтаксических конструкций.
Ссылка на скачивание: http://freepascal.ru/download/book/express_course_Lazarus_v22.pdf

Ваша критика очень важна для меня.

Re: Книга «Экспресс курс программирования в Lazarus»

СообщениеДобавлено: 31.12.2014 00:53:04
bormant
Ребятки, это никакая не "абсолютная" переменная, зачем вводить новый и к тому же неправильный термин на пустом месте? Почему не написать как оно есть на самом деле? Что-то вроде

При объявлении переменной компилятор будет связывать с ней новую область памяти соответствующего типу переменной размера. Директива absolute позволяет указать компилятору не выделять новую область памяти для переменной, а разместить ее в области памяти, выделенной другой переменной. То есть, значение одной и той же области памяти может быть прочитано и записано путём обращения к разным переменным.
Аналогичного поведения можно добиться при использовании записей с вариантом, а также преобразования типов.

Re: Книга «Экспресс курс программирования в Lazarus»

СообщениеДобавлено: 31.12.2014 04:05:49
Vadim
bormant
Слово "absolute" может указывать и на ту область памяти, которая раньше не выделялась.

Re: Книга «Экспресс курс программирования в Lazarus»

СообщениеДобавлено: 31.12.2014 15:01:03
tuzik87@inbox.ru
Vadim писал(а):Слово "absolute" может указывать и на ту область памяти, которая раньше не выделялась.


Такое возможно в Turbo Pascal, но не во Free Pascal

Re: Книга «Экспресс курс программирования в Lazarus»

СообщениеДобавлено: 01.01.2015 18:24:24
bormant
Vadim,
защищенные режимы процессора, увы, не позволят вам вольностей в виде обращения по произвольно му адресу, как TP в реальном режиме.
Хотя, в руководстве синтаксис

var some_var: some_type absolute целое_выражение;

упоминается до сих пор: http://www.freepascal.org/docs-html/ref/refse21.html

Re: Книга «Экспресс курс программирования в Lazarus»

СообщениеДобавлено: 02.01.2015 08:17:36
Vadim
bormant
Так эта переменная может не к реальному, а вполне виртуальному адресу обращаться. ;-) Сам я такими штуками никогда (ни в TP, ни в FPC) не пользовался, так что у меня это чисто теоретические сведения. :-)

Re: Книга «Экспресс курс программирования в Lazarus»

СообщениеДобавлено: 02.01.2015 09:47:15
SSerge
Самое примечательное, что по руководству var some_var: some_type absolute целое_выражение; что вообще не позволяет такую переменную привязать к какому либо адресу на модели памяти x86, даже в реальном режиме адресации - либо нужны добавочные инструкции - как из сенмента-смещения конвертировать значение адресации в столь извращенную форму :D . На всяких там ДВК (PDP-11), насколько помню, эта конструкция широко применялась в тогдышнем паскале для доступа на регистры внешних устройств, благо там адресуемая память в пределах 64к

Re: Книга «Экспресс курс программирования в Lazarus»

СообщениеДобавлено: 02.01.2015 20:06:23
PapaNT
SSerge, я начиная с ЕС1840-45 и до i386 такой фонус использовал для отрисовки экрана под DOS и Win 3, 95, 98.

Re: Книга «Экспресс курс программирования в Lazarus»

СообщениеДобавлено: 03.01.2015 23:29:22
tuzik87@inbox.ru
Новый вариант книги. Внесены правки в соответствии с замечаниями PapaNT и bormant. Так же устранены мелкие неточности.
Ссылка на скачивание: http://freepascal.ru/download/book/express_course_Lazarus_v24.pdf

Re: Книга «Экспресс курс программирования в Lazarus»

СообщениеДобавлено: 17.02.2015 21:41:50
tuzik87@inbox.ru
Выкладываю здесь новый вариант книги. Изменения: исправление опечаток во всей книги и дополнения в главе, посвященной модулям.

Re: Книга «Экспресс курс программирования в Lazarus»

СообщениеДобавлено: 21.03.2015 21:56:04
tuzik87@inbox.ru
Выкладываю новый вариант книги. Постарался исправить все ошибки и неточности. Добавил новую информацию в главы про указатели и консоль.
Ссылка: http://freepascal.ru/download/book/express_course_Lazarus_v31.pdf

Re: Книга «Экспресс курс программирования в Lazarus»

СообщениеДобавлено: 27.03.2015 19:13:22
Лекс Айрин
SSerge писал(а):Самое примечательное, что по руководству var some_var: some_type absolute целое_выражение; что вообще не позволяет такую переменную привязать к какому либо адресу на модели памяти x86, даже в реальном режиме адресации - либо нужны добавочные инструкции - как из сенмента-смещения конвертировать значение адресации в столь извращенную форму :D .


А подумать?

Указанное значение это смещение относительно текущего значения сегментного регистра DS -- данный факт очевиден.

Re: Книга «Экспресс курс программирования в Lazarus»

СообщениеДобавлено: 29.04.2015 22:42:27
tuzik87@inbox.ru
Тридцать пятый вариант книги доступен для скачивания. Не содержит ошибок и рекомендуется для дальнейшего распространения и выкладывания на сайтах посвященных языку Паскаль. :D
Ссылка: http://freepascal.ru/download/book/express_course_Lazarus_v35.pdf