Главная страница
Навигация по странице:

  • 4.7. Текстовые строки

  • Технология программирования. 1. введение том Сойер рисует на заборе


    Скачать 209.98 Kb.
    Название1. введение том Сойер рисует на заборе
    Дата30.11.2022
    Размер209.98 Kb.
    Формат файлаdocx
    Имя файлаТехнология программирования.docx
    ТипДокументы
    #821564
    страница5 из 5
    1   2   3   4   5
    4.6. Массивы

     

    Кроме базовых типов данных, в большинстве алгоритмических языков присутствует конструкция массив. Иногда массив называют также таблицей или вектором. Массив позволяет объединить множество элементов одного типа в единую переменную.

    Массив переменных или объектов состоит из определенного числа однотипных данных, называемых элементамимассива. Все элементы массива индексируются последовательно, начиная с нуля.

    Размещение элементов массива в памяти выполняется последовательно.

    Количество элементов в массиве определяет размер массива и является константным выражением.

    Имя массива определяет адрес первого элемента массива.

    Все элементы массива имеют один и тот же тип. Элементы массива обычно нумеруются индексами от 0 до n-1, где n - число элементов массива. В некоторых языках можно задавать границы изменения индексов, в других нижняя граница значения индекса равна единице, а не нулю. Мы, тем не менее, будем придерживаться языка Си (а также C++, Java, C#), в котором нижней границей индекса всегда является ноль. Это очень удобно, т.к. индекс элемента массива в этом случае равен его смещению относительно начала массива. Длина массива задается при его описании и не может быть изменена в процессе работы программы.

    При описании массива указывается тип и число его элементов. Тип записывается перед именем массива, размер массива указывается в квадратных скобках после его имени. Примеры:

     

    целый a[100];  описан массив целых чисел размера 100 (индекс меняется от 0 до 99)

    вещественный r[1000]; описан вещ-й массив из 1000 элементов.

     

    В языке Си соответствующие описания выглядят следующим образом:

     

    int a[100];

    double r[1000];

     

    Для доступа к элементу массива указывается его имя и в квадратных скобках - индекс нужного элемента. С элементом массива можно работать как с обычной переменной, т.е. можно прочитать его значение или записать в него новое значение. Примеры:

     

    a[3] = 0;            элементу массива a с индексом 3 присваивается значение 0;

    a[10] = a[10]*2;     элемент массива a с индексом 10 удваивается.

     

    Массив - это самая важная конструкция алгоритмического языка. Важность массива определяется тем, что память компьютера логически представляет собой массив (его можно рассматривать как массив байтов или как массив четырехбайтовых машинных слов). Индекс в этом массиве обычно называют адресом. Элементы массива читаются и записываются исключительно быстро, за одно действие, независимо от размера массива и величины индекса. Для программиста конструкция массива как бы дана свыше. Большинство других структур данных, используемых в программировании, моделируются на базе массива.

     При создании массива память под все его элементы выделяется последовательно для каждого элемента в зависимости от типа массива. Для многомерных массивов в первую очередь изменяются значения самого правого индекса.

    Например, для массива char a[2][4] будет выделено восемь байтов памяти, в которых в следующем порядке будут размещены элементы массива:

     

    элемент  a [0][0] a[0][1] a[0][2] a[0][3] a[1][0] a[1][1] a[1][2] a[1][3]

    N байта  1          2            3            4            5           6            7           8

     

    Двухмерные массивы можно рассматривать как матрицу, в которой первый индекс определяет строку, а второй индекс - столбец. Порядок расположения элементов матрицы в памяти - по строкам.

     

    4.7. Текстовые строки

     

    Текстовые строки представляются массивами символов. Строковая переменная содержит на самом деле адрес этого массива. В отличие от символа, который занимает либо один, либо два байта в зависимости от используемой кодировки, строка имеет переменную длину. Существуют два способа указания длины строки:

    1.         строка заканчивается символом с нулевым кодом, т.е. либо нулевым байтом в случае однобайтового представления символов, либо двумя нулевыми байтами в случае двухбайтового представления. Такой способ принят в языке Си. Отметим, что нулевой байт - это вовсе не символ '0'! Символ '0' имеет код 48 в кодировках ASCII и UNICODE, а изображаемых символов с нулевым кодом не существует;

    2.         строка в качестве первого элемента (байта или двух байтов) содержит общее число символов, не включая начального элемента. Затем идут сами символы в указанном количестве. Такой способ используется в языке Паскаль.

    Недостаток первого способа состоит в том, что для вычисления длины строки необходимо последовательно просмотреть все ее элементы, начиная с первого, пока не будет найден нулевой байт. Такая операция может быть долгой для длинной строки. Недостаток второго способа заключается в том, что длина строки ограничена. В случае однобайтовых символов максимальная длина строки равна 255, т.е. максимальному числу, которое можно записать в одном байте. Длина строки двухбайтовых символов ограничена числом 65535.

    Впрочем, существуют и другие способы представления строк, которые используются в объектно-ориентированных языках. Строка рассматривается как объект, внутреннее устройство которого скрыто от пользователя, хотя, как правило, он содержит массив или адрес массива символов и длину строки. Обычно в случае представления строк в виде объектов ограничения на длину строки отсутствуют.

     

    [1] Слова «ячейка» и «байт» обозначают одно и то же – восемь последовательных битов

     
    1   2   3   4   5


    написать администратору сайта