- •1.Моделированьепроцесса решения.
- •2. Формализация процесса решения задачи.
- •1) Поиск решения эквивалентной задачи.
- •3.Интуитивное понятие алгоритма.
- •4.Основные свойства алгоритма.
- •5.Взаимосвязь между набором элементарных операций и исполнителем алгоритма.
- •6. Способы изображения алгоритма.
- •7.Введение в язык Си: истоки, парадигма программирования (отношение между набором алгоритмов и набором данных в программах).
- •8.Структура программ на языке Си. Директива процессора, комментарии.
- •11. Описание переменной: имя переменной; строчные и прописные буквы в идентификаторах, задание начального значения (инициализация).
- •15.Преобразование операндов в арифметических выражениях.
- •16.Сложние объявления и элементы объявления.
- •17.Указатели (2 категории).
- •19. Оператор постфиксного увеличения/ уменьшения.
- •20. Оператор префиксного увеличения/ уменьшения.
- •21. Простой оператор присваивания.
- •22. Составные операторы присвоения.
- •23. Условный оператор if.
- •24. Оператор выбора switch.
- •25. Понятие массива, описание массива, размерность массива, размещение в памяти.
- •26. Описание массива имеет вид:
- •27. Массивы символов и литеральные строки.
- •28. Операторы цикла (for, while и do-while) для работы с массивами.
- •29. Многомерные массивы: описание, размещение в памяти, инициализация, обращение к элементам.
- •30. Взаимосвязь массивов и указателей. Описание указателя.
- •32. Указатель типа void*. Преобразование указателя операцией приведения типа.
- •33. Доступ к переменным через указатели: операция & и операция *.
- •37.Синтаксис объявления (--заголовка, --прототипа ) функции. Оператор return
- •38. Понятие формальных параметров и фактических аргументов (при вызове ф-ции). Переменное число аргументов или аргументы с изменяющимися типами (многоточие).
- •39. Указатель на функцию
- •40. Перегрузка функций
- •41. Итерпритация сложных описаний изнутри наружу.
15.Преобразование операндов в арифметических выражениях.
Для бинарных операторов операнды разных типов приводятся к «старшему», то есть более длинному типу.
Типы в порядке убывания:
long double → double → float → unsigned long → long → unsigned int → int → char
При выполнении операции присваивания результат приводится к типу переменной слева, в этом случае может возникнуть преобразование от старшего типа к младшему.
Преобразование младшего целого типа к старшему целому выполняется расширением в старших битах, размножением нуля или размножением знака, преобразуемого значения.
Преобразование char в int, unsigned int, long, unsigned long выполняется размножением нуля, если тип char unsigned, или знака если тип char signed.
Преобразования типа int в long или unsigned long выполняется размножением знака.
Преобразование целых типов в типы с плавающей точкой выполняются специальными библиотечными функциями, заполнением свободных битов мантиссы нулями. Всегда даёт корректный результат.
Преобразование старших целых типов в младшие выполняется отбрасыванием старших байтов.
Преобразование старшего типа с плавающей точкой в младший выполняется округлением до нужного количества знаков после точки.
Преобразование типа с плавающей точкой в целый тип выполнятся библиотечными функциями, и даёт ближайшее целое число. Результат корректный только когда целая часть числа с плавающей точкой помещается в диапазон целого числа.
- Операции приведения типа (<тип>):
int a=8, b=5, c, d;
float var1, var2;
var1 = a / b; // 1.0
var2 = (float) a/ (float) b; //1.6 –во всех компиляторах
- Оператор запятая
E1, E2
E1 – вычисляется как void выражение, E2 – вычисляется после, определяя тип и результат всего выражения запятой
Е1, Е2, …., Еn – Ei выч-я с лево на право и рез. будет в Еn, во избежание неопределенности надо заключ в круглые скобки при вызове ф-ции:
func(I,(j=1,j+5),k)
Функции преобразования данных ASCII:
atof char -> double atoi char -> int
atol char -> long acvt double -> char
itoa int -> chat ltoa long -> char
16.Сложние объявления и элементы объявления.
Прежде чем имя (идентификатор) может быть использовано в программе оно должно быть объявлено. То есть должен быть указан тип имени, чтобы компилятор знал, на сущность какого вида ссылается имя.
Объявление состоит из четырёх частей: необязательного спецификатора, базового типа, объявляющей части и, возможно, инициализатора.
<тип> [<мод-ры>] <имя> [<нач_знач>]
Объявляющая часть состоит из имени и операторов объявления. Наиболее часто встречаются следущее операторы объявления:
* указатель
* const константный указатель
& ссылка
[] массив
() функция
Разрешается объявлять несколько имен в одном операторе объявления. Например мы можем объявить две переменных:
int x, y;
Операторы объявления применяются только к ближайшему имени и не относится к соседнем именам в объявления. Например:
int *p, y //int*p; int y;
