Циклы. Цикл с фиксированным числом операций for

Содержание

Слайд 2

Алгоритмы суммы и произведения 7 0 + = 17 6 +

Алгоритмы суммы и произведения

7

0

+

=

17

6

+

+

4

S:=0
для i от 1 до n
ввод k;

S:=S+k;
кц
рез S.
Слайд 3

S:=1 для i от 1 до n ввод k; S:=S*k; кц рез S. Алгоритм произведения

S:=1
для i от 1 до n
ввод k;
S:=S*k;
кц
рез S.

Алгоритм произведения

Слайд 4

Дана последовательность из n произвольных чисел. Найти сумму нечетных элементов Сумма

Дана последовательность из n произвольных чисел. Найти сумму нечетных элементов

Сумма

нечетных

i < n

Нет

Да

i=i+1

Нет

Да

i =0, S=0

S=S+a

a

a% 2 =1

S

Конец

Слайд 5

Дана последовательность из n произвольных чисел. Найти значение самого большого элемента

Дана последовательность из n произвольных чисел. Найти значение самого большого элемента

Максимум

Да

a

a>max

L1
i

i =1

a

max=a

1

1

max=a

i =i+1

L1

S

Конец

Нет

Слайд 6

Вывести на экран таблицу значений функции x2 + 2 для x

Вывести на экран таблицу значений функции x2 + 2 для
x

= 1, 1.2, 1.4, … 3.

Таблица значений

x = 1

h = 0.2

i от 1 до 15

f = x2 + 2

Вывод f, x

x = x + h

Конец

Слайд 7

Дана последовательность из n произвольных чисел. Найти сумму нечетных элементов Сумма

Дана последовательность из n произвольных чисел. Найти сумму нечетных элементов

Сумма

четных

i

Нет

Да

i=i+1

Нет

Да

i =0, S=0

S=S+a

a

a% 2 =1

S

Конец

Слайд 8

Дана последовательность из n произвольных чисел. Найти значение самого большого элемента

Дана последовательность из n произвольных чисел. Найти значение самого большого элемента

Максимум

Да

a

a>max

L1
i

i =1

a

max=a

1

1

max=a

i =i+1

L1

S

Конец

Нет

Слайд 9

Вывести на экран таблицу значений функции x2 + 2 для x

Вывести на экран таблицу значений функции x2 + 2 для
x

= 1, 1.2, 1.4, … 3.

Таблица значений

x = 1

h = 0.2

i от 1 до 15

f = x2 + 2

Вывод f, x

x = x + h

Конец

Слайд 10

Вычислить сумму 1+ 1/2 + 1/3 +1/4 + … +1/n int

Вычислить сумму 1+ 1/2 + 1/3 +1/4 + … +1/n

int

main(int argc, char *argv[])
{
int n,i;
printf("n = ");
scanf("%d",&n);
float S = 0;
for(i=1;i<=n;i++)
S+=1./i;
printf("S = %f\n",S);
system("PAUSE");
return 0;
}
Слайд 11

Рекуррентные соотношения Последовательность чисел a0, a1, a2, ... образуется по закону:

Рекуррентные соотношения

Последовательность чисел a0, a1, a2, ... образуется по закону:

a0 = 1,
ak = kak-1 +1/k ( k = 1, 2, ... ). Дано натуральное число n. Получить
a1, a2, ..., an.

Рекуррентыми соотношениями называются соотношения в которых задано начальное значение (а0). Все остальные значения a1, a2, …, ak вычисляются с использованием предыдущего.

Слайд 12

алг Формула нач ввод n вещ a0 = 1, ai вывод

алг Формула нач
ввод n
вещ a0 = 1, ai
вывод a0
для i от

1 до n
ai = i*a0+1/i
вывод ai
a0 = ai
кц
кон
Слайд 13

