Dyzzet|
C++ Data Science Алгоритмы Темы · Блог · YouTube
Обзоры книг по C++
Русскоязычная литература. Часть III

Максим Валерьевич Кузнецов, Игорь Вячеславович Симдянов. C++. Мастер-класс в задачах и примерах

480 страниц. БХВ-Петербург, 2007

Сборник плохо отформатированных ошибок.

int i = 10;
 
if(++i == i++) cout << "числа равны\n";
else cout << "числа не равны\n";
 
if(i++ == ++i) cout << "числа равны\n";
else cout << "числа не равны\n";
 
if(++i == ++i) cout << "числа равны\n";
else cout << "числа не равны\n";
 
if(i++ == i++) cout << "числа равны\n";
else cout << "числа не равны\n";
 
if(i++ == -- i) cout << "числа равны\n";
else cout << "числа не равны\n";
 
if(i++ == i--) cout << "числа равны\n";
else cout << "числа не равны\n";
 
if(i-- == ++i) cout << "числа равны\n";
else cout << "числа не равны\n";
 
if(i-- == i++) cout << "числа равны\n";
else cout << "числа не равны\n";

Нельзя изменять значение переменной дважды в одном выражении, это ведёт к неопределённому поведению.

Глава «Новый тип» рассказывает про typedef, хотя создаётся не новый тип, а только псевдоним.

Ничего не проверять — хорошая идея.

arr(int num)
{
  count = num;
  array = new int[count];
  for(int i = 0; i < count; i++) array[i] = i*i;
}

Авторы чего-то недоговаривают. Если память будет выделена, но будет выброшено исключение между new[] и delete[] (пока там нет кода, но должен же быть), то память не освободится.

try
{
  arr = new int[number];
  
  delete [] arr;
}
catch(bad_alloc expt)
{
  cout << "Не удалось выделить память под объект arr\n";
}

Дважды прочитать файл? Образцовое решение задачи.

Никита Борисович Культин. C/C++ в задачах и примерах

272 страницы. БХВ-Петербург, 2019

Автор также написал книги о C♯, Visual Basic, Тurbo Delphi, Delphi .NET (две), а также об OpenOffice и «Ноутбук для ваших родителей», но уже в соавторстве.

Задачи — от простого к сложному: от объявления переменных к простым вычислениям, массивам и так далее.

Можно было бы посоветовать этот задачник новичкам, но они будут смотреть на код и считать, что так и нужно. Код написан местами неряшливо, есть транслит и специфичные для Windows вещи (цвет в консоли).

Приложения: таблица ASCII, представление информации в компьютере (десятичные, двоичные и шестнадцатеричные числа).

Василий Кучеренко. Язык програмирования C++ для начинающих и не только

160 страниц. Майор/Издатель Осипенко А. И., 2001

Сразу попеняем за штамп «и не только» в названии. Вероятно, Василий Кучеренко — псевдоним, на последней странице после имени в скобках написано «Владимир Николаевич Кошелев». Автор написал книги и по другим языкам: по ассемблеру, HTML 4, Visual Basic, Delphi.

Книга необычная. Первая глава — «Объектно-ориентированное программирование». Просто небольшое описание. Потом идёт рассказ про лексемы, прочие базовые вещи и не самые простые (как l-value).

Кода в основной части книги почти нет, зато есть описание грамматики. Например, так выглядят «основные выражения».

список выражений:
       выражение
       список_выражений    выражение
id:
       идентификатор
       имя_функции_операции
       typedef-имя                                        идентификатор
       typedef-имя      имя-функции_операции
первичное выражение:
       id
       ::
иднтификатор:
       константа
       строка
       this
