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

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

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

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

Сообщение Oleg_D » 18.04.2012 13:34:20

tema писал(а):v:= ((v+Random(2)) mod 3)+1; {ПРАВИЛЬНО}

Да, согласен, погорячился :D
Для 4-го варианта задачи можно придумать кучу способов, но смысл все же в том, чтобы в каждой ветви крутился цикл подбора символа. Как это будет сделано: прямо в CASE или в отдельной функции - не так важно. И еще: когда требуется уникальность символов, то максимальная длина пароля ограничена (26+26+10). Если кто-то захочет проработать вариант с длинными паролями, то придется дополнительно проверять множества (или строки, если делать через них). Иначе возможно зацикливание while.

Добавлено спустя 12 минут 30 секунд:
tema писал(а):Можно не закручивать лишних три цикла. Можно сделать readset вместо процедуры функцией и возвращать true при удачном выполнении. И считать новую n тут n:=(n+1) mod 3;, только когда true.

Похоже, что да.
Oleg_D
постоялец
 
Сообщения: 390
Зарегистрирован: 09.05.2011 11:28:36

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

Сообщение tema » 18.04.2012 14:14:07

Oleg_D писал(а):Для 4-го варианта задачи можно придумать кучу способов, но смысл все же в том, чтобы в каждой ветви крутился цикл подбора символа. Как это будет сделано: прямо в CASE или в отдельной функции - не так важно.

Как раз этого я и хотел избежать в своём варианте. У меня в ветках циклы не крутятся. В программе единственный цикл от единицы до длины пароля, а по веткам цикла нет. Но раз работать со строками на данном этапе книги рано, значит решение некорректно в данном контексте :D
tema
постоялец
 
Сообщения: 375
Зарегистрирован: 24.03.2011 20:19:27

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

Сообщение mpeg » 19.04.2012 15:44:54

Прочитал 5-ть глав. Всё пока понял. Спасибо.

Вопрос: :?: После окончания чтения учебника будет ли мне хватать знаний чтобы создать нормальную "кукушку"?

Возможностей языка Паскаль хватает на решение такой задачи?
Или мне придётся курсы для совершенствующихся ещё заканчивать в Дельфи или каком-либо не Паскальном языке? :roll:
mpeg
новенький
 
Сообщения: 14
Зарегистрирован: 19.04.2012 15:29:05

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

Сообщение Oleg_D » 19.04.2012 16:02:43

Спасибо за интерес к "песням".
mpeg писал(а):Вопрос: После окончания чтения учебника будет ли мне хватать знаний чтобы создать нормальную "кукушку"?
Вопрос: а что такое "нормальная кукушка" ?
В "песнях" даны лишь азы программирования, даже базовый Паскаль представлен не на все 100%. О визуальщине вообще речи нет, - по этим делам есть много книг, но они рассчитаны на подготовленного человека. Вот таким хорошо подготовленным Вы и станете, если осилите эту книжонку.
Oleg_D
постоялец
 
Сообщения: 390
Зарегистрирован: 09.05.2011 11:28:36

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

Сообщение tema » 19.04.2012 16:18:13

Метод вакуумного перемещения («кукушка») применяется обычно при легких формах воспаления околоносовых пазух.
У человека, видимо, гайморит и он думает вылечить его научившись программированию, т.к. это поможет ему сделать "кукушку" нормально.
:mrgreen:

Добавлено спустя 9 минут 50 секунд:
mpeg писал(а):Прочитал 5-ть глав.

А если серьёзно, то просто прочитать мало. Надо ещё задания делать, иначе ничего не освоится.
Ну и опять к несерьёзному:
Просто очень понравилось сокращение "5-ть" - это написать, очевидно, намного короче, чем "пять"
Нельзя писать Имена Б-га полностью, так как не исключено, что в конце концов этот лист будет выброшен, и тем самым Имени Б-га будет нанесено оскорбление.
Религиозный сайт Мошиах.ру о напейсании через дефис
tema
постоялец
 
Сообщения: 375
Зарегистрирован: 24.03.2011 20:19:27

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

Сообщение Oleg_D » 19.04.2012 17:20:36

2012-04-19 Выложена 11-я редакция книги "Песни о Паскале"
Песни о Паскале

Нумерация страниц не изменилась.

1. Исправлено около двух десятков мелких опечаток.
2. Стр. 252 – Добавлено о подмножествах и надмножествах
3. Стр. 277 – Исправлена задача 38-Г
4. Стр. 290 – Исправлена процедура ReadFromFile
5. Стр. 293 – Добавлена задача 40-И
6. В файле ответов добавлены решения для задач 38-Г , 38-Д , 40-И.
7. В исходных файлах исправлена программа P_40_2.
Oleg_D
постоялец
 
