3. План лекции:
Процесс разработки программы. Трансляция.
Компиляция
Компилятор языка Free Pascal в среде Lazarus
Этапы компиляции программ на языке Free Pascal
Системное программирование в Windows
Системное программирование в Linux
Win API и DLL
6. Этапы разработки программы
Составление алгоритма решения задачи.
Алгоритм — это описание последовательности
действий, которые необходимо выполнить для
решения поставленной задачи.
8. Этапы разработки программы
Составление алгоритма решения задачи.
Написание текста программы. Текст программы
пишут на каком-либо языке программирования
(Free Pascal) и вводят его в компьютер с помощью
текстового редактора (редактор кода среды
Lazarus).
10. Этапы разработки программы
Составление алгоритма решения задачи.
Написание текста программы.
Отладка программы. Отладка программы —
это процесс устранения ошибок из текста
программы.
11. Этапы разработки программы
Составление алгоритма решения задачи.
Написание текста программы.
Отладка программы.
Четвертый этап?
12. Этапы разработки программы
Составление алгоритма решения задачи.
Написание текста программы.
Отладка программы.
Тестирование программы. Тестирование
программы — процесс выявления ошибок в ее
работе.
Процессы отладки и тестирования сопровождаются
неоднократным запуском программы на
выполнение.
16. Трансляция
Процесс перевода текста программы в машинный
код называют трансляцией.
Трансляторы
Интерпретаторы Компиляторы
17. Интерпретаторы
трансляторы, которые переводят каждый
оператор программы в машинный код и по мере
перевода операторы выполняются процессором.
Примеры: реализации языка Basic
18. Компиляторы
переводят всю программу целиком, и если этот
перевод прошел без ошибок, то полученный
двоичный код можно запускать на выполнение.
Примеры: FPC - Free Pascal Compiler
свободно распространяемый компилятор языка
Паскаль с открытыми исходными кодами,
распространяется на условиях GNU General Public
License (GNU GPL).
19. Режимы компиляции FPC
TP — режим совместимости с Turbo Pascal
FPC — собственный диалект
DELPHI — режим совместимости с Delphi
OBJFPC — совмещает объектно-ориентированные
возможности Delphi и собственные расширения
языка.
Пример задания режима компиляции:
{$mode objfpc}{$H+}
{$H+} – директива компиляции, определяющая что тип
string будет обработан как AnsiString
20. Этапы компиляции программы на языке Free
Pascal. 1 этап
Компилятор анализирует, какие внешние библиотеки
нужно подключить, разбирает текст программы на
составляющие элементы, проверяет синтаксические
ошибки и в случае их отсутствия формирует объектный код
(в Windows — файл с расширением .obj, в Linux — файл с
расширением .o).
В библиотеках языка Pascal хранится объектный (двоичный) код
стандартных (таких, как sin(x), cos(x) и др.) функций и процедур
языка.
Получаемый на этом этапе двоичный файл (объектный
код) не включает в себя объектные коды подключаемых
библиотек.
21. Этапы компиляции программы на языке Free
Pascal. 2 этап
На втором этапе компоновщик подключает к объектному
коду программы объектные коды библиотек и генерирует
исполняемый код программы. Этот этап называется
компоновкой, или сборкой, программы. Полученный на
этом этапе исполняемый код можно запускать на
выполнение.
22. Среда Lazarus
Lazarus это бесплатный инструмент разработки с
открытым кодом.
IDE Lazarus представляет собой среду с
графическим интерфейсом для быстрой разработки
программ, аналогичную Delphi, и базируется на
оригинальной кроссплатформенной библиотеке
визуальных компонентов LCL (Lazarus Component
Library), совместимых с VCL Delphi.
Lazarus это стабильная богатая возможностями среда
разработки для создания самостоятельных
графических и консольных приложений.
24. Версии Lazarus в сети колледжа
lazarus-1.2.6-fpc-2.6.4-win32.exe – версия для
Windows 32 и 64 bit
LazarusPortable_1.0.8.0_Development_Test_1.paf.e
xe – портируемая версия, проверена для Windows 32
bit
25. Системное программирование в Windows
Абстракция от оборудования и низкоуровневых
протоколов вводится в ядра операционных систем в
виде библиотек API (Application Program Interface). Эта
абстракция доступна программисту в виде библиотек
API. Это самый низкий уровень, который доступен для
прикладного программирования.
Функции и процедуры Windows API, являются
набором программных интерфейсов приложений
доступных в операционных системах Microsoft
Windows. Все Windows-приложения
взаимодействуют с WinAPI вне зависимости от того,
на каком языке они написаны.
26. Библиотеки над Win API
Библиотеки и среды программирования, частично или
полностью скрывающие от программиста особенности
Windows API, и предоставляющие ту или иную часть его
возможностей в более удобном виде:
Active Template Library (ATL)
Windows Template Library (WTL),
Microsoft Foundation Classes (MFC),
.Net/WinForms/WPF
OWL и VCL.
Кросс-платформенные библиотеки, такие как Qt, Tk
27. Системное программирование в Linux
Программирование для UNIX изначально
зарождалось именно как системное. Исторически
системы UNIX не включали значительного количества
высокоуровневых концепций.
В системном программировании для Linux можно
выделить три основных краеугольных камня:
системные вызовы, библиотеку C и компилятор C.
API в Linux обеспечивает переносимость
приложений между различными архитектурами Linux.
28. Классификация WinAPI. 8 категорий
Основные сервисы (Base Services)
Дополнительные сервисы (Advanced Services)
Интерфейс взаимодействия с графическими
устройствами (Graphics Device Interface, или,
сокращенно, GDI)
Пользовательский интерфейс (User Interface, UI)
Стандартная библиотека диалогов (Common Dialog
Box Library)
Стандартная библиотека элементов управления
(Common Control Library)
Оболочка Windows (Windows Shell)
Сетевые сервисы (Network Services)
29. Основные сервисы (Base Services)
предоставляют доступ к основным ресурсам системы
Windows, таким, как файловые системы, устройства,
процессы и потоки, обработка ошибок. Эти функции
располагаются в файлах kernel32.dll, advapi32.dll.
30. Дополнительные сервисы (Advanced
Services)
предоставляют доступ к надстройкам над kernel-
библиотеками, включая такие элементы, как реестр
Windows, перезагрузка и завершение работы
системы, запуск/создание/остановка сервисов
Windows, управление учетными записями
пользователей. Эти функции располагаются в
advapi32.dll.
31. Интерфейс взаимодействия с графическими
устройствами (Graphics Device Interface)
предоставляет набор функциональных возможностей
вывода графического содержимого на мониторы,
принтеры и другие устройства вывода. Функции
располагаются в файле gdi32.exe.
32. Пользовательский интерфейс (User
Interface, UI)
предоставляет набор функций создания и управления
окнами и наиболее простых элементов управления,
таких, как кнопки и полосы прокрутки; получение
данных с мыши и клавиатуры и прочие функции,
связанные с графическим интерфейсом пользователя
(GUI). Этот модуль расположен в файле user32.dll,
однако, начиная с Windows XP, эти функции
объединены с библиотекой стандартных элементов
управления (Common Control Library) и
располагаются в файле comctl32.dll.
33. Стандартная библиотека диалогов
(Common Dialog Box Library)
предоставляет стандартные диалоговые окна для
открытия и сохранения файлов, выбора цвета, шрифта
и т.д. Библиотека располагается в файле comdlg32.dll.
Эту категорию часто объединяют с пользовательским
интерфейсом.
34. Стандартная библиотека элементов
управления (Common Control Library)
позволяет приложениям использовать
дополнительные элементы управления операционной
системы Windows, включая такие элементы, как
панели статуса, панели состояния, панели
инструментов и вкладки. Библиотека располагается в
файле comctl32.dll. Эту категорию также часто
объединяют с пользовательским интерфейсом.
35. Оболочка Windows (Windows Shell)
является компонентом WinAPI, который
предоставляет доступ к функциям системной
оболочки, также позволяя изменять и улучшать их.
Компонент располагается в файлах shell32.api,
shlwapi.dll.
36. Сетевые сервисы (Network Services)
предоставляют доступ к различным сетевым
возможностям операционной системы. Их
подкомпоненты включают NetBIOS, Winsock,
NetDDE, RPC и многие другие.
37. Win API и DLL
Все Windows API функции располагаются в файлах
динамических библиотек (*.dll), которые находятся в
системных папках ОС (как правило, папка System32).
Каждая программа должна самостоятельно заботится
о том, чтобы подключить эти библиотеки. DLL могут
подключаться к программе статически и
динамически.
38. Win API и DLL
При статическом подключении программа
«освобождает» DLL только при завершении.
39. Win API и DLL
При динамическом подключении освобождение DLL
может произойти в любой момент.
Если после освобождения DLL оказывается, что её
больше не использует ни одна программа, она
выгружается из памяти.
40. Win API и DLL
Стандартные библиотеки используются самой
системой, они всегда находятся в памяти.
Вопрос: как подключаются стандартные библиотеки?
41. Win API и DLL
Т.к. стандартные библиотеки используются самой
системой и всегда находятся в памяти, то
использование динамического подключения
бессмысленно и используется статическое
подключение.