Programming for Beginners – это серия курсов по программированию для начинающих на платформе stepik.org. Я помогу Вам сделать комфортный старт в изучении языков С++ или Java. Разберем основы языка и потренируем алгоритмическое мышление.
Постараюсь сделать все возможное, чтобы Вы полюбили программирование так, как люблю его я! 😍.
Переходите по ссылкам и выберите подходящий курс на Степике:
🔖 “Основы языка Java” (Бесплатный)
🔖 “Объектно-ориентированное программирование на Java”
🔖 “Основы программирования на С/С++. Полная версия” (Программа обучения из двух частей)
🔖 Мой канал на YouTube: https://www.youtube.com/@Programming_for_beginners
Для всех подписчиков скидка 10% по промокоду SECRET10.
Для студентов скидка на курс по ООП 25%. Пишите в личку и присылайте фото студенческого билета или другого документа (чтобы подтвердить, что Вы студент).
Важно! Для покупки курсов переходите именно по указанным ссылкам. Это даст мне возможность сэкономить на комиссии платформе. Благодарю за понимание!
Постараюсь сделать все возможное, чтобы Вы полюбили программирование так, как люблю его я! 😍.
Переходите по ссылкам и выберите подходящий курс на Степике:
🔖 “Основы языка Java” (Бесплатный)
🔖 “Объектно-ориентированное программирование на Java”
🔖 “Основы программирования на С/С++. Полная версия” (Программа обучения из двух частей)
🔖 Мой канал на YouTube: https://www.youtube.com/@Programming_for_beginners
Для всех подписчиков скидка 10% по промокоду SECRET10.
Для студентов скидка на курс по ООП 25%. Пишите в личку и присылайте фото студенческого билета или другого документа (чтобы подтвердить, что Вы студент).
Важно! Для покупки курсов переходите именно по указанным ссылкам. Это даст мне возможность сэкономить на комиссии платформе. Благодарю за понимание!
❤4
Дорогие друзья! С наступающим Новым Годом и Рождеством!
Желаю Вам в 2024:
• чтобы учеба приносила радость и удовольствие;
• чтобы трудности закаляли, а не приносили отчаяние;
• чтобы мечты сбывались;
• и рядом были родные и любимые!
А в качестве подарка от меня - промокод NEWYEAR на скидку 15% на все мои платные курсы:
Основы программирования на С/C++
Основы программирования на С/С++. Часть 2
Объектно-ориентированное программирование на Java
Промокод действует до 8 января 2024 года. Хочу напомнить, что Вы можете купить курс в подарок другу, коллеге или ребенку. И это хороший повод напомнить о своем добром отношении, даже если Вы далеко...
Желаю Вам в 2024:
• чтобы учеба приносила радость и удовольствие;
• чтобы трудности закаляли, а не приносили отчаяние;
• чтобы мечты сбывались;
• и рядом были родные и любимые!
А в качестве подарка от меня - промокод NEWYEAR на скидку 15% на все мои платные курсы:
Основы программирования на С/C++
Основы программирования на С/С++. Часть 2
Объектно-ориентированное программирование на Java
Промокод действует до 8 января 2024 года. Хочу напомнить, что Вы можете купить курс в подарок другу, коллеге или ребенку. И это хороший повод напомнить о своем добром отношении, даже если Вы далеко...
👍3
В преддверии праздника не хочется говорить о серьезном… Поэтому Вот Вам для настроения подборка анекдотов про программистов:
***
Жена посылает мужа—программиста в магазин:
— Купи батон колбасы. Да, и спроси, есть ли яйца. Если есть — возьми десяток.
Программист приходит в магазин:
— Батон колбасы, пожалуйста. Ага, спасибо. А яйца у вас в продаже есть?
— Есть.
— Тогда, пожалуйста, ещё девять батонов колбасы.
***
Программист решил занять у друга 1000 рублей, но для ровного счёта занял 1024.
***
Приходит программист к окулисту. Тот его усаживает напротив таблицы, берет указку:
- Читайте!
- "БНОПНЯ"... Доктор, у вас что-то не то с кодировкой!
***
1 монитор - обычный программист, 2 монитора - продвинутый программист, 3 монитора - системный программист, 4 монитора – охранник
***
Объявление: 55—летняя женщина, мать троих программистов, просит кого-нибудь не психованного научить ее интернету.
***
Жена посылает мужа—программиста в магазин:
— Купи батон колбасы. Да, и спроси, есть ли яйца. Если есть — возьми десяток.
Программист приходит в магазин:
— Батон колбасы, пожалуйста. Ага, спасибо. А яйца у вас в продаже есть?
— Есть.
— Тогда, пожалуйста, ещё девять батонов колбасы.
***
Программист решил занять у друга 1000 рублей, но для ровного счёта занял 1024.
***
Приходит программист к окулисту. Тот его усаживает напротив таблицы, берет указку:
- Читайте!
- "БНОПНЯ"... Доктор, у вас что-то не то с кодировкой!
***
1 монитор - обычный программист, 2 монитора - продвинутый программист, 3 монитора - системный программист, 4 монитора – охранник
***
Объявление: 55—летняя женщина, мать троих программистов, просит кого-нибудь не психованного научить ее интернету.
👍8
Хороший повод применить метод нисходящего проектирования…
1 шаг. Расписываем в общих чертах алгоритм, заменяя комментариями не детализированные фрагменты:
for (int i = 0; i < n; i++) { //i - индекс очередного анализируемого числа
bool find = false;
//проверить, есть ли в массиве ранее такое число
if (find) { //есть
//удалить из массива все такие числа далее после i
}//если нет - ничего не делаем, переходим к следующему
}
Здесь лучше было бы использовать не for, а while. Ведь ограничитель цикла n будет изменяться, а это плохо для цикла for. Обычно for используется тогда, когда число повторений цикла известно заранее. Но в условии было именно for, поэтому оставим так….
2 шаг. Детализируем первый комментарий:
//проверить, есть ли в массиве ранее такое число
for (int j = 0; j < i; j++) { //j - индекс очередного элемента перед i
if (arr[j] == arr[i]) {
find = true;
}
}
3 шаг. Детализируем второй комментарий:
//удалить из массива все такие числа далее после i
for (int k = i + 1; k < n; k++) { //k - индекс очередного элемента после i
if (arr[k] == arr[i]) {//число найдено
//удаляем k-й элемент из массива
k--; //чтобы остаться на месте, когда k будет увеличиваться
n--; //число элементов стало меньше
}
}
4 шаг. Детализируем удаление k-го элемента:
//удаляем k-й элемент из массива
for (int m = k + 1; m < n; m++) {//m - индекс элемента после удаляемого
arr[m - 1] = arr[m]; //следующий подвигаем на место предыдущего
}
5 шаг. Собираем все вместе и – вуаля:
for (int i = 0; i < n; i++) { //i - индекс очередного анализируемого числа
bool find = false;
//проверить, есть ли в массиве ранее такое число
for (int j = 0; j < i; j++) { //j - индекс очередного элемента перед i
if (arr[j] == arr[i]) {
find = true;
}
}
if (find) { //есть
//удалить из массива все такие числа далее после i
for (int k = i + 1; k < n; k++) { //k - индекс элемента после i
if (arr[k] == arr[i]) {//число найдено
//удаляем k-й элемент из массива
for (int m = k + 1; m < n; m++) {//m - после удаляемого
arr[m - 1] = arr[m]; //след. на место предыдущего
}
k--; //чтобы отаться на месте, когда k будет увеличиваться
n--; //число элементов стало меньше
}
}
}//если нет - ничего не делаем, переходим к следующему
}
1 шаг. Расписываем в общих чертах алгоритм, заменяя комментариями не детализированные фрагменты:
for (int i = 0; i < n; i++) { //i - индекс очередного анализируемого числа
bool find = false;
//проверить, есть ли в массиве ранее такое число
if (find) { //есть
//удалить из массива все такие числа далее после i
}//если нет - ничего не делаем, переходим к следующему
}
Здесь лучше было бы использовать не for, а while. Ведь ограничитель цикла n будет изменяться, а это плохо для цикла for. Обычно for используется тогда, когда число повторений цикла известно заранее. Но в условии было именно for, поэтому оставим так….
2 шаг. Детализируем первый комментарий:
//проверить, есть ли в массиве ранее такое число
for (int j = 0; j < i; j++) { //j - индекс очередного элемента перед i
if (arr[j] == arr[i]) {
find = true;
}
}
3 шаг. Детализируем второй комментарий:
//удалить из массива все такие числа далее после i
for (int k = i + 1; k < n; k++) { //k - индекс очередного элемента после i
if (arr[k] == arr[i]) {//число найдено
//удаляем k-й элемент из массива
k--; //чтобы остаться на месте, когда k будет увеличиваться
n--; //число элементов стало меньше
}
}
4 шаг. Детализируем удаление k-го элемента:
//удаляем k-й элемент из массива
for (int m = k + 1; m < n; m++) {//m - индекс элемента после удаляемого
arr[m - 1] = arr[m]; //следующий подвигаем на место предыдущего
}
5 шаг. Собираем все вместе и – вуаля:
for (int i = 0; i < n; i++) { //i - индекс очередного анализируемого числа
bool find = false;
//проверить, есть ли в массиве ранее такое число
for (int j = 0; j < i; j++) { //j - индекс очередного элемента перед i
if (arr[j] == arr[i]) {
find = true;
}
}
if (find) { //есть
//удалить из массива все такие числа далее после i
for (int k = i + 1; k < n; k++) { //k - индекс элемента после i
if (arr[k] == arr[i]) {//число найдено
//удаляем k-й элемент из массива
for (int m = k + 1; m < n; m++) {//m - после удаляемого
arr[m - 1] = arr[m]; //след. на место предыдущего
}
k--; //чтобы отаться на месте, когда k будет увеличиваться
n--; //число элементов стало меньше
}
}
}//если нет - ничего не делаем, переходим к следующему
}
Пока праздники, балуюсь нейросетями... Пытаюсь создать логотип будущего курса "Java для продолжающих". Ну, Вы знаете - моя фишка - совы. И вот пока что получается... Как Вам? Кстати, одна из них создана по моему фото. Угадаете, какая?
🔥7
Мы с Вами привыкли пользоваться десятичной системой счисления.
В ней десять цифр от 0 до 9. Но “вес” цифры зависит от ее позиции в числе:
235 – это 2 сотни, 3 десятка и 5 единиц.
Количество цифр, которое можно использовать в позиционной системе счисления, называется “основанием”.
Позиции цифр в числе можно мысленно пронумеровать справа налево, начиная с 0. Т.е. крайняя правая позиция имеет номер 0, левее ее – номер 1, еще левее – номер 2, и т.д.
Значение числа получается как сумма произведений цифры на основание системы счисления в степени «номер позиции».
В двоичной системе счисления две цифры: 0 и 1, а основание = 2.
В восьмеричной системе счисления восемь цифр от 0 до 7, а основание = 8.
В шестнадцатеричной системе счисления используются цифры от 0 до 9 и буквы от A до F (т.е. A ->10, B ->11, и т.д. F->15). Основание = 16.
Примеры перевода чисел в десятичную систему счисления показаны на рисунке.
Потренируйтесь сами, переведите в десятичную систему счисления из двоичной:
111 и 10111, из шестнадцатеричной: 27A и 777, из восьмеричной: 33 и 106. Ответы напишите в комментариях…
В ней десять цифр от 0 до 9. Но “вес” цифры зависит от ее позиции в числе:
235 – это 2 сотни, 3 десятка и 5 единиц.
Количество цифр, которое можно использовать в позиционной системе счисления, называется “основанием”.
Позиции цифр в числе можно мысленно пронумеровать справа налево, начиная с 0. Т.е. крайняя правая позиция имеет номер 0, левее ее – номер 1, еще левее – номер 2, и т.д.
Значение числа получается как сумма произведений цифры на основание системы счисления в степени «номер позиции».
В двоичной системе счисления две цифры: 0 и 1, а основание = 2.
В восьмеричной системе счисления восемь цифр от 0 до 7, а основание = 8.
В шестнадцатеричной системе счисления используются цифры от 0 до 9 и буквы от A до F (т.е. A ->10, B ->11, и т.д. F->15). Основание = 16.
Примеры перевода чисел в десятичную систему счисления показаны на рисунке.
Потренируйтесь сами, переведите в десятичную систему счисления из двоичной:
111 и 10111, из шестнадцатеричной: 27A и 777, из восьмеричной: 33 и 106. Ответы напишите в комментариях…
Такой перевод легко сделать, выполняя целочисленное деление на основание другой системы счисления. Если переводим в двоичную систему – делим на 2. В шестнадцатеричную - делим на 16!
Полученное частное опять делим на основание системы счисления, и так до тех пор, пока не получим 0.
После этого все остатки выпишем в обратном порядке:
393 : 16 = 24 (ост 9) 24 : 16 = 1 (ост 8) 1 : 16 = 0 (ост 1) Выписываем остатки в обратном порядке:
393(десятичное) = 189 (шестнадцатеричное)
А теперь потренируйтесь и переведите число 751 из десятичной в двоичную, восьмеричную и шестнадцатеричную системы счисления!
Полученное частное опять делим на основание системы счисления, и так до тех пор, пока не получим 0.
После этого все остатки выпишем в обратном порядке:
393 : 16 = 24 (ост 9) 24 : 16 = 1 (ост 8) 1 : 16 = 0 (ост 1) Выписываем остатки в обратном порядке:
393(десятичное) = 189 (шестнадцатеричное)
А теперь потренируйтесь и переведите число 751 из десятичной в двоичную, восьмеричную и шестнадцатеричную системы счисления!
👍2
Я всегда говорила о том, что хотеть быть программистом нужно не ради денег... Это занятие должно сильно нравиться, иначе не преуспеть. Но все же, все же... Эта профессия дает многие возможности, которые в других сферах достичь гораздо сложнее! Позаботиться о детях, родителях, любимых - это ли не достойная цель? Идите к ней! И когда совсем лень и напала прокрастинация - пусть эта мысль Вам поможет...
❤8
Осенью на Степике проводили опрос учеников о их целях. И оказалось, что 13,6% людей учатся потому, что им нравится сам процесс обучения… Я сначала подумала: “Ну не может быть! “ Все-таки это слишком большой процент учеников, а Степик не использует ни геймификацию, ни edutainment (вот Вам новое слово!)
Но потом поймала себя на мысли – а я ведь тоже получаю удовольствие от учебы! И главный фактор этого удовольствия – возможность почувствовать победу… Когда задача, наконец, решилась! Когда то, что было темно и запутанно, стало ясным и простым!
И дело тут не в забавных персонажах, как в JavaRush. И не в игровом контенте, как в обучалках для маленьких детей. Тут главное – “не спугнуть” естественный интерес. А спугнуть его ой как легко: слишком сложная задача, слишком занудный текст, слишком длинное видео… Но и легкие задачи тоже не вариант – скучно долбить одно и то же, как дятел!
Но потом поймала себя на мысли – а я ведь тоже получаю удовольствие от учебы! И главный фактор этого удовольствия – возможность почувствовать победу… Когда задача, наконец, решилась! Когда то, что было темно и запутанно, стало ясным и простым!
И дело тут не в забавных персонажах, как в JavaRush. И не в игровом контенте, как в обучалках для маленьких детей. Тут главное – “не спугнуть” естественный интерес. А спугнуть его ой как легко: слишком сложная задача, слишком занудный текст, слишком длинное видео… Но и легкие задачи тоже не вариант – скучно долбить одно и то же, как дятел!
👍4
Мои книги по Java
1. Берт Бейтс, Кэти Съерра. Изучаем Java (Head First Java) М.: Эксмо, 2022.
Эту книгу лучше читать в бумажном варианте. Плюсы: легкая и интересная, много картинок. Подходит для новичков, особенно для школьников. Минусы: иногда некорректный перевод, неудачные кроссворды. В целом для знакомства – хорошо, но для подробного изучения Java лучше Эккель или Шилдт.
2. Брюс Эккель. Философия Java (Thinking in Java) 4-е изд. – СПб.: Питер, 2019
Моя первая книга по Java. Плюсы: хорошо объясняется ООП, подходит для старта, вообще классика! Минусы: ориентирована на Java 6, есть неточности перевода (читайте оригинал 😊), лучше подходит для тех, кто уже знаком с С++.
3. Герберт Шилдт. Java. Полное руководство. 12-е издание Издательство “Диалектика”, 2022 (есть еще “Руководство для начинающих”).
Данное издание про Java 17. Плюсы: очень подробно. Минусы: слишком подробно! На мой взгляд: лучше прочесть “Руководство для начинающих”, а потом использовать справочник по Java от Oracle.
1. Берт Бейтс, Кэти Съерра. Изучаем Java (Head First Java) М.: Эксмо, 2022.
Эту книгу лучше читать в бумажном варианте. Плюсы: легкая и интересная, много картинок. Подходит для новичков, особенно для школьников. Минусы: иногда некорректный перевод, неудачные кроссворды. В целом для знакомства – хорошо, но для подробного изучения Java лучше Эккель или Шилдт.
2. Брюс Эккель. Философия Java (Thinking in Java) 4-е изд. – СПб.: Питер, 2019
Моя первая книга по Java. Плюсы: хорошо объясняется ООП, подходит для старта, вообще классика! Минусы: ориентирована на Java 6, есть неточности перевода (читайте оригинал 😊), лучше подходит для тех, кто уже знаком с С++.
3. Герберт Шилдт. Java. Полное руководство. 12-е издание Издательство “Диалектика”, 2022 (есть еще “Руководство для начинающих”).
Данное издание про Java 17. Плюсы: очень подробно. Минусы: слишком подробно! На мой взгляд: лучше прочесть “Руководство для начинающих”, а потом использовать справочник по Java от Oracle.
👍5
4. Кей Хорстманн. Библиотека профессионала. Том 1 “Основы” и том 2 “Расширенные средства программирования”. Издательство “Диалектика” , 2020
После изучения основ тем или иным способом – переходим к Хорстманну! Соответствует Java 11. Здесь побольше, чем просто основы: создание графических интерфейсов, работа в сети, формирование профессионального стиля программирования. Эту книгу использую по надобности. Тоже must have!
5. Блинов И.Н., Романчик В.С. Java. Методы программирования. Минск : издательство «Четыре четверти», 2013
Это учебник EPAM по Java. Начинать с него не стоит. Довольно труден для восприятия. Но “шлифануть” и проверить свои знания – самое то! Если Вы прочли Блинова и все поняли – считайте, что Вы готовый junior! А также рекомендую как программу обучения. Минус – ориентировано на Java 7, возможно немного устарело.
Книги по паттернам проектирования
6. Эрик Фримен, Элизабет Фримен, Кэти Сьерра, Берт Бейтс. Паттерны проектирования. Издательство “Питер”, 2021
Легкая и интересная. Обилие иллюстраций. Для начинающих подходит хорошо. Примеры на Java.
7. Э.Гамма, Р.Хелм, Р.Джонсон, Дж.Влиссидес. Паттерны объектно-ориентированного программирования. Издательство “Питер”, 2020
Знаменитая книга “Банды четырех”. Классика. Сложно воспринимается. Примеры на С++.
После изучения основ тем или иным способом – переходим к Хорстманну! Соответствует Java 11. Здесь побольше, чем просто основы: создание графических интерфейсов, работа в сети, формирование профессионального стиля программирования. Эту книгу использую по надобности. Тоже must have!
5. Блинов И.Н., Романчик В.С. Java. Методы программирования. Минск : издательство «Четыре четверти», 2013
Это учебник EPAM по Java. Начинать с него не стоит. Довольно труден для восприятия. Но “шлифануть” и проверить свои знания – самое то! Если Вы прочли Блинова и все поняли – считайте, что Вы готовый junior! А также рекомендую как программу обучения. Минус – ориентировано на Java 7, возможно немного устарело.
Книги по паттернам проектирования
6. Эрик Фримен, Элизабет Фримен, Кэти Сьерра, Берт Бейтс. Паттерны проектирования. Издательство “Питер”, 2021
Легкая и интересная. Обилие иллюстраций. Для начинающих подходит хорошо. Примеры на Java.
7. Э.Гамма, Р.Хелм, Р.Джонсон, Дж.Влиссидес. Паттерны объектно-ориентированного программирования. Издательство “Питер”, 2020
Знаменитая книга “Банды четырех”. Классика. Сложно воспринимается. Примеры на С++.
👍7
Студентам!
Я иногда занимаюсь репетиторством. И вот мне пришлось подтягивать студента одного из Минских вузов. У него были несколько лабораторных, причем в одной лабораторной ему предлагалось описать класс, содержащий информацию о городе. А затем в следующей лабораторной с темой “Наследование классов” предлагалось создать с помощью наследования класс “Отель города”.
Кто мне может сказать, что не так с этим заданием?
Я иногда занимаюсь репетиторством. И вот мне пришлось подтягивать студента одного из Минских вузов. У него были несколько лабораторных, причем в одной лабораторной ему предлагалось описать класс, содержащий информацию о городе. А затем в следующей лабораторной с темой “Наследование классов” предлагалось создать с помощью наследования класс “Отель города”.
Кто мне может сказать, что не так с этим заданием?