Форум программистов, компьютерный форум, киберфорум
Lazarus
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Заблокирован

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

16.07.2015, 16:19. Показов 2607. Ответов 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
33467 / 21566 / 8249
Регистрация: 22.10.2011
Сообщений: 37,021
Записей в блоге: 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
33467 / 21566 / 8249
Регистрация: 22.10.2011
Сообщений: 37,021
Записей в блоге: 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
33467 / 21566 / 8249
Регистрация: 22.10.2011
Сообщений: 37,021
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru