Как создать консольное приложение в lazarus
Чтобы создать первую программу в Lazarus, надо выбрать в меню ФАЙЛ команду СОЗДАТЬ. А в открывшемся окне в группе PROJECT выбрать тип программы и нажать кнопку ОК. Подробности см. в видео.
Lazarus поддерживает следующие типы программ.
Application (Приложение)
Графическая программа на LCLI/FreePascal. Это обычное оконное приложение Windows.
Programm (Программа)
Программа FreePascal. Это обычная программа FrePascal. Если вы читали книгу Как стать программистом, то вы уже писали такие программы.
Console application (Консольное приложение)
Консольное приложение Windows. Это программа FreePascal, использующая класс TCustomApplication, что облегчает проверку параметров командной строки, обработки исключений и т.п. Иными словами, это та же программа FreePascal, которая, однако, позволяет использовать функции Windows.
Library (Библиотека)
Библиотека FreePascal.
Custom programm (Пользовательская программа)
Программа пользователя на языке FreePascal.
CGIApplication (Приложение CGI)
Программа CGI (Common Gateway Interface - общий шлюзовый интерфейс) на языке FreePascal.
FPCUnit Console Application (Консольное приложение FPCUnit)
Консольное тестовое приложение. Это приложение используется для тестирования в консольном режиме.
FPCUnit Application (Приложение FPCUnit)
Тестовое приложение. Это приложение используется для тестирования в графическом режиме.
Мы в своих примерах будем в основном использовать Application и Program.
И сейчас мы напишем нашу первую программу. Для этого в меню ФАЙЛ выбираем команду СОЗДАТЬ. Затем в группе PROJECT выбираем Programm и нажимаем кнопку ОК.
Между словами begin и end пишем код:
Если вы читали книгу Как стать программистом, то вы уже догадались, что эта программа выведет на экран строку “Hello, WORLD. ”.
Я не буду использовать в консольных приложениях русский текст, так как на некоторых компьютерах без вмешательства в настройки операционной системы вместо русских букв будут выводиться “краказябры”. Английские же буквы всегда будут выводиться правильно.
Итак, полный текст программы у вас должен получиться таким:
Проверьте на всякий случай текст ещё раз. Затем в меню ЗАПУСК выберите команду ЗАПУСК (или нажмите клавишу F9). Если вы не допустили ошибок, то программа выполнится и вы увидите на экране строку “Hello, WORLD. ”.
Теперь можно сохранить программу на диске в нашей папке MYPROG. Если сами с этим не справитесь, то смотрите видео.
Домашнее задание:
Создать в папке MYPROG папку 1103. Создать программу (проект) в Lazarus. Сохранить проект в папке 1103. Откомпилировать программу. Запустить программу из папки 1103 (а не из среды разработки). Похвастаться друзьям)))
Многие из нас писали программы на Паскале задолго до того, как вошли в моду Графический интерфейс пользователя (GUI) и Интегрированные среды разработки (IDE). Многие другие являются новичками в программировании на Pascal, и им необходимо уметь опробовать основные инструменты языка. Третьим нужны консольные приложения или приложения текстового режима для выполнения сложных задач управления системой.
Программирование в консольном режиме без Lazarus
Хотя многие предпочитают использовать Lazarus IDE для написания программ в режиме консоли, вы также можете написать их с помощью любого текстового редактора и скомпилировать их самостоятельно, вызвав компилятор 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'(Пользовательской программой) в любое время.
Пример для начинающих:
Pascal scripts
Кроме того, можно писать сценарии, которые динамически компилируются с помощью InstantFPC, кроссплатформенного решения для запуска (небольших) программ Pascal в виде сценариев. Шебанг
позволяет запускать скрипт как отдельную программу.
Примечание: Хотя он используется для запуска сценариев Pascal, InstantFPC использует обычный Object Pascal, а не язык сценариев PascalScript. Таким образом, "PascalScript" и Pascal script - это не одно и то же.
Запуск программы
Компиляция
Если вы еще не сохранили программу, то среда IDE поместит ее во «временный» каталог (например, /tmp в Linux, C:\temp в Windows, см. Environment Options / Files / Directory (Параметры среды / Файлы / Каталог) для собранных тестовых проектов).
Если вы уже сохранили проект, значит, программа была создана в том же каталоге, где вы сохранили файл project1.lpi.
Запуск в консоли
Вы можете запустить программу, перейдя в окно консоли (терминала), затем с помощью cd перейдя в каталог и введя имя программы. В Unix/Linux, если она находится в текущем каталоге, вам придется начать с ./ , поскольку программа, вероятно, не будет найдена в PATH.
Пример для Linux/Unix, где программа хранится в /tmp:
Однако может быть очень неудобно продолжать переходить из редактора 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 и т. Д.).
К сожалению, этот метод не позволяет использовать встроенный отладчик.
Запуск в IDE с перенаправлением вывода
Затем файл 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.
Примеры
Вы можете использовать редактор Lazarus, чтобы опробовать все примеры из стандартных учебников Паскаля, или можете написать свой собственный. Некоторые из наиболее полезных процедур - это процедуры для выполнения системных команд или для запуска других программ (написанных на Паскале, C или Perl, либо в сценариях оболочки или пакетных сценариях).
Выполнение команд оболочки
Пример: обновить FPC и Lazarus
Пример: корректировка fpc и lazarus
Могут выполняться более сложные команды. Например, после посещения хранилища SVN с новейшими версиями FPC и Lazarus (см. buildfaq) можно иметь исходные версии FPC и Lazarus новейшими, путем взятия из хранилища SVN следующей последовательностью вызовов:
Обратите внимание, что выдача команды
не работает, потому что после каждого вызова функции fpsystem() выполнение программы возвращается в каталог, в котором она была запущена; поэтому нам нужно включить несколько операторов в каждую строку в наши вызовы оболочки через fpsystem(). [Скорее так: он всегда начинается.]
Необязательно вводить каждую команду как отдельную строку Паскаля; можно создать файл сценария bash следующим образом (из buildfaq):
Назовите файл updatelaz.sh, а затем вызовите его из программы на Паскале для его непосредственного выполнения вместо использования bash следующим образом:
Примечание для пользователей Windows
Традиционно при написании консольных программ в Windows используется кодировка cp866. Если не принять специальных мер, то при написании консольной программы в IDE в консоли вместо русских букв будут выводиться кракозябры. Чтобы получился нормальный русский текст, в окне кода программы нужно нажать правую кнопку мыши и выбрать в контекстном меню "Параметры файла -> Кодировка -> CP866".
Освоить работу с консольными приложениями и с параметрами программы.
Консольные приложения
На сегодняшний день о программировании на Lazarus существует очень мало книг на русском языке, и все они описывают работу в основном, с консольными приложениями, хотя особой надобности в консолях сейчас нет. Но и совсем обойти эту тему нельзя. Что же такое консольное приложение ?
Консольным приложением называется программа , которая не имеет графического интерфейса - окон, и которая работает в текстовом режиме в черно-белой консоли. Команды в такой программе приходиться вводить с клавиатуры, результаты работы консольные приложения также выводят на экран в текстовом режиме.
Если вы пользуетесь операционной системой Windows , то нажмите на "Пуск" и выберите команду "Выполнить". В открывшемся окне наберите
и нажмите <Enter>. Откроется командная консоль , в которой команды нужно вводить в текстовом режиме:
Собственно, вы видите окно предка Windows - операционной системы MS-DOS . Именно так выглядел экран с загруженной ОС MS-DOS , и управлять ею приходилось, вручную набивая всевозможные команды. Это уже позже корпорация Microsoft навесила на ядро MS-DOS всевозможные драйверы и утилиты, снабдила его графическим оконным интерфейсом, и появилась сначала полуграфическая ОС Windows 3.10 (русский вариант был 3.11 версии), а затем и целиком графическая Windows 95 . Но к консольному ядру системы можно обращаться и в современных ОС, в Windows для этого используется программа cmd.exe, а в ОС Linux - терминал .
Все языки высокого уровня позволяют делать и консольные приложения, другое дело - зачем? Подавляющее большинство современных программ имеет графический интерфейс , который мы с вами создавали с самой первой лекции. А консольные приложения делаются в основном, системными программистами. Несмотря на то, что Object Pascal обладает для этого всеми необходимыми инструментами, системщики обычно пользуются такими языками, как Ассемблер , C, реже - C++. Но все же знать, как создаются консольные приложения нужно, поэтому данную лекцию мы посвящаем им.
Создание консольного приложения
Создать консольное приложение можно разными способами, но проще всего так. Откройте Lazarus. Командой "Проект -> Закрыть проект" закройте текущий проект, автоматически появится окно Мастера создания проекта. В нем нажмем кнопку "Новый проект". Появится окно создания проекта, в котором можно выбрать "Программа" или "Консольное приложение". Если мы выберем "Программа", то будет создан модуль с минимальным кодом. Если же мы выберем "Консольное приложение", то кода будет больше, так как при этом создается программа с новым классом, производным от TCustomApplication . TCustomApplication обеспечивает хорошую основу и делает программирование утилит командной строки довольно простым. Например, проверку опций командной строки, написание справки, проверку переменных окружения и обработку исключений. Все программы LCL автоматически это используют.
Но нам не нужно использовать возможности класса TCustomApplication , мы делаем простую консольную программу, поэтому в окне создания проекта мы выбираем "Программа". Сформируется проект, а в Редакторе исходного кода будет минимум текста:
Обратите внимание, если нам нужно подключить к программе какие то модули, то делать это нужно до комментария
В этом случае мы ставим запятую после указанного модуля Classes и добавляем свои модули. Завершающая точка с запятой стоит после комментария, нам её ставить не нужно.
Свой код мы будем писать между скобками
А если нам потребуется указать глобальные константы , переменные или сделать объявления процедур и функций, то все это делается до begin .
Для примера мы создадим простое приложение , а по ходу дела, познакомимся с инструментами ввода-вывода информации в консольных приложениях.
WRITE и WRITELN
Процедура Write предназначена для вывода информации на экран. Она имеет следующий синтаксис :
Действует процедура следующим образом. В скобках мы можем указать какой-то текст, вывести содержимое переменных. Например:
После вывода информации на экран курсор остается на той же строчке, в позиции, где он оказался после вывода последнего символа.
Процедура Writeln действует точно также, но после вывода последнего символа курсор переходит на начало следующей строки.
Для ознакомления с процедурами создайте новый проект "Программа". Модуль можно не переименовывать, просто сохраните его в папку 21-01. Полный текст модуля следующий:
Обратите внимание: раздел переменных var мы указали до служебного слова begin , то есть, переменные a и b в пределах модуля являются глобальными. Далее мы присвоили переменным значения, затем вывели на экран приветствие, а потом содержимое переменных. На процедуру readln() пока не обращайте внимания, она нужна только, чтобы программа не закрылась сразу же после вывода текста, а была на экране, пока мы не нажмем <Enter>. Сохраните проект и запустите его на выполнение. И сразу же мы видим недостаток: вместо русских букв выходит нечто, что в Интернете называют "кракозябры":
Рис. 21.2. Неправильный вывод кириллицы в консольной программе
В "Символы и строки" мы упоминали, что в консольных приложениях Windows принято использовать кодировку CP866, тогда как в графических приложениях используется CP1251 и Юникод. Отсюда и "кракозябры". В Linux и Unix таких проблем нет. Однако решить эту проблему совсем несложно. Нажмите <Enter>, чтобы закрыть консоль , и вернитесь в Редактор кода. Щелкните по окну с кодом правой кнопкой мыши, и в открывшемся контекстном меню выберите команду "Параметры файла -> Кодировка -> CP866". Откроется окно смены кодировки, нам надо нажать кнопку "Изменить файл". Снова запустите программу на выполнение - теперь с кодировкой полный порядок :
Освоить работу с консольными приложениями и с параметрами программы.
Консольные приложения
На сегодняшний день о программировании на Lazarus существует очень мало книг на русском языке, и все они описывают работу в основном, с консольными приложениями, хотя особой надобности в консолях сейчас нет. Но и совсем обойти эту тему нельзя. Что же такое консольное приложение ?
Консольным приложением называется программа , которая не имеет графического интерфейса - окон, и которая работает в текстовом режиме в черно-белой консоли. Команды в такой программе приходиться вводить с клавиатуры, результаты работы консольные приложения также выводят на экран в текстовом режиме.
Если вы пользуетесь операционной системой Windows , то нажмите на "Пуск" и выберите команду "Выполнить". В открывшемся окне наберите
и нажмите <Enter>. Откроется командная консоль , в которой команды нужно вводить в текстовом режиме:
Собственно, вы видите окно предка Windows - операционной системы MS-DOS . Именно так выглядел экран с загруженной ОС MS-DOS , и управлять ею приходилось, вручную набивая всевозможные команды. Это уже позже корпорация Microsoft навесила на ядро MS-DOS всевозможные драйверы и утилиты, снабдила его графическим оконным интерфейсом, и появилась сначала полуграфическая ОС Windows 3.10 (русский вариант был 3.11 версии), а затем и целиком графическая Windows 95 . Но к консольному ядру системы можно обращаться и в современных ОС, в Windows для этого используется программа cmd.exe, а в ОС Linux - терминал .
Все языки высокого уровня позволяют делать и консольные приложения, другое дело - зачем? Подавляющее большинство современных программ имеет графический интерфейс , который мы с вами создавали с самой первой лекции. А консольные приложения делаются в основном, системными программистами. Несмотря на то, что Object Pascal обладает для этого всеми необходимыми инструментами, системщики обычно пользуются такими языками, как Ассемблер , C, реже - C++. Но все же знать, как создаются консольные приложения нужно, поэтому данную лекцию мы посвящаем им.
Создание консольного приложения
Создать консольное приложение можно разными способами, но проще всего так. Откройте Lazarus. Командой "Проект -> Закрыть проект" закройте текущий проект, автоматически появится окно Мастера создания проекта. В нем нажмем кнопку "Новый проект". Появится окно создания проекта, в котором можно выбрать "Программа" или "Консольное приложение". Если мы выберем "Программа", то будет создан модуль с минимальным кодом. Если же мы выберем "Консольное приложение", то кода будет больше, так как при этом создается программа с новым классом, производным от TCustomApplication . TCustomApplication обеспечивает хорошую основу и делает программирование утилит командной строки довольно простым. Например, проверку опций командной строки, написание справки, проверку переменных окружения и обработку исключений. Все программы LCL автоматически это используют.
Но нам не нужно использовать возможности класса TCustomApplication , мы делаем простую консольную программу, поэтому в окне создания проекта мы выбираем "Программа". Сформируется проект, а в Редакторе исходного кода будет минимум текста:
Обратите внимание, если нам нужно подключить к программе какие то модули, то делать это нужно до комментария
В этом случае мы ставим запятую после указанного модуля Classes и добавляем свои модули. Завершающая точка с запятой стоит после комментария, нам её ставить не нужно.
Свой код мы будем писать между скобками
А если нам потребуется указать глобальные константы , переменные или сделать объявления процедур и функций, то все это делается до begin .
Для примера мы создадим простое приложение , а по ходу дела, познакомимся с инструментами ввода-вывода информации в консольных приложениях.
WRITE и WRITELN
Процедура Write предназначена для вывода информации на экран. Она имеет следующий синтаксис :
Действует процедура следующим образом. В скобках мы можем указать какой-то текст, вывести содержимое переменных. Например:
После вывода информации на экран курсор остается на той же строчке, в позиции, где он оказался после вывода последнего символа.
Процедура Writeln действует точно также, но после вывода последнего символа курсор переходит на начало следующей строки.
Для ознакомления с процедурами создайте новый проект "Программа". Модуль можно не переименовывать, просто сохраните его в папку 21-01. Полный текст модуля следующий:
Обратите внимание: раздел переменных var мы указали до служебного слова begin , то есть, переменные a и b в пределах модуля являются глобальными. Далее мы присвоили переменным значения, затем вывели на экран приветствие, а потом содержимое переменных. На процедуру readln() пока не обращайте внимания, она нужна только, чтобы программа не закрылась сразу же после вывода текста, а была на экране, пока мы не нажмем <Enter>. Сохраните проект и запустите его на выполнение. И сразу же мы видим недостаток: вместо русских букв выходит нечто, что в Интернете называют "кракозябры":
Рис. 21.2. Неправильный вывод кириллицы в консольной программе
В "Символы и строки" мы упоминали, что в консольных приложениях Windows принято использовать кодировку CP866, тогда как в графических приложениях используется CP1251 и Юникод. Отсюда и "кракозябры". В Linux и Unix таких проблем нет. Однако решить эту проблему совсем несложно. Нажмите <Enter>, чтобы закрыть консоль , и вернитесь в Редактор кода. Щелкните по окну с кодом правой кнопкой мыши, и в открывшемся контекстном меню выберите команду "Параметры файла -> Кодировка -> CP866". Откроется окно смены кодировки, нам надо нажать кнопку "Изменить файл". Снова запустите программу на выполнение - теперь с кодировкой полный порядок :
Рис. 21.3. Правильный вывод кириллицы в консольной программе
READ и READLN
Процедура Read предназначена для ввода информации в программу, точнее, в переменные. Процедура работает следующим образом:
То есть, в качестве параметров мы указываем одну или несколько разделенных запятыми переменных. Когда программа доходит до этого места, то ожидает от пользователя ввода данных. Пользователь должен ввести данные такого же типа, как у соответствующих переменных. Если переменных несколько, то соответствующие значения нужно вводить, разделяя их пробелами. Например, если есть переменная целого типа i , и вещественная переменная r , то при выполнении инструкции
произойдет вот что: программа приостановит свою работу, ожидая от пользователя ввода данных. Пользователь должен ввести целое и вещественное числа, разделенные пробелом, и нажать <Enter>. Например, пользователь ввел:
Как только он нажмет <Enter>, в переменную i попадет число 12, а в r - число 3,45. Если пользователь введет некорректные данные, не соответствующие типу переменной, то возникает ошибка и программа аварийно завершает работу.
Пользователь может ввести больше данных, чем указано переменных в процедуре read . В этом случае, оставшиеся данные будут обработаны следующей процедурой read . Например, пользователь ввел:
и нажал <Enter>. Эти данные могут быть обработаны следующими инструкциями:
Процедура Readln работает также. Отличие заключается в том, что если пользователь ввел больше данных, то readln не передает лишние данные в следующую инструкцию readln , а попросту обрубает их. То есть, если изменить предыдущий пример:
то в a и b попадут числа 1 и 23, после чего программа будет ожидать следующих данных, а число 456 потеряется.
Если указать read или readln без параметров, например, так:
Чтобы пользователь понимал, чего от него хочет программа , перед каждой инструкцией read или readln следует с помощью write или writeln выводить поясняющий текст.
Вернемся к нашей программе, и немного изменим код (между begin и end. ):
Теперь программа выводит запрос " Введите первое число: ", и замирает, ожидая от пользователя ввода данных. После того, как он введет число и нажмет <Enter>, программа таким же образом запросит второе число. Затем она выведет результат, и будет ожидать, пока пользователь не нажмет <Enter>:
Параметры консольного приложения
Нередко системные консольные программы вызываются с какими-то параметрами. Например, в Windows можно нажать "Пуск -> Выполнить" и указать следующую команду:
В результате будет запущена консольная утилита ping.exe , которая делает трассировку ( обмен данными ) с указанным IP-адресом. Таким образом, проверяют, есть ли связь с данным адресом. В примере программа запускается с двумя параметрами. Первым параметром является IP- адрес 127.0.0.1 - это адрес локальной машины, обращаясь к 127.0.0.1, вы обращаетесь к своему же компьютеру. Вторым параметром является
Возможно, когда-нибудь и нам потребуется создать программу (не обязательно консольную), умеющую принимать и обрабатывать параметры. Для обработки параметров используются две функции: ParamCount и ParamStr .
ParamCount возвращает количество параметров, переданных в программу.
ParamStr(i) возвращает параметр под индексом i - индексация начинается с 1. Например, вывести на экран первый и последний параметры можно так:
Однако имейте в виду, что в любой программе, консольной или обычной, даже запущенной совсем без всяких параметров, доступен и "нулевой" параметр ParamStr(0) - в нем всегда находятся адрес и имя файла программы.
Имейте в виду, что все параметры, даже числа, вводятся в виде текста, так что для работы с целыми числами нам придется использовать функции IntToStr и StrToInt . А обе эти функции описаны в модуле SYSUTILS , который нам придется подключить в разделе uses . Вот полный листинг программы :
Обратите внимание, после модуля Classes мы указали модуль SysUtils . Далее, мы обеспечили ввод данных в a и b в случаях, если параметров вообще нет, если есть только один параметр , и если параметров больше, чем один. В конце мы выводим общее количество указанных параметров, нулевой параметр с указанием адреса и файла программы, и затем указываем значения переменных. В заключение указываем пустой readln , чтобы программа не закрылась, пока не захочет пользователь .
Сохраните проект и запустите его. Он загрузится без параметров, вам придется ввести оба числа вручную. Введите числа, полюбуйтесь на результат и закройте программу. Теперь загрузим ее с параметрами. Для этого нажмите "Пуск -> Выполнить", нажмите кнопку "Обзор", найдите и откройте наш проект, допишите после его имени один или два параметра, например, так:
Как видите, в качестве параметров я указал два числа: 12 и 24. Программа не станет запрашивать у меня данные, а сразу выведет результат:
9Поэкспериментируйте с программой, вызывая с различным количеством параметров.
Как уже говорилось, функции ParamCount и ParamStr можно использовать в любой программе, не обязательно консольной.
текстовом режиме . Для этого существует консольное приложение . Чтобы создать новое консольное приложение, нужно выполнить команду Проект — Создать проект. , в появившемся диалоговом окне (рис. 1.31, 1.32) выбрать фразу Программа пользователя и нажать кнопку Создать .
Рисунок 1.51: Окно редактора в консольном приложении
На экране появится окно редактора программного кода (рис. 1.51), в котором уже представлена
общая структура программы на языке Паскаль.
В общем виде программа на языке Free Pascal состоит из заголовка программы, раздела описаний и непосредственно тела программы.
Заголовок программы состоит из ключевого слова program и имени программы. В нашем случае (рис. 1.51) это Project1 . Имя
было присвоено программе автоматически. При желании его можно изменить.
Раздел описаний обычно включает в себя описание констант, типов, переменных, процедур и функций. На рис. 1.51 видно, что раздел описаний начинается со слова uses . Это раздел подключения моду-
лей. Модуль — это специальная программа, которая расширяет возможности языка программирования. В нашем случае происходит подключение модуля SysUtils , который позволяет работать с файлами
и каталогами, и модуля Classes , который работает с компонентами.
Алексеев Е.Р., Чеснокова О.В., Кучер Т.В. Самоучитель по программированию на Free Pascal и Lazarus
За разделом описаний следует исполняемая часть программы, или тело программы . Оно начинается со служебного слова begin и за-
канчивается служебным словом end и точкой. Тело программы содер-
жит операторы языка, предназначенные для реализации поставленной задачи.
Кроме того в тексте программы могут встречаться комментарии. Комментарий — это текст, заключенный в фигурные скобки или начинающийся с двух наклонных. Этот текст не является программным кодом, а носит информационный характер. Например, в нашем случае текст заключенный в фигурные скобки, сразу после описания модулей сообщает пользователю о том, что остальные элементы языка он может добавить самостоятельно.
Рассмотрим пример . Пусть нужно решить задачу перевода градусной меры угла в радианную . Эта задача известна из школьного курса и формулируется так: чтобы найти радианную меру какого-нибудь угла по данной градусной мере, нужно умножить число градусов на
и найденные произведения сложить.
Текст программы для решения поставленной задачи в консольном
приложении будет иметь вид: program Project1;
gradus,minuta:integer; radian: real; begin
radian:=gradus*pi/180+minuta*pi/(180*60); writeln('radian=', radian);
Сохранить , открыть , откомпилировать , скомпоновать и запустить на выполнение программу в консольном приложении можно так же, как в визуальном проекте.
Алексеев Е.Р., Чеснокова О.В., Кучер Т.В. Самоучитель по программированию на Free Pascal и Lazarus
Результаты работы нашей программы будут иметь вид: gradus=165
Нетрудно заметить, что к тексту, созданному автоматически, мы добавили описание переменных (все используемые в программе пере-
менные должны быть описаны):
//Описаны две целочисленные переменные. gradus,minuta:integer;
//Описана вещественная переменная. radian: real;
и тело программы:
begin //Начало тела программы. //Вывод на экран строки символов gradus= write('gradus=');
//Ввод переменной gradus. readln(gradus);
//Вывод на экран символов minuta=. write('minuta=');
//Ввод переменной minuta. readln(minuta); //Вычисление.
radian:=gradus*pi/180+minuta*pi/(180*60); //Вывод результата вычислений. writeln('radian=', radian);
end. //Конец программы.
Так как в этой программе графический интерфейс отсутствует, мы разработали элементарный текстовый диалог компьютер — пользователь. Для этого были использованы операторы ввода ( read ) и вывода ( write ) данных.
1.4.12 Операторы ввода - вывода данных
Ввод информации с клавиатуры осуществляется с помощью оператора read . Он может иметь один из следующих форматов:
read (x1, x2, …, xn); readln (x1, x2, …, xn);
где x1 , x2 , …, xn – список вводимых переменных. При вводе веще-
ственных значений целую и дробную часть числа следует разделять точкой.
Алексеев Е.Р., Чеснокова О.В., Кучер Т.В. Самоучитель по программированию на Free Pascal и Lazarus
Когда в программе встречается оператор read , ее действие при-
останавливается до тех пор, пока не будут введены исходные данные. При вводе числовых значений два числа считаются разделенными, если между ними есть хотя бы один пробел, символ табуляции или конца строки ( Enter ). После ввода последнего значения следует нажать Enter .
Оператор readln аналогичен оператору read , разница заключа-
ется в том, что после считывания последнего в списке значения для одного оператора readln данные для следующего оператора
readln будут считываться с начала новой строки. Но следует по-
мнить, что Enter переведет курсор на новую строку независимо от того, как именно происходит считывание данных.
Для вывода информации на экран служат операторы write и writeln . В общем случае эти операторы имеют вид:
write(x1, x2, …, xn); writeln(x1, x2, …, xn);
где x1 , x2 , …, xn представляют собой список выводимых перемен-
ных, констант, выражений. Если элемент списка — текстовая информация, ее необходимо взять в кавычки.
Операторы write и writeln последовательно выводят все переменные. Если используется оператор writeln , то после вывода
информации курсор перемещается в новую строку.
Итак, в нашем примере оператор write('gradus='); выводит на экран символы gradus= , которые подсказывают пользователю, что он должен ввести значение переменной gradus , а оператор readln(gradus); предназначен для ввода значения переменной gradus . Оператор writeln('radian=', radian); выводит на экран два значения: строку radian= и значение переменной radian .
0.35469000000Е-01=0.35469000000*10 -1 =0.035469, -5.43286710000Е+02=-5.43286710000*10 2 =-543.28671.
Алексеев Е.Р., Чеснокова О.В., Кучер Т.В. Самоучитель по программированию на Free Pascal и Lazarus
Чтобы выводить числа в формате с фиксированной точкой, необходимо использовать форматированный вывод . Для этого оператор write или writeln нужно задать следующим образом:
идентификатор — это имя переменной, которая будет выводит-
ся на экран; ширина_поля_вывода — количество позиций (целая часть,
точка, дробная часть), которое будет занимать значение переменной при выводе;
дробная_часть — количество позиций, необходимых для
дробной части числа.
Например, пусть результат работы нашей программы имеет вид gradus=165
Понятно, что оператор writeln('radian=', radian); вывел на экран значение переменной radian в формате с плавающей точ-
Если воспользоваться оператором writeln('radian=', radian:5:3);
то результат работы программы будет таким: gradus=165
где значение переменной radian представлено в формате с фиксиро-
ванной точкой (все число занимает пять позиций и три из них после запятой).
Тут вы можете оставить комментарий к выбранному абзацу или сообщить об ошибке.
Читайте также: