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

Информатика. Практикум

.pdf
Скачиваний:
1
Добавлен:
24.11.2025
Размер:
5.18 Mб
Скачать

Символ 5. Проверка условия X[I] ≥ 10 и cos(X[I]) = 0 (условие то-

го, что значение tg(X [I ])

sin(X [I ])

может быть вычислено). Если

cos(X [I ])

 

 

условие верно, то далее выполняется символ 6, если нет – символ 7. Символ 6. Вывод на экран сообщения «Функция не определена». Символ 7. Проверка условия X[I] < –10. Если условие верно, то

далее выполняется символ 8, если нет – символ 9.

Символ 8. Присвоение переменной Z значения sin(X[I]).

Символ 9. Проверка условия принадлежности X[I] интервалу [–10; 1). Если условие верно, то далее выполняется символ 10, если нет – символ 11.

Символ 10. Присвоение переменной Z значения cos(X[I]).

Символ 11. Проверка условия принадлежности X[I] интервалу [1; 10). Если условие верно, то далее выполняется символ 12, если нет – символ 13.

Символ 12. Присвоение переменной Z значения ln(X[I]).

Символ 13. Присвоение переменной Z значения sin( X [I ]) . cos( X [I ])

Символ 14. Вывод на экран значения переменной Z. Символ 15. Закрытие цикла с параметром I.

Символ 16. Конец алгоритма.

Задача 1.10. Разработать схему алгоритма и программу для вычисления значений элементов матрицы А размером 5 12, которые заданы формулой

sin(i j), если i j;

aij

 

i

 

ln(

 

),если i j.

 

j

Значения элементов массива aij вывести на экран.

Решение задачи

Алгоритм решения задачи состоит в организации двух циклов по i и j для вычисления в зависимости от условий значений элементов

31

двумерного массива aij. Схема алгоритма решения задачи представлена на рис. 1.10.

1

Начало

 

2

A

 

 

 

 

I = 1, 5

 

3

B

 

 

 

 

J = 1, 12

 

нет 4

I < J

да

6

5

 

A[I, J] =

 

A[I, J] =

= Ln(I/J)

 

= Sin(I+J)

7Вывод

A[I, J]

8

B

9

A

10

Конец

Рис. 1.10

Пояснения к схеме алгоритма

Обозначения:

A[I, J] – aij элемент матрицы А.

32

Символ 1. Начало алгоритма.

Символ 2. Открытие внешнего цикла с параметром I = 1; 5 для перебора строк матрицы A.

Символ 3. Открытие внутреннего цикла с параметром J = 1; 12 для перебора столбцов матрицы A.

Символ 4. Проверка условия I J. Если условие верно, то далее выполняется символ 5, если нет – то символ 6.

Символ 5. Присвоение элементу A[I, J] значения sin(I + J). Символ 6. Присвоение элементу A[I, J] значения ln(I/J). Символ 7. Вывод на экран значения A[I, J].

Символ 8. Закрытие внутреннего цикла с параметром J. Символ 9. Закрытие внешнего цикла с параметром I. Символ 10. Конец алгоритма.

Программа

Program Prog1_10;

Var

I, J : Byte;

A : array [1..5, 1..12] of Real;

Begin {начало раздела операторов программы} for I:= 1 to 5 do

Begin {начало цикла 1 - для перебора строк массива А} for J := 1 to 12 do

Begin {начало цикла 2 - для перебора столбцов массива А} {вычисление значения элемента массива в зависимости от условия}

If I <= J Then A[I, J] := sin(I + J) else A[I, J] := ln(I/J);

Write(A[I, J]:7:2, ' ');{вывод элемента массива на экран} end; {конец цикла 2}

Writeln; {переход на следующую строку} end; {конец цикла 1}

End. {конец программы}

Результат работы программы

0.91

0.14

-0.76 -0.96

-0.28

0.66

0.99

0.41

-0.54 -1.00

-0.54

0.42

0.69 -0.76 -0.96

-0.28

0.66

0.99

0.41

-0.54

-1.00

-0.54

0.42

0.99

1.10

0.41

-0.28

0.66

0.99

0.41

-0.54

-1.00

-0.54

0.42

0.99

0.65

1.39

0.69

0.29

0.99

0.41

-0.54 -1.00

-0.54

0.42

0.99

0.65

-0.29

1.61

0.92

0.51

0.22

-0.54

-1.00

-0.54

0.42

0.99

0.65

-0.29 -0.96

33

