Правительство Российской Федерации

Государственное образовательное бюджетное учреждение высшего профессионального образования

Государственный университет -Высшая школа экономики

Факультет Бизнес Информатика

Программа дисциплины

"Программирование"

для направления 080700.62 «Бизнес-информатика» подготовки бакалавра

Автор программы доцент, к. т.н.

bpoklonov@*****


2010 г.

Рекомендована секцией УМС по бизнес-информатике

Председатель

« » 2010 г.

Одобрена на заседании кафедры Архитектуры программных систем Зав. кафедрой

« »

Утверждена Ученым Советом факультета Бизнес-информатики

Ученый секретарь
« » 2010 г.

Москва

I. Пояснительная записка

Автор программы:

доцент, к. т.н.

Общие сведения об учебном курсе:

дисциплина читается студентам бакалавриата на факультете бизнес-информатики ГУ-ВШЭ. Она входит в блок общих математических и естественно-научных дисциплин и читается в первом, втором, третьем и четвёртом модулях первого курса обучения. Продолжительность курса составляет 144 аудиторных учебных часа (37 недель), в том числе: 72 часа лекционных занятий, 72 часа практических занятий, и 144 часов самостоятельной работы. Рубежный контроль - домашнее задание, 5 контрольных работ, зачеты по окончании первого и второго модуля, курсовая работа и письменный экзамен по окончании четвёртого модуля.

Требования к студентам:

освоение курса предполагает предварительное знакомство студентов с содержанием учебных дисциплин: "Математика".

Цель курса:

НЕ нашли? Не то? Что вы ищете?

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

Аннотация:

курс построен на основе учебника Г. Шилдта. С#. Учебный курс. Предлагаемый курс ориентирован на ведение проектирования и разработки программных продуктов.

Учебные задачи курса:

в результате прохождения учебного курса студенты должны:

-  получить углубленные знания в области методов и средств разработки
алгоритмов и программ для решения прикладных и системных задач,
средств описания данных и последовательности их обработки, приемов
процедурного и объектно-ориентированного программирования;

-  иметь представление о современных методах и технологиях разработки
программных систем;

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

II. Тематический план учебной дисциплины

Название темы

Всего часов по дисциплине

Аудиторные часы

Самостоятельная работа

Лекции

Практические занятия

Первый модуль (48 часов)

1

Введение

6

2

4

2

Основные элементы программирования

68

30

16

22

Второй мод:

улъ (32 час)

3

Массивы

34

8

8

18

4

Программирование с использованием классов

34

8

8

18

Третий мод]

улъ (24 час)

5

Исключения и отладка

10

2

2

6

6

Событийное управление

24

6

6

12

7

Графический вывод.

20

4

4

12

Четвёртый модуль (40 час)

8

Ввод-вывод.

26

4

8

14

9

Интерфейсы и коллекции

22

4

6

12

10

Методы работы с файловой системой

42

2

14

26

11

Заключение

2

2

Итого:

288

72

72

144

III. Базовые учебники

Книги:

•  Г. Шилдт. С#. Учебный курс. С-Петербург: Питер, 2002..

•  Фролов С#. Самоучитель. М. Диалог-МИФИ, 2003

•  , Фролов проектирование приложений С#. М. Кудиц-
образ, 2003

•  Г. Шилдт. Полный справочник по С#. М., С-Петербург. Киев. Издательский дом
Другие источники:

•  Секунов С#. С-Петербург. БХВ-Петербург, 2001.

•  Ч. Петцольд. Программирование в тональности С#. М. Microsoft Press, 2004.

•  Д. Прайс, М. Гандерлой. Visual C#.NET. Полное руководство. М. Энтроп, С-
Петербург. КОРОН Апринт, Киев. ВЕК, 2004.

•  Жарков графика, мультимедиа и игры на Visual C#. M.
"Жарков Пресс", 2005

IV. Формы контроля

-  промежуточный контроль: зачеты в конце 1-го и 2-го модуля;

-  итоговый контроль: экзамен в конце 4-го модуля;

Текущий контроль предусмотрен по каждому модулю. Формы текущего контроля: 1 домашнее контрольное задание, 5 контрольных письменных работ и курсовая работа. Контрольное домашнее задание включает разработку, кодирование, тестирование и отладку программ решения нескольких задач из предметной области изучаемой темы. За одно контрольное домашнее задание выставляется одна оценка по десятибалльной шкале. Контрольная письменная работа предусматривает программную реализацию нескольких задач и выполняется на практических занятиях. На выполнение одной задачи в рамках практического занятия отводится 30-40 мин. учебного времени. За одну контрольную работу независимо от количества задач выставляется одна оценка по десятибалльной шкале.

Промежуточный контроль включает зачеты в конце 1-го и 2-го модуля. Зачёт в конце 1-го модуля выставляется по итогам проведения контрольных работ №1(Контроль 1) и №2(Контроль 2). Зачёт определяется как средневзвешенная оценка по десятибалльной системе О1 по формам контроля

Формы работы

Вклад в итоговую оценку (%) -

Контроль 1 (К1)

40

Контроль 2 (К2)

60

О1=0,4*К1+0,6*К2

При выставлении зачёта за 1-й модуль средневзвешенная оценка округляется до большего целого, если дробная часть оценки не ниже 0.5, в противном случае оценка округляется до меньшего целого.

Зачёт в конце 2-го модуля выставляется по итогам проведения контрольных работы №3(Контроль 3) и №4(Контроль 2). Зачёт определяется как средневзвешенная оценка по десятибалльной системе О2 по формам контроля

Формы работы

Вклад в итоговую оценку (%) -

Контроль 3 (К3)

50

Контроль 4 (К4)

50

О2=0,5*К3+0,5*К4

При выставлении зачёта за 2-й модуль средневзвешенная оценка округляется до большего целого, если дробная часть оценки не ниже 0.5, в противном случае оценка округляется до меньшего целого. При выставлении зачётов О1 и О2 по 5-балльной шкале используется решающее правило:

Таблица соответствия оценок по десятибалльной и пятибалльной системам

По десятибалльной шкале

По пятибалльной шкале

1 - неудовлетворительно

2 - очень плохо 3 - плохо

не зачтено

4 - удовлетворительно

5 - весьма удовлетворительно

зачтено

6 - хорошо

7 - очень хорошо

8 - почти отлично

9 - отлично 10-блестяще

Итоговый контроль включает 2 зачета и экзамен. Итоговая оценка по учебной дисциплине складывается из следующих элементов:

-  Оценка итогового контроля по модулю 1, (Контроль 1).

-  Оценка итогового контроля по модулю 2, (Контроль 2).

-  Оценка итогового контроля по модулям 3,4 (Контроль 3)

-  Письменный экзамен (120 мин)

Итоговая оценка по учебной дисциплине определяется как средневзвешенная оценка по десятибалльной шкале Оит по формам контроля:

Формы работы

Вклад в итоговую оценку (%) -

Контроль 1 (К1)

12

Контроль 2 (К2)

13

Контроль 3 (К3)

35

Экзамен (ЭКЗ)

40

Оит = 0,12*К1 + 0,13*К2 + 0,35*К3+0,40*ЭКЗ

При выставлении итоговой оценки Оит за дисциплину средневзвешенная оценка округляется до большего целого, если дробная часть оценки не ниже 0.5, в противном случае оценка округляется до меньшего целого. При выставлении итоговой оценки Оит по 5-балльной шкале используется решающее правило:

Таблица соответствия оценок по десятибалльной и пятибалльной системам

По десятибалльной шкале

По пятибалльной шкале

1 - неудовлетворительно

2 - очень плохо

3 - плохо

неудовлетворительно - 2

4 - удовлетворительно

5 - весьма удовлетворительно

удовлетворительно - 3

6 – хорошо

7 - очень хорошо

хорошо - 4

8 - почти отлично

9 - отлично 10-блестяще

отлично - 5


V. Содержание программы

Введение.

• Содержание темы:

•  Задачи

•  Цели

•  Содержание и порядок прохождения дисциплины.

Тема 1: Основные элементы программирования

♦Содержание темы:

•  Определение класса. Пространство имен. Статические поля и методы.

•  Значимые и ссылочные типы. Базовые значимые типы: предельные значения,
свойства и методы.

