Разработка программных модулей программного обеспечения для компьютерных систем

Структурные подразделения и отделы организации, ее технические программные средства. Разработка приложений обработки данных на ассемблере, языке программирования высокого уровня. Тестирование и оптимизация программных модулей. Разработка документации.

Рубрика Программирование, компьютеры и кибернетика
Вид отчет по практике
Язык русский
Дата добавления 30.09.2022
Размер файла 175,0 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение высшего образования

«Российский экономический университет им. Г.В. Плеханова»

Техникум Пермского института (филиала)

Отчет

по производственной практике

Разработка программных модулей программного обеспечения для компьютерных систем

Новиков Егор Николаевич,

Специальность 09.02.03 Программирование в компьютерных системах

Пермь 2018

Оглавление

Введение

1. Анализ структуры организации

1.1 Структурные подразделения и отделы организации

1.2 Технические и программные средства организации

2. Разработка программных модулей

2.1 Разработка приложений обработки данных на ассемблере (задание №1)

2.2 Разработка приложений обработки данных на языке программирования высокого уровня (технология ООП) (задание №2)

2.3 Проектирование, разработка и отладка программ (задание №3)

2.4 Разработка кода программного продукта на основе готовых спецификаций на уровне модуля (задание №4)

2.5 Тестирование и оптимизация программных модулей (задание №5)

2.6 Разработка компонентов проектной и технической документации (задание №6)

Заключение

Библиографический список

Введение

Практика имеет целью комплексное освоение студентами всех видов профессиональной деятельности по специальности 09.02.03 «Программирование в компьютерных системах», формирование общих и профессиональных компетенций, а также приобретение необходимых умений и опыта практической работы по специальности.

Производственная практика направлена на формирование у обучающихся практических профессиональных умений, приобретение практического опыта, реализуется в рамках модулей ППССЗ по основным видам профессиональной деятельности для последующего освоения ими общих и профессиональных компетенций по специальности.

В настоящей работе представлен отчет о прохождении производственной практики в «Российский экономический университет имени Г.В. Плеханова» в должности программиста. Основными видами деятельности являлись: разработка спецификаций компонент программных систем, разработка кода программного продукта на основе готовых спецификаций на уровне модуля, выполнение отладки программных модулей с использованием специализированных программных средств, тестирование и оптимизацию программных модулей, разработка компонент проектной и технической документации с использованием графических языков спецификаций.

Задачи практики (освоение обучающимися профессиональных и общих компетенций):

1. Выполнять разработку спецификаций отдельных компонент

2. Осуществлять разработку кода программного продукта на основе готовых спецификаций на уровне модуля

3. Выполнять отладку программных модулей с использованием специализированных программных средств

4. Выполнять тестирование программных модулей

5. Осуществлять оптимизацию программного кода модуля

6. Разрабатывать компоненты проектной и технической документации с использованием графических языков спецификаций

7. Понимать сущность и социальную значимость своей будущей профессии, проявлять к ней устойчивый интерес

8. Организовывать собственную деятельность, выбирать типовые методы и способы выполнения профессиональных задач, оценивать их эффективность и качество

9. Принимать решения в стандартных и нестандартных ситуациях и нести за них ответственность

10. Осуществлять поиск и использование информации, необходимой для эффективного выполнения профессиональных задач, профессионального и личностного развития

11. Использовать информационно-коммуникационные технологии в профессиональной деятельности

12. Работать в коллективе и в команде, эффективно общаться с коллегами, руководством, потребителями

13. Брать на себя ответственность за работу членов команды (подчиненных), за результат выполнения заданий

14. Самостоятельно определять задачи профессионального и личностного развития, заниматься самообразованием, осознанно планировать повышение квалификации

15. Ориентироваться в условиях частой смены технологий в профессиональной деятельности

1. Анализ структуры организации

1.1 Структурные подразделения и отделы организации

Федеральное государственное бюджетное образовательное учреждение высшего образования «Российский экономический университет имени Г.В. Плеханова» - один из крупнейших экономических вузов России. Старейшее высшее образовательное учреждение экономического профиля в России. Входит в пятерку лучших вузов страны, в топ-10 московских вузов с самым высоким проходным баллом по итогам приема 2014 года, а также в топ-100 лучших вузов стран BRICS по версии международного рейтингового агентства QS. Согласно рейтингу «Эксперт РА», занимает 4 место по числу выпускников в составе правления крупнейших компаний России.

Техникум Пермского института (филиала) - структурное подразделение ведущего вуза Пермского края, выпускающего конкурентоспособных, квалифицированных специалистов для работы в сфере потребительского рынка. По окончании обучения выдается диплом базового уровня государственного образца. Место нахождения Пермского института (филиала) РЭУ имени Г.В. Плеханова: г. Пермь, бульвар Гагарина, 57. Директор: Елена Валентиновна Гордеева. Лицензия на право ведения образовательной деятельности №1789 от 30 ноября 2015 года

