БАҒдарламасы ( Syllabus ) Павлодар, 2014ж Пән бағдарламасы (Syllabus) ф фсо пгу 18. 4/19 бекітемін фмжат факультетінің деканы Н. А. Испулов



бет5/6
Дата11.06.2016
өлшемі0.76 Mb.
#128223
түріБағдарламасы
1   2   3   4   5   6

mycoordinnet2 = I coordof net2;

if(mycoordinnet2!=1)

MPC_Printf("I'm a regular member of net2. "

"My coordinate in net2 is %d.\n\n",



mycoordinnet2);

else

MPC_Printf("I'm a parent of net2. "

"My coordinate in net2 is %d.\n\n",



mycoordinnet2);

}

[net3]: {



int mycoordinnet3;

mycoordinnet3 = I coordof net3;

if(mycoordinnet3!=2)

MPC_Printf("I'm a regular member of net3. "

"My coordinate in net3 is %d.\n\n",



mycoordinnet3);

else

MPC_Printf("I'm a parent of net3. "

"My coordinate in net3 is %d.\n\n",



mycoordinnet3);

}

}



[net1]:

if(mycoordinnet1)

MPC_Printf("I'm a regular member of net1. "

"My coordinate in net1 is %d.\n"

" I was a parent of net%d.\n\n",

mycoordinnet1, mycoordinnet1+1);

}

[host]MPC_Printf("I'm host. I was a parent of net1.\n\n");



}

Run командасына көшу үшін esc пернесін басу керек. Осы кезде шыққан нәтижеге назар аударыңыз.


1. Жүйенің өңдеу командасына кіріп мынадай өзгеріс енгізіңіз. Топ номері жаңа жолдан енгізілетін болсын.
2. жаңа кез келген жол қосыңыз

Бақылау сұрақтары:
1. Процедуралық тілдердегі программалардың mpC-дағы программаларан қандай айырмашылығы бар.
2. mpC тілінің қолдану аймақтары қандай?
3. mpC негізгі түсініктері
2 тәжірибелік жұмыс.

Жұмыстың мақсаты: mpC-де қарапайым білімдер қорын құру, оларды өңдеу.

Материалдар және жабдықтар: ДК, mpC программалау ортасы



Жұмыстың мазмұны және орындалу тәртібі:
1. Вариант бойынша тапсырманы алу
2. Есептің қойылымы
3. Есепті шешу алгоритмі
4. Есепті шешу программасын mpC программалау ортасында құру
5. Программа листингі
6. Орындалған жұмыс жөнінде есеп беру

Қысқаша мәлімет
mpC-дағы программада мәліметтер фактілер мен қағидалардың көмегімен көрсетіледі.

Әртүрлі типті объектіні қолдану. Өз вариантыңыз бойынша тапсырманы алып, программа құрыңыз.

Мысалы, төмендегі предикатты қолданатын программа жазыңыз:
оқу (фамилия , пән, баға, мерзім)
Study (name, subject, numb, data)

Предикаттың аргументтері символды және бүтін типті. Сонымен қатар, фамилия мен пәндер, мерзімдер қайталануы мүмкін.

Программаны орындауға жіберіңіз және мүмкін болатын әртүрлі сыртқы мақсаттар енгізіңіз:
- айнымалысыз
- бір немесе бірнеше айнымалысы бар
анонимді айнымалысы бар.

Мақсат ішкі болатындай етіп программаға өзгеріс енгізіңіз


Тапсырмалар
mpC- тілінде тЕкі өлшемді жүйелер ішінде виртуалды процесстор мен желілерді көрсететін программа

#include

#include
nettype Mesh(int m, int n) {

coord I=m, J=n;

};
#define M 2



#define N 3
int [*]main() {

net Mesh(M,N) mynet;
[mynet]: {

struct utsname un;

uname(&un);

MPC_Printf("I'm on \"%s\" and have coordinates (%d, %d).\n",

un.nodename, I coordof un, J coordof un);

}

}



Бақылау сұрақтары:
1. Мақсатты бекітімдер байланыстары.
2. Салыстыру принциптері.
3. mpC-тағы программа құрылымы. Барлық бөлімдердің қызметі.

3 Тәжірибелік жұмыс.



Жұмыстың мақсаты: mpC-де статистикалық білімдер қорын құру, оларды қағиданың көмегімен өңдеу.

Материалдар және жабдықтар: ДК, mpC программалау ортасы

Жұмыстың мазмұны және орындалу тәртібі:
1. Вариант бойынша тапсырманы алу
2. Есептің қойылымы
3. Есепті шешу алгоритмі
4. Есепті шешу программасын mpC программалау ортасында құру
5. Программа листингі
6. Орындалған жұмыс жөнінде есеп беру

Қысқаша мәлімет
mpC-дегі программада мәліметтер фактілермен қатар қағидалардың көмегімен көрсетіледі.

Қағида
Қағида басынан және денесінен тұрады. Басы мен денесі :- таңбасымен ажыратылады және ол нүктемен аяқталуы тиіс. Қағида денесіндегі үтір конъюнкцияны (&&, логикалық және) білдіреді.


:- таңбасы (<-) бағыттауышының схемалық жазылуы. Ол оң жақтағыдан сол жақтағы шығады дегенді білдіреді. Бұл таңба «егер» сөзін білдіреді деп саналады.

Мысалы,: бала/2 қатынасын әке/2 қатынасы арқылы анықтайтын қағида былайша жазылады:


бала(X, Y) :- әке(Y, X).

Бұл мынаны білдіреді: егер У адамы Х адамы үшін әке болатын болса, онда Х У-тің баласы болып саналады. Мұндағы, Х және У – айнымалылар.


Мысал:
Ана/2 қатысын ата-ана/2 және әйел/1 қатыстары арқылы төмендегідей анықтайық: У адам үшін Х-тің анасы оның жынысы әйел болатын ата-ана болып табылады№
ана(Х,У):-атаана(Х,У), әйел(Х).
?- ана(X, Y).
X=анна
Y=юлия
Yes

Тапсырмалар :
Желіредің виртуалды не нақтылығын тексеру

#include

#include

#include
nettype Mesh(int m, int n) {

coord I=m, J=n;

parent [0,0];

};
#define MAXLEN 256


int [*]main() {

net Mesh(2,3) [host]mynet;

[mynet]: {



struct utsname un;

char me[MAXLEN], neighbour[MAXLEN];
uname(&un);

strcpy(me, un.nodename);

[mynet:I==0]neighbour[] = [mynet:I==1]me[];

[mynet:I==1]neighbour[] = [mynet:I==0]me[];

MPC_Printf("I'm on \"%s\" and have coordinates (%d, %d),\n"

"My neighbour with coordinates (%d, %d) is on \"%s\".\n\n",



me, I coordof mynet, J coordof mynet,

(I coordof mynet + 1)%2, J coordof mynet, neighbour);

}

}

Бақылау сұрақтары:


1. Қағида дегеніміз не?
2. Қағида нені өрнектейді? Мысалдар келтіріңіз
3.Анонимді айнымалы дегеніміз не?

4 Тәжірибелік жұмыс.



Жұмыстың мақсаты: арифметикалық өрнектерді есептеуге және салыстыруға арналған

Материалдар және жабдықтар: ДК, mpC программалау ортасы



Жұмыстың мазмұны және орындалу тәртібі:
1. Вариант бойынша тапсырманы алу
2. Есептің қойылымы
3. Есепті шешу алгоритмі
4. Есепті шешу программасын mpC программалау ортасында құру
5. Программа листингі
6. Орындалған жұмыс жөнінде есеп беру

Қысқаша мәлімет
Арифметикалық операторлар. Арифметикалық өрнектер функтордан және аргументтен тұрады. Функтор- арифметикалық операция; аргументтер – бүтін немесе айнымалылар болып табылады.
Мысалы:
+(Х, 1).

mpC инфексті беліглеуді қолдануға мүмкіндік береді.
Мысалы:
Х+1.

Келесі түрдегі арифметикалық операцияларды қолдануға мүмкіндік береді:

X + Y

X пен Y-тің қосындысы

X - Y

X-пен Y-тің айырмасы

X * Y

X -пен Y-тің көбейтіндісі

X / Y

X-ті Y-ке бөлу

X mod Y

X-ті Y-ке бөлгендегі қалдық

X // Y

X -ті Y-ке бүтін бөлу

X ** Y

X-ті Y дәрежеге шығару

- X

X-тің таңбасын өзгерту

abs(X)

X санының абсолют шамасы

max(X,Y)

X-пен Y-тің үлкені

min(X,Y)

X-пен Y-тің кішісі

sqrt(X)

X-тің квадрат түбірі

random(Int)

0-мен Int-ке дейінгі аралықтағы кездейсоқ сан

sin(X)

Синус X

cos(X)

Косинус X

tan(X)

Тангенс X

log(X)

Х санының натурал логарифмы

log10(X)

Х санының ондық логарифмы

float(X)

Х бүтін санына сәйкес келетін нақты сан

pi

3.14159 (рі санының жуық шамасы)

е

2.71828 ( е санының жуық шамасы)

mpCта арифметикалық өрнектерді есептеу үшін is бинарлық операторы қолданылады. Бұл оператор оң термді арифметикалық өрнек ретінде интерпретиациялайды, одан кейін есептеу нәтижесінде сол жақ термді унификациялайды. Арифметикалық операциялардың приоритеті әдеттегідей болады. Дөңгелек жақша есептеу ретін өзгерту үшін қолданылады. Келесі мысалдарда Х айнымалысы арифметикалық өрнектердің мәндерімен унификацияланады:
?- X is 2.5 + 2.5.
X = 5
Yes
?- X is 4/(2+1).
X = 1.33333
Yes
?- X is cos(3*pi).
X = -1
Yes
?- 1 is sin(pi/2).
Yes
?- 1.0 is sin(pi/2).
No

Соңғы сұрақтағы mpCтың жауабын түсіндірейік. Is предикаты арқылы sin(pi/2) өрнегінің мәні 1-ге дейін дөңгелектенеді, оны 1.0 нақты санымен унификациялауға болады. Сондықтан, өрнектің алдына float сөзін тіркесек, жауап былайша болады:


?- 1.0 is float( sin(pi/2)).
Yes

Арифметикалық өрнектерді салыстыру үшін бірнеше операторлар пайдаланылады. X > Y (үлкен) мақсаты сәтті болады, егер Х өрнегіне У өрнегіне қарағанда үлкен сан сәйкес келетін болса.

Тап осылайша келесі операторлар қолданылады: < (кіші), =< (кіші не тең), >= (үлкен не тең), =\= (тең емес) және =:=(арифметикалық теңдік).

=:= және = арасында мынадай айырмашылық бар: 1-ші оператор арифметикалық өрнектердің мәнін салыстырады, ал соңғысы оларды унификациялайды.


Мысал:
?- 2 ** 3 =:= 3 + 5.
Yes
?- 2 ** 3 = 3 + 5.
No
?- 1.0 = float(sin(pi/2)).
No
?- 1.0 =:= sin(pi/2).
Yes

Егер термдердің біреуі бүтін сан, ал екіншісі нақты сан болса да, X =:= Y операторы ақиқат болады.


Мысал:
Сұраныстағы ішкі мақсаттар реті нәтижеге әсер етеді.
?- X is 4+Y, Y=3.
ERROR: Arguments are not sufficiently instantiated
?- Y=3, X is 4+Y.
Y = 3
X = 7
Yes

1-ші сұраныстағы қате туралы хабарлама, X is 4+Y мақсаты сәтсіздікке ұшырады, өйткені оны өңдеу кезінде 4+Y өрнегін есептеу мүмкін емес.



2 Тапсырмалар және орындау тәртібі

2.1. Қарапайым арифметикалық есептеулерді жүзеге асыратын программаны орындаңыз.


Predicates
Sred(integer, integer, real)
Kvadr(integer, integer)
Cub(integer, integer)
Dmod(integer, integer, integer)
Ddiv(integer, integer, real)
St(integer, integer, integer)
Clauses
Sred(A,B,D):- D=(A+B)/2. /*арифметикалық орта*/
Kvadr(B,D):- D=B*B. /*санның квадратын есептеу*/
Cub(B,D):- D=B*B*B. /*санның кубын есептеу*/
Dmod(A,B,D):- D=A mod B./*бүтін сандарды бөлгендегі қалдықты есептеу */
Ddiv(A,B,D):- D=A div B. /*бүтіндей бөлу*/
St(N,0,1):- !. /*Санды дәрежелеу*/
St(N,P,R):-
M=P-1,
St(N,M,Q),
R=N*Q.

2.2.Вариатыңызға сәйкес арифметикалық операциялардан тұратын программа құрыңыз. Программа интерактивті режимге арналып жазылу керек, яғни барлығы клавиатурадан енгізілуі керек.



Тапсырма варианттары:
LU координацияларды анқытау

#include

#include

#include
void init_matrix(int n, double (*a)[n][n]) {

int i,j;
for(i=0;i<n;i++)

for(j=0;j<n;j++)

(*a)[i][j]=10.;



for(i=0;i<n;i++)

(*a)[i][i]=10.*n;

}
void print_matrix(int n, double (*a)[n][n]) {

int i,j;
for(i=0;i<n;i++) {

for(j=0;j<n;j++)

printf("%lf\t",(*a)[i][j]);

printf("\n");

}

}


int [*]main(int [host]argc, char *[host]argv[]){

[host]:

{

int n, i, j;

n = atoi(argv[1]);

if(n<=0)

printf("Wrong input: n = %d\n", n);

else {

double a[n][n];

init_matrix(n,&a);

printf("\n Source matrix :\n");

print_matrix(n,&a);

for(i=0; i<n-1; i++) {

for(j=i+1; j<n; j++) {

double t;

t = a[j][i] / a[i][i];

if(a[j][i]!=0)

a[j][i:n-1] -= t * a[i][i:n-1];

}

}



printf("\n Matrix after LU transformation: \n");

print_matrix(n,&a);

}

}



}

Бақылау сұрақтары:
1. mpC жүйесіндегі афметикалық операторлар ға сипаттама беріңдер
2. Қандай қатынас операция қолданылады?
3. Сұрасныста қате хабарламалары қандай жағдайда пайда болады?
4. Қандай математикалық функциялар қолданылады.

5 Тәжірибелік жұмыс



Жұмыстың мақсаты: Рекурсия анықтамасын білу, рекурсияның көмегімен есептердің шешімін табу білу, рекурсивті, шекті шарттардың қойылуын білу, өзін-өзі шақыруды қолданатын ережелерді құрастыруды оқып үйрену.

Материалдар және жабдықтар: ДК, mpC программалау ортасы



Жұмыстың мазмұны және орындалу тәртібі:
1. Вариант бойынша тапсырманы алу
2. Есептің қойылымы
3. Есепті шешу алгоритмі
4. Есепті шешу программасын mpC программалау ортасында құру
5. Программа листингі
6. Орындалған жұмыс жөнінде есеп беру

Қысқаша мәлімет
Программада бір есепті бірнеше рет орындау қажет болған жағдайда қайталау ережесі және рекурсия қолданылады. Өз-өзін компонента түрінде құрастыратын ереже - рекурсия деп талады.

Рекурсияны басқару үшін рекурсияның аяқталу шартын беруіміз қажет. Бұл тізімдерді өңдеу кезінде эффективті болып келеді.



2. Тапсырмалар және оларды орындау реті

2.1 Рекурсияны қолданатын кі программа берілген. Программаның қай бөлігінде рекурсия қолданылатынын түсіндіріңіз.



Тапсырмалар:
LU координацияларын екі ретпен орналастыру

#include

#include

#include


void print_matrix(int n, double (*a)[n][n]) {

int i,j;
for(i=0;i<n;i++) {

for(j=0;j<n;j++)

printf("%lf\t",(*a)[i][j]);

printf("\n");

}

}


int [*]main(int [host]argc, char *[host]argv[]){

[host]:

{

int n, i, j;

n = atoi(argv[1]);

if(n<=0)

printf("Wrong input: n = %d\n", n);

else {

double a[n][n];

init_matrix(n,&a);

printf("\n Source matrix :\n");

print_matrix(n,&a);

for(i=0; i<n-1; i++) {

for(j=i+1; j<n; j++) {

double t;

t = a[j][i] / a[i][i];

if(a[j][i]!=0)

a[j][i:n-1] -= t * a[i][i:n-1];

}

}



printf("\n Matrix after LU transformation: \n");

print_matrix(n,&a);

}

}



}

Бақылау сұрақтары:
1. Рекурсия дегеніміз не?
2. ! таңбасы нені білдіреді?
3. Шекті шарты қалай қойылады?

6 Тәжірибелік жұмыс.



Жұмыстың мақсаты: тізімдерге қолданылатын операцияларды және мәліметтерді өңдеу үшін файлдарды қолдануды оқып үйрену.

Материалдар және жабдықтар: ДК, mpC программалау ортасы



Жұмыстың мазмұны және орындалу тәртібі:
1. Вариант бойынша тапсырманы алу
2. Есептің қойылымы
3. Есепті шешу алгоритмі
4. Есепті шешу программасын mpC программалау ортасында құру
5. Программа листингі
6. Орындалған жұмыс жөнінде есеп беру

Қысқаша мәлімет
Тізімдер – mpC жиі қолданылатын құрылымдардың бірі. Тізімді жазу кезінде оны квадрат жақшаға алып жазады, ал оның элементтері үтірмен ажыратылады, мысалы,
[піл, жылқы, маймыл, ит]
бұл тізім төрт атомнан тұрады – піл, жылқы, маймыл, ит.
mpCтың кез келген термы тізімнің элементі болуы мүмкін, яғни, атомдар, сандар, айнымалылар және құрама термдер.
Бос тізім [ ] түрінде жазылады.
Төменде күрделі құрылымды тізім келтірілген:
[піл, [ ], X, атаана(Х, том), [a,b,c], f(22)]

Бос емес тізімнің бірінші элементі басы деп аталады, ал қалған бөлігі аяғы (хвост).

Бір ғана элементтен тұратын тізімнің басы сол жалғыз ғана элемент болып табылады, ал аяғы – бос тізім. [H|T] белгілеуі Н басы және Т аяғы бар тізімді көрсету үшін қолданылады.

Егер | символы тізімдегі соңғы термінің алында орналасқан болса, онда бұл соңғы терм басқа тізімді анықтайды.

