
- •Содержание
- •Введение
- •История развития компьютера
- •Типы и назначение компьютеров
- •Классы программного обеспечения (ПО) ЭВМ
- •Операционная система персонального компьютера (ПК)
- •Основы информатики
- •Информационные процессы
- •Информационная деятельность человека
- •Технические средства хранения информации
- •Кодирование информации
- •Системы счисления
- •Представление информации в компьютере
- •Представление текстовых данных
- •Представление изображений
- •Представление звуковой информации
- •Представление видео
- •Введение в программирование на языке Си
- •Этапы решения задачи на ЭВМ
- •Графический способ описания алгоритмов
- •Структура программы на языке С++
- •Описание переменных
- •Функции ввода-вывода
- •Условный оператор
- •Составной оператор
- •Операция условия
- •Оператор выбора
- •Циклические программы
- •Оператор цикла с постусловием
- •Оператор цикла с предусловием
- •Оператор цикла со счетчиком
- •Обработка массивов
- •Обработка одномерных массивов
- •Обработка двумерных массивов
- •Массивы и указатели
- •Пользовательские функции
- •Решение нелинейных уравнений
- •Нелинейные уравнения
- •Исследование уравнений и отделение корней
- •Методы поиска корней уравнения
- •Модификация табличного способа
- •Метод Ньютона (метод касательных)
- •Метод секущих
- •Файлы
- •Файлы данных и каталоги. Внутренняя организация и типы файлов
- •Текстовые файлы
- •Строки символов
- •Заключение
- •Список источников
{
int month;
printf ( «Введите число - номеp месяца:» ); scanf ( «%d»,&month);
switch (month) {case 12:
case 1:
case 2: printf (« %d- зимний месяц»,month); break; case 3:
case 4:
case 5: printf ("%d - весенний месяц»,month); break; case 6:
case 7:
case 8: printf ("%d - летний месяц»,month);break; case 9:
case 10:
case 11: printf ("%d - осенний месяц»,month);break; default: printf ("Пpо это мне неизвестно!");
}
getch ();
}
Циклические программы
К циклическим программам приводят задачи, в которых часть действий выполняется многократно.
Пусть необходимо протабулировать функцию F(x) на интервале [a,b] c шагом h (где, F(x)=x sin(x), a<b, h>0) и вывести полученные значения функции и аргумента.
Протабулировать функцию - значит вычислить значения функции F(x) на отрезке [a,b] в точках a, a+h, a+2h и т.д. Графическая схема алгоритма приведена на рис.17, программа - в примере pr12.
71

Рис. 24
//Пример pr12 #include <stdio.h> #include <conio.h> #include <math.h> void main ()
{
float x, y, a, b, h; printf("\nВведите a,b,h:"); scanf("%f%f%f»,&a,&b,&h); x=a;
do
{
y=x*sin(x);
printf("\nx=%7.2f,y=%7.2f»,x,y);
x=x+h;
}
72
while (x<=b); getch();
}
В этой программе оператор цикла используется для многократного выполнения группы операторов, расположенных между словами do while. Каждый раз в цикле вычисляется значение y, выводятся x и y, задается новое значение х и проверяется, не выходит ли значение х за пределы интервала. В результате работы этой программы будут напечатаны в два столбика значения x и y.
Оператор цикла с постусловием
В вышеприведенном примере был использован оператор цикла с постусловием. Синтаксис этого оператора следующий:
do <оператор> while(<условие>)
Здесь do ,while - ключевые слова (перев. с англ.: выполнять и пока); <оператор> - любой оператор языка С++, в том числе и составной
(его называют телом цикла); <условие> - условное выражение типа сравнения, используемое для
выхода из цикла.
Оператор работает следующим образом: сначала выполняются операторы, расположенные в теле цикла, затем вычисляется условное выражение и, если получается ложное значение, осуществляется выход из цикла. Если значение выражения истинно, то выполнение операторов тела цикла повторяется, а затем снова проверяется условие. Итак, операторы тела цикла выполняются хотя бы раз, а потом все зависит от условия выхода из цикла. Очевидно, один из операторов тела цикла должен влиять на значение условного выражения, поскольку иначе цикл будет повторяться бесконечно.
73

//Пример pr13 #include <stdio.h> #include <conio.h> void main()
{
int i; i=1; do
{
printf("\n%d»,i);
i=i+2;
}
while (i<=10); getch();
}
Рис. 25
Проиллюстрируем использование оператора цикла с постусловием на примере, в котором выводятся нечетные числа, меньшие 10. Схема алгоритма приведена на рис.18, программа в примере - pr13.
В результате работы этой программы будут напечатаны в столбик все нечетные числа от 1 до 9.
Оператор цикла с предусловием
В отличие от оператора цикла с постусловием оператор цикла с предусловием вычисляет и проверяет условие до выполнения операторов, составляющих тело цикла. Синтаксис этого оператора следующий:
while (<условие>) <оператор>;
Здесь while - ключевое слово (перев. с англ.: пока);
<оператор> - любой оператор языка C++, в том числе и составной (этот оператор называют телом цикла);
<условие> - условное выражение типа сравнения, используемое для выхода из цикла.
Оператор работает следующим образом: сначала вычисляется условное выражение и, если получается истинное значение, выполняется оператор, являющийся телом цикла, а затем снова проверяется условие. Если значение условного выражения ложно, то осуществляется выход из цикла. Таким образом, если условие было ложно при первом входе в цикл, то операторы тела цикла не выполнятся ни разу. Очевидно, один из операторов тела цикла должен влиять на значение условного выражения, поскольку иначе цикл будет повторяться бесконечно. Например,
74
следующий фрагмент программы будет печатать радостное сообщение бесконечное число раз, так как отсутствуют в цикле конструкции, изменяющие величину i:
i=1;
while(i<5) printf("Доброе утро!");
Чтобы получить работающий фрагмент программы, добавим в тело цикла оператор, увеличивающий значение i:
i=1;
while (i<5)
{ printf("Доброе утро!"); i=i+1;
}
Проиллюстрируем использование оператора цикла с предусловием на примере pr14, в котором находится среднее арифметическое последовательности чисел (схема алгоритма приведена на рис. 19). Последовательность чисел вводится с клавиатуры и завершается стопкодом. Использование стоп-кода в данном случае состоит в том, что какоето числовое значение заведомо исключается из входной последовательности и используется как стоп-код. Если заранее известно, что число -1 никогда не появится в последовательности, то это число можно использовать для указания ее конца.
75

Рис. 26
//Пример pr14 #include <stdio.h> #include <conio.h> void main ()
{
float number, //Вводимое число sum=0; //Сумма вводимых чисел
int c = 0; //Количество вводимых чисел const float stopcod = -1;
printf ("Введите пеpвое число последовательности:"); scanf ( «%f», &number );
while ( number != stopcod )
{
76

sum = sum+number; c=c+1;
printf( «Введите cледующее число последовательности:» ); scanf ( «%f», &number );
}
if (c == 0) printf ("Сpеднее значение pавно нулю"); else printf ("Сpеднее значение pавно = %f», sum/c); getch ();
}
Перед первым вхождением в цикл while значение number должно быть прочитано, иначе number не будет определено при первой проверке условия while. Если первым вводимым числом оказался стоп-код, то тело цикла не выполнится ни разу, счетчик с останется равным нулю. Поэтому, чтобы не произошло деление на нуль, используется условный оператор. В этой программе впервые появилась константа stopcod. В отличие от переменной константа не может получить новое значение в программе.
В следующем примере вычисляется сумма ряда с точностью е: s=1+1/2+1/3+1/4+ ... .
Вычислить сумму ряда с точностью е значит завершить суммирование членов ряда тогда, когда очередной член ряда окажется меньше е по абсолютной величине. Схема алгоритма приведена на рис.20, программа - в примере pr15.
Рис. 27
77