- •Министерство образования и науки Республики Казахстан
- •МетодичеСкИе рекомендации и указания
- •Методические указания
- •1.3.Константы
- •1.3.2.Символьные константы
- •1.4.Переменные
- •1.5.Перечисляемые типы данных
- •1.6. Оператор присваивания
- •1.8.Организация программы
- •1.9.Комментарии
- •1.10.Операторы ввода-вывода
- •1.10.1.Операторы ввода
- •1.10.2. Операторы вывода
- •1.10.3. Стандартная форма вывода данных
- •1.10.4. Управление формой вывода данных
- •Вывод значений переменных
- •2.Задание
- •Лабораторная работа №2
- •1. Основные понятия
- •1.1. Оператор условного перехода
- •1.2. Оператор варианта.
- •1.3.Оператор безусловного перехода
- •1.4.Логические отношения
- •2.Задание
- •Лабораторная работа №3
- •1. Теоретические сведения.
- •1.1. Понятие циклического процесса.
- •1.2 Операторы цикла с присваиванием.
- •1.3. Оператор цикла с предусловием.
- •2. Задание
- •Лабораторная работа №4
- •Лабораторная работа №5
- •Лабораторная работа №6
- •2. Задание
- •5. Литература
- •Лабораторная работа №7
- •Длинна строки, определяется с помощью стандартной функции Length (St), которая возвращает целое число, равное количеству символов в строке St, например:
- •Очень полезна при работе со строками функция типа Integer
- •Лабораторная работа №8
- •Теоретические сведения
- •Задание
- •Контрольные вопросы.
- •Литература.
- •Лабораторная работа №9
- •1.Теоретические сведения.
- •2.Задание.
- •3.Контрольные вопросы.
- •Лабораторная работа № 10
- •Процедура
- •Функция
- •Выводит точку с координатами X, y цветом Color.
- •Процедура
- •Процедура
- •Процедура
- •Процедура
- •Процедура
- •4. Список литературы
- •1.Теоретическое положение 3
- •1. Основные понятия 16
- •1.1. Оператор условного перехода 17
- •5. Литература 43
- •1.Теоретические сведения 53
- •2.Задание 54
Лабораторная работа №7
Тема: Программирование задач обработки строковых данных.
Цель: получение навыков работы со строками в Паскале.
Теоретический материал.
Понятие строковой переменной.
Тип STRING (строка) в Паскале широко используется для обработки текстов. Он во многом похож на одномерный массив символов ARRAY [O . . N] OF CHAR, однако, в отличие от последнего, количество символов в строке – переменной может меняться от О до N, где N – максимальное количество символов в строке. Значение N определяется объявлением типа STRING [N] и может быть любой константой порядкового типа, но не более 255, например:
Const N = 25;
Type Stroka = String [n];
Var S: Stroka;
B: String [50];
C: String [230];
D: String [270]; Ошибка, 270>255
Разрешается не указывать N. В этом случае длина строки принимается максимально возможной, а именно N=255. Т.о. согласно описания
Var A: String;
B: String [255];
переменные А и В могут содержать до 255 символов каждая.
Строка в Паскале трактуется как цепочка символов. К любому символу в строке можно обратиться точно так же, как к элементу одномерного массива ARRAY [O . . N] of Char, например:
Var St : String [20];
Begin …….
If St [5] = ‘A’ then …..
end
Занесение значений в строковую переменную.
Значение в строковую переменную может быть занесено с помощью оператора присваивания : =, например:
St : = ‘How do you do!’
При этом будут соблюдаться следующие правила:
Позиция символа в строке соответствует номеру позиции в строковой переменной,
т.е. St [1] = H (см. последний пример), St [2] = о St [3] = w St [4] =
St [5] = d , ……, St [14] = !.
Если в правой части количество символов в строке превышает максимально возможный размер значения строковой переменной, расположенный слева от знака присваивания, “лишние” символы отбрасываются. Например, если при описании
Var st : string [10];
в программе встретится оператор
St : = Hoy do you do!
то переменная St получит значение ‘Hoy do you’, а оставшиеся четыре символа будут отброшены.
Если в переменной St уже содержались какие-либо значения, оно полностью уничтожается, а в переменную заносится новое значение. Например, если
St = ‘Hoy do you’, то после оператора
St: = Hello!
переменная St = ‘Hello!’ (а не St = ‘Hello! you do’)
Справа от знака “присвоить” может стоять как строковая константа, так и строковая переменная, при этом максимальное количество символов в строковых переменных может быть разным, т.е. при описании
Var A: string [20];
B: string [10];
C: string [2];
Занести значение в строковую переменную можно и с помощью оператора ввода Readln. При этом соблюдаются все выше перечисленные правила.
Длина строки.
Длинна строки, определяется с помощью стандартной функции Length (St), которая возвращает целое число, равное количеству символов в строке St, например:
Lenght (Hello!) = 6
Следует заметить, что строковая переменная может содержать пустую строку, которая обозначается двумя подряд идущими апострофами. Длина пустой строки равна нулю:
Lenght ( ) = 0
Самый первый байт строковой переменной имеет индекс 0, и содержит символ, код которого равен длине строки:
Ord (St [0] ) = Lenght (St).
Если этот символ заменить символом, кож которого меньше, то строка уменьшиться по длине настолько, насколько код нового символа меньше, а остальные символы будут безвозвратно утрачены. Если попытаться заменить символ первого элемента на символ с большим кодом, то это приведет к непредсказуемым последствиям. При переприсваивании строковой переменной нового значения, автоматически меняется символ в элементе с индексом ноль.
Сложение строк.
К строкам можно применять операцию “+” – сцепление, например:
St: = a + b;
Аналогичным образом функция типа String
Concat (St1, St2, …. , Stn), n = 1,2, ..
возвращает строку, представляющую собой сцепление строк St1, St2, .. , Stn, например:
St = ( com, pu , ter ); {St = computer}.
Строки можно не только сцеплять, но и вставлять одну в другую. Это осуществляется с помощью процедуры
Insert (SubSt, St, N),
которая вставляет подстроку SubSt в строку St, начиная с символа с номером N, например:
Удаление, вырезка, поиск подстрок.
Процедура
Delete (St,N,Kol)
удаляет Kol символов из строки St, начиная с символа с номером N.
Если число символов, которые требуется удалить, превышает число символов в строке St, начиная с указанной позиции (т.е. Length (St)-N+1<Kol), то удаляются все символы, начиная с указанного, и до конца строки.
Если второй параметр превышает длину строки, из которой удаляется подстрока (т.е. Length (St)<N), в этом случае ни один символ из строки не будет удален.
При решении многих задач используется не вся строка, а только ее часть (подстрока). Выделить подстроку из строки можно с помощью функции типа String.
Copy (St,N,Kol),
копирующий из строки St Kol символов, начиная с символа с номером N. Строка St не изменяется.
Если в строке, начиная с указанной позиции, количество символов меньше, чем требуется, скопировать (Length (St)-N+1<Kol), функцией возвращается реально существующая часть строки.