Сообщения: 390
Зарегистрирован: 09.05.2011 11:28:36

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

Сообщение mpeg » 19.04.2012 18:09:34

Oleg_D писал(а): Вопрос: а что такое "нормальная кукушка" ?

Ну вот если в браузере такой код запустить, то всплывёт окошко с Приветом. :mrgreen:
Код: Выделить всё
<html>
<head>
<title>Кафе Starbuzz</title>
</head>

<body onload="alert('Привет! Я Эдуард Бандаков');">
<h1>Напитки кафе Starbuzz</h1>
<style type="text/css">
      body {
        background-color: #d2b48c;
        margin-left: 20%;
        margin-right: 20%;
        border: 1px dotted gray;
        padding: 10px 10px 10px 10px;
        font-family: sans-serif;
      }
    </style>

<h2>Домашняя смесь, $1,49</h2>
<p>Мягкая, нетерпкая смесь различных сортов кофе из Мексики, Боливии и Гватемалы.<p>

<h2>Кофе Мокко, $2,35</h2>
<p>Эспрессо, кипячёное молоко и шоколадный сироп.</p>

<h2>Капучино, $1,89</h2>
<p>Смесь эспрессо и кипячёного молока с добавлением пены.</p>

<h2>Чай, $1,85</h2>
<p>Ароматный напиток из чёрного чая, специй, молока и мёда.</p>
</body>
</html>


Хотелось бы такую же программу сделать вроде как "Всплывающие окошко с задержкой по времени с двумя вариантами развития событийя после моей реакции" и в Автозагрузку засунуть её.
Что-то вроде будильника, но более совершенное. Как у Касперского с всплывающими окнами напоминалками хотелось бы, например.

Я кроме основ html ничего не знаю. Потому интересуюсь...

Если же учебник мне только как Прельмановские книжки привьёт интерес к теме, то "Что посоветует почитать после Вашего Учебника?"
mpeg
новенький
 
Сообщения: 14
Зарегистрирован: 19.04.2012 15:29:05

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

Сообщение tema » 19.04.2012 21:04:54

mpeg писал(а):Что-то вроде будильника, но более совершенное

Что-то вроде винлокера :twisted:
tema
постоялец
 
Сообщения: 375
Зарегистрирован: 24.03.2011 20:19:27

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

Сообщение Oleg_D » 19.04.2012 22:55:44

mpeg писал(а):Ну вот если в браузере такой код запустить, то всплывёт окошко с Приветом.

Ах, вот что такое нормальная кукушка! Теперь буду знать :D
mpeg писал(а):Если же учебник мне только как Прельмановские книжки привьёт интерес к теме...

Книги Перельмана замечательные, с них начинали несколько поколений инженеров. Без интереса в инженерии делать нечего, а программист - это тоже инженер.
mpeg писал(а):Что посоветует почитать после Вашего Учебника?

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

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

Сообщение tema » 20.04.2012 04:37:42

Oleg_D писал(а):А потом - книги по Дельфи, их много самых разных.

Классика Дельфи-Билдера - тома Архангельского. Описаны все компоненты с примерами:
http://www.ozon.ru/context/detail/id/3812413/
Oleg_D писал(а):И еще я думаю, что "чистый программист" - не очень перспективно, надо охватывать больше инженерных наук: математику, механику, электронику химию и ... многое другое. Иначе будете вариться в собственном соку, и толку от знаний программирования будет мало.

Поддерживаю. Учи матан (с)
2 mpeg
Эта "кукушка" делается за 2 минуты в дельфи и программирование для этого знать не надо :) Надо просто знать где задать у формы невидимость и как по нажатию кнопки и по таймеру сделать форму видимой/невидимой. Всего будет в этой программе 2-3 строчки написанные тобой.
tema
постоялец
 
Сообщения: 375
Зарегистрирован: 24.03.2011 20:19:27

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

Сообщение mpeg » 20.04.2012 09:09:13

Спасибо Всем. :D За ответы...

Что есть Делфи и прочие языки программирования в Википедии посмотрел...

Но решил сначала учебник "Песни о Паскале" проштудировать... А дальше... потом подумаю... :D

Добавлено спустя 3 часа 49 минут 53 секунды:
Для школьников и начинающих главу 3 лучше назвать Консольная наружность.
Интерфейс я так понимаю это сложная абстракция внешность которой есть лишь одно из её свойств.
Но для начинающих это ближайший синоним. ИМХО.

