Параграф 4-5.ppt
- Количество слайдов: 26
§ 4. Управляющие структуры Программирование на C++ 1
Оператор присваивания переменная = выражение; Пример: a = 0; Программирование на C++ 2
Составной оператор { оператор1 оператор2 * * * оператор. N } Составной оператор заключается в последовательном выполнении вложенных в него операторов и рассматривается как единый оператор. Программирование на C++ 3
Условный оператор if if (выражение) оператор Если выражение истинно (отлично от нуля), то выполняется оператор, иначе – не выполняется. Пример: if (x >= 0) y += x; Программирование на C++ 4
Условный оператор if…else if (выражение) оператор1 else оператор2 Если выражение истинно, то выполняется оператор1, иначе – выполняется оператор2. Пример: if (x >= 0) y += x; else z++; Программирование на C++ 5
Оператор цикла с предусловием while (выражение) оператор Пока выражение истинно выполняется оператор. шаг 1. Если выражение истинно, то перейти на шаг 2, иначе закончить цикл. шаг 2. Выполнить оператор, перейти на шаг 1. Чтобы цикл не был «вечным» , внутри оператора должны быть выполнены действия, меняющие выражение. Каждое выполнение оператора называется итерацией цикла. Пример: s = 0; a = 1; while (a <= 5) { s += a; a++; } Программирование на C++ 6
Оператор цикла с постусловием do…while do оператор while (выражение) Оператор выполняется до тех пор, пока выражение истинно. На первой итерации цикла оператор выполняется всегда. шаг 1. Выполнить оператор, перейти на шаг 2. Если выражение истинно, то перейти на шаг 1, иначе закончить цикл. Пример: s = 0; a = 2; do { s += a; a--; } while (a > 0) Программирование на C++ 7
Оператор цикла for (выражение 1; выражение 2; выражение 3) оператор Вначале вычисляется выражение 1. Затем до тех пор, пока значение выражения 2 отлично от нуля (истинно) последовательно выполняются оператор и вычисляется выражение 3. шаг 1. Вычислить выражение 1, перейти на шаг 2. Если выражение 2 отлично от нуля, то перейти на шаг 3, иначе закончить цикл. шаг 3. Выполнить оператор, перейти на шаг 4. Вычислить выражение 3, перейти на шаг 2. Как правило, в цикле for используется специальная переменная – счетчик итераций цикла. Чаще всего, выражение 1 устанавливает начальное значение счетчика цикла, выражение 2 проверяет значение счетчика, а выражение 3 изменяет его значение. Оператор называется телом цикла, в качестве него может быть использован простой или составной оператор. Программирование на C++ 8
Пример: s = 0; n = 5; for (i = 1; i <= n; i++) s += i; Программирование на C++ 9
Оператор выхода из цикла break Оператор break применяется для прерывания выполнения цикла. Применяется в операторах цикла while, do…while, for и switch. Если оператор break используется во вложенных циклах, то он прерывает выполнение только того цикла, в котором находится. Программирование на C++ 10
Оператор выхода из итерации цикла continue Оператор continue применяется для прерывания выполнения текущей итерации цикла и перехода на следующую итерацию цикла. Применяется в операторах цикла while, do…while и for. В операторах цикла while и do…while при выполнении оператора continue происходит переход на проверку условия, а в операторе for – на выполнение выражения 3. Программирование на C++ 11
Оператор выбора switch (выражение) { case константа 1: оператор1 case константа 2: оператор2 * * * case константа. N: оператор. N [default: оператор] } Сначала вычисляется выражение, затем происходит переход на метку case со значением константы, равной значению выражения и выполняются все операторы, находящиеся после этой метки. По команде break происходит выход из оператора switch. Если значение выражения не найдено, то происходит переход на метку default, которая является необязательной. Константы должны быть целого типа. Программирование на C++ 12
Пример: x = 5; a = 3; switch (a) { case 1: y = x; break; case 2: y = -x; break; case 3: y = x * x; break; default: y = 0; } Программирование на C++ 13
Оператор перехода goto метка * * метка: оператор * Оператор goto осуществляет переход к оператору, следующему за меткой. Желательно избегать применения этого оператора. Пример: goto 7; /********/ 7: puts(“A”); Программирование на C++ 14
§ 5. Массивы Программирование на C++ 15
Массив – набор однотипных объектов, имеющих общее имя и различающихся номером (индексом). Элементы массива располагаются последовательно друг за другом и занимают один непрерывный участок памяти. Доступ к элементу массива осуществляется указанием после имени массива в квадратных скобках индекса элемента. При объявлении массива после имени массива в квадратных скобках указывают число его элементов. Нумерация элементов массива начинается с нуля. Это означает, что если в массиве n элементов, то его индексы имеют значения от 0 до n-1. Программирование на C++ 16
Пример: // Присвоение нулевому элементу массива 1 mas[0] = 1; // Чтение пятого элемента int a = mas[5]; Программирование на C++ 17
Статические массивы При объявлении статического массива уже на этапе компиляции должно быть известно число его элементов. Пример: // Объявление массива из 10 целых чисел int mas[10]; Инициализация массива – присвоение начальных значений его элементам при объявлении. Пример: int prime[10] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29}; int A[5] = {1, 2, 3}; // последние – нули int mas[] = {-1, 0, 1}; // длина определяется // компилятором Программирование на C++ 18
Массивы и указатели Имя массива – константа указатель адреса первого элемента массива. Поэтому для обращения к первому элементу массива можно использовать следующие варианты: A[0] либо *A Для обращения к i-му элементу массива можно поступать так: A[i] либо *(A+i) Прибавление к указателю целого числа i обеспечивает адресацию i-го элемента массива, независимо от типа его элементов. Программирование на C++ 19
Двумерные статические массивы Рассмотрим пример статического массива: int A[2][3]; объявления двумерного В этом примере объявляется двумерный массив размером 2 на 3. Число элементов первого измерения обычно называют числом строк, второго – числом столбцов. Двумерные массивы удобно изображать в виде таблиц. Каждый элемент таблицы имеет пару индексов – номер строки и номер столбца. Обращение к элементам двумерного массива: A[0][1], A[i][j] Программирование на C++ 20
Пример инициализации при объявлении двумерного статического массива: int A[2][3] = {{5, 7, 3}, {1, 4, 9}}; При изображении массива в виде таблицы получаем: 5 1 7 4 3 9 Программирование на C++ 21
Двумерный массив A[m][n] можно рассматривать как одномерный массив из m одномерных массивов по n элементов. В оперативной памяти элементы двумерного массива располагаются последовательно следующим образом: A[0][0], A[0][1], A[0][2], A[1][0], A[1][1], A[1][2] Программирование на C++ 22
Динамические массивы Массив называется динамическим, если память под него выделяется в процессе выполнения программы. Для работы с динамическими массивами необходимо использовать указатели. Для выделения памяти можно использовать оператор new, для освобождения памяти – оператор delete. Пример: int *A; // Объявление указателя int N; // Объявление переменной // (N – число элементов массива) N = 100; // Число элементов массива = 100 A = new int [N]; // Выделение памяти Начальная инициализация невозможна. Программирование на C++ 23
Двумерные динамические массивы Рассмотрим два способа выделения памяти под двумерный динамический массив. Первый способ – представление двумерного массива в виде одномерного: int *A; int m, n; m = 4, n = 5; A = new int [m * n]; for (int i = 0; i < m; i++) for (int j = 0; j < n; j++) A[i * n + j] = i * j; Программирование на C++ 24
Второй способ – выделение памяти под одномерный массив m указателей, затем в цикле каждому указателю присваивается адрес отдельного выделенного участка памяти из n элементов: int **A; int m, n; m = 4, n = 5; A = new int* [m]; for (int i = 0; i < m; i++) { A[i] = new int [n]; for (int j = 0; j < n; j++) A[i][j] = i * j; } Программирование на C++ 25
Второй способ допускает использование ступенчатых массивов, когда строки массива содержат различное число элементов: int **A; int m, n; m = 4, n = 5; A = new int* [m]; for (int i = 0; i < m; i++) { A[i] = new int [i + 1]; for (int j = 0; j <= i; j++) A[i][j] = i * j; } Программирование на C++ 26


