Программирование на языке BASIC 1990 г.

Глава 12,13,14 - массивы. Логические операции. Набор символов.


Глава 12
                          М А С С И В Ы
Краткое содержание: DIM
    Допустим у вас имеется список из чисел, каким-то  образом
описывающих  10 человек,  для записи их в память  компьютера,  вы
должны  будете  занести переменную на каждого  человека,  это  не
удобно ,  так как приходится обращаться к данным,  называя каждый
раз новую переменную,например BLOGGS1, BLOGGS2 и т.д.до BLOGGS10.
Kак это неудобно вы можете убедится из программы:
                      5 REM THIS PROGRAMM WILL NOT WORK
                     10 FOR N=1 TO 10
                     20 READ BLOGGSN
                     30 NEXT N
                     40 DATA 10, 2, 5, 19, 16, 3, 11, 1, 0, 6
    Имеется специальный аппарат для подобного случая,  это приме-
нение  массивов,  переменные в массиве являются  его  элементами,
обладают  общим  именем и различаются только номером  записываемым
после имени (индексом).
    В нашем примере имя будет в ( подобно управляющим  переменным
в  FOR-NEXT  утверждениях,  имя массива должно быть уникальным  в
данной программе), и десятью переменными будут  B(1), B(2) и т.д.
до B(10).
    Элементы массивов называют индексируемыми переменными.  Перед
использованием  массива необходимо зарезервировать под  него  па-
мять, это делается в операторе DIM (от английского DIMENSION).
В  нашем  случае это будет оператор DIM B(10),который  определяет
массив с именем B и размерностью 10( т.е 10 индексируемых переме-
нных B(1), B(2), ......B(10) и присваивает всем элементам массива
значение 0.
    Итак, теперь мы можем записать:
                        10 FOR N=1 TO 10
                        20 READ B(N)
                        30 NEXT N
                        40 DATA 10, 2, 5, 19, 3, 11, 1, 0, 5
    Можно также обьявлять массивы с более чем одной размерностью
например  в  двухмерном массиве первый индекс  можно  сравнить  с
номером строки, а второй с позицией в строке, такой массив описы-
вает страницу,  если ввести третье измерение для номера страницы,
то массив будет описывать книгу в виде:
            (номер страницы, номер строки, номер столбца)
  Обьявим двухмерный массив 'C' с размерностью 3 и 5:
                           DIM C(3,5)
  что даст 3*5=15 индексируемых переменных:
                           C(1,1), C(1,2).........C(1,5)
                           C(2,1), C(2,2).........C(2,5)
                           C(3,1), C(3,2).........C(3,5)
    могут быть также строковые массивы, строки в таких массивах
отличаются  от скалярных тем,  что имеют фиксированную  длину,  а
присваивание  им  значения  осуществляется с усечением  справа  и
добавлением  до полной длины пробелами.  имя  строкового  массива
образуется  добавлением  справа  к  имени  специального  символа,
перечеркнутой буквы S( в данном описании заменен на '$').
    Допустим  вам необходимо обьявить массив а$ на 5 строк по  10
символов в каждой, вы должны  записать:
                             DIM A$(5,10)
теперь вы можете обращаться как целиком к отдельной строке, так и
к каждому символу в строке:  а$(1)=а$(1,1)а$(1,2)...а$(1,10)
                             а$(2)=а$(2,1)а$(2,2)...а$(2,10)
 ........................
                             а$(5)=а$(5,1)а$(5,2)...а$(5,10)
можно  также рассматривать элемент строкового массива как  массив
символов.  Пусть  обьявлен  массив а$(,7),  можно записать и  так
а(2)(7). следующая программа:
                             10 LET A$(2)='1234567890'
                             20 PRINT A$(2),A$(2,7)
даст '123456789 7'
    можно использовать также сечения массивов:
                              а$(2,4 то 8)=а$(2)(4 то 8)='45678'
    помните, что в строковых массивах все строки имеют фиксирова-
нную  длину,  эту  длину определяет последнее  число  размерности
массива в операторе DIM,  если обьявлен одномерный массив,  то он
определяет массив символов: DIM A$(10).
Глава 13
              Л О Г И Ч Е С К И Е   О П Е Р А Ц И И
Краткое содержание: AND, ON NOT.
Если мы взглянем на описанную в третьей главе форму оператора
условие THEN то увидим, что 'условие' описывается отношениями
(=,<,>,>=,<=,<>, связывающими два числа или строки, сдесь можно
также использовать логические операции AND(и), OR(или), и NOT(не).
    Некоторое выражение 'и', некоторое другое выражение истины.
если истинны оба этих выражения , например:
                     IFа$='YES' AND X>0 THEN PRINT X
'X' будет напечатано только тогда, когда
                     а$='YES' и X>0
    Некоторое выражение 'или', некоторое другое выражение истины
если  истинно  хотя бы одно из  этих  выражений.  'не'  выражение
истинно, если ложно само выражение и наоборот.
    OR имеет низший приоритет, затем идет AND, затем NOT.
    условие'<>' обратно в логическом смысле условию '=', то есть:
                      а<>B тоже, что и NOT а=B
                      NOT A<>B тоже, что и A=B
    тем, кто боится сложностей, следующие разделы можно опустить
     1.  условия  =,<,>,<=,>=,<>  дают числовой результат  1  для
         истины и 0 для '1=2', которое ложно и 1 DLQ '1<>2',
         KOTOROE истино.
      2. в операторе  'IF условие THEN ....', само условие может
         быть  числовым  выражением,   если  его  значение  после
         вычисления равно 0,  то считается, что ложь, если другое
         значение  (включая и 1),  то считается что  это  истина,
         таким образом IF оператор можно представить:
                        IF условие <> 0 тхен...
    операции AND,OR,NOT могут также и в числовых выражениях:
         X AND Y имеет значение X, если Y^=0 и 0, если ы=0
         X OR  Y имеет значение 1, если Y^=0 и X, если ы=0
         NOT   Y имеет значение 0, если Y^=0 и 1, если Y=0
например:               10 INPUT A
                        20 INPUT B
                        30 PRINT(A AND A>B)+(B AND AB$ THEN LET C$=A$: LET A$=B$: LET B$=C$
          30 PRINT A$, " ;("<" AND A$ 8    ?**********?    143  SH8
   ?          ?                      ?**********?
   ?          ?                      ?**********?
   ?          ?                      ?**********?
   А----------Щ                      А----------Щ
   Ъ----------ї                      Ъ----------ї
   ?     *****?      129     1    ?*****     ?    142   SH1
   ?     *****?                      ?*****     ?
   ?          ?                      ?**********?
   ?          ?                      ?**********?
   А----------Щ                      А----------Щ
   Ъ----------ї                      Ъ----------ї
   ?*****     ?      150    2     ?     *****?    141  SH2
   ?*****     ?                      ?     *****?
   ?          ?                      ?**********?
   ?          ?                      ?**********?
   А----------Щ                      А----------Щ
   Ъ----------ї                      Ъ----------ї
   ?**********?      131    3     ?          ?    140  SH3
   ?**********?                      ?          ?
   ?          ?                      ?**********?
   ?          ?                      ?**********?
   А----------Щ                      А----------Щ
   Ъ----------ї                      Ъ----------ї
   ?          ?      132    4     ?**********?    139  SH4
   ?          ?                      ?**********?
   ?     *****?                      ?*****     ?
   ?     *****?                      ?*****     ?
   А----------Щ                      А----------Щ
                       Графические символы
      символ         код    набор       символ       код   набор
   Ъ----------ї                      Ъ----------ї
   ?     *****?      133    5     ?*****     ?    138 < G> SH5
   ?     *****?                      ?*****     ?
   ?     *****?                      ?*****     ?
   ?     *****?                      ?*****     ?
   А----------Щ                      А----------Щ
   Ъ----------ї                      Ъ----------ї
   ?*****     ?      134    6     ?     *****?    137  SH6
   ?*****     ?                      ?     *****?
   ?     *****?                      ?*****     ?
   ?     *****?                      ?*****     ?
   А----------Щ                      А----------Щ
   Ъ----------ї                      Ъ----------ї
   ?**********?        135    7   ?          ?    136  SH7
   ?**********?                      ?          ?
   ?     *****?                      ?*****     ?
   ?     *****?                      ?*****     ?
   А----------Щ                      А----------Щ
    Вернемся к знакам,  мы еще не знакомы с кодами
от 0 до 32,  это управляющие символы, они не отображаются, вместо
них  на экране телевизора отображается знак '7'.  Назначение  этих
символов описано в приложении A.
   Три символа с кодами 6, 8, 13 имеют специальное назначение при
работе с телевизором.
    CHR$ 6 печатает пробел, используемый как запятая в операторе
PRINT:
                                      PRINT 1: CHR$ 6:2
даст тотже результат что и оператор:  PRINT 1,2
Но это не совсем корректное использование, вернее будет сделать
                  10 LET A$="1"+CHR$ 6+"2"
                  20 PRINT A$
    CHR$  8  - это  символ забоя,  обеспечивает возврат  на  одну
позицию назад, оператор               PRINT "1234";CHR$ 8;"5"
даст строку: '1235'.
    CHR$ 13 - перевод строки, продолжает вывод с новой строки.
с  телевизором также используются символы с кодами 16 и 23 но  об
этом поговорим в главах 15, 16.
    Все символы расположены в кодовой таблице в алфавитном поряд-
ке по возрастанию кодов,  причем все прописные буквы  расположены
после заглавных, так, что 'а' следует после 'Z'.
                 CHR$ 3+"ZOOLOGIKAL GARDENS"
                 CHR$ 8+"AARDYARK HURTING"
                 "(PARENTHETICAL REMARK)"
                 "100"
                 "129,95 INC,YAT"
                 "AASYOGEL"
                 "AARDYARK"
                 "PRINT"
                 "ZOO"
                 "LINTERPOLATIONJ"
                 "AARDYARK"
                 "AASYOGEL"
                 "ZOO"
                 "ZOOLOGU"
    Существует правило по которому сортируются две строки,сначала
сравниваются  первые  символы если они  различаются,  то  строка,
содержащая  символ  с меньшим кодом является  'меньшей',  а  если
равны то выбирается для сравнения следующая пара символов, так до
тех пор пока встретятся несовпадающие символы,  либо пока одна из
строк не кончится, она и будет меньшей, в противном случае строки
считаются равными.
    Отношения =,<,>,<=,>=,<> применяются к строкам символов также
как  и к числам:  знак '<' означает' находится  впереди в кодовой
таблице', а'>' - 'находится позади', так, что выражения
@l@@P                              - 44 -
                    "AAMAN" < "AARDYARK"
                    "AARDYARK" > "AAMAN "  оба истины.
    Для иллюстрации всего сказанного приведем программу,  которая
вводит две строки, а затем выводит их в упорядоченном виде:
            10 INPUT "TYPE IN TWO STRING ", A$,B$
            20 IF A$>B$ THEN LETT C$=A$:LET A$=B$:LETB$=C$
            30 PRINT A$;"  ";
            40 IF A$




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Комикс - Комикс из журнала "Пиф".
... и здесь - Анфиса, Ёжик.
Книга - Тайники ZX-Spectrum: Компьютерная арифметика.
История - история ASCII арта (часть 1).
Реклама - реклама, объявления, каталог.

В этот день...   21 ноября