Примеры команд КОНЦЕПТ

Дата: 14.08.2013

Раздел 1. Обработка строк


1) Нумерация символов в строке начинается с 1.
2) Если попытаться извлечь из строки символ/подстроку из позиции за пределами строки, то будет возвращено значение <???>.
3) Чтобы в качестве параметра команды указать пустую строку, нужно указать ''.
4) Чтобы в качестве параметра команды правильно указать терминальную строку, содержащую символ пробел
или начинающуюся с символа [,( или ", то ее нужно заключить в одиночные кавычки ''.
Например: 'строка с пробелом'.
5) Чтобы в качестве параметра команды правильно указать терминальную строку, содержащую символ ',
ее можно заключитить в двойные кавычки. При этом, внутри нельзя использовать символы [ и ].
Например: "Гостиница 'Москва'".
6) Нужно соблюдать осторожность при обработке строк, содержащих коды, начинающиеся с символа #.

Пример 1. Преобразование символов к верхнему регистру (прописные буквы)

Программа:
строка прописные а 'аБвГд'
>[а]
Результат:
АБВГД

Пример 2. Преобразование символов к нижнему регистру (строчные буквы)

Программа:
строка строчные а 'аБвГд'
>[а]
Результат:
абвгд

Пример 3. Преобразование строки символов к имени собственному (начинается с прописной буквы)

Программа:
присвоить исходная_строка 'аБвГд'
строка прописные первая_буква (строка копировать $результат [исходная_строка] 1 1 )
строка строчные  последующие_буквы (строка удалить $результат [исходная_строка] 1 1 )
строка сцепить а [первая_буква] [последующие_буквы]
>[а]
Результат:
Абвгд

Пример 4. Сцепление (конкатенация) строк

Программа:
строка сцепить а Париж ' - ' 'столица Франции' .
>[а]
Результат:
Париж - столица Франции.

Пример 5. Выделение подстроки символов из строки

Программа:
строка копировать а 'Париж - столица Франции.' 9 7
>[а]
Результат:
столица

Пример 6. Удаление подстроки символов из строки

Программа:
строка удалить а 'Париж - столица Франции.' 16 8
>[а]
Результат:
Париж - столица.

Пример 7. Вставка подстроки символов в строку (с раздвижкой исходной строки)

Программа:
строка вставить а 'Париж - столица Франции.' 8 ' это'
>[а]
Результат:
Париж - это столица Франции.

Пример 8. Поиск подстроки символов в строке

Программа:
* Если подстрока не найдена, то результат 0
строка найти а 'Париж - столица Франции.' столица
>[а]
Результат:

Пример 9. Замена подстроки символов в строке

Программа:
* Замена слова 'столица' на слово 'город'
присвоить исходная_строка 'Париж - столица Франции.'
строка найти позиция [исходная_строка] столица
если [позиция] > 0
  строка удалить а [исходная_строка] [позиция] (строка размер $результат столица )
  строка вставить а $ [позиция] город
конец
>[а]
Результат:
Париж - город Франции.

Пример 10. Определение длины (размера) строки символов

Программа:
строка размер а 'Париж - столица Франции.'
>[а]
Результат:
24

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

Программа:
строка взять а 'Париж - столица Франции.' 5
>[а]
Результат:
ж

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

Программа:
строка присвоить а 'Париж - столица Франции.' 9 ГОРОД
>[а]
Результат:
Париж - ГОРОДца Франции.

Пример 13. Выделение последнего символа строки

Программа:
строка последний а 'Париж - столица Франции.'
>[а]
Результат:
.

Пример 14. Поиск первого вхождения любого символа из подстроки, начиная с позиции начала исходной строки

Программа:
строка найтиСимволы а 'Париж - столица Франции.' 'ФфЦц' 1
>[а]
Результат:
14, т.к. это первое вхождение какого-либо символа из подстроки 'ФфЦц' в исходную строку

Пример 15. Пропуск в строке всех символов из подстроки, начиная с позиции начала исходной строки

Программа:
* Находит первое вхождение Ф 
строка пропуститьСимволы а 'Париж - столица Франции.' '- Париж' 1
>[а]
Результат:
9, т.к. в этой позиции исходной строки впервые появляется символ, который не содержится в подстроке '- Париж' 

Пример 16. Замена в исходной строке всех символов из одной строки на соответствующие символы из другой строки

Программа:
* Все гласные в строке будут заглавными буквами
строка заменитьСимволы а 'Париж - столица Франции.' 'ПФаио' 'пфАИО'
>[а]
Результат:
пАрИж - стОлИцА фрАнцИИ.

Пример 17. Удаление в строке всех заданных символов

Программа:
* Удаление всех гласных букв из строки
строка заменитьСимволы а 'Париж - столица Франции.' 'аио' ''
>[а]
Результат:
Прж - стлц Фрнц.

Пример 18. Замена в исходной строке всех вхождений заданной подстроки

Программа:
строка заменитьПодстроку а 'Париж - столица Франции, а Берлин - столица Германии.' столица город  
>[а]
Результат:
Париж - город Франции, а Берлин - город Германии.

Пример 19. Удаление обрамляющих пробелов

Программа:
строка отсечьПробелы а '   АБВ    '  
>[а]
Результат:
АБВ

Пример 20. Преобразование строки символов в строку кодов

Программа:
строка коды а АБВ123  
>[а]
Результат:
#1040#1041#1042#0049#0050#0051 

Пример 21. Замена в исходной строке всех кодов на символы

Программа:
* Код начинается с симовла # за которым обязательно следует 4 цыфры
строка символы а 'А#1041#1042#0049#00503'
>[а]
Результат:
АБВ123

Пример 22. Преобразование строки к списку символов

Программа:
* !!! Внимание, если строка содержит символы ;{}, то может быть сформирован неправильный список !!!
строка кСписку а АБВ123
>[а]
Результат:
А;Б;В;1;2;3

Пример 23. Преобразование строки к списку слов (лексем)

Программа:
* !!! Внимание, если строка содержит символы ;{}, то может быть сформирован неправильный список !!!
строка кСпискуСлов а 'Париж - столица Франции.'
>[а]
Результат:
Париж;-;столица;Франции;. 

Пример 24. Сопоставление строки с шаблоном (извлечение подстрок из строки по заданному шаблону)

