Страница 3 из 26

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

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

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

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

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

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

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

Если Вы внимательно посмотрите аргументы функции и процедуры (это я Вам говорю на тот случай, если для Вас английский - как китайская грамота), то можно понять, для чего служит функция, а для чего процедура. Попробуйте на основании этих аргументов самостоятельно понять, что для чего нужно. ;)

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

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

Дело в том, что ключ используется внутри функций шифрования/дешифрования символа, а функции эти вызываются из процедур. Таким образом, ключ может попасть в функцию только через процедуру (ну, если профессионально делать).

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

СообщениеДобавлено: 29.05.2011 18:45:39
Padre_Mortius
Oleg_D,можно поинтересоваться почему отказались от использования в функциях зарезервированного Result для возврата результата.

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

СообщениеДобавлено: 29.05.2011 19:37:40
GrayEddy
Совместимость с TP, imho.

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

СообщениеДобавлено: 29.05.2011 20:13:04
Padre_Mortius
GrayEddy, все немного сложнее

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

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

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

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

СообщениеДобавлено: 17.07.2011 00:05:16
Oleg_D
16 июля 2011 г. выложена 7-я редакция книги.

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

СообщениеДобавлено: 27.08.2011 13:09:15
Oleg_D
27 августа 2011 г. выложена 8-я редакция книги.

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

СообщениеДобавлено: 13.11.2011 16:01:46
teapot
Здравствуйте, Олег. Я решил вспомнить школьный курс информатики (признаться, не самый лучший), вспомнить паскаль, который изучал больше 10 лет назад, и Ваша книга пришлась кстати. Здорово, что Вы выкладываете ее совершенно бесплатно.

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

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

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

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

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

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


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

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

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

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

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

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

Большое спасибо за труд. Надеюсь, Вы прочитаете мой комментарий.

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

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

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

СообщениеДобавлено: 14.11.2011 14:49:31
Valeriy
Текст программы 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.

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

СообщениеДобавлено: 14.11.2011 15:45:06
Oleg_D
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 вызовет ошибку.
Еще раз благодарю всех за подсказки!

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

СообщениеДобавлено: 17.11.2011 17:48:58
teapot
Здравствуйте, Олег. У меня возникло еще несколько вопросов. Пишу здесь, так как может быть еще кто-нибудь захочет на них ответить.
Если Вы против, то буду писать только на 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 рос бесконечно. Я почему-то не могу догадаться, из-за чего это происходит. Думаю, потому что конец строки не достигается, верно? Но почему? Пожалуйста, объясните!