Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...
Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...
Топ:
Основы обеспечения единства измерений: Обеспечение единства измерений - деятельность метрологических служб, направленная на достижение...
Генеалогическое древо Султанов Османской империи: Османские правители, вначале, будучи еще бейлербеями Анатолии, женились на дочерях византийских императоров...
Особенности труда и отдыха в условиях низких температур: К работам при низких температурах на открытом воздухе и в не отапливаемых помещениях допускаются лица не моложе 18 лет, прошедшие...
Интересное:
Влияние предпринимательской среды на эффективное функционирование предприятия: Предпринимательская среда – это совокупность внешних и внутренних факторов, оказывающих влияние на функционирование фирмы...
Финансовый рынок и его значение в управлении денежными потоками на современном этапе: любому предприятию для расширения производства и увеличения прибыли нужны...
Подходы к решению темы фильма: Существует три основных типа исторического фильма, имеющих между собой много общего...
Дисциплины:
2017-12-22 | 170 |
5.00
из
|
Заказать работу |
|
|
Строковые функции и процедуры введены в систему программирования Turbo Pascal для облегчения манипуляции со строками. Имеется восемь строковых функций и процедур.
1. Функция CONCAT (склеивание)
Синтаксис: concat (S1, S2,..., Sn: string): string. Возвращает строку, полученную конкатенацией строк S1,...,Sn. Если длина результата больше 256, то излишние символы отбрасываются. Эта функция фигурирует в правой части «:=» и в строковых выражениях.
Пример:
NUMBER:= concat ('12', '34', '50'); NUMBER = '123450'.
2. Функция LENGTH (длина)
Синтаксис: length (S: string): integer. Возвращает длину строки S.
П р и м е р:
N:= length ('345'); N = 3.
3. Функция POS (позиция)
Синтаксис: pos (S, T: string): integer. Функция POS в качестве аргументов использует две строки и определяет, содержится ли первая строка во второй. Возвращает номер символа, начиная с которого S входит в T. Если вхождения нет, то возвращает 0.
П р и м е р:
N:= pos ('E', 'HELLO');
N = 2.
N:= pos ('A', 'HELLO');
N = 0.
4. ФункцияCOPY (вырезка фрагмента)
Синтаксис: copy (S: string; N1, N: integer): string. Возвращает подстроку, полученную из N символов строки S, начиная с позиции N1. Значение переменной S при этом не меняется.
Пример:
FRAGMENT:= copy ('PROGRAMM', 2, 3);
FRAGMENT = 'ROG'.
5. Процедура DELETE (стирание фрагмента)
Синтаксис: delete (var S: string; POS, LEN: integer). Убирает из строки S LEN символов, начиная с POS, при этом длина строки уменьшается на LEN позиций.
Пример:
FRAGMENT:= 'PROGRAMM';
delete (FRAGMENT, 2, 3);
FRAGMENT = 'PRAMM'.
6. Процедура INSERT (вставка)
Синтаксис: insert (S: string; var D: string; POS: integer). Вставляет строку S в строку D перед символом с номером POS, при этом длина строки D увеличивается на LENGTH (S) позиций.
Пример:
FRAGMENT:= 'PRAMM';
insert ('ROG', FRAGMENT, 2);
FRAGMENT = 'PROGRAMM'.
7. Процедура STR (преобразование в строку)
Синтаксис: str (I: integer; var S: string); str (R: real; var S: string).
Преобразует I или R из числа в строку и записывает эту строку в S, причем R и I могут записываться форматно, как в процедуре WRITE.
|
Пример:
a) R:= 123.654; str (R:5:2, S); S = '123.65';
б) I:= 5683; str (I, S); s = '5683'.
8. Процедура VAL (преобразование в число)
Синтаксис: val (S: string; var I, J: integer); val (S: string; var I: real; var J: integer).
Преобразует строковую переменную S в число типа I. Переменная J получает значение 0, если перевод прошел без ошибок. Если же сделана попытка конвертировать в число строку, где есть нецифровые символы, то переменная J принимает значение позиции первого нецифрового символа. При этом работа процедуры прерывается.
Пример:
a) S:= '4326'; б) S:= '43p8';
val (S, I, J); val (S, I, J);
I = 4326, J = 0; I – не определено, J = 3.
Рассмотрим теперь пример на применение указанных функций и процедур обработки строк.
П р и м е р. Изменение порядка слов в строке.
program REVERSE;
var OLD_LINE, NEW_LINE: string [50];
PROBEL: integer; WORD: string [50];
begin
NEW_LINE:= ''; readln (OLD_LINE);
OLD_LINE:= concat (OLD_LINE,' ');
while OLD_LINE <> '' do
begin
PROBEL:= pos (' ', OLD_LINE);
word:= copy (OLD_LINE, 1, PROBEL);
NEW_LINE:= concat (WORD, NEW_LINE);
Delete (OLD_LINE, 1, PROBEL);
end;
writeln (NEW_LINE)
end.
Пояснение. С клавиатуры вводится строка OLD_LINE, и к ней справа подклеивается пробел. Это делается для того, чтобы строка имела одну и ту же структуру: слово плюс пробел. Затем в цикле, признаком конца которого является пустая константа, выделяется очередное по порядку слово и подклеивается слева в переменную NEW_ LINE. После выборки очередного слова из OLD_LINE оно оттуда выбрасывается, что приводит к постепенному уменьшению самой строки. Здесь переменная PROBEL служит для хранения позиции первого пробела в строке, а WORD – для выбранного из OLD_LINE слова.
Например, строка 'Наша Таня громко плачет' преобразуется в строку 'плачет громко Таня Наша'.
Лабораторная работа №6
Цель работы: освоить строковые операции, процедуры и функции; научиться создавать программы обработки текстовых данных, представляющих последовательность символов и строк, состоящих из слов, разделенных одним или несколькими пробелами.
Основные теоретические положения.
|
Для обработки текстовой информации можно использовать те же методы, что применяют для одномерных массивов, так как структура строкового типа схожа с массивом. Однако для упрощения написания программ по работе с текстами были разработаны стандартные строковые процедуры и функции. Поэтому основной задачей этой лабораторной работы является освоение строковых операций, функций Length, Pos, Copy и процедур Delete, Insert.
Перед выполнением работы необходимо ознакомиться с теоретическим материалом по теме «Обработка литерных величин. Данные типа Char и String».
Пример 1. Составить программу обработки данной строки, позволяющую выписать все знаки сравнения и все скобки, сохранив их последовательность.
Решение. Все знаки сравнения и скобки перечислим в строковой константе srav_sk. В теле программы последовательно рассмотрим все символы введенной строки s, проверяя каждый на вхождение в строку srav_sk, выводя на экран содержащиеся в строковой константе символы строки s.
program string_1;
const srav_sk='<>=(){}[]';
var s:String; i:Integer;
begin
Writeln('Введите строку:'); Readln(s);
for i:=1 to Length(s) do
if Pos(s[i],srav_sk)<>0 then write(s[i]);
Readln
end.
Пример 2. Дана строка, состоящая из слов, разделенных пробелами (одним или несколькими). Составить программу обработки данной строки, выводящую через запятую слова четной длины, которые при обмене местами левой и правой половины дают то же слово (например, папа, мама, канкан).
Решение. В строке, последовательно перебирая элементы, будем выделять начало ns и конец ks каждого слова, копировать слово в другую строковую переменную, а затем проверять четность длины и равенство частей строки slovo. Слова, для которых выполнено условие задания будем склеивать в переменной otv. После добавления к ответу последнего слова в конце otv будет лишняя запятая, которую перед выводом на экран необходимо удалить.
program string_2;
var s, slovo, otv:String; ns, ks, i, m: Integer;
begin
Writeln ('Введите строку:'); Readln(s);
i:=1; ns:=1; otv:=''; s:=s+' ';
while i<=Length(s) do
begin
while (i<=Length(s)) and (s[i]<>' ') do i:=i+1; {ищем очередной пробел}
ks:=i; slovo:=Copy(s, ns, ks-ns); {выделяем слово}
m:=Length(slovo) div 2; {половина длины слова}
if (Length(slovo) mod 2=0) and (Copy(slovo,1,m)=Copy(slovo, m+1,m))
{если слово имеет четную длину}
then otv:= otv+slovo+ ','; {добавляем слово к ответу}
while (i<=Length(s)) and (s[i]=' ') do i:=i+1; {пропускаем пробелы}
ns:=i; {начало следующего слова}
end;
Delete(otv, Length(otv), 1); {удаляем лишнюю запятую в конце}
|
Writeln(otv);
Readln
end.
Варианты заданий
Задание 1. Составить программу обработки данной строки, позволяющую:
a) выписать все прописные буквы из данной строки в порядке их следования;
b) определить, содержатся ли в тексте цифры;
c) найти общее количество круглых, квадратных и фигурных скобок в тексте;
d) выписать все знаки препинания из данной строки, сохранив их последовательность;
Задание 2. Дана строка, состоящая из слов, разделенных пробелами (одним или несколькими). Составить программу обработки данной строки, выводящую через запятую:
a) слова, одинаково читающиеся справа налево и слева направо;
b) слова заданной длины, в которые входит данная буква;
c) слова, начинающиеся с прописной буквы, в которых все остальные буквы строчные;
d) слова, которые начинаются и заканчиваются одной и той же буквой и содержат хотя бы одну введенную с клавиатуры букву.
Дополнительные задания
Дана строка, состоящая из слов, разделенных пробелами (одним или несколькими). Составить программу обработки данной строки, позволяющую:
a) определить количество слов в строке;
b) удалить из строки избыточные пробелы, чтобы между словами осталось только по одному пробелу;
c) найти самое короткое слово и его длину;
d) найти в тексте слова-перевертыши.
Содержание отчета
1. Постановка задачи.
2. Описание алгоритма.
3. Тестовые примеры и анализ результатов тестирования.
4. Вывод.
Контрольные вопросы
1. Как описываются в языке Паскаль строковые величины?
2. В чем сходство и в чем различие между массивами и строками?
3. Существуют ли ограничения, накладываемые на длину строки?
4. Какие строковые процедуры существуют в языке Паскаль?
5. Для вывода значений каких строковых функций нужны переменные типа string, а для каких – integer?
6. Какие есть возможности извлечения из строки одного символа?
7. Строка для обработки процедурой должна быть ее параметром-аргументом или параметром-результатом?
ПРОГРАММИРОВАНИЕ ГРАФИКИ
Компьютер может оперировать либо с символами (символьный режим), либо с геометрическими фигурами (графический режим). Для создания на экране геометрических фигур с помощью языка Паскаль используются графические операторы, которые позволяют рисовать различные геометрические фигуры (точки, отрезки, окружности и пр.).
|
Графические объекты могут находиться на экране только в то время, когда работает программа. Для формирования графических изображений в системе TurboPascal предназначен стандартный библиотечный модуль GRAPH. В нем содержится 79 графических процедур, функций, десятки стандартных констант и типов данных. Все они составляют единый комплекс средств, позволяющих разрабатывать профессиональные программные продукты. Подключение модуля GRAPH к пользовательской программе осуществляется стандартным способом - с помощью зарезервированного слова USES: USES GRAPH. С этого момента все графические средства доступны пользователю.
Взаимодействие программы и видеосистемы в графических режимах обеспечивают драйверы. Драйверы собраны в файлах, имеющих расширение BGI: CGA. BGI, EGAVGA. BGI, HERC. BGI, IBM 8514.BGI, ATT. BGI, PC3270.BGI и др. Драйвер – это специальная программа, осуществляющая управление тем или иным техническим средством ПК. Графический драйвер управляет графическим адаптером в графическом режиме.
|
|
Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...
Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...
Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой...
История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!