Я тут создаю урок про побитовые операции, и сейчас немного удивляюсь, насколько большим получается текст теории. На данный момент получается свыше 2000 слов, а ведь я ещё не написал разделы про операторы
Урок «Битовые операции» по плану должен содержать следующие темы:
• Список арифметических операций
• Двоичное представление чисел
• Побитовые логические операции:
• Битовый сдвиг:
• Исключающее «ИЛИ» и побитовое XOR:
Сейчас я вижу два варианта решения проблемы большого текста теории:
• Уменьшить часть конспекта про двоичную систему счисления, в итоге оставив эту тему немного нераскрытой
• Вынести её в отдельный урок (тогда придётся рассматривать её подробно и добавлять задачи)
Двоичная с.с. сейчас занимает почти пол-урока и вполне себе является отдельной темой для изучения.
Проблема заключается лишь в том, что какая-то часть людей может не захотеть проходить урок про двоичную с.с. и посчитать эту тему немного тошнотворной. Поэтому оставляю это решение на вас.
&, |, <<, >> и ^.Урок «Битовые операции» по плану должен содержать следующие темы:
• Список арифметических операций
• Двоичное представление чисел
• Побитовые логические операции:
~, & и |• Битовый сдвиг:
<< и >>• Исключающее «ИЛИ» и побитовое XOR:
^Сейчас я вижу два варианта решения проблемы большого текста теории:
• Уменьшить часть конспекта про двоичную систему счисления, в итоге оставив эту тему немного нераскрытой
• Вынести её в отдельный урок (тогда придётся рассматривать её подробно и добавлять задачи)
Двоичная с.с. сейчас занимает почти пол-урока и вполне себе является отдельной темой для изучения.
Проблема заключается лишь в том, что какая-то часть людей может не захотеть проходить урок про двоичную с.с. и посчитать эту тему немного тошнотворной. Поэтому оставляю это решение на вас.
👍2🕊1
Что вы хотели бы, чтобы я сделал с темой двоичной системы счисления?
Anonymous Poll
91%
Вынес в отдельный урок
9%
Оставил в уроке про битовые операции и немного сократил
🤔5
Я тут заметил, что в мобильной версии приложения Stepik очень неудобно читать условия задания с тёмной темой.
Обычно в заданиях я выделяю
В итоге вот пришла мысль: что если выделять их цветами? В мобильном приложении это должно сделать секции текста заданий более различимыми.
Если в заданиях будет цветовое выделение, то цвета будут одни и те же для разных тем и устройств. На сайте на ПК лично для меня это выглядит достаточно непривычным.
Помните, что если выберете такое выделение, то оно будет во всём курсе, во всех заданиях и тексты заданий будут выглядеть так для всех.
Обычно в заданиях я выделяю
Входные/Выходные данные и Задание полужирным шрифтом, чтобы их было легче найти среди большого и детального текста задания, но с тёмной темой такое выделение почему-то не сильно-то и помогает: текст всё равно превращается в кашу.В итоге вот пришла мысль: что если выделять их цветами? В мобильном приложении это должно сделать секции текста заданий более различимыми.
Если в заданиях будет цветовое выделение, то цвета будут одни и те же для разных тем и устройств. На сайте на ПК лично для меня это выглядит достаточно непривычным.
Что вы думаете насчёт такого выделения?
Помните, что если выберете такое выделение, то оно будет во всём курсе, во всех заданиях и тексты заданий будут выглядеть так для всех.
🤩4👍3
Использовать ли для нового курса выделение текста разными цветами в заданиях?
Anonymous Poll
83%
Да, мне это нравится!
8%
Хорошая идея, но только не с этими цветами.
8%
Нет, это сделает текст заданий блеклым и/или некрасивым
👍3🤔1🙏1
Вы когда-нибудь пользовались указателями?
Язык C++ и программы, написанные на нём, являются очень быстрыми. C++ является очень низкоуровневым языком, что позволяет программистам работать с памятью на самом фундаментальном уровне и тем самым значительно оптимизировать программы.
Одним из инструментов для работы с памятью являются указатели.
Все мы знаем, что каждый байт в памяти компьютера имеет свой адрес. С помощью указателей мы можем получать эти адреса, а также обращаться к памяти через них.
Указатели в C++ с точки зрения типов данных указывают на объекты разных типов, а не на байты. То есть существуют указатели на числа, на символы, на строки, и всё это разные указатели.
Вот, как можно объявить указатель:
Чтобы указатель хранил какой-то адрес, а не, как мы говорим, белиберду, его нужно инициализировать.
Для этого нужно получить адрес объекта, на который должен указывать указатель:
Значок
Мы можем вывести указатель, и тогда выведется адрес переменной
Вывелся адрес в шестнадцатеричном виде. Это тоже число, и мы можем его перевести в десятичный вид (
Теперь мы можем работать с переменной
Таким образом мы продолжаем работать с переменной
Грамотное использование указателей в коде позволяет значительно ускорять программы. Однако для этого требуется достаточно знаний об указателях.
На самом деле указатели – это весьма простая абстракция, которая ложится на фундаментальную работу памяти и немного на систему типов данных в C++. Чтобы хорошо знать указатели, нужно погрузиться в работу памяти, и именно это обычно вызывает все трудности при изучении.
В нашем курсе по C++ для продвинутых, который сейчас находится в разработке, будет освещена тема указателей, так что каждый сможет научиться работать с ними.
#интересные_факты
Язык C++ и программы, написанные на нём, являются очень быстрыми. C++ является очень низкоуровневым языком, что позволяет программистам работать с памятью на самом фундаментальном уровне и тем самым значительно оптимизировать программы.
Одним из инструментов для работы с памятью являются указатели.
Указатель – это числовое значение, обозначающее адреса какого-то значения в памяти.
Все мы знаем, что каждый байт в памяти компьютера имеет свой адрес. С помощью указателей мы можем получать эти адреса, а также обращаться к памяти через них.
Указатели в C++ с точки зрения типов данных указывают на объекты разных типов, а не на байты. То есть существуют указатели на числа, на символы, на строки, и всё это разные указатели.
Вот, как можно объявить указатель:
// Указатель на объект типа int
int* pointer;
// «pointer» переводится как «указатель»
Чтобы указатель хранил какой-то адрес, а не, как мы говорим, белиберду, его нужно инициализировать.
Для этого нужно получить адрес объекта, на который должен указывать указатель:
int number = 3;
int* pointer = &number;
Значок
& означает, что мы берём адрес объекта (числа), который хранится в переменной number.Мы можем вывести указатель, и тогда выведется адрес переменной
number:cout << pointer; // -> 0x7ffee4981224
Вывелся адрес в шестнадцатеричном виде. Это тоже число, и мы можем его перевести в десятичный вид (
140732733592100), но обычно адреса записываются именно в шестнадцатеричном виде, ведь так удобнее. Теперь мы можем работать с переменной
number через этот указатель:// *pointer - это получение указываемого объекта
// т.е. получение переменной number
cout << *pointer << endl // -> 3
<< number << endl; // -> 3
// Изменяем number через указатель
*pointer = 13;
cout << *pointer << endl // -> 13
<< number << endl; // -> 13
Таким образом мы продолжаем работать с переменной
number, просто используем для этого её адрес, а не саму переменную.Грамотное использование указателей в коде позволяет значительно ускорять программы. Однако для этого требуется достаточно знаний об указателях.
Нееет! Опять эти сложные и непонятные указатели!
На самом деле указатели – это весьма простая абстракция, которая ложится на фундаментальную работу памяти и немного на систему типов данных в C++. Чтобы хорошо знать указатели, нужно погрузиться в работу памяти, и именно это обычно вызывает все трудности при изучении.
В нашем курсе по C++ для продвинутых, который сейчас находится в разработке, будет освещена тема указателей, так что каждый сможет научиться работать с ними.
#интересные_факты
🔥6👍3🤩2❤🔥1
Как же всё-таки прекрасно, когда твой курс проходит настолько много великолепных людей. Весь курс пройдут и на все ошибки укажут, безумные решения придумают и в конце концов отзыв оставят.
❤6🆒1
Вы когда-нибудь слышали о
С помощью спецификатора
Мы должны указывать слово
Можно сказать, что
При объявлении
Мы можем выносить некоторые "магические числа" в отдельные переменные, улучшая читаемость кода.
Людям, которые плохо знакомы с математикой, может быть неясно, что такое
Лучше переписать этот код через
Теперь сразу становится понятно, что этот код вычисляет длину окружности через радиус.
Вынося "магические числа" в
Спецификатор
• Защитить переменные от случайного изменения
• Увеличить понятность кода засчёт вынесения магических чисел
• Прояснять назначение некоторых переменных, например, численных идентификаторов
Также
#интересные_факты
const в C++?С помощью спецификатора
const мы можем пометить, что объявляемая переменная не будет изменяться. Так любая операция изменения переменной приведёт к ошибке.Сокращение const происходит от constant - постоянный
Мы должны указывать слово
const в типе данных переменной:const int number = 15;
const float pi = 3.14;
Можно сказать, что
number имеет тип const int, а pi – const double. Слово const влияет на поведение значения переменной, а не самой переменной, поэтому оно является частью типа данных.const int length = 13;
length = 15; // ошибка
// нельзя изменять const переменные
cin >> length; // тоже ошибка
// cin присваивает length новое значение
// а это не вызовет ошибки
int new_length = length + 2;
// здесь мы не меняем значение length
При объявлении
const переменных их обязательно сразу инициализировать:const int number; // Ошибка
// нужно сразу инициализировать const переменную
Мы можем выносить некоторые "магические числа" в отдельные переменные, улучшая читаемость кода.
float radius;
cin >> radius;
float length = 6.28 * radius
cout << length;
Людям, которые плохо знакомы с математикой, может быть неясно, что такое
6.28. Ведь это просто магическое число, которое, казалось бы, не имеет никакого смысла.Лучше переписать этот код через
const переменные:const float pi = 3.14;
float radius;
cin >> radius;
float length = 2 * pi * radius
cout << length;
Теперь сразу становится понятно, что этот код вычисляет длину окружности через радиус.
Вынося "магические числа" в
const переменные, мы можем значительно увеличить понятность кода.Спецификатор
const позволяет:• Защитить переменные от случайного изменения
• Увеличить понятность кода засчёт вынесения магических чисел
• Прояснять назначение некоторых переменных, например, численных идентификаторов
Также
const переменные могут быть оптимизированы компилятором. В C++ при автоматической оптимизации кода часть операций производится на этапе компиляции, поэтому const переменные иногда могут быть удалены из скомпилированной программы.#интересные_факты
🤓2❤1👍1🔥1
Я, конечно, всё понимаю, но 35 уведомлений за сутки – это уже перебор.
Одно дело разгребать недельный запас в 100 комментариев и решений, а другое – получать по 35 штук каждый день. Курсы по программированию просто убивают💀
Одно дело разгребать недельный запас в 100 комментариев и решений, а другое – получать по 35 штук каждый день. Курсы по программированию просто убивают
Please open Telegram to view this post
VIEW IN TELEGRAM
😁7❤1🤯1🍓1
Основы программирования на С++
Я тут заметил, что в мобильной версии приложения Stepik очень неудобно читать условия задания с тёмной темой. Обычно в заданиях я выделяю Входные/Выходные данные и Задание полужирным шрифтом, чтобы их было легче найти среди большого и детального текста задания…
Любые радикальные, странные и возможно фриковые изменения в любом продукте требуют тестирования.
Я чутка изменил насыщенность и яркость цветов и принёс новое цветовое выделение в урок «Массивы в циклах».
Попробуйте заново для себя пройти несколько заданий из этого урока с новым цветовым выделением.
Если вдруг вам не понравится новое цветовое выделение или наоборот вы будете в восторге, напишите нам об этом! Можно в комментариях к этому посту, можно на платформе Stepik, главное – выскажите любые ваши мысли по этому поводу.
Если вам очень понравится, весь курс по основам и весь следующий курс будут иметь такое выделение в текстах заданий.
Я решил использовать цвета в тексте, поскольку заметил, что на мобильных устройствах текста заданий выглядят какими-то ну очень монотонными: в них вообще не заметен полужирный текст. Поэтому попробуйте пройти задания в том числе из приложения на мобильном устройстве.
Я чутка изменил насыщенность и яркость цветов и принёс новое цветовое выделение в урок «Массивы в циклах».
Попробуйте заново для себя пройти несколько заданий из этого урока с новым цветовым выделением.
Нам нужен ваш фидбек!
Если вдруг вам не понравится новое цветовое выделение или наоборот вы будете в восторге, напишите нам об этом! Можно в комментариях к этому посту, можно на платформе Stepik, главное – выскажите любые ваши мысли по этому поводу.
Если вам очень понравится, весь курс по основам и весь следующий курс будут иметь такое выделение в текстах заданий.
Я решил использовать цвета в тексте, поскольку заметил, что на мобильных устройствах текста заданий выглядят какими-то ну очень монотонными: в них вообще не заметен полужирный текст. Поэтому попробуйте пройти задания в том числе из приложения на мобильном устройстве.
🔥2🤔2👍1
Вы же помните, какие есть математические функции в C++?
Мы рамках нашего курса мы изучили одну замечательную функцию, которая превращает все поданные целые числа в положительные. Этой функцией была
При вызове
Однако существуют в C++ ограничения, которые лежат немного выше этой функции…
Этот пример кода как раз столкнётся с этими ограничениями:
Мы рамках нашего курса мы изучили одну замечательную функцию, которая превращает все поданные целые числа в положительные. Этой функцией была
abs.Функция abs возвращает модуль числа или его абсолютное значение
При вызове
abs(5) она вернёт 5, а при вызове abs(-13) она вернёт 13. Абсолютно любое переданное ей отрицательное число теряет знак и становится положительным.Однако существуют в C++ ограничения, которые лежат немного выше этой функции…
Этот пример кода как раз столкнётся с этими ограничениями:
int number = -2147483648;
cout << abs(number);
Как вы думаете, что выведет приведённый выше код?
Anonymous Quiz
55%
Число 2147483648
14%
Ошибку
12%
Число -2147483648
18%
Число 0
🤔9😱2