
- •1. Общая характеристика языка Си в сравнении с другими процедурными языками.
- •2. Основные типы данных, переменные и константы. Препроцессор языка Си.
- •3.Операции языка Си. Преобразование типов данных
- •4.Ввод-вывод чисел, символов и строк на консоль. Переключение ввода-вывода, работа с файлами.
- •5.Оператор ветвления, многовариантный выбор.
- •6.Операции отношения, логические операции.
- •7.Циклы и другие управляющие средства.
- •8.Функции: аргументы функции, возвращение значений, локальные переменные, нахождение адресов, указатели.
- •9.Классы памяти и область действия. Автоматические переменные. Внешние переменные. Статические переменные. Внешние статические переменные. Регистровые переменные.
- •10.Массивы и указатели. Динамические объекты. Операции с указателями.
- •11.Строковые константы, массивы символьных строк и их инициализация. Указатели и строки, ввод-вывод и обработка строк.
- •12.Определение структурных переменных. Доступ к компонентам структуры.
- •13.Объединения и перечисления. Указатели и структуры. Массив структур.
- •14. Стандартные библиотечные функции языка Си, функция генерации случайных чисел.
- •15.Динамические структуры данных (стек, список, дерево, граф).
- •16.Графический интерфейс пользователя (gui). Типы данных Win32.
- •17.События и сообщения, оконная процедура, оконный класс, цикл обработки сообщений.
- •18.Создание основного окна приложения, изменение характеристик окна.
- •19.Стандартное окно с сообщением и кнопкой «ок». Функции поддержки окон.
- •20.Обработка сообщений от клавиатуры, часто используемые сообщения.
- •21.Органы управления: кнопки, флажки, переключатели. Групповая рамка. Статический орган управления для вывода текста.
- •22.Однострочное и многострочное поле для ввода текста.
- •23.Список, раскрывающийся список, комбинированный список. Файловые операции.
- •24.Создание процесса, создание потока, рабочие функции потока, обмен сообщениями между процессами и потоками.
- •25. Передача данных с помощью сообщений и через файлы, синхронизация процессов и потоков. Создание многопоточного приложения.
- •26.Синхронные и асинхронные сообщения, посылка сообщения из приложения Windows.
- •27.Графический интерфейс устройства (cdi). Контекст устройства. Регионы и отсечение.
- •28.Файловый ввод-вывод данных средствами Win32api, файловые операции.
- •29.Режимы многозадачности, многопоточная архитектура, преимущества Windows.
- •30.Двусвязный список, операции с двусвязным списком, циклические списки.
- •31.Базовый алгоритм численного интегрирования методом прямоугольников.
- •32.Программная реализация численного интегрирования методом прямоугольников.
30.Двусвязный список, операции с двусвязным списком, циклические списки.
Двусвязный список состоит из элементов данных, каждый из которых содержит ссылки как на следующий, так и на предыдущий элементы. На рис. 22.5 показана организация ссылок в двусвязном списке.
Построение двусвязного списка выполняется аналогично построению односвязного за исключением того, что необходимо установить две ссылки. Поэтому в структуре данных должны быть описаны два указателя связи. Возвращаясь к примеру списка рассылки, для двусвязного списка структуру address можно модифицировать
Функция dlstore() помещает новые записи в конец списка. В качестве параметров ей необходимо передавать указатель на сохраняемые данные; а также указатель на конец списка, который при первом вызове должен быть равен нулю (NULL).
Подобно односвязным, двусвязные списки можно создавать с помощью функции, которая будет помещать элементы в определенные позиции, а не только в конец списка. Показанная ниже функция dls_store() создает список, упорядочивая его по возрастанию имен
Поскольку первый и последний элементы списка могут меняться, функция dls_store() автоматически обновляет указатели на начало и конец списка посредством параметров start и last. При вызове функции необходимо передавать указатель на сохраняемые данные и указатели на указатели на первый и последний элементы списка. В первый раз параметры start и last должны быть равны нулю (NULL).
Как и в односвязных списках, для получения элемента данных двусвязного списка необходимо переходить по ссылкам до тех пор, пока не будет найден искомый элемент.
При удалении элемента двусвязного списка могут возникнуть три случая: удаление первого элемента, удаление элемента из середины и удаление последнего элемента. На рис. 22.7 показано, как при этом изменяются ссылки. Показанная ниже функция dldelete() удаляет элемент двусвязного списка
31.Базовый алгоритм численного интегрирования методом прямоугольников.
Задача численного интегрирования состоит в замене исходной подинтегральной функции f(x), для которой трудно или невозможно записать первообразную в аналитике, некоторой аппроксимирующей функцией φ(x). Такой функцией обычно является полином (кусочный полином)
Обзор методов интегрирования.
Методы вычисления однократных интегралов называются квадратурными (для кратных интегралов – кубатурными).
Методы Ньютона-Котеса. Здесь φ(x) – полином различных степеней. Сюда относятся метод прямоугольников, трапеций, Симпсона.
Методы статистических испытаний (методы Монте-Карло). Здесь узлы сетки для квадратурного или кубатурного интегрирования выбираются с помощью датчика случайных чисел, ответ носит вероятностный характер. В основном применяются для вычисления кратных интегралов.
Сплайновые методы. Здесь φ(x) – кусочный полином с условиями связи между отдельными полиномами посредством системы коэффициентов.
Методы наивысшей алгебраической точности. Обеспечивают оптимальную расстановку узлов сетки интегрирования и выбор весовых коэффициентов ρ(x) в задаче . Сюда относится метод Гаусса-Кристоффеля (вычисление несобственных интегралов) и метод Маркова.
Различают метод левых, правых и средних прямоугольников. Суть метода ясна из рисунка. На каждом шаге интегрирования функция аппроксимируется полиномом нулевой степени – отрезком, параллельным оси абсцисс.