* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна! RSS



Консольные приложения
15 апреля 2009

В первой главе, при ознакомлении с графическим интерфейсом пользователя, для
демонстрации примеров использовались приложения типа VCL Form Application. Одна-
ко для изучения языка Delphi значительно удобнее использовать приложения типа
Console Application (консольное приложение). Здесь не надо думать о графическом ин-
терфейсе, а ввод и вывод на экран информации происходит значительно проще. По-
этому не надо отвлекаться на посторонние вещи, думайте только об особенностях
языка. К графическому интерфейсу и приложениям типа VCL Form Application мы обя-
зательно вернемся в следующих главах, так как они используются в подавляющем
большинстве программ, написанных на Delphi.
Итак, создадим консольное приложение, что делается так же, как и для всех других
приложений, которые можно создать несколькими способами. Можно щелкнуть на
пиктограмме New Items на панели Standard, можно использовать команды меню File1*
New=>Other или последовательно нажать клавиши <AltoFc>Ni=>0>. Затем в открывшемся
окне New Item необходимо выбрать папку Delphi for .NET, чтобы дважды щелкнуть на пик-
тограмме Console Application. При этом будет создан новый проект с одной вкладкой редак-
тора кодов со стандартным кодом по умолчанию (см. предыдущий раздел). Вкладки
с формой создаваться не будет, так как вывод будет происходить в окно DOS.
Для того чтобы лучше понять работу консольного приложения, создадим простей-
шую программу. Для этого дополните стандартный код, созданный по умолчанию,
несколькими выражениями, как показано в приведенном ниже листинге.
program Project2;
{$АРРТУРЕ CONSOLE}
u s e s S y s U t i l s ;
v a r
a : C a r d i n a l ;
b: Cardinal;
begin
{ TODO -oUser -cConsole Main : Insert code here }
a := 3;
b := 4;
W r i t e d n t T o S t r ( a ) + ' + ' + I n t T o S t r ( b ) + ' = ' ) ;
Write(a+b);
Readln;
end.
Здесь добавилось ключевое слово var, затем идут объявления переменных а и Ь,
которые объявлены как целочисленные значения без знака (натуральные числа),
о чем говорит слово Cardinal, которое определяет тип переменной. Тип любой пе-
ременной всегда объявляется только таким образом, т.е. после имени переменной ста-
вится двоеточие, а затем идет тип, который может быть как стандартным типом, так
и созданным самим пользователем.
Когда говорится об объявлении переменной, то имеется в виду, что, встретив код
объявления переменной, компилятор создает эту переменную, выделяя место в па-
мяти в соответствии с присвоенным ей типом. Во многих случаях на это место запи-
сывается нулевое значение, но лучше всегда самому присвоить вновь созданной пе-
ременной необходимое значение. Подобным образом следует описать все переменные, используемые в программе,
иначе компилятор не сможет разобраться в программе и выдаст сообщение об ошиб-
ке. Далее этим переменным присваиваются значения. Это делается в начале блока
begin...end, где размешается разрабатываемая программа. Затем идет процедура
write (Записать). В данном случае необходимо вывести (записать) на экран сумму
двух чисел, которым уже присвоены значения. Процедура Readln (Считать) заканчи-
вает программу пользователя. Она необходима для того, чтобы оставить открытым ок-
но DOS, в котором будет отображаться результат сложения (рис. 3.1). Без процедуры
Readln окно DOS после вывода результата моментально закроется, так как программа
будет завершена, а наличие этой процедуры требует ввода какого-либо значения, что
не позволит закончить программу. Нажатия любой клавиши будет достаточно для то-
го, чтобы программа завершилась. Теперь напишем такую же программу сложения двух чисел, в которой слагаемые
можно вводить в процессе работы программы. Выглядеть она будет так.
program Projectl;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
a: Cardinal;
b: Cardinal;
begin
{ TODO -oUser -cConsole Main : Insert code here }
Write('Input a: ' ) ;
Read(a);
Write('Input b: ' ) ;
Read(b);
Write('Result: ' ) ;
Writeln(a+b);
Write('Press any key1);
Readln;
Readln;
end.
Если посмотреть внимательнее, то структура программы не изменилась, только
вместо присваивания переменным значений появились вызовы процедур Write
и Read. Таким образом можно вводить необходимые значения с экрана. После появ-
ления надписи input а: необходимо ввести нужное число и нажать клавишу
<Enter>. То же самое сделайте в ответ на запрос input b:.
После нажатия клавиши <Enter> появится результат. В некоторых случаях вместо
слова w r i t e используется слово Writeln. Суффикс In необходим, если после ввода или вывода значения должен быть сделан переход на новую строку. С аналогичной
целью используется и процедура Readln, которая считывает неотображаемые символы
перехода на новую строку и установки курсора в начало строки.
Сделаем еще одно изменение, чтобы наша программа напоминала простейший
калькулятор.
program Projectl;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
a,
b,
sign: Cardinal;
begin
{ TODO -oUser -cConsole Main : Insert code here }
while a<>0 do begin
Write('Input a: ' ) ;
Read(a) ;
Write('Input b: ' ) ;
Read(b);
Write('Operation: ') ;
Read(sign);
if sign=l then begin
Write(' **Result: ' ) ;
Writeln(a+b);
end else begin
Write(' **Result: ' ) ;
Writeln(a-b);
end
end;
end.
Если запустить эту программу на выполнение, то можно постоянно вводить два
числа и получать результат, не выходя из программы, как это было раньше. Для этого
фрагменты ввода и вывода значений помещены в конструкцию, обеспечивающую
циклическое повторение программы, это ключевые слова while. . .do (пока...делать).
После них идет блок повторяющихся кодов, расположенных между ключевыми сло-
вами begin. . .end;. После слова end стоит точка с запятой, что говорит о заверше-
нии блока, но не о завершении программы. Как видим, условие выхода из цикла оп-
ределяет выражение а<>0, т.е. пока а не равно 0, цикл будет постоянно повторяться.
Как только а станет равным нулю, управление моментально будет передано строке,
находящейся за концом цикла, т.е. end.. Это конец программы.
Здесь еще введена третья переменная sign. Это будет конструкция выбора ариф-
метической операции. Если в ответ на запрос "Operation:" ввести 1, то это будет
означать суммирование, а любое другое число вводится при вычитании — для этого
создана конструкция if.. .then.. . e l s e (если...тогда...иначе). Чтобы можно было
использовать отрицательные значения, я поменял тип переменных — из Cardinal
(натуральные) на integer (целочисленные, допускающие отрицательные значения).
Разработчики Delphi рекомендуют использовать групповые типы Cardinal
и Integer, так как для них оптимизированы математические вычисления, т.е. мате-
матические операции с ними выполняются быстрее, чем с другими типами. Эти типы
называются групповыми потому, что они Хотя часто приходится использовать
и другие типы, например, с целью экономии памяти или если необходимы вещест-
венные числа (числа с плавающей запятой). Запустите эту программу и убедитесь, что можно складывать и вычитать два числа
в цикле. Выход из программы произойдет, если первому числу присвоить значение 0.
Как видите, использование даже самых простейших средств позволило создать ра-
ботающую и полезную программу. Постарайтесь понять всю программу. Большие
и сложные приложения проектируются таким же образом, но, разумеется, в них ис-
пользуется больше специфических конструкций, ключевых слов и операторов, изуче-
нием которых сейчас и займемся.

Теги: borland delphi vista, borland delphi, SendTo, Windows Borland Delphi

Статьи по теме:

Печать простых графических фигур
Принципы построения ЛВС
Расширение интерпретатора выражений
Свойство DataSet
Компоненты
Редактор кода
Информационные технологии в менеджменте
OnCopyDateTimeAsString
Протоколы в ЛВС
Свойство RecordNumber
ДОБАВЛЕНИЕ ВОЗМОЖНОСТЕЙ РЕДАКТИРОВАНИЯ
Метод AddPrintable
DisableResyncOnPost
Свойство LeftOffset
Класс TPrinterSettings
| Borland Delphi | vitek |
 


Пн Вт Ср Чт Пт Сб Вс
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31


     



Rambler's Top100

Данный сайт или домен продается ICQ: 403-353-727

© 2009 Seoliga.ru | Borland Delphi | Консольные приложения. Регион сайта: Москва и Санкт-Петербург