Составить модель и решить задачу: Фермер может сегодня собрать 120 т картофеля. Цена за 1 кг картофеля сегодня составляет 10 рублей. Если картофель не выкапывать, то каждую неделю урожай будет увеличиваться на 20 т, цена за 1 кг уменьшаться на 1 рубль. Когда надо собрать урожай, чтобы получить максимальную прибыль?
procedure G(n: integer);forward;
Так как в процедуре F есть вызов процедуры G описанной дальше по тексту программы.
После исправления кода и запуска программы с F(12) получим 17 звездочек. По шагам это будет выглядеть так:
Вызов процедуры F и выполнение
* n = 12
* n = 12
Вызов процедуры G и выполнение
* n = 11
* n = 11
Вызов процедуры F и выполнение
* n = 9
* n = 9
Вызов процедуры G и выполнение
* n = 8
* n = 8
Вызов процедуры Fи выполнение
* n = 6
* n = 6
Вызов процедуры G и выполнение
* n = 5
* n = 5
Вызов процедуры F и выполнение
* n = 3
* n = 3
Вызов процедуры G и выполнение
* n = 2
* n = 2
Вызов процедуры F и выполнение
* n = 0
Информация о состоянии каждого пикселя хранится в закодированном виде в памяти компьютера. Код может быть однобитовым, двухбитовым и т. д.
Код пикселя — это информация о цвете пикселя.
Для получения черно-белого изображения (без полутонов) пиксель может находиться в одном из двух состояний: светится — не светится (белый — черный). Тогда для его кодирования достаточно одного бита памяти:
1 — белый,
0 — черный.
Пиксель на цветном дисплее может иметь различную окраску. Поэтому одного бита на пиксель недостаточно.
Для кодирования четырехцветного изображения требуется двухбитовый код, поскольку с двух битов можно выразить 4 различных значения (отобразить 4 различных состояния). Может использоваться, например такой вариант кодирования цветов:
00 — черный, 10 — зеленый,
01 — красный, 11 — коричневый.
Из трех базовых цветов — зеленого, красного, синего — можно получить восемь комбинаций трехбитового кода:
--- черный, к -- красный,
-- с синий, к - с розовый,
- з - зеленый, к з - коричневый,
- з с голубой, к з с белый.
В этом коде каждый базовый цвет обозначается его первой буквой (к — красный, с — синий, з — зеленый). Черточка означает отсутствие цвета.
Следовательно, для кодирования восьмицветного изображения требуются 3 бита памяти на один видеопиксель. Если наличие базового цвета обозначить единицей, а отсутствие — нулем, то получается таблица кодировки восьмицветной палитры (табл. 4.1).
Из сказанного, казалось бы, следует вывод: с трех базовых цветов нельзя получить палитру, содержащую больше восьми цветов. Однако на экранах современных компьютеров получают цветные изображения, составленные из сотен, тысяч и даже миллионов различных красок и оттенков. Как это достигается?
Если иметь возможность управлять интенсивностью (яркостью) свечения базовых цветов, то количество различных вариантов их сочетаний, дающих разные краски и оттенки, увеличивается.
Шестнадцатицветная палитра получается при использовании четырехразрядной кодировки пикселя; к трем битам базовых цветов добавляется один бит интенсивности. Этот бит управляет яркостью всех трех цветов одновременно (интенсивностью трех электронных пучков) (табл. 4.2).
Большее количество цветов получается при раздельном управлении интенсивностью базовых цветов. Причем интенсивность может иметь более двух уровней, если для кодирования интенсивности каждого из базовых цветов выделять больше одного бита.
Из сказанного можно вывести правило:
Количество различных цветов К и количество битов для их кодирования b связаны между собой формулой: К = 2b.
21 = 2, 22= 4, 23 = 8, 24 = 16 и т. д. Для получения цветовой гаммы из 256 цветов требуется 8 битов = 1 байт на каждый пиксель, так как 28 = 256.
Объем видеопамяти
Объем необходимой видеопамяти определяется размером графической сетки дисплея и количеством цветов. Минимальный объем видеопамяти должен быть таким, чтобы в него помещался один кадр (одна страница) изображения. Например, для сетки 640 х 480 и черно-белого изображения минимальный объем видеопамяти должен быть таким:
640 · 480 · 1 бит = 307 200 бит = 38 400 байт.
Это составляет 37,5 Кбайт.
Для четырехцветной гаммы и той же графической сетки видеопамять должна быть в два раза больше — 75 Кбайт; для восьмицветной — 112,5 Кбайт.
На современных высококачественных дисплеях используется палитра более чем из 16 миллионов цветов. Требуемый размер видеопамяти в этом случае — несколько мегабайтов.
Коротко о главном
Информация в видеопамяти — это двоичные коды, обозначающие цвета пикселей на экране.
Для кодирования двух цветов достаточно 1 бита на пиксель; четырех цветов — 2 битов; восьми цветов — 3 битов; шестнадцати цветов — 4 битов и т. д. Количество цветов К и размер кода в битах b связаны формулой: К — 2b.
Из трех базовых цветов можно получить 8 различных цветов, Большее число цветов получается путем управления интенсивностью базовых цветов.
Минимально необходимый объем видеопамяти зависит от размера сетки пикселей и от количества цветов. Обычно в видеопамяти помещается несколько страниц (кадров) изображения одновременно.