Стандартные процедуры консольного ввода

Для ввода числовых данных и присвоения их значений переменным в консольных приложениях используются стандартные процедуры ввода Read(..) и Readln(..). Стандартная процедура Read(..) предназначена для ввода с клавиатуры значений переменных (исходных данных).

В общем виде процедура записывается следующим образом:

Read (<Переменная1>, <Переменная2>,... <ПеременнаяN>)

где <ПеременнаяN> - имя переменной, значение которой должно быть введено с клавиатуры во время выполнения программы.

Например

Read(a); Read(cena, kol);

При выполнении процедуры Read(..) происходит следующее:

1. Программа приостанавливает свою работу и ждет, пока на клавиатуре будут набраны нужные данные и нажата клавиша <Enter>.

2. После нажатия клавиши <Enter> введенное значение присваивается переменной, имя которой указано в процедуре.

Например, в результате выполнения процедуры

Read(temperat);

и ввода с клавиатуры строки 21, значением переменной temperat будет число 21.

Одна процедура Read(..) позволяет получить значения нескольких переменных. При этом вводимые числа должны быть набраны в одной строке и разделены пробелами. Например, если тип переменных а, b и с - Real, то в результате выполнения процедуры

Read(a, b, c);

и ввода с клавиатуры строки:

4.5 23 0.17

переменные будут иметь следующие значения:

а = 4,5; b = 23.0; с = 0,17.

Если в строке набрано больше чисел, чем задано переменных в процедуре Read(..), то оставшаяся часть строки будет обработана следующей процедурой Read(..). Например, в результате выполнения процедур

Read(а, в); Read(с);

и ввода с клавиатуры строки

10 25 18

переменные получат следующие значения: а=10, b = 25. А процедура Read(с); присвоит переменной с значение 18.

Процедура Readln(..) отличается от процедуры Read(..) тем, что после выделения очередного числа из введенной с клавиатуры строки и присваивания его последней переменной из списка процедуры Readln(..), оставшаяся часть строки теряется, и следующая процедура Read(..) или Readln(..) будет требовать нового ввода.

Например, в результате выполнения процедур

Readln(а, в); Read(с);

и ввода с клавиатуры строки

10 25 18

переменные получат следующие значения: а=10, b = 25. После чего программа будет ожидать ввода нового числа, чтобы присвоить его переменной с.

Перед каждой процедурой Read(..) или Readln(..) следует располагать процедуру Write(..), для того чтобы подсказать пользователю, какие данные ожидает от него программа. Например, фрагмент программы вычисления стоимости покупки может иметь вид:

begin

Writeln('Введите исходные данные.');

Write('Цена изделия:');

Readln(сеnа);

Write('Количество в партии:');

Readln(kol);

Write('Скидка:');

Readln(skidka);

end;

Если тип данных, вводимых с клавиатуры, не соответствует или не может быть приведен к типу переменных, имена которых указаны в процедуре Read(..) или Readln(..), то программа аварийно завершает работу (операторы, следующие за Read(..), не выполняются), и на экран выводится сообщение об ошибке.

Создание консольного приложения

Для создания консольного приложения нужно из пункта главного меню Файл (File) выбрать команду Создать (New), затем изменю следующего уровня - команду Еще (Other Application), затем на вкладке Создать (New) появившегося диалогового окна Новые элементы (New Items) выбрать тип создаваемого приложения - Приложение для консоли (Console Application). В результате этих действий на экране появится окно Project1.dpr в котором находится шаблон главной процедуры консольного приложения (Листинг 3). В этом окне можно набирать операторы программы консольного приложения Delphi.

Листинг 3. Шаблон программы консольного приложения.

program Project1;

{$APPTYPE CONSOLE}

uses

SysUtils;

begin

{ TODO -oUser -cConsole Main: Insert code here }

end.

Начинается шаблон программы консольного приложения со строки заголовка программы (ключевое слово program, за которым следует имя программы) - в нашем случае Project2. Сначала оно совпадает с именем проекта "по умолчанию". В момент сохранения проекта оно будет автоматически заменено на имя, под которым программист сохранит проект.

Начинается текст программы строкой

{$APPTYPE CONSOLE}

Это директива, предназначена для компилятора. Следуя ее указаниям компилятор генерирует исполняемую программу как консольное приложение.

Компиляция консольного приложения выполняется обычным образом, т.е. выбором из пункта главного меню Проект (Project) команды Компилировать (Compile).

После успешной компиляции программа может быть запущена выбором из пункта главного меню Выполнить (Run) команды Выполнить (Run). При запуске консольного приложения на экране появляется стандартное окно DOS-программы.

Процесс сохранения проекта консольного приложения стандартный. В результате выбора из пункта главного меню Файл (File) команды Сохранить (Save) на экране появляется диалоговое окно Сохранить проект (Save Project), в котором нужно ввести имя проекта и указать папку.

Следует обратить внимание на то, что консольное приложение создается в Windows, а выполняется как программа DOS. В DOS используется
кодировка ASCII, а в Windows - ANSI, буквы русского алфавита, в которых имеют разные коды. Это приводит к тому, что вместо сообщений на русском языке консольное приложение выводит "абракадабру". Поэтому консольные приложения должны выводить сообщения на английском, что не всегда удобно.

Проблему вывода сообщений на русском языке консольными приложениями можно решить, разработав функцию перекодировки ANSI-строки в строку ASCII. Если эту функцию назвать RUS(..), то процедура вывода сообщения на русском языке может выглядеть, например, так:

Writeln(Rus('У лукоморья дуб зеленый')).

Пример функции перекодировки:

function Rus(mes: String):String;

// В ANSI русские буквы кодируются числами от 192 до 255,

// в ASCII - от 128 до 175 (А..Я,а..п) и от 224 до 239 (р..я).

var

i: Integer; // номер обрабатываемого символа

begin

for i:=1 to Length(mes) do

case mes[i] of

'А'..'п': mes[i]:= Chr(Ord(mes[i]) - 64);

'р'..'я': mes[i]:= Chr (Ord(mes [i]) -16);

end;

rus:=mes;

end;


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: