Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы / C++.Ашарина / C_projects / Программирование задач с использованием проектов в ыке С++.doc
Скачиваний:
27
Добавлен:
17.04.2013
Размер:
86.53 Кб
Скачать

0

МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ИНСТИТУТ ЭЛЕКТРОННОЙ ТЕХНИКИ (ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ)

Кафедра "Информатика и программное обеспечение вычислительных систем"

Дисциплина "Информатика"

"УТВЕРЖДАЮ"

Зав. кафедрой ИПОВС ___________Шаньгин В.Ф.

"23" сентября 1998г.

ЛАБОРАТОРНАЯ РАБОТА

Программирование задач с использованием проектов в языке C++

Разработала: доц. Голова С.Ю.

МОСКВА -1998

Лабораторная работа

Программирование задач с использованием проектов на языке C++

Цель работы: 1) знакомство с правилами составления программ, использующих проекты; 2) изучение правил описания и использования нескольких файлов при создании программ; 3) изучение правил создания, компиляции и выполнения программ, использующих проекты, в системе Borland C++.

Продолжительность работы - 4ч.

Теоретические сведения

Программа - это последовательность операций над структурами данных, которые реализуют алгоритм или процедуру решения задачи. Для большинства задач эта процедура достаточно длинная и сложная, в связи с этим программы сложно писать и дорого сопровождать, не используя методов управления ее раз­мером и сложностью.

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

Например, задачу обработки матриц удобно разделить на три подзадачи:

•формирование (ввод) матрицы, вывод матрицы и, возможно, полученных результатов;

•обработки матрицы с целью получения результатов;

•управление процессом выполнения действий.

Для решения каждой из подзадач потребуется свой набор функций, который удобно записать в отдельном файле, откомпилировать этот файл и исправить в нём все синтаксические ошибки (логические ошибки на этом этапе не обнаруживаются). После этого все файлы объединяются в проект, выполняющий заданную задачу.

Структура файлов, входящих в проект

Файлы, входящие в проект, имеют разное назначение. Есть файлы, содержащие функции, реализующие решение одной из подзадач (присоединяемые функции), и файл, содержащий функцию main(). Кроме того, для того чтобы функция main() имела бы доступ к присоединяемым функциям, необходим один или более заголовочных файлов (файлов с расширением .h), содержащих прототипы присоединяемых функций.

Файл с присоединяемыми функциями может начинаться с директив include с именами заголовочных файлов стандартных библиотек языка C++ или именами заголовочных файлов присоединяемых функций пользователя. Затем в файле идут определения всех присоединяемых функций. Пример файла с присоединяемыми функциями представлен на рис.1.

Файл с функцией main() начинается с директив include с именами заголовочных файлов стандартных библиотек языка C++ и именами заголовочных файлов присоединяемых функций пользователя. Затем идет определения функции main() возможно с описаниями (и прототипами) функций, используемыми функцией main(). Пример файла с функцией main() представлен на рис.5.

Заголовочный файл (файл с расширением .h) содержит прототипы присоединяемых функций. Пример заголовочного файла представлен на рис.2.

Подменю работы с проектом

Для создания проекта в системе Borland C++ используется подменю Project со следующими пунктами:

Open project - создание или открытие проекта;

Close project - закрытие проекта;

Add item - добавление файлов в проект,

Delete item - удаление файлов из проекта;

Local options - задание опций (режимов, компиляторов и т.д.) для работы с файлами проекта;

Include files - просмотр файлов, входящих в проект.

Назначение пунктов подменю Project

При выборе пункта Open project открывается диалоговое окно Open Project File для выбора уже существующего проекта или для создания нового.

При выборе пункта Close project происходит закрытие проекта и возврат к проекту по умолчанию.

При выборе пункта Add item открывается диалоговое окно Add item to Project List для добавления файлов в проект.

Команда Delete item используется для удаления файлов из проекта.

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

При выборе пункта Include files открывается диалоговое окно Include Files со списком файлов, входящих в состав проекта.

Создание проекта в системе Borland C++

Для создания проекта надо сначала с помощью системы Borland C++ создать файлы присоединяемых функций, откомпилировать их и исправить все ошибки. Затем создать заголовочные файлы с прототипами присоединяемых функций. После этого создать файл с функцией main(), откомпилировать его и исправить все ошибки. Компиляция файлов проекта осуществляется с помощью опции Compile подменю Compile системы Borland C++. Обратите внимание на то, что заголовочные файлы компилировать не нужно.

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

#include <stdio.h>

#include <math.h>

#include <stdlib.h>

void form1(int x[][10], int n, int m) //формирование матрицы

//из n строк и m столбцов с помощью датчика случайных чисел

{

int i, j; //параметры цикла

for (i = 0; i < n; i++) //цикл по строкам

for (j = 0; j < m; j++) //цикл по столбцам

x[i][j] = random(100)-50; //элемент матрицы - случайное число

//от -50 до 50

}

void write1(int х[][10], int n, int m) //вывод на экран

//матрицы из n строк и m столбцов

{

int i, j; //параметры цикла

for(i = 0; i < n; i++) //цикл по строкам

{

for(j = 0; j < m; j++) //цикл по столбцам

printf("%4d", x[i][j]); //вывод элемента матрицы

printf("\n"); //переход на новую строку

}

}

void write2(int y[], int k) //вывод на экран массива из

//k элементов

{

int i; //параметр цикла

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

printf("%4d", y[i]); //вывод элемента массива

printf("\n"); //переход на новую строку

}

рис 1. Содержимое файла Out.cpp

void form1(int x[][10], int n, int m);

void write1(int x[][10], int n, int m);

void write2(int y[], int k);

рис 2. Содержимое файла Out.h

void form2(int x[][10], int y[], int n, int m, int &k) //функция

//формирования одномерного массива из положительных элементов

//матрицы

// х - исходная матрица;

// у - одномерный массив;

// n - количество строк в матрице;

// m - количество столбцов в матрице;

// k - количество элементов в одномерном массиве.

{

int i, j; //параметры цикла

k=0; //задать начальное значение количества элементов массива

for(i = 0; i < n; i++) //цикл по строкам

for(j = 0; j < m; j++) //цикл по столбцам

if (х[i][j] > 0)

y[k++] = x[i][j]; //элемент матрицы положителен,

// записать его в массив и увеличить на 1 количество элементов массива

}

int num_min(int y[], int k) //функция поиска номера минимального

// элемента в массиве

// у - одномерный массив;

// k - количество элементов в одномерном массиве.

{

int i; //параметр цикла

int num; //номер минимального элемента

int min; //минимум

min = y[0]; //задать начальное значение минимуму

num = 0; //задать нач. значение номеру минимального элемента

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

if ( y[i] < min )

{

min = y[i]; //элемент массива меньше минимума,

//поменять минимум

num = i; //элемент массива меньше минимума,

//поменять номер мин.

}

return (num); //возвратить num в качестве результата

}

рис 3. Содержимое файла Obr.срр

void form2(int х[][10], int y[], int n, int m, int &k);

int num_min(int y[], int k);

рис 4. Содержимое файла Obr.h

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include "out.h"

#include "obr.h"

void main()

{

int a[4][10], b[6][10]; //исходные матрицы

int c[20], d[48]; //результирующие массивы

int k1, k2; //количества элементов в массивах c и d

int n1 ,n2; //номера минимальных элементов в массивах c и d

randomize();

clrscr(); //очистка экрана

form1(a, 4, 5); //формирование матрицы a

prinlf(" матрица a\n");

wnte1(a, 4, 5); //вывод на экран матрицы a

form2(a, c, 4, 5, k1); //формирование массива c

printf(" массив c\n");

write2(c, k1); //вывод на экран массива c

n1 = num_min(c, k1); //определить номер мин. элемента

//в массиве c

printf("Номep мин. элемента = %d\n", n1);

getch();

clrscr(); //очистка экрана

form1(b, 6, 8); //формирование матрицы b

printf(" матрица b\n");

write1(b, 6, 8); //вывод на экран матрицы b

form2(b, d, 6, 8, k2); //формирование массива d

printf(" массив d\n");

write2(d, k2); //вывод на экран массива d

n2 = num_min(d, k2); //определить номер мин. элемента

//в массиве d

printf("номер мин. элемента = %d\n", n2);

getch();

}

рис. 5. Содержи мое файла main. cpp

Соседние файлы в папке C_projects