Личный кабинет

Delphi в профильном курсе информатики

Константин Поляков ( Пользователь )
Уважаемые коллеги!

На странице http://kpolyakov.narod.ru/school/delphi.htm опубликован учебник-самоучитель по Delphi с практическими заданиями.

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

Особенности этого курса можно сформулировать так:

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

- каждый из примеров — осмысленная задача, мы не будет писать программы типа «давайте погоняем кнопку по экрану»;

- не рассматриваются основы программирования: понятия цикла, процедуры, функции, массива и т.п., алгоритмы работы с данными; внимание сосредоточено на принципах создании программ, обрабатывающих события, и на особенностях среды Delphi;

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

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

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

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

1. Рисунок, отражающий схему работы программы, основанной на событиях. Мне кажется, что в нем трудно разобраться. Непонятно, за счет чего программа продолжает работать, а не завершается. Все-таки, по моему мнению, должна присутствовать фраза "Цикл обработки событий". И картинка должна быть ей подчинена. Тогда ученик поймет, что это - обычная программа, в которой в цикле прослушиваются события и при желании он сам может написать что-то подобное. А так выглядит как волшебство.

2. В диаграмме наследования я - сторонник нотации UML. Там - стрелочка вверх и наконечник - пустой, а не заполненный.

3. Проект - это группа файлов. Да, может, этого и достаточно сказать. Но все же, это еще и различные настройки. Может, сказать, что в файле проекта хранятся также настройки проекта. Например, консольный ли он. Да и для Delphi не все файлы, используемые приложением, хранятся в проекте. Вообщем, может, уточнить, а может, и не надо.

4. {$R } - это, конечно - комментарий, но все же это - псевдокомментарий, являющийся директивой компилятора. То есть, комментарии просто никакого влияния на компилятор не оказывают, а эти - оказывают.

5. Обработчик события и обработчик сообщения - как-то эти термины все время путаются. Это всегда так, но в таком качественном тексте с этим что-то надо сделать. Все-таки Event - это событие. Может, оставить только обработчики событий. Хотя удобно говорить "пришло сообщение". Может. событие состоит в приходе сообщения? :)

6. Ну, это - совсем крамольная мысль. Мы, конечно, наших школьников никогда так не учили. Но все же - в виде идеи. Программисты Delphi в шутку называются программистами на Button1.Click. Прямо в обработчике пишется все - алгоритм прежде всего. Так вот, отделить этот алгоритм от интерфейса. Запихнуть алгоритм в другой модуль, сделать в нем кучу подпрограмм и глобальных переменных (бог с ними с классами) и вызывать их из обработчиков. Тем самым, обучающиеся будут знать паттерн Модель-Отображение. Это, конечно, крамольная мысль - для школьников-то. Но, мне кажется, что в принципе можно попробовать. По крайней мере, привести задачу, где четко надо что-то посчитать. На самом деле, именно таких задач - много. И, может, неплохо, если учащиеся будут иметь такой шаблончик - он им поможет и в институте, и обзывать их программистами на Button1.Click уже трудно будет.

Ну вот - такие мысли при не очень внимательном прочтении :)
Константин Поляков ( Пользователь )
Уважаемый Станислав Станиславович!
Спасибо за высокую оценку и грамотные замечания. Практически все принимается, есть над чем подумать. Буду двигаться дальше - совершенствовать. :-)
Илья Ермаков ( Пользователь )
Цитата (Михалкович Станислав, 27.10.2009, 01:26) <{POST_SNAPBACK}>
6. Ну, это - совсем крамольная мысль. Мы, конечно, наших школьников никогда так не учили. Но все же - в виде идеи. Программисты Delphi в шутку называются программистами на Button1.Click. Прямо в обработчике пишется все - алгоритм прежде всего. Так вот, отделить этот алгоритм от интерфейса. Запихнуть алгоритм в другой модуль, сделать в нем кучу подпрограмм и глобальных переменных (бог с ними с классами) и вызывать их из обработчиков. Тем самым, обучающиеся будут знать паттерн Модель-Отображение. Это, конечно, крамольная мысль - для школьников-то. Но, мне кажется, что в принципе можно попробовать. По крайней мере, привести задачу, где четко надо что-то посчитать. На самом деле, именно таких задач - много. И, может, неплохо, если учащиеся будут иметь такой шаблончик - он им поможет и в институте, и обзывать их программистами на Button1.Click уже трудно будет.


Станислав Станиславович, так учить не так, как Вы предлагаете в этом абзаце - по-моему, просто преступно :)
И никакого тут паттерна не надо. А самый обычный закон техники - разделять всё, что только можно разделить.
Станислав Михалкович ( Пользователь )
Цитата (Илья Ермаков, 29.10.2009, 11:51) <{POST_SNAPBACK}>
Станислав Станиславович, так учить не так, как Вы предлагаете в этом абзаце - по-моему, просто преступно :)
И никакого тут паттерна не надо. А самый обычный закон техники - разделять всё, что только можно разделить.

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

Конечно, есть системы, где разделение на модель и отображение делается автоматически или почти. Мне, например, понравилась идея в BB, где интерфейс автоматически генерируется по модели, вовсе не содержащей никаких ссылок на то, как это надо отображать. Все процедуры без параметров, насколько я помню, превращаются в обработчики одноименных кнопок. Не ругайте, если я что не так понял - я мало разбирался. Для начинающего это хорошо. Но, мне кажется, ограничения у подобного способа довольно существенные по сравнению с Delphi.

Здесь речь идет именно о Delphi - и мое предложение было - сделать одну счетную задачу, где процедуры счета в модуле, а вызываются из интерфейса. Одну - уже хорошо. Но в конкретном случае и это может оказаться сложным для школьника.
Анатолий Попков ( Пользователь )
Цитата (Михалкович Станислав, 01.11.2009, 19:56) <{POST_SNAPBACK}>
... Мне, например, понравилась идея в BB, где интерфейс автоматически генерируется по модели, вовсе не содержащей никаких ссылок на то, как это надо отображать. Все процедуры без параметров, насколько я помню, превращаются в обработчики одноименных кнопок. ... мое предложение было - сделать одну счетную задачу, где процедуры счета в модуле, а вызываются из интерфейса. Одну - уже хорошо. Но в конкретном случае и это может оказаться сложным для школьника.

Я несколько раз пробовал давать школьникам и первокурсникам разработку простого арифметического калькулятора в среде КП/ББ. С интерфейсом, который строится сначала полностью автоматически, а потом редактируется для удобства пользователя, в частности, названия процедур на кнопках арифметических операций заменяются на соответствующие знаки. И каждый раз приятно удивлялся тому, что учащиеся уже через 15-20 минут после объяснения выдавали работающий калькулятор на 4-5 действий. Каждая процедура-обработчик содержит всего пару операторов: вычисление результата и обновление его значения на форме. Дальше начинаем расширять возможности калькулятора: вводим ячейку памяти и процедуры-кнопки работы с ней, добалвяем контроль и диагностику ошибок пользователя с выводом в отдельное окно. Потом думаем о возможности реализации всяких дополнительных функций (например, тригонометрических)... Короче, задача построения арифметического калькулятора должна входить в типовой перечень тем курса основ алгоритмизации.

footer logo © Образ–Центр, 2018. 12+