- •1. Обобщенная схема компьютера.
- •2. Понятие информации и алгоритма. Формы представления алгоритма.
- •3. Блок-схемы разветвляющихся алгоритмов.
- •4. Блок-схемы циклических алгоритмов.
- •6. Операция присваивания. Особенности выполнения.
- •Int I, j; float X, y;
- •8. Потоковый ввод-вывод
- •9. Форматированный ввод-вывод.
- •10. Использование манипуляторов при вводе выводе данных.
- •11. Строковый и символьный ввод-вывод информации.
- •Int letter;
- •12. Условные операторы. Условия операции “?:”. Примеры использования. Условный оператор if
- •13. Особенности синтаксиса и выполнения операторов перехода continue, break
- •Void main()
- •14. Оператор перехода goto. Оператор return.
- •15. Переключатель switch. Примеры использования.
- •16. Организация циклов с помощью while, do while. Примеры.
- •17. Организация циклов с помощью for. Примеры.
- •Void main()
- •18. Простанство имён. Ключевое слово using как директива.
- •19. Средства отладки программ в ms vs.
- •19. Выполнение приложения с использованием средств интерактивной отладки.
- •20. Выполнение приложения с использование средств планируемой отладки
- •21. Создание исполняемого файла.
- •26. Побитовые логические операции (конъюнкция &, дизъюнкция |, сдвиги, инвертирование).
- •Void main()
- •27. Символы, строки (примеры объявления инициализация).
- •28. Алгоритмы работы со строками (подсчет длины строки, объединение строк, удаление заданного символа).
- •Void main()
- •Void main()
- •29. Стандартные функции работы со строками. Примеры использования.
- •Void main()
- •Int result;
- •Void main()
- •30. Логические переменные и примеры их использования в программах.
- •Логические операции
- •31. Понятие указателя. Операции над указателями.
- •32. Одномерные массивы и указатели. Понятие индекса. Инициализация. Доступ к компонентам.
- •33. Указатели и строки. Примеры (объединения строк, поиск заданного символа).
- •34. Матрицы. Инициализация, ввод, вывод.
- •35. Связь между указателями и элементами матриц. Поиск минимума и суммы элементов матрицы через указатели.
- •36. Указатели на указатели. Примеры использования.
- •37. Функция работы с динамическими массивами на языке с.
- •39. Объявление и определение функции пользователя.
- •Int main(void)
- •43. Указатели как формальные параметры и как результат функции.
- •Int main()
- •Void swap(int *X, int *y)
- •Void func1(int val, int& ref)
- •Void main()
- •Void main()
- •Int& preinc(int& X)
- •Void main(void)
- •Void main( )
35. Связь между указателями и элементами матриц. Поиск минимума и суммы элементов матрицы через указатели.
Например, при объявлении двумерного массива int A[4][3] в памяти выделяется участок для хранения значения переменной A, которая является указателем на массив из четырех указателей.
Каждый из этих четырех указателей содержит адрес начального элемента массива из трех элементов типа int.
Таким образом, объявление A[4][3] порождает в программе три разных объекта: указатель с идентификатором А, безымянный массив из четырех указателей и безымянный массив из двенадцати чисел типа int.
Доступ к элементам массива указателей осуществляется с указанием одного индексного выражения в форме А[2] или *(А+2).
Для доступа к элементам двумерного массива чисел типа int используются два индексных выражения в форме
А[1][2]
или эквивалентных
*(*(А+1)+2) *(А[1]+2) (*(A+1))[2]
36. Указатели на указатели. Примеры использования.
Указатель на указатель типа int объявляется с использованием двух звёздочек
Указатель на указатель работает подобно обычному указателю: вы можете его разыменовать для получения значения, на которое он указывает. И, поскольку этим значением является другой указатель, для получения исходного значения вам потребуется выполнить разыменование ещё раз. Их следует выполнять последовательно
Пример программы, в которой создается и транспонируется двумерная динамическая матрица, заполненная случайными числами.
37. Функция работы с динамическими массивами на языке с.
Статический объект создается при трансляции, динамический - при выполнении программы.
Во время компиляции программ на языках C/C++ память компьютера разделяется на четыре области: программного кода, глобальных данных, стек и динамическую область ("куча" или «свободное хранилище»).
Эта техника позволяет эффективно расходовать память и разрабатывать программы, способные решать масштабные проблемы, обрабатывая большие объемы данных.
Внутри «кучи» или «свободного хранилища» можно выделить память, и затем освободить выделенное пространство и вернуть его в «свободное хранилище», после того, как необходимость в переменных отпадет.
Т.е., свободная память - это предоставляемая системой область памяти для объектов, время жизни которых напрямую управляется программистом.
Динамическое выделение памяти необходимо для эффективного использования памяти компьютера. Например, мы написали какую-то программку, которая обрабатывает массив. При написании данной программы необходимо было объявить массив, то есть задать ему фиксированный размер (к примеру, от 0 до 100 элементов). Тогда данная программа будет не универсальной, ведь может обрабатывать массив размером не более 100 элементов. А если нам понадобятся всего 20 элементов, но в памяти выделится место под 100 элементов, ведь объявление массива было статическим, а такое использование памяти крайне не эффективно.
38. Операторы работы с динамическими массивами на языке С++.
Операция new позволяет выделить и сделать доступным свободный участок памяти, размеры которого соответствуют типу данных. Оператор возвращает указатель на начало выделенного блока памяти. Операция delete освобождает участок памяти, ранее выделенный операцией new. Аргументом оператора delete выступает адрес первой ячейки блока, который необходимо освободить.
int *i; i = new int(10); //создать динам. перем. типа int, равную 10
float *f; f = new float; //создать динамическую переменную типа float
Если выделяется память под массив динамических переменных, то в операторе new добавляются квадратные скобки.
delete i; //освободить память по указателю i
delete [] А; //освободить память, выдел. под массив А
В операторе delete []A скобки [] означают, что требуется уничтожить все элементы массива, а не только первый.
Динамическое выделение памяти – потенциальный источник ошибок. Утечка памяти происходит, когда используется операция new для выделения памяти, но не используется операция delete для ее освобождения.
Одномерный массив: int *А = new int[5]; delete [ ] A;
Для строки: pstr = new char[length + 1]; delete[] pstr;
Для квадратной матрицы: A = new int*[m]; for (i = 0; i < m; i++) A[i] = new int[m];
Для двумерного массива:
A = new int*[m];
for (i = 0; i < m; i++) A[i] = new int[n];
for (i = 0; i < m; i++) delete A[i];
delete [] A;