4508

Разработка Windows-программ. Знакомство с Delphi

Контрольная

Информатика, кибернетика и программирование

Разработка Windows-программ. Знакомство с Delphi Основой системы разработки является VCL. Визуальный конструктор форм позволяет брать компоненты-заготовки из палитры компонентов, размещать на форму, изменять свойства, добавлять методы обработки собы...

Русский

2012-11-21

75.13 KB

4 чел.

Разработка Windows-программ. Знакомство с Delphi

Основой системы разработки является VCL.

Визуальный конструктор форм позволяет брать компоненты-заготовки из палитры компонентов, размещать на форму, изменять свойства, добавлять методы обработки событий.

При этом автоматически генерируется значительная часть кода программы.

Подобные технологии обозначаются как RAD - Rapid Applications Development, или обобщенным термином – Visual. Технология RAD - увеличивает производительность труда программиста, но довольно расточительна по вычислительным ресурсам.

Результаты разработки в Delphi сохраняются в нескольких разнородных файлах, объединенных в Project.

Файлы проекта:

*.dpr – головной файл Delphi project

*.pas – исходный текст программы

*.dcu – откомпилирванный текст программы, объектный модуль.

*.dfm – описание формы, сконструированной в визуальном конструкторе

*.resWindows-ресурсы (иконки, меню, текстовые строки)

Окна Delphi: Главная панель управления содержит Меню, SpeedButton, палитру VCL

Form – окно визуального конструирования формы приложения

Object Inspector – просмотр и изменение свойств объекта, выбранного на форме

Project manager – состав проекта и управление им: добавление, удаление, настройка опций

Source Editor – редактор текстов программ

Watch – одно из окон отладчика

Delphi-VCL реализована в технологии ООП

Введение в объектно-ориентированное программирование (ООП )

Основная идея ООП - соединить в одном объекте данные и обработку.

Раздел TYPE 

Нам уже знакома структура Record – описание собственных типов данных (вспомните List - Cell); развитием идеи будет  Class – описание типа объекта, включает описание структуры данных и функции обработки этих данных.

Object – реально созданный экземпляр по описанию class

  1.  Properties – данные в object/class
  2.  Methods – функции обработки данных внутри object/class

Class имеет раздел public и private.

Public – данные и функции, доступные извне – интерфейс класса.

Private - данные и функции, доступные только внутри класса

Основные свойства класса:

Инкапсуляция – полное описание свойств объекта и действия с ним находятся внутри класса, причем реализацию можно скрыть, в private-разделе.

Пример из VCL: Form – свойства окна и обработка событий

Наследование – на основе существующего класса можно сделать свой, добавив новые свойства и функции. Например, на основе базового класса TForm мы конструируем свой TForm1, добавляя новые компоненты и функции. Просмотрите текст программы, раздел TYPE.

Полиморфизм – возможность переопределения функций, т.е. допускается существование функций с одним именем но с разнличными параметрами

Постановка задачи  ТЗ:

Разработать программу копирования файлов в стиле командной строки MS-DOS

Командная строка: _COPY <PathSrcFile> <PathTargetFile>

Платформа: Программа должна выполняться на платформах MS-DOS и MS Windows (OS/2).

Пользователи: Программа рассчитана на пользователей средней квалификации (учесть в Help и сообщениях).

Функциональность: 

  1.  Обеспечить копирование одиночных файлов и группы файлов по маске.
  2.  На экран выводится сообщение по результатам копирования каждого файла
  3.  По первому параметру /? выдавать Help

Возможные ошибки, обработка ошибок:

  1.  При ошибке в параметрах выдавать звуковой сигнал и Help
  2.  При ошибке чтения/записи файлов программа завершается ???
  3.  Если результирующий файл существует, то (?) варианты обработки:
  4.  Переписать
  5.  Не переписывать, завершить программу
  6.  Выдать запрос пользователю, действовать по ответу.
  7.  (?) Можно задать необязательный параметр [/s | /r] ? т.е. save | rewrite

Спецификация на разработку программы:

Программа копирует один или несколько файлов из исходной директории в результирующую

Командная строка:

_COPY <PathSrcFile[s]> <PathTarget> [/S|/R]

Описание работы программы:

Выдать титульную строку

Проанализировать 1-й параметр:

если /? – выдать Help  STOP (завершение программы)

иначе это <PathSrcFile[s]>

Обработать <PathSrcFile[s]>:

Выделить директорию и имя файла (маску)

Проверить существование директории <PathTarget>,

если нет, то сообщение об ощибке и  STOP

В цикле Искать очередной исходный файл, сответствующий маске

Проверять наличие результирующего файла с таким именем,

Если есть – обрабатывать ситуацию…

Запускать операцию копирования файла (функция, самодельная или библиотечная FileCopy())

 Контролировать результат выполнения копирования

Конец цикла

Завершение программы

Замечания по реализации:

Выдавать титульную строку и сообщение при завершении программы.

Язык реализации PASCAL

Разработка программного продукта

Цель лекционной темы - рассмотреть:

  1.  жизненный цикл ПП
  2.  этапы разработки ПП

Программа – небольшая разработка, до 2-х месяцев работы, до 1000 строк кода.

Программный проект – разработка, на которой задействовано более одного человека, трудозатраты более 2-х человеко-месяцев, более 1000 строк кода

Программный продукт – результат разработки, готовый к эксплуатации, к продаже.

Программное изделие – это определение из ГОСТ, включает все вышеперечисленное.

Будем говорить о разработке небольших проектов, 1-5 тыс. строк кода, время фазы разработки – 2-6 человеко-месяцев.

Используя современные технологии один разработчик может управлять проектом в 10000 строк, проект разбивается на модули, оптимальный размер модуля 200-400 строк.

Жизненный цикл ПП

Схема ЖЦП (здесь схема):

  1.  Фаза разработки,
  2.  Фаза использования,
  3.  Фаза продолжающейся разработки – исправление ошибок в программе и ошибок проектирования, доработка по уточненной постановке задачи, выпуск новых версий

Реализация:

  1.  Alpha-тестирование(alpha-версия) - только главные функции – вариант для себя.
  2.  Beta-тестирование(beta-версия) - все функции, с диагностика ошибок, с Help – вариант для «продвинутых» пользователей (advanced users).
  3.  Release (Version 1) - отлаженная программа, прошедшая тестирование во всех режимах –– это вариант для поставки пользователям.
  4.  исправления (Patches->Service Pack), обновления (Update), выпуск новых версий.

Рассмотрите, например, ЖЦП семейства OC Windows: Windows 3.1, 95, 98, NT, 2000;

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

Этапы разработки ПП: Постановка, Проектирование, Составление программы, Сборка и отладка, Тестирование

1 этап Постановка задачи (анализ требований)

  1.  Постановка начинается с анализа проблемы. Определяется главная информационная идея
  2.  Определяются назначение ПП,
  3.  функциональность,
  4.  уровень квалификации пользователей,
  5.  эксплуатационные характеристики будующего ПП,
  6.  требования к аппаратуре и операционной системе.

Результатом постановки задачи является документ «Техническое задание на разработку ПП» (ТЗ), который передается на этап проектирования.

В больших проектах постановкой занимается отдельная группа.

Плохо поставленая задача – это неуспех всего проекта, затягивание времени разработки, удорожание работ.

2 этап Проектирование (выбор методов решения) – основной этап в разработке ПП.

Все работы ведутся по ТЗ. Если в ТЗ обнаруживаются ошибки – необходимо вернуться на этап постановки задачи.

  1.  Производится выбор методов решения:
  2.  определение структуры данных,
  3.  разработка алгоритмов обработки,
  4.  разработка интерфейса с пользователем,
  5.  определение языка (языков) разработки.
  6.  Производится разбиение проекта на модули, строятся иерархические схемы взаимодействия модулей.
  7.  Для крупных модулей проекта производится самостоятельный этап проектирования.
  8.  Возможно моделирование проектных решений, например, для выбора структур данных или алгоритмов.

На этапе проектирования принимаются все крупные решения по разработке:

На выходе из этапа полностью определены структуры данных, алгоритмы обработки, интерфейсы с пользователем.

Результатом этапа проектирования является документ «Спецификация» – описание ПП на условном языке, языке проектирования.

3 этап Составление программы (кодирование) – по результатам проектирования разрабатывается программа на языке реализации.

Для больших проектов единицей работы на этом этапе является модуль.

Модули могут разрабатываться и отлаживаются отдельно, разными группами программистов.

В этот этап входит начальный период отладки

Результаты передаются на следующий этап

4 этап Сборка и отладка (компоновка) . Для больших проектов, разбитых на модули, необходим этап окончательной сборки и тестирования на соответствие спецификации.

5 этап Тестирование – проверка всего проекта на соответствие ТЗ. Для этого разрабатывается порядок и методика тестирования (ЕСПД).

На каждом этапе разработки могут выявляться ошибки предыдущих этапов, проблема передается «наверх», исправляется, цикл разработки повторяется.

Если по завершении очередного цикла разработки тестирование проходит удовлетворительно – принимается решение о передаче ПП в опытную эксплуатацию (alpha, beta-тестирование), разработка переходит в стадию продолжающейся разработки (см. ЖЦП)

Если в постановке задачи предусмотрено составление документации (см. ЕСПД) – она составляется и отлаживается одновременно с разработкой и должна быть готова к моменту передачи ПП в опытную эксплуатацию (!).

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

Примерное распределение трудозатрат по этапам разработки

  1.  Постановка – 20%;
  2.  Проектирование 35%;
  3.  Кодирование - 15%; 
  4.  Отладка и тестирование 30%.

Пример: Проект на 100 дней (5 месяцев), 2500 строк кода: 20 дней постановка, 35 – проектирование, 15 – кодирование, 30 – отладка, тестирование, передача в эксплуатацию.

Типичная ошибка – «быстрая постановка и проектирование» - приводят к увеличению сроков за счет этапа отладки, проект выходит из под контроля.

Другая типичная ошибка – не составление спецификации

(!) Учащиеся должны знать:

  1.  этапы разработки, их особенности, взаимосвязь
  2.  название и содержание документации, составляемой на каждом этапе
  3.  распределение временных затрат по этапам

Учащиеся должны понимать:

  1.  наиболее важными этапами при разработке ПП являются постановка задачи и особенно проектирование

Учащиеся должны уметь:

  1.  сделать постановку задачи на простую программу, сформировать ТЗ
  2.  по ТЗ спроектировать простую программу

Контрольные вопросы:

  1.  Cхема ЖЦП, фазы ЖЦП.
  2.  Что такое фаза продолжающейся разработки
  3.  Перечислить этапы разработки ПП, примерное распределение трудозатрат по этапам.
  4.  Выходной документ на этапе постановки задачи, его содержание
  5.  Выходной документ на этапе проектирования, его содержание

Метрология программного продукта

Цель лекции – научиться определять количественные характеристики программного продукта

Metrology – наука об измерениях

Ранее мы рассматривали жизненный цикл программного продукта (ЖЦП)

Для прогнозируемой разработки и использования ПП необходимо знать (и задавать) характеристики ПП на каждом этапе ЖЦП, в том числе количественные.

Метрология программного продукта – это получение количественных характеристик ПП на различных этапах жизненного цикла.

На стадии разработки оценивается сложность проекта и эффективность труда:

Используют такие оценки:

  1.  Число модулей, функций (подпрограмм) – характеризует сложность проекта
  2.  Число строк исходного кода – характеризует объем работы
  3.  Число операторов ветвления (if, case, циклы) – характеризует сложность логики
  4.  Число языков программирования (Delphi, SQL, HTML, Java-script)
  5.  Трудоемкость в человеко-месяцах
  6.  Число строк кода на человека в день.
  7.  Календарное время разработки
  8.  Себестоимость проекта

Пример:

Проект трудоемкостью 5 человеко-месяцев (3+1+1) (110 рабочих дней),

2500 строк кода,

300 операторов ветвления

разбит на 6 модулей, 25 функций и подпрограмм,

Языки разработки: Delphi, SQL, HTML, Java-script

Календарное время разработки 3,5 месяца

Число строк кода на человека в день 23.

Себестоимость разработки, версия 1: $10000

Подобные характеристики используют для оценки (самооценки) разработки. При планировании работ учитывают средние показатели производительности труда при предыдущих разработках.

На стадии использования (приобретения) оцениваются потребительские свойства ПП:

Часто используют сравнение с ПП аналогичного назначения (например, сравниваются архиваторы, Web-browsers)

Используют такие характеристики:

  1.  Платформа для эксплуатации ПП: архитектура ВС и ОС. (IBM PC, Mac, RS6000, AS/400)
  2.  Требуемые вычислительные ресурсы – процессор, частота, ОП, дисковая память, дополнительные устройства (принтер, сканер, СD, стриммер и т.д.), дополнительные условия (подключение к сети)
  3.  Производительность ПП – оценивается по специальной системе тестов, сравнивают с аналогами.
  4.  Трудоемкость установки
  5.  Трудоемкость сопровождения
  6.  Цена ПП
  7.  Продолжительность использования ПП

Пример:

Принимается решение о приобретении 100 лицензионных экземпляров ОС семейства Windows для рабочих мест (не самые мощные компьютеры IBM PC) – какую ОС выбрать сегодня?

Разработка Windows-программ.

Конструирование интерфейса пользователя.

Цель занятия: получить начальные знания в области конструирования программных интерфейсов.

Интерактивный - 1) взаимодействующий; согласованный; воздействующие друг на друга; 2) диалоговый режим доступа к ЭВМ

Интерфейс - 1) устройство сопряжения; 2) стык, область контакта, взаимодействия; 3) связующее звено между человеком и машиной. 4) Интерактивность

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

В современном индустриальном (технократическом) обществе большинство людей занято в материальном производстве. Необходимо создать им хорошие условия не рабочем месте и обеспечить удобными инструментами - тогда труд будет результативнее.

Пример: Аудитория, учебный процесс.

Повышение производительности туда - важная цель развития общества.

Человек вышел из дикой природы, психология восприятия в значительной степени основана на биологических создал свою среду обитания - город.

История вопроса "интерфейс с пользователем" - это история техники, примеры: кабина самолета, автомобиля, тепловоза, рабочее место на конвейере.

Есть компьютеры и программы, не предназначенные для непосредственного взаимодействия с пользователем: сервера, узлы Internet

Компьютеры и программы, предназначенные для интерактивной работы, снабжаются средствами взаимодействия с пользователем - интерфейсом.

Аппаратная часть интерфейса для современных ПК устоялась - это клавиатура, дисплей, мышь (трекбол, джойстик, шлем)

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

Интерфейс - лицо программы.

Примеры программных интерфейсов:

  1.  Работа в командной строке DOS/UNIX
  2.  программа Norton Commander
  3.  IDE Borland PASCAL
  4.  GUI (graphical user interface) Windows (Macintosh)
  5.  Интерактивная работа пользователя в сети Inernet
  6.  Наиболее яркие представители - игровые программы

В последние годы вид интерфейсов определяет набор элементов GUI-Windows.

Программы стали походить друг на друга по интерфейсу. (Это хорошо или плохо?)

Восприятие элементов интерфейса

Пользователь за компьютером - это оператор, который проводит много времени в работе, устает.

Цель разработчика программного интерфейса - обеспечить пользователю программы комфортные условия труда.

  1.  Избыток информации приводит к быстрой усталости.
  2.  Недостаток информации приводит к "сенсорному голоданию" - ощущению дискомфорта.
  3.  Наибольший контраст привлекает внимание в первую очередь (тестирование).
  4.  Большое количество близких по яркости и размеру элементов рассеивает внимание.
  5.  Опасные ситуации выделяются яркими цветами (желтый-красный-синий), миганием, звуком.
  6.  Постоянное воздействие ярких цветов и мерцания приводит к быстрой усталости.
  7.  Постоянное воздействие монотонного звука приводит к быстрой усталости.

Некоторые рекомендации по разработке программных интерфейсов

  1.  Интерфейс программы может состоять из нескольких форм разного назначения.
  2.  Самые важные элементы на форме выделяюся размером и контрастом.(Белый на черном)
  3.  Постоянная информация на форме не должна отвлекать внимание (например, надпись неярким шрифтом малого размера)
  4.  Большой объем постоянной информации выносится на отдельную форму (Help, About)
  5.  Полезно группировать элементы управления на отдельные панели, выделять рамкой, делать надпись.
  6.  Элементы управления, не задействованные в текущем режиме работы следует делать невидимыми или "уводить в тень".
  7.  Индивидуальность программе придают самостоятельно разработанные элементы графического оформления: иконки, графические кнопки, эмблема (visual), фон.

Программа, и интерфейс, коструируется в расчете на определенный уровень пользователя.

Представьте себя на его месте.

Анализируйте программы по конструкции интерфейса.

Особенности компоновки окон Windows

  1.  Управляйте размером и положением окна при запуске программ
  2.  Учитывайте разрешение дисплея.
  3.  Следите за изменением размеров окна пользователем, пропорционально сдвигайте элементы постоянного размера и меняйте размеры элементов переменного размера. (выравнивание элементов при изменении размеров окна, размещение группы компонентов в Panel, обработк события Form.OnResize, Обратите внимание на свойство объектов Align: None, AllClient, Top, Bottom, Right, Left)

Размер и положение окна может быть задано из программы, а также изменено пользователем.

При конструировании формы это необходимо учитывать.

Также необходимо подгонять размер формы под разрешение дисплея.

Основные этапы управления размером формы:

  1.  чтение предельных координат дисплея  изменение размеров формы.
  2.  отслеживание события Form.OnResize  контроль новых размеров формы  пропорциональное смещение элементов формы.

Разработка программного продукта (продолжение 2) … Структура данных, ее влияние на алгоритм.

Определения:

Алгоритм – последовательность действий, которые необходимо совершить, чтобы получить требуемый результат.

Вспомним подпрограммы в PASCAL – процедуры и функции: самостоятельный фрагмент кода, имеющий свое имя и интерфейс в виде передаваемых и возвращаемых параметров.

Есть библиотеки стандартных пп - Read, Writeln, Date, - это не операторы языка, а написанный и откомпилированный код в виде пп, сохраненный в спец. файлах – модулях.

Определение модуля:

Модуль в PASCAL – отдельно компилируемая компонента unit (стр 105)

Обычно под модулем понимают тематическую библиотеку пп. Такие М содержат однородные функции, например в Borland DOS PASCAL : System, Crt.

Программист разрабатывает свои функции и размещает их в своих модулях-библиотеках.

Подключение модулей к программе происходит в разделе программы

USES <имя модуля>, <имя модуля>,…

При этом становятся доступными функции, размещенные в этих модулях.

Что будет, если…

Более универсальное определение:

Модуль на этапе кодирования - отдельно компилируемая компонента, содержащая подпрограммы (функции), константы, переменные, структуры данных.

Оптимальный размер модуля, удобный для разработки и отладки – 200-400 строк текста.

Еще одно важное определение модуля:

Модуль на этапе проектирования - это функционально обособленый фрагмент проекта, например: модуль ввода, модуль обработки, головной модуль программы.

Разбиение проекта на функциональные модули и составление схемы иерархии модулей происходит на этапе проектирования.

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

Разработка больших модулей ведется как разработка отдельных проектов.

Напоминание: тема занятия "Структура данных, ее влияние на алгоритм". Цель занятия: увидеть, как конструируется структура данных проекта, и как данные влияют на процесс разработки ПП

Назначение программ - обработка данных (?).

Для некоторых проектов ПП структура исходных данных известна на этапе постановки задачи.

(_type, отчет БД)

Есть программы, предназначенные исключительно для обработки данных: известна структура исходных данных (формат), задан алгоритм преобразования и структура результирующих данных.

Для таких программ структура исходных данных включается уже в ТЗ.