Келесі мысалда, 1 – тізімнің басы, ал [2, 3, 4, 5] – аяғы.
?- [1, 2, 3, 4, 5] = [Head | Tail].
Head = 1
Tail = [2, 3, 4, 5]
Yes

Мұндағы, Head и Tail – тек айнымалылардың аты. Бұдан басқа айнымалыларды да қолдануға болады, нәтижесі сәтті аяқталады.


Мысал

Егер бізге тізімнің 2-ші элементі қажет болса, онда басы және тізім үшін анонимді айнымалыларды қолданамыз:


?- [піл, жылқы, есек, ит] = [_, X | _ ].
X = жылқы
Yes

1. Тізімді өңдеуге бірқатар процедураларды қолданайық.


Мысал:

Сандық тізімнің барлық элементтердің қосындысын есептейтін предикатты жазайық.


тізім_қосындысы([],0).
тізім_қосындысы([H|T],S):- number(H), тізім_қосындысы(T,S1),
S is S1+H.
Мысал

Орын/3 предикаты сәтті, егер екінші аргумент болып табылатын тізімнің кез келген орнына бірінші элементті қою арқылы алынған 3-ші аргумент тізім болса.


орын(E, L, [E|L]).
орын(E, [H|L], [H|Y]):- орын(E, L,Y).

Бұл предикатты қолданатын кейбір сұраныс мысалдары:


?- орын(1,[2,3],X).
X = [1, 2, 3] ;
X = [2, 1, 3] ;
X = [2, 3, 1] ;
No
?- орын(1,L,[2,1,3]).
L = [2, 3] ;
No
?- орын(X,[2,3],[2,1,3]).
X = 1 ;
No

Тапсырмалар және оларды орындау тәртібі

mpC тізімдерге бірқатар операциялардың орындалуына мүмкіндік береді.


- тізімге тиісті болуды тексеру

Осыған байланысты мынадай программа жазайық:


Domains
n=integer*
m=sumbol*
find(integer,n)
find(symbol,m)
append(n,n,n)
append(m,m,m)
clauses
find(H,[H|_]).
Find(H,[_|T]):-
Find(H,T).
append([],L,L).
append([H|T1],L2,[H|T3):-
append(T1,L2,T3).

Келесі тапсырмаларды орындаңдар:
HeteroNet желісін анықтау және жоқ болған жағдайда құру

#include

#include

#include

#include
#define DELTA (0.5)
typedef struct {

double len;

double wid;

double hei;

double mass;

} rail;


nettype HeteroNet(int n, double v[n]) {

coord I=n;

node {

I>=0: v[I];

};

parent [0];

};
double Density(double x, double y, double z) {

return 6.0 * sqrt( exp( sin( sqrt( x*y*z ) ) ) );

}
int [*]main(int [host]argc, char **[host]argv) {



repl N=3;

if(argc>1)

N = [host]atoi(argv[1]);

if(N>0) {

static rail [host]steel_hedgehog[[host]N];

repl double volumes[N], [host]start;

int [host]i;

repl j;
for(i=0; i<[host]N; i++) {

steel_hedgehog[i].len = 200.0*(i+1);

steel_hedgehog[i].wid = 5.0*(i+1);

steel_hedgehog[i].hei = 10.0*(i+1);

}
start = [host]MPC_Wtime();



for(j=0; j<N; j++)

volumes[j] =

steel_hedgehog[j].len * steel_hedgehog[j].wid * steel_hedgehog[j].hei;

{

net HeteroNet(N, volumes) mynet;


[mynet]: {

rail myrail;

double x, y, z;
myrail = steel_hedgehog[];

for(myrail.mass=0., x=0.; x<myrail.len; x+=DELTA)

for(y=0.; y<myrail.wid; y+=DELTA)

for(z=0.; z<myrail.hei; z+=DELTA)

myrail.mass += Density(x,y,z);

myrail.mass *= DELTA*DELTA*DELTA;

MPC_Printf("Rail #%d is %gcm x %gcm x%gcm and weights %g kg\n",

I coordof mynet, myrail.len, myrail.wid,

myrail.hei, myrail.mass/1000.0);

[host]printf("The steel hedgehog weights %g kg\n",

[host]( (myrail.mass)[+]) / 1000.0 );

}

}



[host]printf("\nIt took %.1f seconds to run the program.\n",

[host]MPC_Wtime() - start);

}

else

[host]printf("Wrong input (N=%d)\n", [host]N);

}

Бақылау сұрақтары:
1. Тізім белгісі қандай?
2. Тізімге қандай операциялар қолданылады?
3. Тізімді мәліметтер қорының элементтерінен қалай құруға болады?

7 Тәжірибелік жұмыс.



Жұмыстың мақсаты: мәліметтердің динамикалық қорымен жұмыс жасайтын предикаттарды білу, графикалық режиммен жұмыс жасауға арналған предикаттарды білу.

Материалдар және жабдықтар: ДК, mpCпрограммалау ортасы



Жұмыстың мазмұны және орындалу тәртібі:
1. Вариант бойынша тапсырманы алу
2. Есептің қойылымы
3. Есепті шешу алгоритмі
4. Есепті шешу программасын mpCпрограммалау ортасында құру
5. Программа листингі
6. Орындалған жұмыс жөнінде есеп беру

Қысқаша мәлімет
Мәліметтердің статистикалық қоры программа кодының бөлігі болып табылады және оларды программамен жұмыс кезінде өзгертуге болмайды. Мәліметтердің динамикалық қорына жаңа фактілер қосуға болады немесе одан кейбір ұйғарымдарды өшіруге болады. Динамикалық қордың екінші ерекшелігі ол дискідегі жазылған немесе жедел жадтағы дискіден оқылатын жеке файлда сақталуы мүмкін. Программаның database бөлігі динамикалық қордың предикаттарын сипаттауға арналған

Мысалы:
dstudent(strign, symbol, integer)


d латын әріпін тіркеу статистикалық предикаттарды динамикалық предикаттардан ажырату үшін қолданылады.

Динамикалық қор фактілерін өзгертуге арналған mpC тілінде кіріктірілген предикаттар бар. Олар төмендегі:


assreta(X)- фактіні мәліметтер қорының басына тіркейді
assretaz(X)- фактіні мәліметтер қорының аяғына тіркейді.
retract(X)- мәліметтер қорынан берілген фактіге сәйкес фактіні өшіреді
cosult(X)-мәліметтер қорына фактілерді тіркеу үшін ашады.

Терезелермен жұмыс жасауға арналған негізгі предикаттар:


makewindow(терезе номері, экран атрибуты, рамка атр, тақырыбы, жол, баған, биіктік, ұзындық) – терезені берілген атрибуты және номері бойынша анықтайды
clearwindow- ағымдағы терезені тазартады
remowindow-ағымдағы терезеі өшіреді
gotowindow(терез номері)- берілген номер бойынша терезеі активтейді
shiftwindow(терезені)- ағымдағы терезені ауыстырады немесе ағымдағы терезе номерін оқиды
graphics(режим, палитра, фон)-графикалық режимді қояды
dot(жол, баған, түс)- берілген координат бойынша нүктенің түсін қояды немесе оқиды
line(1 жол, 1 баған, 2 жол, 2 баған, түс)-түзуді графикалық режимде сызады

Тапсырмалар:
HeteroNet желісіне жіберілген және келген пакеттерді қатар тексеру

#include

#include

#include

#include

#define DELTA (0.5)
typedef struct {

double len;

double wid;

double hei;

double mass;

} rail;


nettype HeteroNet(int n, double v[n]) {

coord I=n;

node {I>=0: v[I];};

parent [0];

};
double Density(double x, double y, double z) {



return 6.0*sqrt( exp( sin( sqrt( x*y*z ) ) ) );

}
double RailMass(double len, double wid, double hei, double delta) {



double mass, x, y, z;

for(mass=0., x=0.; x<len; x+=delta)

for(y=0.; y<wid; y+=delta)

for(z=0.; z<hei; z+=delta)

mass += Density(x,y,z);

return mass*delta*delta*delta;

}
int [*]main(int [host]argc, char **[host]argv) {



repl N=3;
if(argc>1)

N = [host]atoi(argv[1]);
if(N>0) {

static rail [host]steel_hedgehog[[host]N];

repl double volumes[N], [host]start;

int [host]i;

repl j;
for(i=0; i<[host]N; i++) {

steel_hedgehog[i].len = 200.*(i+1);

steel_hedgehog[i].wid = 5.*(i+1);

steel_hedgehog[i].hei = 10.*(i+1);

}
start = [host]MPC_Wtime();


for(j=0; j<N; j++)

volumes[j] =

steel_hedgehog[j].len * steel_hedgehog[j].wid * steel_hedgehog[j].hei;
recon RailMass(20., 4., 5., 0.5);

{

net HeteroNet(N, volumes) mynet;

[mynet]: {

rail myrail;
myrail = steel_hedgehog[];

myrail.mass =

RailMass(myrail.len, myrail.wid, myrail.hei, DELTA);

MPC_Printf("Rail #%d is %gcm x %gcm x%gcm and weights %g kg\n",

I coordof mynet, myrail.len, myrail.wid,

myrail.hei, myrail.mass/1000.0);

[host]printf("The steel hedgehog weights %g kg\n",

[host]((myrail.mass)[+])/1000.0);

}

}



[host]printf("\nIt took %.1f seconds to run the program.\n",

[host]MPC_Wtime()-start);

}

else

[host]printf("Wrong input (N=%d)\n", [host]N);

}

Бақылау сұрақтары:
1. Динамикалық мәліметтер қорына мысалдар келтір
2. Динамикалық қор мен статисткалық қордың айырмашылықтарын ата
3. Қандай кіріктірлген динамикалық предикаттар бар?
4. Терезелермен жұмыс жасауға арналған предикаттарды атаңыз


  1. Зертханалық сабақтар мазмұны

М. Серік, М.Н. Бакиев «Параллель есептеулер» MATLAB ортасы, Астана, 2014ж оқу құралы бойынша тапсырмаларды орындау.
1 тақырып. Параллельді жүйе деректерін өңдеу классифифкациясы:

Қарастырылатын сұрақтар:



  1. Ортақ жады бар компьютерлер;

  2. Үлестіруші жады бар компьютерлер;

  3. SIMD (Single Instruction Multiple Data) басқару типі бойынша құрылған жүйе;

  4. MIMD (Multiple Instruction Multiple Data) басқару типі бойынша құрылған жүйе;

  5. Параллельдеуге жататын есептер туралы;

Тапсырма 1.

А) ортақ жадты компьютерлер туралы ядроларының санына байланысты мысал келтір;

