PascalABC.NET – это среда программирования, имеющая реализацию языка Object Pascal для платформы Microsoft.NET, который содержит все основные элементы современных языков программирования: модули, классы, интерфейсы, исключения, обобщенные классы, а также некоторые средства параллельного программирования.
PascalABC.NET используется для: публикации учебных программ; выполнения программ без установленного компилятора; ссылок на программы с различных форумов и сайтов. Некоторые направления дальнейшего развития среды программирования: расширение набора заданий, связанных с ЕГЭ по информатике; реализация компонентов для преподавателя в Веб-среде PascalABC.NET; интеграция в Веб-среду PascalABC.NET других распространенных языков программирования [1].
Рассмотрим применение среды программирования PascalABC.NET для решения задач ЕГЭ 2015 года по информатике на примере задачи 22 из 1 части демонстрационного варианта.
Исполнитель Май4 преобразует число, записанное на экране. У исполнителя три команды, которым присвоены номера:
1. Прибавь 1.
2. Прибавь 2.
3. Прибавь 4.
Первая из них увеличивает число на экране на 1, вторая увеличивает это число на 2, а третья – на 4. Программа для исполнителя Май4 – это последовательность команд.
Сколько есть программ, которые число 21 преобразуют в число 30?
Данная задача решается с помощью метода динамического программирования.
Динамическое программирование – это способ решения сложных задач путем сведения их к более простым задачам того же типа. С помощью динамического программирования решаются задачи, которые требуют полного перебор вариантов: «подсчитайте количество вариантов…»; «как оптимально распределить…»; «найдите оптимальный маршрут…» [2].
Приведем листинг программы:
program ege22;
var f: array[1..50] of integer; a,b,с,k1,k2,i:integer;
begin
write(‘+’); readln(a); write(‘+’); readln(b); write(‘+’); readln(с);
write(‘k1=’); readln(k1); write(‘k2=’); readln(k2); f[k2]:=1;
for i:=k2-1 downto k1 do begin
f[i]:=0;
for j:=i+1 to k2 do begin
if i+a=j then f[i]:=f[i]+f[i+a];
if i+b=j then f[i]:=f[i]+f[i+b];
if i+c=j then f[i]:=f[i]+f[i+c];
end; end;
writeln(f[k1]);
end.
Протокол выполнения программы будет следующий:
+1
+2
+4
k1=21
k2=30
96
Таким образом, на примере задач данного класса можно познакомить обучающихся с методом динамического программирования. Такие задачи можно рассмотреть с ними при подготовке к ЕГЭ по информатике или олимпиаде по программированию.