|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Технология сборки библиотеки
Библиотека пользователя, как и любая стандартная библиотека языка С и С++, собирается из двух видов файлов: заголовочного файла и файла с кодами функций. Заголовочный файл (иногда головной файл, англ. header file), или подключаемый файл, в языках программирования С и C++ - это файл с расширением.h. Заголовочный файл в общем случае может содержать любые конструкции языка программирования, но на практике в него помещают объявления идентификаторов, которые должны быть объявлены более чем в одном файле вашей программы, объявления структур, прототипы функций, перечисления, макросы препроцессора. Основная цель использования заголовочных файлов — вынесение описания нестандартных типов и функций за пределы основного файла с кодом. Заголовочный файл используется путём включения его текста в использующий его файл директивой препроцессора #include. Чтобы избежать повторного включения одного и того же кода, используются директивы #ifndef, #define, #endif. На этом же принципе построены стандартные библиотеки языка С и С++: в заголовочном файле перечисляются содержащиеся в библиотеке функции и используемые ею структуры/типы. При этом исходный текст библиотеки может находиться отдельно от текста программы, использующей функции библиотеки или вообще быть недоступным. Пусть создаваемая нами библиотека состоит из заголовочного файла mylib.h и файла mylib.cpp. В заголовочном файле mylib.h содержатся прототипы функций, которые описаны в данном параграфе. Перечислим все эти функции: · maximum(). Находит и возвращает наибольшее из двух чисел. · Form_matrix(). Заполняет матрицу, адрес которой передается ей в качестве параметра, случайными числами. · ST(). Возводит любое число в степень n. · Z(). Меняет значение переданного ей параметра на случайное число. · Sum(). Вычисляет среднее арифметическое вектора, адрес и размер которого передаются в качестве параметров. · Product(). Вычисляет произведение двух матриц, адреса и размеры которых передаются в качестве параметров. Возвращает матрицу соответствующего размера. · SM().Безтиповая функция вычисляет симметричную матрицу из исходной матрицы. · PK(). Безтиповая функция переводит декартовые координаты точки в полярные. · CP(). Типизированная функция для подсчета количества положительных элементов в любой матрице. · Mod_Otk(). Типизированная функция находит максимальный компонент и среднее значение в любом массиве. · fact(). Рекурсивная функция вычисляет факториал числа n.
Текст файла mylib.h: #ifndef MYLIB_H // если MYLIB_H еще не определили, то определяем #define MYLIB_H const nmax = 50; // максимальная размерность матрицы int maximum(int a, int b);//прототип функции maximum void Form_matrix(int A[][M], int m, int n); /*прототип функции Form_matrix */ float ST(float x, int n); //прототип функции ST void Z (int у); //прототип функции Z void Z (int *у); //прототип функции Z int Sum (int A[], int N); // прототип функции Sum void product(int А[][nmax], int В[][nmax],int С[][nmax], int m, int n, int k); //прототип функции product void SM(float Y[4][4], int n, float X[4][4]); /*прототип функции SM */ void PK(float a, float b, float *ro, float *fi); /*прототип функции PK */ int CP(float D[7][7], int m, int n); //прототип функции CP float Mod_Otk(float *a, int n); //прототип функции Mod_Otk float fact(int N); //прототип функции fact #endif /* MYLIB_H */
Файл mylib.cpp является созданной нами библиотекой, в которой содержатся реализации всех перечисленных выше функций. В целях экономии текст файла mylib.cppприведем не полностью. Текст файла mylib.cpp: #include "stdafx.h" #include "stdlib.h" { int Sum (int A[], int N) //заголовок функции Sum { int i, sum; //локальные переменные sum = 0; for (i = 0; i < N; i ++) sum += A[i]; return sum/N; //возвращаемое значение } void product(int А[][nmax], int В[][nmax],int С[][nmax], int m, int n, int k) //заголовок функции product { for (int i=0; i< m; i++) { С[i][j] + = А[i][l]*В[l][j]; float fact(int N) //рекурсивная функция вычисления факториала числа N { if (N==0) return 1; Else return (fact(N-1)*N); … } Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.) |