Главная » Просмотр файлов » А.В. Столяров - Программирование на языке ассемблера NASM для ОС Unix

А.В. Столяров - Программирование на языке ассемблера NASM для ОС Unix (1110582), страница 20

Файл №1110582 А.В. Столяров - Программирование на языке ассемблера NASM для ОС Unix (А.В. Столяров - Программирование на языке ассемблера NASM для ОС Unix) 20 страницаА.В. Столяров - Программирование на языке ассемблера NASM для ОС Unix (1110582) страница 202019-04-28СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Èç ýòîãî, â ñâîþ î÷åðåäü, ñëåäóåò,÷òî äëÿ äîñòóïà ê ïåðâîìó (à ðàâíî è ê ëþáîìó äðóãîìó) ôàê-òè÷åñêîìó ïàðàìåòðó ïðîöåäóðå èëè ôóíêöèè ÿçûêà Ïàñêàëüíåîáõîäèìî çíàòü îáùåå êîëè÷åñòâî ýòèõ ïàðàìåòðîâ, ïîñêîëüêóðàñïîëîæåíèå n-ãî ïàðàìåòðà â ñòåêîâîì ôðåéìå ïîëó÷àåòñÿ çàâèñÿùèìîò îáùåãî êîëè÷åñòâà. Òàê, åñëè ó ïðîöåäóðû òðè ÷åòûð¼õáàéòíûõ ïàðàìåòðà, òî ïåðâûé èç íèõ îêàæåòñÿ â ñòåêå ïî àäðåñó [ebp+16], åñëè æåèõ ïÿòü, òî ïåðâûé ïðèä¼òñÿ èñêàòü ïî àäðåñó [ebp+24].

Èìåííî ïîýòîìóÿçûê Ïàñêàëü íå äîïóñêàåò ñîçäàíèå ïðîöåäóð èëè ôóíêöèé ñ ïåðåìåííûì ÷èñëîì àðãóìåíòîâ, òàê íàçûâàåìûõ âàðèàäè÷åñêèõ ïîäïðîãðàìì81(÷òî âïîëíå íîðìàëüíî äëÿ ó÷åáíîãî ÿçûêà, íî íå ñîâñåì ïðèåìëåìî äëÿÿçûêà ïðîôåññèîíàëüíîãî). Âõîäÿùèå â ÿçûê Ïàñêàëü ïñåâäîïðîöåäóðûñ ïåðåìåííûì ÷èñëîì àðãóìåíòîâ, òàêèå êàê WriteLn, íà ñàìîì äåëå ÿâëÿþòñÿ ÷àñòüþ ñàìîãî ÿçûêà Ïàñêàëü; êîìïèëÿòîð òðàíñôîðìèðóåò èõâûçîâû â íå÷òî âåñüìà äàë¼êîå îò âûçîâà ïîäïðîãðàììû íà óðîâíå ìàøèííîãî êîäà.