Но для большинства программ структуру данных приходится разрабатывать.

Предельный случай - разработа базы данных (БД) - начинается со структуры данных.

Будем различать данные в файле и данные в ОП программы.

Поговорим о данных в ОП

Строго говоря, структура данных в ОП – это описание всех переменных, констант, массивов, структур/Record, классов (ООП), с которыми работает программа.

Можно говорить о цикле жизни переменной в ОП:

описание создание (выделение памяти) использование (занесение и чтение значений) уничтожение (освобождение памяти).

Но внутри программы первичных данных нет (редкое исключение - константы, генератор случайных чисел, дата, время)

Чаще первичными данными являются внешние данные: файл, БД, датчики.

Схему движения данных через программу можно представить так:

Исх. файл Ввод Исх.данные в ОПОбработка Рез.данные в ОП Вывод Рез.Файл

Из схемы видно, что исходные данные в файле являются первичными.

При вводе они могут преобразовываться к нужному виду, фильтроваться.

Обработка – это реализация алгоритмической части программы. Обычно результаты обработки накапливаются в структурированном буфере ОП и затем выводятся в файл, в БД, на печать.

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

Например, анкетирование: В анкете 4 поля: Имя, пол, возраст, семейное положение.

Простейшая структура данных: в текстовом файле каждые очередные 4 строки – данные одного анкетирования.

Средства для описания структуры данных в языке программирования PASCAL

Вспомним структуру программы Pascal

Program 

Uses Dos

Typeраздел описания новых типов данных, эти описания используются затем в разделе Var

Var - раздел объявления переменных, выделяется память под конкретные переменные в соответствии с указанным типом.

Begin

End.

