Показаны сообщения с ярлыком Страуструп. Показать все сообщения
Показаны сообщения с ярлыком Страуструп. Показать все сообщения

понедельник, 14 февраля 2011 г.

Страуструп "Язык программирования C++". Специальное издание 2011.

Забывал написать. Наконец-то переиздали. Заказал в декабре, получил 31-го, прямо под новый год.
На Озоне аж 924 рубля.
На books.ru - 622.
А я брал здесь за 684. Удобно, что посылку можно забрать в пункте выдачи заказов и там же оплатить по ее прибытии.

понедельник, 5 июля 2010 г.

"Это же БИБЛИЯ))) Не продам..."

Таким был один из комментариев в местном сообществе, на мое предложение купить бумажную книгу Страуструпа :) Ее нигде нет. В Ozon'е, Books.ru, Bolero и в куче других нет. В электронном виде не интересно.

воскресенье, 13 сентября 2009 г.

Перечислимые типы

С этими типами посложнее, чем в Delphi. Самый простой пример:

enum colors{RED, GREEN, BLUE};

RED, GREEN, BLUE - константы, равные числам 0, 1, 2 соответственно. Их значения можно задавать самостоятельно:

enum colors{RED=0, GREEN=1, BLUE=9}; //Должны быть целыми

Использование достаточно очевидно:

colors x = GREEN; //z == 1 
colors z = 9; //Ошибка компиляции.
colors z = colors(9); //А вот так все хорошо. z == BLUE
if (z = BLUE) {/* */};

Любопытно (по крайней мере для меня), что переменной z можно присвоить другое  значение кроме этих трех:

colors z = 2; //Как мы уже выяснили - это ошибка компиляции
colors z = colors(2); // Так можно. z == 2

Интересно, в каких пределах можно задавать значения? У меня не сошлось со Страуструпом.

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

enum e2{a=3, b=9} //диапазон 0:15

Поэтому, по его словам, e2 f2 = e2(20) не определено.

Границы диапазонов связаны со степенями двойки, но я не буду переписывать точное правило. Размер sizeof не может превышать sizeof(int).

Не знаю почему, но как я не крутил, sizeof всегда был равен 4. По всей вероятности sizeof(enum) = sizeof(int).

Вывод, который я сделал: Перечислимый тип - это фактически тот же int, но с личными именами некоторых чисел

четверг, 10 сентября 2009 г.

Страуструп. Размеры целочисленных типов.

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

Наконец-то я понял в каких пределах могут отличаться фундаментальные типы в зависимосимости от платформы. Авторы любят предупреждать: "Внимание, размер типов может отличаться, обязательно это помните". А откуда я знаю какой размер может принять, скажем, тип int на другой платформе. 2 байта? 4?. А может, например 2 бита? Могу ли я быть уверен, что число 9000 влезет в int?

Но тут конкретно сказано: независимо от погоды типу char гарантируется 8 бит, для short - 16, long - 32. Хм, где же int. Cудя по sizeof(short) <= sizeof(int) <= sizeof(long) ему дадут 16 бит точно. У меня на 32-битной Висте и компилятором minGW для них выдало: 2, 4, 4. Ну да ладно, просто учту на будущее.

среда, 9 сентября 2009 г.

C++

Так получилось, что я плохо знаю C++. Скажем так, чуть лучше уровня "Hello, World!". Если я хочу(а я хочу) писать прикладные программы, то просто обязан постигнуть его.

Это осознание пришло около 2-х недель назад. Я начал с поиска подходящей книги. В рунете первым делом вспоминают книгу Брюса Эккеля "Философия Java" (Thinking in Java). Вот и отлично, тем более она была куплена мною около полугода назад и аккуратно положена на полку. Я часто смотрел на ее красивую оранжевую обложку. Обложка мне нравилась. Вероятно потому, что оранжевый цвет считается самым антидепрессивным :) Иногда я прочитывал введение, через месяц забывал, и снова прочитывал. Начало введения было очень вдохновляющим, но к концу оно меня утомляло.

Но однажды я сел и стал читать. И за пару недель почти полностью ее прочитал. Мне понравилось, но новичку в программировании не рекомендую. Автор предполагает(и подчеркивает), что читатель знаком с языком C, и разъясняет только новое, появившееся в C++.

Честно говоря, мне приходилось читать ее очень медленно, вдаваясь в каждый пример, вдумываясь в каждое предложение. Понравилось, что почти нет "разжевывания" материала. Если не понимал, просто возвращался назад и врубался. 

Стиль интересный, хочу перечитать. Но только после Страуструпа "Язык программирования С++", в котором я прочитал кучу введений и предисловий, а также главу "от редакции русского издания". Ходят легенды, что каждый программист должен ее прочитать.