(                           выражение
       первичное выражение              (    выражение    )
       первичное_выражение    (    список_выражений    opt    )
if:
       первичное выражение    ->  id

И так практически всю книгу.

Первый кусочек кода — прототип оператора new.

void* operator new (long);

А это первый более-менее цельный пример.

class x { ... };
void f(int x)
{
    class x a;
    // ...
}

Много написано про Turbo C, потом идут какие-то «вопросы и ответы».

Приложения: решения задач, ссылки на сайты по теме.

Валерий Викторович Лаптев. C++. Экспресс-курс

512 страниц. БХВ-Петербург, 2004

Обычный учебник. Немного устаревший. Знакомит с языком, библиотекой, отдельная часть — о программировании под Windows.

Возмущает только название раздела «Тяжёлое наследие C».

Приложения: системы фирмы Borland, Visual C++, ссылки по теме.

Валерий Викторович Лаптев, Александр Васильевич Морозов, Анастасия Валерьевна Бокова. C++. Объектно-ориентированное программирование. Задачи и упражнения

288 страниц. Питер, 2007

Как методичку такое дать студентам, наверное, нормально. А больше некому посоветовать.

Приложения: функции для работы с символьными массивами, обобщённые алгоритмы, рекомендуемые системы программирования.

Валерий Викторович Лаптев. C++. Объектно-ориентированное программирование

464 страницы. Питер, 2008

Ещё один обычный учебник.

Приложение: строки в C++.

Николай Аркадьевич Литвиненко. Технология программирования на C++. Начальный курс

288 страниц. БХВ-Петербург, 2005

Основы, классы, потоки, STL, оконный интерфейс (в Windows). Плохо то, что классам учат на примере Visual C++ («мастер» с окошками).

Приложение: приоритеты операций.

Антон Леонардович Марченко. C++. Бархатный путь

399 страниц. Горячая линия-Телеком, 2005

Путь начинается со сравнения грамматик русского языка и формальных языков, идентификаторов и разных правил. Продраться через эти схемы трудно.

Оператор ::= ОператорОбъявления
         ::= *****
 
ОператорОбъявления ::= Объявление
Объявление ::= ОбъявлениеПеременной
           ::= *****
 
ОбъявлениеПеременной ::= ОбъявлениеПеременнойОсновногоТипа
                     ::= *****
...

Новичок вряд ли даже поймёт, где начинается первая программа. Каких-то более-менее цельных фрагментов в книге не будет очень долго.

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

Приложения: «грамматическая сводка», «контроль типов», «прочие характеристики языков программирования», «алгоритмы преобразования», дополнительный код, преобразования дробной части вещественного числа, элементы теории комплексных чисел (в книге есть класс для представления комплексного числа).

Марина Валентиновна Огнёва, Елена Вячеславовна Кудрина. Программирование на языке C++. Практический курс

335 страниц. Юрайт, 2021 (2017)

Переработка двух стостраничных методичек 2008 года «Основы программирования на языке C++». К основным главам добавили: классы и объекты, наследование, объектно-ориентированную реализацию списков и реализацию списков с помощью «бибилотеки» стандартных шаблонов. Код по сравнению с прошлым изданием немного причесали, но проблем по-прежнему много.

Книга формальная. С ошибками, скажем, не везде освобождается память (пример перекочевал полностью из старой версии, среди прочего — транслит и строка вместо символа).

#include <iostream>
using namespace std;
/* в функцию в качестве параметров передаются динамический массив mas
и его размерность n */

void print (int *mas, int n)
{
  for (int i = 0; i < n; i++)
    cout << mas[i] << "\t";
  print(a, 10);
  return 0;
}

Где-то насыпали новых ошибок. К примеру, директивы препроцессора не являются выражениями (statements), они не требуют точки с запятой, что бы там ни писали авторы.

#include < имя_заголовочного_файла >;

Приложения: Visual Studio, ошибки, возникающие при разработке программ, операции, математические функции.

Павел Алексеевич Орленко, Пётр Валентинович Евдокимов. C++ на примерах. Практика, практика и только практика

288 страниц. Наука и Техника, 2019

Среда Dev C++, int polovnik; и скриншоты консоли. Если код отформатировать, то получится нормальное введение для первокурсников.

После знакомства с классами сразу пишут небольшое клиент-серверное приложение на сокетах. Затем идут бинарный поиск и некоторые алгоритмы сортировки (на примере линейных списков).

Приложения: заголовочные файлы стандартной библиотеки (контейнеры, алгоритмы, строки, математика, исключения, границы диапазонов, <new> и RTTI).

4 ноября 2021
C++ книги
Зарегистрируйтесь и войдите, чтобы оставлять комментарии и голосовать.

Книги по C++
Книги Бьерна Страуструпа
Учебная литература. Часть I / Часть II / Часть III. Книги Герберта Шилдта / Часть IV
Русскоязычная литература. Часть I / Часть II / Часть III / Часть IV
Стандартная библиотека шаблонов
Структуры данных, алгоритмы, решение задач
Что выбрать? (Обновляется)
Также может быть интересным
© MMXI—MMXXIII. RSS. Поддержать сайт
Светлая тема / тёмная тема