Практикум ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ПАСКАЛЬ_Янченко Д.В
.pdf60
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.