
- •Структура програми
- •Ідентифікатори.
- •Запис чисел на Pascal.
- •Додаткова інформація про оператор write (writeln)
- •3. Дано 3-й дійсні числа а,ь,с. Визначити, скільки серед них від'ємних.
- •Складений оператор.
- •Результати операцій над логічними даними:
- •Var ім 'я_масиву:аrrау[t1 ] of t2;
- •Var ім’я_масиву: ім'я_типу;
- •Var ім’я_мас:ім 'я_типу;
- •Процедури.
- •Структура процедури.
- •Параметри-значення та параметри-змінні.
- •Функції.
- •Відмінні особливості функції в порівнянні з процедурами:
- •Рекурсивні структури.
- •If умова then a;
- •If умова then a;
- •If умова then a;
- •Множини.
- •Var ім'я_запису: record
- •Var ім'я_запису:ім'я_типу;
- •Оператор приєднання.
- •With ім’я_запису do
- •Записи з варіантами.
- •Var ім'я_файлу: iм)я_типу; читання файлів.
- •Запис файлу.
- •Write(ім’я, параметри);
- •Читання та запис файлів.
- •Файлова система.
- •Фізичні файли.
- •Файлові типи.
- •Текстові файли.
- •Текст - орієнтовані процедури та функції.
- •Створення текстових файлів.
- •Операції введення-виведення текстових файлів.
- •Переваги типізованих файлів :
- •Безтипові файли.
- •Послідовний та прямий доступ до файлів.
- •Вказівники.
- •Зсилочнии тип.
- •Var p:pointer; (змінна — вказівник);
- •Операції розіменування.
- •Списки.
- •1. Зв'язне представлення з одним зв'язком.
- •2. Зв'язані представлення з двома зв'язками.
- •3В’язані списки.
- •Перегляд зв'язаного списку.
- •Списки властивостей.
- •Pascal – об’єктно-орієнтована мова.
- •Опис об’єкта: рядок
- •Розробка програм на мові тр з використанням мов Асемблера та с.
- •Підпрограма сортування методом обміну
- •Застосування механізму переривань
- •Лівий, правый: зв ’язок; дані: тип_даних;
Запис файлу.
Під записом файлу розуміють виведення результатів програми із оперативної пам'яті машини на диск, тобто створення нового файлу на зовнішньому пристрої.
В програмі необхідно:
1. Відкрити файл для запису,
2. Вивести дані;
3. Закрити файл для запису.
Зовнішній файл, в якому записуються дані з програми називається вихідним.
Загальна форма запису має наступний вигляд:
Rewrite(ім’я);
.
.
.
Write(ім’я, параметри);
.
.
.
Close(ім’я);
Оператор виведення для запису даних у файл володіє усіма властивостями звичайного оператору Write. Якщо записано Write(napaм);, то дані виводяться на екран дисплею. А якщо записано Write (ім'я, парам);, то дані записуються у файл, який зберігається на диску. Rewrite в деяких версіях має ті ж параметри, що й Reset.
Приклад: дано type рядок = array [1..100] of char;
Текст=file of char;
Описати процедуру цифри (s,t), яка записує у текст t всі цифри з рядку s.
Procedure цифри (var t: text; s:рядок);
Var і: integer;
Begin
Rewrite (t);
For i:=1 to 100 do
If s[i] in [‘0’..’9’] then
Write(t,s[i]) ;
Close(t);
End;
Приклад: a=150; b=12.6. Записати у файл dl.dat рядок у вигляді:
а=150_ _ _ _ _b=12.6
program рr;
type k:file of real;
var s:k;
a, b: real;
12: integer;
chislo:real;
begin
12: =1;
Write(‘Введіть a і b’);
readln(a ,b) ;
rewrite(s, ‘dl’, ‘dat’, 12);
write(s, ‘a=’',а:5, ‘_’:5, ‘b= ‘, b:4:1);
close (s);
end.
Оператор Rewrite відкриває файл для запису в нього даних, так як для запису одного рядку цілком досить одного блоку, то змінній 12 присвоюється значення рівне 1 (1блок=256 байтів).
Читання та запис файлів.
Над файлами можна виконувати різні дії. Іноді необхідно читати з одного
файлу, а записувати в другий.
Наприклад:
Дані вводяться із файла (f1) та виводяться в файл (f2). Змінна х приймає значення одного символу із файла. Значення деякої змінної y записується в файл (f2).
Program k1;
Type f=Text;
Var f1, f2:f;;
x,y:char;
begin
reset (f1);
rewrite(f2);
read(f1,x);
.
. {дії над змінними х та у}
.
write(f2,y);
close (f2);
close(f1);
end.
При використанні послідовних файлів не можна одночасно відкривати один і той самий для читання і запису. Якщо є така необхідність, то спочатку відкривається файл, обробляються його дані і закривається. Потім відкривають цей же файл заново, обробляють його та закривають.
Задача: Є відомість результатів екзаменів у групі. Будемо вважати її вхідним файлом з ім'ям kol. Скласти програму створення вихідного файлу з ім'ям rez, в який потрібно записати вихідну відомість і обчислити середній бал.
-
Прізвище
Оцінка
Іванов
Пєтров Сідоров
:5
:4
:3
Середній бал
:4
Кіл. студентів
:3
Program ABC;
Var f1,f2: text; {файлові змінні}
l1,l2:integer; {кількість блоків}
n: integer; {лічильник кіль кості студентів}
sum:real;
sim: char; {симв. змінна}
с: integer; {оцінка}
sr:real; {середній бал}
Begin
l2: =1; {один блок для f1}
l1:=1;
reset(f1, ‘kol’, ‘pas’, l1);
rewrite (f2,’rez’, ‘pa`s’, l2);
n:=0; sum:=0;
while not eof(fl) do
begin
while not eoln(fl) do
begin
read(fl,sim); {чит. симв. із f1}
write(f2, sim); {запис симв. в f2}
if sim= ‘:’ then
begin
read(fl,c); {читаєм оцінку iз f1}
write(f2,c:3); {запис оцінки в f2}
sum: =sum+c;
n=n+1;
end;
end;
readln(f1);
writeln(f2);
end;
sr:=sum/n;
writeln(f2, 'cep.6= ', sr:5:2);
witeln(f2, 'кіл-ть cm. = ', n:2);
writeln(f2, 'результат в файлі kol.pas');
close (f2);
close (f1);
end.
В розділі операторів спочатку задається число блоків l2 для вихідного файлу. Далі визивається стандартна процедура Reset з параметрами
f1 - файлова змінна;
‘kol’ - ім'я фізичного вхідного файла;
'pas' — розширення імені kol;
l1 - змінна, що отримує значення в результаті виконання процедури Reset. Це значення = числу блоків які займає вхідний файл kol на диску. Потім визивається процедура Rewrite з параметрами:
f2 - вихідний файл;
'rez' - ім'я фізичного вихідного файлу;
'pas' - розширення;
l2 - змінна, що резервує кількість блоків на диску для вихідного файлу.
Вхідний файл являє собою послідовність рядків. Читання, обробка та запис відомості виконується за допомогою складного циклу: зовнішнього, в якому виконується перевірка на кінець файлу даних та внутрішнього, в якому виконується перевірка на кінець поточного рядка файла. Зовнішній цикл буде виконуватись до тих пір, поки не досягне кінця файлу. Внутрішній цикл використовується для обробки символів в рядку. Стандартна функція EOLN визначає кінець поточного рядка. Внутрішній цикл виконується до тих пір, поки не будуть прочитані всі символи рядка. У внутрішньому циклі зчитують поточний символ із вхідного файлу в символьну змінну sim та записують його в вихідний файл. При цьому, якщо поточний символ =:, то наступний символ оцінка зчитується в цілочислену змінну с та сумується. В зовнішньому циклі Readln(f1) означає перехід на наступний рядок вхідного файлу, а Writeln(f2) - перехід на новий рядок в вихідному файлі. Після закінчення обробки всього файлу обчислюється середній бал і одержані результати виводяться в вихідний файл.
Приклад: Дано: Туре серія=Filе of real;
Описати функцію, яка підраховує суму від'ємних чисел елементів серії S.
program fa 1;
function summa:real;
type ser=file of real;
var s:ser;
a: array[1..10] of real;
sum: real; i: integer;
begin
assign(s, 'c: \text.txt');
rewrite (s);
writeln('введіть числа');
for i: =1 to 10 do
begin
read(a[i]);
write(s,a[i]);
end;
close(s);
reset(s);
sum: =0;
while not eof(s) do
begin
read(s,a[i]);
if a[i]<0 then sum: =sum+a[i];
end;
summa: =sum;
close(s);
end;
begin
write (summa: 3:1);
end.