{"id":287727,"date":"2018-08-16T14:15:25","date_gmt":"2018-08-16T10:15:25","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=287727"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=287727","title":{"rendered":"\u041f\u0438\u0448\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0442\u043e\u0440 \u043d\u0430 \u041b\u0438\u0441\u043f\u0435 \u2014 I"},"content":{"rendered":"\n<div data-io-article-url=\"https:\/\/habr.com\/post\/419103\/\" class=\"post__text post__text-html js-mediator-article\">\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 \u041b\u0438\u0441\u043f\u0435\u2026 \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0442\u043e\u0440 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0438\u043c\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430. \u041d\u0435\u0442-\u043d\u0435\u0442, \u044f \u043d\u0435 \u043e\u0448\u0438\u0431\u0441\u044f \u2013 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0442\u043e\u0440. \u0422\u0440\u0430\u043d\u0441\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0432 \u041b\u0438\u0441\u043f-\u043a\u043e\u0434. \u0410 \u0434\u0430\u043b\u044c\u0448\u0435 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d \u041b\u0438\u0441\u043f-\u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439.<\/p>\n<p>  <\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u0431\u0435\u0441\u0446\u0435\u043d\u043d\u0443\u044e \u0443\u0441\u043b\u0443\u0433\u0443 \u043d\u0430\u043c \u043e\u043a\u0430\u0436\u0435\u0442 \u0442\u043e \u043e\u0431\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e, \u0447\u0442\u043e \u0432 \u041b\u0438\u0441\u043f\u0435 \u043d\u0435\u0442 \u0431\u0430\u0440\u044c\u0435\u0440\u0430 \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u0434\u043e\u043c \u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 (\u044d\u0442\u043e \u0440\u0435\u0434\u043a\u043e\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u201c\u0433\u043e\u043c\u043e\u0438\u043a\u043e\u043d\u043d\u043e\u0441\u0442\u044c\u201d). \u041d\u043e \u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u041b\u0438\u0441\u043f\u0430 \u0442\u043e\u0436\u0435 \u0441\u044b\u0433\u0440\u0430\u044e\u0442 \u043d\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0440\u043e\u043b\u044c.<\/p>\n<p>  <\/p>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u044f \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <a href=\"https:\/\/habr.com\/post\/137928\/\">HomeLisp<\/a>. \u0416\u0435\u043b\u0430\u044e\u0449\u0438\u0435 \u0441\u043c\u043e\u0433\u0443\u0442 \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e\u0434 Common Lisp. \u0421\u043a\u0430\u0436\u0443 \u0441\u0440\u0430\u0437\u0443 \u2013 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 Common Lisp \u0438 HomeLisp \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0441\u0442\u0440\u043e\u043a \u0438 \u0444\u0430\u0439\u043b\u043e\u0432. <\/p>\n<p>  <\/p>\n<p>\u0421\u043a\u0430\u0447\u0430\u0442\u044c \u043f\u043e\u0440\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e HomeLisp \u043c\u043e\u0436\u043d\u043e \u043f\u043e <a href=\"http:\/\/homelisp.ru\/HomeLispPrt.zip\">\u0441\u0441\u044b\u043b\u043a\u0435<\/a>. \u041d\u0430 <a href=\"http:\/\/homelisp.ru\">\u044d\u0442\u043e\u043c \u0436\u0435<\/a> \u0441\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0430 \u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f. \u0416\u0435\u043b\u0430\u044e\u0449\u0438\u0435 \u043c\u043e\u0433\u0443\u0442 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u0438\u0437 \u0441\u0442\u0430\u0442\u044c\u0438 \u0438 \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c\u0430\u044f \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e \u0442\u0435\u043c\u0430 \u043f\u043e\u0441\u043b\u0443\u0436\u0438\u043b\u0430 \u043e\u0441\u043d\u043e\u0432\u043e\u0439 \u0434\u043b\u044f \u043c\u043e\u0435\u0439 \u043c\u0430\u0441\u0442\u0435\u0440\u0441\u043a\u043e\u0439 <a href=\"http:\/\/school.iis.nsk.su\/lshyup-2018\/masterskie-7\">\u043d\u0430 \u0437\u043d\u0430\u043c\u0435\u043d\u0438\u0442\u043e\u0439 \u041d\u043e\u0432\u043e\u0441\u0438\u0431\u0438\u0440\u0441\u043a\u043e\u0439 \u041b\u0428\u042e\u041f-2018<\/a>. \u0421 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438 \u043c\u0430\u0441\u0442\u0435\u0440\u0441\u043a\u043e\u0439 \u043c\u043e\u0436\u043d\u043e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f <a href=\"https:\/\/github.com\/ssyp-ru\/ssyp18-ws03\">\u0437\u0434\u0435\u0441\u044c<\/a>. \u0410 \u0434\u0430\u043b\u0435\u0435 \u044f \u0438\u0437\u043b\u0430\u0433\u0430\u044e \u0441\u0432\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434. \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u044e, \u0447\u0442\u043e \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c \u0437\u043d\u0430\u043a\u043e\u043c \u0441 \u044f\u0437\u044b\u043a\u043e\u043c \u041b\u0438\u0441\u043f.<\/p>\n<p>  <\/p>\n<h4 id=\"pristupaem\">\u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0435\u043c<\/h4>\n<p>  <\/p>\n<p>\u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u201c\u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0438\u043c\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430\u201d, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u041b\u0438\u0441\u043f.<br \/>  \u042f\u0437\u044b\u043a \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0438\u0441\u043b\u043e\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435. \u041a\u043e\u0434 \u043d\u0430 \u044d\u0442\u043e\u043c \u044f\u0437\u044b\u043a\u0435 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 (\u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f). \u0421\u0440\u0435\u0434\u0438 \u044d\u0442\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043e\u0434\u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f main. \u0418\u043c\u0435\u043d\u043d\u043e \u0441 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430. \u0425\u043e\u0442\u044f \u0437\u0430\u0447\u0435\u043c \u0442\u0430\u043a \u0441\u0435\u0431\u044f \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0442\u044c? \u041f\u0438\u0448\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0430 \u0438\u043c\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u043c \u044f\u0437\u044b\u043a\u0435, \u043e\u043d\u0438 \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432 \u041b\u0438\u0441\u043f \u0438 \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043b\u0438\u0441\u043f\u043e\u0432\u0441\u043a\u0438\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438. \u041d\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0437\u0430\u0431\u0435\u0433\u0430\u0442\u044c \u0432\u043f\u0435\u0440\u0435\u0434&#8230;<\/p>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<p>\u041d\u0430\u0431\u043e\u0440 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u044f\u0437\u044b\u043a\u0430 \u043e\u0431\u044b\u0447\u0435\u043d: \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u0438\u0435, \u0432\u0435\u0442\u0432\u043b\u0435\u043d\u0438\u0435, \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0446\u0438\u043a\u043b, \u0434\u043e\u0441\u0440\u043e\u0447\u043d\u044b\u0439 \u0432\u044b\u0445\u043e\u0434 \u0438\u0437 \u0446\u0438\u043a\u043b\u0430, \u0432\u0432\u043e\u0434, \u0432\u044b\u0432\u043e\u0434 \u0438 \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043e\u0444\u043e\u0440\u043c\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u0438\u0435 (\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0432\u044b\u0437\u043e\u0432\u0430). \u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u043f\u0443\u0441\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0437\u0432\u0435\u0437\u0434\u043e\u0447\u043a\u0443 \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0441\u0442\u0440\u043e\u043a\u0438. \u042f\u0437\u044b\u043a, \u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u0427\u0442\u043e\u0431\u044b \u0441\u0442\u0430\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u0435\u0435, \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043a\u043e\u0434\u0430 \u2013 \u043f\u0435\u0447\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043d\u0435\u0447\u0435\u0442\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0438\u0445 \u0441\u0443\u043c\u043c\u044b:<\/p>\n<p>  <\/p>\n<pre><code>proc main()   local s,n,k   input n   for i=1 to n       k=2*i-1       print k       s=s+k   end_for   print s   end_proc<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e \u0441\u0432\u043e\u0435\u043c\u0443 \u0434\u0443\u0445\u0443 \u2013 \u044d\u0442\u043e \u0431\u044d\u0439\u0441\u0438\u043a-\u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u044f\u0437\u044b\u043a. \u042f \u0431\u0443\u0434\u0443 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u201c\u043c\u0438\u043d\u0438-\u0431\u044d\u0439\u0441\u0438\u043a\u201d. \u041d\u0430\u0448 \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0442\u043e\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u041b\u0438\u0441\u043f-\u0444\u0443\u043d\u043a\u0446\u0438\u044e:<\/p>\n<p>  <\/p>\n<pre><code class=\"lisp\">(defun main nil    (let ((s 0) (n 0) (k 0))      (setq n (read))      (iter (for i from 1 to n)        (setq k (- (* 2 i) 1))        (printline k)        (setq s (+ s k)))    (printline s)))<\/code><\/pre>\n<p>  <\/p>\n<p>\u041c\u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u043f\u0430\u043a\u0435\u0442 <a href=\"https:\/\/common-lisp.net\/project\/iterate\/doc\/Don_0027t-Loop-Iterate.html\">iterate<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u0430\u0445 Common Lisp \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u0432 \u0432\u0438\u0434\u0435 \u043c\u0430\u043a\u0440\u043e. \u0412 HomeLisp \u0444\u0443\u043d\u043a\u0446\u0438\u044f iter (\u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0430\u044f \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u043c\u0430\u043a\u0440\u043e iterate) \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u0432 \u044f\u0434\u0440\u043e \u044f\u0437\u044b\u043a\u0430. \u041c\u043e\u0435 \u043f\u0440\u0438\u0441\u0442\u0440\u0430\u0441\u0442\u0438\u0435 \u043a iter \u0438 \u043f\u043e\u0441\u043b\u0443\u0436\u0438\u043b\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u043e\u0439 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0446\u0438\u043a\u043b\u044b \u043d\u0430\u0448\u0435\u0433\u043e \u201c\u043c\u0438\u043d\u0438-\u0431\u044d\u0439\u0441\u0438\u043a\u0430\u201d \u0431\u0443\u0434\u0443\u0442 \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0432\u044b\u0437\u043e\u0432\u044b iter.<\/p>\n<p>  <\/p>\n<p>\u0421 \u0447\u0435\u0433\u043e \u043d\u0430\u0447\u0430\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e? \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0430\u0447\u043d\u0435\u043c \u0435\u0435 \u0441 \u0432\u044b\u0431\u043e\u0440\u0430 \u0444\u0430\u0439\u043b\u0430, \u043f\u043e\u0434\u043b\u0435\u0436\u0430\u0449\u0435\u0433\u043e \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u0438 \u0438 \u0441 \u043f\u043e\u0441\u0442\u0440\u043e\u0447\u043d\u043e\u0433\u043e \u0447\u0442\u0435\u043d\u0438\u044f \u0438 \u043f\u0435\u0447\u0430\u0442\u0438 \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0442\u043e\u0440 \u043d\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0440\u0430\u0437, \u0442\u0430\u043a \u043f\u0443\u0441\u0442\u044c \u044d\u0442\u043e\u0442 \u0437\u0430\u043f\u0443\u0441\u043a \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u043d\u0430\u0447\u0430\u043b\u0430 \u0431\u0443\u0434\u0435\u0442 \u0443\u0434\u043e\u0431\u043d\u044b\u043c. \u0412\u043e\u0442 \u043a\u0430\u043a \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f:<\/p>\n<p>  <\/p>\n<pre><code class=\"lisp\">(defun start (&amp;optional (fname nil))    (setq *numline* 0)    (setq *flagerr* nil)    (when (null fname)          (setq fname (sysGetOpenName (sysHome) \"\u041c\u0438\u043d\u0438-\u0431\u044d\u0439\u0441\u0438\u043a|*.mbs\")))    (let ((fi (gensym 'fi)))         (when fname                     (filOpen fi fname _INPUT)           (loop               (getLine fi)                (when (or *flagerr* (filEOF fi)) (return t)))           (filClose fi)           (when *flagerr* (printsline \"**** \u0411\u044b\u043b\u0438 \u043d\u0430\u0439\u0434\u0435\u043d\u044b \u043e\u0448\u0438\u0431\u043a\u0438\"))))    (unset '*numline*)    (unset '*flagerr*))<\/code><\/pre>\n<p>  <\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0438\u043c\u0435\u0435\u0442 \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <strong>fname<\/strong> \u2013 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f. \u041f\u0440\u0438 \u0432\u0445\u043e\u0434\u0435 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0434\u0432\u0435 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 <strong><em>numLine<\/em><\/strong> \u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0438 <strong><em>flagerr<\/em><\/strong> \u2014 \u0444\u043b\u0430\u0433 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043e\u0448\u0438\u0431\u043a\u0438. \u041f\u0435\u0440\u0435\u0434 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u044d\u0442\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0430\u044e\u0442\u0441\u044f (\u0444\u0443\u043d\u043a\u0446\u0438\u044f HomeLisp-\u0430 <strong>unset<\/strong> \u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0430\u0435\u0442 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435).<\/p>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0438\u043c\u044f \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u043e\u043f\u0443\u0449\u0435\u043d\u043e \u2013 \u0442\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 windows-\u0434\u0438\u0430\u043b\u043e\u0433 \u0432\u044b\u0431\u043e\u0440\u0430 \u0444\u0430\u0439\u043b\u0430 <strong>(sysGetOpenName)<\/strong>. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f <strong>(sysHome)<\/strong>. \u0414\u0430\u043b\u0435\u0435 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0433\u043e \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0442\u043e\u0440\u0430 \u0438 \u0444\u0430\u0439\u043b \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0447\u0442\u0435\u043d\u0438\u044f. \u0417\u0430\u0442\u0435\u043c \u0432 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0446\u0438\u043a\u043b\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0447\u0442\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u0441\u0442\u0440\u043e\u043a\u0430 \u0437\u0430 \u0441\u0442\u0440\u043e\u043a\u043e\u0439 (\u0444\u0443\u043d\u043a\u0446\u0438\u044f <strong>getLine<\/strong>). \u041f\u043e\u0441\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u0441\u044f, \u043d\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u043b\u0438 \u043e\u0448\u0438\u0431\u043a\u0430, \u0438 \u043d\u0435 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442 \u043b\u0438 \u043a\u043e\u043d\u0435\u0446 \u0444\u0430\u0439\u043b\u0430. \u0415\u0441\u043b\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u0438\u043b\u0438 \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d \u043a\u043e\u043d\u0435\u0446 \u0444\u0430\u0439\u043b\u0430 \u2013 \u0446\u0438\u043a\u043b \u0440\u0430\u0437\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0444\u0430\u0439\u043b \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0438, \u0435\u0441\u043b\u0438 \u0431\u044b\u043b\u0438 \u043e\u0448\u0438\u0431\u043a\u0438 \u2013 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u0442\u043e\u0433\u043e\u0432\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435.<br \/>  \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0447\u0442\u0435\u043d\u0438\u0435 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044f <strong>getLine<\/strong>:<\/p>\n<p>  <\/p>\n<pre><code class=\"lisp\">(defun getLine (fil)   (let ((stri \"\"))     (loop       (when (filEof fil) (return \"\"))       (setq *numline* (add1 *numline*))        (setq stri (filGetline fil))       (printsline (strCat (format *numline* \"0000\") \" \"                    (strRTrim stri)))       (setq stri (strATrim stri))        (unless (or (eq \"\" stri) (eq \"*\" (strLeft stri 1)))        (return stri)))))<\/code><\/pre>\n<p>  <\/p>\n<p>\u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0438 \u0432 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0446\u0438\u043a\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u201c\u043a\u043e\u043d\u0435\u0446 \u0444\u0430\u0439\u043b\u0430\u201d. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0446\u0438\u043a\u043b \u0440\u0430\u0437\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u0443\u0441\u0442\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443;<\/li>\n<li>\u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0435\u0434\u0438\u043d\u0438\u0446\u0443 \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0445 \u0441\u0442\u0440\u043e\u043a;<\/li>\n<li>\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0444\u0430\u0439\u043b\u0430;<\/li>\n<li>\u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u043f\u0435\u0447\u0430\u0442\u0430\u0435\u0442\u0441\u044f \u0441 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u0432 \u0441\u043f\u0440\u0430\u0432\u0430;<\/li>\n<li>\u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u043d\u0435\u043f\u0443\u0441\u0442\u0430 \u0438 \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0437\u0432\u0435\u0437\u0434\u043e\u0447\u043a\u0443 \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438, \u0442\u043e \u043e\u043d\u0430<br \/>  \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0438;<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0432 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u043b\u0438\u0441\u0442\u0438\u043d\u0433 \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u0432\u0441\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0444\u0430\u0439\u043b\u0430 \u0432 \u0438\u0445 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u0432\u0438\u0434\u0435.<\/p>\n<p>  <\/p>\n<h4 id=\"razbivaem-na-procedury\">\u0420\u0430\u0437\u0431\u0438\u0432\u0430\u0435\u043c \u043d\u0430 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b<\/h4>\n<p>  <\/p>\n<p>\u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0430\u0443\u0447\u0438\u043c \u043d\u0430\u0448 \u043a\u043e\u0434 \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0442\u044c \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u043f\u043e\u0442\u043e\u043a \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u043d\u0430 \u043b\u0435\u043a\u0441\u0435\u043c\u044b (\u043d\u0435\u0434\u0435\u043b\u0438\u043c\u044b\u0435 \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u043b\u0435\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0435\u0434\u0438\u043d\u0438\u0446\u044b). \u042d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u043e\u043c; \u043d\u0430\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u043e\u0438\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0430\u0440\u0441\u0435\u0440. \u041d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432 \u2014 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0442\u0435\u043c\u0430, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432 \u0438 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0435 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0439 \u043f\u0430\u0440\u0441\u0435\u0440\u2026 \u041c\u044b \u043f\u043e\u0439\u0434\u0435\u043c \u0441\u0432\u043e\u0438\u043c \u043f\u0443\u0442\u0435\u043c.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0436\u0434\u0435, \u0447\u0435\u043c \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043f\u0430\u0440\u0441\u0435\u0440\u0430, \u043e\u0431\u0440\u0430\u0442\u0438\u043c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0432\u0441\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c \u043d\u0430 \u0434\u0432\u0430 \u043a\u043b\u0430\u0441\u0441\u0430:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u041e\u0431\u044b\u0447\u043d\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b;<\/li>\n<li>\u0421\u0438\u043c\u0432\u043e\u043b\u044b-\u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u0438.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0422\u0430\u043a, \u0432 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0435 \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u0438\u044f <strong>\u201cx = 15 + y^2\u201d<\/strong> \u0441\u0438\u043c\u0432\u043e\u043b\u044b <strong>x,1,5,y<\/strong> \u0438 <strong>2<\/strong> \u2013 \u0435\u0441\u0442\u044c \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b, \u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u044b <strong>\u201c\u043f\u0440\u043e\u0431\u0435\u043b\u201d<\/strong>, <strong>+<\/strong>,<strong>^<\/strong> \u2014 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u0438. \u0427\u0435\u043c \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044f? \u0420\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u2013 \u0432\u0441\u0435\u0433\u0434\u0430 \u043e\u0442\u0434\u0435\u043b\u044f\u0435\u0442 \u043e\u0434\u043d\u0443 \u043b\u0435\u043a\u0441\u0435\u043c\u0443 \u043e\u0442 \u0434\u0440\u0443\u0433\u043e\u0439. \u041d\u0430\u0448 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u0438\u044f, \u0431\u0443\u0434\u0443\u0447\u0438 \u0440\u0430\u0437\u0431\u0438\u0442 \u043d\u0430 \u043b\u0435\u043a\u0441\u0435\u043c\u044b, \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a: <strong>\u201cx\u201d, \u201c=\u201d, \u201d15\u201d, \u201cy\u201d, \u201c^\u201d, \u201c2\u201d<\/strong>. <\/p>\n<p>  <\/p>\n<p>\u041a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u043d\u0435 \u0432\u0441\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u0438 \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430 (\u043f\u0440\u043e\u0431\u0435\u043b\u044b, \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442). \u0411\u0443\u0434\u0435\u043c \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044f\u043c\u0438 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0442\u0438\u043f\u0430. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u0438 \u0431\u0443\u0434\u0443\u0442 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044f\u043c\u0438 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0442\u0438\u043f\u0430.<\/p>\n<p>  <\/p>\n<p>\u0412\u0445\u043e\u0434\u043e\u043c \u043f\u0430\u0440\u0441\u0435\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0430, \u0432\u044b\u0445\u043e\u0434\u043e\u043c \u2013 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u0445 \u043b\u0435\u043a\u0441\u0435\u043c. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043d\u0430\u043a\u043e\u043f\u0438\u0442\u0435\u043b\u044f \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u2013 \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440. \u041f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u0443\u0441\u0442\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443.<\/p>\n<p>  <\/p>\n<p>\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0442\u0430\u043a\u0438\u043c: \u0447\u0438\u0442\u0430\u0435\u043c \u0441\u0438\u043c\u0432\u043e\u043b \u0437\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u043c \u0432\u0445\u043e\u0434\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443. \u0415\u0441\u043b\u0438 \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u043b\u0441\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0441\u0438\u043c\u0432\u043e\u043b, \u043a\u043e\u043d\u043a\u0430\u0442\u0435\u043d\u0438\u0440\u0443\u0435\u043c \u0435\u0433\u043e \u0441 \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u043e\u043c. \u0415\u0441\u043b\u0438 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c, \u0442\u043e:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0414\u043b\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 (\u0435\u0441\u043b\u0438 \u043e\u043d \u043d\u0435\u043f\u0443\u0441\u0442) \u0432 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u043f\u0438\u0441\u043e\u043a, \u043e\u0447\u0438\u0449\u0430\u0435\u043c \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u0447\u0442\u0435\u043d\u0438\u044e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430;<\/li>\n<li>\u0414\u043b\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044f \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c \u0432 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0435\u043f\u0443\u0441\u0442\u043e\u0433\u043e \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430, \u0430 \u0432\u0441\u043b\u0435\u0434 \u0437\u0430 \u043d\u0438\u043c \u0437\u0430\u043d\u043e\u0441\u0438\u043c \u0432 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0440\u0438\u043d\u044f\u0442\u044b\u0439 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0442\u0438\u043f\u0430 (\u043a\u0430\u043a \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u043b\u0435\u043a\u0441\u0435\u043c\u0443), \u043e\u0447\u0438\u0449\u0430\u0435\u043c \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u0447\u0442\u0435\u043d\u0438\u044e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0412\u043e\u0442 \u043a\u043e\u0434 \u043f\u0430\u0440\u0441\u0435\u0440\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"lisp\">(defun parser (txt &amp;optional (d1 \" ,\") (d2 \"()+-*\/\\^=&lt;&gt;%\"))   (let ((res nil)         (lex \"\") )    (iter (for s in-string (strCat txt (strLeft d1 1)))      (cond ((plusp (strInd d1 s))             (when (&gt; (strLen lex) 0) (collecting lex into res))                   (setq lex \"\"))            ((plusp (strInd d2 s))              (when (&gt; (strLen lex) 0) (collecting lex into res))                   (collecting s into res)                     (setq lex \"\"))            (t (setq lex (strCat lex s))))) res))<\/code><\/pre>\n<p>  <\/p>\n<p>\u0423 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043a\u0440\u043e\u043c\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0434\u0432\u0430 \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445: <strong>d1<\/strong> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u0442\u0440\u043e\u043a\u0443, \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0435\u0441\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0442\u0438\u043f\u0430, \u0430 \u0441\u0442\u0440\u043e\u043a\u0430 <strong>d2<\/strong> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u0438 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0442\u0438\u043f\u0430.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0430\u044f \u043b\u043e\u0433\u0438\u043a\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <strong>parser<\/strong> \u043e\u043f\u0438\u0441\u0430\u043d\u0430 \u0432\u044b\u0448\u0435. \u0421\u043b\u0435\u0434\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u043a \u043a\u043e\u043d\u0446\u0443 \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c. \u042d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u0430\u044f \u043b\u0435\u043a\u0441\u0435\u043c\u0430 \u043d\u0430 \u201c\u0437\u0430\u0432\u0438\u0441\u043b\u0430\u201d \u0432 \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0435 (\u0440\u043e\u043b\u044c \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 \u0438\u0433\u0440\u0430\u0435\u0442 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <strong>lex<\/strong>).<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u043d\u0430\u0448 \u043f\u0430\u0440\u0441\u0435\u0440 \u201c\u0432 \u0434\u0435\u043b\u0435\u201d:<\/p>\n<p>  <\/p>\n<pre><code class=\"lisp\">(parser \"x = 15 + y^2\") ==&gt; (\"x\" \"=\" \"15\" \"+\" \"y\" \"^\" \"2\")<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412\u0441\u0435 \u0432\u0435\u0440\u043d\u043e, \u043d\u0435 \u0442\u0430\u043a \u043b\u0438? \u041d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u0430\u043c\u0438 \u0441\u0442\u0440\u043e\u043a \u2013 \u044d\u0442\u043e \u043d\u0435 \u0432\u043f\u043e\u043b\u043d\u0435 \u043f\u043e-\u043b\u0438\u0441\u043f\u043e\u0432\u0441\u043a\u0438. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043e\u0442 \u0441\u043f\u0438\u0441\u043a\u043e\u0432 \u0441\u0442\u0440\u043e\u043a \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u0441\u043f\u0438\u0441\u043a\u0443 \u0430\u0442\u043e\u043c\u043e\u0432. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f\u2026 \u0441\u043a\u043b\u0435\u0438\u0442 \u0432\u0441\u0435 \u043b\u0435\u043a\u0441\u0435\u043c\u044b \u043e\u043f\u044f\u0442\u044c \u0432 \u0434\u043b\u0438\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 (\u043d\u043e \u043c\u0435\u0436\u0434\u0443 \u043b\u0435\u043a\u0441\u0435\u043c\u0430\u043c\u0438 \u0432\u0441\u0442\u0430\u0432\u0438\u0442 \u043f\u043e \u043f\u0440\u043e\u0431\u0435\u043b\u0443), \u043f\u043e\u0442\u043e\u043c \u043a \u043d\u0430\u0447\u0430\u043b\u0443 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u0440\u0438\u043a\u043b\u0435\u0438\u0442 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0443\u044e \u0441\u043a\u043e\u0431\u043a\u0443, \u043a \u043a\u043e\u043d\u0446\u0443 \u2013 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0443\u044e\u2026 \u0430 \u0437\u0430\u0442\u0435\u043c \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442 \u041b\u0438\u0441\u043f \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a:<\/p>\n<p>  <\/p>\n<pre><code class=\"lisp\">(defun mk-intf (txt)   (let ((lex (parser txt \" ,\" \"()+-*\/\\^=&lt;&gt;%\"))         (intf \"\"))    (iter (for a in lex) (setq intf (strCat intf a \" \")))    (input (strCat \"(\" intf \")\"))))<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c, \u0435\u0441\u043b\u0438 \u043f\u043e\u0434\u0430\u0442\u044c \u043d\u0430 \u0432\u0445\u043e\u0434 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 mk-intf \u043d\u0430\u0448 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u0438\u044f, \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043c:<\/p>\n<p>  <\/p>\n<pre><code class=\"lisp\">(mk-intf \"x = 15 + y^2\") ==&gt; (X = 15 + Y ^ 2)<\/code><\/pre>\n<p>  <\/p>\n<p>\u0427\u0442\u043e, \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u0442\u0435\u0441\u044c, \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043f\u0440\u0438\u044f\u0442\u043d\u0435\u0435.<\/p>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e start: \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0447\u0438\u0442\u0430\u0442\u044c \u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0446\u0435\u043b\u044b\u0435 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b:<\/p>\n<p>  <\/p>\n<pre><code class=\"lisp\">(defun start (&amp;optional (fname nil))    (setq *numline* 0)    (setq *flagerr* nil)    (when (null fname)          (setq fname (sysGetOpenName (sysHome) \"\u041c\u0438\u043d\u0438-\u0431\u044d\u0439\u0441\u0438\u043a|*.mbs\")))    (when fname             (let ((fi (gensym 'fi)))            (filOpen fi fname _INPUT)            (loop                (let ((curr-proc (action-proc fi)))                     (when (or *flagerr* (filEOF fi)) (return t))                     (eval curr-proc)))            (filClose fi))            (when *flagerr* (printsline \"**** \u0411\u044b\u043b\u0438 \u043d\u0430\u0439\u0434\u0435\u043d\u044b \u043e\u0448\u0438\u0431\u043a\u0438\")))    (unset '*numline*)    (unset '*flagerr*))<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 \u0442\u0435\u043b\u0435 \u0446\u0438\u043a\u043b\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f <strong>action-proc<\/strong> (\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443), \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u0443\u0436\u0435 \u043d\u0430 \u041b\u0438\u0441\u043f\u0435. \u0422\u0435\u043b\u043e \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b, \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u043e\u0435 \u043a\u0430\u043a S-\u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <strong>curr-proc<\/strong>, \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0437\u0430\u0442\u0435\u043c \u043d\u0430 \u0432\u0445\u043e\u0434 <strong>eval<\/strong>. \u0418 \u043f\u0440\u0438\u043d\u044f\u0442\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u201c\u0440\u0435\u0438\u043d\u043a\u0430\u0440\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f\u201d \u0432 \u0441\u0440\u0435\u0434\u0435 \u041b\u0438\u0441\u043f!<\/p>\n<p>  <\/p>\n<p>\u0427\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u0430 \u0434\u0435\u043b\u0430\u0442\u044c <strong>action-proc<\/strong>? \u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430. \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0447\u0438\u0442\u0430\u0435\u0442 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u0441\u0442\u0440\u043e\u043a\u0443 \u0437\u0430 \u0441\u0442\u0440\u043e\u043a\u043e\u0439, \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043f\u0443\u0441\u0442\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438, \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u0430\u0440\u0441\u0438\u0442, \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 \u0432 \u0444\u043e\u0440\u043c\u0443 \u0441\u043f\u0438\u0441\u043a\u0430, \u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0442\u0435\u043b\u043e \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b.<\/p>\n<p>  <\/p>\n<p>\u041c\u044b \u0431\u0443\u0434\u0435\u043c \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u201c\u0443\u0447\u0438\u0442\u044c\u201d <strong>action-proc<\/strong> \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438. \u0418 \u043d\u0430\u0447\u043d\u0435\u043c \u0441 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043d\u0430\u0443\u0447\u0438\u043c \u043d\u0430\u0448\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u0442\u044c \u043d\u0430\u0447\u0430\u043b\u043e \u0438 \u043a\u043e\u043d\u0435\u0446 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b. \u0412 \u043c\u0438\u043d\u0438-\u0431\u044d\u0439\u0441\u0438\u043a\u0435 \u043d\u0430\u0447\u0430\u043b\u043e \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u0438\u043c\u0435\u0435\u0442 \u0432\u0438\u0434:<\/p>\n<p>  <\/p>\n<pre><code>proc name(p1,p2,p3)<\/code><\/pre>\n<p>  <\/p>\n<p>\u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0440\u0430\u0441\u043f\u0430\u0440\u0441\u0438\u0442\u044c \u0442\u0430\u043a\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443:<\/p>\n<p>  <\/p>\n<pre><code class=\"lisp\">(mk-intf \"proc name(p1,p2,p3)\") ==&gt; (PROC NAME (P1 P2 P3))<\/code><\/pre>\n<p>  <\/p>\n<p>\u041a\u0430\u043a \u0436\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0440\u0435\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u044d\u0442\u043e\u0442 \u0432\u0432\u043e\u0434 \u0444\u0443\u043d\u043a\u0446\u0438\u044f <strong>action-proc<\/strong>? \u0412\u043f\u043e\u043b\u043d\u0435 \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e: \u0443\u0431\u0435\u0434\u0438\u0432\u0448\u0438\u0441\u044c, \u0447\u0442\u043e \u0433\u043e\u043b\u043e\u0432\u0430 \u0441\u043f\u0438\u0441\u043a\u0430 \u0435\u0441\u0442\u044c \u0430\u0442\u043e\u043c <strong>PROC<\/strong>, \u043d\u0443\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c \u0432\u0442\u043e\u0440\u043e\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441\u043f\u0438\u0441\u043a\u0430 \u043a\u0430\u043a \u0438\u043c\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0430 \u0442\u0440\u0435\u0442\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u2013 \u043a\u0430\u043a \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432. \u0418\u043c\u044f \u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445. \u041a\u043e\u0433\u0434\u0430 \u0436\u0435 \u043f\u0440\u043e\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 <strong>end_proc<\/strong>, \u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0438\u0437 \u0438\u043c\u0435\u043d\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u0441\u043f\u0438\u0441\u043a\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u0443 <strong>defun<\/strong> \u0441 \u043f\u0443\u0441\u0442\u044b\u043c (\u043f\u043e\u043a\u0430) \u0442\u0435\u043b\u043e\u043c, \u0438 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u044d\u0442\u0443 \u0444\u043e\u0440\u043c\u0443 \u043a\u0430\u043a \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u0412\u043e\u0442 \u043a\u0430\u043a \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442:<\/p>\n<p>  <\/p>\n<pre><code class=\"lisp\">(defun action-proc (fi)    (let ((stmt nil)          (proc-name nil)          (proc-parm nil))     (loop          (setq stmt (mk-intf (getLine fi)))           (when (null stmt) (return t))          (cond ((eq (car stmt) 'proc)                      (setq proc-name (nth 1 stmt))                     (setq proc-parm (nth 2 stmt)))                                    ((eq (car stmt) 'end_proc) (return t))                (t (printsline (strCat \"**** \u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \"                                (output stmt)                                \" \u043d\u0435 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u043d\"))                    (setq *flagerr* t))))     `(defun ,proc-name ,proc-parm (quote OK))))<\/code><\/pre>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u043e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f <strong>defun<\/strong> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u0430\u0442\u043e\u043c <strong>OK<\/strong>.<\/p>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043d\u0430\u0448 \u043a\u043e\u0434 \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438. \u0417\u0430\u043d\u0435\u0441\u0435\u043c \u0432 \u0444\u0430\u0439\u043b 0000.mbs \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434:<\/p>\n<p>  <\/p>\n<pre><code>proc f1(x,y) end_proc  proc f2(x) end_proc<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443 <strong>start<\/strong>, \u0432\u044b\u0431\u0435\u0440\u0435\u043c 0000.mbs \u0438 \u0443\u0432\u0438\u0434\u0438\u043c \u043d\u0430 \u043a\u043e\u043d\u0441\u043e\u043b\u0438:<\/p>\n<p>  <\/p>\n<pre><code>0001 proc f1(x,y) 0002 end_proc 0003 proc f2(x) 0004 end_proc<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u0440\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u041b\u0438\u0441\u043f-\u043c\u0430\u0448\u0438\u043d\u0435 \u0442\u0435\u043f\u0435\u0440\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0434\u0432\u0435 (\u043f\u043e\u043a\u0430 \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435) \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <strong>f1<\/strong> \u0438 <strong>f2<\/strong>:<\/p>\n<p>  <\/p>\n<pre><code class=\"lisp\">(getd 'f1) ==&gt; (EXPR (X Y) (QUOTE OK)) (getd 'f2) ==&gt; (EXPR (X) (QUOTE OK))<\/code><\/pre>\n<p>  <\/p>\n<p>\u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e! \u0418\u0445 \u0443\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c:<\/p>\n<p>  <\/p>\n<pre><code class=\"lisp\">(f1 1 2) ==&gt; OK (f2 2) ==&gt; OK<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u0430\u0448 \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0442\u043e\u0440 \u0441\u0434\u0435\u043b\u0430\u043b \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0434\u043e\u0445\u2026<\/p>\n<p>  <\/p>\n<h4 id=\"vvod-vyvod-i-lokalnye-peremennye\">\u0412\u0432\u043e\u0434, \u0432\u044b\u0432\u043e\u0434 \u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435<\/h4>\n<p>  <\/p>\n<p>\u0410 \u0441\u0435\u0439\u0447\u0430\u0441 \u0441\u0430\u043c\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0443\u0447\u0438\u0442\u044c \u043d\u0430\u0448 \u043d\u043e\u0432\u043e\u0440\u043e\u0436\u0434\u0435\u043d\u043d\u044b\u0439 \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0442\u043e\u0440 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b <strong>input<\/strong>, <strong>print<\/strong> \u0438 <strong>local<\/strong>. <\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u043e\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0432\u0432\u043e\u0434 \u0438 \u043f\u0435\u0447\u0430\u0442\u044c. \u041e\u0431\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0438\u043c\u0435\u044e\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u0443\u044e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443: \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f. \u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 <strong>input x<\/strong> \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u0432 \u0442\u0430\u043a\u0443\u044e \u041b\u0438\u0441\u043f-\u0444\u043e\u0440\u043c\u0443 <strong>(setq x (read))<\/strong>. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 <strong>print x<\/strong> \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u0444\u043e\u0440\u043c\u0443 <strong>(printline x)<\/strong>. \u0414\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u044d\u0442\u0438\u0445 \u0444\u043e\u0440\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <strong>action-proc<\/strong> \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <strong>body<\/strong>. \u0412 \u044d\u0442\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0431\u0443\u0434\u0443\u0442 \u043d\u0430\u043a\u0430\u043f\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0444\u043e\u0440\u043c\u044b, \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u044e\u0449\u0438\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0449\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0414\u0430\u043b\u044c\u0448\u0435 \u0432\u0441\u0435 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e:<\/p>\n<p>  <\/p>\n<pre><code class=\"lisp\">(defun action-proc (fi)    (let ((stmt nil)          (proc-name nil)          (proc-parm nil)          (loc-var nil)          (body nil))     (loop          (setq stmt (mk-intf (getLine fi)))           (when (null stmt) (return t))          (cond ((eq (car stmt) 'proc)                      (setq proc-name (nth 1 stmt))                     (setq proc-parm (nth 2 stmt)))                                    ((eq (car stmt) 'end_proc) (return t))                ((eq (car stmt) 'print)                      (setq body (append body                                 (list (cons 'printline (cdr stmt))))))                ((eq (car stmt) 'input)                      (setq body (append body                        (list (list 'setq (cadr stmt) (list 'read) )))))                (t (printsline (strCat \"**** \u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \"                                (output stmt)                                \" \u043d\u0435 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u043d\"))                               (setq *flagerr* t))))     `(defun ,proc-name ,proc-parm ,@body)))<\/code><\/pre>\n<p>  <\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043c \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a \u043d\u0430 \u043c\u0438\u043d\u0438-\u0431\u044d\u0439\u0441\u0438\u043a\u0435:<\/p>\n<p>  <\/p>\n<pre><code>proc f1(x,y)  print x  print y end_proc  proc f2(x)  input x  print x end_proc<\/code><\/pre>\n<p>  <\/p>\n<p>\u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0435\u0433\u043e \u043f\u0440\u043e\u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u2026 \u0423 \u043d\u0430\u0441 \u043f\u043e\u044f\u0432\u044f\u0442\u0441\u044f \u0434\u0432\u0435 \u043b\u0438\u0441\u043f\u043e\u0432\u0441\u043a\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <strong>f1<\/strong> \u0438 <strong>f2<\/strong>. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0438\u0445 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438 \u0443\u0431\u0435\u0434\u0438\u043c\u0441\u044f, \u0447\u0442\u043e \u043e\u043d\u0438 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0432\u0435\u0440\u043d\u043e:<\/p>\n<p>  <\/p>\n<pre><code class=\"lisp\">(getd 'f1) ==&gt; (EXPR (X Y) (PRINTLINE X) (PRINTLINE Y)) (getd 'f2) ==&gt; (EXPR (X) (SETQ X (READ)) (PRINTLINE X))<\/code><\/pre>\n<p>  <\/p>\n<p>\u041c\u043e\u0436\u043d\u043e \u0438 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0438 \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043e\u043d\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a, \u043a\u0430\u043a \u0438 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u043b\u043e\u0441\u044c. \u041f\u0443\u0441\u0442\u044c \u0432\u0430\u0441 \u043d\u0435 \u0441\u043c\u0443\u0449\u0430\u0435\u0442, \u0447\u0442\u043e \u043c\u044b \u0432\u0432\u043e\u0434\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e-\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u2013 \u043f\u0440\u043e\u0441\u0442\u043e \u0443 \u043d\u0430\u0441 \u043d\u0435\u0442 \u043f\u043e\u043a\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445\u2026 \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0438\u0445 \u0434\u043e\u0431\u0430\u0432\u0438\u043c.<\/p>\n<p>  <\/p>\n<p>\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 <strong>local<\/strong> \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u043b\u044e\u0431\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u0438 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0442\u044c\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0430. \u0415\u0441\u043b\u0438 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u043b\u0441\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 <strong>local<\/strong>, \u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u0437\u044f\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439. \u041f\u043e\u0441\u043b\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 <strong>end_proc<\/strong> \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u0443 <strong>let<\/strong> \u0438 \u201c\u0437\u0430\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432 \u043d\u0435\u0435\u201d \u0432\u0441\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b (\u043f\u043e\u043a\u0430 \u2013 \u0442\u043e\u043b\u044c\u043a\u043e <strong>input<\/strong> \u0438 <strong>print<\/strong>). \u0412\u043e\u0442 \u043a\u0430\u043a \u0442\u0435\u043f\u0435\u0440\u044c \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c <strong>action-proc<\/strong>:<\/p>\n<p>  <\/p>\n<pre><code class=\"lisp\">(defun action-proc (fi)    (let ((stmt nil)          (proc-name nil)          (proc-parm nil)          (loc-var   nil)          (lv        nil)          (body      nil))     (loop          (setq stmt (mk-intf (getLine fi)))           (when (null stmt) (return t))          (cond ((eq (car stmt) 'proc)                      (setq proc-name (nth 1 stmt))                     (setq proc-parm (nth 2 stmt)))                                    ((eq (car stmt) 'end_proc) (return t))                ((eq (car stmt) 'print)                      (setq body (append body                                 (list (cons 'printline (cdr stmt))))))                ((eq (car stmt) 'input)                      (setq body (append body                                 (list (list 'setq (cadr stmt)                                       (list 'read) )))))                ((eq (car stmt) 'local)                      (setq loc-var (append loc-var (cdr stmt))))                (t (printsline (strCat \"**** \u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \"                                (output stmt) \" \u043d\u0435 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u043d\"))                                (setq *flagerr* t))))     (iter (for a in (setof loc-var)) (collecting (list a 0) into lv))                `(defun ,proc-name ,proc-parm (let ,lv ,@body))))<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u043f\u0438\u0441\u043e\u043a \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043d\u0430\u043a\u0430\u043f\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <strong>loc-var<\/strong>. \u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0430\u0440 \u0432\u0438\u0434\u0430 <strong>(\u0438\u043c\u044f 0)<\/strong>. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435\u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0435 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u0438\u043c\u0435\u043d\u2026 \u041a\u0430\u043a \u0435\u0433\u043e \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0442\u0438\u0442\u044c? \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 <strong>local<\/strong> \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c, \u043d\u0435\u0442 \u043b\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f \u0438\u043c\u0435\u043d (\u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u2013 \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435). \u041d\u043e, \u043c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u043b\u0443\u0447\u0448\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0441\u0442\u0440\u0430\u043d\u0438\u0442\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f, \u0447\u0442\u043e \u0438 \u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u044b\u0437\u043e\u0432 <strong>setof<\/strong>. \u0422\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0440\u0443\u0435\u043c \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0432\u043e\u0442 \u044d\u0442\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443:<\/p>\n<p>  <\/p>\n<pre><code>proc f1(x,y)  local a,b,c  print x  print y  input a  print a end_proc<\/code><\/pre>\n<p>  <\/p>\n<p>\u0423\u0431\u0435\u0436\u0434\u0430\u0435\u043c\u0441\u044f, \u0447\u0442\u043e \u043e\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a, \u043a\u0430\u043a \u0438 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c. \u041d\u043e \u0432\u0441\u0435 \u0441\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 \u0432\u043f\u0435\u0440\u0435\u0434\u0438! <\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/yadi.sk\/d\/Y-dPb7h13ZrPSb\">\u041e\u0442\u0441\u044e\u0434\u0430<\/a> \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u043e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043c\u044b \u0441 \u0432\u0430\u043c\u0438 \u043d\u0430<del>\u0448<\/del>\u043a\u043e\u0434\u0438\u043b\u0438&#8230;<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442!  <\/p>\n<\/div>\n<p>        <script class=\"js-mediator-script\">!function(e){function t(t,n){if(!(n in e)){for(var r,a=e.document,i=a.scripts,o=i.length;o--;)if(-1!==i[o].src.indexOf(t)){r=i[o];break}if(!r){r=a.createElement(\"script\"),r.type=\"text\/javascript\",r.async=!0,r.defer=!0,r.src=t,r.charset=\"UTF-8\";var d=function(){var e=a.getElementsByTagName(\"script\")[0];e.parentNode.insertBefore(r,e)};\"[object Opera]\"==e.opera?a.addEventListener?a.addEventListener(\"DOMContentLoaded\",d,!1):e.attachEvent(\"onload\",d):d()}}}t(\"\/\/mediator.mail.ru\/script\/2820404\/\",\"_mediator\")}(window);<\/script>     <br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/post\/419103\/\"> https:\/\/habr.com\/post\/419103\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div data-io-article-url=\"https:\/\/habr.com\/post\/419103\/\" class=\"post__text post__text-html js-mediator-article\">\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 \u041b\u0438\u0441\u043f\u0435\u2026 \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0442\u043e\u0440 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0438\u043c\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430. \u041d\u0435\u0442-\u043d\u0435\u0442, \u044f \u043d\u0435 \u043e\u0448\u0438\u0431\u0441\u044f \u2013 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0442\u043e\u0440. \u0422\u0440\u0430\u043d\u0441\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0432 \u041b\u0438\u0441\u043f-\u043a\u043e\u0434. \u0410 \u0434\u0430\u043b\u044c\u0448\u0435 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d \u041b\u0438\u0441\u043f-\u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439.<\/p>\n<p>  <\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u0431\u0435\u0441\u0446\u0435\u043d\u043d\u0443\u044e \u0443\u0441\u043b\u0443\u0433\u0443 \u043d\u0430\u043c \u043e\u043a\u0430\u0436\u0435\u0442 \u0442\u043e \u043e\u0431\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e, \u0447\u0442\u043e \u0432 \u041b\u0438\u0441\u043f\u0435 \u043d\u0435\u0442 \u0431\u0430\u0440\u044c\u0435\u0440\u0430 \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u0434\u043e\u043c \u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 (\u044d\u0442\u043e \u0440\u0435\u0434\u043a\u043e\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u201c\u0433\u043e\u043c\u043e\u0438\u043a\u043e\u043d\u043d\u043e\u0441\u0442\u044c\u201d). \u041d\u043e \u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u041b\u0438\u0441\u043f\u0430 \u0442\u043e\u0436\u0435 \u0441\u044b\u0433\u0440\u0430\u044e\u0442 \u043d\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0440\u043e\u043b\u044c.<\/p>\n<p>  <\/p>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u044f \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <a href=\"https:\/\/habr.com\/post\/137928\/\">HomeLisp<\/a>. \u0416\u0435\u043b\u0430\u044e\u0449\u0438\u0435 \u0441\u043c\u043e\u0433\u0443\u0442 \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e\u0434 Common Lisp. \u0421\u043a\u0430\u0436\u0443 \u0441\u0440\u0430\u0437\u0443 \u2013 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 Common Lisp \u0438 HomeLisp \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0441\u0442\u0440\u043e\u043a \u0438 \u0444\u0430\u0439\u043b\u043e\u0432. <\/p>\n<p>  <\/p>\n<p>\u0421\u043a\u0430\u0447\u0430\u0442\u044c \u043f\u043e\u0440\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e HomeLisp \u043c\u043e\u0436\u043d\u043e \u043f\u043e <a href=\"http:\/\/homelisp.ru\/HomeLispPrt.zip\">\u0441\u0441\u044b\u043b\u043a\u0435<\/a>. \u041d\u0430 <a href=\"http:\/\/homelisp.ru\">\u044d\u0442\u043e\u043c \u0436\u0435<\/a> \u0441\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0430 \u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f. \u0416\u0435\u043b\u0430\u044e\u0449\u0438\u0435 \u043c\u043e\u0433\u0443\u0442 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u0438\u0437 \u0441\u0442\u0430\u0442\u044c\u0438 \u0438 \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c\u0430\u044f \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e \u0442\u0435\u043c\u0430 \u043f\u043e\u0441\u043b\u0443\u0436\u0438\u043b\u0430 \u043e\u0441\u043d\u043e\u0432\u043e\u0439 \u0434\u043b\u044f \u043c\u043e\u0435\u0439 \u043c\u0430\u0441\u0442\u0435\u0440\u0441\u043a\u043e\u0439 <a href=\"http:\/\/school.iis.nsk.su\/lshyup-2018\/masterskie-7\">\u043d\u0430 \u0437\u043d\u0430\u043c\u0435\u043d\u0438\u0442\u043e\u0439 \u041d\u043e\u0432\u043e\u0441\u0438\u0431\u0438\u0440\u0441\u043a\u043e\u0439 \u041b\u0428\u042e\u041f-2018<\/a>. \u0421 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438 \u043c\u0430\u0441\u0442\u0435\u0440\u0441\u043a\u043e\u0439 \u043c\u043e\u0436\u043d\u043e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f <a href=\"https:\/\/github.com\/ssyp-ru\/ssyp18-ws03\">\u0437\u0434\u0435\u0441\u044c<\/a>. \u0410 \u0434\u0430\u043b\u0435\u0435 \u044f \u0438\u0437\u043b\u0430\u0433\u0430\u044e \u0441\u0432\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434. \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u044e, \u0447\u0442\u043e \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c \u0437\u043d\u0430\u043a\u043e\u043c \u0441 \u044f\u0437\u044b\u043a\u043e\u043c \u041b\u0438\u0441\u043f.<\/p>\n<p>  <\/p>\n<h4 id=\"pristupaem\">\u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0435\u043c<\/h4>\n<p>  <\/p>\n<p>\u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u201c\u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0438\u043c\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430\u201d, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u041b\u0438\u0441\u043f.<br \/>  \u042f\u0437\u044b\u043a \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0438\u0441\u043b\u043e\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435. \u041a\u043e\u0434 \u043d\u0430 \u044d\u0442\u043e\u043c \u044f\u0437\u044b\u043a\u0435 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 (\u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f). \u0421\u0440\u0435\u0434\u0438 \u044d\u0442\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043e\u0434\u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f main. \u0418\u043c\u0435\u043d\u043d\u043e \u0441 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430. \u0425\u043e\u0442\u044f \u0437\u0430\u0447\u0435\u043c \u0442\u0430\u043a \u0441\u0435\u0431\u044f \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0442\u044c? \u041f\u0438\u0448\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0430 \u0438\u043c\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u043c \u044f\u0437\u044b\u043a\u0435, \u043e\u043d\u0438 \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432 \u041b\u0438\u0441\u043f \u0438 \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043b\u0438\u0441\u043f\u043e\u0432\u0441\u043a\u0438\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438. \u041d\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0437\u0430\u0431\u0435\u0433\u0430\u0442\u044c \u0432\u043f\u0435\u0440\u0435\u0434&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-287727","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/287727","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=287727"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/287727\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=287727"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=287727"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=287727"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}