Курс «Основы программирования» на базе системы PascalABC.NET IV Международная научно-практическая конференция «Современные информационные технологии и ИТ-образование» ( ) С.С.Михалкович Факультет математики, механики и компьютерных наук Южный федеральный университет
Вопросы, затрагиваемые в докладе Один из вариантов проведения курса «Основы программирования» для студентов классического университета Выбор первого языка и первой среды программирования Современные средства программирования, вводимые на ранних этапах обучения 2
Почему PascalABC.NET ? Современная среда программирования, нацеленная на обучение (мощная и простая) Современный язык программирования Delphi Pascal Дополнительные конструкции, облегчающие обучение Полноценный язык для платформы Microsoft.NET, позволяющий использовать все конструкции и библиотеки.NET. Основная идея: от языка, известного в школе, до современных средств промышленной платформы Microsoft.NET 3
Среда программирования Microsoft Visual Studio Проект на C# При создании проекта: 6 файлов и 6 папок После первого запуска: 11 файлов и 6 папок 4
Среда программирования Microsoft Visual Studio Проект на Visual Basic При создании проекта: 12 файлов и 6 папок После первого запуска: 21 файл и 6 папок 5
Среда PascalABC.NET Одна программа – один файл Окно вывода, интегрированное в оболочку 6
Курс «Основы программирования» Мехмат ЮФУ, 1 курс, 2 семестра, направление «Информационные технологии». Лекции: 3 часа в неделю, практика: 4 часа в неделю. Основные цели: алгоритмизация, изучение современных конструкций и технологий программирования На входе: некоторые знания языка Pascal (реже – Basic ) На выходе: владение основными алгоритмами и структурами данных, знание основных приемов программирования, умение применять объектно- ориентированное программирование. Готовность быстро осваивать новые языки программирования 7
Программа курса. Семестр 1 Начальный этап Разработка подпрограмм. Процедурные переменные Модули и библиотеки Массивы Записи и объектное программирование Символы и строки 8
Программа курса. Семестр 2 Файлы Рекурсия Динамические структуры данных: списки Динамические структуры данных: деревья Классы: основные понятия Стандартные библиотеки.NET Наследование и иерархия исключений Полиморфизм и интерфейсы 9
Начальный этап 10 var n: integer; begin write('Введите n: '); readln(n); var sum := 0; for var i := 1 to n do begin var x: integer; read(x); sum := sum + x; end; writeln(sum); end. Внутриблочные описания Описание параметра цикла в заголовке цикла Принцип локальности описания Автоопределение типа при описании
Разработка подпрограмм 11 /// Процедура обмена местами значений a и b procedure Swap (var a,b: T); begin var t := a; a := b; b := t; end;... type Fun = function(x: real): real; function Integral(a,b: real; f: Fun): real;... Обобщенные подпрограммы Документирующие комментарии Процедурные переменные
Модульное программирование Упрощенная структура модуля Механизм утверждений и тестирование 12 unit MyUnit; function Add(a,b: integer): integer; begin Result := a + b; end; end. uses MyUnit; begin Assert(Add(2,3) = 5); Assert(Add(7,5) = 12); end. Модуль MyUnit.pas Основная программа
Библиотеки.dll Легкость создания и использования.dll Синтаксическое сходство библиотек и модулей Совместимость библиотек, написанных на разных.NET- языках 13 library MyLib; procedure HelloWorld; begin writeln('Hello, world'); end; end. {$reference 'MyLib.dll'} begin HelloWorld; end. Библиотека MyLib.pas Основная программа
Массивы 14 Статические и динамические массивы Структурная эквивалентность типов динамических массивов Ссылочная модель данных для динамических массивов Оформление модулей и библиотек с обобщенными подпрограммами для работы с динамическими массивами /// Возвращает индекс найденного элемента или -1 function IndexOf (x: T; a: array of T): integer; begin Result := -1; for var i:=0 to a.Length – 1 do if a[i]=x then begin Result := i; exit; end;
Записи и объектное программирование 15 Определение методов внутри записей Размерная модель записей Новый стиль описания и вызова конструктора type Person = record name: string; age: integer; constructor (n: string; a: integer); begin name := n; age := a; end; procedure IncAge; begin age += 1; end;... var p := new Person('Иванов',20); p.IncAge;
Методы внутри стандартных типов 16 Цель: увидеть новое в давно известном Все типы – классы. Статические и экземплярные методы Рассмотрение методов классов integer, string Использование.NET- методов класса string для решения задач на строки var s: string; begin var i: integer := integer.MaxValue; s := i.ToString; i := integer.Parse(s); end.
Динамические структуры данных 17 Ссылочная модель хранения объектов классов Ссылки вместо традиционных указателей Сборка мусора вместо явного освобождения памяти type Node = class data: T; next: Node ; constructor (d: T; n: Node ); begin data := d; next := n; end; end;
Динамические структуры данных 18 Ссылочная модель хранения объектов классов Ссылки вместо традиционных указателей Сборка мусора вместо явного освобождения памяти var p: Node := nil; for var i := 1 to 10 do p := new Node (i,p); while pnil do begin write(p.data,' '); p := p.next; end; p := nil;
Использование стандартных.NET- библиотек 19 Высокоуровневые стандартные классы структур данных Использование интерфейса класса, реализация скрыта Понятие пространства имен.NET uses System.Collections.Generic; var l := new LinkedList ; begin l.AddLast(3); l.AddLast(5); l.AddLast(7); foreach x: integer in l do write(x,' '); end.
Наследование, полиморфизм, интерфейсы 20 Более простой синтаксис интерфейсов по сравнению с Delphi type IFly = interface procedure Fly; end; ISwim = interface procedure Swim; end; FlyingFish = class(IFly,ISwim) public procedure Fly; begin write('Fly'); end; procedure Swim; begin write('Swim'); end; end;... var f: IFly := new FlyingFish; f.Fly;
После курса «Основы программирования» Курс «Языки программирования» – 2 курс, 1 семестр: языки Java и C++, представление о функциональной парадигме программирования ( Haskell ) Легкость изучения Java – одна и та же модель объектов (ссылочная), похожие библиотеки C++ – выяснение различий за счет размерной объектной модели. C# – специально изучать не надо: синтаксис C++ и библиотеки.NET уже изучены. Можно начинать его использование в любом спецкурсе 21
Выводы Рассмотрен один из вариантов построения курса «Основы программирования» Приведены наиболее значимые нововведения при обучении на Паскале, которые стали возможны благодаря средствам, предоставляемым языком PascalABC.NET 22
Страница курса «Основы программирования» 23
Сайт системы PascalABC.NET: 24
25 Михалкович Станислав Станиславович Факультет математики, механики и компьютерных наук Южный федеральный университет