- •Лекция 1. Введение.
- •Лекция 2-3. Основные понятия. Типы данных.
- •Основные типы данных
- •Лекция 4 Выражения. Классификация операторов
- •Операторы объявлений типов и переменных
- •Операторы вызова функций
- •Математические и логические операции. Условная операция. Математические операции для целочисленных и вещественных вычислений.
- •Математические операции только для целочисленных вычислений
- •Логические операции.
- •Условная операция.
- •Операторы управления.
- •Оператор ветвления.
- •Оператор выбора.
- •Лекция 5. Циклы
- •Цикл while
- •Цикл for
- •Операция "запятая"
- •Цикл с условием на выходе: do while
- •Какой цикл лучше?
- •Другие управляющие операторы: break, continue, goto.
- •Лекция 6. Структуры данных. Массивы. Объединения. Строковые литералы.
- •1. Объявление массива
- •2. Инициализация массивов
- •3. 1 Работа с массивами
- •3.2. Обработка массивов
- •3.3. Ввод/вывод массивов
- •Объединения в c
- •Лекция 7. Функции. Рекурсия. 1 часть.
- •Лекция 8. Функции. Рекурсия. 2 часть.
- •Лекция 9. Указатели.
- •Функции управление памятью
- •Лекция 10. Динамические структуры данных.
- •Лекция 11. Файлы
- •Лекция 13. Объектно-ориентированные модели. Составные части объектного подхода.
- •Лекция 14. Классы. Конструкторы и деструкторы.
- •Лекция 15. Простое наследование классов
- •Лекция 16. Перегрузка функций
- •Лекция 17. Перегрузка операторов
- •Лекция 18. Друзья
- •Лекция 19. Шаблоны. Стандартная библиотека шаблонов
- •Лекция 20. Исключительные ситуации
- •Лекция 3.2. Проектирование структуры приложения. Система меню
- •Лекция 3.3.1. Стандартные и дополнительные компоненты
- •Лекция 3.3.2. Компоненты страницы Win32. Системные компоненты.
- •Лекция 3.4. Проектирование структуры данных
- •Лекция 3.6. Компоненты ActiveX. Графические компоненты
- •3.6.1.Компоненты ActiveX.
- •3.6.2. Графические компоненты
- •Лекция 4.1. Основные понятия языка. Переменные, операции, выражения. Операторы
- •Класс Array
- •Массивы как коллекции
- •Сортировка и поиск. Статические методы класса Array
- •Лекция 4.3. Делегаты, события и потоки выполнения. Работа с файлами библиотеки, атрибуты, директивы
- •Описание делегатов
- •Использование делегатов
- •Паттерн "наблюдатель"
- •Операции
- •Передача делегатов в методы
- •События
- •Многопоточные приложения
- •Класс Thread
- •Асинхронные делегаты
- •Лекция 5.1. Методы конструирования сложных программных систем
- •Inline-ассемблер в Delphi
- •Лекция 5.2. Разработка динамических библиотек
- •Для начала - что это такое ?
- •Далее разберемся: какая может быть польза от dll
Лекция 4 Выражения. Классификация операторов
Оператор — это конструкция языка Си, которая вызывает выполнение действия. Все операторы языке С можно разделить на четыре группы:
Операторы объявлений типов и переменных;
Операторы присвоений, математических и логических операций;
Операторы вызова функций;
Операторы управления.
Операторы объявлений типов и переменных
Оператор объявления типа предназначен для создания новых типов и имеет следующий синтаксис:
typedef спецификатор_типа идентификатор;
Примеры:
typedef unsigned int word;
typedef unsigned char byte;
Идентификатор выступает в качестве имени нового типа. Идентификатором может быть любая совокупность букв латинского алфавита (чувствительно к регистру), цифр и знака подчеркивания, удовлетворяющая следующим условиям:
не является зарезервированным словом языка «С» и ранее употребляющимся сочетанием символов;
начинается либо с буквы, либо со знака подчеркивания.
Операторы объявлений типов располагаются после раздела подключения библиотек и перед функцией main.
Оператор объявления переменных предназначен для создания переменных и имеет следующий синтаксис:
спецификатор_типа идентификатор1, идентификатор2,…,идентификаторN;
Идентификаторы здесь играют роль имени переменной. Требования к ним приведены выше.
Компилятор языка «С», как правило, не выполняет предварительной инициализации переменной. При запуске программы все переменные содержат мусор. Для избежания этого следует использовать инициализацию переменных:
спецификатор_типа идентификатор=значение;
Помимо переменных в языке «С» можно создавать и константы:
const спецификатор_типа идентификатор = значение;
Операторы объявлений переменных и типов могут располагаться либо перед функцией main, либо внутри нее. В последнем случае все операторы объявлений должны быть расположены в начале программы (до операторов другого типа).
Операторы вызова функций
Операторы вызова функций имеют следующий синтаксис:
функция(параметры);
В качестве примера рассмотрим две функции базового I\O из библиотеки stdio.h: scanf и printf.
Функция scanf предназначена для форматного ввода данных и имеет следующий заголовок:
int scanf(const char *format [,addresses,…]);
Первым параметром функции является строка формата ввода (строки в «С» заключаются в двойные кавычки). В данной строке содержится перечень спецификаторов типов данных, ввод которых ожидается, в определенном порядке. Далее указываются адреса, по которым будут располагаться вводимые данные. Например, имеется две переменные целого типа и переменная вещественного типа. Необходимо организовать их ввод.
scanf(“%d %d %lf”,&a,&b,&x);
В данном примере сначала вводятся два значения целого типа в переменные a и b, а затем вещественного типа в переменную x. %d указывает на то, что вводимые данные являются целыми числами, %lf – вещественным типа double.
Сочетание %d или любое другое называется спецификатором типа. В общем случае он имеет следующий формат:
% [*] [WIDTH] [F|N] [h|l|L] символ_типа
* - указывает запрещенные для ввода символы.
WIDTH – задает максимальную длину поля ввода.
F и N – преобразователи типа адресных аргументов к длинному и ближнему указателю.
L, l и h – преобразователи типа. Символ h служит для преобразования к типу short int. Символ l служит для преобразования к типу long int всех целочисленных типов и к типу double всех вещественных типов. Символ L служит для приведения к типу long double всех вещественных типов.
В таблице приведен перечень типов и соответствующие им спецификаторы:
Символ |
Тип |
Параметр |
Численные |
||
d |
Десятичное целое |
int * |
D |
Десятичное целое |
long * |
e, E |
Вещественное число |
float * |
f |
Вещественное число |
float * |
g, G |
Вещественное число |
float * |
o |
Восьмеричное целое |
int * |
O |
Восьмеричное целое |
long * |
i |
Десятичное, восьмеричное или шестнадцатеричное целое |
int * |
I |
Десятичное, восьмеричное или шестнадцатеричное целое |
int * |
u |
Незнаковое целое |
unsigned * |
U |
Незнаковое целое |
unsigned long * |
x |
Шестнадцатеричное целое |
int * |
X |
Шестнадцатеричное целое |
int * |
Символьные |
||
s |
Строка символов |
char * |
c |
Символ |
char * |
Указатели |
||
p |
Шестнадцатеричная форма |
Указатель на объект |
Функция printf предназначена для форматного ввода данных и имеет следующий заголовок:
int printf(const char *format [,variables,…]);
Первым параметром функции является строка формата ввода (строки в «С» заключаются в двойные кавычки). В данной строке содержится перечень спецификаторов типов данных, вывод которых ожидается, в определенном порядке. Далее указываются переменные, значения которых будут выводится. Например, имеется две переменные целого типа и переменная вещественного типа. Необходимо организовать их вывод.
printf(“%d %d %5.2lf”,a,b,x);
В данном примере сначала выводятся два значения целого типа в переменные a и b, а затем вещественного типа в переменную x. %d указывает на то, что выводимые данные являются целыми числами, %lf – вещественным типа double.
Сочетание %d или любое другое называется спецификатором типа. В общем случае он имеет следующий формат:
% [flag] [WIDTH][.PREC] [F,N,h,l,L] символ_типа
flag – для чисел указывает на необходимость вывода знака «+» для положительных чисел, для строк управляет форматированием – по левому или по правому краю.
WIDTH – задает длину поля.
.PREC – задает количество символов после запятой для вещественных чисел и минимальное количество знаков для целых чисел.
F, N – то же, что и для scanf.
h – преобразование к типу short int,
l – преобразование к типу long int,
L – преобразование к типу long double.
В таблице приведен перечень типов и соответствующие им спецификаторы:
Символ |
Тип |
Параметр |
Численные |
||
d |
Целое |
Знаковое десятичное целое |
i |
Целое |
Знаковое десятичное целое |
o |
Целое |
Незнаковое восьмеричное целое |
u |
Целое |
Незнаковое десятинное целое |
x |
Целое |
Незнаковое шестнадцатеричное целое |
X |
Целое |
Незнаковое шестнадцатеричное целое |
f |
Вещественное |
Вещественное число в обычной форме |
e |
Вещественное |
Вещественное число в научной форме |
g |
Вещественное |
Либо f, либо e |
E |
Вещественное |
С экспонентой E |
G |
Вещественное |
То же, что и g, но с Е |
Символьные |
||
s |
Строка |
Указатель на символы |
c |
Один символ |
Символьный тип |
Указатели |
||
p |
|
Выводит на экран значение как указатель в формате сегмент: смещение или просто смещение |