Хелпикс

Главная

Контакты

Случайная статья





Практическая работа. Строковый тип данных



    Практическая работа

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

    Теоретическая часть

    Строки в Паскале — это данные типа string. Они используются для хранения последовательностей символов. В Паскале длина стандартной строки ограничена 255 символами. Под каждый символ отводится по одному байту, в котором хранится код символа. Кроме того, каждая строка содержит еще дополнительный байт, в котором хранится длина строки.

    Если заранее известно, что длина строки будет меньше 255 символов, то можно задать максимальную длину строки.

    Примеры описания строк (можно использовать любой):

type

str_type = string[12];

const

n = 50;

var

s1: string;

s2, s3: str_type;

s4: string[n];

s5, s6, s7: string[7];

 

Длина строки хранится в первом ее байте, индекс которого равен 0. Объявление типизированной константы для типа string осуществляется так:

const

s: string = 'FreePascal';

       Существует понятие пустой строки, т.е. строки, которая не имеет элементов. Пустая строка обозначается двумя рядом стоящими апострофами (например, st := '').

           Строки можно присваивать друг другу. Если максимальная длина переменной слева меньше длины присваиваемой строки, то лишние символы справа отбрасываются.

s1 := 'this is text';

s2 := s1;

       Строки можно объединять с помощью операции конкатенации, которая обозначается знаком +.

s1 := 'John';

s2 := 'Black';

s1 := s1 + ' ' + s2;

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

'abc' > 'ab' (true)

'abc' = 'abc' (true)

'abc' < 'abc ' (false)

       Имя строки может использоваться в процедурах ввода-вывода. При вводе в строку считывается из входного потока количество символов, равное длине строки или меньшее, если символ перевода строки (который вводится нажатием клавиши Enter) встретится раньше. При выводе под строку отводится количество позиций, равное ее фактической длине.

readln (s1);

write (s1);

       К отдельному символу строки можно обращаться как к элементу массива символов, например s1[3]. Символ строки совместим с типом char, их можно использовать в выражениях одновременно, например:

s1[3] := 'h';

writeln (s2[3] + 'r');

       Можно осуществлять коррекцию любого символа строковой переменной, для чего в соответствующем операторе достаточно указать имя переменной типа string, вслед за которым в квадратных скобках задается номер ее элемента (например, str[3]:='j').

       Элементы строки нумеруются с единицы, т.к. в каждой строковой переменной имеется элемент с номером 0, в котором в виде символа хранится длина текущей строки. Чтобы узнать текущую длину, достаточно применить функцию ord к нулевому элементу строки. Например:

writeln(ord(st[0]))

       Нулевой элемент строковой переменной можно корректировать. При этом будет изменяться текущая длина строки. Например, выражение str[0]:=#50 устанавливает текущую длину равной 50.

       Практическая часть

       Пример 1.

       Задача: Вставить в заданную позицию строки другую строку.

       Анализ и решение: По условию задачи имеется две строки и позиция, с которой будет вставлена другая строка (подстрока). Оформляем заголовок программы и объявляем требуемые переменные (рисунок 1):

Рисунок 1

       Теперь требуется инициализировать объявленные переменные. В условии не указано, каким образом это требуется сделать, поэтому для универсальности программы будем считывать значения с клавиатуры. Используем для этой цели оператор Readln().Изменяем код таким образом, чтобы программа выводила приглашение и считывала данные (рисунок 2):

Рисунок 2

    Осталось использовать процедуру insert, которая используется для вставки в строку подстроки, начиная с указанной позиции (рисунок 3):

Рисунок 3

    Добавим в программу функцию очистки экрана CLRSCR из модуля CRT (рисунок 4):

Рисунок 4

    Результат работы программы представлен на рисунке 5:

Рисунок 5

Задачи для самостоятельного решения:

1) Определить длину строки, введенной пользователем. Вывести на экран результат в виде строки «Длина строки равна: » (9А, 9Б).

2) Заменить в веденной пользователем строке все буквы «а» на цифру «1», вывести результат на экран (9А, 9Б).

3) Ввести с клавиатуры предложение, оканчивающеся точкой. Вывести слова из предложения в столбик с указанием их длины (9А).

Домашнее задание для 9А класса:

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

Домашнее задание для 9Б класса:

    Получите у А.В. задание для домашней работы. Задание выдается на двоих. Подготовьте ответы на контрольные вопросы. Подготовьте отчет о проделанной работе в формате .doc (.docx). В отчет включите программный код, результат выполнения программы (2-3 прогона), а также ответы на контрольные вопросы. Образец оформления отчета представлен ниже:

 

МБОУ «Змиевская средняя школа»     Отчет по практической работе «Разработка программы по обработке строк»     Выполнил(и): ________ Класс: ________ Оценка:___________     Змиевка, 2012    

 


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

1) Дайте определение понятия «строковый тип данных». Приведите примеры объявления строк в Pascal.

2) Какие подходы применяются для представления строк в памяти ЭВМ? В чем преимущества и недостатки каждого из подходов?

3) Что такое длина строки? Где хранится текущая длина строки (Pascal)? Может ли изменяться текущая длина строки во время выполнения программы? Каким образом можно узнать текущую длину строки?

4) Возможно ли выполнять операции сравнения над строками? Каким образом и по каким правилам выполняется сравнение строк?

5) Для чего используется оператор Readln в программном коде на рисунке 4?



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.