Основы программирования - Крестики-нолики (на примере Java)
4.2 (27 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
738 students enrolled

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

Программирование на Java
4.2 (27 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
738 students enrolled
Created by DevStudy .net
Last updated 4/2019
Russian
Price: Free
This course includes
  • 12 hours on-demand video
  • 7 articles
  • 10 downloadable resources
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
What you'll learn
  • Создавать корректные алгоритмы для решения любой задачи
  • Работать с консолью: считывать исходные данные и выводить результат

  • Использовать условные операторы и операторы циклов

  • Писать итеративные и рекурсивные алгоритмы
  • Работать с методами (функциями), массивами данных и строками
  • Понимать отличие консольных программ от программ с графическим интерфейсом
  • Понимать принцип работы языков программирования и компьютерных программ
  • Разрабатывать алгоритмы для простых игр
Course content
Expand all 22 lectures 11:55:54
+ Введение в программирование
5 lectures 02:33:43
  1. Определение компьютерной программы;

  2. Составляющие решения любой задачи;

  3. Структура компьютерной программы;

  4. Выполнение программы;

  5. Окружение программы. Назначение операционных систем;

  6. Виды операционных систем;

  7. Интерфейс командной строки (Консоль или Терминал);

  8. Консольные программы и их жизненный цикл;

  9. Программы с графическим интерфейсом (GUI);

  10. Жизненный цикл программ с графическим интерфейсом (GUI);

  11. GUI или консольные программы;

  12. Резюме по типам программ;

  13. Выводы;

Лекция 1. Компьютерная программа
30:36

Тестирование знаний, полученных в ходе лекции "Компьютерная программа"

Тест "Компьютерная программа"
4 questions
  1. Определение алгоритма;

  2. Пример алгоритма покупки хлеба;

  3. Виды алгоритмов;

  4. Способы представления алгоритмов;

  5. Альтернативный алгоритм покупки хлеба;

  6. Свойства алгоритмов:

    1. Дискретность;

    2. Завершенность (конечность);

    3. Детерминированность (определённость);

    4. Понятность;

    5. Массовость (универсальность);

  7. Оценка сложности алгоритма;

  8. Выводы;

Лекция 2. Алгоритм. Свойства алгоритма
33:26

Тестирование знаний, полученных в ходе лекции "Алгоритм. Свойства алгоритма"

Тест "Алгоритм. Свойства алгоритма"
5 questions
Домашнее задание: Составление алгоритмов
00:25
  1. Определение языка программирования;

  2. Краткий обзор систем счисления;

  3. Машинный код;

  4. Язык ассемблера;

  5. Ассемблер;

  6. Демонстрация создания программы на языке ассемблера;

  7. Запуск простейшей программы в эмуляторе MS-DOS;

  8. Языки высокого уровня;

  9. Типы языков высокого уровня;

  10. Компилятор, процесс компиляции на примере языка C;

  11. Этапы процесса компиляции;

  12. Демонстрация создания программы на языке C;

  13. Интерпретатор на примере языка JavaScript;

  14. Демонстрация создания программы на языке JavaScript;

  15. Сравнение интерпретаторов и компиляторов;

  16. Технология Java: компилятор + интерпретатор;

  17. Варианты выполнения кода процессором;

  18. Язык высокого уровня Java;

  19. JDK vs JRE;

  20. Установка JDK на операционную систему семейства Windows (JRE будет установлено автоматически);

  21. Проверка корректности установки Java на Windows;

  22. Установка среды разработки Eclipse на операционную систему семейства Windows;

  23. Настройка среды разработки Eclipse;

  24. Создание простого проекта в среде разработки Eclipse;

  25. Создание первого проекта Hello World;

  26. Структура кода проекта Hello World;

  27. Описание правил работы с github;

  28. Демонстрация запуска Java программы с консоли;

  29. Выводы;

Лекция 3. Языки программирования
59:56

Тестирование знаний, полученных в ходе лекции "Языки программирования"

Тест "Языки программирования"
7 questions
  1. Обзор возможностей для популярных Java IDE: Eclipse, Intellj IDEA, NetBeans

  2. Eclipse

    1. Преимущества: бесплатная, быстро работает на слабых компьютерах, рекомендована большинством работодателей, не желающих выделять деньги для платных продуктов

    2. Недостатки: не разработана для быстрого написания корректного кода

    3. Рекомендована для разработки на Java EE на начальных этапах работы программистом и последующим переходом на Intellj IDEA при возникновении возможности покупки лицензии

  3. Intellj IDEA

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

    2. Недостатки: при разработки Java EE приложений требует наличие платной лицензии, для эффективной работы требует более мощный компьютер

    3. Рекомендована при желании развиваться в направлении Android разработки (не требует платной лицензии) и при разработке Java EE приложений на профессиональном уровне (при возникновении возможности покупки лицензии)

  4. NetBeans

    1. Рекомендована для разработки любых Java приложений (SE, EE), но исторически не пользуется популярностью среди работодателей и разработчиков на территории СНГ

  5. Примеры быстрого написания кода в каждой из IDE

  6. Для изучения основ программирования любая из IDE может быть использована

Лекция 4. Обзор IDE для Java разработки
29:20
+ Основы программирования на примере Java
17 lectures 09:22:51
  1. Выполнение домашнего задания со второго урока (по алгоритмам);

  2. Ячейка памяти;

  3. Байт, полуслово, слово, двойное слово;

  4. Кодирование положительных и отрицательных чисел;

  5. Кодирование вещественных чисел и символов;

  6. Типы данных Java;

  7. Переменные;

  8. Демонстрация запуска программы в режиме отладки (debug);

  9. Ввод с консоли / вывод на консоль в Java;

  10. Структура простой программы на Java;

  11. Преобразование типов;

  12. Преобразование в строку и из строки;

  13. Арифметические выражения;

  14. Демонстрация ошибки переполнения типа;

  15. Демонстрация ошибки точности вычислений типа double;

  16. Математические вычисления;

  17. Логические выражения;

  18. Демонстрация ошибок работы программ в фоновом режиме в среде разработки при отладке (debug);

  19. Инкремент/декремент/побитовые операции;

  20. Приоритеты операций;

  21. Выводы;

Лекция 5. Ввод/вывод, переменные, выражения, типы данных
01:17:04

Тестирование знаний, полученных в ходе лекции "Ввод/вывод, переменные, выражения, типы данных"

Тест "Ввод/вывод, переменные, выражения, типы данных"
12 questions
Домашнее задание: Ввод/вывод, переменные, выражения, типы данных
00:45
  1. Выполнение домашнего задания с предыдущего урока;

  2. Типы управляющих операторов;

  3. Операторы условного перехода (if, else);

  4. Примеры использования логических типов данных в операторах условного перехода (if, else);

  5. Простой калькулятор;

  6. Тернарный оператор (альтернатива if, else);

  7. Использование оператора цикла для выполнения повторяющихся действий;

  8. Цикл for;

  9. Демонстрация зависания на примере бесконечного цикла;

  10. Цикл while;

  11. Цикл do - while;

  12. Вложенные циклы;

  13. Оператор continue;

  14. Оператор break;

  15. Рекомендации: break, continue;

  16. Выход из бесконечного цикла;

  17. Примеры использования циклов:

    1. Вычисление произведения с помощью цикла;

    2. Вычисление возведения в степень с помощью цикла;

    3. Вычисление чисел фибоначчи (https://ru.wikipedia.org/wiki/Числа_Фибоначчи) с помощью цикла;

    4. Вычисление арифметической прогрессии (https://ru.wikipedia.org/wiki/Арифметическая_прогрессия) с помощью цикла;

  18. Выводы;

Лекция 6. Управляющие операторы
58:28

Тестирование знаний, полученных в ходе лекции "Управляющие операторы"

Тест "Управляющие операторы"
7 questions
  1. Поэтапное создание нескольких версий приложения, отображающего сетку 3 на 4: 

        |   |   |   

    ---------------   

        |   |   |   

    ---------------   

        |   |   |   

    1. Первая версия алгоритма;

    2. Вторая версия алгоритма;

    3. Вторая версия алгоритма с использованием тернарного оператора;

  2. Поэтапное создание приложения, отображающего пирамиду чисел:

                         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 

Практическое занятие по операторам
42:04
Домашнее задание: Управляющие операторы
01:33
  1. Выполнение домашнего задания с предыдущего урока:

  2. Определение массива;

  3. Пример определения массива в Java;

  4. Демонстрация хранения массива в памяти;

  5. Примеры создания массивов разных типов и вывод одномерного массива на консоль;

  6. Размер массива, доступ к элементу;

  7. Типовые примеры работы с массивами:

    1. Простейший линейный поиск;

    2. Сумма элементов в массиве;

    3. Чтение и установка произвольного элемента в массиве. Определение последнего элемента в массиве. Ошибка выхода за границы массива;

    4. Поиск минимального элемента в массиве;

    5. Заполнение массива случайными числами;

    6. Перестановка элементов в массиве в обратном порядке (reverse);

    7. Отображение сообщения, когда элемент не найден в массиве;

    8. Алгоритм проверки всех элементов строки массива на заданное условие (все элементы должны быть положительными числами);

    9. Свободный доступ к любому элементу массива;

  8. Линейный поиск. Оценка сложности алгоритма. Классическая реализация;

  9. Бинарный (двоичный) поиск. Оценка сложности алгоритма. Классическая реализация;

  10. Демонстрация работы бинарного (двоичного) поиска;

  11. Выводы;

Лекция 7. Массивы
01:17:34

Тестирование знаний, полученных в ходе лекции "Массивы"

Тест "Массивы"
12 questions
  1. Поэтапное создание приложения, находящего минимальный элемент в массиве;

  2. Поэтапное создание приложения, выполняющего бинарный поиск в отсортированном массиве. Демонстрация работы алгоритма. Автоматизированный тест, проверяющий корректность алгоритма.;

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

Практическое занятие по массивам
53:35
Домашнее задание: Массивы
00:52
  1. Выполнение домашнего задания с предыдущего урока:

  2. Определение метода (функции);

  3. Работа с методами;

  4. Примеры методов;

  5. Определение и вызов метода. Стек вызовов методов;

  6. Демонстрация работы стека при вызовах метода в Java;

  7. Передача аргументов по значению и по ссылке;

  8. Область видимости переменных;

  9. Область видимости блок для локальных переменных;

  10. Демонстрация изоляции локальных переменных с одним и тем же названием в разных методах;

  11. Вычисление сложных функций;

  12. Вычисление функций sin(x) и e^x;

  13. Точные вычисления;

  14. Выводы;

Лекция 8. Методы (Функции)
01:24:42

Тестирование знаний, полученных в ходе лекции "Методы (Функции)"

Тест "Методы (Функции)"
7 questions
  1. Поэтапное создание приложения, находящего количество пар чисел в массиве;

  2. Пример декомпозиции сложного метода на несколько простых для внесения ясности в код;

Практическое занятие по методам
19:02
Домашнее задание: Методы (Функции)
01:55
  1. Выполнение домашнего задания с предыдущего урока:

  2. Итеративный алгоритм бинарного поиска;

  3. Определение рекурсии;

  4. Типы алгоритмов на примере вычисления факториала;

  5. Типовые ошибки итеративного и рекурсивного алгоритма;

  6. Рекурсивный алгоритм бинарного поиска;

  7. Нахождение суммы чисел от 1 до n с помощью разных типов алгоритмов:

    1. Итеративный алгоритм;

    2. Рекурсивный алгоритм;

    3. Аналитический алгоритм;

  8. Сравнение алгоритмов;

  9. Рекомендации по выбору типа алгоритма;

  10. Алгоритмы поиска файла на жестком диске;

  11. Выводы;

Лекция 9. Итеративные и рекурсивные алгоритмы
37:27

Тестирование знаний, полученных в ходе лекции "Итеративные и рекурсивные алгоритмы"

Тест "Итеративные и рекурсивные алгоритмы"
8 questions
  1. Создание нескольких версий приложения, подсчитывающего количество чисел в массиве используя итеративные и рекурсивные алгоритмы;

  2. Создание рекурсивного аналога приложения, отображающего сетку 3 на 4

        |   |   |   

    ---------------   

        |   |   |   

    ---------------   

        |   |   |   

Практическое занятие по итеративным и рекурсивным алгоритмам
25:09
Домашнее задание: Итеративные и рекурсивные алгоритмы
00:38
  1. Выполнение домашнего задания с предыдущего урока:

  2. Методы работы со строками;

  3. Сравнение строк;

  4. Использование строк в игре TicTacToe;

  5. Корректная версия использования строк в игре TicTacToe;

  6. Пример нахождения чисел в строке;

  7. Демонстрация работы программы поиска чисел;

  8. Подсчет количества слов в тексте;

  9. Более точный вариант поиска слов в тексте;

  10. Эффективность строк;

  11. Выводы;

Лекция 10. Работа со строками
31:03

Тестирование знаний, полученных в ходе лекции "Работа со строками"

Тест "Работа со строками"
5 questions
Домашнее задание: Работа со строками
00:39
  1. Выполнение домашнего задания с предыдущего урока:

  2. Удобства графического интерфейса;

  3. Создание игрового поля;

  4. Обработка хода пользователя;

  5. Алгоритм работы консольного приложения и приложения с графическим интерфейсом;

  6. Проблема: Компьютер не пытается выиграть!;

  7. Решение проблемы: компьютер умнеет;

  8. Считывание всех доступных вариантов;

  9. Более умный ход;

  10. Описание домашнего задания после прохождения курса;

  11. Выводы;

Реализация игры "Крестики-нолики". Постановка задачи на реализацию "Гомоку"
50:19
Requirements
  • Базовые знания работы с компьютером в режиме пользователя
  • Умение пользоваться текстовыми редакторами и браузерами
Description

Данный курс предназначен для изучения основ программирования: введение в алгоритмизацию, принципов языков программирования высокого уровня, основных выражений и операторов, знакомство с итеративными и рекурсивными алгоритмами, алгоритмами сортировки и поиска и практического освоения теоретических знаний на примере реализации игры "Крестики-нолики".

Основы программирования изучаются на примере языка 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]

Who this course is for:
  • Данный курс предназначен для изучения основ программирования на примере языка программирования Java