Заблокирован

Возможность реализации проверки системы условий

16.07.2015, 16:19. Показов 2632. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть-ли возможность реализовывать в среде системы проверок условия, подобной данной. Данная система была придумана в процессе поиска замены функции Sign, но замена сама по себе уже не существенна, нужна возможность реализации систем проверок условия.
Вот один из возможных вариантов.
Псевдокод:
Pascal
1
2
3
4
5
6
7
проверка: если x равно нулю то оборвать с предписаной операцией
начало:
проверка (предписание:  оборвать);
x:=x-x;
проверка (предписание: x:=1, оборвать);
x=-1;
конец
тут в первой строке вводится проверяемое условие, но в первой строке оно не проверяется а, проверяется оно в теле, между строками начало и конец. если в теле системы условие выполнено, то выполняется предписание. так в 3-её строке предписание "оборвать" означает перейти в конец тела системы проверки условия (закончить выполнение системы)
; в четвертой операция и снова вызов проверки, и т.д.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.07.2015, 16:19
Ответы с готовыми решениями:

Возможность реализации системы управления для предприятия
Шеф озаботился увеличением роста количества сделок, повышением качества работы с клиентами, а также эффективности работы подчиненных в...

"Мало начальных условий" при решении системы из 7 ДУ, хотя граничных условий 8
Имеется такая система, http://regfoto.ru/images/172Mathcad_2_.jpg маткад пишет что граничных условий недостаточно, хотя их там с...

Проверки различных условий
char str1,str2,str3; // объявление массивов; unsigned int m; //объявление перменной ,после которой будет вставлена подстрока;...

28
Заблокирован
21.07.2015, 17:13  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
Вашей переадресацией на блог Вы нарушаете правило 4.6 форума, вообще то.
Спасибо, буду знать.
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
Кстати, надо бы это дело обсудить.
Я уже вроде не прерываю - перехожу в конец процедуры "система условий"
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{область описания процедур системы проверки}
процедура "x=0";
начало
перейти в конец процедуры "система условий";
конец;
процедура "x=1";
начало
x:=1;
перейти в конец процедуры "система условий";
конец;
{/область описания процедур системы проверки}
процедура "проверка";
начало
если x=0 то выполнить процедуру "предписание"// где "предписание" либо символьная переменная, либо целочисленная для массива процедур
конец
процедура "система условий"
начало
"предписание":="x=0";
проверка;
x:=x-abs[x];
"предписание":="x=1";
проверка;
x:=-1;
конец;
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
Получается, что при многократных вызовах sign произойдёт преполнение стека.
Это пример, возможно не очень удачный.
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
да, case
В принципе, конечно можно и case, но смысл системы в том, что как ни крути, а всё сводится к одному условию, кто знает одно единственное условие-тот знает лучшее решение задачи. Представьте себе некоторый собирательный образ идентифицируемый программой, и вот, в реальности нет идеальных объектов, субъект распознает образы только те, которые есть с чем сравнивать, если образ не распознаётся-значит его просто не с чем сравнить. Это некоторая идеология - учиться распознавать образы одним условным оператором, это приведёт к созданию достаточно совершенного условного оператора, который в системы сможет распознавать множество разных образов, то-есть приведёт к созданию некоторого универсального "слова". К примеру: в какую область определить св-во объекта - "движение"? Разумеется: в ту-же что и цвет , всё относительно, идеальных объектов нет - все объекты составляют некоторую достаточно совершенную и сложную систему, идеальность которой заключается только в целостности.
0
Заблокирован
26.07.2015, 16:45  [ТС]
У меня вопрос возник, перерыв у меня был небольшой:
А как я могу перейти в конец процедуры, начинающейся в строке 16, если это необходимо сделать с процедуры, которая вызывается при выполнении условия, выполняющегося в процедуре начинаемой в строке 12 и вызываемой из той, в конец которой нужно перейти?

Добавлено через 11 минут
иначе говоря: как мне выполнить строку №9?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33478 / 21576 / 8250
Регистрация: 22.10.2011
Сообщений: 37,034
Записей в блоге: 12
28.07.2015, 09:15
Лучший ответ Сообщение было отмечено Cyborg Drone как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
procedure one;
begin
  // ...
end;
procedure two;
begin
  // ...
  raise Exception.Create('two');
end;
procedure three;
begin
  // ...
end;
 
procedure test;
begin
  try
  one;
  two;
  three;
  except
    // Сюда придем после raise в процедуре two
  end;
end;
goto между процедурами не работают.
1
Заблокирован
28.07.2015, 16:24  [ТС]
Надеюсь, что мне этого хватит. Спасибо большое.
0
Заблокирован
10.08.2015, 16:26  [ТС]
а так можно?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
procedure Ordering;
 var
   procinstruction,rezultat,napravleniesumm: integer;
   arrproccond: arr;
 procedure smenanapravlenia
begin
napravleniesumm:=0-napravleniesumm;
end;
 procedure line
begin
raise Exception.Create('line');
end;
 procedure condition;//сравнение
begin
if rezultat=0 then ///////////////
  begin
    arrproccond[procinstruction];
    procinstruction:=procinstruction+1;
  end;
end;
 procedure sistemscondition
begin
procinstruction:=0;
rezultat:=SurfaceList.x[2]/SurfaceList.y[2]-SurfaceList.x[3]/SurfaceList.y[3];
condition;
rezultat:=SurfaceList.y[3] - abs(SurfaceList.y[3]);
condition;
procinstruction:=procinstruction-1;
rezultat:=SurfaceList.y[2] - abs(SurfaceList.y[2]);
condition;
end;
 
begin
arrproccond[0]:=@line;
arrproccond[1]:=@smenanapravlenia;
sistemscondition;
except//выйти тут при таковом предписании из  процедуры массива
end;
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33478 / 21576 / 8250
Регистрация: 22.10.2011
Сообщений: 37,034
Записей в блоге: 12
10.08.2015, 18:33
Цитата Сообщение от Hretgir Посмотреть сообщение
а так можно?
Можно, raise из 11-ой строки перебросит именно в блок в 37-38 строках
1
Заблокирован
21.08.2015, 15:29  [ТС]
Выдает ошибку, не должно вроде-бы как. В строке 76.
unit1.pas(565,1) Error: Illegal expression
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
  procedure Ordering;
 //type TValueSign = -1..1;
 var
   procinstruction: integer;
   rezultat,rezultat1:extended;
   arrproccond: arr;
   napravleniesumm,napravlen:boolean;
//   function Sign(
//     const AValue: Extended
//   ):TValueSign; overload;
//   begin
//end;
procedure turn;//поворот
var
  x2,x3,y2,y3:extended;
begin
SurfaceList := ASurfaceList[copyTimeBoxMaxY.IDsurface];
x3:=SurfaceList.x[2];
y3:=SurfaceList.y[2];
x2:=SurfaceList.x[3];
y2:=SurfaceList.y[3];
SurfaceList.x[2]:=x2;
SurfaceList.y[2]:=y2;
SurfaceList.x[3]:=x3;
SurfaceList.y[3]:=y3;
ASurfaceList[copyTimeBoxMaxY.IDsurface]:=SurfaceList;
end;
 procedure smenanapravlenia;/////////////////////////////////////////////процедура с параметром, надо сделать так
begin
napravleniesumm:=not(napravleniesumm);
end;
 procedure napravlenie;/////////////////////////////////////////////////////////////////////////////////////////////////////////
 begin
 napravlen:=true;
 napravlen:=napravlen=napravleniesumm;
 raise Exception.Create('napravlenie');
 end;
 
 procedure line;
begin
raise Exception.Create('line');
end;
 procedure condition;//сравнение
begin
if rezultat=0 then ///////////////
  begin
    arrproccond[procinstruction];
    procinstruction:=procinstruction+1;
  end;
end;
 procedure sistemscondition;
begin
napravleniesumm:=true;
procinstruction:=0;
rezultat1:=SurfaceList.x[3]/SurfaceList.y[3]-SurfaceList.x[2]/SurfaceList.y[2];
rezultat:=rezultat1;
condition;
rezultat:=SurfaceList.y[3] - abs(SurfaceList.y[3]);
condition;
procinstruction:=procinstruction-1;
rezultat:=SurfaceList.y[2] - abs(SurfaceList.y[2]);
condition;
rezultat:=rezultat1-abs(rezultat1);
condition;
napravlen:=false;
rezultat := ord(napravlen);
condition;
end;
 
begin
arrproccond[0]:=@line;
arrproccond[1]:=@smenanapravlenia;
arrproccond[2]:=@napravlenie;
arrproccond[3]:=@turn;
sistemscondition;
except;
end;
Ошибка остаётся при точке с запятой и без.

Добавлено через 3 минуты
И так тоже
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
procedure Ordering;
 //type TValueSign = -1..1;
 var
   procinstruction: integer;
   rezultat,rezultat1:extended;
   arrproccond: arr;
   napravleniesumm,napravlen:boolean;
//   function Sign(
//     const AValue: Extended
//   ):TValueSign; overload;
//   begin
//end;
procedure turn;//поворот
var
  x2,x3,y2,y3:extended;
