
- •3 Базовые структуры алгоритмов — это определенный набор блоков и стандартных способов их соединения для выполнения типичных последовательностей действий.
- •4) Линейный алгоритм
- •5) Разветвляющийся алгоритм
- •6) Циклический алгоритм
- •Смысловые имена переменных
- •10) Функция стандартного вывода printf()
- •Функция стандартного ввода scanf()
- •13) Вложенные циклы
- •14) Массивы. Общие сведения
- •Описание массивов
- •1. Объявление массива
- •2. Инициализация массивов
- •16) Вычисление суммы элементов массива
- •Пример 2.3.
- •17) Перестановка двух элементов массива
- •18) Поиск минимального и максимального элемента массива и его порядкового номера (индекса)
- •Объявление функции
- •20) Понятие указателя
- •Адрес переменной и значение переменной по адресу
- •Применение указателей
- •Сбор информации
- •Хранение информации
- •Процесс передачи
- •Обработка информации
- •24) Архитектура эвм
- •25) Структурная схема и устройства пк
- •Микропроцессор
- •Оперативная память
- •Контроллеры
- •Системная магистраль
- •Внешняя память. Классификация накопителей
- •Дополнительные устройства
- •Десятичная система счисления
- •Двоичная система счисления
- •Из двоичной в десятичную систему счисления
- •Из десятичной в двоичную систему счисления
- •Заключение
1. Объявление массива
Объявление массива имеет следующий синтаксис:
<спецификация типа> <имя> [<константное выражение>];
<спецификация типа> <имя> [ ];
Здесь квадратные скобки являются элементом синтаксиса, а не признаком необязательности конструкции.
Объявление массива может иметь одну из двух синтаксических форм, указанных выше. Квадратные скобки, следующие за именем, – признак того, что переменная является массивом. Константное выражение, заключенное в квадратные скобки определяет число элементов в массиве. Индексация элементов массива в языке C++ начинается с нуля. Таким образом, последний элемент массива имеет индекс на единицу меньше, чем число элементов массива.
Во второй синтаксической форме константное выражение в квадратных скобках опущено. Эта форма может быть использована, если в объявлении массива присутствует инициализатор, либо массив объявляется как формальный параметр функции, либо данное объявление является ссылкой на объявление массива где-то в другом месте программы. Однако для многомерного массива может быть опущена только первая размерность.
Многомерный массив, или массив массивов, объявляется путем задания последовательности константных выражений в квадратных скобках, следующей за именем:
<спецификация типа> <имя> [<константное выражение>][<константное выражение>] ... ;
Каждое константное выражение определяет количество элементов в данном измерении массива, поэтому объявление двумерного массива содержит два константных выражение, трехмерного – три и т.д.
Массив может состоять из элементов любого типа, кроме типа void и функций, т.е. элементы массива могут иметь базовый,перечислимый, структурный тип, быть объединением, указателем или массивом.
Примеры объявлений массивов
int x[10]; |
// Одномерный массив из 10 целых чисел. Индексы меняются от 0 до 9. |
double y[2][10]; |
// Двумерный массив вещественных чисел из 2 строк и 10 столбцов. |
2. Инициализация массивов
Инициализация массива – это присваивание элементам массива начальных значений. Инициализацию массива можно выполнить на этапе описания массива, как это показано в п.1.1. Но в том случае, когда начальные значения получают лишь некоторые элементы массива, а остальные вычисляются в процессе выполнения программы, в программе записывают операторы присваивания
Как и простые переменные, массивы могут быть инициализированы при объявлении. Инициализатор для объектов составных типов (каким является массив) состоит из списка инициализаторов, разделенных запятыми и заключенных в фигурные скобки. Каждый инициализатор в списке представляет собой либо константу соответствующего типа, либо, в свою очередь, список инициализаторов. Эта конструкция используется для инициализации многомерных массивов.
Наличие списка инициализаторов в объявлении массива позволяет не указывать число элементов по его первой размерности. В этом случае количество элементов в списке инициализаторов и определяет число элементов по первой размерности массива. Тем самым определяется размер памяти, необходимой для хранения массива. Число элементов по остальным размерностям массива, кроме первой, указывать обязательно.
Если в списке инициализаторов меньше элементов, чем в массиве, то оставшиеся элементы неявно инициализируются нулевыми значениями. Если же число инициализаторов больше, чем требуется, то выдается сообщение об ошибке.
Примеры инициализации массивов
int a[3] = {0, 1, 2}; |
// Число инициализаторов равно числу элементов |
double b[5] = {0.1, 0.2, 0.3}; |
// Число инициализаторов меньше числа элементов |
int c[ ] = {1, 2, 4, 8, 16}; |
// Число элементов массива определяется по числу инициализаторов |
int d[2][3] = {{0, 1, 2}, {3, 4, 5}}; |
// Инициализация двумерного массива. Массив состоит из двух строк, // в каждой из которых по 3 элемента. Элементы первой строки // получают значения 0, 1 и 2, а второй – значения 3, 4 и 5. |
int e[3] = {0, 1, 2, 3}; |
// Ошибка – число инициализаторов больше числа элементов |
Обратите внимание, что не существует присваивания массиву, соответствующего описанному выше способу инициализации.
int a[3] = {0, 1, 2}; |
// Объявление и инициализация |
a = {0, 1, 2}; |
// Ошибка |
15) В дополнение к вводу/выводу на консоль и в файлы, система ввода/вывода языка С++ позволяет осуществлять ввод/вывод в массивы. Ввод/вывод на основе массивов использует память в качестве устройства для ввода и вывода. Ввод/вывод на основе массивов осуществляется с помощью обычных потоков С++. Фактически вся представленная в предыдущем разделе информация применима к вводу/выводу на основе массивов. Единственное, что делает ввод/вывод на основе массивов уникальным, заключается в том, что состыкованным с потоком устройством служит память.
В некоторой литературе по С++ ввод/вывод на основе массивов (array-based I/O) называют также вводом/выводом в память (in-RAM I/O). Поскольку потоки способны форматировать информацию, то иногда ввод/вывод на основе массивов называют также форматированием в памяти (in-RAM formatting).
Вывод на основе массивов С++ подобен использованию функций sprintf() и sscanf() в языке С. В обоих случаях память используется в качестве устройства для ввода и вывода.
Для использования ввода/вывода на основе массивов необходимо включить в программу заголовочный файл strstrea.h.