Оператор повторення з лічильником. особливості оператора повторення for. форми оператора повторення … to … i … downto… . таблиця покрокового виконання.
По умлчанию шагом счетчика является 1. Обычно шаг счетчика можно менять фразой by или step by. Хотя увы такое есть не во всех языках
(C#,C++)
for (int i=0;i<10;i=i+2) {
s+=i;
}
(VB, VBA, Basic,..)
for i = 1 to 10 step by 2
s=s+i
next i
Например в паскале возможен только обратный отсчет
for i := 10 downto 1 do
s:=s+1;
еще for примечателен тем, что даже если конец меньше начала (в варианте увеличения счета), то цикл все равно пройдет один раз. Правда не знаю подпадают ли под это правило языки из группы С
Чтобы это узнать нам потребуется разобрать это на примере. допустим у нас есть изображение размером 1024х1024 пикселя. чтобы определить объем занимаемой памяти при наличии на нем 65 536 цветов для начала нужно выяснить сколькими битами кодировать один пиксель. 65 536 = 2^16 => один пиксель кодируется 16 битами. значит объем памяти изображения будет составлять: 1024*1024*16= 16 777 216 бит. теперь вычислим объем памяти при наличии 16 цветов на изображении. 16=2^4 => 1024*1024*4=4 194 304 теперь чтобы определить во сколько раз уменьшился объем памяти изображения мы выполняем следующее действие: 16 777 216 : 4 194 304 = 4 т е объем памяти изображения уменьшился в 4 раза.
1) Один байт = 8 бит, максимальное число 2^8 - 1 = 255, если числа без знака. Для знаковых чисел старший бит отводится под знак числа, следовательно, минимальное число = - 2^7 - 1 = - 127, максимальное число = + 127 2) Число 1607, ячейка двухбайтовая, один бит под знак, следовательно, под число отводится 15 бит, в двоичном представлении 1607(10) = 11001000111(2), дополняем до 16 бит, старший бит - знаковый - нулевой, так как число положительное = 0000011001000111(2) - это двоичное представление в двухбайтовой ячейке, чтобы получить шестнадцатиричное представление, разбиваем число справа - налево по 4 бита 0000 0110 0100 0111 и записываем в шестнадцатиричном виде 0111(2) = 7(16) 0100(2) = 4(16) 0110(2) =6(16) 0000(2) = 0(16) 1607(16) = 0647(16) или без старшего не значащего нуля = 647(16) 3) для получения дополнительного кода числа, находят обратное число, или инверсию числа, для этого каждый бит числа изменяют на противоположный, 1 на 0, 0 на 1 105(10) = 1101001(2) - это и есть дополнительный код числа - 105, т.е. дополнительным кодом числа (- а) будет число а. Найдем дополнительный код в однобайтовой ячейке числа 105(10) = 01101001(2), а) находим обратное 01101001(2) ->(обратное) ->10010110(2) б) дополнительный код-> обратный код + 1 ->(дополнительный)->10010111(2), а это число - 105 потому, что отрицательные числа представляются в дополнительном коде. Если для числа - 105 найти дополнительный код, то получим число 105 10010111(2)->(дополнительный)->01101000+1->01101001 = 69(16) = 16*6+9 = 96+9 = 105
for
примеры
(Pascal)
for i := 1 to 10 do
s:=s+1;
(C#,C++)
for (int i=0;i<10;i++) {
s+=i;
}
(Ruby)
for i in 1..10
s=s+i
end
(VB, VBA, Basic,..)
for i = 1 to 10
s=s+i
next i
По умлчанию шагом счетчика является 1. Обычно шаг счетчика можно менять фразой by или step by. Хотя увы такое есть не во всех языках
(C#,C++)
for (int i=0;i<10;i=i+2) {
s+=i;
}
(VB, VBA, Basic,..)
for i = 1 to 10 step by 2
s=s+i
next i
Например в паскале возможен только обратный отсчет
for i := 10 downto 1 do
s:=s+1;
еще for примечателен тем, что даже если конец меньше начала (в варианте увеличения счета), то цикл все равно пройдет один раз. Правда не знаю подпадают ли под это правило языки из группы С