REM Start of BASIC! Program gosub gr_functions gosub words !include ../functions/graphics !fon_l(white) gr.open 255,255,255,255,0,1 gr.screen sw,sh lt=int(sw/4) tp=int(sh/4) rt=int(sw/4)*3 bt=int(sh/4)*2 !! ********** lt=0 tp=0 rt=sw bt=sh ********** !! !cl(red,1) gr.set.stroke 1 gr.color 255,255,0,0,0 gr.rect r,lt,tp,rt,bt !fl(black) gr.color 255,0,0,0,1 DO fnld=Textscroll(a$[],lt,tp,rt,bt,10,2,fnld) gr.render UNTIL 0 gr_functions: fn.def Textscroll(s$[],lt,tp,rt,bt,qstr,ha,lst) !s$[]- Массив прокручеваемого текста. !lt , rt- координаты левого и правого края поля. !tp , bt- координата верхнего и нижнего края поля. !qstr - количество строк поля. ! ha - выравнивание текста по-горизонтали ! значения 1-слева, 2-по центру, 3-справа. !lst-входящие данные функции !вызов функции должен иметь вид data=Textscroll(.....,data) IF lst=0 THEN list.create n,lst txsize=int((bt-tp)/qstr) gr.text.size txsize gr.text.align ha dim string[qstr+1] for i=1 to qstr+1 if ha=1 then gr.text.draw string[i], lt,tp+txsize*i,s$[++t] elseif ha=2 then gr.text.draw string[i],lt+int((rt-lt)/2), tp+txsize*i,s$[++t] elseif ha=3 then gr.text.draw string[i],rt, tp+txsize*i,s$[++t] endif list.add lst, string[i] next gr.color 80,0,0,0,0 gr.set.stroke 1 gr.text.size (bt-tp)/3 gr.text.align 3 gr.text.draw arrup,rt,(bt-tp)/3+tp,chr$(11014) gr.text.draw arrdown,rt,(bt-tp)/3*2.71+tp,chr$(11015) list.add lst,t list.add lst,0 ss=txsize*1.3 gr.set.stroke ss gr.color 10,0,0,0,0 for sm=1 to 10 gr.rect shadow,lt-ss/2+sm,tp-ss/2+sm,rt+ss/2-sm,bt+ss/2-sm next gr.color 255,255,255,255,0 gr.rect ramka,lt-ss/2,tp-ss/2,rt+ss/2,bt+ss/2 ENDIF v=1 dim y[qstr+1] txsize=int((bt-tp)/qstr) array.length n, s$[] List.toArray lst, strings[] List.get lst, qstr+2, t list.get lst, qstr+3,bool gr.bounded.touch tchd,lt,tp,rt,bt if tchd=1 then do gr.bounded.touch utch,lt,tp,rt,(bt-tp)/2+tp gr.bounded.touch dtch,lt,(bt-tp)/2+tp,rt,bt vect=-utch*v+dtch*v for i=1 to qstr+1 if vect>0 & t<>0 then gr.move strings[i],0,vect if vect<0 & t<=n then gr.move strings[i],0,vect gr.get.position strings[i],xpos,y[i] if y[i]<=tp & vect <0 then if bool=0 then bool=1 if bool=2 then t=t+qstr: bool=1 if bool=3 then t=t+qstr+1:bool=1 if t<=n then t++ if t>n then bool=4 if t<=n then gr.modify strings[i],"y",bt+txsize,"text",s$[t] elseif y[i]>bt+txsize & vect>0 then if bool=1 then bool=2 : t=t-(qstr) if bool=0 then bool=2 if bool=4 then t=t-(qstr+1):bool=2 block=0 if t>0 then t-- if t=0 then bool=3 if t>0 then gr.modify strings[i],"y",tp,"text",s$[t] endif next sv++ if mod(sv,2)=0 then gr.render until utch=0 & dtch=0 endif List.replace lst, qstr+2, t list.replace lst,qstr+3,bool fn.rtn lst fn.end return words: s$="История искусственного интеллекта как нового научного направления начинается в середине XX века. К этому времени уже было сформировано множество предпосылок его зарождения: среди философов давно шли споры о природе человека и процессе познания мира, нейрофизиологи и психологи разработали ряд теорий относительно работы человеческого мозга и мышления, экономисты и математики задавались вопросами оптимальных расчётов и представления знаний о мире в формализованном виде; наконец, зародился фундамент математической теории вычислений — теории алгоритмов — и были созданы первые компьютеры. Возможности новых машин в плане скорости вычислений оказались больше человеческих, поэтому в учёном сообществе зародился вопрос: каковы границы возможностей компьютеров и достигнут ли машины уровня развития человека? В 1950 году один из пионеров в области вычислительной техники, английский учёный Алан Тьюринг, пишет статью под названием Может ли машина мыслить?, в которой описывает процедуру, с помощью которой можно будет определить момент, когда машина сравняется в плане разумности с человеком, получившую название теста Тьюринга. eof" !s$="а б в г д е ё ж з и " list.create s,lst for i=1 to len(s$) d$=d$+mid$(s$,i,1) if mid$(s$,i,1)=" " then list.add lst,d$ d$="" endif next List.toArray lst, a$[] return