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

Практикум ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ПАСКАЛЬ_Янченко Д.В

.pdf
Скачиваний:
15
Добавлен:
13.03.2016
Размер:
786.83 Кб
Скачать

60

Program zad6; Var

N, BETA, ALFA, TETA, GAMMA, M,Bn, Bk, dB :Real; Begin

Write(‘ Введите переменные N,ALFA,TETA, GAMMA’);

Readln(N, ALFA, TETA, GAMMA);

Write(‘ Введите переменные Bn, Bk, dB’);

Readln(Bn, Bk, dB);

 

Writeln(‘

При

N = ‘,N:8:3);

Writeln(‘---------------------------------------

 

‘);

Writeln(‘

BETA

M’);

Writeln(‘---------------------------------------

 

‘);

BETA:=Bn;

 

 

Repeat

 

 

If N = 1 Then M := (1+BETA/SIN(TETA))*ALFA;

If N = 2 Then M := (1+N*BETA/COS(TETA))*GAMMA;

Writeln(BETA:8:3,M:10:3);

BETA:=BETA+dB;

Until BETA > Bk

End.

Контрольный пример.

Исходные данные N=1, θ=2, α=3, γ=4, βн=20, βк=60, β =5.

Вычисления производятся по первому условию (N=1) значение аргумента M

При N = 1.000

--------------------------------------

BETA M

--------------------------------------

20.000 68.985

25.000 85.481

30.000 101.978

35.000 118.474

40.000 134.970

45.000 151.466

50.000 167.963

55.000 184.459

60.000 200.955

Исходные данные N=2, θ=2, α=3, γ=4, βн=20, βк=60, β =5.

Вычисления производятся по второму условию (N=2) значения M:

 

 

 

 

 

 

61

При

N =

2.000

---------------------------------------

BETA

 

M

---------------------------------------

20.000

 

-380.480

25.000

 

-476.600

30.000

 

-572.720

35.000

 

-668.839

40.000

 

-764.959

45.000

 

-861.079

50.000

 

-957.199

55.000

 

-1053.319

60.000

 

-1149.439

Пример 6.3.3. Вычислить значение функции Z по зависимости:

Z = 3 x +t ,

 

πt3

1,

если t 0

 

t

 

где x =

 

 

 

πt

 

,

 

если t < 0

 

 

 

 

 

 

 

при t ={-5; -3; -1; 1; 3; 5}

Как следует из условия задачи начальное значение аргумента tн=-5, конечное tк=5, шаг изменения аргумента t =2.

Все переменные и функции аналогичны и рассмотрены в примере 6.1.3. К исходным значениям необходимо добавить переменные Tn, Tk и dT. Переменная T является переменной цикла и не вводится.

При составлении алгоритма решения данной задачи, возможно, использовать как оператор цикла с предусловием, так и оператор цикла с постусловием. Алгоритм решения задачи представлен на рисунке 30 (цикл с постусловием).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

62

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Начало

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ввод

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

tн, tк, t, π

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t = tн

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Нет

t 0

 

Да

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

1

 

x =

 

πt

 

 

 

 

 

 

 

 

 

 

 

 

x =πt

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Z = 3 x +t

 

 

 

 

 

 

 

 

 

 

 

Вывод

 

 

t, Z

 

 

 

 

 

 

 

t = t + t

 

 

 

 

 

Нет

 

 

 

 

 

t > tк

 

 

 

 

Да

 

 

 

 

Конец Рисунок 30 – Алгоритм решения примера 6.3.3 (цикл с постусловием)

Текст программы на языке Pascal:

Program zad7; Var

Z, T, X, PI, Tn,Tk,dT :Real; Begin

Write(‘ Введите переменные PI, Tn, Tk, dT’); Readln( PI, Tn, Tk, dT);

Writeln(‘---------------------------------------

 

‘);

Writeln(‘

T

Z’);

Writeln(‘---------------------------------------

 

‘);

T:=Tn;

 

 

63

Repeat

If T >= 0 Then X := PI*Exp(3*Ln(T))-1/T Else X:= ABS(PI*T);

Z:= EXP(1/3*Ln(X+T));

Writeln(T:8:3, Z:10:3); T:=T+dT

Until T > Tk; End.

Контрольный пример.

Исходные данные π=3,14, tн=-5, tк=5, t =2.

В результате расчета получится следующая таблица:

---------------------------------------

T Z

---------------------------------------

-5.000

2.204

-3.000

1.859

-1.000

1.289

1.000

1.464

3.000

4.439

5.000

7.351

6.4 Пример решения задания № 4

Задание №4 включает разработку блок-схемы алгоритма и программы на языке Pascal циклического вычислительного процесса с одномерными массивами. В отличие от задания №2 исходные значения аргумента не образуют арифметическую последовательность, а представляет собой произвольный набор чисел, которые объединяются в одномерный массив. Отсутствие закономерности между значениями отдельных элементов массива требует ввода всех значений аргумента, число которых в общем случае равно N. Размерность массива обычно определяется из физического смысла задачи и принимается максимально возможной своей величине при различных просчетах по программе. При программировании рассматриваемых циклических процессов используются переменные с индексом, работа и правила записи которых приведены в главе 5. Перед началом решения рекомендуется ознакомиться с главами 1, 2, 3, 4 и 5.

Во всех задачах задания №4 будут использоваться два алгоритма из рассмотренных в разделе 5.5. Алгоритм ввода данных в одномерный массив

64

(5.5.1) и алгоритм нахождения суммы элементов массива (5.5.3). Причем алгоритм нахождения суммы элементов массива может быть модифицирован в соответствии с условием задачи.

Пример 6.4.1.Дан массив чисел A из N элементов. Вычислить значение функции:

n

g Ai

Z =

i=1

2k

 

Для решения этой задачи необходимо вести одномерный массив A (воспользоваться алгоритмом 5.5.1). И вычислить сумму элементов массива

n

Ai (алгоритм 5.5.3). После вычисления суммы массивы вычислить i=1

значение функции Z.

Переменные, используемые в задаче.

Массив чисел А - вещественного типа. В разделе описания массив опишется в виде A:ARRAY [1..50] OF REAL.

Переменные N и I – количество и индекс переменной соответственно. Эти переменные всегда носят целочисленный тип (INTEGER).

Переменная S – сумма элементов массива А. – Тип такой же, как и суммируемый массив – REAL.

Переменные G, K – вводимые переменные по условию задачи (REAL). Переменная Z – вычисляемая переменная (REAL).

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

1.Ввод количества элементов в массиве и переменных G и K.

2.Ввод одномерного массива А.

3.Вычисление суммы элементов массива А (переменная S).

4.Вычисление функции Z = g2kS

Блок-схема алгоритма представлена на рисунке 31.

65

Начало

Ввод

N, G, K

I = 1

Ввод

AI

I = I + 1

Да

I N

S = 0 Нет

I = 1

S = S + Ai

I = I + 1

Да

I N

Нет

Z = g2kS

Ввод

Z

Конец

Рисунок 31 – Алгоритм решения примера 6.4.1

Текст программы на языке Pascal:

Алгоритм нахождения суммы элементов Алгоритм ввода элементов в массив

66

Program zad8; Var

A:ARRAY [1..50] OF Real; I, N:Integer;

Z, S, G, K:Real; Begin

Write(‘ Введите переменные G, K’); Readln( G, K);

Write(‘ N = ‘); Readln(N);

For I:=1 To N Do Begin Write(‘A[‘,i,’]= ‘); Readln(A[i]);

End;

S:=0;

For I:=1 To N Do

S := S +A[I];

Z:=G * S / (2 * K); Writeln(‘ Z = ‘, Z:8:3);

End.

Контрольный пример.

Исходные данные N = 5, g = 10, k = 6. Массив А = {6; 8; 4; 12; 2}

Сумма элементов массива А = 32. Значение Z = 26,667.

Пример 6.4.2. Даны два массива А и В, содержащие по N элементов. Вычислить значение функции:

 

n

 

 

Ai Bi

 

µ =

i=1

.

n

 

 

 

Bi2

 

 

i=1

 

Для решения этой задачи необходимо вести два одномерных массива A и В (воспользоваться алгоритмом 5.5.1). В отличии от предыдущего примера (7.4.1) в этой задаче необходимо найти две суммы элементов одномерного массива – обозначим эти суммы переменными S1 (сумма числителя) и S2 – (сумма знаменателя). При вычислении сумм необходимо модифицировать стандартный алгоритм суммы (5.5.3). Сумма S1 будет вычисляться как по парное произведение элементов массива А и массива В - S1:=S1+A[I]*B[I]. Сумма S2 вычисляется как квадрат элементов массива B –

S2:=S2+SQR(B[I]).

67

Переменные, используемые в задаче.

Массивы чисел A и В - вещественного типа. В разделе описания массивы опишется в виде A, B:ARRAY [1..50] OF REAL.

Переменные N и I – количество и индекс переменной соответственно

(INTEGER).

n

Переменная S1 – сумма числителя ( Ai Bi ) – (REAL), S2 – сумма i=1

n

знаменателя ( Bi2 )- (REAL). Суммы S1 и S2 возможно вычислять i=1

отдельными алгоритмами (друг за другом) или объединить в одном алгоритме.

Переменная М ( µ ) – вычисляемая переменная (REAL). Блок-схема алгоритма представлена на рисунке 32.

Текст программы на языке Pascal:

Program zad9;

Var

A, B :ARRAY [1..50] OF Real;

I, N:Integer;

M, S1, S2 :Real;

Begin

Write(‘ N = ‘);

Readln(N);

For I:=1 To N Do Begin

Write(‘A[‘,i,’]= ‘); Readln(A[i]);

Write(‘B[‘,i,’]= ‘); Readln(B[i]);

End;

S1:=0;

For I:=1 To N Do

S1 := S1 +A[I] * B[I];

S2:=0;

For I:=1 To N Do

S2 := S2 + SQR( B[I]);

M := S1/S2;

Writeln(‘ M = ‘,M:8:3);

End.

Контрольный пример.

68

Исходные данные N = 5, Массив А = {4; 9; 6; 16; 12}; массив

B = {16; 18; 6; 8; 2}

Сумма в числителе S1 = 414.

Сумма в знаменателе S2 = 684 . Значение М = 0,605.

Начало

Ввод

N

I = 1

Ввод

AI I

I = I + 1

Да

I N

S1 = 0 Нет

I = 1

S1= S1+Ai Вi

I = I + 1

Да

I N

Нет

1

Алгоритм нахождения суммы элементов Алгоритм ввода элементов в массив

69

1

S2 = 0 Нет

I = 1

S2= S2+Вi2

I = I + 1

Да

I N

Нет

µ = S1

S2

Ввод

µ

Конец

Рисунок 32 – Алгоритм решения примера 6.4.2

6.5 Пример решения задания № 5

Алгоритм нахождения суммы элементов

Задание №5 предусматривает разработку блок-схемы алгоритма и программы на языке Pascal комбинированного вычислительного процесса, циклический участок которого содержит разветвление. Исходные данные этого задания включают одномерный массив. Последовательно перебирая все элементы массива, выполняют заданные операции над теми из них, которые удовлетворяют условию задачи. При составлении алгоритмов используются характерные алгоритмы обработки одномерных массивов (раздел 5.5). Все задачи состоят из ввода исходных данных, вычисления поставленных задач (используя характерные алгоритмы обработки) и вывода результата. Так же как и в задании №4, в зависимости от поставленного условия возможно модификация некоторых стандартных алгоритмов. Перед началом решения рекомендуется ознакомиться с главами 1, 2, 3, 4 и 5.