
- •История развития эвм.
- •Характеристика современных языков программирования
- •Понятие алгоритма.
- •Блок-схема алгоритма.
- •Использование псевдокодов для разработки программы.
- •Планирование процесса решения задачи.
- •Основные этапы разработки программы
- •12. Структура и элементы программы.
- •13. Определение оператора. Роль свободного пространства в операторах.
- •14. Пустой и составной операторы.
- •15. Определение выражения. Простые и сложные выражения.
- •16. Операции. Категории операций.
- •17. Хранение данных в переменных и константах
- •18. Определение переменной. Требования к именам переменных.
- •19. Типы числовых переменных.
- •20. Операции отношения, их приоритет.
- •21. Булевы (логические) операторы. Приоритет логических операций.
- •22. Понятие символа и строки. Используемые типы данных.
- •23. Массивы символов. Инициализация символьных массивов.
- •24. Работа со строками без использования массивов. Функция malloc().
- •25. Ввод строк с клавиатуры. Функции gets() и scanf().
- •26. Вывод строк и символов. Функции puts() и printf().
- •27. Понятие массива. Индекс и элемент массива.
- •28. Одномерные массивы.
- •29. Многомерные массивы.
- •30. Имена и объявления массивов.
- •32. Циклические структуры.
- •33. Оператор for. Алгоритм работы цикла for
- •33. Оператор while. Алгоритм работы цикла while.
- •35. Оператор do … while. Алгоритм работы цикла.
- •36. Вложенные циклы.
- •37. Управление циклами. Операторы break и continue.
- •38. Оператор goto
- •39. Бесконечные циклы и их организация
28. Одномерные массивы.
О
дномерный
массив — массив, с одним параметром,
характеризующим количество элементов
одномерного массива. Фактически
одномерный массив — это массив, у
которого может быть только одна строка,
и n-е количество столбцов. Столбцы в
одномерном массиве — это элементы
массива. На рисунке 1 показана структура
целочисленного одномерного массива a.
Размер этого массива — 16 ячеек.
Заметьте, что максимальный индекс одномерного массива a равен 15, но размер массива 16 ячеек, потому что нумерация ячеек массива всегда начинается с 0. Индекс ячейки – это целое неотрицательное число, по которому можно обращаться к каждой ячейке массива и выполнять какие-либо действия над ней (ячейкой).
Всегда сразу после имени массива идут квадратные скобочки, в которых задаётся размер одномерного массива, этим массив и отличается от всех остальных переменных.
29. Многомерные массивы.
До этого момента мы рассматривали одномерные массивы, которыми не всегда можно ограничиться. Допустим, необходимо обработать некоторые данные из таблицы. В таблице есть две характеристики: количество строк и количество столбцов. Также и в двумерном массиве, кроме количества элементов массива, есть такие характеристики как, количество строк и количество столбцов двумерного массива. То есть, визуально, двумерный массив — это обычная таблица, со строками и столбцами. Фактически двумерный массив — это одномерный массив одномерных массивов.
В объявлении двумерного массива, также как и в объявлении одномерного массива, первым делом, нужно указать:
тип данных;
имя массива.
После чего, в первых квадратных скобочках указывается количество строк двумерного массива, во вторых квадратных скобочках — количество столбцов двумерного массива. Двумерный массив визуально отличается от одномерного второй парой квадратных скобочек. Рассмотрим пример объявления двумерного массива. Допустим нам необходимо объявить двумерный массив, с количеством элементов, равным 15. В таком случае двумерный массив может иметь три строки и пять столбцов или пять строк и три столбца.
// пример объявление двумерного массива:
int a[5][3];
// инициализация двумерного массива:
int a[5][3] = { {4, 7, 8}, {9, 66, -1}, {5, -5, 0}, {3, -3, 30}, {1, 1, 1} };
Адресом ячейки двумерного массива является имя массива, номер строки и номер столбца.
30. Имена и объявления массивов.
Что объявить массив, требуется указать тип данных, имя массива и размер массива в квадратных скобках:
dataType name[size];
Например, нам нужно объявить массив целых чисел, размером 10 элементов:
int array[10]
Кроме того, можно объявить n-мерный массив, для этого необходимо использовать n квадратных скобок, по одной паре для каждого измерения. Следующий пример объявляет, 2-мерный массив:
int array[5][6];
В этом массиве 5 строк и 6 столбцов, в сумме массив array содержит 30 элементов типа int.
Обращение к элементам массива
Чтобы получить доступ к отдельному элементу массива, нужно после имени массива указать в квадратных скобках индекс (номер) элемента. Индексы элементов массивов начинаются с 0 и заканчиваются размером массива минус 1:
name[index];
В этой строке мы получаем доступ к index элементу массива name. Если индекс — 0, то мы получаем доступ к первому элементу массива. Например:
int array[5];
array[0] = 11;
В этом примере выполняется инициализация первого элемента массива array значением 11. Обратите внимание, если вы попытаетесь получить доступ к arrау[5], у вас ничего не получится, так как это за пределами массива.
Чтобы получить доступ к n-мерному массиву, используйте тот же подход, просто для каждого измерения явно указывайте индекс:
int array[5][5];
array[2][4] = 0;
В этом примере в массиве array элементу, в первой строке и третьем столбце присваивается значение 0.
31. Инициализация массивов.
С позволяет инициализировать глобальные и локальные массивы на этапе объявления. Стандартный вид инициализации массива аналогичен инициализации переменных, как показано ниже:
спецификатор типа имя_массива [размерN] ... [размер1] = {список значений};
Список значений - это разделенный запятыми список констант, совместимых по типу со спецификатором типа. Первая константа помещается в первый элемент массива, вторая - во второй и так далее. За последней константой списка нет запятой. Обратим внимание, что точка с запятой следует за }. В следующем примере 10-элементный целочисленный массив инициализируется числами от 1 до 10:
int i [10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
Это означает, что i[0] получит значение 1, i[9] - 10.
Массивы символов, содержащие строки, допускают удобную инициализацию в виде
char имя_массива [размер] = "строка";
При данной инициализации нулевой терминатор автоматически добавляется к концу строки. Нижеприведенный фрагмент кода инициализирует строку str фразой «hello»:
char str[6] = "hello";
Это можно также записать:
char str [ 6 ] = {'h', 'е', 'l', 'l', 'o', '\0'};
Обратим внимание, что в данной версии следует явным образом указать нулевой символ. Поскольку все строки в С оканчиваются нулевым символом, следует убедиться, что массив достаточно длинный для его вмещения. Именно поэтому str состоит из 6 символов, хотя «hello» имеет только 5 символов.
Многомерные массивы инициализируются так же, как и одномерные. Следующий пример инициализирует sqrs числами от 1 до 10 и их квадратами:
int sqrs[10] [2] =
{
1, 1
2, 4,
3, 9,
4, 16,
5, 25,
6, 36,
7, 49,
8, 64,
9, 81,
10, 100
};
Здесь sqrs[0][0] содержит 1, sqrs[0][1] содержит 1, sqrs[1][0] содержит 2, sqrs[1][1] содержит 4 и так далее.
При инициализации многомерных массивов можно добавить фигурные скобки вокруг каждого измерения. Это так называемая субагрегатная группировка. Ниже приведен еще о дня способ записи предыдущего объявления:
int sqrs[10][2] =
{
{1, 1},
{2, 4},
{3, 9},
{4, 16},
{5, 25},
{6, 36},
{7, 49},
{8, 64},
{9, 81},
{10, 100}
};
При использовании субагрегатной группировки в случае неуказания требуемого количества инициализаторов для данной группы остальные члены установятся в 0 автоматически.