Лр 5 (Сама МТ)

Статья посвящена тому, как без лишней мороки написать, отладить и запустить МТ на музэйном пека.

Удобнее всего сначала написать прогу в эмуляторе в 4-х.

Как по мне проще всего написать машину в 4-х, но сдавать то надо в 5-х…

Я изначально написал прогу в 4-х и мне было лень ее переписывать в 5-ки, поэтому я написал прогу, которая делает это за вас.

Итак, как я советую сделать.

  • Придумать общий алгоритм на основе вашей задачи
  • Написать и отладить его в 4-х
  • Перевести в 5-ки автоматом

Почему именно так? Потому что в 5-х очень мало нормальных интерпретаторов, а тот что есть (на сайте ВМК) призывает вас написать МТ5 в таблице…

Это никуда не годится (ИМХО). Дедовский интерпретатор работает на прямых командах, как и эмулятор в 4-х (1 пункт инструкции)

Важное замечание: на дедовском интерпретаторе ограничение на количество СОСТОЯНИЙ OxOO-0xFF (255шт) Само количество команд вроде не ограничено (у меня около 200, и все норм заработало)

Применение моей проги:

  1. Пишем и отлаживаем программу тут (или тут, оффлайн версия)%d0%bc%d1%820
  2. Сохраняем ваши команды куда-нибудь в другой файл
  3. Нажимаем %d0%bc%d1%822
  4. Копируем полученное в другой файл%d0%bc%d1%823
  5. Запускаем мою прогу  (прога умеет пока только 10-е цифры воспринимать)mt1
  6. Копируем команды МТ4 в левое окно%d0%bc%d1%824Программа переведет 4->5 прямым переводом, сохраните тоже где-нибудь. Но прямого перевода не хватит, ведь в МТ 5 у нас есть отдельное место под «действие», поэтому есть логика, которая сжимает ваши команды до допустимого состояния.
  7. Включаем перекрестное сжатие. Если вдруг количество команд не уменьшилось, то значит у вас нечего сжимать, и перевод получился впритык. Допустим на моей первой МТ количество команд с 67 уменьшилось до 63%d0%bc%d1%826%d0%bc%d1%828Насчет функции «Удаление промежуточных» я долго думал, но пришел к выводу, что однозначно она работать не может, т.к. те команды, что промежуточные на 4-х, на 5-х могут быть ключевыми, поэтому не советую ее использовать, ибо если логика сложная, то она сломает ее и придется дописывать уже на 5-х удаленные промежуточные. Короче, лучше ее не использовать, т.к. дед не заметит подмены уже после «Перекрестного сжатия»
  8. Копируем полученные переводом команды и сохраняем в файл .txt
  9. Приносим эти команды в файле на музэйный пк
  10. Открываем терминал, запускает терминал. Переходим в нужную нам папку. Пишем команду «tu newMt.tu«, пишем 5 и нажимаем Enter
  11. Откроется интерпретатор. Нам нужно здесь одно, чтобы он создал нам файл, поэтому пишем какую-нибудь одну левую команду и нажимаем «TAB», видим надпись, что файл успешно сохранен, нажимаем CTRL+C, выходим с терминала
  12. В той папке, где вы находились появится файл newMt.tu
  13. Открываем его с помощью Emacs, открываем наш файл, который мы принесли на флешке любым редактором и копируем все команды в newMt.tu, сохраняем
  14. После этого, если вы сделали все верно, то попробуйте написать в терминале снова «tu NewMt.ru», он должен открыть все ваши команды в интерпретаторе
  15. После этого проверьте уже работоспособность вашей МТ. Если вдруг не работает, попробуйте запустить МТ, которую вы получили прямым переводом, без сжатия, если снова не заработает, то это уже ваша вина.

Я лично показал деду МТ переведенную прогой со сжатием (НЕ УДАЛЯЯ ПРОМЕЖУТОЧНЫЕ) и он зачел мне эту мт. Честно, он даже не смотрел что в самих командах, так как их было слишком много, чтобы понять что они делают.

Если ваша МТ не очень обширная, то вам стоит задуматься над красотою вашей мт. И вообще он не принимает без нормализации, т.е. чтобы входные данные были изменены.

Что это значит? Если у вас задача «сложить 2 числа в 2-й системе», то она должна при входных «1001+1», «1001+1=1010»

maxspt

Оставить отклик

Ваш адрес эл.почты не будет опубликован.