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

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

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

Re: "Песни о Паскале" - для школьников и начинающих

Сообщение Oleg_D » 17.11.2011 23:03:46

Уважаемый teapot !
Еще раз спасибо за внимание к моей книге. Думаю, что обсуждать Ваши вопросы на форуме будет полезней для всех: и для меня, и для читателей. Завтра постараюсь Вам ответить, если меня не опередят :).

Добавлено спустя 12 часов 15 минут 36 секунд:
Теперь отвечаю на вопросы.
teapot писал(а):1)стр. 185, "А слабо?", пункт б.Сделайте то же самое для случая, когда программа пытается открыть для записи файл, уже открытый вами в редакторе текста.Я открыл файл "блокнотом" Windows, и программа на паскале спокойно переписала его. Получился пример не совсем наглядный, видимо у "Блокнота" как-то по-другому реализован доступ к текстовым файлам. Или это я что-то сделал не так?

Я проверил и получил то же самое. Дело, вероятно, не в блокноте, а в Windows, - она ведет себя не так, как однозадачная MS-DOS. Когда в свойствах файла я установил флаг «только чтение» (правой кнопкой мыши), то программа сработала, как надо, т.е. выдала код ошибки 5 (File access denied - Отказано в доступе к файлу).

teapot писал(а):2)стр. 188, 4-ый абзац.
Когда выделение станет ненужным, его можно снять, щелкнув мышью в
любом месте текста, либо нажав комбинацию «Ctrl+H».
Может быть, я снова что-то делаю не так, но «Ctrl+H» у меня (в последней версии ФП) работает как backspace, стирает символ слева от курсора.


Тут моя промашка – надо нажимать «Ctrl+K+H». По горячим клавишам лучше порыться в хелпах или других источниках.

teapot писал(а):3)стр. 193, третий абзац
Теперь заглянем внутрь функции FindNumber. В первой строке результату
функции присваивается значение FALSE. И это оправдано, поскольку имени
функции должно быть обязательно присвоено значение. Может быть, Вы имели в виду "результату функции"? Или я что-то неправильно понял?

Вы правильно поняли. Я хотел выразиться короче, понятней, но Ваш вариант, наверное, лучше.

teapot писал(а):4)стр. 196, "А слабо?", пункт а. Это не опечатка, просто не кое-что непонятно.
В ответах к этому заданию Вы представили следующий код:

Код: Выделить всё
var F1, F2: text;    N: integer;
begin
  Assign(F1, 'Police.in');  Reset(F1);
  Assign(F2, 'Police.out'); Rewrite(F2);
  while not Eof(F1) do begin
    Read(F1, N);
    Writeln(F2,N);
  end;
  Close(F1);  Close(F2);
end.


У меня получилась почти так же, только переменной, в которую записывается номер (в данном случае - N), я присвоил тип string. И получилось вот что: программа впадала в бесконечный цикл, файл police.out рос бесконечно. Я почему-то не могу догадаться, из-за чего это происходит. Думаю, потому что конец строки не достигается, верно? Но почему? Пожалуйста, объясните!

Тут все просто. Процедура Read читает в переменную типа STRING символы до конца текущей строки файла, но не переходит на следующую строку (в отличие от Readln). Потому при первом её вызове получите всю текущую строку, а при последующих – пустые строки, а позиция чтения сдвигаться не будет. Соответственно и до конца файла не дойдете.
Еще раз благодарю за въедливость - Вы просто находка для меня! Пишите сюда и дальше, желаю успешного продвижения по страницам.
Oleg_D
постоялец
 
Сообщения: 391
Зарегистрирован: 09.05.2011 11:28:36

Re: "Песни о Паскале" - для школьников и начинающих

Сообщение teapot » 18.11.2011 13:29:47

Спасибо, буду писать по мере освоения книги.
Аватара пользователя
teapot
незнакомец
 
Сообщения: 7
Зарегистрирован: 13.11.2011 15:20:23

Re: "Песни о Паскале" - для школьников и начинающих

Сообщение Valeriy » 22.11.2011 14:24:09

