На главную страницу сайта К. Полякова
Преподавание, наука и жизнь.
 
главная школа вуз наука delphi программы походы автор
 Лента новостей Новости Блог Блог 

 

Угринович Н. Информатика и ИКТ. Профильный уровень: учебник для 10 класса. Удовлетворительно.

Методизмы

Угринович Н. Информатика и ИКТ. Профильный уровень: учебник для 10 класса.

М.: Бином. Лаборатория знаний, 2008.

Резюме

Учебник предназначен для профильного обучения и может быть условно разбит на две части: основы информатики и углубленное изучение программирования.

Общая часть написана в целом вполне приемлемо. Видно, что автор владеет материалом и может его изложить. Хотя ляпы встречаются, иногда просто на ровном месте. Чувствуется желание написать «по-взрослому», и часто текст понимается с большим трудом.

Вторая часть (программирование) написана плохо. Хотелось сделать передовой учебник, использующий современные среды быстрой разработки приложений: Visual Studio .NET и Turbo Delphi. Это довольно сложно, потому что для качественного изложения материала нужно профессионально знать эти вопросы, иметь запас знаний. Если такого запаса нет, сложно что-либо объяснять, появляются безграмотные решения и т.п.

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

Программирование воспринимается как разработка форм, расстановка кнопочек и запуск этого чуда на выполнение. О дизайне интерфейсов — отдельный разговор. Везде непрофессионализм.

Чтобы получилось «круто», часто в предложения добавляется фраза «в объектно-ориентированном программировании». Иногда получается смешно и грустно.

Читатели бегло знакомятся с несколькими современными языками программирования: Visual Basic .NET, Visual C#, Visual J# и Turbo Delphi. Не секрет, что все языки программирования для .NET, реализованные в Visual Studio .NET, практически одинаковы, отличаются только синтаксисом. Delphi тоже имеет близкие возможности. При параллельном изучении в голове формируется каша из названий операторов, методов и т.д. Гораздо продуктивнее было бы сосредоточиться на одном языке, например, на Visual C# или Delphi.

Таким образом, в части, связанной с программированием, учебник разочаровал во всех отношениях. Легко написать «полностью соответствует», но в самом деле сдать после его изучения часть «C» ЕГЭ нереально.

(с. 17)

Логика нормального человека подсказывает, что «куда показывают, туда и надо ехать». То есть, чтобы перейти к пункту 2.10, нужно вернуться на несколько страниц назад. Ан нет! Пункт 2.10 начинается на с. 143, то есть через 126 страниц! Куча таких «логичных» ссылок разбросана по всему учебнику.

В одну часть кэш-памяти 1-ого уровня записываются наиболее нужные процессору данные, а в другую часть — наиболее нужные процессору команды. (с. 17)

К сожалению, автор не уточняет, как именно процессор определяет «наиболее нужные» для него данные и команды, которые достойны того, чтобы храниться в кэш-памяти.

Процессор является большой (в смысле количества размещенных на ней элементов) полупроводниковой микросхемой. (с. 18)

Согласно принятой классификации, к большим интегральным схемам (БИС) относятся схемы, содержащие до 10 000 элементов в кристалле. Современные процессоры содержат миллионы транзисторов и таким образом должны быть отнесены к классу ультрабольших интегральных схем (УБИС).

(с. 18)

Это ссылка на учебник физики 11 класса, который появится только через год. Какой толк от таких ссылок? А-а-а, это называется «межпредметные связи»! Идея хорошая, а реализация — как всегда... Методизм — это плохая реализация хороших идей в сфере образования.

[описание процесса изготовления микропроцессора] (с. 18-19)

Вместе с текстом, который занимает страницу и читается с большим трудом даже взрослым человеком с высшим техническим образованием, полезнее было бы привести один или несколько рисунков. Серия картинок и подробное описание технологии есть, например, на сайте www.compress.ru.

Производительность процессора является его интегральной характеристикой и характеризует скорость выполнения приложений... (с. 19)

Производительность процессора нельзя вычислить, она определяется в процессе тестирования... (с. 21)

Начинать изучать новое понятие нужно с определения. На протяжении 2,5 страниц неясно, что же такое производительность процессора и в чем она измеряется, и только в конце с. 22 автор дает ответ на этот вопрос — это количество операций, измеряемое в MIPS и MFLOPS.

Кстати, существуют и методики расчета производительности.

