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

Информатика

.pdf
Скачиваний:
43
Добавлен:
01.05.2014
Размер:
1.23 Mб
Скачать

Глава 10. Примеры программ

{Основная программа задает стороны, вызывает функцию сравнения и выводит результат}

begin

a := 3.0; b := 4.0; c := 5.0; writeln;

writeln ('Стороны = ', a, b, c); {Контрольная точка A}

if (vid(a,b,c) = 1) then {Контрольная точка H}

writeln ('Треугольник прямоугольный') else

{Контрольная точка I}

writeln ('Треугольник не прямоугольный'); writeln;

end.

На листинге 16 представлена программа определения вида треугольника по сторонам для теста 1. Для тестирования программы тестами 2—4 необходимо в головной программе изменить значения сторон треугольника.

Результаты работы тестов 1—4 представлены в таблице 30.

Таблица 30. Значения данных в контрольных точках для четырех тестов

Контрольная

 

Значения данных

 

 

точка

Тест 1

Тест 2

 

Тест 3

 

Тест 4

A

a = 3, b = 4, c = 5 a = 3, b = 4, c = 6 a = 5, b = 3, c = 4 a = 4, b = 5, c = 3

B

x = 3, y = 4, z = 5 x = 3, y = 4, z = 6 x = 5, y = 3, z = 4 x = 4, y = 5, z = 3

C

x = 3, y = 4, z = 5,

 

 

vid = 1

 

 

 

 

 

 

 

 

D

x = 5, y = 3, z = 4,

 

 

vid = 1

 

 

 

 

 

 

 

E

 

x = 4, y = 5, z = 3,

 

 

vid = 1

 

 

 

 

 

 

F

x = 3, y = 4, z = 6,

 

 

vid = 0

 

 

 

 

 

 

 

 

H

a = 3, b = 4, c = 5,

a = 5, b = 3, c = 4, a = 4, b = 5, c = 3,

vid = 1

 

vid = 1

 

vid = 1

 

 

 

 

I

a = 3, b = 4, c = 6,

 

 

vid = 0

 

 

 

 

 

 

 

 

 

Стороны = 3, Стороны = 3, Стороны = 5, Стороны = 4,

 

4, 5

4, 6

3,

4

5,

3

 

Треугольник

Треугольник

Треугольник

Треугольник

 

прямоуголь-

не

прямоуголь-

прямоуголь-

 

ный

прямоуголь-

ный

 

ный

 

 

 

ный

 

 

 

 

111

Часть II. Программирование

§29. Циклы

29.1.Сумма натурального ряда

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

Решение.

На листинге 17 приведена программа суммирования первых n натуральных чисел, полностью совпадающая с соответствующим алгоритмом из главы 8.

Результат работы теста представлен в таблице 31.

Листинг 17. Программа вычисления суммы первых n натуральных чисел

{Суммирование натурального ряда}

{Переменная целого типа} var n : integer;

{Функция summa суммирует ряд натуральных чисел} function summa (var k : integer) : integer;

var i, s : integer; begin

{Контрольная точка B} i := 0;

s := 0;

{Контрольная точка C} {Начало цикла}

while (i < k) do begin

i := i + 1; s := s + i;

{Контрольная точка D} end;

{Конец цикла} summa := s;

{Контрольная точка E} end;

{Основная программа задает число слагаемых в сумме, вызывает функцию суммирования и выводит результат}

begin

n := 5;

{Контрольная точка A} writeln;

write ('Сумма натуральных чисел от 1 до ', n); writeln (' = ', summa(n));

writeln;

end.

112

Глава 10. Примеры программ

Таблица 31. Значения данных в контрольных точках

Контрольная точка

Значения данных

A

n = 5

B

k = 5

C

k = 5, i = 0, s = 0

D

k = 5, i = 1, s = 1

D

k = 5, i = 2, s = 3

D

k = 5, i = 3, s = 6

D

k = 5, i = 4, s = 10

D

k = 5, i = 5, s = 15

E

n = 5, i = 5, s = 15, summa = 15

Сумма натуральных чисел от 1 до 5 = 15

29.2. Сумма обратных величин натурального ряда

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

Решение.

Листинг 18. Программа вычисления суммы первых n обратных величин натурального ряда

{Суммирование обратного натурального ряда}

{Переменная целого типа} var n : integer;

