- •Основи програмування мовою Паскаль
- •Часть 1. Основы языка Паскаль 2
- •Часть 2. Элементы профессионального программирования на Паскалі 62
- •Частина 1. Основи мови Паскаль
- •1. Алгоритм і програма
- •1.1. Алгоритм
- •1.2. Властивості алгоритму
- •1.3. Форми запису алгоритму
- •1.4. Програма й програмне забезпечення
- •1.5. Етапи розробки програми
- •2. Дані в мові Паскаль
- •2.1 Константи
- •2.2 Змінні й типи змінних
- •3. Арифметичні вирази
- •4. Лінійний обчислювальний процес
- •4.1 Оператор присвоювання
- •4.2 Оператор уведення
- •4.3 Оператор виведення
- •4.4 Керування виводом даних
- •4.5 Вивід на друк
- •5. Структура простої програми на Паскалі
- •6. Компілятор і оболонка Turbo Pascal
- •7. Обчислювальний процес, що розгалужується, і умовний оператор
- •7.4. Короткий умовний оператор
- •If логічний_вираз then оператор1;
- •7.5. Повний умовний оператор
- •If логічний_вираз then оператор1
- •7.7. Вкладені умовні оператори
- •7.9. Приклади програм з умовним оператором
- •8. Директиви компілятора й обробка помилок уведення
- •9. Оператор циклу. Цикли із передумовою і після-умовою
- •10. Цикл із лічильником і дострокове завершення циклів
- •11. Типові алгоритми табулювання функцій, обчислення кількості, суми й добутку
- •11.1 Алгоритм табулювання
- •11.2 Алгоритм організації лічильника
- •11.3 Алгоритми нагромадження суми й добутку
- •12. Типові алгоритми пошуку максимуму й мінімуму
- •13. Розв'язок навчальних завдань на цикли
- •14. Одномірні масиви. Опис, уведення, вивід і обробка масивів на Паскалі
- •15. Розв'язок типових завдань на масиви
- •Частина 2. Елементи професійного програмування на Паскалі
- •16. Кратні цикли
- •16.1 Подвійний цикл і типові завдання на подвійний цикл
- •16.2 Оператор безумовного переходу
- •17. Матриці й типові алгоритми обробки матриць
- •18. Підпрограми
- •18.1 Процедури
- •18.2 Функції
- •18.3 Масиви як параметри підпрограми
- •18.4 Відкриті масиви
- •19. Безлічі й перечислимые типи
- •20. Обробка символьних і строкових даних
- •20.1. Робота із символами
- •20.2 Робота з рядками
- •21. Текстові файли
- •21.1 Загальні операції
- •21.2 Приклади роботи з файлами
- •21.3 Робота з параметрами командного рядка
- •22. Записи. Бінарні файли
- •23. Модулі. Створення модулів
- •23.1. Призначення й структура модулів
- •Implementation
- •23.2. Стандартні модулі Паскаля
- •24. Модуль crt і створення простих інтерфейсів
- •25. Модуль Graph і створення графіки на Паскалі
- •Додаток 1. Таблиці Ascii-Кодів символів для операційних систем dos і Windows
- •Додаток 2. Основні директиви компілятора Паскаля
- •Додаток 3. Основні повідомлення про помилки Паскаля
- •Додаток 4. Додаткові лістинги програм
- •Додаток 5. Розширені коди клавіатури
- •Ascii‑ коди
- •Розширені коди
- •Додаток 6. Правила гарного коду
- •Додаток 7. Рекомендована література
21.2 Приклади роботи з файлами
Пр.Читання числових даних з файлу – масив даних має фіксовану розмірність=5
var f,w:text; a: array [1..5] of integer; i:integer;
begin
assign (f,'data.txt');
reset (f);
for i:=1 to 5 do read (f, a[i]);
close (f);
assign (w, 'result.dat');
rewrite (w);
writeln (w,'Результати:');
for i:=1 to 5 do writeln (w,a[i]:5,sqr(a[i]):5);
close(w); end.
Файл data.txt може бути, наприклад, таким:
1 2 3
4 5
Файл result.dat буде таким:
Результати:
1 1
2 4
3 9
4 16
5 25
Пр. Перегляд будь-якого текстового файлу на екрані. По заповненню екрана до 24 рядків програма робить паузу.
var f:text; s:string; count:integer;
begin
repeat
write ('Уведіть ім'я файлу або 0 для виходу: ');
readln (s);
if s='0' then halt;
assign (f,s);
{$I-}reset (f);{$I+}
if Ioresult<>0 then begin
writeln ('Не можу відкрити файл із іменем ',s);
write ('Натисніть Enter для продовження ->');
readln;
continue; {оператор починає виконання поточного циклу з початку}
end;
count:=1;
while not eof(f) do begin
readln (f,s);
writeln (s);
count:=count+1;
if count=24 then begin
count:=1;
write ('Натисніть Enter для продовження ->');
readln;
end;
end;
write ('Натисніть Enter для нового введення ->');
readln;
close (f);
until false;
end.
Рядок sтут використовується як для введення імені файлу, так і для читання рядка файлу – адже після виконання зв'язування операторомassignім'я файлу нам більше не потрібно! Зверніть увагу також на операторcontinue, у цьому випадку він дозволяє не завершувати виконання програми після невірного введення користувача.
Пр.Працюємо з "змішаним" файлом даних.
Файл data.txt має такий вигляд:
Іванов 2
Петров 1
Сидоров 3
Попів 2
(у рядку - прізвище рабочего й через пробіл – номер ділянки, на якій він працює)
Напишемо програму для виведення прізвищ усіх працівників обраного ділянки й підрахунку їх кількості.
var f:text; s,fam:string; u,uch,p,kol,i:integer;
begin
writeln ('Ділянка?'); read (uch);
assign (f,'data.txt'); reset (f);
kol:=0;
while not eof (f) do begin
readln (f,s);
p:=pos(' ',s);
if p>0 then begin
fam:=copy (s,1,p-1);
delete (s,1,p);
val (s,u,i);
if i<>0 then begin
writeln ('Помилка в числі ',s,' – немає номера ділянки');
halt;
end;
if u=uch then begin {підрахунок робітників на ділянці}
writeln (fam);
kol:=kol+1;
end;
end
else begin
writeln ('Помилка в рядку ',s,' – немає пробілу');
halt;
end;
end;
close (f);
writeln ('kol=',kol);
end.
Більша частина цієї програми присвячена аналізу прочитаної з файлу рядка "змішаних" даних. Програму можна суттєво спростити, змінивши формат вихідних даних– наприклад, на одному рядку файлу може бути набране прізвище, а на іншій – номер ділянки. Тоді основний цикл читання файлу буде виглядати так:
while not eof (f) do begin
readln (f,fam);
readln (f,u);
if (u=uch) then begin
{ . . . }
end;
end;
Наведений приклад ілюструє, як часто вибір програмістом більш-менш зручного формату зберігання даних впливає на складність програми.
21.3 Робота з параметрами командного рядка
Програма в DOS або Windows може запускатися з параметрами командного рядка, через які звичайно передають імена файлів або вказують режими роботи програми.
turbo.exe vasya.pas
- тут програмі Турбо-Паскаль передане ім'я файлу vasya.pas
my /s /a
- програмі з іменем my передані параметри /s і /a
Існує дві стандартні функції для роботи з параметрами:
Paramcount - поверне число параметрів командного рядка
Paramstr(i)- поверне рядок, що містить параметр номер i
Пр.: Перегляд текстового файлу на екрані. Ім'я файлу передається програмі параметром.
var fil:text; name:string;
begin
if Paramcount<>1 then begin
writeln ('Запускайте так: FILEVIEW ім'я_файлу');
halt; end;
assign (fil,Paramstr(1));
reset (fil);
while not eof(fil) do begin
readln (fil,name);
writeln (name);
end;
end.