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

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

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

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

Сообщение Vadim » 03.08.2012 10:15:30

Oleg_D писал(а):Кавычки употребил, поскольку мы не картами на самом деле орудуем. Может правильней: смешаем "карты"?

Лучше кавычки вообще убрать. Поскольку мы оперируем объектом под названием "карты", то нет смысла брать его в кавычки, т.к. оперируем мы именно картами. Карты физические и карты виртуальные по смыслу их применения ничем не отличаются.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

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

Сообщение Oleg_D » 03.08.2012 10:33:44

Vadim писал(а):Поскольку мы оперируем объектом под названием "карты", то нет смысла брать его в кавычки, т.к. оперируем мы именно картами.

Нет, мы просто числа генерируем (стр. 103), "карты" - это образно сказано.

Добавлено спустя 1 час 48 минут 44 секунды:
Хотя с другой стороны "смешать карты" - расхожее выражение, и его часто пишут без кавычек. Уберу их, пожалуй.
Oleg_D
постоялец
 
Сообщения: 391
Зарегистрирован: 09.05.2011 11:28:36

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

Сообщение Vapaamies » 03.08.2012 19:22:51

Oleg_D писал(а):После слова "например" ставим либо запятую, либо двоетоточие

А в книге стоит точка.

Oleg_D писал(а):А если за ним следует кусок программы? Или целый абзац из нескольких предложений?

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

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

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

Oleg_D писал(а):"Имеют" - немного вяло, пассивно звучит. Можно сказать "дают программистам", но второе слово и так подразумевается по смыслу.

Просто "дают" там выбивается по смыслу. Нужно или уточнить, или заменить... Гм. Сейчас перечитал еще раз, и "дают" показалось вполне к месту... Не знаю.
Аватара пользователя
Vapaamies
постоялец
 
Сообщения: 292
Зарегистрирован: 24.07.2012 22:37:59
Откуда: Санкт-Петербург

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

Сообщение Oleg_D » 03.08.2012 22:54:04

Vapaamies писал(а):А в книге стоит точка.

Да, именно точка. Потому, что заканчивается предложение. Но я пока не уверен в своей правоте, сомневаюсь.
Vapaamies писал(а):После вступления на форумах ставится двоеточие.

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

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

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

Сообщение Vapaamies » 04.08.2012 00:33:45

Oleg_D писал(а):Да, именно точка. Потому, что заканчивается предложение.

Предложение не заканчивается, а обрывается. Прочтите его вслух. К тому же, в своем прошлом сообщении вы сказали, что после "например" ставится лишь двоеточие или запятая. А точка? :)

Oleg_D писал(а):Не знаю, может ли форуум быть образцом для подражания в этом случае?

Форум является образцом электронного документа -- способа подачи материала, использованного в книге наряду со "см. xxx". По-моему, все зависит от того, как долго вы сможете сохранять контроль за размещением текста и врезок на страницах:
  • Не сохранять -- переделать все на "см. xxx".
  • Оставить существующий гибридный -- следовать оформлению электронных документов -- расставить двоеточия там, где нет "см. xxx".

Продолжаем:
  • Для исполнения внутри ветви нескольких операторов, их объединяют в блок BEGIN–END. -- "маркетинговая" лишняя запятая.
  • Танк в компьютерной игрушке -- подростки пренебрежительно называют игрушками лишь те игры, в которые играют, а сами всегда разрабатывают игры. Называть игрушкой игру из прошлой главы, приступая к разработке новой, -- удачный педагогический ход. Но не в домашнем задании.
  • если вы исключение из правила, ознакомьтесь с основами шахмат -- тире после "вы".
  • Один из них подсчитывает количество заданных вопросов (то есть циклов) -- не самих циклов, а проходов цикла, повторений или даже итераций. До этого под циклом всегда имелась в виду сама алгоритмическая конструкция, а тут -- на тебе.
  • А если «проворонить» второй оператор? -- опять кавычки вызывают сомнение.
  • Счетчик наращиваться не будет, и цикл станет повторяться вечно, – программа «зациклится»! -- вот тут кавычки точно не нужны. Я бы даже акцентировал внимание, преподнеся как-то вроде: "В таких случаях программисты говорят, что программа зациклилась", -- как термин. Это тоже педагогический ход: школьники страсть как любят обсуждать проблемы, решение которых уже знают, называя их разными словечками -- обидными и не очень. А тут целый термин. Всегда приятно чувствовать себя настоящим программистом.
  • Во избежание таких ошибок в языке Паскаль введен цикл со счетчиком. При первом прочтении воспринялось так, будто новый цикл только-только введен в язык, а до этого программисты мучались рутиной. Возможно, тут стоит написать что-то вроде предусмотрен, подразумевая более долгую историю, чем нововведение последней версии.
  • Если б написать его по-русски, то оператор выглядел бы так -- "Если записать его по-русски, оператор выглядел бы так".
  • Теперь задача распечатки чисел может быть решена одним оператором. -- если быть совсем точным, операторов там все же два, просто один вложен в другой.

Еще немного про ЧСВ и термины.

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

Помнится, был задействован именно тот "педагогический" оборот (привожу по памяти):
Функция вырабатывает, или, как говорят программисты, возвращает некоторое значение.


Вот тут-то приобщение к терминологии настоящих программистов и подняло мое ЧСВ. :)
Аватара пользователя
Vapaamies
постоялец
 
Сообщения: 292
Зарегистрирован: 24.07.2012 22:37:59
Откуда: Санкт-Петербург

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

Сообщение Oleg_D » 04.08.2012 23:28:32

Vapaamies писал(а):Предложение не заканчивается, а обрывается.

Я пройдусь по этим точкам ещё раз, подумаю. В ваших доводах есть резон.
Vapaamies писал(а):подростки пренебрежительно называют игрушками лишь те игры, в которые играют, а сами всегда разрабатывают игры

Точно! С остальными замечаниями тоже согласен, благодарю!
Vapaamies писал(а):Еще немного про ЧСВ и термины.

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

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

Сообщение Vapaamies » 05.08.2012 00:52:31

С прошлого раза ничего не читал, лишь начал главу про строки. Поэтому будет только философия. Тем более, что строки -- моя любимая тема.

В 90-е годы знакомый учитель информатики как-то обронил фразу: "Информатика отличается от других предметов тем, что мы не можем дать домашнее задание". Понятно, что имелось в виду не выучивание правил. Компьютеры тогда только-только входили в быт бывшего советского человека, и были дома лишь у тех, кто в прошлой жизни, скажем так, не был простым советским человеком. Да и как-то не проявляли их дети интереса к программированию, по наблюдениям.

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

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

Предложенный ранее способ объяснения переменных через файлы -- одна из фишек. Советский школьник ничего не знал про файлы, и учителю приходилось искать бытовые примеры. А сегодня файл -- часть быта.

То же самое и со строками. Какие, к чёрту, "буквы-цифры-точки-запятые-включая-пробелы"? Ученик сидит за IDE, у него раскрыто окно редактора! Знакоместа на экране -- и есть символы! SMS! "Твиттер"! Да каждый школьник уже знает, что такое символы, и какими они бывают! Вы что, SMS ни разу не набирали? Сколькими символами ограничено сообщение SMS? А твит?

Наоборот, учителю уже нужно не объяснять очевидное, а заостриться на другом: "Чувак, ты теперь по другую сторону экрана! Ты -- программист! Вот те символы, которые ты раньше только набирал в SMS, -- на другой стороне они обрабатываются программой, и такую программу ты теперь напишешь сам!".

Вот такая патетика. :)

Добавлено спустя 9 минут 52 секунды:
Такое объяснение хорошо еще тем, что органично дополняет имеющуюся картину мира. У школьников не так много опыта, и фиг его знает, вдруг кому-то будет не очевидно, что символы в программировании -- те же, что и в SMS. Опять же, проводя параллель с возвратом функций.
Аватара пользователя
Vapaamies
постоялец
 
Сообщения: 292
Зарегистрирован: 24.07.2012 22:37:59
Откуда: Санкт-Петербург

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

Сообщение Oleg_D » 05.08.2012 22:55:53

Vapaamies писал(а):Знакоместа на экране -- и есть символы! SMS! "Твиттер"! Да каждый школьник уже знает, что такое символы, и какими они бывают!

Да, как быстро всё меняется! Книгу начинал 6 лет назад, и как продвинулась с тех пор техника: файлы, смс-ки, социальные сети. Но порой и такое наблюдаю: чем-то люди пользуются, а объяснить себе это не могут, да и не очень задумываются. Вот пара наблюдений. На моей работе программист после универа не смог ввести данные из текстового файла. Другой, после политеха, пишет на Дельфи так:
Код: Выделить всё
if A=true then B:=true else B:=false;

Узнав, что можно записать B:=A, очень удивился.
Я бы не торопился выбрасывать на свалку проверенные приёмы. Как говорил товарищ Саахов, "торопиться не надо".

Добавлено спустя 10 часов 50 минут 15 секунд:
Vapaamies
По поводу слова "например" убедили. Буду ставить двоеточия или запятые.
Oleg_D
постоялец
 
Сообщения: 391
Зарегистрирован: 09.05.2011 11:28:36

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

Сообщение Vapaamies » 08.08.2012 19:00:05

Движемся вперед:
  • в языке Паскаль существует тип данных CHAR, который так и переводится – «символ» -- если быть до конца точным, char переводится как симв, поскольку является сокращением полного слова character.
  • Далее по тексту много неверного употребления кавычек. Везде, где они стоят, подразумевается иносказание, и так понятное из смысла текста, и кавычки излишни или даже дают двойное отрицание:
    • мы достаточно «подкованы»
    • где расположить это «хозяйство»
    • как бы «читая» её слева направо и сверху вниз
    • «вступят в бой» операторы в теле процедуры
    • Без «шишек» и «синяков» не обойтись.
    • это всего лишь «полигон»
    • как отделить здесь «мух» от «котлет»
    • проект «лепят» начиная с главной программы
    • «Скелет» нашей будущей программы готов
    • Убедившись в работоспособности «скелета»
    • процедуру называют «заглушкой» или «пустышкой»
    • Написав «заглушку» уберите комментарий с вызова Scan(S), и тогда на вашем «скелете» нарастет немного «мяса».
    • Первые «раны»
    • Она, что называется, «зациклилась»
  • процедурой по имени Pause («пауза») -- тут уже не иносказание, но выделения скобками достаточно.
  • (это сокращение от слова message – «сообщение») -- это не ошибка, привожу лишь для сравнения: тут кавычки нужны, потому что слово "сообщение" используется вместе с родовым понятием "слово", и кавычки задают границы метауровня, если можно так выразиться.
  • «разработкой сверху вниз» и «разработкой снизу вверх» -- слово "разработка" должно быть вне кавычек.
  • это сокращение от слова argument – «аргумент» – так еще называют параметры процедур и функций -- по смыслу русское "аргумент" уже читается как принадлежащее к заключительной части предложения, и тогда кавычки не нужны. Возможно, после английского argument должен стоять другой знак препинания, исключающий неоднозначность.
  • until Length(S)=0; -- в тексте программы P_18_2. В контексте решения это явный быдлокод, и в хорошем учебнике не хотелось бы видеть его совершенно, пусть даже и в довольно надуманных примерах. Единственное место, где быдлокод допустим -- где разбираются примеры быдлокода.
  • При необходимости, вызов процедуры можно повторить. -- "маркетинговая" лишняя запятая.
  • Ничего хорошего не скажет, и будет прав -- вероятней всего, здесь запятая тоже не нужна.
  • Имя параметра несущественно, но важен его тип -- несущественно для кого? Из контекста совершенно не угадывается несущественность для остальной программы, и неискушенному школьнику это вряд ли будет понятно. Нужно уточнить границы несущественности.
  • Для упрощения программ, их разбивают на процедуры и функции. -- еще одна запятая -- привет от маркетологов.
  • Напишите и испытайте процедуру, принимающую два параметра – числа, и печатающую их сумму, и их разность. -- пример посложнее, но последняя запятая все же не нужна.
  • с N-го (то есть, последнего) дома. -- и тут не нужна.
  • Пунктирные стрелки показывают места входа в процедуру и выхода из нее. -- "пунктирные стрелки" резанули глаз. Начать с того, что "пунктирный" означает "нарисованный точками", -- отчего линию, которой обозначают государственные границы на картах, называют "штрих-пунктирной". "Штрих" -- слишком по-чертежному, а "стрелки с прерывистой линией" -- вполне к месту.
Аватара пользователя
Vapaamies
постоялец
 
Сообщения: 292
Зарегистрирован: 24.07.2012 22:37:59
Откуда: Санкт-Петербург

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

Сообщение Oleg_D » 09.08.2012 18:41:29

Vapaamies писал(а):в языке Паскаль существует тип данных CHAR, который так и переводится – «символ» -- если быть до конца точным, char переводится как симв, поскольку является сокращением полного слова character.

Предлагаю так изменить:
в языке Паскаль существует тип данных CHAR, что значит «символ».
Vapaamies писал(а):until Length(S)=0; -- в тексте программы P_18_2. В контексте решения это явный быдлокод, и в хорошем учебнике не хотелось бы видеть его совершенно, пусть даже и в довольно надуманных примерах. Единственное место, где быдлокод допустим -- где разбираются примеры быдлокода.

Этот момент не понял :cry: , в чём здесь состоит быдлокодерство?
Прочие замечания в точку, благодарю! Кавычек и запятых я и самом деле не экономлю! :D
Oleg_D
постоялец
 
Сообщения: 391
Зарегистрирован: 09.05.2011 11:28:36

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

Сообщение Vapaamies » 09.08.2012 20:56:17

Oleg_D писал(а):в языке Паскаль существует тип данных CHAR, что значит «символ».

Не-а, хрен редьки не слаще. Нужно обязательно раскрыть сокращение, ведь в других местах читателю прощается незнание английского языка: "в Паскале существует тип CHAR -- от английского character, что значит "символ".

Oleg_D писал(а):Этот момент не понял :cry: , в чём здесь состоит быдлокодерство?

Там должно стоять S = '', если на что-то другое нет серьезных оснований. Изучение функции длины строки таким основанием не считается: велик соблазн, что ученик станет везде так писать, глядя на учителя. Своего опыта-то у него пока нет.

В зависимости от реализации строк сравнение S = '' заменяется разным кодом, но ни для ShortString, ни для AnsiString, ни для UnicodeString код проверки не будет содержать вызова библиотечной функции, а ограничится лишь обращением к памяти (в Delphi).

Возможно, я слишком строг, и данный пример -- быдлокод только для меня. Тем не менее, встретив его в чужом коде, наверняка бы стал искать скрытый смысл. А при чтении учебника в этом месте конкретно передернуло.
Аватара пользователя
Vapaamies
постоялец
 
Сообщения: 292
Зарегистрирован: 24.07.2012 22:37:59
Откуда: Санкт-Петербург

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

Сообщение Oleg_D » 09.08.2012 22:47:21

Vapaamies писал(а):"в Паскале существует тип CHAR -- от английского character, что значит "символ".

Принимаю. Я стараюсь быть кратким и не впадать в буквоедство, - для детского учебника это важно. Но иногда, наверное, перегибаю с этим.
Vapaamies писал(а):Там должно стоять S = '', если на что-то другое нет серьезных оснований.

