Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ Как работает оператор for?

Автор: Женя 28.06.2003 17:22

Помогите! Завтра экзамен!
Если в задаче установлен шаг, например 3, то как его записать?
Задача: Написать программу для вычисления значений Y=sqrt(Z) при изменении z от 3 до 21 с шагом 3.

Автор: Yu Lo 28.06.2003 19:48

[если правильно понял]
Попробуй так:

Итераций: 21 / 3 = 7
То есть:

procedure TForm1.Button1Click(Sender: TObject);
var
 i, z : integer;
 y : real;
begin
  z:=0;
  for i:=1 to 7 do
  begin
    z:=z+3;
    y:=SQRT(z);
    // ... ... ... ... ... // Вывод результатов...
  end;
end;


Подправь, если что не совпадает...

Автор: Forsag 28.06.2003 22:08

или так (так быстрее)

procedure TForm1.Button1Click(Sender: TObject); 
var i: integer;
    y    : real;
begin
  for i:=1 to 7 do
  begin
     y:=SQRT(3*i);
     ... ... ... ... ... // Вывод результатов...
  end;
end;

Автор: mj 30.06.2003 18:08

Цитата
или так (так быстрее)
Код

procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
    y    : real;
begin
  for i:=1 to 7 do
  begin
     y:=SQRT(3*i);
     ... ... ... ... ... // Вывод результатов...
  end;
end;

А вот и не прав ;D
Так медленнее...
Объясняю:
в первом случае в цикле будет к значению в регистре прибавлятся 3 и вычислятся корень,
во втором случае к регистер будет умножатся на регистр,
а как известно сложение выполняется намного быстрее чем умножение ;)

Автор: Женя 1.07.2003 18:26

Спасибо огромное. Вы мне очень помогли!

Автор: CJ 29.07.2003 13:49

Так же как и на Паскале!!!!!!