Б) желіде ұйымдастырылған үлестіруші жады бар компьютерлер туралы ядроларын кіріктіріп схема сыз.

Тапсырма 2.

А) SIMD (Single Instruction Multiple Data) басқару типі бойынша құрылған жүйенің схемасын сыз;

Б) MIMD (Multiple Instruction Multiple Data) басқару типі бойынша құрылған жүйенің схемасын сыз;

Тапсырма 3.

А) параллельдеуге жататын есептерге мысал келтір;

Б) параллельдеуге келмейтін есептерге мысал келтір.

Бақылау сұрақтары


  1. Ортақ жадты компьютерлер ерекшеліктері қандай?

  2. Үлестіруші жады бар компьютерлер ерекшеліктері қандай?

  3. SIMD (Single Instruction Multiple Data) басқару типі бойынша құрылған жүйе қалай жұмыс жасайды?

  4. MIMD басқару типі бойынша құрылған жүйе қалай жұмыс жасайды?

  5. Параллельдеуге жататын есептер туралы не айтуға болады?

  6. Параллельдеуге келмейтін есептер туралы не айтуға болады?

  7. SIMD және MIMD басқару типі бойынша құрылған жүйелердің айырмашылығы неде?

2 тақырып. Кластерлі жүйелер.

Қарастырылатын сұрақтар:



  1. Кластерлі жүйелер туралы түсінік;

  2. Компьютердің өнімділігін арттыру жайлы;

Тапсырма 1. 3 компьютерден тұратын кластерлерді құру кодын жаз.

Тапсырма 2. Құрастырған кластерлердің максималды және минималды жұмысшыларының санын есептеу керек (үш жұмысшыдан қосуға болады деген дерекпен).



Бақылау сұрақтары:

  1. Кластер дегеніміз не?

  2. Жоғары өнімді есептеу техникаларының бағыттарын атаңыз.

  3. Деректерді параллель өңдеудің қандай принциптері бар?

  4. Параллельдік дегеннің түсінігі қандай?

  5. Конвейерлік дегеннің түсінігі қандай?

  6. Қандай белгілі суперкомпьютерлер бар?