Попалась ещё одна опечатка, Глава 33 стр 237.

Код: Выделить всё
Type TMonth : (Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec);
Var m : TMonth;
  . . .
  m:= 3;    { это ошибка }
  m:= TMonth(3); { так можно, равнозначно m:= Apr (счет идет от нуля) }

в сроке :
Type TMonth : (Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec);
: вместо =

И ещё, подскажите пожайлуста, можно ли средствами FreePascal написать программу которая вызывала бы аудио файлы, например *.wma или *.mp3. Не воспроизводить их, а просто вызывать, а воспроизводит пусть стандартный медиаплейер.
Заранее спасибо!
Valeriy
новенький
 
Сообщения: 14
Зарегистрирован: 02.09.2011 06:13:57


Re: "Песни о Паскале" - для школьников и начинающих

Сообщение Oleg_D » 22.11.2011 16:14:18

Valeriy писал(а):в сроке :Type TMonth : (Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec);: вместо =

Ага, благодарю за подсказку, Валерий!
На Ваш вопрос лучше поискать ответ в других ветках форума, одну ссылочку Вам уже дали.
Oleg_D
постоялец
 
Сообщения: 391
Зарегистрирован: 09.05.2011 11:28:36

Re: "Песни о Паскале" - для школьников и начинающих

Сообщение SSerge » 12.01.2012 07:31:40

Oleg_D
Посмотрел книжку, полистал... :) Эх, году в 1992-м или чуть позже для системы образования цены бы в ней не было.
Однако, 20 лет прошло.

С тех пор, BP7, являющийся основой всех примеров, на широко распространенных сейчас компьютерах, стартовать можно только под эмулятором типа DOSBOX, иначе нещадно валится по Runtime Error 200. И если свои программы еще можно кое как ваять, ценой добывания исходников RTL и заремливания кода функции Delay с последующей перекомпиляцией рунтайма, то что делать с IDE? Так что, большинство попыток установки _этого_ в нынешнее время - epic fail. Да и сам режим DOS с течением времени может кануть в Лету. Может быть, стоит переориентировать книгу исключительно на fpc, с его особенностями и специфичным fpc/delphi/lazarus синтаксисом?

Ну, и среди прочих неприятностей, начинается массовое применение операционных систем, у которых символы имеют небайтовую кодировку. И ученика, пытающегося повторить примеры работы с русскоязычными строками и символами под такой ОС, ждет сногосшибательный epic fail. Кое-что о проблеме можно увидеть здесь: http://sirserge.altai.info/articles/?id=41 Наверно, стоило бы как-то дополнить книгу информацией о том, как всё таки работать с русскими строками под linux locale utf-8; рушит все концепции, но...

Ну и достаточно странно уделить столько внимания понятию множеств (set), с учетом того что кроме дидактической пользы на практике работу с множествами категорически лучше не применять, исходя из убогости реализации множеств в самом паскале, и полного отсутствия аналогичных типов данных в большинстве других языков программирования. В некоторой мере это же самое касается и перечислений.

Ну и объектная модель, которую пытаетесь описать, принадлежит скорее уходящему в забвение синтаксису, чем тому, что используется в реальности.

таково imho. :)
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: "Песни о Паскале" - для школьников и начинающих

Сообщение Oleg_D » 12.01.2012 11:34:23

Уважаемый SSerge, прежде всего, благодарю Вас за отзыв, а также за Ваши предложения и замечания. Надеюсь, что дискуссия с Вами будет полезной.
Форумы, где «мэтры» поучают новичков, пестрят явлением, которое я бы назвал... как бы это точнее... «синдром профессионала» что ли? Вот я, многоопытный велосипедист и водитель, наблюдаю страдания мальчишки, впервые севшего на велосипед. Как это можно – падать с велосипеда?! Все умеют, а он – нет! И зачем, глупец, он осваивает «велик»? Далеко ли на нем уедешь? Уж лучше сразу на мотоцикл – Хонду или Харлей. А еще лучше – купить машину! И т.д. и т.п. Точно так же и пловцу не понять, почему пускает пузыри впервые ступивший в воду.

