Сообщество - Лига программистов C/C++
Добавить пост

Лига программистов C/C++

60 постов 4 756 подписчиков

Популярные теги в сообществе:

Стилистические Войны программистов ( Часть 2 )

Мой предыдущий пост посвященный стилистическим войнам программистов к большому удивлению был очень тепло встречен пикабушниками и привел к немалому числу оживленных обсуждений в комментариях. :)

Поэтому я решил воплотить в жизнь еще пару-тройку жизненных картинок в этой тематике :)


// [0]

Стилистические Войны программистов ( Часть 2 ) Программирование, C++, Юмор, Длиннопост

// [1]

Стилистические Войны программистов ( Часть 2 ) Программирование, C++, Юмор, Длиннопост

// [2]

Стилистические Войны программистов ( Часть 2 ) Программирование, C++, Юмор, Длиннопост

// [3]

Стилистические Войны программистов ( Часть 2 ) Программирование, C++, Юмор, Длиннопост

И бонусная версия для особых почитателей моды:

Стилистические Войны программистов ( Часть 2 ) Программирование, C++, Юмор, Длиннопост
Показать полностью 5

Стилистические Войны программистов

Когда-то давным давно я склепал и залил в инет несколько юмористических картинок касательно стилистики написания кода на C++, которые мгновенно разлетелись и вызвали тогда много срача жарких дискуссий на эту тему... И вот перерывая свои старые и пыльные архивы я сейчас снова на них случайно наткнулся. Поэтому решил поделиться с вами полной подборкой. :)

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

// [0]

Стилистические Войны программистов Программирование, C++, Юмор, Длиннопост

// [1]

Стилистические Войны программистов Программирование, C++, Юмор, Длиннопост

// [2]

Стилистические Войны программистов Программирование, C++, Юмор, Длиннопост

// [3]

Стилистические Войны программистов Программирование, C++, Юмор, Длиннопост

А вот вариант от некоего пользователя под ником Ges( если ты есть на Пикабу, то респект тебе - долго смеялся с твоей картинки :)) )

Стилистические Войны программистов Программирование, C++, Юмор, Длиннопост

P.S. Баянометр ругался на одну отдельно выложенную картинку :)

Показать полностью 5

Какая IDE лучше для разработки на C++?

Подскажите, какая вам больше нравится и почему?

Начинающий проффесионал

Заинтересовался программированием, оч хочется создавать полезные штуки! Лига программистов помогите, да посоветуйте чего нибудь!

Как начать понимать указатели

Тема указателей для многих является той точкой, на которой многие новички спотыкаются. Секрет такого ступора объясняется довольно просто, из мира языка С++ Вы погружаетесь в мир архитектуры компьютера и выполнения программ. Поскольку Вы его не знаете и почему-то авторы книг/курсов/статей не хотят Вас с ним знакомить, этот процесс может проходить довольно болезненно. В данном статье мы попытаемся устранить этот недостаток.

Любая программа перед тем как начать исполняться полностью загружает свой код в ОЗУ или проще говоря оперативную память. Оперативная память в урощенной схеме представляет из себя таблицу адресов и значений.


Есть такой термин как разрядность и применяется он для ОС, шины, адресного пространства. Он означает, сколько одновременно бит может обработать устройство. Вот один из примеров оперативной памяти с адресной разрядностью в 8 бит(2^8 = 256 адресов) и разрядностью шины 16 бит.

Как начать понимать указатели Указатель, Память, Программирование, C++, Длиннопост

Давайте посмотрим на примере простой программы, как это может работать в упрощенной схеме.

Как начать понимать указатели Указатель, Память, Программирование, C++, Длиннопост

После того, как компилятор пройдется по вашему коду, он заменит все ваши имена переменных на адреса и заполнит как-то так оперативную память

Как начать понимать указатели Указатель, Память, Программирование, C++, Длиннопост

Соответсвенно адрес у переменной не меняется и если мы присвоим ей новое значение, то оно изменится только в столбце "значение по адресу".

Вот мы и подошли к самому главному - указатель, это совершенно обычная переменная которая хранит АДРЕС. У нас есть переменные, которые хранят числа, которые хранят буквы, которые хранят строки. А теперь просто появились переменные, которые хранят адрес.


Что бы ОБЪЯВИТЬ указатель, достаточно указать перед именем переменной звездочку. Это даст понять, что в этой переменной вы будете хранить адрес определенного типа. На самом деле хранение в памяти значений намного сложнее, поэтому компилятору надо знать тип хранимого адреса, что бы правильно его получить из памяти.


Для работы с указателем используются две новые операции.

& - взятие адреса у какой-либо переменной

* - получение значение по адресу в указателе

Как начать понимать указатели Указатель, Память, Программирование, C++, Длиннопост

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


Удачи в обучении.

Показать полностью 3

Язык программирования C иностранным языком не признали. Окончание.

Для жаждущих продолжения =)

В продолжении http://pikabu.ru/story/programmistyi_na_c__samyiy_bolshoy_ra...

и http://pikabu.ru/story/yazyik_programmirovaniya_c_inostranny...


В конечном итоге сегодня суд постановил:

"Оставить решение суда без изменения, жалобу без удовлетворения".

Антимонопольная служба с апелляцией обломалась, суд остался на стороне организации и ЯП "С++" иностранным языком не признал, а многие надеялись ;)

Язык программирования C иностранным языком не признали. Окончание. C++, Программирование, Суд

