- •Предисловие
- •Знакомство с языком C
- •Структура программы
- •Пример простой программы
- •Более сложный пример
- •Контрольные вопросы
- •Основные понятия, объявление переменных, типы данных
- •Объявление переменных
- •Примеры описаний переменных:
- •Основные типы данных
- •Производные типы.
- •Контрольные вопросы
- •Ввод/вывод с помощью функций printf() и scanf().
- •Модификаторы спецификаций преобразования используемые в функции printf()
- •Применение функции scanf()
- •Контрольные вопросы
- •Операции
- •Простейшие арифметические операции
- •Операция присваивания
- •Использование в выражениях операндов разных типов
- •Операции преобразования типов
- •Дополнительные арифметические операции
- •Дополнительные операции присваивания
- •Операции отношения
- •Логические операции
- •Приоритеты операций
- •Таблица 3. Таблица приоритетов рассмотренных выше операций
- •Контрольные вопросы
- •Операторы
- •Оператор-выражение
- •Ветвление
- •Условный оператор
- •Оператор switch
- •Оператор break
- •Циклы
- •Цикл while
- •Цикл do…while
- •Цикл for
- •Другие операторы
- •Оператор continue
- •Оператор goto
- •Оператор вызова функции
- •Контрольные вопросы
- •Обработка числовых последовательностей
- •Последовательная обработка
- •Обработка числовых последовательностей
- •Примеры
- •Контрольные вопросы
- •Последовательная обработка символьных данных
- •Символьные данные
- •Последовательная обработка символов
- •Функции getchar( ) и putchar( )
- •Контрольные вопросы
- •Обработка массивов
- •Массивы
- •Объявление массива
- •Использование и обработка массивов
- •Примеры
- •Контрольные вопросы
- •Указатели и динамические массивы
- •Указатели
- •Динамическое выделение памяти
- •Статические и динамические массивы
- •Контрольные вопросы
- •Подпрограммы
- •Описание подпрограмм
- •Параметры подпрограмм
- •Область действия переменных
- •Примеры
- •Контрольные вопросы
- •Рекурсивные функции
- •Понятие рекурсивной функции
- •Контрольные вопросы
- •Символьные строки и функции обработки строк
- •Посимвольная обработка строк
- •Пример программы
- •Контрольные вопросы
- •Структуры
- •Тип данных структура
- •Контрольные вопросы
- •Работа с файлами
- •Примеры
- •Контрольные вопросы
- •Массивы и функции как параметры
- •Указатели на функции
- •Массивы и указатели
- •Указатели и двумерные массивы
- •Пример
- •Технологии программирования
- •Структурное программирование
- •Модульное программирование
- •Объектно-ориентированное программирование
- •Компонентное программирование
- •Структурная декомпозиция задачи и разработка алгоритмов и программ методами сверху вниз и снизу вверх
- •Контрольные вопросы
- •Модульное программирование
- •Работа с графикой на языке C и модуль graphics.h
- •Типы видео мониторов и их режимы
- •Инициализация графики
- •Система координат
- •Основные графические функции
- •Функции рисования
- •Функции изменения параметров рисования
- •Шаблоны линий
- •Шаблоны закраски
- •Задание на расчетно-графическую работу
- •Порядок выполнения работы
- •Задание
- •Задание для вариантов 1-11
- •Задание для вариантов 12-20
- •Задание для вариантов 21-40
- •Пример исходных данных для вариантов 12-16
- •Задание для вариантов 41-60
- •Варианты индивидуальных заданий
- •Вариант 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
- •Вариант 37
- •Вариант 38
- •Вариант 39
- •Вариант 40
- •Вариант 41
- •Вариант 42
- •Вариант 43
- •Вариант 44
- •Вариант 45
- •Вариант 46
- •Вариант 47
- •Вариант 48
- •Вариант 49
- •Вариант 50
- •Вариант 51
- •Вариант 52
- •Вариант 53
- •Вариант 54
- •Вариант 55
- •Вариант 56
- •Вариант 57
- •Вариант 58
- •Вариант 59
- •Вариант 60
- •Задания на курсовую работу
- •Требования к курсовой работе
- •Этапы разработки программ
- •Содержание отчета по курсовой работе
- •Задания к курсовой работе
- •Литература
- •Функции консольного ввода/вывода
- •Функции обработки строк
- •Функции преобразования данных
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ ПРИОРИТЕТНЫЙ НАЦИОНАЛЬНЫЙ ПРОЕКТ «ОБРАЗОВАНИЕ»
КАЗАНСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ИМ. А.Н.ТУПОЛЕВА
А.Р. БИКМУРЗИНА, К.В. ШЕРШУКОВ
ОСНОВЫ ПРОГРАММИРОВАНИЯ НА ЯЗЫКЕ C (Программирование на языке высокого уровня, часть 2)
Комплексное учебное пособие
КАЗАНЬ
2009
УДК 681.3.06
Бикмурзина А.Р., Шершуков К.В.
Основы программирования на языке С: Учебное пособие. – Казань: Изд-во Казан. техн. ун-та, 2009. – 215 с.
Излагаются основы алгоритмизации и программирования на языке высокого уровня на примере языка C.
Учебное пособие содержит краткое описание основных средств языка С, примеры различных программ. Даются указания по самостоятельной работе студентов и выполнению курсовой работы. Изложение рассчитано на начинающих изучение программирования.
Для студентов специальностей «Автоматизированные системы обработки информации и управления», «Вычислительные машины, комплексы, системы и сети», «Программное обеспечение вычислительной техники и автоматизированных систем», направления подготовки бакалавров «Информатика и вычислительная техника» и других лиц, изучающих программирование.
Табл. - , Ил. - , Библиогр. - 6 назв.
©Бикмурзина Альфия Рустемовна, 2009
©Шершуков Кирилл Вячеславович, 2009
2
Содержание |
|
Предисловие............................................................................................................. |
6 |
Знакомство с языком C ........................................................................................... |
9 |
Структура программы........................................................................................ |
10 |
Пример простой программы ............................................................................. |
10 |
Более сложный пример...................................................................................... |
11 |
Контрольные вопросы ....................................................................................... |
15 |
Основные понятия, объявление переменных, типы данных............................ |
16 |
Объявление переменных ................................................................................... |
18 |
Основные типы данных..................................................................................... |
19 |
Производные типы. ............................................................................................ |
21 |
Контрольные вопросы ....................................................................................... |
23 |
Ввод/вывод с помощью функций printf() и scanf(). ........................................... |
25 |
Модификаторы спецификаций преобразования используемые в функции |
|
printf()................................................................................................................... |
27 |
Применение функции scanf() ............................................................................ |
29 |
Контрольные вопросы ....................................................................................... |
31 |
Операции................................................................................................................ |
32 |
Простейшие арифметические операции.......................................................... |
32 |
Операция присваивания..................................................................................... |
33 |
Использование в выражениях операндов разных типов................................ |
33 |
Операции преобразования типов...................................................................... |
34 |
Дополнительные арифметические операции .................................................. |
34 |
Дополнительные операции присваивания....................................................... |
35 |
Операции отношения......................................................................................... |
36 |
Логические операции......................................................................................... |
37 |
Приоритеты операций........................................................................................ |
38 |
Контрольные вопросы ....................................................................................... |
38 |
Операторы.............................................................................................................. |
40 |
Оператор-выражение ......................................................................................... |
40 |
Ветвление............................................................................................................ |
40 |
Циклы .................................................................................................................. |
47 |
Другие операторы............................................................................................... |
49 |
Контрольные вопросы ....................................................................................... |
51 |
Обработка числовых последовательностей........................................................ |
53 |
Последовательная обработка............................................................................ |
53 |
Последовательность исходных данных может задаваться: .............................. |
53 |
Обработка числовых последовательностей..................................................... |
53 |
Примеры.............................................................................................................. |
56 |
Контрольные вопросы ....................................................................................... |
60 |
Последовательная обработка символьных данных........................................... |
61 |
Символьные данные........................................................................................... |
61 |
Последовательная обработка символов........................................................... |
62 |
3
Функции getchar( ) и putchar( ) ...................................................................... |
62 |
Контрольные вопросы ....................................................................................... |
64 |
Обработка массивов.............................................................................................. |
66 |
Массивы .............................................................................................................. |
66 |
Объявление массива........................................................................................... |
66 |
Использование и обработка массивов............................................................. |
68 |
Примеры.............................................................................................................. |
69 |
Контрольные вопросы ....................................................................................... |
73 |
Указатели и динамические массивы................................................................... |
75 |
Указатели............................................................................................................. |
75 |
Динамическое выделение памяти..................................................................... |
80 |
Статические и динамические массивы ............................................................ |
83 |
Контрольные вопросы ....................................................................................... |
84 |
Подпрограммы....................................................................................................... |
85 |
Описание подпрограмм ..................................................................................... |
85 |
Параметры подпрограмм................................................................................... |
89 |
Область действия переменных.......................................................................... |
91 |
Примеры.............................................................................................................. |
91 |
Контрольные вопросы ....................................................................................... |
95 |
Рекурсивные функции .......................................................................................... |
97 |
Понятие рекурсивной функции ........................................................................ |
97 |
Контрольные вопросы ....................................................................................... |
98 |
Символьные строки и функции обработки строк.............................................. |
99 |
Посимвольная обработка строк...................................................................... |
102 |
Контрольные вопросы ..................................................................................... |
105 |
Структуры............................................................................................................ |
106 |
Тип данных структура ..................................................................................... |
106 |
Контрольные вопросы ..................................................................................... |
109 |
Работа с файлами................................................................................................. |
111 |
Примеры............................................................................................................ |
115 |
Контрольные вопросы ..................................................................................... |
117 |
Массивы и функции как параметры.................................................................. |
118 |
Указатели на функции ..................................................................................... |
118 |
Массивы и указатели........................................................................................ |
119 |
Указатели и двумерные массивы.................................................................... |
121 |
Пример............................................................................................................... |
124 |
Контрольные вопросы ..................................................................................... |
124 |
Технологии программирования......................................................................... |
126 |
Структурное программирование.................................................................... |
126 |
Модульное программирование....................................................................... |
127 |
Объектно-ориентированное программирование........................................... |
127 |
Компонентное программирование................................................................. |
128 |
Структурная декомпозиция задачи и разработка алгоритмов и программ |
|
методами сверху вниз и снизу вверх.............................................................. |
128 |
Контрольные вопросы ..................................................................................... |
132 |
4
Модульное программирование.......................................................................... |
134 |
Контрольные вопросы ..................................................................................... |
140 |
Работа с графикой на языке C и модуль graphics.h.......................................... |
141 |
Типы видео мониторов и их режимы............................................................. |
141 |
Инициализация графики.................................................................................. |
141 |
Система координат........................................................................................... |
143 |
Основные графические функции.................................................................... |
143 |
Задание на расчетно-графическую работу....................................................... |
146 |
Порядок выполнения работы.......................................................................... |
146 |
Задание .............................................................................................................. |
146 |
Варианты индивидуальных заданий.............................................................. |
147 |
Задания на курсовую работу.............................................................................. |
164 |
Требования к курсовой работе........................................................................ |
164 |
Этапы разработки программ........................................................................... |
165 |
Содержание отчета по курсовой работе ........................................................ |
169 |
Задания к курсовой работе.............................................................................. |
169 |
Литература........................................................................................................... |
180 |
Приложение 1. Некоторые библиотечные функции языка C ......................... |
181 |
Функции консольного ввода/вывода.............................................................. |
181 |
Функции обработки строк............................................................................... |
183 |
Функции преобразования данных.................................................................. |
185 |
Приложение 2. Пример оформления отчета по РГР........................................ |
188 |
Приложение 3. Пример оформления по курсовой работе.............................. |
197 |
5
Предисловие
Данный УМК предназначен для изучения дисциплины «Программирование на языке высокого уровня» студентами направления 230100 «Информатика и вычислительная техника» и специальностей 230102 “Автоматизированные системы обработки информации и управления”, 230101 “Вычислительные машины, комплексы, системы и сети” (очнозаочной и заочной форм обучения). Дополнительно УМК содержит необходимые компоненты для дистанционного обучения.
Дисциплина «Программирование на языке высокого уровня» является базовой дисциплиной для подготовки специалистов в различных областях знаний, связанных с компьютерными технологиями (Computing). В зависимости от поставленной цели, содержание дисциплины, последовательность изложения материала, методика преподавания могут несколько различаться.
В настоящее время, на кафедре Прикладной математики и информатики (ПМИ) учебный процесс ориентирован на подготовку специалистов в области программной инженерии (Software Engineering) и в соответствии с международными стандартами семейства Computing Curricula, дисциплина «Программирование на языке высокого уровня» соответствует дисциплинам
«CS101I. Programming Fundamentals» («Основы программирования») и «SE201. Introduction to Software Engineering» («Введение в программную инженерию»). Данный УМК посвящен второй части дисциплины «Программирование на языке высокого уровня. Основы программирования», изучаемой во втором семестре. Первая часть изучается в первом семестре и описывается в УМК «Основы программирования на языке Pascal».
На кафедре Автоматизированных систем обработки информации и управления (АСОИУ) учебный процесс ориентирован на подготовку специалистов в области автоматизированных систем обработки информации и управления и информационных технологий (Information Technology) и в
6
соответствии с международными стандартами семейства Computing Curricula, дисциплина «Программирование на языке высокого уровня» соответствует дисциплинам «CS101I. Programming Fundamentals» («Основы программирования») и «CS103I. Data Structures and Algorithms» («Структуры данных и алгоритмы»). Последняя изучается на кафедре ПМИ отдельно.
Кроме того, материал дисциплины может быть изложен с использованием разных базовых языков программирования. Традиционно на кафедре АСОИУ используется язык C, в то время как на кафедре ПМИ практикуется многоязыковый подход.
Авторы данного УМК ставили перед собой задачу максимального удовлетворения потребностей различных кафедр и разработали вариативный УМК, допускающий различные подходы к преподаванию дисциплины, в том числе выбор в качестве базового языка Pascal или C, либо их сочетания.
Содержание УМК: основы программирования на языке C, обработка массивов, строк, работа с файлами и динамическими структурами, технологии и методы программирования .
Комплексное пособие содержит теоретический материал по языку программирования C (включая большое количество примеров), рассчитанный на 36 часов лекций, методические указания по РГР и курсовой работе с примером отчета и заданиями.
Конспект лекций адаптирован к дистанционной форме обучения и включает в себя материалы двух семестров обучения (52 часа лекций). Содержание соответсвует действующей на кафедре АСОИУ рабочей программе заочного и очно-заочного обучения.
Лабораторные работы, приведенные в «Методических указаниях по выполнению лабораторных работ», как правило, рассчитаны на выполнение как на языке C (базовый язык данного УМК), так и на языке Pascal. Исключением является первая работа, посвященная основам работы в среде Turbo C. Остальные работы развивают навыки алгоритмизации и программирования, полученные в первом семестре, не дублируя материалы и
7
задания лабораторных работ изложенных в УМК «Основы программирования на языке Pascal».
Всего разработано 9 лабораторных работ, что превышает количество, указанное в учебном плане (на данный момент во втором семестре предусмотрено выполнение 4-х работ). Таким образом, преподаватель получает возможность выбора лабораторных работ и построения учебного процесса в соответствии с поставленной задачей.
При необходимости, в состав лабораторных работ можно включить работы, приведённые в УМК «Программирование и структуры данных», для охвата тематики связанной с построением структур данных и алгоритмами их обработки.
УМК соответсвует требованиям по организации дистанционного обучения и включает в себя руководство дополнительно глоссарий, справочные материалы.
УМК ориентирован на подготовку специалистов по профессиям «Программист», «Системный архитектор», «Системный аналитик», «Специалист по информационным системам» в соответствии с квалификационными требованиями стандарта.
Всоответствии с компетентностной моделью бакалавра, определяемой требованиями работодателей, в области информатики и вычислительной техники, в результате изучения дисциплины студенты должны получить навыки практического программирования на языке C.
Всоответствии с техническим заданием в разрабатываемый УМК включаются: компьютерные презентации лекций и лабораторных работ и курсовой работы, позволяющие повысить наглядность и качество изложения учебного материала, вопросы для автоматизированной системы тестирования.
8