Главная » Просмотр файлов » Варианты заданий

Варианты заданий (1114804), страница 8

Файл №1114804 Варианты заданий (Варианты заданий) 8 страницаВарианты заданий (1114804) страница 82019-05-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 8)

Информацию выдавайте в поток стандартного вывода сервера.384Программируемый роботВторая часть практикума предусматривает создание программы-робота,имитирующего поведение человека (игрока) в игре «Менеджмент». Это задание расчитано на выполнение в IV семестре и предполагает использование языка C++.4.1Постановка задачиСтартовыми параметрами программы-робота являются ip-адрес и номерtcp-порта сервера, а также имя файла, содержащего программу на модельном языке (сценарий). Сценарий определяет дальнейшее поведениеробота.

Таким образом, программа-робот представляет собой комбинациюпрограммы-клиента (см. § 2.5.1) и интерпретатора модельного языка.Как и в случае с сервером, стартовые параметры задаются в командной строке. По согласованию с преподавателем возможны другие вариантыполучения стартовых параметров: например, из конфигурационного файла или из переменных окружения. Задавать стартовые параметры в текстепрограммы (т.е. так, что их изменение потребует перекомпиляции программы) запрещается.Входной язык робота должен позволять использование всей информации, которая доступна обычному игроку, а также выдачу всех команд, которые мог бы выдать обычный игрок.

Язык должен быть алгоритмическиполным и иметь возможности, достаточные для задания нетривиальныхстратегий (например, включающих в себя статистическую экстраполяцию).Для этого, в частности, необходимо предусмотреть в языке массивы (хотябы одномерные). Вместе с тем, нет необходимости реализовывать в языкестрочные переменные или переменные разных числовых типов; достаточнобудет наличия переменных одного целочисленного типа (например, четырехбайтных целых); предпочтительнее, однако, было бы наличие переменных с плавающей точкой.Для обеспечения в языке алгоритмической полноты необходимо предусмотреть конструкции, позволяющие задать ветвление и цикл. Минимальный набор конструкций для этого состоит из условного оператора и оператора безусловного перехода. Желательно предусмотреть в языке такжесоставной оператор и оператор цикла с предусловием.Обязательным требованием является равноправие всех пробельных символов (пробелов, табуляций, переводов строки и возвратов каретки) и допустимость любого их количества в любомместе программы, где допустим один пробел.

Таким образом, нельзя39использовать конец строки в качестве разделителя операторов, как это делается в ранних версиях Бейсика и Фортрана. Для разделения оператороврекомендуется использовать символ “;” (точка с запятой).4.2Пример входного языка роботаОписываемый в этом параграфе язык является минимальным, т.е. упрощенным настолько, насколько это вообще возможно в рамках поставленной задачи. По требованию преподавателя на язык могут быть наложеныдополнительные условия, усложняющие его. Однако даже в отсутствие дополнительных требований рекомендуется предложить свой вариантязыка, используя приведенный здесь язык лишь в качестве примера.4.2.1Общее описаниеПрограмма на модельном языке состоит из операторов, каждый из которых может быть помечен меткой.

Для упрощения анализа имя метки начинается всегда с символа @ и заканчивается двоеточием; имя метки можетсостоять из латинских букв, цифр и знаков подчеркивания. Если операторначинается не с метки, считается, что этот оператор не имеет метки. Конец оператора обозначается точкой с запятой. В дальнейшем при описаниисинтаксиса операторов мы не упоминаем возможное наличие у оператораметки, чтобы не загромождать текст.В языке присутствуют следующие операторы:— оператор присваивания— оператор безусловного перехода (goto)— условный оператор (if)— операторы игровых действий (buy, sell, prod, build, upgrade иendturn)— оператор отладочной печати (print).4.2.2Арифметика.

ВыраженияВ языке поддерживаются арифметические операции сложения (+), вычитания (-), умножения (*), целочисленного деления (/), вычисления остатка отделения (%), а также операции сравнения (<, >, =) и логические операции(&, |, !). Обязательна поддержка унарного минуса.

Операции сравнениявыдают значение 1 для обозначения истины и 0 для обозначения лжи. Логические операции интерпретируют число 0 как ложь, все остальные числа40– как истину. Результатом логической операции могут быть только числа0 и 1.Наибольший приоритет имеют умножение, деление и остаток от деления, следующий уровень приоритета имеют сложение и вычитание, операции сравнения имеют низший приоритет.В качестве операндов могут выступать константы, переменные и обращения к встроенным функциям.В выражениях могут присутствовать круглые скобки любой вложенности.4.2.3Переменные. Массивы.

ПрисваиванияПеременные в языке имеют имена, начинающиеся со знака “$”. В именипеременной могут присутствовать латинские буквы, цифры и знак подчеркивания. После имени переменной может следовать указание индекса – произвольное арифметическое выражение, заключенное в квадратные скобки.Описывать переменные не требуется; переменная заносится в таблицу значений переменных в момент первого присваивания.Оператор присваивания имеет следующий синтаксис:<присваивание> ::= <переменная> = <выражение> ’;’<переменная> ::= <имя_переменной>|<имя_переменной> ’[’ <выражение> ’]’Можно заметить, что никакие другие операторы модельного языка немогут начинаться с переменной, поэтому переменная, встреченная при анализе в начале оператора, однозначно указывает на то, что анализируемыйоператор является оператором присваивания.Примеры операторов присваивания:$a = 5;$b[4] =15 ;$b[$a]= $b[4]+3;$c=($a+10) * $b[5];Обратите внимание, что по обе стороны от знака присваивания допустимолюбое количество пробельных символов.Для упрощения реализации можно рассматривать элементы массивакак самостоятельные переменные; при этом индекс становится частью имени переменной.

С точки зрения интерпретатора элемент массива становится в таком случае своеобразной переменной, часть имени которой вычисляется в момент исполнения оператора. Если рассматривать только что41приведенный пример, то после выполнения таких операторов в таблицезначений переменных должны появиться:— переменная с именем “a” и значением 5;— переменная с именем “b[4]” и значением 15;— переменная с именем “b[5]” и значением 18;— переменная с именем “c” и значением 270.4.2.4Условный операторУсловный оператор имеет следующий синтаксис:<условный_оператор> ::= ’if’ <выражение> ’then’ <оператор> ’;’При анализе оператора следует считывать выражение до тех пор, покане встретится лексема, не являющаяся знаком операции, константой, переменной или обращением к функции.

В данном случае следующей за выражением должна оказаться лексема then. Оператор, стоящий после then,должен быть проанализирован, однако его выполнение должно произойтитолько в случае, если вычисление выражения дало результат, отличный отнуля.4.2.5Встроенные функции для получения игровой информацииДля удобства анализа можно ввести соглашение, по которому все именафункций начинаются со знака “?”. Имя функции может состоять из латинских букв, цифр и знака подчеркивания. Если функция имеет аргументы,то вслед за именем функции должно идти заключенное в круглые скобкиперечисление параметров функции через запятую. В минимальный наборфункций, обеспечивающий доступ ко всей игровой информации, входят:— ?my_id (без параметров) – выдает номер игрока, присвоенный сервером нашему роботу;— ?turn (без параметров) – выдает текущий номер хода (условного месяца);— ?players (без параметров) – выдает общее число игроков;— ?active_players (без параметров) – выдает количество игроков, продолжающих игру (т.е.

не обанкротившихся и не вышедших из игрык настоящему моменту);— ?supply (без параметров) – выдает количество сырья, выставленноебанком на продажу на текущий ход;— ?raw_price (без параметров) – выдает минимальную стоимость сырья, определенную банком на текущий ход;42— ?demand (без параметров) – выдает количество продукции, которуюбанк намерен купить на текущем ходу;— ?production_price (без параметров) – выдает максимальную ценупродукции, определенную банком на текущий ход;— ?money (один параметр, номер игрока) – выдает количество денег узаданного игрока (соответственно, ?money(?my_id) выдаст количество денег у игрока, управляемого нашим роботом);— ?raw (один параметр, номер игрока) – выдает количество сырья узаданного игрока;— ?production (один параметр, номер игрока) – выдает количество готовой продукции у заданного игрока;— ?factories (один параметр, номер игрока) – выдает общее количество (работающих) фабрик у заданного игрока;— ?auto_factories (один параметр, номер игрока) – какое количествофабрик данного игрока являются автоматизированными;— ?manufactured (один параметр, номер игрока) – сколько единиц продукции произведено на фабриках данного игрока на предыдущемходу;— ?result_raw_sold (один параметр, номер игрока) – сколько единицпродукции произведено на фабриках данного игрока на предыдущем ходу;— ?result_raw_price (один параметр, номер игрока) – если данныйигрок покупал сырье на предыдущем ходу, выдает цену, по которойсовершена покупка, в противном случае - нуль;— ?result_prod_bought (один параметр, номер игрока) – сколько единиц продукции банк купил у данного игрока на предыдущем ходу;— ?result_prod_price (один параметр, номер игрока) – если данныйигрок продавал продукцию на предыдущем ходу, выдает цену, по которой совершена продажа, в противном случае - нуль.4.2.6Встроенные операторы для совершения игровых действийОператоры для совершения игровых действий имеют следующий синтаксис:<игровой_оператор> ::= <имя0> ’;’|<имя1> <операнд> ’;’|<имя2> <операнд1> ’,’ <операнд2> ’;’<имя0>::= ’endturn’<имя1>::= ’prod’ | ’build’<имя2>::= ’buy’ | ’sell’43Минимальный набор операторов включает:— buy <количество> , <цена> – выставить заявку на покупку заданного количества сырья по заданой цене;— sell <количество> , <цена> – выставить заявку на продажу заданного количества продукции по заданной цене;— prod <количество> – запустить в производство заданное количествопродукции;— build <количество> – начать строительство заданного количествафабрик;— endturn – сообщить серверу о завершении хода и дождаться сообщения от сервера о том, что начался новый ход.Во всех случаях операнды представляют собой произвольные допустимыеарифметические выражения.

Для проверки правильности синтаксиса используется символ “;”, обозначающий конец оператора.4.2.7Оператор отладочной печатиОператор отладочной печати имеет следующий синтаксис:<оператор_печати> ::= ’print’ <п_список> ’;’<п_список>::= <п_элемент> | <п_элемент> ’,’ <п_список><п_элемент>::= <выражение> | <строка>Строка представляет собой произвольную строку символов, заключенных вдвойные кавычки. Таким образом, список параметров оператора отладочной печати оказывается в рассматриваемом модельном языке единственным местом, где допустима текстовая константа.Оператор отладочной печати обрабатывает свои параметры слева направо. Встреченные строки символов выдаются на стандартный вывод;встреченные выражения вычисляются и выдаются их результаты.

Характеристики

Тип файла
PDF-файл
Размер
373,54 Kb
Высшее учебное заведение

Список файлов ответов (шпаргалок)

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6367
Авторов
на СтудИзбе
309
Средний доход
с одного платного файла
Обучение Подробнее