- •Предисловие
- •Знакомство с языком 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
- •Задания на курсовую работу
- •Требования к курсовой работе
- •Этапы разработки программ
- •Содержание отчета по курсовой работе
- •Задания к курсовой работе
- •Литература
- •Функции консольного ввода/вывода
- •Функции обработки строк
- •Функции преобразования данных
Литература
1.Хохлов Д.Г. Основы технологии модульного программирования. Учебное пособие. - Казань. Изд-во Казан. гос. техн. ун-та , 2005. - 63 с.
2.Павловская Т.А. C/С++ Программирование на языке высокого уровня. Учебник для ВУЗов. СПб: «Питер», 2005. – 461с.
3.Павловская Т.А. C/C++. Структурное программирование. Практикум.
СПб: «Питер», 2005. – 239с.
4.Хохлов Д.Г. Структуры данных и комбинаторные алгоритмы. Учебное пособие. - Казань: Изд-во Казан. гос. техн. ун-та, 2005. - 102 с.
5.Хохлов Д.Г., Захарова З.Х. Практикум по структурам данных и комбинаторным алгоритмам: Учебное пособие.- Казань: Изд-во Казан.
гос. техн. ун-та, 2005. - 48 с.
6.Бикмурзина А.Р. Лабораторный практикум по программированию. - Казань: Изд-во Казан. гос. техн. ун-та, 2000г.
180
Приложение 1. Некоторые библиотечные функции языка
C
В этом разделе дается краткая информация о часто используемых функциях языка C.
Функции консольного ввода/вывода
Рассматриваемые ниже функции уникальны для компиляторов фирмы Borland. Их прототипы находятся в файле <conio.h>.
Вертикальная позиция курсора в текущем текстовом окне (начиная с 1)
int wherey(void);
Горизонтальная текущая позиция курсора в текущем текстовом окне (начиная с 1)
int wherex(void);
Позиционирование курсора в текстовом окне
void gotoxy(int x, int y);
Установка активного текстового окна
void window(int left, int top, int right, int bottom);
Верхний левый угол экрана имеет координаты (1,1). Теперь для ввода доступно только это окно. Внешне это никак не проявляется. Действует на последующие операторы вывода текстовой информации.
Стирание текущего текстового окна
void clrscr(void);
Стереть до конца строки в текущем текстовом окне
void clreol(void);
Удалить строку в текущем текстовом окне
void delline(void);
Вставить пустую строку в текстовое окно в позицию курсора
void insline(void);
Строки ниже позиции курсора смещаются вниз, а последняя строка теряется.
Выбрать новый цвет фона символа в текстовом режиме
void textbackground(int newcolor);
Выбрать новый цвет символа в текстовом режиме
void textcolor(int newcolor);
181
Установить атрибут символа для текстовых функций вывода
void textattr(int newattr);
Скопировать текст с текстового экрана в память
int gettext(int left, int top, int right, int bottom, void *destin);
Параметр destin должен указывать на реально существующий буфер памяти, имеющий размер достаточный для размещения фрагмента текста с атрибутами каждого символа. Функция возвращает не ноль при успешном копировании.
Скопировать текст из памяти на текстовый экран
int puttext(int left, int top, int right, int bottom, void *source);
Функция выполняет операцию, обратную к предыдущей. Возвращает не ноль в случае успеха.
Копирует текст на экране с одной прямоугольной области в другую
int movetext(int left, int top, int right, int bottom, int destleft, int desttop);
Возвращает не ноль в случае успеха. Получить символ с консоли без эха
int getch(void);
Получить символ с консоли с эхом на экране
int getche(void);
Вывести символ в текстовое окно
int putch(int ch);
Возвратить символ назад в буфер клавиатуры
int ungetch(int ch);
Возвращает код символа ch в случае успеха или EOF при ошибке. Прочитать строку с консоли
char *cgets(char *str);
Байт str[0] перед вызовом функции должен содержать максимальную длину строки, допустимую для ввода. После возврата байт str[1] содержит число фактически прочитанных символов. Сама строка начинается с байта str[2]. Функция возвращает адрес прочитанной строки &str[2].
Вывести строку в текстовое окно
int cputs(const char *str);
Возвращает последний выведенный символ.
182
Вводит данные с консоли с преобразованию по формату
int cscanf(char *format [, address, ...]);
Возвращает число успешно прочитанных полей данных. При попытке прочитать символ конца файла возвращает значение EOF.
Выводит данные в текстовое окно с преобразованием по формату
int cprintf(const char *format[, argumet,...]);
Возвращает число выведенных байт информации. В отличие от функции printf() использует установки цвета. Не производит автоматического добавления символа '\r' к '\n'.
Функции обработки строк
Определение длины строки
int strlen(char *str);
Символ '\0' в длину строки не входит. Не путать с длиной массива, в котором размещается строка.
Слияние двух строк
char *strcat(char *dest, char *src);
К строке, на которую указывает dest приписываются все символы строки src. Буфер, в котором размещается строка dest должен быть такого размера, чтобы вместить результирующую строку.
Функция возвращает адрес строки dest. Слияние строки dest с частью строки src
char *strneat(char *dest, char src, int n);
К строке, на которую указывает dest приписываются n символов строки src. Буфер, в котором размещается строка dest должен быть такого размера, чтобы вместить результирующую строку. Функция возвращает адрес строки dest.
Функция сравнения двух строк в алфавитном порядке
int strcmp(char *s1, char *s2);
Функция возвращает значение больше нуля, если строка s1 больше s2 в смысле алфавитного порядка, меньше нуля, если строка s1 меньше s2, и равное нулю, если строки равны.
Функция сравнения части строк
183
int strncmp(char *s1, char *s2, int n);
Работает также как strcmp(), но сравнивает только n символов строк. Функция копирования строки
char *strcpy(char *dest, char src);
Строка, на которую указывает src, копируется в буфер, на который указывает dest. Этот буфер должен быть такого размера, чтобы вместить копируемую строку. Функция возвращает адрес строки dest.
Функция копирования части строки
char *strncpy(char *dest, char src, int n);
Часть строки, на которую указывает src, размером n символов копируется в буфер, на который указывает dest. Этот буфер должен быть такого размера, чтобы вместить копируемую строку. Функция возвращает адрес строки dest.
Поиск символа в строке
char *strchr(char *str, char c);
Функция осуществляет поиск символа c с начала строки, на которую указывает str, и возвращает адрес найденного символа. Если символ не найден возвращает NULL.
Поиск символа с конца строки
char *strrchr(char *s, char c);
Функция осуществляет поиск символа c с конца строки, на которую указывает str, и возвращает адрес найденного символа. Если символ не найден возвращает NULL.
Форматный вывод в строку
int sprintf(char *str, char *format, ...);
Функция работает подобно printf(), но вывод вместо консоли осуществляет в буфер, на который указывает str. Его размер должен быть достаточным для того, чтобы вместить всю выводимую информацию. Функция возвращает число выведенных байт.
Форматный ввод из строки
int sscanf(char *str, char *format, ...);
184