3 тақырып. Желі баптаулары.

Қарастырылатын сұрақтар:



  1. Компьютерлерді жұмыстық топқа біріктіру;

  2. Жұмыстық топ компьютерлерінің ІР-адресін анықтау. Бірлескен компьютерлердің өзара байланысы;

Тапсырма 1. Өз компьютерлік сыныбыңыздағы локальды желіні баптау керек.

Тапсырма 2. Желіге қосылған компьютерлерді анықтау.

Тапсырма 3. Бірнеше компьютерге бірдей ІР-адрес беріп, эксперимент жүзінде жұмыстың нәтижесін тексеру.

Бақылау сұрақтары:


  1. Жұмыстық топтағы біріккен компьютерлер қалай жасалады?

  2. Жұмыстық топтағы компьютерлер ІР-адресін қалай орнатады?

  3. Компьютерлер арасында байланыс орнатылғанын қалай анықтауға болады?

  4. Байланыстың орнағанын қандай командалар анықтайды?

4 тақырып. Параллельді MATLAB.

Қарастырылатын сұрақтар:



  1. Негізгі түсініктер.

  2. MATLAB Parallel Computing Toolbox және MATLAB Distributed Computing Server

  3. MATLAB R2011B орнату

Тапсырма1. MATLAB кеңістігіндегі негізгі қосымшалармен танысу.

Бақылау сұрақтары:

  1. MATLAB мақсаты мен міндеттері

  2. Кластерде MATLAB пен бірге есептеуді орындау үшін қандай өнім қажет?

  3. Parallel Computing Toolbox мақсаты?

  4. Parallel Computing Toolbox-тің негізгі ерекшеліктерін ата.

  5. Parallel Computing Toolbox-тің жүйелік қандай міндеттері бар?

  6. MATLAB Distributed Computing Server мақсаты?

  7. MATLAB Distributed Computing Server-дің негізгі ерекшеліктерін ата.

  8. MATLAB Distributed Computing Server-дің жүйелік қандай міндеттері бар?

  9. MATLAB R2011B орнатудағы негізгі кезеңдер.

  10. Жүйені орнатудың қандай түрлері бар?

  11. Жүйені орнату барысында лицензияның қандай түрлері ұсынылады?

  12. Желіде жұмыс істеу үшін жүйе қалай орнатылады?

5 тақырып. PARFOR операторы

Қарастырылатын сұрақтар:



  1. MATLABPOOL

  2. Parfor операторы. Ерекшеліктері

Тапсырма1. Parfor операторын қолдану арқылы векторды екі бөлікке бөлу амалын орындау:



Бақылау сұрақтары

  1. Parfor операторының қызметі

  2. Parfor циклының затындағы ауысымды қолдануда қандай шектеулер қолданылады?

  3. Parfor циклында ауысым классификациясын белгілеу.

  4. Parfor циклын қолдануға мысал келтір.

  5. Parfor тәуелді итерацияларда қалай болар еді?

6 тақырып. Кластерлерді баптау

Қарастырылатын сұрақтар:



  1. Негізгі түсініктер

  2. Аппараттық талаптар

Тапсырма 1. Теориялық материалмен танысып, үш компьютердің көмегімен кластерді баптау.

Тапсырма 2. Әр серверге Admin Cеnter арқылы қанша worker енгізуге болатынын негіздеңіз.


7 тақырып. Параллельдеуге жататын есептерді программалау. PMODE режимі.

Қарастырылатын сұрақтар:



  1. Негізгі түсініктер. PMODE режимі

  2. PMODE режимін іске қосу форматы

Тапсырма 1. Labindex пен numlabs –тің жұмыс істеу қабілетіне назар аударып, эксперимент жасаңыз.

Тапсырма 2. Е санын табу үшін анықталған интегралды пайдаланып, PMODE режимінде орындаңыз.


Бақылау сұрақтары:

  1. PMODE режимі неге арналған?

  2. PMODE режимінде қандай командалар қолданылады?

  3. Numlabs командасында орындалған жұмыс нәтижесі.

  4. Labindex командасында орындалған жұмыс нәтижесі.

  5. Әр серверде неше worker-лер қосылады?

8 тақырып. Анықталған интеграл. π санын есептеу.

Қарастырылатын сұрақтар:



  1. Анықталған интегралды параллель есептеу жолы.

Тапсырма 1. Labindex пен numlabs функцияларының әртүрлі мәндерінде функцияны есептеңіз.

Тапсырма 2. Сіздің кластеріңіздің сипатына орай π санын табу үшін керек интегралдарды есептеңдер.


Бақылау сұрақтары:

  1. Есептерді шешуге арналған Matlab кластерін баптаудың баспалдағы қандай?

  2. mpc деген не?

  3. PMODE командасының қызметі қандай?

  4. PMODE режимінен локальды сессияға қалай ауысуға болады?

  5. Labindex пен numlabs функциялары жайлы айтыңыз.

  6. Қандай функцияның көмегімен сессияның меншікті сомалары өлшенеді?

  7. Guadl (F,a,b) функциясының қызметі.

9 тақырып. Параллельдеуге жататын есептерді программалау. m- Файл инструкцияларын қолдану нұсқасы

Қарастырылатын сұрақтар:



  1. Негізгі түсініктер

  2. m- Файл-ды қолданумен жүзеге асырылатын жұмыстар.

Тапсырма 1. m- Файл-ды қолдану технологиясы көмегімен е санын есептеу керек.

Тапсырма 2. А(2*4) матрицасын А(4) векторына көбейтуді кластерде орындағанда m- Файл-ды қолдану технологиясы көмегімен жүзеге асыру.


Бақылау сұрақтары:

  1. «m- Файл-ды қолдану технологиясы» түсінігінің мәні неде?

  2. Pjob айнымалысының ролі қандай?

  3. Get командасының рөлі қандай?

  4. Сіздің құрастырған кластеріңізде максимум қанша жұмысшы болады?

  5. Сіздің құрастырған кластеріңізде минимум қанша жұмысшы болады?

10 тақырып. Параллельді тапсырма объекті