Заметка Неуча "Об постфиксной и префиксная формах инкрементов в C++"

Инкремент (i++) эта такая фиговина, которая:

увеличивает вашу переменную без регистрации и смс ©Jereli

И это круто, но не без детских грабель, а точнее следует отличать постфиксную (i++) и префиксную (++i) формы.


PS: К слову, декремент (i--), он как инкремент, только наоборот – не дает, а отбирает. Так, что и грабли у них, если не одинаковые, то бьют по одному и тому же месту.


Для наглядности рассмотрим все на примере двух задач.

Задача 1.

Даны переменная X(=5), переменная Y (=0). Выполнить для Y присвоение инкремента X.

Сценарий 1: i++ (Постфиксная форма)

Заметка Неуча "Об постфиксной и префиксная формах инкрементов в C++" C++, Обучение, Заметки, Для чайников, Длиннопост

Как видно из скриншота, сначала произошло присвоение для Y, а уже потом увеличение X.

Вывод: i++ сначала передает свое значение, а уже потом изменяет его.

Сценарий 2: ++i (Префиксная форма)

Заметка Неуча "Об постфиксной и префиксная формах инкрементов в C++" C++, Обучение, Заметки, Для чайников, Длиннопост

Как видно из скриншота, сначала произошло увеличение X, а уже потом присвоение для Y.

Вывод: ++i сначала изменяет свое значение, а уже потом передает.

Идем дальше!

Задача 2.

Даны переменная X(=5), переменная Y (=5), а также переменная результата Z(=0). Выполнить для Z сумму инкрементов X и Y.

Сценарий 1: i++ (Постфиксная форма)

Заметка Неуча "Об постфиксной и префиксная формах инкрементов в C++" C++, Обучение, Заметки, Для чайников, Длиннопост

Z = 10, при слагаемых X=Y=6. ИМХО, это не правильно, так что переходим ко второму сценарию.

Сценарий 2: ++i (Префиксная форма)

Заметка Неуча "Об постфиксной и префиксная формах инкрементов в C++" C++, Обучение, Заметки, Для чайников, Длиннопост

А тут, как и ожидалось, Z=12.

На примере таких нехитрых (по заверениям далеких от реальных условий) задач мы увидели очевидное отличие в работе постфиксной и префиксной формах инкремента.

Как говорится: "пусть за меня говорят цифры".


Отдельно стоит уточнить и такой важный технический момент - при постфиксной форме инкремента создается вспомогательный объект-копия i, потом увеличивается значение i, и уже после всего этого безобразия далее передается копия.

Что это значит? А черт его знает, я ж Неуч!

Но напрягая серое вещество, могу подчеркнуть два момента:

1. Под копию выделяется дополнительная память, т.е. ее будет нужно больше, чем при префиксной форме.

2. При вычислении будет сделано больше операций, а следовательно потребуется больше тактов процессора.

PS2: А еще есть операция присвоения «A += 2», она аналогична записи «A = A + 2», т.е. мы сами выбираем на сколько увеличить переменную (в примере на 2). В этом случае присвоение происходит по второму сценарию.

С уважением, Ваш Неуч.

Показать полностью 3

В Питере шаверма и мосты, в Казани эчпочмаки и казан. А что в других городах?

Мы постарались сделать каждый город, с которого начинается еженедельный заед в нашей новой игре, по-настоящему уникальным. Оценить можно на странице совместной игры Torero и Пикабу.

Реклама АО «Кордиант», ИНН 7601001509

Заметка Неуча "О циклах в C++"

Циклы, это такая крайне полезная фиговина, дающая возможность упорно двигаться к результату.

PS: Применительно не только к C++.

Заметка Неуча "О циклах в C++" C++, Заметки, Обучение, Для чайников

Цикл FOR - когда вы наверняка сколько раз надо "сделать дело", чтобы "гулять смело".

Что делает: объявляет старт счетчика (в примере и сам "счетчик"), условие его остановки, и шаг с которым он тикает, а уже после выполняет "ВАШИ БЕЗУМНЫЕ КОМАНДЫ".


Его можно использовать, например, для чтения или наполнения массива типа char. Ну или просто заставить эту тупую железяку сосчитать до 1000.

Заметка Неуча "О циклах в C++" C++, Заметки, Обучение, Для чайников

Цикл WHILE - когда вы сначала ставите цель, а потом упорно к ней стремитесь.

Что делает: объявляет условие для остановки и начинает выполнять "ВАШИ БЕЗУМНЫЕ КОМАНДЫ" до тех пор пока это условие не будет достигнут.


Тут надо очень ясно понимать, что пока условие не достигнуто - цикл не окончится. В примере, все упирается в счетчик, и он увеличивается на 1 в конце каждого прогона цикла.

Заметка Неуча "О циклах в C++" C++, Заметки, Обучение, Для чайников

Цикл DO...WHILE - когда вы сначала делаете, потом думаете, и опять делаете, пока не выясняется, что хватит.

Что делает: сначала выполняет "ВАШИ БЕЗУМНЫЕ КОМАНДЫ", потом сверяет их с ожидаемым результатом, и если не сходится, то вновь выполняет "ВАШИ БЕЗУМНЫЕ КОМАНДЫ".


Ключевое отличие, что в отличии от обычного while, тут ваши команды в любом случае выполняться хотя бы раз.

С уважением, Ваш Неуч.

Показать полностью 1
Отличная работа, все прочитано!