Консольные приложения, или Меньше — значит лучше!

Во всех предыдущих уроках вы создавали приложения с помощью компонентов, предлагаемых средой Delphi. Но у этих приложений есть существенный минус — они занимают слишком много места на диске и могут не работать на другом компьютере, где нет среды Delphi. Всех этих недостатков лишена одна из разновидностей приложений — консольное приложение.

Консольное приложение — это программа, предназначенная для работы в окне DOS, устройством ввода которой является клавиатура, а устройством вывода — монитор, работающий в режиме отображения символьной информации (буквы, цифры и специальные знаки).

Консольные приложения удобны для иллюстрации при рассмотрении общих вопросов программирования, когда надо сосредоточиться на сути проблемы, а также для небольших утилит «для внутреннего потребления», где не требуется графического интерфейса. Основные преимущества данных приложений — это малый объем исполняемого файла. Консольные приложения — это всего лишь Windows-программы, не имеющие окон. Они гарантированно работают на любом компьютере с ОС Windows 95, 98, Me, XP, NT.

Задача урока

  • Создание консольных приложений.

Выполнение упражнения

В этом уроке мы создадим простое консольное приложение для расчёта суммы числовой последовательности S = 5/(i+1), где i изменяется от 0 до n (n вводится пользователем с клавиатуры). Окно приложения показано на рисунке 1.

Рисунок 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.
Листинг 1. Пустой код консольного приложения

Начинается консольное приложение стандартной инструкцией языка Pascal — program, за которой следует имя программы. Сначала оно совпадает с именем приложения «по умолчанию». В момент сохранения оно будет автоматически заменено на имя, под которым программист сохранит приложение.

После program идёт строка {$APPTYPE CONSOLE}, которая, хотя и похожа на комментарий, таковым не является, т. к. сразу за открывающейся скобкой следует знак денежной единицы. Это так называемая директива компилятора. Эту строку удалять нельзя!

Далее в разделе Uses по умолчанию указан модуль SysUtils. В этом модуле содержатся функции, которые, по мнению разработчиков среды Delphi, могут использоваться при создании консольных приложений. Его лучше оставить.

Последним элементом шаблона является само тело программы, расположенное между операторами begin — end.

2. Запуск приложения

1. Сохраните проект.

2. Запустите программу и посмотрите, что же получилось. При запуске консольного приложения на экране появляется стандартное окно DOS-программы. Но… Оно сразу закрывается.

3. Чтобы окно не закрывалось, в теле программы запишите оператор ожидания нажатия на клавишу ввода — ReadLn:

Begin

  // Сообщаем пользователю, что ему необходимо нажать на клавишу
  Write('Press Enter key');
  // Ожидание нажатия на Enter
  ReadLn;

end.
Листинг 2

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.
Листинг 3

Поясним код:

Сначала описываются используемые программой переменные в разделе var. Это будет переменная суммы S типа Real и переменные для максимального количества элементов ряда n и счетчика цикла i типа Integer.

Далее происходит запрос пользователю ввести n, после чего вычисляется сумма ряда S и выводится на экран.

2. Программа готова! Запустите приложение. Введите значение n, например, 7 и нажмите клавишу Enter.

Как вы видите, писать консольные приложения намного проще обычных.

4. Коротко о главном

Консольными называются приложения, предназначенные для работы в окне DOS, для которой устройством ввода является клавиатура, а устройством вывода — монитор, работающий в режиме отображения символьной информации (буквы, цифры и специальные знаки).

Чтобы окно консольного приложения не закрывалось после завершения работы, в конце программы необходимо записать оператор ожидания нажатия на клавишу ввода — ReadLn.

Так как текст программы консольного приложения набирается под управлением ОС Windows, а работает программа в консоле Dos, то возникают проблемы при выводе русских букв, вместо которых на экране появляется «абракадабра». Кириллицу в консольных приложениях использовать не следует.

5. Выполнение заданий

Задания I уровня сложности

1. Вычислить значения функции f(x) = sin(x) в интервале от 0 до pi/2 с шагом 0.1. Вывести на экран в виде таблицы значения x и f(x).


2. Рассчитать и вывести на экран сумму элементов массива A[n]. Размер массива n и его элементы вводятся вручную.


3. Написать программу наподобие простого калькулятора. С клавиатуры вводятся два числа — ab и арифметические действия (+, –, /, *). При нажатии на клавишу Enter программа выдаёт соответствующий результат.


4. Вычислить и вывести на экран произведение элементов массива A[n], где размер массива n и его элементы вводятся с клавиатуры.


5. Найти и вывести на экран максимальный элемент в массиве A[n]. Элементы массива генерируются случайным образом от 0 до 1, число знаков после запятой равно 3. Длина массива n задается вручную.


6. Рассчитать и вывести на экран среднее арифметическое значение элементов массива А[n]. Элементы и длина массива n вводятся вручную.


7. Найти и вывести на экран минимальный элемент в массиве A[n]. Элементы массива составлены из значений функции g(i) = 2*ln(i), где i изменяется от 0 до n с шагом 1. Длина массива n задается вручную.


8. Вывести на экран все целые числа массива A[n]. Элементы и длина массива n вводятся вручную.


9. Показать на экране каждый третий элемент массива A[n] и вычислить сумму каждого четвёртого элемента. Элементы массива — вещественные числа с двумя знаками после запятой и генерируются случайным образом от 0 до 10. Длина массива n вводится вручную.


10. Вывести на экран список элементов массива A[n], которые без остатка делятся на заранее заданное с клавиатуры число a. Элементы массива целые и генерируются случайным образом от 0 до 1000. Значение длины массива n также вводится с клавиатуры.