4508
Разработка Windows-программ. Знакомство с Delphi
Контрольная
Информатика, кибернетика и программирование
Разработка Windows-программ. Знакомство с Delphi Основой системы разработки является VCL. Визуальный конструктор форм позволяет брать компоненты-заготовки из палитры компонентов, размещать на форму, изменять свойства, добавлять методы обработки собы...
Русский
2012-11-21
75.13 KB
6 чел.
Разработка Windows-программ. Знакомство с Delphi
Основой системы разработки является VCL.
Визуальный конструктор форм позволяет брать компоненты-заготовки из палитры компонентов, размещать на форму, изменять свойства, добавлять методы обработки событий.
При этом автоматически генерируется значительная часть кода программы.
Подобные технологии обозначаются как RAD - Rapid Applications Development, или обобщенным термином Visual. Технология RAD - увеличивает производительность труда программиста, но довольно расточительна по вычислительным ресурсам.
Файлы проекта:
*.dpr головной файл Delphi project
*.pas исходный текст программы
*.dcu откомпилирванный текст программы, объектный модуль.
*.dfm описание формы, сконструированной в визуальном конструкторе
*.res Windows-ресурсы (иконки, меню, текстовые строки)
Окна Delphi: Главная панель управления содержит Меню, SpeedButton, палитру VCL
Form окно визуального конструирования формы приложения
Object Inspector просмотр и изменение свойств объекта, выбранного на форме
Project manager состав проекта и управление им: добавление, удаление, настройка опций
Source Editor редактор текстов программ
Watch одно из окон отладчика
Delphi-VCL реализована в технологии ООП
Введение в объектно-ориентированное программирование (ООП )
Основная идея ООП - соединить в одном объекте данные и обработку.
Раздел TYPE
Нам уже знакома структура Record описание собственных типов данных (вспомните List - Cell); развитием идеи будет Class описание типа объекта, включает описание структуры данных и функции обработки этих данных.
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 и сообщениях).
Функциональность:
Возможные ошибки, обработка ошибок:
Спецификация на разработку программы:
Программа копирует один или несколько файлов из исходной директории в результирующую
Командная строка:
_COPY <PathSrcFile[s]> <PathTarget> [/S|/R]
Описание работы программы:
Выдать титульную строку
Проанализировать 1-й параметр:
если /? выдать Help STOP (завершение программы)
иначе это <PathSrcFile[s]>
Обработать <PathSrcFile[s]>:
Выделить директорию и имя файла (маску)
Проверить существование директории <PathTarget>,
если нет, то сообщение об ощибке и STOP
В цикле Искать очередной исходный файл, сответствующий маске
Проверять наличие результирующего файла с таким именем,
Если есть обрабатывать ситуацию…
…
Запускать операцию копирования файла (функция, самодельная или библиотечная FileCopy())
Контролировать результат выполнения копирования
Конец цикла
Завершение программы
Замечания по реализации:
Выдавать титульную строку и сообщение при завершении программы.
Язык реализации PASCAL
Цель лекционной темы - рассмотреть:
Программа небольшая разработка, до 2-х месяцев работы, до 1000 строк кода.
Программный проект разработка, на которой задействовано более одного человека, трудозатраты более 2-х человеко-месяцев, более 1000 строк кода
Программный продукт результат разработки, готовый к эксплуатации, к продаже.
Программное изделие это определение из ГОСТ, включает все вышеперечисленное.
Будем говорить о разработке небольших проектов, 1-5 тыс. строк кода, время фазы разработки 2-6 человеко-месяцев.
Используя современные технологии один разработчик может управлять проектом в 10000 строк, проект разбивается на модули, оптимальный размер модуля 200-400 строк.
Схема ЖЦП (здесь схема):
Реализация:
Рассмотрите, например, ЖЦП семейства OC Windows: Windows 3.1, 95, 98, NT, 2000;
Необходимо понимать, что разработка ПП не заканчивается после завершения отладки первой версии ПП, и может потребоваться доработка, выпуск новых версий ПП.
Этапы разработки ПП: Постановка, Проектирование, Составление программы, Сборка и отладка, Тестирование
1 этап Постановка задачи (анализ требований)
Результатом постановки задачи является документ «Техническое задание на разработку ПП» (ТЗ), который передается на этап проектирования.
В больших проектах постановкой занимается отдельная группа.
Плохо поставленая задача это неуспех всего проекта, затягивание времени разработки, удорожание работ.
2 этап Проектирование (выбор методов решения) основной этап в разработке ПП.
Все работы ведутся по ТЗ. Если в ТЗ обнаруживаются ошибки необходимо вернуться на этап постановки задачи.
На этапе проектирования принимаются все крупные решения по разработке:
На выходе из этапа полностью определены структуры данных, алгоритмы обработки, интерфейсы с пользователем.
Результатом этапа проектирования является документ «Спецификация» описание ПП на условном языке, языке проектирования.
3 этап Составление программы (кодирование) по результатам проектирования разрабатывается программа на языке реализации.
Для больших проектов единицей работы на этом этапе является модуль.
Модули могут разрабатываться и отлаживаются отдельно, разными группами программистов.
В этот этап входит начальный период отладки
Результаты передаются на следующий этап
4 этап Сборка и отладка (компоновка) . Для больших проектов, разбитых на модули, необходим этап окончательной сборки и тестирования на соответствие спецификации.
5 этап Тестирование проверка всего проекта на соответствие ТЗ. Для этого разрабатывается порядок и методика тестирования (ЕСПД).
На каждом этапе разработки могут выявляться ошибки предыдущих этапов, проблема передается «наверх», исправляется, цикл разработки повторяется.
Если по завершении очередного цикла разработки тестирование проходит удовлетворительно принимается решение о передаче ПП в опытную эксплуатацию (alpha, beta-тестирование), разработка переходит в стадию продолжающейся разработки (см. ЖЦП)
Если в постановке задачи предусмотрено составление документации (см. ЕСПД) она составляется и отлаживается одновременно с разработкой и должна быть готова к моменту передачи ПП в опытную эксплуатацию (!).
Разработкой небольших проектов или отдельных модулей большого проекта может заниматься и один программист. В этом случае он обеспечивает реализацию каждого этапа.
Пример: Проект на 100 дней (5 месяцев), 2500 строк кода: 20 дней постановка, 35 проектирование, 15 кодирование, 30 отладка, тестирование, передача в эксплуатацию.
Типичная ошибка «быстрая постановка и проектирование» - приводят к увеличению сроков за счет этапа отладки, проект выходит из под контроля.
Другая типичная ошибка не составление спецификации
(!) Учащиеся должны знать:
Учащиеся должны понимать:
Учащиеся должны уметь:
Контрольные вопросы:
Цель лекции научиться определять количественные характеристики программного продукта
Metrology наука об измерениях
Ранее мы рассматривали жизненный цикл программного продукта (ЖЦП)
Для прогнозируемой разработки и использования ПП необходимо знать (и задавать) характеристики ПП на каждом этапе ЖЦП, в том числе количественные.
На стадии разработки оценивается сложность проекта и эффективность труда:
Используют такие оценки:
Пример:
Проект трудоемкостью 5 человеко-месяцев (3+1+1) (110 рабочих дней),
2500 строк кода,
300 операторов ветвления
разбит на 6 модулей, 25 функций и подпрограмм,
Языки разработки: Delphi, SQL, HTML, Java-script
Календарное время разработки 3,5 месяца
Число строк кода на человека в день 23.
Себестоимость разработки, версия 1: $10000
Подобные характеристики используют для оценки (самооценки) разработки. При планировании работ учитывают средние показатели производительности труда при предыдущих разработках.
На стадии использования (приобретения) оцениваются потребительские свойства ПП:
Часто используют сравнение с ПП аналогичного назначения (например, сравниваются архиваторы, Web-browsers)
Используют такие характеристики:
Пример:
Принимается решение о приобретении 100 лицензионных экземпляров ОС семейства Windows для рабочих мест (не самые мощные компьютеры IBM PC) какую ОС выбрать сегодня?
Разработка Windows-программ.
Конструирование интерфейса пользователя.
Цель занятия: получить начальные знания в области конструирования программных интерфейсов.
Интерактивный - 1) взаимодействующий; согласованный; воздействующие друг на друга; 2) диалоговый режим доступа к ЭВМ
Интерфейс - 1) устройство сопряжения; 2) стык, область контакта, взаимодействия; 3) связующее звено между человеком и машиной. 4) Интерактивность
Эргономика - отрасль научной организации труда, изучающая трудовые процессы.
В современном индустриальном (технократическом) обществе большинство людей занято в материальном производстве. Необходимо создать им хорошие условия не рабочем месте и обеспечить удобными инструментами - тогда труд будет результативнее.
Пример: Аудитория, учебный процесс.
Повышение производительности туда - важная цель развития общества.
Человек вышел из дикой природы, психология восприятия в значительной степени основана на биологических создал свою среду обитания - город.
История вопроса "интерфейс с пользователем" - это история техники, примеры: кабина самолета, автомобиля, тепловоза, рабочее место на конвейере.
Есть компьютеры и программы, не предназначенные для непосредственного взаимодействия с пользователем: сервера, узлы Internet
Компьютеры и программы, предназначенные для интерактивной работы, снабжаются средствами взаимодействия с пользователем - интерфейсом.
Аппаратная часть интерфейса для современных ПК устоялась - это клавиатура, дисплей, мышь (трекбол, джойстик, шлем)
Программы, предназначенные для взаимодействия с пользователем, также снабжаются интерфейсом - программным.
Интерфейс - лицо программы.
Примеры программных интерфейсов:
В последние годы вид интерфейсов определяет набор элементов GUI-Windows.
Программы стали походить друг на друга по интерфейсу. (Это хорошо или плохо?)
Восприятие элементов интерфейса
Пользователь за компьютером - это оператор, который проводит много времени в работе, устает.
Цель разработчика программного интерфейса - обеспечить пользователю программы комфортные условия труда.
Некоторые рекомендации по разработке программных интерфейсов
Программа, и интерфейс, коструируется в расчете на определенный уровень пользователя.
Представьте себя на его месте.
Анализируйте программы по конструкции интерфейса.
Особенности компоновки окон Windows
Размер и положение окна может быть задано из программы, а также изменено пользователем.
При конструировании формы это необходимо учитывать.
Также необходимо подгонять размер формы под разрешение дисплея.
Основные этапы управления размером формы:
Определения:
Алгоритм последовательность действий, которые необходимо совершить, чтобы получить требуемый результат.
Вспомним подпрограммы в 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
Контрольные вопросы:
Структурное программирование. Реализация «сверху-вниз»
История, 70-е годы. Языки программирования Assembler, Fortran, Cobol.
Используется оператор GoTo переход по метке.
Было доказано, что любую программу можно написать с использованием только конструкций структурного программирования:
Категорически предлагалось отказаться от оператора 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):
Анализ события:
Помним: События не обязательно связаны с пользовательским интерфейсом
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 (для облегчения разработки)
BDE Borland DataBase Engine средство для работы с БД под Windows
Нуль-терминированная строка строковая переменная в Windows, завершающаяся \0
VDM Virtual DOS Machine обеспечивает выполнение DOS-приложений в Windows
Например, поступает сообщение на переключение окна из неактивного в активное состояние это делает ОС.
Сообщение wm_Activate передается в наше приложение. Если у нас есть функция обработки этого события OnActivate, она отрабатывает и что-то делает, например, изменяет цвет окна, или еще что-то.
Повторим: Обработка событий GUI в программах Windows: При запуске программа создается окно (рисунок окна). Расположение этого окна известно ОС. Окно программы содержит элементы управления: Button, Edit
Окно программы м.б. в активном или неактивном режиме.
Например, произошло событие LeftButtonClick(X,Y), сформировалось сообщение wm_LeftButtonClick, оно передается на обработку в модуль GUI.
Анализ события:
wm_LeftButtonClick и вызывает обработку события OnButtonClick в программе.
Самое главное окно Windows DeskTop полный экран, нет заголовка и бордюра, элементы управлетия в 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;
Динамическая память выделяется, освобождается, теряется происходит фрагментация памяти.
Необходима процедура дефрагментации «сборка мусора». Обычно этот механизм скрыт. Подобная проблема и с памятью ОС.
Контрольные вопросы:
Структура данных Список (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тек, деревья.
Контрольные вопросы:
Передача параметров в подпрограммы и функции PASCAL
Эти вопросы хорошо изложены в литературе по 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-разрядному.
Процессор центральное устройство компьютера, выполняющее арифметико-логические операции и операции ввода/вывода
Микропроцессор процессор, все компоненты которого размещены в корпусе одной микросхемы
При программировании на ассемблере процессор для программиста представлен как набор доступных команд и регистров. Набор команд процессора может быть:
Набор регистров свой у каждого типа процессора. Разрядность регистров определяет характеристики процессора, его производительность, работу с памятью. Значения разрядности: 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-разрядные ОС - поддерживают выполнение приложений:
Следствия:
Помним, что:
Intel не единственные процессоры, есть другие
IBM PC не единственная архитектура Mac, Sun, AS/400, RS-6000, IBM-390
Windows не единственные ОС Mac OS, IBM 390, IBM OS/2, IBM AIX, большое семейство Unix, Linux, Nowell
Контрольные вопросы:
Коллективная разработка ПП (бригада главного программиста)
Когда проект слишком велик или слишком разнороден для одного разработчика, возникает необходимость групповой работы.
На стадии проектирования составляется спецификация на весь проект, производится разбиение проекта на функциональные части модули, строится схема иерархии модулей.
Каждый большой модуль проектируется как отдельный проект, также составляется спецификация, схема иерархии большой модуль может разрабатываться и тестироваться самостоятельно.
Отдельные модули в проекте могут разрабатываться разными программистами, параллельно, и затем собираться в единый проект. Управление такими работами требует высокой квалификации.
Наиболее приемлемой организацией труда группы считается «бригада главного программиста» Бригада главного программиста (БГП) создается для разработки конкретного проекта, состоит из нескольких человек (3-5):
Суть метода:
Бригада работает как суперпрограммист, обеспечивая высокую производительность труда. Это достигается за счет полного единомыслия членов бригады (“никакой демократии”). Главный программист руководит проектом и выполняет основной объем работы. Он разрабатывает самые важные модули в проекте, определяет спецификацию модулей, которые разрабатывают другие члены бригады, осуществляет окончательную сборку проекта Резервный программист выполняет вспомогательную работу, например, разрабатывает систему тестов. Он полностью посвящен во все решения, участвует в поиске альтернативных решений, при необходимости готов подменить главного.
Секретарь бригады обеспечивает документирование, регистрирует все действия по развитию проекта:
Секретарь избавляет программистов от бумажной работы.
Другие специалисты привлекаются для решения специализированных задач, разработки отдельных специализированных модулей:
Такая организация работ повышает производительность труда в пересчете на показатель «строк кода на человека в день»
Для очень больших проектов предлагается организовывать иерархию бригад.
Определения:
Информация нет удовлетворительного определения. Из физики: информация это изменение энтропии (меры неопределенности). Уменьшение энтропии увеличение информации. Определение универсальное и малопонятное.
Из компьютерной области: информация это набор избранных фактов из какой-либо области знаний (данные). Обработка информации подразумевает регистрацию, сбор, упорядочивание, хранение и использование данных.
Технология знания и умения человечества, накопленные в инструментах и навыках специалистов.
Цель технологий - рациональное производство, уменьшение затрат на создание продукта.
Затраты на производство: исходные материалы, инструменты, энергия, человеческий труд.
Структура затрат для разных областей производства различная, например, сравним производство микропроцессоров и разработку программного обеспечения
Общие тенденции развития технологий:
Компьютерные технологии:
Цель развития технологии рациональная обработка информации…
Информация ценный ресурс в современном мире (Япония, проект «ЭВМ 5 поколения» 1982г).
Инструменты:
Необходимы квалифицированные специалисты для проведения следующих работ:
Технология разработки ПП - накапливает опыт, знания, умения в разработке ПП.
Цель обеспечить рациональную, предсказуемую разработку ПП с заданной функциональностью, с соответствующим качеством (надежностью) и в заданные сроки.
Инструменты:
Отличия технология разработки ПП от других технологий:
Чем придется заниматься на производстве:
Требования к специалисту, приходящему на производство
Он должен:
Контрольные вопросы:
Техник должен иметь представление:
Знать:
Уметь:
2.2.5. По производственной (профессиональной) практике
… техник должен овладеть приемами разработки ПП для автоматизированых систем обработки информации и управления.
2.2.6. В результате освоения основной профессиональной образовательной программы по специальности 2203 … техник должен владеть умениями и иметь опыт:
- разработки фрагментов программных продуктов для автоматизированных систем обработки информации и управления;
- адаптации программного продукта к конкретной автоматизированной системе обработки информации (управления)
Процесс разработки программы от исходного текста до исполняемого модуля
В процессе разработки исходный текст программы проходит несколько этапов обработки, прежде, чем получится готовая к исполнению программа
Вариант 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 программы
Важные замечания:
Далее начинается собственно отладка достижение функционирования программы, устранение логических ошибок.
Вариант 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)
Основные идеи независимость от платформы OC, большая эффективность, чем у обычного интерпретатора.
Java-applet может выполняться на любой платформе, где реализована Java Virtual Machine.
Контрольные вопросы:
Цель: Пройти цикл разработки простого ПП
Понять особенности разработки программ в стиле 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]}
{Анализ параметров командной строки}
{Контроль открытия файла}
{Построчный вывод файла на экран}
{Завершение работы}
Не бойтесь многократно переписать строки текста программы и комментариев.
«Лишние» строки текста программы можно не удалять сразу, а делать комментариями . Делайте отступы
А также другие работы, которые могут Вас заинтересовать | |||
17590. | Статистика. Абсолютные и относительные статистические величины | 184 KB | |
1. Статистика. Основные понятия 2.Статистический показатель система показателей. 3. Статистическая совокупность. 4. Группировка статистических данных и ее роль в анализе информации 5. Статистическая таблица. 6. Статистический график 7. Абсолютные и относительные ст... | |||
17591. | Ряды распределения. Показатели вариации | 310.5 KB | |
ТЕМА 3 Ряды распределения. Показатели вариации ПЛАН ЛЕКЦИИ 1. Понятие рядов распределения. 2. Характеристики центра распределения. Средние величины. 3. Характеристики вариации. 4. Характеристики формы распределения. 1. Понятие рядов распределения 1. В результате ... | |||
17592. | Выборочное наблюдение. Особенности малой выборки | 201 KB | |
11 ТЕМА 4 Выборочное наблюдение ПЛАН ЛЕКЦИИ 1. Статистическое наблюдение 2. Выборочное наблюдение причины и условия его применения. 3. Виды и схемы выборки. 4. Ошибки выборки. 5. Определение необходимой численности выборки. 6. Особенности малой вы | |||
17593. | Статистические методы измерения взаимосвязей | 259 KB | |
14 ТЕМА 5 Статистические методы измерения взаимосвязей. ПЛАН ЛЕКЦИИ 1. Виды взаимосвязей между явлениями. 2. Метод аналитического группирования. Дисперсионный анализ. 3. Корреляционно регрессионный анализ. 4. Многофакторная корреляция. 5. Непарам... | |||
17594. | Ряды динамики. Определение тенденции развития. Интерполяция и экстраполяция | 350 KB | |
11 Лекция 6. Ряды динамики ПЛАН ЛЕКЦИИ 1. Понятие и виды рядов динамики. 2. Характеристики рядов динамики. 2.1. Показатели интенсивности изменения уровней ряда динамики 2.2. Средние показатели ряда динамики 3. Определение тенденции развития. Интерпол | |||
17595. | Индексы. Использование индексного метода при анализе среднего курса акций | 258.5 KB | |
ТЕМА 7 Индексы ПЛАН ЛЕКЦИИ 1. Понятие индексов. Индивидуальные и сводныеобщие индексы. 2. Агрегатные индексы. 3. Среднеарифметический и среднегармонический индексы. 4. Система взаимосвязанных индексов факторный анализ. 5. Индексы средних величин. 6. Использовани... | |||