Информатика программирование : Курсовая работа: Обучение решению задач из раздела "Основы алгоритмизации и программирования"
Курсовая работа: Обучение решению задач из раздела "Основы алгоритмизации и программирования"
МИНИСТЕРСТВО
ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ
Учреждение образования
«Брестский государственный
университет имени А.С. Пушкина»
Математический факультет
Кафедра информатики и прикладной
математики
Курсовая работа
Обучение
решению задач из раздела «Основы алгоритмизации и программирования»
Брест 2010
Содержание
Введение
1. Выбор технологии
программирования для учебного процесса
2. Возможности методического
обеспечения структурного программирования в школе
2.1 Принципы структурной
алгоритмизации
2.2 Выбор подхода к
преподаванию структурного программирования
2.3 Базовый набор
структур и построение алгоритмов на их основе
3. Особенности языка
программирования Pascal ABC
3.2 Типы данных в языке
Pascal ABC
3.3 Структурный тип
данных массив
4. Разработка
методического обеспечения для работы со структурным типом данных массив
3.1 Основные этапы
разработки решения задачи
3.2 Реализация учебных
задач по работе с массивами
3.3 Описание игровых
моментов при решении задач
Заключение
Список использованных
источников
Приложение
Введение
Решение
задачи на компьютере невозможно без создания алгоритма. Умения решать задачи,
разрабатывать стратегию ее решения, выдвигать и доказывать гипотезы опытным
путем, прогнозировать результаты своей деятельности, анализировать и находить
рациональные способы решения задачи путем оптимизации, детализации созданного
алгоритма позволяют судить об уровне развития алгоритмического мышления
школьников. Поэтому необходимо особое внимание уделять алгоритмическому
мышлению подрастающего поколения.
Поскольку
алгоритмическое мышление в течение жизни развивается под воздействием внешних
факторов, то в процессе дополнительного воздействия возможно повышение уровня
его развития. Необходимость поиска новых эффективных средств развития
алгоритмического мышления у школьников обусловлена его значимостью для
дальнейшей самореализации личности в информационном обществе.
В
методической литературе по информатике отмечены различные способы формирования
алгоритмического мышления школьников: проведение систематического и
целенаправленного применения идей структурного подхода, повышение уровня
мотивированности задач, постоянная умственная работа.
Эффективным
способом формирования алгоритмического мышления школьников старших классов в
курсе «Основы алгоритмизации и программирования» является обучение построению
алгоритмов и их использованию при решении большого класса задач.
Целью работы
является разработка элементов методического обеспечения для обучения решению
задач из раздела «Основы алгоритмизации и программирования», в частности
создание интересных методов построения и использования алгоритмов на примере
учебных задач по работе со структурного типом данных массив.
Объектом
исследования является процесс обучения решению задач.
Предметом
исследования является формирование алгоритмического мышления школьников при
обучении решению задач из раздела «Основы алгоритмизации и программирования».
Курсовая
работа условно состоит из двух частей. В первой части раскрываются
теоретические сведения о технологии программирования в школе, принципах
структурной алгоритмизации и выборе подхода к преподаванию программирования.
Вторая часть данной работы посвящена разработке различных игровых моментов,
которые можно использовать при изучении структурного типа данных массив.
Таким
образом, различные формы работы и подготовленное методическое обеспечение
позволит повысить эффективность работы учащихся и уровень умений при решении
алгоритмических задач. При этом совмещение традиционных форм работы и новых
подходов в использовании стандартных задач расширяет целенаправленность и
эффективность урока.
1.
Выбор технологии программирования для учебного процесса
Выбирая стратегию преподавания информатики в школе, необходимо учитывать, что задача общеобразовательного курса – это в большой степени выработка определенного стиля мышления, формирование наиболее общих навыков, умений и представлений, нежели освоение тех или иных конкретных языков и технических средств программирования. В то же время такой курс должен служить базой для последующего профессионального изучения программирования в высшей школе или старших классах средней школы (в рамках профессионального обучения). В настоящее время существуют три наиболее распространенных подхода к преподаванию программирования [10]: 1) преподавание программирования как теоретической дисциплины вообще, без освоения конкретных языков и систем; 2) преподавание на основе специально разработанного языка, ориентированного на обучение основным навыкам программирования; 3) изучение одного или нескольких языков программирования, широко используемых при решении научных и хозяйственных задач. Первый подход представляется наиболее логичным. Однако его практическая реализация наталкивается на серьезные трудности, так как с отказом от языка программирования не только теряется возможность использовать соответствующий инструментарий, но и зачастую становится трудно обосновать необходимость его использования. Второй подход часто используется при преподавании основ программирования в младших классах средней школы. Разработаны и специализированные языки для этих целей. В их числе можно назвать Школьник, Рапира (СССР), SMR (Великобритания), LOGO (США). Они предельно упрощены и рассчитаны на возможности младшего школьника в области программирования. Такой подход хорош при углубленном изучении информатики в специализированных классах при начальном этапе обучения. Противники третьего подхода утверждают, что он непригоден прежде всего потому, что ни один из существующих стандартных языков не отражает в достаточно чистом виде современный концептуальный запас программирования. Такое положение, вообще говоря, естественно, так как все эти языки разрабатывались со своими целями и каждый из них ориентирован на определенную, более или менее узкую область применения. Кроме того, большинство реализаций стандартных языков загружено большим количеством технических деталей и сложны в изучении. Наиболее приемлемым для общеобразовательной школы является сочетание первого и третьего подходов – обучение теоретическим основам программирования на базе стандартного языка. При этом не обязательно вдаваться в глубины языка. Учащиеся, которых он заинтересует, могут сделать это и сами. Наибольшее внимание следует уделить переходу от алгоритмических структур к их программной реализации на языке программирования. У каждого языка есть свои сторонники и противники, и конечный выбор определяется наличием аппаратных средств и личными наклонностями преподавателя. Стоит отметить, что Паскаль первоначально создавался как учебный язык, но со временем получил широкое распространение в качестве стандартного языка. Из существующих технологий программирования наиболее популярной и широко используемой является технология структурного программирования "сверху – вниз". Ее достоинством является то, что она позволяет сформировать у обучаемых алгоритмический стиль мышления, необходимый при изучении практически всего курса информатики. Следовательно, выбирая язык программирования для школьного курса, нужно ориентироваться на один из структурных языков.
2. Возможности методического обеспечения структурного программирования в школе 2.1 Принципы структурной алгоритмизации На сегодняшний день самой популярной методикой программирования является структурное программирование "сверху – вниз". Эта технология программирования представляет собой процесс пошагово разбиения алгоритма на все более мелкие части с целью получить такие элементы, для которых можно легко написать конкретные предписания [5]. Структурная алгоритмизация основывается на двух принципах: 1) последовательная детализация "сверху - вниз"; 2) ограниченность базового набора структур для построения алгоритмов любой степени сложности. Из принципов вытекают требования структурного программирования: 1) программа должна составляться мелкими шагами, таким образом, сложная задача разбивается на достаточно простые, легко воспринимаемые части; 2) логика программы должна опираться на минимальное число достаточно простых базовых управляющих структур. Базовый набор структурной алгоритмизации содержит линейные, разветвляющиеся и циклические структуры. Можно перечислить основные свойства и достоинства структурного программирования: 1) возможность преодоления барьера сложности программ; 2) возможность демонстрации правильности программ на различных этапах решения задачи; 3) наглядность программ; 4) простота модификации программ.
2.2 Выбор подхода к преподаванию структурного программирования При решении задач с использованием структурного программирования можно выделить два основных направления [7, c. 78]: 1) "алгоритмический" подход заключается в следующем: схема решения задачи описывается на алгоритмическом языке (языке блок-схем алгоритмов) и затем переводится в программную реализацию на конкретном языке программирования; 2) "программный" подход – описание решения задачи сразу на конкретном языке программирования. В соответствии с этими направлениями чаще всего и преподается программирование. Уровень развития современных систем программирования, благодаря хорошо организованным средствам отладки, позволяет создавать программы без использования первого подхода. Однако, программный подход требует от человека наличие определенного стиля мышления и навыков работы с языком программирования. Очевидно, что специалисты, имеющие пусть даже небольшой опыт в программировании, пользуются программным подходом. Им не обязательно описывать решение задачи на алгоритмическом языке, они разрабатывают ее в "уме". В преподавании такой подход хорош при изучении второго языка программирования, когда ученики уже имеют определенную подготовку. При изучении структурного программирования на начальном этапе более подходит "алгоритмический" подход. Он более полно и последовательно позволяет раскрыть переход от математической формы описания задачи к ее программной реализации и помогает формировать у обучаемых алгоритмический стиль мышления, необходимый при решении задач с использованием языков программирования и изучении многих технических и общеинженерных дисциплин. Кроме того, на основе алгоритмического подхода можно изучать сразу несколько языков программирования. В силу перечисленных достоинств наиболее верным и методически правильным для преподавания программирования на начальном этапе обучения является алгоритмический подход. При изучении программирования с использованием алгоритмического подхода учащиеся сталкиваются с двумя проблемами [6, c. 86]: 1) описание и детализация решения задачи на алгоритмическом языке; 2) переход от алгоритмических конструкций к конкретному языку программирования. На разрешение этих трудностей должно быть направлено методическое обеспечение. В первом случае это могут быть схемы основных базовых структур с описанием их работы и особенностей использования при построении алгоритмов. Во-втором – таблицы перевода алгоритмических конструкций в конструкции языка программирования. 2.3 Базовый набор структур и построение алгоритмов на их основе Теория структурного программирования доказывает, что алгоритм любой степени сложности можно построить с помощью основного базового набора структур: 1) последовательная (линейная) структура; 2) ветвящаяся структура; 3) циклическая структура. Наиболее простыми для понимания и использования являются линейные структуры. Линейным называется алгоритм (фрагмент алгоритма), в котором отдельные предписания выполняются в естественном порядке (в порядке записи) независимо от значений исходных данных и промежуточных результатов [3, c. 9]. Алгоритм может быть реализован в ЭВМ, если он содержит только элементарные предписания. Такими элементарными, т.е. не требующими детализации, можно считать следующие предписания или операции: 1) начало, конец; 2) список данных; 3) ввод, вывод; 4) вычислительные операции, реализуемые оператором присваивания. Не всякий алгоритм можно описать только линейными структурами. Часто для дальнейшей детализации используются ветвящиеся структуры, т.е. такие, в которых в зависимости от исходных данных или промежуточных результатов алгоритм реализуется по одному из нескольких, заранее предусмотренных направлений. Такие направления часто называются ветвями. Каждая ветвь может быть любой степени сложности, а может вообще не содержать предписаний, т.е. быть вырожденной. Выбор той или иной ветви осуществляется в зависимости от результата проверки условия с конкретными данными. В каждом случае алгоритм реализуется только по одной ветви, а выполнение других исключается. Реализация на ЭВМ линейных и разветвляющихся программ не дает большого выигрыша во времени по сравнению, например, с использованием простого калькулятора. Настоящее преимущество вычислительной машины становится очевидным лишь при решении тех задач, где возникает необходимость многократного повторения одних и тех же фрагментов алгоритмов [2]. В циклических алгоритмах выполнение некоторых операторов (групп операторов) осуществляется многократно с одними и теми же или модифицированными данными. Циклические алгоритмы часто называют циклами. В зависимости от способа организации числа повторений различают три типа циклов: 1) цикл с заданным условием продолжения работы (цикл-пока); 2) цикл с заданным условием окончания работы (цикл-до); 3) цикл с заданным условием повторений работы (цикл с параметром). Тело цикла с заданным условием продолжения работы может включать в себя группу операторов любой степени сложности. При выполнении условия продолжения работы выполняется тело цикла, если же условие не выполняется, то работа циклической структуры заканчивается и начинается выполнение следующей структуры. Структура цикл-пока предусматривает вариант, когда тело цикла не выполняется ни разу. Такое возможно, если условие, стоящее в начале цикла, сразу же не выполняется. Когда на практике возникает необходимость использовать структуру, у которой тело цикла выполняется хотя бы один раз, то в этом случае применяется структура цикла-до. С помощью такой структуры обычно составляют алгоритмы итерационных вычислительных процессов, т.е. таких, в которых для определения последующего значения переменной используется ее предыдущее значение. Выход из конструкции цикл-до осуществляется по достижении параметром требуемого значения. Рассмотренные типы циклических структур имеют один недостаток: при ошибочном задании исходных данных может произойти зацикливание, т.е. возникает ситуация, когда происходит бесконечное повторение тела цикла. В практических инженерных задачах обычно известны начальные значения изменяемых величин, закон изменения и конечное число повторений. Переменная, изменение которой организуется в ходе реализации цикла, называется параметром цикла или управляющей переменной. Алгоритм работы цикла с заданным числом повторений представляет собой соединение линейной структуры (начало цикла), структуры цикл-пока (условие в нем заменено на противоположное) и снова линейной (последовательной) структуры в теле цикла. Таким образом, с помощью базового набора структур можно построить алгоритм любой степени сложности. Освоив принципы и средства структурной алгоритмизации, обучаемые должны уметь реализовать их на конкретном языке программирования. Следовательно, основной концепцией в изучении ими любого языка программирования будет являться методика перевода основных базовых структур в конструкции данного языка.
3. Особенности языка программирования Pascal ABC 3.1 Типы данных в языке Pascal ABC В языке Pascal ABC любая переменная характеризуется своим типом. Под типом в данном случае понимается множество значений, которые может принимать переменная и, как следствие, множество операций, допустимых над переменной. Паскаль является языком жесткой типизации. Это означает, что тип переменной определяется при ее описании и не может быть изменен. Переменная может участвовать только в операциях, определенных ее типом. Такой подход способствует большей аккуратности и ответственности при составлении программы, делает их поддающимися автоматической (при компиляции) проверке на корректность и в конечном итоге приводит к более высокой надежности создаваемых программ [1, c. 237]. Паскаль имеет развитую и изощренную систему типов. На основе небольшого числа стандартных типов программист может конструировать данные произвольной структуры и сложности, адекватно отражающие информационную природу задачи. Паскаль наследует систему типов эталонного языка, существенно расширяя ее как в смысле добавления очевидных практически полезных типов (например, строковых), так и введением принципиально новых понятий, открывающих нетрадиционные возможности в программировании (в частности, объектов). Базовыми в системе типов являются простые типы. Составные типы по определенным правилам строятся из простых. Ссылочные типы образуются из любых других типов. Составные и ссылочные типы можно считать некоторыми правилами для построения более сложных типов из более простых. Ограниченные типы формируются из простых типов путем сужения их области допустимых значений. Первичными в иерархии типов являются стандартные скалярные типы, представляющие традиционные в языках программирования множества значений (целые, вещественные, символьные, булевские) и их модификации, учитывающие архитектурные особенности аппаратуры. Процедурные типы в некотором отношении расширяют традиционное понятие подпрограмм, позволяя обращаться с подпрограммами как с переменными [3, c. 8]. Несколько особняком стоят объектные типы, или объекты. Являясь, с формальной точки зрения, обобщением комбинированных типов (записей), они позволяют радикально изменить подход к разработке программ, предлагая так называемый объектно-ориентированный стиль программирования. Простые типы: порядковые, вещественные, дата-время. Порядковый тип в свою очередь делится на: 1. целые типы; 2. логический тип или булевский тип; 3. символьный тип; 4. перечисляемые типы; 5. ограниченные типы или тип-диапазон. На основе стандартных скалярных типов имеется возможность образовывать пользовательские скалярные типы. Есть два способа порождения новых скалярных типов - ограниченные и перечислимые типы. Любой скалярный тип характеризуется множеством его различных значений, среди которых установлен линейный порядок. Все скалярные типы, кроме вещественных, называются дискретными. Составные типы: структурированные типы, указатели, строки, процедурные, объекты, классы, варианты. Структурированные типы в свою очередь делятся на: 1. регулярные типы (массивы); 2. комбинированные типы (записи); 3. множественные типы; 4. файловые типы; Простые типы, описанные выше, определяют различные множества атомарных (неразделимых) значений. Составные, или структурные типы, в отличие от простых, задают множества «сложных» значений; каждое значение из такого множества образует некоторую совокупность нескольких значений другого типа (или других типов). Можно сказать, что составные типы определяют некоторый способ образования новых типов из уже имеющихся, причем отдельные элементы составных значений могут иметь любой, в том числе составной, тип. Таким образом, Паскаль допускает образование структур данных произвольной сложности, позволяя тем самым достичь адекватного представления в программе тех данных, с которыми она оперирует. 3.2 Структурный тип данных массив Каждое значение регулярного типа состоит из фиксированного числа элементов одного и того же базового типа. Такой способ образования новых значений (фиксированное число однотипных компонент) позволяет обозначать значения этих типов одним (групповым) именем. Объект регулярного типа часто называют массивом, а групповое имя используется в качестве имени этого массива. Доступ к отдельным элементам массивов организуется посредством указания имени массива и порядкового номера (индекса) необходимого элемента. Для корректного определения регулярного типа необходимо задать две характеристики: тип элементов массива, а также количество и «способ нумерования» элементов. Последние характеристики задаются посредством указания типа индекса [1, c. 259]. Определение массива имеет следующий общий вид:
Type A = array [T1] of T2; Здесь Array, of – служебные слова; Т1 – тип индекса массива; Т2 – тип компонент массива. В дальнейшем идентификатор этого типа может быть использован в описании переменных. В качестве типа индекса может выступать любой дискретный тип, кроме LongInt и ограниченных типов, построенных из типа LongInt, в частности, допустимы ограниченные и перечислимые типы. Элементами массива могут быть переменные любого типа. Ниже приведены описания различных массивов: Type M1 = array [1..100] of real; M2 = array [char] of boolean; Matrix = array [ 1..10 ] of array[1..20] of integer; Database = array [1..MaxF] of file of Person; Var Vector: M1; Sym_Table: M2; Arr1, Arr2: Matrix; S: array [Red, Yellow, Green] of boolean; Число элементов в массиве всегда должно быть фиксировано. Для задания количества элементов массива используется тип; число элементов определяется количеством возможных значений указанного типа, что отличает язык Паскаль от многих других языков, в которых размер массива задается либо целым числом (или выражением целого типа), либо диапазоном целых чисел. Это придает Паскалю дополнительную гибкость, позволяя «нумеровать» элементы массива не только целыми числами, но и значениями произвольного целого типа. В качестве элементов массива могут выступать значения любого типа; в частности, ими могут быть значения любых составных типов, например, массивы: Var V2: array [1..10] of array [1..20] of byte; Такую переменную можно трактовать двояко: как массив, состоящий из нескольких массивов, либо как один двумерный массив (матрицу). Для сокращения записи в подобных случаях можно использовать эквивалентную форму определения регулярных типов, где в квадратных скобках указывается список типов индексов, разделенных запятыми, тот же массив можно описать: Var V2: array [ 1..10, 1..20 ] of of byte; Число индексов в определении (т.е. размерность массива) в языке не ограничивается. Паскаль допускает единственное возможное действие над массивом в целом: использование его в операторе присваивания, например, Vect1:=Vect2; причем типы обоих массивов должны быть эквивалентны. Элемент массива считается переменной; он может получать значения (например, в операторе присваивания), а также участвовать в выражениях, где он представляет значение, помещенное в соответствующий элемент данного массива [2]. Ассортимент операций над элементами массива полностью определяется типом этих элементов (базовым типом массива).
4. Разработка методического обеспечения для работы со структурным типом данных массив 4.1 Основные этапы разработки решения задачи Чтобы любую новую задачу решить с применением компьютера, необходимо предварительно создать соответствующую компьютерную программу. Технологический процесс разработки программы решения задачи включает следующие этапы [5]: 1) построение информационной модели задачи; 2) разработка алгоритма решения задачи; 3) написание программы; 4) отладка программы. Информационная модель задачи – это совокупность знаний и данных, содержащих всю необходимую информацию об объекте или процессе, в отношении которого эта задача сформулирована. Важнейшей составляющей информационной модели является метод решения, то есть конкретные соотношения, связывающие исходные данные задачи с нужными результатами. Частным случаем информационной модели является математическая модель. Разработка алгоритма – представление процесса решения задачи в виде последовательности определённых команд, выполнение которых обеспечивает получение нужных результатов. Написание программы – запись алгоритма на языке программирования. Отладка программы реализуется после ввода её в компьютер и состоит в обнаружении и устранении в ней синтаксических и семантических ошибок. Готовая отлаженная программа передаётся пользователю, который в любое удобное для себя время может применить её для решения соответствующей задачи на реальных исходных данных.
4.2 Реализация учебных задач по работе с массивами При решении учебных задач учащимся предстоит научиться выполнять рая наиболее распространенных действий с массивами [9, с. 133]: 1) описание; 2) заполнение массива случайными числами; 3) заполнение массива с клавиатуры; 4) вывод на экран; 5) поиск максимального элемента; 6) вычисление суммы всех элементов массива; 7) вычисление количества положительных элементов; 8) удаление элементов из массива; 9) добавление элементов в массив; 10) замена элементов в массиве и другие. Заполнение массива случайными числами и вывод массива на экран. Рассмотрим задачу, в которой требуется с помощью датчика случайных чисел создать одномерный массив и вывести его на экран. Program Massiv1; Uses Crt; Const N=10; Var A: array [1.. N] of integer; i: integer; Begin Randomize; For i:=1 to N do A[i]:=Random (100); ClrScr; Writeln (‘Введенный массив: ’); For i:=1 to N do write (A[i]: 4); Writeln; Readln; End. В данном примере мы заполнили массив случайными числами от 0 до 99, что обеспечила нам функция random (100). Если нам нужно получить случайные числа в другом диапазоне, например, не от нуля, расчет нужно сделать такой: функция random (N) выдаст N различных чисел от 0 до N-1. Если нам нужно, чтобы наименьшим числом диапазона было K, необходимо прибавить K к random (N). Наибольшее число, которое будет выдавать в этом случае формула random (N)+K, будет наибольшим числом диапазона. Функция random без аргумента генерирует случайные вещественные числа на промежутке [0;1). Если случайные вещественные числа должны принадлежать иному промежутку, например, [3;4), то значение элемента задается выражением A[i]:=random+3 [4, с. 29]. Заполнение массива с клавиатуры. Заполним одномерный массив путем ввода с клавиатуры целых чисел и выведем его элементы на экран с противоположным знаком. Program Massiv2; Uses Crt; Const N=10; Type Mas: array [1.. N] of integer; Var Line: Mas; i: integer; Begin For i:=1 to N do Begin Write (‘Введите элемент с индексом ’, i, ':'); Readln (Line[i]) End; For i:=1 to N do Write(-Line[i]: 5); Writeln; Readln End. Поиск максимального элемента массива. Поиск максимума – типичная задача для большого количества данных. Например, в списке успеваемости учеников класса найти самого прилежного. Иначе говоря, требуется выбрать наибольшее значение среднего балла и указать фамилию ученика. Program Maximum; Const N = 10; Type Mas = array [1.. N] of integer; Var A: Mas; i, Max, Imax: integer; Begin Randomize; For i:= 1 to N do Begin A[i]:= -50+Random (101); Write (A[i]: 5) End. Writeln; Imax:= 1; Max:= A[1]; For i:= 2 to N do If Max < A[i] then Max:= A[i]; Imax:=i End; Writeln (‘Максимальный элемент в массиве = ’, Max: 5); WriteLN (‘Его индекс = ’, Imax: 5); Readln; End.
Заметим, что в процессе поиска максимума не обязательно хранить обе величины – номер максимума и его значение. Достаточно хранить одну, в зависимости от поставленной задачи. Если индекс максимума не нужно знать, достаточно будет переменной Max. Если нужен только номер – достаточно IMax. Тонкость состоит в том, что если нужно и то и другое, все равно достаточно найти только IMax, ведь значение максимума легко может быть получено по его индексу (A [IMax]). Вычисление количества положительных элементов. Подсчет суммы элементов, которые удовлетворяют какому-то условию, осуществляется по принципу перебора всех элементов массива (цикл for) и проверки для каждого элемента выполнение условия (оператор if). Если условие выполнено, добавим элемент к сумме (S:= S+A[i]). Program PositivSumm; Const N = 10; Type Mas = array [1.. N] of integer; Var A: Mas; i, S: integer; Begin Randomize; For i:= 1 to N do Begin A[i]:= -100+random (201); Write (A[i]: 5) End; Writeln; S = 0; For i:= 1 to N do If A[i] > 0 then S:= S+A[i]; Writeln (‘Сумма положительных элементов= ’, S); Readln End. Удаление нескольких элементов. Дано число n, ряд из n чисел и число х. Необходимо найти и удалить все элементы со значением х, если такие есть в ряду. Оставшаяся часть сдвигается влево, сохраняя порядок чисел. Program Udalenie; Var n, i, Sdv, x: integer; Var A: array [1.. 100] of integer; Begin Writeln (‘Удалить числа: ’); Readln (n); (*Ввод массива A*) Readln (x); Sdv:=0; i:=1; While i<=n do Begin If A[i]=x then Sdv:=Sdv+1 Else A[i-Sdv]:=A[i]; i:=i+1 End; n:=n-Sdv; (*Вывод массива А*) End. В алгоритме по очереди просматриваются все элементы массива, начиная с первого. Элементы массива делятся на два вида: удаляемые и неудаляемые. Если в очередной клетке массива удаляемый элемент, тогда значение переменной Sdv увеличивается на единицу. Таким образом в переменной Sdv подсчитывается число удаляемых элементов. Если в рассматриваемой клетке находится неудаляемый элемент, то он сдвигается на Sdv позиций влево, как и определено правилом. Присоединение массива к массиву. Дано число m и ряд из m чисел. Затем дано число n и два ряда по n чисел. Требуется сформировать единый ряд чисел. Новый ряд получается при дописывании первого ряда в конец второго. Длина ряда увеличивается одной командой сразу на m. Program Prisoedinenie; Var n, m, i: integer; Var A, B: array [1.. 100] of integer; Begin Writeln (‘Объединение рядов: ’); Readln (m); (*Ввод массива В из m элементов*) Readln (n); (*Ввод массива A*) i:=1; While i<=m do Begin A[i+n]:=B[i]; i:=i+1 End; n:=n+m; (*Вывод массива А*) End. Первый ряд запоминается во вспомогательном массиве В, а длина ряда – в переменной m. Затем в массив А заноситься второй ряд. Теперь достаточно дописать ряд из массива В элемент за элементом в продолжение массива А. Перестановка соседей. Пусть дано число n и два ряда по n чисел в каждом. Требуется каждый элемент ряда, стоящий на четной позиции, поменять с предыдущим. Исполнение цикла по этому правилу должно начинаться со второго элемента ряда. Program Perestanovka; Var n, i, Buf: integer; Var A: array [1.. 100] of integer; Begin Writeln (‘Обмен чисел: ’); Readln (n); (*Ввод массива А*) i:=2; While i<=n do Begin Buf:=A[i]; A[i]:=A[i-1]; A[i-1]:=Buf; i:=i+2 End; (*Вывод массива А*) End. В задаче исходный ряд чисел запоминается в массиве А. Затем числа ряда переставляются в массиве А в соответствии с условием задачи. Когда ряд полностью построен, содержимое массива А выводится на экран. Слияние двух массивов. Пусть дано число n и два ряда по n чисел в каждом. Необходимо построить ряд, в котором первый элемент равен большему из первых элементов исходных рядов. Второй элемент – большему из вторых элементов исходных рядов и так для всех элементов. Вывести получившийся ряд. Исходные данные задачи – два ряда чисел. Разместить эти числа можно в двух массивах: в А – первый ряд, а в В – второй ряд. Вычисляя элемент за элементом, будем выводить эти числа на экран [8, c. 67]. Program Sliyanie; Var n, i, Max: integer; Var A, B: array [1.. 100] of integer; Begin Writeln (‘Выбор в парах: ’); Readln (n); (*Ввод массива А*) (*Ввод массива В*) i:=1; While i<=n do Begin If A[i]>B[i] then Max:=A[i] Else Max:=B[i]; Write (Max, ‘’); i:=i+1 End End. Сортировка выбором. Сортировка выбором упорядочивает ряд из n чисел по возрастанию с использованием поиска наибольшего числа ряда. Среди всех элементов массива от A[1] до A[n] находим наиболший и меняем его местами с последним. Затем точно так же поступаем с рядом от A[1] до A[n-1]. Процесс завершается, когда дойдем до ряда из одного элемента A[1] [8, c. 73].
Program SortVibor; Var n, i, j, Max, Pos: integer; Var A: array [1..100] of integer; Begin Writeln (‘Сортировка чисел: ’); Readln (n); (*Ввод массива А*) j:=n; While j>1 do Begin If A[i]>Max then Begin Max:=A[i]; Pos:=i End; i:=i+1; End; A[Pos]:=A[j]; A[j]:=Max; j:=j-1; End; (*Вывод массива А*) End. В программе переменная j указывает на последний элемент еще неотсортированной части ряда. В процессе поиска наибольший элемент среди чисел от A[1] до A[j] запоминается в переменной Max, а номер клетки – в переменной Pos. Затем найденный элемент меняется местами с элементом A[j]. Процесс поиска и обмена выполняется для значений j от n до 2 последовательно, постепенно уменьшая длину неотсортированной части ряда.
4.3 Описание игровых моментов при решении задач
При изучении
раздела информатики «Алгоритмизация и программирование» написание рабочей
программы является конечной целью применения игровых методов. Так, изучение
структурного типа данных массив происходит более успешно, если использовать прием
поэтапного усложнения задачи. Например, последовательная разработка алгоритмов
для задач на отыскание максимума (минимума), замену указанного элемента,
перестановка всех элементов массива в указанном порядке способствует развитию
алгоритмического мышления и правильного составления алгоритма на основе уже
имеющихся знаний. При этом прохождение каждого этапа написания программы
сопровождается определенным поощрением или правом перехода к следующему этапу.
В процессе работы учащиеся зарабатывают баллы, очки, бонусы, которые
суммируются и находят свое отражение в отметках.
Плодотворность
труда учащихся на уроке зависит от выбранной формы работы. Следует
комбинировать самостоятельную и коллективную работу учеников для осуществления
взаимопомощи и быстроты усвоения материала. Игра должна быть интересна и
охватывать всех учащихся.
Игра
«Группа разработчиков». Все учащиеся делятся на три группы. Каждая группа получает
задание написать алгоритм нахождения максимума (минимума), алгоритм,
сортирующий элементы массива по возрастанию (по убыванию), алгоритм,
суммирующий элементы массива. После написания алгоритмов группы учеников
заменяют одного из своих разработчиков представителем другой группы и совмещают
два составленных алгоритма. После второго обмена представителями в каждой
группе должны получиться одинаковые алгоритмы, выполняющие три поставленные
изначально задачи.
Кроме того,
принцип работы алгоритма на перестановку элементов массива в порядке
возрастания, поиска максимального (минимального) элемента удобно продемонстрировать
с помощью ролевого исполнения алгоритма, примером которого является игра
«Сценка».
Игра
«Сценка».
Выбирается N количество учащихся в зависимости от количества переменных в
алгоритме. Каждому ученику раздается соответствующая роль и его начальное
значение: переменная Счетчик (1 ученик), ячейки массива (количество учеников
зависит от размерности массива), переменная Максимум (1 ученик), переменная
Минимум (1 ученик), переменная Сумма (1 ученик), а также ученик, записывающий
на доске код программы. Задание: найти сумму максимального и минимального
элементов массива. При этом на доске чертится массив из N элементов, отводится
место для записи значения переменных. Далее учащиеся проигрывают алгоритм по
ролям: если переменная счетчик увеличивает свое значение, то ученик, отвечающий
за соответствующую ячейку массива, должен сказать значение своей ячейки или
сравнить его со значением соседней ячейки и изменить его, если это
соответствует алгоритму решения задачи, который один из учащихся записывает на
доске. При этом за каждый правильный шаг начисляется бонус, а за неверный
отнимается.
Немаловажной
составляющей успешного решения алгоритмических задач является частично
самостоятельная работа учащихся с возможностью проверить результаты своей
деятельности.
Игра
«Улитка».
Заранее готовиться плакат с изображением пустого массива в виде спирали
размерностью N. Учащиеся по очереди бросают кубики, при этом выпавшие числа
последовательно записывают в ячейки массива. Когда массив будет заполнен,
учащиеся получают задание отсортировать массив в порядке возрастания (убывания)
таким образом, чтобы каждое число повторялось в массиве только один раз. При
этом после написания каждого элемента программы один из учеников проверяет его,
внося при этом нужные коррективы в рисунок на плакате.
Зависимость
качественного результата совместной работы учащихся от эффективного труда
каждого ученика положительно влияет на ответственный подход учеников к решению
алгоритмической задачи.
Игра
«Японский рисунок». На доске имеется поле, размерностью N×M клеток. Каждый
учащийся получает многомерный массив, который содержит значения только 1 и 0.
Задача каждого ученика заключается в том, чтобы составить верный алгоритма
подсчета количества нулей и единиц в своем массиве, и зарисовать на доске
клетку, координаты которой по горизонтали и по вертикали равны соответственно
количеству нулей и единиц в своем массиве. Если все подсчеты будут выполнены
правильно, то из зарисованных клеток на доске сложится определенный рисунок.
Мотивационную
составляющую решения любой алгоритмической задачи определяет правильно
поставленная цель выполнения работы и ее дальнейшее применение.
Игра
«Спортлото». Учащиеся получают задание написать алгоритм, который бы обнулял те
стоки многомерного массива N×M, которые содержат указанное число. Затем
каждый ученик получает свой лотерейный билет (файл, содержащий многомерный
массив N×M). Учащиеся по очереди вытягивают бочонки с номерами, которые
последовательно вводят в написанную ранее программу. Таким образом, победителем
станет тот ученик, у которого раньше других будут вычеркнуты все строки его
лотерейного билета, т.е. обнуляться все строки многомерного массива.
Разработанные
игры «Группа разработчиков», «Сценка», «Улитка», «Японский рисунок»,
«Спортлото» могут применяться при изучении структурного типа данных массив
(приложение A).
Таким
образом, применение игровых форм в обучении основам алгоритмизации и
программирования способствует повышению эффективности традиционных методов
обучения за счет усиления доли исследовательских, информационно-поисковых
методов работы с информацией, а также стимулирования познавательного интереса и
творческой активности учащихся.
Заключение
Современный
этап развития общества характеризуется внедрением информационных технологий во
все сферы человеческой деятельности. Новые информационные технологии оказывают
существенное влияние и на сферу образования. Происходящие фундаментальные
изменения в системе образования вызваны новым пониманием целей, образовательных
ценностей, а также необходимостью перехода к непрерывному образованию,
разработкой и использованием новых технологий обучения, связанных с оптимальным
построением и реализацией учебного процесса с учетом гарантированного
достижения дидактических целей.
В данной
курсовой работе мы попытались решить одну из дидактических задач
образовательного учреждения – формирование мышления учащегося, развитие его
интеллекта. Поскольку важной составляющей интеллектуального развития человека
является алгоритмическое мышление, то обучение решению стандартных
алгоритмических задач является первичной целью школьного образования на разных
ступенях изучения информатики.
В результате
нашей работы были разработаны интересные методы построения и использования
алгоритмов при решении стандартных задач из раздела «Основы алгоритмизации и
программирование» на примере учебных задач по работе со структурным типом
данных массив. Так как разнообразие способов и форм построения работы на уроке
способствует избежанию рутинности и однообразности при решении стандартных задач.
Создание
игровых моментов, которые можно использовать при решении задач из раздела
«Основы алгоритмизации и программирования», было направлено на повышение
эффективности работы на уроках информатики и качественному повышению уровня
умений учащихся, опираясь на их познавательный интерес. Применение
разработанных игровых моментов при решении задач на использование структурного
типа данных массив позволит осуществить детальный разбор алгоритмов по шагам с
пояснением работы команд самими учащимися. Дальнейшее использование правильно составленных
алгоритмов способствует сделать работу учащихся целенаправленной и
мотивированной.
Таким
образом, поиск новых методов организации работы учащихся на уроке является
одним из способов повышения эффективности урока как неотъемлемой составляющей
образовательного процесса. Использование игровых моментов является синтезом
классических способов построения урока и внедрением новых форм деятельности учащихся
на уроке информатики.
Список
использованных источников
1. Бочкин, А.И. Методика
преподавания информатики / А.И. Бочкин. – Минск: Выш. школа, 1998. – 431 с.
2. Воскресная компьютерная
школа [Электронный ресурс] / Система программиования Pascal ABC. – Режим
доступа: http://sunschool.math.rsu.ru. – Дата доступа:
25.02.2010.
3. Еремин, О.Ф. Методическое
пособие по программированию на языке Pascal ABC / О. Ф. Еремин. – М.: Моздок,
2009. – 49 с.
4. Заборовский, Г.А.
Информатика: уч. пособие для 9-го кл. / Г. А. Заборовский, А.И. Лапо, А.Е. Пупцев.
Минск: Нар. Асвета, 2009. – 191 с.
5. Информационный канал Sub@cribe.ru
[Электронный ресурс] / Программирование на Паскале. Новая методика
обучения. – Режим доступа: http://subscribe.ru. – Дата доступа: 16.03.2010.
6. Лапчик, М.П. Методика
преподавания информатики / М. П. Лапчик, И.Г. Семакин, Е.К. Хеннер. – М.: Изд.
центр «Академия», 2001. – 624 с.
7. Малев, В.В. Общая
методика преподавания информатики / В. В. Малев. – Воронеж: ВГПУ, 2005. – 271
с.
8. Миняйлова, Е.Л.
Информатика: 9 класс: учебный курс / Е. Л. Миняйлова, Д. А. Вербовиков, Н. Р. Коледа.
Минск: Аверсэв, 2009. – 172 с.
9. Ушаков, Д.М. Паскаль для
школьников / Д.М. Ушаков, Т.А. Юркова. – СПб.: Питер, 2010. – 256 с.
10. Фестиваль педагогических
идей «Открытый урок» [Электронный ресурс] / «Алгоритмизация и программирование»
в базовом курсе школы. – Режим доступа: http://festival.1september.ru.
Дата доступа: 26.02.2010.
|