
- •1.4.2 Типы и размеры данных в Си
- •1.4.3 Константы
- •1. Целые константы
- •2. Константа действительна
- •3. Символьная константа
- •4. Строчная константа
- •5. Константный выражение
- •Тема 2. Декларации
- •Тема 3. Операторы
- •3.2 Операторы отношений и сравнение на равенство
- •3.5 Операторы присваивания
- •3.5.1 Самый оператор присваивания
- •3.5.2 Другие операторы присваивания Сi
- •3.6 Iнкрементнi и декрементнi операторы
- •Тема 4. Управление
- •4.3 Переключение switch
- •4.4 Цикл While
- •4.5 Цикл for
- •4.6 Операция "," (запятая)
- •4.7 Цикл do - while
- •4.8 Инструкция break
- •4.9 Сontinue
- •4.10 Переходы и метки
- •Тема 5. Указатели и массивы
- •5.1 Указатели
- •5.2 Связь указателей и массивов
- •5.3 Связь между адресной арифметикой и индексированием массивов
- •5.4 Различие между именем массива и указателем (в роли именi массива)
- •5.5 Буквенные указатели
- •5.6 Массивы указателей
- •5.11 Функции проверки свойств символов
- •5.12 Функции преобразования строк
4.4 Цикл While
Синтаксис
while (<выр>)
<Инструкция>
Семантика
while ~ пока
-
Вычисляется значение выражения;
-
Если это выражение отличный от 0, то выполняется инструкция тела цикла;
-
Переход на 1.
-
Если выражение равно 0, то цикл завершается;
-
Если в теле цикла несколько инструкций, то их оформляют как составную инструкцию.
Пример 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)
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)
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;
... / * Обработка положительных * /
}