Презентация по дисциплине
Читать

Презентация по дисциплине "Информатика и основы программирования". Тема: Основы программирования на Python с фокусом на структурированное программирования. Часть 1. Основы программирования. (1 курс)

Cкачать презентацию: Презентация по дисциплине "Информатика и основы программирования". Тема: Основы программирования на Python с фокусом на структурированное программирования. Часть 1. Основы программирования. (1 курс)

Презентация по слайдам:


Слайд #1

Основы программирования на Python c фокусом на структурное программирование.
Программирование - это процесс создания инструкций, которые компьютер может выполнить для решения проблемы или выполнения определенной задачи.
Михаилс Ильичёвс

Слайд #2

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

Слайд #3

Программирование. Составные части.
1
Алгоритмические основы
2
Структура данных
3
Парадигмы программирования
4
Разработка ПО
5
Инструменты и технологии
6
Тестирование и отладка
7
Языки программирования

Слайд #4

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

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

Слайд #5

Программирование. Алгоритмические
основы. Структуры управления
алгоритмами.
1
Последовательность.
Шаги алгоритма выполняются последовательно, один за другим, в строгом порядке.
2
Выбор
В алгоритме происходит проверка условий, на основании которой выбирается один из нескольких возможных путей выполнения. Например, конструкции if и switch в программировании.
3
Циклы
Некоторые шаги алгоритма могут повторяться несколько раз в зависимости от определенных условий. Циклы могут быть представлены в виде for, while или do-while структур в различных языках программирования.
В алгоритмах используются три основные структуры управления потоком выполнения:

Слайд #6

Программирование. Алгоритмические основы.
Разработка и анализ алгоритмов.
Разработка алгоритма часто начинается с псевдокода или блок-схем, которые помогают разработчику визуализировать логику работы алгоритма до его реализации на конкретном языке программирования. Псевдокод представляет собой упрощенное описание алгоритма, использующее элементы естественного языка и программирования, тогда как блок-схемы используют графические символы для представления различных шагов и потоков управления алгоритма.
Анализ алгоритмов включает в себя оценку его сложности, то есть определение ресурсов (времени и памяти), необходимых для его выполнения. Сложность алгоритма обычно выражается через "О" большое нотацию (например, 𝑶(𝒏), 𝑶(𝒍𝒐𝒈⁡𝒏), 𝑶( 𝒏 𝟐 )), которая описывает поведение алгоритма в худшем случае в зависимости от размера входных данных.

Слайд #7

Программирование. Алгоритмические основы.
Рекурсия.
Рекурсия — это метод в программировании, при котором функция вызывает саму себя для решения подзадач, что часто позволяет упростить решение сложных задач. Рекурсивные алгоритмы должны иметь условие выхода, чтобы предотвратить бесконечный цикл выполнения.

Слайд #8

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

Слайд #9

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

Слайд #10

Программирование. Структуры данных.
Типы данных.
Primitive
Примитивные типы данных
включают целые числа, вещественные числа, символы и булевы значения. Они являются базовыми строительными блоками и имеют прямое представление в памяти компьютера.
Composite
Составные (или производные) типы данных
строятся из примитивных и/или других составных типов и включают массивы, структуры и классы.

Слайд #11

Программирование. Структуры данных.
Линейные структуры данных.
Массивы
Упорядоченные коллекции элементов одного типа, доступ к которым осуществляется по индексу. Массивы характеризуются фиксированным размером и эффективным доступом к элементам, но их размер не изменяется динамически.
Связные списки
Последовательности элементов, где каждый элемент связан с следующим через указатель или ссылку. Связные списки бывают однонаправленными, двунаправленными и кольцевыми.
Стеки
Коллекции элементов с принципом последним пришел — первым ушел (LIFO). Операции вставки (push) и удаления (pop) происходят на одном конце стека.
Очереди
Коллекции с принципом первым пришел — первым ушел (FIFO). Элементы добавляются с одного конца (хвоста) и удаляются с другого (головы).

Слайд #12

Программирование. Структуры данных.
Иерархические структуры данных.
Деревья.
Иерархические структуры, состоящие из узлов, связанных ребрами. Каждый узел дерева, кроме корневого, имеет ровно одного предка.
Бинарные деревья.
Каждый узел имеет до двух потомков. Особый интерес представляют сбалансированные бинарные деревья, такие как AVL и красно-черные деревья, которые обеспечивают эффективный поиск, вставку и удаление.
Деревья поиска.
Специализированные бинарные деревья, где элементы упорядочены таким образом, что облегчается поиск. Примером является бинарное дерево поиска (BST).

Слайд #13

