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

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

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

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

Сообщение Oleg_D » 22.05.2011 22:51:23

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

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

Сообщение Paster Fob » 29.05.2011 08:31:55

Oleg_D здравствуйте!В главе 24 в разделе "А вам слабо?" под пунктом А. есть такое задание:
Переработайте программу шифрования так, чтобы ключ задавался
пользователем с клавиатуры (в начале работы программы). Затем этот ключ
должен передаваться в процедуры и функции через параметр. Заголовки процедур
и функций должны быть такими.
function CryptChar(arg: char; key: integer): char;
procedure CryptString(var arg: string; key: integer);

Что-то я не пойму как это сделать.Если ключ передавать в функции,зачем тогда его передавать в процедуры?И если его передавать в процедуры,зачем тогда вообще нужны функции в программе?Тогда проще всё в процедурах сделать.Или как?
Аватара пользователя
Paster Fob
постоялец
 
Сообщения: 188
Зарегистрирован: 22.02.2011 21:53:36
Откуда: Новосибирск.

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

Сообщение Vadim » 29.05.2011 10:38:39

Paster Fob писал(а):Если ключ передавать в функции,зачем тогда его передавать в процедуры?И если его передавать в процедуры,зачем тогда вообще нужны функции в программе?

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

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

Сообщение Oleg_D » 29.05.2011 18:17:22

Paster Fob писал(а):Что-то я не пойму как это сделать.Если ключ передавать в функции,зачем тогда его передавать в процедуры?И если его передавать в процедуры,зачем тогда вообще нужны функции в программе?Тогда проще всё в процедурах сделать.Или как?

Дело в том, что ключ используется внутри функций шифрования/дешифрования символа, а функции эти вызываются из процедур. Таким образом, ключ может попасть в функцию только через процедуру (ну, если профессионально делать).
Oleg_D
постоялец
 
Сообщения: 391
Зарегистрирован: 09.05.2011 11:28:36

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

Сообщение Padre_Mortius » 29.05.2011 18:45:39

Oleg_D,можно поинтересоваться почему отказались от использования в функциях зарезервированного Result для возврата результата.
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

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

Сообщение GrayEddy » 29.05.2011 19:37:40

Совместимость с TP, imho.
GrayEddy
постоялец
 
Сообщения: 375
Зарегистрирован: 06.05.2005 09:37:56

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

Сообщение Padre_Mortius » 29.05.2011 20:13:04

GrayEddy, все немного сложнее
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

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

Сообщение Oleg_D » 30.05.2011 11:33:18

Padre_Mortius писал(а):Oleg_D,можно поинтересоваться почему отказались от использования в функциях зарезервированного Result для возврата результата.

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

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

Сообщение Oleg_D » 17.07.2011 00:05:16

16 июля 2011 г. выложена 7-я редакция книги.
Oleg_D
постоялец
 
Сообщения: 391
Зарегистрирован: 09.05.2011 11:28:36

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

Сообщение Oleg_D » 27.08.2011 13:09:15

27 августа 2011 г. выложена 8-я редакция книги.
Oleg_D
постоялец
 
Сообщения: 391
Зарегистрирован: 09.05.2011 11:28:36

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

Сообщение teapot » 13.11.2011 16:01:46

Здравствуйте, Олег. Я решил вспомнить школьный курс информатики (признаться, не самый лучший), вспомнить паскаль, который изучал больше 10 лет назад, и Ваша книга пришлась кстати. Здорово, что Вы выкладываете ее совершенно бесплатно.

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

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

Даже меня, человека, которому поздно учиться, книга всего за два-три занятия приучила при решении очередной задачи сразу думать, какие программе понадобятся переменные, что выделить в подпрограммы и т.д. И писать грамотно: не забывать объявлять переменные, разделять операторы, не пропускать параметры функции, и т. д. Это плюс.

Что касается минусов, то скажу исключительно об опечатках и прочих неточностях. Пока что я дошел только до 25 главы.

стр. 120, "А Слабо?", пункт в, третий пример.

Код: Выделить всё
for i:=1 to Length(S) do S:= S[i] + '-';


Не совсем понятно, что Вы хотели проиллюстрировать этим. Ведь переменная S каждую итерацию цикла переписывается, и на выходе в нее записывается только последний символ строки и '-'. Логически этот пример выбиваетсся из предыдущих.

стр. 156, пятый абзац.

"...в приложение И". Правильно "в приложении".

стр. 159, "Расшифровка символа".

Здесь Вы предлагаете для функции расшифровки название EnCrypt. Но по-английски это означает "зашифровать", а "расшифровать" это decrypt. Конечно, можно называть функции как угодно, но я думаю, раз в начале книги Вы сподвигали читателей к изучению английского языка, то лучше следовать заданному курсу.

Где-то в начале была еще одна опечатка, но сейчас я не могу ее найти. Найду, когда закончу и перечитаю книгу.

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

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

Сообщение Oleg_D » 13.11.2011 20:12:29

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

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

Сообщение Valeriy » 14.11.2011 14:49:31

Текст программы P_31_1, Глава 31, стр 216 содержит опечатку в строке:

if not Eof(InFile) do Readln(InFile);
Параметр - do

И ещё вопрос.
Зачем в этой же строке применён оператор if, ведь можно обойтись без него как было в программе P_30_1:

while not Eof(InFile) do begin
Counter:= Counter+1;
HandleString;
Readln(InFile);
end;
Close(InFile); Close(OutFile);
end.
Valeriy
новенький
 
Сообщения: 14
Зарегистрирован: 02.09.2011 06:13:57

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

Сообщение Oleg_D » 14.11.2011 15:45:06

Valeriy писал(а):Текст программы P_31_1, Глава 31, стр 216 содержит опечатку в строке:
Код: Выделить всё
   if not Eof(InFile) do Readln(InFile);

Параметр - do

Об этой опечатке уже знаю, но все равно спасибо за подсказку, Валерий!

Valeriy писал(а):И ещё вопрос.Зачем в этой же строке применён оператор if, ведь можно обойтись без него как было в программе P_30_1:
Код: Выделить всё
while not Eof(InFile) do begin
     Counter:= Counter+1;
     HandleString;
     Readln(InFile);
end;
Close(InFile); Close(OutFile);
end.

В данном случае нужен If, и вот почему.
Мы договорились выполнять перевод строки после HandleString, а внутри этой процедуры в принципе можно достичь конца файла, и тогда простой Readln(InFile) без IF вызовет ошибку.
Еще раз благодарю всех за подсказки!
Oleg_D
постоялец
 
Сообщения: 391
Зарегистрирован: 09.05.2011 11:28:36

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

Сообщение teapot » 17.11.2011 17:48:58

Здравствуйте, Олег. У меня возникло еще несколько вопросов. Пишу здесь, так как может быть еще кто-нибудь захочет на них ответить.
Если Вы против, то буду писать только на e-mail.

1)стр. 185, "А слабо?", пункт б.

Сделайте то же самое для случая, когда программа пытается открыть для
записи файл, уже открытый вами в редакторе текста.


Я открыл файл "блокнотом" Windows, и программа на паскале спокойно переписала его. Получился пример не совсем наглядный, видимо у "Блокнота" как-то по-другому реализован доступ к текстовым файлам. Или это я что-то сделал не так?

2)стр. 188, 4-ый абзац.

Когда выделение станет ненужным, его можно снять, щелкнув мышью в
любом месте текста, либо нажав комбинацию «Ctrl+H».


Может быть, я снова что-то делаю не так, но «Ctrl+H» у меня (в последней версии ФП) работает как backspace, стирает символ слева от курсора.

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


Может быть, Вы имели в виду "результату функции"? Или я что-то неправильно понял?

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


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

Пред.След.

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

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

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

Рейтинг@Mail.ru