Язык программирования C Основы языка baa
Введение Стандарт языка C 1999 года (C99) Язык С — процедурный язык Язык С 1970 год AT&T Bell Laboratoies Отличительные особенности языка: Портируемость исходного кода Возможность действий на низком машинном уровне Эффективность
Структура программы Составляющая часть программы - функция Функции Стандартные — входят в библиотеки Пользовательские — созданные пользователем  Основная функция main  int main(){} int main(void){} int main(int argc, char *argv[]){}
Исходный код Исходный код программы Определение функций  Определение глобальных переменных Декларации препроцессора Код хранится в файлах с расширением «*.c» Пример  int i=0; int main(){ printf(«i=%d»,i); return 0; }
Исходный код Файлы кода Расширение файла «*.c» Содержит определение функций Например int func1(){ /*  Какие-то действия */ Заголовочные файлы Расширение файла «*.h» Содержит декларацию функций Например int func1();
Использование заголовочных файлов Файл src1.c void func1(){ printf(«Hello, world»); } Файл src1.h void func1(); Файл src2.c Код в данном файле использует функцию, определенную в файле src1.c #include «src1.h» ... func1(); ...
Использование комментариев Блочные комментарии Примеры блочных комментариев /* Это комментарий Это комментарий */ /* Это комментарий */ Однострочные комментарии Примеры однострочных комментариев // Это комментарий // Это комментарий // Это тоже комментарий
Идентификаторы Идентификаторы — имена переменных, функций, макросов и структур Символы a-z, A-Z _ 0-9 Не может быть первым символом Первые 31 символ являются значимыми Для функций и глобальных переменных Первые 64 символа являются значимыми Для остальных идентификаторов
Области видимости Файловая область Если идентификатор объявлен вне блоков и списков параметров int i=0; void func(){} Блоковая область Идентификатор определен внутри блока кода {  int i=0; } Область прототипа функции void func(int i, int j); Область функции void func(){ int i; }
Сокрытие переменных int i=1; // используется глобальная переменная int main(){ char i=5; // используется переменная i == 5 ... ... { ... short i=0; // используется i==0 ... } ... // используется i == 5 }
Типы данных Целочисленные данные Знаковые типы Типы без знака char  unsigned char — 1 байт — 0 ..  255 signed char — 1 байт - -128 ... 127 int - 2/4 байта  -32,768 или -2,147,483,648 32,767 или 2,147,483,647 unsigned int - 2/4 байта 0 65,535 or 2,147,483,647 short - 2 байта - -32,768 .. 32,767 unsigned short — 2 байта — 0 .. 65,535
Целочисленные типы long - 4 байта - -2,147,483,648 ..  2,147,483,647 unsigned long — 4 байта — 0 .. 4,294,967,295 long long(C99) — 8 байт  -9,223,372,036, 854,775,808 9,223,372,036, 854,775,807 unsigned long long (C99) — 8 байт 0 18,446,744,073, 709,551,615 Получение размера переменной size_t sizeof(type)
Типы с плавающей запятой float -  4 байта ±3.4E+38 1.2E-38 Точность: 6 знаков double - 8 байт ±1.7E+308 2.3E-308 Точность: 15 знаков long double - 10 байт ±1.1E+4932 3.4E-4932 Точность:  19 знаков
Перечисления enum [имя] { список данных }; enum list1 { value1, value2, value3 } Элементы перечисления инициализируются значениями, начиная с 0 Можно задавать значения самостоятельно enum list2 { value1, value2=4, value5, value6=4 }
Тип void Функция, которая не возвращает значения, может иметь тип void void func{} Использование указателей: void * Указывает на то, что данные представляют адрес Не указывает на тип данных void * func(){ char buf[]={1,0,0,0}; return buf; } int *i=(int *)func(); // *i==1;
Литералы Числовые литералы int  0x200, 010 unsigned int 512U long 0L unsigned long 0Xf0fUL long long 0777LL unsigned long long  0xAAAllu
Литералы С плавающей запятой 10.0 — значение 10 2.34E5 — значение  2.34 x 10 5 67e-12 — значение  67.0 x 10 -12 float float_val = 10.5f; long double ld_val=0.16l
Литералы Символы 'a' '\x61' Специальные символы: \r, \n, \t, \o, \x, \u Строки «Hello, world!» «Hello, \\world!» «Hello, world!\r\n»
Приведение типов Неявное приведение типов int i=10; long l=i; Явное приведение типов long l=10; int i=(int)l; Используется при приведении указателей char buf[]={1,0,0,0}; int *i=(int *)buf; printf(«Результат: %d\r\n»,*i);
Операторы [ ]  ( )  .  ->  ++  -- (type name){list}  ( -> ) ++  -- !  ~  +  -  *  &  sizeof  ( <- ) (type name) ( <- ) * / %  ( -> ) + -  ( -> ) << >> ( -> ) < <= > >= ( -> ) == != ( -> ) & ( -> ) ^ ( -> )  | ( ->) && ( -> ) || ( -> ) ? : ( <- ) =  +=  -=  *=  /=  %=  &=  ^=  |=  <<=  >>= (<-) , ( -> )
Выражение Выражение заканчивается «;» int i=10; for(;;) выражение; Блоки { Выражение; } for(;;){  ...  }
Циклы while(условие) действие;  while(условие){ Блок действий; } for(инициализация;условие;изменение) действие; for(инициализация;условие;изменение){ Блок действий;  } do{  Блок действий; }while(условие);
Оператор if if(условие) действие; if(условие){ Блок действий; } if(условие) действие1; else действие2; if(условие){ Блок действий 1; }else{ Блок действий 2; }
Оператор выбора switch(переменная) { case значение1: действие1; case значение2: действие2; break; default: действие по умолчанию; }
Операторы break, continue, goto, return Оператор break for(;;){  i++; if(i==5) break; } Оператор continue for(;;){  i++; if(i==5) continue; ... } Оператор goto label1: действие; goto label1; Оператор return return value;
Конец Вопросы e-mail: a.bovanenko@gmail.com

C language. Introduction

  • 1.
  • 2.
    Введение Стандарт языкаC 1999 года (C99) Язык С — процедурный язык Язык С 1970 год AT&T Bell Laboratoies Отличительные особенности языка: Портируемость исходного кода Возможность действий на низком машинном уровне Эффективность
  • 3.
    Структура программы Составляющаячасть программы - функция Функции Стандартные — входят в библиотеки Пользовательские — созданные пользователем Основная функция main int main(){} int main(void){} int main(int argc, char *argv[]){}
  • 4.
    Исходный код Исходныйкод программы Определение функций Определение глобальных переменных Декларации препроцессора Код хранится в файлах с расширением «*.c» Пример int i=0; int main(){ printf(«i=%d»,i); return 0; }
  • 5.
    Исходный код Файлыкода Расширение файла «*.c» Содержит определение функций Например int func1(){ /* Какие-то действия */ Заголовочные файлы Расширение файла «*.h» Содержит декларацию функций Например int func1();
  • 6.
    Использование заголовочных файловФайл src1.c void func1(){ printf(«Hello, world»); } Файл src1.h void func1(); Файл src2.c Код в данном файле использует функцию, определенную в файле src1.c #include «src1.h» ... func1(); ...
  • 7.
    Использование комментариев Блочныекомментарии Примеры блочных комментариев /* Это комментарий Это комментарий */ /* Это комментарий */ Однострочные комментарии Примеры однострочных комментариев // Это комментарий // Это комментарий // Это тоже комментарий
  • 8.
    Идентификаторы Идентификаторы —имена переменных, функций, макросов и структур Символы a-z, A-Z _ 0-9 Не может быть первым символом Первые 31 символ являются значимыми Для функций и глобальных переменных Первые 64 символа являются значимыми Для остальных идентификаторов
  • 9.
    Области видимости Файловаяобласть Если идентификатор объявлен вне блоков и списков параметров int i=0; void func(){} Блоковая область Идентификатор определен внутри блока кода { int i=0; } Область прототипа функции void func(int i, int j); Область функции void func(){ int i; }
  • 10.
    Сокрытие переменных inti=1; // используется глобальная переменная int main(){ char i=5; // используется переменная i == 5 ... ... { ... short i=0; // используется i==0 ... } ... // используется i == 5 }
  • 11.
    Типы данных Целочисленныеданные Знаковые типы Типы без знака char unsigned char — 1 байт — 0 .. 255 signed char — 1 байт - -128 ... 127 int - 2/4 байта -32,768 или -2,147,483,648 32,767 или 2,147,483,647 unsigned int - 2/4 байта 0 65,535 or 2,147,483,647 short - 2 байта - -32,768 .. 32,767 unsigned short — 2 байта — 0 .. 65,535
  • 12.
    Целочисленные типы long- 4 байта - -2,147,483,648 .. 2,147,483,647 unsigned long — 4 байта — 0 .. 4,294,967,295 long long(C99) — 8 байт -9,223,372,036, 854,775,808 9,223,372,036, 854,775,807 unsigned long long (C99) — 8 байт 0 18,446,744,073, 709,551,615 Получение размера переменной size_t sizeof(type)
  • 13.
    Типы с плавающейзапятой float - 4 байта ±3.4E+38 1.2E-38 Точность: 6 знаков double - 8 байт ±1.7E+308 2.3E-308 Точность: 15 знаков long double - 10 байт ±1.1E+4932 3.4E-4932 Точность: 19 знаков
  • 14.
    Перечисления enum [имя]{ список данных }; enum list1 { value1, value2, value3 } Элементы перечисления инициализируются значениями, начиная с 0 Можно задавать значения самостоятельно enum list2 { value1, value2=4, value5, value6=4 }
  • 15.
    Тип void Функция,которая не возвращает значения, может иметь тип void void func{} Использование указателей: void * Указывает на то, что данные представляют адрес Не указывает на тип данных void * func(){ char buf[]={1,0,0,0}; return buf; } int *i=(int *)func(); // *i==1;
  • 16.
    Литералы Числовые литералыint 0x200, 010 unsigned int 512U long 0L unsigned long 0Xf0fUL long long 0777LL unsigned long long 0xAAAllu
  • 17.
    Литералы С плавающейзапятой 10.0 — значение 10 2.34E5 — значение 2.34 x 10 5 67e-12 — значение 67.0 x 10 -12 float float_val = 10.5f; long double ld_val=0.16l
  • 18.
    Литералы Символы 'a''\x61' Специальные символы: \r, \n, \t, \o, \x, \u Строки «Hello, world!» «Hello, \\world!» «Hello, world!\r\n»
  • 19.
    Приведение типов Неявноеприведение типов int i=10; long l=i; Явное приведение типов long l=10; int i=(int)l; Используется при приведении указателей char buf[]={1,0,0,0}; int *i=(int *)buf; printf(«Результат: %d\r\n»,*i);
  • 20.
    Операторы [ ] ( ) . -> ++ -- (type name){list} ( -> ) ++ -- ! ~ + - * & sizeof ( <- ) (type name) ( <- ) * / % ( -> ) + - ( -> ) << >> ( -> ) < <= > >= ( -> ) == != ( -> ) & ( -> ) ^ ( -> ) | ( ->) && ( -> ) || ( -> ) ? : ( <- ) = += -= *= /= %= &= ^= |= <<= >>= (<-) , ( -> )
  • 21.
    Выражение Выражение заканчивается«;» int i=10; for(;;) выражение; Блоки { Выражение; } for(;;){ ... }
  • 22.
    Циклы while(условие) действие; while(условие){ Блок действий; } for(инициализация;условие;изменение) действие; for(инициализация;условие;изменение){ Блок действий; } do{ Блок действий; }while(условие);
  • 23.
    Оператор if if(условие)действие; if(условие){ Блок действий; } if(условие) действие1; else действие2; if(условие){ Блок действий 1; }else{ Блок действий 2; }
  • 24.
    Оператор выбора switch(переменная){ case значение1: действие1; case значение2: действие2; break; default: действие по умолчанию; }
  • 25.
    Операторы break, continue,goto, return Оператор break for(;;){ i++; if(i==5) break; } Оператор continue for(;;){ i++; if(i==5) continue; ... } Оператор goto label1: действие; goto label1; Оператор return return value;
  • 26.
    Конец Вопросы e-mail:a.bovanenko@gmail.com