Урок 15 - Урок за C Builder
Работа с низове. Английско-български и българо-английски речник
В този урок ще се запознаем с низовите променливи. За целта ще използваме обекти от класа AnsiString, които в опростен вариант могат да се разглеждат като обикновени променливи от символен тип. Такива символни променливи могат да бъдат добавени (слепени) - операция на конкатенация, сравнена с помощта на стандартни релационни операции: >, >=, Caption = a + " " + b + " " + c;
Стартирайте приложението за изпълнение. След натискане на електронния бутон на формата, в полето за извеждане на текст ще се появи новоформираният низ "Borland C++ Builder".
Вмъкването на подниз в низ от определен знак може да се извърши с помощта на метода Insert, например по следния начин:
a = "чиле"; // линия
b = "lo"; //подниз
a.Insert(b,3); //вмъкване на подниз в низ от 3-тия знак
Етикет1->Надпис = a; //резултат в полето за извеждане на текст
Проверете каква стойност ще приеме символната променлива a в резултат на програмата. Експериментирайте сами с струните. Има много други методи за работа с низове в средата за бързо разработване на C++ Builder, които са извън обхвата на този урок.
Нека се опитаме да създадем практично полезно приложение. Нека да е английско-български речник с възможност за обратен превод. Отворете нов проект. В началната форма поставете компонентите Edit1 и Label1 от раздела Standard на палитрата с компоненти. Компонентът Edit1 за въвеждане и редактиране на символен низ ще е необходим на потребителя за въвеждане на преведена английска или българска дума. Резултатът от превода ще бъде поставен в полето за изход на текст на компонента Label1. За компонента Edit1 задайте свойството му Text напразен комплект. А за компонента Label1 също дайте на свойството Caption стойността на празен набор. Това е необходимо, така че след стартиране на приложението съответните полета на тези компоненти да са чисти. Поставете надпис "Английско-български и Българско-английски речник" в заглавието на началната форма Form1. В съставното свойство BorderIcons (бутони за управление на прозорец) на компонента Form1, свойството biMaximize (
Указва наличността на бутона Разгъване), зададен на false.
След такава предварителна подготовка можете да започнете да пишете програмен код. В заглавката на файла Unit1.cpp поставете следните инструкции:
// променливи, които съхраняват английски и български думи
AnsiString a[101], r[101];
След това напишете функция за обработка Edit1Change (Промяна в полето за въвеждане и редактиране на символен низ), която ще разгледа речника на вашата програма и ще преведе думите, които са й известни:
Етикет1->Надпис=""; // поле за извеждане на чист текст
for (i=1; i Text == a[i]) Label1->Caption = r[i];
if (Edit1->Text == r[i]) Label1->Caption = a[i];
Тялото на цикъла съдържа две условия. Първото условие проверява дали има английска дума в речника, която съответства на думата, въведена от потребителя в полето за въвеждане и редактиране на символния низ. Ако се намери такава дума, то в полето за извеждане на текст се поставя съответната българска дума със същия номер. Второто условие работи по подобен начин, като прави обратния превод.
И накрая, напишете функцията за обработка FormActivate, за да създадете речника:
//поставяне в два едномерни речникови масива
a[1] = "дом"; r[1] = "къща";
a[2] = "кола"; r[2] = "кола";
a[3] ="форд"; r[3] = "форд";
a[4] = "мишка"; r[4] = "мишка";
a[5] = "звук"; r[5] = "звук";
a[6] = "крава"; r[6] = "крава";
a[7] = "хартия"; r[7] = "хартия";
a[8] = "гара"; r[8] = "станция";
a[9] = "автобус"; r[9] = "автобус";
a[10] = "бягане"; r[10] = "бягане";
a[91] = "клавиатура"; r[91] = "клавиатура";
a[92] = "таблица"; r[92] = "таблица";
a[93] = "поле"; r[93] = "поле";
a[94] = "небе"; r[94] = "небе";
a[95] = "дърво"; r[95] = "гора";
a[96] = "море"; r[96] = "море";
a[97] = "път"; r[97] = "път";
a[98] = "дисплей"; r[98] = "дисплей";
a[99] = "училище"; r[99] = "училище";
a[100] = "котка"; r[100] = "котка";
Стартирайте приложението за изпълнение. Опитайте се да извършите директен и обратен превод. Ако програмата работи правилно, създайте изпълним EXE файл. Създаването на приложение със значителен речников запас е трудоемко. Следователно можете да се ограничите до речник с компютърно пристрастие, който постепенно ще попълвате, докато се запознавате с нови английски думи за вас.
Ако се интересувате от алгоритъма за превод, създайте сами речник, който позволява на потребителя да въвежда нови думи, които автоматично ще бъдат записани, например в текстов файл. Тогава вашето приложение ще стане независимо от програмната среда и всеки потребител сам ще попълни речниковата база данни. Ако желаете, можете да превърнете речника в говорещ - думата, въведена за превод, ще звучи на два езика. Вече имате достатъчно знания, за да изпълните тези задачи.