Контрольные вопросы: 3. Какие факторы влияют на производительность процессора и как ее можно увеличить? (с. 23)

Если автор имеет ввиду разгон, то это нехорошая практика, которая практически изжила себя.

Размер файла подкачки и его размещение в иерархической файловой системе можно менять (с. 25).

Хотелось бы посмотреть, как файл pagefile.sys переместить в какую-нибудь папку, не используя хакерские методы. Еще хуже другое — нет никакого толкового объяснения принципов работы виртуальной памяти. Складывается впечатление, что программы работают с файлом подкачки, не загружая соответствующую страницу в оперативную память.

Производительность компьютера уменьшается, если загрузка процессора достигает 100%... (с. 27)

Что такое производительность компьютера — не определяется. Без этого приведенная фраза выглядит забавно: работоспособность работника уменьшается, если он полностью занят.

Контрольные вопросы: 2. Как можно увеличить информационную емкость жестких дисков? (с. 31)

А как, собственно? Разобрать и пару пластин добавить?

Почему в СD-дисководах используется инфракрасный лазер, в DVD-дисководах — красный лазер, а в HD DVD- и Blu-Ray-дисководах — синий лазер? (с. 34)

Потому что так сделали. Вопрос надо ставить по другому: «Какие преимущества дает использование красного лазера в DVD-дисководах?».

[описание принципов работы флэш-памяти] Эффект туннелирования — один из квантовомеханических эффектов, использующих волновые свойства электрона. (с. 35)

Зачем тут говорить о том, что школьники на данном уровне понять не в состоянии? Ссылка на учебник «Физика-11», которого дети еще в глаза не видели, бессмысленна. Грамотная реализация «межпредметной связи» — в учебник «Физика-11» в соответствующий раздел добавить фразу «А еще полевые транзисторы используются для изготовления флэш-памяти».

FAT имеет следующие разделы: 1) загрузочный кластер... (с. 37)

Понятие загрузочного кластера введено автором. Остальные считают, что загрузка начинается с загрузочного сектора.

Минимальным адресуемым элементом носителя информации является кластер... (с. )

Минимальным адресуемым элементом дискового накопителя является сектор. Кластер — это минимальный блок дисковой памяти, который может быть выделен файлу.

Видеофайлы: AVI, WMF. (с. 44)

WMF чаще всего означает Windows Metafile — векторный графический формат. Видеоролики могут записываться в формате WMV (Windows Media Video). Среди расширений видеофайлов следовало бы указать также и MPG (или MPEG).

Лучше всего сжимаются текстовые и графические файлы, практически не сжимаются файлы архивов и исполнимые файлы. (с. 47)

Вот дети удивятся, посмотрев, как сжимаются рисунки в форматах JPEG или PNG! А многие исполняемые (этот термин привычнее, чем «исполнимые») файлы легко сжимаются в 2-3 раза, особенно если содержат ресурсы. Нужно говорить о том, что хорошо сжимаются только файлы, обладающие некоторой упорядоченностью, избыточностью.

Для разархивации файлов необходимо открыть файл архива в архиваторе и ввести соответствующую команду. (с. 47)

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

Для того, чтобы найти файл по его имени, на диске создают разделы (тома), а в каждом томе — каталоги. (с. 49)

Странная логика. Тома создают для того, чтобы найти файл по имени?

Путь к файлу начинается с логического имени диска... (с. 50)

Думаю, что все-таки с имени логического диска, что не одно и то же.

Перезагрузка операционной системы производится нажатием кнопки Reset на системном блоке компьютера или одновременным нажатием комбинации клавиш {Ctrl}+{Alt}+{Del} на клавиатуре. (с. 59)

Такое ощущение, что это написано лет 15 назад...

[схема загрузки операционной системы] (с. 60)
    

По поводу принадлежности BIOS к оперативной памяти меня, мягко говоря, «терзают смутные сомнения».

Признаки заражения вирусом через электронную почту: ... в вашем почтовом ящике находится большое количество сообщений без обратного адреса и заголовка (с. 63)

На всех приличных почтовых серверах сообщения без обратного адреса блокируются. Кроме того, даже если такие сообщения находятся в вашем почтовом ящике, это не значит, что компьютер заражен.

... программа начальной загрузки считывает первый сектор загрузочного диска и передает на него управление. (с. 65)

Куда считывает? Куда передает? На сектор диска?

... системные файлы *.com и *.sys (с. 65)

