Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

IT_04_11

.pdf
Скачиваний:
2
Добавлен:
29.02.2016
Размер:
332.43 Кб
Скачать

21

пока будет выполняться указанное условие. Условие проверяется каждый раз перед выполнением тела цикла.

Формат цикла с предусловием в языке С++ следующий: while (условие)

{

тело_цикла

}

 

Следующее после while условие должно быть заключено в круглые скобки. Если выражение условия истинно, то выполняется непосредственно следующий за ним оператор. Это повторяется до тех пор, пока вычисление условия не станет ложно.

4.9.2 Цикл с постусловием do .. while.

В отличие от предыдущего оператор цикла с постусловием сначала выполняет тело цикла, а затем проверяет условие о том, нужно ли продолжить итерации. Считается, что этот оператор более эффективен для поиска ошибок при верификации и отладки программ, так как тело цикла выполнится хотя бы один раз. Формат цикла с постусловием:

do

{ оператор_1;

 

оператор_2;

 

...

 

оператор_N;

}while (выражение условия продолжения цикла);

4.9.3Оператор цикла for .

Оператор for используется для заранее заданного числа итераций. Формат описания цикла for:

for (установка_счетчика; условие_цикла; модификация_счетчика) { операторы_тела_цикла;

}

Сначала выполняется установка_счетчика, потом проверяется условие_цикла и если оно истинно, выполняются операторы_тела_цикла, затем вычисляется модификация_счетчика и управление передается в начало цикла с разницей, что начальная_инструкция уже не выполняется, например:

#include <iostream.h> int main()

{ for(int i = 0; i < 10; ++i) cout << i << endl;

return 0;

}

Пример вывода на экран десяти целых чисел, начиная с нуля: for (int i=0; i<10; i++) cout << i << “ “;

Что эквивалентно записи цикла с предусловием: int i = 0;

while (i<10) { cout << i << “ “; i++; }

но более удобочитаемо, поскольку вся информация, управляющая циклом, локализована. Операция ++ к целой переменной i добавляет единицу. Первая часть оператора for не обязательно должна быть описанием, она может быть любым оператором.

Возможно использование внутри цикла for нескольких счетчиков и условий. При этом они внутри скобок отделяются друга запятой в формате:

for( инициализация_счетчика_1, инициализация_счетчика_2; условие продолжения итераций;

изменение_счетчика_1, изменение_счетчика_2) тело_цикла;

Пример задания вывода на экран двух переменных: i от 10 до 100 шагом 10 и j от 1000 до 100 шагом 100, пока i<j.

for(int i=10, int j=1000;i<j; i+=10,j-=100) cout<<i <“ ”<<j;

Для прерывания циклов могут использоваться следующие операторы 1) break – прерывает выполнение цикла в указанной точке;

22

2) continue – завершает текущий оператор в теле цикла и производит проверку условия продолжения итераций.

4.10 Ввод вывод в языке программирования С++

В С++ для консольного ввода-вывода используются стандартные потоки:

1)cin – поток ввода данных с клавиатуры в программу;

2)cout – поток вывода данных из программы на экран.

Для передачи данных в эти потоки используются два оператора << и >>. С помощью первого передаются данные на поток cout, второго – считываются данные из cin.

При вводе данных используется следующий формат: cin >> Данные1 >> Данные2 >> >> Данные N;

При выводе данных на консоль:

cout << Данные1 << Данные2 << << Данные N ;

Для форматированного вывода в С++ используются встроенные функции потока cout (таблица 4.9) и манипуляторы модуля iomanip (таблица 4.10).

Встроенная функция cout (или иного потока) вызывается с помощью конструкции составного имени в следующем формате:

 

поток.функция(параметры);

Таблица 4.4 – Встроенные функции потока cout

 

 

Функция

Описание

width(int x)

Минимальное число знаков до следующего вывода

fill(char x)

Устанавливает символ-заполнитель (по умолчанию – пробел)

precision(int x)

Устанавливает число значащих знаков для чисел с плавающей точкой

Пример.

 

 

 

int X=101, Y=2, Z=3;

// Объявление переменных

cout.width(10);

 

// Задание ширины вывода данных в 10 позиций

cout << X << Y << Z;

// Вывод трех переменных

Манипулятор – специальная функциобразная операция. В отличие от встроенных

функций манипуляторы

при выводе данных передаются в поток с помощью оператора

<<.

 

 

 

Таблица 4.5 – Манипуляторы потоков модулей iostream.h и iomanip.h

 

 

 

 

Манипулятор

 

 

Описание

endl

 

Перевод строки

flush

 

Выгружает содержимое буфера в поток

dec

 

Меняет формат вывода числа на десятичный

oct

 

Меняет формат вывода числа на восьмеричный

hex

 

Меняет формат вывода числа на шестнадцатеричный

ws

 

Извлекает и удаляет символы пустых промежутков из потока

showpos

 

Показывает '+' перед неотрицательными числами

showpoint

 

Показывает десятичную точку

noshowpoint

 

Скрывает десятичную точку

setw(int w)

 

Задает минимальную ширину вывода

setprecision(int n)

 

Устанавливает точность представления чисел с плавающей

 

 

точкой равной n разрядам

setfill(int code)

 

Устанавливает код символа-заполнителя

Манипуляторы могут объединяться в цепочку вставок (или извлечений из потока). Например задание ширины 4 позиции для i и 6 – для j:

cout << setw(4) << i << setw(6) << j;

Это эквивалентно более широкой записи с использованием функций: cout.width(4);

cout << i; cout.width(6); cout << j;

23

5 Контрольные вопросы

1.Что такое "алгоритм"?

2.Какими свойствами должен обладать алгоритм?

3.Какие виды описания алгоритмов используются на практике?

4.Какие виды схем алгоритмов различают в ГОСТ 19.701-90?

5.Какие виды символов используют для изображения блок-схем?

6.По каким правилам строится схема программы?

7.Какие методы используются при разработке схем алгоритмов?

8.Какие основные базовые конструкции используются для построения схем алгоритмов?

9.Как в С++ производится вывод информации на экран монитора?

10.Каким образом в С++ вводятся значения переменных с клавиатуры?

11.Какие операторы С++ используются для выполнения основных математических операций?

12.Какие операторы условного перехода используются в языке С++?

24

6 Варианты заданий

6.1 Варианты индивидуальных заданий к задаче №1

Составить блок-схему алгоритма и написать текст программы на языке программирования С++ решения задачи с условным переходом. Необходимо рассчитать значение искомой переменной по одному из двух альтернативных выражений в зависимости от значения переменной условия, значение которого необходимо предварительно вычислить согласно заданию. Значения переменной условия и переменной результата должны выводиться на экран.

Исходные данные к заданию находятся в таблице 6.1.

Таблица 6.6 - Индивидуальные задания к задаче №1

Данные1

Данные

2

Переменная

Условие

Условие не

условия

выполняется

выполняется

 

 

 

 

1

A1= 2.35

A2=-5.89

 

B=(A12-A2)>0

C=3.1B-A1A22

C=A12A2-3.1B

2

X1=-8.44

X2= 1.73

 

Y=(4X1-X2)<0

Z=5Y2-X2+2X1

Z=X1+X2-5Y2

3

E1= 7.54

E2=-3.62

 

F=(3E2-E1)>0

Y=4F /(E1-E2)

Y=4F/(E2-E1)

4

B1=-6.71

B2= 4.57

 

E=(B1-B22)<0

X=2E -B1+B22

X=2E -B2+B12

5

C1= 3.26

C2=-5.41

 

X=(C1 C2)>0

E=7.5X - C1/C2

E=C1/C2 -7.5X

6

D1=-9.08

D2= 6.35

 

I=(D12-D22)<0

B=2.1D1-3.4 I

B=1.2D2-3.4 I

7

F1= 5.12

F2=-2.06

 

A=(7F12-F2)>0

D=3.1A-7F1F2

D=7F1F2-3.1A

8

H1=-0.97

H2= 7.94

 

D=(H1/H22)<0

F=8D-7.5H1H2

F=4.5H1H2-6D

9

I1= 1.63

I2=-9.18

 

H=(3I12-I22)>0

A=H/(3.8I1-I2)

A=H/(I2-3.8I1)

10

J1=-4.32

J2= 0.79

 

C=(J1J2-9)<0

I=3C-4.1(J1J2)2

I=4(J1J2)2-3C

11

K1= 7.45

K2=-3.82

 

J=(K1-5K22)>0

H=2.5J-K1K2

H=K1K2-2.5J

12

L1=-2.71

L2= 5.63

 

K=(L12/L2)<0

J=9K-3L1+L2

J=3L1-L2-9K

13

M1=5.23

M2=-1.1

 

L=(M1-M2)>0

K=L-5.4M1M2

K=5.4M1M2-L

14

N1=-3.64

N2= 4.47

 

M=(N12N2)<0

L=M/(N1-N2)

L=M/(N2-N1)

15

P1= 8.19

P2=-2.34

 

N=(2P1/P22)>0

M=(3P1-P2)/N

M=(3P2-P1)/N

16

R1=-6.57

R2= 6.95

 

P=(R1/R2-1)<0

N=11(R1-R2)P

N=11(R2-R1)P

17

S1= 1.08

S2=-7.21

 

R=(1/S1/S2)>0

P=7(S12-S2)R

P=7(S22-S1)R

18

T1=-0.62

T2= 8.58

 

S=(T22-9T1)<0

R=5S/(9T1-T2)

R=5S/(9T2-T1)

19

Q1= 4.86

Q2=-9.46

 

T=(Q22/Q1)<0

S=3T/(Q1-Q2)

S=5T/(Q2-Q1)

20

V1=-9.31

V2= 0.99

 

Q=(V1-V22)>0

T=Q2/(Q-V1V2)

T=Q2/(V2V1)

21

W1=5.04

W2=-3.3

 

V=(W1-W2)<0

Q=V2-2W1W2

Q=2W1W2-V2

22

Y1=-8.71

Y2= 5.14

 

W=(Y1+Y2)>0

V=4W-Y12/Y2

V=Y12/Y2-4W

23

Z1= 2.93

Z2=-1.08

 

Y=(Z1-Z22)<0

W=Z1Z2-1.4Y

W=1.4Y-Z1Z2

24

U1=-7.35

U2= 4.56

 

Z=(U12+U2)>0

Y=Z-U1/(U2-1)

Y=Z+U1/U2

25

G1= 1.82

G2=-2.71

 

U=(G1G22)<0

Z=U/(G12-G2)

Z=U/(G22-G1)

26

A3=-4.24

A4= 8.62

 

G=(A32-A4)>0

U=A3A4-8G2

U= 8G2 -A3A4

27

B3= 6.19

B4=-7.45

 

A=(B3/B42)<0

G=B3/(B4-A2)

G=B4/(B3-A2)

28

C3=-0.66

C4= 1.27

 

B=(C4-2C3)>0

A=C3A2-3C42

A=C4A2-3C32

29

D3= 3.47

D4=-0.83

 

C=(D4/D32)<0

B=D3-2D4C2

B=D4-2D3C2

30

E3=-9.58

E4= 6.99

 

D=(E3-E42)>0

C=E3D-0.5E42

C=E4D-0.5E32

31

F3= 4.83

F4=-9.01

 

E=(F32-7F4)<0

D=E2/(7F4-F3)

D=E2/(7F3-F4)

32

H3=-1.61

H4= 3.25

 

F=(H32-H42)>0

E=F-(H3-2H4)2

E=(H3-2H4)2-F

33

G3= 7.90

G4=-1.78

 

