Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Float aGl, bGl; // определены 2 глобальных объекта




void countX (float c, float& x)

Значения в глобальных объектах aGl, bGl, cGl для вычисления в этой

Инструкции готовит функция main при каждом новом вызове функции

x = (aGl * cos(bGl + c) - bGl * sin(aGl + c)) / (pow(aGl,3) + bGl * bGl);

// оператор = записывает результат в глобальный xGl,

А использоваться этот результат будет в функции main

}

void main (void)

{

Cout << endl << "vvedite a, x1, x2\t";

float x1, a;

double x2;

cin >> a >> x1 >>x2;

aGl = x1*x1;

bGl = x2; // функции countX ()- записана ирформация

В глобальные объекты aGl, bGl

float vir1;

countX (M_PI_2, vir1);

Результат вычислен при первом вызове countX и записан в объекте

Vir1, который передан в эту функции через параметр по ссылке

// готовятся новые значения для второго вызова функции countX ()

aGl = x2;

bGl = x1 + 1.2;

float vir2;

countX(0, vir2);

Результат вычислен при втором вызове countX и записан в объекте

Vir2, который передан в эту функции через параметр по ссылке

cout << endl << "\tX = " << 1./11 + a * vir1 + 1 / vir2;

getch();

}

Программы, состоящие из двух и более файлов.

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

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

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

Рассмотрим проблемы, возникающие при разделении программы на отдельные файлы-модули на примере программы из варианта 2 предыдущего раздела. Запишем функции countX и main в разных файлах.

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

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

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

 

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

Описанием глобального объекта-функции является ее прототип.

Добавление ключевого слова еxtern к инструкции определения глобального объекта-данного превращает эту инструкцию определения объекта в инструкцию описания этого объекта.

/ / / / / / / / / / / / / / первый файл программы / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /

 

Файл variant2_main.cpp

В этом файле определена функция main и глобальный объект aGl

Define _USE_MATH_DEFINES

#include <math.h>

#include <iostream>

#include <conio.h>

using namespace std;

Void countX (float c, float& x); // описанa функция countX для расширения ее // области видимости. Ее определение

Находится в другом файле.

еxtern float bGl; // описан глобальный объект, потому что этот объект,





Поделиться с друзьями:


Дата добавления: 2016-10-06; Мы поможем в написании ваших работ!; просмотров: 455 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Если президенты не могут делать этого со своими женами, они делают это со своими странами © Иосиф Бродский
==> читать все изречения...

2507 - | 2379 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.007 с.