ПАСКАЛЬ: БУФЕРИЗАЦІЯ ВВЕДЕННЯ-ВИВЕДЕННЯ
Обробка значень цих змінних залежить від смаків програміста. Наприклад, за ними можна обчислити час у сотих долях секунди. Означимо змінну tim типу longint:
tim:=((th*60+tm)*60+ts)*100+tms div 10;
Наприкінці програми запишемо
gettime(th, tm, ts, tms);
tim:=((th*60 + tm)*60 + ts)*100 + tms div 10 - tim;
writeln('Витрачено часу : ', (tim div 100):1, '.',
(tim mod 100 div 10):1,
(tim mod 100 mod 10):1, ' sec'
)
Тоді друкується час виконання у секундах на зразок 3.62 чи 0.01.
Друге зауваження стосується способу задання імен файлів при виконанні програми. Змушувати користувача набирати їх щоразу на клавіатурі – не найкращий варіант. Система Турбо Паскаль дозволяє задавати імена файлів у командному рядку виклику програми і читати їх звідси за допомогою функції PARAMSTR. Наприклад, якщо виклик програми QuickCop записати у вигляді
QuickCop file.in file.out
то рядок 'file.in' є значенням, що повертається з виклику ParamStr(1), 'file.out' – ParamStr(2). У такому разі зв’ язування файлів можна задати так:
assign(f, ParamStr(1));
assign(g, ParamStr(2)).
І взагалі, нехай словом вважається послідовність символів, відмінних від пропуска. Слова після назви програми в командному рядку є рядками, що повертаються з викликів ParamStr із відповідними номерами. Кількість слів повертається з виклику функції PARAMCOUNT (без аргументів).
Отже, якщо користувач програми QuickCop не задав імена файлів у командному рядку, можна примусити його задати їх з клавіатури, написавши на початку програми щось на зразок:
case ParamCount of
0: begin
writeln('Задайте ім'я вхідного файла');
readln(s); assign(f, s);
writeln('Задайте ім'я цільового файла');
readln(s); assign(g, s);