H=(5G3-G4)<0

F=1.7H2-G3G4

F=G3G4-1.7H2

34

I3=-5.72

I4= 2.16

 

G=(I32/I4+1)>0

H=0.3G-I3/I4

H=-0.3G+I4/I3

35

J3= 2.28

J4=-4.57

 

I=(J3/(J4-1))<0

G=5I2-(J3/J4)2

G=(J4/J3)2-5I2

36

K3=-8.14

K4= 5.61

 

J=(K32-7K4)>0

I=(K32-K4)2/J2

I=(K42-K3)2/J2

37

L3= 0.87

L4=-8.34

 

K=(L3L4-9)<0

J=L3(L4-9)/K2

J=L4(L3-9)2/K

38

M3=-6.3

M4=7.72

 

L=(M32-M4)>0

K=2(M32-M4L)

K=(M42-M3L)

39

N3= 4.91

N4=-6.49

 

M=(N3/N4)<0

L=(N32+9.1)/M

L=(N42+7)/M

40

P3=-2.68

P4= 0.83

 

N=(5P3-P42)>0

M=P32/(N+P4)

M=P42/(N+P3)

41

R3= 9.05

R4=-3.16

 

P=(R3R4/5)<0

N=P/(R3-5R4)2

N=P/(R4-5R3)2

42

S3=-5.36

S4= 1.98

 

R=(1/S3/S4)>0

P=(S3-2S4)2R

P=(S4-2S3)2R

43

T3= 8.59

T4=-2.07

 

S=(T42-T32)<0

R=S/(T32-3T4)

R=S/(T42-3T3)

25

Данные1

Данные

2

Переменная

Условие

Условие не

условия

выполняется

выполняется

 

 

 

 

44

Q3=-1.43

Q4= 9.25

 

T=(Q3+Q42)>0

S=4T/(Q3-6Q4)

S=2T/(Q4-Q3)

45

U3= 7.22

U4=-4.59

 

Q=(U3+U4)<0

T=(Q-U3)2/U4

T=(Q-U4)2/U3

46

X3=-3.74

X4= 5.61

 

U=(9X3-X4)>0

Q=U/X3-0.3X4

Q=U/X4-0.3X3

47

Y3= 6.81

Y4=-7.46

 

X=(Y3-2Y4)<0

U=XY3-0.7Y4

U=XY4-0.7Y3

48

W3=-1.6

W4=9.12

 

Y=(W4/W3)>0

X=Y(W32-W4)

X=Y(W42-W3)

49

V3= 0.27

V4=-2.34

 

W=(V3V42)<0

Y=W/(V32-V4)

Y=W/(V42-V3)

50

Z3=-8.08

Z4= 3.76

 

V=(Z3-Z42)>0

W=(Z3+Z42)/V

W=(Z32+Z4)/V

6.2 Варианты индивидуальных заданий к задаче №2

Составить блок-схему алгоритма и написать текст программы на языке программирования С++ решения циклической задачи вычисления значения функции в зависимости от значения переменной аргумента. Значения переменной аргумента должны изменяться от начального до конечного значения с заданным шагом изменения. Исходные данные к заданию находятся в таблице 6.2.

Таблица 7 - Индивидуальные задания к задаче №2

Начальное

Конечное

Значение

Выражение для расчета

значение

значение

шага

значений функции

 

1

Xn = -0.25

Xk = 1.75

Hx = 0.05

Y = 2.23 X2 + 3.12 X - 1.95

2

Yn = - 2.20

Yk = 2.30

Hy = 0.10

Z = -1.2 5Y2

+0.46 Y - 0.88

3

Zn = -5.25

Zk = 4.75

Hz = 0.25

A = 2.85 Z2 - 4.15 Z + 6.05

4

An = -10.50

Ak = 30.50

Ha = 0.50

B = -1.45 A2

+ 9.15 A + 12.5

5

Bn = -4.20

Bk = 3.80

Hb = 0.20