Òàê èëè èíà÷å, ïðîãðàììèñò íå ìîæåò íà Ïàñêàëå îïèñàòüñâîþ ïðîöåäóðó ïîäîáíîãî ðîäà.Ñîçäàòåëè ÿçûêà Ñè ïîøëè èíûì ïóò¼ì. Ïðè òðàíñëÿöèè âûçîâàôóíêöèè ÿçûêà Ñè ïàðàìåòðû ïîìåùàþòñÿ â ñòåê â îáðàòíîì ïîðÿäêå è îêàçûâàþòñÿ ðàçìåù¼ííûìè âî ôðåéìå â ïîðÿäêå ñâåðõó âíèç, òàê÷òî ïåðâûé ïàðàìåòð âñåãäà îêàçûâàåòñÿ äîñòóïåí ïî àäðåñó [ebp+8],âòîðîé ïî àäðåñó [ebp+12] è ò. ä., âíå âñÿêîé çàâèñèìîñòè îò îáùåãîêîëè÷åñòâà ïàðàìåòðîâ (êîíå÷íî, ïàðàìåòðû ïî êðàéíåé ìåðå äîëæíûïðèñóòñòâîâàòü, òî åñòü åñëè ôóíêöèÿ, íàïðèìåð, âûçâàíà âîîáùå áåçïàðàìåòðîâ, íèêàêîãî ïåðâîãî ïàðàìåòðà â ñòåêå íå áóäåò). Ýòî, ñ îäíîéñòîðîíû, ïîçâîëÿåò ñîçäàíèå âàðèàäè÷åñêèõ ôóíêöèé; â ÷àñòíîñòè, â ñàìïî ñåáå ÿçûê Ñè íå âõîäèò âîîáùå íè îäíîé ôóíêöèè, ÷òî æå êàñàåòñÿòàêèõ ôóíêöèé, êàê printf, scanf è äð., òî îíè ðåàëèçóþòñÿ â áèáëèîòåêå, à íå â ñàìîì ÿçûêå, è, áîëåå òîãî, ñàìè ýòè ôóíêöèè òîæå íàïèñàíûíà Ñè (êàê ñêàçàíî âûøå, íà Ïàñêàëå òàê ñäåëàòü íå ïîëó÷àåòñÿ).Ñ äðóãîé ñòîðîíû, îòñóòñòâèå â Ïàñêàëå âàðèàäè÷åñêèõ ïîäïðîãðàììïîçâîëÿåò âîçëîæèòü çàáîòû îá î÷èñòêå ñòåêà íà âûçûâàåìîãî.

Äåéñòâèòåëüíî, ïîäïðîãðàììà ÿçûêà Ïàñêàëü âñåãäà çíàåò, ñêîëüêî ìåñòà çàíèìàþò ôàêòè÷åñêèå ïàðàìåòðû â å¼ ñòåêîâîì ôðåéìå (ïîñêîëüêó äëÿ êàæäîé ïîäïðîãðàììû ýòî êîëè÷åñòâî çàäàíî ðàç è íàâñåãäà è íå ìîæåò èçìåíèòüñÿ) è, ñîîòâåòñòâåííî, ìîæåò ïðèíÿòü íà ñåáÿ çàáîòó îá î÷èñòêåñòåêà. Êàê óæå ãîâîðèëîñü, âûçîâîâ ïîäïðîãðàìì â ëþáîé ïðîãðàììåáîëüøå, ÷àì ñàìèõ ïîäïðîãðàìì, òàê ÷òî çà ñ÷¼ò ïåðåêëàäûâàíèÿ çàáîòû îá î÷èñòêå ñòåêà ñ âûçûâàþùåãî íà âûçûâàåìîãî äîñòèãàåòñÿ îïðåäåë¼ííàÿ ýêîíîìèÿ ïàìÿòè (êîëè÷åñòâà ìàøèííûõ êîìàíä). Ïðè èñïîëüçîâàíèè ñîãëàøåíèé ÿçûêà Ñè òàêàÿ ýêîíîìèÿ íåâîçìîæíà, ïîñêîëüêóïîäïðîãðàììà íå çíàåò è íå ìîæåò çíàòü (â îáùåì ñëó÷àå12 ), ñêîëüêîïàðàìåòðîâ åé ïåðåäàëè, òàê ÷òî çàáîòà îá î÷èñòêå ñòåêà îò ïàðàìåòðîâ îñòà¼òñÿ íà âûçûâàþùåì; îáû÷íî ýòî äåëàåòñÿ ïðîñòûì óâåëè÷åíèåìçíà÷åíèÿ ESP íà ÷èñëî, ðàâíîå ñîâîêóïíîé äëèíå ôàêòè÷åñêèõ ïàðàìåòðîâ. Íàïðèìåð, åñëè ïîäïðîãðàììà proc1 ïðèíèìàåò íà âõîä òðè ÷åòûð¼õáàéòíûõ ïàðàìåòðà (íàçîâ¼ì èõ a1, a2 è a3), å¼ âûçîâ áóäåò âûãëÿäåòüïðèìåðíî òàê:push dword a3; çàíîñèì â ñòåê ïàðàìåòðû12  ðàçíûõ ñèòóàöèÿõ èñïîëüçóþòñÿ ðàçëè÷íûå ñïîñîáû ôèêñàöèè êîëè÷åñòâà ïà-ðàìåòðîâ; òàê, ôóíêöèÿ printf óçíà¼ò, ñêîëüêî ïàðàìåòðîâ íóæíî èçâëå÷ü èç ñòåêà,ïóò¼ì àíàëèçà ôîðìàòíîé ñòðîêè, à ôóíêöèÿ execlp èçâëåêàåò àðãóìåíòû, ïîêà íåíàòêí¼òñÿ íà íóëåâîé óêàçàòåëü, íî è òî è äðóãîå ëèøü ÷àñòíûå ñëó÷àè.82push dword a2push dword a1call proc1add esp, 12; âûçûâàåì ïîäïðîãðàììó; óáèðàåì ïàðàìåòðû èç ñòåêà ñëó÷àå æå èñïîëüçîâàíèÿ ñîãëàøåíèé ÿçûêà Ïàñêàëü ïîñëåäíÿÿ êîìàíäà (add) îêàçûâàåòñÿ íå íóæíà, îáî âñ¼ì ïîçàáîòèòñÿ âûçûâàåìûé.Ïðîöåññîð i386 äàæå èìååò äëÿ ýòîãî ñïåöèàëüíóþ ôîðìó êîìàíäû retñ îäíèì îïåðàíäîì (âûøå â ïðèìåðàõ ìû èñïîëüçîâàëè ret áåç îïåðàíäîâ).

Ýòîò îïåðàíä, êîòîðûé ìîæåò áûòü òîëüêî íåïîñðåäñòâåííûì èâñåãäà èìååò äëèíó äâà áàéòà (¾ñëîâî¿), çàäà¼ò êîëè÷åñòâî ïàìÿòè (âáàéòàõ), çàíÿòîé ïàðàìåòðàìè ôóíêöèè. Íàïðèìåð, ïðîöåäóðó, ïðèíèìàþùóþ òðè ÷åòûð¼õáàéòíûõ ïàðàìåòðà, êîìèïëÿòîð Ïàñêàëÿ çàêîí÷èòêîìàíäîéret 12Ýòà êîìàíäà, êàê è îáû÷íàÿ êîìàíäà ret, èçâëå÷¼ò èç ñòåêà àäðåñ âîçâðàòà è ïåðåäàñò ïî íåìó óïðàâëåíèå, íî êðîìå ýòîãî (îäíîâðåìåííî ñýòèì) óâåëè÷èò çíà÷åíèå ESP íà çàäàííîå ÷èñëî (â äàííîì ñëó÷àå 12),èçáàâëÿÿ, òàêèì îáðàçîì, âûçâàâøåãî îò îáÿçàííîñòè ïî î÷èñòêå ñòåêà.Ÿ 2.6.8. Ëîêàëüíûå ìåòêèÏðåæäå ÷åì ìû ïðèâåä¼ì ïðèìåð ïîäïðîãðàììû, âûïîëíÿþùåé ðåêóðñèâíûé âûçîâ, íåîáõîäèìî ðàññìîòðåòü åù¼ îäíî âàæíîå ñðåäñòâî,ïðåäîñòàâëÿåìîå àññåìáëåðîì NASM ëîêàëüíûå ìåòêè .Ñóòü è îñíîâíîå äîñòîèíñòâî ïîäïðîãðàìì ñîñòîèò â èõ îáîñîáëåííîñòè.

Èíà÷å ãîâîðÿ, â ïðîöåññå íàïèñàíèÿ îäíîé ïîäïðîãðàììû ìû îáû÷íî íå ïîìíèì, êàê èçíóòðè óñòðîåíû äðóãèå ïîäïðîãðàììû è âîñïðèíèìàåì êàæäóþ èç ïîäïðîãðàìì, êðîìå îäíîé (òîé, ÷òî ïèøåòñÿ ïðÿìîñåé÷àñ) â âèäå ýòàêîé îäíîé áîëüøîé êîìàíäû. Ýòî ïîçâîëÿåò íå äåðæàòüâ ãîëîâå ëèøíèõ äåòàëåé è ñîñðåäîòî÷èòüñÿ íà ðåàëèçàöèè êîíêðåòíîãîôðàãìåíòà ïðîãðàììû, à ïî îêîí÷àíèè òàêîé ðåàëèçàöèè âûêèíóòü å¼äåòàëè èç ãîëîâû è ïåðåéòè ê äðóãîìó ôðàãìåíòó.Ïðîáëåìà ñîñòîèò â òîì, ÷òî â òåëå ëþáîé ñêîëü áû òî íè áûëî ñëîæíîé ïîäïðîãðàììû íàì îáÿçàòåëüíî ïîíàäîáÿòñÿ ìåòêè, è íóæíî ñäåëàòüòàê, ÷òîáû ïðè âûáîðå èì¼í äëÿ òàêèõ ìåòîê íàì íå íóæíî áûëî âñïîìèíàòü, åñòü ëè óæå ãäå-íèáóäü (â äðóãîé ïîäïðîãðàììå) ìåòêà ñ òàêèìæå èìåíåì.Àññåìáëåð NASM äëÿ ýòîãî ïðåäóñìàòðèâàåò ñïåöèàëüíûå ëîêàëüíûåìåòêè.

Ñèíòàêñè÷åñêè ýòè ìåòêè îòëè÷àþòñÿ îò îáû÷íûõ òåì, ÷òî íà÷èíàþòñÿ ñ òî÷êè. Àññåìáëåð ëîêàëèçóåò òàêèå ìåòêè âî ôðàãìåíòå ïðîãðàììû, îãðàíè÷åííîì ñ îáåèõ ñòîðîí îáû÷íûìè (íåëîêàëüíûìè) ìåòêàìè. Èíà÷å ãîâîðÿ, ëîêàëüíóþ ìåòêó àññåìáëåð ðàññìàòðèâàåò íå ñàìó83ïî ñåáå, à êàê íå÷òî ïîä÷èí¼ííîå ïîñëåäíåé (áëèæàéøåé ñâåðõó) íåëîêàëüíîé ìåòêå.

Íàïðèìåð, â ñëåäóþùåì ôðàãìåíòå:first_proc:; ....cycle:; ...second_proc:; ....cycle:; ...third_proc:............ïåðâàÿ ìåòêà .cycle ïîä÷èíåíà ìåòêå first_proc, à âòîðàÿ ìåòêåsecond_proc, òàê ÷òî ìåæäó ñîáîé îíè íå êîíôëèêòóþò. Åñëè ìåòêà.cycle âñòðåòèòñÿ â ïàðàìåòðàõ òîé èëè èíîé êîìàíäû ìåæäó ìåòêàìèfirst_proc è second_proc, àññåìáëåð áóäåò çíàòü, ÷òî èìååòñÿ â âèäóèìåííî ïåðâàÿ èç ìåòîê .cycle, åñëè îíà âñòðåòèòñÿ ïîñëå second_proc,íî ïåðåä third_proc òî çàäåéñòâóåòñÿ âòîðàÿ, òîãäà êàê ïîÿâëåíèåìåòêè .cycle äî first_proc èëè ïîñëå third_proc áóäåò ðàññìàòðèâàòüñÿ êàê îøèáêà. Òàêèì îáðàçîì, åñëè êàæäóþ ïîäïðîãðàììó íà÷èíàòü ñîáû÷íîé ìåòêè, à âíóòðè ïîäïðîãðàììû èñïîëüçîâàòü òîëüêî ëîêàëüíûåìåòêè, òî â ðàçíûõ ïîäïðîãðàììàõ ìû ìîæåì èñïîëüçîâàòü ëîêàëüíûåìåòêè ñ îäèíàêîâûìè èìåíàìè, è àññåìáëåð â íèõ íå çàïóòàåòñÿ.¾Íà ñàìîì äåëå, àññåìáëåð äîñòèãàåò òàêîãî ýôôåêòà çà ñ÷¼ò íå î÷åíü ÷åñòíîãî ïðè¼ìà âèäÿ ìåòêó, èìÿ êîòîðîé íà÷èíàåòñÿ ñ òî÷êè, îí ïðîñòî äîáàâëÿåò êíåé ñïåðåäè èìÿ ïîñëåäíåé âñòðå÷àâøåéñÿ åìó ìåòêè áåç òî÷êè.

