Урок 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 файл. Създаването на приложение със значителен речников запас е трудоемко. Следователно можете да се ограничите до речник с компютърно пристрастие, който постепенно ще попълвате, докато се запознавате с нови английски думи за вас.

Ако се интересувате от алгоритъма за превод, създайте сами речник, който позволява на потребителя да въвежда нови думи, които автоматично ще бъдат записани, например в текстов файл. Тогава вашето приложение ще стане независимо от програмната среда и всеки потребител сам ще попълни речниковата база данни. Ако желаете, можете да превърнете речника в говорещ - думата, въведена за превод, ще звучи на два езика. Вече имате достатъчно знания, за да изпълните тези задачи.