Министерство образования и науки РФ
ГБПОУ РМЭ "Йошкар-Олинский Технологический колледж
Курс лекций по предмету
"Основы алгоримизации и программирования"
для группы И-21
Разработал:
Колесников Евгений Иванович
г.Йошкар-Ола, 2021-2025 гг
::: mermaid
flowchart LR
id1[This is the text in the box]
:::
# Основы алгоримизации и программирования
## Тема 1. Основные принципы алгоритмизации и программирования
### Теория
1. [Основные понятия алгоритмизации. Понятие алгоритма. Свойства алгоритма. Формы записи алгоритмов. Общие принципы построения алгоритмов. Определение сложности работы алгоритмов.](./articles/t1l1.md)
1. [Основные алгоритмические конструкции: линейные, разветвляющиеся, циклические. Программы для графического отображения алгоритмов](./articles/t1l2.md)
1. [Логические основы алгоритмизации. Основы алгебры логики. Логические операции с высказываниями: конъюнкция, дизъюнкция, инверсия. Законы логических операций. Таблицы истинности.](./articles/t1l3.md)
### Лабораторные работы
1. [Разработка алгоритмов для конкретных задач. Определение сложности работы алгоритмов.](./articles/t1lab1.md)
2. Использование программ для графического отображения алгоритмов.
3. [Таблицы истинности](./articles/lab_truth_table.md)
### Контрольные вопросы
1. [Этапы решения задачи на компьютере? Охарактеризуйте их. Проиллюстрируйте этапы постановки и формализации на примере задачи: вычислить время движения моторной лодки между двумя пунктами.](./articles/t1l1.md#основные-понятия-алгоритмизации)
1. [Понятие алгоритма.](./articles/t1l1.md#понятие-алгоритма)
1. [Основные типы данных.](./articles/t1l1.md#основные-типы-данных)
1. [Свойства алгоритма.](./articles/t1l1.md#свойства-алгоритма)
1. [Формы записи алгоритмов.](./articles/t1l1.md#формы-записи-алгоритмов)
1. [Что такое структурное программирование? Каковы основные прнципы структурной методики построения алгоритмов? ](./articles/t1l1.md#структурное-программирование)
1. [Линейный алгоритм](./articles/t1l2.md#линейный-алгоритм)
1. [Разветвляющийся алгоритм](./articles/t1l2.md#разветвляющийся-алгоритм)
1. [Циклический алгоритм](./articles/t1l2.md#циклический-алгоритм)
1. [Вспомогательные алгоритмы и процедуры](./articles/t1l2.md#вспомогательные-алгоритмы-и-процедуры)
1. [Основные формы мышления.](./articles/t1l3.md#основные-формы-мышления)
1. [Что такое логическое высказывание?](./articles/t1l3.md#логическое-высказывание)
1. [Способы описания логических функций.](./articles/t1l3.md#способы-описания-логических-функций)
1. [Основные логические операции.](./articles/t1l3.md#логические-операции)
1. [Приоритет логических операций](./articles/t1l3.md#приоритет-логических-операций)
1. [Законы логических операций](./articles/t1l3.md#законы-логических-операций)
1. [Проверка законов построением таблиц истинности](./articles/t1l3.md#решение-логических-выражений)
1. [Классификация языков программирования](./articles/t2l1.md#классификация-языков-программирования)
1. [компиляция и интерпретация, основные отличия](./articles/t2l1.md#методы-трансляции)
1. [Методы программирования](./articles/t2l2.md#методы-программирования)
1. [Общие принципы разработки программного обеспечения](./articles/t2l2.md#общие-принципы-разработки-программного-обеспечения)
1. [Жизненный цикл программного обеспечения](./articles/t2l2.md#жизненный-цикл-программного-обеспечения)
1. [Типы приложений](./articles/t2l2.md#типы-приложений)
## Тема 2. Языки и методы программирования
1. [Языки программирования. Эволюция языков программирования. Классификация языков программирования. Понятие системы программирования. Исходный, объектный и загрузочный модули. Интегрированная среда программирования.](./articles/t2l1.md)
2. [Методы программирования: структурный, модульный, объектно-ориентированный. Достоинства и недостатки методов программирования. Общие принципы разработки программного обеспечения. Жизненный цикл программного обеспечения.](./articles/t2l2.md)
## Тема 3. Системы контроля версий
1. [Системы контроля версий.](./articles/skv.md)
### Лабораторные работы
1. [Создание аккаунта и репозитория в СКВ gihtub. Создание консольного приложения и инициализация нового репозитория в проекте.](./articles/skv_lab.md)
## Тема 4. Программирование на языке C#. Основы.
### Теория
1. [Основные элементы языка. Структурная схема программы на алгоритмическом языке. Лексика языка. Переменные и константы. Типы данных. Выражения и операции.](./articles/t3l1.md)
1. [Операторы и операции языка. Синтаксис операторов. Составной оператор. Вложенные условные операторы. Циклические конструкции.](./articles/t3l1_2.md)
1. [Массивы как структурированный тип данных. Объявление массива. Ввод и вывод одномерных и двумерных массивов. Обработка массивов. Стандартные функции для массива целых и вещественных чисел. Коллекции и последовательности.](./articles/t3l1_3.md)
1. [Строки. Объявление строковых типов данных. Поиск, удаление, замена и добавление символов в строке. Операции со строками. Стандартные функции и процедуры работы со строками.](./articles/4_prog_string.md)
1. [Объявление множества. Работа с датами. Кортежи.](./articles/cs_misc_types.md)
### Лабораторные работы
1. [Знакомство со средой программирования и структурой проекта. Создание репозитория с ветками. Составление программ линейной структуры.](./articles/lab1.md)
1. [Отладка приложения](./articles/lab_debug.md)
1. [Составление программ разветвляющейся структуры.](./articles/lab2.md)
1. [Составление программ циклической структуры. Обработка одномерных и двумерных массивов.](./articles/lab3.md)
1. [Работа со строками](./articles/lab4_4.md)
1. [Работа с данными типа: множество, дата, кортежи.](./articles/lab4_5.md)
### Контрольные вопросы
1. что такое пространство имен и для чего оно нужно?
1. Какими символами обозначаются комментарии?
1. Чем характеризуетя переменная?
1. Какие типы данных по-умолчанию используются для целых чисел и для чисел с плавающей запятой?
1. За что отвечают ключевые слова **checked** и **unchecked**?
1. Операторы отношения
1. Логические операторы (обычные и укороченные)
1. Условные операторы
1. Тернарный оператор
1. Циклы
1. Оператор **break**
1. Оператор **continue**
1. Оператор **return**
1. [Массивы](./articles/t3l1_3.md#массивы)
1. [Коллекции](./articles/t3l1_3.md#коллекции)
1. [Перечисления](#перечисления-enum)
1. [Кортежи](./articles/lab4_5.md#кортежи-tuple)
1. [Множества](./articles/lab4_5.md#множества)
1. [Дата и время](./articles/lab4_5.md#работа-с-датами-и-временем)
## Тема 5. Продвинутый C#: функции, лямбды, исключения, работа с файлами, многопоточность, регулярные выражения.
### Теория
1. [Общие сведения о подпрограммах. Определение и вызов подпрограмм. Область видимости и время жизни переменной. Механизм передачи параметров. Лямбда-функции.](./articles/t5_function.md)
1. [Делегаты, события и лямбды](./articles/t5_delegate.md)
1. [Исключения. Null.](./articles/t5_exception.md)
1. [Многопоточность. Потоки, асинхронные вычисления](./articles/t5_thread_async.md)
1. [Работа с файловой системой и файлами.](./articles/t5_files.md)
1. [Типы файлов: CSV, XML, JSON.](./articles/t5_file_types.md)
1. [Регулярные выражения](./articles/t5_regex.md)
- [Опережающие и ретроспективные проверки](./articles/t5_regex.md#опережающие-и-ретроспективные-проверки)
### Лабораторные работы
1. [Организация и использование функций.](./articles/lab5_function.md)
1. [Исключения. NULL.](./articles/lab5_try_null.md)
1. [Асинхронные вычисления.](./articles/lab5_async.md)
1. [Работа с файлами](./articles/lab5_files.md)
1. [Типы файлов, сериализация.](./articles/lab5_file_types.md)
1. [Регулярные выражения.](./articles/lab5_regex.md)
### Контрольные вопросы
1. [Общее определение метода](./articles/t5_function.md#общее-определение-метода)
1. [Сокращенная запись методов](./articles/t5_function.md#сокращенная-запись-методов)
1. [Необязательные параметры](./articles/t5_function.md#необязательные-параметры)
1. [Именованные параметры](./articles/t5_function.md#именованные-параметры)
1. [Массив параметров и ключевое слово params](./articles/t5_function.md#массив-параметров-и-ключевое-слово-params)
1. [Область видимости переменных](./articles/t5_function.md#область-видимости-контекст-переменных)
1. [Секреты хорошей функции](./articles/t5_function.md#секреты-хорошей-функции-копипаст-с-хабра)
1. [Делегаты](./articles/t5_delegate.md#делегаты)
1. [Лямбда-выражения](./articles/t5_delegate.md#лямбда-выражения)
## Тема 6. Основные принципы объектно-ориентированного программирования
### Теория
1. [История развития ООП. Базовые понятия: объект, его свойства и методы, класс, интерфейс. Основные принципы ООП: инкапсуляция, наследование, полиморфизм.](./articles/t6_oop1.md)
1. [Ещё раз про классы. Интерфейсы.](./articles/t6_oop_habr.md)
1. [LINQ](./articles/t6_linq.md)
1. [Шаблоны проектирования.](./articles/t6_templates.md)
### Лабораторные работы
1. [ООП. Основы.](./articles/lab8-oop1.md)
1. [ООП. Основы (CSV)](./articles/lab8-oop2.md)
1. [ООП. Основы (JSON)](./articles/lab8-oop-json.md)
1. [ООП. Наследование.](./articles/lab8-oop3.md)
1. [ООП. Интерфейсы.](./articles/lab8-oop4.md)
### Контрольные вопросы
1. Члены класса
1. Константы класса
1. Конструкторы класса
1. Что такое this
1. Инициализатор объекта
1. Модификаторы доступа
1. Свойства класса
1. Перегрузка методов
1. Интерфейс
1. Основные принципы ООП
## Тема 7. Библиотеки классов.
1. [Библиотеки классов. Создание. Подключение. Динамическая загрузка сборок и позднее связывание.](./articles/t7_dll.md)
### Лабораторные работы
1. [Создание библиотеки классов](./articles/lab_class_lib.md)
## Тема 8. Оконные приложения.
### Теория
1. [Обзор типов оконных приложений в C#. Знакомство со структурой проекта WPF/Avalonia. Компоновка. Image.](./articles/t8_win_app.md)
1. [Ресурсы](./articles/wpf_resource.md)
1. [Привязка (Binding). Интерфейс INotifyPropertyChanged. Форматирование значений привязки и конвертеры значений.](./articles/t8_binding.md)
1. [Элементы управления. Обзор.](./articles/t8_elements.md)
1. [Каркас приложения. Модель данных. Привязка данных. Табличный вывод.](./articles/wpf_template.md)
1. [Фильтрация данных](./articles/wpf_filtering.md)
1. [Поиск, сортировка](./articles/wpf_search_sort.md)
1. [Вывод данных согласно макета (ListBox, Image)](./articles/wpf_listbox.md)
1. [Стили, триггеры и темы](./articles/wpf_style.md)
1. [Создание окон. Модальные окна](./articles/wpf_window.md)
1. Создание WPF-приложений по индивидуальным заданиям (подготовка к экзамену)
### Лабораторные работы
1. [Создание WPF-приложения, знакомство с вариантами компоновки.](./articles/lab_wpf_base.md)
1. [Исследование визуальных компонентов WPF.](./articles/lab_wpf_elements.md)
1. [Каркас приложения. Модель данных. Привязка данных.](./articles/lab_wpf_binding.md)
1. [Получение данных из внешних источников. CSV.](./articles/lab_wpf_data_csv.md)
1. [Получение данных из внешних источников. JSON.](./articles/lab_wpf_data_json.md)
1. [Фильтрация списка](./articles/lab_wpf_filter.md)
1. [Поиск/сортировка](./articles/lab_wpf_search_sort.md)
1. Создание WPF-приложений по индивидуальным заданиям (подготовка к экзамену)
### Контрольные вопросы
1. Технологии создания оконных приложений
1. Особенности WPF
1. Компоновка
1. Grid
1. StackPanel
1. WrapPanel
## [ЭКЗАМЕН](./articles/exam.md)