Консольные приложения, или Меньше — значит лучше!
Во всех предыдущих уроках вы создавали приложения с помощью компонентов, предлагаемых средой Delphi. Но у этих приложений есть существенный минус — они занимают слишком много места на диске и могут не работать на другом компьютере, где нет среды Delphi. Всех этих недостатков лишена одна из разновидностей приложений — консольное приложение.
Консольное приложение — это программа, предназначенная для работы в окне DOS, устройством ввода которой является клавиатура, а устройством вывода — монитор, работающий в режиме отображения символьной информации (буквы, цифры и специальные знаки).
Консольные приложения удобны для иллюстрации при рассмотрении общих вопросов программирования, когда надо сосредоточиться на сути проблемы, а также для небольших утилит «для внутреннего потребления», где не требуется графического интерфейса. Основные преимущества данных приложений — это малый объем исполняемого файла. Консольные приложения — это всего лишь Windows-программы, не имеющие окон. Они гарантированно работают на любом компьютере с ОС Windows 95, 98, Me, XP, NT.
Задача урока
- Создание консольных приложений.
Выполнение упражнения
В этом уроке мы создадим простое консольное приложение для расчёта суммы числовой последовательности S = 5/(i+1), где i изменяется от 0 до n (n вводится пользователем с клавиатуры). Окно приложения показано на рисунке 1.
1. Создание проекта консольного приложения
Создайте проект консольного приложения. Для этого из меню File (Файл) выберите команду New ? Other Application (Новый ? Другое) (рисунок 2а). Затем на вкладке New появившегося диалогового окна выберите тип создаваемого приложения —Console Application (Консольное приложение) (рисунок 2б) и нажмите «ОК».
Рисунок 2. Создание консольного приложения
В результате на экране появится окно редактора кода с названием Project1.dpr (листинг 1), в котором находится шаблон программы консольного приложения. В этом окне мы будем набирать инструкции программы.
program Project1; {$APPTYPE CONSOLE} Uses SysUtils; begin { TODO -oUser -cConsole Main : Insert code here } end.
Начинается консольное приложение стандартной инструкцией языка Pascal — program, за которой следует имя программы. Сначала оно совпадает с именем приложения «по умолчанию». В момент сохранения оно будет автоматически заменено на имя, под которым программист сохранит приложение.
После program идёт строка {$APPTYPE CONSOLE}, которая, хотя и похожа на комментарий, таковым не является, т. к. сразу за открывающейся скобкой следует знак денежной единицы. Это так называемая директива компилятора. Эту строку удалять нельзя!
Далее в разделе Uses по умолчанию указан модуль SysUtils. В этом модуле содержатся функции, которые, по мнению разработчиков среды Delphi, могут использоваться при создании консольных приложений. Его лучше оставить.
Последним элементом шаблона является само тело программы, расположенное между операторами begin — end.
2. Запуск приложения
1. Сохраните проект.
2. Запустите программу и посмотрите, что же получилось. При запуске консольного приложения на экране появляется стандартное окно DOS-программы. Но… Оно сразу закрывается.
3. Чтобы окно не закрывалось, в теле программы запишите оператор ожидания нажатия на клавишу ввода — ReadLn:
Begin // Сообщаем пользователю, что ему необходимо нажать на клавишу Write('Press Enter key'); // Ожидание нажатия на Enter ReadLn; end.
4. Запустите программу. Теперь окно программы закроется только тогда, когда пользователь нажмёт на клавишу ввода.
Примечание: Так как текст программы набирается под управлением ОС Windows, а работает программа в консоли DOS, то возникают проблемы при выводе русских букв, вместо которых на экране появляется «абракадабра». Так что лучше кириллицу в консольных приложениях не использовать.
3. Написание программного кода
1. Теперь напишите код (листинг 3). В нём рассчитывается сумма числовой последовательности: S = 5/(i+1), где i изменяется от 0 до n (n вводится пользователем с клавиатуры).
program MyProgram; {$APPTYPE CONSOLE} uses SysUtils; Var S:Real; i,n:Integer; Begin // Ввод количества элементов ряда Write('n: '); ReadLn(n); // Вычисление суммы ряда S = 5/(i+1) S:= 0; For i:=0 to n do S:= S+5/(i+1); // Вывод суммы на экран Writeln('Result Sum: ', floattostr(S)); // Сообщаем пользователю, что ему необходимо нажать на клавишу Write('Press Enter key'); // Ожидание нажатия на Enter ReadLn; end.
Поясним код:
Сначала описываются используемые программой переменные в разделе var. Это будет переменная суммы S типа Real и переменные для максимального количества элементов ряда n и счетчика цикла i типа Integer (выделено жёлтым).
Далее происходит запрос пользователю ввести n (выделено зелёным), после чего вычисляется сумма ряда S (выделено голубым) и выводится на экран (выделено красным).
2. Программа готова! Запустите приложение. Введите значение n, например, 7 и нажмите клавишу Enter.
Как вы видите, писать консольные приложения намного проще обычных.
4. Коротко о главном
- Консольными называются приложения, предназначенные для работы в окне DOS, для которой устройством ввода является клавиатура, а устройством вывода — монитор, работающий в режиме отображения символьной информации (буквы, цифры и специальные знаки).
- Чтобы окно консольного приложения не закрывалось после завершения работы, в конце программы необходимо записать оператор ожидания нажатия на клавишу ввода — ReadLn.
- Так как текст программы консольного приложения набирается под управлением ОС Windows, а работает программа в консоле Dos, то возникают проблемы при выводе русских букв, вместо которых на экране появляется «абракадабра». Кириллицу в консольных приложениях использовать не следует.