uses GraphABC;
var n:integer;
begin
writeln('Введите номер фигуры (1-квадрат, 2-треугольник, 3-круг):');
readln(n);
setwindowsize (640,480);
setpencolor (clBlue);
setpenwidth (4);
case n of
1: begin
setwindowtitle ('квадрат');
rectangle(200,100,400,300);
end;
2: begin
setwindowtitle ('треугольник');
Line(300,50,30,400);
Line(30,400,570,400);
Line(570,400,300,50);
end;
3: begin
setwindowtitle ('круг');
circle(300,200,120);
end;
end;
end.
<u>Итак зацикливание в программировании - это ситуация, когда цикл написан таким образом ,что условия выхода из него не выполняется.</u> Рассмотрим зацикливание в операторах цикла for,while и repeat . Справедливости ради все варианты будут рассмотрены в Turbo Pascal и PascalABC. Также будет добавлен оператор write для вывода результатов.
Зацикливание в for
Вообще идея зацикливания проста : необходимо всего-то в каждом шаге цикла уменьшать оператор шага на 1 (i:=i-1;) . Однако именно такая реализация возможна не везде. Рассмотрим простой пример.
for i:=1 to 5 do begin
i:=i-1;
write(i);
end.
Казалось бы все просто,да не тут то было.В то время как в Turbo Pascal все проходит на ура,в PascalABC такое не возможно и для зацикливания необходимо использовать оператор goto.
label m;
var i:integer;
begin
m:
for i:=1 to 5 do begin
write(i);
if i=2 then goto m;
end;
end.
Зацикливание в while
Напомню,что в операторе while шаг цикла необходимо добавлять самостоятельно. Поэтому произвести зацикливание проще всего : нужно только убрать шаг цикла
var i:integer;
begin
i:=0;
while i<>1 do
write(i);
end.
Оба компилятора адекватно реагируют на пропуск шага.
Зацикливание в repeat
Для создание бесконечного цикла в этом случае, как и предыдущем, достаточно не указывать шаг цикла
var i:integer;
begin
i:=0;
repeat
write(i);
until i=1;
end.
<u>тут вам приведены различные варианты для создание бесконечного цикла. Однако запомните,что зацикливание создает нагрузку и вообще редко используется. Гораздо чаще применяют неполное зацикливание при котором выход из цикла все же совершается.</u>
Const
n = 10;
var
i, c: integer;
a, w: array[1..n] of integer;
begin
randomize;
writeln('Исходный массив:');
for i := 1 to n do
begin
a[i] := random(201) - 100;
write(a[i], ' ');
end;
writeln;
c := 0;
for i := 1 to n do
if a[i] > 0 then
begin
c := c + 1;
w[c] := a[i];
end;
writeln('Кол-во положительных элементов: ', c);
for i := 1 to n do
begin
if a[i] <= 0 then
begin
c := c + 1;
w[c] := a[i];
end;
end;
writeln('Результат:');
for i := 1 to c do
write(w[i], ' ');
end.
1) 0 или 1 - т. е. 1 бит на точку, но реально используются другие механизмы... .
2) 0-16 - 4 бита на точку
3) 256 - 8 бит (1 байт) на точку
4) 1024*768*2 байт ( 2 байта - 0-65536)
5) тупой вопрос, но решение можно найти. Перевести см в дюймы, умножить их на 400, умножить 24 бита и т. д.
6) 1024*768 байт но реально там ещё храниться заголовок и иногда палитра
<span>7) квадратный корень из 500 - примерно 22*22 пиксела</span>
Program calculator;
Var a,b: real;
Begin
Write('Первое число:');
readln (a);
Write('Второе число:');
readln (b);
Write('Результат: ',a+b);
End.