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

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

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

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

Сообщение Oleg_D » 17.05.2012 08:26:38

tema писал(а):так связка IF-THEN-ELSE+GOTO полностью заменяет циклы.

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

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

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

Сообщение tema » 29.05.2012 02:48:38

Продолжаем разговор :-)
т.к. книжку посеял читал на кпк и отмечал электронно, поэтому, боюсь, многое мог упустить :-(
Приступим:
Глава 37 стр 262
Множество можно распечатать так:
Код: Выделить всё
for k in set do write(aFile,k:4);

Глава 39 стр 284
Лучше так:
Код: Выделить всё
Ratings[1]:=45;Ratings[2]:=55;Ratings[3]:=21;i:=2;
if Ratings[i] > Ratings [i+1] then … else …;

Я это в какой-то книжке встречал подобное давно достаточно и мои ученики тут споткнулись. А такая запись не вызовет никаких затруднений.
Глава 43 стр 316
Тут скорее рассуждения у меня. Когда я читал про мучения Лефта не мог отделаться от мысли "Нафига сортировать? Тут поиск максимального..". Может переформулировать ему задачу?
Глава 44 стр 334
Самую первую функцию на странице лучше описать так:
Код: Выделить всё
function Pos(subS: string; S: string): Integer;

Глава 47 стр 367
Код: Выделить всё
Insert(c, S, 1);

лучше заменить на
Код: Выделить всё
S:=c+S;

Глава 48
Немного напутано в тексте. Есть бит, дальше байт, дальше слово - это два байта (word=слово). Дальше длинное слово.
И дальше по тексту работаем то с integer и называем словом, то в программе с байтом и его тоже словом.
Глава 49 стр 383
Тут опять рассуждения мои. Я понимаю, что тут тема матрицы, но раз прошли битовые сдвиги, and, or и пр. для числе не логичнее ли было построить рекламную доску на битах составляющих, например 32х битный integer? Просто массив чисел integer и всё :-)

Добавлено спустя 24 минуты 47 секунд:
тут у меня потерялась пара закладок :-(
Но насколько я помню тоже были не ошибки а мои рассуждения, так что неважно

Глава 51 стр 403
указатели этого типа нельзя разыменовать

Можно. И это постоянно делается для этого он и нужен. Типичный пример использования: удобно хранить объекты в TTreeView в лазарусе.
Для fpc вот:
Код: Выделить всё
p:pointer;
i:integer;
....
i:=123;
p:=@i;
writeln(integer(p^));


Добавлено спустя 1 минуту 27 секунд:
Последний рывок постараюсь завтра
tema
постоялец
 
Сообщения: 375
Зарегистрирован: 24.03.2011 20:19:27

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

Сообщение Oleg_D » 29.05.2012 09:18:40

tema писал(а):Глава 37 стр 262 Множество можно распечатать так: for k in set do write(aFile,k:4);

Не понял я этой конструкции, в каких версиях Паскаля так делают?
tema писал(а):Глава 39 стр 284 Лучше так: Ratings[1]:=45; Ratings[2]:=55; Ratings[3]:=21; i:=2; if Ratings[i] > Ratings [i+1] then … else …;

Да, здесь можно добавить пару операторов.
tema писал(а):Глава 43 стр 316 Тут скорее рассуждения у меня. Когда я читал про мучения Лефта не мог отделаться от мысли
"Нафига сортировать? Тут поиск максимального..". Может переформулировать ему задачу?

В самом деле, дурацкое занятие :D Лучше так:
Код: Выделить всё
Некий фермер по имени Лефт получил заказ на поставку арбузов королевскому двору. Желая превзойти конкурентов и сохранить заказ на будущее, Лефт стал отбирать из урожая самые крупные ягоды. И т.д.
tema писал(а):Глава 44 стр 334 Самую первую функцию на странице лучше описать так:Код: Выделить всёfunction Pos(subS: string; S: string): Integer;

Принято, спасибо.
tema писал(а):Глава 48 Немного напутано в тексте. Есть бит, дальше байт, дальше слово - это два байта (word=слово). Дальше длинное слово.И дальше по тексту работаем то с integer и называем словом, то в программе с байтом и его тоже словом.

Да, тут поправлю немного.
tema писал(а):Глава 49 стр 383 Тут опять рассуждения мои. Я понимаю, что тут тема матрицы, но раз прошли битовые сдвиги, and, or и пр. для числе не логичнее ли было построить рекламную доску на битах составляющих, например 32х битный integer? Просто массив чисел integer и всё

Тут действительно пример именно на матрицы, и я не стремился показать какое-то супер-пупер эффективное решение, больше стремился к наглядности.
tema писал(а):Можно. И это постоянно делается для этого он и нужен. Типичный пример использования: удобно хранить объекты в TTreeView в лазарусе.

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

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

Сообщение tema » 29.05.2012 13:12:08

Не понял я этой конструкции, в каких версиях Паскаля так делают?

Delphi, fpc
POINTER непосредственно не разыменовывается

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

Если Вы это сделаете, эта часть станет намного удобоваримее для учащихся и будет хорошо всем :)
ЗЫ
Вы это не пропустили случайно?
Глава 47 стр 367
Код: Выделить всё
Insert(c, S, 1);

лучше заменить на
Код: Выделить всё
S:=c+S;
tema
постоялец
 
Сообщения: 375
Зарегистрирован: 24.03.2011 20:19:27

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

Сообщение Oleg_D » 29.05.2012 13:59:27

tema писал(а):Delphi, fpc

Да, действительно появилась эта новая конструкция, буду знать. Но детям не скажу. :D Из соображений совместимости, конечно.
tema писал(а):Если Вы это сделаете, эта часть станет намного удобоваримее для учащихся и будет хорошо всем

Добавил такой абзац с примером.
Код: Выделить всё
Впрочем, такой указатель можно привести к любому другому типу  указателя (преобразовать тип указателя), и тогда возможно разыменование полученной конструкции, например.
type   PInt = ^integer;   { тип указателя на целое }
var   P : pointer;   N : integer;
   ...
   P:= @N;
   Writeln( PInt(P)^ );   { печатается значение N }
tema писал(а):Вы это не пропустили случайно?

Нет, не пропустил, исправил, спасибо.
Oleg_D
постоялец
 
Сообщения: 391
Зарегистрирован: 09.05.2011 11:28:36

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

Сообщение tema » 29.05.2012 14:06:10

появилась эта новая конструкция,

Не такая она и новая. Она уже достаточно давно.
The ISO 10206:1990 standard introduced iteration over set types in Pascal

Думаю, что детям таки надо сказать.
tema
постоялец
 
Сообщения: 375
Зарегистрирован: 24.03.2011 20:19:27

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

Сообщение Oleg_D » 29.05.2012 14:56:20

tema писал(а):Думаю, что детям таки надо сказать.

Добавил на стр. 263
Код: Выделить всё
Примечание. В современные версии Паскаля (Delphi) введён вариант цикла FOR-IN-DO для обработки множеств. И тогда распечатка множества делается ещё проще, например.
   for k in aSet do Write(aFile, k:4);
Oleg_D
постоялец
 
Сообщения: 391
Зарегистрирован: 09.05.2011 11:28:36

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

Сообщение tema » 31.05.2012 01:58:16

"Последний рывок" :)
Сейчас ещё раз внимательно проглядел пометки и перечитал некоторые места. В книге я что-то помечал, а в электронке такое ощущение, что всё-таки что-то упустил. Но будем надеяться это не критично, раз я не заметил это при повторном прочтении.
Итак, последнее. Тут мало:
На странице 423 у меня стоит электронная закладка без пометки (либо ошибка, либо в спешке ставил)... Несколько раз перечитал не могу вспомнить зачем. Вроде всё в порядке, но вдруг кто чего увидит :)


Теперь немного пространное рассуждение. Если Вы затрагиваете такую сложную тему как графы, то её, мне кажется, надо раскрыть - хотя бы парой слов упомянуть: матрица смежности, весов, ориентированный, взвешенный. Кроме того Вы отступаете от своего собственного правила: от простого к сложному. Вы сначала рассказываете про граф, только потом про дерево. В принципе, ничего страшного, если до графа добавить хотя бы про двоичное дерево. Тогда получится вполне нормально: двоичное дерево, граф, дерево с изменяемыми степенями вершин.
А двоичное дерево - это вообще очень важный момент его обязательно стоит включить в книгу. Это же поиск решения в задачах с двойным ветвлением на узлах. Как пример, усложнить игру из книги "вопрос-ответ" сделать игру "отгадаю любое слово". Программа будет иметь базу в виде двоичного дерева. Для начала она знает только один ответ, например: "паскаль".
И пошла игра (* помечаю ответы пользователя):
Код: Выделить всё
1) Запускается программа.
2) Задумайте слово. И нажмите enter.
3) Это паскаль? y/n
4) *n
5) Сдаюсь. А что это?
6) *Крокодил
7) А чем отличается от "паскаль"? Опишите, пожалуйста.
8) *Зубастая рептилия
9) До свидания.


