Консольные приложения, или Меньше — значит лучше!
Во всех предыдущих уроках вы создавали приложения с помощью компонентов, предлагаемых средой 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б) и нажмите «ОК».
а) б)
В результате на экране появится окно редактора кода с названием 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, то возникают проблемы при выводе русских букв, вместо которых на экране появляется «абракадабра». Кириллицу в консольных приложениях использовать не следует.
5. Выполнение заданий
Задания I уровня сложности
1. Вычислить значения функции f(x) = sin(x) в интервале от 0 до pi/2 с шагом 0.1. Вывести на экран в виде таблицы значения x и f(x).
2. Рассчитать и вывести на экран сумму элементов массива A[n]. Размер массива n и его элементы вводятся вручную.
3. Написать программу наподобие простого калькулятора. С клавиатуры вводятся два числа — a, b и арифметические действия (+, –, /, *). При нажатии на клавишу 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 также вводится с клавиатуры.