2 3 1 Цели и задачи дисциплины 1.1 Цель преподавания дисциплины Целью преподавания дисциплины «Технологии программирования» является систематическое изложение базовых концепций, методов и средств технологии программирования на базе процедурно-ориентированного языка программирования Си. По завершении курса студент должен знать основные этапы работы над программными продуктами, технологию нисходящего структурного программирования, основные понятия и конструкции языка Си, уметь строить алгоритмы решения задач в виде блок-схем и реализовывать их на языке программирования Си. 1.2 Задачи изучения дисциплины Задачей дисциплины является обучение студентов данному языку, как удобному, выразительному и гибкому средству алгоритмизации, моделирования различных структур данных и программирования, пригодному для широкого класса задач. В процессе изучения дисциплины студенты должны приобрести умения и навыки по: – приемам хорошего стиля написания программ; – проектированию программы; – применению и эффективному использованию основ технологии программирования на базе процедурно-ориентированного языка Си в учебной и практической деятельности. 1.3 Пререквизиты Дисциплины, необходимые для изучения данной: – информатика; – программирование на алгоритмических языках; – алгебра и геометрия. 1.4 Постреквизиты Дисциплины, в которых используются знания изучаемой дисциплины: – объектно-ориентированное программирование; – сетевые технологии программирования. 2 Контроль и оценка знаний Таблица 1 Распределение рейтинговых % по видам контроля № варианта Вид итогового контроля Тест Виды контроля Проценты Итоговый контроль Рубежный контроль Текущий контроль 100 100 100 4 Для обеспечения систематического и регулярного контроля за учебной работой студентов в течение семестра в КазНТУ им.К.И.Сатпаева применяется рейтинговый контроль знаний. В текущий контроль оценки знаний студентов входит выполнение 6 лабораторных работ. Сроки сдачи результатов текущего контроля определяются календарным графиком учебного процесса по дисциплине. Таблица 2 Календарный график учебного процесса по дисциплине «Технологии программирования» Недели 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Виды Л1 СРС2 Л2 СРС Л3 Л4 РК СР5 К Л5 СР6 Л6 СР7 РК контроля СР1 СР3 4 Кол-во 2 1 2 1 1 2 1 1 1 1 2 1 1 1 контроля в неделю Виды контроля: Л – лабораторная работа, К – контрольная, СР - самостоятельная работа, РК – рубежный контроль, КР – курсовая работа, КП – курсовой проект, Кл – коллоквиум, Р – рефераты, Эс – эссе, Тр – типовые графические расчеты и др. Таблица 3 Оценка знаний студентов Оценка Буквенный эквивалент Отлично А АХорошо В+ В ВУдовлетворительно С+ С СD+ D Неудовлетворительно F В процентах % В баллах 95-100 90-94 85-89 80-84 75-79 70-74 65-69 60-64 55-59 50-54 0-49 4 3,67 3,33 3,0 2,67 2,33 2,0 1,67 1,33 1,0 0 3 Содержание дисциплины Изучение дисциплины «Технологии программирования» предполагает обязательные лекционные (2 кредита) и лабораторные (1 кредит) занятия, а также самостоятельную работу студентов. Тематический план дисциплины с указанием тем и количеством академических часов по всем видам занятий (по темам) приведен в следующей таблице. Таблица 4 5 Распределение часов по видам занятий Наименование темы Количество академических часов Лекци Лабораторн СРОП СРО я ые 1. Технология программирования. 2 2 3 1.1 Развитие технологии программирования. 1.2 Этапы разработки программного обеспечения 2. Язык программирования С. 2 2 3 2.1 Алфавит языка С. Структура программы на языке С. 2.2 Типы данных в языке С. Функции ввода и вывода 3 Программирование линейных 2 4 2 3 алгоритмов. 3.1 Операции языка Си. Арифметические операции языка С. Операция присваивания. 3.2 Поразрядные операции. Прочие операции. Математические функции. 4 Программирование 2 4 2 3 разветвляющихся алгоритмов. 4.1 Условный оператор. 4.2 Оператор варианта (выбора) 5 Программирование циклических 2 4 2 3 алгоритмов. 5.1 Оператор цикла с предусловием (while). Оператор цикла с постусловием (do-while) 5.2 Цикл с параметром. Вложенные циклы. Операторы передачи управления 6. Указатели. 2 2 3 6.1Операции над указателями. Классы памяти. 6.2 Динамическое выделение памяти 7. Массивы. 2 6 2 3 7.1 Одномерные массивы. 7.2 Двумерные массивы. Функции для работы со случайными числами 8 Функции 2 6 2 3 8.1 Функции пользователя. Область действия переменных. 8.2 Функции и указатели. Функции 6 и массивы 9 Символьные данные. 9.1 Функции библиотеки обработки символов. Массивы символов. 9.2 Функции преобразования символьных строк. Функции работы со строками 10 Массивы и указатели 10.1 Связь между указателями и массивами. Массив указателей. 10.2 Указатели, указывающие на другие указатели. Указатели на многомерные массивы 11. Структура. 11.1 Работа со структурами. Сложные структуры. 11.2 Структуры и указатели 12. Указатели на структуры 12.1 Указатели на структуры 12.2 Структуры со ссылками на себя 13. Файлы. 13.1 Режим последовательного доступа. 13.2 Режим прямого доступа 14 Работа дисплея в графическом режиме. 14.1 Функции для подготовки графической системы. 14.2 Функции для получения изображения 15. Директивы Препроцессора. 15.1 Директива #include 15.2 Директива #define. Директива #undef Всего (час.) 2 2 3 2 2 3 2 2 3 2 2 3 2 2 3 2 2 3 2 2 3 30 7 6 30 30 45 3.1 Лекционные занятия и их содержание Наименование раздела План и содержание лекций 1 Технологии программирования Развитие технологий программирования. Этапы разработки программного обеспечения Алфавит языка С. Структура программы на языке С. Типы данных в языке С. Функции ввода и вывода Операции языка Си. Арифметические операции языка С. Операция присваивания. Поразрядные операции (побитовые операции). Прочие операции. Математические функции. Условный оператор. Составной оператор. Оператор варианта (выбора) 2 Язык программирования С 3 Программирование линейных алгоритмов 4 Программирование разветвляющихся алгоритмов 5 Программирование Оператор цикла с предусловием (while) циклических алгоритмов Оператор цикла с постусловием (dowhile). Цикл с параметром. Вложенные циклы. Операторы передачи управления 6 Указатели Операции над указателями. Классы памяти. Динамическое выделение памяти 7 Массивы Одномерные массивы. Двумерные массивы. Функции для работы со случайными числами 8 Функции Функции пользователя. Область действия переменных. Функции и указатели. Функции и массивы 9 Символьные данные Функции библиотеки обработки символов. Массивы символов. Функции преобразования символьных строк. Функции работы со строками 10 Массивы и указатели Cвязь указателей с массивами. Переменные-указатели, связанные с массивами. Освобождения памяти из-под массива 11 Структура Работа со структурами. Сложные структуры. Cтруктуры и указатели. 12 Указатели и Указатели на структуры. Структуры со структуры ссылками на себя 13 Файлы Режим последовательного доступа. Режим прямого доступа 14 Работа дисплея в Функции для подготовки графической графическом режиме системы. Функции для получения 8 Объем (час.) 2 2 2 2 2 2 2 2 2 2 2 2 2 2 15. Директивы Препроцессора Всего (час.) изображения Директива #include. Директива #define, Директива #undef 30 3.2 Лабораторные занятия и их содержание Наименование темы Содержание 1. Линейный вычислительный процесс 2. Разветвляющиеся процессы 3. Циклические процессы 4. Обработка массивов 5. Функции пользователя 6. Строки 2 Изучить правила составления текстов программ на языке С: базовые типы данных, ввод-вывод данных, основные арифметические и тригонометрические функции; отладить и вычислить значение по математическому выражению Изучить оператор безусловного перехода и операторы разветвлений: оператор выбора по условию if, оператор-переключатель switch Изучить циклические операторы for, while, do – while, научиться составлять и программировать циклические алгоритмы Приобрести навыки программирования при решении задач с использованием структур данных типа массив Познакомиться с механизмом составления и организации взаимодействия пользовательских функций языка С Изучить особенности работы со строковыми объектами (одномерными символьными массивами и строкамиконстантами) языка Всего Объем (час.) 4 4 4 6 6 6 30 3.3 Самостоятельная работа обучающихся Целью выполнения самостоятельной работы является приобретение навыков моделирования и программирования задач на языке Си. 3.3.1 Планы СРОП 1. Список товаров, имеющихся на складе, включает: – наименование товара; – количество единиц товара; – цену единицы товара; 9 – дату поступления товара на склад. Вывести в алфавитном порядке список товаров, хранящихся более одного месяца, стоимость которых превышает 1000000 рублей. 2. Для получения места в общежитии формируется список студентов, который включает: – Ф.И.О. студента; – номер группы (буква и четыре цифры); – средний балл; – доход на одного члена семьи. Общежитие в ПЕРВУЮ очередь предоставляется тем студентам, у кого доход на члена семьи меньше двух минимальных зарплат, затем остальным в порядке уменьшения среднего балла. Вывести список очередности предоставления места в общежитии. 3. В справочной автовокзала хранится расписание движения автобусов. Для каждого рейса указаны: – номер рейса; – тип автобуса; – пункт назначения; – время отправления; – время прибытия на конечный пункт. Вывести информацию о рейсах, которыми можно воспользоваться для прибытия в пункт назначения раньше заданного времени. 4. На междугородной АТС информация о разговорах содержит: – дату разговора; – код и название города; – время разговора; – тариф; – номер телефона в этом городе; – номер телефона абонента. Вывести по каждому городу общее время разговора с ним и сумму. 5. Информация о сотрудниках фирмы включает: – Ф.И.О. сотрудников; – табельный номер; – количество проработанных часов за месяц; – почасовой тариф. Рабочее время свыше 144 часов считается сверхурочным и оплачивается в двойном размере. Вывести размер заработной платы каждого сотрудника фирмы за вычетом подоходного налога, который составляет 12% от суммы заработной платы. 6. Информация об участниках спортивных соревнований содержит: – Ф.И.О. игрока; – игровой номер; – возраст; – рост; – вес. Вывести информацию о самой молодой, рослой и легкой команде. 7. Для книг, хранящихся в библиотеке, задаются: 10 – регистрационный номер книги; – автор; – название; – год издания; – издательство; – количество страниц. Вывести список книг с фамилиями авторов в алфавитном порядке, изданных после заданного года. 8. Различные цеха завода выпускают продукцию нескольких наименований. Сведения о выпущенной продукции включают: – наименование; – количество; – номер цеха. Для заданного цеха необходимо вывести количество выпущенных изделий по каждому наименованию в порядке убывания количества. 9. Информация о сотрудниках предприятия содержит: – Ф.И.О.; – номер отдела; – должность; – дату начала работы. Вывести список сотрудников по отделам в порядке убывания стажа. 10. Создать файл, содержащий сведения о месячной заработной плате сотрудников отдела. Каждая запись содержит поля: фамилия сотрудника, наименование отдела, размер заработной платы за месяц. Вычислить общую сумму выплат за месяц по отделу А, а также среднемесячный заработок сотрудникам этого отдела. Напечатать для бухгалтерии ведомость для сотрудников этого отдела, у которых зарплата ниже введенной с клавиатуры. 11. Создать файл, содержащий сведения о количестве изделий категорий А, В, С, собранных рабочими за месяц. Структура записи имеет поля: фамилия сборщика, наименование цеха, количество изделий по категории, собранных рабочими за месяц. Считая данными (вводятся с клавиатуры) значения расценок Sa, Sв, Sc за выполненную работу по сборке единицы изделия категорий А, В, С соответственно, выдать на печать следующую информацию: – общее количество изделий категорий А, В, С, собранных рабочими цеха X; – ведомость заработной платы рабочих цеха X; – средний размер заработной платы работников этого цеха. 12. Создать файл, содержащий сведения о телефонах абонентов. Каждая запись имеет поля: фамилия абонентов, год установки телефона, номер телефона. На печать вывести информацию следующего вида: – по вводимой с клавиатуры фамилии абонента выдается номер телефона; – определяется количество установленных телефонов с XXXX года (год вводится с клавиатуры). 11 13. Создать файл, содержащий сведения об ассортименте игрушек в магазине. Структура записи: название игрушки, цена, количество, возрастные границы, например 2–5, т.е. от 2 до 5 лет. Вывести на печать: – название игрушек, которые подходят детям от 1 до 3 лет; – стоимость самой дорогой игрушки и ее наименование; – название игрушки, которая по стоимости не превышает «х» руб. Значение «х» вводится с клавиатуры. 14. Создать файл, содержащий сведения о сдаче студентами сессии. Структура записи: номер группы, фамилия студента, оценки по пяти экзаменам и пяти зачетам (зачет–незачет). На печать вывести: – фамилии неуспевающих студентов с указанием номера группы и количества – задолженностей; – средний балл, полученный каждым студентом группы Х (вводится с клавиатуры) и всей группой в целом. 15. Создать файл, содержащий сведения об ассортименте обуви в магазине. Структура записи: артикул, наименование, количество, стоимость одной пары. Артикул начинается с буквы Д для женской обуви, М для мужской, П для детской. На печать вывести информацию: – о наличии и стоимости обуви артикула Х (вводится с клавиатуры); – ассортиментный список женской обуви с указанием наименования и имеющего в наличии – числа пар каждой модели. 16. Для участия в конкурсе исполнителей необходимо заполнить анкету с данными: – Ф.И.О.; – год рождения; – название страны; – класс музыкального инструмента (гитара, фортепиано, скрипка, виолончель). Вывести список самых молодых лауреатов конкурса по классам инструментов в порядке занятых мест. 3.3.2 Планы СРО В рамках самостоятельной работы студенты выполняют самостоятельно задания, приведенные в пункте 3.3.1. Таблица 5 График проведения занятий № Дата Время Наименование темы Лекции 1. Технология программирования 2. Язык программирования С 3. Программирование линейных алгоритмов 4. Программирование разветвляющихся алгоритмов 5. Программирование циклических алгоритмов 6. Указатели 12 7. Массивы 8. Функции 9. Символьные данные 10. Массивы и указатели 11. Структура 12. Указатели и структуры 13. 1 Файлы. 14. Работа дисплея в графическом режиме 15. Директивы Препроцессора Лабораторные занятия 1. 1 Линейный вычислительный процесс 2. Разветвляющиеся процессы 3. Циклические процессы 4. Обработка массивов 5. Функции пользователя 6. Строки 4 Список литературы Основная литература: 1 Саблина Н.Г. Основы программирования на языке Си. Учебное пособие. – Екатеринбург, УГТУ-УПИ, 2007. 2 Керниган Б., Ритчи Д. Язык программирования СиДПер. с англ., 3-е изд., испр. – СПб.: "Невский Диалект", 2001. – 352 с. 3 В.В.Борисенко. Основы программирования. – http://www.intuit.ru/ department/se/pbmsu/. 4 К.Поляков. Программирование на языке Си. – http://kpolyakov.narod.ru. 5 В.Л Бусько, А.Г.Корбит, И.Н.Коренская, В.И.Убийконь. Лабораторный практикум по программированию в 2 ч. – Ч.2: Основы программирования на алгоритмическом языке. – Мн.: БГУИР, 2001. – 62 с. Дополнительная литература: 1 Е.А.Жоголев. Лекции по технологии программирования. – МГУ, 2000. – http://sp.cmc.msu.ru/info/3/techprog.htm. 2 Е.А.Ерёмин, А.П.Шестаков. Примерные ответы на профильные билеты //Информатика, 2006-2007. – http://comp-science.narod.ru/Bilet/bil6.htm. 3 Павловская Т.А. C/C++. Программирование на языке высокого уровня: учебник для студентов вузов, обучающихся по направлению "Информатика и вычислительная техника" /Т.А.Павловская. – СПб.: Питер, 2005. – 461 с. 4 Н.Б.Культин. C/C++ в задачах и примерах. – СПб.: БХВ-Петербург, 2005. – 288 с. 5 В.В.Подбельский. Язык СИ++: учебное пособие. – М.: Финансы и статистика, 2003. – 560 с. 13 СОДЕРЖАНИЕ 1 Цели и задачи дисциплины………………………………………………..3 2 Контроль и оценка знаний………………………………………………...3 3 Содержание дисциплины………………………………………………….4 4 Список литературы………………………………………………………..12 14