Угринович Н. Информатика
и ИКТ. Профильный уровень: учебник для 11 класса.
М.: Бином. Лаборатория знаний, 2008.
Резюме
|
Учебник предназначен для профильного
обучения, но при чтении кажется, что он чуть-чуть превышает
базовый уровень.
В отличие от других учебников этого же автора, я не могу
назвать главу, которая неплохо написана.
Отдельно стоит упомянуть, что подготовиться к
ЕГЭ по этому учебнику нереально.
Каждый учебник должен иметь некий «флаг» — идею, которая
отличает его от других. В этом учебнике флагом является
визуальное программирование (среды RAD).
В результате «популистского» использования этой идеи
самая важная часть курса — программирование —
оказалась сведена в основном к расстановке компонентов на формах.
Автор в деталях описывает, как разместить на форме
четыре текстовых поля, двенадцать меток, две кнопки и т.п.
Такие вот подробнейшие инструкции и полные листинги всех
программ занимают чуть ли не половину учебника, поскольку повторяются
на языках Visual Basic, Delphi и иногда для Excel.
Поэтому учебник больше напоминает книжку из серии «Введение в
визуальное программирование для чайников».
Полные пошаговые решения всех
задач могут выработать только «обезьяний рефлекс» —
тупое повторение, ожидание готовых инструкций. Автор не дает учащимся
столкнуться с проблемами, активно подумать самим, и найти решение,
используя материал учебника.
Традиционно безграмотно написан раздел про оптимизацию.
Если только в книге встречается выражение «наиболее оптимальный»,
ее нужно откладывать в сторону и искать другую. Дальнейшее чтение
подтверждает худшие опасения — решения рассмотренных задач просто подогнаны
под известный ответ.
К серьезному материалу профильного уровня
можно было бы отнести раздел 1.10 про графы. Но душа, только развернувшись,
сразу же опять свернулась. Сначала на 5 страницах приводится
куча определений из теории графов. Затем формулируется
алгоритм Краскала,
а потом... Потом читателя заставляют вручную применять этот
алгоритм для случайного графа и вводить ответ в программу, чтобы она
только нарисовала найденное человеком минимальное остовное дерево.
No comments.
Глава 2 (технология создания и обработки текстовой информации)
вообще написана непонятно зачем. Сначала на 16 страницах автор дает
обзор возможностей текстовых процессоров и издательских систем.
В конце главы добавлен небольшой параграф про цветоделение (единственное,
что здесь имеет смысл почитать).
Глава 3 (про базы данных) тоже довольно бледная. Есть немало
ляпов, рассмотрение очень поверхностное. Например, нет даже упоминания об индексах,
нормализации, клиент-серверных базах данных. Профильный курс — это тонкости,
нюансы, глубокое понимание. Но для того, чтобы излагать материал на таком уровне,
автор учебника должен знать на порядок больше.
В целом, учитывая повторения одних и тех же проектов на
разных языках, «информационный объем» учебника явно недостаточен для
профильного курса, предусматривающего 4 часа информатики в неделю.
Учебник для 11 класса завершает серию учебников для
7-11 классов. К большому сожалению, на основе этой серии очень сложно
выстроить стройную и логичную программу непрерывного обучения. Кажется, что
это отдельные книги, мало связанные между собой.
Учебник, о котором идет речь —
это наиболее известный и популярный учебник информатики для профильного уровня.
Поэтому напрашивается вывод: «ученые-педагоги»
и методисты, по крайней мере, в данный момент, не могут написать грамотный учебник
по профильному курсу информатики.
Тогда возникает вопрос: а кто же напишет такой учебник?
Мне кажется, что такие люди есть в России, но
они не хотят пробивать систему, где «все схвачено», и
расходуют свое время и силы более продуктивно.
Все специалисты знакомы с пособием A. Шеня
«Программирование: теоремы и задачи».
Широко известны книги С.М. Окулова
«Основы программирования» и
«Программирование в алгоритмах».
Могу отметить еще блестящий курс В.М. Бондарева, В.И. Рублинецкого и Е.Г. Качко
«Основы программирования».
Эти книги действительно написаны мастерски, и могли бы стать основой настоящего
профильного курса. Но... мы пока получили
«хупертекст».
|
Обычно макрообъекты разделяют на неживые,
живые и искусственные. (с. 9)
Обычно как раз используют дихотомию «живое — неживое».
Каждый объект состоит из других объектов,
т. е. представляет собой систему. (с. 10)
Логически отсюда сразу выводим, что система — это объект,
состоящий из других объектов. Но это неправильно, и сам автор через 2 абзаца
указывает, что в системе объекты взаимосвязаны. Кстати, четкого определения
понятия «система» нет. Весь параграф написан очень сумбурно,
мысль теряется.
1.1. Основные этапы разработки и исследования моделей
на компьютере. (с. 13-14)
По традиции в списке этапов нет тестирования —
проверки модели на простых исходных данных с известным результатом. Кроме того,
сразу за построением компьютерной модели перечислены такие этапы:
- компьютерный эксперимент;
- анализ полученных результатов и корректировка исследуемой модели;
- визуализация формальных моделей.
Каким боком сюда попала визуализация — неизвестно.
В процессе тренировок теннисисты используют
автоматы по бросанию мячика. ... мячик мал по сравнению с Землей, поэтому его можно
считать материальной точкой. (с. 15)
При чём тут Земля? Сравнивать размер мячика нужно с расстоянием
до стенки и ее высотой.
Из первой формулы выражаем время...
t = s/v0·cos α (с. 16)
Любому человеку, знакомому с программированием, хочется
поставить скобки: t = s/(v0·cos α), потому что имеется в виду
именно такой порядок действий. Или записать это в виде двухэтажной дроби.
Те же грабли чуть дальше, в формуле (1.2), где рассчитывается расстояние.
Вспомним, кстати, что на ЕГЭ-2009 были как раз такие «приколы»
— ловили на порядке выполнения цепочки «деление-умножение» без скобок.
Обработчик события — вычисление результатов
бросания мячика. (с. 17)
Чтобы понять, что тут написано, пришлось прочитать
эту фразу несколько раз и внимательно изучить контекст. Оказывается,
создается обработчик события нажатия на кнопку. И в этом обработчике
происходят вычисления.
Программа, вычисляющая координаты шарика
в полете (с. 20)
For T=0 To 10 Step 0.1
...
Next T
T — это время. Откуда заранее известно, что
полет закончится за 10 секунд? Почему не сделать цикл «пока высота не станет
меньше или равна нулю»?
Щелкнуть по кнопкам
Вычислить и Показать. (с. 20)
Одна кнопка служит для того, чтобы вычислять
результаты, а вторая — для того, чтобы рисовать график.
Почему не сделать и то, и другое одним щелчком — непонятно.
Но вполне соответствует популярному подходу к проектированию
интерфейсов — программисту удобно, а пользователь пусть
мучается.
Получим важный результат: оказывается
существуют два диапазона углов... которые обеспечивают попадание мячика в стенку
... (с. 23)
Видимо, только Чингачгук не наступает
два раза на одни и те же грабли. Эти грабли — из прошлой версии учебника,
поэтому не буду повторяться (см. здесь).
Объявить переменные и константы для всего проекта: (с. 24)
var
V0: real;
...
const
G = 9.81;
Pi = 3.14;
Во-первых, константы принято объявлять до
переменных. Во-вторых, в Delphi есть встроенная функция Pi,
которая возвращает нужное значение,
и объявлять её не нужно. В-третьих, вот что пишут программисты Borland
по поводу типа Real:
The Real type is provided for backwards compatibility with earlier versions of Delphi and
Borland Pascal. Since the storage format of the Real type is not native to the
Intel CPU family, operations on Real type values are slower than the other floating-point types.
В переводе на русский — используйте single или
double.
Программа на Delphi, вычисляющая координаты шарика
в полете (с. 27)
while T < 5 do begin
...
end;
T — это время. В программе на Delphi
шарику отпущено времени в два раза меньше, чем в программе
на Visual Basic. Логики в обоих случаях не видно.
Исходные данные заданы с точностью две
значащие цифры, поэтому целесообразно результат округлить до трех значащих цифр.
(с. 28)
Странно, что когда эта же задача решалась на Visual Basic,
в той же ситуации округление выполнялось до двух значащих цифр.
Ввести в ячейку C5 формулу (с. 31):
=$B$1*SIN(РАДИАНЫ($B$2))*A5-4,9*A5*A5
Не завидую я тому, кто будет разбираться в этой
формуле. Ведь имелось в виду вот это:
=$B$1*SIN(РАДИАНЫ($B$2))*A5-9,81*A5*A5/2
В данном случае сокращение делает формулу совершенно неузнаваемой и
трудно читаемой.
Ввести в ячейку B21 — расстояние до стенки;
в ячейку B22 — значение начальной скорости, в ячейку B23 — ...;
в ячейку B24 — ... (с. 32)
Это 11-й класс? Я ничего не путаю?
(с. 35)
Обычно «вправо» означает «вперед». Автор как бы говорит нам:
«идите вперед, и вы придете к алгебре 9 класса».
[Решение уравнения графическим методом] (с. 37)
For X=-1.5 to 1.5 Step 0.01
...
Next X
Откуда, собственно, известно, что решение находится на
интервале [-1,5;1,5]? По условию интервал не задан вообще. В программе на Delphi
(через несколько страниц) уже фигурирует интервал [-3;3].
Ввести событийную процедуру...
графического решения уравнения. (с. 41)
Смысл почти не улавливается, даже для тех, кто
представляет, о чем может идти речь.
По графику грубо приближенно можно определить, что
x≈0,8. (с. 43)
Как-то режет слух это «грубо приближенно».
Здесь и далее.
Ввести программный код, позволяющий вычислить
корень уравнения методом половинного деления... (с. 43):
If (A*A*A-Cos(A))*(C*C*C-Cos(C)) < 0
Then B := C
Else A := C;
Достаточно сложно понять, что это справедливо только
для случая, когда решается уравнение x3-cos(x)=0.
Значительно лучше было определить функцию отдельным блоком и
записать условный оператор так:
If F(A)*F(C) < 0 ...
числовой метод (с. 43)
В математике общепринят термин «численный метод».
С помощью метода Подбор параметра [в Excel]
можно приближенно с заданной точностью решать уравнения. ...
Точность подбора зависит от заданной точности представления чисел в ячейках таблицы
(например, до трех знаков после запятой). (с. 44-45)
Мне не удалось определить, как задать точность решения уравнения
через Подбор параметра. Во всяком случае, точность представления чисел
в ячейке тут явно не при чем.
Вопросы для размышления: 1. От чего зависит точность
вычислений в электронных таблицах? (с. 46)
См. предыдущий комментарий.
Построим качественную вероятностную модель
данного метода [метода Монте-Карло]: поместим геометрическую фигуру полностью внутрь квадрата; ...
(с. 47)
Можно было бы добавить, что таким контейнером может быть
любая фигура, для которой легко подсчитать площадь. Самое главное:
на 7 страницах не нашлось места, чтобы сказать два слова о
равномерности распределения случайных чисел. Иначе все формулы неверны
и метод просто не работает.
[Delphi:] Установить размер графического поля: с помощью
окна Object Inspector присвоить свойству Size значение 200;200.
(с. 51)
Нет у TImage свойства
Size. Есть Width и Height.
Проект «Численность популяций» (с. 60):
Вы можете представить себе такой интерфейс в
приличной программе? Я тоже нет. Значит, эта программа неприличная.
И практически все интерфейсы в учебнике спроектированы на таком же уровне.
Вопросы для размышления: 1. Почему численность
популяция в модели ограниченного роста и ограниченного роста с отловом при некоторых
значениях параметров фактически совпадают?
(с. 61)
Для ответа на этот вопрос нужно проанализировать
нелинейные разностные уравнения и найти установившиеся значения в
том и другом случае. Простые расчеты показывают, что эти установившиеся
значения не могут быть равны, если отлов не равен нулю.
Для простоты примем начальные количества хищников и жертв
за единицу. (с. 65)
Сразу возникает вопрос: а как они будут размножаться?
Забавно также посмотреть на рис. 1.26 (с. 67), где на каком-то этапе
в популяции присутствует 0,9 хищника. О том, что хотел сказать автор,
можно догадаться, но объяснить эту мысль не получилось.
... поиск наиболее оптимального пути развития системы.
(с. 68)
Классика, увы. Не бывает «наиболее оптимальных» путей.
Или оптимальный, или нет.
Если целевая функция нелинейная, то она имеет
экстремумы, которые находятся определенными методами. (с. 69)
Во-первых, не всякая нелинейная функция имеет экстремум.
Во-вторых, что это за «определенные методы»?
Задача «Оптимизация раскроя».
[Заготовки можно раскраивать тремя способами, при которых получаются
разное количество деталей А и Б. ] Нужно найти оптимальное сочетание
способов раскроя, чтобы получить 500 заготовок типа А и 300 заготовок типа Б
при наименьшем расходе материала. Должны выполняться равенства (с. 70):
10·X1 + 3·X2 + 8·X3 = 500
3·X1 + 6·X2 + 4·X3 = 300
С какой стати получатся точные равенства? Нужно менять
«равно» на «больше или равно».
[Перебор вариантов](с. 73):
For X1:=1 To 100 Do
For X2:=1 To 100 Do
For X3:=1 To 100 Do
if (10*X1+3*X2+8*X3=500) And (3*X1+6*X2+4*X3=300)
then <вывести результат>
Что фактически ищет эта программа? Она выводит все
способы раскроя, при который получается ровно 500 заготовок типа А и 300 заготовок типа Б.
Откуда следует, что выбирается оптимальный вариант? Заметим, что попытка
изменить исходные данные приводит к фиаско (попробуйте, например, заменить 500 на 200).
Вопросы для размышления: 1. Почему процесс оптимизации
требует перебора всех вариантов значений параметров? (с. 72)
Речь идет о задаче целочисленного линейного
программирования. Интересно, что нужно ответить?
Процедура поиска решения позволяет найти
оптимальное значение формулы...(с. 74)
Что такое «оптимальное значение формулы»?
[Вот какие данные нам предлагают ввести
в окно Поиск решения в Excel для решения той же задачи
оптимального раскроя] (с. 77):
Четко видно, что здесь автор не ищет минимум общего
количества листов, а просто подгоняет под ответ (на Visual Basic
он уже подсчитал, что требуется всего 70 листов).
Если же заставить Excel найти минимум, получаем
такой приятный ответ: X1=0, X2=11,11 и
X3=58,33. Всего 69,44 листа. Ведь нигде не сказано, что
количество листов — целое число.
Кроме того, вместо равенства нужно ставить неравенства
(>=500, >=300), иначе опять бред получим при изменении исходных
данных.
Проект «Распознавание волокон» (с. 82):
Зачем здесь нумерация?
Для того, чтобы сбросить информацию
и подготовиться к приему новой информации, подается сигнал 1 на вход
R (сброс), после чего триггер возвратится к исходному
«нулевому» состоянию. (с. 88)
В самом деле, подача сигнала 1 на вход R
триггера приводит к записи нуля в эту ячейку памяти. Это и называют
«сбросом». Что такое «исходное» состояние триггера
— непонятно.
Проект «Триггер» на Turbo Delphi (с. 95)
Только люди с развитым воображением могут догадаться, что
это триггер. Неясно, что будет, если щелкнуть по кнопке Set/Reset.
Неясно, почему смешаны два типа обозначений («1/0» и
«True/False»). Неясно, почему метки выглядят точно так же, как
и поля для ввода данных. Неясно, почему бы не сделать автоматический пересчет
в ответ на событие OnChange.
Например, значение функции
=И(10>5;10<5) — ложь. (с. 96)
Если мы ставим знак =, то это уже не
функция, а формула. Автор постоянно эти понятия путает. На с. 97 есть
даже такой пассаж: ввести формулу логической функции И.
Попутно отметим, что таблица истинности,
заполненная словами ИСТИНА и ЛОЖЬ, очень плохо воспринимается. Лучше
перейти на обозначения «1/0».
Автоматическая корректировка координаты X
[требуется обеспечить равенство X1=X2] (с. 105):
Select Case X2-X1
...
Case Is =0
X1=X1
End Select
В общем, учим грамотно программировать.
Автоматическая корректировка координаты X
[требуется обеспечить равенство X1=X2] (с. 111):
If X2-X1>0 Then X1:=X1+1 Else X1:=X1-1;
То есть, если X1=X2 (x-координаты совпали), мы
все равно уменьшаем X1. В результате траектория «дергается»,
что видно на рисунке. Но это никого не волнует. С y-координатой аналогично.
Матрицы смежности
ориентированного и неориентированного графов (с. 124)
По определению, матрица смежности состоит только
из нулей и единиц. То, что мы видим на рисунке слева — это весовая матрица взвешенного
графа.
А справа — вообще неизвестно что. Для неориентированного графа и матрица смежности, и весовая
матрица симметричны относительно главной диагонали. Здесь выше главной диагонали
мы видим верхнюю часть весовой матрицы, а внизу — нули.
Проект «Построение остовного связного дерева графа».
[Граф строится случайным образом, затем с клавиатуры вручную вводятся
ребра, составляющие минимальное остовное дерево.] (с. 120-137)
Надежды на то, что будет показана реализация
алгоритма Краскала, рухнули. Смысл этого проекта совершенно непонятен,
потому что решать переборную задачу вручную, вводя результат в компьютер
только для отображения — это дикость. На это убито 18 страниц учебника.
Пора слезать с деревьев.
Целочисленный двухмерный массив R[I]... (с. 130)
В самом деле там массив R[5][5].
Технологии создания и обработки текстовой информации (с. 138-153)
На 16 страницах дан обзор возможностей текстовых редакторов,
процессоров и издательских систем. Фразы типа «такие редакторы имеют широкий спектр
возможностей по созданию документов», «в процессе создания документа в нем создаются
заголовки» и т.п. как-то уместны при изложении вводного курса для начинающих, а не
для профильного уровня. А кроме этих фраз, по сути, ничего и нет.
Color = R + G + B,
где 0≤R≤255, 0≤G≤255, 0≤B≤255. (с. 160)
Поскольку для чисел знак «+» означает
сложение, для белого цвета мы по этой формуле имеем
Color=255+255+255=765.
[Установка конвертера в формат PDF
для MS Office 2007] В операционной системе Windows XP/Vista
перейти по ссылке на страницу Надстройка Microsoft для сохранения
в формате PDF или XPS...
(с. 142, сообщил В.Я. Лаздин)
Читается и воспринимается как полный бред. Но разгадка
проста: эта фраза содрана с сайта Microsoft,
но там фраза, выделенная курсивом — это действительно ссылка на нужную
страницу. Плохо передирать, не думая...
Система оптического распознавания точно распознает
и максимально полно сохраняет исходное оформление любого документа. (с. 171)
«Блажен, кто верует, тепло ему на свете!»
(© А.С. Грибоедов).
[Сканирование документа.] ... с помощью ползунков Разрешение, Scan speed,
Brightness и Contrast установить подходящие для
данного изображения текста значения. С помощью раскрывающегося
списка Scan mode выбрать нужный тип сканирования.
(с. 175)
Какие значения подходящие?
Какой тип сканирования — нужный? Напоминает справку от
Microsoft — слов много, но ничего непонятно.
База данных представляет собой
определенным образом организованную совокупность данных некоторой предметной области,
хранящуюся в компьютере и постоянно используемую. (с. 176)
Значит, если эта «совокупность» используется
не постоянно, это уже не база данных?
Каждая таблица должна
содержать, по крайне мере, одно ключевое поле. (с. 177)
А что, СУБД разрешают сделать два различных ключа в таблице?
И это действительно имеет смысл?
В Access, например, если отметить несколько полей как ключ,
создается один первичный ключ, представляющий собой комбинацию этих полей.
Поля могут содержать данные следующих
основных типов: счетчик, текстовый, числовой, дата/время, денежный, логический,
гиперссылка. (с. 177)
Как тогда хранятся в базах данных рисунки,
звук, видео? (Ответ: BLOB-поля).
Заполнить базу данных о процессорах (с. 182):
Во-первых, в поле Год выпуска почему-то пишем дату,
или это одно и то же? Во-вторых, если подумать, вместо наличия нескольких ядер
было бы правильно хранить количество ядер, а логическое поле
продемонстрировать на каком-то другом примере.
В зависимости от типа поля
(хранящихся в нем данных) сортировка будет выполняться по возрастанию
или убыванию значений данного типа. (с. 191)
То есть, например, числа всегда сортируются
по возрастанию, а даты — по убыванию?