Программа:
строка сопоставить успешно 'Париж - столица Франции.' "[?город]; - столица ;[?страна];."
>Успешно:[успешно]  Город: [город]  Страна: [страна]
Результат:
Успешно:1  Город: Париж  Страна: Франции

Пример 25. Генерация строки, состоящей из повторения заданной строки

Программа:
строка реплицировать а 'АБВ123 ' 3
>[а]
Результат:
АБВ123 АБВ123 АБВ123 

Пример 26. Разбиение строки

Программа:
строка разбить а 'Москва-Париж-Берлин' '-'
>[а]
Результат:
Москва;Париж;Берлин

Пример 27. Фильтрация символов в строке

Программа:
* Оставляем только заглавные буквы и дефис
строка фильтр а 'Москва-Париж-Берлин' 'АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЪЭЮЯ-'
>[а]
Результат:
М-П-Б

Пример 28. Инвертирование строки

Программа:
строка инвертировать а 12345
>[а]
Результат:
54321

Раздел 2. Вычисления


1) Дробную часть в числах можно отделять как точкой, так и запятой. Например: 1,25 или 1.25.
2) Значения 0, '' (пустая строка), {} (пустой список) и <???> (неопределенное значение)
интерпретируются как ЛОЖЬ, все остальные - как ИСТИНА.

Пример 1. Сложение чисел

Программа:
вычислить + а 1,05 2.05 3.05
>[а]
Результат:
6,15

Пример 2. Вычитание чисел (из первого числа) 

Программа:
вычислить - а 7 1 2,3 3
>[а]
Результат:
0,7

Пример 3. Умножение чисел

Программа:
вычислить * а 1 2 3.5 4.5
>[а]
Результат:
31,5

Пример 4. Деление чисел (первое число делится на все последующие)

Программа:
вычислить / а 36 2 3 4
>[а]
Результат:
1,5

Пример 5. Целочисленное деление

Программа:
вычислить делитьЦелое а 15 7
>[а]
Результат:
2

Пример 6. Остаток от целочисленного деления

Программа:
вычислить остаток а 15 7
>[а]
Результат:
1

Пример 7. Логическое И

Программа:
вычислить и а 1 1 0
>[а]
Результат:

Пример 8. Логическое ИЛИ 

Программа:
вычислить или а 1 1 0
>[а]
Результат:

Пример 9. Логическое НЕ

Программа:
вычислить не а 1
>[а]
Результат:
0

Пример 10. Проверка равенства чисел

Программа:
вычислить = а 2 2,0
>[а]
Результат:
1

Пример 11. Проверка неравенства чисел

Программа:
вычислить <> а 2 2,0
>[а]
Результат:

Пример 12. Проверка, что первое число больше второго

Программа:
вычислить > а 2 2
>[а]
Результат:

Пример 13. Проверка, что первое число больше или равно второму

Программа:
вычислить >= а 2 2
>[а]
Результат:
1

Пример 14. Проверка, что первое число меньше второго

Программа:
вычислить < а 2 2
>[а]
Результат:
0

Пример 15. Проверка, что первое число меньше или равно второму

Программа:
вычислить <= а 2 2
>[а]
Результат:
1

Пример 16. Проверка равенства строк

Программа:
вычислить == а 2 2,0
>[а]
Результат:
0

Пример 17. Проверка неравенства строк

Программа:
вычислить != а 2 2,0
>[а]
Результат:
1

Пример 18. Округление числа

Программа:
* Отрицательный параметр задает округление дробной части: -1 до десятых, -2 до сотых т.д.
вычислить округлить а 1111,2888 -2 
>[а]
Результат:
1111,29 

Пример 19. Округление числа

Программа:
* Положительный параметр задает округление целой части: 1 до десатков, 2 до сотен и т.д.
вычислить округлить а 1111,2888 2 
>[а]
Результат:
1100

Пример 20. Проверка, что аргументом является целое положительное число или 0

Программа:
вычислить являетсяЧислом а 1.1
>[а]
Результат:
0

Пример 21. Проверка, что аргументом является целое положительное число или 0

Программа:
вычислить являетсяЧислом а 5
>[а]
Результат:
1

Пример 22. Синус угла (угол задается в радианах)

Программа:
вычислить синус а 1
>[а]
Результат:
0,841470984807897

Пример 23. Косинус угла (угол задается в радианах)

Программа:
вычислить косинус а 1
>[а]
Результат:
0,54030230586814 

Раздел 3. Множества


1) Элементы множества разделяются ;. Например: А;Б;В;Г;Д
2) Пустое множество обозначается как {}
3) Отдельная строка символов является множеством из одного элемента. Например, строка 'Ваня и Таня' - множество из одного элемента
4) В множестве учитываются только уникальные элементы. Повторяющиеся элементы в множестве
учитываются как один. Например, следующие множества равны: Б;А;Б;А;В и В;Б;А;В;В

Пример 1. Пересечение 3-х множеств

Программа:
множество и а А;Б;В В;Г;Д В;Д
>[а]
Результат:
В 

Пример 2. Объединение 3-х множеств

Программа:
множество или а А;Б;В В;Г;Д Е
>[а]
Результат:
А;Б;В;Г;Д;Е 

Пример 3. Разность множеств

Программа:
множество разность а А;Б;В;Г;Д А;Б Г
>[а]
Результат:
В;Д

Пример 4. Исключающее ИЛИ множеств

Программа:
множество либо а А;Б;В А;Б;Г;Д
>[а]
Результат:
В;Г;Д

Пример 5. Проверка равенства множеств

Программа:
множество == а А;Б Б;Б;А;А
>[а]
Результат:
1

Пример 6. Проверка неравенства множеств

Программа:
множество != а А;Б Б;Б;А;А
>[а]
Результат:
0

Раздел 4. Время


1) Формат даты: ДД.ММ.ГГГГ

Пример 1. Вычисление даты через заданное количество дней от заданной

Программа:
* Можно задавать и отрицательное число в качестве последнего аргумента
время дата а 01.01.2012 7 
>[а]
Результат:
08.01.2012 

Пример 2. Определение количествв дней между заданными датами

Программа:
время разностьДат а 20.01.2012 15.01.2012
>[а]
Результат:
5

Пример 3. Проверка, что значение является датой

Программа:
время являетсяДатой а 20.01.2012
>[а]
Результат:
1

Пример 4. Проверка, что значение НЕ является датой

Программа:
время являетсяДатой а 20012012
>[а]
Результат:
0

Пример 5. Определение дня недели по дате

