Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
програмка сессия 1.docx
Скачиваний:
9
Добавлен:
05.02.2016
Размер:
91 Кб
Скачать

Pascal/Рядки Рядки[ред.]

Найпримітивніша робота із рядками вже розбиралися раніше. Так, команда

writeln('Привіт, світе!');

виведе рядок 'Привіт, світе!' . Такі рядки також можна зберігати в змінних - типу string:

Program HelloWorld2;

var str:string;

begin

str:='Привіт, світе!';

writeln(str);

end.

Ця програма зберігає в змінній str значення, яке потім виводится командою writeln.

Щоб звернутися до окремого елементу рядка, треба скористатися квадратними дужками; цим рядки подібні до масивів. Програма

var str:string;

begin

str:='річка';

str[1]:='н';

writeln(str);

end.

виведе 'нічка' . В уважного читача в цьому місці виникне питання: масиви мають тип, відмінний від елементу масива; як же так виходить, що елемент рядка може бути рядком? Дійсно, не може. Елементи рядка мають свій, окремий тип - character (літерний тип). Справа в тому, що літерний тип може бути перетворений на рядок без втрати інформації, тому компілятор робить таке перетворення непомітно. Запис 'н' (в лапках тільки один знак!) означає літеру 'н' , а не рядок з однієї літери. Альтернативний спосіб задання символів - #число, де число - номер символу в кодуванні ASCII. Наприклад,

writeln(#64);

виведе літеру 'A' .

Особливості рядків[ред.]

Розглянемо команду

writeln(50);

і порівняємо її із командою

writeln('50');

Ці команди зовнішньо працюють однаково - виводять на екран знаки '50' . Різниця між ними в тому, що в першому випадку відбувається додаткове перетворення числа 50 на рядок '50' , а в другому рядок виводится безпосередньо, що працює трохи швидше. Втім, це не означає, що треба всюди, де можливо, перетворювати числа на рядки - треба тільки розуміти різницю, і вживати рядки і числа на своєму місці.

Комбінація '​' зветься пустим рядком; пустий рядок, вочевидь, не містить жодної літери (і сам не є літерою).

Довжину рядка можна дізнатися за допомогою функціїї length:

Program StringLength;

var str:string;

begin

write('Введіть рядок: ');

readln(str);

writeln('Довжина рядка: ',length(str));

end.

В старих версіях мови Паскаль поточна довжина рядка зберігалась в нульовій комірці рядка (на кшталт str[0]); іноді можна побачити в програмах, як працюють безпосередньо із цим значенням. В сучасних версіях це не так, тому треба користуватися тільки функцією length.

Рядки порівнюються за алфавітом; при цьому великі літери завжди вважаються такими, що йдуть раніше за маленькі (у відповідності до таблиці ASCII). Тобто

if 'bb'<'aa' then writeln('''bb''<''aa''')

else writeln('''bb''>=''aa''');

if 'BB'<'aa' then writeln('''BB''<''aa''')

else writeln('''BB''>=''aa''');

виведе 'bb'>='aa' 'BB'<'aa' ! Коротший рядок вважається таким, що йде раніше за довший (якщо, звісно, всі літери коротшого збігаються з початковими літерами довшого рядка).

Множины

Множина –це не обмежена сукупність даних одного перелічувального типу.

Не обмежена в тому сенсі, що наперед не встановлюється кількість елементів в множині, але розмір сукупності обмежений. Максимальна кількість елементів множини - 256.

Тип визначається:

type

<ім’я типу множини> = set of <базовий тип>;

 

В якості базового типу може бути тип, кількість елементів якого не перевершує 256 і значення позитивні. Таким типом може бути стандартний тип char, byte. Для інших стандартних типів можна вказувати тільки діапазон в межах 0..255.

Наприклад

Type

Tmn = set of char;

Tnm1 = set of 1..120;

Tmn2 = set of ’d’..’k’;

Var

mn : Tmn;

mn1 : Tmn1;

mn2 : Tmn2;

mn3 : set of 10..200;

Правила використання множин.

 

1) Множина задається у вигляді списку елементів, взятих у квадратні дужки. Елементи розділяються комами. Наприклад: ['a','o','e','j'], [2,4,7,24,89].

2) Пуста множина задається як квадратні дужки, розташовані поряд: []. Наприклад, задати пусту множину: mn:=[];

3) Елементами множини можуть бути константи, змінні, вирази, діапазони відповідного базового типу. Наприклад, якщо маємо

Var

X:byte;

Можна записати множину [2,17,X,2*X+37,5..25].

4) Множина не має елементів, що повторюються. Тобто, багаторазове вміщення елементу до множини ідентичне його одноразовому вміщенню.

5) Порядок розміщення елементів в множині не має значення. Наприклад, множини [4,8,23] i [8,23,4] будуть однаковими.

записи и файлы

Текстовые файлы – файлы на диске, состоящие из символов ASCII. Для разделения строк используются символы «конец строки».  Текстовые файлы являются файлами  с последовательным доступом. В любой момент времени доступна только одна запись файла. Другие записи становятся доступными лишь в результате последовательного продвижения по файлу. Текстовые файлы внутренне разделены на строки, длины которых различны. Для разделения строк используется специальный маркер конца строки. Объявляются текстовые файлы переменной типа text. Обрабатывать их можно только последовательно и с помощью процедур и функций:

Readln  (f , st )- чтение строки st из файла f и переход на начало следующей ; Writeln (f, st )- запись строки st в файл f и маркера конца строки ; Append (f ) - процедура, открывающая файл f для добавления строк в конец файла; Eoln (st )- логическая функция, результат выполнения которой равен TRUE, если достигнут маркер конца строки st.

Пример 1.  Создать текстовый файл, в который записать 3 предложения. Прочитать этот файл, вывести  его содержимое на  экран. Определить длину каждого предложения.

Program File_text; var f1 : text; st : string; n: byte; begin assign   (f1, 'file1.txt'); {связать с файлом file1.txt  файловую переменную f1  }   rewrite  (f1); { создать новый файл  с именем file1.txt } writeln ( f1, 'Очень полезно изучать'); { записать предложения в файл} writeln ( f1, ' всем  студентам '); writeln (f1, ' язык  Pascal '); close (f1);    { закрыть файл для записи } reset (f1); { открыть файл для чтения } while not eof (f1) do { пока не конец файла  f1} begin readln (f1, st);    {читаем строку из файла f1 } writeln(st);         { выводим на экран } n:= length (st);     {определяем длину строки } writeln ('  длина =',n); end; close (f1); { закрыть файл  для чтения} end .