SSerge писал(а):Посмотрел книжку, полистал... Эх, году в 1992-м или чуть позже для системы образования цены бы в ней не было. Однако, 20 лет прошло.


Да, мне тоже жаль, что книга не появилась раньше...

SSerge писал(а):С тех пор, BP7, являющийся основой всех примеров, на широко распространенных сейчас компьютерах, стартовать можно только под эмулятором типа DOSBOX, иначе нещадно валится по Runtime Error 200.


Давно решено, - смотрите приложение «А». Никаких проблем под XP и Вистой не наблюдал. Семерку пока не щупал (кто пробовал? – поделитесь).

SSerge писал(а):Да и сам режим DOS с течением времени может кануть в Лету.


Что такое «режим DOS» ? Консольный, что ли? Так он не привязан к операционкам, - применялся до Виндов и Линуксов, будет здравствовать и дальше. Примеры из книги тоже не привязаны к операционкам, - никаких библиотек не подключается.

SSerge писал(а):Ну, и среди прочих неприятностей, начинается массовое применение операционных систем, у которых символы имеют небайтовую кодировку. И ученика, пытающегося повторить примеры работы с русскоязычными строками и символами под такой ОС, ждет сногосшибательный epic fail. Кое-что о проблеме можно увидеть здесь: http://sirserge.altai.info/articles/?id=41 Наверно, стоило бы как-то дополнить книгу информацией о том, как всё таки работать с русскими строками под linux locale utf-8; рушит все концепции, но...


Да, можно было бы дополнить и тем, и этим, и еще многим... Но начинающему важнее все-таки понять основы: что такое байт, что такое символ, и как они связаны. А для профи книг и так хватает. Кстати, простые решения проблем с русификацией под Виндой показаны в приложениях «А» и «Б».

SSerge писал(а):Ну и достаточно странно уделить столько внимания понятию множеств (set), с учетом того что кроме дидактической пользы на практике работу с множествами категорически лучше не применять, исходя из убогости реализации множеств в самом паскале, и полного отсутствия аналогичных типов данных в большинстве других языков программирования. В некоторой мере это же самое касается и перечислений.


Множества – мощнейший инструмент, но многие «профи» даже не слыхали о них, пускаясь в изобретение своих велосипедов. Все потому, что либо «пропустили» эту тему, изучая Паскаль, либо обучались на иных языках. Реализация множеств – другое дело. Встроенная в Паскале – да, скромна, но вполне годится для обучения. Зато тот, кто понял суть множеств, сможет реализовать их на любом языке и разными способами: через битовые массивы, бинарные деревья и т.д. В конце концов, ООП и перегрузка операторов для чего придуманы? Но это уже не для новичков, разумеется.

SSerge писал(а):Ну и объектная модель, которую пытаетесь описать, принадлежит скорее уходящему в забвение синтаксису, чем тому, что используется в реальности.


Здесь не понял. Замена слова OBJECT словом CLASS – это революция в синтаксисе? Объектная модель как была, так и осталась. В конце концов, новичку здесь важно усвоить три принципа ООП: инкапсуляцию, наследование и полиморфизм. «А пуд как был, так он и есть – шестнадцать килограмм».
Еще раз благодарю Вас!
Oleg_D
постоялец
 
Сообщения: 391
Зарегистрирован: 09.05.2011 11:28:36

Re: "Песни о Паскале" - для школьников и начинающих

Сообщение SSerge » 12.01.2012 17:28:43

Oleg_D

попробую по очереди.

"режим DOS" - возможность запускать 16-разрядные программы предназначенные для "real-mode" режима работы CPU. Microsoft периодически напоминает, что она хочет избавить нас от этого пережитка времён, потому что от таких задач сильно страдает производительность и стабильность остальных процессов операционной системы. На сегодня не уверен, что DOS-овские программы запускаются на 64х Windows 7; подсистема для Windows 3.11 оттуда вымарана точно.

Объектная модель
Я в виду имел следующее - официальным синтаксисом Free Pascal в отношении объектов является "дельфовый" метод, типа

Код: Выделить всё
Type aClass=class(TObject)
  constructor Create(myvar:integer);
...
  destructor Destroy; virtual;
  procedure Free; virtual;
end;

....
Var a:aClass;

....

a:=aClass.Create(...);
...
a.Free;


...то есть, по постулату "экземпляр объекта (класса) ВСЕГДА является динамической переменной и создать его статический экземпляр невозможно. При этом знаки указателей "^" для обращения к полям не используются, не используются операторы NEW и DELETE для создания и уничтожения экземпляра".

То есть я всё пытаюсь повернуть к тому - давайте популяризировать вещь хорошую и актуальную - FreePascal, с его синтаксисом и особенностями. Если случайно не заметили - у него некоторые Unitы, например, по другому называются и типы данных несколько отличаются. Еще более это актуально в связи с борьбой наших правоохранителей за лицензионность. Ведь Borland Pascal так и не был переведен в "общественное достояние" юридически. Ну к чему учить детей программировать на формально краденном инструментарии, который нет никакой возможности лицензировать. Да еще с большущими проблемами запуска. Кстати по поводу
простые решения проблем с русификацией под Виндой показаны в приложениях «А» и «Б».

парочку брюзжаний, а?
1) Ну, например, вместо того, чтобы править реестр windows XP на предмет "русификации консоли", можно поступить гораздо проще - выставить русский язык языком системы по умолчанию, на всех изначально русских Windows, не испорченных руками создателей всяких ZverCD, это срабатывает :)
2) Вы детально описываете как сделать ярлык для BP.EXE, при этом мааленькую вещь оставляете без внимания - если не выставить в ярлыке размер используемой памяти XMS, то IDE и компилятору будет доступно не более мегабайта :)
3) "Версия 7.01" - это расширенный коммерческий релиз, содержащий в себе исходники библиотек RTL, Turbo Vision и OWL. Насколько помню, ни IDE ни компилятор в нем ни байтом не отличаются от 7.0, различен небольшой набор несущественных вспомогательных утилит.
4) «Runtime Error 200» ... можно найти бесплатные «заплатки», исправляющие модуль CRT - а толку то? Сама IDE прекрасно падает, увы! Причем, там (на память, дааавно не пользовал) уже валится ошибка менеджера памяти DPMI - на некоторых машинах; на некоторых машинах запускается "через раз" - как повезет. :) 2.5 ГГц и выше или процессор с предсказанием логики ветвления (Core2, i3, i5, i7) - гарантия неисполнения. Патчи уже не помогают - их действие кончается где-то на 1.3-1.6 ГГц тактовой частоты. - ну давайте наконец внедрять FreePascal, опять возвращаюсь к пожеланию. :)

Автор, конечно, вы - и вам решать. Но как приближение к идеалу я бы видел в Вашей книге следующее - выбросить оттуда BP7. Вообще. :) Оставить freepascal и подправить примеры под его особенности и картинки под его IDE. Ну и добавить раздел о том, как это пускать и как этим пользоваться под linux. С учетом того, что во многих регионах школы переводят на Linux и прочее СПО, это, наверное, очень актуально.

А для профи книг и так хватает.


Увы. Нет их. :) На сегодняшний день имеем труд Мансурова про lazarus, книгу группы авторов, распространяемую Alt Linux и зарубежные источники на английском/немецком языках типа официальной документации FPC и распространяемой за рубежами коммерческой книги Lazarus:Klassenbibliothek и ее английского перевода. Всё. :) причем, то что на русском языке - никак не может считаться литературой для профессионалов. Это начальный уровень знакомства, не более.
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: "Песни о Паскале" - для школьников и начинающих

Сообщение Oleg_D » 12.01.2012 23:50:50

SSerge
Ага, теперь Ваша позиция для меня прояснилась. Большинство Ваших замечаний не касаются того, что важно моим читателям. Ну какое новичку дело, например, до того, сколько памяти получит IDE, и будет ли падать что-то, чем он не пользуется. Кстати, "повалить" BP под Виндой, мне пока не удалось - надежная машина. Разве что семерка поможет, надо попробовать. :D
SSerge писал(а):"режим DOS" - возможность запускать 16-разрядные программы предназначенные для "real-mode" режима работы CPU. Microsoft периодически напоминает, что она хочет избавить нас от этого пережитка времён

Мда... опять пугает. От этого монстра можно всего ожидать, только не хорошего... :(
SSerge писал(а):Объектная модель. Я в виду имел следующее - официальным синтаксисом Free Pascal в отношении объектов является "дельфовый" метод ...то есть, по постулату "экземпляр объекта (класса) ВСЕГДА является динамической переменной

Вот-вот, поэтому я и начал со старикашки BP, где синтаксис явен и не надо гадать, что это: динамическая или статическая переменная. Для новичка очень важно ущучить эту разницу. А в нововведениях он потом легко разберется.
SSerge писал(а):Автор, конечно, вы - и вам решать. Но как приближение к идеалу я бы видел в Вашей книге следующее - выбросить оттуда BP7.

За основу взят таки FP. А примеры книги не привязаны ни к BP, ни к FP, ни к Delphi. Ну, а в приложении BP никому не мешает. К тому же, в школах он еще распространен, и там я не в силах "вычеркнуть" его.
SSerge писал(а):Увы. Нет их. На сегодняшний день имеем труд Мансурова про lazarus, книгу группы авторов, распространяемую Alt Linux...

Но есть много книг по Дельфи. В конце концов, профи и на английском прочтет, - хелпы, по крайне мере. Для работы достаточно. Но хорошие книги нужны, конечно, тут я согласен на 100%.
Еще раз благодарю за советы и доброжелательную критику! :)
Oleg_D
постоялец
 
Сообщения: 391
Зарегистрирован: 09.05.2011 11:28:36

Re: "Песни о Паскале" - для школьников и начинающих

Сообщение SSerge » 13.01.2012 09:05:18

Oleg_D писал(а):Вот-вот, поэтому я и начал со старикашки BP, где синтаксис явен


Кстати, если придерживаться Первоисточника http://edn.embarcadero.com/article/20803, то в "бесплатное свободное плаванье и распространение" таки был выпущен музейный Turbo Pascal 5.5

Объекты в нем уже есть, а вот Turbo Vision еще нету - и слава богу!

Ну, и даже он

These historical files are provided to the Borland community free of charge. They may be downloaded and used "as is" for personal use only.


то есть, формально говоря, в коммерческих целях, а к этим "целям" юридически относится учебный процесс в учебном заведении :) использовать тоже нельзя.

Добавлено спустя 11 минут 24 секунды:
Oleg_D писал(а):а основу взят таки FP. А примеры книги не привязаны ни к BP, ни к FP, ни к Delphi


Ой ли? :D Страница 331, внутренний формат типа string; Для Delphi и fp представление неверно, поскольку в них string=AnsiString, и длина сроки хранится не в нулевом байте. :)
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: "Песни о Паскале" - для школьников и начинающих

Сообщение Oleg_D » 13.01.2012 10:08:32

SSerge
SSerge писал(а):Объектная модель. Я в виду имел следующее - официальным синтаксисом Free Pascal в отношении объектов является "дельфовый" метод

Здесь, пожалуй, Вы правы, и я добавлю несколько слов в 61-ю главу об этом новом синтаксисе. Некоторые авторы книг по Дельфи дают этот синтаксис сразу «в лоб», и не всегда заостряют внимание на динамическом характере объектов, - новичок путается. К сожалению, теме ООП я не смог отдать столько, сколько она заслуживает – слишком обширна.
SSerge писал(а):1) Ну, например, вместо того, чтобы править реестр windows XP на предмет "русификации консоли", можно поступить гораздо проще - выставить русский язык языком системы по умолчанию

Из той ли это оперы? Сомневаюсь. Может, уточните, как Вы это делаете? Я тоже попробую.
SSerge писал(а):Ой ли? Страница 331, внутренний формат типа string; Для Delphi и fp представление неверно, поскольку в них string=AnsiString, и длина сроки хранится не в нулевом байте.

