Основы программирования - Крестики-нолики

Категория: Java Standart Edition
- 15 уроков
- Длительность: 11:40:21
- Исходный код
- Обзор результата
- UI макеты
- 23561 просмотр
Описание курса
Данный курс предназначен для изучения основ программирования: введение в алгоритмизацию, принципов языков программирования высокого уровня, основных выражений и операторов, знакомство с итеративными и рекурсивными алгоритмами, алгоритмами сортировки и поиска и практического освоения теоретических знаний на примере реализации игры "Крестики-нолики".
Основы программирования изучаются на примере языка Java. На каждом уроке Вам выдается домашнее задание, которое нужно выполнить для закрепления пройденного материала. На каждом последующем занятии выполняется проверка домашнего задания с объяснением как оно должно было быть выполнено. В течение всего курса изучаются разделы, необходимые для реализации игры "Крестики-нолики" и на последнем занятии полностью разбирается данная игра с предоставлением всего кода.
После прохождения курса Вам предлагается выполнить самостоятельное задание: на основе знаний и навыков, полученных в рамках данного курса создать приложение - игру "Гомоку" (крестики-нолики на поле размером 15x15). Если Вы внимательно прослушали курс и выполняли все домашние задания, Вы сможете самостоятельно реализовать данное приложение. На последнем занятии Вам будет предоставлен шаблон игры - графическая оболочка с обработкой действий пользователя - Вам необходимо будет лишь реализовать алгоритм хода компьютера и проверки победителя. (Для создания графического интерфейса необходимы знания, выходящие за рамки данного курса). Таким образом данный курс для Вас завершится закреплением навыков по реализации сложных алгоритмов с помощью компьютера на примере самостоятельной реализации логики игры "Гомоку".
Курс ориентирован на людей, которые не знакомы с программированием и которые собираются начать работать в этой области.
Основной цель данного курса является предоставить возможность всем желающим, которые хотят начать изучать программирование, попробовать свои силы в IT и узнать интересно ли Вам данное направление. Если Вы написали приложение и Вам понравилось, Вам обязательно стоит развиваться в данном направлении!
Знания и опыт полученные в рамках данного курса будут необходимы для дальнейшего изучения Java в курсе Основы Java SE - HTTP сервер (P.S. Кроме того в курсе Основы Java SE - HTTP сервер рассматривается реализация игры Гомоку, используя возможности объектно ориентированной Java и алгоритм поиска комбинаций по трафарету).
Для получения дополнительной информации по теме данного курса, рекомендуем следующие источники информации:
- Томас Х. Кормен, Алгоритмы. Вводный курс (Algorithms Unlocked) - М.:Вильямс, 2016. - 208 с. - ISBN 978-5-8459-1868-0, 978-5-8459-2073-7
- Томас Х. Кормен, Алгоритмы. Построение и анализ (Introduction to Algorithms) - М.:Вильямс, 2016. - 1328 с. - ISBN 978-5-8459-2016-4
- Роберт Лафоре, Структуры данных и алгоритмы в Java (Data Structures & Algorithms in Java) - СПб.:Питер, 2016. - 704 с. - ISBN 978-5-496-00740-5 [Главы 1, 2, 3, 6, 7, 15]
- Герберт Шилдт, Java. Руководство для начинающих (Java: A Beginners Guide) - М.:Вильямс, 2016 - 720 с. - ISBN 978-5-8459-1955-7 [Главы 1, 2, 3]
- Брюс Эккель, Философия Java (Thinking in Java (4th Edition)) - СПб.:Питер, 2016 - 1168 с. - ISBN 978-5-496-01127-3 [Главы 3, 4]
В рамках данного курса Вы научитесь
- Создавать корректные алгоритмы для решения любой задачи;
- Работать с консолью: считывать исходные данные и выводить результат;
- Использовать условные операторы и операторы циклов;
- Писать итеративные и рекурсивные алгоритмы;
- Работать с методами (функциями), массивами данных и строками;
- Понимать отличие консольных программ от программ с графическим интерфейсом;
- Понимать принцип работы языков программирования и компьютерных программ;
- Разрабатывать алгоритмы для простых игр.
Для успешного прохождения курса необходимо
- Базовые знания работы с компьютером в режиме пользователя;
- Умение пользоваться текстовыми редакторами и браузерами.
План курса
-
1Компьютерная программа
Длительность урока: 30:36
- Определение компьютерной программы;
- Составляющие решения любой задачи;
- Структура компьютерной программы;
- Выполнение программы;
- Окружение программы. Назначение операционных систем;
- Виды операционных систем;
- Интерфейс командной строки (Консоль или Терминал);
- Консольные программы и их жизненный цикл;
- Программы с графическим интерфейсом (GUI);
- Жизненный цикл программ с графическим интерфейсом (GUI);
- GUI или консольные программы;
- Резюме по типам программ;
- Выводы;
-
2Алгоритм. Свойства алгоритма.
Длительность урока: 33:27
- Определение алгоритма;
- Пример алгоритма покупки хлеба;
- Виды алгоритмов;
- Способы представления алгоритмов;
- Альтернативный алгоритм покупки хлеба;
- Свойства алгоритмов:
- Дискретность;
- Завершенность (конечность);
- Детерминированность (определённость);
- Понятность;
- Массовость (универсальность);
- Оценка сложности алгоритма;
- Выводы;
-
3Языки программирования
Длительность урока: 59:56
- Определение языка программирования;
- Краткий обзор систем счисления;
- Машинный код;
- Язык ассемблера;
- Ассемблер;
- Демонстрация создания программы на языке ассемблера;
- Запуск простейшей программы в эмуляторе MS-DOS;
- Языки высокого уровня;
- Типы языков высокого уровня;
- Компилятор, процесс компиляции на примере языка C;
- Этапы процесса компиляции;
- Демонстрация создания программы на языке C;
- Интерпретатор на примере языка JavaScript;
- Демонстрация создания программы на языке JavaScript;
- Сравнение интерпретаторов и компиляторов;
- Технология Java: компилятор + интерпретатор;
- Варианты выполнения кода процессором;
- Язык высокого уровня Java;
- JDK vs JRE;
- Установка JDK на операционную систему семейства Windows (JRE будет установлено автоматически);
- Проверка корректности установки Java на Windows;
- Установка среды разработки Eclipse на операционную систему семейства Windows;
- Настройка среды разработки Eclipse;
- Создание простого проекта в среде разработки Eclipse;
- Создание первого проекта Hello World;
- Структура кода проекта Hello World;
- Описание правил работы с github;
- Демонстрация запуска Java программы с консоли;
- Выводы;
-
4Обзор IDE для Java разработки
Длительность урока: 29:20
- Обзор возможностей для популярных Java IDE: Eclipse, Intellj IDEA, NetBeans
- Eclipse
- Преимущества: бесплатная, быстро работает на слабых компьютерах, рекомендована большинством работодателей, не желающих выделять деньги для платных продуктов
- Недостатки: не разработана для быстрого написания корректного кода
- Рекомендована для разработки на Java EE на начальных этапах работы программистом и последующим переходом на Intellj IDEA при возникновении возможности покупки лицензии
- Intellj IDEA
- Преимущества: интеллектуальные подсказки при написании кода, возможность конфигурирования рабочей области под себя, огромное количество горячих клавиш для быстрого написания кода, рекомендована большинством работодателей, которые желают эффективно использовать труд разработчика
- Недостатки: при разработки Java EE приложений требует наличие платной лицензии, для эффективной работы требует более мощный компьютер
- Рекомендована при желании развиваться в направлении Android разработки (не требует платной лицензии) и при разработке Java EE приложений на профессиональном уровне (при возникновении возможности покупки лицензии)
- NetBeans
- Рекомендована для разработки любых Java приложений (SE, EE), но исторически не пользуется популярностью среди работодателей и разработчиков на территории СНГ
- Примеры быстрого написания кода в каждой из IDE
- Для изучения основ программирования любая из IDE может быть использована
-
5Ввод/вывод, переменные, выражения, типы данных
Длительность урока: 1:17:04
- Выполнение домашнего задания со второго урока (по алгоритмам);
- Ячейка памяти;
- Байт, полуслово, слово, двойное слово;
- Кодирование положительных и отрицательных чисел;
- Кодирование вещественных чисел и символов;
- Типы данных Java;
- Переменные;
- Демонстрация запуска программы в режиме отладки (debug);
- Ввод с консоли / вывод на консоль в Java;
- Структура простой программы на Java;
- Преобразование типов;
- Преобразование в строку и из строки;
- Арифметические выражения;
- Демонстрация ошибки переполнения типа;
- Демонстрация ошибки точности вычислений типа double;
- Математические вычисления;
- Логические выражения;
- Демонстрация ошибок работы программ в фоновом режиме в среде разработки при отладке (debug);
- Инкремент/декремент/побитовые операции;
- Приоритеты операций;
- Выводы;
-
6Управляющие операторы
Длительность урока: 58:29
- Выполнение домашнего задания с предыдущего урока;
- Типы управляющих операторов;
- Операторы условного перехода (if, else);
- Примеры использования логических типов данных в операторах условного перехода (if, else);
- Простой калькулятор;
- Тернарный оператор (альтернатива if, else);
- Использование оператора цикла для выполнения повторяющихся действий;
- Цикл for;
- Демонстрация зависания на примере бесконечного цикла;
- Цикл while;
- Цикл do - while;
- Вложенные циклы;
- Оператор continue;
- Оператор break;
- Рекомендации: break, continue;
- Выход из бесконечного цикла;
- Примеры использования циклов:
- Вычисление произведения с помощью цикла;
- Вычисление возведения в степень с помощью цикла;
- Вычисление чисел фибоначчи (Прочитать в википедии) с помощью цикла;
- Вычисление арифметической прогрессии (Прочитать в википедии) с помощью цикла;
- Выводы;
-
7Практическое занятие по операторам
Длительность урока: 42:04
- Поэтапное создание нескольких версий приложения, отображающего сетку 3 на 4:
| | | --------------- | | | --------------- | | |
- Первая версия алгоритма;
- Вторая версия алгоритма;
- Вторая версия алгоритма с использованием тернарного оператора;
- Поэтапное создание приложения, отображающего пирамиду чисел:
1 2 2 2 3 3 3 3 3 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6
;
- Поэтапное создание нескольких версий приложения, отображающего сетку 3 на 4:
-
8Массивы
Длительность урока: 1:17:35
- Выполнение домашнего задания с предыдущего урока:
- Программа калькулятор;
- Отображение алфавита;
- Программа DisplayX;
- Программа ShowGameTable;
- Определение массива;
- Пример определения массива в Java;
- Демонстрация хранения массива в памяти;
- Примеры создания массивов разных типов и вывод одномерного массива на консоль;
- Размер массива, доступ к элементу;
- Типовые примеры работы с массивами:
- Простейший линейный поиск;
- Сумма элементов в массиве;
- Чтение и установка произвольного элемента в массиве. Определение последнего элемента в массиве. Ошибка выхода за границы массива;
- Поиск минимального элемента в массиве;
- Заполнение массива случайными числами;
- Перестановка элементов в массиве в обратном порядке (reverse);
- Отображение сообщения, когда элемент не найден в массиве;
- Алгоритм проверки всех элементов строки массива на заданное условие (все элементы должны быть положительными числами);
- Свободный доступ к любому элементу массива;
- Линейный поиск. Оценка сложности алгоритма. Классическая реализация;
- Бинарный (двоичный) поиск. Оценка сложности алгоритма. Классическая реализация;
- Демонстрация работы бинарного (двоичного) поиска;
- Выводы;
- Выполнение домашнего задания с предыдущего урока:
-
9Практическое занятие по массивам
Длительность урока: 53:35
- Поэтапное создание приложения, находящего минимальный элемент в массиве;
- Поэтапное создание приложения, выполняющего бинарный поиск в отсортированном массиве. Демонстрация работы алгоритма. Автоматизированный тест, проверяющий корректность алгоритма.;
- Поэтапное создание приложения, выполняющего сортировку пузырьком;
-
10Методы (Функции)
Длительность урока: 1:24:42
- Выполнение домашнего задания с предыдущего урока:
- Проверка победителя;
- Реализация пузырьковой сортировки;
- Реализация сортировки вставками;
- Определение метода (функции);
- Работа с методами;
- Примеры методов;
- Определение и вызов метода. Стек вызовов методов;
- Демонстрация работы стека при вызовах метода в Java;
- Передача аргументов по значению и по ссылке;
- Область видимости переменных;
- Область видимости блок для локальных переменных;
- Демонстрация изоляции локальных переменных с одним и тем же названием в разных методах;
- Вычисление сложных функций;
- Вычисление функций sin(x) и e^x;
- Точные вычисления;
- Выводы;
- Выполнение домашнего задания с предыдущего урока:
-
11Практическое занятие по методам
Длительность урока: 19:02
- Поэтапное создание приложения, находящего количество пар чисел в массиве;
- Пример декомпозиции сложного метода на несколько простых для внесения ясности в код;
-
12Итеративные и рекурсивные алгоритмы
Длительность урока: 37:27
- Выполнение домашнего задания с предыдущего урока:
- Реализация функций cos(x) и ln(x);
- Реализация методов в классе TicTacToe;
- Итеративный алгоритм бинарного поиска;
- Определение рекурсии;
- Типы алгоритмов на примере вычисления факториала;
- Типовые ошибки итеративного и рекурсивного алгоритма;
- Рекурсивный алгоритм бинарного поиска;
- Нахождение суммы чисел от 1 до n с помощью разных типов алгоритмов:
- Итеративный алгоритм;
- Рекурсивный алгоритм;
- Аналитический алгоритм;
- Сравнение алгоритмов;
- Рекомендации по выбору типа алгоритма;
- Алгоритмы поиска файла на жестком диске;
- Выводы;
- Выполнение домашнего задания с предыдущего урока:
-
13Практическое занятие по итеративным и рекурсивным алгоритмам
Длительность урока: 25:10
- Создание нескольких версий приложения, подсчитывающего количество чисел в массиве используя итеративные и рекурсивные алгоритмы;
- Создание рекурсивного аналога приложения, отображающего сетку 3 на 4
| | | --------------- | | | --------------- | | |
;
-
14Работа со строками
Длительность урока: 31:03
- Выполнение домашнего задания с предыдущего урока:
- Итеративная и рекурсивная версия программы для нахождения числа Фибоначчи по индексу;
- Рекурсивная функция отображения массива на консоль;
- Итеративная и рекурсивная версия функции вычисления суммы цифр числа;
- Методы работы со строками;
- Сравнение строк;
- Использование строк в игре TicTacToe;
- Корректная версия использования строк в игре TicTacToe;
- Пример нахождения чисел в строке;
- Демонстрация работы программы поиска чисел;
- Подсчет количества слов в тексте;
- Более точный вариант поиска слов в тексте;
- Эффективность строк;
- Выводы;
- Выполнение домашнего задания с предыдущего урока:
-
15Реализация игры "Крестики-нолики"
Длительность урока: 40:51
- Выполнение домашнего задания с предыдущего урока:
- Поддержка отрицательных чисел в поиске чисел;
- Ход компьютера;
- Оптимизация метода проверки победителя;
- Удобства графического интерфейса;
- Создание игрового поля;
- Обработка хода пользователя;
- Алгоритм работы консольного приложения и приложения с графическим интерфейсом;
- Проблема: Компьютер не пытается выиграть!;
- Решение проблемы: компьютер умнеет;
- Считывание всех доступных вариантов;
- Более умный ход;
- Описание домашнего задания после прохождения курса;
- Скачивание шаблона игры Gomoku;
- Формализованное описание задания на разработку игры Gomoku;
- Демонстрация работы шаблона игры Gomoku;
- Правила выделения выигрышной комбинации в игре Gomoku;
- Рекомендации по тестированию кода поиска победителя;
- Выводы;
- Выполнение домашнего задания с предыдущего урока: