@@ -1,5 +1,8 @@ -c1ET16G! +\ +\ +\/d ГЛАВА I. ОСНОВНЫЕ ОБъЕКТЫ MSX-BASIC +\/d- @@ -11,8 +14,7 @@ в беспорядке алфавит. Ж. Кокто Multum in parvo. - Лат. изречение - + Латинское изречение Основой любого языка программирования является алфавит - набор допусти- мых литер, которые можно использовать для записи программ. @@ -25,23 +27,24 @@ не то же самое, что и графически похожие символы - р у с с к и е буквы А , В , С , Е , Н , К , М , О , Р , Т , Х , У; для компьютера - это р а з л и ч н ы е символы; + b) арабские цифры 0,1,2,3,4,5,6,7,8,9 (нуль перечеркивается: 0); c) дополнительные символы: с и м в о л д е й с т в и е пробел - = знак равенства или присваивания - + знак плюс или символ сцепления - - знак минус - * знак умножения (звездочка) - / знак деления - ^ знак возведения в степень - ( левая скобка - ) правая скобка + = равенство или присваивание + + плюс или сцепление + - минус + * умножение (звездочка) + / деление + ^ возведение в степень + ( левая круглая скобка + ) правая круглая скобка % процент # номер - $ знак доллара + $ знак "доллар" ! восклицательный знак [ левая квадратная скобка ] правая квадратная скобка @@ -50,15 +53,19 @@ " кавычки ' апостроф (для комментария) ; точка с запятой + + + + + & амперсенд (коммерческое "и") : двоеточие - ? знак вопроса + ? вопросительный знак < меньше > больше \ обратная косая черта - @ знак цены (коммерческое "at") + @ цена (коммерческое "at") _ подчеркивание - По-видимому, символ "@" изобрели коммерсанты,которым настолько некогда, что нет времени дописать как следует палочку буквы "t". Отметим, что пробел - такой же символ алфавита, как и все другие, хотя @@ -67,15 +74,10 @@ d) служебные слова. Назначение служебных слов будет объяснено в даль- нейшем по мере их введения. - - I.2. КОНСТАНТЫ. ОДИНАРНАЯ И ДВОЙНАЯ ТОЧНОСТЬ - Представление данных - это сущность программирования. Ф. Брукс - - Величина в программировании - это объект, с которым связывается опреде- ленное множество значений. К о н с т а н т ы - это величины, значения которых не изменяются во @@ -88,9 +90,7 @@ MSX-BASIC, заключеннaя в кавычки. Отметим, что только в строковых констан- тах наряду с латинскими буквами,цифрами и дополнительными символами допус- кается использование букв русского алфавита (прописных и строчных). - Например: 1) "MSX-BASIC"; 2) "Я М А Х А"; 3) "αβ7?* !&". - Информация, которая заключена внутри кавычек, называется з н а ч е- н и е м строковой константы, а количество символов внутри кавычек - ее д л и н о й. @@ -123,10 +123,8 @@ тить десятичную точку в мантиссе, чтобы получить значение представляемой константы в виде целой десятичной константы или десятичной константы с фиксированной точкой. - Например: 235.9888E-7 = .000023598888 235D+6 = 235000000 . - Допустимый интервал констант с плавающей точкой -от 10^(-64) до 10^63. З а м е ч а н и е. Строго говоря, понятие м а н т и с с ы , введенное выше, отличается от соответствующего понятия в вычислительной математике. @@ -174,12 +172,12 @@ необходимо выполнить следующие преобразования: записать абсолютную величи- ну числа,инвертировать каждый бит полученного числа (т.е. заменить все 1 на 0, а все 0 на 1), затем добавить 1 к самому младшему разряду (крайнему -правому) (игнорируя возможный перенос 1 из старшего бита). Однако,Вам эти +правому) (игнорируя возможный перенос 1 из старшего бита). Однако Вам эти преобразования самим делать не нужно, так как все подпрограммы ввода-выво- да выполняют это автоматически. Такая кодировка позволяет экономить аппа- ратуру компьютера, так как при ней положительные и отрицательные числа об- рабатываются абсолютно одинаково. - Например, покажем, что двоичное число (-1) в дополнительном коде есть + Например, покажем, что двоичное число -1 в дополнительном коде есть &B1111111111111111 . В самом деле, -1 ──▶ 0000000000000001 ──▶ 1111111111111110 ──▶ 1111111111111110 + @@ -190,7 +188,7 @@ дулю 65536 (2 в степени 16);ее основное достоинство состоит в том,что она дает одинаковые в двоичном представлении результаты независимо от того, как понимаются операнды: как числа со знаком в диапазоне от -32768 до -+32767 или как числа без знака в диапазоне от 0 до 65535.Однако,при выпол- ++32767 или как числа без знака в диапазоне от 0 до 65535.Однако при выпол- нении деления возможно возникновение ошибочной ситуации, если делитель - нуль или частное не умещается в 16 разрядов (переполнение, возникающее,на- пример,при делении целого числа -32768 на целое число -1). @@ -215,30 +213,25 @@ граммисту было удобно пользоваться ими, а не оговаривать какой-то другой вариант. Десятичная константа одинарной точности - это десятичная числовая кон- -станта, состоящая не более, чем из 6 значащих цифр и записанная в соответ- -ствии с одним из следуюших правил: +станта, состоящая не более чем из 6 значащих цифр и записанная в соответ- +ствии с одним из следующих правил: 1) в виде десятичной константы с плавающей точкой с использованием в своей записи латинской буквы E; 2) в виде десятичной константы с фиксированной точкой, за которой сле- дует символ "!" (восклицательный знак); - П р и м е р ы: 6.23E3 , -1.09E-6 , 22.5! , .4! ───────────── Десятичная константа двойной точности - это десятичная числовая конс- -танта, состоящая не более, чем из 14 значащих цифр, записанная в одной из +танта, состоящая не более чем из 14 значащих цифр, записанная в одной из следующих форм: 1) в виде десятичной константы с фиксированной точкой или без нее(прин- цип умолчания!); 2) в виде десятичной константы с фиксированной точкой, за которой сле- дует символ "#";. 3) в виде десятичной константы с плавающей точкой с использованием в -своей записи буквы D вместо буквы Е. - +записи буквы D вместо буквы Е. П р и м е р ы: 56, -409345153489, .345#, -1.09433D-06 . ───────────── - - - I.3. ПЕРЕМЕННЫЕ @@ -246,7 +239,6 @@ названия. Иначе зачем бы их вообще давали? Л.Кэролл. Алиса в Зазеркалье - Возможности вычислительной машины были бы слишком ограничены, если бы при работе с ней можно было использовать только постоянные величины (кон- станты). Поэтому в любом языке программирования есть средства,позволяющие @@ -325,7 +317,7 @@ Например, A#,A!,A$,A% - разные переменные, однако, A и А# - два имени одной и той же переменной. В следующей в а ж н о й таблице указано количество байтов памяти ЭВМ -YAMAHA (1 байт=8 бит), занимаемых переменной в зависимости от типа. +YAMAHA (1 байт = 8 битам), занимаемых переменной в зависимости от типа. ┌───────────────────┬───────────────────────────────────┐ │ Тип переменной │ Количество байтов │ ├───────────────────┼───────────────────────────────────┤ @@ -348,7 +340,7 @@ можно рассматривать байты как информационные символы, хотя в памяти ком- пьютера помимо них хранится и другая информация, например, константы или команды.Более крупная единица памяти компьютера называется к и л о б а й- -т о м (1 Кбайт), причем, 1 Кбайт = 1024 байтам. Отметим,что в 8 Кбайт мож- +т о м (1 Кбайт), причем, 1 Кбайт=1024 байтам. Отметим,что в 8 Кбайтов мож- но записать примерно ч е т ы р е страницы машинописного текста. Далее, 1024 Кбайта равны 1 мегабайту (1 Мбайт) (от греч."megas" - "большой"), 1024 Мбайта равны 1 гигабайту (1 Гбайт) (от греч."gigas" - "гигантский"), @@ -356,12 +348,8 @@ Заметим, что слово "byte"("байт") произошло от слова "bite"("кусок"),в котором, чтобы не путать при чтении, букву "i" заменили на букву "y"; про- изношение обоих слов осталось одинаковым. - - - I.4. ПОНЯТИЕ ОПЕРАТОРА . ОПЕРАТОР DEF - O п е р а т о р - это конструкция языка программирования,которая пред- писывает выполнять определенные действия над заданными объектами, либо ус- танавливает последовательность, в которой должны выполняться другие дейст- @@ -401,7 +389,7 @@ тервал записывается с помощью двух букв, разделенных знаком "-" (минус). Например, DEFINT A,J-M В программе, содержащей указанный оператор, любая переменная, имя кото- -рой начинается с A,J,K,L,M, являются переменной ц е л о г о т и п а (не- +рой начинается с A,J,K,L,M, является переменной ц е л о г о т и п а (не- зависимо от того, оканчивается ли ее имя знаком %). Так, переменные с име- нами AARD, J2, K, LOOP будут определяться как целые переменные. Итак, магическое служебное слово, используемое в операторе DEF для опи- @@ -412,7 +400,7 @@ DEFDBL ("DouBLe"-"двойной") можно задавать начальные буквы имен с т р о к о в ы х переменных и пе- ременных о д и н а р н о й и д в о й н о й точности соответственно. Од- -нако, действие оператора DEF в любой его модификации отменяется, если тип +нако действие оператора DEF в любой его модификации отменяется, если тип переменной указан в явном виде (символами %, #, $, ! после имени перемен- ной), то есть,говоря другими словами,действие оператора DEF не распростра- няется на переменные, после имени которых следует один из символов: @@ -434,7 +422,7 @@ букв, а именно: ч и с л о в ы м переменным присваивается значение н у л ь , а с т р о к о в ы м - значение строки, имеющей длину 0 (такой строкой яв- -ляется "пустая" строка: ""). +ляется пустая строка: ""). Во многих программах используются только целые и символьные переменные. В начале таких программ обычно ставится оператор DEFINT A-Z, а символьные переменные указываются индивидуально признаком $. Задание всех числовых @@ -443,12 +431,10 @@ I.5. МАССИВЫ ПЕРЕМЕННЫХ . ОПЕРАТОР ERASE - Фома идет в реку. Фома не труслив, Хоть там аллигаторов целый м а с с и в. Почти по С.Михалкову - Для возможности о д н о т и п н о й обработки большой совокупности данных в программировании введено понятие м а с с и в а. М а с с и в - это конечное множество значений (числовых или строковых), @@ -481,7 +467,6 @@ щественные константы, представляющие значения индексов, в целые константы, на что расходуется машинное время. Например, целесообразно писать A(K%), а не A(К). - П р и м е р ы: ───────────── 1) C%(100) @@ -489,7 +474,7 @@ тип элементов массива - целочисленный размерность - одномерный количество элементов - 100 + 1 = 101 - имена элементов массива - C%(0),C%(1),...,C%(100; + имена элементов массива - C%(0),C%(1),...,C%(100); 2) A(5,10) имя массива - А @@ -513,7 +498,7 @@ для них место в памяти ("зарезервировать место"). Это осуществляется при помощи специального оператора о б ъ я в л е н и я (описания) м а с с и- в о в. - Его структура: DIM α, δ, β,... , + Его структура: DIM α, δ, β,... где DIM ("DIMension"- "размерность") - служебное слово; α, δ, β,...- список описателей размерности встречаемых в программе массивов; описатели отделяются друг от друга запятой. @@ -585,15 +570,11 @@ Однако о б я з а т е л ь н о в е р н и т е с ь к нему позднее! - I.6. ИМЕНА, ЗНАЧЕНИЯ И ТИПЫ - Часто оказывается труднее хранить богатства, чем добывать их. Демосфен - - Ясно, что цель программы состоит в вычислении з н а ч е н и й . В свою очередь компьютер оперирует не со значениями,а скорее с п р е д с т а в- л е н и я м и значений,которые являются конфигурациями байтов памяти ЭВМ. @@ -614,7 +595,7 @@ есть и м я константы типа "целое" и фиксированного з н а ч е н и я 134 (сто тридцать четыре). Для констант тип и значение выводятся непосредственно из и м е н и. -Язык MSX-BASIC, как и многие другие языки программирования позволяют про- +Язык MSX-BASIC, как и многие другие языки программирования, позволяет про- граммисту выбрать другое имя для обозначения константы. Например, програм- мист может связать с константой 3.14159 имя PI при помощи оператора PI = 3.14159 . @@ -626,7 +607,7 @@ метрами выполняемой программы, используют в явной форме многократно в раз- ных местах программы. Такие ситуации осложняют модификацию и расширение программ. Значение символической константы появляется только в одном мес- -те программы, в о б ъ я в л е н и и с и м в о л и ч е с к о й констан- +те программы - в о б ъ я в л е н и и с и м в о л и ч е с к о й констан- ты, которое позволяет связать значение константы с выбранным именем; если появляется необходимость перейти к другому значению,модифицируется только это объявление.(В некоторых языках программирования строго применяется @@ -659,7 +640,6 @@ I.7. ОПЕРАЦИИ - О п е р а ц и я в языке программирования - это совокупность действий, вырабатывающая некоторое значение, называемое р е з у л ь т а т о м опе- рации. @@ -670,12 +650,8 @@ Операции в зависимости от типов операндов и результата делятся на сле- дующие группы: арифметические, отношения, логические, строковые, операции- функции. - - - I.7.1. А р и ф м е т и ч е с к и е о п е р а ц и и - В таблице в порядке уменьшения приоритета перечислены 8 арифметических oпeраций. ┌─────────────────┬──────────────────────────────────────┬─────────────┐ @@ -708,7 +684,6 @@ брасывания дробных частей(операнды должны находиться в интервале от -32768 до +32767), полученное после деления частное преобразуется к целому типу путем отбрасывания дробной части. - П р и м е р ы : 10\4 возвращает 2 , ───────────── 25.68\6.99 возвращает 4 ; b) н а х о ж д е н и е о с т а т к а (вычисление остатка); @@ -716,7 +691,6 @@ пу путем отбрасывания дробных частей; результатом операции является целое число, равное остатку от деления полученных целых чисел (остаток имеет знак делимого). - П р и м е р ы : 10.4 MOD 4 возвращает 2 (10/4=2 и остаток 2), ───────────── 25.68 MOD 6.99 возвращает 1 (25/6=4 и остаток 1), 33567 MOD 2 возвращает сообщение "Overflow" @@ -740,15 +714,11 @@ ет невозможность его использования в качестве делителя. - I.7.2. О п е р а ц и и о т н о ш е н и я. Л о г и ч е с к и е о п е р а ц и и - Tertium non datur. - Лат. изречение - - + Латинское изречение В операциях отношения используются следующие символы(знаки операций от- ношения): о п е р а ц и я проверяемое у с л о в и е п р и м е р ы @@ -804,10 +774,10 @@ │ 0 │ 0 │ 1 │ 0 │ 0 │ 0 │ 1 │ 1 │ └───┴───┴─────┴───────┴──────┴───────┴───────┴───────┘ Операции в таблице перечислены в порядке убывания приоритетов. - Следующие примеры демонстрируют выполнение логических операций.Символы -() указывают на то, что число в круглых скобках записано в двоичной сис- + Следующие ниже примеры демонстрируют выполнение логических операций. +Символы () указывают на то, что число в круглых скобках записано в двоич- ² -теме счисления. +ной системе счисления. П р и м е р ы: ───────────── @@ -877,19 +847,14 @@ рации могут быть использованы для принятия решения о дальнейшем ходе вы- полнения программы (см. раздел III.2.). - - I.7.3. С т р о к о в ы е о п е р а ц и и - 1. Значения строковых переменных могут объединяться с помощью знака "+" - операция к о н к а т е н а ц и и или с ц е п л е н и я ("concatenation"-"сцепление");отметим,что иногда(!)в операторе PRINT знак "+" можно опускать. - П р и м е р: в результате выполнения операции конкатенации вида ─────────── "NEW" + "-YORK" получим строковую константу "NEW-YORK". - 2. Строковые переменные могут сравниваться с помощью тех же операций отношения, что и числовые: = , < , > , <> , <= , >= . С т р о к о в у ю переменную можно сравнивать т о л ь к о со с т р о- @@ -912,22 +877,20 @@ строки одинаковой длины с совпадающими в одинаковых позициях символами считаются равными;в частности, равными считаются две "пустые" строки (""). Отметим,что пробелы в начале и конце строки з н а ч и м ы. - П р и м е р ы: "AA"<>"AB" , ───────────── "ABC"="ABC" , "SM">"S" , "KQ">"KG" , "1AAA"<"2aaa" , " "<"1" (код символа "1" равен 49). - Заметим, что результатом всех приведенных операций отношения в данных -примерах является (-1) для ЭВМ и Т ("истина") для программиста. +примерах является (-1) - для ЭВМ и Т ("истина") - для программиста. Напомним, что компьютер различает строчные и прописные буквы в значени- ях строковых переменных по величине кода ASCII ! - Ясно, что строковые операции могут быть эффективно использованы для -с о р т и р о в к и строк (расположения их в алфавитном порядке (см.при- -мер 5 в разделе IV.4.1.). - Однако, будьте очень осторожными, используя выражения с н е с к о л ь- + Ясно, что строковые операции могут быть эффективно использованы, напри- +мер для с о р т и р о в к и строк (расположения их в алфавитном порядке +(см. пример 5 в разделе IV.4.1.). + Однако будьте очень осторожными, используя выражения с н е с к о л ь- к и м и операциями отношения в случае строковых операндов. Например, за- пись в программе выражения типа A$=B$=C$ @@ -936,15 +899,12 @@ поскольку результатом выполнения первой операции отношения А$=В$ являет- ся целое число (0 или -1), которое нельзя сравнивать со значением строко- вой переменной C$! - Однако, конструкция вида (A$=B$)=(C$=D$) д о п у с т и м а! + Отметим, что конструкция вида (A$=B$)=(C$=D$) д о п у с т и м а! По приоритету операции отношения следуют за операцией конкатенации, а операция конкатенации - за арифметическими операциями. - - I.7.4. О п е р а ц и и - ф у н к ц и и - Многие функции,часто встречающиеся при программировании на языке MSX- BASIC представлены в виде составной части языка и получили название о п е р а ц и и - ф у н к ц и и (или в с т р о е н н ы е ф у н к ц и и). @@ -953,7 +913,7 @@ В таблице приведены наиболее часто употребляемые ч и с л о в ы е встроенные функции. ┌─────────────────────────────┬───────────────────────────┐ - │ Имя встроенной функции │ Значение функции │ + │ И м я функции │ З н а ч е н и е функции │ ├─────────────────────────────┼───────────────────────────┤ │ ABS(X) │ │ X │ │ ├─────────────────────────────┼───────────────────────────┤ @@ -996,12 +956,12 @@ │ │("Convert to INTeger type")│ ├─────────────────────────────┼───────────────────────────┤ │ │ Значение X преобразуется к│ - │ CDBL(X) │ типу двойная точность │ + │ CDBL(X) │ типу "двойная точность" │ │ │ ("Convert to DouBLe preci-│ │ │ sion type"). │ ├─────────────────────────────┼───────────────────────────┤ │ │ Значение X преобразуется к│ - │ CSNG(X) │ типу одинарная точность │ + │ CSNG(X) │ типу "одинарная точность" │ │ │("Convert to SiNGle preci- │ │ │ sion type"). │ └─────────────────────────────┴───────────────────────────┘ @@ -1079,14 +1039,13 @@ Например, CDBL(5.456456456456456456) дает 5.4564564564565 . Если значение выражения Х слишком велико (≥ EXP(145.063)), то выдается сообщение "Overflow". - Однако, на практике функция CDBL() не применяется, т.к.эта функция н е- -я в н о выполняется всякий раз, когда происходит присвоение значения пе- -ременной двойной точности. Основное ее назначение -обеспечить с о в м е с- -т и м о с т ь версии MSX-BASIC с другими версиями языка BASIC. + Однако на практике функция CDBL() не применяется, т.к.она н е я в н о +выполняется всякий раз, когда происходит присвоение значения переменной +двойной точности. Основное ее назначение - обеспечить с о в м е с т и - +м о с т ь версии MSX-BASIC с другими версиями языка BASIC. I.7.5. Ф у н к ц и я RND . П с е в д о п е р е м е н н а я TIME - Подробнее остановимся на функции RND. При п е р в о м прочтении раз- дел, касающийся описания этой функции можно (и, пожалуй, нужно!) п р о - п у с т и т ь ! @@ -1124,7 +1083,6 @@ каждом н о в о м отрицательном значении α. Последующие обращения к гене- ратору псевдослучайных чисел с помощью функции RND будут возвращать в Ва- шу программу такое же псевдослучайное число. - П р и м е р 1. 10 INPUT N ───────────── 20 FOR I=1 TO 3:PRINT CSNG(RND(-ABS(N))):NEXT I run run run @@ -1133,7 +1091,6 @@ .0438982 .943898 .843898 .0438982 .943898 .843898 Ok Ok Ok - Обратите внимание, что при выборе случайной последовательности исполь- зуется н е с л у ч а й н ы й аргумент! Чуть ниже будет указано, как вы- брать последовательность "псевдослучайно". @@ -1148,7 +1105,6 @@ 3) α=0 ; повторяется вывод предыдущего случайного числа. Это удобно, поскольку таким образом можно сохранить последнее используемое в програм- ме псевдослучайное число. - П р и м е р 2. 10 INPUT N ───────────── 20 FOR I=1 TO 3:?CSNG(RND(ABS(N))):NEXTI:?CSNG(RND(0)) run run @@ -1158,13 +1114,11 @@ .765977 .765977 .765977 .765977 Ok Ok - Все генерируемые псевдослучайные числа содержат 14 значащих цифр и на- ходятся в интервале (0,1). Для генерации целого псевдослучайного числа, лежащего на отрезке [X,Y], применяется оператор присваивания вида: Z = INT((Y-X+1)*RND(1)+X) - П р и м е р 3. 10 INPUT X,Y ───────────── 20 PRINT INT((Y-X+1)*RND(1)+X);:GOTO 20 run @@ -1178,11 +1132,10 @@ 3 1 4 3 4 1 2 5 4 3 5 3 Break in 20 (нажато "CTRL"+"STOP") Ok - Ясно,что для получения целого псевдослучайного числа, лежащего на отре- зке [0,9], можно применить оператор присваивания: Z = INT(10*RND(1)) - Обычно желательно получать "абсолютно непредсказуемые" псевдослучайные + Обычно,желательно получать "абсолютно непредсказуемые" псевдослучайные числа. Чтобы добиться этого, прежде всего необходимо инициализировать ге- нератор псевдослучайных чисел в программе также псевдослучайным числом. Для этого в начале программы используется оператор вида: @@ -1190,7 +1143,6 @@ Помните, что такая инициализация должна осуществляться только один раз! Всюду далее, в тех местах программы, где необходимо получить случайное число, пишется выражение RND(1) . - П р и м е р 4. 10 INPUT X,Y:G=RND(-TIME) ───────────── 20 PRINT INT((Y-X+1)*RND(1)+X);:GOTO 20 run @@ -1203,11 +1155,10 @@ 4 1 1 3 2 3 1 2 3 4 1 Break in 20 (нажато "CTRL"+"STOP") Ok - Отметим, что конструкция языка программирования, которая может быть использована в контексте, предполагающем присваивание значения, называет- ся п с е в д о п е р е м е н н о й . - В MSX-BASICе имеется шесть псевдопеременных: + В MSX-BASIC имеется шесть псевдопеременных: TIME, SPRITE$(), MID$(α$,m,n), VDP(), MAXFILES, BASE() . Поговорим о псевдопеременной TIME. MSX - компьютер обладает счетчиком,который называется т а й м е р о м @@ -1227,7 +1178,6 @@ где α - арифметическое выражение. В результате псевдопеременная TIME получает значение, равное целой час- ти значения арифметического выражения α (0≤INT(α)≤65535). - П р и м е р 5. NEW ───────────── Ok 10 INPUT T:TIME=T @@ -1241,22 +1191,18 @@ ? 64999 65132 65267 65402 0 134 269 403 ... Ok - П р и м е р 6. 10 TIME=0 ───────────── 20 IF TIME=65535 THEN PRINT TIME/60;"сек" ELSE GOTO 20 run далее print 1092.25/60 1092.25 сек 18.204166666667 Ok Ok - Используя псевдопеременную TIME,можно учитывать время работы программы. - П р и м е р 7. NEW ───────────── Ok 10 TIME=0 20 FOR K=1 TO 10000:NEXT 30 PRINT TIME/60;"сек" - Используя эту программу,получим забавные таблицы для компьютеров MSX-1! Дисплей монохроматический! ┌───────┬───────┬───────┬───────┐ Время измеряется в секундах!│ К% │ К! │ К# │ К │ @@ -1304,7 +1250,6 @@ └────────────────────────┴───────┴───────┴───────┴───────┘ Запомните, что большинство операций ввода-вывода выключают таймер,и он начинает отсчет заново после окончания ввода-вывода! - П р и м е р 8. NEW NEW ───────────── Ok Ok 10 DIM M(50,50) 10 DIM M(50,50),A @@ -1312,9 +1257,7 @@ run run 36 1 Ok Ok - Приведем пример использования функции RND и псевдопеременной TIME. - П р и м е р 9. NEW ───────────── Ok 5 'Нахождение числа π методом Монте-Карло @@ -1342,7 +1285,6 @@ Количество бросаний точки - 1000 π≈ 3.204 (π≈ 3.156) Ok - Справа в круглых скобках приведены результаты счета при повторном запу- ске данной программы через некоторое время с теми же значениями N. @@ -1350,7 +1292,6 @@ I.8. ВЫРАЖЕНИЯ - Возможность использования выражений является одним из главных преиму- ществ языков программирования высокого уровня перед машинными языками. В ы р а ж е н и е - последовательность операндов, соединенных знаками @@ -1369,7 +1310,7 @@ ции. При этом учитываются п р а в и л а с т а р ш и н с т в а о п е р а- ц и й. Напомним, что вычисление значения встроенной функции или функции пользователя имеет н а и в ы с ш и й приоритет! - В отличие от обычной математической записи выражения в BASICе записыва- + В отличие от обычной математической записи выражения в BASIC записыва- ются в одну строку без подстрочных и надстрочных индексов. Причем,если в математике можно опустить знак умножения при записи алгебраических выраже- ний (например,2а+3b), то в BASIC это не допускается (надо писать:2*а+3*b). @@ -1401,14 +1342,11 @@ ("Н е х в а т а е т п а м я т и"). - I.8.1. А р и ф м е т и ч е с к и е и с т р о к о в ы е в ы р а ж е н и я - А р и ф м е т и ч е с к и м выражением будем называть выражение,значе- нием которого является число. - П р и м е р ы арифметических выражений : ───────────── -154.567E-1 и -154.567*10^(-1) (укажите различие!) @@ -1417,25 +1355,19 @@ SQR(A^2+B^2-2*A*B*cos(X)) (-B+ABS(D))/(2*A) T%+c%*n%-4 - С т р о к о в ы м выражением будем называть выражение, значением кото- рого является строка. - П р и м е р ы строковых выражений: ───────────── "А Б Б А" , AH$ s$+" "+"2" MID$(A$,3,7) - I.8.2. Л о г и ч е с к и е в ы р а ж е н и я - Но да будет слово ваше: да, да; нет, нет; а что сверх этого, то от лукавого. Матф.,5,37 - - Наряду с арифметическими и строковыми выражениями можно рассматривать л о г и ч е с к и е в ы р а ж е н и я. Разберем вначале частный случай логического выражения - о т н о ш е н и е. @@ -1460,9 +1392,9 @@ ваемой формулами: X² , если Х≥1, Y = { X+4 , если Х<1. -Отметим, что с помощью оператора IF (см.далее раздел III.2.) вычисление -значения функции Y производится следующим образом: - IF X>=1 THEN Y=X^2 ELSE Y=X+4 . +Отметим, что с помощью оператора IF (см. раздел III.2.) вычисление значе- +ния функции Y производится следующим образом: + IF X>=1 THEN Y=X^2 ELSE Y=X+4 Л о г и ч е с к и м в ы р а ж е н и е м будем называть последователь- ность отношений,соединенных знаками л о г и ч е с к и х операций и знака- ми операций отношения. @@ -1474,7 +1406,7 @@ раций. Значением логического выражения для п р о г р а м м и с т а может быть одно из двух логических значений: Т или F. - Значением логического выражения д л я Э В М является либо: + Значением логического выражения д л я Э В М является: 1) целое число,отличное от нуля (этот случай соответствует логическому значению Т); 2) нуль (этот случай соответствует логическому значению F). @@ -1482,7 +1414,6 @@ имеет значение Т, то говорят, что соответствующее условие с п р а в е д - л и в о (выполняется). В противном случае говорят,что условие не справед- ливо (не выполняется). - П р и м е р ы: ───────────── 1) Z=1 AND F<4 @@ -1539,17 +1470,13 @@ жалеть скобок и не пользоваться логическими операциями, смысл которых Вам непонятен! - - I.9. Д о п о л н е н и е - - Я уверен, вы согласитесь со мной, что если стра- - ница 534 застает нас только во второй главе, то - первая должна быть невыносимо длинной. - Конан Дойль - - + Я уверен, вы согласитесь со мной, что + если страница 534 застает нас только + во второй главе,то первая должна быть + невыносимо длинной. + А.Конан Дойль Одним из критериев оценки производительности компьютеров является вре- мя выполнения определенных тестовых программ-"бенчмарков" ("benchmark"- "эталонный текст","benchmarking"-"определение эффективности системы (ЭВМ @@ -1557,7 +1484,6 @@ или обработки эталонных наборов данных"). В книге [21] приведено сравнение результатов выполнения одной из таких программ на ряде компьютеров и микрокалькуляторов. - П р о г р а м м а - b e n c h m a r k ───────────────────────────────────── NEW Результаты эксперимента следующие: @@ -1565,19 +1491,19 @@ 110 PRINT "Начало";:TIME=0 IBM PC - 37 секунд, 120 K=0:DIM M(5) Apple IIe - 46 секунд, 140 K=K+1 '◀───┐ Искра 226 - 49 секунд, - 150 A=K/2*3+4-5 ' │ Tandy Color - 51 секунд, + 150 A=K/2*3+4-5 ' │ Tandy Color - 51 секунда, 160 GOSUB 230 '───▶ ' │ Электроника НЦ-80-20 - 56 секунд, - 170 FOR L=1 TO 5 ' │ Epson HX-20 - 101 секунд, - 180 M(L)=A ' │ СМ-1800 - 104 секунд, + 170 FOR L=1 TO 5 ' │ Epson HX-20 - 101 секунда, + 180 M(L)=A ' │ СМ-1800 - 104 секунды, 190 NEXT L ' │ калькулятор: 200 IF K<1000 THEN 140 '───▶┘ FX-702P фирмы "Casio" - >20 минут. - 210 PRINT TIME/60;"сек":PRINT "Конец" + 210 PRINT TIME/60;"с":PRINT "Конец" 220 END 230 RETURN '──▶ ┌─────────────────────────────┐ ┌──────────────────────────────┐ │ run │ │ run Учительский │ │ Начало │ │ Начало компьютер серии │ -│ 57.2 сек Компьютер серии │ │ 47.45 сек MSX-2, │ +│ 57.2 с Компьютер серии │ │ 47.45 с MSX-2, │ │ Конец MSX-1 │ │ Конец отключенный от │ │ Ok │ │ Ok сети │ └─────────────────────────────┘ └──────────────────────────────┘