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

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

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

Сообщение Vadim » 28.12.2014 10:08:46

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

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

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

;-)
Рискну так же предположить, что и учебники в этих заведениях относятся к TurboPascal, так что в них вещественные переменные с типом Real будут обязательно присутствовать, как это ни печально... ;-)
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

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

Сообщение PapaNT » 29.12.2014 22:00:29

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


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

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

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

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

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

Сообщение tuzik87@inbox.ru » 30.12.2014 23:45:00

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

Ваша критика очень важна для меня.
tuzik87@inbox.ru
постоялец
 
Сообщения: 145
Зарегистрирован: 25.12.2012 15:05:28
Откуда: Россия, Новосибирск

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

Сообщение bormant » 31.12.2014 00:53:04

Ребятки, это никакая не "абсолютная" переменная, зачем вводить новый и к тому же неправильный термин на пустом месте? Почему не написать как оно есть на самом деле? Что-то вроде

При объявлении переменной компилятор будет связывать с ней новую область памяти соответствующего типу переменной размера. Директива absolute позволяет указать компилятору не выделять новую область памяти для переменной, а разместить ее в области памяти, выделенной другой переменной. То есть, значение одной и той же области памяти может быть прочитано и записано путём обращения к разным переменным.
Аналогичного поведения можно добиться при использовании записей с вариантом, а также преобразования типов.
Аватара пользователя
bormant
постоялец
 
Сообщения: 407
Зарегистрирован: 21.03.2012 11:26:01

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

Сообщение Vadim » 31.12.2014 04:05:49

bormant
Слово "absolute" может указывать и на ту область памяти, которая раньше не выделялась.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

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

Сообщение tuzik87@inbox.ru » 31.12.2014 15:01:03

Vadim писал(а):Слово "absolute" может указывать и на ту область памяти, которая раньше не выделялась.


Такое возможно в Turbo Pascal, но не во Free Pascal
tuzik87@inbox.ru
постоялец
 
Сообщения: 145
Зарегистрирован: 25.12.2012 15:05:28
Откуда: Россия, Новосибирск

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

Сообщение bormant » 01.01.2015 18:24:24

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

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

упоминается до сих пор: http://www.freepascal.org/docs-html/ref/refse21.html
Аватара пользователя
bormant
постоялец
 
Сообщения: 407
Зарегистрирован: 21.03.2012 11:26:01

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

Сообщение Vadim » 02.01.2015 08:17:36

bormant
Так эта переменная может не к реальному, а вполне виртуальному адресу обращаться. ;-) Сам я такими штуками никогда (ни в TP, ни в FPC) не пользовался, так что у меня это чисто теоретические сведения. :-)
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

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

Сообщение SSerge » 02.01.2015 09:47:15

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

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

Сообщение PapaNT » 02.01.2015 20:06:23

SSerge, я начиная с ЕС1840-45 и до i386 такой фонус использовал для отрисовки экрана под DOS и Win 3, 95, 98.
PapaNT
постоялец
 
Сообщения: 167
Зарегистрирован: 11.09.2009 12:06:46
Откуда: Москва

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

Сообщение tuzik87@inbox.ru » 03.01.2015 23:29:22

Новый вариант книги. Внесены правки в соответствии с замечаниями PapaNT и bormant. Так же устранены мелкие неточности.
Ссылка на скачивание: http://freepascal.ru/download/book/express_course_Lazarus_v24.pdf
tuzik87@inbox.ru
постоялец
 
Сообщения: 145
Зарегистрирован: 25.12.2012 15:05:28
Откуда: Россия, Новосибирск

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

Сообщение tuzik87@inbox.ru » 17.02.2015 21:41:50

Выкладываю здесь новый вариант книги. Изменения: исправление опечаток во всей книги и дополнения в главе, посвященной модулям.
Вложения
Экспресс курс программирования в Lazarus(Двадцать шестое издание).zip
(111.45 КБ) Скачиваний: 783
tuzik87@inbox.ru
постоялец
 
Сообщения: 145
Зарегистрирован: 25.12.2012 15:05:28
Откуда: Россия, Новосибирск

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

Сообщение tuzik87@inbox.ru » 21.03.2015 21:56:04

Выкладываю новый вариант книги. Постарался исправить все ошибки и неточности. Добавил новую информацию в главы про указатели и консоль.
Ссылка: http://freepascal.ru/download/book/express_course_Lazarus_v31.pdf
tuzik87@inbox.ru
постоялец
 
Сообщения: 145
Зарегистрирован: 25.12.2012 15:05:28
Откуда: Россия, Новосибирск

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

Сообщение Лекс Айрин » 27.03.2015 19:13:22

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


А подумать?

Указанное значение это смещение относительно текущего значения сегментного регистра DS -- данный факт очевиден.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

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

Сообщение tuzik87@inbox.ru » 29.04.2015 22:42:27

Тридцать пятый вариант книги доступен для скачивания. Не содержит ошибок и рекомендуется для дальнейшего распространения и выкладывания на сайтах посвященных языку Паскаль. :D
Ссылка: http://freepascal.ru/download/book/express_course_Lazarus_v35.pdf
tuzik87@inbox.ru
постоялец
 
Сообщения: 145
Зарегистрирован: 25.12.2012 15:05:28
Откуда: Россия, Новосибирск

Пред.След.

Вернуться в Обучение Free Pascal

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

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

Рейтинг@Mail.ru