Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 16.12.2016
Сообщений: 6
1

Почему delphi после окончания процедуры переходит в начало/середину процедуры?

27.12.2016, 16:01. Показов 1514. Ответов 3

Author24 — интернет-сервис помощи студентам
Почему delphi после второго end; переходит к while, а в полной версии процедуры в ее середину?


Delphi
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
program hren;
uses
   SysUtils,
   Math,
   Windows ;
 
CONST
   h=10;
 
 
 
VAR
   d1: integer;
   a,b,c,d: real;
 
 
{$APPTYPE CONSOLE}
 
 
 
   Procedure vich_c;
      Begin
                        
         While c<n do
                   
              Begin
                    
                          
                 c:=c+1;
                 writeln(c);
                 d:=(b*b)-(4*a*c);
                 d1:=round(d);
 
 
                 If (d>0) or (d=0) Then
           
                 d:=d+1
                 Else
                     If c<n then
                    
                        vich_c;
 
          End;
 
      End;
 
 
begin
  n:=2;
  c:=-2;
  a:=-2;
  b:=-2;
  vich_c;
  write(c);
end.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.12.2016, 16:01
Ответы с готовыми решениями:

Ожидание окончания процедуры
Имеется процедура поиска изображения и клик по нему procedure Search(name:string) и имеется...

Почему стикмэн не делает никаких действий после процедуры?
Почему стикмэн не делает никаких действий после процедуры?(Почему не нагинаеться?) uses graphABC;...

Почему после вызова процедуры, когда значение доходит до 5.9, код начинает неправильно работать?
почему после вызова процедуры,когда он доходит до 5.9 он начинает не правильно увеличиваться? код:...

Начало процедуры..
третий день просматриваю лекции Чистова, написал процедуру по его уроку: Процедура...

3
884 / 404 / 174
Регистрация: 20.10.2016
Сообщений: 1,828
27.12.2016, 16:30 2
У вас есть процедура и есть тело программы. Выполняться начинает тело программы (48-55 строчки). После вызова процедуры (53 строка) у вас начинает выполняться код процедуры (26-45 строки)
0
0 / 0 / 0
Регистрация: 16.12.2016
Сообщений: 6
27.12.2016, 18:46  [ТС] 3
Оно - то выполняется, но при окончании работы процедуры delphi возвращается к строке 24, после чего по невыполнению условия переходит на строку 45, и дальше идет как надо. Однако по мере увеличения в процедуре условных операторов, цикл "от 45 к 24" начинает повторятся. Мне приходится тыкать по F7 по 6 -7 раз, пока оно не выйдет из процедуры. самое страшное, что в полной версии процедуры оно не выходит из процедуры, а переходит на строку, стоящую по средине процедуры, после чего закрывает выполняет еще две строки и неожиданно заканчивает всю программу.
0
884 / 404 / 174
Регистрация: 20.10.2016
Сообщений: 1,828
27.12.2016, 18:52 4
Лучший ответ Сообщение было отмечено syomuch_dill как решение

Решение

syomuch_dill, это у вас рекурсия. Вы в 41 строке в функции вызываете её саму, вот она и начинается сначала. А не выходит из цикла потому, что условие выхода из цикла не выполняется. Вернее, выполняется, но не вместе с условием из строки 35, вот и бегает ваша рекурсия...
1
27.12.2016, 18:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.12.2016, 18:52
Помогаю со студенческими работами здесь

Не переходит на точку останова после перевода с Delphi 7 на Delphi 10
Доброго времени суток, товарищи! Столкнулся я с одной проблемой. Был проект на Delphi 7, купили...

Функции и процедуры. При помощи процедуры записать слова задом наперед
Дана строка S, состоящая из не менее 5 слов. При помощи процедуры записать слова задом наперед....

Использование имени процедуры в качестве параметра другой процедуры
Составить программу по заданному условию.Первая часть условия является заданием на разработку...

Создание хранимой процедуры, которая создает хранимые процедуры
Написать хранимую процедуру SQL , которая будет создавать хранимые процедуры(любые) для БД.


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru