- •( Часть 1)
- •230100 «Информатика и вычислительная техника»
- •Введение
- •1. Первая программа на языке Си
- •Примеры
- •Задания для самостоятельной работы
- •2. Переменные. Основные типы данных. Форматный ввод-вывод
- •Наберите текст следующей программы и проанализируйте работу функции printf() в каждом случае.
- •Примеры
- •Упражнения
- •Наберите текст следующей программы и проанализируйте работу функции scanf().
- •Задания для самостоятельной работы
- •3. Операции и выражения
- •Примеры
- •Упражнения
- •Задания для самостоятельной работы
- •I. Вычисление значения математического выражения
- •II. Решение задач на составление выражений
- •4. Операторы ветвления
- •Примеры
- •Задания для самостоятельной работы
- •I. Обработка введенного символа
- •II. Вычисление значения функции
- •III. Mультиветвление
- •5. Операторы цикла и передачи управления
- •Примеры
- •Задания для самостоятельной работы
- •I. Решение задач тремя способами (с for, while и do-while) Решить следующие задачи в трех вариантах – с помощью циклов for, while и do-while
- •II. Детерминированные циклы
- •III. Итерационные циклы
- •6. Массивы
- •Примеры
- •Задания для самостоятельной работы
- •I. Одномерные массивы
- •II. Двумерные массивы
- •7. Строки
- •Примеры
- •Задания для самостоятельной работы
- •Список литературы
5. Операторы цикла и передачи управления
Операторы цикла задают многократное исполнение операторов тела цикла. Определены три разных оператора цикла:
цикл с предусловием
while (выражение_условие)
тело_цикла;
цикл с постусловием
do
тело_цикла
while (выражение_условие)
цикл for
for (инициализация_цикла; выражение_условие; список_выражений)
тело_цикла
Тело_цикла не может быть описанием, это либо один (может быть и пустой) оператор, который всегда завершается точкой с запятой, либо блок операторов, заключенных в скобки {}. Выражение_условие – это выражение, определяющее условие продолжения итераций. Операторы тела цикла выполняются, пока условие истинно (не равно нулю). Инициализация_цикла в цикле for - это последовательность определений и выражений, разделяемых запятыми. Даже если она пустая, точка с запятой должна присутствовать. Чаще всего здесь устанавливается начальные значения счетчиков и параметров цикла. Выражения из списка_выражений выполняются после выполнения операторов тела цикла и до следующей проверки выражения_условия.
Приведем примеры, иллюстрирующие разные решения задачи нахождения суммы s квадратов первых k членов натурального ряда.
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 (int i=0,s=0;i<=k; ) {int j; j=++i; s+=j*j;}
Конструкцию for чаще применяют для организации детерминированных циклов, то есть циклов, число повторений которых заранее определено. А конструкции do и while чаще применяют для итерационных циклов, то есть циклов, число повторений которых зависит от выполнения условий, изменяющихся в теле цикла и заранее не определено. Хотя такое функциональное разделение довольно условно.
Каждый цикл может содержать вложенные циклы. Для принудительного выхода из цикла используется оператор break. Необходимость в его использовании возникает, когда условия продолжения итераций надо проверять не только в начале или конце итерации, но и в середине тела цикла. Например, если начальные значения переменных i,j таковы, что i<j, то следующий цикл определяет наименьшее целое, не меньшее их среднего арифметического.
while (i<j)
{ i++;
if (i==j) break;
j--;
}
Для i=0, j=3 результат i=j=2 достигается при выходе из цикла с помощью оператора break, а для i=0, j=2 результат i=j=1 достигается при естественном завершении цикла.
Примеры
1 (детерминированный
цикл). Даны натуральные числа N,
x.
Вычислить
.
#include<stdio.h>
int main(void)
{
int x,n,ed=1,fact=1,stepX=1;
float s;
printf("Vvedite x,n");
scanf("%d%d",&x,&n);
for (int k=1;k<=n;k++)
{ed=-ed; // меняем знак единицы при каждой итерации
stepX*=x;
// вычисляем
fact*=k+1; вычисляем (k+1)!
s=s+ed*((float)stepX)/fact;
}
printf("%f",s);
return 0;
}
2 (итерационный цикл). Дано натуральное число N. Определить его первую и последнюю цифры.
# include <stdio.h>
int main(void)
{
int n,m,last;
printf( “Введите число n”);
scanf(“%d”,&n);
m=n; // Сохранили значение исходного числа
last=m%10;
while (m>9) m/=10;
printf(“\n В числе %d первая цифра равна %d, последняя равна
%d”,n,m,last);
}