Программа:
время деньНедели а 07.01.2012
>[а]
Результат:
Суббота

Раздел 5. Работа со стеком


1) Стек реализует механизм обработки элементов в обратном порядке "первым поступил-последним обработан".
2) Количество элементов в стеке содержится в системной переменной $КоличествоВСтеке.
3) Значение элемента, находящегося на вершине стека, можно получить через системную переменную $ВершинаСтека.
Если стек пуст, то значение переменной $ВершинаСтека будет <???>.

Пример 1. Очистка стека

Программа:
стек поместить 1 2 3
стек очистить
>Количество элементов в стеке = [$КоличествоВСтеке]
Результат:
Количество элементов в стеке = 0

Пример 2. Помещение данных в стек

Программа:
стек поместить А Б В Г Д
>Количество элементов в стеке = [$КоличествоВСтеке], на вершине стека: [$ВершинаСтека]
Результат:
Количество элементов в стеке = 5, на вершине стека: Д

Пример 3. Извлечение данных из стека

Программа:
стек поместить 1 2 3 4 5
стек извлечь переменная1 переменная2 переменная3
>[переменная1] [переменная2] [переменная3]
Результат:
5 4 3

Пример 4. Печать данных из стека

Программа:
стек поместить 1 2 3 4 5
стек печать
Результат:
5
4
3
2
1

Раздел 6. Обработка списков


1) Элементы списка разделяются символом ;.
2) Пустой список обозначается как {}.
3) Нумерация элементов в списке начинается с 1.
4) Если попытаться извлечь из списка элемент из позиции за пределами списка, то будет возвращено значение <???>.
5) Списки могут быть вложенными. Вложенный список заключается в {}.
Например: 1;2;{А;Б};4;5, А;Б - вложенный список.
6) К списку могут быть применены любые команды обратки строк. При этом список интерепретируется как строка.
Например, команда строка строчные РЕЗУЛЬТАТ а;б;в, даст результат А;Б;В.
7) Если элементы списка содержат пробелы, то список нужно заключить в ''.
Например: 'а 1;б 2;в 3'.
8) Если терминальные элементы списка содержат символы ;{}, то их необходимо заменить на соответсвующие #-коды.
Например, список из двух элементов А;Б и {В} должен быть записан как А#0059Б;#0123В#0125.

Пример 1. Определение длины (размера, количества элементов) списка

Программа:
список размер а 1;2;3;{4;5;6}
>[а]
Результат:
4

Пример 2. Сцепление (конкатенация) списков 

Программа:
список сцепить а 1;2 3;{4;5} {6;7};8 
список размер размер_а [а]
>Результирующий список = "[а]", а его размер = [размер_а] элементов.
Результат:
Результирующий список = "1;2;3;{4;5};{6;7};8", а его размер = 6 элементов.

Пример 3. Добавление элемента в конец списка

Программа:
список присоединить а 1;2;3 4;5
>[а]
* Обратить внимание: так как добавляемый элемент является списком, то он заключается в {} в результирующем списке.
Результат:
1;2;3;{4;5}

Пример 4. Выделение "головы" (первого элемента) списка

Программа:
список голова а 5;4;3;2;1
>[а]
Результат:
5

Пример 5. Выделение "хвоста" спискаВыделение "хвоста" списка

Программа:
список хвост а 5;4;3;2;1
>[а]
Результат:
4;3;2;1

Пример 6. Выделение последнего элемента списка 

Программа:
список последний а 5;4;3;2;1
>[а]
Результат:
1

Пример 7. Извлечение элемента списка по номеру

Программа:
список взять а 5;4;3;2;1 2
>[а]
Результат:
4

Пример 8. Установка значения элемента списка

Программа:
список присвоить а 5;4;3;2;1 2 'новый 2-ой элемент'
>[а]
Результат:
5;новый 2-ой элемент;3;2;1

Пример 9. Выдление подсписка из списка

Программа:
список копировать а А;Б;В;Г;Д 2 3
>[а]
Результат:
Б;В;Г 

Пример 10. Вставка списка в исходный список

Программа:
список вставить а А;Б;В;Г;Д 3 э;ю;я
>[а]
Результат:
А;Б;э;ю;я;В;Г;Д

Пример 11. Удаление подсписка в исходном списке

Программа:
список удалить а А;Б;В;Г;Д 2 3
>[а]
Результат:
А;Д 

Пример 12. Замена всех вхождений элемента в список

Программа:
список заменитьЭлементы а А;а;Б;б;В;в;А;а А ООО
>[а]
Результат:
ООО;а;Б;б;В;в;ООО;а 

Пример 13. Удаление всех вхождений элемента в список

Программа:
список удалитьЭлементы а А;а;Б;б;В;в;А;а А
список удалитьЭлементы а [а] Б
>[а]
Результат:
а;б;В;в;а 

Пример 14. Преобразование списка к множеству

Программа:
список кМножеству а В;В;А;Б;В;А;А;Б
>[а]
Результат:
А;Б;В 

Пример 15. Формирование списка терминалов

Программа:
список терминальные а А;{А;Б;{В;В;Г}};Д;А
>[а]
Результат:
А;А;Б;В;В;Г;Д;А

Пример 16. Формирование множества элеменов, встречающихся в списке более одного раза

Программа:
список повторяющиеся а Е;А;А;Б;В;Г;Д;А;Е
>[а]
Результат:
А;Е 

Пример 17. Формирование списка из декартова произведения строк списков

Программа:
список произведение а 3;2;1 А;Б
>[а]
Результат:
3А;3Б;2А;2Б;1А;1Б

Пример 18. Попарное сцепление строк списков

Программа:
список сцепитьПары а 3;2;1 А;Б;В;Г
>[а]
Результат:
3А;2Б;1В 

Пример 19. Генерация множества целых чисел из заданного интервала

Программа:
список сгенерить а 1 12
>[а]
Результат:
1;2;3;4;5;6;7;8;9;10;11;12

Пример 20. Случайный выбор элемента из списка

Программа:
список выбратьСлучайный а 1;2;3;4;5;6;7;8;9;10
>Выбранный случайным образом элемент = [а]
Результат:
Выбранный случайным образом элемент = 7

Пример 21. Инвертирование списка

Программа:
список инвертировать а 1;2;3;4;5
>[а]
Результат:
5;4;3;2;1

Пример 22. Сортировка списка строк по алфавиту

Программа:
список упорядочить а яблоко;груша;апельсин;слива;ананас
>[а]
Результат:
ананас;апельсин;груша;слива;яблоко 

Пример 23. Сортировка списка чисел по возрастанию

Программа:
список упорядочитьЧисла а 1;-1;3;3,5;3,3;-3
>[а]
Результат:
-3;-1;1;3;3,3;3,5 

Пример 24. Сортировка списка дат по возрастанию

Программа:
список упорядочитьДаты а 11.1.2010;20/12/2009;1/1/2010
>[а]
Результат:
20/12/2009;1/1/2010;11.1.2010

Пример 25. Сортировка списка списков по заданной схеме.

Программа:
* Сначала упорядочивает по вторым элементам вложенных списков, затем по первым
список упорядочитьСписки а {Б;3};{А;11};{А;3};{Б;1};{Б;2} 1S;2N
>[а]
Результат:
{А;3};{А;11};{Б;1};{Б;2};{Б;3}

Пример 26. Сопоставление списка с шаблоном и присвоение переменным из шаблона значений

Программа:
список сопоставить успешно 1;2;{3;4};5;6 "1;[?второй_элемент];[?третий_элемент];5;[?]"
память печать
Результат:
второй_элемент="2"
третий_элемент="3;4"
успешно="1"

Пример 27. Генерация списка, состоящего из повторяющихся элементов

Программа:
строка реплицировать а столбец_ 5
>[а]
Результат:
столбец;столбец;столбец;столбец;столбец

Пример 28. Поиск позиции первого вхождения элемента в список

Программа:
список найти а а;А;б;Б А
>[а]
Результат:
2

Пример 29. Отображение элемента первого списка на второй список

Программа:
список отобразить а 3 1;2;3;4;5;6;7 понедельник;вторник;среда;четверг;пятница;суббота;воскресение "в неделе только 7 дней"
>[а]
Результат:
среда

Раздел 7. Работа с файлами


1) По умолчанию, команды > и печать выводят данные в окно результата интерпретатора КОНЦЕПТ.
Для перенаправления вывода данных в файл предназначены команды файл писать и файл добавить.
2) После окончания работы программы, файлы закрываются автоматически.
3) В каждый момент времени работы программы могут быть доступны только один файл для чтения и один файл для записи.
Т.е. нельзя одновременно читать данные из нескольких файлов или записывать данные параллельно в несколько файлов.
4) При задании имени файла необходимо указывать полный путь к нему.
Для этого можно использовать встроенные переменные [$ДомашнийКаталог] (путь, откуда запущен интерпретатор, т.е. файл concept.exe) и
[$ТекущийКаталог] (путь, откуда запущена на выполнение программа КОНЦЕПТ).

Пример 1. Подсчет количества строк в тексовом файле

Программа:
* Входной файл 1.txt содержит пять строк (по одному слову в каждой строке файла): яблоко груша апельсин помидор огурец
файл читать "[$ТекущийКаталог]1.txt"
присвоить КОЛИЧЕСТВО_СТРОК 0
файл читатьСтроку СТРОКА
пока [$строкаПрочитана]
  увеличить КОЛИЧЕСТВО_СТРОК
  файл читатьСтроку СТРОКА
цикл
показать сообщение [КОЛИЧЕСТВО_СТРОК]
Результат:
5

Пример 2. Преобразование всех строк входного файла к верхнему регистру

Программа:
* Входной файл 1.txt содержит пять строк (по одному слову в каждой строке файла): яблоко груша апельсин помидор огурец
файл читать "[$ТекущийКаталог]1.txt"
файл писать "[$ТекущийКаталог]2.txt"
файл читатьСтроку СТРОКА
пока [$строкаПрочитана]
  строка прописные СТРОКА [СТРОКА]
  >[СТРОКА]
  файл читатьСтроку СТРОКА
цикл
файл конецЧтения
файл конецЗаписи
показать текст "[$ТекущийКаталог]2.txt"
Результат:
ЯБЛОКО
ГРУША
АПЕЛЬСИН
ПОМИДОР
ОГУРЕЦ

Пример 3. Добавление строк в существующий файл

Программа:
* Исходный файл 1.txt содержит пять строк (по одному слову в каждой строке файла): яблоко груша апельсин помидор огурец
файл присоединить "[$ТекущийКаталог]1.txt"
>АРБУЗ
>ДЫНЯ
файл конецЗаписи
показать текст "[$ТекущийКаталог]1.txt"
Результат:
яблоко
груша
апельсин
помидор
огурец
АРБУЗ
ДЫНЯ

Пример 4. Вставка строк файла в выходной поток

Программа:
* Файл 1.txt содержит пять строк (по одному слову в каждой строке файла): яблоко груша апельсин помидор огурец
>АРБУЗ
файл вставить "[$ТекущийКаталог]1.txt"
>ДЫНЯ
Результат:
АРБУЗ
яблоко
груша
апельсин
помидор
огурец
ДЫНЯ

Пример 5.Переименование файла (создание копии файла с другим имененм, затем удаление исходного файла)

Программа:
если (файл существует $результат "[$ТекущийКаталог]1.txt" )
  файл переименовать "[$ТекущийКаталог]1.txt" "[$ТекущийКаталог]2.txt"
  файл удалить "[$ТекущийКаталог]1.txt"
  показать сообщение "Файл переименован."
иначе
  показать сообщение "Файл не найден."
конец
Результат:
Файл переименован.

Раздел 8. Рабочая память


1) Именем переменной может являться любая последовательность символов (строка), кроме пустой.
2) При указнии имени переменной в качестве параметра команды,
если имя переменной содержит пробелы или начинается с [(,
то его нужно заключить в ''.
3) Переменная создается в рабочей памяти, если в момент
присвоения она еще не существует.
4) Для получения значения переменной, необходимо указать ее имя в квадратных скобках [].
5) Если в момент обращения к значению переменной эта переменная не существует,
то интерпретатор запросит значение переменной в диалоге у пользователя.
6) Значение - указывает на неопределенное значение переменной.
7) Элементы структурной переменной разделяются ;.

Пример 1. Присвоение значений переменным рабочей памяти

Программа:
присвоить а 100 б 'Добрый день!'
память печать
Результат:
а="100"
б="Добрый день!"

Пример 2. Создание и инициализация элеменов массива

Программа:
для 1;2;3;4;5
  присвоить "а([$ОбъектЦикла])" [$ОбъектЦикла]  
