- •Язык с.
- •Идентификаторы
- •Ключевые слова
- •Список ключевых слов
- •Знаки операций
- •Приоритеты операций
- •Константы
- •Разделители
- •Структура программы на языке Си
- •Типы данных.
- •Арифметические выражения.
- •Математические функции (библиотека math.H)
- •Операторы
- •Оператор присваивания
- •Некоторые арифметические операции.
- •Явное преобразование типов
Разделители
Для обозначения соответственно начала и конца составного оператора или блока используют фигурные скобки {}.
Запятая может использоваться в качестве операции, а может применяться для разделения элементов списка.
Любое допустимое выражение, за которым следует точка с запятой, воспринимается как оператор.
Структура программы на языке Си
/* многострочный
комментарий */ или
// однострочный комментарий
< # директивы препроцессора>
< Объявление глобальных данных >
< Объявление прототипов пользовательских функций или самих функций >
Заголовок функции <тип> main( < список параметров>)
{
< Операторы объявления >
< Исполняемые операторы >
}
Текст между фигурными скобками называется телом функции.
Комментарий – это часть программы, которая игнорируется компилятором и служит для удобочитаемости исходного текста. В языке программирования Си существует 2 вида комментариев:
однострочный (//…);
многострочный (/*…*/).
препроцессорная директива обычно размещается в одной строке.
все директивы начинаются с символа #.
Препроцессор сканирует исходный текст программы в поиске строк, начинающихся с #. Такие строки воспринимаются препроцессором как команды, которые определяют действия по преобразованию текста. Директива #include <…> предназначена для включения в текст программы текста файла из каталога заголовочных файлов, поставляемых вместе со стандартными библиотеками компилятора.
После выполнения обработки в тексте программы не остается ни одной препроцессорной директивы. Теперь программа представляет собой набор описаний и определений.
В программе всегда должна присутствовать функция с именем main. Именно эта функция является главной функцией программы, без которой программа не может быть выполнена. Имя этой функции для всех программ одинаково и не может выбираться произвольно.
Объявления стандартных функций, используемых в программах на Си находятся в заголовочных файлах с расширением *.h.
Для подключения заголовочных файлов используется директива (команда) препроцессора #include, после которой в угловых скобках ставится имя файла <имя.h>.
Препроцессор – это специальная программа, которая обрабатывает текст программы раньше транслятора.
//Пример программы вычисления площади треугольника
#include <stdio.h>
#include <math.h>
#define DL 10
#define N 30
#define STEP 20
int main (void)
{
double a, b, c, p, s;
printf (”Введите длины сторон треугольника\n”);
scanf (”%lf%lf%lf”, &a, &b, &c);
p=(a+b+c)/2;
s=sqrt(p*(p-a)*(p-b)*(p-c));
printf (”Площадь S=%lf”, s);
return 0:
}
Объявления.
В программе все переменные должны быть объявлены до их использования определенным типом. Признаком хорошего тона считается объявление всех переменных в начале функции, но разрешено объявлять и по контексту. Правда не все версии компиляторов это поддерживают (Borland не поддерживает???).
int m,k,i,n,y;
float s;
int x=(y+(++n))*6;
Типы данных.
При объявлении переменной компилятор выделяет место в памяти компьютера, необходимое для размещения переменной данного типа. Размер типа определяется аппаратной и программной платформой компьютера.
В языке С существует 4 базовых типа данных:
Char с='R'; - 1 байт, используется для хранения символов, однако формально является целочисленным, т.к. каждый символ имеет свой числовой код, значение которого и хранится в ячейке. Символ R имеет код 82.
Int x,y,z; – 2 байта или 4 байта. В зависимости от аппаратной и системной реализации компьютера. Диапазон допустимых значений для 2-х байтовой ЭВМ будет -32768.. 32767.
Float а; - 4 байта, 3.4*10-38.. 3.4*1038 . Вещественное число одинарной точности.
Double; - 8 байт, 1.7*10-308.. 1.7*10308. Вещественное число двойной точности.
Void – этот тип обозначает пустое множество значений. Обозначает отсутствие значения.
Под данные типа void память не выделяется, он используется, как тип возвращаемого значения когда функция ничего не возвращает, используется как посредник.
Кроме того, существуют модификаторы типа – специальные служебные слова short, long, Signed (со знаком) и unsigned (без знака). Они могут применяться к базовым типам:
Signed и unsigned применяются только к типам Char и Int. К целым числам применимы short, long.
short Int x,y,z; слово Int в этом случае можно опустить:
short x,y,z;
Sizeof (int) – позволяет получить информацию об объеме памяти, выделяемой для данного типа.
В таблице 3 представлены типы данных, размеры ячейки и допустимые значения переменных.
Таблица 3
Тип данных |
Размер байт/бит |
Диапазон значений |
unsigned char |
1/8 |
0 … 255 |
char |
1/8 |
-128 … 127 |
unsigned int |
2/16 |
0 … 65535 |
short int |
2/16 |
-32768 … 32767 |
unsigned short |
2/16 |
0 … 65535 |
int |
2/16 |
-32768 … 32767 |
unsigned long |
4/32 |
0 … 4294967295 |
long |
4/32 |
-2147483648 … 2147483647 |
float |
4/32 |
3.4E-38 … 3.4E+38 |
double |
8/64 |
1.7E-308 … 1.7E+308 |
long double |
10/80 |
3.4E-4932 … 1.1E+4932 |
Выражение – это последовательность операндов, разделителей и знаков операций, задающая вычисление. В зависимости от формируемых значений определяются типы выражений. Если значениями выражений являются целые или вещественные числа, то говорят об арифметических выражениях.
Порядок выполнения операций определяется рангом (приоритетом) операции и правилами группировки (ассоциативность). Для изменения порядка выполнения операций и их группирования используют разделители (круглые скобки).
В общем случае, унарные операции, условная операция и операции присваивания правоассоциативны, а остальные операции левоассоциативны: выражение x = y = z; означает x = (y = z); выражение x+ y –z; означает (x + y) – z.
