4244
.pdfМинистерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования
«Нижегородский государственный архитектурно-строительный университет»
Никитенкова С.П.
ПРОГРАММИРОВАНИЕ
Учебно-методическое пособие по подготовке к лекциям, практическим занятиям
(включая рекомендации по организации самостоятельной работы и выполнению курсовых работ)
для обучающихся по дисциплине «Программирование» по направлению подготовки 09.03.03 Прикладная информатика
профиль Прикладная информатика в экономике
Нижний Новгород
2016
УДК 004.9
Никитенкова С.П. / Программирование [Электронный ресурс]: учеб.-метод. пос. / С.П. Никитенкова; Нижегор. гос. архитектур. - строит. ун-т – Н. Новгород: ННГАСУ, 2016. – 19 с.– 1 электрон. опт. диск
(CD-RW).
В настоящем учебно-методическом пособии по дисциплине «Программирование» даются конкретные рекомендации учащимся для освоения как основного, так и дополнительного материала дисциплины и тем самым способствующие достижению целей, обозначенных в учебной программе дисциплины. Цель учебно-методического пособия — это помощь в усвоении лекций, в подготовке к практическим занятиям, а также в написании курсовой работы.
Учебно-методическое пособие предназначено для обучающихся в ННГАСУ по дисциплине «Программирование» по направлению подготовки 09.03.03 Прикладная информатика, профиль Прикладная информатика в экономике.
Учебно-методическое пособие ориентировано на обучение в соответствии с календарным учебным графиком и учебным планом по основной профессиональной образовательной программе направления 09.03.03 Прикладная информатика, профиль Прикладная информатика в экономике, утверждённым решением учёного совета ННГАСУ от 02.09.2016 г. (протокол № 1).
© С.П. Никитенкова, 2016 © ННГАСУ, 2016
2
Оглавление |
|
|
1. Общие положения .......................................................................................................................... |
4 |
|
1.1 |
Цели изучения дисциплины и результаты обучения ........................................................... |
4 |
1.2 |
Содержание дисциплины........................................................................................................ |
4 |
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 |
Задача 1............................................................................................................... |
10 |
|
4. Методические указания по организации самостоятельной работы ........................................ |
14 |
|
4.1 |
Общие рекомендации для самостоятельной работы.......................................................... |
14 |
4.2 |
Темы для самостоятельного изучения................................................................................. |
15 |
4.3 |
Учебно-методическое обеспечение самостоятельной работы .......................................... |
15 |
4.4 |
Задания для самостоятельной работы ................................................................................. |
16 |
5. Методические указания по организации курсовых работ........................................................ |
18 |
3
1. Общие положения
1.1 Цели изучения дисциплины и результаты обучения
Основными целями освоения учебной дисциплины «Программирование» являются:
формирование у обучающихся базовых знаний по алгоритмизации, программированию и использованию инструментальных средств разработки программ, необходимые для успешного освоения дисциплин профессионального, математического и естественнонаучного цикла (базовых и вариативных частей), изучение которых связано с применением средств информационно-коммуникационных технологий, созданием эффективных алгоритмов решения задач, разработкой программного обеспечения для различных предметных областей. Освоение дисциплины должно обеспечить базовые знания в области алгоритмизации и программирования, которые дадут возможность выпускнику успешно работать в сфере организации процессов жизненного цикла информационных систем , обладать универсальными и предметно-специализированными компетенциями.
В процессе освоения дисциплины студент должен Знать:
основные конструкции языков программирования высокого уровня на примере языка С/C++,
основы построения схем алгоритмов, принципы работы компиляторов,
особенности и синтаксические конструкции объектно-ориентированного программирования;
классификацию языков программирования и тенденции их развития;
парадигмы программирования, современные технологии разработки программного обеспечения, процесс разработки, возможности современных языков программирования;
Уметь:
уметь квалифицированно и обоснованно выбрать язык программирования для оптимального решения поставленной задачи,
решать задачи, используя различные методы разработки алгоритмов и выбирая наиболее подходящие алгоритмы и средства их реализации в зависимости от постановки задачи;
Владеть:
методами и инструментальными средствами разработки программ на языке программирования высокого уровня, их тестирования и отладки, работы в интегрированных средах программирования;
навыками самостоятельного решения задач, творческого подхода к поставленной задаче, сформированной способностью к изучению новых средств разработки программ.
Данная дисциплина позволит студентам не только систематизировать полученные теоретические знания, укрепить исследовательские навыки, но и даст возможность ориентироваться в новом предметном поле экономической информатики.
1.2 Содержание дисциплины
Материал дисциплины сгруппирован по следующим разделам:
1. Понятие языка программирования.
4
Понятия языка программирования. Многообразие языков программирование. История и эволюция языков программирования. Основные понятия программирования. Понятие алгоритма. Жизненный цикл программного обеспечения. Парадигмы программирования: структурного программирования, объектно-ориентированного программирования, функционального программирования, логического программирования. Тенденции развития языков программирования.
2. Разработка программного обеспечения.
Этапы разработки программы. Определение цели задачи, ее содержание и общий подход к решению, эффективность используемого алгоритма. Определение исходных данных и результат, ограничения на их значения. Разработка или выбор алгоритма решения задачи. Формирование общей структуры программы с последующей детализацией и разбивкой на подпрограммы, способ хранения информации (набор переменных, массивов и т. п.). Кодирование — запись алгоритма на языке программирования. Отладка и тестирование программы. Анализ результатов.
3. Алгоритмизация и программирование
Понятие алгоритма. Линейный, разветвляющийся и циклический алгоритмы. Структурное программирование. Теорема Бёма — Якопини как основное положение структурного программирования, согласно которому любой исполняемый алгоритм может быть преобразован к структурированному виду, то есть такому виду, когда ход его выполнения определяется только при помощи трёх структур управления: последовательной, ветвлений и повторов или циклов. Нисходящее проектирование
4. Базовые основы программирования на языке C/C++.
Обзор языка C/C++. История создания, развития и стандартизации C++ . Совместимость C и C++ Поддержка нескольких парадигм программирования. Структурное программирование . Процедурное программирование. Модульное программирование. Объектно-ориентированное программирование e. Обобщенное программирование. Эффективность. Возможности языка С/C++ как языка программирования высокого и низкого уровня. Компиляция и интерпретация языков программирования.
5. Синтаксис языка C/C++.
Базовые типы данных: целочисленные , числа с плавающей точкой, символьный, логический. Переменные и константы. Операции и выражения. Преобразования типов. Условный оператор. Оператор множественного выбора switch . Циклы: с предусловием , с постусловием, цикл for . Управление циклами . Ввод-вывод . Ввод-вывод из языка C . Потоковый ввод-вывод С++. Функции . Функции, возвращаемые значения, параметры и аргументы. Объявление и определение функций. Локальные и глобальные переменные. Дополнительные сведения о функциях. Рекурсия.
6. Структурированные типы данных. Массивы.
Объявление массивы. Одномерные и многомерные массивы. Типовые задачи на массивы: сортировка одномерных массивов, перемножение матриц, транспонирование матриц и т.д. Массивы и функции. Массив как аргумент функции. Понятие указателей. Ссылки в C++. Связь указателей и массивов. Вычисления с указателями. Передача аргументов функций как указателей. Динамические массивы.
7. Работа с файлами.
5
Строки и символьные массивы данных. Функции для работы со строчным типом данных. Запись и чтение информации файла. Шифрование текстовых данных. Потоки и файлы. Основы файловой системы. Указатель файла, открытие файла, закрытие файла, запись символа, чтение символа и т.д. Буферный ввод/вывод. Функции 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 |
8cos4 x 8cos2 x 1, |
если n 4, |
|
16cos5 x 20cos3 x 5cos x, если n 5.
10