Файлы *.com — это просто исполняемые файлы MS DOS особого формата, их объем не превышает 64 Кб (с некоторыми «хаками» можно сделать и больше).

... макровирусы заражают шаблоны документов и поэтому активизируются уже при запуске зараженного приложения. (с. 67)

Активизация происходит только при создании нового документа на основе зараженного шаблона.

Заражение локального компьютера [скриптовыми вирусами] происходит при их передаче по Всемирной паутине в браузер. (с. 67)

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

Сейчас скрипт-вирусы прочно удерживают первое место в списке наиболее распространенных и опасных вирусов. (с. 67)

По статистике сайта www.securelist.com в первую двадцатку наиболее активных вирусов входят только почтовые и сетевые черви. Доля остальных составляет около 4%.

Куки (от англ. cookies — домашнее печенье) — небольшой текстовый файл, помещаемый Web-сервером на локальный компьютер пользователя. (с. 82)

Куки ставит не сервер, а программное обеспечение сайта, т.е. веб-мастер. Занятно также, что куки отнесены в раздел «Рекламные и шпионские программы и защита от них», но о возможных проблемах, связанных с ними, не говорится вообще.

Переход от порядка к хаосу в микромире (с. 97)
    

Очень неудачно смотрится слово «увеличение» на этой схеме, оно затрудняет понимание.

Перед броском монеты существует неопределенность нашего знания (возможны два события). После броска наступает полная определенность, так как мы видим (получаем зрительное сообщение) что монета находится в определенном положении. Это сообщение приводит к уменьшению неопределенности нашего знания в два раза... (с. 106)

С одной стороны, после опыта неопределенности нет. С другой стороны, она уменьшилась в два раза. Если оба утверждения верны, то x/2=0, откуда x=0, т.е. неопределенности не было вообще. Парадокс многих учебников информатики.

На мой взгляд, при определении 1 бита более корректно говорить о выборе одного из двух равновероятных вариантов.

Высокое качество оцифрованного звука, соответствующее качеству аудио-CD, обеспечивается при частоте дискретизации 48 000 раз в секунду... (с. 118)

Частота дискретизации аудио-CD равна 44 100 Гц.

Разрешающая способность сканера 1200 dpi. (с. 118)

Сканер, в отличие от принтера, не ставит точки на бумаге, а разбивает изображение на пиксели, поэтому разрешение сканера лучше указывать в пикселях на дюйм (ppi, pixels per inch).

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

А это написал Г. Хакен в книге «Информация и самоорганизация. Макроскопический подход к сложным явлениям» (М.: Мир, 1991, см. отрывки из этой книги):

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

Теперь давайте поговорим про плагиат, авторские права и про то, как нехорошо сдавать рефераты, скачанные из Инета...

Пусть An — целое десятичное число, разложим его в ряд по основанию 2. (с. 129)

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

0,1101012=0,358 (с. 137)

«Не верю». (© К.С. Станиславский) Тем более, что 0,1101012=0,828125, а 0,358=0,453125. Любопытно, что в учебнике эта строчка напечатана дважды, видимо, чтобы мы не сомневались.

Для определения количества информации, которое содержит один двоичный разряд, воспользуемся формулой (2.2). (с. 137, обнаружено В. Разумовым)

Во-первых, нужная формула имеет номер (2.1), а не (2.2). Во-вторых, она находится на с. 108 и найти ее при очень «жидкой» нумерации ох как непросто.

Здесь же еще несколько опечаток. В таблицах 2.2 и 2.3 числу 3 почему-то соответствует двоичная триада 1102, а не 0112; название второй строки должно быть «восьмеричные цифры», а написано «шестнадцатеричные». Строго говоря, триады заменяются не на «восьмеричные числа», как написано у автора, а на восьмеричные цифры.

A16=AB16 (с. 139)

С первого взгляда — бред. Со второго замечаешь, что первая буква A набрана курсивом, она обозначает не шестнадцатеричную цифру, а некоторое число. Вопрос о непродуманности системы обозначений.

Недостатком представления чисел в формате с фиксированной запятой является конечный диапазон представления величин... (с. 143)

А он всегда конечный на реальных компьютерах. Правильнее было бы просто указать на недостаточность этого диапазона в ряде задач.

Для хранения целых неотрицательных чисел отводится одна ячейка памяти (8 битов). (с. 144)

Ну, не так все плохо, и автор это сам знает. Но упорно переписывает эту фразу из учебника в учебник.

[при хранении в формате с плавающей запятой] положение запятой в записи числа может изменяться. (с. 148)

При изменении положения запятой меняется число, поэтому формально это утверждение неверно. Речь идет о сдвиге запятой в мантиссе числа с целью сохранения значащих цифр.

Для однозначности представления чисел с плавающей запятой используется нормализованная форма, при которой мантисса отвечает условию 1/n≤|m|<1.
      

Вранье. Идем читать стандарт IEEE 754. А здесь можно даже попробовать разместить в памяти вещественное число. Не забываем про неявную единицу, которая не хранится в памяти.

Число в формате с плавающей запятой занимает в памяти компьютера четыре байта (число обычной точности) или восемь байтов (число двойной точности). (с. 148)

А еще есть числа расширенной точности, extended (10 байтов), и математический сопроцессор все операции с плавающей запятой выполняет именно в таком формате.

Например, понятие «компьютер» объединяет множество электронных устройств, которые предназначены для обработки информации и обладают монитором и клавиатурой. (с. 152)

С точки зрения «девочки из бухгалтерии» — да. Для остальных есть еще и сервера, у которых часто ни монитора, ни клавиатуры нет.

Например, установив, что отдельные металлы — железо, медь, цинк, алюминий и т.д. — обладают свойством электропроводности, можно сделать вывод, что все металлы электропроводны. (с. 155)

Это только гипотеза. После знакомства с несколькими черными кошками нельзя утверждать, что все кошки черные.

[на протяжении 15 строчек автор описывает алгоритм построения всех комбинаций исходных данных в таблице истинности] (с. 166)

Начальная часть таблицы заполняется двоичными числами в порядке возрастания. Всё.

Каждая логическая функция двух аргументов имеет четыре возможных значения. (с. 169)

Каждая логическая функция любого числа аргументов может принимать только два возможных значения — «истина» и «ложь». Корявое использование русского языка.

Правила исключения констант (с. 176)
       A ∨ 1 = 1          A & 0 = 0

Ну и где же тут исключение констант? Это просто правила выполнения операций с константами.

Электрическая схема модели логического элемента «НЕ» (с. )
      

Хорошо, если учителя физики успеют рассказать читателю про короткое замыкание до того, как он будет делать эксперименты в квартире...

Подача на оба входа [триггера] S и R логической единицы может привести к неоднозначному результату... (с. 188)

Результат-то как раз однозначный — нули на обоих выходах. Но толку нет, поэтому эта комбинация и запрещена.

В алгоритмической структуре «выбор» выполняется одна из нескольких последовательностей команд при истинности соответствующего условия. (с. 193)

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

Алгоритм, записанный на «понятном» компьютеру языке, называется программой. (с. 197)

Компьютер понимает только один язык — машинные коды. Это определение сгодилось бы для 5-6 классов, но в 10-м классе профильного уровня смотрится примитивно.

С начала 80-х годов XX века начали создаваться алгоритмические языки программирования. (с. 198)

Языки программирования высокого уровня делятся на процедурные (алгоритмические), логические и объектно-ориентированные. Первым алгоритмическим языком стал ФОРТРАН, созданный в 1957 году.

Классификация языков программирования написана плохо. Языки логического программирования (например, Пролог) даже не упоминаются.

Язык Pascal — алгоритмический язык, который позволяет легко кодировать основные алгоритмические структуры. (с. 198)

Отсюда следует, что у остальных языков, по мнению автора, с этим есть проблемы...

Необходимо подчеркнуть, что в языках объектно-ориентированного программирования сохранялся алгоритмический стиль программирования. (с. 199)

Термин «алгоритмический стиль программирования» — это неудачное изобретение автора. Программирование — это реализация алгоритмов. О смысле приведенной фразы не удается даже догадаться.

Основными классами объектов являются объекты, реализующие графический интерфейс проектов. (с. 201)

Эта фраза весьма показательна, поскольку отражает основную концепцию автора: программирование — это расстановка кнопочек на форме и назначение их свойств. А выражение «основными классами объектов являются объекты» просто безграмотно.

Основными классами являются классы, которые реализуют функциональность проекта. Программа — это решение задачи, а не упражнения по расстановке кнопок.

Объект ... является экземпляром класса и наследует весь набор свойств, методов и событий данного класса. (с. 201)