Вроде "мы сбрасываем маски и не будем пользоваться оконным посредником при общение с сердцем компьютера"...
Если человек учит немецкий или другой не английский язык, то слово интерфейс не намёк, а - абракадабра. ИМХО.
mpeg
новенький
 
Сообщения: 14
Зарегистрирован: 19.04.2012 15:29:05

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

Сообщение tema » 27.04.2012 01:51:08

mpeg писал(а):Интерфейс я так понимаю это сложная абстракция внешность которой есть лишь одно из её свойств.

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

Добавлено спустя 13 минут 58 секунд:
Распечатал экземпляр себе на принтере. Так как собираюсь печатать для учащихся, сел за книгу с карандашиком. Внимательно прочитал и пометил первые десять глав. Пишу тут, чтобы по спорным вопросам была дискуссия, а так же, чтобы указать на имеющиеся спорные моменты тем, кто уже читает.
У меня распечатана самая свежая версия (спасибо автору). Комментирую я её, но открыл имеющуюся на сайте в данный момент и смотрю, чтобы в ней имелись те же самые моменты.
И страницы я указываю из версии с сайта: http://oleg-derevenets.narod.ru/Pesni_o_Paskale_2012-04-19.pdf
Итак, первые 10 глав.

Глава 2 страница 25
  1. Такой файл называют исходным текстом или, на жаргоне программистов, – «исходником», «сырцом».

    По данному Вами обещанию в первой главе
    По ходу изложения я буду переводить попадающиеся там и сям английские слова, и пояснять их.

    стоит объяснить "сырца", что он от source - т.е. "исходник" по-английски. Ну и плюс это, конечно, игра слов "сырец" и русское слово и тоже относится к теме :)
  2. Но, согласитесь, в отличие от двоичного кода, здесь чувствуется возможность что-то понять.

    Шестнадцатиричного. Или стоит объяснить про двоичный. Вот на следующей странице:
    Человек и компьютер «говорят» на разных языках. Процессор компьютера «понимает» лишь язык двоичных кодов, в котором трудно разобраться человеку.

    Нет в главе ничего про двоичные коды. Есть только скриншот с шестнадцатиричными.

Добавлено спустя 17 минут 47 секунд:
Глава 3 страницы 29-30
  1. Маркер, мигающий после угловой скобки, предлагает вам ввести какую либо из команд операционной системы. Таких команд насчитывается несколько десятков, их полное описание можно найти в справке по MS-Windows.

    Команда help выводит список команд с кратким описанием. Команда help <имя команды> или <имя команды> /? выводит подробное описание команды <имя команды>
  2. ...Напечатайте с позиции маркера слово DIR...
    ....При желании повторите команду DIR еще пару раз. А теперь введите команду CLS (очистка экрана)....

    Раз мы в консоли, то стоит пояснить насчёт что такое директория (Directory) = папка (Folder) = DIR которое видно на скриншоте <DIR>
    CLS=CLear Screen - это опять в первую главу к Вашему обещанию пояснять такие вещи.

Добавлено спустя 4 минуты 33 секунды:
Глава 5 страница 41
  1. Итак, слова BEGIN и END указывают компилятору начало и конец программы. Их применяют и в иных случаях, но всегда парно, как скобки в математике.

    Это не так. case, try, record и т.п. закрываются end без begin
  2. страница 43 и 45
    Длина строки ограничена – не более 255 знаков (включая пробелы).

    Строковая константа – это последовательность символов, заключенная в апострофы. Константа может содержать не более 255 символов.

    Нет. На всякий случай (мало ли что :) ), только что вывел на экран writeln('111111111111111111111.....'); - 400 символов. Скомпилировалось без проблем, запустилось и распечаталось все 400.
    Если имеется ввиду возможность в IDE указать столько символов в одну строчку, то это нужно явно указать, иначе вводите в заблуждение.
  3. страница 45
    А слабо? В)
    Тут вопрос спорный стоит или не стоит давать это задание до 7 главы, где про точку с запятой идёт столь подробное рассуждение.

Добавлено спустя 36 минут 4 секунды:
Глава 7 страница 53
  1. Вот строгое определение алгоритма, запишите: «Алгоритм – это точное предписание исполнителю совершить определенную последовательность действий для достижения поставленной цели за конечное число шагов».

    Думаю данную фразу стоить построить немного в другом ключе. Как минимум убрать выделенное.
    Анализу вопроса "что есть алгоритм?" посвящена целая глава в классическом труде Кнута "Искусство программирования". Одной фразы для строгого определения как минимум не достаточно, а как максимум открываю книгу и привожу цитату из соответствующей главы:
    Алгоритм - это не просто набор конечного числа правил, задающих последовательность выполнения операций для решения задачи определённого типа.
    :D sad, but true
    Сделаем скидку на то, что содержание матана в книгах Кнута превышает все критические несовместимые с жизнью школьников дозы, поэтому Ваше определение вполне подходит и описывает сущность алгоритма, но фразу "Вот строгое определение алгоритма" точно стоит убрать :D

Добавлено спустя 28 минут 23 секунды:
Глава 8 страницы 56-57
  1. ...длинный прочерк я обозначил словом Line – «линия».

    Опять спорный вопрос. Стоит ли называть так? Ведь Line - процедура рисование линии. Я вижу, что позже Вы предложили определять это как CLine, но всё же....
  2. страница 58
    Идентификатор начинают с буквы, а подчеркивание тоже считается буквой.

    Мне кажется стоит написать так: Идентификатор НЕ начинают с цифры
  3. Изобретая имена, мы будем придерживаться некоторой системы с тем, чтобы меньше путаться в своих придумках. Так, имена констант условимся начинать с латинской буквы «C» (например, CLine).

    Мне кажется стоит хоть пару слов о вариантах. Например, иногда константы, чтобы сразу отличать от переменных пишутся БОЛЬШИМИ БУКВАМИ
  4. страница 59
    ....«укладывать» в переменную данные и многократно извлекать....
    ....единожды положенное в переменную можно извлекать многократно, – этот «карман» никогда не опустеет!

    Тут происходит установка несколько неправильного представления. Мне кажется, чтобы избежать проблем в дальнейшем понимании сути, стоит объяснить это немного в другом ключе: мы из "кармана" ничего не извлекаем. Мы просто смотрим что у нас в кармане и оперируем информацией о том, что увидели в этом кармане.
  5. Каждое такое объявление содержит два элемента – имя переменной и её тип, разделяемые двоеточием.

    Слишком строго, причём эту строгую установку Вы уже в следующей главе разбиваете, указывая, что на самом деле можно указать не имя переменной, а имена переменных, разделённых запятыми.
    В главе мы работаем с одной, поэтому не надо говорить про несколько переменных, но фразу просто нужно сделать менее строгой тут, и дать строгое в следующей главе, а тут сделать эту фразу как рекомендацию или объяснение, но не определение
  6. ...Или это строка текста, пригодная лишь для вывода на экран?...

    Опечатка? Или неочевидный пример? Со строками можно делать многое, причём часть этого "многого" делается уже в следующей главе :)
  7. страница 59
    Да так и назовем – Name, что значит «имя».

    "значит" для программирования слишком многозначительно :) Лучше "переводится с английского как" - опять же отсылка к обещанию в первой главе :)
  8. страница 61
    .... константы не могут изменяться в ходе выполнения программы.

    Не очевидно. Из главы это не следует и конкретно это нигде не сказано. Будут проблемы у читающего. Тем более, что без конкретного этого уточнения будут сбивать с толку некоторые фразы с 57 страницы, например:
    ...после изменения константы необходима повторная компиляция программы....

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

Добавлено спустя 14 минут 34 секунды:
Глава 9 страница 64
  1. ...перекладывать из одного «кармана» в другой

    Противоречие. "Перекладывание" - это перемещение, и в следующем предложении речь о копировании. И вообще сначала стоит указать не копирование из переменной в переменную, а присваивание переменной значения.
    Т.е. до объяснения A := B; стоит объяснить A := 'Привет!'; и указать на отличие от констант.
  2. страница 67
    Типизированные константы

    До или после стоит и про инициализацию переменных таким образом.
    Код: Выделить всё
    var
    s:string='Привет!';


Добавлено спустя 4 минуты 39 секунд:
Глава 10 страница 69-70,71
  1. Код: Выделить всё
    IF условие THEN Оператор_1 ELSE Оператор_2

    Код: Выделить всё
    if S = ’pascal’ then Writeln(’Проходите!’) else Writeln (’Стойте!’)

    Код: Выделить всё
    if ’pascal’ = S
      then Writeln(’Проходите!’)
      else Writeln (’Стойте!’)

    Код: Выделить всё
    IF условие THEN Оператор


    В каждом примере в конце поставить ; чтобы сразу привыкал читатель к тому, то это один оператор.

Добавлено спустя 8 минут 15 секунд:
Через пару дней будут следующие 10 глав :)
И ещё важное замечание по всем начальным главам. Предполагаю, что встречу сопротивление, но всё равно скажу.
У меня был опыт работы с детьми по паре других книжек. Оттуда я вынес, что как минимум на начальных этапах писать в учебнике так:
Код: Выделить всё
const Name='Вася';
var a:string;

