Ваш браузер устарел. Рекомендуем обновить его до последней версии.




 



 


Delphi

 

 


Работа со строками. Англо-русский и русско-английский словарь

В этом уроке познакомимся со строковыми переменными. Для этой цели воспользуемся объектами класса AnsiString, которые в упрощенном варианте можно рассматривать как обычные переменные символьного типа. Такие символьные переменные можно складывать (склеивать) – операция конкатенации, сравнивать с помощью стандартных операций отношения: >, >=, <, <=, ==, !=. Ну и, конечно же, переменные символьного типа можно объявлять и присваивать им различные разрешенные строковые значения.

Построим небольшое приложение, для того чтобы поэкспериментировать со строками. Откройте новый проект. Из вкладки Standard палитры компонентов извлеките электронную кнопку Button1, поле вывода текста Label1 и установите их на стартовой форме. Электронную кнопку снабдите надписью «Конкатенация». Напишите функцию обработки Button1Click:

 

      AnsiString a, b, c;     //объявление трех символьных переменных

      //операции присваивания переменным значений

      a = "Borland";

      b = "C++";

      c = "Builder";

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

      Label1->Caption = a + " " + b + " " + c;

 

Запустите приложение на выполнение. После нажатия на электронную кнопку на форме в поле вывода текста появится вновь сформированная строка «Borland C++ Builder».

Вставку подстроки в строку с указанного символа можно осуществить с помощью метода Insert (Вставить), например, так:

 

     AnsiString a, b;     //объявление двух символьных переменных

     a = "моток";     //строка

     b = "ло";     //подстрока

     a.Insert(b,3);     //вставка подстроки в строку с 3-го символа

     Label1->Caption = a;     //результат в поле вывода текста

 

Проверьте, какое значение примет символьная переменная a в результате работы программы. Самостоятельно поэкспериментируйте со строками. В среде быстрой разработки C++ Builder существует много других методов для работы со строками, знакомство с которыми не входит в рамки данного учебного пособия.

Попробуем построить практически полезное приложение. Пусть это будет англо-русский словарь с возможностью обратного перевода. Откройте новый проект. На стартовой форме разместите компоненты Edit1 и Label1 из вкладки Standard палитры компонентов. Компонент Edit1 ввода и редактирования строки символов будет необходим пользователю для ввода переводимого английского или русского слова. Результат перевода будет размещаться в поле вывода текста компонента Label1. Для компонента Edit1 его свойству Text придайте значение пустого множества. А у компонента Label1 его свойству Caption так же придайте значение пустого множества. Это необходимо для того, чтобы после запуска приложения соответствующие поля этих компонентов были чистыми. В заголовок стартовой формы Form1 поместите надпись «Англо-русский и русско-английский словарь». В составном свойстве BorderIcons (Кнопки управления окном) компонента Form1 свойству biMaximize (Определяет доступность кнопки «Развернуть») придать значение false.

После такой предварительной подготовки можно приступать к написанию программного кода. В заголовочной части файла Unit1.cpp поместите инструкции:

 

     int i;     //объявление переменной i для перебора пар слов в цикле ДЛЯ

     //объявление переменной n – число пар английских и русских слов и присвоение n значения 100

     int n = 100;

     //объявление двух одномерных массивов a и r для символьных 

     //переменных, запоминающих английские и русские слова

     AnsiString a[101], r[101];

 

Затем напишите функцию обработки Edit1Change (Изменение в поле ввода и редактирования строки символов), которая будет просматривать словарный запас вашей программы и переводить известные ей слова:

 

     Label1->Caption = "";     //очищение поля вывода текста

     for (i=1; i<=n; i++)     //перебор словарного запаса в цикле ДЛЯ

     {

     if (Edit1->Text == a[i]) Label1->Caption = r[i];

     if (Edit1->Text == r[i]) Label1->Caption = a[i];

     }

 

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

И, наконец, напишите функцию обработки FormActivate (Активизация формы) для создания словарного запаса:

 

     //размещение в двух одномерных массивах словарного запаса

     a[1] = "home";          r[1] = "дом";

     a[2] = "car";          r[2] = "автомобиль";

     a[3] = "ford";          r[3] = "брод";

     a[4] = "mouse";          r[4] = "мышь";

     a[5] = "sound";          r[5] = "звук";

     a[6] = "cow";          r[6] = "корова";

     a[7] = "paper";          r[7] = "бумага";

     a[8] = "station";          r[8] = "вокзал";

     a[9] = "bus";          r[9] = "автобус";

     a[10] = "run";          r[10] = "бежать";

     ----------------------------------------

     a[91] = "keyboard";          r[91] = "клавиатура";

     a[92] = "table";          r[92] = "стол";

     a[93] = "field";          r[93] = "поле";

     a[94] = "sky";          r[94] = "небо";

     a[95] = "wood";          r[95] = "лес";

     a[96] = "sea";          r[96] = "море";

     a[97] = "road";          r[97] = "дорога";

     a[98] = "display";          r[98] = "дисплей";

     a[99] = "school";          r[99] = "школа";

     a[100] = "cat";          r[100] = "кот";

 

Запустите приложение на выполнение. Попробуйте осуществить прямой и обратный перевод. Если программа работает корректно, создайте исполняемый EXE-файл. Создание приложения со значительным словарным запасом дело трудоемкое. Поэтому можно ограничиться словарем с компьютерным уклоном, который вы будете пополнять постепенно по мере знакомства с новыми для вас английскими словами.

Если вас заинтересовал алгоритм перевода, самостоятельно постройте словарь позволяющий пользователю вносить новые слова, которые автоматически будут записываться, например, в текстовый файл. Тогда ваше приложение станет независимым от среды программирования и любой пользователь будет сам пополнять базу словаря. При желании словарь вы можете превратить в говорящий - слово введенное для перевода прозвучит на двух языках. Знаний для выполнения этих задач у вас теперь достаточно.

Flag Counter
Яндекс.Метрика
200stran.ru: показано число посетителей за сегодня, онлайн, из каждой страны и за всё время
Besucherzahler russain brides
счетчик посещений

Выбери лучшее!

allbest