Здесь некорректно говорить о наследовании вообще. Просто объект как экземпляр класса обладает всеми свойствами, методами и т.п.

ListBox1.Items.Add("Элемент списка") (с. 202)

Строчка правильная. Но понятная только тому, кто знает, что такое ListBox и Items, поскольку автор на объяснение таких мелочей не отвлекается.

В событийной процедуре на языках .NET существует два параметра, а в языке Turbo Delphi — один параметр. (с. 203)

Я знаю только черных кошек. На основании этой информации я делаю вывод, что никаких других кошек не существует. Нет запаса знаний.

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

В объектно-ориентированном программировании проект может включать несколько форм... (с. 205)

Хотелось написать по-умному, автор начал фразу словами «в объектно-ориентированном программировании», которую он пытается использовать при каждом удобном случае. Получилась чушь, поскольку объектно-ориентированное программирование можно применять и без форм вообще.

Проект может быть запущен на выполнение только из системы объектно-ориентированного программирования. (с. 205)

Для запуска приложения на выполнение нужен только исполняемый файл. А вот открыть проект можно действительно только в среде программирования.

Компьютер может выполнять программы, написанные только на том языке программирования, транслятор которого размещен в оперативной памяти... (с. 206)

Компьютер может выполнять только программы в машинных кодах. Если речь идет о JIT-компиляторе среды .NET, это другое дело, но в учебнике никакого толкового объяснения нет.

Недостатком компиляторов является трудоемкость отладки, поскольку невозможно пошаговое выполнение программы. (с. 206)

По-видимому, списано из какого-то источника 40-летней давности. Практически все современные среды программирования используют компиляторы и предоставляют отличные возможности для отладки, в том числе и пошаговое выполнение.

Этапы разработки проекта:
  1. Создание графического интерфейса проекта. ... (с. 207)

Это в русле понятия о программировании, которое нам навязывают в учебнике.

Обычно первый этап — это постановка и анализ задачи. Второй — определение структур данных и алгоритмов обработки. А затем уже — кодирование.

Сохраненный проект может выполняться только в самой системе программирования. (с. 207)

Что означает «выполнение проекта»? Если запуск полученного исполняемого файла, то это можно сделать и без среды. Если имеется в виду открытие проекта для редактирования, то надо грамотно выражать свои мысли. А то можно подумать, что при запуске программы из-под оболочки исполняемый файл не создается.

Проект «Консольное приложение» на языке Visual Basic .NET
      ...
      3. Скопировать компилятор командной строки vbc.exe в папку D:\HeloVB\, где находится проект. (с. 209)

Компилятор командной строки при работе в RAD-системах вручную вызывается крайне редко. При создании проекта можно просто указать тип приложения Console Application. А то ученики могут подумать, что такие приемы — это норма.

Подобных «ценных инструкций» в учебнике еще много, обо всех говорить нет смысла — утомляет.

В текстовом редакторе Блокнот ввести программный код консольного приложения (с. 210)
  using System;
  class HelloC
  {
  static void Main (string[] args)
  {
  Console.Writeln("Язык программирования C#");
  }
  }
[далее эта программа сохраняется на диске, компилируется из командной строки и запускается]

Поскольку ничего не объясняется, ученик все проделывает в режиме обезьянки, не понимая, что такое using, static, class, Console. Тем, кто уже это знает, конечно, все понятно, но им этот учебник не нужен...

Проект «Консольное приложение» на языке Visual J# (с. 211)
      ...
      5. Ввести команду компиляции:
        C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\jsc.exe HelloJ.jsl

Нельзя не вспомнить анекдот, который заканчивается словами «О! Мсье знает толк в извращениях!».

В левой колонке находятся имена событий, а в правой можно ввести их значения. (с. 218)

Значения чего? Событий?

Имя переменной ... должно содержать, по крайней мере, один буквенный или цифровой символ, если оно начинается с подчеркивания. (с. 221)

Неправда.

Рекомендуется в имена переменных включать приставку, которая обозначает тип переменных. Тогда имена целочисленных переменных будут начинаться с byt, int и lng, содержащих числа в плавающей запятой — sng и dbl, строковых chr и str, и логических bln. (с. 221)

Если говорить о приставках, общеизвестна венгерская нотация, а не тот доморощенный вариант, который предлагает автор учебника.

[интерфейсы, которые предлагаются автором для учебных программ]
1, с. 236 2, с. 248
3, с. 343 4, с. 351