begin
SurfaceList := ASurfaceList[copyTimeBoxMaxY.IDsurface];
x3:=SurfaceList.x[2];
y3:=SurfaceList.y[2];
x2:=SurfaceList.x[3];
y2:=SurfaceList.y[3];
SurfaceList.x[2]:=x2;
SurfaceList.y[2]:=y2;
SurfaceList.x[3]:=x3;
SurfaceList.y[3]:=y3;
ASurfaceList[copyTimeBoxMaxY.IDsurface]:=SurfaceList;
end;
 procedure smenanapravlenia;/////////////////////////////////////////////процедура с параметром, надо сделать так
begin
napravleniesumm:=not(napravleniesumm);
end;
 procedure napravlenie;/////////////////////////////////////////////////////////////////////////////////////////////////////////
 begin
 napravlen:=true;
 napravlen:=napravlen=napravleniesumm;
 raise Exception.Create('napravlenie');
 end;
 
 procedure line;
begin
raise Exception.Create('line');
end;
 procedure condition;//сравнение
begin
if rezultat=0 then ///////////////
  begin
    arrproccond[procinstruction];
    procinstruction:=procinstruction+1;
  end;
end;
 procedure sistemscondition;
begin
napravleniesumm:=true;
procinstruction:=0;
rezultat1:=SurfaceList.x[3]/SurfaceList.y[3]-SurfaceList.x[2]/SurfaceList.y[2];
rezultat:=rezultat1;
condition;
rezultat:=SurfaceList.y[3] - abs(SurfaceList.y[3]);
condition;
procinstruction:=procinstruction-1;
rezultat:=SurfaceList.y[2] - abs(SurfaceList.y[2]);
condition;
rezultat:=rezultat1-abs(rezultat1);
condition;
napravlen:=false;
rezultat := ord(napravlen);
condition;
except
end;
 
begin
arrproccond[0]:=@line;
arrproccond[1]:=@smenanapravlenia;
arrproccond[2]:=@napravlenie;
arrproccond[3]:=@turn;
sistemscondition;
end;
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33478 / 21576 / 8250
Регистрация: 22.10.2011
Сообщений: 37,034
Записей в блоге: 12
21.08.2015, 15:31
try нету, вот и выдает ошибку.
0
Заблокирован
21.08.2015, 15:38  [ТС]
И так
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 procedure sistemscondition;
begin
napravleniesumm:=true;
procinstruction:=0;
rezultat1:=SurfaceList.x[3]/SurfaceList.y[3]-SurfaceList.x[2]/SurfaceList.y[2];
rezultat:=rezultat1;
condition;
rezultat:=SurfaceList.y[3] - abs(SurfaceList.y[3]);
condition;
procinstruction:=procinstruction-1;
rezultat:=SurfaceList.y[2] - abs(SurfaceList.y[2]);
condition;
rezultat:=rezultat1-abs(rezultat1);
condition;
napravlen:=false;
rezultat := ord(napravlen);
condition;
except
end;
end;
Добавлено через 40 секунд
Цитата Сообщение от volvo Посмотреть сообщение
try нету, вот и выдает ошибку.
Спасибо

Добавлено через 3 минуты
Да, всё исправил
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
procedure sistemscondition;
begin
try
napravleniesumm:=true;
procinstruction:=0;
rezultat1:=SurfaceList.x[3]/SurfaceList.y[3]-SurfaceList.x[2]/SurfaceList.y[2];
rezultat:=rezultat1;
condition;
rezultat:=SurfaceList.y[3] - abs(SurfaceList.y[3]);
condition;
procinstruction:=procinstruction-1;
rezultat:=SurfaceList.y[2] - abs(SurfaceList.y[2]);
condition;
rezultat:=rezultat1-abs(rezultat1);
condition;
arrproccond[3];
except
end;
end;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.08.2015, 15:38

Создать скрипты для обновления системы, проверки её на вирусы, дефрагментации диска и проверки его на ошибки
Требуется создать батники, которые бы осуществляли запуск 1)обновления системы 2)проверку на вирусы 3)дефрагментацию диска ...

Методы для проверки условий
Пишу программу по обработке массивов. Приходится постоянно писать проверку на правильность ввода, чтобы число было не вещественным или не...

Виды быстрой проверки условий, подскажите
Как быстро проверить условия Вобщем требуеться ускорить рабту программы, подскажите как быстро на C# выполнять проверку условий. ...

Наложение условий проверки значений на ячейки
Помогите написать формулу для того чтобы в ячейку можно было ввести только четное значение. =(n=2k) ?

Нужна функция Sign без проверки условий
Я пока не нашёл способа, но ищу.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Опции темы

Новые блоги и статьи
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru