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

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

63 поста 4 766 подписчиков

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

Язык программирования 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

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

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

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

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

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

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


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

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

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

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


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

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

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

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


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

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

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

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

В продолжении вялотекущего судебного разбирательства  http://pikabu.ru/story/programmistyi_na_c__samyiy_bolshoy_ra...

Думаю некоторым будет интересно, что же там происходит:)

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

По итогу 02.06.2016 суд решил признать незаконным решение ФАС.


Из приведенных заключений экспертов следует, что изображение, размещенное обществом на рекламном баннере, не является надписью или текстом на иностранном языке, а представляет собой фрагмент кода компьютерной программы, выполненной на языке программирования С++


С полным текстом решения можно ознакомится тут http://kad.arbitr.ru/PdfDocument/0235635f-01ce-4589-aaff-fe8...


Но антимонопольная служба так просто не сдается и подала апелляцию.  Следующее заседание назначено на 03.08.2016.

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

Реализация кортежа на C++11

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

В языке Python кортеж является стандартным типом данных и позволяет делать вот так:

Реализация кортежа на C++11 Программирование, Языки программирования, C++, Длиннопост

Но Python использует динамическую типизацию, а в C++ типизация статическая. Как же создать подобную структуру и не сломать систему типов? Используем C++11 и одну и главных особенностей этого стандарта — шаблоны с переменным числом аргументов (variadic templates).

Обычные шаблоны используются в C++ повсеместно, большинству они знакомы. Шаблоны с переменным числом аргументов позволяют передавать произвольное число параметров в шаблон. Вот небольшой пример, демонстрирующий эту возможность языка:

Реализация кортежа на C++11 Программирование, Языки программирования, C++, Длиннопост

Теперь, собственно, реализация кортежа. Для этого мы воспользуемся рекурсивным наследованием структур. Так выглядит объявление структуры:

Реализация кортежа на C++11 Программирование, Языки программирования, C++, Длиннопост

Также нам понадобится вспомогательная структура, позволяющая получить тип элемента по его индексу и тип оставшейся части кортежа:

Реализация кортежа на C++11 Программирование, Языки программирования, C++, Длиннопост

Теперь мы можем написать функцию доступа к элементу по его индексу:

Реализация кортежа на C++11 Программирование, Языки программирования, C++, Длиннопост

Конечно, сам кортеж и доступ — это хорошо, но мы же хотим его создавать! Для этого сперва реализуем заполнение кортежа.

Реализация кортежа на C++11 Программирование, Языки программирования, C++, Длиннопост

Теперь легко реализовать и функцию создания кортежа. Почему не конструктор? В нем не работает автоматическое выведение типов, а мы же не хотим писать огромный список параметров ;)

Реализация кортежа на C++11 Программирование, Языки программирования, C++, Длиннопост

Ну и напоследок демонстрация того, что у нас получилось. Распаковку и групповое присваивание пока не демонстрирую, и так достаточно кода :P

Реализация кортежа на C++11 Программирование, Языки программирования, C++, Длиннопост

P.S. Не судите строго — это мой первый пост. Возможно тема покажется сложной, я не привожу здесь подробное объяснение. Пишите в комментарии что не понятно, постараюсь ответить.

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

Советы падаванам C++ ( Часть 2 )

///////////////////////////////////////////////////

// Начальный курс создания компьютерных игр на C/C++

[0][1][2][2.5][3][4][5][5.5][6][6.2][7][7.2][8][9][9.2][10]

///////////////////////////////////////////////////

// Советы падаванам C++

[1]



Всем привет! :]


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

Сегодня в рубрике "Советы падаванам C++" у нас будут советы-привычки - те вещи, к которым нужно привыкнуть как можно раньше и использовать каждый день :]

Советы падаванам C++ ( Часть 2 ) Программирование, Курсы программирования, Обучение, C++, Dansken, Длиннопост
Советы падаванам C++ ( Часть 2 ) Программирование, Курсы программирования, Обучение, C++, Dansken, Длиннопост
Советы падаванам C++ ( Часть 2 ) Программирование, Курсы программирования, Обучение, C++, Dansken, Длиннопост
Советы падаванам C++ ( Часть 2 ) Программирование, Курсы программирования, Обучение, C++, Dansken, Длиннопост

Жду ваши отзывы в комментариях :]


И вот вам в тему пару весёлых картинок напоследок:

Советы падаванам C++ ( Часть 2 ) Программирование, Курсы программирования, Обучение, C++, Dansken, Длиннопост
Советы падаванам C++ ( Часть 2 ) Программирование, Курсы программирования, Обучение, C++, Dansken, Длиннопост
Показать полностью 6

Советы падаванам C++ ( Часть 1 )

///////////////////////////////////////////////////

// Начальный курс создания компьютерных игр на C/C++

[0][1][2][2.5][3][4][5][5.5][6][6.2][7][7.2][8][9][9.2][10]


Всем привет! :]


Количество подписчиков в группе перевалило за отметку 256, а значит нужно их чем-то порадовать. :) На полноценные посты об играх у меня сейчас к сожалению нет времени, поэтому попробую себя в новом формате. Встречайте новую рубрику мини-постов "Советы падаванам C++"! :]

Советы падаванам C++ ( Часть 1 ) Программирование, Курсы программирования, Обучение, C++, Dansken, Длиннопост
Советы падаванам C++ ( Часть 1 ) Программирование, Курсы программирования, Обучение, C++, Dansken, Длиннопост
Советы падаванам C++ ( Часть 1 ) Программирование, Курсы программирования, Обучение, C++, Dansken, Длиннопост
Советы падаванам C++ ( Часть 1 ) Программирование, Курсы программирования, Обучение, C++, Dansken, Длиннопост

P.S. Первый блин может быть комом, поэтому напишите пожалуйста в комментариях ваши мнения, пожелания и жалобы. Cya! :)

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