Òàêèì îáðàçîì,â ïðèìåðå âûøå ðå÷ü èä¼ò íå î äâóõ îäèíàêîâûõ ìåòêàõ .cycle, à î äâóõ ðàçíûõìåòêàõ first_proc.cycle è second_proc.cycle. Ïîëåçíî ïîìíèòü îá ýòîì è íåïðèìåíÿòü â ïðîãðàììå â ÿâíîì âèäå ìåòêè, ñîäåðæàùèå òî÷êó, íåñìîòðÿ íà òî,÷òî àññåìáëåð ýòî äîïóñêàåò.¿Ÿ 2.6.9. ÏðèìåðÏðèâåä¼ì ïðèìåð ïîäïðîãðàììû, èñïîëüçóþùåé ðåêóðñèþ. Îäíà èçïðîñòåéøèõ êëàññè÷åñêèõ çàäà÷, ðåøàåìûõ ðåêóðñèâíî ýòî ñîïîñòàâëåíèå ñòðîêè ñ îáðàçöîì, å¼ ìû è èñïîëüçóåì â ïðèìåðå.Äëÿ íà÷àëà óòî÷íèì çàäà÷ó. Äàíû äâå ñòðîêè ñèìâîëîâ, äëèíà êîòîðûõ çàðàíåå íåèçâåñòíà, íî èçâåñòíî, ÷òî êàæäàÿ èç íèõ îãðàíè÷åíàíóëåâûì áàéòîì. Ïåðâóþ ñòðîêó ìû ðàññìàòðèâàåì êàê ñîïîñòàâëÿåìóþ, âòîðóþ âîñïðèíèìàåì êàê îáðàçåö.

 îáðàçöå ñèìâîë '?' ìîæåòñîïîñòàâëÿòüñÿ ñ ïðîèçâîëüíûì ñèìâîëîì, ñèìâîë '*' ñ ïðîèçâîëüíîéïîäöåïî÷êîé ñèìâîëîâ (âîçìîæíî äàæå ïóñòîé), îñòàëüíûå ñèìâîëû îáîçíà÷àþò ñàìè ñåáÿ è òîëüêî ñàìè ñ ñîáîé ñîïîñòàâëÿþòñÿ. Òàê, îáðàçöó'abc' ñîîòâåòñòâóåò òîëüêî ñòðîêà 'abc'; îáðàçöó 'a?c' ñîîòâåòñòâóåò84ëþáàÿ ñòðîêà èç òð¼õ ñèìâîëîâ, íà÷èíàþùàÿñÿ íà 'a' è çàêàí÷èâàþùàÿñÿ íà 'c' (ñèìâîë â ñåðåäèíå ìîæåò áûòü ëþáûì). Íàêîíåö, îáðàçöó'a*' ñîîòâåòñòâóåò ëþáàÿ ñòðîêà, íà÷èíàþùàÿñÿ íà 'a', íó à îáðàçöó'*a*' ñîîòâåòñòâóåò ëþáàÿ ñòðîêà, ñîäåðæàùàÿ áóêâó 'a' â ëþáîì ìåñòå.

