Смекни!
smekni.com

Готовимся к экзамену по информатике (стр. 8 из 24)

"Информатика" № 16, 2002, с. 13—22.


БИЛЕТ № 16

1. Алгоритмическая структура "цикл". Циклы со счетчиком и циклы по условию.

2. Двоичное кодирование графической информации. Растр. Пиксель. Глубина цвета.

3. Задача на определение количества информации и преобразование единиц измерения количества информации.

1. Алгоритмическая структура "цикл". Циклы со счетчиком и циклы по условию

Базовые понятия

Цикл — последовательность команд (серия, тело цикла), которая может исполняться многократно для разных значений, данных до удовлетворения некоторого условия.

Циклы с неопределенным количеством повторений (по условию) и с параметром (счетчиком).

Обязательно изложить

Цикл является одним из трех базовых алгоритми­ческих элементов, на основе которых, согласно теории, можно построить любой алгоритм. Значение цикла в практическом программировании необычайно велико — как правило, программа пишется лишь тогда, когда те или иные действия требуется совершить многократно для различных значений данных. (В самом деле, если необходимо провести однократное вычисление по формуле разумной сложности, это быстрее и проще сделать на калькуляторе.)

Циклы бывают двух принципиально различных типов: с предопределенным и с заранее неизвестным числом повторений. В первом случае из условия задачи известно, сколько раз цикл будет выполнен: например, найти сумму первых десяти членов числового ряда. Во втором — количество повторений будет зависеть от результатов вычислений и поэтому определится только в ходе работы программы: примером может служить нахождение суммы ряда с заданной точностью, когда вычисления прекращаются, если очередное слагаемое не превышает требуемой погрешности. Внимательно сравните два приведенных выше примера, и вы, несомненно, почувствуете разницу.

Для полноты классификации следует добавить, что цикл с условием, в свою очередь, тоже может реализовываться двумя способами. В первом варианте в начале цикла поверяется условие, а затем, если оно истинно, выполняются операторы цикла и происходит возврат на новую проверку; поскольку здесь условие предше­ствует содержимому цикла, то в литературе его при­нято называть циклом с предусловием. Во втором варианте, напротив, сначала цикл выполняется, а затем проверяется условие его завершения: в случае ложности цикл повторяется (иначе заканчивается); такой цикл, когда условие ставится после операторов содержимого, называют "с постусловием". Чаше всего только одна из названных разновидностей цикла наилучшим образом подходит к конкретной задаче. Например, если вы собираетесь удалить пробелы, стоящие в начале строки, то, скорее всего, выберете цикл с предусловием, потому что надо сначала убедиться, что пробел имеется, и только затем его удалять (глупо поступать наоборот — сначала удалять, а потом проверять, стоило ли это делать, хотя в практической жизни такая, с позволения сказать, логика порой встречается...). Зато ввод текста до точки трудно построить иначе как с постусловием, поскольку сначала требуется ввести очередной символ и только потом сравнивать его с точкой.

Часто одни и те же действия требуется выполнить для различных значений параметра: типичная ситуация — подставить числа от 1 до 10 в какую-нибудь формулу. Для решения такого типа задач лучше всего подойдет цикл с параметром, который возьмет на себя автоматическое изменение переменной цикла и ее сравнение с окончательным значением.

Завершая ответ, необходимо продемонстрировать все перечисленные виды циклов на том языке, который использовался на уроках (блок-схема, алгоритм для исполнителя, язык программирования). По понятным причинам мы не можем здесь предугадать все воз­можности.

Желательно изложить

Циклы с неопределенным количеством повторений, как правило, не имеют каких-то существенных особенностей реализации в различных языках. А вот цикл с параметром (FOR), напротив, часто обладает теми или иными специфическими свойствами. Например, в языке Бейсик, где параметром цикла может быть только числовая переменная (но зато любого типа), разрешается цикл от 0 до 1 с дробным шагом изменения 0.1. В Паскале параметр цикла не обязательно числовой, но зато он должен являться порядковым (иметь конечный упорядоченный набор допустимых значений). Таким образом, можно строить циклы по целым, символьным (CHAR), логическим, заданным перечнем своих значений и некоторым другим типам переменных, но зато запрещено использование веще­ственных значений1. Фактически в Паскале при каждом новом исполнении цикла берется или следующее, или предыдущее в используемом типе значение. В языке Си цикл FOR еще более интересный. Его заголовок фактически содержит три части: действия по инициализации, действия по проверке окончания цикла и, хотя бы потому, что для вещественных чисел не определено понятие "следующий": в самом деле, какое значение следует после 1.1 - 1.2, 1.11 или 1.101? наконец, действия после каждой итерации. Характерной особенностью является возможность иметь в каждой части произвольное количество операторов, включая вариант их отсутствия. Например,

for (i = 0, j = n - 1; i < n; i++, j —) a[i] = a[j];

Настолько общий подход позволяет вообще написать цикл без содержимого: например, сам оператор организации цикла

for (s=0, i = 1; i < 11; s=s+i, i=i+l) уже вычисляет сумму первых 10 натуральных чисел.

Примечание. Ярые приверженцы Си последние два оператора никогда не напишут иначе, чем s += i, i++, давая возможность компилятору составить чуть более эффективную программу. Но мне хотелось сделать текст более удобочитаемым для тех, чье мышление не связано с конкретными комбинациями значков.

Разумеется, рассказанный в предыдущем абзаце материал не предназначен для включения в ответ це­ликом. Просто подчеркнуто, что ученику желательно раскрыть особенности цикла FOR в том языке, кото­рый он изучал (а приведенные примеры просто указывают те места, где эти особенности надо искать).

И в заключение еще одно важное с практической точки зрения замечание. При некорректной организации некоторых циклов может возникнуть эффект так называе­мого "зацикливания", когда действия внутри цикла не могут создать условия, требующиеся для его завершения. Следует всячески избегать подобных ситуаций путем тщательного анализа условий работы цикла.

Примечание для учителей

В литературе обычно используется термин "цикл с параметром", а не "цикл со счетчиком".

Примечание для учеников

Как обычно, при подготовке вопроса необходимо продумать и подобрать на изученном языке примеры циклических алгоритмов. Вне зависимости от языка при ответе желательно использовать блок-схемы.


2. Двоичное кодирование графической информации. Растр. Пиксель. Глубина цвета

Базовые понятия

Растр — специальным образом организованная со­вокупность точек, на которой представляется изображение.

Пиксель — логический элемент изображения.

Обязательно изложить

Людям издавна хотелось зафиксировать окружающие их предметы и события в виде наглядных графических изображений. Свидетельством этому являются рисунки со сценами охоты на стенах пещер, планы местности и многое другое. Важными техническими шагами в данном направлении явились изобретение практической деятельности (ссылка есть выше) необходимо проследить все этапы решения содержательной задачи — с исследования моделируемой предметной области и постановки задачи до интерпретации результатов, полученных в ходе вычислительного эксперимента. Для освоения полной технологической це­почки при решении конкретных задач следует выде­лять и подчеркивать соответствующие этапы работы.

Ссылка на материалы вопроса

"Информатика" № 14, 2003, с. 3 — 8.

2. Двоичное кодирование звуковой информации. Глубина кодирования и частота дискретизации

Базовые понятия

Дискретная и непрерывная форма представления информации. Аналого-цифровой и цифро-аналоговый преобразователи.

Дискретизация звукового сигнала по времени и амплитуде.

Теорема Найквиста для выбора частоты дискретизации звука.

Обязательно изложить

Звуковые сигналы в окружающем нас мире необычайно разнообразны. Для их записи с целью последующего воспроизведения необходимо как можно точней сохранить форму кривой зависимости интенсивности звука от времени. При этом возникает одна очень важная и принципиальная трудность: звуковой сигнал непрерывен, а компьютер способен сохранить в памяти пусть очень большое, но конечное число дискретных величин. Следовательно, в процессе записи звуковая информация должна быть "оцифрована", т.е. из аналоговой непрерывной формы переведена в цифровую дискретную. Данную функцию выполняет спе­циальный блок, входящий в состав звуковой карты, который называется аналого-цифровой преобразователь — АЦП.

Каковы основные принципы работы АЦП?

Во-первых, он производит дискретизацию записываемого звукового сигнала по времени. Это означает, что измерение уровня интенсивности звука ведется не непрерывно, а, напротив, в определенные фиксированные моменты времени (удобнее, разумеется, через равные временные промежутки). Частоту, характеризующую периодичность измерения звукового сигнала, принято называть частотой дискретизации. Вопрос о ее выборе далеко не праздный, и ответ в значительной степени зависит от спектра сохраняемого сигнала: существует специальная теорема Найквиста, соглас­но которой частота "оцифровки" звука должна как минимум в 2 раза превышать максимальную частоту, входящую в состав спектра сигнала.

Во-вторых, АЦП производит дискретизацию амплитуды звукового сигнала. При измерении имеется "сетка" стандартных уровней (например, 256 или 65 536 — это количество характеризует глубину кодирования), и текущий уровень измеряемого сигнала ок­ругляется до ближайшего из них.