Не совсем так. На стр. 549-550 указана настройка для применения коротких строк в Дельфи. Аналогичная опция доступна для FP (совместимость с BP). А на стр. 331 есть оговорка:
Код: Выделить всё
«В разных версиях Паскаля применяют несколько разных строковых типов, сейчас мы рассмотрим только короткие строки, введенные еще в Borland Pascal (в новых версиях Паскаля этот тип называется ShortString).»
Опять же, короткие строки применены в дидактических целях – их проще освоить новичку, - не надо заморачиваться с динамической памятью.
Повторяю: я избегал примеров, завязанных на какой-то конкретный диалект современных Паскалей. Почти все примеры работают во всех трех обсуждаемых здесь IDE, а большинство из них – и в Pascal ABCNet (кроме злополучных строк). :D
Oleg_D
постоялец
 
Сообщения: 391
Зарегистрирован: 09.05.2011 11:28:36

Re: "Песни о Паскале" - для школьников и начинающих

Сообщение SSerge » 13.01.2012 11:58:06

Oleg_D писал(а): SSerge писал(а):1) Ну, например, вместо того, чтобы править реестр windows XP на предмет "русификации консоли", можно поступить гораздо проще - выставить русский язык языком системы по умолчанию


Из той ли это оперы? Сомневаюсь. Может, уточните, как Вы это делаете? Я тоже попробую.



"Пуск" -> "Панель управления" -> "Язык и региональные стандарты" -> Вкладка "Языки" -> Кнопка "Подробнее"

Язык ввода по умолчанию должен быть поставлен "Русский - Русская".

При этих настройках, при вызове окна DOS, aka "Ткнуть из моя компутер в DOSPROGRAM.EXE" переключение раскладки клавиатуры с русского на английский начинает работать. :x Однако, чтобы переключиться на русский, используется комбинация "Правые Ctrl+Shift", чтобы на английский - "левые Ctrl+Shift". (В данном случае у меня в вендовых задачах смена раскладки "Alt+Shift") Если язык ввода по умолчанию стоит английским, фокус не срабатывает.

Пробуйте. Я только что проверил. :)
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: "Песни о Паскале" - для школьников и начинающих

Сообщение Oleg_D » 13.01.2012 16:31:26

SSerge
SSerge писал(а):"Пуск" -> "Панель управления" -> "Язык и региональные стандарты" -> Вкладка "Языки" -> Кнопка "Подробнее"
Язык ввода по умолчанию должен быть поставлен "Русский - Русская".

Спасибо! Проверил на XP - работает. :D Позже на Висте гляну.
Сейчас у меня в виндовых окнах настроено так, что левая и правая пара "Ctrl+Shift" работают одинаково: опрокидывают язык ввода тудя-сюда. В DOS-овском окне получается иначе: левая пара - на английский, правая - на русский.
Воистину, перефразируя классика: "Windows неисчерпаема, как и атом!" :D
Oleg_D
постоялец
 
Сообщения: 391
Зарегистрирован: 09.05.2011 11:28:36

Re: "Песни о Паскале" - для школьников и начинающих

Сообщение Oleg_D » 15.01.2012 12:37:33

SSerge писал(а):"Пуск" -> "Панель управления" -> "Язык и региональные стандарты" -> Вкладка "Языки" -> Кнопка "Подробнее"
Язык ввода по умолчанию должен быть поставлен "Русский - Русская".

А вот на Висте не получается у меня. :(
У кого удалось на Висте и семерке? Поделитесь опытом.
Oleg_D
постоялец
 
Сообщения: 391
Зарегистрирован: 09.05.2011 11:28:36

Re: "Песни о Паскале" - для школьников и начинающих

Сообщение Vadim » 16.01.2012 03:47:28

Oleg_D писал(а):У кого удалось на Висте и семерке? Поделитесь опытом.

Единственный рецепт - ставить FreePascal и забыть навсегда о любых проблемах. ;)
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Пред.След.

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

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

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

Рейтинг@Mail.ru