Íåîáõîäèìî îïðåäåëèòü, ñîîòâåòñòâóåò ëè (öåëèêîì) çàäàííàÿ ñòðîêà çàäàííîìó îáðàçöó, è âåðíóòü ðåçóëüòàò 0, åñëè íå ñîîòâåòñòâóåò, èðåçóëüòàò 1, åñëè ñîîòâåòñòâóåò.Àëãîðèòì òàêîãî ñîïîñòàâëåíèÿ, åñëè ïðè ýòîì ìîæíî èñïîëüçîâàòüðåêóðñèþ, îêàæåòñÿ äîñòàòî÷íî ïðîñòûì. Íà êàæäîì øàãå ìû ðàññìàòðèâàåì îñòàâøóþñÿ ÷àñòü ñòðîêè è îáðàçöà; ñíà÷àëà ýòè îñòàâøèåñÿ÷àñòè ñîâïàäàþò ñî ñòðîêîé è îáðàçöîì, çàòåì, ïî ìåðå ïðîäâèæåíèÿàëãîðèòìà, îò íèõ îòáðàñûâàþòñÿ ñèìâîëû, ñòîÿùèå â íà÷àëå, è ìûïðåäïîëàãàåì, ÷òî äëÿ óæå îòáðîøåííûõ ñèìâîëîâ ñîïîñòàâëåíèå ïðîøëî óñïåøíî.

Ïåðâîå, ÷òî íóæíî ñäåëàòü â íà÷àëå êàæäîãî øàãà ýòîïðîâåðèòü, íå êîí÷èëñÿ ëè ó íàñ îáðàçåö. Åñëè îí êîí÷èëñÿ, òî ðåçóëüòàòçàâèñèò îò òîãî, êîí÷èëàñü ëè ïðè ýòîì è ñòðîêà òîæå. Åñëè êîí÷èëàñü,òî ìû âîçâðàùàåì åäèíèöó (èñòèíó), åñëè íå êîí÷èëàñü âîçâðàùàåì íîëü (ëîæü); äåéñòâèòåëüíî, ñ ïóñòûì îáðàçöîì ìîæíî ñîïîñòàâèòüòîëüêî ïóñòóþ ñòðîêó.Åñëè îáðàçåö åù¼ íå êîí÷èëñÿ, ïðîâåðÿåì, íå íàõîäèòñÿ ëè â íà÷àëå íåãî (òî åñòü â ïåðâîì ñèìâîëå îñòàòêà îáðàçöà) ñèìâîë '*'. Åñëèíåò, òî âñ¼ ïðîñòî: ìû ïðîèçâîäèì ñîïîñòàâëåíèå ïåðâûõ ñèìâîëîâ ñòðîêè è îáðàçöà; åñëè ïåðâûé ñèìâîë îáðàçöà íå ÿâëÿåòñÿ ñèìâîëîì '?' èíå ðàâåí ïåðâîìó ñèìâîëó ñòðîêè, òî àëãîðèòì íà ýòîì çàâåðøàåòñÿ èìû âîçâðàùàåì ëîæü, â ïðîòèâíîì ñëó÷àå ñ÷èòàåì, ÷òî î÷åðåäíûå ñèìâîëû îáðàçöà è ñòðîêè óñïåøíî ñîïîñòàâëåíû, îòáðàñûâàåì èõ (òî åñòüóêîðà÷èâàåì îñòàòêè îáåèõ ñòðîê ñïåðåäè) è âîçâðàùàåìñÿ ê íà÷àëó àëãîðèòìà.Ñàìîå èíòåðåñíîå ïðîèñõîäèò, åñëè íà î÷åðåäíîì øàãå ïåðâûé ñèìâîëîáðàçöà îêàçàëñÿ ñèìâîëîì '*'.

 ýòîì ñëó÷àå íàì íóæíî ïîñëåäîâàòåëüíî ïåðåáðàòü âîçìîæíîñòè ñîïîñòàâëåíèÿ ýòîé ¾çâ¼çäî÷êè¿ ñ ïóñòîéïîäöåïî÷êîé ñòðîêè, ñ îäíèì ñèìâîëîì ñòðîêè, ñ äâóìÿ ñèìâîëàìè è ò. ä.,ïîêà íå êîí÷èòñÿ ñàìà ñòðîêà. Äåëàåì ìû ýòî ñëåäóþùèì îáðàçîì. Çàâîäèì öåëî÷èñëåííóþ ïåðåìåííóþ I, êîòîðàÿ áóäåò ó íàñ îáîçíà÷àòü òåêóùèé ðàññìàòðèâàåìûé âàðèàíò. Ïðèñâàèâàåì ýòîé ïåðåìåííîé íîëü (íà÷èíàåì ðàññìîòðåíèå ñ ïóñòîé öåïî÷êè). Òåïåðü äëÿ êàæäîé ðàññìàòðèâàåìîé àëüòåðíàòèâû îòáðàñûâàåì îò îáðàçöà îäèí ñèìâîë (çâ¼çäî÷êó),à îò ñòðîêè ñòîëüêî ñèìâîëîâ, êàêîå ñåé÷àñ ÷èñëî â ïåðåìåííîé I.