Следующий запуск:
Код: Выделить всё
1) Запускается программа.
2) Задумайте слово. И нажмите enter.
3) Это паскаль? y/n
4) *n
5) Зубастая рептилия? y/n
6) *y
7) Это крокодил? y/n
8) *n
9) Сдаюсь. А что это?
10) *динозавр
11) А чем отличается от "крокодил"? Опишите, пожалуйста.
12) *древнее
13) До свидания.


По мере игры база будет накапливаться :)

Глава 57 страница 452
а связи между ними – ребрами (Link).

Link не переводится как "рёбра".
a graph is an ordered pair G = (V, E) comprising a set V of vertices or nodes together with a set E of edges or lines, which are 2-element subsets of V (i.e., an edge is related with two vertices, and the relation is represented as unordered pair of the vertices with respect to the particular edge).

Т.е. "рёбра" или "линии". По-русски ещё есть название "дуги".

Добавлено спустя 6 минут 29 секунд:
И последнее. Раз есть и {$i myfile} и uses mylib стоит рассказать про подключение dll или хотя бы упомянуть подключив в каком-нибудь примере какую-нибудь dll? что просто показать как это делается.. Это несложно, но весьма важно в данном контексте. Можно даже не рассказывать про создание dll, хотя это тоже не сложнее модуля.
Последний раз редактировалось tema 31.05.2012 10:17:29, всего редактировалось 1 раз.
tema
постоялец
 
Сообщения: 375
Зарегистрирован: 24.03.2011 20:19:27

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

Сообщение Oleg_D » 31.05.2012 10:06:23

tema писал(а):На странице 423 у меня стоит электронная закладка без пометки (либо ошибка, либо в спешке ставил)... Несколько раз перечитал не могу вспомнить зачем. Вроде всё в порядке, но вдруг кто чего увидит

Здесь вижу у себя речевой оборот немного неуклюжий, надо поправить.
tema писал(а):Если Вы затрагиваете такую сложную тему как графы, то её, мне кажется, надо раскрыть - хотя бы парой слов упомянуть: матрица смежности, весов, ориентированный, взвешенный. Кроме того Вы отступаете от своего собственного правила: от простого к сложному. Вы сначала рассказываете про граф, только потом про дерево.

Конечно, деревья - очень важная, интересная и полезная тема. Но меня остановил объем книги, которая и так разбухла за пределы моих планов (а это - в случае покупки - ещё и цена!). Про дерево я только вскользь упомянул когда речь зашла о сортировке, чтобы ученик, если заинтересуется, обратился к Вирту или Кормену. Рассказать о графах в том виде, в каком это сделано, меня заставила сюжетная линия с придворным программистом: поиск стран-соседей (38), поиск расстояний (49) и поиск кратчайших путей (59-58). Я стараюсь не упоминать ничего лишнего по части теории - только минимум необходимого для данной задачи. Это принцип букваря - я стараюсь его придерживаться. Поэтому и не рассказал того, о чем Вы упомянули. Но тема графов очень интересная и очень объемная, в этом направлении ещё далеко продвигаться можно.
tema писал(а):Link не переводится как "рёбра".

Да, знаю, это переводится как "связь", - эту неточность поправлю, спасибо.
tema писал(а):И последнее. Раз есть и {$i myfile} и uses mylib стоит рассказать про подключение dll или хотя бы упомянуть подключив в каком-нибудь примере какую-нибудь dll?

На мой взгляд, тему DLL в букваре не стоит затрагивать, это уже ближе к профессиональному программированию с его заморочками по части эффективности.
Еще раз благодарю Вас, ув. tema за полезные советы, мы сделали ещё несколько шагов на пути к недостижимому идеалу. :D В скором времени выложу 12-ю редакцию.
Oleg_D
постоялец
 
Сообщения: 391
Зарегистрирован: 09.05.2011 11:28:36

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

Сообщение tema » 31.05.2012 10:30:51

