- •Предисловие
- •Основы программирования
- •Понятие алгоритма.
- •Алгоритм Евклида.
- •Задача о поездах и мухе
- •Вместо лирического отступления
- •Этапы подготовки задачи для решения на компьютере
- •Примеры разработки алгоритмов
- •Решение квадратного уравнения.
- •Вычисление интегралов
- •Обработка результатов эксперимента
- •Решение системы линейных алгебраических уравнений
- •Введение в язык программирования Pascal
- •Основные элементы языка
- •Переменные. Стандартные типы.
- •Операции отношения
- •Раздел описаний переменных
- •Выражения. Порядок выполнения операций.
- •Константы
- •Комментарии в программе
- •Операторы
- •2.1.7.1. Оператор присваивания
- •2.1.7.2. Операторы ввода/вывода
- •2.1.7.3. Операторы инкремента и декремента
- •Среда разработки Lazarus
- •Русский язык в консольных приложениях
- •Первая программа
- •Открытие существующего проекта
- •Другие способы создания консольных приложений
- •Типовой пустой проект
- •Операции с целыми числами
- •Вместо лирического отступления 2
- •Стандартные функции с целыми аргументами
- •Операции с вещественными числами (тип real).
- •Форматирование вывода
- •Одновременное использование вещественных и целых чисел.
- •Другие стандартные функции с вещественными аргументами
- •Булевы переменные
- •Условные операторы.
- •2.1.22.1 Оператор if …. then
- •2.1.22.2. Оператор if …then ... else
- •Операторы цикла
- •2.1.23.1. Оператор цикла с предусловием
- •2.1.23.2. Оператор цикла с постусловием
- •2.1.23.3. Оператор цикла с параметром.
- •2.1.23.4. Второй вариант оператора цикла с параметром
- •Оператор выбора case
- •Организация простейшего контроля ввода данных.
- •Вычисление сумм сходящихся рядов
- •Реализация некоторых алгоритмов главы 1.
- •Программа решения задачи о поездах и мухе
- •Программа вычисления определенного интеграла
- •Более сложные элементы языка
- •Общая структура Паскаль – программы
- •Процедуры и функции
- •3.1.1.1 Структура процедуры
- •3.1.1.2. Структура функции
- •3.1.1.3 Глобальные и локальные переменные
- •3.1.1.4 Способы передачи параметров
- •3.1.1.5 Процедуры завершения
- •Еще раз о типах данных
- •Классификация типов данных
- •3.2.1.1 Целый тип
- •3.2.1.2. Интервальный тип
- •3.2.1.3. Перечислимый тип
- •3.2.1.4. Множества
- •3.2.1.5. Логический тип
- •3.2.1.6. Вещественный тип
- •3.2.1.7. Указатели
- •Обработка символьной информации в Паскале
- •Символьные и строковые типы данных.
- •3.3.1.1. Тип Char
- •3.3.1.2. Функции для работы с символами
- •3.3.1.3. Тип String
- •3.3.1.4. Строковые процедуры и функции
- •Массивы
- •Динамические массивы
- •Программа решения системы линейных алгебраических уравнений методом Гаусса
- •3.4.1.1. Вариант 1 – с goto
- •3.4.1.2. Вариант 2 – без goto
- •3.4.1.3. Вариант 3 – наилучшая реализация
- •Модули в Паскале
- •Структура модуля
- •Системные модули
- •3.5.2.1. Модуль CRT
- •Файлы
- •Тип данных – запись
- •Файловые типы
- •Процедуры для работы с файлами
- •3.6.3.1. Общие процедуры для работы с файлами всех типов
- •3.6.3.2. Процедуры для работы с текстовыми файлами
- •3.6.3.3. Процедуры для работы с типизированными файлами
- •3.6.3.4. Процедуры для работы с нетипизированными файлами
- •3.6.3.5. Организация контроля ввода/вывода при работе файлами
- •3.6.3.6. Создание простой базы данных с типизированными файлами.
- •Алгоритмы сортировки
- •Обменная сортировка (метод "пузырька")
- •Сортировка выбором
- •Сортировка вставками
- •Метод быстрой сортировки
- •Алгоритмы поиска
- •Поиск в массивах
- •Вставка и удаление элементов в упорядоченном массиве
- •Динамические структуры данных
- •Представление в памяти компьютера динамических структур.
- •Реализация стека с помощью массивов
- •Указатели
- •Стандартные операции с линейными списками
- •Реализация динамических структур линейными списками
- •4.3.6.1. Реализация стека
- •4.3.6.2. Реализация очереди с помощью линейного списка
- •4.3.6.3. Реализация двоичного дерева с помощью линейного списка
- •Сортировка и поиск с помощью двоичного дерева
- •Три источника и три составные части ООП.
- •Классы и объекты.
- •Обращение к членам класса.
- •Инкапсуляция
- •Спецификаторы доступа.
- •Свойства.
- •Наследование
- •Полиморфизм
- •Раннее связывание.
- •Позднее связывание.
- •Конструкторы и деструкторы.
- •Элементы графического интерфейса
- •Различия между консольными и графическими приложениями
- •Визуальное программирование в среде Lazarus
- •Создание графического приложения
- •Форма и ее основные свойства
- •Компоненты
- •Обработчики событий
- •Простейшие компоненты
- •6.3.5.1. Компонент TLabel
- •6.3.5.2. Кнопки TButton, TBitBtn и TSpeedButton
- •6.3.6.1. Компонент TEdit
- •6.3.6.2. Компонент TLabeledEdit
- •6.3.7.1. Компонент TMaskEdit
- •Специальные компоненты для ввода чисел
- •Тестирование и отладка программы
- •Компоненты отображения и выбора данных
- •6.3.10.1. Компонент TMemo
- •6.3.10.2. Компонент TStringGrid
- •6.3.10.3. Компоненты выбора
- •Компонент TListBox
- •Компонент TComboBox
- •Компоненты выбора – переключатели
- •6.3.10.4. Компоненты отображения структурированных данных
- •Компонент TTreeView
- •Компонент TListView
- •Организация меню. Механизм действий - Actions
- •6.3.11.1. Компонент TMainMenu
- •6.3.11.2. Компонент TToolBar
- •6.3.11.3. Компонент TActionList
- •6.3.11.4. Создание приложений с изменяемыми размерами окон
- •Послесловие
- •Литература
- •Алфавитный указатель
2.1 Основные элементы языка
____________________________________________________________________
ся во внутреннее представление числа.
2.1.7.3. Операторы инкремента и декремента
Кроме оператора присваивания существуют оператор инкремента и декре-
мента, которые также позволяют изменять значения переменных целого типа.
Оператор inc(x, n) увеличивает значение переменной x целого типа на n. Параметр n может быть опущен, тогда значение x увеличится на единицу.
Пример.
inc(x, 10);
увеличит значение x на 10, а оператор
inc(x);
увеличит значение x на 1. Записи
x:= x + 10;
и
inc(x, 10);
совершенно идентичны по своему результату.
Оператор dec(x, n) уменьшает значение переменной x на n, а оператор dec(x)уменьшает x на единицу.
Программисты чаще всего используют короткие формы операторов ин-
кремента и декремента для увеличения или уменьшения значений целочислен-
ных переменных на единицу, т.е. могут использовать
inc(i) вместо i:= i + 1 и dec(i) вместо i:= i - 1
2.1.8 Среда разработки Lazarus
Уже этих полученных знаний нам достаточно, чтобы написать простей-
шую программу. Для того чтобы писать и выполнять программы, нам понадо-
бится компилятор и среда разработки. Существует довольно много компилято-
ров для языка Pascal. Мы с вами будем использовать компилятор Free Pascal
58
Глава 2 Введение в язык программирования Pascal
____________________________________________________________________
Compiler версии 2.2.4.
Free Pascal Compiler (часто применяется сокращение FPC) это свободно распространяемый компилятор языка Паскаль с открытыми исходными кодами,
распространяется на условиях GNU General Public License (GNU GPL). Он со-
вместим с Borland Pascal 7 и Object Pascal – Delphi, но при этом обладает ря-
дом дополнительных возможностей, например, поддерживает перегрузку опе-
раторов. FPC — кроссплатформенный инструмент, поддерживающий огромное количество платформ. Среди них — AmigaOS, DOS, Linux, *BSD, OS/2,
MacOS(X) и Win32.
Free Pascal поддерживает компиляцию в нескольких режимах, обеспе-
чивающих совместимость с различными диалектами и реализациями языка:
TP — режим совместимости с Turbo Pascal: совместимость практически полная, за исключением нескольких моментов, связанных с тем, что FPC ком-
пилирует программы для защищѐнного режима процессора, где невозможно прямое обращение к памяти, портам и т. д.
FPC — собственный диалект: соответствует предыдущему, расширенному дополнительными возможностями, такими как, например, перегрузка операто-
ров.
DELPHI — режим совместимости с Delphi: включает поддержку классов и интерфейсов.
OBJFPC — совмещает объектно-ориентированные возможности Delphi и
собственные расширения языка.
MACPAS — режим совместимости с Mac Pascal.
GNU — режим частичной совместимости с GNU Pascal.
Free Pascal Compiler имеет свою собственную интегрированную среду разработки. Применяется также аббревиатура IDE (Integrated Development Environment). Среда имеет текстовый интерфейс очень похожий на ин-
59
2.1 Основные элементы языка
____________________________________________________________________
терфейс Turbo Pascal 7.0.
Но времена изменились! Текстовые интерфейсы практически полностью вытеснены так называемыми графическими интерфейсами, работать в которых значительно удобнее и приятнее.
В 1999 г. три человека - Cliff Baeseman, Shane Miller и Michael A. Hess.
предприняли попытку написать бесплатную графическую среду для бесплатно-
го компилятора FPC. Проект получает название Lazarus. На сегодняшний день следует признать, что идея оказалась весьма плодотворной потому, что среда существует и развивается и поныне.
Lazarus это бесплатный инструмент разработки с открытым кодом. IDE
Lazarus представляет собой среду с графическим интерфейсом для быстрой разработки программ, аналогичную Delphi, и базируется на оригинальной кроссплатформенной библиотеке визуальных компонентов LCL (Lazarus
Component Library), совместимых с VCL Delphi. В состав IDE входят и не визу-
альные компоненты. В принципе такого набора достаточно для создания про-
грамм с графическим интерфейсом и приложений, работающих с базами дан-
ных и Интернетом.
В среде Lazarus используются собственный формат управления пакетами и свои файлы проектов.
Lazarus это стабильная богатая возможностями среда разработки для соз-
дания самостоятельных графических и консольных приложений. В настоящее время она работает на Linux, FreeBSD и Windows и предоставляет настраивае-
мый редактор кода и визуальную среду создания форм вместе с менеджером пакетов, отладчиком и графическим интерфейсом, полностью интегрирован-
ным с компилятором FreePascal.
Почему для этой книги был выбран именно этот компилятор и его среда быстрой разработки? Потому что они бесплатны и распространяются по сво-
бодной лицензии GNU GPL. Кроме того, компилятор Free Pascal позволяет соз-
давать кроссплатформенные приложения, т.е. приложения, которые могут вы-
60
Глава 2 Введение в язык программирования Pascal
____________________________________________________________________
полняться на различных платформах. Поэтому в этой книге изложение ведется применительно и к Linux, и к Windows.
Рассмотрим основные элементы среды разработки Lazarus. Если вы еще не установили его, то предварительно установите. Дистрибутивы находятся на прилагаемом DVD диске отдельно для Linux и Windows.
Также вы можете совершенно бесплатно скачать свежие дистрибутивы по адресу http://sourceforge.net/projects/lazarus/files/
Следует заметить, что у тех, у кого Alt Linux Master School -
Lazarus уже должен быть автоматически установлен.
Запускать Lazarus можно несколькими способами. Расскажу о некоторых,
часто используемых.
В Linux в Главном меню должен быть пункт Lazarus. В зависимости от вашего дистрибутива он может находиться либо в меню
Разработка->Среды разработки->Lazarus (Mandriva) или
Образование->Разработка->Lazarus (Alt Linux) или
Программирование->Lazarus (Ubuntu).
Проще всего этот ярлык перетащить на рабочий стол. Кроме того, можно перейти в каталог установки Lazarus (чаще всего это каталог
/usr/lib/lazarus) и дважды щелкнуть по имени файла lazarus или startlazarus, если вы используете файловый менеджер или дать команду
./lazarus (./startlazarus), если вы используете консоль.
В Windows во время установки можно задать опцию "Создать значок на рабочем столе". Если вы этого не сделали, то можете запускать из меню
Пуск->Программы->Lazarus. Вы также можете скопировать этот ярлык на рабочий стол. Наконец, можно перейти в папку установки (чаще всего
C:\lazarus) и дважды щелкнуть по имени файла lazarus.exe или startlazarus.exe.
Итак, IDE Lazarus имеет вид, показанный на рис. 2.1, 2.2.
61
2.1 Основные элементы языка
____________________________________________________________________
Рис. 2.1 Вид IDE Lazarus в Windows
Рис. 2.2 Вид IDE Lazarus в Linux, рабочий стол KDE
62
Глава 2 Введение в язык программирования Pascal
____________________________________________________________________
Как видите, IDE Lazarus выглядит одинаково в обеих операционных систе-
мах, только цветовое оформление окон чуть разнится.
Среда Lazarus состоит из нескольких, вообще говоря, не связанных окон.
1. Главное окно, рис. 2.3.
Рис. 2.3. Главное окно IDE Lazarus
С помощью этого окна можно управлять процессом разработки приложе-
ния. В нем предусмотрены команды управления файлами, компиляцией, редак-
тированием, окнами и т.д. Окно разбито на три функциональных блока:
Главное меню. В нѐм расположены команды управления файлами, ко-
манды управления компиляцией и свойствами всего приложения, команды управления окнами и настройками среды и многое другое. Меню располагается в верхней части основного окна.
Рис. 2.4. Главное меню
Панель инструментов. Панель инструментов предоставляет быстрый доступ к основным командам главного меню. Она расположена в левой части главного окна, под главным меню.
Рис. 2.5. Панель инструментов
63
2.1 Основные элементы языка
____________________________________________________________________
Палитра компонентов. Предоставляет доступ к основным компонентам среды разработки, например: поле ввода, надпись, меню, кнопка и т.п.
Рис. 2.6. Палитра компонентов
2. Инспектор объектов, рис. 2.7.
Рис. 2.7. Инспектор объектов
В верхней части окна показывается иерархия объектов, а снизу, располо-
жены три вкладки: "Свойства", "События", "Избранное". Назначение инспекто-
ра объекта – это просмотр всех свойств и методов объектов. На вкладке "Свой-
ства" перечисляются все свойства выбранного объекта. На вкладке "События"
перечисляются все события для объекта. На вкладке "Избранное" избранные свойства и методы. Подробнее об этом будет сказано в главе 6.
64
Глава 2 Введение в язык программирования Pascal
____________________________________________________________________
3. Редактор исходного кода Lazarus
Рис. 2.8. Редактор исходного кода
Именно в этом окне мы будем набирать тексты своих программ. Многие функции и возможности этого редактора совпадают с возможностями обычных текстовых редакторов, например Блокнота. Текст в редакторе можно выделять,
копировать, вырезать, вставлять. Кроме того, в редакторе можно осуществлять поиск заданного фрагмента текста, выполнять вставку и замену. Но, конечно,
этот редактор исходных текстов Lazarus обладает еще рядом дополнительных возможностей для комфортной работы применительно к разработке программ.
Основное преимущество редактора заключается в том, что он обладает воз-
можностями подсветки синтаксиса, причѐм не только Pascal, но и других языков, а также рядом других удобств. В частности, выделенный фрагмент тек-
ста можно сдвигать вправо или влево на количество позиций, указанных в на-
стройках Окружение ->Параметры…->Редактор -> Общие -> Отступ блока, что очень удобно для форматирования с целью структурирования кода. Выделен-
65
2.1 Основные элементы языка
____________________________________________________________________
ный фрагмент можно закомментировать или раскомментировать, перевести в верхний или нижний регистр и т.д.
Все возможные операции в редакторе собраны в меню Правка и Поиск главного меню Lazarus, рис. 2.9, 2.10.
Рис. 2.9. Меню "Справка" |
Рис. 2.10. Меню "Поиск" |
4. Окно сообщений
В этом окне выводятся сообщения компилятора, компоновщика и отладчи-
ка.
На этом мы закончим наш краткий обзор среды Lazarus. Мы рассмотрели далеко не все виды окон IDE, да и те, что рассмотрели, мы рассмотрели бегло,
лишь для того, чтобы получить первое представление о среде Lazarus. Зани-
66
Глава 2 Введение в язык программирования Pascal
____________________________________________________________________
маться нудным рассказом обо всех пунктах, опциях и возможностях Lazarus я
сейчас не буду. Ведь не все будет понятно, да и … скучно! Ведь вам, уважае-
мый читатель, "не терпится в бой"! Поэтому будем рассматривать только те элементы, которые будут нам нужны на первых порах. А, остальное мы будем изучать по мере необходимости и в нужных местах. Так, мне кажется, будет лучше!
Сначала настроим IDE так, как нам будет удобнее работать. Как уже гово-
рилось, при первом запуске окна IDE Lazarus не связаны и представляют собой
"плавающие" окна. Советую вам их соединить так, как показано на рис. 2.11.
путем изменения размеров окон, чтобы Lazarus занимал весь экран.
Рис. 2.11. Вид IDE Lazarus после изменения размеров и положения окон
После этого в Главном меню зайдите в меню Окружение- >Параметры... Откроется окно Параметры IDE. В этом окне во вкладке
67
2.1 Основные элементы языка
____________________________________________________________________
Окружение выберите пункт Окно. Далее для каждого окна установите оп-
цию "Пользовательская позиция" и нажмите кнопку "Применить", рис. 2.12.
В Windows все окна Lazarus после этого жестко скрепляются, поэтому, ес-
ли, например, у вас Lazarus был свернут, то после разворачивания будут видны все окна. В Linux не так. Размеры и положение окон сохраняются, но вы можете открывать окна по отдельности, рис. 2.13.
Рис. 2.12. Вкладка "Окно" меню "Окружение"
Рис. 2.13. Окна IDE Lazarus в Linux
68
Глава 2 Введение в язык программирования Pascal
____________________________________________________________________
Далее в том же окне Параметры IDE выберите пункт Отладчик и сни-
мите галочку с опции "Показывать сообщение при остановке". Этим мы изба-
вимся от надоедливого сообщения "Выполнение остановлено" при каждом за-
вершении наших программ, рис. 2.14.
Рис. 2.14. Окно настройки параметров отладчика
Изучение языка лучше всего начинать с консольных приложений. Кон-
сольное приложение — программа, которая не имеет графического интерфейса и выполняется в текстовом режиме в консоли. В Windows консоли обычно со-
ответствует окно командной строки. В Linux консоли соответствует окно тер-
минала. Для таких программ устройством ввода является клавиатура, а устрой-
ством вывода — монитор, работающий в текстовом режиме отображения сим-
69