ilyachalov (ilyachalov) wrote,
ilyachalov
ilyachalov

Categories:

Разбор симулятора лошадиных скачек

Я уже писал про программу «Симулятор лошадиных скачек» из 10-й главы учебника Лафоре и делал анимированную картинку в формате GIF, чтобы показать ее работу в динамике:
https://ilyachalov.livejournal.com/97556.html

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

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

Ошибки при переводе не всегда текстовые. Например, сравним рисунки, иллюстрирующие работу программы, в оригинале и в переводе. Казалось бы, куда проще — просто скопируй картинку из оригинала. Ан нет, зачем-то рисуют заново.


в оригинале


в переводе

Это консольная графика. Каждая лошадь изображена тремя символами: двумя закрашенными прямоугольниками и номером лошади между ними. Лошади движутся слева направо. Движение лошади симулируется следующим образом: стирается изображение лошади, нарисованное на предыдущем «тике» симуляции, а затем рисуется изображение лошади на текущем «тике» симуляции. На текущем «тике» симуляции положение лошади, соответственно, будет немного правее, чем на предыдущем «тике». Скорость каждой лошади на каждом «тике» определяется случайным образом, поэтому заранее нельзя сказать, в каком порядке лошади придут к финишной линии справа. При каждом запуске симулятора лошади будут финишировать в разном порядке.

Во-первых, сразу возникает вопрос (у меня возник), почему вертикальные линии участков трека после пробега лошадей становятся шриховыми? Это потому, что когда стирается изображение лошади предыдущего «тика» симуляции, затирается и всё, что находится на пути лошади. После пробега лошади остается пустота, потому что трек с вертикальными линиями его участков рисуется только один раз в начале гонки и не перерисовывается заново каждый «тик».

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

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

В-третьих, на рисунке в переводе плохо видно, что стартовая и финишная линии толще, чем вертикальные линии границ участков трека, находящихся между стартом и финишем.
Tags: Образование, Программирование
Subscribe

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 0 comments