Штат отдела ИТО состоит из 4 человек, включая руководителя Бузмакова Д.В. (рис. 1).

Рис. 1. Структура отдела ИТО

1.2 Технические и программные средства организации

В рамках практики был проведен анализ имеющейся технической базы предприятия. Ниже приведено описание типового компьютера предприятия:

· CPU: Intel Celeron G1610 @ 2.60GHz

· Материнская плата: Gigabyte H61N-D2V

· Тип и объем RAM: DDR3 4ГБ

· Графическая карта: Intel HD Graphics

· Сетевая карта: Realtek PCIe GBE Family Controller

· Звуковая карта: Realtek High Definition Audio

· Операционная система: Windows 7 SP1 Enterprise

Периферийные устройства ввода-вывода:

· Принтеры марки HP. Пример: HP LaserJet 1018 - настольный лазерный принтер

· Клавиатуры и мыши разных производителей спецификация: офисная. Пример: Клавиатура ASUS P2000: Интерфейс: PS/2 Тип: классическая (104 клавиши). Пример: Мышь Genius 050009P - светодиодная двухкнопочная мышь с колесом

· Мониторы ViewSonic VA1911A. Монитор ViewSonic® VA1911a-LED является экологичным 19-дюймовым (видимая область 18,5 дюйма) широкоэкранным монитором со светодиодной подсветкой, который позволяет экономить до 40% электроэнергии*. Разрешение: 1366x768 (16:9)

· Коммутаторы марки D-Link

В рамках практики был проведен анализ имеющегося ПО организации. На предприятии используются различные ОС начиная с Windows XP и заканчивая Windows 7 (клиентские) и серверные Windows: Server 2000,2003, 2008R2, 2012, Linux: Debian.

Программное обеспечение учебного процесса:

· Visual Studio 2008-20015 - линейка продуктов компании Microsoft, включающих интегрированную среду разработки программного обеспечения и ряд других инструментальных средств.

· Microsoft Office 2007-2013 - офисный пакет приложений, созданных корпорацией Microsoft для операционных систем Microsoft Windows, Windows Phone, Android, OS X, iOS. В состав этого пакета входит программное обеспечение для работы с различными типами документов: текстами, электронными таблицами, базами данных и других [10].

· Google Chrome - браузер, разрабатываемый компанией Google на основе свободного браузера Chromium и движка Blink[11]

· Mozilla Firefox - свободный браузер на движке Gecko, разработкой и распространением которого занимается Mozilla Corporation. Третий по популярности браузер в мире и первый среди свободного ПО[12]

· Oracle VM Virtual Box - программный продукт виртуализации для операционных систем Microsoft Windows, Linux, FreeBSD, Mac OS X, Solaris/OpenSolaris, ReactOS, DOS и других [13].

· Pascal ABC.NET - это язык программирования Паскаль нового поколения, включающий классический Паскаль, большинство возможностей языка Delphi, а также ряд собственных расширений. Он реализован на платформе Microsoft.NET и содержит все современные языковые средства: классы, перегрузку операций, интерфейсы, обработку исключений, обобщенные классы и подпрограммы, сборку мусора, лямбда-выражения, средства параллельного программирования. PascalABC.NET является мультипарадигменным языком: на нём можно программировать в структурном, объектно-ориентированном и функциональном стилях. [14]

· Notepad++ - свободный текстовый редактор с открытым исходным кодом для Windows с подсветкой синтаксиса большого количества языков программирования и разметки. Поддерживает открытие более 100 форматов [15].

Программное обеспечение рабочего процесса:

· ПЛАНЫ СПО (Лаборатория ММИС) - Информационная система «Планы СПО» предназначена для комплексного автоматизированного планирования учебного процесса в учреждениях среднего профессионального образования [16].

· 1С (Бух учет, заявки ИТО) - собирательное название бухгалтерских продуктов фирмы «1С», относящееся к некоторым конфигурациям на платформе 1С: Предприятие версий 7.7 и 8. «1С: Бухгалтерия» - одно из самых популярных решений для автоматизации бухгалтерского учёта в СНГ [17].

2. Разработка программных модулей

В данной главе представлены результаты практической работы в должности программиста. Была выполнена реализация всех заданий практики.

2.1 Разработка приложений обработки данных на ассемблере (задание №1)

Задание выполнено в среде c++. Ниже приведен программный код:

#include «pch.h»

#include <iostream>

using namespace std;

int main()

{

int a, b, c, k;

k = 0;

cin >> a;

cin >> b;

cin >> c;

if (a < 0) k++;

if (b < 0) k++;

if (c < 0) k++;

cout << k << endl;

system («pause»);

return 0;

}

