источник получения информации: книга, интернет, газета и журнал.
1. Циклы нужны для сокращения количества строк кода, экономии памяти компьютера и нервов программиста в случае, когда необходимо повторять подобные действия много раз.
2. а) должны быть четко обозначены границы переменной, отвечающие за вход и выход из цикла б) необходимо определить, каким образом эта переменная будет изменяться по ходу цикла.
3. В цикле while условие ставится в начале, а в repeat в конце. То есть repeat 100% пройдет хотябы 1 раз, а while может и ни разу.
4. В заголовке ставится условие. Пока оно выдает true, цикл будет повторяться. На счёт предпочтительности сложнее. Я бы сказала, что практически всегда предпочтительнее while, тк за всю свою практику лично мне хорошо если раз 5 пришлось использовать repeat. В общем предпочтительнее всегда использовать while за исключением некоторых очень редких случаев, когда с его помощью невозможно решить поставленную задачу (т.е. необходимо хотябы одно повторение).
Хотя если сравнивать с циклом for, то for чаще всего используется при наращивании управляющей переменной численного типа. То есть while часто используется, когда управляющая переменная булева типа.
5. Описывается прямо в теле цикла.
6. Тут мне сложно ответить. Я так понимаю, у вас речь про Pascal, а я могу только в C++ и Java. В этом вопросе вроде есть различия.
// Дан массив целых чисел. Все нечетные элементы удвоить, а четные уменьшить вдвое.
var a: array [1..10] of real; // возьмем массив из 10 чисел
i,x :byte;
begin
randomize;
for i:=1 to 10 do //заполняем исходный массив случайными числами (до 1000)
begin
a[i]:=random(1000);
writeln (i,' элемент исходного массива ',a[i]);
end;
writeln ();
for i:=1 to 10 do
begin
x:=i mod 2; //определяем четный или нет элемент массива
if x=0 then //если элемент четный
begin
a[i]:=a[i]/2;
writeln (i,' элемент массива - четный ',a[i]);
end
else //если элемент нечетный
begin
a[i]:=a[i]*2;
writeln (i,' элемент массива - нечетный ',a[i]);
end;
end;
<span>end.</span>
Program zadanie1 (input, output);
var a, b:integer;
s:real;
begin
a:=1;
s:=0;
b:=0;
while a <> 0 do
begin
read (a);
s:=s+a;
b:=b+1;
end;
s:=s/(b-1);
writeln (s);
end.
-------------------------------------------------------------
program zadanie2 (input, output);
var a, p, b, c, n, s:integer;
begin
a:=1;
b:=0;
c:=0;
s:=0;
read (n);
repeat
c:=a+b;
b:=a;
a:=c;
s:=s+c;
if s < n then
p:=s;
until s > n;
writeln (p);
end.
--------------------------------------------------
program zadanie3 (input, output);
var n, I:integer;
a, b:real;
begin
read (n);
a:=0;
for I:=0 to n do
begin
a:=exp(I*ln(2));
if a < n then
b:=a;
end;
writeln (b);
end.
V = 1280*1024*32 = 41943040 бит = 5242880 байт = 5120 Кб