- •План-конспект Лабораторного заняття «Структури даних. Масиви.»
- •План заняття
- •Хід заняття
- •План-конспект лекційного заняття «Квантова інформація»
- •План заняття
- •Хід заняття
- •Сфера Блоха
- •План-конспект Лабораторного заняття «Процедури та функції»
- •План заняття
- •Хід заняття
- •1. Процедури.
- •2. Функції.
2. Функції.
В мові Pascal крім процедур використовуються підпрограми-функції. Звернення до функції призводить до обчислення її значення - об’єкту типу real, integer або char. Тип значення функції фіксується в описі функції.
Якщо значення деякої функції має тип real або integer, то спосіб її застосування аналогічний способу застосування стандартних функцій (sin, cos, ln та iн.). Якщо ж значення деякої функції має тип char, то ця функція може бути використана у програмі нарівні з конкретним символом, узятим в апострофи.
Заголовок функції починається службовим словом function i має вигляд:
function <ім’я функції> (список параметрiв): <тип значення>;.
Ім'я функції - це ідентифікатор. У списку формальних параметрів перераховуються імена формальних параметрів, що є аргументами, та зазначаються їх типи. Список може містити декілька груп параметрів. Якщо груп декілька, то вони відмежовуються між собою крапкою з комою ';'.
Наприклад :
function f (x:real;y:integer) : integer;
function log (var a, x : real) : real;
function litera (p : integer) : char;
Описовий блок функції складається з таких самих розділів, як i відповідний блок основної програми чи процедури.
Відмінною особливістю виконавчої частини функції є те, що в ній обов'язково повинен входити оператор присвоєння, в якому ліворуч від знаку присвоєння ':=' стоїть ім'я функції, тобто:
<iмя функцiї>:=<вираз>;.
Це присвоєння визначає значення функції.
Щодо параметрів функції існує повна аналогія з параметрами процедур. Описи функцій розташуються в програмі після опису всіх змінних основної програми.
Приклад 2. Послідовно з’єднані резистор із металевого дроту та напівпровідниковий резистор. Температурні залежності їх опорів задані законами:
k =1,38⋅10−23 Дж/К. Покажіть залежність загального опору резисторів від температури. При якій температурі загальний опір буде мінімальним?
Розв'язок. Загальний опір буде рівний сумі: R=RM+RH.
program resistor;
uses crt;
const N=20; {кількість елементів масиву}
R0=125; {Ом}
R01=5.86E-2; {Ом}
alf=4E-3; {К-1}
W=4.8E-20; {Дж}
k=1.38E-23; {Дж/К}
dT=20; {крок по температурі}
T0=300; {початкова температура в К}
type Mas=array[1..N] of real;
var R,T,Rm,Rp,minR,tt:real;
a,b:Mas;
i,ind:integer;
function MinZn(x:Mas):real; {функція для визначення мінімального елементу масиву}
var tmp:real;
begin
tmp:=x[1];
for i:=2 to N do
if (x[i]<tmp) then
begin
tmp:=x[i];
ind:=i;
end;
minzn:=tmp;
end;
Begin {основна програма}
clrscr;
writeln(Знаходження залежності опору від температури:');
writeln('-----------------------------------------------------------------');
T:=T0;
i:=1;
while T<700 do
begin
Rm:=R0*alf*T;
Rp:=R01*exp(W/(k*T));
R:=Rm+Rp;
a[i]:=R; {заповнення масивів значеннями}
b[i]:=T;
writeln('R=',a[i]:2:2,'T=':3,b[i]:2:1,'K':2);
T:=T+dT;
inc(i);
end;
minr:=minzn(a);
i:=ind;
tt:=b[i];
write('Мінімальний опір ',minr:2:2,'Ом':3);
write('При температурі ':20,tt:2:2,'K':2);
readln;
End.
В цій програмі глобальними змінними є i та ind – індекси номерів масивів. Локальною змінною в функції MinZn є x - параметр-значення.
На завершення зазначимо, що в мові Pascal прийнята домовленість, що якщо
формальний параметр-значення позначений тим самим ідентифікатором, що й деяка змінна основної програми, то при виконанні програми для цього формального параметра обирається інший ідентифікатор i ніяких непорозумінь не виникає.__
V. Формування вмінь та навичок
Так як, ви мене уважно слухали, саме час застосувати ваші теоретичні знання на практиці. Спочатку ми зробимо (напишемо) задачу для тренування, а далі за списком ,кожен буде робити свої задачі. Отже, умова задачі:
Розв'язок. Для знаходження значень многочлена P(x) скористаємось процедурою
gorner, що реалізує схему Горнера. Тоді програма буде мати вигляд:
program roots;
const K=10;
var x, y, a, b, c, d, x1, x2 : real;
Z: array[0..K] of real;
N, i: integer;
procedure gorner(x:real;var g:real); {процедура знаходження значення многочлена}
begin
g:=z[N];
for i:=n-1 downto 0 do
g:=g*x+z[i];
end;
begin {основна програма}
clrscr;
writeln('розв'язок рiвняння ax^2 +bx+c=0');
write('введiть порядок многочлена N=');
readln(N);
for i:=N downto 0 do
begin
write('a[',i,']=');
readln(Z[i]);
end;
write('введiть числа x, y - ');
readln(x,y);
gorner(x,a);
gorner(y,b);
gorner(x-y,c);
d:=sqr(b)-4*a*c;
if d<0 then writeln('дiйсних коренiв немає!')
else
begin
x1:=(-b+sqrt(d))/(2*a);
x2:=(-b-sqrt(d))/(2*a);
write('коренi рiвняння:');
write('x1=',x1,'x2=',x2)
end
end.
VI. Підбиття підсумків заняття
1) Прийняття у студентів лабораторних робіт.
2) Аналіз досягнення мети пари
VIІ. Домашнє завдання
1.Доробити попередні лабораторні та зробити сьогоднішню.