Қарастырылатын сұрақтар:



  1. Негізгі түсініктер

  2. «Параллель тапсырма» объектісі мысалдары, m- Файл-дың негізгі командалары

Тапсырма 1. Pjob-тың жағдайын тексер:

>>jm=findResource('scheduler','configuration','mpc');

pjob = createParallelJob(jm);

pjob.State

Тапсырма 2. 'Minimum Number Of Workers' –дің ерекшеліктерін тексер:

>>get(pjob,'MinimumNumberOfWorkers')

Тапсырма 3. Егер 'Minimum Number Of Workers' 2- тапсырманың орнына 'Mахimum Number Of Workers' қойса не болады, тексер?
Бақылау сұрақтары:


  1. m- Файл-дер қалай орындалады?

  2. Submit(pjob) деген не?

  3. Upar_pi.m және UParZadacha23.m файлдарының айырмашылығы неде?

  4. Программа – функция деген не?

11 тақырып. Тізбекті және параллель циклдер

Қарастырылатын сұрақтар:



  1. Өнімділікті арттыру жолы

  2. Тізбекті және параллель циклдарды жүзеге асыру жолдары

Тапсырма 1. Берілген мысалды тізбекті циклда тексеріп көр:

Тапсырма 2. «Массивтер» тақырыбына мысалдар қарастырайық. Келесі мысалдарды тексер:

matlabpool open local 8

clear;


n=10;

x=rand(n,1);

total=0.0;

big=-Inf;

fact=1;

for i=1:n total=total+x(i);

big=max(big,x(i));

fact=fact*x(i);

end

matlabpool close



Тапсырма 3.

big=-inf;

x=[5 9 -8 7 6 2]

for i=1:5

big = max(big,x(i));

end


Тапсырма 4. Кез келген массивтің элементтерінің минимумын, элементтерінің қосындысын және көбейтіндісін тап.
Бақылау сұрақтары:

  1. Тізбекті циклдің жасалу жолы қандай?

  2. Параллельді циклдің жасалу жолы қандай?

  3. Параллельдеуге келмейтін циклға өзге мысалдар келтір

  4. Параллеьді циклды қолданғанда конфигурацияны анықтау қалай жүзеге асады?

12 тақырып. Матрицалардың тізбекті және параллель көбейтіндісі

Қарастырылатын сұрақтар:



  1. Матрицаларды көбейту жолдары

  2. Ядрода жұмысшылар мүмкіндіктерін пайдаланып әртүрлі өлшемді матрицаларды тізбектей және параллель көбейту

Тапсырма 1. n=50, 200, 400, 900 және Worker-лардың әр түрлі санында тізбекті және параллель матрица көбейтіндісі кодының орындалу уақытын анықтау (кестені толтыр):

n

Тізбектеп көбейту

Параллельді көбейту

50







200







400







900







Тапсырма 2. Сиқырлы шаршы түсініктемесін беру және түрлі n жағдайларына мысал келтіру.

Тапсырма 3. Өз компьютеріңнің процессорының мінездемесін анықтап, тапсырмаларды орындау.

13 тақырып. Дифференциалды теңдеулерді шешу

Қарастырылатын сұрақтар:



  1. Негізгі түсініктер

  2. Қарапайым 2-ші дәрежелі дифференциалды теңдеулерді шешу

Тапсырма 1. Берілген теңдеуді 4 Worker негізінде орындау

m*X'' + b*X' + k*X = 0

Тапсырма 2. Берілген теңдеудегі мәндерді өзгертіп 4 Worker негізінде орындау

m*X'' + b*X' + k*X = 0

Тапсырма 3. Берілген мәліметтерді қолдана отырып, басқа қарапайым теңдеулерге бағдарлама жасау.


Бақылау сұрақтары:

  1. paramSweep.m және odesystem.m m-файлдары нені білдіреді?

  2. Есептеу кезінде қандай қорытындылар жасауға болады?

  3. mpc және lab нені білдіреді?

  4. 4 Workerбағдарламасын пайдаланғанда жылдамдық үдеуінің қандай анықтамасы шығады?

  5. Функцияны қалай қолданатыны туралы айт.

14 тақырып. GPU (Graphics Processing Unit)қосымша есептеу қуаты ретінде

Қарастырылатын сұрақтар:



  1. CUDA платформасын MATLAB-та қолдану

  2. GPU-дағы есептеулер

  3. GPU есептеулерінің тарихы

  4. Мандельброт жиыны

Тапсырма 1. Мандельброт жиынының 4 жүзеге асырылуын қарастыру:

  1. СPU-мен орындалатын (1-мысал);

  2. GPUArray-ды қолданумен (2-мысал)

  3. Arrayfunb GPUArrayқызметін қолдану арқылы (3-мысал)

  4. MATLAB мағлұматтарын қолдана отырып, CUDA/С++ - ны орындайтын parallel.gpu CUDAKernel ядросын қолданумен.


Бақылау сұрақтары:

  1. GPU нені білдіреді?

  2. NVIDIA/ CUDA MATLAB ішінде жайлы айт

  3. СPU+ GPU деген не?

  4. Мандельброт жиыны туралы айт

  5. Фрактал дегеніміз не және оның компьютерлік суреттемесі қалай бағаланады?

15 тақырып. DATABASE TOOLBOX – MATLAB-тағы кеңейту

Қарастырылатын сұрақтар:



  1. DATABASE TOOLBOX. Негізгі мүмкіндіктері.

  2. Деректер базасын құру және деректер базасымен жұмыс

Тапсырма 1. Төменде келтірілген мысалды назарға ала отырып, тапсырманы орындау.

Мәліметтерді параллель өңдеу қызметінің мысалы (MySQL версиясын қолдану)

function res = speechnorm()

% Host


host = 'nodes-01-01';

% Database name

dbname = 'waves';

% Database user

User = 'user';

Password = 'password';

% Connect to database

matlabpool open local 8;

mysql('open', host, user, password);

mysql ('use waves');

vector = mysql('SELECT v FROM waves.vectors LIMIT 1, 1000');

tstart = tic;

parfor i=1:1000

warning off;

vec = str2double(vector(i));

c=premnmx(vec); % нормализация

end

res = toc(tstart);



mysql('close');

matlabpool close; []

