Методика преподавания темы «введение в программирование» в 9 классе

    Министерство образования и науки

    Сочинский государственный университет туризма  и курортного дела

    Институт  информационных технологий и математики 
 
 
 

    Курсовая  работа

    по  теории и методике обучения информатики 

         Методика  преподавания темы «введение в программирование» в 9 классе. 
     
     
     

Выполнил: студент  4 курса

Группы 07-МИ

Зарандия Л.Р. 
 

Сочи 2011

 

     Содержание: 

     Введение . . . . . . . 03 с.

     Выбор языка программирования. . . 05 с.

     Подходы к изучению программирования . 09 с.

       Методика обучения программированию. 010 с.

     Планы уроков . . . . . . 11 с.

     Список  литературы . . . . . 25 с. 

 

Введение

     Преподавание  информатики в школах нашей страны фактически начиналось с преподавания программирования. В то время даже был провозглашен лозунг: “Программирование - это вторая грамотность”. Заметим, что компьютеры в школах тогда практически отсутствовали. Для ЭВМ первых поколений это было достаточно сложным и трудоемким занятием, искусством которого овладевали за многие годы. Прогресс вычислительной техники и развитие программирования привели к тому, что им начало заниматься всё большее число людей, а профессия программиста стала престижной.

     Одновременно  с революционным развитием аппаратного  и программного обеспечения и  оснащением современной компьютерной техникой учебных заведений курс информатики претерпел существенные изменения. Наиболее яркая характеристика такого изменения - вымывание программирования из школьного курса информатики.

     Основное  внимание в большинстве школ стало  уделяться освоению современных  информационных технологий. Эти тенденции отражены и в новом “Стандарте по информатике”, в котором собственно обучению программированию отводится очень мало времени. Но, как заметил А.Г. Гейн, “…очевидно, что именно алгоритмизация с самого начала вытянула на школьную арену курс информатики и ныне во многих реально существующих курсах информатики позволяет уйти от умных, но пустоватых разговоров к конкретному делу (не случайно альтернативой алгоритмизации нередко выступает обучение информационным технологиям — учить детей тому и другому многим представляется невозможным, так как освоение реального дела требует значительных затрат и труда, и времени)”.

     Следует остановиться на определении программирования. Программирование - это раздел информатики, изучающий вопросы разработки программного обеспечения ЭВМ. В узком смысле под программированием понимают процесс создания программы на одном из языков программирования. Разработку средств системного программного обеспечения и систем программирования называют системным программированием. Создание прикладных компьютерных программ принято называть прикладным программированием. По такому же принципу проводят деление программистов на системных и прикладных.

     Существует  несколько парадигм (образчиков) программирования:

  • процедурное;
  • логическое;
  • функциональное;
  • объектно-ориентированное.

     Процедурное программирование является универсальным и наиболее распространённым видом программирования. Для него существует наибольшее количество языков программирования. К ним относятся: Ассемблер, Фортран, Бейсик, Паскаль.

     Логическое  программирование в основном представлено языком Пролог. Этот язык основан на логических построениях. Логическое программирование предполагает, что компьютер должен уметь работать по логическим построениям, которыми пользуется человек.

     Функциональное  программирование использует так называемый декларативный язык программирования, который построен на предварительном описании данных и явных указаниях о том, что должно получиться в результате. В этом случае программа представляет собой совокупность определенных функций, которые являются также блоками текста программы. Например, функцией принтера является печатание, функцией текстового редактора - подготовка документа. Типичными представителями функциональных языков являются ЛИСП и Лого.

     Объектно-ориентированное  программирование имеет в своей основе понятие объекта, как элемента программирования, соединяющего в себе данные и действия над ними. Такой подход позволяет упростить программирование и сделать его более естественным для человека. Типичными языками объектно-ориентированного программирования являются Visual Basic, Delphi, С++

     Обучение  программированию включает в себя три  части:

    1. изучение методов построения алгоритмов;
    2. изучение языков программирования;
    3. изучение и освоение какой-либо системы программирования.

     Первая  и вторая части изучаются в  базовом курсе информатики, а системы программирования обычно изучаются в профильном обучении.

 

Выбор языка программирования

     Перейдем  к обсуждению выбора языка программирования. Здесь, категоричной рекомендации быть не может. Единственное условие, которое  должно выполняться, - это то, что не только язык, но и выбранная среда программирования должны быть одними из реально используемых в современной практике, в том числе и профессионалами. Обратимся к мировому опыту как обучения программированию, так и профессионального программирования.

     Basic, Quick Basic и Visual Basic

     Cчитается, что язык программирования Basic является с методической точки зрения непригодным для обучения даже началам программирования будущих профессионалов, так как программирование с GoTo приводит к формированию плохого стиля, исправить который в дальнейшем очень сложно. Однако эволюция языка, начиная с Quick Basic и заканчивая Visual Basic, привела к тому, что сам язык стал мало отличаться, например, от языков Pascal и Delphi соответственно, и категоричные высказывания о непригодности его использования в учебных целях вряд ли можно считать корректными.

     Если обратиться к статистике использования тех или иных языков программирования на международном рынке труда, то Visual Basic в настоящее время занимает почетное второе место, уступая лишь Visual С++. Однако это далеко не так у нас в стране, где аналогичную Visual Basic программистскую нишу прочно занимает Delphi. Кроме того, компания Microsoft заявила о прекращении выпуска новых и поддержки старых версий языка Visual Basic в связи с переходом на платформу .NET. Единственным неоспоримым аргументом в пользу выбора данного языка в качестве базового для изучения программирования вообще является то, что именно он используется для написания макрокоманд в современных офисных приложениях. И если изучение, например, электронных таблиц ведется на уровне, предполагающем свободное владение этим языком, то выбор Visual Basic для освоения алгоритмизации и программирования может быть оправданным. В данном случае оказывается возможным построить интегрированный курс одновременного освоения как информационных технологий, так и программирования. Многие учителя отмечают также легкость "быстрого старта" при знакомстве школьников с данным языком. Но опыт работы показывает, что школьники, способные к овладению программированием вообще, очень быстро преодолевают сложности работы с любой средой программирования и легко осваивают формальные правила записи программ на изучаемом языке, в частности, описание переменных с корректным указанием их типов.

     Итак, большинство аргументов "за" и "против" языка Basic рассмотрены, перейдем к анализу языков группы Pascal и сравнению их с "Си-подобными" языками.

     Pascal или С (С++)

     Напомним, что язык Pascal был создан в начале 70-х годов прошлого столетия выдающимся специалистом в области computer science Никлаусом Виртом именно как язык для изучения программирования. Основой для построения синтаксических конструкций этого языка послужил широко распространенный в то время Algol (algorithmical language). Вирт продолжил свою работу над созданием методически обоснованного языка программирования, предложив общественности сначала язык Modula-2, а затем объектно-ориентированный Oberon. Однако последние два языка не получили сколь либо широкого распространения в отличие от языка Pascal, чрезвычайной популярности которого способствовало развитие семейства компиляторов фирмы Borland, начиная от Turbo Pascal и заканчивая Delphi. Не все новшества, привнесенные специалистами Borland в классический Pascal, кажутся Вирту оправданными, тем не менее и они в том числе привели к тому, что Pascal долгие годы занимал одно из ведущих мест среди профессиональных языков разработки различных  приложений, а проект Delphi придал ему новое дыхание.

     С методической точки зрения Pascal действительно хорошо подходит на роль учебного языка. Он позволяет познакомиться с большинством понятий современного программирования, освоить как различные типы, так и структуры данных. Программы на Pascal легко читаются, а один из важнейших принципов современного программирования — удобочитаемость более важна, чем краткость кода (конечно, если это не приводит к замедлению работы программы более чем в два-три раза), ведь над современными программными комплексами трудятся целые коллективы программистов, и им необходимо быстро ориентироваться в коде друг друга. Не случайно при описании различных алгоритмов в большинстве учебной литературы, в том числе и западной, используется именно Pascal или схожий с ним псевдокод. Удобочитаемость Pascal весьма кстати и учителю при проверке программ, написанных школьниками. Кроме того, синтаксис языка устроен так, что своей строгостью фактически вынуждает писать правильные программы. Это выгодно отличает Pascal, например, от языка С (С++), который, давая программисту широкие возможности, требует от него знания многих нюансов, которые зачастую упускают из вида начинающие программисты. Чего стоит, например, конструкция

     if (а = Ь) ...,

     которая, являясь синтаксически корректной, имеет в С весьма далекую от интуитивного смысла семантику (синтаксис языка определяет правила записи на нем программ, а семантика — что означает та или иная языковая конструкция, например, как должен выполняться тот или иной оператор.), переменной а присваивается значение переменной Ь, затем значение а сравнивается с нулем. Или логическое выражение вида

     а < b < с.

     Оно является некорректным для числовых и символьных типов языка Pascal и не будет пропущено компилятором, но вполне воспринимается компиляторами с языка С(++), однако имеет смысл весьма отличный от двойного неравенства в математике: сначала выполняется сравнение а и Ь, результатом которого оказывается либо 1 (истина), либо 0 (ложь). Затем уже это число (0 или 1) сравнивается с с. Ситуацию, в которой такое сравнение имеет смысл, придумать практически невозможно. Завершить обзор подобных нюансов (сами же нюансы на этом вовсе не заканчиваются) хочется семантикой оператора switch в языке С (++), которая также зачастую приводит к написанию некорректных программ начинающими программистами, так как только оператор break в конце описания каждого из вариантов переключателя позволяет придать данной конструкции тот смысл, в котором она в большинстве случаев используется (только в этом случае она превращается в аналог оператора case из других языков программирования).

     Не  случайно на факультете вычислительной математики и кибернетики МГУ  им. М.В. Ломоносова курс программирования начинается именно с изучения языка  Pascal, причем в его классической версии. Кроме того, большинство российских призеров международных олимпиад по информатике и студенческих чемпионатов мира по программированию для быстрого решения задач используют также именно Pascal, хотя те же самые студенты в своей профессиональной деятельности применяют совсем другие языки программирования (в частности, Java). Казалось бы, на этом вопрос о выборе языка программирования для современной школы можно считать решенным. Однако не все так просто.

     Если  обратиться к опыту стран Юго-Восточной  Азии, а именно в них широко ведется  преподавание школьникам программирования, то там уже долгие годы обучение старшеклассников ведется на базе языка  С. Выбор профессионалов в последние годы также лежит между С++ и Java. Более того, все так называемые "скриптовые языки" и языки web-программирования имеют С-подобный синтаксис. А для операционных систем UNIX-класса именно язык С является фактически родным. Наступление на Pascal ведется и на олимпиадном фронте: его использованию на студенческих чемпионатах мира, видимо, приходит конец (а разрешенными останутся как раз только С++ и Java). Все это вновь заставляет задуматься о выборе языка программирования.

     Помимо  уже упомянутых выше сложностей, возникающих  при написании программ на С++, особенно на начальном этапе его освоения, существуют сложности технического порядка: настройка среды программирования требует некоторого навыка и зачастую нетривиальна в условиях школьной локальной сети, а тратить на нее драгоценное время урока - непозволительная роскошь. Средства отладки при этом не столь удобны, а сообщения компилятора о различного рода ошибках не столь информативны, как в средах программирования для языка Pascal. Кроме того, большинство известных компиляторов с языка С++содержат те или иные ошибки, в результате чего даже самые простые программы время от времени оказывались неработоспособными, а вставка в них, например, не несущего смысла оператора вроде ; приводила к желаемому результату. Список же известных ошибок компилятора BP 7.0 весьма краток, и не одна из таких ошибок при решении учебных задач встретиться не может. Последнее очень важно на начальном этапе обучения программированию: ученик должен четко понимать, что если его программа не работает, то это происходит уж никак не по вине компилятора или операционной системы. 

 

     Подходы к изучению программирования

     Итак, пусть выбор языка и среды  программирования сделан. Рассмотрим теперь два подхода к изучению языка программирования: формальный и "программирование по образцу". Первый основан на формальном (строгом) описании конструкций языка программирования (синтаксиса языка и его семантики) тем или иным способом (с помощью синтаксических диаграмм, мета-языка или формального словесного описания, в частности, семантики) и использовании при решении задач только изученных, а следовательно, понятных элементов языка. При втором же подходе школьникам сначала выдаются готовые программы, рассказывается, что именно они делают, и предлагается написать похожую программу или изменить имеющуюся, не объясняя до конца ряд "технических" или несущественных, с точки зрения учителя, для решения задачи деталей. При этом говорится, что точный смысл соответствующих конструкций вы узнаете позднее, а пока поступайте аналогичным образом. Второй подход дает возможность так называемого "быстрого старта", но создает опасность получить полуграмотных пользователей среды программирования, т.е. людей, которые используют в своей практике достаточно сложные конструкции, но не могут четко объяснить, почему в том или ином случае нужно применять именно их, и как они работают. В результате рано или поздно такие "программисты" сталкиваются с ошибками, исправить которые они просто не в состоянии - им не хватает знаний.

     В практике при работе с 9-классниками лучше использовать первый, формальный подход. При этом некоторыми неформальными умениями эти школьники чаще всего уже обладают. Одна из задач школьной информатики - научить именно формальному подходу, в частности, при применении различных определений. И формальное изучение языка программирования этому немало способствует. Но и без хороших примеров (образцов) при обучении программированию школьников не обойтись. И чем младше ученики, тем больше примеров необходимо приводить при описании языка (иногда даже заменяя ими строгое определение). В этом случае сильные ученики получат возможность понять все досконально и смогут использовать полученные знания в дальнейшем, а средние — приобретут конкретные навыки и оставят для себя возможность вернуться при необходимости к формальным определениям позже. Подобный подход и будет продемонстрирован в дальнейших уроках.

 

     Методика  обучения программированию

     Итак, все вводные замечания сделаны. Перейдем к собственно методике обучения, неотъемлемой частью которой является и сам изучаемый материал. Поэтому  в конце приведем содержание первого  урока по программированию. За рамками  рассмотрения оставляем основы использования  выбранной среды программирования, которые на первом уроке вкратце  должны быть продемонстрированы: как  создать новый файл для редактирования текста программы, как его сохранить  и в дальнейшем открыть, как запустить  программу на компиляцию и выполнение и как увидеть результат работы программы. Подразумевается, что с  основами редактирования текстов и  работы с файлами операционной системы  учащиеся уже знакомы. Несмотря на все  сделанные выше замечания, проведем первый урок неформально, а именно, научимся писать простейшие программы, без строгого описания их синтаксиса и введения формальных определений  таких понятий, как оператор.

 

Планы уроков

     Урок 1

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

     Простейшая  программа на языке  Delphi

     Собственно  программа на языке Delphi (как еще говорят — тело программы) должна начинаться со слова begin, а заканчиваться словом end и знаком точки. То есть ее можно сравнить с законченным предложением. Программа, состоящая только из этих слов, разделенных пробелом или переводом строки, верна, но ничего не делает. Добавим в нее вызов процедуры печати каких-либо сообщений (в дальнейшем мы будем называть его оператором), например:

     begin

       showmessage('Hello');

     end.

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

     begin showmessage('Hello') end.

     Набейте текст этой программы и запустите  ее на выполнение. Теперь познакомимся с правилами вывода в языке Delphi подробнее.

     Стандартная процедура showmessage служит для вывода информационного окна. После слова showmessage в скобках перечисляются параметры, которые мы хотим напечатать.

     Существует  три вида параметров: константы, переменные (о них мы поговорим на следующем  уроке) и выражения (например, арифметические выражения). Константы бывают числовые (это просто различные числа —  целые и вещественные), логические и строковые. Любой текст, набранный  с клавиатуры и заключенный в  апострофы (одиночные кавычки), называется строковой константой. Если в текст  нам нужно поместить апостроф, например, в слове О'Кеу, на этом месте нужно набить два апострофа подряд вместо одного: showmessage (‘ О ‘ ‘ Key ‘ ). 

     Урок 2. Основные понятия языка программирования. Числовые типы данных. Оператор присваивания.

     Словарь языка Delphi

     Словарь любой программы на языке Delphi состоит из букв, цифр и специальных символов, комбинации которых являются знаками пунктуации в языке программирования.

     Цифры: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.

     Буквы: _, А, В, С, D, Е, F, G, Н, I, J, К, L, М, N, О, Р, Q, R, S, Т, U, V, W, X, Y, Z, а, Ь, с, d, е, f, g, h, i, j, k, 1, m, n, o, p, q, r, s, t, u, v, w, x, y, z.

     Знаки операций: +,-,*,/,<,>, <= (меньше или равно), >= (больше или равно), =, <> (не равно).

     Знаки пунктуации:

     {} или (* *) Скобки комментариев

     // Комментарий до конца строки, используется только в Delphi

     [] Выделение индексов массивов, элементов  множеств 

     ' ' Выделение символа или строковой  константы

     ( ) Выделение выражений, списков  параметров

     := Присваивание значения переменной

     ; Разделение операторов и объявлений

     : Отделение переменной или константы  от типа и метки от оператора

     = Отделение имени типа от описания  типа или константы от ее  значения

     , Запятая для разделения элементов  в списке 

     . .  Разделение границ диапазона

     . Конец программы, отделение целой части от дробной, отделение полей в записи

     ^ Значение величины по ее указателю

     @ Обозначение адреса переменной 

     # Обозначение символа по его  коду

     $ Обозначение директивы компилятора  или знак 16-ричного числа

     Отступление для учителя. При рассмотрении знаков операций, возможно, некоторым школьникам будут не знакомы знаки, обозначающие операции умножения и деления, а большинству - знаки логических операций "меньше или равно", "больше или равно", "не равно". Знаки этих операций (соответствующие комбинации символов) относятся к плохо запоминаемым учениками. Научите их сразу следующему правилу: комбинация символов для обозначения первых двух операций строится так же, как мы произносим их название. Мы говорим "меньше или равно" и строим обозначение из символов '<' — меньше и '=' — равно. Аналогично для "больше или равно". Операция "не равно" обозначается '<>' потому, что по-другому ее можно прочитать как "меньше или больше".

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

     Переменные 

     Любой алгоритм или программа для компьютера состоит из двух разделов: описания данных и описания действий, которые  над этими данными необходимо выполнить. В языках программирования действия представляются так называемыми  операторами. Данные есть общее понятие для всего того, с чем оперирует компьютер. Память компьютера с точки зрения языка Pascal разделена на секции, называемые переменными. Переменные бывают разных типов. Тип определяет допустимое конечное множество значений, которое может принимать та или иная переменная. Каждая переменная имеет жестко закрепленное за ней имя. Значения переменных могут меняться в ходе выполнения программы.

     Имена (или идентификаторы) используются не только для обозначения переменных, но и для констант, типов, процедур и функций. Имя может иметь и программа.

     Имя (идентификатор) — это любое количество букв и цифр, начинающееся с буквы, кроме служебных слов. Хотя имена  и могут быть очень длинными, в  конкретных реализациях в них  анализируется лишь несколько первых символов (например, 63, т.е. имена, у которых  первые 63 символа совпадают). Прописные и строчные буквы в именах не различимы. Так, имена My_Name, my_name и MY_NAME совпадают. Список служебных (или зарезервированных, или ключевых) слов приведен ниже.

     
and exports mod shr
array file nil string
as finalization not then
asm finally obj ect threadvar
begin for of to
case function or try
class goto out type
const if packed unit
constructor implementation procedure until
destructor in program uses
dispinterface inherited property var
div initialization raise while
do inline record with
downto interface repeat xor
else is resourcestring  
end label set  
except library shl  
Методика преподавания темы «введение в программирование» в 9 классе