Рассказать о графах в том виде, в каком это сделано, меня заставила сюжетная линия с придворным программистом: поиск стран-соседей (38), поиск расстояний (49) и поиск кратчайших путей (59-58). Я стараюсь не упоминать ничего лишнего по части теории - только минимум необходимого для данной задачи. Это принцип букваря - я стараюсь его придерживаться. Поэтому и не рассказал того, о чем Вы упомянули. Но тема графов очень интересная и очень объемная, в этом направлении ещё далеко продвигаться можно.

Как раз задача решалась и матрицей смежности :)
Тогда, чтобы не увеличивать объём книги просто укажите в конце главы прямо: "Но тема графов очень интересная и очень объемная, в этом направлении ещё далеко продвигаться можно. Я не рассказал про матрицы смежности, ориентированность, взвешенность.... Подробнее про графы почитать там-то". Не забывайте, что ученики без указки могут просто не догадать, что про графы вообще ещё что-то есть.

Добавлено спустя 5 минут 34 секунды:
На мой взгляд, тему DLL в букваре не стоит затрагивать

Можно не лезть глубоко. Можно просто указать: "ещё есть динамически подключаемые библиотеки делаются так:" и тут пример просто подключения. Займёт всего полстранички, зато полнота изложения вырастет очень сильно.
Основная идея тут даже не в оптимизации, а в том, что библиотека может быть написана и отлажена не просто другим человеком, а даже на другом языке программирования.
tema
постоялец
 
Сообщения: 375
Зарегистрирован: 24.03.2011 20:19:27

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

Сообщение Oleg_D » 31.05.2012 10:43:10

tema писал(а):Как раз задача решалась и матрицей смежности

Да, решается, но, во-первых, тема у меня идет - динамические структуры, а не матрицы. А во-вторых, такие матрицы больше подходят к небольшим и плотным графам, а на разреженных - сами понимаете - не эффективны в смысле использования памяти.
tema писал(а):Тогда, чтобы не увеличивать объём книги просто укажите в конце главы...

Хорошая мысль, спасибо, добавлю что-то.

Добавлено спустя 3 минуты 17 секунд:
tema писал(а):Можно не лезть глубоко. Можно просто указать: "ещё есть динамически подключаемые библиотеки делаются так:" и тут пример просто подключения. Займёт всего полстранички, зато полнота изложения вырастет очень сильно.Основная идея тут даже не в оптимизации, а в том, что библиотека может быть написана и отлажена не просто другим человеком, а даже на другом языке программирования.

Хорошо, добавлю, если найду место.
Oleg_D
постоялец
 
Сообщения: 391
Зарегистрирован: 09.05.2011 11:28:36

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

Сообщение Oleg_D » 01.06.2012 12:53:48

01 июня 2012 г. выложена 12-я редакция.
Учтены в том числе и замечания, обсуждавшиеся на этом форуме.
Всем спасибо!
Oleg_D
постоялец
 
Сообщения: 391
Зарегистрирован: 09.05.2011 11:28:36

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

Сообщение Paster Fob » 08.06.2012 20:08:16

А что с вашим сайтом?Он не доступен.

Добавлено спустя 11 часов 57 минут 44 секунды:
Глава 44,стр 335. Вставка в строку(insert)
пример:
Изображение
индекс должен быть 8,иначе получается "Спарта - кчемпион".
Аватара пользователя
Paster Fob
постоялец
 
Сообщения: 188
Зарегистрирован: 22.02.2011 21:53:36
Откуда: Новосибирск.

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

Сообщение Oleg_D » 09.06.2012 19:59:50

Paster Fob писал(а):индекс должен быть 8,иначе получается "Спарта - кчемпион".

Точно, спасибо!
Oleg_D
постоялец
 
Сообщения: 391
Зарегистрирован: 09.05.2011 11:28:36

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

Сообщение Little_Roo » 09.06.2012 20:14:57

Oleg_D писал(а):
Paster Fob писал(а):индекс должен быть 8,иначе получается "Спарта - кчемпион".

Точно, спасибо!

Ошибка!
Должно быть - "Спартак - чемпион дворовых команд" или "СпОртак - Г...О" :twisted:
И вообще, реклама недоброкачественных продуктов карается законом!!!
Аватара пользователя
Little_Roo
энтузиаст
 
Сообщения: 639
Зарегистрирован: 27.02.2009 19:56:36
Откуда: Санкт-Петербург

Пред.След.

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

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

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

Рейтинг@Mail.ru