Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

6108

.pdf
Скачиваний:
0
Добавлен:
21.11.2023
Размер:
720.53 Кб
Скачать

МИНОБРНАУКИ РОССИИ

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

«Нижегородский государственный архитектурно-строительный университет»

Никитенкова С.П.

ПРОГРАММИРОВАНИЕ

Учебно-методическое пособие по подготовке к лекциям, практическим занятиям

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

для обучающихся по дисциплине «Программирование» по направлению подготовки 09.03.03 Прикладная информатика

профиль Прикладная информатика в экономике

Нижний Новгород

2022

УДК 004.9

Никитенкова С.П./ Программирование: учебно-методическое пособие /С.П. Никитенкова; Нижегородский государственный архитектурно-строительный университет – Нижний Новгород: ННГАСУ, 2022. –26с.– Текст: электронный.

В настоящем учебно-методическом пособии по дисциплине «Программирование» даются конкретные рекомендации учащимся для освоения как основного, так и дополнительного материала дисциплины и тем самым способствующие достижению целей, обозначенных в учебной программе дисциплины. Цель учебно-методического пособия — это помощь в усвоении лекций, в подготовке к практическим занятиям, а также в написании курсовой работы.

Учебно-методическое пособие предназначено для обучающихся в ННГАСУ по дисциплине «Программирование» по направлению подготовки 09.03.03 Прикладная информатика, профиль Прикладная информатика в экономике.

© С.П. Никитенкова, 2022

© ННГАСУ, 2022

2

Оглавление

 

1. Общие положения ..........................................................................................................................

4

1.1

Цели изучения дисциплины и результаты обучения ...........................................................

4

1.2

Содержание дисциплины........................................................................................................

5

1.3

Порядок освоения материала .................................................................................................

9

2. Методические указания по подготовке к лекциям ...................................................................

10

2.1

Общие рекомендации по работе на лекциях ......................................................................

10

2.2

Общие рекомендации при работе с конспектом лекций ...................................................

10

2.3

Общие рекомендации по изучению материала лекций .....................................................

10

2.4

Контрольные вопросы ..........................................................................................................

14

3. Методические указания по подготовке к практическим занятиям .........................................

16

3.1

Общие рекомендации по подготовке к практическим занятиям......................................

16

3.2

Примеры задач для практических занятий .........................................................................

16

Задача 1...............................................................................................................

16

4. Методические указания по организации самостоятельной работы........................................

20

4.1

Общие рекомендации для самостоятельной работы .........................................................

20

4.2

Темы для самостоятельного изучения ................................................................................

22

4.3

Учебно-методическое обеспечение самостоятельной работы..........................................

23

4.4

Задания для самостоятельной работы .................................................................................

23

5. Методические указания по организации курсовых работ .......................................................

24

3

1. Общие положения

1.1 Цели изучения дисциплины и результаты обучения

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

В процессе освоения дисциплины студент должен

Знать:

основные конструкции языков программирования высокого уровня,

основы построения схем алгоритмов, принципы работы компиляторов,

особенности и синтаксические конструкции объектно-ориентированного программирования;

классификацию языков программирования и тенденции их развития;

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

Уметь:

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

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

Владеть:

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

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

Данная дисциплина позволит студентам не только систематизировать полученные теоретические знания, укрепить исследовательские навыки, но и даст возможность ориентироваться в новом предметном поле экономической информатики.

4

1.2 Содержание дисциплины

Наименование раздела дисципли-

Содержание раздела

п/п

ны

дисциплины

 

 

 

1

Введение в программирование

Обзор тенденций развития современных язы-

 

 

ков программирования. Парадигмы програм-

 

 

мирования. Императивное (процедурное) про-

 

 

граммирование. Структурное программирова-

 

 

ние. Функциональное программирование. Ло-

 

 

гическое программирование. Объектноориен-

 

 

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

 

 

программирования для решения задач в кон-

 

 

кретной предметной области.

 

 

 

2

Основы алгоритмизации

Основные принципы алгоритмизации, процесс

 

 

работы программы, обработка компьютером

 

 

данных. Этапы разработки программного

 

 

обеспечения. Жизненный цикл программного

 

 

продукта.

 

 

 

3

Операторы и инструкции языка

Понятие оператора. Понятие блока. Оператор

 

программирования

условия. Использование логических операций.

 

 

Приоритет операций. Оператор выбора. Опера-

 

 

тор цикла: циклы с предусловием, с постусло-

 

 

вием, с параметром.

 

 

 

4

Функции

Декомпозиция задачи на подзадачи. Програм-

 

 

мирование сверху вниз и снизу вверх. Входные

 

 

и выходные данные подпрограммы. Область

 

 

видимости имен. Локальные и глобальные

 

 

идентификаторы Вызов процедуры и функции.

 

 

Аргументы формальные и фактические. Струк-

 

 

турная декомпозиция.

 

 

 

5

Массивы

Массивы одномерные и многомерные. Дина-

 

 

мические массивы. Типовые задачи с массива-

 

 

ми: доступ к элементу, обход элементов, ини-

 

 

циализация элементов. Представление тексто-

 

 

вой информации. Функции для работы со

 

 

строками

 

 

 

6

Указатели. Операции над указате-

Понятие указателя. Операции получения адре-

 

лями.

са объекта и разыменования указателя. Опера-

 

 

ции над указателями. Алгоритмы обработки

 

 

числовых массивов с использованием указате-

 

 

лей.

 

 

 

 

 

5

7

Файлы. Модули

Понятие файла. Текстовые и бинарные файлы.

 

 

Последовательный и

произвольный методы

 

 

доступа к файлам. Заголовочный файл и функ-

 

 

ции для организации последовательного до-

 

 

ступа. Режимы открытия файлов. Особенности

 

 

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

 

 

файлов. Алгоритмы формирования, просмотра

 

 

и корректировки файлов.

 

 

 

 

8

Структуры

Пользовательский тип данных (структура).

 

 

Статические и структуры данных. Описание.

 

 

Примеры использования. Динамические струк-

 

 

туры данных: списки, очереди, деревья. Общие

 

 

свойства динамических структур данных.

 

 

 

9

Объектно-ориентированная пара-

Абстракция, инкапсуляция, наследование по-

 

дигма программирования.

лиморфизм

 

 

 

 

 

 

 

10

Классы, объекты, интерфейсы

Определение класса.

Объекты.

Создание и

 

 

уничтожение объектов класса. Конструкторы и

 

 

деструкторы. Способы реализации инкапсуля-

 

 

ции. Интерфейс и реализация контейнерных

 

 

классов для моделирования структур данных.

 

 

Статические члены объектов

 

 

 

класса. Вложенные и локальные классы. При-

 

 

меры описания и использования классов. Се-

 

 

риализация/ десериализация

 

 

 

 

11

Наследование

Организация иерархии классов. Интерфейсы.

 

 

Модификаторы доступа. Абстрактные классы

 

 

и виртуальные функции. Множественное

 

 

наследование. Проблема множественного

 

 

наследования. Виртуальное наследование как

 

 

средство разрешения коллизий

 

 

 

 

12

Полиморфизм

Виды полиморфизма. Статический полимор-

 

 

физм. Перегрузка функций, методов, операто-

 

 

ров и т.д.

 

 

 

 

Динамический полиморфизм.

Виртуальные

 

 

функции и методы.

 

 

 

 

 

13

Массивы и Коллекции.

Преимущество коллекций. Стандартизация об-

 

 

работки групп объектов с помощью коллекций.

 

 

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

 

 

 

 

14

Графика. 2D и 3D графика. Визуа-

Основные графические классы. Графические

 

лизация данных. Анимация

примитивы. Методы

класса Graphics. Постро-

 

 

ение графиков

 

 

 

 

 

15

Многопоточное программирова-

Потоки и процессы. Класс Thread. Назначение

 

ние

приоритета потока. Управление и синхрониза-

 

 

 

 

 

6

ция потоков

Материал дисциплины сгруппирован по следующим разделам: 1. Введение в программирование.

Понятия языка программирования. Многообразие языков программирование. История и эволюция языков программирования. Основные понятия программирования. Понятие алгоритма. Жизненный цикл программного обеспечения. Парадигмы программирования: структурного программирования, объектно-ориентированного программирования, функционального программирования, логического программирования. Тенденции развития языков программирования.

2. Основы алгоритмизации.

Этапы разработки программы. Определение цели задачи, ее содержание и общий подход к решению, эффективность используемого алгоритма. Определение исходных данных и результат, ограничения на их значения. Теорема Бёма — Якопини. Разработка или выбор алгоритма решения задачи. Формирование общей структуры программы с последующей детализацией и разбивкой на подпрограммы, способ хранения информации (набор переменных, массивов и т. п.). Кодирование

запись алгоритма на языке программирования. Отладка и тестирование программы. Анализ результатов.

3. Операторы и инструкции языка программирования.

Обзор языка C/C++. История создания, развития и стандартизации C++ . Совместимость C и C++ . Поддержка нескольких парадигм программирования. Структурное программирование . Процедурное программирование. Модульное программирование. Объектно-ориентированное программирование e. Обобщенное программирование. Эффективность. Возможности языка С/C++ как языка программирования высокого и низкого уровня. Компиляция и интерпретация языков программирования. Базовые типы данных: целочисленные , числа с плавающей точкой, символьный, логический. Переменные и константы. Операции и выражения. Преобразования типов. Условный оператор. Оператор множественного выбора switch . Циклы: с предусловием , с постусловием, цикл for . Управление циклами. Ввод-вывод. Ввод-вывод из языка C . Потоковый вводвывод С++. Функции . Функции, возвращаемые значения, параметры и аргументы. Объявление и определение функций. Локальные и глобальные переменные. Дополнительные сведения о функциях. Рекурсия.

4. Функции Декомпозиция задачи на подзадачи. Программирование сверху вниз и снизу вверх. Входные

и выходные данные подпрограммы. Область видимости имен. Локальные и глобальные идентификаторы Вызов процедуры и функции. Аргументы формальные и фактические. Структурная декомпозиция.

5. Структурированные типы данных. Массивы.

Объявление массивы. Одномерные и многомерные массивы. Типовые задачи на массивы: сортировка одномерных массивов, перемножение матриц, транспонирование матриц и т.д. Массивы и функции. Массив как аргумент функции. Понятие указателей. Ссылки в C++. Связь указателей и массивов. Вычисления с указателями. Передача аргументов функций как указателей. Динамические массивы.

6. Указатели. Операции над указателями.

7

Понятие указателя. Операции получения адреса объекта и разыменования указателя. Операции над указателями. Указатели и массивы в языке программирования C++, установка указателя на массив, перебор массива с помощью указателей.

7. Работа с файлами. Модули Понятие файла. Текстовые и бинарные файлы. Последовательный и произвольный методы

доступа к файлам. Заголовочный файл и функции для организации последовательного доступа. Режимы открытия файлов. Особенности произвольного доступа к элементам бинарных файлов. Алгоритмы формирования, просмотра и корректировки файлов. Строки и символьные массивы данных. Функции для работы со строчным типом данных. Запись и чтение информации файла. Шифрование текстовых данных. Потоки и файлы. Основы файловой системы. Указатель файла, открытие файла, закрытие файла, запись символа, чтение символа и т.д. Буферный ввод/вывод. Функции fread() и fwrite(). Ввод/вывод при прямом доступе. Модульный принцип разработки программы.

8. Структуры.

Понятие структуры. Массив структур. Динамические структуры. Запись и чтение структуры из файла. Примеры использования. Списки, очереди, деревья. Общие свойства динамических структур данных.

9. Объектно-ориентированная парадигма программирования.

Введение в Объектно-ориентированное программирование. Понятие класса и объекта. Базовые понятия объектно-ориентированное программирования: инкапсуляция, наследование, полиморфизм. Сравнение структурного и объектно-ориентированного подхода к разработке программ.

10. Классы, объекты, интерфейсы Определение класса. Объекты. Создание и уничтожение объектов класса. Конструкторы и

деструкторы. Способы реализации инкапсуляции. Интерфейс и реализация контейнерных классов для моделирования структур данных. Статические члены класса. Вложенные и локальные классы. Примеры описания и использования классов. Сериализация/ десериализация. Абстракция и инкапсуляция. Модификаторы доступа и наследование. Статический и динамический полиморфизм. Абстрактный класс. Интерфейс. Отличие. Переопределение, перегрузка и сокрытие методов.

11. Наследование Организация иерархии классов. Интерфейсы. Модификаторы доступа. Абстрактные классы и

виртуальные функции. Множественное наследование. Проблема множественного наследования. Виртуальное наследование как средство разрешения коллизий

12. Полиморфизм Виды полиморфизма. Статический полиморфизм. Перегрузка функций, методов, операторов и т.д.

Динамический полиморфизм. Виртуальные функции и методы. 13. Массивы и Коллекции.

Преимущество коллекций. Стандартизация обработки групп объектов с помощью коллекций. Интерфейсы коллекций

14. Графика. 2D и 3D графика. Визуализация данных. Анимация

Основные графические классы. Графические примитивы. Методы класса Graphics. Построение графиков

15. Многопоточное программирование

Потоки и процессы. Класс Thread. Назначение приоритета потока. Управление и синхронизация потоков.

8

1.3 Порядок освоения материала

Материал дисциплины изучается в соответствии с порядком, определённым в следующей таблице:

 

 

 

Таблица 1

 

Порядок освоения дисциплины

 

 

 

 

 

Раздел дисциплины

 

№№ предшествующих разделов

 

 

 

 

1

Введение в программирование

 

-

 

 

 

 

2

Основы алгоритмизации

 

1

 

 

 

 

3

Операторы и инструкции языка программирования

 

1,2

 

 

 

 

4

Функции

 

3,4

 

 

 

 

5

Массивы

 

3,4,5

 

 

 

 

6

Указатели. Операции над указателями.

 

5,6

 

 

 

 

7

Файлы. Модули

 

5,6,7

 

 

 

 

8

Структуры

 

5,6,8

 

 

 

 

9

Объектно-ориентированная парадигма программирова-

 

5,6,8

 

ния.

 

 

 

 

 

 

10

Классы, объекты, интерфейсы

 

2,4,9

 

 

 

 

11

Наследование

 

9,10

 

 

 

 

12

Полиморфизм

 

9,10,11

 

 

 

 

13

Массивы и Коллекции.

 

5, 10

 

 

 

 

14

Графика. 2D и 3D графика. Визуализация данных.

 

9,10

 

Анимация

 

 

 

 

 

 

15

Многопоточное программирование

 

9,10,11

 

 

 

 

9

2. Методические указания по подготовке к лекциям

2.1 Общие рекомендации по работе на лекциях

Лекция является главным звеном дидактического цикла обучения. Ее цель — формирование основы для последующего усвоения учебного материала. В ходе лекции преподаватель в устной форме, а также с помощью презентаций передает обучаемым знания по основным, фундаментальным вопросам изучаемой дисциплины.

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

Личное общение на лекции преподавателя со студентами предоставляет большие возможности для реализации образовательных и воспитательных целей.

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

2.2Общие рекомендации при работе с конспектом лекций

Входе лекционных занятий необходимо вести конспектирование учебного материала. Конспект помогает внимательно слушать, лучше запоминать в процессе осмысленного записывания, обеспечивает наличие опорных материалов при подготовке к семинару, зачету, экзамену.

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

Вслучае неясности по тем или иным вопросам необходимо задавать преподавателю уточняющие вопросы. Следует ясно понимать, что отсутствие вопросов без обсуждения означает в большинстве случаев неусвоенность материала дисциплины.

2.3Общие рекомендации по изучению материала лекций

Раздел 1. Введение в программирование.

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

Понятия языка программирования. Многообразие языков программирование. История и эволюция языков программирования. Основные понятия программирования. Понятие алгоритма. Жизненный цикл программного обеспечения. Парадигмы программирования: структурного про-

10

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]