1511
.pdfМинистерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования
«Нижегородский государственный архитектурно-строительный университет»
Никитенкова С.П.
ПРОГРАММИРОВАНИЕ
Учебно-методическое пособие по подготовке к лекционным и практическим занятиям
(включая рекомендации по организации самостоятельной работы)
для обучающихся по дисциплине «Программирование сценариев»
по направлению подготовки 09.03.04 Программная инженерия профиль Разработка программно-информационных систем
Нижний Новгород
2018
УДК 004.9
Платов А.Ю. / Программирование [Электронный ресурс]: учеб.-метод. пос. / А.Ю. Платов; Нижегор. гос. архитектур. - строит. ун-т – Н. Новгород: ННГАСУ, 2018. – 14 с.– 1 электрон. опт. диск (CDRW).
В настоящем учебно-методическом пособии по дисциплине «Программирование» даются конкретные рекомендации учащимся для освоения как основного, так и дополнительного материала дисциплины и тем самым способствующие достижению целей, обозначенных в учебной программе дисциплины. Цель учебно-методического пособия — это помощь в усвоении лекций, в подготовке к практическим занятиям.
Учебно-методическое пособие предназначено для обучающихся в ННГАСУ по дисциплине «Программирование сценариев» по направлению подготовки 09.03.04 Программная инженерия, профиль Разработка программно-информационных систем.
Учебно-методическое пособие ориентировано на обучение в соответствии с календарным учебным графиком и учебным планом по основной профессиональной образовательной программе направления 09.03.04 Программная инженерия, профиль Разработка программно-информационных систем, утверждённым решением учёного совета ННГАСУ от 02.03.2018 г. (протокол № 3).
© |
А.Ю. Платов, 2018 |
© |
ННГАСУ, 2018 |
2
Оглавление
1. |
Общие положения .......................................................................................................................... |
4 |
|
|
1.1 |
Цели изучения дисциплины и результаты обучения ........................................................... |
4 |
|
1.2 |
Содержание дисциплины........................................................................................................ |
5 |
|
1.3 |
Порядок освоения материала.................................................................................................. |
6 |
2. |
Методические указания по подготовке к лекциям...................................................................... |
7 |
|
|
2.1 |
Общие рекомендации по работе на лекциях......................................................................... |
7 |
|
2.2 |
Общие рекомендации при работе с конспектом лекций...................................................... |
7 |
|
2.3 |
Общие рекомендации по изучению материала лекций ....................................................... |
7 |
|
2.4 |
Контрольные вопросы............................................................................................................. |
9 |
3. |
Методические указания по подготовке к практическим занятиям ......................................... |
10 |
|
|
3.1 |
Общие рекомендации по подготовке к практическим занятиям ...................................... |
10 |
|
3.2 |
Примеры задач для практических занятий.......................................................................... |
10 |
4. |
Методические указания по организации самостоятельной работы ........................................ |
14 |
|
|
4.1 |
Общие рекомендации для самостоятельной работы.......................................................... |
14 |
|
4.2 |
Темы для самостоятельного изучения................................................................................. |
15 |
|
4.3 |
Учебно-методическое обеспечение самостоятельной работы.......................................... |
15 |
|
4.4 |
Задания для самостоятельной работы ................................................................................. |
16 |
5. |
Методические указания по организации курсовых работ........................................................ |
17 |
3
1. Общие положения
1.1 Цели изучения дисциплины и результаты обучения
Основными целями освоения учебной дисциплины «Программирование» являются:
формирование у обучающихся базовых знаний по алгоритмизации, программированию и использованию инструментальных средств разработки программ, необходимые для успешного освоения дисциплин профессионального, математического и естественнонаучного цикла (базовых и вариативных частей), изучение которых связано с применением средств информационно-коммуникационных технологий, созданием эффективных алгоритмов решения задач, разработкой программного обеспечения для различных предметных областей. Освоение дисциплины должно обеспечить базовые знания в области алгоритмизации и программирования, которые дадут возможность выпускнику успешно работать в сфере организации процессов жизненного цикла информационных систем, обладать универсальными и предметно-специализированными компетенциями.
В процессе освоения дисциплины студент должен Знать:
−базовые положения математики, информатики, основы программирования и информационных технологий, тенденции их развития
−методы и приемы алгоритмизации, особенности реализации классических алгоритмов средствами различных языков программирования
−основополагающие тренды в сфере информационной индустрии, современных языков программирования
−основные конструкции языков программирования высокого уровня на примере языка С/C++,
−основы построения схем алгоритмов, принципы работы компиляторов,
−особенности и синтаксические конструкции объектно-ориентированного программирования;
−классификацию языков программирования и тенденции их развития;
−парадигмы программирования, современные технологии разработки программного обеспечения, процесс разработки, возможности современных языков программирования;
−основные правила подготовки презентаций, научно-технических отчетов
Уметь:
−применять вычислительную технику и программные средства для решения практических задач
−осуществлять и обосновывать выбор информационных технологий для создания конкурентоспособного программного продукта
−использовать различные среды разработки программного обеспечения
−уметь квалифицированно и обоснованно выбрать язык программирования для оптимального решения поставленной задачи,
−решать задачи, используя различные методы разработки алгоритмов и выбирая наиболее подходящие алгоритмы и средства их реализации в зависимости от постановки задачи;
−составлять документированные отчеты, обзоры и презентации по выполненной работе, публи-
ковать результаты исследований в виде статей и докладов на научно-технических конференциях Владеть:
−практическими навыками разработки программ на современных языках программирования
−методами создания прикладных программ в различных предметных областях с учетом нор- мативно-правовых документов, международных и отечественных стандартов в области информационных систем и технологий
−практическими навыками использования современных средств разработки программного обеспечения, компьютерных и сетевых технологий для решения профессиональных задач
4
−методами и инструментальными средствами разработки программ на языке программирования высокого уровня, их тестирования и отладки, работы в интегрированных средах программирования;
−навыками самостоятельного решения задач, творческого подхода к поставленной задаче, сформированной способностью к изучению новых средств разработки программ.
Данная дисциплина позволит студентам не только систематизировать полученные теоретические знания, укрепить исследовательские навыки, но и даст возможность ориентироваться в новом предметном поле экономической информатики.
1.2 Содержание дисциплины
Материал дисциплины сгруппирован по следующим разделам:
1. Понятие языка программирования.
Понятия языка программирования. Многообразие языков программирование. История и эволюция языков программирования. Основные понятия программирования. Понятие алгоритма. Жизненный цикл программного обеспечения. Парадигмы программирования: структурного программирования, объектно-ориентированного программирования, функционального программирования, логического программирования. Тенденции развития языков программирования.
2. Разработка программного обеспечения.
Этапы разработки программы. Определение цели задачи, ее содержание и общий подход к решению, эффективность используемого алгоритма. Определение исходных данных и результат, ограничения на их значения. Разработка или выбор алгоритма решения задачи. Формирование общей структуры программы с последующей детализацией и разбивкой на подпрограммы, способ хранения информации (набор переменных, массивов и т. п.). Кодирование — запись алгоритма на языке программирования. Отладка и тестирование программы. Анализ результатов.
3. Алгоритмизация и программирование
Понятие алгоритма. Линейный, разветвляющийся и циклический алгоритмы. Структурное программирование. Теорема Бёма — Якопини как основное положение структурного программирования, согласно которому любой исполняемый алгоритм может быть преобразован к структурированному виду, то есть такому виду, когда ход его выполнения определяется только при помощи трёх структур управления: последовательной, ветвлений и повторов или циклов. Нисходящее проектирование
4. Базовые основы программирования на языке C/C++.
Обзор языка C/C++. История создания, развития и стандартизации C++ . Совместимость C и C++ Поддержка нескольких парадигм программирования. Структурное программирование . Процедурное программирование. Модульное программирование. Объектно-ориентированное программирование e. Обобщенное программирование. Эффективность. Возможности языка С/C++ как языка программирования высокого и низкого уровня. Компиляция и интерпретация языков программирования.
5. Синтаксис языка C/C++.
5
Базовые типы данных: целочисленные , числа с плавающей точкой, символьный, логический. Переменные и константы. Операции и выражения. Преобразования типов. Условный оператор. Оператор множественного выбора switch . Циклы: с предусловием , с постусловием, цикл for . Управление циклами . Ввод-вывод . Ввод-вывод из языка C . Потоковый ввод-вывод С++. Функции . Функции, возвращаемые значения, параметры и аргументы. Объявление и определение функций. Локальные и глобальные переменные. Дополнительные сведения о функциях. Рекурсия.
6. Структурированные типы данных. Массивы.
Объявление массивы. Одномерные и многомерные массивы. Типовые задачи на массивы: сортировка одномерных массивов, перемножение матриц, транспонирование матриц и т.д. Массивы и функции. Массив как аргумент функции. Понятие указателей. Ссылки в C++. Связь указателей и массивов. Вычисления с указателями. Передача аргументов функций как указателей. Динамические массивы.
7. Работа с файлами.
Строки и символьные массивы данных. Функции для работы со строчным типом данных. Запись и чтение информации файла. Шифрование текстовых данных. Потоки и файлы. Основы файловой системы. Указатель файла, открытие файла, закрытие файла, запись символа, чтение символа и т.д. Буферный ввод/вывод. Функции fread() и fwrite(). Ввод/вывод при прямом доступе. Бинарные файлы. Модульный принцип разработки программы.
8. Структуры и Объекты.
Понятие структуры. Массив структур. Динамические структуры. Запись и чтение структуры из файла. Введение в Объектно-ориентированное программирование. Понятие класса и объекта. Базовые понятия объектно-ориентированное программирования: инкапсуляция, наследование, полиморфизм. Сравнение структурного и объектно-ориентированного подхода к разработке программ.
1.3 Порядок освоения материала
Материал дисциплины изучается в соответствии с порядком, определённым в следующей таблице:
|
|
Таблица 1 |
|
Порядок освоения дисциплины |
|
|
|
|
№ |
Раздел дисциплины |
№№ предшествующих разделов |
|
|
|
1 |
Понятие языка программирования. |
- |
|
|
|
2 |
Разработка программного обеспечения. |
1 |
|
|
|
3 |
Алгоритмизация и программирование |
1,2 |
|
|
|
4 |
Базовые основы программирования на языке C/C++. |
1,2,3 |
|
|
|
5 |
Синтаксис языка C/C++. |
3,4 |
|
|
|
6 |
Структурированные типы данных. Массивы. |
3,4,5 |
|
|
|
7 |
Работа с файлами. |
5,6 |
|
|
|
8 |
Структуры и Объекты. |
5,6,7 |
|
|
|
6
2. Методические указания по подготовке к лекциям
2.1 Общие рекомендации по работе на лекциях
Лекция является главным звеном дидактического цикла обучения. Ее цель — формирование основы для последующего усвоения учебного материала. В ходе лекции преподаватель в устной форме, а также с помощью презентаций передает обучаемым знания по основным, фундаментальным вопросам изучаемой дисциплины.
Назначение лекции состоит в том, чтобы доходчиво изложить основные положения изучаемой дисциплины, ориентировать на наиболее важные вопросы учебной дисциплины и оказать помощь в овладении необходимых знаний и применения их на практике.
Личное общение на лекции преподавателя со студентами предоставляет большие возможности для реализации образовательных и воспитательных целей.
При подготовке к лекционным занятиям студенты должны ознакомиться с презентаций, предлагаемой преподавателем, отметить непонятные термины и положения, подготовить вопросы с целью уточнения правильности понимания. Рекомендуется приходить на лекцию подготовленным, так как в этом случае лекция может быть проведена в интерактивном режиме, что способствует повышению эффективности лекционных занятий.
2.2Общие рекомендации при работе с конспектом лекций
Входе лекционных занятий необходимо вести конспектирование учебного материала. Конспект помогает внимательно слушать, лучше запоминать в процессе осмысленного записывания, обеспечивает наличие опорных материалов при подготовке к семинару, зачету, экзамену.
Полезно оставить в рабочих конспектах поля, на которых делать пометки из рекомендованной литературы, дополняющие материал прослушанной лекции, а также подчеркивающие особую важность тех или иных теоретических положений.
Вслучае неясности по тем или иным вопросам необходимо задавать преподавателю уточняющие вопросы. Следует ясно понимать, что отсутствие вопросов без обсуждения означает в большинстве случаев неусвоенность материала дисциплины.
2.3Общие рекомендации по изучению материала лекций
Раздел 1. Понятие программирование— 3 лекции.
Цель: вызвать интерес к изучению курса, сформировать представление и систематизировать знаний о развитии технологий программирования, о разработке программного продукта.
Понятия языка программирования. Многообразие языков программирование. История и эволюция языков программирования. Основные понятия программирования. Понятие алгоритма. Жизненный цикл программного обеспечения. Парадигмы программирования: структурного программирования, объектно-ориентированного программирования, функционального программирования, логического программирования. Тенденции развития языков программирования. Этапы разработки программы. Определение цели задачи, ее содержание и общий подход к решению, эффективность используемого алгоритма. Определение исходных данных и результат, ограничения на их значения. Разработка или выбор алгоритма решения задачи. Формирование общей структуры программы с последующей детализацией и разбивкой на подпрограммы, способ хранения информации (набор переменных, массивов и т. п.). Коди-
7
рование — запись алгоритма на языке программирования. |
Отладка и тестирование программы. Анализ |
результатов. |
|
Раздел 2. Алгоритмизация и программирование — 3 |
лекции. |
Цель: сформировать представление, что выбор правильного и эффективного алгоритма и заием его запись на языке программирования представляет собой единое целое при разработке программного продукта.
Понятие алгоритма. Разработка алгоритма. Свойства алгоритма. Линейный, разветвляющийся и циклический алгоритмы. Структурное программирование. Теорема Бёма — Якопини как основное положение структурного программирования, согласно которому любой исполняемый алгоритм может быть преобразован к структурированному виду, то есть такому виду, когда ход его выполнения определяется только при помощи трёх структур управления: последовательной, ветвлений и повторов или циклов. Нисходящее проектирование
Раздел 3. Программирование на языке С/C++— 8 лекции.
Цель: учитывая особенности языка C++, проектировать и реализовывать высоко-эффективные программы;
Базовые типы данных: целочисленные , числа с плавающей точкой, символьный, логический. Переменные и константы. Операции и выражения. Преобразования типов. Условный оператор. Оператор множественного выбора switch . Циклы: с предусловием , с постусловием, цикл for . Управление циклами . Ввод-вывод . Ввод-вывод из языка C . Потоковый ввод-вывод С++. Функции . Функции, возвращаемые значения, параметры и аргументы. Объявление и определение функций. Локальные и глобальные переменные. Дополнительные сведения о функциях. Рекурсия. Структурированные типы данных. Массивы. Объявление массивы. Одномерные и многомерные массивы. Типовые задачи на массивы: сортировка одномерных массивов, перемножение матриц, транспонирование матриц и т.д. Массивы и функции. Массив как аргумент функции. Понятие указателей. Ссылки в C++. Связь указателей и массивов. Вычисления с указателями. Передача аргументов функций как указателей. Динамические массивы. Строки и символьные массивы данных. Функции для работы со строчным типом данных. Запись и чтение информации файла. Шифрование текстовых данных. Потоки и файлы. Основы файловой системы. Указатель файла, открытие файла, закрытие файла, запись символа, чтение символа и т.д. Буферный ввод/вывод. Функции fread() и fwrite(). Ввод/вывод при прямом доступе. Бинарные файлы. Модульный принцип разработки программы.
Раздел 4. Структуры и Объекты — 8 лекции.
Цель: научить реализовывать методы анализа и обработки данных, работать в средах программирования; создавать современные информационные продукты.
Понятие структуры. Массив структур. Динамические структуры. Запись и чтение структуры из файла. Введение в Объектно-ориентированное программирование. Понятие класса и объекта. Сравнение структурного и объектно-ориентированного подхода к разработке программ. Структура сложных систем. Архитектура системы – структуры классов и объектов системы. Объектно-ориентированная деком-
8
позиция. Абстракции. Иерархии. Принципы объектной модели – абстрагирование, инкапсуляция, модульность, иерархичность, типизация, параллелизм. Эволюция объектной модели. Поколения и топология языков программирования. Объектно-ориентированное программирование. Процессы объектноориентированного анализа и проектирования.
2.4Контрольные вопросы
1.Понятие алгоритма. Алгоритмические системы. Исполнители алгоритма.
2.Языки для формулировки алгоритмов: естественный язык, язык блок-схем и языки символического кодирования.
3.Алгоритмизация и этапы разработки алгоритма.
4.Функциональная декомпозиция при разработке алгоритмов.
5.Типы алгоритмов: линейный, условный, циклический, рекурсивный и эвристический.
6.Обзор языков программирования. Языки программирования С и С++.
7.Основные парадигмы программирования: императивная, модульная, объектно-ориентированная.
8.Языки программирования высокого и низкого уровня.
9.Основные этапы проектирования и разработки программы.
10.Жизненный цикл программного продукта.
11.Структура программы на С и С++. Заголовочные файлы и компоновка программы.
12.Этапы построения математической модели. Математические вычисления на языке C/C++.
13.Понятие типа данных. Простые и структурированные типы данных.
14.Указатели и адресная арифметика.
15.Объявления и определения функций. Аргументы функций.
16.Одномерные и многомерные массивы.
17.Работа с файлами. Операции чтения-записи. Текстовые и двоичные файлы.
18.Алгоритмы поиска и сортировки в массиве.
19.Символьные массивы и строки. Обработка строк.
20.Структуры. Массивы структур.
21.Динамическое выделение памяти. Динамические массивы.
22.Односвязные и двухсвязные списки.
23.Модульное программирование.
24.Структура сложных систем.
25.Объектно-ориентированная декомпозиция.
26.Объектная модель. Основные концепции.
27.Объектно-ориентированное программирование
28.Процессы объектно-ориентированного анализа и проектирования.
29.Структура. Классы и объекты.
30.Процесс трансляции (компиляторы и интерпретаторы)
31.Тестирование программ. Полнота тестирования
9
3. Методические указания по подготовке к практическим занятиям
3.1Общие рекомендации по подготовке к практическим занятиям
Входе подготовки к практическим занятиям необходимо изучать основную литературу, знакомиться с дополнительной литературой, а также с новыми публикациями в периодических изданиях: журналах, газетах и т.д. При этом необходимо учесть рекомендации преподавателя и требования учебной программы.
Всоответствии с этими рекомендациями и подготовкой полезно дорабатывать свои конспекты лекции, делая в нем соответствующие записи из литературы, рекомендованной преподавателем и предусмотренной учебной программой. Целесообразно также подготовить тезисы для возможного выступлений по всем учебным вопросам, выносимым на практическое занятие.
При подготовке к занятиям можно также подготовить краткие конспекты по вопросам темы. Очень эффективным приемом является составление схем и презентаций.
Готовясь к докладу или реферативному сообщению, желательно обращаться за методической помощью к преподавателю. Составить план-конспект своего выступления. Продумать примеры с целью обеспечения тесной связи изучаемой теории с реальной жизнью. Своевременное и качественное выполнение самостоятельной работы базируется на соблюдении настоящих рекомендаций и изучении рекомендованной литературы. Студент может дополнить список использованной литературы современными источниками, не представленными в списке рекомендованной литературы, и в дальнейшем использовать собственные подготовленные учебные материалы при написании курсовых и дипломных работ.
3.2Примеры задач для практических занятий
Задачи для раздела 1,2.
Задача 1.
Три точки заданы своими координатами. Найти наиболее удаленные друг от друга точки. Координаты первой точки - (a, b); второй точки – (c, d); третьей точки - (e, f).
Задача 2.
Напечатать числа в порядке возрастания, найти среднее из чисел a, b, c .
Задача 3.
При заданных n, x вычислить значение y:
|
2cos2 x − 1, |
|
если n = 2, |
|
|
|
если n = 3, |
4cos3 x − 3cos x, |
|||
y = |
|
2 x + 1, |
если n = 4, |
8cos4 x − 8cos |
5 − 3 + =16cos x 20cos x 5cos x, если n 5.
10