1. Где тут кнопки, где поля ввода, а где метки? зачем у радиокнопок изменен цвет фона? По какой логике расположены элементы? Почему в одном месте пусто, а в другом — густо?

2. Метки обычно имеют тот же цвет фона, что и форма. Действие кнопки традиционно относится только к элементам, расположенным выше или слева (здесь после щелчка по кнопке вычисляются и значения, расположенные под ней).

3. Тут в первом списке — номера элементов массива, во втором значения этих элементов. При щелчке по кнопке массив заполняется новыми элементами и ищется максимальный из них. Плохо, что списки использованы не по назначению (при увеличении числа элементов появятся полосы прокрутки и синхронизация списков может быть нарушена). Правая часть смотрится пустой. При выводе результата поиска нужно было оставить тот же фон (эти данные пользователь не может менять) и вывести примерно так: A[5]=98.

4. Иллюстрируется сортировка массива. Вместо той каши из элементов, которую мы видим, нужно было использовать сетку (Grid). Действие двух кнопок можно объединить, оставив одну из них.

В Visual Basic .NET и Turbo Delphi вспомогательные алгоритмы реализуются с помощью процедур, в в языках Visual C# и Visual J# — с помощью методов. (с. 243)

В языках Visual C# и Visual J# функции реализуются с помощью методов. (с. 249)

В самом деле вспомогательные алгоритмы во всех этих языках реализуются с помощью функций и процедур. Только в Visual C# и Visual J# эти функции и процедуры обязательно должны быть методами какого-то класса. Что сложного? Откуда берутся проблемы при изложении?

[в процедуре Main] можно объявить глобальные переменные проекта... (с. 244)

В процедуре Main объявляются локальные переменные процедуры Main.

Объектно-ориентированные языки программирования позволяют передавать в процедуру как значение переменной, так и ее адрес. (с. 244)

Боже! Ну при чем тут «объектно-ориентированные языки программирования»? И объяснять это надо было по крайней мере на 20 страниц раньше, где впервые встретилось ByVal.

Для возврата значения с помощью переменной result используется ключевое слово return. (с. 249)

В самом деле зарезервированная переменная Result используется только в Delphi, где никаких return нет. В Visual C# и Visual J# можно записать результат в любую переменную соответствующего (или приводимого) типа и затем использовать оператор
    return <имя переменной>;

Однако использование рекурсии позволяет экономить оперативную память компьютера. (с. 252)

Однако... Внимательно изучаем матчасть.

Создать проект, в котором один делегат вызывает два обработчика событий, а обработчик события вызывается тремя разными делегатами. (с. 258)

Большинство заданий, к сожалению, бессмысленно. Понятно, что придумать простые содержательные примеры нелегко, но за это деньги и платят.

[перевод дробного десятичного числа N в двоичную систему] (с. 275)
  Bin := '0.';
  while N > 0 do begin
    M := N * 2;
    N := Frac(M);
    Bin := Bin + FloatToStr(Int(M));
  end;

Для двоичной системы сработает. Но нужно обязательно рассказать, почему при использовании любой системы, отличной от степени двойки, эта программа может зациклиться, и объяснить, почему так.

[рисование эллипса, вписанного в прямоугольник, углы которого расположены в точках (X1,Y1) и (X2,Y2)] (с. 291)
  Graph1.DrawEllipse(Pen1, X1, Y1, Math.Abs(X2-X1),
                    Math.Abs(Y2-Y1));

Это значит, что если пользователь задаст координаты углов не в том порядке, получится неизвестно что. Как говорят, «это не баг, это — фича» (от англ. feature — особенность). И после этого ищут другого программиста.

На надписи будут выведены координаты двух точек. (с. 295)

В самом деле на 4 разные надписи выводятся две пары координат.

[программа считает периметр треугольника, а затем его площадь по формуле Герона] (с. 299)

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

Графические фигуры рисуются с использованием графических методов. (с. 301)

Сильная фраза. Даже сказать нечего.

[проект «Часы» (анимация)] В обработчике события Timer1_Tick каждую секунду (с. 317-318):
... делать паузу с использованием цикла со счетчиком
    for T = 1 To 20000000
    Next T

... осуществлять стирание рисунка стрелочных часов...
    Graph1.Clear(Color.White);

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

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

В Turbo Delphi файл ресурсов содержит информацию об использовании внешних ресурсов (например, изображений на форме). Файл ресурсов состоит из записей в формате XML. (с. 322)

Изображения на форме хранятся в DFM-файле этой формы. В файле ресурсов хранится, например, иконка приложения, информация о версии проекта. В Turbo Delphi файл ресурсов записан в двоичном формате.

Решение (группа) или проект, состоящие из текстовых файлов, могут выполняться с использованием интерпретатора системы программирования. (с. 322)

Интерпретаторы для платформы .NET — это что-то новенькое. Наивные дети могут подумать, что исполняемые файлы при работе в среде не создаются.

В процессе выполнения проекта производится его отладка, информация о которой записывается в базу данных программы (в Visual Studio файл .pdb). (с. 322)

В самом деле файл .pdb содержит информацию для отладчика, которая и позволяет, в частности, использовать пошаговый режим.

Файлы последовательного доступа состоят из последовательности символов (букв, цифр или других знаков) и часто называются текстовыми файлами. (с. 329)

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

Кстати, а из чего, по мнению автора, состоят файлы последовательного доступа, если не из последовательности символов?

[использование потоков в языках .NET] (с. 330-331)

Учащийся по-прежнему работает в режиме обезьянки. Где разговор о потоках и их применении? Только «введите этот код и вы получите автомобиль».

При использовании метода Write() [объекта StreamWriter] файл записывается целиком... (с. 330)

При использовании метода Read() [объекта StreamReader] файл считывается целиком... (с. 331)

Это утверждение противоречит документации Microsoft по методам StreamWriter.Write() и StreamReader.Read().

Если файл не хранится в папке проекта, необходимо указать к нему полный путь, включая имя диска и папок. (с. 331)

Часто рабочие файлы находятся в подкаталогах основного каталога программы. Если следовать советам автора и потом такую программу перенести на другой компьютер, она работать не будет. К счастью, во всех системах программирования допускается указание относительных путей.

Для создания файла используется метод Rewrite, а для открытия файла — метод Reset... (с. 331)
    AssignFile ( f, 'file_name' );
    Rewrite ( f );
    Reset ( f );

Чтобы понять всю глупость приведенного фрагмента, достаточно взять любую книгу по Паскалю. Rewrite служит для открытия файла на запись, если файла нет, то он создается. Reset служит для открытия файла в режиме чтения. Последовательное использование этих команд недопустимо.

... значением функции InputBox является символ, введенный пользователем. (с. 336)

Функция InputBox вводит не один символ, а строку.

В числовых массивах обычно производится поиск минимального или максимального элемента. (с. 341)

Искать можно все, что нужно.

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

Ужасающий пример плохого владения русским языком. Сортировка — это расстановка элементов в заданном порядке. Всё.

Поиск максимального элемента (Visual Basic .NET) (с. 343):
  Max = 0
  A(Max) = A(0)
  For I = 1 To 9
  If A(I) > A(Max) Then> A(Max) = A(I): Max = I
  Next I

Прискорбно, что ведь не опечатки это. И программа выдаст правильный результат. Но массив будет испорчен. Найти глупости в этой программе — задачка для 8-ого класса. Студентов за такое уже по рукам сильно бьют.

Программный модуль проекта будет содержать (с. 345):
  ... обработчик события заполнения массива случайными числами;
  ... обработчик события сортировки массива...

Это что за события такие?

[сортировка строкового массива B[10] на основе алфавита, записанного в строке A, Visual C#] (с. 356)
  J = 0;
  for (I = 0; I < 33; I ++ )
    {for (K = 0; K < 10; K ++ )
      {if (A[I] == B[K].Substring(0,1))
        {C[J] = B[K];
        J = J + 1;
        }
      }
    }

Что плохо? Во-первых, используется еще один массив C. Во-вторых, массив сортируется только по первой букве. В-третьих, если среди строк попадется пустая, мы получим исключительную ситуацию ArgumentOutOfRangeException.

Практическая работа 1.1. Создание логического диска и его форматирование. (с. 359)

Ага, в учебном классе. С настроенными компьютерами.

Хакер — компьютерный злоумышленник, который организует атаки на Интернет-серверы, а также проникает на них с неблаговидными целями. (с. 387)

Такое представление о хакерах соответствует уровню информированности домохозяек и детей детсадовского возраста.

Valid XHTML 1.0 Transitional

© 2000-2016 К. Поляков
 

В Контакте