C = 0.52 B2 + 2.52 B + 7.84

6

Cn = -3.50

Ck = 11.50

Hc = 0.35

D = -0.15 C2

- 5.33 C - 9.21

7

Dn = -3.60

Dk = 12.40

Hd = 0.40

E = 1.08 D2 - 7.22 D - 2.43

8

En = -0.15

Ek = 0.45

He = 0.15

F = 4.02 E2 - 8.49 E + 3.14

9

Fn = - 9.90

Fk = 2.10

Hf = 0.30

G = -2.36 F2

+ 6.07 F + 8.3

10

Gn = -6.75

Gk = 11.25

Hg = 0.45

I = -3.44 G2

- 4.72 G +5.57

11

In = -13.20

Ik = 10.08

Hi = 0.60

J = 0.97 I2 - 1.75 I + 4.32

12

Jn = -9.60

Jk = 22.40

Hj = 0.80

K = 1.06 J2 + 5.67 J - 6.98

13

Kn = -13.0

Kk = 13.0

Hk = 0.65

L = 0.64 K2 + 2.71 K + 7.07

14

Ln = -11.25

Lk = 26.25

Hl = 0.75

M = -5.05 L2

- 9.18 L - 11.91

15

Mn = -14.0

Mk = 14.0

Hm = 0.70

H = -3.33 M2

+ 8.54 M + 9.61

16

Hn = -8.50

Hk = 25.50

Hh = 0.85

N = 4.05 H2 - 6.57 H - 8.46

17

Nn = -9.90

Nk = 26.10

Hn = 0.90

P = -2.24 N2

+ 7.94 N - 5.73

18

Pn = -16.15

Pk = 21.85

Hp = 0.95

R = -0.09 P2

-1.72 P + 2.19

19

Rn = -10.45

Rk = 11.55

Hr = 0.55

S = -1.89 R2

- 4.29 R - 3.63

20

Sn = -18.95

Sk = 22.05

Hs = 1.05

T = 2.08 S2 + 5.65 S + 4.34

21

Tn = -17.0

Tk = 23.0

Ht = 1.0

Q = 0.51 T2 - 3.77 T + 6.06

22

Qn = -11.50

Qk = 34.50

Hq = 1.15

W = 2.18 Q2 + 1.99 Q - 11.01

23

Wn = -24.0

Wk = 24.0

Hw = 1.20

V = -1.15 W2

+ 9.03W + 7.12

24

Vn = -18.75

Vk = 31.25

Hv = 1.25

U = -2.05 V2

- 0.88 V + 9.61

25

Un = -21.0

Un = 39.0

Hu = 1.50

X = -0.45 U2

+ 7.12 U - 8.02

26

Xn = -12.10

Xk = 20.90

Hx = 1.10

F1 = -1.97 X2 - 6.24 X - 5.22

27

An = -26.0

Ak = 26.0

Ha = 1.30

Y1 = 3.01 A2 + 8.11 A + 9.43

28

Bn = -1.45

Bk = 27.55

Hb = 1.45

A1 = 2.66 B2 - 4.77 B + 7.75

29

Cn = -28.0

Ck = 28.0

Hc = 1.40

E1 = 1.88 C2 - 5.19 C - 3.96

30

Dn = 13.50

Dk = 40.50

Hd = 1.35

X1 = 4.02 D2 +1.27 D - 12.81

31

En = -18.60

Ek = 43.40

He = 1.55

B1 = -0.18 E2 +3.91 E + 4.33

32

Fn = -16.50

Fk = 49.50

Hf = 1.65

C1 = -2.16 F2 + 9.66 F - 6.09

33

Hn = - 33.60

Hk = 46.40

Hh = 1.60

H1 = -1.27 H2 - 2.95 H + 9.93

34

Gn = -23.80

Gk = 44.20

Hg = 1.70

D1 = -0.74 G2 - 0.98 G - 8.17

35

In = -27.0

Ik = 45.0

Hi = 1.80