•  Константы, переменные, именованные константы.

•  Арифметические операции и выражения.

•  Проблема преобразования типов. Явное преобразование типов.

•  Присваивание простое, составное, унарное. Проблема преобразования типов
при присваивании.

•  Инициализация переменных.

•  Логические операции и операции отношения. Логические выражения.
Условная операция.

•  Первичное представление о строке символов. Операции присваивания,
сравнения и конкатенации.

•  Преобразование строки в значение базового типа и преобразование значения
базового типа в строку

•  Управляющие структуры. Блок операторов. Ветвление и сокращенное
ветвление. Вложенность управляющих структур. Множественное ветвление.
Использование строк в качестве переключателя.

•  Циклы и средства управления итерациями.

•  Понятие исключения и простейшие способы обработки исключений.

•  Статические методы. Определение метода. Параметры метода и их
модификаторы. Вызов метода. Понятие сигнатуры метода. Перегрузка
методов.

♦ Основная литература

•  Г. Шилдт. С#. Учебный курс. С-Петербург: Питер, 2002. С.54-63. С.66-79. С.81-116.
С.138-146.С.148-164.

•  Г. Шилдт. Полный справочник по С#. М., С-Петербург. Киев. Издательский дом
"Вильяме", 2004. С.53-126

•  Фролов С#. Самоучитель. М. Диалог-МИФИ, 2003, С.55-108.

♦ Дополнительная литература

•  Д. Прайс, М. Гандерлой. Visual C#.NET. Полное руководство. М. Энтроп, С-
Петербург. КОРОНАпринт, Киев. ВЕК, 2004. С.44-114

•  Секунов С#. С-Петербург. БХВ-Петербург, 2001. С.53-74

Тема 2: Массивы. ♦ Содержание темы:

•  Одномерные массивы: объявление и инициализация.

•  Доступ к элементу массива.

•  Основные свойства и методы.

•  Присваивание применительно к ссылкам. Проблема потери ссылок. Сборка
мусора.

•  Строки. Форматирование строки. Методы обработки строк. Преобразование
строки в массив символов и обратное преобразование.

•  Динамические строки. Преобразование строки в динамическую строку и
обратное преобразование

•  Массив строк.

•  Параметры метода Main.

•  Двухмерные массивы.

•  Массивы с индивидуальной длиной строки.

•  Массив объектов object.

•  Упаковка и распаковка значений. Динамическая идентификация типов.

•  Динамические массивы.

♦ Основная литература

• Г. Шилдт. Полный справочник по С#. М., С-Петербург. Киев. Издательский

дом "Вильяме", 2004. С.154-164

• Г. Шилдт. С#. Учебный курс. С-Петербург: Питер, 2002. С. 164-180.

• Фролов С#. Самоучитель. М. Диалог-МИФИ, 2003, С.225-231.

♦ Дополнительная литература:

• Секунов С#. С-Петербург. БХВ-Петербург, 2001. С.160-165

Тема 3: Программирование с использованием классов

Содержание темы:

•  Определение собственных классов. Статические поля и методы.

•  Инкапсуляция полей и методов. Поля только для чтения. Конструктор класса.
Конструктор умолчания.

•  Свойства классов Массив объектов классов, определяемых программистом.

•  Отношение агрегации между классами.

•  Конструктор копирования Отношение композиции. Структуры:

•  Определение, объявление переменных, операции.

•  Копирование полей при присваивании.

•  Конструктор умолчания.

•  Наследование. Переопределение методов.

•  Виртуальные методы. Абстрактные классы

•  Полиморфизм и его виды.

•  Перегрузка операций

♦ Основная литература

• Г. Шилдт. С#. Учебный курс. С-Петербург: Питер, 2002. С.288-360.

•  Фролов С#. Самоучитель. М. Диалог-МИФИ, 2003, С.161-174.
С.250-279.

•  Г. Шилдт. Полный справочник по С#. М., С-Петербург. Киев. Издательский
дом "Вильяме", 2004. С.256-349

♦ Дополнительная литература:

• Д. Прайс, М. Гандерлой. Visual C#.NET. Полное руководство. М. Энтроп, С-
Петербург. КОРОНАпринт, Киев. ВЕК, 2004. С.351-405

Тема 4: Событийное управление.

Содержание темы:

•  Понятие события. Генерация и обработка событий.

•  Типовая структура приложения, управляемого по событиям.

•  Визуальное программирование. Понятие формы и элементов управления

•  Визуальное программирование формы. Стандартные элементы управления.

•  Установка свойств формы и ее элементов. Связывание элементов формы со
стандартными обработчиками событий.

•  Создание собственных обработчиков событий.

•  Программное изменение свойств элементов.

•  Многооконный интерфейс. Создание и отображение формы.

•  Способы передачи данных между формами. Диалоговые окна.

♦ Основная литература:

•  Г. Шилдт. Полный справочник по С#. М, С-Петербург. Киев. Издательский
дом "Вильяме", 2004. С.689-706

•  , Фролов проектирование приложений С#. М.
Кудиц-образ, 2003, С.9-17, С.175-225

♦ Дополнительная литература:

• Д. Прайс, М. Гандерлой. Visual C#.NET. Полное руководство. М. Энтроп, С-
Петербург. КОРОНАпринт, Киев. ВЕК, 2004. С.806-837

Тема 6: Ввод-вывод.

Содержание темы:

•  Понятие потока и хранилища данных.

•  Символьные потоки. Открытие и закрытие потока.

•  Кодирование символов в файле.

•  Методы чтения и записи

•  Двоичные потоки. Открытие и закрытие потока.

•  Особенности представления строк в файле. Методы чтения и записи.

•  Потоки, ориентированные на байты. Открытие и закрытие потока. Методы
чтения и записи.

•  Понятие сериализации. Открытие потока. Определение объекта
форматирования. Двоичное форматирование и форматирование SOAP

♦ Основная литература:

•  Г. Шилдт. С#. Учебный курс. С-Петербург: Питер, 2002. С.386-419.

•  Фролов С#. Самоучитель. М. Диалог-МИФИ, 2003, С.464-506.

♦ Дополнительная литература:

• Д. Прайс, М. Гандерлой. Visual C#.NET. Полное руководство. М. Энтроп, С-
Петербург. КОРОНАпринт, Киев. ВЕК, 2004. С.531-536

Тема 7: Графический вывод.

Содержание темы:

•  Организация графического вывода.

•  Контекст отображения.

•  Рисование на форме и в окне элемента управления. Идентификатор окна.
Проблема перерисовки изображения и способы ее решения.

•  Рисование графических примитивов: линии, прямоугольники и
многоугольники, эллипсы, сегменты, кривые, окрашенные фигуры.

•  Растровые и векторные изображения. Буксировка, загрузка, рисование.
Инструменты рисования: перья, кисти, шрифты. Вывод текста

♦ Основная литература:

• , Фролов проектирование приложений С#. М.
Кудиц-образ, 2003, С.9-17, С.388-448

♦ Дополнительная литература:

• Д. Прайс, М. Гандерлой. Visual C#.NET. Полное руководство. М. Энтроп, С-
Петербург. КОРОНАпринт, Киев. ВЕК, 2004. С.667-683

Тема 8: Интерфейсы и коллекции.

Содержание темы:

•  Понятие интерфейса, реализация интерфейса.

•  Стандартные интерфейсы.

•  Динамический массив, стек, очередь и их использование в программировании

•  Хэш-таблицы и их и их использование в программировании

♦ Основная литература:

•  Г. Шилдт. С#. Учебный курс. С-Петербург: Питер, 2002. С.334-354.

•  Фролов С#. Самоучитель. М. Диалог-МИФИ, 2003, С.430-457.

•  Г. Шилдт. Полный справочник по С#. М., С-Петербург. Киев. Издательский
дом "Вильяме", 2004. С.610-633

♦ Дополнительная литература:

• Д. Прайс, М. Гандерлой. Visual C#.NET. Полное руководство. М. Энтроп, С-
Петербург. КОРОНАпринт, Киев. ВЕК, 2004. С.351-405

Тема 9: Исключения и отладка.

Содержание темы:

•  Классические способы обработки ошибок.

•  Предварительная проверка параметров. Проверка кодов возвратов методов.