2.2 Разработка приложений обработки данных на языке программирования высокого уровня (технология ООП) (задание №2)

Задание выполнено в среде _____. Ниже приведен программный код:

#include <iostream>

#include <fstream>

#include <ctime>

#include <cmath>

#include<locale>

#include <string>

#include <vector>

using namespace std;

class Medicine

{

std:vector<std:string> Vprerp_name;

std:string bufferPN;

unsigned int vector_size;

string s;

public:

void set()

{

ofstream outfile («Medecine.txt»);

int x;

do {

cout << «Введите название препарата»;

std:getline (cin, bufferPN);

if (bufferPN.size() > 0) {

 // Добавление элемента в конец вектора

Vprerp_name.push_back(bufferPN);

}

} while (bufferPN!= «end»);

 // Сохраняем количество элементов вектора

vector_size = Vprerp_name.size();

 // Вывод заполненного вектора на экран

std:cout << «Список лекарств:» << std:endl;

for (int i = 0; i < vector_size; i++) {

std:cout << «Препарат №» << i + 1 << Vprerp_name[i] << std:endl;

outfile << Vprerp_name[i] << std:endl;

}

outfile.close();

}

string getPreN (std:vector<std:string> Vprerp_name, int i)

{

return Vprerp_name[i];

}

void show()

{

ifstream file («Medecine.txt»);

cout << «Список лекарств» << endl;

while (! file.eof())

{

file >> s;

Vprerp_name.push_back(s);

cout << s << endl;

}

file.close();

}

void rep()

{

ifstream file («Medecine.txt»);

cout << «Список лекарств» << endl;

while (! file.eof())

{

file >> s;

Vprerp_name.push_back(s);

cout << s << endl;

}

file.close();

int i;

FILE *f = fopen («Consolidation.txt», «a»);

ofstream repfile(f);

cout << «Введите номер лекарства:»;

cin >> i;

cout << «Лекарство» << Vprerp_name[i] << endl;

repfile << «Лекарство» << Vprerp_name[i] << endl;

}

};

class Providers

{

std:vector<std:string> Vprov_name;

std:string bufferPR;

unsigned int vector_size;

string s;

public:

Ниже приведена диаграмма классов, как компонент проектной документации: … // Комментарий: рисуем для своей задачи

программирование ассемблер приложение

2.3 Проектирование, разработка и отладка программ (задание №3)

Задание выполнено в среде с++. Ниже приведен программный код и изображение визуального приложения:

Файл Form1.h

#include «pch.h»

#include <iostream>

#include <map>

#include <string>

using namespace std;

int main()

{

map<string, int> dict;

dict.insert (make_pair («January», 31));

dict.insert (make_pair («February», 28));

dict.insert (make_pair («March», 31));

dict.insert (make_pair («April», 30));

dict.insert (make_pair («May», 31));

dict.insert (make_pair («June», 30));

dict.insert (make_pair («July», 31));

dict.insert (make_pair («August», 31));

dict.insert (make_pair («September», 30));

dict.insert (make_pair («October», 31));

dict.insert (make_pair («November», 30));

dict.insert (make_pair («December», 31));

for (auto i = dict.begin(); i!= dict.end(); i++)

{

if ((*i).second == 30)

{

cout << (*i).first <<»:» << (*i).second << endl;

}

}

cout << «Month of summer:» << endl;

for (auto i = dict.begin(); i!= dict.end(); i++)

{

if ((*i).first == «June» || (*i).first == «July» || (*i).first == «August»)

{

cout << (*i).first << endl;

}

}

cout << «Month of winter:» << endl;

for (auto i = dict.begin(); i!= dict.end(); i++)

{

if ((*i).first == «December» || (*i).first == «January» || (*i).first == «February»)

{

cout << (*i).first << endl;

}

}

system («pause»);

return 0;

}

2.4 Разработка кода программного продукта на основе готовых спецификаций на уровне модуля (задание №4)

Задание выполнено в среде c++(матрица). Ниже приведен программный код:

#include <vcl.h>

#include <iostream>

#include <cmath>

using namespace std;

#pragma hdrstop

static bool error = false;

class Matrix

{

public:

int row;

int column;

double **matrix;

Matrix (int r, int c)

{

this->row = r;

this->column = c;

matrix = new double*[r];

for (int i = 0; i <= c; i++) matrix[i] = new double[c];

}

void matrixGiveValues()

{

for (int i = 0; i < this->row; i++) for (int j = 0; j < this->column; j++) this->matrix[i] [j] = 1 + rand()%(100-1);

}

friend ostream &operator<<(ostream &os, const Matrix &matrix);

friend istream &operator>>(istream &stream, Matrix &matrix);

bool operator == (Matrix matrix)

{

if (this->row == matrix.row && this->column == matrix.column)

{

for (int i = 0; i < matrix.row; i++)

{

for (int j = 0; j < matrix.column; j++)

{

if (this->matrix[i] [j]!= matrix.matrix[i] [j]) return false;

}

}

return true;

}

else return false;

} bool operator!= (Matrix matrix)

{

if (this->row == matrix.row && this->column == matrix.column)

{

for (int i = 0; i < matrix.row; i++)

{

for (int j = 0; j < matrix.column; j++)

{

if (this->matrix[i] [j]!= matrix.matrix[i] [j]) return true;

}

}

return false;

}

else return true;

}

Matrix operator + (Matrix matrix)

{

Matrix new_matrix (matrix.row, matrix.column);

if (this->row == matrix.row && this->column == matrix.column)

{

for (int i = 0; i < matrix.row; i++)

{

for (int j = 0; j < matrix.column; j++)

{

new_matrix.matrix[i] [j] = this->matrix[i] [j] + matrix.matrix[i] [j];

}

}

return new_matrix;

}

else

{

cout << «Error: first arrays count not equal second arras count» << endl;

error = true;

return new_matrix;

}

}

Matrix operator += (Matrix &matrix)

{

if (this->row == matrix.row && this->column == matrix.column)

{

for (int i = 0; i < matrix.row; i++)

{

for (int j = 0; j < matrix.column; j++)

{

this->matrix[i] [j] = this->matrix[i] [j] + matrix.matrix[i] [j];

}

}

return *this;

}

else

{

cout << «Error: first arrays count not equal second arras count» << endl;

error = true;

return *this;

}

}

Matrix operator - (Matrix matrix)

{

Matrix new_matrix (matrix.row, matrix.column);

if (this->row == matrix.row && this->column == matrix.column)

{

for (int i = 0; i < this->row; i++)

{

for (int j = 0; j < this->column; j++)

{

new_matrix.matrix[i] [j] = this->matrix[i] [j] - matrix.matrix[i] [j];

}

}

return new_matrix;

}

else

{

cout << «Error: first arrays count not equal second arras count» << endl;

error = true;

return new_matrix;

}

}

Matrix operator -= (Matrix &matrix)

{

if (this->row == matrix.row && this->column == matrix.column)

{

for (int i = 0; i < matrix.row; i++)

{

for (int j = 0; j < matrix.column; j++)

{

this->matrix[i] [j] = this->matrix[i] [j] - matrix.matrix[i] [j];

}

}

return *this;

}

else

{

cout << «Error: first arrays count not equal second arras count» << endl;

error = true;

return *this;

}

}

Matrix operator * (Matrix matrix)

{

Matrix new_matrix (this->row, matrix.column);

if (this->column == matrix.row)

{

for (int i = 0; i < this->row; i++)

{

for (int j = 0; j < matrix.column; j++)

{

double sum = 0;

for (int r = 0; r < this->column; r++)

{

sum += this->matrix[i] [r] * matrix.matrix[r] [j];

}

new_matrix.matrix[i] [j] = sum;

}

}

return new_matrix;

}

else

{

cout << «Error: columns first array should be equal rows second array» << endl;

error = true;

return new_matrix;

}

}

Matrix operator *=(Matrix &matrix)

{

if (this->column == matrix.row)

{

for (int i = 0; i < this->row; i++)

{

for (int j = 0; j < matrix.column; j++)

{

double sum = 0;

for (int r = 0; r < this->column; r++)

{

sum += this->matrix[i] [r] * matrix.matrix[r] [j];

}

this->matrix[i] [j] = sum;

}

}

return *this;

}

else

{

cout << «Error: columns first array should be equal rows second array» << endl;

error = true;

return *this;

}

}

Matrix operator * (double value)

{

Matrix new_matrix (this->row, this->column);

for (int i = 0; i < this->row; i++)

{

for (int j = 0; j < this->column; j++)

{

new_matrix.matrix[i] [j] = this->matrix[i] [j] * value;

}

}

return new_matrix;

}

Matrix operator / (double value)

{

Matrix new_matrix (this->row, this->column);

for (int i = 0; i < this->row; i++)

{

for (int j = 0; j < this->column; j++)

{

if (value!= 0) new_matrix.matrix[i] [j] = this->matrix[i] [j] * 1/value;

else

{

cout << «Error: delenie na nol» << endl;

error = true;

return new_matrix;

}

}

}

return new_matrix;

}

Matrix operator / (Matrix matrix)

{

Matrix new_matrix (this->row, matrix.column);

if (this->column == matrix.row)

{

new_matrix = *this * matrix.obratnaya();

return new_matrix;

}

else

{

cout << «Error: columns first array should be equal rows second array» << endl;

error = true;

return new_matrix;

}

}

Matrix operator /= (Matrix &matrix)

{

if (this->column == matrix.row)

{

*this = *this * matrix.obratnaya();

return *this;

}

else

{

cout << «Error: columns first array should be equal rows second array» << endl;

error = true;

return *this;

}

}

void check()

{

int h = 0;

if (this->row == this->column)

{

int a = this->column - 1;

for (int i = 0; i < this->row; i++)

{

if(! (this->matrix[i] [a] == 0))

{

h = 1;

break;

}

a -;

}

}

else

{

h = 1;

}

if (h == 0) cout << «Matrica diagonalnaya? - true» << endl;

else cout << «Matrica diagonalnaya? - false» << endl;

h =0;

for (int i = 0; i < this->row; i++)

{

for (int j = 0; j < this->column; j++)

{

if(! (this->matrix[i] [j] == 0))

{

h = 1;

break;

}

}

}

if (h == 0) cout << «Matrica nulevaya? - true» << endl;

else cout << «Matrica nulevaya? - false» << endl;

h =0;

int h1 = 0;

if (this->row == this->column)

{

int a = this->column - 1;

for (int i = 0; i < this->row; i++)

{

if(! (this->matrix[i] [a] == 1))

{

h1 = 1;

break;

}

a -;

}

a = 0;

for (int i = 0; i < this->row; i++)

{

if(! (this->matrix[i] [a] == 1))

{

h = 1;

break;

}

a++;

}

}

else

{

h = 1;

}

if (h == 0 || h1 == 0) cout << «Matrica edenichnaya? - true» << endl;

else cout << «Matrica edenichnaya? - false» << endl;

if (this->row == this->column) cout << «Matrica kvadratnaya? - true» << endl;

else cout << «Matrica kvadratnaya? - false» << endl;

h = 0;

int k = 0;

int l = 1;

if (this->row == this->column)

{

for (int i = 0; i < this->row; i++)

{

for (int j = 0; j < this->column; j++)

{

if (i < j)

{

for (k; k < this->row; k++)

{

for (l; l < this->column; l++)

{

if (this->matrix[i] [k]!= this->matrix[k] [l])

{

h = 1;

break;

}

}

}

}

}

}

}

else

{

h = 1;

}

if (h == 0) cout << «Matrica simmetrichnaya? - true» << endl;

else cout << «Matrica simmetrichnaya? - false» << endl;

h = 0;

if (this->row == this->column)

{

for (int i = 0; i < this->row; i++)

{

for (int j = 0; j < this->column; j++)

{

if (i > j)

{

if (this->matrix[i] [j]!= 0)

{

h = 1;

break;

}

}

}

}

}

else

{

h = 1;

}

if (h == 0) cout << «Matrica verhnya treugolnaya? - true» << endl;

else cout << «Matrica verhnya treugolnaya? - false» << endl;

h = 0;

if (this->row == this->column)

{

for (int i = 0; i < this->row; i++)

{

for (int j = 0; j < this->column; j++)

{

if (i < j)

{

if (this->matrix[i] [j]!= 0)

{

h = 1;

break;

}

}

}

}

}

else

{

h = 1;

}

if (h == 0) cout << «Matrica nijnaya treugolnaya? - true» << endl;

else cout << «Matrica nijnaya treugolnaya? - false» << endl;

}

double determ (double** arr, int size)

{

double det = 0;

if (this->row == this->column)

{

int i;

int j;

double** matr;

if (size == 1)

{

det = arr[0] [0];

}

else if (size == 2)

{

det = arr[0] [0] * arr[1] [1] - arr[0] [1] * arr[1] [0];

}

else

{

matr = new double*[size - 1];

for (i = 0; i < size; ++i)

{

for (j = 0; j < size - 1; ++j)

{

if (j < i) matr[j] = arr[j];

else matr[j] = arr [j + 1];

}

det += pow((double) - 1, (i+j)) * determ (matr, size-1) * arr[i] [size-1];

}

delete[] matr;

}

}

return det;

}

double norma()

{

double max = 0;

for (int i = 0; i < this->row; i++)

{

double s = 0;

for (int j = 0; j < this->column; j++)

{

s += abs (this->matrix[i] [j]);

}

if (s > max) max = s;

}

return max;

}

Matrix Step (int st)

{

double **c = new double*[this->row];

for (int i = 0; i <= this->column; i++) c[i] = new double [this->column];

int k = 1;

do

{

double s = 0;

for (int i = 0; i < this->row; i++)

{

int z = 0;

while (z<this->column)

{

c[i] [z] = 0;

for (int j = 0; j < this->column; j++)

{

s = this->matrix[i] [j] * this->matrix[j] [z];

c[i] [z] += s;

}

z++;

}

}

k++;

} while (k!=st);

for (int i =0; i<this->row; i++) for (int j =0; j<this->column; j++) this->matrix[i] [j] =c[i] [j];

return *this;

}

Matrix Transp()

{

int t;

for (int i = 0; i < this->row; ++i)

{

for (int j = i; j < this->column; ++j)

{

t = this->matrix[i] [j];

this->matrix[i] [j] = this->matrix[j] [i];

this->matrix[j] [i] = t;

}

}

return *this;

}

Matrix obratnaya()

{

Matrix x (this->row, this->column);

x = this->Transp() * 1 / this->determ (this->matrix, this->row);

return x;

}

};

ostream &operator<<(ostream &os, const Matrix &matrix)

{

if(! error)

{

for (int i = 0; i < matrix.row; i++)

{

for (int j = 0; j < matrix.column; j++)

{

os << matrix.matrix[i] [j] << «»;

}

os << endl;

}

}

error = false;

return os;

}

istream &operator>>(istream &stream, Matrix &matrix)

{

cout << «Enter values for arrays [» << matrix.row <<»] [» << matrix.column <<»]:» << endl;

for (int i = 0; i < matrix.row; i++)

{

for (int j = 0; j < matrix.column; j++)

{

cout << «value [» << i <<»] [» << j <<»] =»;

stream >> matrix.matrix[i] [j];

}

}

return stream;

}

void wait()

{

char c = getchar();

system («cls»);

}

#pragma argsused

int main (int argc, char* argv[])

{

Matrix m (3, 3);

Matrix n (3, 3);

n.matrixGiveValues();

m.matrixGiveValues();

cout << «Matrica A:\n» << m;

cout << «Matrica B:\n» << n;

wait();

cout << «Slojenie matric:» << endl;

cout << m << «+\n» << n << «=\n» << m + n;

wait();

cout << «Vichitanie matric:» << endl;

cout << m << «-\n» << n << «=\n» << m - n;

wait();

cout << «Umnojenie matric:» << endl;

cout << m << «*\n» << n << «=\n» << m * n;

wait();

cout << «Umnojenie na chislo:» << endl;

cout << m << «*\n» << «5\n» << «=\n» << m * 5;

wait();

cout << «Delenie matric:» << endl;

cout << m << «/\n» << n << «=\n» << m / n;

wait();

cout << «Delenie na chislo:» << endl;

cout << m << «/\n» << «5\n» << «=\n» << m / 5;

wait();

cout << «Sravnenie:» << endl;

cout << m << «=\n» << n <<»?\n»;

if (m == n) cout << «true\n»;

else cout << «false\n»;

wait();

cout << «Sravnenie:» << endl;

cout << m <<»!=\n» << n <<»?\n»;

if (m!= n) cout << «true\n»;

else cout << «false\n»;

wait();

cout << «Obratnaya matrici:» << endl;

cout << m << «obratnaya:\n» << m.obratnaya();

wait();

cout << «Transponirovanie matrici:» << endl;

cout << m << «transponirovanie:\n»;

cout << m. Transp();

wait();

cout << «Vozvedenie v stepen:» << endl;

cout << m << «^3\n»;

cout << m. Step(3);

wait();

cout << «Determinanta matrici:» << endl;

cout << n << «determinanta:\n» << n.determ (n.matrix, n.row) << endl;

wait();

cout << «Norma matrici:» << endl;

cout << n << «norma:\n» << n.norma() << endl;

wait();

cout << n << «O matrice:» << endl;

n.check();

system («pause»);

return 0;

}

2.5 Тестирование и оптимизация программных модулей (задание №5)

Оптимизация программного кода - это модификация программы с целью улучшения отдельных характеристик без изменения функциональности. Способы: алгоритмические (ручной способ): математические методы, логические методы; машинно-зависимые (автоматический способ): ассемблерные вставки, модификация алгоритма кодогенератора компилятора

Приемы оптимизация по быстродействию:

1. Замена алгоритмов на более быстрые (часто простой алгоритм показывает низкую производительность по сравнению с более сложным)

Пример: замена пузырьковой сортировки массива на быструю сортировку

2. Хранение данных в «быстрой» памяти (нужно, чтобы интенсивно обрабатываемые блоки данных целиком умещались в КЭШ-память)

3. Разгрузка участков итераций (вынос инвариантных по результату выполнения выражений из тела цикла)

4. Анализ циклов:

· цикл с предусловием выполняется дольше (на 20-30%).

· при программировании вложенных циклов по следует делать цикл с наибольшим числом повторений самым внутренним, а цикл с наименьшим числом повторений - самым внешним.

· объединение циклов (если это возможно).

· разворот цикла

· Пример оптимизации кода с применением способа разворота цикла:

Неоптимизированный исходный цикл: for (a = 0; a < 666; a++) x+=p[a];

Цикл после четырехкратного разворота:

for (a = 0; a < 664; a+=4)

{ // округляем количество итераций

 // до величины, кратной четырем

x+=p[a]; // четырежды

x+=p [a + 1]; // дублируем

x+=p [a + 2]; // тело

x+=p [a + 3]; // цикла

}

x+=p[a]; // оставшиеся две итерации

x+=p [a + 1]; // добавляем в конец

 // цикла

5. Программирование арифметических операций (быстрые операции - сложение и вычитание, медленные - умножение, затем деление.

Пример: Выражение 2*x, быстрее произвести в виде x + x

Пример: Выражение x/a, где a - константа, производится быстрее в виде x*b, где b = 1/a - константа.

Приемы оптимизации по размеру:

1. Замена алгоритмов на более простые (следует выбирать алгоритмы обработки, не требующие дублирования исходных данных структурных типов в процессе обработки). Пример: сортировка методом «пузырька»

2. Хранение данных в «медленной» памяти (большие структуры данных можно поместить в дисковое пространство и при необходимости считывать его в память малыми частями)

3. Устранить «мертвые коды» (устранить конструкции, которые идентичны, никогда не выполняются или недоступны)

4. Создание подпрограмм (позволит избежать повторения)

2.6 Разработка компонентов проектной и технической документации (задание №6)

Задание выполнено в среде c++. Ниже приведен программный код:

#include <string>

#include <iostream>

class File

{

public:

File()

{

std:cout << «File construct was called» << std:endl;

}

File (const std:string& path): _path(path)

{

std:cout << «File overload construct was called. Path is» << _path << std:endl;

open();

}

virtual ~File()

{

if (_is_open)

close();

std:cout << «File overload construct was called. Path is» << _path << std:endl;

}

virtual bool open()

{

if (_is_open)

return true;

_is_open = true;

std:cout << «File open was called» << std:endl;

}

virtual void close()

{

_is_open = false;

std:cout << «File close was called» << std:endl;

}

std:string path() const

{

return _path;

}

virtual void read (char& c)

{

if (!_is_open)

return;

std:cout << «File read char was called» << std:endl;

}

virtual void read (std:string& str)

{

if (!_is_open)

return;

std:cout << «File read string was called» << std:endl;

}

private:

bool _is_open;

std:string _path;

};

struct MyData {int count;};

class SpecialFile: public File

{

public:

SpecialFile(): data (new MyData)

{

}

SpecialFile (const std:string& path): File(path), data (new MyData)

{

}

~SpecialFile()

{

delete data;

}

bool open()

{

bool ok = File:open();

std:cout << «SpecialFile open was called» << std:endl;

return ok;

}

void close()

{

File:close();

std:cout << «SpecialFile close was called» << std:endl;

}

void read (std:string& str)

{

File:read(str);

if (str == «special»)

data->count += 1;

std:cout << «SpecialFile read string was called» << std:endl;

}

private:

MyData *data;

};

int main()

{

File *p_file = new SpecialFile («task.in»);

std:string str;

p_file->read(str);

return 0;

}

Заключение

По итогам практики получены следующие результаты:

1. Изучена структура предприятия, выявлены структурные подразделения, использующие в своей деятельности IT-инфраструктуру

2. Реализована разработка спецификаций компонент программных систем, разработка кода программных модулей

3. Выполнена отладка программных модулей с использованием специализированных программных средств

4. Проведено тестирование и оптимизация программных модулей

5. Освоена методология разработки компонент проектной и технической документации с использованием графических языков спецификаций

По окончании практики был получен практический опыт написания программ на языках программирования низкого и высокого уровня.

Библиографический список

1. Васильев А.Н. Объектно-ориентированное программирование на С++ / А.Н. Васильев - Электрон. текстовые данные. - СПб.: Наука и Техника, 2016. - 544 c

2. ГОСТ 7.60 - 2003 СИБИД - Издания. Основные виды. Термины и определения [Текст]. - Взамен ГОСТ 7.60 -90; введ. 2004-07-01. - Москва: Межгос. Совет по стандартизации, метрологии и сертификации; Москва: Изд-во стандартов, 2004. - 60 с.

3. Информационный сервис для разработчиков «Microsoft»: портал [Электронный ресурс]. - Режим доступа: https://msdn.microsoft.com/ru-ru/library/yyaad03b % 28v=vs.90% 29.aspx. Дата обращения: 25.05.2017.

4. Кауфман В.Ш. Языки программирования. Концепции и принципы / В.Ш. Кауфман - Электрон. текстовые данные. - Саратов: Профобразование, 2017. - 464 c.

5. Костюкова Н.И. Программирование на языке Си: методические рекомендации и задачи по программированию/ Н.И. Костюкова - Электрон. текстовые данные. - Новосибирск: Сибирское университетское издательство, 2017. - 160 c.

6. НОУ «Интуит». Лекция 1. Развитие языков программирования. [Электронный ресурс]. - Электрон. ст. - Режим доступа: http://www.intuit.ru/studies/courses/27/27/lecture/825? page=1. - Загл. с экрана.

7. Павловская Т.А. С/С++. Программирование на языке высокого уровня. - Спб.: Питер, 2010. - 461 с.: ил.

8. Подбельский В.В. Язык C++: Учеб. пособие. - 5-е изд. - М.: Финансы и статистика, 2007. - 560 с.: ил.

9. Подбельский В.В., Фомин С.С. Программирование на языке Си. - 2-е доп. изд. - М.: Финансы и статистика, 2004. - 600 с.: ил.

10. Потопахин В.В. Современное программирование с нуля / В.В. Потопахин - Электрон. текстовые данные. - Саратов: Профобразование, 2017. - 240 c.

11. Программирование для начинающих на С++ (CppStudio [Электронный ресурс]. - Режим доступа: https://cppstudio.com. Дата обращения: 17.05.2017.

12. Скляров В.А. Язык С++ и объектно-ориентированное программирование. Справочное пособие / Скляров В.А. - Минск: Вышэйшая школа, 1997. - 478 с.

13. Сошников Д.В. Функциональное программирование на F# / Д.В. Сошников - Электрон. текстовые данные. - Саратов: Профобразование, 2017. - 191 c.

14. Стенли Липпман Язык программирования С++: полное руководство/ Липпман Стенли, Лажойе Жози - Электрон. текстовые данные. - Саратов: Профобразование, 2017. - 1104 c.

15. Страуструп Б. Язык программирования С++/Б. Страуструп - 2-е доп. изд. - М.: Бином, 2011. - 1136 с.: ил.

16. Хомоненко А.Д. Программирование на С++: пособие /Хомоненко А.Д. [и др.]. - М.: Корона-принт, Альтекс-А, 2003. - 263 с.

17. Шилдт Г. С++: базовый курс, 3-е издание.: Пер. с англ. - Спб.: Издательский дома «Вильямс», 2007. - 624 c.: ил. - Парал. тит. англ.

Размещено на Allbest.ru


Подобные документы

  • Возможности среды программирования delphi при разработке приложения с визуальным интерфейсом. Отладка программных модулей с использованием специализированных программных средств. Тестирование программного обеспечения. Оптимизация программного кода.

    курсовая работа [974,0 K], добавлен 21.12.2016

  • Выполнение отладки программных модулей с использованием специализированных программных средств. Тестирование, оптимизация кода модуля. Реализация базы данных в конкретной системе управления. Анализ проектной и технической документации на уровне компонент.

    дипломная работа [5,0 M], добавлен 08.06.2017

  • Общие сведения об исследуемой организации, направления ее хозяйственной деятельности, характеристика используемой вычислительной техники и программного обеспечения. Разработка пользовательского интерфейса, шаблонов, отладка и тестирование программы.

    отчет по практике [159,3 K], добавлен 11.04.2016

  • Реализация программного средства "Действия над матрицами". Разработка кода программного продукта на основе готовой спецификации на уровне модуля. Использование инструментальных средств на этапе отладки программного модуля. Выбор стратегии тестирования.

    отчет по практике [296,1 K], добавлен 19.04.2015

  • Оснащенность предприятия системным программным обеспечением, используемым для организации производственного процесса. Проектирование, внедрение и эксплуатация системного и прикладного программного обеспечения. Тестирование и отладка программного продукта.

    отчет по практике [272,2 K], добавлен 29.12.2014

  • Обзор программных средств разработки приложений и обоснование выбора языка программирования. Классификация приложений для работы с базами данных. Функциональная структура базы данных с указанием назначения программных модулей, руководство пользователя.

    дипломная работа [645,3 K], добавлен 21.11.2010

  • Анализ информационных потоков. Разработка структуры таблиц базы данных. Выбор CASE-средства для проектирования информационной системы и среды программирования. Разработка программных модулей (программного обеспечения). Подготовка справочных баз данных.

    дипломная работа [6,8 M], добавлен 19.11.2013

  • Оптимизация с использованием языка низкого уровня ассемблера. Его связь с языками высокого уровня. Отдельно компилируемые модули. Разработка программных модулей на ассемблере с использованием компиляторов TASM5.0 фирмы Borlandи MASM6.14 фирмы Microsoft.

    курсовая работа [405,5 K], добавлен 18.05.2014

  • Программная и техническая характеристика информационных систем предприятия. Требования к информационной и программной совместимости. Проектирование программного обеспечения с использованием специализированных программных пакетов. Разработка базы данных.

    отчет по практике [1,3 M], добавлен 11.04.2019

  • Разработка программного обеспечения в объектно-ориентированной среде визуального программирования Microsoft Office VBA, реализующего базу данных "Энциклопедия домашних животных". Выбор языка программирования. Реализация программных модулей в блоках.

    курсовая работа [3,3 M], добавлен 11.01.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.