230 likes | 846 Views
Система Pascal A B C – новые возможности преподавания современного программирования для школьников. Михалкович С.С. Мехмат РГУ. Две крайности при обучении программированию.
E N D
Система PascalABC– новые возможности преподавания современного программирования для школьников Михалкович С.С. Мехмат РГУ
Две крайности при обучении программированию • Обучение только алгоритмизации.Визуальная составляющая практически отсутствует. Отсутствуют также современные возможности языков: классы, события, компоненты, параллельность • Обучение только в визуальной среде проектирования приложений.Мнимая простота. Сильная зависимость от среды. Неверное представление о программировании. Множество концепций усваиваются поверхностно.
Цели при обучении школьников программированию • Изучение основных конструкций языка и алгоритмов • Изучение современных средств языков программирования (модули, классы, наследование, полиморфизм, событийность, параллельность, компоненты) на ранних этапах • Широкое использование графических и анимационных возможностей • Все используемые конструкции языка и концепции должны быть понятны ученику • Создание достаточно сложных программных проектов с помощью специальных библиотек классов и подпрограмм
Система Pascal ABC –возможности и особенности • Простой интерфейс • Активная справочная система • Полноценный язык программирования Delphi Pascal • Бесплатность • Встроенный электронный задачник (автор – Абрамян М.Э.) • Мощная графическая библиотека • Возможность использовать, помимо обычного, упрощенный синтаксис модулей и классов • Редактор форм для приложений с главной формой • Компиляция в память, отсутствие возможности создавать исполняемые файлы
Графические возможности • Модуль CRT – текстово-графические возможности. Расширен по сравнению с модулем CRT Turbo Pascal. • Модуль GraphABC – основной модуль работы с графикой. Классы не используются. • Модуль ABCObjects – векторная графика. Иерархия графических классов с возможностью масштабирования, клонирования, группировки, наложения объектов. Обучение объектно-ориентированному программированию на ранних этапах. Использование объектов для конструирования в достаточно сложных проектах. • Модуль Sprites – спрайты, создание интерактивных “живых” приложений: игры, обучающие программы.
Новые возможности модуля GraphABC – анимация без мерцания uses GraphABC; var i: integer; begin LockDrawing; for i:=1 to 500do begin ClearWindow; SetBrushColor(clGreen); Ellipse(i,100,i+100,200); Redraw; end; end.
Модуль ABCObjects – основные классы • RectangleABC • SquareABC • TextABC • EllipseABC • CircleABC • RegularPolygonABC • StarABC • PictureABC • ChessBoardABC • ChessFigureABC • ContainerABC
Модуль ABCObjects – управление свойствами объектов uses ABCObjects,GraphABC; var z: StarABC; begin z:=CreateStarABC(600,500,490,120,6,clRed); repeat Sleep(100); z.Count:=z.Count+1; untilz.Count>20; repeat Sleep(10); z.Angle:=z.Angle+1; untilz.Angle>180; end.
Модуль ABCObjects – шахматная программа uses ABCObjects,GraphABC; var br: ChessBoardABC; ChessFigures: ChessSetABC; k,q,b,kn,r,p: ChessFigureABC; begin br:=CreateChessBoardABC(20,20,8,8,50,clBlack); ChessFigures:=ChessSetABC.Create('Chess.wmf',45,br); k:=ChessFigures.CreateWhiteKing(5,1); q:=ChessFigures.CreateWhiteQueen(4,1); b:=ChessFigures.CreateWhiteBishop(3,1); kn:=ChessFigures.CreateWhiteKnight(2,1); r:=ChessFigures.CreateWhiteRook(1,1); p:=ChessFigures.CreateWhitePown(5,2); q.move(4,5); b.move(8,6); kn.move(3,3); k.move(3,1); r.move(4,1); p.move(5,4); end.
Модули управления внешними программами
Модуль Sprites –мультимедийные программы uses ABCSprites; var s, s1, s2: SpriteABC; begin s:=CreateSpriteABC('FinnyMan',10,10); s.Speed := 2; s.State := 'Stand'; s1:= CreateSpriteABC('FinnyMan', 50,50); s1.Speed := 4; s1.State := 'Go'; repeat s1.MoveOn(-1,-1); until s1.Intersects(s); end.
Событийные программы. Шаг 1 – модуль CRT Модуль CRT – моделирование цикла обработки сообщений с помощью функций ReadKey и KeyPressed: // начальная инициализация repeatifKeyPressedthenbeginch := ReadKey;case ch of// реакция на события клавиатурыend;end; until ch = #27;
Событийные программы. Шаг 2 – модуль Events uses GraphABC, Events; procedure MouseDown(x,y,mb: integer); begin MoveTo(x,y); end; procedure MouseMove(x,y,mb: integer); begin if mb=1 then LineTo(x,y); end; begin OnMouseDown:=MouseDown; OnMouseMove:=MouseMove end.
Совместное использование модулей Events и ABCObjects – программа перетаскивания объектов мышью usesGraphABC,ABCObjects,Events; var r: RectangleABC; el: EllipseABC; begin r:=CreateRectangleABC(100,70,120,180,clCream); el:=CreateEllipseABC(5,55,65,50,clRandom); OnMouseDown:=ABCMouseDown; // привязка OnMouseMove:=ABCMouseMove; // обработчиков OnMouseUp:=ABCMouseUp; // событий мыши end.
Событийные программы. Шаг 3 – модуль VCL usesVCL; var MainForm:Form; Edit1:Edit; procedure SetFormCaption; begin MainForm.Caption:=Edit1.Text; end; begin MainForm:=Form.Create(200,200,300,100); Edit1:=Edit.Create(140,20); Edit1.OnChange:=SetFormCaption; end.
Модуль VCL – пример сложной программы
Дизайнер форм – визуальное проектирование приложений
Текст минимальной программы, генерируемый дизайнером форм Двоичный файл формы отсутствуетПрограмма состоит из единственного файла Форма восстанавливается по коду программы
Модуль Containers – классы контейнерных объектов Динамические массивы • IntArray RealArray StringArray ObjectArray Стеки • IntStackRealStack StringStack ObjectStack Очереди • IntQueueRealQueue StringQueue ObjectQueue Множества • IntSetRealSetStringSetObjectSet Отображения • IntAssocArray RealAssocArray StringAssocArray ObjectAssocArray
Модуль Containers – простая программа на тип “Множество строк” uses Containers; var s,s1,s2: StringSet; begin s:=StringSet.Create; s1:=StringSet.Create; s2:=StringSet.Create; s1.Include('Иванов'); s1.Include('Петров'); s1.Include('Сидоров'); s2.Include('Козлов'); s2.Include('Умнова'); s2.Include('Сидоров'); s.Union(s1,s2); s.Println; // объединение множеств s.Intersect(s1,s2); s.Println; // пересечение множеств s.Difference(s1,s2); s.Println; // разность множеств end.
Pascal ABC в сети Интернет • Систему Pascal ABC можно загрузить с сайта Компьютерной школы при механико-математическом факультете РГУ sunschool.math.rsu.ru