Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
TP1_for_BI1.doc
Скачиваний:
10
Добавлен:
04.12.2018
Размер:
98.3 Кб
Скачать

Строковый тип данных

В ТР помимо символьного существует строковый тип данных. Строка символов представляет собой массив, в котором возможно обращение к отдельному элементу массива, при этом каждый элемент массива относится к типу char. В связи с этим, строку можно описать следующим образом:

Н-р, type s=array [1..80] of char или var s:string[80] или var s:string.

В первом случае строка имеет определенную длину, во втором она ограничена числом 255 (стандартная длина символьной строки).

Операции над строками:

concat(s1,s2,…,sn) – функция типа string, возвращает строку, представляющую сцепление строк s1,s2,…,sn.

сopy(s,k,n) – функция типа string, копирует из строки s n-символов, начиная с символа с номером k.

delete(s,k,n) – процедура, удаляет из строки s n-символов, начиная с символа с номером k.

insert(sb,st,k) – процедура, вставляет подстроку sb в строку st, начиная с символа с номером k.

length (s) – функция типа integer, возвращает длину строки s.

pos(sb,st) – функция типа integer, отыскивает в строке st первое вхождение подстроки sb и возвращает номер позиции, с которой она начинается, если подстрока не найдена, возвращает ноль.

str(x[:w [:d]],s) – процедура, преобразует число х любого вещественного или целого типа в строку символов s так, как это делает процедура write перед выводом. Здесь w – общее количество символов, выделенных под соответствующее символьное представление числа х, d – количество символов, отводимых на дробную часть.

val(s,x,code) – процедура, преобразует строку символов s в числовое представление переменной х. Если преобразование прошло успешно, code содержит ноль, иначе переменная х не меняет своего значения, а code содержит номер позиции, в которой имеется ошибка.

Н-р: val(‘ 123’,k,i) – k получит значение 123, i=0

val(‘123 ’,k,i) – k не изменится, i=4

upcase (с) – функция типа char, возвращает для символьного выражения с, которое должно представлять собой строчную латинскую букву, соответствующую заглавную букву, если значением с является любой другой символ (в т.ч. русская буква), то функция возвращает его без преобразования.

ord(x) – функция типа integer, возвращает код символа х.

chr(x) – функция типа char, возвращает символ с кодом х.

Задача 17. Написать программу, которая выводит на экран первую часть таблицы кодировки символов (от 0 до 127). Таблица должна состоять из 8 колонок и 16 строк. В первой колонке должны быть символы, имеющие коды от 0 до 15 и т.д.

Задача 18. Написать программу, которая а) удаляет начальные пробелы из введенной с клавиатуры строки; б) проверяет, является ли введенная с клавиатуры строка целым числом.

Задача 19. Написать программу, которая вычисляет значение выражения N1±N2±N3± … ± Nk. N – целое одноразрядное число. Вид программы:

Введите арифметическое выражение 9+5-4+2

Значение введенного выражения равно 12.

Многомерные массивы.

В определении регулярного типа

U=array [n1..n2] of r

В качестве базового типа r может выступать real, integer, char или ранее определенный тип. Пусть r в свою очередь является ранее определенным массивом: r=array [m1..m2] of s и пусть а – переменная типа u, тогда a[i] – это переменная типа r, а а[i,j] – это переменная типа s.

То есть, u=array[n1..n2,m1..m2] of s.

Следовательно, массив u – представляет собой таблицу или матрицу, если s – числовой тип.

Задача 21. Задана матрица 15*15. Надо поэлементно вычесть последний столбец из всех столбцов, кроме последнего и показать исходную и полученную матрицу на экране. (Элементы матриц задать положительными целыми числами через генератор случайных чисел (random(1)*20) ).

Файлы. Файловые типы.

Большие совокупности данных, с которыми необходимо часто работать, удобно хранить в виде файлов. В ТР под файлом понимается последовательность компонент, являющихся объектами одного и того же типа. Особенности файлов:

- каждый файл имеет свое имя, что позволяет программе работать одновременно несколькими файлами

- файл содержит компоненты одного типа

- длина вновь создаваемого файла не указывается при его объявлении и ограничивается свободной внешней памятью.

В ТР различают файлы трех типов: типизированные, текстовые, нетипизированные.

Обращение к файлам осуществляется через файловые переменные:

Н-р: type trud=record

d:integer;

n:string;

end;

var s:trud; f:file of trud; f1:file of integer; f2:text; f3:file;

Чтобы получить доступ к компонентам файла, файл необходимо связать файловую переменную с уже существующими или создаваемым файлом

Assign(f,’d:\мои документы\1.dat) или в каталоге, где находится программа ТР assign(f,’1.dat’)

При открытии файла для чтения или записи, указатель устанавливается в начало файла – в нулевую позицию.

Чтение данных из типизированного файла осуществляется с помощью команды read(f,a); где а – перечисленные через запятую выражения, значения которых вводятся в файл. Выражения могут быть целого, вещественного, логического, символьного типа, типа string или char. Тип выражений должен соответствовать типу компонент файла. Если файл текстовый, то возможно чтение целой строки readln(f,a).

Запись в типизированный файл write(f,a), в текстовый файл можно вписать строку writeln(f,a).

Следует помнить, что читать и записывать – два несовместимых друг с другом действия, поэтому, в таких случаях используется процедура close(f) – закрытие файла.

Добавление данных в файл append(f)- процедура открывает файл и добавляет данные в конец файла. Если файл был уже открыт для чтения или записи, то файл закрывается и вновь открывается.

Открытие файла для чтения – процедура reset(f);процедура rewrite(f)- создает файл для записи, если же он уже был создан, то открывает и удаляет все содержимое.

Если в типизированном файле несколько компонент, то можно осуществить прямой доступ к компоненте – процедурой seek(f,n), где n – выражение типа longint, указывающее номер компоненты.

Функция filepos(f)- возвращает номер компоненты файла, которая будет обрабатываться следующей операцией ввода-вывода, только для типизированных файлов.

Функция filesize(f) – размер файла в компонентах файла.

При обращении в программе с текстовыми файлами, нужно помнить о том, что здесь важно отделение строк друг от друга и отделение составных частей разных типов: строки и числа и т.п. Для этого используется признак конца строки EOLN(f)(true, false), seekeoln(f), файла EOF(f) (true, false) , seekeof(f) и ведущие пробелы. Признак конца строки имеет кодом #13 или #10, конца файла #26.

При чтении переменных символьного типа char из текстового файла будет считан один символ . Если перед чтением достигнут конец строки, то будет считан символ с кодом #13, конец файла - #26.

При чтении в переменные типа string количество считанных символов равно 255, если не встречен признак конца строки или файла. В этом случае сами признаки в строку не помещаются. Если количество символов в строке больше 255, то лишние символы отбрасываются. При чтении числовых данных выделяется подстрока, ограниченная разделителями. В качестве разделителей используются ведущие пробелы, символы табуляции и признак конца строки. Выделенная подстрока из символьного представления числа переводится во внутреннее представление числа и полученное значение присваивается переменной. Если в подстроке нарушен формат представления числовой переменной, возникнет ошибка ввода-вывода.

При записи логических выражений в файл вводятся слова true или false, вещественные числа выводятся в экспоненциальной форме, в противном случае с фиксированной точкой.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]