Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Технологии программирования. Учебно-методическое пособие для СПО

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
программирования разбивается на небольшие более простые подзадачи,
решение которых выполняется в виде отдельных модулей. Манипулирование
объектными файлами, получаемыми в результате компиляции этих модулей,
облегчается, если организовать их в виде библиотек. Поэтому при разработке
программных проектов, состоящих из большого числа модулей, целесообразно
пользоваться библиотеками . Каждая такая библиотека обычно может быть
включена в проект с помощью средств поддержки проекта.
Особенностью использования библиотек является тот факт, что
компоновщик будет обращаться к библиотеке и выбирать оттуда необходимые
функции только по мере необходимости, то есть, если имеются ссылки к
функциям библиотечного модуля.
Следует помнить, что модуль будет выбран из библиотеки и подключен к
программе всегда целиком, даже если на самом деле программе требуется всего
лишь одна функция.
Библиотека пользователя, как и любая стандартная библиотека языка С и
С++, собирается из двух видов файлов: заголовочного файла и файла с кодами
функций.
Заголовочный файл (иногда головной файл, англ. header file), или
подключаемый файл, в языках программирования С и C++ - это файл с
расширением .h. Заголовочный файл в общем случае может содержать любые
конструкции языка программирования, но на практике в него помещают
объявления идентификаторов, которые должны быть объявлены более чем в
одном файле вашей программы, объявления структур, прототипы функций,
перечисления, макросы препроцессора. Основная цель использования
заголовочных файлов — вынесение описания нестандартных типов и функций
за пределы основного файла с кодом. Заголовочный файл используется путём
включения его текста в использующий его файл директивой препроцессора
#include. Чтобы избежать повторного включения одного и того же кода,
используются директивы #ifndef, #define, #endif.
31
На этом же принципе построены стандартные библиотеки языка С и С++, в
заголовочном файле перечисляются содержащиеся в библиотеке функции и
используемые ею структуры/типы. При этом исходный текст библиотеки
может находиться отдельно от текста программы, использующей функции
библиотеки или вообще быть недоступным.
Пусть создаваемая нами библиотека состоит из заголовочного файла
mylib.h и файла mylib.cpp. В заголовочном файле mylib.h содержатся прототипы функций, которые
описаны в данном параграфе. Перечислим все эти функции:
maximum(). Находит и возвращает наибольшее из двух чисел. Form_matrix(). Заполняет матрицу, адрес которой передается ей в
качестве параметра, случайными числами.
ST(). Возводит любое число в степень n. Z(). Меняет значение переданного ей параметра на случайное число. Sum(). Вычисляет среднее арифметическое вектора, адрес и размер
которого передаются в качестве параметров.
Product(). Вычисляет произведение двух матриц, адреса и размеры
которых передаются в качестве параметров. Возвращает матрицу
соответствующего размера.
SM(). Безтиповая функция вычисляет симметричную матрицу из
исходной матрицы.
PK(). Безтиповая функция переводит декартовые координаты точки в
полярные.
CP().Типизированная функция для подсчета количества
положительных элементов в любой матрице.
Mod_Otk(). Типизированная функция находит максимальный
компонент и среднее значение в любом массиве.
fact(). Рекурсивная функция вычисляет факториал числа n.
32
Текст файла 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
{
33
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
{
/* m - число строк в матрице А;
n - число строк в матрице В и число столбцов в матрице А; k - число столбцов в матрице В. */
for (int i=0; i< m; i++) for (int j=0; j< k; j++) { С[i][j]=0; for (int l=0; l< n; l++) С[i][j] + = А[i][l]*В[l][j]; } }
float fact(int N) //рекурсивная функция вычисления факториала числа N
{ if (N==0) return 1; else return (fact(N-1)*N);
}
Текст файла, использующего созданную библиотеку:
#include "mylib.h"//подключение заголовочного файла библиотеки mylib // главная функция выполняет основную работу программы
int main() { int a[nMax][nMax],b[nMax][nMax]; //объявление матриц SM(a);//вызов функции SM для обработки матрицы a // здесь могут быть обращения к другим функциям библиотеки
return 0; }
34
Содержание отчета
1. Номер, тема и цель занятия
2. Задание к практическому занятию.
3. Схема алгоритма.
4. Программа на языке Си.
5. Результаты решения.
Показать отчет преподавателю.
Контрольные вопросы
1. Типы функции в языке С/С++.
2. Структура функции, определенной пользователем.
3. Отличие типовой функции от бестиповой функции.
4. Типы параметров функции.
5. Глобальные и локальные идентификаторы.
35
Занятие № 5
Введение в объектно-ориентированное программирование.
Простые классы
Цель работы: ознакомиться с понятиями класса и объекта, научиться
создавать простые классы, их поля и методы.
Методические указания к практическому занятию:
Для примера создадим класс Student, который имеет четыре поля с модификатором доступа private, доступных извне через public методы изменения и получения значений полей.
Описание класса Student:
//Имякласса
сlass Student {
//Поля класса
private:
String FIO;
char gender; int age; double average;
//Конструктор (инициализация)
public:
Student (String F, char g, int ag, double av) {
FIO=F; gender=g; age=ag; average=av;
}
//Метод для вывода информации о студенте в консоль
void outputTo() {
36
//Здесь команды вывода значений всех полей объекта на экран cout<<"ФИО студента"<<FIO<<”\n”; } //Метод для получения значения ФИО студента String get_FIO( ) { return FIO; } //Метод для изменения значения ФИО студента void set_FIO(String f) { FIO=f; } //Метод для получения значения возраста студента int get_Age( ) { return age; } //Метод для изменения значения возраста студента void set_Age(int ag) { age=ag; } //Метод для получения значения среднего балла студента double get_Average() { return average; } //Метод для изменения значения среднего балла студента void set_Average(double av) { average=av; }
37
}
Пример реализации метода main():
public static void main(String[] args) {
Student *Ivanov = new Student("Иванов Василий Петрович",'m',21, 4.6); Student *Petrov = new Student("Петров Николай Романович", 'm',19, 3.6);
Petrov->outputTo(); Ivanov->outputTo();
Petrov->set_Age(Petrov->get_Age()+ 1); Ivanov->set_Average(3.8);
cout<<"Возраст Петрова "<<Petrov->get_Age()<<”\n”; cout<<"Возраст Иванова "<<Ivanov->get_Age();
Petrov->outputTo(); Ivanov->outputTo(); }
Результат работы: ФИО студента Петров Николай Романович Пол студента m Возраст студента 19 Средний балл студента 3.6 ФИО студента Иванов Василий Петрович Пол студента m Возраст студента 21
38
Средний балл студента 4.6 Возраст Петрова 20 Возраст Иванова 21 ФИО студента Петров Николай Романович Пол студента m Возраст студента 20 Средний балл студента 3.6 ФИО студента Иванов Василий Петрович Пол студента m Возраст студента 21 Средний балл студента 3.8
Задание:
Создать собственный класс согласно варианту задания. Создаваемый класс
должен содержать несколько полей (по выбору студента), типы которых
соответствуют варианту задания (можете ввести дополнительные поля),
конструктор для инициализации значений полей объекта, методы для
изменения значений полей объекта и для получения этих значений, кроме того
метод для вывода всей имеющейся информации об объекте.
Метод main() должен демонстрировать работу всех методов объекта и значения всех полей до и после изменения.
Порядок выполнения работы:
1. Запустить инструментальную среду Visual Studio.
2. Создать новый проект.
3. В проекте создать класс, содержащий:
несколько полей в соответствии с вариантом задания; конструктор; методы для изменения значений полей объекта; методы для получения значений полей объекта;
39
метод для вывода в консоль значений полей объекта;
Варианта
Суперкласс
Поля
01
Компьютерная техника
Процессор, Объем оперативной памяти
02
Мобильное устройство
Тип устройства, Операционная система
03
Коммуникационное
устройство
Производитель,
Задержка обработки
информации
04
Компилятор
Производитель, Вид компиляции
05
Фирма-производитель
Страна, Тип оборудования
06
Оператор сотовой связи
Торговая марка, Количество абонентов в России
07
Операционная система
Торговая марка, Тип устройства
08
Среда разработки ПО
Торговая марка Производитель, Последняя версия
09
Вуз Новосибирска
Название Дата основания Количество студентов
метод main();
4. Скомпилировать проект.
5. Запустить задачу на выполнение.
6. Оценить результаты работы.
7. Оформить отчет по занятию.
8. Сдать и защитить работу.
Варианты задания:
40
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]