131
goto :EOF
goto операторының тағы бір ерекшелігі таңдау операторын алмастыру
ретінде қолданыла алатындығы.
goto lab%1 :lab1
echo Variant 1 goto :EOF :lab2
echo Variant 2 goto :EOF :lab3
echo Variant 3 goto :EOF
Бұл мысалда 1 бастап 3 дейін диапазондағы командалық жолақтан
параметр қолданылады және осы параметр мәніне тәуелді сәйкес нұсқа
таңдалады.
Бір командалық файлды басқасынан шақырту үшін call команданы
қолданылады. Шақырту форматы келесідей:
call [диск:][жол]файл_атауы [параметрлер]
Осы кезде диск, жол және файл_атауы орындалған болуы қажет
командалық файл атауын береді. Бұл файлдың кеңейтілуі .bat немесе
.cmd керек. Егер қажет болса, командалық файлға параметрлер беріле
алады:
call checkdate.bat file1.txt
Бірақ сall команданы тек сыртқы командалар файлын іске қосу
үшін ғана емес, сонымен қатар, атқарымдар мен процестерді
шақыртуды ұйымдастыруда қолданылады. Ол үшін осы команданың
келесі пішіні қолдданылады:
call :белгі [параметрлер]
Атқарымды шақыруды ұйымдастырған кезде: белгі шақырылған
атқарымның басын көрсету керек. Шақырту кезінде берілетін
параметрлер атқарым ішінде %1, ..., %9 позициялық параметрлерін
қолдану кезінде қолжетімді.
Атқарымнан қайтару үшін /b кілті бар exit команда қолданылады:
exit /b [қайтару_коды]
Атқарымдар мен процестерді ұйымдастыру механизмі өте қуатты.
Ол рекурсивті шақыртуды ұйымдастыруға көмектеседі. Процестермен
жұмыс мысалы ретінде келесі сценарийді қарастыруға болады:
Fibonacci.bat:
@echo off
rem Командаларды шығару режимін сөндіреміз
132
set N=%1
call fib %N%
echo %RESULT%
exit /b
rem Фибоначчи fib сандарын есептеу атқарымы
if %1 == 1 ( set RESULT=1 exit /b )
if %1 == 2 ( set RESULT=1 exit /b )
rem санды есептейміз N-2 set /a M=%1-2
rem фибоначчи санын шығарамыз, номер N-2 call fib %M%
rem номер N-2 фибоначчи шығарылған санын стекте
сақтаймыз
set /a M=%1-2
set RES%M%=%RESULT%
rem Фибоначчи номер N-1 санын есептеп шығарамыз set /a
M=%1-1 call fib %M%
rem стектен номері N-2 фибоначчи санын шығарамыз, N-1
номерлі фибоначчи санымен қосамыз және нәтижесін RESULT
айнымалысына жазамыз set /a M=%1-2
for /F %%i in ('echo %%RES%M%%%') do set /a RESULT+=%%i
exit /b
Осы орындалу үстіндегі сандық параметрі бар файлды шақырған
кезде экранға оның факториалына сәйкес келетін сан шығады:
C:\>Fibonacci.bat 8 21
Өкінішке орай рекурсивті шақыртуларды ұйымдастырған кезде
айнымалылардың
мәндері
сақталмайды.
Бұл
мәндер
бағдарламалаушылардың өздерінің ұйымдастыруларына алып келеді.
Сол себепті жоғарыда көрсетілген мысал Фибоначчи сандарын
классикалық үлгіде орындаудан ерекшеленеді.
Мысалда бұдан бұрын алынған аралық нәтижелерді сақтау үшін
айнымалылар стегі ұйымдастырылады (set RES%M% = %RESULT%
команданы). %M% саны стектің ағымдағы деңгейін береді. Одан кейін
команданың шығуын алатын және стектен мәндерді алып тастау үшін
оның айнымалыларын жазатын for операторы қолданылады. Осы
мәндер Фибоначчи сандар есептеуде қолданылады.
|