Тапсырма 2. Мысал ретінде мағлұматтарды қолдана отырып, ORACLE ортасында мәліметтерді қайта құру.
Бақылау сұрақтары:


  1. MATLAB кластерінде мәліметтер базасына сауалды қалай жібереді?

  2. Sql- сауалды жүзеге асырудың қандай тәсілдері бар?

  3. Бірнеше мәліметтер базасымен қатар жұмыс істеу қалай іске асырылады?

  4. ORACLE ортасында қалай қолдануға болады?

  5. DATABASE TOOLBOX негізгі мүмкіндіктерін ата.


9 Өздік жұмыстардың тапсырмалары


Сабақтың тақырыбы мен жоспары


Сағат саны

Бақылау түрі

Әдебиеттер

(әдебиет №, реті, тарауы, беті)



І-Тарау. Кіріспе

1

Параллель программалау дамуының хронологиясы

1. Параллелизм түсінігі.



1

-

2,4,5

2

Параллель программалау дамуының хронологиясы

1. Программалау модельдері



1

-

6-10

ІІ-Тарау. Параллелизм

3

Программалау модельдері: параллель және тізбекті

Параллель программалау тиімділігін бағалау. Амдал заңы.



1

БЖ

1-9

4

Программалау модельдері: параллель және тізбекті

Густафсон заңы.



1

ТТ

1-3

5

Программалаудың негізгі параллель модельдері

Программалау тілдерінің синхронизациялау деңгейі.



1

Р

5-10

6

Программалаудың негізгі параллель модельдері

Хабарлар беру синхронизациялау деңгейі.



1

БЖ

5-8

ІІІ-Тарау. Параллель компьютерлер

7

Параллель компьютерлер : жылдам әрекеттесуші аппараттық жасау

Параллель компьютерлер типтері. Флинн таксономиясы.



1

ТТ

2-4

8

Параллель компьютерлер : жылдам әрекеттесуші аппараттық жасау

Флинн таксономиясы.



1

Р

2-8

9

Параллель компьютерлер типтері

Параллель алгоритмдерді ғылыми есептерді шешуге қолдану.



1

Р

4-9

10

Параллель компьютерлер типтері

Параллель программалау. Ағындар мен деректерді өңдеу.



1

ТТ

2-8

ІV-Тарау. Параллель программалау тиімділігін бағалау

11

Орындалу уақыты, жылдамдату коэффициенті, орындалу шығыны, қызмет көрсету бағасы, тиімділігі

Параллель программалау тілдері: HPF, C++, rtran



1

ТТ

6-9

12

Орындалу уақыты, жылдамдату коэффициенті, орындалу шығыны, қызмет көрсету бағасы, тиімділігі

Пакеттер, тұрақтылар және айнымалылар.



1

Р

5-9

13

Амдал заңы, Густафсон заңы

С++ тілін қолдана отырып параллель алгоритмдер үшін программалық кодтарды құру.



1

БЖ

4-10

14

Амдал заңы, Густафсон заңы

Программалау тілін синхронизациялауды қолдана отырып жинақтау/ыдырату, критикалық секция, семафорлар.



1

ТТ

5-10

V-Тарау. Процестер және синхрондау

15

Аппараттық синхронизациялау деңгейі

PVM-де жұмыс істеу.



1

ТТ

4-10

16

Аппараттық синхронизациялау деңгейі

PVM-де параллель ағындарды құру және деректерді параллель өңдеу.



1

Р

5-8

17

Программалау тілдерінің синхронизациялау деңгейі

Хабарларды жіберуді программалау (MPI).



1

Р

4-9

18

Программалау тілдерінің синхронизациялау деңгейі

Процесстер мен синхрондау.



1

ТТ

8-10

VІ-Тарау. Параллель алгоритмдер

19

Параллель алгоритмдерді өңдеу: декомпозиція (сегменттеу), коммуникацияларды жобалау, үлкейту

Аппараттық синхронизациялау деңгейі.



1

ТТ

6-9

20

Параллель алгоритмдерді өңдеу: декомпозиція (сегменттеу), коммуникацияларды жобалау, үлкейту

Программалау тілдерінің синхронизациялау деңгейі.



1

Р

5-9

21

Есептеулерді жоспарлау

Хабарлар беру синхронизациялау деңгейі.



1

ТТ

1-4

22

Есептеулерді жоспарлау

Параллель алгоритмдер.



1

Р

4-9

23

Параллель сұрыптау алгоритм дер

Параллель алгоритмдерді өңдеу: декомпозиция (сегменттеу), коммуникацияларды жобалау, үлкейту.



1

ТТ

3-10

24

Параллель сұрыптау алгоритм дер

Есептеулерді жобалау.



1

Р

4-9

VІІ-Тарау. Параллель программалау

25

Ағындар мен деректерді өңдеу

Параллель сұрыптау алгоритмдері



1

ТТ

5-10

26

Ағындар мен деректерді өңдеу

Сандық өрістерді параллельдеу: тік және итерациялық сызықтық теңдеулер жүйесінің шешу әдістері.



1

Р

5-10

27

Параллель программалау тілдері: HPF,Си++ , Fortran 90тілдері

Параллель программалау.



1

Р

6-10

28

Параллель программалау тілдері: HPF,Си++ , Fortran 90тілдері

Ағындар мен деректерді өңдеу.



1

ТТ

5-10

29

Кескіндерді өңдеу

Параллель программалау тілдері: HPF, C++, Fortran 90. PVM, MPI, OpenMP көмегімен таратылған деректерге құру және кіріс.



1

Р

5-10

30

Кескіндерді өңдеу

Параллель алгоритмдерді ғылыми есептерді шешуге қолдану.



1

ТТ

6-10

Барлығы 30 сағ


10 Білім алушылардың оқытушымен өздік жұмысына кеңес беру кестесі

Барлық сұрақтар бойынша кеңес ағымдағы семестрдегі білім алушылардың оқытушымен өздік жұмысының кестесіне сәйкес жүргізіледі.


11 Білім алушылардың білімдерін тексерудің кестесі

Барлық дәрістер, тәжірибелік және лабораториялық жұмыстарға қатысып, тапсырмаларды уақытында орындау 0-100 баллмен бағаланады.



Пән бойынша тапсырмаларды орындау және тапсыру кестесі



Достарыңызбен бөлісу:
1   2   3   4   5   6




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет