Лабораторная работа №5, 7-й вариант, 7-й семестр
Состав работы
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Работа представляет собой rar архив с файлами (распаковать онлайн), которые открываются в программах:
- Microsoft Word
Описание
1. Задание.
1. Разработать и реализовать класс «Управление калькулятором р-ичных чисел» тип TCtrl, используя класс
• Object Pascal,
• С++.
На Унифицированном языке моделирования UML (Unified Modeling Language) наш класс можно описатьть следующим образом:
УправлениеКалькуляторомР-ичныхЧисел (тип TCtrl)
состояниеКалькулятора: TCtrlState
редактор: TEditor
процессор: TProc
память: TMemory
число: TPNumber
выполнитьКомандуКалькулятора(a: Integer; var b, MState: String): String
выполнитьКомандуРедактора(a: Integer): String
выполнитьОперацию(a: Integer): String
выполнитьФункцию(a: Integer): String
вычислитьВыражение(a: Integer): String
установитьНачальноеСостояниеКалькулятора(a: Integer): String
выполнитьКомандуюПамяти(a: Integer; var MState: String): String
очиститьПамять(var MState: String): String
записатьВПамять(var MState: String): String
считатьИзПамяти(var MState: String): String
добавитьКЧислуВПамяти(var MState: String): String
читатьПисатьСостояниеКалькулятора: TCtrlState (свойство, опирающееся на поле)
выполнитьКомандуБуфераОбмена(a: Integer; var b: String): String
записатьВБуферОбмена(a: Integer; var b: String): String
читатьИзБуферОбмена(a: Integer; var b: String): String
сменитьОснованиеСистемыСчисления(b: integer; var s:String)
конструктор
деструктор
Обязанность:
управление выполнением команд калькулятора
2. Класс должен отвечать за управление выполнением команд калькулятора. Класс должен обеспечивать:
• управление вводом и редактированием р-ичных чисел;
• управление выполнением операций, функций и выражений над р-ичными числами;
• управление выполнением операций по работе с памятью, объёмом в одно значение типа р-ичное число;
• управление работой с системным буфером обмена.
3. Протестировать каждый метод класса и класс в целом.
Рекомендации к выполнению
1. Класс TCtrl реализуйте в отдельном модуле UControl.
2. В модуле опишите перечисляемый тип TCtrlState = (cStart, cEditing, FunDone, cValDone, cExpDone, cOpChange, cError) для обозначения состояний калькулятора: cStart (Начальное), cEditing (Ввод и редактирование), cExpDone (Выражение вычислено), cOpDone (Операция выполнена), cValDone (Значение введено), cOpChange (Операция изменена),. cError (Ошибка).
3. В классе опишите следующие атрибуты:
• «редактор» - объект типа TEditior;
• «процессор» - объект типа TProc (TCalc в предыдущей редакции);
• «память» - объект типа TMemory;
• «состояние калькулятора» - тип TCtrlState;
• «число» - объект типа TPNumber (результат выполнения последней команды).
4. Набор основных операций класса определяется набором команд калькулятора, заданных пользователем. Кроме того, в классе будут определены вспомогательные операции, обеспечивающие реализацию основных операций. В классе опишите следующие операции:
• «выполнитьКомандуКалькулятора» (управляет вызовом операций по работе с объектами: редактор (поле TEditor), процессор (поле TProc), память (поле TMemory), буфер обмена (глобальный объект ClipBoard)), операция получает целое число (номер команды пользователя), строку для буфера обмена, строку со значением состояния памяти и возвращает строку для буфера обмена, строку состояния памяти и строку результата;
• «выполнитьКомандуРедактора» (управляет вызовом методов объекта редактор (тип TEditor)), операция получает целое число (номер команды пользователя и возвращает строку результата;
• «выполнитьОперацию» (управляет вызовом методов объекта процессор (поле TProc)), операция получает целое число (номер команды пользователя и возвращает строку результата;
• «выполнитьФункцию» (управляет вызовом методов объекта процессор (поле TProc)), операция получает целое число (номер команды пользователя и возвращает строку результата;
• «вычислитьОперацию» (управляет вызовом методов объекта процессор (поле TProc)), операция получает целое число (номер команды пользователя и возвращает строку результата;
• «вычислитьВыражение» (управляет вызовом методов объекта процессор (поле TProc)), операция получает целое число (номер команды пользователя и возвращает строку результата;
• «установитьНачальноеСостояниеКалькулятора» (управляет вызовом методов для перевода объекта типа TCalc в состояние Start (см. ниже), операция получает целое число (номер команды пользователя и возвращает строку результата;
• «выполнитьКомандуПамяти» (управляет вызовом методов объекта типа TCtrl, обеспечивающих выполнение команд памяти), операция получает целое число (номер команды пользователя), строку со значением состояния памяти и возвращает строку состояния памяти и строку результата;
• «очистить память» (обеспечивает выполнение команды MC памяти), операция получает строку со значением состояния памяти и возвращает строку состояния памяти и строку результата;
• «записать в память» (обеспечивает выполнение команды MS памяти), операция получает строку со значением состояния памяти и возвращает строку состояния памяти и строку результата;
• «считать из памяти» (обеспечивает выполнение команды MR памяти), операция получает строку со значением состояния памяти и возвращает строку состояния памяти и строку результата;
• «добавить к числу в памяти» (обеспечивает выполнение команды M+ памяти), операция получает строку со значением состояния памяти и возвращает строку состояния памяти и строку результата;
• «выполнитьКомандуБуфераОбмена» (управляет вызовом методов объекта типа TClipBoard, обеспечивающих выполнение команд буфера обмена), операция получает целое число (номер команды пользователя), строку со значением буфера обмена и возвращает строку со значением буфера обмена и строку результата;
• «записатьВБуферОбмена» (обеспечивает выполнение команды Вставить), операция возвращает строку со значением числа и строку результата;
• «читатьИзБуферОбмена» (обеспечивает выполнение команды Копировать), операция получает строку со значением числа и строку результата;
• «сменить основание системы счисления», операция получает новое значение основания системы счисления и возвращает строку, содержащую отображаемое число в новой системе счисления;
• «читать | писать состояние калькулятора», возвращает значение типа TCtrlState (свойство, опирающееся на поле);
• «конструктор», осуществляет создание объектов и инициализацию полей класса;
• «деструктор», осуществляет освобождение памяти, занимаемой объектом класса и объектами, указатели на которые хранятся в полях объекта: «Редактор», «Процессор», «Память», «Число».
Рекомендации к выполнению
Логика работы объекта «управление калькулятором» класс TCtrl может быть описана с помощью таблицы переходов, которая отражает изменение состояния калькулятора и результат работы объекта под действием команд пользователя. Таблица переходов строится на основе анализа прецедентов (вариантов использования), приведённых в спецификации.
Для построения таблицы переходов необходимо:
1. проанализировать спецификацию, приведённую в задании для калькулятора р-ичных чисел и выделить состояния калькулятора, например: Start (Начальное), Editing (Ввод и редактирование), ExpDone (Выражение вычислено), FunDone (Функция выполнена), ValDone (Значение введено), OpChange (смена операрации), Error (ошибка);
2. построить таблицу состояний следующего вида:
Состояние калькулятора: Start (Начальное – после запуска приложения или выполнения команды С)
Вход (команда пользователя) Результирующее состояние Действия Примечание
Команды ввода и редактирования Editing Изменение состояния редактируемой строки. (Вызов редактора).
Операция (Op) Start Введённая операция становится текущей.
Функция (Fun) Start Действия отсутствуют.
Error
Команды памяти Start Действия отсутствуют.
Команды буфера обмена Start Действия отсутствуют.
Вычислить (=) Start Действия отсутствуют.
Новое выражение (С) Start Действия отсутствуют.
Состояние калькулятора: Editing (Редактирование)
Вход (команда пользователя) Результирующее состояние Действия Примечание
Команды ввода и редактирования
Операция (Op)
Функция (Fun)
Взять из памяти (MR), (MS),(M+)
Вставить из буфера обмена, Копировать в буфер обмена
Вычислить (=)
Новое выражение (С)
Состояние калькулятора: OpChange (смена операрации)
Вход (команда пользователя) Результирующее состояние Действия Примечание
Команды ввода и редактирования
Операция (Op)
Функция (Fun)
Взять из памяти (MR)
Вставить из буфера обмена
Вычислить (=)
Новое выражение (С)
Состояние калькулятора: ExpDone (Выражение вычислено)
Вход (команда пользователя) Результирующее состояние Действия Примечание
Команды ввода и редактирования
Операция (Op)
Функция (Fun)
Взять из памяти (MR)
Копировать из буфера обмена (MR)
(MS),(MC),(M+), Вставить в буфер обмена
Вычислить (=)
Новое выражение (С)
Состояние калькулятора: FunDone (Функция вычислена),)
Вход (команда пользователя) Результирующее состояние Действия Примечание
Команды ввода и редактирования
Операция (Op)
Функция (Fun)
Взять из памяти (MR)
Копировать из буфера обмена (MR)
(MS),(MC),(M+), Вставить в буфер обмена
Вычислить (=)
Новое выражение (С)
Состояние калькулятора: ValDone (Значение введено)
Вход (команда пользователя) Результирующее состояние Действия Примечание
Команды ввода и редактирования
Операция (Op)
Функция (Fun)
Взять из памяти (MR)
Копировать из буфера обмена (MR)
(MS),(MC),(M+), Вставить в буфер обмена
Вычислить (=)
Новое выражение (С)
3. На основе таблицы состояний постройте таблицу переходов для калькулятора.
Диаграмма классов для Управления калькулятором р-ичных чисел представлено на рисунке ниже.
1. Разработать и реализовать класс «Управление калькулятором р-ичных чисел» тип TCtrl, используя класс
• Object Pascal,
• С++.
На Унифицированном языке моделирования UML (Unified Modeling Language) наш класс можно описатьть следующим образом:
УправлениеКалькуляторомР-ичныхЧисел (тип TCtrl)
состояниеКалькулятора: TCtrlState
редактор: TEditor
процессор: TProc
память: TMemory
число: TPNumber
выполнитьКомандуКалькулятора(a: Integer; var b, MState: String): String
выполнитьКомандуРедактора(a: Integer): String
выполнитьОперацию(a: Integer): String
выполнитьФункцию(a: Integer): String
вычислитьВыражение(a: Integer): String
установитьНачальноеСостояниеКалькулятора(a: Integer): String
выполнитьКомандуюПамяти(a: Integer; var MState: String): String
очиститьПамять(var MState: String): String
записатьВПамять(var MState: String): String
считатьИзПамяти(var MState: String): String
добавитьКЧислуВПамяти(var MState: String): String
читатьПисатьСостояниеКалькулятора: TCtrlState (свойство, опирающееся на поле)
выполнитьКомандуБуфераОбмена(a: Integer; var b: String): String
записатьВБуферОбмена(a: Integer; var b: String): String
читатьИзБуферОбмена(a: Integer; var b: String): String
сменитьОснованиеСистемыСчисления(b: integer; var s:String)
конструктор
деструктор
Обязанность:
управление выполнением команд калькулятора
2. Класс должен отвечать за управление выполнением команд калькулятора. Класс должен обеспечивать:
• управление вводом и редактированием р-ичных чисел;
• управление выполнением операций, функций и выражений над р-ичными числами;
• управление выполнением операций по работе с памятью, объёмом в одно значение типа р-ичное число;
• управление работой с системным буфером обмена.
3. Протестировать каждый метод класса и класс в целом.
Рекомендации к выполнению
1. Класс TCtrl реализуйте в отдельном модуле UControl.
2. В модуле опишите перечисляемый тип TCtrlState = (cStart, cEditing, FunDone, cValDone, cExpDone, cOpChange, cError) для обозначения состояний калькулятора: cStart (Начальное), cEditing (Ввод и редактирование), cExpDone (Выражение вычислено), cOpDone (Операция выполнена), cValDone (Значение введено), cOpChange (Операция изменена),. cError (Ошибка).
3. В классе опишите следующие атрибуты:
• «редактор» - объект типа TEditior;
• «процессор» - объект типа TProc (TCalc в предыдущей редакции);
• «память» - объект типа TMemory;
• «состояние калькулятора» - тип TCtrlState;
• «число» - объект типа TPNumber (результат выполнения последней команды).
4. Набор основных операций класса определяется набором команд калькулятора, заданных пользователем. Кроме того, в классе будут определены вспомогательные операции, обеспечивающие реализацию основных операций. В классе опишите следующие операции:
• «выполнитьКомандуКалькулятора» (управляет вызовом операций по работе с объектами: редактор (поле TEditor), процессор (поле TProc), память (поле TMemory), буфер обмена (глобальный объект ClipBoard)), операция получает целое число (номер команды пользователя), строку для буфера обмена, строку со значением состояния памяти и возвращает строку для буфера обмена, строку состояния памяти и строку результата;
• «выполнитьКомандуРедактора» (управляет вызовом методов объекта редактор (тип TEditor)), операция получает целое число (номер команды пользователя и возвращает строку результата;
• «выполнитьОперацию» (управляет вызовом методов объекта процессор (поле TProc)), операция получает целое число (номер команды пользователя и возвращает строку результата;
• «выполнитьФункцию» (управляет вызовом методов объекта процессор (поле TProc)), операция получает целое число (номер команды пользователя и возвращает строку результата;
• «вычислитьОперацию» (управляет вызовом методов объекта процессор (поле TProc)), операция получает целое число (номер команды пользователя и возвращает строку результата;
• «вычислитьВыражение» (управляет вызовом методов объекта процессор (поле TProc)), операция получает целое число (номер команды пользователя и возвращает строку результата;
• «установитьНачальноеСостояниеКалькулятора» (управляет вызовом методов для перевода объекта типа TCalc в состояние Start (см. ниже), операция получает целое число (номер команды пользователя и возвращает строку результата;
• «выполнитьКомандуПамяти» (управляет вызовом методов объекта типа TCtrl, обеспечивающих выполнение команд памяти), операция получает целое число (номер команды пользователя), строку со значением состояния памяти и возвращает строку состояния памяти и строку результата;
• «очистить память» (обеспечивает выполнение команды MC памяти), операция получает строку со значением состояния памяти и возвращает строку состояния памяти и строку результата;
• «записать в память» (обеспечивает выполнение команды MS памяти), операция получает строку со значением состояния памяти и возвращает строку состояния памяти и строку результата;
• «считать из памяти» (обеспечивает выполнение команды MR памяти), операция получает строку со значением состояния памяти и возвращает строку состояния памяти и строку результата;
• «добавить к числу в памяти» (обеспечивает выполнение команды M+ памяти), операция получает строку со значением состояния памяти и возвращает строку состояния памяти и строку результата;
• «выполнитьКомандуБуфераОбмена» (управляет вызовом методов объекта типа TClipBoard, обеспечивающих выполнение команд буфера обмена), операция получает целое число (номер команды пользователя), строку со значением буфера обмена и возвращает строку со значением буфера обмена и строку результата;
• «записатьВБуферОбмена» (обеспечивает выполнение команды Вставить), операция возвращает строку со значением числа и строку результата;
• «читатьИзБуферОбмена» (обеспечивает выполнение команды Копировать), операция получает строку со значением числа и строку результата;
• «сменить основание системы счисления», операция получает новое значение основания системы счисления и возвращает строку, содержащую отображаемое число в новой системе счисления;
• «читать | писать состояние калькулятора», возвращает значение типа TCtrlState (свойство, опирающееся на поле);
• «конструктор», осуществляет создание объектов и инициализацию полей класса;
• «деструктор», осуществляет освобождение памяти, занимаемой объектом класса и объектами, указатели на которые хранятся в полях объекта: «Редактор», «Процессор», «Память», «Число».
Рекомендации к выполнению
Логика работы объекта «управление калькулятором» класс TCtrl может быть описана с помощью таблицы переходов, которая отражает изменение состояния калькулятора и результат работы объекта под действием команд пользователя. Таблица переходов строится на основе анализа прецедентов (вариантов использования), приведённых в спецификации.
Для построения таблицы переходов необходимо:
1. проанализировать спецификацию, приведённую в задании для калькулятора р-ичных чисел и выделить состояния калькулятора, например: Start (Начальное), Editing (Ввод и редактирование), ExpDone (Выражение вычислено), FunDone (Функция выполнена), ValDone (Значение введено), OpChange (смена операрации), Error (ошибка);
2. построить таблицу состояний следующего вида:
Состояние калькулятора: Start (Начальное – после запуска приложения или выполнения команды С)
Вход (команда пользователя) Результирующее состояние Действия Примечание
Команды ввода и редактирования Editing Изменение состояния редактируемой строки. (Вызов редактора).
Операция (Op) Start Введённая операция становится текущей.
Функция (Fun) Start Действия отсутствуют.
Error
Команды памяти Start Действия отсутствуют.
Команды буфера обмена Start Действия отсутствуют.
Вычислить (=) Start Действия отсутствуют.
Новое выражение (С) Start Действия отсутствуют.
Состояние калькулятора: Editing (Редактирование)
Вход (команда пользователя) Результирующее состояние Действия Примечание
Команды ввода и редактирования
Операция (Op)
Функция (Fun)
Взять из памяти (MR), (MS),(M+)
Вставить из буфера обмена, Копировать в буфер обмена
Вычислить (=)
Новое выражение (С)
Состояние калькулятора: OpChange (смена операрации)
Вход (команда пользователя) Результирующее состояние Действия Примечание
Команды ввода и редактирования
Операция (Op)
Функция (Fun)
Взять из памяти (MR)
Вставить из буфера обмена
Вычислить (=)
Новое выражение (С)
Состояние калькулятора: ExpDone (Выражение вычислено)
Вход (команда пользователя) Результирующее состояние Действия Примечание
Команды ввода и редактирования
Операция (Op)
Функция (Fun)
Взять из памяти (MR)
Копировать из буфера обмена (MR)
(MS),(MC),(M+), Вставить в буфер обмена
Вычислить (=)
Новое выражение (С)
Состояние калькулятора: FunDone (Функция вычислена),)
Вход (команда пользователя) Результирующее состояние Действия Примечание
Команды ввода и редактирования
Операция (Op)
Функция (Fun)
Взять из памяти (MR)
Копировать из буфера обмена (MR)
(MS),(MC),(M+), Вставить в буфер обмена
Вычислить (=)
Новое выражение (С)
Состояние калькулятора: ValDone (Значение введено)
Вход (команда пользователя) Результирующее состояние Действия Примечание
Команды ввода и редактирования
Операция (Op)
Функция (Fun)
Взять из памяти (MR)
Копировать из буфера обмена (MR)
(MS),(MC),(M+), Вставить в буфер обмена
Вычислить (=)
Новое выражение (С)
3. На основе таблицы состояний постройте таблицу переходов для калькулятора.
Диаграмма классов для Управления калькулятором р-ичных чисел представлено на рисунке ниже.
Дополнительная информация
Уважаемый студент, дистанционного обучения,
Оценена Ваша работа по предмету: Современные технологии программирования
Вид работы: Лабораторная работа 5
Оценка:Зачет
Дата оценки: 09.03.2017
Рецензия:Уважаемый Матов Денис Сергеевич,
Зайцев Михаил Георгиевич
Оценена Ваша работа по предмету: Современные технологии программирования
Вид работы: Лабораторная работа 5
Оценка:Зачет
Дата оценки: 09.03.2017
Рецензия:Уважаемый Матов Денис Сергеевич,
Зайцев Михаил Георгиевич
Похожие материалы
Лабораторная работа №5 по информатике. 3-й семестр. 8-й вариант
Nikolay80
: 24 января 2015
Лабораторная работа №5
Словарные коды
Порядок выполнения работы
Изучить теоретический материал гл. 8
Закодировать словарным кодом с использованием адаптивного словаря текст на английском языке, текст на русском языке и текст программы на языке С (использовать файлы не менее 1 Кб).
Вычислить коэффициенты сжатия данных как процентное отношение длины закодированного файла к длине исходного файла, построить таблицу вида:
Размер исходного
файла
Коэффициент сжатия данных
Текст на английском язык
70 руб.
Информатика. Лабораторная работа № 5. 4-й вариант. 2-й семестр
rukand
: 26 февраля 2013
Лабораторная работа No 5
Обработка двумерных массивов
Цель работы: Получить навыки разработки алгоритмов и программ для обработки матриц.
Задание к лабораторной работе:
Вар.4 Дана действительная квадратная матрица А размера n n. Определить наименьший элемент матрицы среди положительных и номера строки и столбца, на пересечении которых элемент находится.
75 руб.
Лабораторная работа №5. 1-й семестр. Вариант №7.
Eva
: 16 апреля 2015
"Обработка двумерных массивов"
Вариант №7.
Дана действительная квадратная матрица А размера n х n. Вычислить суммы элементов матрицы, имеющих четные и нечетные индексы отдельно.
50 руб.
Вычислительная математика. Лабораторная работа №5. 3-й семестр. 8-й вариант
Nikolay80
: 24 января 2015
Вычислительная математика
Лабораторная работа No5. Одномерная оптимизация
Написать программу для нахождения максимального значения функции на отрезке [0, 0.5] методом золотого сечения с точностью 0.0001. Считается, что требуемая точность достигнута, если выполняется условие , (e – заданная точность, ak, bk – границы интервала неопределенности, k = 0,1,2,1⁄4 ), при этом, ,
N – последняя цифра пароля.
70 руб.
Лабораторная работа № 5. Программирование. 2-й семестр. Вариант № 10
Despite
: 14 мая 2015
5. Структура имеет вид: фамилия, количество вещей, общий вес. Удалите из файла сведения о багаже, общий вес вещей в котором меньше, чем 10 кг.
* При обмене введите промежуточную переменную типа структура.
60 руб.
Лабораторная работа № 5 по информатике, 2-й семестр, вариант №1
Azeke3005
: 18 апреля 2012
Обработка двумерных массивов
Цель работы: Получить навыки разработки алгоритмов и программ для обработки матриц.
Задание к лабораторной работе:
Дана действительная квадратная матрица А размера n n. Вычислить наибольший элемент матрицы среди элементов с четными значениями и номера строки и столбца, на пересечении которых элемент находится.
100 руб.
Представление графической информации. Лабораторная работа №5. 7-й семестр. 21-й вариант
oksana
: 11 февраля 2016
Тема: Работа с PCX файлами.
Вариант: 21
Рисунок в программе следует заменить на свой, аналогичным размером
Задание
Вывести на экpан 256-цветный PCX файл с помощью библиотеки wingraph.h.
200 руб.
Лабораторные работы(все 5) и контрольная. 2-й семестр. 3-й Вариант
BuP4uk
: 1 мая 2018
В архиве 5 лабораторных работ + контрольная работа 3 варианта.
язык qbasic
Зачет 2018 год.
200 руб.
Другие работы
ММА/ИДО Иностранный язык в профессиональной сфере (ЛТМ) Тест 20 из 20 баллов 2024 год
mosintacd
: 28 июня 2024
ММА/ИДО Иностранный язык в профессиональной сфере (ЛТМ) Тест 20 из 20 баллов 2024 год
Московская международная академия Институт дистанционного образования Тест оценка ОТЛИЧНО
2024 год
Ответы на 20 вопросов
Результат – 100 баллов
С вопросами вы можете ознакомиться до покупки
ВОПРОСЫ:
1. We have … to an agreement
2. Our senses are … a great role in non-verbal communication
3. Saving time at business communication leads to … results in work
4. Conducting negotiations with foreigners we shoul
150 руб.
Задание №2. Методы управления образовательными учреждениями
studypro
: 13 октября 2016
Практическое задание 2
Задание 1. Опишите по одному примеру использования каждого из методов управления в Вашей профессиональной деятельности.
Задание 2. Приняв на работу нового сотрудника, Вы надеялись на более эффективную работу, но в результате разочарованы, так как он не соответствует одному из важнейших качеств менеджера - самодисциплине. Он не обязателен, не собран, не умеет отказывать и т.д.. Но, тем не менее, он отличный профессионал в своей деятельности. Какими методами управления Вы во
200 руб.
Особенности бюджетного финансирования
Aronitue9
: 24 августа 2012
Содержание:
Введение
Теоретические основы бюджетного финансирования
Понятие и сущность бюджетного финансирования
Характеристика основных форм бюджетного финансирования
Анализ бюджетного финансирования образования
Понятие и источники бюджетного финансирования образования
Проблемы бюджетного финансирования образования
Основные направления совершенствования бюджетного финансирования образования
Заключение
Список использованный литературы
Цель курсовой работы – исследовать особенности бюджетного фин
20 руб.
Программирование (часть 1-я). Зачёт. Билет №2
sibsutisru
: 3 сентября 2021
ЗАЧЕТ по дисциплине “Программирование (часть 1)”
Билет 2
Определить значение переменной y после работы следующего фрагмента программы:
a = 3; b = 2 * a – 10; x = 0; y = 2 * b + a;
if ( b > y ) or ( 2 * b < y + a ) ) then begin x = b – y; y = x + 4 end;
if ( a + b < 0 ) and ( y + x > 2 ) ) then begin x = x + y; y = x – 2 end;
200 руб.