Читайте также:
|
|
В операціях над записами оператор with зручно використовуватидля короткого звернення до полів запису. В операторі with до поліводнієї або більш конкретних змінних типу запис можна звертатися, використовуючи тільки ідентифікатори полів.
Візьмемо наступний опис:
type
TDate = record
Day: Integer:
Month: Integer;
Year: Integer:
end;
var OrderDate: TDate;
З урахуванням даного опису наведемо приклад оператора with:
with OrderDate do
if Month = 12 then
begin
Month:= 1;
Year:= Year + 1
end else
Month:= Month + 1;
Це еквівалентно наступному:
if OrderDate.Month = 12 then
begin
OrderDate.Month:= 1;
OrderDate.Year:= TDate.Year + 1
end
else
Date.month:= TDate.Month + 1;
В операторі with спочатку проводиться перевірка кожного посилання на змінну, а саме: чи можна її інтерпретувати, як поле записей. Якщо це так, то вона завжди інтерпретується саме таким чином, навіть якщо є доступ до змінної з тим же ім'ям.
Допустимо описати наступні тип та змінні:
type
TPoint = record
x,y: Integer;
end;
var
x: Point;
у: Integer;
В цьому випадку і до x, і до у можна звертатися, як до змінної або як до поля запису. В операторі:
with x do
begin
x:= 10;
у:= 25;
end;
x між ключовими словами with і dо відноситься до змінної типу покажчик, а в складовому операторі x і у посилаються на x.x і y.y.
Оператор:
with V1,V2...Vn do s;
еквівалентний операторам:
with V1 do
with V2 do
...
with Vn do
S;
В двох випадках, якщо Vn є полем і v1, і v2, то вона інтерпретується як v2.Vn, а не як v1.Vn.
Якщо вибірка змінної типу запис пов'язана з індексацією масиву або покажчика, то ці дії проводяться до того, як виконуватиметься складовий оператор.
ІІ. Постановка задачі
Частина 1:
1. Обчислити елементи квадратної матриці за формулою:
2. Використовуючи елементи матриці
обчислити елементи вектора
.
3. Обчислити значення функції Gза формулою
Частина 2:
ІІІ. Алгоритм розв’язання задачі
Частина 1:
1. Складемо блок-схему обчислення елементів матриці за формулою
![]() |
2.Складемо блок-схему підпрограми формування вектора , кожен елемент якої визначається, як різниця максимальних і мінімальних елементів рядків матриці. При цьому процедури M (m) знаходження максимального (мінімального) елементів i-о рядка матриці A винесено для наглядності на окрему блок-схему.
![]() | ![]() | ||
![]() |
IV. Програмні реалізації алгоритму
Частина 1: Програма написана на мові Паскаль. Дана програма призначена для обчислення елементів матриці, вектора та значення функції за формулами згідно варіанту. Результатами виконання програми є відповідні значення елементів матриці, вектора та значення функції.
Program kursova;
uses Crt;
type matrix = array[1..5, 1..5] of real;
type vector = array[1..5] of real;
procedure m_init(var B: matrix);
var i,j: byte;
begin
for i:=1 to 5 do
for j:=1 to 5 do
B[i,j]:=ln (i*i+j*j*j)-ln(abs(sin(i)+cos(i)))/ln(10);
end;
procedure m_print (B: matrix);
var i,j: byte;
begin writeln;
for j:=1 to 5 do
begin
for j:=1 to 5 do write('a[',i,',',j,']=',B[i,j]:4:2); writeln; writeln;
end;
end;
function v_max(k:byte; B: matrix): real;
var m: real; i: byte;
begin
m:=B[k,1];
for i:=2 to 5 do
if m< B[k,1] then m:= B[k,1];
v_max:=m
end;
function v_min(k:byte; B: matrix): real;
var m: real; i: byte;
begin
m:=B[k,1];
for i:=2 to 5 do
if m>B[k,1] then m:= B[k,1];
v_min:=m
end;
procedure m_print (Y:vector);
var i,j: byte;
begin writeln;
for i:=1 to 5 do writeln(' x[',i,']',Y[i]:7:4);
end;
function prod(i:byte; Y:vector): real;
var k: byte; p:real;
begin;
p:=Y[1];
for k:=2 to i do p:=p* Y[1];
prod:=p;
end;
var A: matrix;
i,j: byte;
X: vector;
G,s: real;
begin;
clrscr;
m_init(A);
m_print(A);
for i:=1 to 5 do X[i]:=v_max(i,A)-v_min(i,A);
v_print(X);
s:=0;
for i:=1 to 5 do s:=s+abs(X[i]*X[i]-prod(i,X));
writeln;
G:=exp(ln(s)/3);
write(' G =',G:7:4);
end.
Дата добавления: 2015-01-29; просмотров: 104 | Поможем написать вашу работу | Нарушение авторских прав |