следующий
память печать
Результат:
а(1)="1"
а(2)="2"
а(3)="3"
а(4)="4"
а(5)="5"

Пример 3. Создание и инициализация структурной переменной

Программа:
для коорд_х1;коорд_у1;коорд_х2;коорд_у2
  присвоить "прямоугольник;[$ОбъектЦикла]" 0  
следующий
память печать
Результат:
прямоугольник;коорд_у1="0"
прямоугольник;коорд_у2="0"
прямоугольник;коорд_х1="0"
прямоугольник;коорд_х2="0"

Пример 4. Очистка рабочей памяти (удаление всех переменных)

Программа:
присвоить а 100 б 'Добрый день!'
память очистить 
* Здесь уже не существует ни одной переменный, в т.ч. переменных 'а' и 'б'.
присвоить новая_перем '23.12.2012'
память печать
Результат:
новая_перем="23.12.2012"

Пример 5. Выборочное удаление переменных. Для струткурной переменной удалаются все ее переменные-элементы.

Программа:
присвоить структ;поле1 1 структ;поле2 2 другая_структ;поле1 'а' другая_структ;поле2 'б'
присвоить пер_а 1 пер_б 2
память очистить структ пер_б
память печать
Результат:
другая_структ;поле1="а"
другая_структ;поле2="б"
пер_а="1"

Пример 6. Локальные переменные, т.е. определенные и 'живущие' внутри функции. 

Программа:
присвоить а 1
>До вызова функции а=[а]
ТЕСТ
>После вызова функции а=[а]
функция ТЕСТ
  память локальный а
  присвоить а 'это значение локальной переменной'
  >Внутри функции ТЕСТ а='[а]'
возврат

Результат:
До вызова функции а=1
Внутри функции ТЕСТ а='это значение локальной переменной'
После вызова функции а=1

Пример 7. Проверка существования переменной рабочей памяти

Программа:
присвоить а 100 б 'Добрый день!'
память очистить б
память существует сущ_а а
память существует сущ_б б
>переменная 'а' существует = [сущ_а]
>переменная 'б' существует = [сущ_б]
Результат:
переменная 'а' существует = 1
переменная 'б' существует = 0

Пример 8. Копирование переменных, в том числе структурных

Программа:
присвоить чел;имя Сергей чел;возраст 25 чел;рост 182 чел;вес 70 транспорт самолет
память копировать нов_чел чел
память копировать 'вид транспорта' транспорт
присвоить нов_чел;имя Александр
память печать
Результат:
вид транспорта="самолет"
нов_чел;вес="70"
нов_чел;возраст="25"
нов_чел;имя="Александр"
нов_чел;рост="182"
транспорт="самолет"
чел;вес="70"
чел;возраст="25"
чел;имя="Сергей"
чел;рост="182"

Пример 9. Формирование списка полей (имен атрибутов) структурной переменной

Программа:
присвоить чел;имя Сергей чел;возраст 25 чел;рост 182 чел;вес 70
память поля поля_чел чел
>[поля_чел]
Результат:
вес;возраст;имя;рост 

Пример 10. Создание из структурной переменной понятия в БФ

Программа:
присвоить чел;имя Сергей чел;возраст 25 чел;рост 182 чел;вес 70
память добавитьПонятие чел человек_Сергей
данные показать
Результат:
p;человек_Сергей;вес;70
p;человек_Сергей;возраст;25
p;человек_Сергей;имя;Сергей
p;человек_Сергей;рост;182

Пример 11. Обновление из структурной переменной понятия в БФ

Программа:
факт добавить p;человек_Сергей;вес;70 p;человек_Сергей;возраст;25 \
  p;человек_Сергей;имя;Сергей p;человек_Сергей;рост;182
понятие свойства чел человек_Сергей
присвоить чел;вес 72 'чел;место жительства' Москва
память обновитьПонятие чел человек_Сергей
данные показать
* Обратить внимание: факт со старым весом помечен как удаленный, а факт про место жительства добавлен 
Результат:
-p;человек_Сергей;вес;70
p;человек_Сергей;возраст;25
p;человек_Сергей;имя;Сергей
p;человек_Сергей;рост;182
p;человек_Сергей;вес;72
p;человек_Сергей;место жительства;Москва

Пример 12. Установка значения по умолчанию (пустая строка) полям структурной переменной

Программа:
присвоить чел;имя Сергей чел;возраст 25 чел;рост 182 чел;вес 70
память поУмолчанию чел 'возраст;место жительства;место работы;должность'
память печать
Результат:
чел;вес="70"
чел;возраст="25"
чел;должность=""
чел;имя="Сергей"
чел;место жительства=""
чел;место работы=""
чел;рост="182"

Раздел 9. Наборы фактов (данные)


1) Одновременно может быть использовано от 1 до 10 областей данных для обработки фактов.
2) В одной области данных может осуществляться обработка фактов различной структуры.
3) По умолчанию используется область данных с номером 1.

Пример 1. Параллельное использование двух независимых баз фактов (областей данных)

Программа:
присвоить ИНФ_О_ГОРОДАХ 1 ИНФ_О_СТРАНАХ 2
данные использовать [ИНФ_О_ГОРОДАХ]
факт добавить i;Москва;город i;Париж;город i;Лондон;город
данные использовать [ИНФ_О_СТРАНАХ]
факт добавить i;Росия;страна i;Франция;страна i;Великобритания;страна
ввести меню1 выбор_пользователя 'Просмотр данных:' 'Показать города;Показать страны'
выбрать [выбор_пользователя]
  вариант 'Показать города'
    данные использовать [ИНФ_О_ГОРОДАХ]
    показать данные
  вариант 'Показать страны'
    данные использовать [ИНФ_О_СТРАНАХ]
    показать данные
конецВыбора
Результат:
Если выбрать 'Показать города', то будет показано:
i;Москва;город
i;Париж;город
i;Лондон;город
Если выбрать 'Показать страны', то будет показано:
i;Росия;страна
i;Франция;страна
i;Великобритания;страна

Пример 2. Очистка базы фактов

Программа:
факт добавить i;Москва;город i;Париж;город i;Лондон;город
данные новый "[$ТекущийКаталог]факты1.txt"
факт добавить i;яблоко;фрукт i;груша;фрукт
данные показать
Результат:
i;яблоко;фрукт
i;груша;фрукт

Пример 3. Пример работы с базами фактов(областями данных)

Программа:
данные использовать 2
данные загрузить "[$ТекущийКаталог]факты1.txt"
данные добавить "[$ТекущийКаталог]факты2.txt"
данные добавить "[$ТекущийКаталог]факты3.txt"
данные сжать
данные индексировать
данные сохранить "[$ТекущийКаталог]все_факты.txt"
Результат:
Из трех баз фактов создается одна и сохраняется на диск.
При этом удаляются все помеченные на удаление факты.

Раздел 10. Факты


1) Обработка фактов осуществляется в областях данных.
2) Нумерация фактов начинается с 1.
3) Факт является списком и строкой, то есть к факту применимы все команды для обработки списков и строк.

Пример 1. Добавление, изменение и поиск фактов

Программа:
* Добавление новых фактов
факт добавить \
  r;столица;Париж;Франция \
  r;столица;Москва;Русь \
  r;столица;Киев;Украина
факт взять 2ой_факт 2
>Факт №2 до изменения = [2ой_факт]
* Изменение факта с определенным номером
факт присвоить 2 r;столица;Москва;Россия
факт взять 2ой_факт 2
>Факт №2 после изменения = [2ой_факт]
* Поиск (определение) номера факта
факт найти номер_факта_столица_Италии r;столица;Рим;Италия
>Номер факта со столицей Италии до его добавления = [номер_факта_столица_Италии] (факт отсутствует)
факт добавить r;столица;Рим;Италия
факт найти номер_факта_столица_Италии r;столица;Рим;Италия
>Номер факта со столицей Италии после его добавления = [номер_факта_столица_Италии] 

Результат:
Факт №2 до изменения = r;столица;Москва;Русь
Факт №2 после изменения = r;столица;Москва;Россия
Номер факта со столицей Италии до его добавления = 0 (факт отсутствует)
Номер факта со столицей Италии после его добавления = 4 

Пример 2. Проверка существования и удаление фактов

Программа:
факт добавить \
  r;столица;Париж;Франция \
  r;столица;Москва;Русь \
  r;столица;Киев;Украина
факт существует наличие_факта  2
>Наличие факта после его добавления = [наличие_факта] (истина)
факт удалить r;столица;Москва;Русь
факт существует наличие_факта 2
>Наличие факта после его удаления = [наличие_факта] (ложь)
данные показать

Результат:
Наличие факта после его добавления = 1 (истина)
Наличие факта после его удаления = 0 (ложь)

Пример 3. Поиск (выборка) фактов, включая поиск по образцу 

Программа:
факт добавить \
  r;столица;Москва;Россия r;город;Санкт-Петербург;Россия r;город;Владивосток;Россия \
  r;столица;Париж;Франция r;город;Леон;Франция r;город;Марсель;Франция \
  r;столица;Киев;Украина r;город;Ялта;Украина
факт понятие факты_с_понятием_Франция Франция
факт подстрока факты_с_буквой_у у 
факт подстрокаВЛюбомРегистре факты_с_буквой_У_или_у у
факт сопоставить факты_только_столицы "r;столица;[?];[?]"
факт сопоставитьМножество факты_все_города_и_столицы "r;[?];[?название_города];[?]"
факт сопоставитьМножество факты_все_страны "r;[?];[?];[?название_страны]"
факт сопоставитьСПервым первый_факт_для_Франции "r;[?];[?];Франция"
память печать 

Результат:
первый_факт_для_Франции="4"
факты_все_города_и_столицы="Владивосток;Киев;Леон;Марсель;Москва;Париж;Санкт-Петербург;Ялта"
факты_все_страны="Россия;Украина;Франция"
факты_с_буквой_у="2"
факты_с_буквой_У_или_у="2;7;8"
факты_с_понятием_Франция="4;5;6"
факты_только_столицы="1;4;7"

Пример 4. Сохранение и последующее восстановление значений переменных с использованием базы фактов

Программа:
присвоить площадь_комнат {20;15;10}
факт установитьДанные площадь_комнат_сохраненная [площадь_комнат]
* Удаление всех переменных рабочей памяти
память очистить
* Восстановление значения переменной из базы фактов
факт получитьДанные площадь_комнат площадь_комнат_сохраненная
память печать 

Результат:
площадь_комнат="{20;15;10}"

Пример 5. Использование схемы отношения 

Программа:
факт добавить s;город;название_города;название_страны \
  r;город;Москва;Россия r;город;Санкт-Петербург;Россия r;город;Владивосток;Россия 
факт получитьСхему схема_описания_городов город
факт получитьОтношение все_факты_для_отношения_город город
факт домен все_названия_городов город название_города
факт домен все_названия_стран город название_страны
факт получитьАргумент название_города_для_факта_номер_3 3 название_города
память печать
Результат:
все_названия_городов="Владивосток;Москва;Санкт-Петербург"
все_названия_стран="Россия"
все_факты_для_отношения_город="2;3;4"
название_города_для_факта_номер_3="Санкт-Петербург"
схема_описания_городов="s;город;название_города;название_страны"

Пример 6. Преобразование факта к параметрам команды 

Программа:
факт добавить r;графика;круг;10;10;200;200
факт взять факт 1
факт дляВызова параметры [факт]
выполнить "рисовать [параметры]"
>Параметры команды: [параметры]

Результат:
Будет нарисован круг в заданных координатах.
Параметры команды:  круг 10 10 200 200

Раздел 11. Понятия 


Пример 1. Представление иерархии и свойств понятий 

Программа:
факт добавить \
  'i;пассажирское ТС;транспортное средство (ТС)' \
  'p;пассажирское ТС;назначение;перевозка людей' \
  'i;грузовое ТС;транспортное средство (ТС)' \
  'p;грузовое ТС;назначение;перевозка грузов' \
  'i;автобус;пассажирское ТС' \
  'p;автобус;посадочных мест;более 15' \
  'i;легковой автомобиль;пассажирское ТС' \
  'p;легковой автомобиль;посадочных мест;до 5' \
  'p;легковой автомобиль;количество колес;4' \
  'p;легковой автомобиль;масса;менее 3,5 тонн' \
  'i;грузовик;грузовое ТС' \
  'i;ВАЗ-2109;легковой автомобиль' \
  'i;ВАЗ-2109;отечественного производства' \
  'p;ВАЗ-2109;привод;передний' \
  'p;отечественного производства;страна производитель;Россия' \
  'i;Мерседес Е220;легковой автомобиль' \
  'p;Мерседес Е220;страна производитель;Германия' \
  'i;некоторый_ВАЗ;ВАЗ-2109' \
  'i;Иванов;человек' \
  'p;Иванов;владеет автомобилем;некоторый_ВАЗ'
понятие под '1.виды_транспортных_средств' 'транспортное средство (ТС)'
понятие всеПод '2.транспортные_средства_всевозможные' 'транспортное средство (ТС)'
понятие всеПод '3.легковые_автомобили_всевозможные' 'легковой автомобиль'
понятие над '4.надклассы_ВАЗ-2109_непосредственные' 'ВАЗ-2109'
понятие всеНад '5.надклассы_ВАЗ-2109_все' 'ВАЗ-2109'
понятие свойстваВСписок '6.свойства_ВАЗ-2109_непосредственные' 'ВАЗ-2109'
понятие всеСвойстваВСписок '7.свойства_ВАЗ-2109_все' 'ВАЗ-2109'
понятие контекст '8.контекст_понятия_ВАЗ-2109' 'ВАЗ-2109'
память печать

Результат:
1.виды_транспортных_средств="грузовое ТС;пассажирское ТС"
2.транспортные_средства_всевозможные="автобус;ВАЗ-2109;грузовик;грузовое ТС;легковой автомобиль;Мерседес Е220;некоторый_ВАЗ;пассажирское ТС"
3.легковые_автомобили_всевозможные="ВАЗ-2109;Мерседес Е220;некоторый_ВАЗ"
4.надклассы_ВАЗ-2109_непосредственные="легковой автомобиль;отечественного производства"
5.надклассы_ВАЗ-2109_все="легковой автомобиль;отечественного производства;пассажирское ТС;транспортное средство (ТС)"
6.свойства_ВАЗ-2109_непосредственные="{привод;передний}"
7.свойства_ВАЗ-2109_все="{количество колес;4};{масса;менее 3,5 тонн};{назначение;перевозка людей};{посадочных мест;до 5};{привод;передний};{страна производитель;Россия}"
8.контекст_понятия_ВАЗ-2109="легковой автомобиль;некоторый_ВАЗ;отечественного производства;передний;привод"

Пример 2. Чтение свойств понятия в структурную переменную рабочей памяти

Программа:
факт добавить \
  'i;пассажирское ТС;транспортное средство (ТС)' \
  'p;пассажирское ТС;назначение;перевозка людей' \
  'p;грузовое ТС;назначение;перевозка грузов' \
  'i;легковой автомобиль;пассажирское ТС' \
  'p;легковой автомобиль;посадочных мест;до 5' \
  'p;легковой автомобиль;количество колес;4' \
  'p;легковой автомобиль;масса;менее 3,5 тонн' \
  'i;ВАЗ-2109;легковой автомобиль' \
  'i;ВАЗ-2109;отечественного производства' \
  'p;ВАЗ-2109;привод;передний' \
  'p;отечественного производства;страна производитель;Россия'
понятие свойства 'непосредственные_свойства_ВАЗ-2109' 'ВАЗ-2109'
понятие всеСвойства 'все_свойства_ВАЗ-2109' 'ВАЗ-2109'
память печать

Результат:
все_свойства_ВАЗ-2109;количество колес="4"
все_свойства_ВАЗ-2109;масса="менее 3,5 тонн"
все_свойства_ВАЗ-2109;назначение="перевозка людей"
все_свойства_ВАЗ-2109;посадочных мест="до 5"
все_свойства_ВАЗ-2109;привод="передний"
все_свойства_ВАЗ-2109;страна производитель="Россия"
непосредственные_свойства_ВАЗ-2109;привод="передний"

Пример 3. Действия над понятиями

Программа:
факт добавить \
  'p;легковой автомобиль;посадочных мест;до 5' \
  'p;легковой автомобиль;количество колес;4' \
  'p;легковой автомобиль;масса;менее 3,5 тонн' \
  'i;ВАЗ-2109;легковой автомобиль' \
  'i;ВАЗ-2109;отечественного производства' \
  'p;ВАЗ-2109;привод;передний' \
  'p;отечественного производства;страна производитель;Россия'
понятие переименовать ВАЗ-2109 автомобиль
понятие копировать автомобиль ВАЗ-2108
понятие удалить 'автомобиль'
понятие установитьСвойство ВАЗ-2108 'количество дверей' 2
понятие всеСвойства ВАЗ-2108 ВАЗ-2108
память печать

Результат:
ВАЗ-2108;количество дверей="2"
ВАЗ-2108;количество колес="4"
ВАЗ-2108;масса="менее 3,5 тонн"
ВАЗ-2108;посадочных мест="до 5"
ВАЗ-2108;привод="передний"
ВАЗ-2108;страна производитель="Россия"

Пример 4. 

Программа:

Результат:

Пример 5. 

Программа:

Результат:

Раздел 12. Графика 


Пример 1. Круг в квадрате 

Программа:
присвоить черный 1 малиновый 2 зеленый 3 коричневый 4 темно-синий 5 фиолетовый 6 бирюзовый 7 темно-серый 8
присвоить светло-серый 9 красный 10 салатовый 11 желтый 12 синий 13 маджента 14 циан 15 белый 16
присвоить $ЦветКисти [красный]
рисовать прямоугольник 100 100 400 400
присвоить $ЦветКисти [синий]
рисовать круг 100 100 400 400
присвоить $ЦветТекста [желтый]
рисовать текстВПрямоугольнике 100 100 400 400 "Круг в квадрате"
Результат:
Будет нарисован синий круг, вписанный в красный квадрат.

Пример 2. Елка

Программа:
присвоить черный 1 зеленый 3 
присвоить $ЦветКисти [зеленый]
рисовать треугольник 300 100 250 200 350 200
рисовать треугольник 300 200 250 300 350 300
рисовать треугольник 300 300 250 400 350 400
присвоить $ЦветКисти [черный]
рисовать прямоугольник 290 400 310 500
Результат:
Будет нарисована елка. 

Пример 3. Желтый круг на синем фоне 

Программа:
присвоить синий 5 желтый 12 
рисовать прямоугольник 100 100 300 300
рисовать новый 
присвоить $ЦветКисти [синий]
рисовать очистить
присвоить $ЦветКисти [желтый]
рисовать круг 100 100 300 300
показать сообщение 'Это желтый круг на синем фоне.'
рисовать конец
Результат:
Будет нарисован желтый круг на синем фоне.

Пример 4. График функции y=x

Программа:
присвоить синий 13
рисовать текст 20 20 'График y=x'
рисовать линия 20 300 580 300
рисовать линия 300 20 300 580
рисовать текст 320 20 y
рисовать текст 600 290 x
рисовать присвоить 300 300
присвоить $ЦветЛинии [синий]
для (список сгенерить $результат 0 280 )
  рисовать точка [$ОбъектЦикла] "-[$ОбъектЦикла]"
следующий
Результат:
Будет нарисован график.

Пример 5. Рисование многоугольника

Программа:
рисовать многоугольник 0 200 100 0 300 0 400 200 
рисовать текстВПрямоугольнике 0 0 400 200 'это трапеция'
Результат:
Будет нарисована трапеция с надписью внутри.

Пример 6. Дуги, хорды, сектора

Программа:
присвоить синий 13
присвоить $ТолщинаЛинии 3 $ЦветЛинии [синий]
рисовать присвоить 10 30
рисовать дуга 0 0 200 200 200 0 0 0
рисовать текстВПрямоугольнике 0 0 200 100 дуга
рисовать присвоить 220 30
рисовать хорда 0 0 200 200 200 0 0 0
рисовать текстВПрямоугольнике 0 0 200 100 хорда
рисовать присвоить 430 30
рисовать сектор 0 0 200 200 200 0 0 0
рисовать текстВПрямоугольнике 0 0 200 100 сектор
Результат:
Будут нарисованы дуга, хорда и сектор.

Пример 7. Использование сенсоров

Программа:
функция _$ВЫБОР
  показать сообщение "Выбран: [_$ВЫБОР;ОБЪЕКТ]"
возврат

рисовать очиститьСенсоры 

рисовать прямоугольник 0 0 400 30
рисовать текстВПрямоугольнике 0 0 400 30 'Вариант 1' 
рисовать добавитьСенсор 0 0 400 30 'Вариант 1' 

рисовать прямоугольник 0 31 400 60
рисовать текстВПрямоугольнике 0 31 400 60 'Вариант 2 (не будет реагировать)' 
рисовать добавитьСенсор 0 31 400 60 'Вариант 2' 

рисовать прямоугольник 0 61 400 90
рисовать текстВПрямоугольнике 0 61 400 90 'Вариант 3' 
рисовать добавитьСенсор 0 61 400 90 'Вариант 3' 

* Удаление сенсора для 2-го варианта
рисовать удалитьСенсор 'Вариант 2' 

Результат:
Будет изображено меню из 3-х пунктов, реагирующих на нажатие мыши.

Пример 8. Округлый прямоугольник.

Программа:
рисовать округлыйПрямоугольник 100 100 400 300 40 40
рисовать текстВПрямоугольнике 100 100 400 300 'это округлый прямоугольник'
Результат:
Будет нарисован прямоугольник с закрюгленными углами и с надписью внутри.

Раздел 13. Показ информации 


Пример 1. Показ строкового сообщения

Программа:
показать сообщение 'Сегодня чудесный день!'
Результат:
На экране будет показано стандартное диалоговое окно с соответствующим сообщением. 

Пример 2. Показ содержимого базы фактов

Программа:
факт добавить \
  "i;Москва;город" "p;Москва;население в млн.чел.;10"  \
  "i;Санкт-Петербург;город" "p;Санкт-Петербург;население в млн.чел.;4,5"  \
  "i;Омск;город" "p;Омск;население в млн.чел.;1"  
показать данные
Результат:
i;Москва;город
p;Москва;население в млн.чел.;10
i;Санкт-Петербург;город
p;Санкт-Петербург;население в млн.чел.;4,5
i;Омск;город
p;Омск;население в млн.чел.;1

Пример 3. Показ индекса базы фактов

Программа:
факт добавить \
  "i;Москва;город" "p;Москва;население в млн.чел.;10"  \
  "i;Санкт-Петербург;город" "p;Санкт-Петербург;население в млн.чел.;4,5"  \
  "i;Омск;город" "p;Омск;население в млн.чел.;1"  
показать индексДанных
Результат:
1;6
10;2
4,5;4
город;1;3;5
Москва;1;2
население в млн.чел.;2;4;6
Омск;5;6
Санкт-Петербург;3;4

Пример 4. Показ текстового файла

Программа:
показать текст "[$ТекущийКаталог]1.txt"
Результат:
В диалоговом окне будет показано содержимое текстового файла "1.txt".

Пример 5. Показ страницы HTML

Программа:
показать html "[$ТекущийКаталог]1.htm"
Результат:
Будет запущено окно WEB браузера и в нем отобразится HTML страница из файла "1.htm"

Раздел 14. Ввод информации 


Пример 1. 

Программа:

Результат:

Раздел 15. Импорт (загрузка из внешних источников) данных 


Пример 1. 

Программа:

Результат:

Раздел 16. Оболочка 


1) В каталог с concept.exe можно поместить файл _ConceptStart_.txt
с программой КОНЦЕПТ, которая должна выполняться сразу же после запуска интерпретатора.
Это позволяет, например, настроить пункт меню Выполнить при помощи команды оболочка меню1.

Пример 1. Немедленное завершение программы concept.exe

Программа:
показать сообщение 'Нажмите кнопку для завершения программы concept.exe'
оболочка стоп
Результат:
Программа concept.exe будет немедленно завершена.

Пример 2. Добавление пользовательского пункта меню в concept.exe

Программа:
оболочка меню1 "Запустить мою программу КОНЦЕПТ" "[$ТекущийКаталог]Приветствие.txt"
Результат:
В главном меню concept.exe появтся пункт меню "Выполнить=>Запустить мою программу КОНЦЕПТ".

Пример 3. Автоматическое выполнение программы КОНЦЕПТ через заданный интервал времени

Программа:
* Содержимое файла 'Покажи время.txt'
>Сейчас: [$время]
оболочка запускатьПоТаймеру "[$ТекущийКаталог]Покажи время.txt" 10
Результат:
После запуска программы в окне результата каждые 10 секунд будет обновляться текущее время.

Пример 4. Определение синонимов для ключевых слов

Программа:
оболочка синоним рисовать нарисуй
оболочка синоним прямоугольник рамку
нарисуй рамку 10 10 200 100
* равнозначно: рисовать прямоугольник 10 10 200 100
Результат:
Будет нарисован прямоугольник.