Языки программирования - Учебно

advertisement
РОССИЙСКАЯ ФЕДЕРАЦИЯ
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ
Государственное образовательное учреждение
высшего профессионального образования
ТЮМЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Институт математики, естественных наук и информационных технологий
Кафедра программного обеспечения
Захарова И.Г.
ЯЗЫКИ ПРОГРАММИРОВАНИЯ
Учебно-методический комплекс. Рабочая программа
для студентов очной формы обучения специальности
10.05.03 – «Информационная безопасность автоматизированных систем»,
специализация «Безопасность открытых информационных систем»
Тюменский государственный университет
2013
ЗАХАРОВА И.Г. ЯЗЫКИ ПРОГРАММИРОВАНИЯ. Учебно-методический
комплекс. Рабочая программа для студентов специальности
10.05.03 –
«Информационная
безопасность
автоматизированных
систем»,
специализация «Безопасность открытых информационных систем» (форма
обучения очная). Тюмень, 2013, 24 стр.
Рабочая программа составлена в соответствии с требованиями ФГОС
ВПО с учетом рекомендаций и ПрООП ВПО по направлению
(специальности) и специализации подготовки.
Рабочая программа дисциплины опубликована на сайте ТюмГУ: Языки
программирования
[электронный
ресурс]
/
Режим
доступа:
http://www.umk3.utmn.ru., свободный.
Рекомендовано к изданию кафедрой программного обеспечения.
Утверждено проректором по учебной работе Тюменского государственного
университета.
ОТВЕТСТВЕННЫЙ РЕДАКТОР: Гаврилова Н.М., к.ф.-м.н., доцент.
© Тюменский государственный университет, 2013.
© Захарова И.Г., 2013.
1. Пояснительная записка
1.1.Цели и задачи дисциплины
Дисциплина «Языки программирования» имеет целью обучить студентов общим
принципам построения и использования языков программирования; средствам описания
данных; средствам описания действий; абстрактным типам данных, а также содействовать
фундаментализации образования и развитию системного мышления. Задачи дисциплины
– дать знания основ объектно-ориентированного программирования, алгоритмизации и
средств описания данных, а также технологии программирования. Данный курс также
призван расширить кругозор и сформировать основы профессиональных компетенций,
включая разработку компьютерных программ на языках высокого уровня для решения
прикладных задач на основе приобретенных практических навыков. Знания, умения и
практические навыки, полученные в результате изучения дисциплины «Языки
программирования», используются обучающимися при изучении общепрофессиональных
и специальных дисциплин, а также при разработке курсовых и выпускных
квалификационных работ.
1.2. Место дисциплины в структуре ООП специалитета
Дисциплина
«Языки программирования» относится к базовой части
профессионального цикла.
Для успешного усвоения данной дисциплины необходимо, чтобы студент владел
знаниями, умениями и навыками, сформированными в процессе изучения дисциплин:
«Математический анализ», «Алгебра», «Геометрия» – знать основные понятия и
методы математического анализа, алгебры, геометрии; уметь решать задачи теории
пределов функций, дифференцирования, интегрирования и разложения функций в ряды;
владеть навыками использования стандартных методов и моделей математического
анализа и их применения к решению прикладных задач;
«Информатика» – знать состав, назначение функциональных компонентов и
программного обеспечения персонального компьютера; уметь применять персональные
компьютеры для обработки различных видов информации;
«Аппаратные средства вычислительной техники» – знать структуру и принципы
работы современных и перспективных микропроцессоров;
«Английский язык» – знать лексический и грамматический минимум в объеме,
необходимом для работы с текстами профессиональной направленности на иностранном
языке; владеть иностранным языком в объёме, необходимом для получения и изложения
информации по профессиональной тематике.
Дисциплина «Языки программирования» является предшествующей для изучения
следующих базовых дисциплин: «Методы программирования», «Операционные
системы», «Вычислительные сети», «Системы управления базами данных», «Защита в
операционных системах», «Защита программ и данных», «Криптографические методы
защиты информации». Знания и практические навыки, полученные в результате освоения
дисциплины «Языки программирования», используются студентами при разработке
курсовых и дипломных работ, в научно-исследовательской работе.
1.3. Компетенции выпускника ООП специалитета, формируемые в результате
освоения данной ООП ВПО.
В результате освоения ООП специалитета выпускник должен обладать следующими
компетенциями:

способностью понимать социальную значимость своей будущей профессии, цели и
смысл государственной службы, обладать высокой мотивацией к выполнению
профессиональной деятельности в области обеспечения информационной
безопасности и защиты интересов личности, общества и государства, готовностью и
способностью
к
активной
состязательной
деятельности
в
условиях
информационного противоборства (ОК-5);

способностью применять математический аппарат, в том числе с использованием
вычислительной техники, для решения профессиональных задач (ПК-2);

способностью понимать сущность и значение информации в развитии современного
общества, применять достижения современных информационных технологий для
поиска и обработки больших объемов информации по профилю деятельности в
глобальных компьютерных системах, сетях, в библиотечных фондах и в иных
источниках информации (ПК-3);

способностью применять методологию научных исследований в профессиональной
деятельности, в том числе в работе над междисциплинарными и инновационными
проектами (ПК-4);
В результате освоения дисциплины обучающийся должен:
 Знать:
о месте и роли языков программирования в информатизации общества; историю и
направление развития языков программирования во взаимосвязи с развитием аппаратного
обеспечения, а также машинной архитектуры; парадигмы языков программирования;
основные способы и принципы представления структур данных и приемы
алгоритмизации; основные этапы реализации программ на ЭВМ, включая вопросы
трансляции языка (этапы трансляции, формальные модели трансляции); возможности
инструментальных средств программирования в различных операционных средах;
функциональные возможности различных языков программирования; особенности
программирования в мультизадачной и мультипрограммной средах; современные
средства разработки и анализа программного обеспечения.
 Уметь:
