Доброго времени суток!
Ваша редакция №9, мои мысли вслух, так что внимания на этот пост можете не обращать. Кое-что уже упоминалось, но я делал пометки до прочтения темы. Начал читать главу 13.
1. Забей на блок-схемы (или вынеси их в отдельную главу, куда нибудь в конец). Ведь книга не для учеников и студентов! Реально блок-схемы используются только в больших проектах, в маленьких программах нет смысла их использовать. а значит упоминание блок-схем только отвлечет читателя.
стр 23 "Компьютеры породили миф о "думающих машина", - пропущена буква "х" в конце
Глава 4 Ide freepascal - можно было предложить альтернативы, например Geany. Достаточно удобная штука. Если хотите могу сам написать как устанавливать и настраивать geany для pascal. Но я жадная сволочь, потребую взамен своего упоминания в книге
стр 40 все - таки "program" стоит упомянуть, с уточнением, что в современных версиях его использовать не обязательно. Увидит ваш читатель код программы, где есть "program" и как минимум потратит время на поиски, чтобы понять что значит это слово. Ведь книга пишется, для тех кто ранее с паскалем дела не имел и не у каждого есть учитель, не так ли?
стр 42 - Цитата : "программисты привыкли к этому слову - "печатать"". Неправда! Мы привыкли к словосочетанию "вывести на экран". Так было во времена ms-dos и
turbopascal. Или "вывести на консоль" - это когда я стал работать с линуксом и fpc.
Под "печатать" понималось или распечатывание на принтере, либо сам процесс набора текста на клавиатуре, т.е. действия человека, но не программы.
стр 43 Цитата : "Существует ограничение на длину строки - не более 255 знаков". Хм. Попробуйте выполнить в freepascal (ведь Вы рекомендуете freepascal, не так ли?)
- Код: Выделить всё
begin
writeln('d gsdkflgsdkfgl sdk;g dsgdfgjhds fghkdjg sdjg djghd fgjskdhgjdfhg jdsg dfjhgsfgh fdsghkdfhkgjsd hfgjfdhkgsjdhg sdgdghs dghkdsjgh fgksjdfghjfdhgksdfgkjdfhgkdsfgjksdgjsdhg jsdhgfgjdfjkgh dsjghksd gdjfkg sdkjghdfjkh gskdghsdhgsdjkfgh skdjfgjsdghkjsdhgskdjfhgkjsdgjdfskhsj ggh jsdfk hg');
end.
другое дело, что такую строку нельзя набрать в freepascal IDE, но можно, например, - в текстовом редакторе, а потом в командной строке скомпилировать и запустить.
стр 47 - в облаке "Заголовок окна,имя файла" можно упомянуть, что за заголовок можно перемещать окно.
Глава 7 стр 50 - странно со стороны автора предположить, что пользователь напишет 5 раз writeln не разделенных знаком ";", т.к. на стр 45 в самом конце страницы Вы пишите, цитата : "Между процедурами должен стоять разделитель - точка с запятой (;)."
стр 52 - Цитата : "Действует процедура Readln .... "Enter" ". Эту фразу стоит переписать, т.к. может сложиться впечатление, что в readln можно нажать
только ENTER. Зачем вводить в заблуждение? Может упомянуть, что более подробно об readln говорится далее (на стр 60).
стр 56 Говоря о константах НЕОБХОДИМО упомянуть, что значение константы неизменно, в теле программы изменение значения константы повлечет ошибку компиляции. Если это не упомянуть, то как читатель будет решать третью задачу из группы задач под буквой Б на стр 62(там где const pele= ....и далее ... readln(pele)....)? Он получит ошибку, но причину ее возникновения может не понять. Кстати ответов на эту группу задач в ответнике нет. Так и задумано?
стр 61 Стоит сказать, что вывести на экран "Здравствуй, <имя>" можно еще и так writeln('Здравствуй, ' + name); Впрочем, о сцеплении Вы говорите на стр 65.
стр 62 В ответах к главе 8 есть ответ на вопрос В, а в книге самого вопроса под этой буквой нет
стр 64 Вы впервые упомянули оператор присваивания.
Очень рекомендую отдельным абзацем разжевать разницу между "=" и ":=" (Знак ":=" - для присвоения значения переменной, а знак "=" используется для сравнения и определения констант. На эту фразу вешаю копирайт). Ведь целевая аудитория книги - это те, кто ранее вообще не программировал, но что-то еще помнит из математики. Блин, я помню как на уроках по информатике в 6 классе учитель минут 5 дотошно объяснял, что для ЭВМ "присвоение" и "сравнение" - это две абсолютно разные операции (в отличие от математики, где и для сравнения, и для присвоения используется только знак "="). И то после этого ученики поначалу путались.
стр 76 - Еще раз, неправда! Компилятор fpc не заявит "Error in statement", он заявит :
- Код: Выделить всё
pr1.pas(6,1) Fatal: Syntax error, ";" expected but "ELSE" found
Fatal: Compilation aborted
стр 77 как вариант оформления программы
- Код: Выделить всё
var s : string;
begin
writeln('Пароль?'); readln(S);
if s = 'pascal'
then begin
writeln('Распахнуть ворота');
writeln('Оркестр музыку');
writeln('Проходите');
end
else begin
writeln('Тревога!');
writeln('Задержать его');
end;
writeln('Нажмите Enter');Readln;
end.
парные begin и end имеют одинаковые отступы, при достаточно большом количестве вложенных блоков - все прекрасно читается. Кстати, Вы пользуетесь этим же принципом в своих примерах, но пример на данной странице не типичен для Вас, да и нормально читается только с подчеркнутыми begin..end, без подчеркивания текст сливается.
стр 80 я бы упомянул, что внутри repeat .. until не нужно ставить begin .. end. А то получается, что только что, в разделе выше про if..then..else Вы научили читателя, что в группы операторов
нужно заключать в begin..end, а тут, на тебе, begin..end отсутствуют.
стр 83 - в качестве стёба : "Пароль", "проходите", "стойте" - ну очень вежливый часовой
. Может "Пароль, пожалуйста", "проходите, пожайлуста", "извините, проход закрыт"?
стр 86 Цитата : "Автомобиль не роскошь, а средство передвижения - опрометчиво обронил советский Поэт". Фраза впервые появилась в "Антилопе Гну" Ильфа и Петрова, а они писатели, а не поэты. Поправьте меня, если я не прав.