Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ_Инф_Паскаль_3_2007.doc
Скачиваний:
5
Добавлен:
14.08.2019
Размер:
338.94 Кб
Скачать

9. Контрольные вопросы

    1. Какие типы данных Turbo Pascal 7.0 относятся к структурированным и какие особенности они имеют?

    2. Дайте характеристику массивов?

    3. Как описываются массивы в программах?

    4. Как осуществляется доступ к элементам массива?

    5. Перечислите основные операции с массивами.

ЛАБОРАТОРНАЯ РАБОТА № 8

РАБОТА СО СТРОКАМИ. ЧТЕНИЕ И ЗАПИСЬ В ФАЙЛ

1. ЦЕЛЬ РАБОТЫ

Изучение и приобретение навыков работы со строками и текстовыми файлами в Turbo Pascal 7.0.

2. ЗАДАЧИ РАБОТЫ

Получение навыков работы с символьным и строковым типом данных.

Получение навыков работы с текстовыми файлами.

3. СОСТАВ ИСПОЛЬЗУЕМОГО ОБОРУДОВАНИЯ

Персональная ЭВМ класса IBM PC стандартной конфигурации.

4. УКАЗАНИЯ ПО ТЕХНИКЕ БЕЗОПАСНОСТИ

Перед выполнением лабораторной работы каждый студент должен изучить правила техники безопасности при работе с ПЭВМ в лаборатории. К работе допускаются студенты, прошедшие инструктаж по технике безопасности и расписавшиеся в регистрационном журнале.

5. ПОДГОТОВИТЕЛЬНОЕ ЗАДАНИЕ

5.1. Ознакомиться с краткими теоретическими сведениями.

5.2. Изучить содержание работы, быть готовым к ответу на контрольные вопросы.

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

6. ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

6.1. Символьный (char) и строковый (string) тип данных

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

Для работы с символьной информацией в Turbo Pascal 7.0 используются данные символьного типа (Char).

Символьный тип представляет собой тип данных, предназначенный для хранения одного символа из 256 символов кода ASCII. Символы в ЭВМ представляются двоичными кодами. Для латинских букв коды упорядочены по возрастанию в соответствии их расположением в алфавите от 'А' до 'Z', от 'a' до 'z'.

Задаются переменные символьного типа следующим образом:

CH_1:= 'А';

CH_2:=#65; {код А}

К величинам символьного типа применимы все операции отношения и 4 функции, позволяющие работать с символами:

Ord (символ) – вычисляет порядковый номер (код) символа;

Chr (код) – определяет символ с заданным кодом;

Pred (символ) – определяет символ, имеющий код, предшествующий данному;

Succ (символ) – определяет символ, имеющий код, следующий за данным.

Пример.

Ord('A') => 65; Pred('C') => 'B'

Сhr (66) => 'B'; Succ('C') => 'D'

Для литер из интервала 'a'..'z' применима функция UpCase(C), которая переводит эти литеры в верхний регистр 'A'..'Z'.

Пример. Вывести на экран монитора коды букв латинского алфавита.

Program Bukva;

Var Sim : Char;

Begin

For Sim:= 'A' To 'Z' Do

Writeln(Ord(Sim),' ',Sim);

End.

Особое место в Turbo Pascal 7.0 занимают массивы символов.

Хранение символьных массивов осуществляется

1. В распакованном виде массивы символов хранятся в памяти по одному символу в машинном слове.

Описание распакованного массива символов имеет вид:

var M: Array[1..20] of char;

2. В упакованном виде хранятся в памяти по одному символу в байте.

При его описании используют служебное слово PACKED, например:

var MAS: Packed Array[1..20] of Char;

Для преобразования символьного массива из распакованной формы в упакованную и наоборот, из упакованной в распакованную, введены две стандартные функции Pack, UnPack.

Упакованный массив символов образует символьную строку.

Символьная строка может быть

1. Строковой константой

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

Строковые константы могут входить в состав выражений. Как и числовые константы, они могут быть описаны в разделе описания констант.

2. Строковой переменной.

Строковые переменные – это одномерные упакованные массивы символов, для описания которых введен тип String.

Пример определения переменных строкового типа:

Var

line : String[80];

str : String;

После слова String может указываться максимальная длина строки. Длина строки не может содержать более, чем 255 символов.

Если длина не указана, то считается, что она переменная и определяется числом символов, записанных на место переменной типа String при вводе или присваивании. Это число хранится в нулевом байте соответствующей переменной. Тип String без указания длины совместим со всеми типами строк.

Важно, что в переменной строкового типа доступен каждый отдельный символ. Обращение к нему производится путем указания его номера (индекса). При этом нижняя граница индекса равна 1. Отдельный символ строки совместим с типом Char.

Строки могут быть элементами списка ввода-вывода, при этом записывается имя строки без индекса. Writeln(str);

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

Для работы со строками в Turbo Pascal 7.0 включены процедуры и функции, которые обеспечивают редактирование и преобразование строк.

Существуют два пути обработки переменных типа String:

  1. Обработка всей строки, как единого целого.

  2. Обработка элементов строки по отдельности.

Для строк определены операции

1. Присваивание s1 := 'ВГТУ'; s2 := '_ЕГФ';

2. Слияние, объединение строк с помощью символа +.

В результате выполнения операции s3 := s1 + s2; получим строку s3, являющуюся объединением строк s1 и s2. s3 получит значение 'ВГТУ_ЕГФ'.

3. Сравнение с помощью всех операций отношения.

Сравнение строк происходит посимвольно, начиная с первого символа. Строки равны, если имеют одинаковую длину и посимвольно эквивалентны.

4. Функция Copy (исх_строка, нач_номер, длина)

Выделение подстроки заданной «длины» из «исходной строки», начиная с символа, определенного «начальным_номером».

s1 := 'ВГТУ_ЕГФ';

s2 := Copy(s1,6,3);{Результат: s2 получит значение 'ЕГФ'}

5. Процедура Insert(подстрока, исх_строка, нач_номер);

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

6. Процедура Delete(исх_строка, нач_номер, длина)

Удаляет из «исходной строки» подстроку заданной «длины», начиная с заданного «номера»:

S:= 'ВГТУ_ЕГФ';

Delete(S,1,5);{Результат: S получит значение 'ЕГФ'}

7. Функция Length(строка)

Возвращает длину строки (количество символов в ней).

8. Функция POS(подстрока, строка)

Возвращает номер символа, начиная с которого «подстрока» встречается в «строке» (если не встречается – возвращает ноль). Прописные и строчные буквы считаются различными.

N := Pos('ра', 'Абракадабра'); {N получит значение 3}

9. Функция UpCase(символ строки)

Преобразует символ любой литеры из строчного в прописной

10. Процедура Str(X: арифметическое выражение; var st: string)

Преобразует численное выражение X в его строковое представление и помещает результат в st.

11. Процедура Val(st: string; x: числовая переменная; var code: integer)

Преобразует строковую запись числа, содержащуюся в st, в числовое представление, помещая результат в x (x - может быть как целой, так и действительной переменной).

6.2. Примеры обработки текстов