Основания у меня есть, сравните две строки:

until S='';
until S=' ';

Зрительно очень похожи, но случайный лишний пробельчик совершенно меняет дело. А конструкция until Length(S)=0 смотрится надёжней. Когда наши ученики займутся разработкой ПО для серьёзных применений (авиация, космос и т.п.), они, возможно, обратят на это внимание. А эффективность кода - дело десятое и к тому же тёмное, поскольку зависит от компилятора. Для сравнения строк тоже может вызываться какая-то функция.
Oleg_D
постоялец
 
Сообщения: 391
Зарегистрирован: 09.05.2011 11:28:36

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

Сообщение Vapaamies » 09.08.2012 23:32:44

Oleg_D писал(а):Зрительно очень похожи, но случайный лишний пробельчик совершенно меняет дело.

Тогда это правомерный случай для комментария:
Код: Выделить всё
  unitl S = '' { сравнение с пустой строкой }

Иначе можно вообще договориться до того, что пустые строки вообще рассматривать не надо, потому что их разглядеть нельзя. Для электронного учебника это более чем странно. Помнится, Очков и Пухначёв в своих книгах всегда сетовали, что советское книгопечатание еще не доросло до вложения электронного носителя с исходниками в книгу, и им пришлось специальные диаграммы изобретать.

Но настаивать не буду. Как говорят, мнение автора может не совпадать с мнением редакции.
Аватара пользователя
Vapaamies
постоялец
 
Сообщения: 292
Зарегистрирован: 24.07.2012 22:37:59
Откуда: Санкт-Петербург

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

Сообщение Oleg_D » 10.08.2012 08:56:14

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

К чему нам такие крайности? :) Разумеется, что оба варианта правомерны, и ни один из них не гарантирует безошибочного кода. Речь лишь о том, где вероятность ошибки выше. В варианте с кавычками даже комментарий не спасёт невнимательного кодера, когда в конце рабочей недели у него глаза на лоб лезут от многочисленных "букаф". По этому поводу вспомнились два случая.
Лет двадцать назад американский аппарат врезался в спутник какой-то планеты вместо того, чтобы нежно причалить к нему. Причина – мелкая описка в программе. То есть мыслил программист верно, только записал чуть-чуть не так.
Второму случаю я сам был свидетель. Мой коллега, ваявший на C++, несколько дней искал ошибку, прямо на стенку лез от бессилия! Его программа компилировалась, но не работала. Причина оказалась смешной: то ли слабость зрения, то ли распальцовка, которой почему-то страдают фанаты этого языка, заставила его оттопыренный мизинец предательски соскользнуть с одной клавиши на другую, соседнюю. И вместо точки он впечатал запятую. Условно говоря, вместо
Код: Выделить всё
A.B;  // поле записи
получилось
Код: Выделить всё
A,B; // перечисление операторов
В контексте его программы обе записи были правомерны и компилятор не ругался. В языках C/C++ таких дыр полным-полно, потому их и «не взяли в космонавты», как поётся в известной песенке. Одним словом, мелочами лучше не пренебрегать.

Добавлено спустя 2 часа 33 минуты 2 секунды:
Кстати, когда мне нужна строка из нескольких пробелов, изображаю её так:
#32#32#32...
Oleg_D
постоялец
 
Сообщения: 391
Зарегистрирован: 09.05.2011 11:28:36

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

Сообщение bormant » 10.08.2012 12:55:24

Oleg_D писал(а):Кстати, когда мне нужна строка из нескольких пробелов, изображаю её так:
#32#32#32...
... тем самым передавая пламенный привет кодировке EBCDIC, в которой пробел имеет десятичный код #64. :mrgreen:
Аватара пользователя
bormant
постоялец
 
Сообщения: 407
Зарегистрирован: 21.03.2012 11:26:01

Пред.След.

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

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

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

Рейтинг@Mail.ru