- •Информатика Конспект лекций
- •Кодирование текстовых данных
- •Универсальная система кодирования текстовых данных
- •Основные структуры данных
- •Упорядочение структур данных
- •Состав вычислительной системы
- •Базовая аппаратная конфигурация
- •Внутренние устройства системного блока
- •Системы, расположенные на материнской плате
- •4.1. Обеспечение интерфейса пользователя
- •4.2. Обеспечение автоматического запуска
- •4.3. Организация файловой системы
- •4.6. Взаимодействие с аппаратным обеспечением
- •4.7. Обслуживание компьютера
- •4.8. Прочие функции операционных систем
- •4.3. Организация файловой системы
- •4.6. Взаимодействие с аппаратным обеспечением
- •4.7. Обслуживание компьютера
- •4.8. Прочие функции операционных систем
- •4.3. Организация файловой системы
- •4.6. Взаимодействие с аппаратным обеспечением
- •4.7. Обслуживание компьютера
- •4.8. Прочие функции операционных систем
- •8.1. Компьютерные сети
- •Системы программирования
- •Алгоритмическое (модульное) программирование
- •Структурное программирование
- •Лекция 9 Объектно-ориентированное программирование
- •Средства автоматизации научно-исследовательских работ Компьютер как инструмент научной работы
- •Лекция 11 Основы представления графических данных
- •Лекция 12 Вопросы компьютерной безопасности
- •Лекция 13 Работа с базами данных Основные понятия баз данных
- •Проектирование баз данных
- •Лекция 14 Создание простых текстовых документов
- •Применение электронных таблиц для расчетов
- •Обработка данных средствами электронных таблиц
- •Создание электронных таблиц Microsoft Excel
- •Применение электронных таблиц для научных расчетов
Структурное программирование
Подпрограммы
Набора операторов, выполняющих нужное действие и не зависящих от других частей исходного кода. Программа разбивается на множество мелких подпрограмм (занимающих до 50 операторов — критический порог для быстрого понимания цели подпрограммы), каждая из которых выполняет одно из действий, предусмотренных исходным заданием.
Возможность применения подпрограмм относит язык программирования к классу процедурных языков.
Подпрограммы бывают двух видов — процедуры и функции. Отличаются они тем, что процедура просто выполняет группу операторов, а функция вдобавок вычисляет некоторое значение и передает его обратно в главную программу (возвращает значение). В Си++ понятия «процедура» нет.
Подпрограммы могут быть вложенными — допускается вызов подпрограммы не только из главной программы, но и из любых других подпрограмм.
В некоторых языках программирования допускается вызов подпрограммы из себя самой. Такой прием называется рекурсией и потенциально опасен тем, что может привести к зацикливанию — бесконечному самовызову.
Структура подпрограммы
Формальные и фактические параметры
Лекция 9 Объектно-ориентированное программирование
Понятие объекта
В середине 80-х годов в программировании возникло новое направление, основанное на понятии объекта. Реальные объекты окружающего мира обладают тремя базовыми характеристиками: они имеют набор свойств, способны разными методами изменять эти свойства и реагировать на события, возникающие как в окружающем мире, так и внутри самого объекта. Именно в таком виде в языках программирования и реализовано понятие объекта, как совокупности свойств (структур данных, характерных для этого объекта), методов их обработки (подпрограмм изменения свойств) и событий, на которые данный объект может реагировать и которые приводят, как правило, к изменению свойств объекта.
Появление возможности создания объектов в программах качественно повлияло на производительность труда программистов и обеспечить высокую надежность программ, а так же повторно использовать ранее созданные объекты в других задачах.
Класс
Объекты могут иметь идентичную структуру и отличаться только значениями свойств. В таких случаях в программе создается новый тип, основанный на единой структуре объекта (по аналогии с тем, как создаются новые типы для структур данных). Он называется классом, а каждый конкретный объект, имеющий структуру этого класса, называется экземпляром класса.
Описание нового класса
В Паскале для описания класса используется ключевое слово class.
class TMyClass // Начало описания состава класса
Iteml: integer;// Переменная №1 в составе класса
Item2: string; // Переменная №2 в составе класса
function GetSum(n: integer): integer; // Функция
procedure Initialize; // Процедура
end; // Обязательное окончание класса
При определении подпрограмм, принадлежащих конкретному классу, его методов, в заголовке подпрограммы перед ее названием явно указывается, к какому классу она принадлежит. Название класса от названия метода отделяют специальные символы точка в Паскале.
procedure TMyClass.Initialize;
begin
Iteml := 1;
Item2 := "";
end;
Класс — это тип данных, такой же, как любой другой базовый или сложный тип. На его основе можно описывать конкретные объекты (экземпляры классов).
var Cl, C2: TMyClass; // Описание конкретных объектов
//(экземпляров) класса
Доступ к свойствам объектов и к их методам осуществляется так же, как к полям записей, через точку:
Cl.Iteml := 5; // Доступ к переменной класса
С2.Initialize; // Запуск процедуры – члена класса
х := Cl.GetSum(21); // Запуск функции– члена класса
Объединение данных с методами в одном типе (классе) называется инкапсуляцией.
Наследование
Важнейшая характеристика класса — возможность создания на его основе новых классов с наследованием всех его свойств и методов и добавлением собственных. Класс, не имеющий предшественника, называется базовым. Наследование позволяет создавать новые классы, повторно используя уже готовый исходный код и не тратя времени на его переписывание.
Полиморфизм
В большинстве случаев методы базового класса у классов-наследников приходится переопределять — объект класса «кошка» выполняет метод «идти» совсем не так, как объект класса «амеба». Все переопределяемые методы по написанию (названию) будут совпадать с методами базового объекта, однако компилятор по типу объекта (его классу) распознает, какой конкретно метод надо использовать, и не вызовет для объекта класса «кошка» метод «идти» класса «животное». Такое свойство объектов переопределять методы наследуемого класса называется полиморфизмом.
Визуальное программирование
Технологии объектного, событийного и структурного программирования сегодня объединены в .RAD-системах, которые содержат множество готовых классов, представленных в виде визуальных компонентов, которые добавляются в программу одним щелчком мыши. Программисту надо только спроектировать внешний вид окон своего приложения и определить обработку основных событий — какие операторы будут выполняться при нажатии на кнопки, при выборе пунктов меню или щелчках мышкой. Весь вспомогательный исходный код среда сгенерирует сама, позволяя программисту полностью сосредоточиться только на реализации алгоритма.
Этапы разработки программ
Программы небольшого и среднего размера (несколько тысяч строк) создаются, как правило, в два этапа. Сначала необходимо точно установить, что надо сделать, продумать соответствующий алгоритм, определить структуры данных, объекты и взаимодействие между ними (это этап системного анализа), а затем выразить этот алгоритм в виде, понятном машине (этап кодирования). Если же разрабатывается крупный проект объемом от десятков тысяч до миллионов строк кода, тогда приходится применять специальные методологии проектирования, охватывающие период разработки ПО.
Период разработки ПО
Рассмотрим классический период разработки ПО.
1. Формируются и анализируются требования к проекту. Этот этап самый важный, так как неправильное формулирование требований приводит к выполнению ненужной работы, а недооценка сложности вызывает перерасход средств и времени. Сегодня около 60 % крупных проектов завершаются неудачей именно из-за ошибок на стадии подготовки требований.
После согласования требований подписывается контракт на разработку ПО. В дальнейшем любые отклонения от сформулированных требований к продукту (как со стороны заказчика, так и со стороны исполнителя) рассматриваются как нарушение контракта.
2. Начинается предпроектное обследование объекта автоматизации. На этом этапе привлекаются специалисты заказчика и эксперты, хорошо знакомые с предметной областью, для которой составляется задача.
Примерный объем работ второго этапа до 10 % от общего.
3. На основе формальной модели составляется подробное техническое задание для программистов, спецификации отдельных модулей, таблицы баз данных, другая сопроводительная документация. Готовится подробный календарный план работ, где указываются все сроки, конкретные исполнители и выполняемые объемы работ (понедельно, помесячно).
Примерный объем работ третьего этапа до 10 % от общего.
4. Выбирается методология разработки ПО и начинается разработка (кодирование). Достаточно популярна методология итерационного проектирования. Она позволяет быстро создать первый работающий прототип программы, когда еще требования к ней окончательно не определены, а в дальнейшем, на следующих итерациях (их обычно требуется от двух до пяти), постепенно детализировать и реализовывать конкретные возможности, пропущенные по каким-то причинам на предыдущей итерации.
В процессе разработки необходимо:
непрерывно поддерживать обратную связь с заказчиком, чтобы следить за правильностью реализации требований;
непрерывно контролировать ход работ в соответствии с планом и при отклонениях от него принимать экстренные меры.
Примерный объем этих работ до 10 % от общего объема проекта.
5. Когда программа закончена (готова работоспособная альфа-версия), она поступает к тестерам компании-исполнителя, которые проверяют ее на наличие ошибок и сообщать о найденных ошибках программистам. Анализируется, в частности, устойчивость работы программы при вводе недопустимых или критических значений, при отсутствии информации, при неверных действиях, при сбоях аппаратуры, в стрессовых режимах и т. п. Когда число ошибок, выявляемых за определенный срок (неделя, месяц), снижается ниже экспериментально подобранного уровня (на основе аналогичных проектов), начинается бета-тестирование программы у заказчика.
Примерный объем этих работ до 10 % от общего объема проекта.
После того как заказчик удовлетворен качеством продукта, начинается его внедрение — подготовка к окончательному запуску в эксплуатацию. Этот этап самый трудоемкий и «нудный» и занимает порой до 90 % времени всего проекта. Для систем автоматизации больших предприятий он растягивается на годы.
После того как новая система готова к работе, сотрудников организации заказчика нужно обучить работе с этой системой. Примерный объем трудозатрат на обучение — 5 % от общего объема проекта.
После того как заказчик подписывает акт приемки, проект считается завершенным, но связь с исполнителем не теряется. Неизбежно и возникновение ошибок, которые требуется устранять. Сотрудничество с заказчиком по обслуживанию системы называется сопровождением.
Реально объем непосредственного программирования и отладки (тестирования) в цикле разработки обычно составляет 10-20 % от общего объема работ.
Повышение индивидуального мастерства
Применяется методология PSP (Personal Software Process), ориентированная на индивидуальных разработчиков. Она включает этапы:
Перед началом проекта составляется подробный календарный план работ и производится попытка оценить его объем в строках кода и рабочих днях.
Весь процесс работы детально хронометрируется, а найденные ошибки подробно описываются — накапливается статистика.
По окончании проекта весь процесс тщательно анализируется и делаются выводы о том, что можно улучшить в своей работе, каких ошибок надо стараться избегать, какова реальная производительность труда и т. п. Сегодня лучшая характеристика программиста — это не просто знание Си++ или Delphi, a способность планировать свой труд, разрабатывать программу точно в срок и без ошибок.
Методы маркетинга программного обеспечения
Коммерческое ПО. При создании программного продукта издатель, выполнив анализ рынка, заказывает у исполнителя разработку такого ПО, которое должно пользоваться на рынке спросом, и выделяет на его создание деньги. По окончании работ издатель получает все имущественные права на созданный продукт (право на тиражирование, продажу под собственной торговой маркой, право на получение дохода от программы любым способом). За исполнителем навечно остаются авторские права на программу — право указывать свое имя или логотип своей фирмы на начальной заставке, в документации, на упаковочной коробке.
Условно-бесплатное ПО (shareware). Не имея средств на рекламные кампании, отдельные разработчики предоставляют возможность получения ознакомительных версий их программ (демонстрационных или имеющих искусственные ограничения) через Интернет, Если человеку эта программа нравится, он оплачивает небольшую сумму и получает полную работоспособную версию.
Бесплатное ПО (freeware, public domain). Такие программы не имеют никаких ограничений, однако автор может попросить заплатить ему некоторую сумму, не настаивая, впрочем, на этом (это метод freeware). Стимулом к созданию freeware контакты с коллегами, а в случае удачно созданной программы получить известность и, как правило, приглашение на хорошую работу.
Лекция 10