{Функция summa суммирует ряд обратных натуральных чисел} function summa (var k : integer) : real;

{Сумма должна быть вещественной переменной} var i : integer;

s : real; begin

{Контрольная точка B} i := 0;

s := 0.0; {Контрольная точка C} while (i < k) do begin

i := i + 1;

s := s + 1.0/i; {Контрольная точка D} end;

summa := s; {Контрольная точка E}

end;

113

Часть II. Программирование

{Основная программа задает число слагаемых в сумме, вызывает функцию суммирования и выводит результат}

begin

n := 3;

{Контрольная точка A} writeln;

write ('Сумма обратных натуральных чисел от 1 до ', n); writeln (' = ', summa(n));

writeln;

end.

На листинге 18 приведена программа суммирования первых n обратных натуральных чисел.

Результат работы теста представлен в таблице 32.

 

Таблица 32. Значения данных в контрольных точках

 

 

 

 

Контрольная точка

 

Значения данных

A

 

n = 3

B

 

k = 3

C

 

k = 3, i = 0, s = 0.0

D

 

k = 3, i = 1, s = 1.0

D

 

k = 3, i = 2, s = 1.5

D

 

k = 3, i = 3, s = 1.833333

E

 

k = 3, i = 3, s = 1.833333, summa = 1.833333

 

Сумма обратных натуральных чисел от 1 до 5 = 1.833333

29.3. Нахождение произведения нечетных чисел 1

Задача. Найти произведение n чисел вида 1 3 5 7 …

Решение.

Листинг 19. Программа вычисления произведения первых n нечетных натуральных чисел

{Произведение первых n нечетных натуральных чисел}

{Переменная целого типа} var n : integer;

{Функция pro перемножает первые нечетные натуральные числа} function pro (var k : integer) : real;

{Произведение лучше сделать вещественной переменной} var i : integer;

p : real;

114

Глава 10. Примеры программ

begin

{Контрольная точка B} i := 0;

p := 1.0; {Контрольная точка C} while (i < k) do begin

i := i + 1;

p := p * (2.0*i - 1); {Контрольная точка D} end;

pro := p; {Контрольная точка E}

end;

{Основная программа задает число сомножителей, вызывает функцию перемножения и выводит результат}

begin

n := 5;

{Контрольная точка A} writeln;

write ('Произведение первых ', n); write (' нечетных натуральных чисел'); writeln (' = ', pro(n));

writeln;

end.

На листинге 19 приведена программа нахождения произведения первых n нечетных натуральных чисел.

Результат работы теста представлен в таблице 33.

 

Таблица 33. Значения данных в контрольных точках

 

 

 

 

Контрольная точка

 

Значения данных

A

 

n = 5

B

 

k = 5

C

 

k = 5, i = 0, p = 1.0

D

 

k = 5, i = 1, p = 1.0

D

 

k = 5, i = 2, p = 3.0

D

 

k = 5, i = 3, p = 15.0

D

 

k = 5, i = 4, p = 105.0

D

 

k = 5, i = 5, p = 945.0

E

 

k = 5, i = 5, p = 945.0, pro = 945.0

 

Произведение первых 5 нечетных натуральных чисел = 945

115

Часть II. Программирование

29.4. Нахождение произведения нечетных чисел 2

Задача. Найти произведение n чисел вида 1 3 5 7 …

Решение.

Листинг 20. Программа вычисления произведения нечетных натуральных чисел

{Произведение первых n нечетных натуральных чисел}

var n : integer;

{Функция pro перемножает первые нечетные натуральные числа} function pro (var k : integer) : real;

var i,s : integer; p : real; begin

{Контрольная точка B}

i := 0; s := 1; p := 1.0; {Контрольная точка C} while (i < k) do

begin

i := i + 1; p := p * s; s := s + 2; {Контрольная точка D}

end;

pro := p; {Контрольная точка E}

end;

{Основная программа задает число сомножителей, вызывает функцию перемножения и выводит результат}

begin

n := 5;

{Контрольная точка A} writeln;

write ('Произведение первых ', n);

writeln (' нечетных натуральных чисел = ', pro(n)); writeln;

end.

 

Таблица 34. Значения данных в контрольных точках

 

 

 

 

 

Контрольная точка

 

Значения данных

A

 

n = 5

 

B

 

k = 5

C

 

k = 5, i = 0, s = 1, p = 1.0

D

 

k = 5, i = 1, s = 3, p = 1.0

D

 

k = 5, i = 1, s = 5, p = 3.0

D

 

k = 5, i = 1, s = 7, p = 15.0

D

 

k = 5, i = 1, s = 9, p = 105.0

D

 

k = 5, i = 1, s = 11, p = 945.0

E

 

k = 5, i = 5, s = 11, p = 945.0, pro = 945.0

 

Произведение первых 5 нечетных натуральных чисел = 945

116

Глава 10. Примеры программ

§30. Массивы

30.1.Максимум данных положительных чисел. Версия 1

Задача. Найти максимальное число из n данных положительных чисел.

Решение.

Листинг 21. Программа вычисления максимума положительных чисел

{Максимум n положительных чисел}

var n,m : integer; k : array[0..5] of integer;

{Функция maxim ищет максимум в массиве положительных чисел} function maxim (var n,m : integer;

var k: array of integer) : integer; var i, max : integer;

begin

{Контрольная точка B} i := 0; max := 0; {Контрольная точка C} while (i < n) do begin

if (max < k[i]) then begin

max := k[i]; m := i+1; {Контрольная точка D}

end;

i := i + 1; {Контрольная точка E} end;

maxim := max; {Контрольная точка F}

end;

{Основная программа задает элементы массива и их число, вызывает функцию поиска максимума и выводит результат}

begin

n := 5;

k[0] := 10; k[1] := 8; k[2] := 7; k[3] := 3; k[4] := 9; writeln;

write ('Элементы массива длиной ', n, ' равны ');

writeln (k[0], ' ', k[1], ' ', k[2], ' ', k[3], ' ', k[4]); {Контрольная точка A}

write ('Максимальный элемент массива длиной ', n); write (' равен ', maxim(n,m,k));

writeln (' и имеет номер ', m); writeln;

{Контрольная точка G} end.

117

Часть II. Программирование

 

Таблица 35. Значения данных в контрольных точках: тест 1

 

 

 

Контрольная точка

Значения данных

A

n = 5, k[1..5] = 10, 8, 7, 3, 9

 

B

n = 5, k[1..5] = 10, 8, 7, 3, 9

C

n = 5, k[1..5] = 10, 8, 7, 3, 9, max = 0, i = 0

D

n = 5, k[1..5] = 10, 8, 7, 3, 9, max = 0, i = 1

E

n = 5, k[1..5] = 10, 8, 7, 3, 9, max = 10, i = 1, m = 1

D

n = 5, k[1..5] = 10, 8, 7, 3, 9, max = 10, i = 2, m = 1

E

D

n = 5, k[1..5] = 10, 8, 7, 3, 9, max = 10, i = 3, m = 1

E

D

n = 5, k[1..5] = 10, 8, 7, 3, 9, max = 10, i = 4, m = 1

E

D

n = 5, k[1..5] = 10, 8, 7, 3, 9, max = 10, i = 5, m = 1

E

F

n = 5, k[1..5] = 10, 8, 7, 3, 9, max = 10, i = 5, m = 1, maxim = 10

G

n = 5, k[1..5] = 10, 8, 7, 3, 9, max = 10, m = 1, maxim = 10

 

Элементы массива длиной 5 равны 10 8 7 3 9 Максимальный элемент массива длиной 5 равен 10 и имеет номер 1

 

Таблица 36. Значения данных в контрольных точках: тест 2

 

 

 

Контрольная точка

Значения данных

A

n = 5, k[1..5] = 1, 8, 7, 3, 9

 

B

n = 5, k[1..5] = 1, 8, 7, 3, 9

C

n = 5, k[1..5] = 1, 8, 7, 3, 9, max = 0, i = 0

D

n = 5, k[1..5] = 1, 8, 7, 3, 9, max = 0, i = 1

E

n = 5, k[1..5] = 1, 8, 7, 3, 9, max = 1, i = 1, m = 1

D

n = 5, k[1..5] = 1, 8, 7, 3, 9, max = 1, i = 2, m = 1

E

n = 5, k[1..5] = 1, 8, 7, 3, 9, max = 8, i = 2, m = 2

D

n = 5, k[1..5] = 1, 8, 7, 3, 9, max = 8, i = 3, m = 2

E

D

n = 5, k[1..5] = 1, 8, 7, 3, 9, max = 8, i = 4, m = 2

