- •3. Правила формального описания синтаксиса языка программирования
- •5. Идентификаторы языка Си
- •6. Понятие функции. Стандартная функция printf.
- •7. Стандартная функция scanf
- •8. Простейшие арифметические операции.
- •9. Операция присваивания. Оператор - выражение.
- •10. Использование в выражениях операндов разных типов. Операция преобразования типов.
- •11. Стандартные математические функции.
- •12. Простейшие функции, определяемые программистом.
- •13. Дополнительные арифметические операции. Дополнительные операции присваивания.
- •14. Побитовые операции.
- •15. Операции отношения. Операция определения размера данных.
- •16. Приоритеты операций.
- •17. Понятие о препроцессоре языка Си: директива «include», директива «define».
- •18. Основные положения структурного программирования. Понятие оператора (statement). Пустой и составной операторы.
- •19. Условный оператор и условная операция.
- •20. Оператор цикла «while». Оператор прерывания цикла. Оператор продолжения цикла. Множественный выбор. Оператор переключения.
- •21. Оператор цикла «do-while».
- •22.Перечисления. Работа с клавиатурой ibm pc
- •23. Массивы. Описание массива.
- •24. Ввод-вывод массива
- •25. Инициализация массива
- •26. Программа вычисления длины строки символов
- •32. Двумерные массивы (массивы массивов)
- •32. Адресная арифметика языка Си
- •33. Указатели и одномерные массивы
- •34. Указатели и двумерные массивы
- •35. Указатели и функции
- •36. Оператор typedef
- •39. Области видимости и глобальные данные
- •40. Время жизни переменных и классы памяти языка Си
- •41. Передача аргументов в функцию
- •42. Возврат значений из функций
- •47. Общий случай двумерного массива.
- •48. Особенности работы с массивами большого размера
- •49. Описание структуры.
- •50. Трактовка имени структуры.
- •51. Доступ к элементу структуры.
- •52. Инициализация структур.
- •53. Структуры и функции.
- •54. Поля бит в структурах.
- •55. Объединения.
- •56. Динамические данные.
- •57. Линейные списки.
- •58. Организация данных в виде стека.
- •59. Организация данных в виде очереди.
- •60. Организация данных в виде деревьев.
51. Доступ к элементу структуры.
Для этого используется операция "."
goods1.name - образовалось составное имя. Тип составного имени такой же как тип соответствующего элемента структуры.
С составным именем можно выполнять любые действия, разрешенные для типа элемента. Для указателя на структуру используют селектор
52. Инициализация структур.
Статические структуры могут быть проинициализированы подобно массивам:
static GOODS a = { "Телепвизор", 14000.0, 20};
Необходимо строго следитьза соответствием порядка констант порядку элементов структуры.
53. Структуры и функции.
Структура целиком может быть передана функции как аргумент и возвращена как значение функции.
Пример преобразование в полярных координат в декартовом:
struct POLAR
{
double r, f;
}
struct DECART
{
double x, y;
}
DECART TO DECART (POLAR p)
{
DECART d;
d.x = p.r*cos(p.f);
d.y = p.r*sin(p.f);
return d;
}
void main(void)
{
DECART a; POLAR b = { 15.2, 0.18};
a = p(b);
}
54. Поля бит в структурах.
В структуре для целых чисел допускается использовать область памяти меньше байта:
struct Un:Population
{
int FIT:11;
int FEM:11;
iny FEN:10;
};
55. Объединения.
Способы описания такие же, как и в случае структур, только вместо слова struct используется слово union.
union {int a; long b;} pr;
Для переменной pr выделяется память, достаточная для хранения самого длинного элемента объединения, т. е. в нашем примере - 4 байта. Объединения используются для хранения полей и поле которое записано последнее корректно.
Объединения нельзя инициализировать.
56. Динамические данные.
Статическими величинами называются такие, память под которые выделяется во время компиляции и сохраняется в течение всей работы программы.
В языках программирования (Pascal, C, др.) существует и другой способ выделения памяти под данные, который называется динамическим. В этом случае память под величины отводится во время выполнения программы. Такие величины называются динамическими. Работа с динамическими величинами связана с использованием еще одного типа данных — ссылочного типа. Величины, имеющие ссылочный тип, называют указателями.
Указатель содержит адрес поля в динамической памяти, хранящего величину определенного типа. Сам указатель располагается в статической памяти.
57. Линейные списки.
Л инейный список - это упорядоченная структура данных, каждый элемент которой содержит ссылку (указатель), связывающую его со следующим элементом.
Для организации списков служат структуры, состоящие из двух смысловых частей: основной, содержащей полезную информацию, и дополнительной, содержащей ссылку на следующий элемент списка.
В виде списков удобно представлять большие объемы информации, размер которых заранее неизвестен.
58. Организация данных в виде стека.
Понятие стека ("магазина"): первый пришел, последний ушел.
LIFO (LAST IN FIRST OUT)
Описание стека как списка:
typedef struct _LIST {
info_t info; /* тип данных для информации */
struct _LIST *next;
} LIST;
В вызывающей функции стек должен быть описан так:
LIST *head = NULL; /* голова списка */
Действия со стеком определяется несколькими функциями:
1. Помещение элемента в стек (в голову списка)
2. Извлечение из стека (из головы списка)