- •Введение
- •Основные команды управления
- •Основные команды управления
- •Основные команды управления
- •Основные команды управления
- •Основные команды управления
- •Задача 1
- •Начало
- •Основы алгоритмизации
- •Основы алгоритмизации
- •Основы алгоритмизации
- •Основы алгоритмизации
- •Основы алгоритмизации
- •Основы алгоритмизации
- •Основы алгоритмизации
- •Основы алгоритмизации
- •Основы алгоритмизации
- •Методика решения задач
- •Методика решения задач
- •Методика решения задач
- •Методика решения задач
- •Задача 2
- •Задача 2
- •Задача 3
- •Задача 3
- •Задача 3
- •Задача 4
- •Задача 4
Методика решения задач
Успех в разработке программы зависит от двух основных факторов: соблюдения описан- ной выше методики и от опыта программиро- вания. Не следует игнорировать или недооце- нивать этапы проектирования программы (1 – 5), выполняемые вне компьютера. "Час,
потраченный на выбор алгоритма, стоит пяти часов программирования" – Д.Ван-Тассел. - Стиль, разработка, эффективность, отладка и испытание программ. - М., Мир, 1985.
Задача 2
Вычислить сумму |
|
x |
|
x2 |
|
x3 |
|
|
n 1 xn 1 |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
1 2! |
3! |
|
4! ( 1) |
|
|
n! |
|||||||||
|
|
|
|
||||||||||||
|
Моделирование задачи |
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Параметр цикла i |
|
1 |
|
|
|
|
2 |
|
|
|
3 |
|
4 |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Знак слагаемого Z |
|
1 |
|
|
|
|
-1 |
|
|
|
1 |
|
-1 |
||
|
|
|
|
|
|
|
|
|
|
|
|
||||
Числитель C |
|
1 |
|
|
|
x = 2 |
|
x2 = 4 |
|
|
x3 = 8 |
||||
Знаменатель F |
|
1 |
|
|
1*2 = 2 |
|
|
2*3 = 6 |
|
6*4 = 24 |
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Слагаемое Z*C/F |
|
1 |
|
|
|
|
-1 |
|
|
|
0.(6) |
|
-0.041(6) |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Сумма S |
|
1 |
|
|
|
|
0 |
|
|
|
0.(6) |
|
0.625 |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Задача 2 |
|
|
|
|
|
Алгоритм решения задачи 2 |
|
|
|
|||
Начало |
N |
4 |
|
|
|
|
|
|
|
|
|
||
N,X |
X |
2 |
|
|
|
|
S |
0 |
|
|
|
|
|
|
|
|
|
|
||
S=0; Z=1; C=1; F=1 |
Z |
1 |
|
|
|
|
C |
1 |
|
|
|
|
|
|
|
|
|
|
||
i=1,N |
F |
1 |
|
|
|
|
|
i |
1 |
2 |
3 |
4 |
5 |
F=F*i; S=S+Z*C/F; |
F |
1 |
2 |
6 |
24 |
|
Z=-Z; C=C*X |
S |
1 |
0 |
0.(6) |
0.625 |
|
S |
Z |
-1 |
1 |
-1 |
1 |
|
C |
2 |
4 |
8 |
16 |
|
|
Конец |
S |
|
|
|
|
0.625 |
Рис.4. Алгоритм решения |
|
|
|
|
|
Задача 2
Код программы
#include <iostream> using namespace std; void main() {
double S, C, X; int Z, i, N, F; cin>>N>>X;
S=0; Z=1; C=1; F=1; for (i=1; i<=N; i++) {
F*=i;
S+=Z*C/F; Z=-Z; C*=X;
}
cout<<S<<endl;
}
Задача 3
Сколько членов последовательности |
1, |
1 |
, |
1 , |
||||
|
|
|
|
|
|
2 |
|
3 |
надо просуммировать для того, чтобы сумма превысила |
||||||||
значение S? |
|
|
|
|
|
|
|
|
|
Моделирование задачи 3 |
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
Номер цикла i |
1 |
2 |
3 |
|
4 |
|
|
5 |
Сумма S1 |
1 |
1.5 |
1.833333 |
2.083333 |
|
|
2.283333 |
Задача 3
Начало |
|
Алгоритм решения задачи 3 |
|
||||
|
|
|
|
|
|
||
S |
S |
2.08 |
|
|
|
|
|
S1=0; N=0 |
S1 |
0 |
|
|
|
|
|
|
N |
0 |
|
|
|
|
|
S1<S |
- |
|
|
|
|
|
|
S1<S |
да |
да |
да |
да |
нет |
||
+ |
|||||||
N |
1 |
2 |
3 |
4 |
|
||
N=N+1 |
|
||||||
S1=S1+1/N |
S1 |
1 |
1.5 |
1.8(3) |
2.08(3) |
|
|
|
|
||||||
N |
N |
|
|
|
|
4 |
|
|
|
|
|
|
Конец
Рис. 5. Алгоритм. решения
Задача 3
Код программы:
#include <iostream> using namespace std;
void main() { double S,S1; int N; cin>>S; S1=0; N=0;
while (S1<S) S1+=1.0/++N; cout<<"N="<<N<<endl;
}
Задача 4
Последовательность значений Xi, Yi вычисляется по формулам:
|
|
Xi=0.3Xi-1+0.4Xi-2+0.2Yi-1; |
|
|
|
|||||
|
|
Yi=0.2Yi-1+0.3Yi-2+0.4Xi-1, |
i=2, 3, ... |
|
||||||
|
|
N |
|
|
|
|
|
|
|
|
Вычислить |
( X i |
Yi ) |
при X0=X1=1 и Y0=Y1=2. |
|||||||
|
|
i 0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Моделирование задачи 4 |
|||
|
i |
|
0 |
|
|
1 |
2 |
|
3 |
4 |
|
X0 |
|
|
|
|
|
1 |
|
1 |
1.1 |
|
X1 |
|
|
|
|
1 |
1 |
|
1.1 |
1.01 |
|
X2 |
|
1 |
|
|
1 |
1.1 |
|
1.01 |
1.007 |
|
Y0 |
|
|
|
|
|
2 |
|
2 |
1.4 |
|
Y1 |
|
|
|
|
2 |
2 |
|
1.4 |
1.32 |
|
Y2 |
|
2 |
|
|
2 |
1.4 |
|
1.32 |
0.987 |
|
Cумма S |
|
3 |
|
|
6 |
8.5 |
|
10.83 |
12.925 |
|
|
Задача 4 |
||
|
|
Начало |
|
|
|
|
N |
|
|
|
X1=1; X0=1; Y1=2; Y0=2; |
|||
|
S=X0+Y0+X1+Y1 |
|||
|
+ |
N<2 |
- |
|
|
|
|
||
- |
N=0 |
|
|
i=2,N |
|
|
|
||
|
+ |
|
|
|
|
|
|
|
|
|
S=X0+Y0 |
|
X2=0.3*X1+0.4*X0+0.2*Y1; |
|
|
|
|
||
|
|
|
Y2=0.2*Y1+0.3*Y0+0.4*X1; |
|
|
|
|
|
S=S+X2+Y2; X0=X1; |
|
|
|
Y0=Y1; X1=X2; Y1=Y2 |
|
|
|
S |
|
Рис.6. Алгоритм |
|
|
|
|
|
|
|
Конец |
решения |
|
|
|
|
Задача 4
Код программы
#include <iostream> using namespace std; void main() {
double S,X0,X1,X2,Y0,Y1,Y2; int N,i;
cin>>N;
X1=1; X0=1; Y1=2; Y0=2; S=X0+Y0+X1+Y1;
if (N<2){
if (N==0) S=X0+Y0;
} else
for (i=2; i<=N; i++) {
X2=0.3*X1+0.4*X0+0.2*Y1;
Y2=0.2*Y1+0.3*Y0+0.4*X1;
S+=X2+Y2;
X0=X1; Y0=Y1; X1=X2; Y1=Y2;
}
cout<<"S="<<S;
}