Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Стандартный тип строка (string) – последовательность символов длиной до 255 символов. Строку можно рассматривать как массив символов.
У строки в квадратных скобках может быть указан ее размер (от 1 до 255). Если размер строки не указан, то он считается равным 255.
Пример 13: описание строковых переменных
var Str: String[80]; MaxStr: String; const January: String[10]='Январь'; |
Конкатенация строк
Данная операция объединяет (или добавляет к первой строке вторую).
Пример 14:
var Str, Str1, Str2: String; begin Str1:= 'Turbo'; Str2:= 'Pascal'; Str:= Str1 + Str2; end; |
Результатом работы программы примера 14 будет значение переменной Str='TurboPascal'.
Сравнение строк
Можно сравнивать строки разной длины. Сравнение осуществляется слева направо в соответствии с ASCII-кодами символов. Отсутствующие символы в короткой строке имеют меньший код, чем любой действительный символ.
Пример 15:
const Str1: string='X'; Str2: string='XS'; var S1, S2: String; begin if Str1 > Str2 then writeln('Str1>Str2') else writeln('Str1<=Str2'); S1:= '10'; S2:= '9'; if S1 > S2 then Writeln('S1>S2') else Writeln('S1<=S2'); end. |
Результатом работы программы в примере 15 являются сообщения Str1<=Str2 и S1<=S2.
Следует отметить, что результаты сравнения чисел как строковых переменных отличаются от обычного сравнения чисел, например, '10'<'9', так как первый символ строки '10' имеет меньший код, чем первый символ строки '9'.
Функции, применяемые при работе со строками (модуль System)
Функция | Описание |
Length(S: String): Integer | возвращает длину строки |
Copy(S: String; iStart: Integer; iLen: Integer): String | выделение подстроки в строке S, начиная с позиции iStart длиной iLen |
Concat(S1 [, S2, …, Sn]: String): String | объединение n строк в одну |
Pos(SubStr, S: String) | поиск подстроки SubStr в строке S. Возвращает 0, если вхождение не найдено |
Процедуры, применяемые при работе со строками (модуль System)
Процедура | Описание |
Delete(var S: String; Index: Integer; Count: Integer) | удаление подстроки длиной Count, начиная с Index из строки S |
Insert(Source: String; var S: String; Index: Integer) | помещение подстроки Source в строку S, начиная с позиции Index |
Str(X [:M[:N]]; var S: String) | преобразование числа X в строковую переменную S; M, N – форматы вывода, аналогичные используемым в процедуре Write |
Val(S: String; var V; var ErrCode: Integer) | преобразование символьного представления числа S в двоичное V. Code – номер неправильного символа (0 – успешное преобразование). |
Фактически строка N символов представляет собой массив из N+1 символов:
String[N]=array [0..N] of Char;
Однако данная запись условна и строка не эквивалентна такому массиву.
Нулевой символ хранит действительно используемое количество символов строки.
Пример 16:
var S, S1: String; I, ErrCode: Integer; begin S:= 'Привет мир'; writeln(copy(S,8,3)); {удалим пробелы} S1:= ''; for I:= 1 to length(S) do if S[i] <> ' ' then S1:= S1 + S[i]; S:= S1; writeln(S); {заменим "и" на "а"} for I:= 1 to length(S) do if S[i] = 'и ' then S[i]:= 'а'; writeln(S); Str(1/3:4:2, S); writeln(S); S:= '4.6'; Val(S, I, ErrCode); if ErrCode <> 0 then writeln('Успешная конвертация, I=',I) else writeln('Ошибка конвертации!'); end. |
Программа в примере 16 сначала выводит строку 'мир', затем удаляет из строки S пробелы и выводит строку 'Приветмир', затем заменяет символы 'и' на 'а' и выводит строку 'Праветмар'. Далее конвертирует число 1/3 в строку '0.33'. Затем конвертирует строку '4.6' в число и выводит на экран "Успешная конвертация, I=4.6".
Варианты заданий
Удвоить каждый пробел в строке. | |
Убрать лишние пробелы из строки. | |
Вывести статистику вхождения гласных букв в строку. | |
Выделить из текста предложения (они отделены точкой) и занести каждое предложение в массив строк. Затем вывести массив на экран. | |
Заменить вхождения подстроки 'ног' на букву 'л'. | |
Удалить из строки все кратные рядом стоящие одинаковые символы, оставив по одному. | |
Ввести 2 строки. Подсчитать, сколько раз первая встречается во второй. | |
Инверсировать строку (переписать ее символы в обратном порядке). | |
Определить, является ли строка правильным скобочным выражением. Для определенности можно ограничиться только круглыми скобками. | |
Слова в строке отделены пробелами. Подсчитать количество слов, в которых буква 'а' встречается ровно 3 раза. | |
Слова в строке отделены пробелами. Подсчитать количество слов, в которых буква 'а' встречается хотя бы 1 раз. | |
Слова в строке отделены пробелами. Подсчитать количество слов, которые начинаются и заканчиваются одной и той же буквой. | |
Слова в строке отделены пробелами. Подсчитать количество слов, оканчивающихся на гласную букву. | |
Слова в строке отделены пробелами. Подсчитать длину самого длинного и самого короткого слова, а также вывести их. | |
Удалить из строки заданное слово. | |
Определить, является ли содержимое строки вещественным числом. | |
Слова в строке отделены пробелами. Подсчитать количество слов, в которых гласных больше, чем согласных. | |
Слова в строке отделены пробелами. Поменять местами самое длинное и самое короткое слова. |
Требования к оформлению отчета приведены в разделе "Содержание и оформление отчета".
Содержание и оформление отчета
1. Титульный лист с названием лабораторной работы.
2. Номер и формулировка задачи.
3. Блок-схема алгоритма и ее описание.
4. Листинг программы.
5. Результаты тестирования.
6. Выводы.
Литература
1. Епанешников А.М. Программирование в среде Turbo Pascal 7.0 / А.М. Епанешников, В.А. Епанешников. М.: “ДИАЛОГ-МИФИ”, 2000. – 367 с.
2. Фаронов В.В. Основы Турбо Паскаля / В.В. Фаронов. М.: Учебно-инженерный центр "МВТУ-ФЕСТО ДИДАКТИК", 1992. – 304 с.
3. Марченко А.И. Программирование в среде Borland Pascal 7.0 / А.И. Марченко, Л.А. Марченко. К.: ЮНИОР, 1998. – 480 с.
4. Гусева А.И. Учимся программировать: PASCAL 7.0. Задачи и методы их решения. – М.: "Диалог-МИФИ", 1997. – 256 с.
5. Грызлов В.И. Турбо Паскаль 7.0 / В.И. Грызлов, Т.П. Грызлова. М.: ДМК, 1998. – 400 с.
Паскаль: операторы ветвления,
Дата публикования: 2015-04-07; Прочитано: 457 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!