Программирование. Структуры данных.
Ассоциативные структуры данных.
1
Хэш-таблицы.
Предоставляют быстрый доступ к элементам по ключу за счет использования хеш-функции для вычисления индекса в массиве, где хранится значение. Хеш-таблицы эффективны для реализации словарей, кэшей и наборов.
2
Словари (или ассоциативные массивы)
Коллекции пар ключ-значение, где каждый ключ уникален. Реализуются с помощью хеш-таблиц или структур деревьев.

Слайд #14

Программирование. Структуры данных.
Графовые структуры данных.
Графы. Состоят из набора вершин (или узлов) и набора ребер, соединяющих пары вершин. Графы могут быть направленными или ненаправленными, взвешенными или невзвешенными. Они применяются в задачах, связанных с сетевым программированием, оптимизацией маршрутов, анализом социальных сетей и многим другим.

Слайд #15

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

Слайд #16

Программирование. Парадигмы
программирования. Императивное
Процедурное программирование
Расширение императивного подхода, подчеркивающее использование процедур или функций для структурирования кода. Примеры языков: C, Pascal.
Объектно-ориентированное
программирование. (ООП)
Основано на концепции "объектов", которые являются экземплярами "классов". ООП использует инкапсуляцию, наследование и полиморфизм для повышения гибкости и повторного использования кода. Примеры языков: Java, C++, Python.
Императивное программирование сосредоточено на описании последовательности команд, которые изменяют состояние программы. Это наиболее прямой и очевидный подход к программированию, где код написан как серия инструкций для компьютера.

Слайд #17

Программирование. Парадигмы
программирования. Декларативное.
Функциональное программирование
Подчеркивает использование функций и их композиций. Функции рассматриваются как "граждане первого класса" и могут использоваться как данные. Функциональное программирование предпочитает неизменяемость данных и чистые функции (функции без побочных эффектов). Примеры языков: Haskell, Scala, Erlang.
Логическое программирование
Основано на формализации задачи в виде набора фактов и правил, которые описывают отношения между данными. Программа представляет собой набор логических утверждений, и выполнение программы — это процесс поиска доказательств. Пример языка: Prolog.
В декларативном программировании внимание сосредоточено на описании того, что программа должна делать, а не как именно она должна это делать. Этот подход позволяет абстрагироваться от деталей реализации.

Слайд #18

Программирование. Парадигмы
программирования. Другие парадигмы.
Реактивное
программирование
Фокусируется на асинхронном управлении потоками данных и распространении изменений. Это позволяет легко создавать интерактивные и отзывчивые приложения. Примеры библиотек и фреймворков: RxJava, Reactor.
Событийно-ориентированное программирование
Основано на концепции событий и обработчиков событий. Программы разрабатываются таким образом, чтобы реагировать на различные внешние и внутренние события (например, пользовательские вводы или сообщения от других программ). Примеры языков и фреймворков: Node.js, JavaScript.
Конкурентное программирование
Ориентировано на разработку программ, способных эффективно выполняться на многоядерных и многопроцессорных системах, путем одновременного выполнения нескольких вычислительных процессов или потоков. Примеры языков: Go, Erlang.

Слайд #19

Программирование. Разработка ПО.
Разработка программного обеспечения — это комплексный процесс создания компьютерных программ, который охватывает ряд этапов, начиная от исходной идеи или проблемы и заканчивая разработкой, тестированием и поддержкой конечного продукта. Этот процесс требует не только технических знаний, но и понимания потребностей пользователей, а также умения работать в команде и управлять проектами. Основные этапы разработки программного обеспечения включают в себя:

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

Слайд #20

Программирование. Разработка ПО.
3. Кодирование и разработка. На этапе разработки программисты реализуют систему, написав код на выбранном языке программирования согласно спецификациям, полученным на этапе проектирования. Кодирование требует внимания к деталям, хорошего понимания задач и умения применять лучшие практики программирования.

4. Тестирование. Тестирование — это критический этап, на котором проверяется соответствие программного обеспечения его требованиям и спецификациям. Тестирование может включать в себя модульное тестирование, интеграционное тестирование, системное тестирование и приемочное тестирование. Цель тестирования — обнаружить и устранить ошибки и недочеты перед выпуском продукта.

5. Развертывание. После успешного тестирования продукт развертывается в целевой среде, где он будет доступен конечным пользователям. Развертывание может включать в себя установку, конфигурацию и оптимизацию программного обеспечения.

Слайд #21

Программирование. Разработка ПО.
6. Поддержка и обслуживание. После развертывания начинается этап поддержки, на котором разработчики могут вносить изменения, улучшения и обновления в программное обеспечение, а также исправлять возникающие ошибки. Поддержка продолжается в течение всего жизненного цикла продукта.

Слайд #22

Программирование. Разработка ПО.
Методологии разработки.
Процесс разработки программного обеспечения может следовать различным методологиям, которые определяют подход к управлению проектами и рабочим процессам. Наиболее распространенные методологии включают:

Водопадная модель (Waterfall). Строгий последовательный подход, где каждый этап начинается только после завершения предыдущего.
Агил (Agile). Гибкая методология, которая подразумевает итеративную и инкрементальную разработку, акцент на вовлечении заказчика и готовность к изменениям даже на поздних этапах разработки.
Scrum. Фреймворк, реализующий агил-подход, с акцентом на управление проектами в условиях частых изменений и неопределенности.

Разработка программного обеспечения — это динамичный и многоаспектный процесс, требующий глубоких знаний в области компьютерных наук, а также навыков управления проектами и командной работы.

Слайд #23

Программирование. Инструменты и
технологии.
В процессе разработки программного обеспечения используется множество инструментов и технологий, которые помогают упростить и автоматизировать различные аспекты создания, тестирования, развертывания и поддержки программных продуктов. Выбор инструментов зависит от множества факторов, включая специфику проекта, используемые языки программирования, методологию разработки и предпочтения команды. Ниже представлены ключевые категории инструментов и технологий, используемых в разработке программного обеспечения:

Слайд #24

Программирование. Инструменты и технологии.
Интегрированные среды разработки. (IDE)
1
Visual Studio
Широко используется для разработки на C#, C++ и других языках.
2
IntelliJ IDEA
Предпочтительный выбор для Java-разработки.
3
Eclipse
Многофункциональная среда, популярная среди Java-разработчиков.
IDE предоставляют комплексный набор инструментов для разработчиков в едином интерфейсе, включая редактор кода, компилятор/интерпретатор, средства отладки и автоматического дополнения кода.
4
PyCharm
Специализированная IDE для Python.

Слайд #25

Программирование. Инструменты и технологии.
Системы контроля версий.
1
Git
Наиболее популярная распределенная система контроля версий.
2
SVN (Subversion)
Централизованная система контроля версий.
Системы контроля версий позволяют отслеживать и управлять изменениями в коде, облегчают совместную работу в команде.

Слайд #26

Программирование. Инструменты и технологии.
Фреймворки и библиотеки.
1
React, Angular, Vue.js
Популярные фреймворки и библиотеки для разработки веб-приложений.
2
.NET Framework/Core
Используется для разработки приложений на C# и других языках, поддерживаемых Microsoft.
3
Spring
Широко используемый фреймворк для создания корпоративных приложений на Java.
Фреймворки и библиотеки предоставляют предварительно написанный код для решения общих задач разработки, ускоряя процесс создания приложений.

Слайд #27

Программирование. Инструменты и технологии.
Средства сборки и автоматизации.
1
Maven и Gradle
Для автоматизации сборки проектов на Java.
2
Webpack
Для сборки модулей JavaScript в бандлы.
3
Jenkins, GitLab CI/CD, GitHub Actions
Для непрерывной интеграции и доставки (CI/CD)
Автоматизация сборки и развертывания кода помогает ускорить процесс разработки и обеспечить его воспроизводимость.

Слайд #28

Программирование. Инструменты и технологии.
Системы управления базами данных (СУБД).
1
Relational (SQL)
MySQL, PostgreSQL, Microsoft SQL Server.
2
NoSQL
MongoDB, Cassandra, Redis.
СУБД используются для хранения, извлечения и управления данными.

Слайд #29

Программирование. Инструменты и технологии.
Средства тестирования.
1
JUnit (для Java), pytest (для Python)
Для модульного тестирования.
2
Selenium
Для автоматизации тестирования веб-приложений.
3
LoadRunner
Для нагрузочного тестирования.
Инструменты тестирования помогают обнаруживать ошибки и улучшать качество кода. Существуют различные инструменты для модульного тестирования, интеграционного, нагрузочного и автоматизированного тестирования UI.

Слайд #30

Программирование. Инструменты и технологии.
Средства документации.
1
Doxygen
Для генерации документации из исходного кода.
2
Swagger
Для документации RESTful API.
Документирование кода и проекта важно для поддержки и развития программного продукта. Инструменты документирования помогают создавать, организовывать и поддерживать техническую документацию.

Слайд #31

Программирование. Инструменты и технологии.
Облачные платформы и сервисы.
1
AWS (Amazon Web Services)
2
Microsoft Azure
3
Google Cloud Platform
Облачные платформы предоставляют инфраструктуру, платформы и программное обеспечение как сервис, что позволяет разработчикам сосредоточиться на коде, не беспокоясь о поддержке инфраструктуры.

Слайд #32

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

Тестирование программного обеспечения — это процесс оценки программы путем запуска и мониторинга её работы с целью обнаружения ошибок и проверки, что программа соответствует заданным требованиям. Этот процесс может быть автоматизирован или выполнен вручную и включает в себя различные типы и уровни тестирования.

Слайд #33

Программирование. Тестирование и отладка.
Тестирование ПО.
Модульное тестирование (Unit
Testing)
Проверка отдельных компонентов или модулей программы на корректность выполнения их функций.
Интеграционное тестирование (Integration Testing)
Проверка взаимодействия между модулями или компонентами системы, чтобы убедиться, что они работают корректно вместе.
Системное тестирование (System
Testing)
Тестирование полной интегрированной системы для проверки её соответствия спецификациям.
Приемочное тестирование (Acceptance Testing).
Проверка готового продукта пользователями или заинтересованными сторонами на соответствие их ожиданиям и требованиям.

Слайд #34

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

Слайд #35

Программирование. Тестирование и отладка.
Отладка ПО.
Воспроизведение ошибки
Понимание условий, при которых проявляется ошибка, и её воспроизведение в контролируемой среде.
Локализация проблемы
Определение участка кода, где возникает ошибка, с помощью инструментов отладки, логов, ассертов и других средств.
Изучение и исправление
Анализ причин возникновения ошибки, внесение изменений в код и их тестирование для убеждения в корректности исправления.
Рефакторинг и оптимизация
Улучшение структуры и качества кода для предотвращения повторения подобных ошибок в будущем.

Слайд #36

Программирование. Тестирование и отладка.
Инструменты для тестирования и отладки.
Среды разработки (IDE)
Такие как Visual Studio, IntelliJ IDEA, Eclipse, предоставляют встроенные средства для отладки кода.
Система автоматизированного
тестирования
Например, Selenium для веб-приложений, JUnit для Java, pytest для Python, облегчают создание и запуск тестов.
Инструменты профилирования и
анализа производительности
Такие как Valgrind, VisualVM, помогают выявлять узкие места в производительности и использовании ресурсов.
Система управления ошибками
Например, JIRA, Bugzilla, позволяют отслеживать и координировать процесс исправления ошибок.

Слайд #37

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

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

Слайд #38

Программирование. Языки программирования.
Уровни языков программирования.
Языки программирования можно классифицировать на высокоуровневые и низкоуровневые:

Низкоуровневые языки тесно связаны с архитектурой компьютера и включают в себя ассемблер и машинный код. Они предоставляют высокую степень контроля над аппаратным обеспечением, но программирование на них сложно и подвержено ошибкам.
Высокоуровневые языки абстрагируются от деталей аппаратного обеспечения и предлагают более удобные средства для разработки, такие как управление памятью, высокоуровневые структуры данных и объектно-ориентированное программирование. Это делает их более доступными и удобными для программистов.

Слайд #39

Программирование. Языки программирования.
Популярные языки программирования.
Python. Интерпретируемый, высокоуровневый язык с динамической типизацией. Известен своей читаемостью и простотой. Широко используется в веб-разработке, науке о данных, искусственном интеллекте и автоматизации.

JavaScript. Язык сценариев, первоначально разработанный для веб-разработки, для создания интерактивных веб-страниц. С тех пор его область применения расширилась на серверную разработку (Node.js), мобильные приложения и даже игры.

Java. Строго типизированный объектно-ориентированный язык программирования, разработанный с учетом принципа "Write Once, Run Anywhere" (WORA). Широко используется для разработки корпоративных приложений, мобильных приложений (Android) и встраиваемых систем.

C# (C Sharp). Разработанный Microsoft объектно-ориентированный язык программирования, используемый в основном для разработки на платформе .NET. Часто применяется для создания Windows-приложений, игр (с использованием Unity) и корпоративных систем.

Слайд #40

Программирование. Языки программирования.
Популярные языки программирования.
C/C++. C — процедурный язык программирования, в то время как C++ поддерживает и объектно-ориентированное, и процедурное программирование. Оба языка широко используются в системном программировании, разработке программного обеспечения и играх из-за их высокой производительности и гибкости.

Swift. Язык программирования, разработанный Apple для разработки приложений под iOS, macOS, watchOS и tvOS. Отличается высокой производительностью и безопасностью.

Go (Golang). Статически типизированный компилируемый язык, разработанный в Google. Основные преимущества — простота, эффективность и встроенная поддержка конкурентности.

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

Слайд #41

Программирование. Языки программирования.
Выбор языка программирования.
Выбор языка программирования зависит от множества факторов, включая специфику задачи, требования проекта, наличие библиотек и фреймворков, а также личные предпочтения и опыт программиста. Некоторые языки лучше подходят для определенных типов задач, например, Python часто выбирают для проектов в области машинного обучения, а JavaScript — для веб-разработки.

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

Слайд #42

Программирование. Языки программирования.
Классификация языков программирования.

Слайд #43

Программирование. Языки программирования.
Классификация языков программирования.

Слайд #44

Программирование. Языки программирования.
Сравнительная таблица языков программирования.

Слайд #45

Программирование. Языки программирования.
Сравнительная таблица языков программирования.

Слайд #46