"Вычисления, визуализация и программирование в среде MATLAB 5.x" - читать интересную книгу автора (Мартынов Н. Н., Иванов А. П.)

╧Ёштхфхь шыы■ёЄЁшЁє■∙шщ ЁрсюЄє єёыютэюую юяхЁрЄюЁр ЇЁруьхэЄ ъюфр:
└ = [ 1 2; 4 0 ]; if A
b = 1; else
b = 2;
т Ёхчєы№ЄрЄх т√яюыэхэш  ъюЄюЁюую яхЁхьхээр  ▄ яюыєўшЄ чэрўхэшх 2, Єръ ъръ ьрЄЁшЎр └ ёюфхЁцшЄ юфшэ эєыхтющ ¤ыхьхэЄ ш тёх єёыютшх ёўшЄрхЄё  ыюцэ√ь. ╩ёЄрЄш, чряшё№ if └ яю ётюхьє фхщёЄтш■ яюыэюёЄ№■ ¤ътштрыхэЄэр чряшёш
if └ ~= ╬ ш чряшёш
if all( A( : ) )
╙ёыютэ√х юяхЁрЄюЁ√ ўрёЄю шёяюы№чє■Єё  т Єхых ╠-ЇєэъЎшщ ёютьхёЄэю ё шэёЄЁєъЎшхщ return фы  юёє∙хёЄтыхэш  фюёЁюўэюую чртхЁ°хэш  ЇєэъЎшш ш т√їюфр шч эхх. ┬ ёыхфє■∙хщ ЇєэъЎшш т√ўшёы хЄё  ЇръЄюЁшры Ўхыюую яюыюцшЄхы№эюую ўшёыр я:
function res = MyFactorial
res = 1
if n == 1
return
else .
for i = 2:n
res = res .* i;
end
end
┼ёыш тїюфэющ ярЁрьхЄЁ фрээющ ЇєэъЎшш Ёртхэ 1, Єю ё яюью∙№■ юяхЁрЄюЁр return юёє∙хёЄты хЄё  фюёЁюўэ√щ т√їюф шч ЇєэъЎшш, Єръ ъръ яЁртшы№э√щ Ёхчєы№ЄрЄ (res = 1;) єцх ёЇюЁьшЁютрэ.
╩юуфр юяхЁрЄюЁ return эх шёяюы№чєхЄё , эюЁьры№эюх чртхЁ°хэшх ЇєэъЎшш эрёЄєярхЄ яю шёўхЁярэшш шэёЄЁєъЎшщ шч Єхыр ЇєэъЎшш.
╙ёыютэ√х юяхЁрЄюЁ√ Єръцх °шЁюъю яЁшьхэ ■Єё  тэєЄЁш юяхЁрЄюЁют Ўшъыр ёютьхёЄэю ё шэёЄЁєъЎшхщ break фы  фюёЁюўэюую т√їюфр шч Ўшъыр. ╚эюуфр Єръюх єёыютшх т√їюфр шч Ўшъыр ьюцхЄ с√Є№ хфшэёЄтхээ√ь, ъръ т ёыхфє■∙хь яЁшьхЁх:
prod = 1; i = 1; ж while 1
prod = prod .* i;
184
├ыртр 6. ╧ЁюуЁрььшЁютрэшх ЇєэъЎшщ эр ╠- ч√ъх
i = i + 1; if i > 8 break end end
уфх єёыютшх т чруюыютъх Ўшъыр тёхуфр шёЄшээю, Єръ ўЄю Ўшъы с√ы с√ схёъюэхўэ√ь, хёыш с√ эх шэёЄЁєъЎш  break, ЁрсюЄр■∙р  ёютьхёЄэю ё єёыютэ√ь юяхЁрЄюЁюь. ┬ Ёхчєы№ЄрЄх Ўшъы чфхё№ ъюэхўхэ ш т√ўшёы хЄ яЁюшчтхфхэшх тёхї Ўхы√ї ўшёхы юЄ хфшэшЎ√ фю тюё№ьш (Єю хёЄ№ ¤Єю ЇръЄюЁшры тюё№ьш).
╥хяхЁ№ яЁюфюыцшь шчєўрЄ№ юяхЁрЄюЁ√ тхЄтыхэш . ─Ёєушь юяхЁрЄюЁюь тхЄтыхэш   ты хЄё  юяхЁрЄюЁ яхЁхъы■ўхэш . ╬э шёяюы№чєхЄ ъы■ўхт√х ёыютр switch (яхЁхъы■ўшЄ№), case (ёыєўрщ), otherwise (шэрўх) ш шьххЄ ёыхфє■∙є■ ъюэёЄЁєъЎш■:
switch т√Ёрцхэшх case чэрўхэшх1
case { чэрўхэшх2, чэрўхэшх╟ }
otherwise
end
╤эрўрыр т√ўшёы хЄё  т√ЁрсрЄ√тр■∙хх ёъры Ёэюх ўшёыютюх чэрўхэшх т√Ёрцхэшх, р чрЄхь яюыєўхээ√щ Ёхчєы№ЄрЄ ёЁртэштрхЄё  ё эрсюЁюь чэрўхэшщ чэрўхэшх]., чэрўхэшх2, чэрўхэшх╟ ш Є. ф. ┬ ёыєўрх ёютярфхэш  ё юфэшь шч чэрўхэшщ т√яюыэ хЄё  эшцхёЄю ∙р  тхЄър. ┼ёыш эхЄ ёютярфхэш  эш ё ъръшь шч яхЁхўшёыхээ√ї чэрўхэшщ, Єю т√яюыэ хЄё  тхЄър, ёЄю ∙р  яюёых ъы■ўхтюую ёыютр otherwise. ╤ЄЁюъ ё ъы■ўхт√ь ёыютюь case ьюцхЄ с√Є№ ьэюую, р ёЄЁюър ё ъы■ўхт√ь ёыютюь otherwise юфэр.
╬ЄьхЄшь юфэє трцэє■ фхЄры№: яюёых т√яюыэхэш  Єющ шыш шэющ тхЄтш юяхЁрЄюЁр яхЁхъы■ўхэш  эшъръшх фЁєушх тхЄтш ¤Єюую юяхЁрЄюЁр (эряЁшьхЁ, эшцхыхцр∙шх) эх т√яюыэ ■Єё . ╧ю¤Єюьє т ╠- ч√ъх ёшёЄхь√ MATLAB эх эрфю яЁхфяЁшэшьрЄ№ эшъръшї ёяхЎшры№э√ї єёшышщ фы  юсїюфр эшцхыхцр∙шї тхЄтхщ юяхЁрЄюЁр яхЁхъы■ўхэш  (т юЄышўшх, эряЁшьхЁ, юЄ  ч√ъют C/C++).
MATLAB 5.x. ┬√ўшёыхэш , тшчєрышчрЎш , яЁюуЁрььшЁютрэшх 185
╚эЄхЁръЄштэюх тчршьюфхщёЄтшх ╠-Їєэъшшщ ё яюы№чютрЄхыхь
╥юы№ъю т ёрь√ї яЁюёЄ√ї ёыєўр ї эх ЄЁхсєхЄё  шэЄхЁръЄштэюую тчршьюфхщёЄтш  ё яюы№чютрЄхыхь тю тЁхь  т√яюыэхэш  ╠-ЇєэъЎшщ. ┬ Єръшї ёыєўр ї яюы№чютрЄхы№ юёЄрхЄё  т эхтхфхэшш ъръ ю їюфх т√ўшёыхэшщ, Єръ ш ю фюёЄшуэєЄ√ї яЁюьхцєЄюўэ√ї Ёхчєы№ЄрЄрї.
╬ўхэ№ ўрёЄю с√трхЄ яюыхчэю ъюэЄЁюышЁютрЄ№ їюф т√яюыэхэш  ╠-ЇєэъЎшщ. ─ы  шэЄхЁръЄштэюую тчршьюфхщёЄтш  ё яюы№чютрЄхыхь т ╠- ч√ъх яЁхфєёьюЄЁхэ Ё ф ёяхЎшры№э√ї ЇєэъЎшщ. ┬ ўрёЄэюёЄш, ЇєэъЎш  disp яЁшьхэ хЄё  фы  т√тюфр яЁюьхцєЄюўэ√ї Ёхчєы№ЄрЄют т ъюьрэфэюх юъэю ёшёЄхь√ MATLAB. ═р юёэютх рэрышчр яюы№чютрЄхыхь ърўхёЄтр яЁюьхцєЄюўэ√ї Ёхчєы№ЄрЄют ьюцхЄ яЁшэшьрЄ№ё  Ёх°хэшх ю яЁюфюыцхэшш т√ўшёыхэшщ шыш юс шї яЁхъЁр∙хэшш.
╘єэъЎш■ disp т√ч√тр■Є ё хфшэёЄтхээ√ь рЁуєьхэЄюь, ъюЄюЁ√щ ьюцхЄ с√Є№ ўшёыют√ь шыш ёшьтюы№э√ь ьрёёштюь (тхъЄюЁ, ьрЄЁшЎр). ═шцх яюърчрэ яЁшьхЁ Ўшъышўхёъшї яютЄюЁ ■∙шїё  т√ўшёыхэшщ ъюэхўэ√ї юЄЁхчъют Ёрёїюф ∙хуюё  урЁьюэшўхёъюую Ё фр ёю тёх сюы№°шь ўшёыюь тїюф ∙шї т эшї ёырурхь√ї:
S = 0; i = 1; while I
S = S + 1 / i;
str = sprintf ('i=%d S=%f, i, S ); disp( str ) i = i + 1; if rem(i,100) == 0
ans = input( 'Stop? Answer=', 's' ); if ans == 'y'
return end end end
╟фхё№ ЇєэъЎшхщ disp тёх чэрўхэш  яЁюьхцєЄюўэ√ї (ўрёЄшўэ√ї) ёєьь Ё фр т√тюф Єё  т ъюьрэфэюх юъэю ёшёЄхь√ MATLAB. ╩Ёюьх Єюую, ўхЁхч ърцф√х ёЄю ёырурхь√ї ЇєэъЎшхщ input т√тюфшЄё  эрфяшё№, яЁхфяшё√тр■∙р  яюы№чютрЄхы■ юЄтхЄшЄ№ эр тюяЁюё, эх яюЁр ыш юёЄрэртыштрЄ№ т√ўшёыхэш  (тююс∙х уютюЁ , схёъюэхўэ√х). ┼ёыш яюы№чютрЄхы№ ттюфшЄ яЁш ¤Єюь ё ъыртшрЄєЁ√ ырЄшэёъшщ ёшьтюы ' є' (яхЁтр  сєътр рэуышщёъюую ёыютр yes), Єю т√ўшёыхэш  яЁхъЁр∙р■Єё , Єръ ъръ т√яюыэ хЄё  юяхЁрЄюЁ фюёЁюўэюую т√їюфр шч ЇєэъЎшш return.
═хяюёЁхфёЄтхээ√щ ттюф шэЇюЁьрЎшш ё ъыртшрЄєЁ√ ш яЁшётюхэшх ттхфхээюую чэрўхэш  яхЁхьхээющ ans Єръцх юёє∙хёЄты хЄё  ЇєэъЎшхщ input. ┬ ърўхёЄтх тЄюЁюую рЁуєьхэЄр (ярЁрьхЄЁр) ЇєэъЎшш input шёяюы№чєхЄё  ёшьтюы 's', ючэр-
186
├ыртр 6. ╧ЁюуЁрььшЁютрэшх ЇєэъЎшщ эр ╠- ч√ъх
ўр■∙хх, ўЄю ЇєэъЎш  input фюыцэр яЁшэ Є№ ёшьтюы№э√х (р эх ўшёыют√х) чэрўхэш . ┼∙х яю ёэшь шёяюы№чютрэшх эютющ фы  эрё ЇєэъЎшш sprintf, ъюЄюЁр  яюьх∙рхЄ т т√їюфэє■ ёЄЁюъє чэрўхэш  ётюшї рЁуєьхэЄют (ъЁюьх яхЁтюую рЁуєьхэЄр) т ЇюЁьрЄх, єърчрээюь яхЁт√ь рЁуєьхэЄюь. ▌ЄюЄ ЇюЁьрЄ яюыэюёЄ№■ рэрыюушўхэ ЇюЁьрЄє, Ёрэхх юяшёрээюьє т уы. 3 т ёт чш ё ЇєэъЎшхщ fprintf, юёє∙хёЄты ■∙хщ ЇюЁьрЄэ√щ т√тюф шэЇюЁьрЎшш т ЄхъёЄют√х Їрщы√.
┬ Ёхчєы№ЄрЄх ЁрчЁрсюЄрээр  ЇєэъЎш  яючтюы хЄ яюы№чютрЄхы■ яюыэюёЄ№■ ъюэЄЁюышЁютрЄ№ яЁюЎхёё т√ўшёыхэшщ, эрсы■фрЄ№ чр яЁюьхцєЄюўэ√ьш Ёхчєы№ЄрЄрьш ш яЁхъЁр∙рЄ№ т√ўшёыхэш  яю ьхЁх эхюсїюфшьюёЄш. ═р Ёшё. 6.4 яюърчрэю ъюьрэфэюх юъэю ёшёЄхь√ MATLAB, т ъюЄюЁюь яЁшёєЄёЄтєхЄ Єхъє∙р  т√їюфэр  шэЇюЁьрЎш  т√°хЁрчЁрсюЄрээющ яЁюуЁрьь√, шч ъюЄюЁющ тшфэю, ўЄю, эряЁшьхЁ, фы  фюёЄшцхэш  Єхъє∙хщ ёєььющ Ё фр (юэр эшўхь ётхЁїє эх юуЁрэшўхэр) чэрўхэш  10, эєцэю яЁюёєььшЁютрЄ№ 12 367 ўыхэют ¤Єюую Ё фр:
Х* MATLAB Command Window