- •Предисловие
- •Знакомство с языком 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
- •Задания на курсовую работу
- •Требования к курсовой работе
- •Этапы разработки программ
- •Содержание отчета по курсовой работе
- •Задания к курсовой работе
- •Литература
- •Функции консольного ввода/вывода
- •Функции обработки строк
- •Функции преобразования данных
double |
x1,x2; |
/* вещ. числа двойной точности*/ |
char |
simv; |
/* символ */ |
int |
i,j; |
/* целые числа */ |
long |
summa; |
/* длинное целое */ |
short |
k1,k2; |
/* короткие целые */ |
unsigned |
count; |
/* беззнаковое целое |
|
|
(неотрицательное) число */ |
Объем памяти, занимаемой данными различных типов, зависит от типа компьютера, операционной системы и конкретной реализации языка Си.
При описании переменной можно ее инициализировать, например:
int k = 0; /* k присваивается начальное значение 0 */ char s = 'a';
Основные типы данных
Символы (char) - множество символов, определенных реализацией языка, например, набор знаков кода ASCII. Определяется следующим образом:
char x,y,ch; char a,b,d;
Значения знаков хранятся как целые числа, соответствующие, например, ASCII. Таким образом, символы можно рассматривать как целые числа и наоборот.
Целые - в зависимости от объёма памяти, отводимой для представления значений, могут быть типа int, short int или просто short и long int (просто long), т.е.
int i,n;
short int low,a; long int b,c,d;
Если используется число без знака, то переменной можно присвоить тип unsigned int - беззнаковый.
Перечисляемые типы
Ранее отмечалось, что тип - это множество значений плюс операции. Для перечисляемых типов множество значений каждый раз может быть
19
своим, поэтому вначале определяется имя перечисляемого типа, а затем переменные, т.е.
enum <имя перечисл_типа> {<множество значений>};
enum <имя перечисл_типа> <идентефикаторы>
Пример:
enum color {red,green,blue}; enum color x,y;
Идентефикаторы из множества значений представляются целыми числами, т.е. reed, green, blue в машинном представлении - целые числа.
В настоящее время в языке C перечисляемые переменные и константы рассматриваются как переменные и константы типа int. Следовательно, ошибочное использование перечисляемых значений в качестве целых чисел не может быть обнаружено компилятором C, например, бессмысленное выражение red + blue не будет считаться ошибкой.
Вещественные типы
Существует 4 типа с плавающей точкой: float (обычная точность), single (одинарная точность), double (двойная точность), extended (повышенная точность):
float x,y; double a,b;
Тип void (пустой)
С его помощью представляется пустое множество значений. Этот тип используется:
1)для указания типа функций, не возвращающих значений, т.е. функций, используемых в качестве процедур;
2)для указания того, что значение выражения не будет использовано; оно вычисляется только для получения побочных эффектов.
Вобщем, применение void необязательно, но иногда желательно (чтобы не было сообщений об ошибке).
20
Булевский тип - в языке Си нет булевских значений, вместо них используются целые значения. Нуль - логическое значение false (ложь), true - ненулевые значения.
Производные типы.
Массивы - это упорядоченное множество однотипных элементов. Свойства:
1)у массива одно имя;
2)каждый элемент имеет свой номер;
3)в языке Си все элементы массива нумеруются с 0, таким образом
0,1,2,....
4)С каждым элементом массива можно делать все, что с обычной переменной этого типа.
Описание:
<тип> <имя_массива> [n1][n2]...[nk] - это пример к - мерного массива. Примеры:
int a[5],b[3,3]; float c[2,6,4]; char d[2,2];
Доступ к отдельному элементу обозначается [ ], т.е. a[3], b[2,1], c[1,1,1]. Т.к. индексы нумеруются с нуля, то индекс последнего элемента массива на единицу меньше. Например, a[4] - последний элемент массива a.
Указывая только первые p индексов, можно ссылаться на p - мерный подмассив к - мерного массива (p≤k).
Структуры
То же, что и запись в Паскале. Состоит из компонент любых типов, за исключением функций. Тип структуры указывается так:
struct
{
<список описаний>
}
Пример:
21
struct { double x,y;
} a,b,c[9];
т.е. переменные а и b описываются как структуры, каждая из которых состоит из 2-х компонент. Каждая компонента типа вещественное число с плавающей точкой двойной точности. Переменная с описывается как массив из 9 структур.
Пример:
struct {
int year;
short int month,day; } date1, date2;
т.е. каждая из переменных date1, date2 состоит из 3-х структур.
Доступ к компонентам структуры: S.C, где S - имя структуры, С - имя компоненты:
date1.year, date1.month, date1.day.
Объединение
Подобно структуре, однако в каждый момент времени может использоваться (или являться активным ) только один из его компонент.
union {
описание компоненты а1;
....................
описание компоненты аn;
}
Для всех компонент выделяется одна и та же область памяти, поэтому доступ к этой области возможен с использованием любой из компонент. Очевидно, что компонент должен выбираться так, чтобы полученный результат не был бессмысленным.
Объединения применяются для:
1) минимизации используемого объема памяти, если в каждый момент времени только один объект из множества является активным;
22