Редактирование и вычитка книги

Книга адресована школьникам средних и старших классов, желающим испытать себя в «олимпийских схватках». Может быть полезна студентам-первокурсникам и преподавателям информатики.

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

Re: Редактирование и вычитка книги

Сообщение Oleg_D » 10.12.2016 23:05:25

Смотря где ударение поставить:
Но, господа, позволено ль
С вином равнять do-re-mi-sol?

Впрочем, в данном конкретном случае я не настаиваю на своём, тут дело вкуса.
Oleg_D
постоялец
 
Сообщения: 385
Зарегистрирован: 09.05.2011 11:28:36

Re: Редактирование и вычитка книги

Сообщение Герман » 13.12.2016 12:06:21

В главе по установке FPC, было бы хорошо, если был совет набирать текст программ в текстовых редакторах (Блокнот, NotePad и т.д..), а после компилировать и запускать в FPC. Просидел в АЗС два месяца и глаза болят. Расцветка в нем- " вырви глаз ".
Герман
новенький
 
Сообщения: 26
Зарегистрирован: 27.10.2016 11:11:41

Re: Редактирование и вычитка книги

Сообщение tema » 13.12.2016 12:19:37

Герман писал(а):В главе по установке FPC, было бы хорошо, если был совет набирать текст программ в текстовых редакторах (Блокнот, NotePad и т.д..), а после компилировать и запускать в FPC. Просидел в АЗС два месяца и глаза болят. Расцветка в нем- " вырви глаз ".
Можно вообще использовать Lazarus, а не блокнот
tema
постоялец
 
Сообщения: 204
Зарегистрирован: 24.03.2011 20:19:27

Re: Редактирование и вычитка книги

Сообщение Лекс Айрин » 13.12.2016 17:55:24

Герман писал(а):В главе по установке FPC, было бы хорошо, если был совет набирать текст программ в текстовых редакторах (Блокнот, NotePad и т.д..), а после компилировать и запускать в FPC. Просидел в АЗС два месяца и глаза болят. Расцветка в нем- " вырви глаз ".

поверь, настройки оформления меняются практически всегда достаточно легко... а вот поиск ошибок после набора вне среды превращается в нетривиальную задачу. Не говоря уже о том, что более-менее нормальная RAD (даже стандартная турбопаскалевская), очень сильно ускоряет работу.
Ну и не стоит забывать, что есть:
1) проблема с кодировками исходного текста.
2) проблема с ассоциациями расширений.
3) наличие цикла написание {->отладка->}добавление функционала->отладка->добавление функционала.

можно, конечно, использовать блокноты для программистов (geany, notepad++), но они не решают всех проблем.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 2841
Зарегистрирован: 19.02.2013 16:54:51

Re: Редактирование и вычитка книги

Сообщение Герман » 14.12.2016 14:30:45

В книге про Лазарус не сказано. Олег написал, что не стоит новичку сразу лезть в него. А уж как потренировавшись на " кошках " можно и в лазарус.
Герман
новенький
 
Сообщения: 26
Зарегистрирован: 27.10.2016 11:11:41

Re: Редактирование и вычитка книги

Сообщение Лекс Айрин » 14.12.2016 16:32:42

Герман писал(а): Олег написал, что не стоит новичку сразу лезть в него. А уж как потренировавшись на " кошках " можно и в лазарус.

В корне не согласен. Визуальное программирование сильно отличается от консольного, так что лучше сразу, по возможности, привыкать. Хелловолды и прочие примеры бывают достаточно простыми. Тем более, что среда разработки, может отсутствовать в стандартной сборке на данном конкретном дистрибутиве OS(не забываем, что fpc консольный редактор и не требует наличие идущего в комплекте редактора), а транком пользуются не все, тем более новички.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 2841
Зарегистрирован: 19.02.2013 16:54:51

Re: Редактирование и вычитка книги

Сообщение Oleg_D » 16.12.2016 16:29:54

Герман писал(а):В книге про Лазарус не сказано. Олег написал, что не стоит новичку сразу лезть в него.

Тут придётся в исторический экскурс пуститься. Работа над книгой начата 10 лет тому, когда старый добрый Borland Pascal ещё царствовал в школах. В этой IDE существует средство настройки цветов в редакторе и прочих окнах, и в «песнях» была даже глава с описанием всех этих волшебных манипуляций. Затем я эту главу изъял, поскольку во Free не нашёл аналогичного инструмента (может быть, плохо искал? Подскажите, люди добрые!). Там я настраивал цвета так: тёмные буквы на светло-сером (белом) фоне. Это оптимально для глаз, не зря эта палитра используется в большинстве профессиональных программ. Существующая ныне палитра Free Pascal мне тоже – увы! - не нравится, она утомительна.
Надо сказать, что Lazarus в те времена только-только появлялся, и первая версия мне ни разу не понравилась. Сейчас Лазарус изменился в лучшую сторону, и потому, если новичок способен одолеть ужас от огромного количества ненужных ему менюшек и панелей, то ради бога: Лазарус ему в руки. Или даже Дельфи. :)

Касательно отдельного редактора и консольного компилятора. В своё время ныне забытая система MS-DOS оставляла в распоряжение пользователя всего-навсего 640K памяти. Как говорится, вот тебе три копейки, и ни в чём себе не отказывай. Это что! В более ранних системах работали с памятью 256K и даже 64K. Конечно, помещая IDE в эти 640K, мы отбирали от своей программы огромный кусок памяти. Потому для создания крупных программ имела смысл пакетная обработка: сначала редактор, потом компилятор, линкер, а затем отладчик. В ныне существующих условиях я не вижу смысла новичку (!) привыкать к этому мазохизму. А к тому времени, когда он созреет для очень крупных проектов, всё опять поменяется. Возможно, пакетная обработка будет окончательно забыта :)
Oleg_D
постоялец
 
Сообщения: 385
Зарегистрирован: 09.05.2011 11:28:36

Re: Редактирование и вычитка книги

Сообщение Лекс Айрин » 16.12.2016 16:48:52

Расцветка среды turbo а затем и ide-fpc оптимальна для людей с нарушением зрения (дальтонизм). Ну а то, что в fpc нет настроек внешнего вида никто не мешает перекомпилировать ее с новым оформлением, благо исходные коды открыты.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 2841
Зарегистрирован: 19.02.2013 16:54:51

Re: Редактирование и вычитка книги

Сообщение enot777 » 20.12.2016 16:43:26

>> Oleg_D
Глава 46 стр.352 Листинг p_46_1
1.
Код: Выделить всё
for i:=1 to CSize-1 do BN[i]:= Char(Random(100) mod 10 + Ord('0'));

В цикле используется константа CSize со значением 500.
CSize так же задаёт размерность используемого массива.
Внимание вопрос, почему цикл ограничен диапазоном 1..499, т.е. игнорируется 500-ый элемент массива BN?
В BN[500] всегда будет '7' из-за:
Код: Выделить всё
FillChar(BN, SizeOf(BN), '7');

2.
Код: Выделить всё
i:= SizeOf(aNum);

В результате в i будет 500, потому что sizeof(aNum) вернул размер массива в байтах (writeln(sizeof(char)); вернёт 1, у нас массив 1..500 char, размер 500 байт).
Т.е. если размер элемента массива был бы больше 1 байта, то и sizeof() вернул бы 2..n*500.
Лучше использовать length() для определения количества элементов массива.
Код: Выделить всё
i:= length(aNum);
enot777
новенький
 
Сообщения: 13
Зарегистрирован: 24.11.2016 15:20:58

Re: Редактирование и вычитка книги

Сообщение Oleg_D » 20.12.2016 18:50:25

Спасибо за полезные замечания!
Честно говоря, я не помню, почему поставил
Код: Выделить всё
for i:=1 to CSize-1

Возможно, в каком-то варианте программы у меня массив индексировался с нуля. А может, захотел оставить семёрку в старшем разряде (в вашем нике их аж три). В конце концов, здесь это ни на что не влияет, это просто демо-пример, не более.
Что касается i:= Lenght(aNum), то в старом добром Borland Pascal эта штука для массива не проходит. А я стремился к универсальности примеров. Повторюсь: я работал над учебником программирования, а не руководством по конкретному диалекту Паскаля. Но ваш совет, несомненно, полезен, спасибо.
Oleg_D
постоялец
 
Сообщения: 385
Зарегистрирован: 09.05.2011 11:28:36

Re: Редактирование и вычитка книги

Сообщение enot777 » 20.12.2016 20:07:07

>> Oleg_D

Из примера P_46_2 становится понятно почему было применено такое решение (CSize-1).
500-тый элемент массива используется в случае переполнения: bn1[499]+bn2[499]=13, то в bn1[499]=3, а bn1[500]=1.

По sizeof(), так это придирки.
Но можно обойтись и без length(): writeln(sizeof(bn) div sizeof(bn[low(bn)]));

Хотя в книге нет описания low() и high().
enot777
новенький
 
Сообщения: 13
Зарегистрирован: 24.11.2016 15:20:58

Re: Редактирование и вычитка книги

Сообщение Oleg_D » 20.12.2016 21:07:57

enot777 писал(а):Из примера P_46_2 становится понятно почему было применено такое решение (CSize-1)

Точно! Давно это было, сам уже подзабываю свою писанину... спасибо за напоминание!
enot777 писал(а):Хотя в книге нет описания low() и high().

Нет, потому что не было их в Борланде, а книга ориентировалась на школьника и под Борланд (изначально).
Oleg_D
постоялец
 
Сообщения: 385
Зарегистрирован: 09.05.2011 11:28:36

Re: Редактирование и вычитка книги

Сообщение enot777 » 20.12.2016 23:50:50

>> Oleg_D
Специально установил DosBox.
Запустил BTP 7.0
Код: Выделить всё
type TA = array [0..1] of integer;
var a: TA;
begin
  writeln('size of elements: ',sizeof(a[low(a)]));
  readln;
end.

В справке от BTP7 присутствуют и low() и high().
enot777
новенький
 
Сообщения: 13
Зарегистрирован: 24.11.2016 15:20:58

Re: Редактирование и вычитка книги

Сообщение Oleg_D » 21.12.2016 11:50:34

enot777 писал(а):В справке от BTP7 присутствуют и low() и high().

Да, вы правы, недооценил я старика Борланда, там уже было это. В своё время мне это не требовалось на практике, а потом перешёл на Дельфак и "всё смешалось". :)
Oleg_D
постоялец
 
Сообщения: 385
Зарегистрирован: 09.05.2011 11:28:36

Re: Редактирование и вычитка книги

Сообщение enot777 » 05.01.2017 15:53:02

>> Oleg_D
Глава 56. стр.449
А слабо?
А) В Паскале есть встроенная функция по имени MemAvail (от Memory —
«память», Available — «доступный»). Функция возвращает свободный на текущий
момент объем памяти в куче.
В FPC начиная со 2-ой версии MemAvail и MaxAvail отсутствуют (даже в {$mode tp} FPC пишет: не знаю я memavail).
Следовательно этот код:
Код: Выделить всё
Writeln(’Push :’, MemAvail);

не приемлем в FP.
Спасибо за внимание.
С наступившим.
enot777
новенький
 
Сообщения: 13
Зарегистрирован: 24.11.2016 15:20:58

Пред.След.

Вернуться в Книга "Песни о Паскале"

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

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

Рейтинг@Mail.ru