Сторінка
4

Паскаль: буферизація введення-виведення

Blockwrite(g, Buf, portion, wrou);

if wrou<>portion then

begin

writeln('Помилка запису файла'); halt

end;

end;

close(g); close(f);

end. Два зауваження щодо цієї програми. По-перше, до неї можна додати обчислення часу, який займає обробка файла. Для цього слід задати на початку програми підключення модуля Dos і скористатися його процедурою GETTIME. Слід означити 4 змінні типу Word, наприклад,

th, tm, ts, tms : word. Можна записати виклик Gettime(th, tm, ts, tms) десь на початку тіла програми, наприклад, перед відкриванням файлів. За його виконання змінним присвоюються відповідно години, хвилини, секунди ті мілісекунди від вбудованого в комп’ ютер годинника. Обробка значень цих змінних залежить від смаків програміста. Наприклад, за ними можна обчислити час у сотих долях секунди. Означимо змінну 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);

end;

1: begin assign(f, ParamStr(1));

writeln('Задайте ім'я цільового файла');

readln(s); assign(g, s);

end

else

begin

assign(f, ParamStr(1)); assign(g, ParamStr(2));

end

end.

Перейти на сторінку номер:
 1  2  3  4 


Інші реферати на тему «Інформатика»: