Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Базовий курс языка C.doc
Скачиваний:
3
Добавлен:
10.11.2018
Размер:
307.2 Кб
Скачать

4.4 Цикл While

Синтаксис 

while (<выр>)

<Инструкция>

Семантика

while ~ пока

    1. Вычисляется значение выражения;

    2. Если это выражение отличный от 0, то выполняется инструкция тела цикла;

    3. Переход на 1.

    4. Если выражение равно 0, то цикл завершается;

    5. Если в теле цикла несколько инструкций, то их оформляют как составную инструкцию.

Пример 6: вычисления y = E X с точностью eps .

float y, s, eps, x;

int i, n;

y = 1; n = 1; i = 1; s = x;

while (s / n> eps)

{Y + = s / n;

i + +;

n * = x;

s * = x;

}

4.5 Цикл for

Синтаксис

for (<вир1>; <вир2>; <вир3>;)

<Инструкция>

Семантика

<Вир1>;

while (<вир2>)

{<Инструкция>;

<Вир3>;

}

<Вир1> - инициализация

<Вир2> - условие завершения цикла

<Вир3> - изменение переменной цикла

Каждый из трех выражений может быть отсутствующим, но разделяющие их знаки ';' должны быть.

Пример 7: бесконечный цикл

for (;;)

{...}

Пример 8: найти сумму элементов массива a из N элементов (вариант 1)

Прямоугольник 9

define N = 10

...

int a [N], i, s;

...

s = 0;

for (i = 0; i <N; i + +) N-шагов

s + = a [i];

Пример 9: найти сумму элементов массива a из N элементов (вариант 2)

...

for (i = 0; i <= N - 1; i + +) N-шагов

s + = a [i];

Особенности цикла for в Си:

  • границы цикла for можно менять внутрi цикла;

  • как бы ни закончился цикл, его параметр сохраняет свое значение;

  • можно перенести в for все осуществлении операторы тела цикла;

4.6 Операция "," (запятая)

  • Используется в операторе for ;

  • Пара выражений, разделенных запятыми, вычисляются слева направо;

  • в каждом из выражений (вир1, вир2, вир3) можно размещать несколько выражений

Пример 10: поворот строки S на месте - reverse (S).

char s [10];

int r, i, j;

for (i = 0, j = strlen (s) - 1; i <j; i + +, j -)

{

r = s [i];

s [i] = s [j];

s [j] = r;

}

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

4.7 Цикл do - while

Синтаксис

do

<Инструкция>

while (<выр>)

Семантика

1. Выполняется <инструкция>;  2. Выполняется <водоворот>;  3. Если <водоворот> отлично от 0, то снова выполняется пункт 1) и т.д.;  4. Если <водоворот> равно 0, то повторения заканчиваются;  5. <инструкция> цикла do - while всегда выполняется хотя бы один раз. 

Пример 11: найти сумму элементов массива a из N элементов (вариант 3)

Прямоугольник 8

define N 10

...

int a [N], i, S;

...

S = 0; i = 0;

do

{S + = a [i]; i = i +1;}

while (i <N);

4.8 Инструкция break

Оператор break обеспечивает преждевременное прекращение циклов for, while, do - while, также как и переключателя.  Этот оператор вызывает немедленный выход из самого внутреннего из циклов или переключателей.

4.9 Сontinue

Вызывает начало следующего шага цикла while, for, do - while. В циклах while и do - while сразу выполняется часть, проверяет условие продолжения цикла. В цикле for управление передается на этап повторной инициалiзации.  Оператор continue не применяется с переключателями.

Пример 12: обработка только положительных элементов массива

define N 10

...

int a [N], i;

...

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

{ if (a [i] <0) / * пропускаем негативные элементы * / continue;

... / * Обработка положительных * /

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]