- •1.Принципиальная схема компьютера. Потоки управления и потоки данных.
- •3. Принципы фон Неймана.
- •4. Создание исполняемых программ в машинных кодах, на Ассемблере и на языках высокого уровня.
- •5. Компиляторы и интерпретаторы, их преимущества и недостатки.
- •6. Классификация программных кодов. Схема создания исполняемого кода.
- •8. Определение и свойства алгоритма. Способы записи алгоритмов.
- •9. Блок-схемы. Основные управляющие структуры блок-схем.
- •10. Технологии программирования. Структурное программирование.
- •17. Операторы присваивания, инкремента и декремента. L-value выражения.
- •18. Условный оператор. Оператор запятая.
- •19. Инструкция-выражение. Инструкции выбора if и switch.
- •20. Инструкции передачи управления..
- •22. Алгоритмы обработки числовых данных (алгоритм Евклида, нахождение всех делителей числа, нахождение простых делителей числа, нахождение простых чисел, чисел Фибоначчи).
- •23. Указатели. Типизированные и безтиповые указатели. Операция разыменования и операция получения адреса.
- •25. Арифметические операции над указателями.
- •26. Проблемы и типичные ошибки при работе с указателями.
- •30. Двумерные и многомерные массивы (алгоритмы обработки матриц).
- •31. Многомерные массивы. Реализация многомерных массивов с помощью указателей.
- •32. Динамическое выделение памяти под одномерные и двумерные массивы.
- •34.Передача массивов в качестве параметров.
- •35. Подпрограммы. Определение и объявление подпрограмм. Процедуры и функции.
- •36.Формальные и фактические параметры. Соответствие типов в формальных и фактических параметрах.
- •38. Механизм работы с модифицируемыми параметрами, использующий указатели.
- •40. Использование ссылочного типа при выходе из подпрограмм. Константные ссылки.
- •41. Побочный эффект подпрограмм, его преимущества и недостатки.
- •42. Рекурсия. Формы рекурсивных подпрограмм. Глубина и текущий уровень рекурсии.
- •43. Зацикливание рекурсивных подпрограмм. Примеры неэффективности рекурсии.
- •44. Перегрузка функций. Ошибки, возникающие при перегрузке функций.
- •45.Указатели на функции. Callback-функции.
- •46. Функция main. Передача параметров в функцию main.
- •47. Директивы препроцессора. Директивы #pragma и #include.
- •48. Директивы #define и #undef. Константы времени компиляции.
- •49. Макросы. Преимущества и недостатки использования макросов.
- •50.Директивы условной компиляции. Страж включения.
- •51. Пространства имён. Работа с пространствами имён. Оператор using. Приоритеты и конфликты имён.
- •52. Строки. Операции над строками.
- •54. Строки string. Функции стандартной библиотеки для обработки строк.
- •55. Основные алгоритмы обработки строк (выделение слова, подстроки, разбиение на слова, поиск символа, поиск слова).Ответ в 53.
- •56. Пользовательские типы данных. Перечислимый тип enum.
- •57. Пользовательские типы данных. Тип struct. Массивы структур.
- •58. Объединения (union). Битовые поля.
- •59. Понятие сложности алгоритма. Оценка сложности с использованием о-символики.
- •60. Алгоритмы сортировки и поиска. Обменные сортировки. Сортировки вставками. Сортировки выбором. Сравнительный анализ методов сортировки.
- •61. Последовательный поиск. Бинарный поиск. Сравнительный анализ методов поиска.
- •62. Файлы. Основные принципы работы с файлами. Механизм чтения данных из файла. Определение конца файла. Открытие и закрытие файлов.
- •63. Текстовые файлы. Создание и обработка. Функции ввода/вывода в стиле с. Ввод-вывод нуль-терминированных строк. Посимвольный ввод-вывод. Форматированный ввод-вывод.
- •66. Исключительные ситуации. Системные и пользовательские исключения. Оператор try …catch. Виды блоков catch. Выброс исключений. И их обработка. Оператор throw.
- •70. Структура данных очередь. Кольцевая очередь. Реализация очереди с использованием списков.
- •71. Структура данных стек. Реализация стека с использованием массива.
- •72. Структура данных стек. Реализация стека с использованием списков.
- •73. Структуры данных. Списки. Типы списков. Представление этих структур в статической и динамической памяти. Обработка однонаправленных и двунаправленных списков. Сборка мусора.
- •75. Реализация линейного однонаправленного списка с использованием массивов.
- •76. Деревья. Обходы деревьев.
- •77. Бинарные поисковые деревья. Определение, концевой обход бпд.
- •78. Поиск и вставка нового элемента в бпд.
- •79.Удаление элемента из бпд.
- •80. Реализация бпд с использованием динамической памяти.
20. Инструкции передачи управления..
goto;break;continue;return;Инструкция goto Формат: goto имя-метки; ... имя-метки: инструкция; Выполняет безусловный переход к другой инструкции внутри того же файла. Оператор goto передает управление на оператор, помеченный меткой имя-метки. Помеченный оператор должен находиться в той же функции, что и оператор goto, а используемая метка должна быть уникальной, т.е. одно имя-
метки не может быть использовано для разных операторов программы. Использование оператора безусловного перехода goto в практике программирования настоятельно не рекомендуется, так как он затрудняет понимание программ и возможность их модификаций. Любой оператор в составном операторе может иметь свою метку. Используя оператор goto, теоретически можно передавать управление внутрь составного оператора. Но нужно быть осторожным при входе в составной оператор, содержащий объявления переменных с инициализацией, так как объявления располагаются перед выполняемыми операторами и значения объявленных переменных при таком переходе будут не определены.
И вообще – такой переход – нарушение принципов структурного программирования. Не следует передавать управление внутрь операторов if, switch и циклов. Это тоже – нарушение принципов структурного программирования Инструкция return завершает выполнение функции, в которой он задан, и возвращает управление в вызывающую функцию, в точку, непосредственно следующую за вызовом. Функция main передает управление операционной системе. Формат : return [выражение] ; Инструкция break Прекращает работу блоков switch и циклов. После выполнения оператора break управление передается оператору,
следующему за прерванным. При вложенных циклах – работает с самым
внутренним из объемлющих его циклов. Инструкция continue Переход к следующей итерации цикла. Завершает текущую итерацию цикла и передает управление на вычисление условия выполнения цикла. Формат : continue; При вложенных циклах – работает с самым внутренним из объемлющих его циклов.
21. Организация циклов в C++.
Организация циклов Инструкция while (цикл с предусловием) Формат: while (выражение) инструкция; //тело цикла
Инструкция do…while (цикл с постусловием)
Пример бесконечного цикла while (true) { ... }
Инструкция for Оператор for - это наиболее общий способ организации цикла. Формат: for (выражение1;выражение2;выражение3) инструкция;
for (;;) { ... ... break; ... }
22. Алгоритмы обработки числовых данных (алгоритм Евклида, нахождение всех делителей числа, нахождение простых делителей числа, нахождение простых чисел, чисел Фибоначчи).
Алгоритм Евклида Дана пара натуральных чисел (a, b). Шаг 1. Поделить a на b с остатком r. Шаг 2. Если r = 0, то НОД (a, b) = b. Шаг 3. Если r <>0, то положить a=b, b=r и перейти к шагу 1.
Соответствующий фрагмент программы: int a,b,r; cout << "input 2 numbers\n";
cin >> a >> b; while (b != 0) { r = a % b; a = b; b = r; } cout << "NOD=" << a;
Нахождение всех делителей натурального числа n
//Все делители натурального числа n #include <iostream> using namespace std;
int main() { setlocale(LC_ALL,".1251"); long int n,d,k; cout << "введите число" << endl;
cin >> n; cout << "1" << endl; for(d=2,k=n/2; d<=k; d++) { if (n%d==0) cout << d << endl; } cout << n << endl; return 0; }
Проверка числа на простоту int a, i, flag; double r, n; cin >> a; if ((a==2)||(a==3)) flag=1;
else { i=2; flag=1; r=a; n=(floor(sqrt(r)); while ((i<=n) && (flag)) if (!(a%i)) flag=0; else ++i; if flag cout << ”простое”; else cout << ”составное”; } Функция floor(x) возвращает значение с плавающей точкой, представляющее наибольшее целое, которое меньше или равно x. Числа Фибоначчи Число называется числом Фибоначчи, если оно является одним из
членов последовательности: fn = fn-1 + fn-2 где f0 = 1 и f1 = 1.