Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЯП - ПОИТ (Бахтизин) часть 1 редакт.doc
Скачиваний:
0
Добавлен:
07.01.2020
Размер:
1.76 Mб
Скачать

3.10. Оператор continue

Еще одну возможность влиять на выполнение операторов тела цикла обеспечивает оператор continue. Данный оператор является противоположным уже рассмотренному нами оператору break.

Continue заставляет пропустить программу все оставшиеся операторы тела цикла, в котором он находится, но сам цикл при этом не завершается. Если условие остаётся истинным, то цикл будет продолжен.

Пример.

void main()

{

int x;

for(x=1; x<=10; x++) // счетчик наращивается;

{

if (x==8) // пропускает в цикле оставшийся код,

continue; // только если х == 8;

printf ("%d ", x);

}

printf("Продолжение при значении переменной, равной 8\n");

}

В результате работы программы получим следующее:

1 2 3 4 5 6 7 9 10

Продолжение следует при значении переменной, равной 8.

Допускается также совместное использование операторов break и continue.

Continue не рекомендуется использовать в циклах while и do до модификации значений переменных, входящих в выражение условия продолжения цикла, поскольку это может привести к образованию бесконечного цикла.

4. Массивы и указатели

4.1. Одномерные массивы и их инициализация

Массивы – это индексированные наборы данных определенного типа. Для обращения к элементу массива, мы указываем имя массива и номер позиции этого элемента в массиве.

На рис.4.1 показан целочисленный массив mas. К каждому элементу этого массива можно обратиться, задав порядковый номер элемента (от 0 до 9) и его имя (mas). Первый элемент в любом массиве имеет нулевой порядковый номер.

Рис 4.1. Массив из 10 элементов

Таким образом, первый элемент массива mas обозначается как mas[0] и его значение равно 23, второй элемент как mas[1] со значением 57, седьмой элемент как mas[6] co значением 1. В общем случае, i-тый элемент массива mas обозначается как mas[i-1].

Номер позиции элемента, содержащийся внутри квадратных скобок, называют индексом. Индекс должен быть целым числом или целочисленным выражением. Если в программе в качестве индекса используется выражение, то для определения индекса происходит оценка этого выражения. Например, если a = 2 и b = 3, то оператор

mas[a+b] = mas[a+b] + 2;

прибавляет 2 к элементу массива mas[5].

Следующая строка выводит сумму значений первых трех элементов массива mas:

printf(“%d”,mas[0]+mas[1]+mas[2]);

Для того чтобы разделить значение седьмого элемента массива mas на 2 и присвоить результат переменной x, можно написать

x = mas[6] / 2;

Скобки, в которые заключается индекс массива, на самом деле, рассматриваются в качестве операции языка Си. Они имеют тот же самый приоритет, что и круглые скобки, т.е. наивысший.

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

int mas[10];

При помощи одного объявления можно зарезервировать память для нескольких массивов:

int a[100], b[50];

Массив можно инициализировать при объявлении путем помещения вслед за его объявлением знака равенства и списка (заключенного в фигурные скобки) инициализирующих значений, разделенных запятыми, т.е.

int mas[10] = {2,5,7,9,10,13,17,20,23,25};

Если инициализирующих значений меньше, чем элементов массива, остающиеся элементы большинством компиляторов автоматически инициализируются нулями. Поэтому, для того, чтобы инициализировать все элементы массива нулем, следует написать:

int mas[10] = {0};

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

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

Если размер массива не включается в его объявление со списком инициализирующих значений, то число элементов в массиве будет равно числу элементов в списке инициализации. Например, объявлением

int mas[] = {2,5,7,9,10};

создан массив из 5 элементов.

В нижеследующем примере демонстрируется инициализация массива значениями, вводимыми с клавиатуры.

#include <stdio.h>

void main()

{

// объявление массива из 10 элементов

// и вспомогательной переменной i

int n[10], i;

// чтение элементов, вводимых с клавиатуры

for (i=0; i<=9; i++)

scanf("%d", &n[i]);

//вывод элементов массива

printf("%s%13s\n", "Element", "Value");

for (i=0; i<=9; i++)

printf("%7d%13d\n", i, n[i]);

}

Результаты работы программы выглядят следующим образом:

5 8 12 17 23 30 38 47 57 68

Element Value

0 5

1 8

2 12

3 17

4 23

5 30

6 38

7 47

8 57

9 68