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 өрнегін есептеу мүмкін емес.
Достарыңызбен бөлісу: