SlideShare a Scribd company logo
Лекция 3. Программирование циклов. Оператор цикла while
Составной оператор

Составной оператор состоит из одного или большего числа операторов
любого типа, заключенных в фигурные скобки.
Пример:
{ x=1; y=2; z=3; }
Он необходим при программировании циклов и ветвлений.
Оператор цикла while

Оператор цикла служит для многократного выполнения одних и тех
же действий. Оператор while используется при программировании циклов
с предусловием:

нет

услов
ие
да
оператор

Формат оператора while:
while ( условие)
оператор
Оператор while выполняется так,

как изображено на схеме.

Проверяется условие; если оно истинно, то выполняется оператор, входящий
в состав while (так называемое "тело цикла"). Затем снова проверяется
условие... Тело цикла будет выполняться до тех пор, пока условие не станет
ложным. Затем управление передается следующему оператору программы.
27
Условие - это выражение, которое кроме арифметических операций и
операции присваивания может содержать операции отношения и логические
операции.
Операции отношения:
>
>=
<

больше,
больше или равно,
меньше,

<=

меньше или равно,

==

равно,

!=

не равно.
Логические операции:

&& (и)
| | (или)
! (не)
Условия в циклах задаются в виде целочисленного выражения языка С
в скобках. Условие истинно, если значение выражения ≠ 0, ложно в
противном случае.
Примеры условий:
while ( a>0 )

истинно, если а>0

while ( a )

истинно, если а ≠ 0

while ( a!=0 )

истинно, если а ≠ 0

while ( !a )

истинно, если а = 0

while ( a+b )

истинно, если а+b ≠ 0

while ( a && b )

истинно, если а ≠ 0 и b ≠0

while (a > 0 || b >0)

истинно, если a > 0 или b > 0

Обратите внимание, что тело цикла - это один оператор: либо
простой, либо составной. Если в цикле должны выполняться несколько
операторов, заключите их в фигурные скобки.
28
Пример оператора цикла:
while (i<=n)
{ s=s+i/(i+1); i++; }

Пример решения задачи
Задача. Дано действительное число x.

Вычислить значение

sinx

с помощью ряда
x3

x5

x2n+1

y = sinx = x - — + — - ... + (-1) n ——— + ...
3!
с точностью 10

-5

5!

(2n+1)!

(т.е. учитывая только те члены ряда, которые по

абсолютной величине больше либо равны 10-5). Для проверки результата
вычислить sinx с помощью стандартной функции.
Если при вычислении очередного члена ряда отдельно вычислять
числитель и знаменатель, где значения могут быть очень большие, то
получится слишком большая погрешность. Поэтому выведем рекуррентную
формулу вычисления очередного члена ряда через предыдущий член.
Обозначим очередной член данного ряда через an .
a0 = x
x3
x2
a1= - — = -a0* ——
3!
2*3
x5
x2
a2= + — = -a1 * ——
5!
4*5
29
...
an = -an-1

x2
* ————
2n(2n+1)

Поскольку для вычисления очередного члена ряда нужно знать только
значение предыдущего члена, а все суммируемые значения хранить нет
необходимости, то массив не нужен. Достаточно одной простой переменной
для вычисления очередного члена ряда. Назовем ее a.
начало
Ввод x
y=0, a=x, n=0

нет

|a|
≥10-5
да

y=y+a
n=n+1
a=-a x2 /(2n(2n+1))

Вывод
y, sin(x)
конец

Рис. 2.1. Схема алгоритма вычисления y=sinx

30
Программа:
/* Приближенное вычисление y=sin x */
#include <stdio.h>
#include <math.h>
#define E 1e-5
/* точность вычисления */
main()
{
float x,
y;
float a;
int n;

/* аргумент функции */
/* сумма ряда
*/
/* очередной член ряда */
/* номер итерации
*/

printf ("x=");
scanf ("%f",&x);
y=0; a=x; n=0;
while ( fabs(a) >= E )
{ y=y+a;
n++;
/* n=n+1; */
a=-a*x*x/(2*n*(2*n+1)); /* вычисление очередного члена ряда
через предыдущий */
}
printf ("y=%fn",y);
printf ("sinx=%fn",sin(x));
return 0;
}
Примеры результатов выполнения программы:
x=3.14159
y=0.000002
sinx=0.000003
x=0
y=0.000000
sinx=0.000000
x=1.5708
y=1.000004
sinx=1.000000
x=-1.5708
y=-1.000004
sinx=-1.000000
31
Отладка программы в TURBO C или Borland C++
1. Запустите систему (см. часть 3, приложение 1 или приложение 2) и
введите текст своей программы, соблюдая ступенчатую запись.
2. Выполните компиляцию программы.
При компиляции могут быть обнаружены синтаксические ошибки
в программе. В таком случае в окне Message

появятся сообщения об

ошибках с указанием номеров строк программы, где обнаружены ошибки.
В программе будет выделена первая неверная строка, а курсор укажет на
предполагаемое местоположение ошибки в программе. Исправьте ошибки и
повторите компиляцию.
3. После исправления всех синтаксических ошибок сохраните
программу в файле на диске, указав какое-либо имя с расширением .с .
4.

Запустите программу на выполнение.

По запросу программы введите тестовые исходные данные. Проверьте
результат. Если результаты оказались неверными, проверьте программу.
После редактирования программы повторите действия с пункта 2.
Если программа зациклилась, попытайтесь прервать ее выполнение
с помощью одновременного нажатия клавиш [Ctrl] и [Break]. Если

это

сделать не удалось, снимите задачу, снова запустите систему и откройте
файл со своей программой.
Если причина ошибки не понятна, выполните трассировку программы
на компьютере с помощью команд меню Run и Trace into (F7) или Steep
over (F8). Эти команды вызывают выполнение одной выделенной строки
программы.

При

этом

можно

проследить,

как

меняются

значения

поременных программы. Для этого служит окно Watch. Чтобы добавить в
окно Watch

интересующую вас переменную, нажмите
32

одновременно
клавиши [Ctrl] и [F7] и введите имя переменной, затем нажмите [Enter].
Прервать выполнение программы при трассировке можно нажатием
клавиш [Ctrl] - [F2] или выполнив команды меню Run и Program reset.

Контрольные вопросы и упражнения.

1. В каких случаях используется составной оператор?
2. Какие из перечисленных условий будут ложными при заданных
значениях a = 10; b = -5;
a) while (a)

б) while (a>0 || b>0)

в) while (a>0 && b>0)

г) while (!a || b)

д) while (!a && b)

е) while (a && b)

3. Напишите программу вычисления произведения двух натуральных
чисел А и В, не используя операцию умножения: A*B = A+A+ … +A (число
слагаемых равно B).

Выполнение контрольных заданий
1. Получите у преподавателя индивидуальное задание.
2. Составьте блок-схему и программу на языке С и подберите тесты для
проверки программы на компьютере.
3. Отладьте программу на компьютере.
5. Оформите и сдайте отчет.
Контрольные задания
1. Дано действительное число x. Вычислить значение y с помощью
стандартной функции и с помощью ряда с точностью 0,0001:
33
x2
x4
x2n
а) y = cos(x) = 1 - — + — - ... + (-1)n ——— + ...
2!
4!
(2n)!
x2 x3
xn
б) y = ex = 1+ x + — + — + ... + — + ...
2! 3!
n!
x2 x3
xn
в) y = e-x = 1- x + — - — + ... + (-1)n — + ...
2! 3!
n!
x2
x3
xn
г) y = ln(1+x) = x - — + — - ... + (-1)n-1 —— + ...
2
3
n
x-1
(x-1)3
(x-1) 5
д) y = ln (x) = 2 ( —— + ——— + ——— + … ) ,
x+1
3(x+1)3
5(x+1)5

x+1

,

где |x|<1.

где x>0

x2
x3
xn
е) y = ln(1-x) = - ( x + — + — + ... + —— + ... ) ,
2
3
n
x3
x5
x7
ж) y = arctg(x) = x - — + — - —— + ...
3
5
7

,

где |x|<1.

где |x|≤1.

1

1
1
з) y = ln ——— = 2 ( —— + —— + —— + … ) ,
x–1
x
3x3
5x5

где |x|>1

(x-1)2

(x-1)3
и) y = ln x = ( x-1) - —— + —— 2
3

… ,

где 0 < x ≤2

(x-1)2 (x-1)3
к) y = ln x = —— + —— + —— +
x
2x2
3x3

… ,

где x > 0.5

x-1

34
2. Дано натуральное число n. Проверить справедливость равенства:
n(n+1)
а) 1 + 2 + 3 +...+ n = ———
2
n(n+1)(2n+1)
б) 12 + 22+ 32 +...+ n2 = ——————
6

в) 1 + 2 + 22 +...+2n-1 = 2n - 1
г) 13 + 23+ 33 +...+ n3 = (1 + 2+ 3 + … + n)2
3. Дано натуральное число n.
а) Определить количество цифр в числе n.
б) Определить сумму его цифр.
в) Определить первую цифру числа n.

35
2. Дано натуральное число n. Проверить справедливость равенства:
n(n+1)
а) 1 + 2 + 3 +...+ n = ———
2
n(n+1)(2n+1)
б) 12 + 22+ 32 +...+ n2 = ——————
6

в) 1 + 2 + 22 +...+2n-1 = 2n - 1
г) 13 + 23+ 33 +...+ n3 = (1 + 2+ 3 + … + n)2
3. Дано натуральное число n.
а) Определить количество цифр в числе n.
б) Определить сумму его цифр.
в) Определить первую цифру числа n.

35

More Related Content

What's hot

3.3 Конструкторы и деструкторы
3.3 Конструкторы и деструкторы3.3 Конструкторы и деструкторы
3.3 Конструкторы и деструкторы
DEVTYPE
 
2.2 Стек вызовов
2.2 Стек вызовов2.2 Стек вызовов
2.2 Стек вызовов
DEVTYPE
 
Презентация на тему: ЕГЭ информатика
Презентация на тему: ЕГЭ информатикаПрезентация на тему: ЕГЭ информатика
Презентация на тему: ЕГЭ информатика2berkas
 
Огранизация ввода и вывода данных
Огранизация ввода и вывода данныхОгранизация ввода и вывода данных
Огранизация ввода и вывода данных
Andrey Dolinin
 
3.1 Структуры
3.1 Структуры3.1 Структуры
3.1 Структуры
DEVTYPE
 
TMPA-2015: Lexical analysis of dynamically formed string expressions
TMPA-2015: Lexical analysis of dynamically formed string expressionsTMPA-2015: Lexical analysis of dynamically formed string expressions
TMPA-2015: Lexical analysis of dynamically formed string expressions
Iosif Itkin
 
Программирование разветвляющихся алгоритмов
Программирование разветвляющихся алгоритмовПрограммирование разветвляющихся алгоритмов
Программирование разветвляющихся алгоритмов
Andrey Dolinin
 
Алгоритмическая конструкция следование
Алгоритмическая конструкция следованиеАлгоритмическая конструкция следование
Алгоритмическая конструкция следование
Andrey Dolinin
 
Программирование линейных алгоритмов
Программирование линейных алгоритмовПрограммирование линейных алгоритмов
Программирование линейных алгоритмов
Andrey Dolinin
 
алгоритмизация метода касательных
алгоритмизация метода касательныхалгоритмизация метода касательных
алгоритмизация метода касательных
Colegiul de Industrie Usoara
 
Системы счисления
Системы счисленияСистемы счисления
Системы счисления
Andrey Dolinin
 
Использование GNU OCTAVE для инженерных и математических расчетов
Использование GNU OCTAVE для инженерных и математических расчетовИспользование GNU OCTAVE для инженерных и математических расчетов
Использование GNU OCTAVE для инженерных и математических расчетовТранслируем.бел
 
5.4 Ключевые слова static и inline
5.4 Ключевые слова static и inline5.4 Ключевые слова static и inline
5.4 Ключевые слова static и inline
DEVTYPE
 
СИМПЛЕКС-МЕТОД
СИМПЛЕКС-МЕТОДСИМПЛЕКС-МЕТОД
СИМПЛЕКС-МЕТОДIT_1315
 
4.2 Перегрузка
4.2 Перегрузка4.2 Перегрузка
4.2 Перегрузка
DEVTYPE
 
3.2 Методы
3.2 Методы3.2 Методы
3.2 Методы
DEVTYPE
 
5.1 Перегрузка операторов
5.1 Перегрузка операторов5.1 Перегрузка операторов
5.1 Перегрузка операторов
DEVTYPE
 
2. Операторы языка C#
2. Операторы языка C#2. Операторы языка C#
2. Операторы языка C#
Olga Maksimenkova
 
оператор присваивания и процедуры ввода и вывода
оператор присваивания и процедуры ввода и выводаоператор присваивания и процедуры ввода и вывода
оператор присваивания и процедуры ввода и вывода
liza2209
 

What's hot (20)

3.3 Конструкторы и деструкторы
3.3 Конструкторы и деструкторы3.3 Конструкторы и деструкторы
3.3 Конструкторы и деструкторы
 
2.2 Стек вызовов
2.2 Стек вызовов2.2 Стек вызовов
2.2 Стек вызовов
 
Презентация на тему: ЕГЭ информатика
Презентация на тему: ЕГЭ информатикаПрезентация на тему: ЕГЭ информатика
Презентация на тему: ЕГЭ информатика
 
Огранизация ввода и вывода данных
Огранизация ввода и вывода данныхОгранизация ввода и вывода данных
Огранизация ввода и вывода данных
 
3.1 Структуры
3.1 Структуры3.1 Структуры
3.1 Структуры
 
TMPA-2015: Lexical analysis of dynamically formed string expressions
TMPA-2015: Lexical analysis of dynamically formed string expressionsTMPA-2015: Lexical analysis of dynamically formed string expressions
TMPA-2015: Lexical analysis of dynamically formed string expressions
 
Программирование разветвляющихся алгоритмов
Программирование разветвляющихся алгоритмовПрограммирование разветвляющихся алгоритмов
Программирование разветвляющихся алгоритмов
 
Алгоритмическая конструкция следование
Алгоритмическая конструкция следованиеАлгоритмическая конструкция следование
Алгоритмическая конструкция следование
 
Программирование линейных алгоритмов
Программирование линейных алгоритмовПрограммирование линейных алгоритмов
Программирование линейных алгоритмов
 
лекция 3
лекция 3лекция 3
лекция 3
 
алгоритмизация метода касательных
алгоритмизация метода касательныхалгоритмизация метода касательных
алгоритмизация метода касательных
 
Системы счисления
Системы счисленияСистемы счисления
Системы счисления
 
Использование GNU OCTAVE для инженерных и математических расчетов
Использование GNU OCTAVE для инженерных и математических расчетовИспользование GNU OCTAVE для инженерных и математических расчетов
Использование GNU OCTAVE для инженерных и математических расчетов
 
5.4 Ключевые слова static и inline
5.4 Ключевые слова static и inline5.4 Ключевые слова static и inline
5.4 Ключевые слова static и inline
 
СИМПЛЕКС-МЕТОД
СИМПЛЕКС-МЕТОДСИМПЛЕКС-МЕТОД
СИМПЛЕКС-МЕТОД
 
4.2 Перегрузка
4.2 Перегрузка4.2 Перегрузка
4.2 Перегрузка
 
3.2 Методы
3.2 Методы3.2 Методы
3.2 Методы
 
5.1 Перегрузка операторов
5.1 Перегрузка операторов5.1 Перегрузка операторов
5.1 Перегрузка операторов
 
2. Операторы языка C#
2. Операторы языка C#2. Операторы языка C#
2. Операторы языка C#
 
оператор присваивания и процедуры ввода и вывода
оператор присваивания и процедуры ввода и выводаоператор присваивания и процедуры ввода и вывода
оператор присваивания и процедуры ввода и вывода
 

Viewers also liked

лекция №16
лекция №16лекция №16
лекция №16student_kai
 
лекция№21
лекция№21лекция№21
лекция№21student_kai
 
лекция 15 управление финансами-ч2
лекция 15 управление финансами-ч2лекция 15 управление финансами-ч2
лекция 15 управление финансами-ч2student_kai
 
лекция №8
лекция №8лекция №8
лекция №8student_kai
 
лекция№14
лекция№14лекция№14
лекция№14student_kai
 
лекция№28
лекция№28лекция№28
лекция№28student_kai
 
лабораторная работа №5
лабораторная работа №5лабораторная работа №5
лабораторная работа №5student_kai
 
презентация писэх кр
презентация писэх крпрезентация писэх кр
презентация писэх крstudent_kai
 
практика 2
практика 2практика 2
практика 2student_kai
 
лекция №15
лекция №15лекция №15
лекция №15student_kai
 
лекция № 6
лекция № 6лекция № 6
лекция № 6student_kai
 
лабораторная работа №1
лабораторная работа №1лабораторная работа №1
лабораторная работа №1student_kai
 
лекция 10 управление изменениями-ч2
лекция 10 управление изменениями-ч2лекция 10 управление изменениями-ч2
лекция 10 управление изменениями-ч2student_kai
 

Viewers also liked (20)

лек14
лек14лек14
лек14
 
лекция №16
лекция №16лекция №16
лекция №16
 
лекция№21
лекция№21лекция№21
лекция№21
 
лекция 15 управление финансами-ч2
лекция 15 управление финансами-ч2лекция 15 управление финансами-ч2
лекция 15 управление финансами-ч2
 
лекция №8
лекция №8лекция №8
лекция №8
 
лекция№14
лекция№14лекция№14
лекция№14
 
лекция№28
лекция№28лекция№28
лекция№28
 
п12
п12п12
п12
 
лабораторная работа №5
лабораторная работа №5лабораторная работа №5
лабораторная работа №5
 
презентация писэх кр
презентация писэх крпрезентация писэх кр
презентация писэх кр
 
лекция 19
лекция 19лекция 19
лекция 19
 
лекция 7
лекция 7лекция 7
лекция 7
 
практика 2
практика 2практика 2
практика 2
 
лек22
лек22лек22
лек22
 
лекция №15
лекция №15лекция №15
лекция №15
 
лекция 1
лекция 1лекция 1
лекция 1
 
лекция № 6
лекция № 6лекция № 6
лекция № 6
 
лабораторная работа №1
лабораторная работа №1лабораторная работа №1
лабораторная работа №1
 
лекция 12
лекция 12лекция 12
лекция 12
 
лекция 10 управление изменениями-ч2
лекция 10 управление изменениями-ч2лекция 10 управление изменениями-ч2
лекция 10 управление изменениями-ч2
 

Similar to лекция 3. программирование циклов

Step cpp022
Step cpp022Step cpp022
Step cpp022
Evgenij Laktionov
 
Лекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыЛекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыMikhail Kurnosov
 
1 вводное занятие
1 вводное занятие1 вводное занятие
1 вводное занятие
luis_blanco_rau
 
Лекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыЛекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыMikhail Kurnosov
 
Лекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмыЛекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмы
simple_people
 
Урок 24. Фантомные ошибки
Урок 24. Фантомные ошибкиУрок 24. Фантомные ошибки
Урок 24. Фантомные ошибки
Tatyanazaxarova
 
Структурные формулы и функциональные схемы
Структурные формулы и функциональные схемыСтруктурные формулы и функциональные схемы
Структурные формулы и функциональные схемы
aleksashka3
 
Презентация на тему: Повторение курса информатики 7 класс
Презентация на тему: Повторение курса информатики 7 классПрезентация на тему: Повторение курса информатики 7 класс
Презентация на тему: Повторение курса информатики 7 класс2berkas
 
lab1 math computational
lab1 math computationallab1 math computational
lab1 math computational
dinhtruonglam1
 
Лекция 12. Быстрее, Python, ещё быстрее.
Лекция 12. Быстрее, Python, ещё быстрее.Лекция 12. Быстрее, Python, ещё быстрее.
Лекция 12. Быстрее, Python, ещё быстрее.
Roman Brovko
 
Лекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмовЛекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмов
Mikhail Kurnosov
 
Оптимизация производительности Python
Оптимизация производительности PythonОптимизация производительности Python
Оптимизация производительности Python
PyNSK
 
20100927 28 reqformalization-kuliamin
20100927 28 reqformalization-kuliamin20100927 28 reqformalization-kuliamin
20100927 28 reqformalization-kuliaminComputer Science Club
 
8
88
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Python Meetup
 
Пояснения к статье про Copy-Paste
Пояснения к статье про Copy-PasteПояснения к статье про Copy-Paste
Пояснения к статье про Copy-Paste
Tatyanazaxarova
 

Similar to лекция 3. программирование циклов (20)

лекция 11
лекция 11лекция 11
лекция 11
 
Step cpp022
Step cpp022Step cpp022
Step cpp022
 
Лекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыЛекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмы
 
Algo 01 part01
Algo 01 part01Algo 01 part01
Algo 01 part01
 
1 вводное занятие
1 вводное занятие1 вводное занятие
1 вводное занятие
 
Лекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыЛекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмы
 
Лекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмыЛекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмы
 
Урок 24. Фантомные ошибки
Урок 24. Фантомные ошибкиУрок 24. Фантомные ошибки
Урок 24. Фантомные ошибки
 
Структурные формулы и функциональные схемы
Структурные формулы и функциональные схемыСтруктурные формулы и функциональные схемы
Структурные формулы и функциональные схемы
 
Презентация на тему: Повторение курса информатики 7 класс
Презентация на тему: Повторение курса информатики 7 классПрезентация на тему: Повторение курса информатики 7 класс
Презентация на тему: Повторение курса информатики 7 класс
 
lab1 math computational
lab1 math computationallab1 math computational
lab1 math computational
 
Лекция 12. Быстрее, Python, ещё быстрее.
Лекция 12. Быстрее, Python, ещё быстрее.Лекция 12. Быстрее, Python, ещё быстрее.
Лекция 12. Быстрее, Python, ещё быстрее.
 
Лекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмовЛекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмов
 
Оптимизация производительности Python
Оптимизация производительности PythonОптимизация производительности Python
Оптимизация производительности Python
 
20100927 28 reqformalization-kuliamin
20100927 28 reqformalization-kuliamin20100927 28 reqformalization-kuliamin
20100927 28 reqformalization-kuliamin
 
8
88
8
 
лр8
лр8лр8
лр8
 
презентация1
презентация1презентация1
презентация1
 
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
 
Пояснения к статье про Copy-Paste
Пояснения к статье про Copy-PasteПояснения к статье про Copy-Paste
Пояснения к статье про Copy-Paste
 

More from student_kai

презентация
презентацияпрезентация
презентацияstudent_kai
 
презентации продолжение банкета
презентации продолжение банкетапрезентации продолжение банкета
презентации продолжение банкетаstudent_kai
 
основы программирования на языке C
основы программирования на языке Cосновы программирования на языке C
основы программирования на языке Cstudent_kai
 
презентация курсовой работы
презентация курсовой работыпрезентация курсовой работы
презентация курсовой работыstudent_kai
 
лекция№34
лекция№34лекция№34
лекция№34student_kai
 
лекция№32
лекция№32лекция№32
лекция№32student_kai
 
лекция№33
лекция№33лекция№33
лекция№33student_kai
 
лекция№31
лекция№31лекция№31
лекция№31student_kai
 
лекция№30
лекция№30лекция№30
лекция№30student_kai
 
лекция№29
лекция№29лекция№29
лекция№29student_kai
 
лекция№27
лекция№27лекция№27
лекция№27student_kai
 
лекция№26
лекция№26лекция№26
лекция№26student_kai
 
лекция№25
лекция№25лекция№25
лекция№25student_kai
 
лекция№25
лекция№25лекция№25
лекция№25student_kai
 
лекция№24
лекция№24лекция№24
лекция№24student_kai
 
лекция№23
лекция№23лекция№23
лекция№23student_kai
 
лекция№22
лекция№22лекция№22
лекция№22student_kai
 
лекция№20
лекция№20лекция№20
лекция№20student_kai
 
лекция№19
лекция№19лекция№19
лекция№19student_kai
 
лекция№18
лекция№18лекция№18
лекция№18student_kai
 

More from student_kai (20)

презентация
презентацияпрезентация
презентация
 
презентации продолжение банкета
презентации продолжение банкетапрезентации продолжение банкета
презентации продолжение банкета
 
основы программирования на языке C
основы программирования на языке Cосновы программирования на языке C
основы программирования на языке C
 
презентация курсовой работы
презентация курсовой работыпрезентация курсовой работы
презентация курсовой работы
 
лекция№34
лекция№34лекция№34
лекция№34
 
лекция№32
лекция№32лекция№32
лекция№32
 
лекция№33
лекция№33лекция№33
лекция№33
 
лекция№31
лекция№31лекция№31
лекция№31
 
лекция№30
лекция№30лекция№30
лекция№30
 
лекция№29
лекция№29лекция№29
лекция№29
 
лекция№27
лекция№27лекция№27
лекция№27
 
лекция№26
лекция№26лекция№26
лекция№26
 
лекция№25
лекция№25лекция№25
лекция№25
 
лекция№25
лекция№25лекция№25
лекция№25
 
лекция№24
лекция№24лекция№24
лекция№24
 
лекция№23
лекция№23лекция№23
лекция№23
 
лекция№22
лекция№22лекция№22
лекция№22
 
лекция№20
лекция№20лекция№20
лекция№20
 
лекция№19
лекция№19лекция№19
лекция№19
 
лекция№18
лекция№18лекция№18
лекция№18
 

лекция 3. программирование циклов

  • 1. Лекция 3. Программирование циклов. Оператор цикла while Составной оператор Составной оператор состоит из одного или большего числа операторов любого типа, заключенных в фигурные скобки. Пример: { x=1; y=2; z=3; } Он необходим при программировании циклов и ветвлений. Оператор цикла while Оператор цикла служит для многократного выполнения одних и тех же действий. Оператор while используется при программировании циклов с предусловием: нет услов ие да оператор Формат оператора while: while ( условие) оператор Оператор while выполняется так, как изображено на схеме. Проверяется условие; если оно истинно, то выполняется оператор, входящий в состав while (так называемое "тело цикла"). Затем снова проверяется условие... Тело цикла будет выполняться до тех пор, пока условие не станет ложным. Затем управление передается следующему оператору программы. 27
  • 2. Условие - это выражение, которое кроме арифметических операций и операции присваивания может содержать операции отношения и логические операции. Операции отношения: > >= < больше, больше или равно, меньше, <= меньше или равно, == равно, != не равно. Логические операции: && (и) | | (или) ! (не) Условия в циклах задаются в виде целочисленного выражения языка С в скобках. Условие истинно, если значение выражения ≠ 0, ложно в противном случае. Примеры условий: while ( a>0 ) истинно, если а>0 while ( a ) истинно, если а ≠ 0 while ( a!=0 ) истинно, если а ≠ 0 while ( !a ) истинно, если а = 0 while ( a+b ) истинно, если а+b ≠ 0 while ( a && b ) истинно, если а ≠ 0 и b ≠0 while (a > 0 || b >0) истинно, если a > 0 или b > 0 Обратите внимание, что тело цикла - это один оператор: либо простой, либо составной. Если в цикле должны выполняться несколько операторов, заключите их в фигурные скобки. 28
  • 3. Пример оператора цикла: while (i<=n) { s=s+i/(i+1); i++; } Пример решения задачи Задача. Дано действительное число x. Вычислить значение sinx с помощью ряда x3 x5 x2n+1 y = sinx = x - — + — - ... + (-1) n ——— + ... 3! с точностью 10 -5 5! (2n+1)! (т.е. учитывая только те члены ряда, которые по абсолютной величине больше либо равны 10-5). Для проверки результата вычислить sinx с помощью стандартной функции. Если при вычислении очередного члена ряда отдельно вычислять числитель и знаменатель, где значения могут быть очень большие, то получится слишком большая погрешность. Поэтому выведем рекуррентную формулу вычисления очередного члена ряда через предыдущий член. Обозначим очередной член данного ряда через an . a0 = x x3 x2 a1= - — = -a0* —— 3! 2*3 x5 x2 a2= + — = -a1 * —— 5! 4*5 29
  • 4. ... an = -an-1 x2 * ———— 2n(2n+1) Поскольку для вычисления очередного члена ряда нужно знать только значение предыдущего члена, а все суммируемые значения хранить нет необходимости, то массив не нужен. Достаточно одной простой переменной для вычисления очередного члена ряда. Назовем ее a. начало Ввод x y=0, a=x, n=0 нет |a| ≥10-5 да y=y+a n=n+1 a=-a x2 /(2n(2n+1)) Вывод y, sin(x) конец Рис. 2.1. Схема алгоритма вычисления y=sinx 30
  • 5. Программа: /* Приближенное вычисление y=sin x */ #include <stdio.h> #include <math.h> #define E 1e-5 /* точность вычисления */ main() { float x, y; float a; int n; /* аргумент функции */ /* сумма ряда */ /* очередной член ряда */ /* номер итерации */ printf ("x="); scanf ("%f",&x); y=0; a=x; n=0; while ( fabs(a) >= E ) { y=y+a; n++; /* n=n+1; */ a=-a*x*x/(2*n*(2*n+1)); /* вычисление очередного члена ряда через предыдущий */ } printf ("y=%fn",y); printf ("sinx=%fn",sin(x)); return 0; } Примеры результатов выполнения программы: x=3.14159 y=0.000002 sinx=0.000003 x=0 y=0.000000 sinx=0.000000 x=1.5708 y=1.000004 sinx=1.000000 x=-1.5708 y=-1.000004 sinx=-1.000000 31
  • 6. Отладка программы в TURBO C или Borland C++ 1. Запустите систему (см. часть 3, приложение 1 или приложение 2) и введите текст своей программы, соблюдая ступенчатую запись. 2. Выполните компиляцию программы. При компиляции могут быть обнаружены синтаксические ошибки в программе. В таком случае в окне Message появятся сообщения об ошибках с указанием номеров строк программы, где обнаружены ошибки. В программе будет выделена первая неверная строка, а курсор укажет на предполагаемое местоположение ошибки в программе. Исправьте ошибки и повторите компиляцию. 3. После исправления всех синтаксических ошибок сохраните программу в файле на диске, указав какое-либо имя с расширением .с . 4. Запустите программу на выполнение. По запросу программы введите тестовые исходные данные. Проверьте результат. Если результаты оказались неверными, проверьте программу. После редактирования программы повторите действия с пункта 2. Если программа зациклилась, попытайтесь прервать ее выполнение с помощью одновременного нажатия клавиш [Ctrl] и [Break]. Если это сделать не удалось, снимите задачу, снова запустите систему и откройте файл со своей программой. Если причина ошибки не понятна, выполните трассировку программы на компьютере с помощью команд меню Run и Trace into (F7) или Steep over (F8). Эти команды вызывают выполнение одной выделенной строки программы. При этом можно проследить, как меняются значения поременных программы. Для этого служит окно Watch. Чтобы добавить в окно Watch интересующую вас переменную, нажмите 32 одновременно
  • 7. клавиши [Ctrl] и [F7] и введите имя переменной, затем нажмите [Enter]. Прервать выполнение программы при трассировке можно нажатием клавиш [Ctrl] - [F2] или выполнив команды меню Run и Program reset. Контрольные вопросы и упражнения. 1. В каких случаях используется составной оператор? 2. Какие из перечисленных условий будут ложными при заданных значениях a = 10; b = -5; a) while (a) б) while (a>0 || b>0) в) while (a>0 && b>0) г) while (!a || b) д) while (!a && b) е) while (a && b) 3. Напишите программу вычисления произведения двух натуральных чисел А и В, не используя операцию умножения: A*B = A+A+ … +A (число слагаемых равно B). Выполнение контрольных заданий 1. Получите у преподавателя индивидуальное задание. 2. Составьте блок-схему и программу на языке С и подберите тесты для проверки программы на компьютере. 3. Отладьте программу на компьютере. 5. Оформите и сдайте отчет. Контрольные задания 1. Дано действительное число x. Вычислить значение y с помощью стандартной функции и с помощью ряда с точностью 0,0001: 33
  • 8. x2 x4 x2n а) y = cos(x) = 1 - — + — - ... + (-1)n ——— + ... 2! 4! (2n)! x2 x3 xn б) y = ex = 1+ x + — + — + ... + — + ... 2! 3! n! x2 x3 xn в) y = e-x = 1- x + — - — + ... + (-1)n — + ... 2! 3! n! x2 x3 xn г) y = ln(1+x) = x - — + — - ... + (-1)n-1 —— + ... 2 3 n x-1 (x-1)3 (x-1) 5 д) y = ln (x) = 2 ( —— + ——— + ——— + … ) , x+1 3(x+1)3 5(x+1)5 x+1 , где |x|<1. где x>0 x2 x3 xn е) y = ln(1-x) = - ( x + — + — + ... + —— + ... ) , 2 3 n x3 x5 x7 ж) y = arctg(x) = x - — + — - —— + ... 3 5 7 , где |x|<1. где |x|≤1. 1 1 1 з) y = ln ——— = 2 ( —— + —— + —— + … ) , x–1 x 3x3 5x5 где |x|>1 (x-1)2 (x-1)3 и) y = ln x = ( x-1) - —— + —— 2 3 … , где 0 < x ≤2 (x-1)2 (x-1)3 к) y = ln x = —— + —— + —— + x 2x2 3x3 … , где x > 0.5 x-1 34
  • 9. 2. Дано натуральное число n. Проверить справедливость равенства: n(n+1) а) 1 + 2 + 3 +...+ n = ——— 2 n(n+1)(2n+1) б) 12 + 22+ 32 +...+ n2 = —————— 6 в) 1 + 2 + 22 +...+2n-1 = 2n - 1 г) 13 + 23+ 33 +...+ n3 = (1 + 2+ 3 + … + n)2 3. Дано натуральное число n. а) Определить количество цифр в числе n. б) Определить сумму его цифр. в) Определить первую цифру числа n. 35
  • 10. 2. Дано натуральное число n. Проверить справедливость равенства: n(n+1) а) 1 + 2 + 3 +...+ n = ——— 2 n(n+1)(2n+1) б) 12 + 22+ 32 +...+ n2 = —————— 6 в) 1 + 2 + 22 +...+2n-1 = 2n - 1 г) 13 + 23+ 33 +...+ n3 = (1 + 2+ 3 + … + n)2 3. Дано натуральное число n. а) Определить количество цифр в числе n. б) Определить сумму его цифр. в) Определить первую цифру числа n. 35