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

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

Форум «Всё о Паскале» _ Теоретические вопросы _ Голова отказываетса понимать алгоритм for? помогите пожалуйсто

Автор: Katucha 8.12.2010 23:50

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

Автор: Client 9.12.2010 0:20

что не понятно?
это цикл, который проходит от начального значения до конечного с шагом +1 или -1

Автор: Katucha 9.12.2010 0:23

Цитата(Client @ 8.12.2010 20:20) *

что не понятно?
это цикл, который проходит от начального значения до конечного с шагом +1 или -1

Да это и не понятно, я его напрочь не понимаю, при каких случаях он используетса

Автор: Client 9.12.2010 0:35

полагаю, что книги все таки читала?
цикл for... используется, если заранее известно количество итераций. Например, надо посчитать сумму от 1 до 10

for i := 1 to 10 do S := S + i;
. Здесь каждый раз проверяется условие, если i меньше чем конечное значение то тело цикла выполнится. можно сделать это и через while/repeat...

Автор: Katucha 9.12.2010 0:49

Цитата(Client @ 8.12.2010 20:35) *

полагаю, что книги все таки читала?
цикл for... используется, если заранее известно количество итераций. Например, надо посчитать сумму от 1 до 10
for i := 1 to 10 do S := S + i;
. Здесь каждый раз проверяется условие, если i меньше чем конечное значение то тело цикла выполнится. можно сделать это и через while/repeat...

книжки только нетовские, посчитать суму от одного до 10 как понимать?

Автор: Freedom 9.12.2010 0:55

Цитата(Katucha @ 8.12.2010 20:49) *

книжки только нетовские, посчитать суму от одного до 10 как понимать?

1+2+3+4+5+6+7+8+9+10

Автор: Katucha 9.12.2010 0:56

Цитата(Freedom @ 8.12.2010 20:55) *

1+2+3+4+5+6+7+8+9+10

Так уже лутше хоть что-то понимаю, огромное спасибо! rolleyes.gif

Автор: Freedom 9.12.2010 1:05

Цитата(Katucha @ 8.12.2010 20:56) *

Так уже лутше хоть что-то понимаю, огромное спасибо! rolleyes.gif

http://ru.wikipedia.org/wiki/%D0%A6%D0%B8%D0%BA%D0%BB_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)
может это как нибудь поможет. А лучший способ это запустить паскаль и пытаться узнать что же делает этот цикл.

Автор: Katucha 9.12.2010 1:09

Цитата(Freedom @ 8.12.2010 21:05) *

http://ru.wikipedia.org/wiki/%D0%A6%D0%B8%D0%BA%D0%BB_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)
может это как нибудь поможет. А лучший способ это запустить паскаль и пытаться узнать что же делает этот цикл.

методом научного тыка?Мне обьясняли, я что-то вроде как начала понимать, но потом запуталась, и поэтому не стала рисковать так делать что бы себя ещо больше не загрузить.

Автор: Freedom 9.12.2010 1:18

Цитата(Katucha @ 8.12.2010 21:09) *

методом научного тыка?Мне обьясняли, я что-то вроде как начала понимать, но потом запуталась, и поэтому не стала рисковать так делать что бы себя ещо больше не загрузить.

вот допустим вам нужно вывести на экран надпись 'Привет'.
так вот чтотбы не писать
writeln('Привет');
writeln('Привет');
......
writeln('Привет');
writeln('Привет');

Это можно сделать намного проще, тоесть цикл повторяет одно и то же действие.
For i:=1 to 10 do writeln('Привет');

Или тот же пример с суммой чисел от 1 до 10
1)a:=1+2+3+4+5+6+7+8+9+10;
переменной i во время цикла присваивается значение с начала 1, потом 2, потом 3 и т.д
2)For i:=1 to 10 do summa:=summa+i;
в первом примере для того чтобы считало сумму чисел от 1 до 10 нужно к переменной a прибавлять 11+12..,
а в цикле достаточно заменить 10 на 20

Автор: Katucha 9.12.2010 2:34

Цитата(Freedom @ 8.12.2010 21:18) *

вот допустим вам нужно вывести на экран надпись 'Привет'.
так вот чтотбы не писать
writeln('Привет');
writeln('Привет');
......
writeln('Привет');
writeln('Привет');

Это можно сделать намного проще, тоесть цикл повторяет одно и то же действие.
For i:=1 to 10 do writeln('Привет');

Или тот же пример с суммой чисел от 1 до 10
1)a:=1+2+3+4+5+6+7+8+9+10;
переменной i во время цикла присваивается значение с начала 1, потом 2, потом 3 и т.д
2)For i:=1 to 10 do summa:=summa+i;
в первом примере для того чтобы считало сумму чисел от 1 до 10 нужно к переменной a прибавлять 11+12..,
а в цикле достаточно заменить 10 на 20

окей, а если у нас допустим i:=2; то это будет
2+2=4;
4+2=6;
6+2=8 и тд и тп, да? или я тормоз?

Автор: TarasBer 9.12.2010 14:28

А если написать For i:=2 to 10 do summa:=summa+i;

это будет
2+3+4+5+6+7+8+9+10

то есть воспринимай заголовок цикла так:

(for i := ) (2 to 10) do что-то там

Первая часть (for i :=) просто говорит, как будет называться счётчик цикла, вторая (2 to 10) говорит, в каких пределах будет этот счётчик изменяться.

А такое, чтобы вычислить 2+4+6..., уже делается по-другому:
for i := 1 to 5 do summa := summa + i*2;

Автор: Katucha 9.12.2010 17:26

Цитата(TarasBer @ 9.12.2010 11:28) *

А если написать For i:=2 to 10 do summa:=summa+i;

это будет
2+3+4+5+6+7+8+9+10

то есть воспринимай заголовок цикла так:

(for i := ) (2 to 10) do что-то там

Первая часть (for i :=) просто говорит, как будет называться счётчик цикла, вторая (2 to 10) говорит, в каких пределах будет этот счётчик изменяться.

А такое, чтобы вычислить 2+4+6..., уже делается по-другому:
for i := 1 to 5 do summa := summa + i*2;

Мм.. спасибо, я уже поняла мне обьяснили, огромное спсибо