Вы находитесь на странице: 1из 15

МИНОБРНАУКИ РОССИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ


ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«ВОРОНЕЖСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»
(ФГБОУ ВО «ВГУ»)

Факультет прикладной математики, информатики и механики

Кафедра программного обеспечения и администрирования информационных


систем

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


Курсовая работа

09.03.03 Прикладная информатика (в юриспруденции)

Зав.кафедрой_____________ д. ф.-м. н., преп. Артёмов М.А.

Обучающийся_____________ 1 к. 10 гр. Иванова М.А.

Руководитель_____________ д.т.н., проф. Воронина И.Е.

Воронеж 2018
2

СОДЕРЖАНИЕ

СОДЕРЖАНИЕ.......................................................................................................2
Введение...................................................................................................................3
Раздел 1. Строковый тип данных...........................................................................4
1.1. Строковый тип данных в среде программирования Delphi.................5
Раздел 2. Сравнение строк......................................................................................6
Раздел 3. Процедуры и функции для работы со строками..................................7
Заключение............................................................................................................10
Список литературы...............................................................................................11
Приложение...........................................................................................................12
Пример задачи...............................................................................................12
3

ВВЕДЕНИЕ

В языке программирования Pascal для работы с со строками существует


тип данных, который можно классифицировать как сложный, — string, или
же иначе — строковый тип данных.

String представляет собой массив символов, каждый из которых — это


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

Над строками есть возможность проводить различные операции


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

Таким образом, целью данной курсовой работы является анализ


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

РАЗДЕЛ 1. СТРОКОВЫЙ ТИП ДАННЫХ

Строка представляет собой последовательность символов, массив,


а сам тип данных можно классифицировать как сложный. Для обозначение
строкового типа данных используется слово string.
Переменные типа string могут быть описаны двумя способами:
1. Var <идентификатор>: string;

2. Var <идентификатор>: string[20];

В квадратных скобках указывается максимальная длина строки. Если


она не указана, то длина строки по умолчанию равна 255 символам. Кроме
того, строки можно рассматривать как одномерные массивы, а по номеру
можно обратиться к любому элементу строки. Однако в отличие от массива,
первый (с номером 0) элемент строки содержит в себе фактическую длину
строки.
Ввод и вывод переменных строкового типа реализуется через
стандартные процедуры языка Pascal: Read/Readln и Write/Writeln.
Например:
Var st1: string[50];

st2: string;

Begin

Readln(st1);

Writeln(st1);

Readln(st2);

Writeln(st2);

End.

В случае, если длина введённой строки превысит указанные размеры,


то конец будет «отрезан» и проигнорирован.
5

1.1. СТРОКОВЫЙ ТИП ДАННЫХ В СРЕДЕ ПРОГРАММИРОВАНИЯ


DELPHI

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


Delphi предусмотрены несколько форм строк.
 ShortString — строка, вмещающая 255 символов. Этот тип
обеспечивает совместимость со старыми версиями;
 AnsiString — строка, вмещающая 231(2 Гбайт) символов. Этот тип
совпадает со стандартным типом string;
 WideString — строка, смещающая 230 символов. Этот тип состоит
из символов типа WideChar — тип переменной, содержащий в себе
отдельный интернациональный символ.
6

РАЗДЕЛ 2. СРАВНЕНИЕ СТРОК

Над строковыми данными, ровно как и над числовыми, можно


проводить различные операции сравнения. Для них используются
стандартные математические знаки:
 больше/меньше (>, <);

 равно (=);

 не равно (<>).
Результатом является логическое выражение — true или false (табл. 1).
Сравнение строк происходит посимвольно слева направо, пока не будет
найден несовпадающий элемент. Большей строкой будет считаться та,
в которой первый не совпавший символ имеет в таблице ASCII больший
номер. Кроме того, большей строкой считается и та, что просто больше по
количеству элементов. Две строки равные, если их длина одинакова и в них
одни и те же символы в том же порядке.
Например:

Таблица 1. Примеры сравнения строк


Выражение Результат
‘stroka’=’stroka’ True
‘stroka’<>’stroka’ False
‘Stroka’>’stroka’ True
‘stroka !’>’stroka’ True
7

РАЗДЕЛ 3. ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ


СО СТРОКАМИ

Существует ряд процедур и функций, через которые осуществляется


работа со строками — их изменение, удаление и иные действия (табл. 2).
Таблица 2. Подпрограммы для работы со строковым типом данных
Тип Вызов Параметры Действие
Процедура Delete(s,p,n) Var s:string, Удаляются n 
p,n:integer; символов из строки s,
начиная с позиции p.
Процедура Insert(w,s,p) w:string; В строку s, начиная
var s:string; с позиции p,
p:integer; вставляется строка w.
Если результат
превысит
255 символов, строка
обрывается.
Процедура Str(v,s) v:integer или
Число v преобразуется
v:real;
в строку, результат в s.
var s:string;
Процедура Val(s,v,w) s:string; Если строка s состоит
var v:integer; из цифр, то они
или преобразуются
var v:real; в числовое значение
var w:integer; переменной v,
значение w равно 0.
В противном случае,
строка состоит не
только из цифр, —
преобразование не
выполняется.
Функция Concat(s1,s2,…,sm) s1,s2,..,sm:string; Строки s1+s2+..+sm
или s1+s2+ ... +sm записываются одна за
Значение функции другой. Если
типа String результат превысит
255 символов, строка
обрывается.
Функция Copy(s,p,n) s:string; Из строки s, начиная с
Значение функции p,n:integer; позиции p, выбирается
8

типа String n символов


Функция Length(s) s:string;
Определяется длина s,
Значение функции
т.е. число символов из
типа String
которых она состоит.
Функция Pos(w,s) w,s:string; В строке
Значение функции s отыскивается первое
типа String вхождение строки
w (номер позиции).
Если вхождения нет,
то выдаётся 0.

Примеры:

1. Delete
s:=’Система Pascal’;

delete(s,8,6); {s будет равно ‘Система’}

2. Insert
s:=’Язык Pascal’;

insert(‘программирования ’,s,5); {s будет равно ‘Язык


программирования Pascal’}

3. Copy
s:=’Система Turbo Pascal’;

s2:=copy(s,1,4); {s2 будет равно ‘Язык’}

s3:=copy(s,6,16); {s3 будет равно ’программирования’}

s4:=copy(s,18,6); {s4 будет равно ’Pascal’}

4. Length
n:=length(‘Pascal’); {n будет равно 6}

5. Pos
s:=’Система Pascal’;

x1:=pos(‘Pascal’, s); {x1 будет равно 9}

x2:=pos(‘Visual’, s); {x2 будет равно 0}


9

6. Concat
stroka1:='Программирование ';

stroka2:='на ';

stroka3:='Pascal'

stroka:=concat(stroka1,stroka2,stroka3);
{получится строка ‘Программирование на Pascal’}
10

ЗАКЛЮЧЕНИЕ

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


Были проанализированы функции и процедуры, позволяющие работать со
строковыми переменными: изменять, удалять и получать информацию о них.
Также были рассмотрены примеры работы данных подпрограмм в задачах
с использованием этого типа данных в среде программирования Delphi 7.
11

СПИСОК ЛИТЕРАТУРЫ

1. Окулов С.М. Основы программирования / С.М. Окулов. – М.:


Лаборатория базовых знаний, 2002. – 424 с.
2. Программирование на языке Паскаль: задачник / О.Ф. Ускова
[и др.] под ред. О.Ф. Усковой – СПб.: Питер, 2002. – 336 с.
3. Бобровский С.И. Delphi 7. Учебный курс / С.И. Бобровский –
СПб.: Питер, 2004. – 736 с.
12

ПРИЛОЖЕНИЕ

ПРИМЕР ЗАДАЧИ

Существует программа, использующая подпрограммы encode и decode.


Напишите программу для тестирования подпрограмм encode и decode. Она
должна начинаться с ввода ключа для шифрования и дешифровки — 26–
буквенной строки. Затем вводится серия строк, подлежащих обработке. Над
каждой строкой сначала применяется операция шифрования, а затем
дешифровки. При этом необходимо контролировать некоторые ошибочные
ситуации. Например, каждая содержащаяся в ключе буква должна быть
представлена только один раз.

program p119n17;

{$APPTYPE CONSOLE}

uses

SysUtils,

windows;

//длина кода шифрования

const

len=26;

//ввод ключа шифрования и проверка его на валидность

procedure enter_code(var cd:string);

var

k:integer;

ok:boolean;

ch: char;
13

begin

writeln('Введите код шифрования');

repeat

readln(cd);

//использование процедуры, определяющей длину строки

ok:=len=length(cd);

ch:='a';

while ok and (ch<='z') do

begin

//использование функции для определения вхождения одной


строки в другую //наличие буквы из алфавита в коде шифрования

k:=pos(ch,cd);

if k>0 then

ch:=succ(ch)

else

ok:=false;

end;

if not ok then

writeln('Введён некорректный код шифрования');

until Ok;

end;

//процедура шифрования строки

procedure encode(var st:string; cd:string);

var

n, i:integer;

begin

for i:=1 to length(st) do


14

if (st[i]>='a') and (st[i]<='z') then

begin

n:=ord(st[i])-ord('a')+1;

st[i]:=cd[n];

end;

end;

//процедура дешифрования строки

procedure decode(var st:string; cd:string);

var

n, i:integer;

begin

for i:=1 to length(st) do

begin

n:=pos(st[i],cd);

if n>0 then

st[i]:=chr(ord('a')+n-1);

end;

end;

//описание глобальных переменных

var

i,n:integer;

code,str:string;

stop:boolean;

//главная программа

begin {MAIN}
15

SetConsoleCP(1251);

SetConsoleOutPutCP(1251);

enter_code(code);

//ввод строки

Stop:=false;

writeln('Введите строку');

repeat

readln(str);

if str = '' then

Stop:=true

Else

//использование процедуры encode

begin

writeln('Закодированная строка:');

encode(str,code);

writeln(str);

// использование процедуры decode

writeln('Декодированная строка:');

decode(str,code);

writeln(str);

readln;

end

until Stop;

end.