формализовать поставленную задачу; составлять и оформлять программы на языках
программирования;
тестировать
и
отлаживать
программы
в
современных
интегрированных средах разработки; опираясь на знания теоретических основ
программирования, оптимизировать исходный код; применять полученные знания к
различным предметным областям.
 Владеть:
приемами алгоритмизации, разработки, отладки и тестирования программ в различных
интегрированных средах, на различных аппаратных платформах, документирования
программ.
2.
Структура и трудоемкость дисциплины.
Вид учебной работы
Аудиторные занятия (всего)
Всего
часов
216
2
72
Таблица 1.
Семестры
3
4
72
72
В том числе:
Лекции
Практические занятия (ПЗ)
Семинары (С)
Лабораторные работы (ЛР)
Самостоятельная работа (всего)
Вид промежуточной аттестации (зачет, экзамен)
Общая трудоемкость
324 часа
9 зач. ед.
3.
108
36
36
36
108
108
36
36
экзамен
108
36
18
зачет
90
36
54
экзамен
126
Тематический план.
4
5
6
3
Из них в интерактивной
форме
Самостоятельная
работа
2
Лабораторные
занятия
1
Лекции
Тема
Недели семестра
№
Итого часов по теме
Таблица 2.
Виды учебной работы и
самостоятельная
работа, в час.
Итог
о
коли
чест
во
балл
ов
7
8
9
2 семестр
Модуль 1
1.1.
Теоретические проблемы
языков программирования
разработки 1
1.2.
Язык программирования Object Pascal 2-4
(Delphi)
4
1.3.
Средства описания данных
5-6
Всего
2
4
6
2
0-5
4
4
12
6
0-6
4
8
4
16
8
0-20
10
12
12
34
16
0-31
Модуль 2
2.1.
Структурированные типы данных
7-9
6
6
6
18
6
0-10
2.2.
Процедурный тип
1013
4
4
6
14
8
0-23
10
10
12
32
14
0-33
6
6
4
16
6
0-8
Всего
Модуль 3
3.1.
Абстрактные типы данных
14
3.2.
Среды визуального программирования
1516
4
3.3.
Общая характеристика языков ассемблера
1718
6
8
4
16
6
0-23
4
10
2
0-5
Всего
16
14
12
42
14
0-36
Итого по дисциплине за 2 семестр
(часов, баллов)
36
36
36
108
44
0100
3 семестр
Модуль 1
4.1.
Введение в С#. Система типов языка С#
1
2
2
2
6
4
0-7
4.2.
Выражения и операторы. Управление
действиями с данными
2-4
6
6
2
14
6
0-19
4.3.
Массивы
5-6
2
4
2
8
4
0-7
10
12
6
28
14
0-33
Всего
Модуль 2
5.1.
Классы. Создание и разрушение объектов
7-8
6
6
2
14
6
0-9
5.2.
Дополнительные элементы класса
9-10
4
4
1
9
4
0-8
5.3.
Наследование в С#
1112
4
4
1
9
4
0-8
5.4.
Абстрактные классы. Интерфейсы
1314
4
4
2
10
6
0-9
18
18
6
42
20
0-34
Всего
Модуль 3
6.1.
Исключения
15
2
2
2
6
4
0-14
6.2.
Делегаты и события
1617
4
4
2
10
6
0-14
6.3.
Препроцессорная обработка
18
2
2
4
2
0-5
Всего
8
6
6
20
12
0-33
Итого по дисциплине за 3 семестр
(часов, баллов)
36
36
18
90
46
0100
4 семестр
Модуль 1
7.1.
Объектно-ориентированное
программирование на языке JAVA.
1
2
7.2.
Основные типы данных и операторы
JAVA.
2-4
4
7.3.
Структурированные типы данных.
Управление памятью.
5-6
Всего
6
8
2
0-5
4
6
14
6
0-6
4
8
6
18
8
0-20
10
12
18
40
16
0-31
Модуль 2
8.1.
Классы и объекты. Методы.
7-9
6
6
8
20
6
0-10
8.2.
Наследование. Интерфейсы.
1013
4
4
10
18
8
0-23
10
10
18
38
14
0-33
Всего
Модуль 3
9.1.
Обработка исключительных ситуаций
14
6
6
8
20
6
0-8
9.2.
Пакеты. Многопоточные приложения.
1516
6
6
6
18
6
0-23
9.3.
Разработка пользовательского
интерфейса
1718
4
2
4
10
2
0-5
Всего
16
14
18
48
14
0-36
Итого по дисциплине за 4 семестр
(часов, баллов)
36
36
54
126
44
0100
Курсовая работа
0100
Таблица 3.
другие формы
Информацио
нные
системы и
технологии
электронные
практикум
комплексные
ситуационные
задания
программы
компьютерного
тестирования
Технические
формы контроля
эссе
реферат
тест
лабораторная
работа
ответ на
семинаре
собеседование
коллоквиумы
2 семестр
Письменные работы
Устный опрос
контрольная
работа
№ темы
Итого количество
баллов
Виды и формы оценочных средств в период текущего контроля
Модуль 1
1.1
1.2
1.3
Всего
0-1
0-1
0-3
0-5
0-4
0-5
0-5
014
Модуль 2
2.1
2.2
0-2
0-2
0-4
0-6
Всего
0-4
010
Модуль 3
3.1
3.2
0-1
0-2
0-4
0-6
3.3
Всего
0-3
-
Итого
012
3 семестр
Модуль 1
4.1
4.2
4.3
Всего
Модуль 2
5.1
5.2
5.3
5.4
Всего
0-1
0-1
0-1
0-3
0-4
0-6
0-4
014
0-1
0-4
0-4
0-4
0-1
0-2
Модуль 3
6.1
6.2
6.3
Всего
0-1
0-1
Итого
0-7
4 семестр
Модуль 1
7.1
7.2
7.3
Всего
0-5
015
039
0-2
012
0-6
0-6
0-5
017
043
0-1
0-1
0-3
0-5
0-4
0-5
0-5
014
Модуль 2
8.1
8.2
0-2
0-2
0-4
0-6
Всего
0-4
010
Модуль 3
9.1
9.2
0-1
0-2
0-4
0-6
9.3
Всего
0-3
0-5
0-
-
0-5
0-5
0-5
0-5
0-5
0-5
015
0-6
0-6
0-4
0-4
010
0-5
0-5
0-5
0-6
0-20
0-31
0-7
0-7
0-4
010
014
0-10
0-23
0-3
010
0-8
0-23
0-33
0-5
0-36
013
034
0-2
0-6
0-2
010
0-100
-
0-7
19
0-7
0-33
0-4
0-4
0-4
0-4
016
0-9
0-8
0-8
0-9
0-34
0-7
0-7
0-14
0-14
0-5
0-33
014
040
0-7
0-7
0 – 100
0-5
0-6
0-20
0-31
0-4
010
014
0-10
0-23
0-5
0-3
010
0-8
0-23
0-5
0-
0-5
0-5
0-33
0-5
0-36
Итого
15
039
012
13
034
015
0-100
Таблица 4.
Планирование самостоятельной работы студентов
№
Модули и темы
Виды СРС
обязательные
дополнитель
ные
Неделя
семестра
Объем
часов
Кол-во
баллов
1
4
0-5
2-4
4
0-6
5-6
4
0-20
12
0-31
7-9
6
0-10
10-13
6
0-23
12
0-33
14
4
0-8
15-16
4
0-23
17
4
0-5
2 семестр
Модуль 1
1.1
Теоретические проблемы
разработки
языков
программирования
1.2
Язык программирования
Object Pascal (Delphi)
1.3
Средства
данных
описания
Конспектирование
материала на
лекционных занятиях
Конспектирование
материала на
лекционных занятиях.
Выполнение заданий
лабораторных работ
Конспектирование
материала на
лекционных занятиях.
Выполнение заданий
лабораторных работ
Выполнение
контрольных работ
Работа с
учебной
литературой
Разработка
программ
Работа с
учебной
литературой.
Разработка
программ
Всего по модулю 1:
Модуль 2
2.1
2.2
Структурированные типы
данных
Процедурный тип
Всего по модулю 2:
Модуль 3
3.1
Абстрактные
типы
данных
3.2
Среды
визуального
программирования
3.3
Общая
характеристика
Конспектирование
материала на
лекционных занятиях.
Выполнение заданий
лабораторных работ
Конспектирование
материала на
лекционных занятиях.
Выполнение заданий
лабораторных работ
Выполнение
контрольных работ
Конспектирование
материала на
лекционных занятиях.
Выполнение заданий
лабораторных работ
Разработка
программ
Работа с
учебной
литературой.
Разработка
программ
Разработка
программ
Конспектирование
материала на
лекционных занятиях.
Выполнение заданий
лабораторных работ
Работа с
учебной
литературой.
Разработка
программ
Конспектирование
материала на
Разработка
языков ассемблера
лекционных занятиях.
Выполнение заданий
лабораторных работ
Выполнение
контрольных работ
программ
Всего по модулю 3:
ИТОГО:
3 семестр
12
36
0-36
0-100
1
2
0-7
2-4
2
0-19
5-6
2
0-7
6
0-33
7-8
2
0-9
9-10
1
0-8
11-12
1
0-8
13-14
2
0-9
6
0-34
2
0-14
Модуль 1
4.1
Введение в С#. Система
типов языка С#
4.2
Выражения и операторы.
Управление действиями с
данными
4.3
Массивы
Конспектирование
материала на
лекционных занятиях.
Выполнение заданий
лабораторных работ
Конспектирование
материала на
лекционных занятиях.
Выполнение заданий
лабораторных работ
Конспектирование
материала на
лекционных занятиях.
Выполнение заданий
лабораторных работ
Выполнение
контрольных работ
Разработка
программ
Работа с
учебной
литературой.
Разработка
программ
Разработка
программ
Всего по модулю 1:
Модуль 2
5.1
Классы. Создание и
разрушение объектов
5.2
Дополнительные
элементы класса
5.3
Наследование в С#
5.4
Абстрактные классы.
Интерфейсы
Всего по модулю 2:
Модуль 3
6.1
Исключения
Конспектирование
материала на
лекционных занятиях.
Выполнение заданий
лабораторных работ
Конспектирование
материала на
лекционных занятиях.
Выполнение заданий
лабораторных работ
Конспектирование
материала на
лекционных занятиях.
Выполнение заданий
лабораторных работ
Конспектирование
материала на
лекционных занятиях.
Выполнение заданий
лабораторных работ
Выполнение
контрольных работ
Конспектирование
материала на
лекционных занятиях.
Разработка
программ
Работа с
учебной
литературой.
Разработка
программ
Разработка
программ
Работа с
учебной
литературой.
Разработка
программ
Разработка
программ
15
Выполнение заданий
лабораторных работ
6.2
Делегаты и события
6.3
Препроцессорная
обработка
Конспектирование
материала на
лекционных занятиях.
Выполнение заданий
лабораторных работ
Конспектирование
материала на
лекционных занятиях.
Выполнение заданий
лабораторных работ
Выполнение
контрольных работ
Работа с
учебной
литературой.
Разработка
программ
16-17
2
0-14
18
2
0-5
6
18
0-33
0-100
1
6
0-5
2-4
6
0-6
5-6
6
0-20
18
0-31
7-9
8
0-10
10-13
10
0-23
18
0-33
8
0-8
Разработка
программ
Всего по модулю 3:
ИТОГО:
4 семестр
Модуль 1
7.1
7.2
7.3
Объектноориентированное
программирование на
языке JAVA.
Основные типы данных и
операторы JAVA.
Структурированные типы
данных. Управление
памятью.
Конспектирование
материала на
лекционных занятиях
Конспектирование
материала на
лекционных занятиях.
Выполнение заданий
лабораторных работ
Конспектирование
материала на
лекционных занятиях.
Выполнение заданий
лабораторных работ
Выполнение
контрольных работ
Работа с
учебной
литературой
Разработка
программ
Работа с
учебной
литературой.
Разработка
программ
Всего по модулю 1:
Модуль 2
8.1
8.2
Классы и объекты.
Методы.
Наследование.
Интерфейсы.
Всего по модулю 2:
Модуль 3
9.1
Обработка
исключительных
ситуаций
Конспектирование
материала на
лекционных занятиях.
Выполнение заданий
лабораторных работ
Конспектирование
материала на
лекционных занятиях.
Выполнение заданий
лабораторных работ
Выполнение
контрольных работ
Конспектирование
материала на
лекционных занятиях.
Выполнение заданий
Разработка
программ
Работа с
учебной
литературой.
Разработка
программ
Разработка
программ
14
лабораторных работ
9.2
Пакеты. Многопоточные
приложения.
9.3
Разработка
пользовательского
интерфейса
Конспектирование
материала на
лекционных занятиях.
Выполнение заданий
лабораторных работ
Конспектирование
материала на
лекционных занятиях.
Выполнение заданий
лабораторных работ
Выполнение
контрольных работ
Работа с
учебной
литературой.
Разработка
программ
15-16
6
0-23
17
4
0-5
18
54
0-36
0-100
Разработка
программ
Всего по модулю 3:
ИТОГО:
4.
Разделы дисциплины и междисциплинарные связи с обеспечиваемыми
(последующими) дисциплинами
Темы дисциплины, необходимые для
№
Наименование
обеспечиваемых изучения обеспечиваемых (последующих)
дисциплин
п/п
(последующих) дисциплин
1
2
3
4
5
6
7
8
9
+
+
+
1
Методы программирования
+
+
+
+
+
+
2
Операционные системы
+
+
+
+
+
+
3
Системы управления базами данных
+
+
+
+
+
+
+
5.
Содержание дисциплины.
1.1. Теоретические проблемы разработки языков программирования. История языков
программирования. Эволюция архитектуры программного обеспечения. Парадигмы
программирования. Общие принципы построения и использования языков
программирования; средства описания данных; средства описания действий. Стандарты
языков программирования.
1.2. Язык программирования Object Pascal (Delphi). Структура программы. Объявление
типов данных, констант и переменных. Операторы языка.
1.3. Средства описания данных. Элементарные типы данных. Объекты данных (ОД),
переменные и константы. Спецификация и реализация. Типы данных, объявления.
Контроль типов и преобразование типов. Присваивание и инициализация. Скалярные
типы данных: числовые, перечислимые, булевы, символьные.
2.1. Структурированные типы данных. Спецификация и реализация типов
структурированных ОД. Объявление структурированных ОД и контроль типов. Массивы.
Записи. Строки. Указатели. Списки. Множества. Использование хэш-функций для
реализации множеств.
2.2. Процедурный тип. Управление подпрограммами. Подпрограммы вызов/возврат.
Рекурсивные подпрограммы. Общие вопросы передачи параметров. Среды ссылок.
Сопрограммы. Планируемые подпрограммы.
3.1. Абстрактные типы данных: инкапсуляция, спецификация, реализация,
параметризация, классы и объекты. Инкапсуляция при помощи подпрограмм.
Наследование. Полиморфизм.
3.2. Среды визуального программирования. Современные интегрированные среды
разработки программ; графический интерфейс пользователя. Разработка Windowsприложений в среде Borland Delphi. Библиотека визуальных компонентов. Обработка
событий. Обработка исключений.
3.3. Общая характеристика языков ассемблера. Назначение, принципы построения и
использования; структура языка, основные группы команд.
4.1. Введение в C#. Характеристика языка C#;сравнительный анализ языков C++, C#,
Pascal; структура программы на С# ; организация ввода-вывода в консольном
приложении. Система типов языка С#. Встроенные типы данных, ;преобразование типов;
типы-значения и ссылочные типы; упаковка и распаковка. Литералы и переменные.
Литералы разных типов ; переменные и их инициализация; область видимости и время
жизни переменных.
4.2. Выражения и операторы. Арифметические операторы; логические операторы;
приоритет операций; преобразование типов в выражениях. Управление действиями с
данными. Оператор присваивания; операторы условный и выбора ;операторы цикла;
операторы перехода.
4.3. Массивы. Создание и инициализация массивов; ступенчатые массивы; класс Array
(основные свойства и методы).
5.1. Классы. Классы и объекты; классы и структуры; элементы класса; методы, параметры
методов; перегрузка методов. Создание и разрушение объектов. Конструкторы и
инициализация данных; деструкторы и алгоритм сборки мусора; методика Dispose.
5.2. Дополнительные элементы класса. Перегруженные операторы; свойства;
индексаторы.
5.3. Наследование в С#. Производные классы, конструкторы и наследование;
преобразование типов при работе с иерархией объектов; операторы проверки и
приведения типа; переопределение методов.
5.4. Абстрактные классы. Абстрактные классы и наследование; абстрактный класс
Object. Интерфейсы. Реализация интерфейсов; интерфейсы и классы; интерфейсы и
структуры.
6.1.
Исключения.
Обработка
исключений,
генерация
исключений;
класс
Exception;исключения и наследование.
6.2. Делегаты и события. Создание и использование делегатов, групповые делегаты;
определение и использование событий; генерация событий; широковещательные события.
6.3. Препроцессорная обработка. Основные директивы препроцессора, использование
для условной компиляции.
7.1. Объектно-ориентированное программирование на языке JAVA. Структура
программы. Алфавит языка, основные синтаксические конструкции.
7.2. Основные типы данных и операторы JAVA. Простые типы данных. Переменные.
Операции, выражения, операторы.
7.3. Структурированные типы данных. Управление памятью. Встроенные классы.
Построение пользовательских классов. Динамически распределяемая память. Управление;
сборка мусора.
8.1. Классы и объекты. Методы. Спецификаторы доступа к членам класса.
Конструкторы. Наследование в Java. Переопределение методов. Абстрактные классы и
методы. Класс Object.
8.2. Наследование. Интерфейсы. Интерфейсы как альтернатива прямому
множественному наследованию. Определение и реализация интерфейса.
9.1. Обработка исключительных ситуаций. Обработка исключений. Иерархия
исключений. Класс исключений времени выполнения. Создание собственных
исключений. Использование исключений для отладки.
9.2. Пакеты. Многопоточные приложения. Встроенные пакеты. Создание
пользовательских
пакетов.
Потоки
команд.
Создание
потоков.
Создание
синхронизированных классов.
9.3. Разработка пользовательского интерфейса. Компоненты пользовательского
интерфейса Java. Свойства. Обработка событий. Создание пользовательских компонентов.
6.
Планы семинарских занятий.
Не запланированы
7.
Темы лабораторных работ (Лабораторный практикум).
1. Разработка консольных приложений на языке программирования Object
Pascal (Delphi). Структура простой программы. Основные операторы языка.
Реализация алгоритмов обработки скалярных данных.
2. Стандартные типы данных. Переменные и константы. Типы данных,
объявления констант, переменных, типов. Преобразование типов. Скалярные
типы данных: числовые, перечислимые, булевы, символьные. Использование
данных различного типа в операторах языка.
3. Структурированные типы данных. Массивы. Записи. Строки. Множества.
Основные алгоритмы обработки массивов и строк.
4. Процедурный тип. Программа с подпрограммами. Формальные и фактические
параметры. Передача параметров. Процедуры и функции.
5. Абстрактные типы данных: Принципы ООП. Классы и объекты. Элементы
класса. Объявление классов.
6. Разработка приложений в среде визуального программирования.
Разработка Windows-приложений в среде Borland Delphi. Использование
библиотеки визуальных компонентов. Обработчики событий. Работа с файлами.
Стандартные диалоги.
7. Введение в C#. Разработка программ простой структуры на С#; ввод-вывод в
консольном приложении. Особенности использования типов языка С#.
8. Использование операторов C#. Приоритет операций и преобразование типов в
выражениях. Оператор присваивания; операторы условный и выбора;
операторы цикла; использование для программирования алгоритмов обработки
скалярных данных.
9. Массивы. Создание и инициализация массивов, основные алгоритмы
обработки массивов с использованием методов класса Array.
10. Классы. Объявление класса; элементы класса. Объявление и реализация
методов, параметры методов. Создание объектов. Объявление, реализация и
вызов конструкторов.
11. Дополнительные элементы класса. Объявление и использование
перегруженных операторов, свойств и индексаторов.
12. Реализация наследования в С#. Объявление производных классов,
использование правил преобразования типов при работе с иерархией объектов;
использование операторов проверки и приведения типа; переопределение
методов в наследуемых классах.
13. Абстрактные классы. Использование абстрактных классов на примере класса
Object. Интерфейсы. Способы реализации интерфейсов.
14. Исключения. Обработка исключений, генерация исключений; класс Exception;
программирование алгоритмов с использованием исключений.
15. Делегаты и события. Примеры создания и использования делегатов;
определение и использование событий; стандартные и пользовательские
события в приложениях.
16. Объектно-ориентированное программирование на языке JAVA. Структура
программы. Алфавит языка, основные синтаксические конструкции. Простые
типы данных. Переменные. Операции, выражения, операторы.
17. Структурированные типы данных. Управление памятью. Встроенные
классы. Построение пользовательских классов. Динамически распределяемая
память. Управление; сборка мусора.
18. Классы и объекты. Интерфейсы. Спецификаторы доступа к членам класса.
Конструкторы. Наследование в Java. Переопределение методов. Определение и
реализация интерфейса.
19. Обработка исключительных ситуаций. Обработка исключений. Иерархия
исключений. Класс исключений времени выполнения. Создание собственных
исключений. Использование исключений для отладки.
20. Пакеты. Многопоточные приложения. Встроенные пакеты. Создание
пользовательских пакетов. Потоки команд. Создание потоков. Создание
синхронизированных классов.
21. Разработка пользовательского интерфейса. Компоненты пользовательского
интерфейса Java. Свойства. Обработка событий. Создание пользовательских
компонентов.
8. Примерная тематика курсовых работ.
1. Компиляция и интерпретация. Компилируемые и интерпретируемые ЯП.
2. История языка JAVA и основные идеи реализации. Виртуальная машина JAVA.
3. Синтаксис языка программирования. Общие синтаксические критерии.
4. Модели трансляции. Структура компилятора.
5. Формальные модели трансляции.
6. Формальные грамматики.
7. Деревья грамматического разбора.
8. Однозначные и неоднозначные грамматики.
9. Расширенная НФБ-нотация. Синтаксические схемы.
10. Конечные автоматы.
11. Моделирование конечных автоматов с помощью формальной грамматики.
12. Детерминированные и недетерминированные конечные автоматы.
13. Регулярные грамматики и конечные автоматы.
14. Автоматы с магазинной памятью. Связь с НФБ-грамматиками.
15. Грамматический разбор на основе метода рекурсивного спуска.
16. Принципы и технологии функционального программирования.
17. Принципы и технологии рекурсивно-логического программирования.
18. Принципы и технологии параллельного программирования.
19. Разработка Web-приложений на языке C#.
20. Разработка Web-приложений на языке JAVA.
21 Разработка мобильных приложений на языке JAVA.
22. Разработка распределенных приложений в среде Microsot Visual Studio .NET.
9. Учебно-методическое обеспечение самостоятельной работы студентов. Оценочные
средства для текущего контроля успеваемости, промежуточной аттестации по
итогам освоения дисциплины (модуля).
Дополнительные задания для самостоятельного углубленного изучения содержания
дисциплины
1. Изучение истории языков программирования на примере развития языков Pascal и С.
Изучение парадигм программирования на примере сопоставления общих приемов на
процедурном и функциональном языках.
2. Изучение современных интегрированных сред разработки программ на примере
Delphi. Изучение возможностей библиотеки визуальных компонентов.
3. Изучение основных команд языка ассемблера, принципов их построения и
использования; программирование простых алгоритмов обработки скалярных данных.
4. Использование ступенчатых массивов; изучение возможностей свойств и методов
класса Array для решения типовых задач обработки массивов.
5. Изучение свойств и методов абстрактного класса Object. Переопределение в
наследующих классах на примере метода ToString.
6. Изучение использования препроцессорной обработки в приложениях на языке C#.
Основные директивы препроцессора, примеры использования для условной компиляции
программ.
7. Изучение приемов повышения надежности приложений. Защита критических участков
программы. Защита методов.
8. Изучение приемов повышения производительности приложений. Оценка скорости
выполнения программ. Методы оптимизации программ. Распределение памяти и сборка
мусора.
Задания для самостоятельной работы по практическому программированию и
подготовки к контрольным работам
Разработайте приложения на языках Delphi, C++, C#, JAVA.
1)
В одномерном числовом массиве переместить нулевые элементы в конец, сдвинув
остальные элементы влево.
2)
В двумерном числовом массиве заменить нулями все элементы, расположенные на
главной диагонали и выше ее.
3)
В квадратной матрице поменять местами строку, в которой расположен первый
максимальный элемент, со строкой, содержащей последний минимальный элемент.
4)
В одномерном числовом массиве переместить нулевые элементы в начало, сдвинув
остальные элементы вправо.
5)
В двумерном числовом массиве заменить
главной диагонали и ниже ее.
все элементы, расположенные на
6)
В квадратной матрице поменять местами строку, в которой расположен последний
максимальный элемент, со строкой, содержащей первый минимальный элемент.
7)
В одномерном числовом массиве переместить минимальные элементы в начало,
сдвинув остальные элементы вправо.
8)
В двумерном числовом массиве найти сумму элементов, расположенных на
побочной диагонали и выше ее.
9)
В квадратной матрице поменять местами столбец, в котором расположен первый
нечетный элемент, со столбцом, содержащим последний четный элемент.
10)
В одномерном числовом массиве переместить минимальные элементы в конец,
сдвинув остальные элементы влево.
11)
В двумерном числовом массиве найти произведение элементов, расположенных на
побочной диагонали и ниже ее.
12)
В квадратной матрице поменять местами столбец, в котором расположен первый
нулевой элемент, со столбцом, содержащим последний отрицательный элемент.
13)
В одномерном числовом массиве переместить максимальные элементы в начало,
сдвинув остальные элементы вправо.
14)
В двумерном числовом массиве найти
расположенных на главной диагонали и ниже ее.
максимальный
из
элементов,
15)
В квадратной матрице поменять местами первую из строк, в которой больше двух
нулей, со строкой, содержащей последний минимальный элемент.
16)
В одномерном числовом массиве переместить максимальные элементы в конец,
сдвинув остальные элементы влево.
17)
В двумерном числовом массиве найти минимальный из элементов, расположенных
на главной диагонали и выше ее.
18)
В квадратной матрице поменять местами строку, в которой расположен последний
максимальный элемент, с последней из строк, содержащей хотя бы один ноль.
19)
В одномерном числовом массиве переместить положительные элементы в начало,
сдвинув остальные элементы вправо.
20)
В двумерном числовом массиве найти сумму максимальных элементов в строках.
21)
В квадратной матрице поменять местами столбец, в котором расположен первый
нулевой элемент, со столбцом, содержащим последний четный элемент.
22)
В одномерном числовом массиве переместить положительные элементы в конец,
сдвинув остальные элементы влево.
23)
В двумерном числовом массиве найти произведение минимальных элементов в
столбцах.
24)
В квадратной матрице поменять местами столбец, в котором расположен первый
элемент с трехзначным значением, со столбцом, содержащим последний отрицательный
элемент.
25)
В одномерном числовом массиве переместить отрицательные элементы в начало,
сдвинув остальные элементы вправо.
26)
В двумерном числовом массиве найти сумму элементов строки, в которой
расположен первый максимальный элемент.
27)
В квадратной матрице поменять местами строку, в которой расположен первый
максимальный элемент, со строкой, содержащей последний из элементов,
оканчивающихся на .
28)
В одномерном числовом массиве переместить отрицательные элементы в конец,
сдвинув остальные элементы влево.
29)
В двумерном числовом массиве найти сумму элементов столбца, в котором
расположен последний максимальный элемент.
30)
В квадратной матрице поменять местами строку, в которой расположено больше
всего нулей, со строкой, содержащей первый положительный элемент.
31)
В одномерном числовом массиве переместить четные элементы в начало, сдвинув
остальные элементы вправо.
32)
В двумерном числовом массиве найти произведение четных элементов строки, в
которой расположен первый минимальный элемент.
33)
В квадратной матрице поменять местами столбец, в котором расположено меньше
всего нечетных элементов, со столбцом, содержащим последний четный элемент.
34)
В одномерном числовом массиве переместить нечетные элементы в конец, сдвинув
остальные элементы влево.
35)
В двумерном числовом массиве найти произведение нечетных элементов столбца,
в котором расположен последний минимальный элемент.
36)
В квадратной матрице поменять местами столбец, сумма элементов которого
максимальна, со столбцом, содержащим последний отрицательный элемент.
Запрограммируйте указанные действия с помощью класса String, вводя исходные данные
с клавиатуры и выводя результаты на экран:
1) Составить программу, которая считывает произвольный текст
алфавитном порядке все латинские буквы, входящие в этот текст.
и распечатывает в
2) Составить программу, которая читает построчно текст другой программы на языке С#,
обнаруживает типизированные литералы и выводит их на печать.
3) Составить программу, которая читает произвольные строки длиной до 80 символов,
разбивает их по словам (подстрока между двумя пробелами), находит максимальное слово
и выводит его на печать.
4) Дан массив строк, каждый элемент которого представляет выражение, где
складываются двоичные числа без знака. Преобразовать значения сумм в десятичную
систему счисления. Распечатать значения элементов массива до и после преобразования.
5) Составить программу, которая читает построчно текст другой программы на языке С#
(C++, Pascal, JAVA), считает число символов { и }, сравнивает их и выводит на печать
сообщение об ошибке, если они не равны между собой или не сбалансированы.
6) Разработать программу, которая предназначена для зашифровки текстов, (выбор
алгоритма по Вашему усмотрению). Вывести на печать исходный текст и результат
шифровки. Текст читать построчно, хранить текст в массиве строк.
7) Составить программу, которая вводит массив строк, состоящих из слов, разделенных
пробелами, и определяет, какие из слов начинаются на букву а.
8) Составить программу, которая вводит массив строк, состоящих из слов, разделенных
пробелами, и определяет, какие из слов оканчиваются на букву а.
9) Составить программу, которая вводит массив строк, состоящих из слов, разделенных
пробелами, и определяет, какие из слов содержат букву а.
10) Разработать программу, которая проверяла бы орфографию (правильность написания)
слов в некоторой строке, сравнивая их со словами из словаря. Использовать при этом в
качестве словаря одномерный массив слов.
11) Задан одномерный массив, каждым элементом которого является строка символов,
состоящая из одних цифр. Упорядочить элементы массива по возрастанию их числовых
значений и вывести на экран. Подсчитать среднее значение всех элементов.
12) Задан одномерный массив, каждым элементом которого является строка символов.
Если строка состоит из одних цифр, то, рассматривая ее как число, определить сумму всех
значений элементов массива.
13) Задан одномерный массив, каждым элементом которого является строка символов.
Если строка состоит из одних латинских букв, нужно заменить их на соответствующие
коды и найти их среднее арифметическое.
14) Задан одномерный массив, каждым элементом которого является строка символов,
представляющая собой запись некоторого оператора С# (C++, Pascal, JAVA). Найти все
операторы присваивания.
Требования к зачету
Зачет выставляется по результатам работы студента в течение семестра, включая
посещение лекций и лабораторных занятий, выполнение лабораторных работ,
контрольных работ, заданий для самостоятельной работы. Минимальная сумма баллов,
необходимая для получения зачета – 61 балл.
Вопросы к экзамену (2 семестр)
1. Структура программы на Delphi
2. Встроенные типы данных
3. Преобразование типов
4. Переменные и их инициализация, область видимости и время жизни переменных
5. Арифметические операторы, логические операторы
6. Приоритет операций, преобразование типов в выражениях
7. Оператор присваивания
8. Операторы условный и выбора
9. Операторы цикла
10. Операторы перехода
11. Структурированные типы данных (массивы, строки, множества, записи).
12. Файловый тип.
13. Текстовые файлы.
14. Типизированные файлы.
15. Бестиповые файлы.
16. Указатели.
17. Динамические массивы.
18. Динамические структуры данных на примере стека и очереди.
19. Процедуры и функции.
20. Параметры формальные и фактические.
21. Процедурный тип.
22. Классы и объекты, элементы класса
23. Исключительные ситуации. Обработка исключений.
Вопросы к экзамену (4 семестр)
1. Структура программы на С#, C++, JAVA
2. Встроенные типы данных
3. Типы-значения и ссылочные типы
4. Основные операторы
5. Создание и инициализация массивов, ступенчатые массивы
6. Класс Array
7. Строки, класс String
8. Классы и объекты, элементы класса
9. Методы, параметры методов
10. Перегрузка методов
11. Конструкторы и инициализация данных
12. Деструкторы и алгоритм сборки мусора
13. Перегруженные операторы
14. Свойства
15. Индексаторы
16. Производные классы
17. Конструкторы и наследование
18. Преобразование типов при работе с иерархией объектов, операторы проверки и
приведения типа
19. Переопределение методов
20. Абстрактные классы и наследование
21. Абстрактный класс Object
22. Реализация интерфейсов, интерфейсы и классы, интерфейсы и структуры
23. Обработка исключений, генерация исключений
24. Класс Exception, исключения и наследование
25. Создание и использование делегатов, групповые делегаты
26. Определение и использование событий, генерация событий, широковещательные
события
27. Использование пространств имен
28. Препроцессорная обработка.
29. Многопоточные приложения.
10. Образовательные технологии.
Сочетание традиционных и новых образовательных технологий в ходе проведения
лекций, компьютерных лабораторных работ и контрольных мероприятий (контрольных
работ, промежуточного тестирования, зачета и экзамена).



Аудиторные занятия:
лекционные и лабораторные занятия (разработка индивидуальных и
коллективных проектов); контроль осуществляется в ходе опроса на
лекциях, проверки конспектов, при сдаче лабораторных заданий. В течение
обучения студенты выполняют комплексы индивидуальных заданий;
активные и интерактивные формы – проблемные вопросы на лекциях,
публичные защиты проектов, дискуссии по результатам выполнения
курсовых работ, работа студенческих исследовательских групп.
Внеаудиторные занятия:
самостоятельная работа (выполнение самостоятельных заданий разного типа
и уровня сложности на лабораторных занятиях, подготовка к аудиторным
занятиям, подготовка проектов и курсовых работ, изучение отдельных тем и
вопросов учебной дисциплины в соответствии с учебно-тематическим

планом, составление конспектов, выполнение индивидуальных заданий:
докладов, сообщений, решение олимпиадных задач, выполнение
самостоятельных и контрольных работ, подготовка ко всем видам
контрольных
испытаний:
текущему
контролю
успеваемости
и
промежуточной аттестации);
индивидуальные консультации.
11. Учебно-методическое и информационное обеспечение дисциплины (модуля).
11.1. Основная литература:
1. Бобровский С.И. Delphi 7 : учебный курс. -Санкт-Петербург: Питер, 2005.-736 c
2. Вирт Н. Алгоритмы и структуры данных : с примерами на Паскале. -СанктПетербург: Невский Диалект, 2008.-352 с.
3. Давыдов В.Г. Технологии программирования: С++ -СПб.: БХВ-Петербург, 2005. 672 с.
4. Захаров А.А., Захарова И.Г. Языки и среды программирования. Учебное пособие.
Тюмень: Изд. ТюмГУ, 2006. – 288 с.
5. Кариев Ч.А. Разработка Windows-приложений на основе Visual C#. - М.: БИНОМ,
2009. – 767 с.
6. Лафоре Р. Объектно-ориентированное программирование в С. - СПб. : ПИТЕР,
2004. - 924 с.
7. Троелсен Э. Язык программирования C# и платформа .NET 2.0. М.: Вильямс, 2008.
- 1168 c.
8. Фаронов В.В. Delphi : программирование на языке высокого уровня. -СанктПетербург: Питер, 2005.-640 c.
9. Шилдт Г. Java:Методики программирования Шилдта. – М.: Вильямс, 2008. – 512 с.
11.2. Дополнительная литература:
1. Гергель В.П. Теория и практика параллельных вычислений : учеб. пособие. Москва: Интернет-Университет Информационных Технологий: БИНОМ. Лаборатория
знаний, 2007.-423 с.
2. Деменев А.Г. Программирование для параллельных вычислительных систем :
учеб.-метод. Пособие. - Пермь: Изд-во ПГУ, 2007.-128 с
3. Мак-Дональд М., Шпушта М. Microsoft ASP.NET 2.0 с примерами на C# 2005 для
профессионалов. М.: Вильямс, 2008. – 108 с.
4. Охотников Е.С. Языки программирования [Электронный ресурс] : лаб. практикум. Тюмень: Изд-во ТюмГУ: Виндекс, 2008.-1 o=эл. опт. диск (CD-ROM)
5. Свердлов С.З. Языки программирования и методы трансляции : учеб. пособие. Санкт-Петербург: ПИТЕР, 2007. -144 с.
6. Фленов М.Е. Библия Delphi. -Санкт-Петербург: БХВ-Петербург, 2008.-880 с.
11.3. Программное обеспечение и Интернет – ресурсы:
1. MSDN Academic Alliance. Библиотека учебных курсов [электр. ресурс]. – Режим
доступа http://www.microsoft.com/Rus/msdnaa/curricula/default.mspx свободный. - Загл. с
экрана.
2. Интернет-университет информационных технологий. Языки и системы
программирования [электр. ресурс]. – Режим доступа http://www.intuit.ru/catalog/se/pl/
свободный. - Загл. с экрана.
12. Технические средства и материально-техническое обеспечение дисциплины
(модуля).
Для чтения лекций используется аудитория, оборудованная мультимедиа
проектором и персональным компьютером.
Для выполнения лабораторных работ используется компьютерное оборудование (1
студент на компьютер) с установленными программными продуктами Delphi (версия не
ниже 7), Microsoft Visual Studio (версия не ниже 2010), JDK, Netbeans.
Download