Калькулятор выражений для командной строки Windows из 2 строк кода :)
Командные (пакетные) файлы имеют в Windows тип .bat
и состоят из внутренних или внешних команд операционки, инструкций по вызову каких-либо программ плюс ряда специальных инструкций, предназначенных для организации условных и безусловных переходов или циклической обработки. Например, показанный ниже bat-файл умеет запускать Paint, Блокнот или стандартный Калькулятор в зависимости от выбора пользователя (имена программ взяты из Windows 7):
@echo off chcp 1251 :start cls echo 1 - Первая программа echo 2 - Вторая программа echo 3 - Третья программа echo 0 - Выход в OS choice /c 1230 /n /m "Выбор?" if errorlevel 4 goto end if errorlevel 3 goto metka3 if errorlevel 2 goto metka2 start mspaint goto start :metka2 start notepad goto start :metka3 start calc goto start :end
Предполагается, что текстовый файл закодирован в кодировке Windows-1251, вызываемые программы располагаются в своём обычном месте, например, в папке c:\Windows\System32
и эта папка прописана в переменной окружения PATH
, то есть, Windows найдёт исполняемый файл без указания полного пути к нему.
Выполнить готовый командный файл можно из любого файл-менеджера или прямо из командной строки. Во втором случае в меню Пуск выбираем команду "Выполнить" (если таковой нет, щёлкаем правой кнопкой мыши на кнопке "Пуск", выбираем Свойства, затем вкладку Меню "Пуск", жмём "Настроить" и в списке опций включаем галочку Команда "Выполнить"), в поле ввода пишем
cmd
, жмём Enter. В открывшемся окне консоли переходим в папку с командным файлом, например, если это папка c:\temp
, а сам файл называется select.bat
, то вводим вот что:
Переход в папку из командной строки Windows
Немного материала по теме и примеры есть вот тут, на всякий случай также уточним, как можно создать пакетный файл.
Запустить стандартный Блокнот, набрать текст командного файла, выбрать меню Файл - Сохранить как, записать файл в нужную папку, например, как на картинке:
Сохранение bat-файла из Блокнота
В списке "Тип файла" нужно выбрать "Все файлы", а после имени файла (в нашем случае на картинке это v12
) не забыть дописать .bat
Кодировку файла оставляем Windows-1251 (ANSI).
Теперь к основной теме заметки. Написать чудо-калькулятор, почти что являющийся интерпретатором записанных на C++ формул, нам помогут две опции стандартной консольной команды set
, цитируем справку:
Команда SET поддерживает два дополнительных ключа: SET /A выражение SET /P variable=[promptString] Ключ /A указывает, что строка справа от знака равенства является числовым выражением, значение которого вычисляется. Обработчик выражений очень прост и поддерживает следующие операции, перечисленные в порядке убывания приоритета: () - группировка ! ~ - - унарные операторы * / % - арифметические операторы + - - арифметические операторы << >> - двоичный сдвиг & - двоичное И ^ - двоичное исключающее ИЛИ | - двоичное ИЛИ = *= /= %= += -= - присвоение &= ^= |= <<= >>= , - разделитель операторов
Написав небольшую обёртку к вызову set
с этими опциями, получим следующий командный файл:
@echo off rem Настроили среду и выдали справку: chcp 1251 >nul title Калькулятор color E1 cls echo "Введите выражение или exit для выхода" echo "() - группировка" echo "! ~ - - унарные операторы" echo "* / %% - арифметические операторы" echo "+ - - арифметические операторы" echo "<< >> - двоичный сдвиг" echo "& - двоичное И" echo "^ - двоичное исключающее ИЛИ" echo "| - двоичное ИЛИ" echo "= *= /= %= += -= - присваивание" echo ", - разделитель операторов" :next set /p exp= if "%exp%"=="exit" goto exit set /a result = "%exp%" echo %result% goto next :exit rem Перед выходом вернули настройки среды color 07
Далее на скрине показан калькулятор в работе, результат (12+2)/3 == 4
- это правильно, потому что на C/C++ деление целых значений даёт целое, а остаток отбрасывается. Узнать больше Вы можете, выполнив из консоли
set /?
там даже циклы и ветвления можно писать :)
Калькулятор в работе
22.10.2019, 09:21 [4019 просмотров]