Обсуждение книги Осипова А.В. «PascalABC.NET: Введение в современное программирование»

Вам тоже большое спасибо за книгу. Как всем известно, сейчас карантин. И я как учёный - педагог, анализирую Вашу и другие книги, и сравниваю со своим учебником - черновиком, чтобы не было плагиат. Спасибо. На связи.

1 лайк

О большой книге. прошу посмотреть стр. 48. Вначале получаются две случайные целые число 373 и 321 как стороны прямоугольника. Тогда периметр её =2*(373+321)=1388, а внизу указано 239466 что является результатом 2*(373*321). Верно? Далее в стр. 231. s.LaseIndex, но по моему s.LastIndex. Верно?

2 лайка

Точно так же о периметрах в стр 49, в начале и в середине. Верно?

2 лайка

Верно. Там в программе была описка. Если программу саму загрузите, она все правильно выдаст.

Я рад, что в книге находятся какие-либо замечания, поскольку это означает ее внимательное прочтение. Конечно, со время выхода книги в языке появилось много изменений, поэтому в моих дальнейших планах через некоторое время сделать второе издание. Скорее всего, оно будет приурочено ко времени перевода ЕГЭ на компьютерную основу.

1 лайк

Добрый вечер, возможно нашел опечатки. (Стр-95 Введение в современное программирование)

1 лайк

И возможно ещё одна там же.

Да, здесь действительно y должно стоять, это описка. Вот только номер страницы 93, а не 95. Возможно, у Вас версия книги скачана очень давно, мы ее перевыкладывали в связи с исправлением замеченных ошибок и опечаток.

А вот насчет добавления +1 Вы ошибаетесь, потому что отсчет идет с нуля в цикле, а не с единицы. Запустите программу и убедитесь, что значения y формируются верно.

Спасибо.

2 лайка

Прочитал первую книгу из серии “выбор школьника”! Это отличная книга, которая оказалась невероятно полезной для такого “чайника” как я. Очень хорошая подача материала. Присутствует здоровый сарказм автора, что делает чтение книги интересным. Предыдущие книги слишком академичны и больше похожи на справочники, а тут иногда появляется литература :slight_smile: Очень мне понравилась первая часть. Приступаю ко второй.

3 лайка

Сообщение было перемещено в эту тему: Помощь новичкам

4 сообщения было перемещено в эту тему: Замечания и предложения

Книга: Осипов_PascalABC.NET выбор школьника ч2_2020_09.pdf стр.17

    if k<min then
      min:=k
    else if k>max then {в книге ошибка}
      max:=k

при малых значениях N приводит к неверным результатам. Может так:

    if k<min then
      min:=k;
    if k>max then
      max:=k

Он делает ровно то что вы ему приказали. Проблема только в логике программиста.

else правильно, это оптимизация, но чтоб она работала - надо исправить инициализацию: Изначальные значения min и max должны быть первым сгенерированным числом.
Это изменение, кроме всего прочего, избавит код от 2 магических чисел: -100 и +100.

Спасибо, в исходниках поправил. В PDF исправление будут видно позднее (после перевыкладывания).

Осипов_PascalABC.NET Введение в современное программирование_2019.pdf стр. 75 Напечатано:

if not P then B;
If A then else B;

Надо :

if not P then B;
If P then else B;

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

Осипов_PascalABC.NET выбор школьника ч1_2020_09.pdf

Стр.15 книги

В последнем абзаце:

После школы на работу в нормальное место не возьмут, даже если если выпускник будет знать двадцать языков.

стр.20 книги

пример кода:

// и так тоже пишут комментарии,
// когда они не помещаются в строке

Может лучше оформить многострочным комментарием (и/или посвятить комментариям больше места):

begin
  оператор 1;
  оператор 2; // а вот так пишут комментарии
…
  оператор n;
  { и так тоже пишут комментарии,
  когда они не помещаются в строке }
end.

стр.23 книги

Может рассмотреть и такой вариант:

begin
  writeln('          *       ');
  writeln('         ***      ');
  writeln('          *       ');
  writeln('         ***      ');
  writeln('        *****     ');
  writeln('       *******    ');
  writeln('          *       ');
  writeln('         ***      ');
  writeln('        *****     ');
  writeln('       *******    ');
  writeln('      *********   ');
  writeln('     ***********  ');
  writeln('          *       ');
  writeln('          *       ');
end.

Здесь читаемость кода зашкаливает… И детям нравится. И ошибку трудно допустить. И копирование вставка закрепляется.

стр.37 книги

Напечатано:

Имеется также кортежное присваивание . Список в скобках – это

есть и кортеж, но это материал второй части книги.

Должно быть:

Имеется также кортежное присваивание . Список в скобках – это

и есть кортеж, но это материал второй части книги.

стр.40 книги

image

стр. 52 книги

Напечатано:

var S :=Sqrt(p * (p - a) * (p - b) * (p - c));

(и результат: )

Введите координаты первой вершины: -5 -3

Введите координаты второй вершины: 0 -6.1

Введите координаты третьей вершины: 11 5

Периметр треугольника равен 39.3988, площадь 821.7082

Радиуc описанной окружности 0.5004

Радиуc вписанной окружности 41.7124

Должно быть:

var S :=Sqrt(p1 * (p1 - a) * (p1 - b) * (p1 - c));

Введите координаты первой вершины: -5 -3

Введите координаты второй вершины: 0 -6.1

Введите координаты третьей вершины: 11 5

Периметр треугольника равен 39.3988, площадь 44.8000

Радиуc описанной окружности 9.1774

Радиуc вписанной окружности 2.2742

Похоже, Вы повторили все замечания, которые однажды были сделаны и уже учтены в Word-варианте. А здесь они были утеряны во время сбоя.

Только начал читать книгу и наткнулся на вот такое:

Современный PascalABC.NET нацелен на создание небольших и средних программ-ных проектов, выигрывая у своего «старшего брата» – языка C# – по лаконичности записи программ и компактности инфраструктуры, создаваемой в процессе ком-пиляции. Так, при написании простой консольной программы на C# в Visual Studio 2017 создаётся 11 папок и 10 файлов, а в PascalABC.NET– 1 файл.

Но ведь это же принципиально разные вещи! Среда разработки VS — это одно. Для упомянутых небольших и средних программ она не нужна, достаточно любого нормального текстового редактора и консольного компилятора csc, который ставится вместе с .NET и mono. А сам язык C# — это совершенно другое:

using System;
 
namespace HelloWorld {
    class Hello {         
        static void Main(string[] args)  {
            Console.WriteLine("Hello World!");
        }
    }
}

По идее достаточно это всё сохранить в файл hello.cs и скомпилировать csc. Код конечно чуток длиннее, чем на pABC, но незначительно.

Дальше странности не кончаются:

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

Каким образом FreePascal устаревший? Стабильная версия 3.2.2 вышла в мае этого года, у pABC последняя версия вышла в апреле.