Руководство по программированию


0

1


  • О целях и содержании курса
  • О языке программирования Juliа
  • О исполнителе "Робот на клетчатом поле со сторонами горизонта"
  • Технология проектирования
    • Пример решения в плохом стиле
    • Пример достаточно хорошо структурированного кода
    • Технология проектирования «сверху вниз»
    • Отладка программы по технологии «снизу вверх»
    • О составлении описаний функций
    • Функции и файлы
    • Аннотирование аргументов функции
  • Подготовка программного окружения для работы с Роботом
  • Технология проектирования "сверху вниз"
  • Разбор задачи 2
    • Декомпозиция задачи на уровне псевдокода
    • Программный код главной функции
    • Реализация вспомогателных функций
    • Запуск и отладка программного кода

<< к началу


2


  • Уточнение понятия алгоритма
  • Что такое "правильная программа"
  • Языки программирования и трансляция программы в машиный код
    • Классификация трансляторов
  • Устройство и алгоритм работы компьютера
  • Разбор задачи 6
    • Декомпозиция задачи и соответствующий псевдокод
    • Полученный полный программный код
    • Запуск и отладка программного кода
  • О самодокументировании библиотечных функций
    • Создание библиотечного файла
    • Пример получения помощи в REPL по функциям из библиотечного файла

<< к началу


3


  • Статическая и динамическая типизация
    • Вывод типа
    • Cсылки на объекты
    • Автоматическая сборка "мусора"
    • Mножественная диспетчеризация
    • Глобальные переменные модуля
      • Пример программы, использующей глобальную переменную
      • Цель инкапсуляции данных и функций в модуль
      • Замечание о использовании глобальных переменных
      • Рекомендация по отладке модуля
    • Локальные переменные функций
      • Пример программы, использующей функции с локальными переменными
      • Пример не слишком удачного выбора решения с использования глобальных переменных
    • Функции с аргументами, передача параметров в функцию "по значению" и "по ссылке"
  • Разбор решения задачи 5
    • Возможный вариант решения
    • Улучшенный вариант решения
  • Разбор решения задачи 8
    • Первый вариант решения
    • Второй вариант решения
  • Разбор решения задачи 9

<< к началу


4


  • Использование программами компьютерной памяти
  • Простейшие приемы доказательства и контроля правильности программного кода
    • Промежуточные утверждения
    • Циклы
      • Cвойство цикла с предусловием
      • Инвариант цикла и метод доказательства правильности цикллического алгоритма
        • Пример использования инварианта в доказательстве правильности алгоритма: замаркировать ряд от начала до конца
        • Опасность и нежелательность цикла с постусловием
        • Пример: алгоритм подсчёта числа перегородок в ряду
          • Метод переменной состояния
          • Альтернативный способ


  • Разбор задачи 11
  • Разбор задачи 12
  • Разбор задачи 13
  • Разбор задачи 14
  • Разбор задачи 16

<< к началу


5

  • Обобщенное программирование
    • Иерархия типов Julia, конкретные и абстрактные типы
    • Пример разработки обобщенной функции
    • Принцип аннотирования тпов аргуметов функции
  • Создание библиотечного файла roblib.jl
  • Пример, когда желание иметь универсальный код приводит к необходимости, некоторые вспомогательные функции распределять по нескольким отдельным файлам

<< к началу


6

  • Ленивые логические операции && и ||
  • Разбор задачи 26
  • Модульное программирование
    • Задача перемещения Робота в стартовый угол и обратно
    • Еще раз о задаче 7 с точки зрения модульного программирования
  • Вложенные функции

<< к началу


7

  • Элементы функционального программирования
  • Функции, как объекты первого класса
  • Анонимные функции
  • Функции высших порядков
  • Замыкания (closure)
  • Замыкание, возвращаемое из функции
  • Стандартная функция высшего порядка map
  • do-синтаксис
  • Каррирование
  • Операция композиции функций
  • Операция направления потока данных на "вход" функции
  • Улучшение структуры програмного кода в полученном ранее решение задачи 12 за счет ввынесение за пределы модуля "лишних" функций
  • Разбор задачи 31
  • Задание на улучшение структуры програмного кода решения задачи 31

<< к началу


8


<< к началу


9

Обобщенное программирование в функциональном стиле (продолжение)


<< к началу


10

11

12

13

14

15