Добрый вечер, возможно нашел опечатки. (Стр-95 Введение в современное программирование)
Да, здесь действительно y должно стоять, это описка. Вот только номер страницы 93, а не 95. Возможно, у Вас версия книги скачана очень давно, мы ее перевыкладывали в связи с исправлением замеченных ошибок и опечаток.
А вот насчет добавления +1 Вы ошибаетесь, потому что отсчет идет с нуля в цикле, а не с единицы. Запустите программу и убедитесь, что значения y формируются верно.
Спасибо.
Прочитал первую книгу из серии “выбор школьника”! Это отличная книга, которая оказалась невероятно полезной для такого “чайника” как я. Очень хорошая подача материала. Присутствует здоровый сарказм автора, что делает чтение книги интересным. Предыдущие книги слишком академичны и больше похожи на справочники, а тут иногда появляется литература Очень мне понравилась первая часть. Приступаю ко второй.
Книга: Осипов_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 книги
стр. 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 последняя версия вышла в апреле.
Вы сами-то станете заниматься вызовами csc? Здесь речь идёт об удобности, экономии времени и места при написании программ, паскальные программы легко передавать как файлы, а в C# придётся делать архив всего проекта или отсылая файл оставлять создание проекта на другого человека. Это не всем удобно. Конечно, можно вообще использовать C# Interactive и скрипты .csx, если вы знаете что это такое.
Фрипаскаль — устаревший (к слову, последняя версия PascalABC.NET вышла вчера) по своим возможностям древний диалект паскаля. И меня дико бесило в школе то, что мы изучаем это устаревшее говно, работая в современной среде PascalABC.NET, и совсем не изучаем возможности этого современного диалекта, приходилось самому лазить по всяким киберфорумам, выискивая людей, которые могут что-то подсказать. У меня это получилось и за пару лет я успешно вкатился как в C#, так и во весь .NET, за что благодарен разработчикам этой среды и самому себе, но никак не тем людям, которые отвечали за наши образовательные программы, оставляя в них это чудище FreePascal.
Для упомянутых небольших и средних программ она не нужна, достаточно любого нормального текстового редактора и консольного компилятора
И какой категории пользователей Вы предлагаете набирать коды программ в текстовом редакторе? Авторам языка C# ? Кто это назубок знает все необходимые для работы библиотеки, свойства и методы? Ерунду пишете, право же…
Каким образом FreePascal устаревший?
Очень простым. Компилятор можно перевыпускать и для Algol-60. Но вот как-то не пользуются сейчас им. FPC устарел не как компилятор, а как язык: в нем невозможно писать программы, отвечающие современным технологиям программирования.