
- •Основы алгоритмизации
- •Специфика решения задачи с использованием компьютера
- •Роль моделирования при решении сложных задач
- •Устройство компьютера как инструмента решения задач
- •Пример решения задачи с использованием компьютера
- •Вопросы для самоконтроля
- •Понятие алгоритма
- •Свойства алгоритмов и способы их задания
- •Понятие структурной алгоритмизации
- •Базовый набор алгоритмических структур
- •Примеры классических алгоритмов
- •Переменные-счетчики и аккумуляторы
- •Алгоритм перестановки значений двух переменных
- •Простейший алгоритм сортировки
- •Последовательный и двоичный поиск в массиве данных
- •Вопросы для самоконтроля
- •Основы программирования
- •Изучить три темы:
- •Ответить на вопросы для самоконтроля по каждой теме.
- •Эволюция программирования как деятельности
- •Развитие вычислительной техники
- •Парадигмы современного программирования
- •Уровни языков программирования
- •Современные языки программирования высокого уровня
- •Программирование как вид деятельности
- •Вопросы для самоконтроля
- •Инструменты программирования
- •Основные понятия программирования
- •Этапы разработки программы
- •Функции транслятора в процессе создания программы
- •Средства создания программ
- •Современные системы программирования
- •Вопросы для самоконтроля
- •Проектирование и внедрение программ
- •Этапы разработки программного обеспечения
- •Методы маркетинга программного обеспечения
- •Вопросы для самоконтроля
- •Технология алгоритмического программирования
- •Ответить на вопросы для самоконтроля по каждой теме.
- •Понятия алгоритмического программирования
- •Классификация данных
- •Базовые типы данных
- •Структурированные данные
- •Программа как совокупность операторов. Виды операторов
- •Вопросы для самоконтроля
- •Принципы структурного программирования
- •Понятие подпрограммы
- •Процедуры и функции как разновидность подпрограмм
- •Ответить на вопросы для самоконтроля по каждой теме.
- •Программный код экранной формы
- •Вопросы для самоконтроля
- •Объектно-ориентированное программирование
- •Понятие объекта и класса
- •Концепции объектно-ориентированного программирования
- •Вопросы для самоконтроля
- •Заключение
- •3.3. Глоссарий (краткий словарь терминов)
- •3.4 Технические и программные средства обеспечения дисциплины
-
Концепции объектно-ориентированного программирования
Объектно-ориентированное программирование базируется на трех ключевых концепциях (рис. 3.20).
Рис. 3.20 Составляющие ООП
Инкапсуляция:
-
объединение данных с методами в одном типе (классе),
-
ограничение доступа к данным объектов и реализации методов классов,
-
использование готовых классов на основе их описаний.
Наследование:
-
возможность создания на основе имеющегося класса новых классов с наследованием всех его свойств и методов и добавлением собственных,
-
класс, не имеющий предшественника, называется базовым.
Объектно-ориентированные языки поддерживают наследование так, что можно порождать классы и создавать на их основе новые объекты, имеющие помимо всех характеристик родительских классов еще и дополнительные свойства (рис. 3.21).
Пример:
Class Животное; *Описание класса*
Название: string;
Размер: integer;
Procedure Перемещаться;
Procedure Размножаться;
End;
Class Животное.Кошка *Экземпляр класса ЖИВОТНОЕ с
Покров: string * новыми свойствами
Procedure Питаться;
Полиморфизм - возможность переопределения методов у класса-наследника.
Например, экземпляр «Мурка» класса ЖИВОТНОЕ выполняет метод «Перемещаться» не так, как экземпляр «Флиппер». Переопределяемый метод имеет то же название, что и у базового класса, однако компилятор распознает, какой конкретно метод следует выполнять.
Рис. 3.21 Наследование свойств и методов класса-родителя классами-потомками
Таким образом, можно создавать собственные операторы, изменяя способ действия существующего оператора при применении его к конкретному объекту. За счет написания специальной методов перегрузки оператора можно заставить любой оператор иначе работать с объектом.
Вопросы для самоконтроля
-
Назовите три базовые характеристики реальных объектов окружающего мира, воплощенные в понятии «объект» объектно-ориентированного программирования.
-
Сопоставьте понятия «класс» и «экземпляр класса»
-
Каким механизмом обеспечивается целостность объекта? Поясните особенности применения ключевых слов Private и Public.
-
Назовите три ключевые концепции объектно-ориентированного программирования.
-
Поясните смысл концепции инкапсуляции.
-
Поясните, что понимается под наследованием в ООП.
Заключение
Вы закончили работу над курсом «Программирование и основы алгоритмизации». Получили теоретические знания в области инструментов, языков и технологий программирования и практические навыки использования этого инструментария для создания работающих компьютерных программ.
Вы познакомились с фундаментальными основами алгоритмизации, освоили базовые алгоритмические структуры и способы их записи на популярных языках программирования, получили навыки обработки основных типов данных.
Надеемся, что Вы сможете применить полученные умения при решении сложных жизненных задач, а полученные знания Вам пригодятся при изучении других дисциплин, в научных исследованиях, дипломном проектировании и в дальнейшей профессиональной деятельности.
3.3. Глоссарий (краткий словарь терминов)
Алгоритм |
1. Точное предписание, определяющее вычислительный процесс, ведущий от варьируемых исходных данных к искомому результату 2. Точно определенное формальное описание способа решения задачи путем разбиения ее на конечную по времени последовательность действий (элементарных операций) |
Архитектура клиент-сервер |
На выделенном мощном компьютере сети (сервере данных) хранятся данные, доступные для модификации компьютерам-клиентам |
Архитектура компьютерных приложений |
Способ взаимодействия приложений, работающих на разных компьютерах сети |
Архитектура файл-сервер |
На выделенном мощном компьютере сети (файловом сервере) хранятся файлы, доступные для копирования компьютерам-клиентам |
Базовый набор алгоритмических структур |
Алгоритм любой степени сложности можно построить с помощью основного базового набора структур: последовательной (линейной), ветвящейся и циклической |
Блок-схема алгоритма |
Это графический документ, содержащий последовательность предписаний в виде типовых геометрических фигур |
Ветвящаяся алгоритмическая структура |
Фрагмент алгоритма, в котором в зависимости от исходных данных или промежуточных результатов вычисления реализуются по одному из нескольких заранее предусмотренных направлений |
Динамические переменные |
переменные, создаваемые и уничтожаемые на разных этапах функционирования программы |
Инициализация переменной |
Присвоение начального значения |
Инкапсуляция |
Объединение данных с методами в одном классе и ограничение доступа к ним извне |
Интерпретатор |
Транслятор, который сразу выполняет команды языка, указанные в тексте программы |
Исполнимый код |
Законченная программа, которую можно запустить на любом компьютере, где установлена операционная система, для которой эта программа создавалась. Итоговый файл имеет расширение ЕХЕ |
Класс |
Новый тип данных, основанный на единой структуре сходных объектов |
Комментарии |
Части исходных текстов, выделяемые с помощью специальных обозначений и пропускаемые компилятором при анализе текста программы |
Компилятор |
Транслятор, который переводит текст программы, написанной на языке программирования, в машинный код для автономного выполнения |
Константы |
Данные, которые при выполнении алгоритма (программы) всегда определены и неизменны |
Линейная алгоритмическая структура |
Отдельные предписания алгоритма выполняются в порядке записи независимо от значений исходных данных и промежуточных результатов |
Логические скобки |
Объединяют группу операторов в блок |
Массив |
Упорядоченное множество однотипных переменных (элементов массива), объединенных общим именем и отличающихся номерами (индексами) |
Машинный код процессора |
Последовательность двоичных чисел |
Многозвенная архитектура |
Для целей хранения и обработки данных в сети выделяются специализированные серверы (сервер данных, сервер приложений, монитор транзакций), обеспечивающие выполнение запросов от компьютеров-клиентов |
Наследование |
Возможность создания на основе имеющегося класса новых классов с наследованием всех его свойств и методов и добавлением собственных |
Объект |
Совокупность свойств, методов и событий. Могут иметь идентичную структуру и отличаться только значениями свойств |
Оперативная память |
Состоит из набора запоминающих ячеек (бит), сгруппированных по 8 штук (байт) |
Описание переменных |
Указание типа хранимых данных |
Отладка программы |
Процесс устранения ошибок в программе |
Отладчик |
Предназначен для анализа работы программы во время ее выполнения (проверка работоспособности алгоритма – семантический анализ) |
Переменные |
Условные обозначения данных, которые в процессе выполнения программы не меняют своего типа, но могут менять свое фактическое значение |
Подпрограммы |
Новые операторы языка, определяемые программистом |
Полиморфизм |
Возможность переопределения методов у класса-наследника |
Приведение типов данных |
Преобразование типов данных друг в друга в соответствии с соглашениями языка программирования |
Программа |
Логически упорядоченная последовательность команд, необходимых для управления компьютером при решении определенной задачи |
Процедуры |
Подпрограммы, выполняющие группу операторов |
Процессор |
Интегральная микросхема, выполняющая основные вычислительные функции компьютера |
Псевдокод |
Наиболее простая форма представления алгоритма - словесное описание как последовательность предписаний на подмножестве естественного языка |
Распределенная (компонентная) архитектура |
Приложение рассматривается как набор компонентов, выполняемых на любых серверах, связанных в сеть. Доступ к компонентной системе возможен с мобильных устройств |
Редактор связей (сборщик) |
Предназначен для связывания объектных модулей и машинного кода стандартных библиотечных функций в работоспособное приложение – исполнимый код для конкретной платформы (типа процессора и операционной системы) |
Семантика языка программирования |
Смысл конструкций языка |
Синтаксис языка программирования |
Совокупность правил записи операторов. |
Среды быстрого проектирования (Rapid Application Development, RAD-среды) |
Реализуют визуальный подход к программированию: элементы оформления оконного интерфейса создаются перетаскиванием готовых визуальных компонентов в проектируемое окно; свойства компонентов настраиваются в редакторах свойств; исходный текст программы генерируется RAD-средой автоматически. |
Статические переменные |
Переменные, существующие на всем протяжении работы программы |
Структурное программирование |
Технология пошагового разбиения алгоритма на все более мелкие части с целью получить такие элементы, для которых можно легко написать конкретные предписания |
Структуры |
Описание разнотипных данных, объединенных одним именем, в виде, максимально приближенном к их реальным аналогам |
Текст программы |
1. Полное, законченное и детальное описание алгоритма на языке программирования |
2. Линейная последовательность операторов базовых алгоритмических структур (операторов присваивания, условных операторов, циклов) и комментариев |
|
Текстовый редактор |
Предназначен для написания программы на языке программирования |
Тестирование программы |
Процесс поиска семантических ошибок в программе |
Транслятор |
Переводит текст программы в машинный код процессора |
Фактические параметры подпрограммы |
Указываются и передаются при вызове подпрограммы из главной программы
|
Формальные параметры подпрограммы |
Указываются в заголовке подпрограммы и служат для описания ее тела |
Функции |
Подпрограммы, вычисляющие значение и передающие его в главную программу |
Цикл с заданным условием окончания работы (цикл-ДО) |
Тело цикла выполняется хотя бы один раз. Выход из конструкции цикл-ДО осуществляется по достижении заданного значения признака. |
Цикл с заданным условием продолжения работы (цикл-ПОКА) |
При выполнении условия продолжения работы выполняется тело цикла; если условие не выполняется, то работа циклической структуры заканчивается и начинает выполняться следующая структура основного алгоритма. Предусматривает вариант, когда тело цикла не выполняется ни разу |
Циклическая алгоритмическая структура |
Выполнение некоторых операторов (групп операторов) осуществляется многократно с одними и теми же или модифицированными данными |
Экземпляр класса |
Конкретный объект, имеющий структуру данного класса |
Языки программирования |
Служат для представления алгоритма в компьютерном виде |
Языки программирования высокого уровня |
Ориентированы на понимание человеком, не учитывают особенности конкретных компьютерных архитектур, исходные тексты легко переносимы на другие платформы (операционные системы). |
Языки программирования низкого уровня |
Ориентированы на конкретный тип процессора и учитывают его особенности |