Большая ошибка. Потом приходится напоминать и по 100 раз повторять и исправлять вот такие ошибки:
Код: Выделить всё
const Name='Вася';
const Name2='Петя';
var a,s:string;
var i:integer;

Как минимум в начальных главах, при знакомстве с этим, а ещё лучше во всём учебнике писать так:
Код: Выделить всё
const
  Name='Вася';
var
  a:string;

Так понятно, что указана секция констант и секция переменных.
С учебниками, где написано так, как я показал, подобных ошибок у учащихся не возникало ни разу.
ЗЫ
Прошу прощения за критику :)
tema
постоялец
 
Сообщения: 375
Зарегистрирован: 24.03.2011 20:19:27

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

Сообщение Oleg_D » 27.04.2012 09:10:54

tema писал(а):Прошу прощения за критику

Прощаю :D
Нет, не то, - я обеими руками за такую критику и считаю публичную дискуссию крайне полезной. Собственно, для этого и создана ветка - пусть все желающие выскажут свои мнения. Это то, что мне надо - от критики выиграют ученики. С большинством замечаний я согласен и постараюсь поправить. Некоторые не смогу по той причине, что при вставке дополнительных строк существенно сместятся страницы, а я пока избегаю этого. Но на будущее учту.
Касательно некоторых пунктов хочу ответить тем, о чем уже писал на этой ветке. Поскольку книга для начинающи (азбука!), я стараюсь не забегать вперед и не объяснять ВСЕ и СРАЗУ. Вот, к примеру, можно было бы во 2-й главе наговорить и про двоичный, и про 16-ричный коды. Только зачем? Здесь ребёнок не поймет ни того, ни другого, но почувствует себя дураком. То есть, некоторые мои умолчания, недоговорки и упрощения имеют сугубо дидактическую причину. Или те же определения информации и алгоритмов, - здесь тоже упрощаю до соответсвующего уровня.
tema писал(а):википедируй это слово

Класс! Мне понравилось! :D
С интересом жду дальнейших заметок!

Добавлено спустя 42 минуты 37 секунд:
tema писал(а): На всякий случай (мало ли что ), только что вывел на экран writeln('111111111111111111111.....'); - 400 символов. Скомпилировалось без проблем, запустилось и распечаталось все 400.

Вот здесь подробней, пожалуйста. Дайте код и опции компилятора, самому интересно. Я засобачил вот такую программульку:
Код: Выделить всё
begin
Writeln(
'***********************************************************'+
'***********************************************************'+
'***********************************************************'+
'***********************************************************'+
'***********************************************************'+
'***********************************************************'+
'***********************************************************'+
'***********************************************************'+
'***********************************************************'
);
Readln;
end.

Компилировал и запускал в FP (с разными настройками) и в BP. Выводятся лишь 255 символов.
Oleg_D
постоялец
 
Сообщения: 390
Зарегистрирован: 09.05.2011 11:28:36

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

Сообщение Vadim » 27.04.2012 10:33:34

Oleg_D писал(а):Вот здесь подробней, пожалуйста. Дайте код и опции компилятора, самому интересно. Я засобачил вот такую программульку:

Компилировал и запускал в FP (с разными настройками) и в BP. Выводятся лишь 255 символов.

Вариант №1.
В самом начале файла поставьте вот это:
Код: Выделить всё
{$mode objfpc}{$H+}

и не забывайте все новые файлы компилить именно с этими опциями. ;) Тогда строка любой длины выведется целиком.
Вариант №2.
Чтобы не записывать это каждый раз, лучше включить эти опции в конфигурационный файл компилятора - fpc.cfg:
-Mobjfpc
-Sh

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

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

Сообщение Oleg_D » 27.04.2012 11:16:48

Vadim писал(а):В самом начале файла поставьте вот это

Спасибо, Vadim. Это то, что в Дельфаке Huge String называется.
Фразу о максимальной длине строк я как-то уточню, но в дальнейшем использую только короткие строки. Во-первых, для совместимости с BP, поскольку большинство школ применяют этот компилятор. И в 4-й главе я обещал приводить совместимые примеры. А во-вторых, на этом этапе ученику совершенно безразлично, какова максимальная длина строки, и запутывать его Huge String, реализация которых не так уж проста (даже опытные спотыкаются), я считаю неразумным. Пусть уж сразу привыкает к магическому числу 255. :D На первое время хватит :D
Oleg_D
постоялец
 
Сообщения: 390
Зарегистрирован: 09.05.2011 11:28:36

Пред.След.

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

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

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

Рейтинг@Mail.ru