
- •Содержание
- •Введение
- •История развития компьютера
- •Типы и назначение компьютеров
- •Классы программного обеспечения (ПО) ЭВМ
- •Операционная система персонального компьютера (ПК)
- •Основы информатики
- •Информационные процессы
- •Информационная деятельность человека
- •Технические средства хранения информации
- •Кодирование информации
- •Системы счисления
- •Представление информации в компьютере
- •Представление текстовых данных
- •Представление изображений
- •Представление звуковой информации
- •Представление видео
- •Введение в программирование на языке Си
- •Этапы решения задачи на ЭВМ
- •Графический способ описания алгоритмов
- •Структура программы на языке С++
- •Описание переменных
- •Функции ввода-вывода
- •Условный оператор
- •Составной оператор
- •Операция условия
- •Оператор выбора
- •Циклические программы
- •Оператор цикла с постусловием
- •Оператор цикла с предусловием
- •Оператор цикла со счетчиком
- •Обработка массивов
- •Обработка одномерных массивов
- •Обработка двумерных массивов
- •Массивы и указатели
- •Пользовательские функции
- •Решение нелинейных уравнений
- •Нелинейные уравнения
- •Исследование уравнений и отделение корней
- •Методы поиска корней уравнения
- •Модификация табличного способа
- •Метод Ньютона (метод касательных)
- •Метод секущих
- •Файлы
- •Файлы данных и каталоги. Внутренняя организация и типы файлов
- •Текстовые файлы
- •Строки символов
- •Заключение
- •Список источников
#include <stdio.h> #include <conio.h> void main ()
{
int i;
float e, //Точность вычисления ряда k,//Очеpедной член pяда
sum = 0; //Сумма pяда i= 1;
printf ( «Введите точность:» ); scanf ( «%f», &e );
k = 1.0/i; while ( k > e )
{
sum = sum+k; i = i+1;
k = 1.0/i;
}
printf ( «Сумма pяда = %f», sum ); getch ();
}
Оператор цикла со счетчиком
В циклах со счетчиком выполнение тела цикла должно повторяться заранее определенное число раз. Хотя такой цикл можно организовать с помощью оператора цикла с постусловием или предусловием (они универсальны), в языке С++ имеется специальная конструкция для организации циклов со счетчиком. Синтаксис оператора цикла со счетчиком в общем случае следующий:
for ( <п.ц.> = <н.з>; <условие>; <коррекция п.ц.> ) <оператор>;
Здесь for - ключевое слово (перев. с англ. для);
<п.ц.> - переменная цикла, которая может быть только простого
типа;
<н.ц.> - начальное значение - выражение такого же простого типа, как и переменная цикла;
<условие> - выражение типа сравнения, используемое для выхода из цикла;
<коррекция п.ц.> - оператор присваивания, задающий изменение переменной цикла;
78
<оператор> - любой оператор языка C++, в том числе и составной, являющийся телом цикла.
Оператор работает таким образом: сначала вычисляется выражение, соответствующее начальному значению, и присваивается переменной цикла, потом проверяется условие выхода из цикла и, если получается истинное значение, выполняется оператор, являющийся телом цикла. Затем изменяется переменная цикла и снова проверяется условие и т. д. Если значение выражения ложно, то осуществляется выход из цикла. Если начальное значение переменной цикла больше конечного значения, то операторы тела цикла не выполняются. Можно сказать, что оператор цикла со счетчиком - это оператор цикла с предусловием. Следующий оператор не приведет к выполнению каких-либо действий:
for ( i=1; i<0; i++) printf ("i=%d \n», i);
Приведенный ниже оператор распечатает целые числа от 1 до 10: for( i=1; i<10; i++) printf ("i=%d \n», i);
Если нужно выполнить несколько операторов в теле цикла, то пользуются составным оператором:
for (i=5; i<= 10; i++) { k=i*i; printf("k=%d\n»,k);
}
Оператор цикла со счетчиком позволяет [6]:
-Применять операцию уменьшения для счета в порядке убывания for( i=10; i>0; i--)
printf("%d секунд!\n»,i); printf("Пуск!\n");
-Вести счет двойками, десятками и т. д.
for( i=5; i<100; i+=15) printf("i=%d\n»,i);
В этом примере будут напечатаны 5, 20, 35, 50, 65, 80, 95. - Использовать символов качестве переменной цикла for( ch='a'; ch<'z'; ch++)
printf("Величина кода ASCII для %с равна %d\n», ch, ch);
При выполнении этого оператора будут выведены все буквы от a до z вместе с их кодами ASCII. Символы в памяти размещаются в виде чисел, поэтому в данном фрагменте на самом деле счет ведется с использованием целых чисел.
-Проверять выполнение некоторого произвольного условия, отличного от условия, налагаемого на число итераций
for(i=2; i*i*i<100; i++)printf("i*i*i=%d\n», i*i*i);
-Сделать так, чтобы значение некоторой величины возрастало в геометрической, а не в арифметической прогрессии
for( debt=100.0; debt<150; debt= debt*1.1) printf("Ваш долг теперь $ %.2f\n»,debt);
79
-В качестве оператора, корректирующего переменную цикла, можно использовать любой правильно составленный оператор. Оно будет выполняться при каждой итерации цикла.
y=0;
for( x=1; y<=75; y=5*x++ + 50) printf("x=%d y=%d\n»,x,y);
Результат будет выглядеть так: x = 1 y = 0
x = 2 y = 55 x = 3 y = 60 x = 4 y = 65 x = 5 y = 70 x = 6 y = 75
В последнем примере демонстрируется плохой стиль программирования, так как в управлении оператором цикла участвуют две переменные x и y.
-Пропустить любое из трех выражений в круглых скобках, но при этом нельзя пропустить точку с запятой.
y=2;
for( x=3;y<=25;) y=y*x;
При выполнении цикла x остается равной 3. Значение y сначала будет равно 2, потом увеличится до 6, 18, а затем будет получена окончательная величина 54.
Можно опустить все три выражения в круглых скобках: for( ;;)
printf("Хочу учиться!\n");
Данный оператор будет выполняться бесконечное число раз, поскольку пустое выражение всегда истинно.
-Первое выражение не обязательно должно инициализировать переменную. Например, там мог бы стоять оператор printf().
for ( printf( «Введите числа!\n"); num==6; ) scanf ("%d», &num);
В этом фрагменте первое сообщение будет выведено на печать один раз, а затем осуществляется прием чисел, пока не будет введено число 6.
-В круглых скобках первое и третье выражение могут содержать не по одному оператору, а несколько операторов разделенных запятой (говорят: использовать операцию запятая).
for(i=1, f=1 ; i<=10; f = f*i, i++) ;
-В этом случае i = 1, f = 1 выполняется один раз, а f=f*i, i++ в каждой итерации цикла, пока i <= 10.
80

Большая свобода выбора вида выражений, управляющих работой оператора цикла for, позволяет с помощью этой конструкции делать гораздо больше, чем просто выполнять фиксированное число итераций.
Пример полной программы рассмотрим на решении задачи нахождения суммы n первых членов ряда:
Схема алгоритма приведена на рис.21, а программа представлена в при-мере pr16. В файле in.txt хранится число n. Результат (сумма ряда) - в
файле out.txt.
//Пример pr16 #include <stdio.h> #include <conio.h> void main ()
{
int i, n;
float sum = 0, //сумма ряда k; //очередной член pяда printf("Введите число членов яда:");
scanf ("%d», &n); k = 1;
for (i = 1; i <= n; i++)
{
k = k*10.0/i; sum = sum+k;
}
printf("Сумма pяда =%f»,sum); getch();
}
Рис. 28
81