int main(int argc, char *argv[]) { float a0=1.,ai; int n=10,i; printf("a0

int main(int argc, char *argv[])
{
float a0=1.,ai;
int n=10,i;
printf("a0 =

%f\n",a0);
for(i=1;i<=n;i++){
ai= i*a0+1./i;
printf("a%d = %f\n",i,ai);
a0=ai;
}
system("PAUSE");
return 0;
}
Слайд 14

Последовательность Фибоначчи образуется так: первый и второй члены последовательности равны 1,

Последовательность Фибоначчи образуется так: первый и второй члены последовательности равны 1,

каждый следующий равен сумме двух предыдущих (1, 1, 2, 3, 5, 8, 13, ...). Фибоначчи.

алг ФИБОНАЧЧИ нач
ввод n
вещ a0 = 1, a1=1
вывод a0, a1
для i от 2 до n
ai = a0+a1
вывод ai
a0 = a1
a1 = ai
кц
кон

Слайд 15

int main(int argc, char *argv[]) { int a0=1,a1 = 1, ai;

int main(int argc, char *argv[])
{
int a0=1,a1 = 1, ai;
int

n=6,i;
printf("a0 = %d\n a1 = %d\n ",a0,a1);
for(i=2;i<=n;i++){
ai= a0+a1;
printf("a%d = %d\n",i,ai);
a0=a1;
a1=ai;
}
system("PAUSE");
return 0;
}
Слайд 16

Найти сумму 21 + 22 + … +210. Операцию возведения в

Найти сумму 21 + 22 + … +210. Операцию возведения в

степень не использовать.

a0 = 2, ak = ak-1 *2

алг СУММА нач
ввод 10
вещ a0 = 2, S=a0
для i от 2 до n
a0 = a0*2
S = S + a0
кц
вывод S
кон

Слайд 17

Возможности цикла for: Уменьшение счетчика – for(i = 10 ;i>=0;i- -)

Возможности цикла for:

Уменьшение счетчика – for(i = 10 ;i>=0;i- -)

Изменение шага - for(i = 1,i<=10,i+=4)
for(i = 1,i<=10,i*=2)
Использование вещественных переменных в качестве счетчика - for(x=0;x<10;x+=0.5)
Работа с символами - for(c = 'А'; c < 'Я'; c++).
Возможность записывать несколько действий в одной секции -
for (i=1,j=1;i<10,j<10;i++,j+=4)
Слайд 18

Возможность опускать любое из выражений заголовка for(;;) – бесконечный цикл, пустое условие всегда считается истинным;

Возможность опускать любое из выражений заголовка
for(;;) – бесконечный цикл,

пустое условие всегда считается истинным;
Слайд 19

4.3.2. Операторы безусловной передачи управления continue и break break досрочно завершает

4.3.2. Операторы безусловной передачи управления continue и break

break досрочно завершает

выполнение цикла. Управление передается оператору, следующему за циклом.
int n =15;
for(int i=0;i{ int z = rand()%200;
if (z>100) break;
}
Слайд 20

continue пропускает все последующие операторы тела цикла и передает управление на

continue пропускает все последующие операторы тела цикла и передает управление

на в начало цикла.
int f = 1;
do
{
int z = rand()%100;
if (z>30) continue;
if (z<10) f = 0;
printf(“%d”,z);
} while(f);
Слайд 21

Ввести с клавиатуры 5 произвольных чисел, найти и вывести на экран

Ввести с клавиатуры 5 произвольных чисел, найти и вывести на экран

их сумму.


printf (“ Вводите числа: \n");
float S = 0,c;
int n;
for (int i=0;i<5;i++) {
printf("%d==> ",i+1);
n = scanf("%f",&c);
if(n!=1) {fflush(stdin);
i--;
continue;}
S+=c;
}

Слайд 22

printf (“ Сумма чисел = %.3f\n",S); system("PAUSE"); …

printf (“ Сумма чисел = %.3f\n",S);
system("PAUSE");

Слайд 23

4.3.3. Циклы while и do while Для решения задач, при выполнении

4.3.3. Циклы while и do while

Для решения задач, при выполнении которых

необходимо проводить циклические действия до тех пор, пока истинно какое-либо условие
while() и do while().

Синтаксис:
while (условное выражение)
{ тело цикла
}

Слайд 24

Синтаксис: do { тело цикла } while (условное выражение) while -

Синтаксис: do {
тело цикла
} while (условное выражение)

while - цикл с

предусловием
(может ни разу не выполниться)
do while - цикл с постусловием
(обязательно выполниться хотя бы один раз)
Слайд 25

Ввести с клавиатуры произвольное количество чисел и найти сумму введенных чисел.

Ввести с клавиатуры произвольное количество чисел и найти сумму введенных чисел.

Ввод продолжать до первого отрицательного числа.

Практическое занятие

Слайд 26

printf (“Вводите числа: \n"); float S = 0,c=0; int n; int

printf (“Вводите числа: \n");
float S = 0,c=0;
int

n;
int i = 1;
do {
printf("%d==> ",i);
i++;
n = scanf("%f",&c);
if(n!=1) {fflush(stdin);
i--;
continue;}
S+=c;
}while (c>=0);
printf(“ Сумма - %f\n", S);
Слайд 27

Слайд 28

…printf (" Вводите числа: \n"); float S = 0,c=0; int n;

…printf (" Вводите числа: \n");
float S = 0,c=0;

int n;
int i = 1;
printf("%d==> ",i);
n = scanf("%f",&c);
if(n!=1) {fflush(stdin);
i--;
}
else {S+=c;}
i++;
while (c>=0) {
printf("%d==> ",i);
i++;
Слайд 29

n = scanf("%f",&c); if(n!=1) {fflush(stdin); i--; continue;} S+=c; } printf(" Сумма - %f\n", S); system("PAUSE");

n = scanf("%f",&c);
if(n!=1) {fflush(stdin);
i--;
continue;}
S+=c;
}

printf(" Сумма - %f\n", S);
system("PAUSE");
Слайд 30

Слайд 31

Основные логические ошибки при использовании циклов. После заголовка цикла ставиться точка

Основные логические ошибки при использовании циклов.

После заголовка цикла ставиться

точка с запятой. Такой цикл считается компилятором пустым Например:
for(int i=0;i<10;i++);
{ n+=10;
y-=15;
}
Увеличение переменной n и уменьшение переменной y происходит за циклом, ровно один раз.