Процесс в экономике, промышленности, науке и технике, в сфере образования во многом зависит от массового внедрения вычислительной техники. Не случайно задача повышения “компьютерной грамотности” населения стала государственной и политической задачей. Ее решение стало возможным благодаря интенсивному развитию нового поколения вычислительных средств. Однако даже существующий парк ЭВМ используется недостаточно эффективно. Главная причина этого в том, что пользователями ПЭВМ являются в основном непрофессионалы в области вычислительной техники. Они слабо знакомы с эксплуатацией компьютера, языками и основами программирования. Несмотря на широко распространенную сеть курсов подготовки пользователей ПЭВМ, которые чаще всего готовят курсантов к использованию в работе 2-3 сред, компьютер нередко превращается в “черный ящик” на столе пользователя, таинственные возможности которого остаются нераскрытыми. Проблему подготовки высококлассных пользователей, понимающих суть происходящих в ПК процессов, на мой взгляд, может и должна решать современная школа.
Благодаря заботе государства, в школу пришла новая современная техника. Для работы стали доступны многие программ, о которых ранее можно было только мечтать. Учащиеся с удовольствием осваивают графические программы, в том числе flash-технологии.
Школьный курс информатики включает в себя самые разнообразные темы от теории информации до использования интернет. Все это прекрасно, замечательно, но, отработав в школе учителем информатики много лет, прихожу к выводу: только учащиеся, освоившие приемы программирования, становятся настоящими пользователями, а зачастую и выбирают себе профессию программиста. Школа должна давать базовые знания по всем предметам, в том числе и по информатике. Логика, устройство процессора и компьютера, сбор, кодирование, обработка и передача информации, программирование, обзор областей применения информационных технологий должно стать содержанием информатики. Все прикладные программы – это лишь средство для достижения поставленной цели. Точно также, как в химии или физике мы используем приборы и химикаты для постановки опытов. Ни один учитель не ставит опыт ради опыта. Всем лабораторным работам предшествует серьезная теоретическая подготовка, в противном случае они теряют свой смысл. Учиться, учиться по-настоящему тяжело всегда. Часто это трудная рутинная работа. Естественно, не все дети хотят заниматься этим, они желают "работать (читай, играть) на компьютере". Но мы же решаем задачи по математике, физике, химии без всяких игровых моментов в старших классах. А познание алгоритмов и правил их написания – не самый лучший материал для “легкого” изучения. Тем не менее, изучая программирование, ученики одновременно приобретают навыки работы в операционной системе. Это включает набор и редактирование текста, файловую систему и т.п. Работая на курсах подготовки пользователей, невольно обратила внимание на то, что если, скажем, работе в электронной таблице школьника можно обучить за 3 часа, то взрослых в лучшем случае за 10. Причина лежит на поверхности.
Выбирая стратегию преподавания информатики в школе, нужно учитывать, что задача общеобразовательного курса - это в большой степени выработка определенного стиля мышления, формирование наиболее общих навыков, умений и представлений, нежели освоение тех или иных конкретных языков и технических средств программирования. Выбранный курс должен служить базой для последующего профессионального изучения программирования в высшей школе или старших классах средней школы .
В нашей школе четвертый год информатика преподается с 1-го класса. Работа ведется по программе А.В.Горячева. Уже в начальной школе учащиеся знакомятся с такими понятиями как алгоритм, блок-схема, исходные данные, результат, заголовок. У каждого ребенка есть рабочая тетрадь, снабженная всем необходимым дидактическим материалом. Занятия проходят раз в неделю в компьютерном классе.
Вот уже несколько лет мы сотрудничаем с Роботландским сетевым Университетом. Работающий там замечательный творческий коллектив создал очень хорошую компьютерную поддержку школьному курсу информатики. В начальной школе у нас удачно “прижились” “Зимние вечера”.
Первые программы дети начинают писать уже в 5-м классе в программе “Плюсик”. Они с интересом наблюдают за работой исполнителя, программу для которого составили сами, пользуясь системой команд исполнителя. Конечно, в этой программе обрабатывается только линейный алгоритм, но какой…
Пример:
Написать программу для исполнителя Плюсик, вычисляющую следующее арифметическое выражение:
.
Чтобы вычислить подобные примеры, действия машины необходимо спланировать наперед. Это ли не гимнастика ума!
В 6-м классе мы снова возвращаемся к теме программирования. На этом этапе в среде программирования “Кукарача” Роботландского Университета дети знакомятся со всеми основными структурами: ветвлением, циклом, рекурсией, подпрограммой - все позволяет познать эта среда. А главное – наглядно. Даже возможен пошаговый режим, что крайне важно для понимания. В седьмом классе мы знакомим учащихся с новой средой “Корректором”. Те же структуры, но в новом исполнении.
Пример:
Написать программу, которая прибавляет 1 к числу в десятичной системе счисления.
Программа.
Знакомая задача? Да это же плацдарм для изучения длинной арифметики!
В 8 классе мы переходим на Русский Паскаль. Эта среда позволяет писать программы как на русском языке, так и на языке Pascal (по желанию учащихся). Есть дети, изучающие немецкий или французский язык. Именно им, как показывает практика, легче работать на русском языке. Здесь подбор задач - классический минимум: ввод и вывод данных, сумма и произведение нескольких чисел, среднее значение элементов массива, поиск минимального и максимального элементов массива, графика.
Основной упор на программирование делается в 9 классе. Все 34 учебных часа (1ч в неделю) мы отдаем только на этот курс.
Системы программирования занимают важное место в программном обеспечении современных ЭВМ. Системы программирования - это универсальные средства работы с информацией. В современной информатике выделяются два основных направления развития языков программирования: процедурное и непроцедурное. При построении процедурной программы необходимо ясно представлять какие действия и в какой последовательности будут производиться при ее выполнении. Следовательно, процедурное программирование основано на алгоритмическом мышлении и может служить средством его развития. Среди процедурных языков выделяются структурные и операционные языки. В структурных языках одним оператором записываются целые алгоритмические структуры: ветвления, циклы. В операционных языках для этого используются несколько операций. В нашей школе в качестве языка программирования выбран структурный язык программирования Turbo Pascal, позволяющий решать не только разнообразные задачи, но и создавать собственные проекты.
В качестве примера осмелюсь предложить решение следующей задачи (квалификационная задача курса Буки программирования (ведущий Я.Н.Зайдельман) Роботландского Университета):
Даны три натуральных числа. Определить тип треугольника с
соответствующими длинами сторон по сторонам (равносторонний, равнобедренный, разносторонний) и углам (остроугольный, прямоугольный, тупоугольный).
Ограничения: 0 < a,b,c < 1000
Пример.
Ввод: 3 4 5
Вывод: треугольник разносторонний, прямоугольный.
Проведем анализ задачи.
- Не любые тройки чисел, задающих длины сторон, определяют треугольник. Треугольник существует, если выполняются неравенства треугольника: длина стороны треугольника меньше суммы длин двух других сторон, т.е. надо проверить выполнимость соответствующего неравенства для каждой из трех сторон. Однако заметим, что если неравенство выполняется для большей стороны треугольника, то оно выполняется и для каждой из меньших сторон.
- Треугольник будет прямоугольным, если квадрат большей стороны (гипотенузы) равен сумме квадратов двух других сторон, а2=b2+c2. Тогда при условии а2<b2+c2 треугольник будет остроугольным, а при а2>b2+c2- тупоугольным.
- В равнобедренном треугольнике равными могут быть только либо две наибольшие, либо две наименьшие стороны. Следовательно, достаточно проверить выполнимость равенств a=b или b=c.
- В равностороннем треугольнике наибольшая и наименьшая стороны должны быть равными. Во всех остальных случаях треугольник будет разносторонним.
Учитывая такие наблюдения, приходим к выводу, что наиболее просто задача будет решена, если введенные длины сторон сначала отсортировать. В нашем случае такая сортировка сделана по убыванию.
Решение задачи на языке Паскаль.
program treyg;
label
nach;
var
a,b,c,i,j,q: integer;
begin
nach:
writeln('Введите стороны треугольника через пробел');
readln(a,b,c);
if a<b then
begin
q:=a; a:=b; b:=q;
end;
if b<c then
begin {сортируем стороны по возрастанию}
q:=b; b:=c; c:=q;
end;
if a<b then
begin
q:=a; a:=b; b:=q;
end;
if a>=b+c then
begin
writeln('Треугольник не существует'); {Защита от дурака}
writeln('Повторите ввод');
goto nach;
end;
if (a=c) then write ('треугольник равносторонний')
{если наибольшая сторона = наименьшей}
else {то тр-к равностороний}
if (a=b) or (c=b) then write('треугольник равнобедренный')
else write('треугольник разностороний');
if a*a=b*b+c*c then write(',прямоугольный');
if a*a>b*b+c*c then write(',тупоугольный');
if a*a<b*b+c*c then write(',остроугольный');
end.
Таким образом, в процессе обучения мы знакомим учащихся с несколькими средами программирования, что позволяет им в дальнейшем заниматься самостоятельно, имея навык работы с различными исполнителями. Они четко понимают, что каждая система имеет свою уникальную систему команд. Они понимают суть происходящих процессов и эти знания переносят на изучение и других сред, не связанных с системами программирования.