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

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

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

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

Сообщение Oleg_D » 26.11.2016 23:17:11

В таком случае и проблемы нет: не применяйте совпадающих идентификаторов, -- этого ни один язык не любит.

Добавлено спустя 12 часов 55 минут 43 секунды:
enot777 писал(а):Параметр F в Writeln наверное лишний.

Ну да, можно и выбросить.
enot777 писал(а):Проблема именно в совпадении Dec (сокращение December) и Dec() (декремент)

Это точно мне надо исправить, но не сразу, подожду ещё ваших подсказок, наверняка накопаете :)
Пока исправил только ошибку в файле с ответами: на стр. 79 добавлено w:=0 в функции ExpandTo80.

Кстати, до сих пор мне не приходило в голову проверить Inc/Dec на перечислениях. В стандартном Паскале Вирта этих процедур нет, это новые плюшки. Действительно, работают. При {$R-} даже выход за границы перечисления позволяют. Аккуратней с ними надо.
Oleg_D
постоялец
 
Сообщения: 386
Зарегистрирован: 09.05.2011 11:28:36

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

Сообщение enot777 » 27.11.2016 15:57:10

>> Oleg_D
Глава 36
стр.258 снизу
Проверкой на надмножество (=>) выясняют
стр.259 сверху пример
Код: Выделить всё
if SN1 => SN2 then … else …//ошибка записи оператора сравнения, правильно: '>='.

В Паскале запись операторов сравнения '<=' и '>=' фиксированы (сначала '<' или '>', потом '=') как и присвоения ':='.
Желательно об этом упомянуть в книге.
enot777
новенький
 
Сообщения: 24
Зарегистрирован: 24.11.2016 15:20:58

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

Сообщение Oleg_D » 27.11.2016 16:32:41

Спасибо, взял на карандаш!
Oleg_D
постоялец
 
Сообщения: 386
Зарегистрирован: 09.05.2011 11:28:36

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

Сообщение enot777 » 29.11.2016 20:34:03

>>Oleg_D
Заметил такую вещь, рассказывая про циклы был упомянут break, а continue нет.
Тому есть причина? Если нет, то стоит и про этот оператор управления циклом упомянуть.
enot777
новенький
 
Сообщения: 24
Зарегистрирован: 24.11.2016 15:20:58

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

Сообщение Oleg_D » 29.11.2016 23:33:32

enot777 писал(а):Тому есть причина?

Причина указана в предисловии, — я сознательно ограничил объём подаваемой информации, чтобы не отвлекать ученика от главного. По моим ощущениям (из богатого личного опыта) необходимость в Continue возникает гораздо реже, чем в Break. По крайней мере, в данной книге таких моментов не возникало. Кстати, в исконном виртовском Паскале не было ни того, ни другого — обходились. Зато теперь столько всего вкусного наворочено, что можно ещё пару томов написать.
Oleg_D
постоялец
 
Сообщения: 386
Зарегистрирован: 09.05.2011 11:28:36

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

Сообщение bormant » 30.11.2016 10:24:51

И Break, и Continue -- суть синтаксический сахар, позволяющий не потерять читаемость в эквивалентных конструкциях из if и goto, "меньшее зло".
На мой взгляд, сказав про Break, стоит упомянуть и Continue, в частности про его основной "подводный камень" -- управление возвращается на проверку условия, что не имеет особого значения для for/while (всегда вверх), но способно "выстрелить" для repeat until:
Код: Выделить всё
repeat
  ...
  if ... then Continue;
  ...
until ...;
В данном случае по Continue управление передаётся на until (вниз), а не на repeat (вверх), как это могло бы показаться по аналогии с for или while.
Существенный вопрос остаётся и для for -- производится ли инкремент/декремент (to/downto) управляющей переменной.
Оптимальным может являться указание, что Continue заставляет пропустить исполнение всех оставшихся в теле цикла операторов на текущей итерации. Отсюда новое значение счетчика для новой итерации for, проверка условия по завершении итерации для until и while.
Аватара пользователя
bormant
постоялец
 
Сообщения: 368
Зарегистрирован: 21.03.2012 11:26:01

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

Сообщение Oleg_D » 30.11.2016 10:54:10

Спасибо за интересные замечания, и по поводу "подводного камня" согласен. И потому мне думается, что начинающих не следует нагружать этими вещами, хотя более продвинутый "кодер" безусловно должен знать и понимать всё это. Вопрос не в том, нужно это или не нужно, а в том, когда, на каком этапе это подать? После того, как в голове ученика осядут азы, он будет копать глубже и найдёт ещё много чего полезного и интересного. Мы знаем, что некоторые современные конструкции языка повышают эффективность программ, но несут и некоторый риск в плане вероятных субъективных ошибок. Или требуют более глубокого понимания механизмов, спрятанных за компилятором.
Oleg_D
постоялец
 
Сообщения: 386
Зарегистрирован: 09.05.2011 11:28:36

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

Сообщение Лекс Айрин » 30.11.2016 15:24:33

Oleg_D писал(а): После того, как в голове ученика осядут азы,

Имхо, как раз давать надо как Break так Continue одновременно.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 3399
Зарегистрирован: 19.02.2013 16:54:51

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

Сообщение Oleg_D » 01.12.2016 23:12:14

А не замутить ли нам референдум по сему вопросу? Свой BrExit? Кстати, после Break на втором месте по популярности в моей практике идёт оператор Exit –- досрочный выход из процедуры, -- очень удобно. Но в «Песни» он тоже не попал, опять же по злонамеренности автора. Сейчас пришла жестокая мысль, что и Break я рано обнародовал, -- пусть бы новички помучились на «классике», -- так было бы методически правильней. Зато потом… Ведь всё равно раскопают и Break, и Continue, и Exit, и многое другое. От этого ушлого народа ничего ведь не утаишь.
А если серьёзно, то эти и многие другие сладости можно было бы изложить в некоем аппендиксе к «Песням», где обстоятельно, с примерами показать, где и как их можно использовать. Но я не созрел пока, обещать не буду.
-----
В русле этой дискуссии уместно напомнить о целях и целевой аудитории книги. Надеюсь, это многое объяснит. Основная аудитория – школьники и студенты младших курсов, а цель в том, чтобы дать объём знаний, достаточный для:
1) успешного участия в школьных олимпиадах;
2) последующего углублённого изучения Pascal/Delphi;
3) освоения других языков программирования в соответствии с потребностями и вкусами читателей.
Oleg_D
постоялец
 
Сообщения: 386
Зарегистрирован: 09.05.2011 11:28:36

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

Сообщение Лекс Айрин » 02.12.2016 11:07:13

Oleg_D писал(а):Сейчас пришла жестокая мысль, что и Break я рано обнародовал, -- пусть бы новички помучились на «классике», -- так было бы методически правильней. Зато потом… Ведь всё равно раскопают и Break, и Continue, и Exit, и многое другое. От этого ушлого народа ничего ведь не утаишь.


Я, например, все это знаю, но не пользуюсь. Просто не вижу в них смысла. Имхо, их ввели чтобы не пользоваться (или поменьше) Goto.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 3399
Зарегистрирован: 19.02.2013 16:54:51

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

Сообщение enot777 » 04.12.2016 21:56:10

>> Oleg_D
Глава 39 стр.282
Код: Выделить всё
var
  A : array [1..5] of integer;
  B : array [1..5] of integer;
begin
  A:= B; { здесь компилятор видит ошибку несовместимости типов}
end.

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

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

Сообщение Oleg_D » 04.12.2016 22:51:37

enot777 писал(а):Замечание: в FPC 3.0.0 Win32 компилируется без ошибок.

Неправильный компилятор какой-то. :shock: Помнится, Borland браковал такие вещи, надо будет пощупать это место.
Oleg_D
постоялец
 
Сообщения: 386
Зарегистрирован: 09.05.2011 11:28:36

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

Сообщение tema » 05.12.2016 02:24:20

Oleg_D писал(а):А если серьёзно, то эти и многие другие сладости можно было бы изложить в некоем аппендиксе к «Песням», где обстоятельно, с примерами показать, где и как их можно использовать. Но я не созрел пока, обещать не буду.

Я уже давно думаю о некотором дополнении к книге. Я по ней преподаю и некоторых вещей всё же не хватает. Я это к чему: раз не мне одному пришла в голову эта мысль, то, наверное, пора :D
ЗЫ
Давно думаю над одной хорошей идеей по развитию книги, но всё никак не соберусь с силами её реализовать. Слишком глобальная работа... Но я всё же сделаю скоро тему с этой идеей и, может пойдёт :)
tema
постоялец
 
Сообщения: 310
Зарегистрирован: 24.03.2011 20:19:27

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

Сообщение Oleg_D » 05.12.2016 10:19:41

enot777 писал(а):Замечание: в FPC 3.0.0 Win32 компилируется без ошибок.

Проверил компиляцию на:
1) Free Pascal
2) Borland Pascal
3) Delphi
4) PascalABC
Действительно, первый глотает этот кусок, остальные три сообщают об ошибке. Разумеется, исходники не должны зависеть от капризов конкретного компилятора. По крайней мере, надо стремиться к этому.

Добавлено спустя 17 минут 54 секунды:
tema писал(а):Но я всё же сделаю скоро тему с этой идеей и, может пойдёт

Аппетит приходит во время еды. :D
Мне ведь тоже вначале хотелось втиснуть многое из того, что не вошло в книгу. Но толстые тома отпугивают новичков, пришлось искать некий баланс.
В то же время идею дополнения к "песням" я не отвергаю и приветствую обсуждение мыслей в этом направлении. Возможно, при наличии у меня свободного времени, этот аппендикс будет выкладываться здесь постепенно глава за главой.

Добавлено спустя 6 часов 41 минуту 33 секунды:
tema писал(а):Я по ней преподаю

Ваш опыт преподавателя-практика особенно интересен, вам лучше видны и слабые, и сильные стороны книги. Какие темы даются легче или труднее? Есть ли тут какая-то закономерность, или всё это индивидуально? Думаю, это интересно не только мне.
Oleg_D
постоялец
 
Сообщения: 386
Зарегистрирован: 09.05.2011 11:28:36

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

Сообщение enot777 » 10.12.2016 15:13:09

>> Oleg_D

Глава 43 стр.323

Позволено ль процедуре вызывать саму себя?

Вместо "ль" так и просится "ли". На "ЛЬ" мозг спотыкаестя. Хотя здесь нет ошибки, потому что ль = ли.
enot777
новенький
 
Сообщения: 24
Зарегистрирован: 24.11.2016 15:20:58

Пред.След.

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

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

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

Рейтинг@Mail.ru