Элективный курс "ПРОГРАММИРОВАНИЕ" 11 класс ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
— Основной задачей курса является знакомство учащихся с применением методов информатики для решения математических задач, а также с математическими методами, используемыми в информатике. — Курсу отводится по 4 часа в неделю в 10 и 11 классах (всего 272 ч). Помимо основных учебных часов, предусматривается проведение летней практики, на которую выделяется не менее 28 часов. — Вместе с тем при определении содержания и составлении темати¬ческого планирования учитывались особенности старших и выпускных классов. Параллельно с основным курсом рекомендуется изучать фа¬культативный курс, разделы которого приводятся ниже. Факультатив¬ный курс изучается за счет часов, отводимых для факультативных и кружковых занятий. — Основной курс состоит из пяти разделов: — Элементы компьютерной графики. — Элементы теоретического программирования. — Элементы вычислительной математики. — Алгоритмы и структуры данных. — Программирование на процедурном языке высокого уровня (Си). Программой предусматривается последовательное, параллельное и — концентрическое изучение этих разделов. Программа представляет собой программу-максимум, а программа-минимум получается исключением ряда тем (они далее выделены таким шрифтом). Эти темы не включены в тематическое планирование. Они могут изучаться за счет часов резерва, предлагаться учащимся для самостоятельной проработки, служить темами докладов, исследо¬вательских работ и пр. — Факультативный курс, рассчитанный на 2 часа в неделю (общий объем 136 ч), состоит из пяти разделов: — Программирование на ассемблере. — Методы функционального программирования. Обзор языка Лисп. — Методы логического программирования. Обзор языка Пролог. — Идеи объектно-ориентированного программирования и их реа¬лизация в языке Си++. — Практикум по решению задач. — Курс рассчитан на широкое применение ПЭВМ и предусматривает выделение половины всего времени на практическую работу на компьютере. Для выполнения программы в школе должны быть IBM-совместимые персональные компьютеры в количестве, достаточном для обеспечения всех учащихся указанных классов индивидуальными рабочими местами на практических занятиях. СОДЕРЖАНИЕ ОБУЧЕНИЯ — Элементы компьютерной графики 1. программирование простейших геометрических построений Компьютерная система координат. Предмет компьютерной графи¬ки. Преобразование системы координат. Построение простейших геометрических фигур: линий, прямоугольников, окружностей, дуг, эллипсов. Графический курсор. Простейшие динамические изображе¬ния: вращение отрезка, вращение вершин многоугольника («мистифи¬кации»). Учащиеся должны знать: — компьютерную систему координат; — процедуры и функции для построения простейших геомет¬рических фигур. Учащиеся должны уметь: — записывать функции преобразования между системами координат с различным расположением осей; — использовать графические процедуры для построения изображений простейших геометрических фигур, а также несложных статических и динамических сцен. 2. Построение и исследование графиков функций с помощью компьютера. Параметрические v полярные кривые — Знакомство с одним из «математических» пакетов (Eureka, MathCad). Линейные преобразования графиков функций. Параметрические урав¬нения линий. Параметрические уравнения прямой. Параметрическое задание окружности и эллипса. Исследование на компьютере некоторых свойств эллипса. Исследование на компьютере некоторых параметрически заданных кривых: циссоиды, спирографов. Полярная система координат. Связь между полярной и декартовой системами координат. Исследование на компьютере некоторых полярных кривых. Учащиеся должны знать: — назначение и основные функции «математических» пакетов; — формулы линейных преобразований графиков функций; — способ параметрического задания линий; — параметрические уравнения прямой; — параметрические уравнения окружности и эллипса; — полярную систему координат; — параметрические и полярные уравнения некоторых кривых; / — формулы преобразования между полярной и декартовой системами координат. Учащиеся должны уметь: — записывать алгоритм построения графика функции одной пере¬менной (выполняя при необходимости линейные преобразования); — переходить от декартовой системы координат к полярной и обратно; — записывать алгоритмы построения кривых, заданных параметри¬ческими и полярными уравнениями. 3. Геометрические преобразования на плоскости: движение, гомоте¬тия, поворот ' — Вывод формул линейных преобразований. Способы описания мно¬гоугольников. Шрифты, векторные шрифты. Учащиеся должны знать: — формулы поворота, переноса и гомотетии на плоскости; — способы описания плоских многоугольников. Учащиеся должны уметь: — использовать линейные преобразования на плоскости при созда¬нии динамических изображений. 5. Некоторые рекурсивные алгоритмы компьютерной графики, их итеративная реализация — Исследование изображений сателлитов. Закраски. Алгоритмы за¬краски: рекурсивные и итеративные реализации. Исследование на компьютере некоторых замечательных «рекурсивных» кривых: драко¬на, Гильберта, Серпинского. Учащиеся должны знать: — процедуры закраски; — рекурсивный и итеративный алгоритмы закраски замкнутых областей; — способы описания некоторых «рекурсивных» кривых: дракона, Гильберта и Серпинского. Учащиеся должны уметь: — использовать стандартные процедуры закраски; — записывать алгоритмы построения некоторых «рекурсивных» кривых. 5. Построение некоторых видов фрактальных кривых Фрактальные кривые: «шаблон + базовая фигура», «команды чере¬пашки». — Учащиеся должны знать: — — способ вывода формул для построения фрактальных кривых, заданных шаблоном и базовой фигурой; — способ описания фрактальных кривых «командами черепашки». Учащиеся должны уметь: — строить фрактальные кривые, заданные указанными способами. 6. Параллельное и центральное проектирование. Построение изобра¬жений многогранников — Виды проектирования. Вывод формул параллельного и централь¬ного проектирования. Исследование изображений правильных много¬гранников при различных видах проектирования. — Удаление невидимых ребер. Линейные преобразования в простран¬стве. Простые динамические изображения с использованием правиль¬ных многогранников. Учащиеся должны знать: —^ формулы параллельного и центрального проектирования; — способы описания многогранников. Учащиеся должны уметь: — записывать алгоритмы построения изображений правильных многогранников в различных проекциях. 7. Построение изображений графиков функций двух переменных Функции двух переменных. График функции двух переменных. — Линейные преобразования графиков функций двух переменных. Построение изображений графиков функций двух переменных. Алго¬ритмы удаления невидимых линий: «алгоритм минимакса» и «алгоритм художника». — Учащиеся должны знать: — определения функции двух переменных и графика функции двух переменных; — алгоритмы удаления невидимых линий при построении изобра¬жений поверхностей. Учащиеся должны уметь: — записывать различные алгоритмы построения изображений поверхностей. 8. Цвета, 16- и 256-цветные графические режимы Кодирование цвета в 16 и 256 цветных режимах. Построение изо¬бражений освещенных объектов («освещенных» графиков функций двух переменных, сфер). 9. Структура PCX-файлов. Алгоритм RLE-кодирования. Кодирование 256-цветных изображений. 10. Эффективные алгоритмы построения простых геометрических фигур (алгоритмы Брезенхема) Алгоритмы Брезенхема для построения прямой и окружности (эллипса). Учащиеся должны знать: — алгоритмы построения простых геометрических фигур с исполь¬зованием только целочисленной арифметики. Учащиеся должны уметь: — записывать алгоритмы Брезенхема для построения линии, окруж¬ности и эллипса.
Элементы теоретического программирования 1.Универсальный исполнитель. Машина Тьюринга. ЭВМ как универ¬сальный исполнитель Исполнители алгоритмического типа: среда, действия над объектами среды. Реализация одного исполнителя посредством другого, эквивалентные исполнители. Универсальный исполнитель, тезис Черча. Машина Тьюринга, примеры программ для маши¬ны Тьюринга. Алгоритмическая неразрешимость, 10-я проблема Гильберта. Учащиеся должны знать: —понятие среды и объекта среды и исполнителя; — понятие эквивалентных исполнителей; — понятие универсального исполнителя; — примеры универсальных исполнителей; — понятие алгоритмической неразрешимости задачи. Учащиеся должны уметь: — описывать среду и систему допустимых действий для простейших исполнителей алгоритмического типа; — программировать несложные задачи на машине Тьюринга. 2.Эквивалентность алгоритмов. Эффективность алгоритмов. Слож¬ность алгоритмов Учащиеся должны знать: — понятие эквивалентных алгоритмов; — по каким параметрам оценивается эффективность алгоритмов; — понятие сложности алгоритма, примеры алгоритмов экспо¬ненциальной и полиномиальной сложностей. Учащиеся должны уметь: — определять в несложных случаях эквивалентность алгоритмов; — проводить теоретические и экспериментальные оценки эффек¬тивности алгоритмов (в простейших случаях); — оценивать сложность стандартных алгоритмов. 3.Простейшие приемы доказательства правильности и конечности итеративных и рекурсивных алгоритмов. Понятия инварианта и лимитирующей функции Учащиеся должны знать: — что значит доказать правильность алгоритма; — понятия инварианта и лимитирующей функции. Учащиеся должны уметь: — использовать лимитирующую функцию для доказательства конечности алгоритма, а инвариант — для доказательства правильнос¬ти работы алгоритма. Элементы вычислительной математики 1. Точное и приближенное решение уравнений Точные и приближенные вычисления. Погрешности. Исторический обзор развития методов решения алгебраических уравнений третьей и четвертой степеней. Решение уравнений высших степеней, исто¬рический обзор, связь с геометрическими построениями, методы под¬бора корней. Учащиеся должны знать: — что такое точные и приближенные вычисления, погрешности вычислений; — методы решения алгебраических уравнений третьей, четвертой степени и высших степеней; — методы подбора корней. Учащиеся должны уметь: — записывать алгоритм решения алгебраического уравнения мето¬дом подбора. 2. Решение уравнений методами половинного деления, хорд и касательных Условия применимости методов половинного деления, хорд, каса¬тельных, комбинированного метода хорд и касательных, решение уравнений указанными методами. Приближенное извлечение корня п-й степени из действительного числа. Учащиеся должны знать: — методы половинного деления, хорд, касательных, комбинирован¬ный метод хорд и касательных; — условия применимости указанных методов; —рекуррентную формулу нахождения корня п-й степени из дей¬ствительного числа. Учащиеся должны уметь: — записывать алгоритмы решения алгебраических уравнений методами половинного деления, хорд, касательных и комбинирован¬ным методом хорд и касательных. 3. Решение систем линейных уравнений Определитель квадратной матрицы. Некоторые свойства определи¬телей. Решение систем линейных уравнений по формулам Крамера. Исследование систем линейных уравнений с помощью определителей. Решение систем линейных уравнений методом Гаусса. — примеры датчиков случайных чисел, требования к датчикам случайных чисел. Учащиеся должны уметь: — записывать алгоритмы вычисления интегралов указанными ме¬тодами; — записывать алгоритмы датчиков случайных чисел, оценивать качество датчиков. Алгоритмы и структуры данных 1. Структуры данных: массивы, структуры (записи), объединения, множества, списки, стеки, очереди, деки, двоичные деревья Структуры данных: функциональная спецификация, представление в памяти ЭВМ. Моделирование одних структур данных с использова¬нием других. Структуры данных языка и «надъязыковые» структуры. Учащиеся должны знать: ~ основные структуры данных (массивы, записи, объединения, множества, списки, стеки, очереди, деки, двоичные деревья), их описание и представление в памяти ЭВМ. Учащиеся должны уметь: — описывать указанные структуры данных; — производить над указанными структурами данных основные операции. 2. Инфиксная, префиксная и постфиксная формы записи выражений. Алгоритмы преобразования одной формы записи выражения в другую. Вычисление выражений Различные формы записи выражений. Различные формы представ¬ления выражения, представление выражений деревьями. Итеративные и рекурсивные алгоритмы преобразования одной формы записи выражения в другую. Итеративные и рекурсивные алгоритмы вычис¬ления выражений. Учащиеся должны знать: — различные способы записи выражений; — рекурсивные и итеративные алгоритмы преобразования одной формы записи выражений в другую; — рекурсивные и итеративные алгоритмы вычисления выражений. Учащиеся должны уметь: — записывать алгоритмы преобразования между различными фор¬мами записи выражений; — записывать алгоритмы вычисления выражений. 3. Двоичные деревья. Деревья поиска Поиск в дереве поиска, добавление элемента в дерево поиска, удаление элемента из дерева поиска. Реализация простейшей эксперт¬ной системы. Учащиеся должны знать: — определения двоичного дерева и дерева поиска; алгоритмы поиска, добавления и удаления элементов. Учащиеся должны уметь: -- записывать алгоритмы поиска, добавления и удаления элементов; — реализовать простейшую экспертную систему с использованием двоичного дерева поиска. 4. Графы. Поиски в ширину и в глубину Графы, способы задания: матрица смежности, список ребер. Гра¬фовые модели некоторых задач. Обходы графа. Графы и бинарные отношения. Каркасы, каркасы взвешенного графа. Учащиеся должны знать: — определение графа; — способы описания графа;
— алгоритмы поиска в глубину и в ширину. Учащиеся должны уметь: — описывать граф различными способами; — записывать алгоритмы поиска в графе в глубину и в ширину. 5. Поиск подстроки Линейный поиск подстроки. Эффективные алгоритмы поиска подстроки: Кнута — Морриса — Пратта, Боуэра — Мура. Алгоритм Рабина: подходящие функции. Сопоставление с образцом, содержащим два специальных символа: «*» и «?». Использование сопоставления с образцом для построения простейшей экспертной системы. Учащиеся должны знать: — различные методы поиска подстроки в строке; — алгоритм сопоставления с образцом, содержащим два специаль¬ных символа. Учащиеся должны уметь: — записывать указанные алгоритмы поиска подстроки в строке; — записывать алгоритм сопоставления с образцом, содержащим два специальных символа; — реализовать простейшую экспертную систему, использующую сопоставление с образцом. 6. Комбинаторные алгоритмы Итеративные и рекурсивные алгоритмы генерирования всех под¬множеств конечного множества, подмножеств с фиксированным числом элементов, перестановок. Использование внутреннего представ¬ления целых чисел для реализации алгоритмов для «небольших» множеств. Учащиеся должны знать: — итеративные и рекурсивные алгоритмы генерирования всех подмножеств конечного множества, подмножеств с фиксированным числом элементов, перестановок. Учащиеся должны уметь: — записывать указанные алгоритмы, в том числе с использовани¬ем машинного представления целых чисел. Программирование на языке высокого уровня (Си) 1. Обзор языка Разбор примеров программ, иллюстрирующих основные вопросы языка Си: структура программы, типы данных, описания, операции, управляющие конструкции, массивы, указатели, строки, структуры, препроцессор. Учащиеся должны знать: — основные составляющие языка Си. Учащиеся должны уметь: — читать готовые программы на Си; — писать программы «по образцу*. 2. Типы, операции и выражения Типы данных, представление в памяти данных основных типов. Операции над данными основных типов. Учащиеся должны знать: — типы данных и их представление в памяти компьютера; — операции над данными основных типов. Учащиеся должны уметь: — записывать выражения по правилам языка Си; — вручную вычислять значения сложных выражений. 3. Управляющие конструкции Блоки, условный оператор, переключатель, циклы. Учащиеся должны знать: — управляющие конструкции языка. Учащиеся должны уметь: — записывать на Си алгоритмы, содержащие циклы и ветвления. 4. Указатели и массивы. Строки Массивы, инициализация массивов при описании. Указатели, операции взятия адреса и разадресации, использование указателей при передаче параметров в функции. Указатели и массивы. Индексирова¬ние одномерных и многомерных массивов. Строки, основные операции со строками. Учащиеся должны знать: — как описываются и представляются в памяти массивы и строки; — как описываются указатели и как они связаны с массивами; — как происходит передача параметров в функции. Учащиеся должны уметь: — описывать и инициализировать указатели, массивы и строки; — передавать параметры в функции по значению и по ссылке. 5. Потоки и файлы Потоки, стандартные потоки. Файлы: текстовые и бинарные. Учащиеся должны знать: — различие между текстовыми и бинарными файлами, особеннос¬ти организации текстовых файлов; — стандартные потоки ввода/вывода. Учащиеся должны уметь: — — производить основные операции над текстовыми и бинарными файлами. — 6. Препроцессор — Макроопределения без параметров и с параметрами. Учащиеся должны знать: — — механизм работы с макроопределениями без параметров и с параметрами. — Учащиеся должны уметь: — — использовать макроопределения, понимать, где их использование целесообразно. — 7. Введение в объектно-ориентированное расширение Си (Си++) Классы, инкапсуляция, наследование. Методы классов, полимор¬физм, виртуальные методы. — Учащиеся должны знать: — — основные понятия технологии объектно-ориентированного про¬граммирования (инкапсуляция, наследование, полиморфизм). — Учащиеся должны уметь: — — использовать объектно-ориентированные средства при разработке программ. — 8. Организация многомодульных программ — Заголовочные файлы. Классы памяти, прототипирование. Пример многомодульной программы. Файл проекта. Компиляция и компонов¬ка. Использование библиотек (на примере использования библиотеки для обработки изображений). — Учащиеся должны знать: — суть компиляции и компоновки (линковки); — назначение заголовочных файлов; — — назначение и способы организации файлов проекта. Учащиеся должны уметь: — использовать файлы проекта; — — использовать нестандартные библиотеки (в частности - библи¬отеку для обработки изображений). — Содержание летней практики — На летней практике предусматривается реализация одного задания (проекта) по созданию интерпретатора машины Тьюринга. Данный интерпретатор используется в дальнейшем для рассмотрения ряда тем раздела 2.
ЛИТЕРАТУРА:
1. Абрамов С.А. Математические построения и программирова¬ние.— М.: Наука, 1978. 2. Аммерал Л. Принципы программирования в машинной графи¬ке.— М.: Сол Систем, 1992. 3. Керниган Б., Ритчи Д. Язык программирования Си.— М.: Фи¬нансы и статистика, 1992. 5. 4.Сенокосов А.И., Гейн А.Г. Информатика: Учеб. для 8 —9 кл. с углубл. изуч. информатики. — М.: Просвещение, 1995 Шень А. Программирование: теоремы и задачи. — М.: МЦНМО, 1995. 6. Шикин Е.В., Боресков А.В, Компьютерная графика.- М.: Диалог- МИФИ, 1995.
7. Методика факультативных занятий в 7-8 классах: Пособие для учителя/ A.M. Абрамов, И. Н. Антипов, Л. Ю. Березина и др.— М.: Просвещение, 1981. 8. Задачи по программированию/ С.А. Абрамов, ГГ. Гнездилова, Е. Н. Капустина, М. И. Селюн.— М.: Наука, 1988. 9. Абрамов С.А., Зима Е.В. Начала информатики.— М.: Наука,1989. 10. Брудно А.Л., Каплан Л.И. Московские олимпиады по программированию.— М.: Наука, 1990.
|