90950

СТРОКИ В DELPHI

Лекция

Информатика, кибернетика и программирование

Тема «Строки» для многих студентов является сложной, несмотря на то, что программы обработки строк – короткие. Порядок изучения этой темы следующий: краткое изложение теоретического материала, разбор работы стандартных подпрограмм для обработки строк на конкретных примерах и решение задач в среде программирования Delphi 7.

Русский

2015-07-11

87.56 KB

5 чел.

2

Лекция на тему «СТРОКИ В DELPHI»

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

Тема «Строки» для многих студентов является сложной, несмотря на то, что программы обработки строк – короткие. Порядок изучения этой темы следующий: краткое изложение теоретического материала, разбор работы стандартных подпрограмм для обработки строк на конкретных примерах и решение задач в среде программирования Delphi 7.

Для закрепления материала предложены задачи для самостоятельного выполнения, вопросы для контроля, закрытый тест.

В конце лекции приведен список используемой литературы.

План

  1.  Строковые типы, объявление строки, сравнение строк.
  2.  Стандартные подпрограммы для работы со строками.
  3.  Примеры задач.

1. Строковые типы, объявление строки, сравнение строк

Для обработки текстов в Delphi используются следующие типы:

  1.  короткая строка ShortString или String[N], где N<=255;
  2.  длинная строка String;
  3.  широкая строка WideString;
  4.  нуль-терминальная строка Pchar.

Общим для этих типов является то, что каждая строка трактуется как одномерный массив символов, количество символов в котором может меняться в работающей программе: для String[N] длина строки меняется от 0 до N, для String и Pchar – от 0 до 2 Гбайт.

Примеры объявлений строковых типов:

var

   s: String[200];          // Короткая строка длиной до 200 символов

   smax: ShortString;   // Короткая строка длиной до 255 символов

   st: String;                 // Длинная строка

Здесь 200 – максимальная длина строки.

Две строки можно сравнивать между собой. Строки считаются равными, если они имеют одинаковые значения, и их текущие длины равны. Текущая длина – это фактическое количество символов в строке.

Примеры:

а) ′ABC′=′ABC′ – строки равны;

б) ′ABC′=′BAC′ – строки не равны (разные значения);

в) ′ABC′=′ABC ′ – строки не равны (разные текущие длины: в первой строке – 3 символа, во второй  строке – 4 символа).

Различают строки-получатели и строки-источники. Пример:

t:=′20 лет спустя′; Здесь переменная t – получатель, строковая константа ′20 лет спустя′ –  источник.

Если максимальная длина получателя равна текущей длине источника, значение источника целиком размещается в получателе.

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

Если максимальная длина получателя (n) меньше текущей длины источника, значением получателя становятся первые n символов источника.

2. Стандартные подпрограммы для работы со строками

Concat(s1, s2[, … , sn]) – функция возвращает строку, представляющую собой сцепление строк-параметров s1, s2, …, sn.

Copy(st, p, n) – функция копирует из строки st с позиции p n символов.

Delete(st, p, n) – процедура удаляет из строки st с позиции p n символов.

Insert(s, st, p) – процедура вставляет подстроку s в строку st с позиции p.

Length(st) – функция возвращает текущую длину строки st.

Ord(st[0]) – функция возвращает текущую длину строки st, которая хранится в нулевой позиции.

Pos(s, st) – функция отыскивает в строке st первое вхождение подстроки s и возвращает номер позиции, с которой она начинается; если подстрока не найдена, возвращается ноль.

Str(x[:width[:desimals]], st) – процедура преобразует число x вещественного или целого типа в строку символов st; параметры width и desimals, если они присутствуют, задают формат преобразования: width определяет общую ширину поля, выделенного под символьное представление числа x, а desimals – количество символов в дробной части (этот параметр имеет смысл, когда x – вещественное число).

Val(st, x, code) – процедура преобразует строку символов st во внутреннее представление целой или вещественной переменной x; параметр code содержит ноль, если преобразование прошло успешно, и тогда в x помещается результат преобразования, в противном случае он содержит номер позиции в строке st, где обнаружен ошибочный символ, и в этом случае содержимое x не меняется; в строке st могут быть ведущие пробелы, ведомые пробелы недопустимы.

Выделяют:

  1.  процедуры (Delete, Insert, Str, Val);
  2.  функции (Concat, Copy, Length, Ord, Pos).

Результатом подпрограммы может быть:

  1.  строка (Concat, Copy, Delete, Insert, Str);
  2.  число (Length, Ord, Pos, Val).

Примеры:

а) Memo1.Lines.Add(copy(′Москва Смоленск Орел Тула′,17,4)); Будет выведено

Орел

б) s:=′понедельник вторник четверг′; insert(′среда ′,s,21); writeln(s); Будет выведено

понедельник вторник среда четверг

в) s:=′лиса ворона обезьяна′; delete(s,6,7); Memo1.Lines.Add(s); Будет выведено

лиса обезьяна

г) Memo1.Lines.Add(′L=′+IntToStr(length(′ромашка астра георгин′))); Будет выведено

L=21

д) s:=′Терпение и труд все перетрут′; Memo1.Lines.Add(IntToStr(ord(s[0]))); Будет выведено

28

е) Memo1.Lines.Add(′P=′+IntToStr(pos(′нос′,′утконос носорог′))); Будет выведено

P=5

и) Memo1.Lines.Add(IntToStr(pos(′роса′,′росток простор′))); Будет выведено

0

3. Примеры задач

Задача 1. Дан текст из строчных русских букв: между словами – пробел, после последнего слова – точка. Вывести слова четной длины, начинающиеся и оканчивающиеся одной и той же буквой.

Обработчики событий FormActivate и bbRunClick:

Заполненная форма (результат работы приложения)

Задача 2. Сформировать строку из слов-перевертышей (слова разделены пробелом, после последнего слова – точка) и вывести ее.


Обработчики событий FormActivate и bbRunClick:

Заполненная форма (результат работы приложения)

Задачи для самостоятельного выполнения. Разработать обработчик события bbRunClick (BitBtnClick).

  1.  Дан текст из строчных русских букв. Подсчитать количество гласных букв в тексте.
  2.  Дан текст из строчных русских букв: между словами – пробел, после последнего слова – точка. Вывести слова, оканчивающиеся на букву ′о′.
  3.  Дан текст из строчных русских букв: между словами – пробел, после последнего слова – точка. Вывести слова, состоящие из двух и более слогов.

Вопросы для контроля

  1.  Перечислите типы, используемые в Delphi для обработки текстов.
  2.  Что является общим для строковых типов в Delphi?
  3.  Объявите длинную строку st в разделе описания переменных.
  4.  Объявите короткую строку s длиной до 100 символов в разделе описания переменных.
  5.  Приведите пример строковой константы.
  6.  Перечислите имена процедур для обработки строк.
  7.  Перечислите имена функций для обработки строк.
  8.  Перечислите имена процедур и функций, результатом которых является число.
  9.  Перечислите имена процедур и функций, результатом которых является строка.
  10.  Формат и назначение copy.
  11.  Формат и назначение delete.
  12.  Формат и назначение insert.
  13.  Формат и назначение length.
  14.  Формат и назначение ord.
  15.  Формат и назначение pos.
  16.  Memo1.Lines.Add(copy('Январь февраль март апрель',8,7));

    Что будет выведено?

  1.  s:='Битва железных канцлеров'; delete(s,7,9); Memo1.Lines.Add(s);

     Что будет выведено после выполнения вышеприведенного фрагмента обработчика события?

  1.  s:='брусника клюква черника'; insert('смородина ',s,10); Memo1.Lines.Add(s);

    Что будет выведено после выполнения вышеприведенного фрагмента обработчика события?      

  1.  s:='Достоевский Чехов Толстой'; Memo1.Lines.Add('L='+IntToStr(length(s)));

    Что будет выведено?

  1.  Memo1.Lines.Add('P='+IntToStr(pos('фон','домофон магнитофон фон')));

    Что будет выведено?

ТЕСТ

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

Вопрос 1. Общим для строковых типов в Delphi является то, что …

  1.  каждая строка трактуется как двумерный массив символов
  2.  каждая строка трактуется как одномерный массив символов
  3.  каждая строка трактуется как матрица символов
  4.  каждая строка трактуется как прямоугольная таблица символов

Вопрос 2. Объявление короткой строки s длиной до 100 символов выглядит так:

  1.  Var s: String[100];
  2.  Var s: ShortString[100];
  3.  Var s: PChar;
  4.  Var s: WideString;

Вопрос 3. Объявление длинной строки st в разделе описания переменных выглядит так:

  1.  Var st: String[200];
  2.  Var st: WideString;
  3.  Var st: String;
  4.  Var st: ShortString;

Вопрос 4. Перечислите функции для обработки строк

  1.  length, ord, str, val
  2.  length, ord, concat, pos, copy
  3.  delete, insert, str, val
  4.  Нет правильного ответа

Вопрос 5. Эта процедура преобразует строку в число

  1.  val(st, x, code)
  2.  length(st)
  3.  copy(st, p, n)
  4.  str(x, st)

Вопрос 6. Она предназначена для получения копии из строки

  1.  insert
  2.  copy
  3.  delete
  4.  concat

Вопрос 7. Результатом этих процедур и функций является строка

  1.  insert, delete, pos, val
  2.  pos, val, length, ord
  3.  concat, copy, str, insert, delete
  4.  length, ord, copy, str

Вопрос 8. Перечислите процедуры для обработки строк

  1.  length, ord, str, val
  2.  length, ord, concat, pos, copy
  3.  delete, insert, str, val
  4.  Нет правильного ответа

Вопрос 9. Она предназначена для удаления части строки

  1.  insert
  2.  copy
  3.  delete
  4.  concat

Вопрос 10. Результатом этих процедур и функций является число

  1.  insert, delete, pos, val
  2.  pos, val, length, ord
  3.  concat, copy, str, insert, delete
  4.  length, ord, copy, str

Вопрос 11. Memo1.Lines.Add(′P=′+IntToStr(pos(′вес′,′занавес вес весы′))); В Memo1 будет выведено

  1.  P=13
  2.  P=весы
  3.  P=5
  4.  P=9

Вопрос 12. s:=′ясень тополь дуб′; insert(′береза ′,s,14); Memo1.Lines.Add(s); В Memo1 будет выведено

  1.  ясень береза тополь дуб
  2.  ясень тополь береза дуб
  3.  береза тополь дуб ясень
  4.  дуб ясень береза тополь

Вопрос 13. s:=′Токио Пекин Ханой Катманду′; delete(s,13,6); Memo1.Lines.Add(s); В Memo1 будет выведено

  1.  Токио Ханой Катманду
  2.  Пекин Ханой Катманду
  3.  Токио Пекин Катманду
  4.  Пекин Катманду Токио

Вопрос 14. Memo1.Lines.Add(copy(′голубь воробей сорока дрозд′,8,7)); В Memo1 будет выведено

  1.  голубь
  2.  воробей
  3.  сорока
  4.  дрозд

Вопрос 15. s:=′Юпитер Сатурн Плутон′; Memo1.Lines.Add(′L=′+IntToStr(length(s))); В Memo1 будет выведено

  1.  L=20
  2.  L=18
  3.  Юпитер Сатурн
  4.  L=Плутон


Список литературы

  1.  Культин Н. Б. Основы программировании в Delphi 7. СПб.: БХВ-Петербург. 2009.
  2.  Немцова Т. И., Голова С. Ю., Абрамова И. В. Программирование на языке высокого уровня. Программирование на языке Object Pascal: Учебное пособие. – М.: Издательский Дом "ФОРУМ"; М.: ООО "Научно-издательский центр ИНФРА-М", 2013.


 

А также другие работы, которые могут Вас заинтересовать

52279. Жизненная сила музыки И.С. Баха 69 KB
  Баха Цели и задачи урока: Закрепить понятие полифония на примерах вокального инструментального и произведения изобразительного искусства; Определить особенности содержания музыки И. Баха; Формировать: представление о стилистических особенностях музыки И. Баха понятие Сюита навыки хорового пения. Баха иллюстрации по теме урока стихи и высказывания по теме урока нотный материал.
52280. Бактериологическое оружие и его поражающие факторы 50.5 KB
  11й класс Цели: Познакомить учащихся с видами поражающими факторами бактериологического оружия. Обучить способам защиты от бактериологического оружия. Учебные вопросы: История применения бактериологического оружия. Краткая характеристика бактериологического оружия и его боевых свойств.
52281. Злочини бактерій проти людства 68 KB
  Характеристика холери менінгококової хвороби дифтерії туберкульозу сифілісу. Стан захворюваності на туберкульоз в Україні. Обладнання: ПК; мультимедійний проектор; презентації: Хвороботворні бактерії: вчора і сьогодні Туберкульоз підступний вбивця Профілактика бактеріальних хвороб ; оцінювальні завдання; слайд із відповідями на завдання; виставка газетбюлетенів: Кишкові інфекції Туберкульоз підступний вбивця Імунітет на сторожі здоров’я . Фтизіатри з’ясувати особливості збудника туберкульозу причини поширення...
52282. Випускний вечір 88 KB
  Веселинівської районної ради Миколаївської області Випускний вечір 2011 Звучать фанфари на сцену виходять ведучі Ведучий. Ведучий. Ведучий. На сьогоднішнє свято запрошуємо тих хто впродовж одинадцяти років вів винуватців сьогоднішніх урочистостей нелегкими стежками шкільних наук ті хто вчив читати і писати відкрив чудесні світи літератури та точних наук наші вчителі звучить музика виходять вчителі Ведучий.
52283. Осінній бал. Поетично – музичний вечір присвячений посвяті учнів 9 класу в старшокласники 54 KB
  Осінь нам дарує радість й спокій І чарівних квітів розмаїть Осінь – це пора прекрасних років Коли в повну силу треба жить В. Осінь уже не щедра на квіти. Вишиває осінь на канві зеленій золоті квітки Квіти оживають і з дерев спадають жовті ягідки. Вишиває осінь на канві зеленій золоті квітки В.
52285. ВИПУСКНИЙ БАЛ «ПРОЩАВАЙ ПОЧАТКОВА ШКОЛО! 67 KB
  Лунає музика для вас В садах бузок зацвів для вас І сонця промінь теж для вас Мої малятадружній клас Ми всі чекаємо на вас. Учні входять під музику до зали Учні по черзі Доброго днядорогі батьки вчителігості Ми раді вас вітати у цьому затишному залі. Сьогодні вас називають таким вагомим словом випускники. 1: Ми всі раді вас вітати На нашому сімейному святі.
52286. Репродуктивне здоров`я молоді 61.5 KB
  Репродуктивне здоров`я молоді. Мета: сформувати уявлення про репродуктивне здоров`я системні валеологічні знання про здоровий спосіб життя розуміння необхідності дотримання культури статевих стосунків на основі дружби поваги вірності; навчити запобігати ризикам і негативному впливу на репродуктивне здоров’я соціальних та особистісних чинників; охарактеризувати чинники впливу і ризику; виховувати свідоме ставлення до свого репродуктивного здоров’я. Перевірка виконання практичної роботи №2 Самооцінка рівня фізичного здоров’я та аналіз...
52287. СВЯТО – ПОДОРОЖ ДО БАРВІНКОВОЇ КРАЇНИ 88.8 KB
  Діти сьогодні до нас на наше свято завітала Мудра Сова. Діти що за свято без Барвінку. Допоможемо Діти. Ну діти молодці справилися з першим завданням.