Ïîëó÷åííûå îñòàòêè ïûòàåìñÿ ñîïîñòàâèòü, èñïîëüçóÿ äëÿ ýòîãî âûçîâòîé ñàìîé ïîäïðîãðàììû, êîòîðóþ ìû ñåé÷àñ ïèøåì, òî åñòü ïðîèçâîäèì ðåêóðñèâíûé âûçîâ ¾ñàìèõ ñåáÿ¿. Åñëè ðåçóëüòàò âûçîâà èñòèíà,òî ìû íà ýòîì çàâåðøàåìñÿ, òîæå âåðíóâ èñòèíó. Åñëè æå ðåçóëüòàò ëîæü, òî ìû ïðîâåðÿåì, ìîæíî ëè åù¼ óâåëè÷èâàòü ïåðåìåííóþ I (íå85âûëåòèì ëè ìû ïðè ýòîì çà ïðåäåëû ñîïîñòàâëÿåìîé ñòðîêè). Åñëè óâåëè÷èâàòüñÿ óæå íåêóäà, çàâåðøàåì ðàáîòó, âåðíóâ ëîæü.  ïðîòèâíîìñëó÷àå âîçâðàùàåìñÿ ê íà÷àëó öèêëà è ðàññìàòðèâàåì ñëåäóþùåå âîçìîæíîå çíà÷åíèå I.Äëÿ ÷èòàòåëåé, çíàêîìûõ ñ ÿçûêîì ïðîãðàììèðîâàíèÿ Ñè, îòìåòèì, ÷òî íàýòîì ÿçûêå âûøåîïèñàííûé àëãîðèòì ìîæåò áûòü ðåàëèçîâàí ñëåäóþùåé ôóíêöèåé:int match(const char *str, const char *pat){int i;for(;; str++, pat++) {switch(*pat) {case 0:return *str == 0;case '*':for(i=0; ; i++) {if(match(str+i, pat+1)) return 1;if(!str[i]) return 0;}case '?':if(!*str) return 0;break;default:if(*str != *pat) return 0;}}}Íà Ïàñêàëå òàêàÿ æå ôóíêöèÿ áóäåò âûãëÿäåòü íåñêîëüêî áîëåå ãðîìîçäêî.

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

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

Список файлов книги

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