Курсы по Java для новичков
677 subscribers
67 photos
1 video
4 files
74 links
Я Оксана Еськова - преподаватель Вуза с 20-летним стажем.
Научу писать код на Java c нуля.
Курсы c автоматической проверкой задач: https://stepik.org/users/23008752
Все вопросы сюда 👉 @aksana_yaskova
Download Telegram
Дорогие друзья! С наступающим Новым Годом и Рождеством!
Желаю Вам в 2024:
• чтобы учеба приносила радость и удовольствие;
• чтобы трудности закаляли, а не приносили отчаяние;
• чтобы мечты сбывались;
• и рядом были родные и любимые!
А в качестве подарка от меня - промокод NEWYEAR на скидку 15% на все мои платные курсы:
Основы программирования на С/C++
Основы программирования на С/С++. Часть 2
Объектно-ориентированное программирование на Java
Промокод действует до 8 января 2024 года. Хочу напомнить, что Вы можете купить курс в подарок другу, коллеге или ребенку. И это хороший повод напомнить о своем добром отношении, даже если Вы далеко...
👍3
В преддверии праздника не хочется говорить о серьезном… Поэтому Вот Вам для настроения подборка анекдотов про программистов:
***
Жена посылает мужа—программиста в магазин:
— Купи батон колбасы. Да, и спроси, есть ли яйца. Если есть — возьми десяток.
Программист приходит в магазин:
— Батон колбасы, пожалуйста. Ага, спасибо. А яйца у вас в продаже есть?
— Есть.
— Тогда, пожалуйста, ещё девять батонов колбасы.
***
Программист решил занять у друга 1000 рублей, но для ровного счёта занял 1024.
***
Приходит программист к окулисту. Тот его усаживает напротив таблицы, берет указку:
- Читайте!
- "БНОПНЯ"... Доктор, у вас что-то не то с кодировкой!
***
1 монитор - обычный программист, 2 монитора - продвинутый программист, 3 монитора - системный программист, 4 монитора – охранник
***
Объявление: 55—летняя женщина, мать троих программистов, просит кого-нибудь не психованного научить ее интернету.
👍8
Тут задачку подкинули в комментариях...Решать ее можно по-разному. Например, переписывать в новый массив то, что должно остаться… Но я предлагаю вариант изменения того же самого массива, но в конце тогда остаются не используемые ячейки. Переменная 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
Друзья! Поговорим сегодня о переводе целых чисел из одной системы счисления в другую… Очень полезный навык для программиста!
2👍1
Мы с Вами привыкли пользоваться десятичной системой счисления.
В ней десять цифр от 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 из десятичной в двоичную, восьмеричную и шестнадцатеричную системы счисления!
👍2
Когда вырастила сына-программиста, а он привез тебя в Париж!
🔥156👍2
Я всегда говорила о том, что хотеть быть программистом нужно не ради денег... Это занятие должно сильно нравиться, иначе не преуспеть. Но все же, все же... Эта профессия дает многие возможности, которые в других сферах достичь гораздо сложнее! Позаботиться о детях, родителях, любимых - это ли не достойная цель? Идите к ней! И когда совсем лень и напала прокрастинация - пусть эта мысль Вам поможет...
8
Осенью на Степике проводили опрос учеников о их целях. И оказалось, что 13,6% людей учатся потому, что им нравится сам процесс обучения… Я сначала подумала: “Ну не может быть! “ Все-таки это слишком большой процент учеников, а Степик не использует ни геймификацию, ни edutainment (вот Вам новое слово!)
Но потом поймала себя на мысли – а я ведь тоже получаю удовольствие от учебы! И главный фактор этого удовольствия – возможность почувствовать победу… Когда задача, наконец, решилась! Когда то, что было темно и запутанно, стало ясным и простым!
И дело тут не в забавных персонажах, как в 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.
👍5
4. Кей Хорстманн. Библиотека профессионала. Том 1 “Основы” и том 2 “Расширенные средства программирования”. Издательство “Диалектика” , 2020
После изучения основ тем или иным способом – переходим к Хорстманну! Соответствует Java 11. Здесь побольше, чем просто основы: создание графических интерфейсов, работа в сети, формирование профессионального стиля программирования. Эту книгу использую по надобности. Тоже must have!

5. Блинов И.Н., Романчик В.С. Java. Методы программирования. Минск : издательство «Четыре четверти», 2013
Это учебник EPAM по Java. Начинать с него не стоит. Довольно труден для восприятия. Но “шлифануть” и проверить свои знания – самое то! Если Вы прочли Блинова и все поняли – считайте, что Вы готовый junior! А также рекомендую как программу обучения. Минус – ориентировано на Java 7, возможно немного устарело.

Книги по паттернам проектирования

6. Эрик Фримен, Элизабет Фримен, Кэти Сьерра, Берт Бейтс. Паттерны проектирования. Издательство “Питер”, 2021
Легкая и интересная. Обилие иллюстраций. Для начинающих подходит хорошо. Примеры на Java.

7. Э.Гамма, Р.Хелм, Р.Джонсон, Дж.Влиссидес. Паттерны объектно-ориентированного программирования. Издательство “Питер”, 2020
Знаменитая книга “Банды четырех”. Классика. Сложно воспринимается. Примеры на С++.
👍7
Студентам!
Я иногда занимаюсь репетиторством. И вот мне пришлось подтягивать студента одного из Минских вузов. У него были несколько лабораторных, причем в одной лабораторной ему предлагалось описать класс, содержащий информацию о городе. А затем в следующей лабораторной с темой “Наследование классов” предлагалось создать с помощью наследования класс “Отель города”.
Кто мне может сказать, что не так с этим заданием?