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

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

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

artischev
новенький
Сообщения: 12
Зарегистрирован: 27.12.2012 11:17:22

Сообщение artischev »

bormant писал(а):
artischev писал(а):Вынужден использовать Linux, потому всё что имею - это FreePascal.
Следствие и причина связаны никак (извините за мой английский). Вон там повыше уже писал про DosBox (есть в почти в любом дистрибутиве (или прикручивается несложно)), TP55 раздаётся бесплатно с некоторыми ограничениями по использованию в Embarcadero (ex. Borland, ex. Inprise, ex. опять Borland) Antique Software Museum на офсайте.

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

А если серьёзно, спасибо, быть может разоберусь с DosBox-ом, когда реально потребуется. Пока для моих развлекательных целей хватает Free Pascal-я. Сильно огорчает только отсутствие поддержки кириллицы.
Oleg_D
постоялец
Сообщения: 391
Зарегистрирован: 09.05.2011 11:28:36

Сообщение Oleg_D »

Анекдот понравился, зачОт! :D
artischev
новенький
Сообщения: 12
Зарегистрирован: 27.12.2012 11:17:22

Сообщение artischev »

"Песни о Паскале" Редакция 12.4 от 2012-11-23.
Страница 263.

Обратите внимание: множество передано в процедуру по ссылке CONST. Передача в процедуры множеств, строк и других сложных типов данных по ссылкам CONST и VAR — это обычная практика. Так повышается скорость работы программ и уменьшается объём памяти, занимаемый параматрами.
Oleg_D
постоялец
Сообщения: 391
Зарегистрирован: 09.05.2011 11:28:36

Сообщение Oleg_D »

Понял, спасибо, исправляю.
Аватара пользователя
Paster Fob
постоялец
Сообщения: 188
Зарегистрирован: 22.02.2011 20:53:36
Откуда: Новосибирск.

Сообщение Paster Fob »

2 мелкие опечатки:
Глава 50 стр. 395 { P_59_2 – Футбольный чемпионат (версия 3) } вообще-то задача P_50_2.
стр. 396
Г) Дан тестовый файл
скорее всего текстовый.
Последний раз редактировалось Paster Fob 11.02.2013 16:31:05, всего редактировалось 1 раз.
Oleg_D
постоялец
Сообщения: 391
Зарегистрирован: 09.05.2011 11:28:36

Сообщение Oleg_D »

Да, конечно "текстовый", спасибо!
artischev
новенький
Сообщения: 12
Зарегистрирован: 27.12.2012 11:17:22

Сообщение artischev »

Песни о Паскале, Ответы на некоторые задания из секции «А слабо?» редакция 12-C от 2012-09-18. Страница 77, ответ к заданию 44-Б. Использованы типизированные константы, в книге не описанные.
Аватара пользователя
Paster Fob
постоялец
Сообщения: 188
Зарегистрирован: 22.02.2011 20:53:36
Откуда: Новосибирск.

Сообщение Paster Fob »

artischev писал(а):Песни о Паскале, Ответы на некоторые задания из секции «А слабо?» редакция 12-C от 2012-09-18. Страница 77, ответ к заданию 44-Б. Использованы типизированные константы, в книге не описанные.

О типизированных константах ещё в главе 9 говорится,на стр. 67.
artischev
новенький
Сообщения: 12
Зарегистрирован: 27.12.2012 11:17:22

Сообщение artischev »

Paster Fob писал(а):
artischev писал(а):Песни о Паскале, Ответы на некоторые задания из секции «А слабо?» редакция 12-C от 2012-09-18. Страница 77, ответ к заданию 44-Б. Использованы типизированные константы, в книге не описанные.

О типизированных константах ещё в главе 9 говорится,на стр. 67.

Точно.
Как это я про них забыл? Прогулял, наверное. :)
Аватара пользователя
Paster Fob
постоялец
Сообщения: 188
Зарегистрирован: 22.02.2011 20:53:36
Откуда: Новосибирск.

Сообщение Paster Fob »

Мелкие опечатки:
гл. 51 , стр. 399 отсутствуют разделители в коде

Код: Выделить всё

var P : ^integer;  { указатель на целое } 
  N : integer   { целое }
begin
  P:= @N    { указателю назначается адрес переменной N }
  P^:= 125;   { переменной присваивается значение через указатель }
  Writeln(N);   { 125 }
end.


Гл. 55 , ст. 440

Код: Выделить всё

ADDLINE                 2 
ADDTOSORTLIST           2
ADDWORD                 2
AND                     6
APPTYPE                 1
ASSIGN                  2
ASSIGNED                7
AWORD                  10
BEGIN                  14
CLETTER 


Здесь есть слово APPTYPE которое используется в Delphi.Про компиляцию в Delphi написано в приложении Б.Думаю что нужно указать на это или убрать это слово иначе у новичков может возникнуть проблема.
Oleg_D
постоялец
Сообщения: 391
Зарегистрирован: 09.05.2011 11:28:36

Сообщение Oleg_D »

Paster Fob писал(а):гл. 51 , стр. 399 отсутствуют разделители в коде

Да, есть такой грех, исправлю.
Paster Fob писал(а):Здесь есть слово APPTYPE которое используется в Delphi.

Видно этот пример я в Дельфи прогонял, надо удалить это слово.
Спасибо за внимательное чтение!
Oleg_D
постоялец
Сообщения: 391
Зарегистрирован: 09.05.2011 11:28:36

Сообщение Oleg_D »

В файле Ответов исправлено решение задачи Д из главы 47 (стр. 89 в Ответах).
Было так:

Код: Выделить всё

function CountDigits(aNumber, aBase: integer; aDigit: char): integer;
var sum, digit: integer;
begin
  case Upcase(aDigit) of
    '0'..'9': digit:= Ord(aDigit)-Ord('0');
    'A'..'F': digit:= Ord(aDigit)-Ord('A')+10;
    else digit:=-1;
  end;
. . .

Стало так:

Код: Выделить всё

function CountDigits(aNumber, aBase: integer; aDigit: char): integer;
var sum, digit: integer;
begin
  aDigit:= Upcase(aDigit);
  case aDigit of
    '0'..'9': digit:= Ord(aDigit)-Ord('0');
    'A'..'F': digit:= Ord(aDigit)-Ord('A')+10;
    else digit:=-1;
  end;
. . .
enot777
новенький
Сообщения: 24
Зарегистрирован: 24.11.2016 14:20:58

Сообщение enot777 »

Здравствуйте!
Pesni_o_Paskale_12-09_2016-01-11.pdf
Глава 32 стр.224, 277 и далее
Приведён такой код

Код: Выделить всё

var M1, M2 : (Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec);

Dec используется в FP (Dec/Inc - упомянуты ранее в этой главе).
И если попробовать запустить такой код,

Код: Выделить всё

{$r-}
var m: (Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec);
begin
  inc(m);
  dec(m);
end.

то FP выдаст ошибку Syntax error и укажет на dec(m).
Хотя возможно это просто придирки.

Глава 33 стр.590
Пример

Код: Выделить всё

{ Программа для исследования форматов вывода вещественных чисел }
begin
  Writeln(F, 10/3); { без спецификаторов }
  Writeln(F, 10/3 : 12); { указывается только ширина поля }
  Writeln(F, 10/3 : 15:0); { только целая часть }
  Writeln(F, 10/3 : 15:2); { два знака после точки }
  Writeln(F, 10/3 : 15:3); { три знака после точки }
end.

Параметр F в Writeln наверное лишний.
Последний раз редактировалось enot777 26.11.2016 22:00:09, всего редактировалось 1 раз.
Oleg_D
постоялец
Сообщения: 391
Зарегистрирован: 09.05.2011 11:28:36

Сообщение Oleg_D »

enot777 писал(а):Хотя возможно это просто придирки.

Почему придирки? Вполне нормальный вопрос, он даёт возможность нам ещё раз обратить внимание на тип данных «перечисление», а также на функции Succ и Pred, о которых сказано на стр. 226. Вирт ввёл перечисления с целью запретить арифметические операции над ними (хотя в памяти это всё те же числа). Иногда это повышает надёжность программ. Естественно, что Inc / Dec тоже не могут оперировать с этим типом данных. В последующем идея ограничения набора операций над некоторыми типами данных получила развитие в языке ADA.
К слову сказать, язык C – ровесник Паскаля – изначально не предполагал никакой защиты от промахов программистов, допуская массу вольностей в плане арифметики (чем сишники весьма гордились, не понятно, почему). В последующих версиях C и особенно в C++ были предприняты меры этого рода, т.е. была введена более строгая типизация данных.
enot777
новенький
Сообщения: 24
Зарегистрирован: 24.11.2016 14:20:58

Сообщение enot777 »

>>Oleg_D
Не не не
inc() и dec() прекрасно работают здесь.
Проблема именно в совпадении Dec (сокращение December) и Dec() (декремент)
Ответить