Задача 1.11. Разработать схему алгоритма и программу получения из матрицы А10 10, заданной по закону aij = cos(i + j), двух одномерных массивов C и D. В массив C занести все неотрицательные элементы заштрихованной области матрицы А, а в массив D – отрицательные элементы незаштрихованной области. Вывести на экран число элементов массивов С и D.

Решение задачи

Алгоритм решения задачи включает анализ двух условий:

j

i,

и

j

i,

aij

0

 

aij

0.

Если выполняется первое условие, то элемент aij заносится в массив С: ck = aij, если выполняется второе условие – то элемент aij заносится в массив D: dn = aij. Таким образом, логика алгоритма требует организации двух циклов для формирования и перебора значений aij и использования разветвляющихся процессов для их анализа. Схема алгоритма решения задачи представлена на рис. 1.11.

34

 

 

1

Начало

 

 

 

2

 

 

 

 

 

К = 0

 

 

 

 

N = 0

 

 

 

3

A

 

 

 

 

 

 

 

 

I = 1, 10

 

 

 

4

B

 

 

 

 

 

 

 

 

J = 1, 10

 

 

 

5

 

 

 

 

A[I,J]=cos(I+J)

 

 

нет

6

J>I и

да

 

 

 

A[I,J]>0

7

нет 8

 

 

 

J<I и

 

да

K = K+1

 

A[I,J]<0

9

 

C[К]=A[I, J]

 

 

 

 

 

 

 

N = N+1

 

 

 

 

D[N]=A[I, J]

 

 

 

10

 

 

 

 

 

B

 

 

 

11

 

 

 

 

 

A

 

 

 

12

Вывод

 

 

 

 

 

 

 

 

K, N

 

13

Конец

Рис. 1.11

35

Пояснения к схеме алгоритма

Обозначения:

A[I, J] – aij элемент матрицы А; С[K] – ck элемент массива C; D[N] – dn элемент массива D;

K, N – счетчики числа элементов массивов C, D. Символ 1. Начало алгоритма.

Символ 2. Обнуление счетчиков элементов массивов C (переменная K) и массива D (переменная N).

Символ 3. Открытие внешнего цикла с параметром I = 1; 10 для перебора строк матрицы A.

Символ 4. Открытие внутреннего цикла с параметром J = 1; 10 для перебора столбцов матрицы A.

Символ 5. Вычисление элемента A[I, J].

Символ 6. Проверка условий принадлежности элемента A[I, J] заштрихованной области (J I) и неотрицательности элемента A[I, J]. Если условия верны, выполняется символ 7, если нет – символ 8.

Символ 7. Увеличение счетчика элементов массива C (переменная K). Присвоение элементу массива C значения элемента A[I, J].

Символ 8. Проверка условий принадлежности элемента A[I, J] незаштрихованной области (J < I) и отрицательности элемента A[I, J]. Если условия верны, выполняется символ 9, если нет – символ 10.

Символ 9. Увеличение счетчика элементов массива D (переменная N). Присвоение элементу массива D значения элемента A[I, J].

Символ 10. Закрытие внутреннего цикла с параметром J. Символ 11. Закрытие внешнего цикла с параметром I. Символ 12. Вывод на экран значений K, N.

Символ 13. Конец алгоритма.

Программа

Program Prog1_11;

Var

I, J, K, N : Byte;

A : array [1..10, 1..10] of Real; C, D : array [1..55] of Real;

Begin {начало раздела операторов программы}

K := 0; N := 0; {начальные значения для индексов массивов C, D}

36

for I := 1 to 10 do {цикл 1 - для перебора строк матрицы А} for J := 1 to 10 do {цикл 2 - для перебора столбцов матрицы А}

Begin

{начало циклов 1, 2}

A[I, J] := cos(I + J);

{вычисление A[I, J]}

If (J >= I) and (A[I, J] >= 0) Then {проверка условий}

Begin

{начало блока 1 – условия верны}

K := K + 1;

 

{увеличение индекса K на 1}

C[K] := A[I, J];

{заполнение массива C}

end

 

{конец блока 1}

else If (J < I) and (A[I, J] < 0) Then {проверка условий}

Begin

 

{начало блока 2–условия верны}

N := N + 1;

{увеличение индекса N на 1}

D[N] := A[I, J]; {заполнение массива D}

end;

 

{конец блока 2}

end;

 

{конец циклов 1, 2}

Writeln('Число элементов массива C = ', K); {вывод K} Writeln('Число элементов массива D = ', N); {вывод N}

End. {конец программы}

Результат работы программы

Число элементов массива C = 30 Число элементов массива D = 20

1.6.Алгоритмы и программы для нахождения сумм

ипроизведений функциональных выражений

Задача 1.12. Разработать схему алгоритма и написать программу для

 

20

 

 

 

sin(k

1)

 

вычисления значения A

k 1

 

. Значение А вывести на экран.

100

cos(i)

i 1

Решение задачи

Алгоритм решения задачи сводится к последовательному вычислению знаменателя (суммирование), при этом следует обратить внимание на то, что он не должен быть равен нулю, а затем – числителя (произведение). Схема алгоритма решения задачи представлена на рис. 1.12.

37

 

1

Начало

 

 

2

 

 

 

 

S = 0

 

 

3

A

 

 

 

 

 

 

I = 1, 100

 

 

4

 

 

 

 

S =S+Cos (I)

 

 

5

 

 

 

 

A

 

 

да 6

S=0

нет

 

14

 

 

7

 

«Значение A не

Вывод

 

 

P = 1

определено»

«...»

 

 

 

 

 

8

B

 

 

 

 

 

 

K = 1, 20

 

 

9

 

 

 

 

P =

 

 

=P sin(K+1)

 

 

10

 

 

 

 

B

 

 

11

 

 

 

 

A = P/S

 

 

12

Вывод

 

 

 

 

 

 

А

 

 

13

Конец

 

 

 

Рис. 1.12

Вычисление суммы (S)

Вычисление произведения (P)

38

Пояснения к схеме алгоритма

Обозначения:

 

20

P – значение выражения произведения

sin(k 1) ;

 

k

1

100

 

S – значение выражения суммы

cos(i) .

 

i

1

 

Символ 1. Начало алгоритма.

Символ 2. Присвоение переменной S начального значения 0. Символ 3. Открытие цикла с параметром I = 1; 100 для вычисле-

ния суммы.

Символ 4. Вычисление переменной S по формуле с учетом накоплений сумм.

Символ 5. Закрытие цикла с параметром I.

Символ 6. Проверка условия равенства нулю значения S. Если верно, то выполняется символ 14, если нет – символ 7.

Символ 7. Присвоение переменной P начального значения 1. Символ 8. Открытие цикла с параметром K = 1; 20 для вычисле-

ния произведения.

Символ 9. Вычисление переменной P по формуле с учетом накоплений произведений.

Символ 10. Закрытие цикла с параметром K. Символ 11. Вычисление переменной A. Символ 12. Вывод на экран значения А. Символ 13. Конец алгоритма.

Символ 14. Вывод на экран сообщения «Значение А не определено».

 

 

Программа

Program Prog1_12;

 

 

Var

 

 

K, I : Byte;

 

 

P, S, A : Real;

 

 

Begin

{начало раздела операторов программы}

S := 0;

 

{начальное значение переменной S}

for I := 1 to 100 do

 

S := S + cos(I);

{вычисление суммы в цикле}

If S = 0 Then Writeln('Значение А не определено')

39

else begin

{начало блока 1}

P := 1;

{начальное значение переменной P}

for K := 1 to 20 do

P:=P * sin(K+1);{вычисление произведения в цикле}

A := P/S;

{вычисление А}

Writeln('A = ', A:15:12){вывод на экран значения А}

end;

{конец блока 1}

End.

{конец программы}

Результат работы программы

A=0.00002461930

1.7. Алгоритм и программа метода пузырьковой сортировки

Задача 1.13. Разработать схему алгоритма и написать программу сортировки по возрастанию одномерного массива A, состоящего из пяти элементов: 10, 80, 45, 36, 71. Использовать метод пузырьковой сортировки. Значения элементов отсортированного массива вывести на экран.

Решение задачи

Алгоритм пузырьковой сортировки заключается в повторяющихся проходах по сортируемому массиву. За каждый проход элементы последовательно сравниваются попарно, и, если порядок в паре неверный, их меняют местами. При первом проходе сравниваются первый и второй элементы, затем второй и третий и т. д., пока не будет достигнут последний элемент массива. Таким образом, наибольший элемент оказывается в конце массива, то есть «всплывает», как пузырёк в воде. При втором проходе производятся аналогичные сравнения, которые останавливаются на предпоследнем элементе массива, и, таким образом, после второго прохода на предпоследнем месте окажется второй наибольший элемент и т. д.

В нашем случае, поскольку массив состоит из пяти элементов, будет сделано четыре прохода, и на каждом проходе все элементы будут попарно сравниваться. Таким образом, при построении схемы алгоритма необходимо организовать два цикла A и B. Цикл B вводится для попарного сравнения элементов, цикл A – для задания числа проходов и номера последнего элемента для сравнения. Схема алгоритма решения задачи представлена на рис. 1.13.

40