Конструкция Record в Pascal (struct(C/С++) позволяют объединять разнородные типы данных в одной записи (в одном блоке памяти).

Type

 Star=record {Базовый тип "звезда на небосклоне" // Размер?}

 Name : string[20];

AngleH : real; {Угол над горизонтом}

AngleS : real; {Азимут (Угол)}

Bright : real;

End;

Var

AllStar : array[1..6500] of Star; //Размер? Статический массив указателей на Star

Контрольные вопросы:

  1.  Определение алгоритма
  2.  Определение модуля
  3.  (!)Структура программы на PASCAL, назначение разделов Type и Var

Структурное программирование. Реализация «сверху-вниз»

История, 70-е годы. Языки программирования Assembler, Fortran, Cobol.

Используется оператор GoTo – переход по метке.

Было доказано, что любую программу можно написать с использованием только конструкций структурного программирования:

  1.  Последовательность
  2.  Условие
  3.  Цикл с предусловием
  4.  Цикл с постусловием
  5.  Вариант

Категорически предлагалось отказаться от оператора GoTo

“Свобода” программистов подверглась ограничению, но программы стали нагляднее и понятнее.

Структурное программирование придало ПО совершенно новый вид – это было революцией.

Современные языки программирования изначально включают конструкции СП и помогают программисту разрабатывать структурированные программы. Термин «структурное программирование» почти не применяется, потому что все программы структурированы, цель достигнута.

Следующее технологическое достижение в области разаботки ПП – объектно-ориентированное программирование.

Метод реализации ПП «сверху-вниз»

На стадии проектирования задача разбивается на модули, строится схема иерархии модулей.

 

Разработка начинается с головного модуля.

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

После достижения работоспособности головного модуля начинают разработку наиболее важного рабочего модуля, и т.д.

Т.е., при реализации «сверху-вниз» сначала разрабатывают основные модули из иерархии. Работоспособный «скелет» программы получается уже на ранней стадии разработки.

Т.к. модули с нижних уровней иерархии разрабатываются позже, их вызовы уже встроены в модули верхних уровней, что упрощает сборку и отладку проекта.

Современные средства разработки Delphi, C++Builder, MS Visual Studio имеют встроенные средства ведения проекта. Visual-конструкторы создают заготовки стандартных модулей (например, Form), встраивают вызовы некоторых функций и создают код-заготовку функции (рамочный код – заголовок+завершение), т.е. в значительной мере помогают разработчикам создавать «скелет» программы.

Пример – обработка события Button OnMouseDoubleClick.

Программы, управляемые событиями

Определения:

Application – приложение, разрабатываемая программа

GUI - Graphical User Interface – графический интерфейс пользователя в Windows

Event – событие (в компьютерной системе).

IRQ (Interruption ReQuest) - прерывание – это аппаратное или программное событие (схемы обнаружения неисправностей, управление вводом/выводом, сигналы от таймера)

Событие пользовательского интерфейса – нажатие клавиши на клавиатуре, действия с мышью, джойстиком

Событие может генерировать программа посылкой специальных сигналов.

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

Есть необходимость в программах другого типа, построенных на принципах обработки событий.

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

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

Условный пример - система сбора метеоданных в регионе:

несколько типов датчиков: температура, давление, ветер, осадки…

Датчики автоматические, установлены на большой площади, посылают информацию несинхронно.

Прием информации от датчика – событие.

Характеристики событий: тип датчика, расположение датчика, значение измеряемых параметров, время регистраци.

Другой пример - IDE Pascal. Пользовательский интерфейс содержит много элементов управления, на которые можно воздействовать клавиатурой или мышью.

Любое такое воздействие обрабатывается как событие.

Каждая ОС построена на основе обработки событий: аппаратные и программные прерывания – события.

Например, событие: поставили в дисковод CD, Windows обнаруживает этот факт, читает оглавление, ищет файл autorun, если есть – запускает его. (Убрали CD из дисковода во время чтения… «синий» экран)

И наконец Обработка событий GUI в программах Windows:

Windows – это ОС, у которой пользовательский интерфейс (GUI) построен на обработке событий.

Будем рассматривать Windows GUI с точки зрения разработчика.

Устройства пользовательского интерфейса: дисплей, клавиатура, мышь, (дигитайзер, джойстик).

Событя клавиатуры: KeyDown, KeyUp, KeyPressed

События мыши: RightButtonClick, RightButtonDblClick, LeftButtonClick, LeftButtonDblClick, MouseMove(X,Y) - ?

При запуске программа создает окно, т.е. вызывает функцию ОС на создание окна. Расположение этого окна известно ОС. Окно программы содержит элементы управления: Button, Edit, Menu, HotKey, RadioButton, CheckBox

Окно программы м.б. в активном или неактивном режиме.

Например, произошло событие клавиатуры или мыши LeftButtonClick(X,Y):

Анализ события:

  1.  Если координаты в границах неактивного окна, то передается управление другому модулю для переключения окна в активный режим.
  2.  Если координаты находятся в границах активного окна программы, то передается управление в программу.
  3.  В программе определяется, соответствуют ли координаты события какому-либо элементу управления.
  4.  Например, координаты соответствуют Button, и в программе есть функция обработки события – эта функция и выполняется. Т.е. событие LeftButtonClick обрабатывается модулем GUI ОС, затем передается в программу и вызывает обработку события OnButtonClick в программе.

Помним: События не обязательно связаны с пользовательским интерфейсом

(!)Схема обработки сообщения в Windows

Click-EVENT  Driver  Event-Handler (обработчик событий)  Windows message (сообщение wm_LeftButtonClick)  System Queue (cистемная очередь сообщений, до 30, FIFO) Диспетчер сообщений  Application oueue (очередь сообщений в приложении)  Обработка сообщения в приложении – выполнение функции обработки

Программы, управляемые событиями

Цель: продолжаем разбираться с новым для нас видом ПО Windows

Определения:

SDI – Single Document Interface

MDI - Multiple Document Interface

Console application – тестовый режим, подобный MS DOS, но 32р. (VDM)

Form – форма, окно приложения в Delphi

Win32 SDK (Software Dewelopment Kit) – платформа для разработки 32р приложений VCL-Visual Component Library – библиотека компонентов

MFC(Microsoft Foundament Class) – оболочка для Win32 SDK (для облегчения разработки)

BDEBorland DataBase Engine – средство для работы с БД под Windows

Нуль-терминированная строка – строковая переменная в Windows, завершающаяся ‘\0’

VDMVirtual DOS Machine – обеспечивает выполнение DOS-приложений в Windows

Например, поступает сообщение на переключение окна из неактивного в активное состояние – это делает ОС.

Сообщение wm_Activate передается в наше приложение. Если у нас есть функция обработки этого события OnActivate, она отрабатывает и что-то делает, например, изменяет цвет окна, или еще что-то.

Повторим: Обработка событий GUI в программах Windows: При запуске программа создается окно (рисунок окна). Расположение этого окна известно ОС. Окно программы содержит элементы управления: Button, Edit

Окно программы м.б. в активном или неактивном режиме.

Например, произошло событие LeftButtonClick(X,Y), сформировалось сообщение wm_LeftButtonClick, оно передается на обработку в модуль GUI.

Анализ события:

  1.  Если координаты в границах неактивного окна, то Windows переключает окно в активный режим, сообщение wm_Activate передается в очередь сообщений приложения, если у нашей программы есть функция обработки этого сообщения – она выполняется.
  2.  Если координаты находятся в границах активного окна программы, то передается управление в программу. В программе определяется, соответствуют ли координаты события какому-либо элементу управления. Например, координаты соответствуют эл-ту Button, и в программе есть функция обработки события OnButtonClick – эта функция и выполняется. Т.е. событие LeftButtonClick обрабатывается Windows, затем передается в программу в виде сообщения

wm_LeftButtonClick и вызывает обработку события OnButtonClick в программе.

Самое главное окно WindowsDeskTop – полный экран, нет заголовка и бордюра, элементы управлетия – в TaskBar, Button «Пуск», область Systray, PopUp - меню.

Примеры окон:

Окно PopUp-меню

Окна-диалоги: Open, Save, SaveAs, Print, Color

Окно приложения может быть скрыто Hide, приложение работает скрыто, лишь при необходимости окно активизируется (например по таймеру)

Окно м.б. без заголовка, как графическая заставка.

Указатели. Работа с динамической памятью.

Память постоянная и динамическая.

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

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

Есть возможность выделять память под данные в ОП динамически, в процессе выполнения программы.

Для работы с динамической памятью используются указатели.

Определение:

Указатель (pointer) в программе – это переменная, содержащая адрес области памяти (адресная переменная), в которой располагается переменная базового типа.

В PASCAL определен тип данных указатель, обозначается знаком ^.

Указатели бывают типизированные и нетипизированные

Типизированный указатель содержит адрес объекта определенного типа, при определении типа указателя используется базовый тип:

Type

Star=record //Базовый тип // Размер?

Name : string[20];

AngleH : real;

AngleS : real;

Bright : real;

End;

pStar= ^Star; //Создать тип - указатель на Star

Var

 S : Star; // Статическое выделение памяти

 pStar_T : pStar; // типизированный указатель

pStar_NT : Pointer; // нетипизированный указатель

Функции New(), Dispose() используются для типизированных указателей

Функции GetMem(var p:pointer; size:word) – FreeMem(var p:pointer; size:word) используются для нетипизированных указателей

Var

AllStar : array[1..6500] of pStar; //Размер? Статический массив указателей на Star

 pNewStar : pStar;

 NumStar : Integer;

Begin

while ...

Begin

...

New(pNewStar); // Выделение динамической памяти под переменную типа Star

 pNewStar.Name=NameStar; // Заполнение структуры данными

 pNewStar.AngleH=AH;

NumStar =NumStar = +1; // NumStar++;

AllStar[NumStar]= pNewStar; // Занесение в массив

End;

...

AllStar[10]=nil; // Потеря памяти, ошибка

Dispose(AllStar); // Освобождение динамической памяти

 // Операция разыменования-получение доступа к переменной через указатель

 AS=AllStar[NumStar].AngleS^;

 

pAS= AllStar[NumStar].AngleS; // Присвоение адреса

For 1..NumStar

Dispose(AllStar[NumStar]); // Освобождение динамической памяти

End;

Динамическая память выделяется, освобождается, теряется – происходит фрагментация памяти.

Необходима процедура дефрагментации – «сборка мусора». Обычно этот механизм скрыт. Подобная проблема и с памятью ОС.

Контрольные вопросы:

  1.  Что такое указатель, типизированный и нетипизированный указатель, базовый тип указателя
  2.  Выделение динамической памяти под переменную.
  3.  Освобождение динамической памяти.

Структура данных Список (List).

Type

 pCell= ^Cell; //Тип - указатель на Cell

 Cell=record

Data : string;

Next : pCell;

End;

Var

pLst,pW : pCell;

Begin

//Создание списка

pLst=nil;

В цикле добавление элементов в список

 New(pW);

pW^.Data=’xxxx’;

pW^.Next:= pLst;

pLst=pW;

//Просмотр списка

 pW:=pLst;

В цикле

 Str:=pW^.Data;

pW:=pW^.Next;

Примеры некоторых структур данных:

Список простой линейный, кольцевой, двунаправленый, очередь(FIFO), cтек, деревья.

Контрольные вопросы:

  1.  Что такое указатель, типизированный и нетипизированный указатель, базовый тип указателя
  2.  Создание списка в программе, просмотр списка, добавление и удаление элемента списка
  3.  Выделение динамической памяти под переменную.
  4.  Освобождение динамической памяти.
  5.  Структура данных “ОЧЕРЕДЬ”

Передача параметров в подпрограммы и функции PASCAL

Эти вопросы хорошо изложены в литературе по PASCAL

  1.  По ссылке – в подпрограмму передается указатель на реальный параметр, изменение его значения отражается в основной программе (Pascal: параметры-переменные, используется VAR)
  2.  По значению – в подпрограмму передается копия реального параметра, изменения не затрагивают данные в вызываюшей программе (Pascal: параметры-значения)

Пример передачи параметра в процедуру по ссылке:

Pascal, практческая работа «Queue”, процедура удаляет элемент из начала очереди:

Procedure DeleteCell(var pQBeg : pCell)

Var pW : pCell;

Begin

pW=pQBeg;

PQBeg:=pQBeg^.Prev;

Dispose(pW);

PQBeg^.Next:=nil;

End;

Переход от 16-разрядного программирования к 32-разрядному.

Процессор – центральное устройство компьютера, выполняющее арифметико-логические операции и операции ввода/вывода

Микропроцессор – процессор, все компоненты которого размещены в корпусе одной микросхемы

При программировании на ассемблере процессор для программиста представлен как набор доступных команд и регистров. Набор команд процессора может быть:

  1.  MISC – Multi Instructions Set Command ~150,
  2.  RISC – Reduced Instructions Set Command ~80

Набор регистров – свой у каждого типа процессора. Разрядность регистров определяет характеристики процессора, его производительность, работу с памятью. Значения разрядности: 4, 8, 16, 32, 64.

Обычно при разработке процессора для него разрабатывают язык ассемблера.

ASSEMBLER – это низкоуровневый язык программирования, который напрямую работает с регистрами процессора и использует полный набор команд процессора.

На регистры заносятся данные или адреса (указатели), затем выдается команда обработки регистров, результат заносится на регистры или по адресу в память.

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

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

Линия процессоров Intel в архитектуре IBM PC имеет преемственность снизу вверх, т.е., программы, созданные для младших моделей должны выполняться на старших моделях.

 

Архитектура процессора Intel 80286

Регистр, слово – 16разрядов (2**16=64К, Integer= +/-32768)

Адрес 20 разрядов, можно адресовать 1Мбайт памяти,

Адрес состоит из 2-х частей – адрес сегмента(4) и смещение(16)

Размер сегмента 64К

FAR (20р) и NEAR(16р) указатели

Средства разработки ПП для MS DOS и Windows 3.1 (Win16) создавали 16-разрядные программы.

Архитектура процессора Intel 80386 (I386)

32-разрядное слово, 2**32=2Гбайт

32-разрядная адресация, можно адресовать 2Гбайт памяти

Flat (плоская) память – одноуровневая система адресации.

Win32 – набор windows-функций для разработки 32-разрядных программ

Семейство ОС Windows получило практическое применение только с появлением I386 (Windows 3.1)

I386 может переключаться в 16р режим, Windows 3.1 поддерживает Win16

Win32s - набор 32р функций -новые средства для разработки 32-разрядных программ

Windows95/98/NT – 32-разрядные ОС - поддерживают выполнение приложений:

  1.  DOS 16р,
  2.  Win16 (16р Windows 3.1),
  3.  Win32
  4.  для каждого типа приложений – своя подсистема

Следствия:

  1.  Обычно компиляторы высокоуровневых языков программирования переводят программу в ассемблер.
  2.  Обычно в настройках компилятора можно задать тип процессора – для оптимизации программы
  3.  Borland Pascal – 16р приложение - имеет ограничения 16р системы: Integer 2**16, двухуровневая адресация, NEAR (16р) и FAR(20р32р) указатели
  4.  Borland Delphi – 32р система, работает под Win95/98/NT
  5.  Готовится к выпуску 64 разрядный процессор IntelMERSED, другие 64р процессоры.
  6.  Готовится к выпуску версии ОС, поддерживающие 64-разрядные приложения

Помним, что:

Intel – не единственные процессоры, есть другие

IBM PC – не единственная архитектура  Mac, Sun, AS/400, RS-6000, IBM-390

Windows – не единственные ОС  Mac OS, IBM 390, IBM OS/2, IBM AIX, большое семейство Unix, Linux, Nowell

Контрольные вопросы:

  1.  назначение языка ASSEMBLER
  2.  влияние разрядности процессора на производительность и работу с память
  3.  разрядность процессоров линии Intel
  4.  разрядность программ, создаваемых разными средствами разработки.

Коллективная разработка ПП (бригада главного программиста)

Когда проект слишком велик или слишком разнороден для одного разработчика, возникает необходимость групповой работы.

На стадии проектирования составляется спецификация на весь проект, производится разбиение проекта на функциональные части – модули, строится схема иерархии модулей.

Каждый большой модуль проектируется как отдельный проект, также составляется спецификация, схема иерархии  большой модуль может разрабатываться и тестироваться самостоятельно.

Отдельные модули в проекте могут разрабатываться разными программистами, параллельно, и затем собираться в единый проект. Управление такими работами требует высокой квалификации.

Наиболее приемлемой организацией труда группы считается «бригада главного программиста» Бригада главного программиста (БГП) создается для разработки конкретного проекта, состоит из нескольких человек (3-5):

  1.  главный программист,
  2.  резервный программист,
  3.  секретарь бригады,
  4.  + по мере необходимости подключаются другие специалисты.

Суть метода:

Бригада работает как суперпрограммист, обеспечивая высокую производительность труда. Это достигается за счет полного единомыслия членов бригады (“никакой демократии”). Главный программист руководит проектом и выполняет основной объем работы. Он разрабатывает самые важные модули в проекте, определяет спецификацию модулей, которые разрабатывают другие члены бригады, осуществляет окончательную сборку проекта Резервный программист выполняет вспомогательную работу, например, разрабатывает систему тестов. Он полностью посвящен во все решения, участвует в поиске альтернативных решений, при необходимости готов подменить главного.

Секретарь бригады обеспечивает документирование, регистрирует все действия по развитию проекта:

  1.  изменение спецификации,
  2.  архивирование разработки,
  3.  наглядное представление текущего состояния проекта,
  4.  подготовка документации.

Секретарь избавляет программистов от бумажной работы.

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

  1.  например, для постановки задачи в предметной области (медицина, астрономия…);
  2.  например, для разработки SQL-запросов при доступе к БД, или для реализации доступа к программе через Internet)

Такая организация работ повышает производительность труда в пересчете на показатель «строк кода на человека в день»

Для очень больших проектов предлагается организовывать иерархию бригад.

Технология разработки программного продукта

Определения:

Информация – нет удовлетворительного определения. Из физики: информация – это изменение энтропии (меры неопределенности). Уменьшение энтропии – увеличение информации. Определение универсальное и малопонятное.

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

Технология – знания и умения человечества, накопленные в инструментах и навыках специалистов.

Цель технологий - рациональное производство, уменьшение затрат на создание продукта.

Затраты на производство: исходные материалы, инструменты, энергия, человеческий труд.

Структура затрат для разных областей производства различная, например, сравним производство микропроцессоров и разработку программного обеспечения

Общие тенденции развития технологий:

  1.  использование последних достижений НТП,
  2.  ресурсосбережение,
  3.  уменьшение доли ручного труда, малоквалифицированного труда

Компьютерные технологии:

Цель развития технологии – рациональная обработка информации…

Информация – ценный ресурс в современном мире (Япония, проект «ЭВМ 5 поколения» 1982г).

Инструменты:

  1.  Компьютерное и сетевое оборудование,
  2.  Программное обеспечение
  3.  Книги, документация

Необходимы квалифицированные специалисты для проведения следующих работ:

  1.  Техобслуживание компьютеров
  2.  Инсталляция и настройка ОС и ПО
  3.  Проектирование, монтаж, инсталляция LAN 
  4.  Администрирование компьютерных сетей
  5.  Разработка ПП
  6.  Сопровождение ПП

Технология разработки ПП - накапливает опыт, знания, умения в разработке ПП.

Цель – обеспечить рациональную, предсказуемую разработку ПП с заданной функциональностью, с соответствующим качеством (надежностью) и в заданные сроки.

Инструменты:

  1.  Компьютеры, сети локальные и глобальные
  2.  Операционные системы
  3.  Программный инструментарий разработчика
  4.  Базы данных
  5.  Книги, документация

Специалисты должны:

  1.  Знать принципы разработки ПО
  2.  Владеть инструментарием
  3.  Иметь практический опыт разработки ПП

Отличия технология разработки ПП от других технологий:

  1.  Разработка ПП отстает от развития «железа», является узким местом.
  2.  Небольшое потребление энергии и ресурсов – это информационная технология
  3.  Высокая доля ручного труда, слабоформализованный труд, большая доля творчества.
  4.  Это скорее конструирование, чем рутинное производство.
  5.  Быстрое развитие компьютерных технологий, требует постоянного переобучения специалистов.

Чем придется заниматься на производстве:

  1.  Разработки в БД
  2.  Разработки общесистемного ПО
  3.  Разработки для Internet
  4.  Сопровождение ПО
  5.  Администрирование ЛС
  6.  Инсталляция OC и ПО

Требования к специалисту, приходящему на производство

Он должен:

  1.  Владеть инструментарием разработки ПО и БД, иметь опыт разработки ПП
  2.  Знать более одного языка программирования: Pascal, C++, Perl, HTML, Java-script.
  3.  Уметь работать с БД.
  4.  Знать архитектуру IBM PC, иметь представление о других архитектурах
  5.  Знать распространенные операционные системы: MS DOS, Windows, Windows NT, иметь представление о UNIX (Linux)
  6.  Уметь работать в локальной сети и в Internet.
  7.  Знать офисное ПО: Word, Excel, E-mail
  8.  Знать распостраненные форматов данных: doc, xls, rtf, bmp, html, gif, jpg, png, txt

Контрольные вопросы:

  1.  Определение технологии
  2.  Отличия ТРПП от других технологий
  3.  Требования к специалисту, приходящему на производство.

СД.02 Технология разработки программного продукта

Техник должен иметь представление:

  1.  Об основных научно-технических проблемах и перспективах развития информационных технологий;
  2.  О тенденциях развития информационных технологий;
  3.  Об основных принципах построения автоматизированных систем управления;

Знать:

  1.  требования и правила оформления деловой информации
  2.  порядок разработки и эксплуатации информационных систем

Уметь:

  1.  разрабатывать фрагменты программного обеспечения систем обработки информации;
  2.  адаптировать программный продукт к конкретной автоматизированной системе обработки информации (управления)

2.2.5. По производственной (профессиональной) практике

… техник должен овладеть приемами разработки ПП для автоматизированых систем обработки информации и управления.

2.2.6. В результате освоения основной профессиональной образовательной программы по специальности 2203 … техник должен владеть умениями и иметь опыт:

- разработки фрагментов программных продуктов для автоматизированных систем обработки информации и управления;

- адаптации программного продукта к конкретной автоматизированной системе обработки информации (управления)

4. ТРПП. П301.

Процесс разработки программы от исходного текста до исполняемого модуля

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

Вариант 1. Компилятор: (IDE Borland Pascal) 

TextEditor->Compile->ObjectModule->Link->EXE--->Run

 Library->

Debug

TextEditor – кодирование, набор текста программы на языке программирования

Compiler (компилятор, составитель) – контроль текста программы, сообщения об ошибках времени компиляции – начальный период отладки. В результате компиляции (compilation) из исходного текста программы получается объектный модуль.

 Object module(obj) (?) – операторы исходного текста программы, преобразованные во внутреннее машинное представление (формат отличается для каждой архитектуры: *.tpu, *.dpu, *.obj).(?)

Obj содержит откомпилированные операторы языка + вызовы функций. Вызовы функций внутри OBJ называются «неразрешенные ссылки»: Read, Writeln ParamStr, …

Link – (редактор связей(?), сборщик программы) производит сборку исполняемого модуля - Execute module, exe - из одного или нескольких объектных модулей. 

При этом в EXE-модуль из библиотек (модулей) заносятся функции, вызов которых указан в исходном тексте программы – процесс называется «разрешение ссылок» (?).

Еще в EXE-модуль добавляются стандартный заголовок программы, возможно – ресурсы для Windows программы

Важные замечания:

  1.  Возможность сборки программы из многих obj позволяет разбивать программу на части – модули – что упрощает разработку.
  2.  Obj и EXE – имеют оригинальный формат в каждой ОС, т.е. EXE-модуль из UNIX не выполняется в Windows, DOS, OS/2, и наоборот. Например, для Windows специально декларируется совместимость с DOS и OS/2, как дополнительноые свойства.

Далее начинается собственно отладка – достижение функционирования программы, устранение логических ошибок.

Вариант 2. Интерпретатор:

TextEditor->Interpretation->Run

Интерпретатор не создает исполняемого модуля, программа существует только в исходном тексте.

Интерпретатор считывает оператор исходного текста и сразу выполняет его, т.е. программа выполняется построчно, по одному оператору. (?)

По сравнению с EXE-модулем, интерпретатор работает значительно медленнее(10-25раз).

Basic VB-Script, Java-Script – Internet, HTML-page

Perl – интерпретатор от ОС семейства Unix, есть реализации под Win, часто применяется при разработке программ для Web-серверов.

Вариант 3. Java 

Новый язык программирования Java предназначен для разработок в сети Internet (Не имеет отношения к Java-script)

  1.  TextEditor->Compile->ByteCode(applet) В результате компиляции получается Java-applet – аналог OBJ, но формат не зависит от платформы OC Вызов applet встраивается в HTML-page и становится доступен в сети. Пользователь сети заходит на страницу(Inernet), в browser загружается applet, и начинает выполняться с помощью специального интерпретатора ByteCode. Этот интерпретатор называется "Виртуальная Java-машина (Java Virtual Machine )".

  1.  ByteCode->JavaVM(Interpretation)->Run

Основные идеи – независимость от платформы OC, большая эффективность, чем у обычного интерпретатора.

Java-applet может выполняться на любой платформе, где реализована Java Virtual Machine.

Контрольные вопросы:

  1.  Процесс создания программы: Компилятор, редактор связей, объектный модуль, исполняемый модуль
  2.  Процесс создания программы: Интерпретатор. Отличия от компилятора
  3.  Процесс создания программы: Java. ByteCode. Основная идея

Разработка простой программы в стиле командной строки MS DOS

Цель: Пройти цикл разработки простого ПП

Понять особенности разработки программ в стиле MS DOS.

Принять «внутрибригадные» соглашения и обозначения

Научиться работать с Help-системой IDE Pascal

Постановка задачи (что должна делать программа):

Разработать утилиту вывода текстового файла на экран.

Запуск из командной строки:

TYPE {<PathFile> | /?}

Возможные параметры:

<PathFile> - путь к файлу

/? - запрос на help

Спецификация (как должна работать программа):

Программа принимает и анализирует параметры из командной строки

Программа всегда выдает титульную информацию, например: название программы, автор, организация, версия

Если параметр </?>, или параметр отсутствует – выдает Help(содержит поясняющую информацию, описание параметров)

Если параметр - <PathFile> - программа открывает файл

При ошибке открытия выдает сообщение и завершает работу

При успехе выводит содержимое файла на экран, оформляет заголовок

Завершает работу

Замечания по реализации:

Достигнуть функциональности beta-версии. Текст программы должен быть самодокументирован: название программы, автор, дата, назначение программы, команда на запуск, возможные параметры.

Необходимо выделить в программе хотя бы одну процедуру/функцию (например, Help).

Работы проводить в поддиректории \TYPE, результат периодически сохранять в директории \TYPE\BACKUP

Усложнения:

Работа по маске файла, например <*.bat>

Добавить режим постраничного(поэкранного) вывода: TYPE {<PathFile> | /?} [/p]

Выдавать статистику распечатанного файла.

Анализировать файл на непечатаемые символы (двоичный, бинарный файл), приостанавливать программу с запросом о продолжении.

2.1. ТРПП. Разработка простой программы в стиле командной строки MS DOS (продолжение)

Документирование текста программы ведется на каждом этапе разработки. Обычно сначала в виде комментариев записывается план разработки.

Можно использовать для комментариев текст из тех.задания:

{Команда вывода текстового файла на экран}

{Процедура вывода Help}

{Командная строка TYPE {<name_file> | /?} [/p]}

{Анализ параметров командной строки}

{Контроль открытия файла}

{Построчный вывод файла на экран}

{Завершение работы}

Не бойтесь многократно переписать строки текста программы и комментариев.

«Лишние» строки текста программы можно не удалять сразу, а делать комментариями . Делайте отступы 


 

А также другие работы, которые могут Вас заинтересовать

55412. Sea Wind 652.5 KB
  How are you? We are glad to see you at our competitions “Sea Wind”. There are three teams of 5 players. Every team has the name. Let’s meet them.
55413. Файл. Ім’я та розширення файлу. Каталоги та підкаталоги 96 KB
  Після цього уроку ви будете: знати поняття файлу його ім’я та розширення каталогу папки підкаталогу шлях до файлу; знати стандартні імена зовнішніх запам’ятовуючих пристроїв комп’ютера; вміти записувати шлях до файлу; вміти визначати місце знаходження потрібного файлу.
55414. Пальчики малі, але завзяті 95 KB
  Діти займаються найважливішим для їхнього віку видами діяльності: грою конструюванням малюванням крім того учитель читає їм казки вірші говорить на тему прочитаного.6 Кольорові вірші оповідання малювання за прочитаним Казки – замальовки складання своїх казочок віршиків за допомогою кольору і олівця 4. Знайомляться з національною спадщиною свого народу; знаходять в лініях і формах схожість з навколишнім світом предметами явищами природи; складають свої казки замальовки; розвивають зв`язне мовлення збагачують...
55415. Мистецтво живого слова 86 KB
  Мета: розвиток інтелектуальних, творчих здібностей учнів, залучення їх до мистецтва живого слова, формування естетичних смаків, високої читацької культури, любові до мистецтва.
55416. Наша умная семья 54 KB
  Условия конкурса таковы: в семи турах участвуют все команды. После трех туров определяется пять лучших команд. В каждом последующем туре с четвертого по седьмой выбывает одна команда набравшая наименьшее количество баллов.
55417. МОДУЛЬ ГАНДБОЛ. ПРОГРАММА ЗАНЯТИЙ СЕКЦИЙ И СПОРТИВНЫХ КРУЖКОВ ДЛЯ ЮНОШЕЙ И ДЕВУШЕК 4-11 КЛАССОВ В ОБЩЕОБРАЗОВАТЕЛЬНЫХ УЧЕБНЫХ ЗАВЕДЕНИЯХ 281.5 KB
  Пояснительная записка Программа и тематический план занятий группы 1012 лет Тестовые вопросы теории гандбола группы 1012 лет Программа и тематический план занятий группы 1314 лет Тестовые вопросы для группы 1314 лет Программа и тематический план занятий группы 1516 лет Тестовые вопросы теории гандбола группы 1516 лет Самоконтроль спортсменов ПОЯСНИТЕЛЬНАЯ ЗАПИСКА Одним из основных преимуществ ручного мяча является его простота. Овладевая различными навыками: быстрым бегом хорошей прыгучестью выносливостью...
55418. Соціалізація особистості 178.5 KB
  Побудова громадянського суспільства в Україні неможлива без реорганізації системи освіти та правового виховання підростаючого покоління. Пошук шляхів і засобів громадянської освіти та виховання молоді становить сьогодні одну з найактуальніших проблем...
55419. ШЛЯХ ПІЗНАННЯ 218 KB
  Мета: визначення якісної і кількісної оцінки моральної поведінки учнів прояву громадської активності товариськості самокритичності.com Мета: пропагувати серед учнів класу інтерактивну форму висвітлення інформації про справи класу у соціальній мережі...