Basic Pascal Tutorial/Compilers/ru
Этот документ даст базовую информацию о компиляторах, а также предоставит ссылки на известные компиляторы Pascal и объяснит, как установить Free Pascal.
Contents
- 1 О компьютерных языках и компиляторах
- 2 Ещё о компиляторах
- 3 Компиляторы с открытым исходным кодом
- 4 См. также
О компьютерных языках и компиляторах
Когда говорят о компьютерных языках, обычно используется три основных термина:
- Машинный язык — фактический бинарный код, который даёт основные инструкции центральному процессору (CPU) компьютера. Обычно это очень простые команды, такие, как сложение двух чисел или перемещение данных из одной области памяти в другую.
- Язык ассемблера — способ для людей программировать компьютеры напрямую без запоминания строк двоичных чисел. Существует однозначное соответствие с машинным кодом. Например, в машинном языке Intel x86 ADD и MOV — мнемоники для операций сложения и перемещения.
- Язык высокого уровня — позволяет людям писать сложные программы без расписывания каждого шага. Языками высокого уровня являются Pascal, C, C++, FORTRAN, Java, Visual Basic, C#, Java и многие другие. Одна команда в языке высокого уровня, вроде записи строки в файл, может транслироваться в десятки и даже сотни инструкций машинного языка.
Микропроцессоры напрямую могут выполнять только программы на машинном языке. Программы на языке ассемблера собираются, или транслируются, в машинный язык. Точно так-же, программы, написанные на языках высокого уровня, таких, как Pascal, тоже должны быть переведены в машинный язык перед тем, как они могут быть выполнены. Выполнение этого перевода и есть компиляция программы.
Программа, которая выполняет перевод (транслирует), называется компилятор. Это достаточно сложная программа, поскольку не только создаёт инструкции на машинном языке из строк кода, но часто ещё и оптимизирует код для более быстрого выполнения, добавляет код обработки ошибок и связывает код с подпрограммами, хранящимися в другом месте. Например, когда вы говорите компьютеру, чтобы он напечатал что-нибудь на экране, компилятор транслирует это в обращение к ранее написанному модулю. Ваш код потом должен быть связан с кодом, который предоставляет производитель компилятора, прежде чем получится исполняемая программа.
С языками высокого уровня есть опять три основных термина для запоминания:
- Исходный код — код, который вы пишете. Обычно файлы исходного кода имеют расширение, указывающее на используемый язык. Например, файлы исходного кода Pascal обычно заканчиваются .pas, а C++ — .cpp
- Объектный код — результат компиляции. Объектный код обычно включет только один модуль программы и пока не может быть выполнен, поскольку ещё не завершён. В системах DOS/Windows такие файлы обычно имеют расширение .obj
- Исполняемый код — конечный результат. Все модули объектного кода, необходимые для функционирования программы, связаны вместе. В системах DOS/Windows такие файлы обычно имеют расширение .exe
Ещё о компиляторах
Стандартом де-факто для компиляторов Pascal под DOS и Windows является Borland Pascal. До того, как он вышел, большинство компиляторов Pascal были медленными и неповоротливыми, не соответствовали стандарту Pascal и стоили несколько сотен долларов. В 1984 году Borland представила Turbo Pascal, который продавался менее, чем за 100 долларов, компилировал на порядок быстрее существующих компиляторов и шёл с большим количеством исходного кода и утилит.
Этот продукт был огромным успехом и был выдающимся в течении почти десятилетия. Но в 1990-х годах мир двигался в сторону Windows. В 1993 году вышла последняя, 7-я, версия Turbo Pascal для DOS. После этого спрос на DOS-программы резко упал и Borland (краткое время также известная как Inprise), направила свои усилия на выпуск сред разработки (IDE) и компиляторов для Windows (например, Delphi). Позже Borland продала свои компиляторы Embarcadero, которая продолжает регулярно обновлять Delphi.
Этот учебник будет иметь дело только с программированием консольных приложений, где компьютер печатает строки данных на экран, а пользователь взаимодействует с программой с помощью клавиатуры. Цель учебника — научить, как программировать на Pascal. Изучив это, вы легко сможете посмотреть в справочнике или другой web-странице, и выбрать графическую или оконную систему по своему вкусу.
Хотя старые коммерческие компиляторы Pascal часто доступны для скачивания (например, Turbo Pascal 5.5 — здесь: Borland Museum, а Symantec Think Pascal (Macintosh) — здесь: Free Pascal Compiler List), компьютеры с 1980-х и начала 1990-х годов ушли далеко вперёд. Мы больше не связаны именами файлов формата 8.3 в DOS или невытесняющей многозадачностью в Mac OS. Использование старого компилятора — это удовольствие в том-же смысле, что и запуск старой игры на эмуляторе. Но Движение за открытые исходные коды (Open-source movement) создаёт хорошие компиляторы для современных операционных систем и новичкам будет гораздо легче использовать их.
Компиляторы с открытым исходным кодом
Два основных проекта компиляторов с открытым исходным кодом:
Free Pascal обычно считается более дружественным для новичков и он во многом старается эмулировать Borland Pascal, но оба хорошо послужат для обучения Pascal.
Поскольку большинство пользователей этого учебника будут работать под Windows, ниже дана краткая инструкция, как установить Free Pascal и дойти до места, где вы сможете откомпилировать программу в современной операционной системе Windows:
- Загрузите Win32-инсталлятор для Free Pascal с Free Pascal download page.
- Запустите файл, который вы только что скачали, и пройдите через мастер установки Free Pascal.
- Запустите Free Pascal, используя ярлык (по умолчанию он находится в Пуск -> Free Pascal).
- Наберите текст программы (см. программу «Hello, world.» в следующем уроке).
- Сохраните файл с помощью File-Save As .
- Запустите программу из меню Run. Это автоматически откомпилирует вашу программу, если вы внесли какие-либо изменения, а потом запустит программу. Это также запустит вашу программу без компиляции, если вы не вносили никаких изменений после предыдущей компиляции.
С программами, которые не ожидают ввода от пользователя, вы увидите, как промелькнёт программа на чёрном экране. Но программа завершится в мгновение ока и вы вернётесь в среду разработки, не увидев результатов своей работы. Есть два способа обойти это:
- Выберите User screen из меню Debug, чтобы увидеть результат работы программы.
- Добавляйте вызов ReadLn в конце каждой программы. Это заставит программу ждать нажатия пользователем клавиши Enter перед завершением программы и возвратом в IDE.
Обратите внимание, что файл .exe был создан в том-же каталоге, где вы сохранили свою программу. Это исполняемый файл. Вы можете пойти в Командную строку, сменить каталог и напрямую запустить этот исполняемый файл. Вы также можете сделать на нём двойной клик в Windows Explorer (программа по-прежнему быстро промелькнёт, если завершается без запроса ввода со стороны пользователя).
См. также
- Control Pascal Tutorial — простой способ начать без небходимости инсталляции
- How to start — другой способ начать с инсталляцией
- Russian
- Basic Pascal Introduction/ru
Console Mode Pascal/ru
Многие из нас писали программы на Паскале задолго до того, как вошли в моду Графический интерфейс пользователя (GUI) и Интегрированные среды разработки (IDE). Многие другие являются новичками в программировании на Pascal, и им необходимо уметь опробовать основные инструменты языка. Третьим нужны консольные приложения или приложения текстового режима для выполнения сложных задач управления системой.
Программирование в консольном режиме без Lazarus
Хотя многие предпочитают использовать Lazarus IDE для написания программ в режиме консоли, вы также можете написать их с помощью любого текстового редактора и скомпилировать их самостоятельно, вызвав компилятор FPC, например так для программы в example.pas:
fpc example.pas
Также доступен текстовый режим IDE fp (немного похожий на старый Turbo Pascal).В следующих разделах мы сосредоточимся на программировании с помощью Lazarus.
Программирование в консольном режиме с помощью Lazarus
Lazarus предоставляет идеальную среду для изучения Паскаля и разработки программ в текстовом режиме. Можно использовать все функции интегрированной среды разработки, включая редактор исходного кода с ее подсветкой синтаксиса, доступом к библиотекам, сложными инструментамиы поиска и завершения кода, а также проверкой синтаксиса. Если вам не нужна Form с ее визуальными компонентами, можно и без нее, но редактор исходного кода Lazarus по-прежнему остается отличной средой для разработки программ. Вы можете компилировать и запускать свою программу во время разработки, не выходя из редактора.
Чтобы запустить программу в режиме консоли, перейдите в главное меню и выберите Project -> New Project(Проект — новый проект), а затем выберите Program(Программа) или Console Application(Консольное приложение). Среда IDE не будет генерировать все дополнительные файлы, связанные с полным графическим приложением, и не откроет окно инспектора объектов, но откроет редактор исходного кода со структурой скелетной программы и будет ожидать ввода вашего программирования.
Примечание: В Windows приложение с графическим интерфейсом пользователя не имеет консоли и, следовательно, не может выполнить writeln или readln. Вы получите ошибку File not open(Файл не открыт). Снимите галочку в разделе Project Options / Compiler Options / Linking / Target specific options / Win32 GUI application(Параметры проекта / Параметры компилятора / Связывание / Частные параметры цели / Приложение Win32 GUI), чтобы создать консольное приложение. Начиная с Lazarus IDE 1.4 она находится в разделе Project(menu) / Project Options / Compiler Options / Config and Target / Target specific options / Win32 GUI application(Проект (меню) / Параметры проекта / Параметры компилятора / Настройка и целевая платформа / Частные параметры цели / Приложение Win32 GUI).
Примечание: Lazarus имеет некоторые функции для программ командной строки, такие как copyfile. Чтобы использовать их, добавьте требование к проекту для LazUtils (Project / Project Inspector / Required Packages —> «Add» —> New Requirement —> choose «LazUtils» —> OK), которое не будет задействовать весь LCL. Затем добавьте соответствующий модуль в раздел uses.
Тип проекта: Console Application (Консольное приложение)
Выбор этого типа проекта в Lazarus создает программу с новым классом, производным от TCustomApplication. TCustomApplication предоставляет много всяких штучек и упрощает программирование утилит командной строки. Например, проверка параметров командной строки, написание справки, проверка переменных окружения и обработка исключений. Все программы LCL используют это автоматически.
Тип проекта: Program (Программа)
В качестве демо мы напишем очень минималистичную программу на Паскале. В среде IDE выберите тип проекта Program(Программа), и пусть среда IDE вам немного поможет. Например, когда вы добавляете еще один модуль, IDE автоматически добавит имя модуля в раздел программы uses. Это поведение определяется в параметрах проекта. Таким образом, вы можете переключаться между ‘Program'(Программой) и ‘Custom Program'(Пользовательской программой) в любое время.
Пример для начинающих:
program Project1; uses cthreads, Classes; begin WriteLn('Hello World!'); ReadLn; end.
Pascal scripts
Кроме того, можно писать сценарии, которые динамически компилируются с помощью InstantFPC, кроссплатформенного решения для запуска (небольших) программ Pascal в виде сценариев. Шебанг
#!/usr/bin/env instantfpc
позволяет запускать скрипт как отдельную программу.
Примечание: Хотя он используется для запуска сценариев Pascal, InstantFPC использует обычный Object Pascal, а не язык сценариев PascalScript. Таким образом, «PascalScript» и Pascal script — это не одно и то же.
Запуск программы
Компиляция
Когда вы закончите свою программу (или фрагмент программы), вы можете скомпилировать и запустить ее, выбрав Run -> Build(Выполнить -> Сборка)(или Quick Compile(Быстрая компиляция)) в главном меню или щелкнув значок зеленого треугольника («Выполнить») на панели кнопок. Любые сообщения компилятора (предупреждения, отчеты о ходе выполнения или сообщения об ошибках) появятся в окне сообщения, и, надеюсь, в конечном итоге будет сообщение, которое скажет
‘Project «Project1» successfully built. (Проект «Project1» успешно собран.) :).
А где программа-то ?? !!
Если вы еще не сохранили программу, то среда IDE поместит ее во «временный» каталог (например, /tmp в Linux, C:\temp в Windows, см. Environment Options / Files / Directory (Параметры среды / Файлы / Каталог) для собранных тестовых проектов).
Если вы уже сохранили проект, значит, программа была создана в том же каталоге, где вы сохранили файл project1.lpi.
Запуск в консоли
Вы можете запустить программу, перейдя в окно консоли (терминала), затем с помощью cd перейдя в каталог и введя имя программы. В Unix/Linux, если она находится в текущем каталоге, вам придется начать с ./ , поскольку программа, вероятно, не будет найдена в PATH.
Пример для Linux/Unix, где программа хранится в /tmp:
cd /tmp ./Project1
Однако может быть очень неудобно продолжать переходить из редактора Lazarus в окно терминала и обратно. К счастью, есть механизм, позволяющий открывать окно терминала из среды Lazarus.
Запуск в IDE
Во внутренней консоли: показывается в окне вывода терминала.
При перенаправлении вывода.
В главном меню выберите Run -> Run Parameters(Выполнить -> Параметры запуска), затем установите флажок «Use launching application»(Использовать запускаемое приложение). В первый раз, когда вы сделаете это и попробуете последовательность Compile / Run (Собрать / Запустить), вы, вероятно, получите отлуп:
‘xterm: Can’t execvp /usr/share/lazarus//tools/runwait.sh: Permission denied’.
Если это произошло, вам необходимо изменить права доступа к соответствующему файлу (например, с помощью chmod +x или с помощью утилиты Windows для изменения разрешений); возможно, вам придется сделать это как root. После этого каждый раз, когда вы будете запускать свою программу, будет появляться окно консоли, в котором будут отображаться все ваши текстовые операции ввода-вывода (readln, Writeln и т. Д.).
После того, как ваша программа завершит выполнение, на экране появится сообщение «Нажмите Enter». Таким образом, любой вывод, сгенерированный вашей программой, останется на экране до тех пор, пока вы не прочтете его; после того, как вы нажмете «Enter», окно консоли закроется.
К сожалению, этот метод не позволяет использовать встроенный отладчик.
Запуск в IDE с перенаправлением вывода
Если вы хотите увидеть, что написано в stdout, и также хотите использовать встроенный отладчик, stdout можно перенаправить в файл следующим кодом:
uses baseunix; var OutputFile: text; begin Assign(OutputFile, 'Output.txt'); if FileExists(Filename) then begin Append(OutputFile); end else begin Rewrite(OutputFile); end; ResultCode := fpdup(OutputFile, output); if ResultCode 0 then begin raise Exception.CreateFmt('Обман не удался: %s', [ResultCode]); end; Close(OutputFile); end.
Затем файл output.txt можно просмотреть с помощью команды ‘tail -f output.txt’ или просмотреть с помощью редактора, если ‘tail’ недоступен в вашей ОС.
В качестве альтернативы, используя Lazarus 0.9.31 или выше (только в Linux): в меню «View»(Вид) в разделе «Debug Windows»(Отладка Windows) есть запись для «console output»(консольный вывод) для просмотра стандартного вывода.
Unicode (UTF8) вывод
Если вы хотите, чтобы ваша программа в режиме консоли отображала вывод Unicode (UTF8) в Windows Vista и более поздних версиях (а также, возможно, в более ранних версиях), вы можете использовать команду SetConsoleOutputCP для задания консоли набор символов UTF8.
Примечание: вам нужно будет убедиться, что шрифт консоли может отображать буквы, которые вы хотите вывести (например, греческий, кириллица, корейский).
Примечание: вам нужно будет включить модуль Windows.
См. Поддержка Unicode LCL для получения более подробной информации о поддержке Unicode в Lazarus и FPC.
program uniconsole; uses cthreads, cwstring, Windows, Classes ; var UTF8TestString: string; begin SetConsoleOutputCP(CP_UTF8); UTF8TestString:= 'rosé, водка and ούζο'; writeln ('plain: ' + UTF8TestString); Фактически, UTF8ToConsole для меня ничего не сделал.> end.
Примеры
Вы можете использовать редактор Lazarus, чтобы опробовать все примеры из стандартных учебников Паскаля, или можете написать свой собственный. Некоторые из наиболее полезных процедур — это процедуры для выполнения системных команд или для запуска других программ (написанных на Паскале, C или Perl, либо в сценариях оболочки или пакетных сценариях).
Выполнение команд оболочки
program TryShell; uses Classes, Unix; var S: LongInt; begin S := fpsystem('/bin/ls -la *.p*'); //отображает .pp, .pas, .php, .png и т.д. в текущем каталоге WriteLn('Program exited with status : ', S) end.
Пример: обновить FPC и Lazarus
Могут быть выполнены более сложные команды. Например, если вы уже проверили репозитории SVN для FPC и Lazarus (см. Buildfaq), вы можете поддерживать свои исходные файлы FPC и Lazarus в актуальном состоянии, извлекая их из репозитория SVN с помощью следующей последовательности вызовов :
Пример: корректировка fpc и lazarus
Могут выполняться более сложные команды. Например, после посещения хранилища SVN с новейшими версиями FPC и Lazarus (см. buildfaq) можно иметь исходные версии FPC и Lazarus новейшими, путем взятия из хранилища SVN следующей последовательностью вызовов:
program LazUpdate; uses Classes, Unix; var S: LongInt; begin S := fpsystem('cd /usr/local/src/fpc/devel/fpc ; make clean'); S := fpsystem('cd /usr/local/src/fpc/devel/lazarus ; make clean'); S := fpsystem('cd /usr/local/src/fpc/devel ; svn update fpc >& ~/cvscheckout.log'); S := fpsystem('cd /usr/local/src/fpc/devel ; svn update lazarus >& ~/cvslaz.log' ); end.
Обратите внимание, что выдача команды
fpsystem('cd /somedirectory');
fpsystem ('сделать что-нибудь в этом подкаталоге');
не работает, потому что после каждого вызова функции fpsystem() выполнение программы возвращается в каталог, в котором она была запущена; поэтому нам нужно включить несколько операторов в каждую строку в наши вызовы оболочки через fpsystem(). [Скорее так: он всегда начинается.]
Необязательно вводить каждую команду как отдельную строку Паскаля; можно создать файл сценария bash следующим образом (из buildfaq):
#!/bin/sh cd /usr/local/src/fpc/devel cd fpc make clean cd .. cd lazarus make clean cd .. svn up fpc >& ~/cvscheckout.log svn up lazarus >& ~/cvslaz.log
Назовите файл updatelaz.sh, а затем вызовите его из программы на Паскале для его непосредственного выполнения вместо использования bash следующим образом:
(* Это может быть скомпилировано или использовано как скрипт Паскаля. *) program LazUpdate1; uses Classes, Unix; var S: LongInt; begin S := fpsystem('updatelaz.sh') end.
Примечание для пользователей Windows
Традиционно при написании консольных программ в Windows используется кодировка cp866. Если не принять специальных мер, то при написании консольной программы в IDE в консоли вместо русских букв будут выводиться кракозябры. Чтобы получился нормальный русский текст, в окне кода программы нужно нажать правую кнопку мыши и выбрать в контекстном меню «Параметры файла -> Кодировка -> CP866».
См.также
- Параметры командной строки и переменные среды
- Выполнение внешних программ
- Отладка консольных приложений
- InstantFPC
Lazarus Tutorial/ru
Lazarus — это бесплатный инструмент разработки с открытым исходным кодом для Free Pascal compiler, который, в свою очередь, также является бесплатным и с открытым исходным кодом. Интегрированная среда разработки Lazarus (IDE, см. Скриншоты)) — это среда программирования для создания автономных графических и консольных приложений.
В настоящее время Lazarus работает на Linux, macOS, FreeBSD и Windows и предоставляет настраиваемый редактор исходного кода и среду создания визуальных форм вместе с менеджером пакетов, отладчиком и полной интеграцией графического интерфейса с Free Pascal Compiler ,
Contents
- 1 Обзор
- 2 Начнем — Ваша первая Lazarus-программа!
- 2.1 Вторая попытка.
- 3.1 Главное меню
- 3.2 Кнопочная панель
- 5.1 Настройки
- 5.2 Кнопки
- 5.3 Трассировка
Обзор
Lazarus это бесплатный инструмент разработки с открытым кодом, предназначенный для также бесплатного компилятора с открытым кодом Free Pascal (object pascal). IDE Lazarus (screenshot) это стабильная богатая возможностями среда разработки для создания самостоятельных графических и консольных приложений. В настоящее время она работает на Linux, FreeBSD и Win32 и предоставляет настраиваемый редактор кода и визуальную среду создания форм вместе с менеджером пакетов, отладчиком и GUI полноcтью интегрированным с компилятором FreePascal.
Начнем — Ваша первая Lazarus-программа!
Найдите, установите(Installing Lazarus) и запустите Lazarus, который кроме того содержит и компилятор FreePascal.
На экране появятся несколько окон: главное окно вверху, Инспектор Объектов (Object Inspector) слева, занимаюший большую часть экрана Редактор Кода Lazarus (Lazarus Source Editor), и готовое к использованию окно Form1 поверх окна Редактора.
В главном окне сверху, под строкой меню располагается строка вкладок. Если вкладка ‘Standard’ еще не выбрана, выберите ее, щелкнув на ней левой кнопкой мыши. Затем найдите иконку Button (прямоугольник с текстом ‘Ok’ на нем) и щелкните на ней мышкой. Затем щелкните в окне Form1, где-нибудь слева от середины. Появится затененный прямоугольник с надписью ‘Button1’. Вновь щелкните на иконке Button на вкладке Standard и щелкните на Form1 где-нибудь справа от центра: появится прямоугольник с надписью ‘Button2’.
Теперь щелкните на Button1 чтобы выбрать ее. Инспектор Объектов отобразит свойства объекта Button1. Не далеко от верхнего края располагается свойство с именем ‘Caption’, в котором отображается значение ‘Button1’. Щелкните в этой строке и измените ‘Button1’ на ‘Нажми меня’ (прим.пер.: в оригинальном тексте ‘Press’. Далее будет приводиться только русский текст надписей, а оригинальный можно посмотреть на странице с английским текстом). Если вы нажмете клавишу ENTER или щелкнете в другой строке, то увидите, что надпись на первой кнопке Form1 изменилась на ‘Нажми меня’. Теперь щелкните в Инспекторе объектов на вкладке Events (События) и вы увидите различные события, на которые может реагировать кнопка. Среди них OnClick, OnEnter, OnExit и так далее. Щелкните в строке справа от OnClick: появится маленькая кнопка с троеточием (. ). Если вы ее нажмете, то автоматически перенесетесь в Редактор Кода и курсор окажется в участке кода, начинающегося с:
procedure TForm1.Button1Click(Sender: TObject); begin Button1.caption := 'Нажми еще раз'; end;
Нажмите F12 для переключения от Редактора Кода к окну формы Form1.
Теперь отредактируйте свойства кнопки2 (Button2): щелкните на Button2 для отображения ее свойств в Инспекторе Объектов. Измените свойство Caption на ‘Выход’ вместо ‘Button2’. Теперь перейдите на вкладку событий (Events) и щелкните в строке OnClick. Щелкните на кнопке с троеточием и перенеситесь в Редактор Кода, в тело другой процедуры:
procedure TForm1.Button2Click(Sender: TObject); begin Close; end;
Теперь нажмите F12 чтобы увидеть форму Form1 вновь. Теперь вы можете попытаться скомпилировать. Простейшим способом сделать это является выбор в главном меню пункта ‘Run’ а в появившемся подменю пункта ‘Run’. Вы также можете просто нажать клавишу F9. Сначала произойдет компиляция, а затем (если все в порядке) линковка и запуск вашей программы.
Промелькнет несколько текстовых окон и будут выведены различные сообщения компилятора, а потом вновь появится окно формы Form1, но уже без точечной сетки; это и есть реальное главное окно вашего приложения, и оно ожидает нажатия кнопок или любого другого вашего действия.
Попробуйте щелкнуть на кнопке ‘Нажми меня’. Вы увидите, что надпись на ней сменится на ‘Нажми еще раз’. Если вы нажмете еще раз, то на кнопке так и останется надпись ‘Нажми еще раз’!!
Теперь щелкните на кнопке с надписью ‘Выход’. Окно закроется и программа завершится. Вновь появится окно формы Form1 с точечной сеткой, готовое для редактирования.
Теперь (и вообще почаще) вы можете сохранить свою работу выбрав последовательно пункты меню Project > Save Project As > имя_вашего_файла.pas
Вторая попытка.
Вновь откройте сохраненный вами проект.
На форме Form1 щелкните на кнопке ‘Нажми меня’ (Button1) чтобы выбрать ее. В Инспекторе Объектов перейдите на вкладку событий (Events), щелкните на строке справа от события OnClick, щелкните на кнопке с многоточием, чтобы перенестись к соответствующему участку кода в Редакторе.
Измените код, на приведенный ниже:
procedure TForm1.Button1Click(Sender: TObject); begin if Button1.tag =0 then begin Button1.caption := 'Нажми еще раз'; Button1.tag := 1 end else begin Button1.caption := 'Нажми меня'; Button1.tag := 0 end end;
Сохраните проект, перекомпилируйте и запустите. Левая кнопка теперь циклически меняет свой текст с одного сообщения на другое.
Сделай дело — гуляй смело!
Если вы хотите писать консольные или программы с текстовым интерфейсом на Pascal (например, если вы следуете стандартному курсу изучения программирования на Pascal, или вам нужно написать программу для работы в командном режиме или системную программу) вы также можете использовать Lazarus для написания, компилирования и выполнения ваших программ. Это прекрасная среда для программирования на Pascal. Смотри Console Mode Pascal.
Редактор
Когда вы запускаете Lazarus в первый раз, на вашем рабочем столе появляется набор несвязанных ‘плавающих’ окошек.
Первое, расположенное в самом верху рабочего стола имеет название Lazarus Editor vXXXXXX — project1 (название зависит от используемой версии и названия открытого проекта). Это главное окно управления проектом и оно содержит Главное Меню и Палитру Компонентов (Component Palette).
Строкой ниже располагается Главное Меню с обычными пунктами File, Edit, Search, View и некоторыми специфичными для Lazarus. Ниже Слева располагается набор кнопок, предоставляющих быстрый доступ к некоторым функциям главного меню, и справа — Палитра Компонентов. (Примечание переводчика: если при установке вы выбираете русский язык, то весь интерфейс будет на русском, то есть пункты меню, названия окон и вкладок, а также подсказки. В связи с этим далее все названия указаны на русском, а в скобках (на английском) языке. В любой момент можно переключить язык интерфеса в пункте меню Окружение. )
Под окном редактора Lazarus слева располагается окно Инспектора Объектов, а справа Редактор Исходного Кода (Lazarus Source Editor). Может быть и другое окно меньшего размера, озаглавленное Form1, расположенное поверх Редактора Исходного Кода. Если его в данный момент не видно, то можно переключиться к нему, нажав клавишу F12, которая позволяет переключаться между Редактором Исходного Кода и Окном Формы. Окно формы это то место, где вы разрабатываете графический интерфейс вашей программы, а в Редакторе Исходного Кода отображается разрабатываемый вами Pascal-код вашего приложения. Использование Инспектора Объектов детально обсуждается ниже после описания Палитры Компонентов.
Когда вы начинаете новый проект (или впервые запускаете Lazarus) по умолчанию создается стандартная форма, состоящая из прямоугольника с точечной сеткой для более легкого позиционирования различных компонентов на форме и системная строка сверху, которая обычно содержит кнопки Свернуть, Развернуть и Закрыть. Если вы щелкните мышкой в любом месте формы, вы увидите ее свойства в Инспекторе Объектов у левого края экрана.
Другие окна, которые могут появиться в процессе работы: Инспектор проектов, содержащий сведения о файлах, включенных в проект, и позволяющий вам добавлять и удалять файлы из проекта; Окно Messages (Сообщения), отображающее сообщения компилятора, ошибки и отчеты по вашему проекту; если Lazarus был запущен из терминала, то это окно остается запущенным и в нем отображаются подробные сообщения компилятора.
Главное меню
For a detailed description of every menu item which is accessible from the Lazarus IDE Main Menu, please refer to the Main menu/ru page.
Кнопочная панель
Маленькая панель в левой верхней части основного окна, слева от палитры компонентов, имеет набор кнопок, повторяющих наиболее часто применяемые выборы основного меню:
Создать модуль, Открыть (со стрелкой вниз для отображения списка недавно использованных файлов), Сохранить, Сохранить все, Создать форму, Переключить Форма/Модуль (т.е. показать либо форму, либо модуль исходного кода), Показать модули, Показать формы, Запуск (т.е. компиляция и выполнение), Пауза, Шаг со входом, Шаг в обход (последние два – функции отладчика).
Палитра Компонентов
Это панель инструментов с вкладками, показывающая множество иконок, представляющих обычно применяемые компоненты при построении форм.
Каждая вкладка представляет собой набор иконок, составляющих функциональную группу компонентов. Самая левая иконка на каждой вкладке в виде стрелочки называется Средством Выбора.
Если навести курсор мыши на иконку палитры компонентов без нажатия, появится название данной компоненты. Заметьте, что каждое название начинается с ‘T’, что означает ‘Тип’, а точнее ‘Класс’ компоненты. При выборе компоненты для размещения на форме, Class добавится в секцию type раздела interface модуля (обычно в виде части на TForm1), и instance (образец) этого класса добавится в секцию var (обычно как переменная Form1). Все Methods (методы), разработанные для формы или ее компонент (процедуры или функции) будут помещены в раздел implementation модуля.
В приведенном ниже списке компонентов можно найти связи с файлами, которые содержат описания модулей, в которых они найдены. Если нужно узнать о свойствах конкретного компонента, зачастую следует обратить внимание на Наследование этого компонента и просмотреть свойства базового типа, из которого он произведен. Например, для изучения TMaskEdit очень полезно просмотреть TCustomMaskEdit.
ВКЛАДКИ (их имена понятны и не требуют разъяснений):
- Standard
Наиболее часто применяемые компоненты:TMainMenu, TPopupMenu, TButton, TLabel, TEdit, TMemo, TToggleBox, TCheckBox, TRadioButton, TListBox, TComboBox, TScrollBar, TGroupBox, TStaticText, TRadioGroup, TCheckGroup, TPanel, TActionList - Additional
Дополнительные, часто используемые:TBitBtn, TSpeedButton, TImage, TShape, TBevel, TPaintBox, TNotebook, TLabeledEdit, TSplitter, TMaskEdit, TCheckListBox, TScrollBox, TApplicationProperties, TStringGrid, TDrawGrid, TPairSplitter - Common Controls
TTrackBar, TProgressBar, TTreeView, TListView, TStatusBar, TToolBar, TUpDown, TPageControl, TImageList - Dialogs
TOpenDialog, TSaveDialog, TSelectDirectoryDialog, TColorDialog, TFontDialog, TOpenPictureDialog, TSavePictureDialog, TCalendarDialog, TCalculatorDialogНекоторые полезные процедуры или функции группы Dialog не размещены на Палитре, но легко применяются путем прямого вызова из исходной программы.
Несколько хороших примеров использования компонентов находятся в папке $LazarusPath/lazarus/examples исходной установки. Многие программы показывают способы применения диалогов и других компонентов без использования IDE и палитры компонентов, при наличии файла определения отдельной формы: все компоненты явно и полно определены в основной программе. Другие программы примеров полностью используют IDE.
Некоторые примеры не будут сначала работоспособны: понадобится настройка путей и разрешений для файлов и папок. При желании скомпилировать пример убедитесь, что для файлов и папок установлены разрешения read/write/execute, или скопируйте файлы в папку с подходящими разрешениями.
Попробуйте выполнить программу ‘testall’ для просмотра меню доступных компонентов совместно с маленькими примерами тестовых форм для большинства из них; затем просмотрите исходный код для понимания принципов их работы!
- Misc
TColorButton, TSpinEdit, TArrow, TCalendar, TEditButton, TFileNameEdit, TDirectoryEdit, TDateEdit, TCalcEdit, TFileListBox - Data Controls
Компоненты работы с данными, которые в основном копируют стандартную и дополнительную группы, но применительно к базам данных: TDBNavigation, TDBText, TDBEdit, TDBMemo, TDBImage, TDBListBox,TDBComboBox, TDBCheckBox, TDBRadioGroup, TDBCalendar, TDBGroupBox, TdbGrid - Data Access
TDatasource - System
TTimer, TIdleTimer, TProcess - SynEdit
Группа компонентов для сопряжения с другими языками и сервисными программами. SynEdit – продвинутый редактор для Borland Delphi, Kylix and C++Builder. Он поддерживает подцветку синтаксиса и завершение кода, экспорт в html, tex и rtf. Полное управление VCL/CLX, считая, что это не оболочка для управления Microsoft Windows, не нужна библиотека времени выполнения; это делает SynEdit кроссплатформенным компонентом. Также планируется совместимость с FreePascal, и SynEdit является компонентом редактирования в Lazarus IDE. См. synedit at sourceforge. TSynEdit, TSynAutoComplete, TSynExporterHTML, TSynMacroRecorder, TSynMemo, TSynPasSyn, TSynCppSyn, TSynJavaSyn, TSynPerlSyn, TSynHTMLSyn, TSynXMLSyn, TSynLFMSyn, TSynUNIXShellScriptSyn, TSynCssSyn, TSynPHPSyn, TSynTeXSyn, TSynSQLSyn, TSynMultiSynДля работы с палитрой нужно открыть форму (если форма не открыта, выбрать Файл -> Создать Форму). Щелкните на иконке нужного компонента на нужной вкладке Палитры, затем щелкните на форме, и этот компонент появится на ней. После этого можно выбрать новый компонент щелчком мыши, переместить его в желаемое место и подогнать размеры. Эти установки можно сделать также с помощью Инспектора Объектов, регулируя значения соответствующих свойств данного компонента.
При установке дополнительных компонентов, разработанных самостоятельно, или полученных со стороны, появятся дополнительные вкладки с соответствующими иконками на Палитре компонентов. Эти новые компоненты могут быть выбраны и использованы на формах, как и те, что поставлены по умолчанию.
Отладчик
Писал и редактировал: Romlo
Настройки
Чтобы пользоваться отладчиком, должны быть установлены галочки:
проект > параметры компилятора > вкладка «Связывание» >
- галочка «Выдавать номера строк в ошибках времени исполнения»
- галочка «Генерировать отладочную информацию для GDB (замедляет сборку)»
Кнопки
Управление отладкой производится вот этими пятью кнопками:
- Зеленый треугольник — «Запуск» — скомпилировать и запустить приложение под отладчиком.
- Вертикальные палочки — «Пауза» — здесь серые, а вообще синие — это пауза, можно приостановить приложение, например, при трассировке.
- Квадратик — «Останов» — здесь серый, а вообще красный — закрыть приложение. Это если оно повисло (напр. в бесконечном цикле).
Остальные две кнопки используются при трассировке программы, про которую мы поговорим подробнее.
Трассировка
Трассировать программу — значит выполнять её шаг за шагом, построчно. Для трассировки какого-либо участка программы, нужно установить в нужном месте «точку останова». Для этого надо найти начало участка программы в редакторе кода, а затем щёлкнуть по его номеру слева. При этом сама строчка выделится красным, а рядом с номером появится красный кружок.
После нажатия на «запуск», знак вопроса в кружке должен смениться галочкой. Если вместо галочки там крестик, значит, точка останова не была установлена по каким-то причинам. В этом случае лучше ещё раз проверить настройки и перезапустить Lazarus. Если же всё получилось, продолжим. Далее, нужно вызвать то событие, при котором начнёт выполняться данный участок кода (то есть если вы поставили точку останова в начале button1_click, например, то теперь вам надо нажать эту кнопку). При этом должен показаться редактор кода. Ранее красная строчка теперь станет серой, а галочка в кружке сменится стрелочкой:
Вот теперь и вспомним про те две кнопки, что мы не рассмотрели. первая называется «Шаг со входом», вторая — «Шаг в обход». Смысл первой заключается в том, что если сейчас вы «стоите» на строчке с какой-то процедурой или функцией, то нажав эту кнопку, вы перейдете на эту процедуру и будете выполнять пошагово уже её. Когда она закончится, вы вернётесь обратно, но уже на следующую строку. Как несложно догадаться, нажав на вторую кнопку, вы не зайдёте в процедуру, она просто выполнится, а вы перейдёте на следующую строку.
Отдельно надо сказать, что «Шаг со входом» не работает, если функция, на которой вы «стоите», экспортирована из библиотеки (например, в WinAPI-функцию вы зайти не сможете).
Также имеется возможность просматривать содержимое переменных, для этого надо просто навести на неё мышку прямо в редакторе кода, во всплывающей подсказке будет указан адрес переменной и её содержимое:
Ну и в дополнение к сказанному добавлю, что чтобы продолжить выполнение программы в обычном режиме (если вам надоело её трассировать), достаточно нажать кнопку «запуск». Ну а чтобы убрать точку останова, надо закрыть приложение и ещё раз щёлкнуть по номеру строки, на которой эта точка стоит. ну и после этого заново откомпилировать приложение.
Файлы Lazarus
(Благодарим Kevin Whitefoot.) (ДОбавления от Giuseppe Ridinò, User:Kirkpatc и Tom Lisjac)
Когда вы выполняете сохранение на самом деле вы сохраняете два файла:
xxx.pas и yyy.lpr
(Вы сохраняете и больше, но это те файлы, которым вы даете имена). Файл проекта (lpr) и файл модуля (pas) должны иметь разные имена, потому что Lazarus присваивает имя модулю (в исходном коде) также, как и имя файла модуля, а программе по имени файла проекта (это необходимо сделать иначе компилятор может впоследствии не найти модуль по ссылке на него в файле проекта). Во избежание противоречий (ошибок) следует изменить все упоминания Unit1 на xxx.
Итак, если вы сохранили проект под именем again, то попытка сохранить again.pas и again.lpr приведет к ошибке, потому что имена модуля и программы одинаковы, что приводит к ошибке двойного именования.
Ниже приведен пример именования:
total 4740 free 76500 -rwxrwxrwx 1 kjwh root 4618697 Mar 24 11:19 again.exe -rw-rw-rw- 1 kjwh root 3002 Mar 24 11:21 again.lpi -rw-rw-rw- 1 kjwh root 190 Mar 24 11:18 again.lpr -rw-rw-rw- 1 kjwh root 506 Mar 24 11:08 againu.lfm -rw-rw-rw- 1 kjwh root 679 Mar 24 11:08 againu.lrs -rw-rw-rw- 1 kjwh root 677 Mar 24 11:08 againu.pas -rw-rw-rw- 1 kjwh root 2124 Mar 24 11:08 againu.ppu -rwxrwxrwx 1 kjwh root 335 Mar 24 11:07 ppas.bat
Заметьте, что появилось более двух файлов, как следовало бы ожидать.
Ниже приведена краткая справка по каждому файлу:
again.exe: Основной исполняемый файл программы. Win32 добавляет расширение «exe». Linux этого не делает. В Linux это файл будет иметь большой размер вследствие того, что включает отладочную информацию. Запустите утилиту «strip» чтобы удалить ее и значительно снизить размер исполняемого файла.
again.lpi: Это основной файл проекта Lazarus (Lazarus Project Information); эквивалент основного файла приложения в Delphi с расширением .dpr. Он сохраняется в XML формате.
again.lpr: Исходный код основной программы. Не смотря на специфичноое для Lazarus расширение на самом деле это обычный Pascal-код. Он содержит строку Uses, помогающую компилятору найти все необходимые модули Отметим, что программа называется не аналогично имени данного файла.
againu.lfm: Это файл, в котором Lazarus хранит описание формы. Lazarus использует его для создания файла ресурсов, который включает секцию инициализации модуля againu.pas. Файл Delphi с расширением .dfm может быть преобразован в lfm-формат в IDE Lazarus из главного меню: Tools->Convert DFM file.
again.lrs: Это автоматически генерируемый файл ресурсов. Заметьте, что это не файл ресурсов Windows.
againu.pas: Модуль, содержащий код формы.
again.ppu: Это скомпилированный модуль.
ppas.bat: Это простой скрипт, связывающий программу для создания выполняемого файла. Если компиляция успешна, он удаляется компилятором.
Авторство и изменения
Эта страница была импортирована из epikwiki версии.
- Created initial page and template. T. Lisjac — 11/04/2003 VlxAdmin
- Inserted a note containing instructions for writing your first Lazarus Program. Suggest an administrator places it in the appropriate place on the Tutorial menu. 3/09/2004 User:Kirkpatc
- Per above, moved Chris’s writeup to the main body of the tutorial VlxAdmin
- Began to insert text describing the Lazarus Editor — more to follow! 24 Mar 2004 User:Kirkpatc
- Added some more to Lazarus Editor section of Tutorial. 25 Mar 2004 User:Kirkpatc
- Added screenshots and revised some of the page formatting VlxAdmin 3/25/2004
- Moved some of kwhitefoot’s comments into Tutorial section. Formatting not quite right, but have to go to bed now! 26 Mar 2004 User:Kirkpatc
- Formatted, added credits and comments. Removed original notes. VlxAdmin 3/26/2004
- More material added to Editor section of tutorial. 26 Mar 2004 User:Kirkpatc
- More material added describing the Main Menu. Renamed ‘Hello World’ to ‘Getting Started’ and moved it to nearer the top. 31 March 2004 User:Kirkpatc
- Inserted section on Run sub-menu. Some general editing (eg ended each entry with a period to ensure consistency). 9 Apr 2004 User:Kirkpatc
- Inserted a new section on How to get started with MySQL in FPC/Lazarus. 13 Apr 2004 User:Kirkpatc
- Deleted the section on MySQL from here: it has been copied to Lazarus Database section of tutorial. 14 Apr 2004 User:Kirkpatc
- Added some more to the description of the Editor Main Menu. 18 Apr 2004 User:Kirkpatc
- Added section on Environment sub-menu. 19 Apr 2004 User:Kirkpatc
- Added section on Components sub-menu. 4 May 2004 User:Kirkpatc
- Adding Tools sub-menu description (incomplete). 7 May 2004 User:Kirkpatc
- Added some screenshots to Menu descriptions. 9 May 2004 User:Kirkpatc
- Fixed a bit in Environment Options — thanks VincentSnijders. 14 May 2004 User:Kirkpatc
- More additions to Tools sub-menu. 19 May 2004 User:Kirkpatc
- Added a section on the Button Bar and started work on The Component Palette. 20 May 2004 User:Kirkpatc
- Posted a description file for the StdCtrls unit of the LCL, in the hope that people will add comments. 26 May 2004 User:Kirkpatc
- Edited the StdCtrls file, removing a lot of repetitive material and doing some formatting. It is still far too long. 28 May 2004 User:Kirkpatc
- Expanding on the Components Palette. 5 June 2004 User:Kirkpatc
- Added a lot to the DialogExamples page. 10 June 2004 User:Kirkpatc
- Considerable revision of the StdCtrls page, hopefully making it clearer and encouraging people to contribute — particularly in the ‘Description’ sections. 14 June 2004 User:Kirkpatc
- Added pages for Menus and Dialogs units (linked to Component Palette description) — please feel free to add to these pages. 14 June 2004 User:Kirkpatc
- Added page for Common Controls (linked to Component Palette). 16 June 2004 User:Kirkpatc
- Added MaskEdit page (linked to Component Palette). 17 June 2004 User:Kirkpatc
- Added Buttons, ExtCtrls pages (linked to Component Palette). 17 June 2004 User:Kirkpatc
- Edited MainMenu component description page. 23 June 2004 User:Kirkpatc
- Some additions to Common Controls. 28 June 2004 User:Kirkpatc
- A new tutorial on Text-mode Pascal programming has been added. 5 July 2004 User:Kirkpatc
- Minor changes to ComCtrls, ExtCtrls, Environment Menu. 10 July User:Kirkpatc
- Added FormsTxt, component description page for Component Palette. 20 July 2004 User:Kirkpatc
- Some corrections to ConsoleModePascal. 21 July 2004 User:Kirkpatc
- Some small changes to ComponentPalette. 22 July 2004 User:Kirkpatc
Basic Pascal Tutorial/Hello, World/ru
В недолгой истории компьютерного программирования есть устоявшаяся традиция, что первая прграмма на новом языке должна выводить на экран текст «Hello, world». Так давайте сделаем это. Скопируйте программу, приведённую ниже, в текстовый редактор вашей IDE, затем скомпилируйте и запустите её.
Если вы не знаете, как сделать это, вернитесь к оглавлению. Предыдущие уроки объяснят, что такое компилятор, дадут ссылки на страницы, где можно скачать компилятор и проведут вас через через установку компилятора Pascal с открытым исходным кодом под Windows.
program Hello; begin writeln ('Hello, world.') end.
Вывод на ваш экран должен выглядеть так:
Hello, world.
Если вы запустите программу в IDE, то сможете увидеть, как программа промелькнёт, а затем вернётся в IDE прежде, чем вы успеете увидеть, что произошло. Смотрите завершающую часть предыдущего урока, чтобы понять причину этого. Одно из предложенных решений, а именно — добавление readln для ожидания нажатия клавиши Enter перед завершением программы, изменит программу «Hello, world», и она станет выглядеть так:
program Hello; begin writeln ('Hello, world.'); readln end.
- Russian
- Basic Pascal Introduction/ru
