Содержание
- 2. Краткая история и особенности Разработан Dennis Ritchie в Bell Labs, 1972 Первое применение – портирование ОС
- 3. Hello, world! #include /* Заголовочный файл */ main() /* main() - место начала исполнения программы */
- 4. Компиляция программы, состоящей из одного файла gcc hello.c GCC = GNU Compiler Collection hello.c – имя
- 5. Переменные. Имена состоят из букв, цифр и знака подчёркивания(_), первый символ не может быть цифрой Переменные
- 6. Переменные – 2. Основные типы. char – 1 байт. Часто используется при работе с текстовыми строками
- 7. Переменные – 3. Квалификаторы. signed/unsigned – квалификатор char и int. Показывает, является ли переменная знаковой (-N..N-1)
- 8. Переменные – 4. Примеры. unsigned char c; int i; /* синоним signed int i */ double
- 9. Функция printf () #include int printf(const char *format, список аргументов для подстановки); строка с форматом %s
- 10. Примеры #define STR "абырвалг" printf ("i = %d\n", 10); /* i = 10 */ printf ("My
- 11. Введение в массивы Набор однотипных элементов, последовательно располагающихся в памяти Нумерация идёт с нуля Возможно задание
- 12. Введение в указатели Указатель – переменная, содержащая адрес другой переменной & - взятие адреса переменной (взятие
- 13. Введение в указатели - 2 int *p = NULL; int i = 10; p = &i;
- 14. Строковые константы Последовательность(возможно, нулевая) ненулевых символов, заканчивающаяся на 0 Задание строки возможно помещением текста в двойные
- 15. Использование #define для объявления констант. #define MESSAGE "Some frequently used string." #define DEBUG 0 #define BUFSIZE
- 16. «Истина» и «ложь» Если численное значение 0, оно ложно Иначе оно истинно Например, 1, 1000, -1234
- 17. Операторы Арифметические: +, -, *, /, %(остаток от деления) Логические: >, >=, 0, x==0 => 1)
- 18. Примеры int a, b; double x; a = 2*2; /* a = 4 */ b =
- 19. ++ и -- Прибавление/вычитание единицы с последующей записью значения в переменную Могут находиться перед переменной(префиксная запись,
- 20. Примеры int x = 0, n = 0; n++; /* n = 1 */ x =
- 21. +=, -=, *= и т.д. A += B эквивалентно A = A + B + -
- 22. A ? B : C Если A истинна(т.е. не равна 0), то B, иначе C /*
- 23. Преобразование типа. Возможное преобразование: автоматическое (type)variable “Общее правило” – автоматическое преобразование происходит при преобразовании в более
- 24. Правила конверсии для беззнаковых чисел If either operand is long double, convert the other to long
- 25. Приоритет операторов Наивысший Самый низкий
- 26. if-else Если expression истинно, то statement1, иначе – statement2 if (expression) statement1 else statement2
- 27. Примеры /* 1. else идёт с соседним if-ом! */ if (n > 0) if (a >
- 28. switch Условное выполнение кода при равенстве выражения одной из численных констант switch (expression) { case const-expr:
- 29. Пример switch (c) { case '0': case '1': case '2': case '3': case '4': case '5':
- 30. while - цикл Выполнение statement пока expression не равен 0 while (expression) statement /* Пример */
- 31. for - цикл содержит 3 выражения, разделённые запятой Аналогичен следующей конструкции с while: for (expr1; expr2;
- 32. Цикл do-while Выполнять statement пока expression не равно нулю. statement выполнятся хотя бы раз do statement
- 33. Break и continue Break: ранний выход из циклов for, while, do Выход осуществляется из самого вложенного
- 34. Примеры /* trim: remove trailing blanks, tabs, newlines */ int trim(char s[]) { int n; for
- 35. Goto Goto – переход по метке Использование оправданно очень редко! Есть возможность перехода между функциями –
- 36. Функции Перед использованием функция должна быть объявлена. Тип возвращаемого значения может быть void(ничего не возвращает) Количество
- 37. Пример #include int power(int m, int n); /* test power function */ main() { int i;
- 38. Заголовочные файлы
- 39. external, static, register, volatile переменные External – задание внешнего связывания (external linking). Все обращения к external
- 40. Директивы препроцессора #include “name”, #include #define что_заменить на_что_заменить #undef #if, #ifdef, #ifndef, #elif, #endif
- 41. Примеры #define BUFSIZE 1024 #define forever for (;;) #define max(A, B) ((A) > (B) ? (A)
- 42. Ещё об указателях и массивах swap(a, b); ………………………………………………………………………………… void swap(int x, int y) /* НЕПРАВИЛЬНО*/ {
- 43. Ещё об указателях и массивах swap(&a, &b); void swap(int *px, int *py) /* поменять местами *px
- 44. Ещё об указателях и массивах int a[10]; int *pa; pa = &a[0]; x = *pa; y
- 45. Передача параметров программе. Аргументы main. 1 аргумент – количество аргументов 2 аргумент – массив строк с
- 46. Указатели на функцию Возможно задание и передача указателей на функции int (*pf)(); /* указатель на функцию,
- 47. Набор переменных (возможно, различных типов) объединённых вместе для простоты работы с ними struct struct_name { ...
- 48. typedef Задание пользовательского типа данных typedef struct tnode { /* the tree node: */ char *word;
- 49. Полезные функции С standard library printf/scanf, sprintf/sscanf, fprintf/fscanf putchar/getchar, putc/getc fopen/fclose – работа с файлами memcpy
- 50. Литература Б. Керниган, Д. Ритчи – «Язык программирования Си» (Kernigan, Ritchie – “The C Programming Book”)
- 51. Спасибо за внимание! Вопросы? Следующая лекция – Введение в C++
- 52. Backup
- 53. Перечисления (enumerations) /* Предоставляют простой способ задания нескольких констант с различиющимися значениями */ /* По умолчанию
- 54. unions Структура, члены которой располагаются по одному и тому же адресу памяти union u_tag { int
- 56. Скачать презентацию