E

D

n = 5, k[1..5] = 1, 8, 7, 3, 9, max = 8, i = 5, m = 2

E

n = 5, k[1..5] = 1, 8, 7, 3, 9, max = 9, i = 5, m = 5

F

n = 5, k[1..5] = 1, 8, 7, 3, 9, max = 9, i = 5, m = 5, maxim = 9

G

n = 5, k[1..5] = 1, 8, 7, 3, 9, max = 9, m = 5, maxim = 9

 

Элементы массива длиной 5 равны 1 8 7 3 9 Максимальный элемент массива длиной 5 равен 9 и имеет номер 5

118

 

 

Глава 10. Примеры программ

 

 

Таблица 37. Значения данных в контрольных точках: тест 3

 

 

 

 

 

 

Контрольная точка

Значения данных

 

A

n = 5, k[1..5] = 1, 8, 7, 3, 2

 

 

 

B

n = 5, k[1..5] = 1, 8, 7, 3, 2

 

C

n = 5, k[1..5] = 1, 8, 7, 3, 2, max = 0, i = 0

 

D

n = 5, k[1..5] = 1, 8, 7, 3, 2, max = 0, i = 1

 

E

n = 5, k[1..5] = 1, 8, 7, 3, 2, max = 1, i = 1, m = 1

 

D

n = 5, k[1..5] = 1, 8, 7, 3, 2, max = 1, i = 2, m = 1

 

E

n = 5, k[1..5] = 1, 8, 7, 3, 2, max = 8, i = 2, m = 2

 

D

n = 5, k[1..5] = 1, 8, 7, 3, 2, max = 8, i = 3, m = 2

 

E

 

D

n = 5, k[1..5] = 1, 8, 7, 3, 2, max = 8, i = 4, m = 2

 

E

 

D

n = 5, k[1..5] = 1, 8, 7, 3, 2, max = 8, i = 5, m = 2

 

E

 

F

n = 5, k[1..5] = 1, 8, 7, 3, 2, max = 8, i = 5, m = 2, maxim = 8

 

G

n = 5, k[1..5] = 1, 8, 7, 3, 2, max = 8, m = 2, maxim = 8

 

Элементы массива длиной 5 равны 1 8 7 3 2 Максимальный элемент массива длиной 5 равен 8 и имеет номер 2

30.2. Максимум данных положительных чисел. Версия 2

Задача. Найти максимальное число из n данных положительных чисел.

Решение.

Листинг 22. Программа вычисления максимума положительных чисел

{Максимум n положительных чисел}

var n,m : integer; k : array[0..4] of integer;

{Функция maxim ищет максимум в массиве положительных чисел} function maxim (var n,m : integer;

var k: array of integer) : integer; var i, max : integer;

begin

{Контрольная точка B}

i := 1; max := k[0]; m := 1; {Контрольная точка C}

while (i < n) do begin

if (max < k[i]) then begin

max := k[i]; m := i + 1;

119

Часть II. Программирование

{Контрольная точка D} end;

i := i + 1; {Контрольная точка E} end;

maxim := max; {Контрольная точка F}

end;

{Основная программа задает элементы массива и их число, вызывает функцию поиска максимума и выводит результат}

begin

n := 5;

k[0] := 10; k[1] := 8; k[2] := 7; k[3] := 3; k[4] := 9; writeln;

write ('Элементы массива длиной ', n, ' равны ');

writeln (k[0], ' ', k[1], ' ', k[2], ' ', k[3], ' ', k[4]); {Контрольная точка A}

writeln;

write ('Максимальный элемент массива длиной ', n); write (' равен ', maxim(n,m,k));

writeln (' и имеет номер ', m); writeln;

{Контрольная точка G} end.

30.3. Нахождение количества элементов массива по условию Задача. Посчитать в массиве длины n число положительных чисел.

Решение.

Листинг 23. Программа вычисления количества положительных чисел

{Количество положительных чисел}

var n,m : integer; k : array[0..4] of integer;

{Функция kol определяет количество положительных чисел} function kol (var n : integer;

var k: array of integer) : integer; var i, m : integer;

begin

{Контрольная точка B} i := 0; m := 0; {Контрольная точка C} while (i < n) do begin

if (0 < k[i]) then m := m + 1;

{Контрольная точка D}

120