
- •Цели программирования
- •Области языков программирования. Научные приложения.
- •Области языков программирования. Коммерческие приложения.
- •Области языков программирования. Искусственный интеллект.
- •Области языков программирования. Системное программирование.
- •Области языков программирования. Языки сценариев.
- •Области языков программирования. Web-программирование.
- •9. Уровни языков программирования. Языки ассемблера(история возникновения, отличительные особенности, пример языков).
- •10. Уровни языков программирования. Языки высокого уровня(история возникновения, отличительные особенности, пример языков).
- •11. Методы реализации программ. Компиляция (схема получения результата из исходного кода, преимущества и недостатки, сравнительная таблица).
- •12. Методы реализации программ. Интерпретация (схема получения результата из исходного кода, преимущества и недостатки, сравнительная таблица).
- •14. Методы реализации программ. Трансляция (схема получения результата из исходного кода, преимущества и недостатки, сравнительная таблица).
- •15. Критерии качества программ:
- •16. Алгоритм:
- •17. Способы записи алгоритма. Блок-схемы.
- •18. Способы записи алгоритма. Псевдокод.
- •19. Способы записи алгоритма. Сравнение различных подходов:
- •22. Концепция памяти
- •23. Принципы типизации данных.
- •24. Иерархия простых типов данных.
- •25. Смотри таблицу в конспектах
- •26. Правила приведения типов.
- •27. Оператор sizeof.
- •28. Переменные (объявление, инициализация, присвоение).
- •29. Константы. Специальные символы. Квалификатор const.
- •30. Область видимости переменных.
- •31. Операторы управления областью видимости.
- •32. Группы операций (особенности записи, таблица приоритетов).
- •37. Структурное программирование: историческая справка.
- •38. Принципы структурного программирования.
- •39. Структурное программирование: три базовые конструкции.
- •40. Основные операторы.
- •Пустой оператор.
- •Оператор присваивания (синтаксис, логика работы, полная и сокращённая форма, порядок выполнения, контекст вычисления, пример).
- •Составной оператор (синтаксис, логика работы, пример).
- •Условный оператор.
- •Неоднозначность условного оператора .
- •Оператор выбора (синтаксис, логика работы, пример)
- •48. Цикл с предусловием.
- •49. Цикл с предусловием.
- •50. Цикл с параметром
- •51. Взаимозаменяемость циклов
- •52. Оператор break
- •53. Оператор continue
- •54. Оператор ?: (синтаксис, логика работы, пример)
- •55. Ссылки (понятие, способы применения).
- •56. Подпрограммы (синтаксис, виды подпрограмм, контекст, пример).
- •57. Оператор return.
- •58. Прототипы функций (понятие, назначение, способы применения).
- •59. Библиотеки функций. Оператор #include.
- •60.Создание пользовательских библиотек
- •61. Способы передачи параметров в функции.
- •Способы передачи значения из одной функции в другую.
- •63. Рекурсия
- •64. Значения по умолчанию.
- •65. Перегрузка функции.
- •66.Перезагрузка операторов.
- •67.Шаблоны функций.
- •68. Разрешение неоднозначности при вызове функций.
- •69. Одномерные массивы (объявление, индексация, хранение в памяти, сортировка).
- •70. Типовые алгоритмы обработки элементов массива.
- •71.Двумерные массивы
- •72. Представление двумерного массива в виде одномерного. Соответствие индексов двумерного и одномерного
- •73. Многомерные массивы (объявление, индексация, хранение в памяти, сортировка). Пример
- •74. Указатели (назначение синтаксис, операции).
- •75. Различие между указателями и ссылками.
- •76. Динамическая память (выделение и освобождение памяти под переменные, одномерные массивы, двумерные массивы).
- •77. Тип данных «Массив массивов»
- •78. Представление строк в языках программирования. Достоинства и недостатки различных представлений (отличие ‘a’ от “a”).
- •Функции библиотеки cstring
- •Макросы
- •Типы данных
- •82. Файлы (понятие, текстовые и двоичные файлы, структурированные и неструктурированные, операции, основные библиотеки для работы с файлами).
- •Файловый ввод-вывод с использованием потоков
- •83. Потоковый ввод-вывод. Библиотека потокового ввода-вывода.
- •85. Файловый ввод-вывод. Стандартная библиотека ввода-вывода
- •87.Типовые алгоритмы обработки файлов
- •89.Создание простых бд с помощью массива структур.
- •90. Списки (определение, типовые операции, использование).
- •91. Создание простых бд с помощью списков.
72. Представление двумерного массива в виде одномерного. Соответствие индексов двумерного и одномерного
Двумерный массив - это одномерный массив, элементами которого являются одномерные массивы.
Элементами массива, состоящего из N элементов, являются переменные с индексами a[0],a[1],…,a[N–1]. Исходя из общего принципа размещения элементов массива в памяти (плотно и в порядке возрастания номеров), можно утверждать, что элементы двумерного массива m[3][4] займут места в памяти в следующем порядке: m[0][0], m[0][1], m[0][2], m[0][3], m[1][0], m[1][1], m[1][2], m[1][3], m[2][0], m[2][1], m[2]2], m[2][3].
73. Многомерные массивы (объявление, индексация, хранение в памяти, сортировка). Пример
тип имя [разнерN] ... [размер2] [размер1];
Массивы, имеющие более трех размерностей, используются чрезвычайно редко, поскольку требуется большой объем памяти для их хранения.
Важно знать, что в многомерных массивах требуется некоторое время на вычисление каждого индекса. Это означает, что доступ к элементу в многомерных массивах происходит медленнее, чем доступ в одномерных массивах. По этой и другим причинам, если возникает необходимость в многомерных массивах, для них чаще всего память выделяется динамически с использованием функции динамического выделения памяти.
При передаче многомерных массивов функции следует определить все размерности, кроме самой левой. Например, если массив m определен как
int m [4] [3] [6] [5];
то функция func1(), получающая m, может выглядеть следующим образом:
int func1 (int d[] [3] [6] [5])
{
...
}
74. Указатели (назначение синтаксис, операции).
Указатель – такая переменная, которая хранит адрес другой переменной. Очень часто этот адрес указывает на расположение в памяти другого объекта, например, переменной. Так если x содержит адрес y, тогда говорят, что x указывает на y.
Синтаксис.
Тип *имя; - объявление.
Если объявить указатель и не присвоить начальное значение, то он будет указывать на случайную ячейку памяти. Разыменовывать такой указатель нельзя.
Чтобы сохранить в указателе адрес некоторой переменной, используется оператор присваивания и взятие адреса.
Операция |
Пример кода |
|
* |
int *p *p |
Определение указателя. Разыменование указателя. |
& |
int &s=x
&x |
Определение ссылки (s – другое имя x). Получение адреса переменной x. |
& * |
x&y x*y |
Бинарные операции побитового «и» и умножения. |
Арифметика указателей.
Над указателями определены некоторые операции.
Любой указатель на 32-разрядной машине занимает 32 бита.
Операции.
Сложение указателя с целым числом.
Вычитание указателей.
int x;
int*p1=&x;
int*p2=&x;
p2+=10;
p2-p1=10;
75. Различие между указателями и ссылками.
Ссылка может быть проинициализирована только один раз.
Ссылка – константный "указатель", поэтому она должна быть обязательно проинициализирована и не может быть изменена после этого в том смысле, что не может ссылаться на что-то другое.
Ссылка – разыменованный "указатель", поэтому адресная арифметика к ссылкам неприменима (операции будут применяться к тому, на что ссылается ссылка, а не к самому адресу на ссылаемый объект), а с указателем – применима.
Ссылка всегда разыменована, поэтому программа некорректна, если ссылка не ссылается никуда. Не ссылающихся ни на что ссылок быть не может в корректной программе. Указатели, напротив, могут не ссылаться ни на какой объект, часто для обозначения таких указателей применяется указатель по адресу 0, он же – NULL. Корректная программа должна обязательно проверять все указатели на валидность перед их разыменованием.