Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.07.2012, 12:39
fastwzx fastwzx вне форума
Прохожий
 
Регистрация: 04.07.2012
Сообщения: 2
Репутация: 10
По умолчанию Помогите разобрать цикл

a := 3;
for b := 0 to 5 do
if b > a then a := a + b;


Мне Желательно не ответ, а объяснить.

Я просто не пойму как узнать b > a или нет.
Ответить с цитированием
  #2  
Старый 04.07.2012, 12:41
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
Смех

Цитата:
Сообщение от fastwzx
не пойму как узнать b > a или нет
поставить точку останова на if и пройтись в режиме debug
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 04.07.2012, 16:56
Rocat Rocat вне форума
Прохожий
 
Регистрация: 04.07.2012
Адрес: Киров
Сообщения: 6
Версия Delphi: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
поставить точку останова на if и пройтись в режиме debug
да да)) ну а если НЕ ПОЛУЧИЛОСЬ, то трассировкой:
1. берем а=3
//заходим в цикл
2. первое значение b=0 => сравниваем его с а => b<a (т.к. 0<3)
2.1 b=1 => сравниваем его с а => b<a (т.к. 1<3)
2.2 b=2 => сравниваем его с а => b<a (т.к. 2<3)
2.3 b=3 => сравниваем его с а => не подходит, потому что b не > a
2.4 b=4 => сравниваем его с а => b>a (т.к. 4>3)
3. ... тогда а:=а+b => а=4+3=7
Ответить с цитированием
  #4  
Старый 04.07.2012, 17:02
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
Восклицание

если выражение в then перенести на другую строчку, то трассировка будет попадать на нее при выполнении условия. наводя курсор на переменные можно увидеть их значения.

fastwzx, Rocat, одна проблема на двоих?)))
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #5  
Старый 04.07.2012, 17:23
Rocat Rocat вне форума
Прохожий
 
Регистрация: 04.07.2012
Адрес: Киров
Сообщения: 6
Версия Delphi: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
если выражение в then перенести на другую строчку, то трассировка будет попадать на нее при выполнении условия. наводя курсор на переменные можно увидеть их значения.
какая разница переносить нановую строчку или нет, в любом случае при выполнении условия трас-ка будет попадать

Цитата:
Сообщение от NumLock
fastwzx, Rocat, одна проблема на двоих?)))
это о чем?)
Ответить с цитированием
  #6  
Старый 04.07.2012, 20:06
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
Восклицание

Цитата:
Сообщение от Rocat
какая
большая. пройдись отладчиком (F7, F8) по двум вариантам кода:
Код:
begin
  if Tag=0 then Sleep(0);
end;
и
Код:
begin
  if Tag=0 then
    Sleep(0);
end;
с точкой останова на if. в первом случае ты попадешь всегда на end. во втором при true на Sleep.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #7  
Старый 04.07.2012, 21:39
Rocat Rocat вне форума
Прохожий
 
Регистрация: 04.07.2012
Адрес: Киров
Сообщения: 6
Версия Delphi: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
большая.
я была о таком не в курсе..вроде никогда нам такого не рассказывали, извиняюсь за свою неосведомленность
Ответить с цитированием
  #8  
Старый 04.07.2012, 22:21
Аватар для YVitaliy
YVitaliy YVitaliy вне форума
Местный
 
Регистрация: 14.12.2011
Сообщения: 481
Версия Delphi: Borland Delphi7
Репутация: 17
По умолчанию

В цикле переменная b "пробегает" значения от 0 до 5ти. Пока оно от 0 до 3х, оно меньше/равно а, но когда оно становится равно 4м, соблюдается условие
Код:
if b > a
, тогда выполняется операция
Код:
a := a + b;
, и а становится равным 7: а=3+4=7; Дальше по ходу b уже не превышает значения а (поскольку оно доходит только до 5ти), в конечном итоге а=7;
Ответить с цитированием
Этот пользователь сказал Спасибо YVitaliy за это полезное сообщение:
fastwzx (04.07.2012)
  #9  
Старый 04.07.2012, 23:45
fastwzx fastwzx вне форума
Прохожий
 
Регистрация: 04.07.2012
Сообщения: 2
Репутация: 10
По умолчанию

Цитата:
Сообщение от YVitaliy
В цикле переменная b "пробегает" значения от 0 до 5ти. Пока оно от 0 до 3х, оно меньше/равно а, но когда оно становится равно 4м, соблюдается условие
Код:
if b > a
, тогда выполняется операция
Код:
a := a + b;
, и а становится равным 7: а=3+4=7; Дальше по ходу b уже не превышает значения а (поскольку оно доходит только до 5ти), в конечном итоге а=7;

Спасибо за ответ, вроде все ясно стало =)
Другим тоже спасибо, но мне нужен был развернутый ответ, как это сделал YVitaliy.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:41.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter