
- •1.2Типы данных
- •1.2.1Объявление переменной
- •1.2.2Категории типов данных
- •1.2.3Целый тип данных
- •1.2.4Данные с плавающей точкой (вещественные типы)
- •1.3Знаки операций
- •1.3.3Простое присваивание
- •1.3.4Составное присваивание
- •1.3.5Приоритеты операций и порядок вычислений
- •1.4Структура и компоненты программы на языке си
- •1.5Организация ввода-вывода в стиле си
- •1.6.1 Манипуляторы и форматирование ввода-вывода
- •1.7Математические функции
- •2Алгоритм. Элементы структурного программирования
- •2.1Понятие алгоритма
- •2.2Основные требования к алгоритмам
- •2.3Элементы структурного программирования
- •3Программирование алгоритмов линейной структуры
- •4Алгоритмы и программы ветвящейся структуры. Условный оператор if. Переключатель switch
- •4.1Алгоритмы и программы ветвящейся структуры
- •4.1.1Условный оператор if
- •If (выражение) оператор1;
- •4.1.2Логические операции
- •4.2Примеры составления алгоритмов и программ с использованием условного оператора If
- •4.3Переключатель switch
- •5Алгоритмы и программы циклической структуры
- •5.1 Понятие цикла. Разновидности циклов
- •5.3Оператор while
- •5.4Оператор do while
- •5.5Оператор continue
- •6Регулярные типы данных. Массивы
- •6.1 Понятие регулярного типа
- •6.2Алгоритмы сортировки массивов
- •6.3 Постановка задачи сортировки и методы её решения
- •6.4Алгоритм прямого упорядочения (Алгоритм сортировки выбором элемента)
- •6.5Алгоритм попарного сравнения соседних элементов («пузырьковая» сортировка)
- •6.6Алгоритм сортировки выбором элемента
- •6.7Методы доступа к элементам массивов, использование указателей
- •6.8Организация многомерных массивов. Указатели на многомерные массивы
- •7.1Описание и определение функции
- •7.2Вызов функции
- •7.3Передача параметров в функцию
- •7.4Описание прототипа функции
- •7.5Функция с переменным количеством параметров
- •7.6Понятие сигнатуры функции
- •7.7Подставляемые (встраиваемые) функции
- •7.8Передача параметров в главную функцию
- •7.9Рекурсивные вызовы функции
- •7.10Примеры составления функций
- •8Указатели
- •8.1Понятие указателя
- •8.2Инициализация указателей
- •8.3Операции с указателями
- •8.4Ссылки
- •9Структуры (struct)
- •10Динамические структуры данных
- •3.1 Односвязные списки
- •Д обавление в начало списка.
- •2 ) Добавление в середину списка.
- •У даление первого элемента списка.
- •3 )Удаление элемента из середины списка.
- •Int Data; //поле данных
- •If (!q) //...И он первый в списке
- •3.2 Стек
- •3.3 Очередь
- •11Динамические массивы
- •12Функции и массивы
- •13Указатели на функции
- •14.1Файловый ввод/вывод с помощью потоков
- •14.2 Дополнительные функции файлового ввода/вывода
- •14.3Режимы файлов
- •14.4 Двоичные файлы
- •14.5Произвольный доступ к файлам
- •Список использованных источников
5Алгоритмы и программы циклической структуры
5.1 Понятие цикла. Разновидности циклов
Очень часто при разработке программ необходимо, чтобы один или более операторов выполнялись два или более раз. Такие алгоритмы называют циклическими, а повторяющиеся операторы – телом цикла. Количество повторений тела цикла может быть известно или нет. В случае, если неизвестно количество повторений тела цикла, завершение его работы происходит по достижению определённого условия. Таким образом, циклы делятся на циклы с параметром и условные.
В цикле с параметром задаётся переменная, выполняющая роль параметра цикла, её начальное и конечное значения, приращение (шаг изменения значения параметра цикла).
Блок-схема алгоритма цикла с параметром представлена на рисунке 5.1.
Условные циклы предназначены для организации итерационных вычислительных процессов. Они подразделяются на циклы с предусловием и циклы с постусловием. В цикле с предусловием перед выполнением тела цикла осуществляется проверка значения логического выражения или переменной логического типа, если значение этих величин удовлетворяют условию работы цикла, то выполняется тело цикла, в противном случае, выполняется следующий за циклом оператор. Таким образом, операторы тела цикла с предусловием могут быть не выполнены ни одного раза. На рисунке 5.2 представлена блок-схема алгоритма цикла с предусловием.
Цикл с постусловием предназначен для организации циклических алгоритмов, в которых проверка условия работы цикла выполняется после исполнения операторов тела цикла. По этой причине, операторы тела цикла всегда будут выполнены хотя бы один раз. На рисунке 5.3 представлена блок-схема алгоритма цикла с постусловием.
5.2Цикл с параметром в СИ/СИ++
Оператор for - это наиболее общий способ организации цикла, при помощи которого организуется цикл с параметром. Он имеет следующий формат:
for ( выражение 1 ; выражение 2 ; выражение 3 ) тело;
Выражение 1 обычно используется для установления начального значения переменных, управляющих циклом. Выражение 2 - это выражение, определяющее условие, при котором тело цикла будет выполняться. Выражение 3 определяет изменение переменных, управляющих циклом после каждого выполнения тела цикла.
Схема выполнения оператора for:
1. Вычисляется выражение 1.
2. Вычисляется выражение 2.
3. Если значения выражения 2 отлично от нуля (истина), выполняется тело цикла, вычисляется выражение 3 и осуществляется переход к пункту 2, если выражение 2 равно нулю (ложь), то управление передается на оператор, следующий за оператором for.
Существенно то, что проверка условия всегда выполняется в начале цикла. Это значит, что тело цикла может ни разу не выполниться, если условие выполнения сразу будет ложным.
int main()
{ int i,b;
for (i=1; i<10; i++)
b=i*i;
return 0;
}
В этом примере вычисляются квадраты чисел от 1 до 9.
В цикле for все инициализирующие выражения вычисляются один раз при входе в цикл. Они разделяются ",". Условия может и не быть, но ";" всегда ставится. При этом полагается, что его значение всегда истина. Выражения из списка выражений вычисляются при каждой итерации цикла после выполнения операторов тела цикла. Тело цикла может быть отдельным, составным или пустым оператором.
Например, просуммируем квадраты первых К членов натурального ряда.
for ( int i=1,s=0;i<=k;i++) s+=i*i;
for ( int i=0,s=0;i<=k;s+=++i*i);
for ( int i=0,s=0;i<=k;)s+=++i*i;
for ( i=0,s=0;i<=k;)
{ int j;j=++i;s+=j*j;
}
Другим вариантом использования оператора for является бесконечный цикл. Для организации такого цикла можно использовать пустое условное выражение, а для выхода из цикла обычно используют дополнительное условие и оператор break.
Пример:
for (;;)
{ ...
... break;
...
}