G1 = 3.09 I2 + 7.41 I + 1.53

36

Jn = -28.0

Jk = 42.0

Hj = 1.75

I1 = 4.22 J2

- 6.84 J + 2.79

26

Начальное

Конечное

Значение

 

 

Выражение для расчета

значение

значение

шага

 

 

значений функции

 

 

 

 

 

 

 

 

 

 

37

Kn = -36.10

Kk = 39.90

Hk = 1.90

J1 =

2.38

K2 + 4.72 K - 5.57

38

Ln = -27.75

Lk = 46.25

Hl = 1.85

K1 =

1.68

L2 - 3.32 L - 7.67

39

Mn = -23.40

Mk = 35.10

Hm = 1.95

L1 =-0.95 M2 + 1.72 M + 4.41

40

Nn = -14.0

Nk = 26.0

Hn = 1.0

M1 =

-5.19 N2 + 9.89 N - 7.12

41

Pn = -26.0

Pk = 34.0

Hp = 2.0

N1 =

-3.29 P2 - 2.58 P + 9.26

42

Rn = -22.55

Rk = 38.95

Hr = 2.05

P1 =

-1.38 R2 - 5.06 R - 6.33

43

Sn = -31.50

Sk = 52.50

Hs = 2.10

R1 = 2.26 S2 + 9.44 S + 4.29

44

Tn = -37.40

Tk = 50.60

Ht = 2.20

S1 =

0.43

T2

+ 4.35

T - 8.21

45

Qn = -38.70

Qk = 47.30

Hq = 2.15

T1 =

1.11

Q2

- 6.23

Q + 5.76

46

Un = -24.75

Uk = 65.25

Hu = 2.25

Q1 =

2.37

U2

- 7.61

U - 3.31

47

Wn =-39.10

Wk = 52.90

Hw = 2.30

U1

=-0.31 W2

+ 2.94

W +1.17

48

Vn = -32.90

Vk = 61.10

Hv = 2.35

W1

=

-2.55 V2 - 5.81 V + 9.74

49

Xn = -45.60

Xk = 50.40

Hx = 2.40

V1

=

-3.39 X2 + 8.26 X - 7.47

50

Yn = -44.10

Yk = 53.90

Hy = 2.45

X1

=

-1.59 Y2 - 0.74 Y - 4.22

Список литературы

1Архангельский, А. Я. C++ Builder 6. Справочное пособие. В 2-х кн. Кн.1. Язык С++ / А. Я. Архангельский. – М. : Бином-Пресс, 2004. – 544 с.

2Архангельский, А. Я. C++ Builder 6. Справочное пособие. В 2-х кн. Кн. 2. Классы и компоненты / А. Я. Архангельский. – М. : Бином-Пресс, 2004. – 528 с.

3Калинин, А.Г. Универсальные языки программирования. Семантический подход.

-М.: Радио и связь, 1991. - 400 с.

4ГОСТ 19.701-90 (ИСО 5807-85). Схемы алгоритмов, программ, данных и систем,

-Издательство стандартов, 1991. – 24 с.

5Прата, С. Язык программирования С++. Лекции и упражнения: учебник: пер. с англ. / С. Прата. – К. : ДиаСофт, 2001. – 656 с.

6Скляров, В.А. Язык C++ и объектно-ориентированное программирование. – Мн.:

Выш. шк., 1997. – 478 с.

7Скляров, В.А. Программирование на языках Си и Си++: Учебн. пособие. – М.:

Высш. шк., 1999. – 288 с.

8Харви Дейтел, Пол Дейтел. Как программировать на С++. Пер с англ. – М.: ЗАО «Издательство БИНОМ», 2000. – 1024 с.

9Ивашкова, Э.А. С++. Начала программирования. – М.: ЗАО «Издательство

БИНОМ», 2000. – 304 с.

10 Франка, П. С++ : учебный курс / П. Франка. – СПб.: Питер, 2001. – 528 с.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]