This is topic Синтаксическая ошибка in forum TRACE MODE 6 бесплатная Базовая версия / TRACE MODE 6 free Base version at Форум TRACE MODE: техническая поддержка.
PROGRAM VAR_INPUT proc1 : REAL; END_VAR VAR_INPUT proc2 : REAL; END_VAR VAR_OUTPUT proc3 : REAL; END_VAR VAR_OUTPUT y1 : REAL; END_VAR VAR_OUTPUT y2 : REAL; END_VAR VAR_OUTPUT y3 : REAL; END_VAR VAR_INOUT dx : REAL; END_VAR VAR i1 : INT; END_VAR VAR i2 : INT; END_VAR VAR i3 : INT; END_VAR VAR i : INT; END_VAR
proc1=input['vvod proc1']; proc2=input['vvod proc2']; proc3=100-[proc1+proc2]; while [dx<400] if [[dx>=0 and dx<<100] or [dx>>100 and dx<<200] or [dx>>200 and dx<<300] or [dx>>300 and dx<<400]] then dx=dx+1; i=i+1; else if dx==100 then i1=0;y1=0; while y1>>[100-proc1] y1=y1-1; i1=i1+1; end_while; end_if; if dx==200 then i2=0;y2=100; while y2>>[100-proc2] y2=y2-1; i2=i2+1; end_while; end_if; if dx==300 then i3=0;y3=100; while y3>>[100-proc3] y3=y3-1; i3=i3+1; end_while; end_if; end_if; end_while;
END_PROGRAM
ругается на первый[самый глобальный if] кстати круглые скобки везда заменены квадратными т.к иначе сообщение не отправлялось
Posted by KVV (Участник № / Member № 5308) on :
Цитирую справку:
" _>>_ или shr – сдвиг вправо на указанное число разрядов (без сохранения знака) (только для целочисленных значений); "
Аналогично и с "двойным меньше".
Вы пытаетесь сдвинуть REAL
Posted by Илья В. (Участник № / Member № 5441) on :
эммм..))у меня до этого стояли просто знаки >,< и =
преподаватель в универе сказал,что нужно так,как я выложил,cпасибо ему
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Внимательно посмотрите разделы "Символьные операторы" и "Операторы Техно ST". Оператор цикла выглядит следующим образом while {выражение} do {последовательность предложений} end_while. У Вас отсутствует do.
Однако, есть опасение, что Ваша программа не будет правильно работать по двум причинам: - возможны беконечные циклы, - нет четкого функционального представления о различиях между аргументами программы и внутренними переменными.
В функции технической поддержки не входят разбор и исправление кодов программ пользователей.
Posted by Илья В. (Участник № / Member № 5441) on :
Да,да,извините я уже и сам пришёл ко всему вышесказанному
Posted by Илья В. (Участник № / Member № 5441) on :
Я дико извиняюсь,но не мог ли бы мне кто нибудь обьяснить как в данной программе связать какраз внутренние переменные и аргументы программы?
Задача в том,чтобы привязать движение обьекта к циклически изменяющейся величине (чтобы он плавно перемещался исходя из зацикленной координаты dx=dx+1); Но проблема в том, что к внутренней переменной движение я привязать естественно не могу,а аргумент плавно изменять не получается-он принимает значения или 0 или конечное.
Главная проблема конечно в том,что я не совсем разобрался в сути как уже написали выше,но если вам не трудно - поправте меня..
PROGRAM VAR_INPUT proc1 : REAL; END_VAR VAR_INPUT proc2 : REAL; END_VAR VAR i1 : INT; END_VAR VAR i2 : INT; END_VAR VAR i3 : INT; END_VAR VAR i : INT; END_VAR VAR dx : INT; END_VAR VAR y1 : INT; END_VAR VAR y2 : INT; END_VAR VAR y3 : INT; END_VAR VAR proc3 : REAL; END_VAR
proc3=100-(proc1+proc2); while (dx<400) do if [[dx>=0 and dx<100] or [dx>100 and dx<200] or [dx>200 and dx<300] or [dx>300 and dx<400]] then dx=dx+1; i=i+1; else if dx==100 then i1=i;y1=100; while y1>[100-proc1] do y1=y1-1; i1=i1+1; end_while; dx=dx+1; end_if; if dx==200 then i2=i1;y2=100; while y2>[100-proc2] do y2=y2-1; i2=i2+1; end_while; dx=dx+1; end_if; if dx==300 then i3=i2;y3=100; while y3>[100-proc3] do y3=y3-1; i3=i3+1; end_while; dx=dx+1; end_if; end_if; end_while;
END_PROGRAM
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
По тексту программы нет возможности понять, какую задачу она решает. Пришлите, пожалуйста, на адрес техподдержки (hotline@adastra.ru) описание задачи, хотя бы на уровне алгоритма (с указанием входных и выходных аргументов).