Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Статически и динамически подключаемые библиотеки.Содержание книги
Поиск на нашем сайте
Цель работы: отработка умений и навыков создания и правильного подключения статических и динамических библиотек при проектировании программ на С/С++: ü создание модулей библиотек с использованием классов (2 часа); ü статическое и динамическое подключение библиотек (2 часа). Теория: Множественные заголовочные файлы. Файлы как модули. Стиль разбиения программы с одним заголовочным файлом наиболее пригоден в тех случаях, когда программа невелика и ее части не предполагается использовать отдельно. В случае объемной программы имеет смысл для каждой ее логической части создать свой заголовочный файл, в котором определяются предоставляемые этой частью средства. Тогда каждый логически законченный файл.cрр будет имеет соответствующий ему заголовочный файл.h. Необходимое количество заголовочных файлов зависит от многих факторов: как много классов и функций используется в вашей программе, одновременное ли их использование предполагается, например библиотечные файлы. Во многом на этот вопрос оказывает влияние комфорт в процессе программирования. Например, если в вашем редакторе нет средств, позволяющих одновременно открывать несколько файлов, использование большого их числа становится менее привлекательным. Аналогично, если открывание и чтение 10 файлов по 50 строк в каждом требует заметно больше времени, чем чтение одного файла в 500 строк, вы можете дважды подумать, прежде чем использовать в небольшом проекте стиль множественных заголовочных файлов. Однако, набор из десяти заголовочных файлов плюс стандартные заголовочные файлы обычно легче поддаются управлению. С другой стороны, если вы разбили описания в большой программе на логически минимальные по размеру заголовочные файлы (помещая каждое описание структуры в свой отдельный файл и т.д.), у вас легко может получиться неразбериха из сотен файлов. Скорее всего, необходима систематизация используемых классов и функций по решению ими поставленных задач. Логически обособленную задачу и выделяют в отдельный заголовочный файл. В рассматриваемых программах файл.h обычно служит интерфейсом для других ее частей, а файл.cрр – задает его реализацию. Такой объект часто называют модулем. Доступными делаются только те имена, которые необходимо знать пользователю, остальные скрыты. Это качество часто называют скрытием данных, хотя данные - лишь часть того, что может быть скрыто. Модули такого вида обеспечивают большую гибкость. Например, реализация может состоять из одного или более.c файлов, а в виде.h файлов может быть предоставлено несколько интерфейсов. Информация, которую пользователю знать не обязательно, искусно скрыта в *.c файлах.
Области действия данных Заголовочные файлы позволяют программисту определить явный интерфейс для обеспечения согласованного использования типов данных в программе. В отсутствие заголовочного файла идентификация переменных и функций определяется с помощью четырех спецификаций класса памяти: auto, register, extern и static (см. лекцию). Как создать библиотеку В качестве примера рассмотрим случай, когда необходимо задать (обычным способом) набор математических функций для некоторого неопределенного множества пользователей. Заголовочный файл мог бы выглядеть примерно так: extern double sqr(double); // подмножество extern double sin(double); extern double cos(double); extern double exp(double); extern double log(double); а определения этих функций хранились бы соответственно в файлах sqrt.c, sin.c, cos.c, exp.c и log.c. Можно создать библиотеку с именем mat.h (см. лекцию biblio.pdf):
Задание. 1. В "Практическом руководстве по методам вычислений с приложением программ для ПК" Ракитин В.И., Первушин В.Е. –М.: Высш.шк., 1998. -383с.; даны примеры решений задач вычислительной математики численными методами. Приложение с программами на разных языках программирования находятся в папке с лабораторной работой (Rakitin_Pervushin.pdf); 2. Необходимо переписать программы (2-3 шт. см. вариант) с применением объектно-ориентированного программирования, создав один или несколько классов, отделяя интерфейс от реализации (лаб.4); 3. Объединить созданные программы в библиотеку (статическую и динамическую); 4. Написать программу, реализующую использование одной программы из созданной библиотеки. Библиотеку подключить статически и динамически. Определить размер запускаемого файла.
Варианты заданий.
ü методом Гаусса ü методом итераций
ü методом половинного деления ü методом итераций
ü по ее определению ü с одинаковым порядком аппроксимации по шагу h
ü первого порядка методами Эйлера, Эйлера-Коши и Рунге-Кутта ü системы дифференциальных уравнений методом Рунге-Кутта
ü по квадратурным формулам прямоугольников, трапеций и Симпсона ü методом двойного пересчета по формуле Симпсона
ü методом половинного деления ü методом золотого сечения ü методом сканирования
ü методом покоординатного спуска ü методом скорейшего спуска
Контрольные вопросы.
%gcc –o app –L. ltest app.o компоновщик выдал ошибку app.o: In function 'main'; app.o(.text+0x4): undefined reference to 'f' collect2: ld returned 1 exit status Какую операцию пытались выполнить, в чем заключается ошибка?
Лабораторная работа 6 Наследование и полиморфизм Цель работы: отработка умений и навыков работы с механизмом наследования классов. Задания В лабораторной работе 2 вы создали и отладили работу некоторого класса. Неотъемлемыми принципами объектно-ориентированного программирования являются наследование и полиморфизм. В данной работе вам предложено создать класс – наследник, и, где это необходимо, перегрузить методы класса – родителя, предав новому классу новую функциональность. см. лекцию lek4-6.pdf В случае если непонятна формулировка вопроса, выполняйте задание так, как вы его понимаете, но предварительно объясните, как вы поняли задание, то есть сформулируйте ваше понимание данного задания.
Замечание: нормирование необходимо производить после любого изменения составляющих вектора. Соответственно необходимо перегрузить метод доступа к компонентам вектора.
Замечание: для упрощения пусть матрица будет размерностью до 3х3. Нормирование матрицы необходимо производить после любого изменения составляющих. Соответственно необходимо перегрузить метод доступа к ее компонентам.
Замечание: сортировку массива необходимо производить после любого изменения его составляющих. Соответственно необходимо перегрузить метод доступа к его компонентам.
Комментарии
Комментарий 1. Четырехкомпонентный вектор является представлением трехмерной точки в памяти компьютера, причем первые три компоненты являются координатами x,y,z точки, а четвертая компонента равна 1: Матрица 4х4 – матрица преобразования координат точки в пространстве. Любое движение (то есть преобразование пространства, сохраняющее расстояние между точками) в трехмерном пространстве, согласно теореме Шаля, может быть представлено в виде суперпозиции поворота и параллельного переноса, то есть последовательного выполнения поворота и параллельного переноса.
Перенос точки в пространстве осуществляется умножением матрицы на четырехкомпонентный вектор, где dx, dy, dz – расстояние переноса по каждой из осей. Поворот точки относительно оси OZ на угол alpha осуществляется умножением на матрицу . Поворот точки относительно оси OX на угол alpha осуществляется умножением на матрицу . Масштабирование осуществляется умножением на матрицу , где kx, ky, kz – коэффициенты масштабирования по соответствующим осям. В процессе манипуляции над вектором значение последней составляющей может измениться, поэтому после каждого изменения вектора необходимо производить его нормализацию. Комментарий 2. Для варианта №5. Реализовать функцию шифрования можно очень простую, здесь от вас не требуется создавать мощные криптостойкие алгоритмы, а сделать простенький алгоритм шифрования. Один из вариантов реализации такого алгоритма: 1. начальная инициализация 2. пусть k – строка ключа, n = длина ключа, i=0 3. 4. процедура записи в файл 5. пусть s = входная цепочка, m = длина входной цепочки 6. пусть j=0 7. пока j<m делаем 8. запишем в файл k[i] xor s[j] 9. i++, j++ 10. если i==n тогда пусть i=0 11. конец пока 12. конец процедуры 13. 14. процедура чтения из файла 15. пусть s = выходная цепочка, m = длина выходной цепочки 16. пусть j=0 17. пока j<m делаем 18. считаем из файла символ ch 19. s[j] = k[i] xor ch 20. i++, j++ 21. если i==n тогда пусть i=0 22. конец пока 23. конец процедуры
Такой алгоритм называется симметричным – один и тот же ключ используется и для шифрования и для дешифровки данных, более того, в данном случае для этого используется даже один и тот же алгоритм. При реализации такого класса не надо забывать про начальную инициализацию, она должна производиться ровно один раз при открытии файла (на чтение или на запись).
Контрольные вопросы. Заполните пробелы: 1. Если класс Alpha наследует свойства классу Beta, то класс Alpha называется __?__ классом, а класс Beta – __?__ классом. 2. Наследование предполагает возможность __?__, что экономит время разработки и способствует использованию проверенного и высококачественного программного обеспечения. 3. Объект __?__ класса можно рассматривать как объект соответствующего ему __?__ класса. 4. Для преобразования типа указателя базового класса в тип производного класса, должно быть использовано __?__, потому что компилятор считает такую операцию опасной. 5. Существуют три спецификатора доступа к элементу: __?__, __?__ и __?__. Какие функции они выполняют? 6. При порождении класса от базового класса открытым наследованием открытые элементы базового класса становятся __?__ элементами производного класса, а защищенные элементы базового класса становятся __?__ элементами производного класса. 7. При порождении класса от базового класса защищенным наследованием открытые элементы базового класса становятся __?__ элементами производного класса, а защищенные элементы базового класса становятся __?__ элементами производного класса.
8. Отношение между классами "содержит" представляет __?__, а отношение "является" представляет __?__. 9. Использование наследования и полиморфизма помогает исключить логику __?__.
Лабораторная работа 7
|
||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-08-14; просмотров: 267; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.220.89.145 (0.013 с.) |