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

  • define

  • ReDim

  • End If

  • Лекции. Основные понятия и определения


    Скачать 1.94 Mb.
    НазваниеОсновные понятия и определения
    Дата27.03.2018
    Размер1.94 Mb.
    Формат файлаdocx
    Имя файлаЛекции.docx
    ТипКонтрольные вопросы
    #39570
    страница27 из 58
    1   ...   23   24   25   26   27   28   29   30   ...   58

    10.4. Тип void (С)


    Так называемый "пустой" тип. Служит для согласования синтаксиса функций, не возвращающих значений или не имеющих аргументов.

    Пример.

    void putmsg( ){

    printf("Hello, world!\n");

    } /* End putmsg */

    Этот тип также используется для формирования "универсальных" указателей void *, о которых пойдет речь в другом разделе.

    10.5. Подмассивы (сечения) (C)


    В языке С можно рассматривать многомерный массив как одномерный, элементами которого являются массивы на 1 меньшей размерности.

    Пример.

    float sales[3][4][5];

    Такой объект можно трактовать как массив с плавающей точкой, состоящий из 3 элементов, каждый из которых является двумерным массивом размером 4*5.

    Допустимы следующие обращения к содержимому этого массива:

    sales – массив целиком,

    sales[ i ] – к i-му подмассиву 4*5,

    sales[ i ][ j ] – к элементу с индексами i и j: массив из 5 элементов,

    sales[ i ][ j ][ k ] – скалярная величина: собственно элемент массива sales.

    Использование сечений иногда весьма удобно, особенно при обращении к процедуре.

    Пример. Найти индексы максимальных элементов каждой строки матрицы.

    #define M 30

    #define N 30

    int main( ){

    float a[M][N]; int s[M], ind(int, float [ ]);

    ..............

    for(i=0; i

    s[ i ]=ind(n, a[ i ]);// Аргументом функции ind является i-я строка

    }

    ..............

    }//End main
    int ind(int n, float x[ ]){// Параметр есть одномерный массив длиной в

    // строку

    int i, k; float y;

    k=0; y=x[0];

    for(i=1; i

    if(y

    y=x[ i ]; k=i;

    }

    }

    return k;

    } //End ind

    10.6. Динамические массивы (B)


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

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

    Пример.

    Dim DinArray( , ) As Single

    Задание первоначальных границ индексов такого массива производится во время выполнения программы инструкцией вида:

    ReDim [Preserve] <имя массива>(<выражение>[, <выражение>]...)

    Инструкция redim в отличие от инструкции dim является выполняемой. Последующие инструкции могут изменить границы индексов.

    Пример.

    Redim DinArray(m-1, n-1)

    ................................

    ReDim DinArray(m,n)

    Замечание. Напомним, что в Visual Basic.NET, начиная с версии 2008, нижняя граница измерений массивов всегда равна 0, поэтому имеет смысл изменять только их верхние границы (максимальный индекс).

    При выполнении инструкции ReDim все значения элементов, которые были заданы ранее, теряются. При этом числовые значения заменяется нулями, строки – пустыми строками (""). Однако, имеется возможность сохранить "старые" значения элементов массива. Для этого в инструкции ReDim необходимо употребить ключевое слово Preserve (сохранить). При использовании опции Preserve можно изменять только верхнюю границу последнего измерения.

    Пример.

    ReDim Preserve DinArray(m-1, n)

    Пример. Дан целый массив ai, i=1…m. Сформировать массив b из элементов массива a без повторяющихся значений.

    b(0)=a(0)

    For i = 1 To m - 1

    For j = 0 To n - 1

    If a(i) = b(j) Then Exit For

    Next

    If j = n Then ' Включаем в b

    n += 1

    ReDim Preserve b(n - 1)

    b(n - 1) = a(i)

    End If

    Next

    При переопределении динамических массивов весьма удобно употреблять встроенную функцию языка Basic:

    UBound(<имя_массива>[, <№ измерения>]) – верхняя граница. По умолчанию № измерения равен 1.

    Пример. Увеличить на 1 границы массива DinArray.

    ReDim DinArray(Ubound(DinArray)+1, Ubound(DinArray, 2)+1)
    1   ...   23   24   25   26   27   28   29   30   ...   58


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