•  Исключения. Перехват исключения.

•  Блок обработки исключения. Передача исключений во вложенных блоках.
Передача исключений между методами.

•  Создание собственных исключений. Понятие объекта-исключения.

♦ Основная литература:

•  ПШилдт. С#. Учебный курс. С-Петербург: Питер, 2002. С.360-381.

•  Фролов С#. Самоучитель. М. Диалог-МИФИ, 2003, С.283-310.

• Г. Шилдт. Полный справочник по С#. М., С-Петербург. Киев. Издательский
дом "Вильяме", 2004. С.349-375

• Дополнительная литература:

• Д. Прайс, М. Гандерлой. Visual C#.NET. Полное руководство. М. Энтроп, С-
Петербург. КОРОНАпринт, Киев. ВЕК, 2004, С.426-453.

Тема 10: Методы работы с файловой системой.

• Содержание темы:

•  Список логических дисков.

•  Просмотр и выбор файла. Получение информации о файле.

•  Просмотр и выбор каталога. Получение информации о каталоге. Проход по
дереву каталогов. Отслеживание изменений

• Основная литература:

• Фролов С#. Самоучитель. М. Диалог-МИФИ, 2003, С.506-515.

• Дополнительная литература:

• Д. Прайс, М. Гандерлой. Visual C#.NET. Полное руководство. М. Энтроп, С-
Петербург. КОРОНАпринт, Киев. ВЕК, 2004, С.490-507.

Заключение.

• Содержание темы:

•  Обзор дополнительных возможностей.

•  Процессная и потоковая мультизадачность.

•  Базы данных и WEB сервисы.

•  Небезопасный код.

VI. Тематика заданий по различным формам текущего контроля

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

На выбор предлагаются следующие темы:

•  Форматы денежных единиц и их преобразование.

•  Форматы времени и их преобразование.

•  Создание и обработка календарей.

•  Средства ведения и обработки таблиц.

•  Средства форматирования и обработки текстовой информации.

•  Лексический анализ и преобразование формализованных потоков данных.

•  Моделирование информационных процессов в экономике.

•  Моделирование систем обслуживания.

•  Моделирование распределения ресурсов в компьютерных системах

•  Моделирование вычислительного процесса в вычислительных системах

•  Создание, преобразование и обработка динамических структур данных.

•  Интерпретатор вычислительного процесса.

•  Преобразование файловых структур.

•  Сжатие данных в компьютерных системах

•  Кодирование данных в компьютерных системах

•  Контроль целостности данных в компьютерных системах

•  Методы сортировки данных

•  Методы поиска данных

•  Программная реализация детерминированных моделей бизнес процессов

•  Программная реализация стохастических моделей бизнес-процессов

•  Разработка и исследование датчиков случайных чисел

•  Поиск путей в моделях на основе графов
Контрольная работа

•  программирование ветвящихся и циклических алгоритмов на псевдокоде

•  программирование ветвящихся алгоритмов

•  программирование циклических алгоритмов

•  программирование алгоритмов обработки данных в виде массивов

•  использование методов, определяемых пользователем

•  обработка данных, организованных в виде динамических массивов

•  обработка исключений

•  обработка массива объектов собственных классов

•  обработка потоков ввода-вывода
Контрольное домашнее задание

•  работа с массивами объектов

•  работа с динамическими массивами объектов собственных классов

• разработка Windows приложения с развитым пользовательским интерфейсом и
графическим выводом

VII. Вопросы для оценки качества освоения дисциплины

•  Перечислите стандартные типы данных и укажите форму их машинного
представления.

•  Укажите правила образования имен переменных.

•  Какими средствами регулируется очередность выполнения операций в выражении.

•  Какими средствами объявляются именованные константы.

•  Дайте определение составного оператора и укажите, в каких случаях он
применяется.

•  Назовите операторы, с помощью которых можно управлять выполнением циклов.

•  Укажите стандартные потоки ввода-вывода

•  Дайте определение многомерного массива.

•  Справедливо ли утверждение, что все строки являются объектами

•  Каким образом можно получить значение длины строки

•  Возможно ли непосредственное изменение элементов строки

•  Объясните различие между строками и динамическими строками

•  Справедливо ли утверждение, что статические методы вызываются через имя
класса

•  Укажите различие между статическими и обычными полями.

•  Укажите правила соответствия между формальными и фактическими параметрами.

•  Перечислите способы передачи данных в методы и укажите их достоинства и
недостатки.

•  Какими средствами могут обрабатываться ошибки времени исполнения программ

•  В чем отличие исключения от прерывания

•  Какими средствами поддерживается перехват исключений

•  Что происходит в случае, если исключение не перехвачено

•  К какой разновидности типов относятся массивы.

•  Как назначаются номера элементам массива

•  Можно ли элементу строки присвоить новое значение

•  Что сравнивается при выполнении операций отношения применительно к массиву

•  Сравните варианты реализации прямоугольной таблицы в виде двухмерного
массива и массива массивов с точки зрения расхода основной памяти

•  Сравните варианты реализации прямоугольной таблицы в виде двухмерного
массива и массива массивов с точки зрения расхода времени доступа к элементу
таблицы

•  В чем заключается отличие массива от динамического массива с точки зрения
изменения состава элементов

•  Каким образом определить тип извлеченного из динамического массива элемента

•  В чем заключается отличие объектов, создаваемых на базе классов и структур

•  Объясните назначение конструктора и укажите отличие вызова конструктора от
вызова обычных методов

•  Каким способом производится замена параметров при вызове метода, если
фактическим параметром является объект

•  Может ли унаследованный класс получить доступ к закрытым членам базового
класса

•  Каким образом из конструктора унаследованного класса вызывается конструктор
базового класса

•  Можно ли получить доступ к скрытым переменным базового класса

•  В каком порядке вызываются конструкторы в иерархии классов

•  Какой принцип объектно-ориентированного программирования поддерживают
виртуальные методы

•  Могут ли динамические массивы содержать в качестве элементов объекты
собственных классов

•  В чем отличие событийного управления от директивного управления

•  Какими средствами поддерживается механизм управления по событиям

•  Что такое обработчик события

•  Каким образом можно изменить свойства элементов управления

•  Каким образом связываются элементы управления и обработчики событий

•  Какими средствами можно организовать передачу данных в подчиненную форму

•  Каким образом организовать прием данных из подчиненной формы

•  Что понимается под потоком ввода-вывода

•  Назовите типы потоков

•  Какие потоки являются предопределенными

•  Каким образом определяется конец потока ввода

•  Для каких целей используется буферизация потоков ввода-вывода

•  Укажите средства, с помощью которых выполняется перенаправление потоков

•  Укажите особенности представления строк в символьных и двоичных потоках

•  Что понимается под контекстом отображения

•  Какими средствами можно получить контекст отображения

•  На каких элементах формы можнр выполнять рисование

•  Каким образом решается проблема перерисовки изображения стандартных
элементов управления

•  Каким образом решается проблема перерисовки изображения, сформированного
программой

•  Сформулируйте отличия растрового и векторного изображения

•  Укажите типы шрифтов, используемых при графическом выводе

•  Для чего предназначен интерфейс

•  Какие элементы могут быть членами интерфейса

•  Каким образом реализуются интерфейсы с помощью класса

•  В чем отличие динамических структур данных от массивов

•  Каким образом определить тип извлеченного из стека элемента

•  Чем отличается стек от динамического массива

•  Чем отличается очередь от динамического массива

•  Что такое исключение

•  Какими средствами могут обрабатываться ошибки времени исполнения программ

•  Каким образом можно перехватывать все исключения

•  Каким образом можно перехватить конкретное исключение

•  Почему возникает необходимость в генерировании исключений самой программой

•  Может ли исключение генерироваться повторно, после того, как оно было
перехвачено

•  Каким образом отображается трассировка событий, предшествовавших
возникновению исключения

•  Можно ли определить время изменения файла

•  Укажите типовые атрибуты файла

•  Какими средствами можно изменить атрибуты файла

•  Укажите типовые атрибуты каталога

•  Какими средствами можно изменить атрибуты каталога

•  Что такое текущий каталог

•  Можно ли изменить текущий каталог

♦ Экзамен

Экзамен проводится в письменной форме (120 мин)

Автор программы: