Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Здесь определена функция countX




От этой точки до конца этого файла

Файле. Описание расширяет его область видимости

Определен в другом файле,но будет использоваться в и этом

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

Файл variant2_fun.cpp

Здесь определена функция main

От этой точки до конца этого файла

Файле. Описание расширяет область его видимости

Определен в другом файле,но будет использоваться и в этом

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

Define _USE_MATH_DEFINES

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

Файл variant2_main.cpp

#include <math.h>

#include <iostream>

#include <conio.h>

using namespace std;

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

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

float aGl; // определен глобальный объект

void main (void)

{

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

float x1, a;

double x2;

cin >> a >> x1 >>x2;

aGl = x1*x1;

bGl = x2;

float vir1;

countX (M_PI_2, vir1);

aGl = x2;

bGl = x1 + 1.2;

float vir2;

countX(0, vir2);

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

getch();

}

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

#include <math.h>

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

float bGl; // определен глобальный объект

void countX (float c, float& x)

{

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

}

 

 

Приложение 1

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

 

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

Например, имя NameStudent, summa, MyType.

Старые программные языки высокого уровня никогда не имели сложной файловой структуры сегодняшних приложений С/C++. Они не различали регистр, так что имена вроде mytype, MYTYPE и MyType рассматривались как одно и тоже имя. Для С/C++ это разные имена. Разумное использование символов ВЕРХНЕГО и нижнего регистров делает профессиональный код более читабельным. Для имен объектов в исходных файлах (.c/.cpp) используют СмеШанНый регистр. Зная это, делаем вывод, что имена MyType или myType предпочтительнее, чем имена mytype и MYTYPE, так как такие имена легче читаются.

 

Введенное венгром Чарльзом Симонии из Microsoft соглашение об именах, которое называется «венгерская нотация», позволяет программисту по имени объекта узнать и его тип. Это достигается присоединением к имени мнемонического префикса, кодирующего тип.

Так как типичное приложение Windows использует десятки различных типов данных, констант (определяемых ключевым словом const), символических констант (определяемых директивой препроцессора #define), структур, классов, сообщений и прочего, то

такое «встроенное» в имя объявление типа облегчает расшифровку кода, поскольку отпадает необходимость по его тексту вспоминать или отыскивать определение каждого объекта.

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

 

 

Префикс Тип Описание Пример имени
g_ - префикс глобального объекта g_gravConst
c const Именованная константа произвольного типа cfltPi
ch char 8 битный символ chGrade
ch TCHAR 16-битный символ, если определен _UNICODE chName
b BOOL булевое значение bEnabled
n, i int целое (размер зависит от системы) nLength, iLength
n UINT беззнаковое целое nHight
w unsigned int 16-битовое беззнаковое целое wMaska
w WORD 16-битовое беззнаковое целое wPos
l LONG 32-битное целое со знаком lOffset
l long 32-битное целое со знаком lLenght
dw DWORD 32-битное целое без знака dwRange
flt float 32-битное действительное fltValue
dbl double 64-битное действительное dblValue
p тип* указатель pDoc
lp FAR* дальний указатель lpDoc
sz string строка szNameStudent
psz char* указатель на символьную строку lpszName
lpsz LPSTR 32-битный указатель на символьную строку lpszName
lpsz LPSTR 32-битный указатель на символьную строку lpszName
pv void* указатель на void pvMember
h handle дескриптор объекта Windows hWnd
lpfn callback Дальний указатель на CALLBACK -функцию lpfnProc
       

 

Посмотрите на такой фрагмент текста:

Value1 = 1;

Value2 = 2;

Result = Value1 / Value2;

// результат получает почему-то значение 0, вместо ожидаемого значения 0.5

 

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

 

А теперь рассмотрим тот же фрагмент, написанный в стиле венгерской нотации:

nValue1 = 1;

nValue2 = 2;

fltResult = nValue1 / nValue2;

// результат получает почему-то значение 0, вместо ожидаемого значения 0.5

 

Здесь добавлены в имена мнемонические префиксы. Это позволяет программисту, читающему этот текст, даже не ища инструкции определения объектов, предположить потенциальную ошибку усечения результата - в С++ оператор деления / при делении целого на целое дает целый результат, то есть в данном случае результатом является

целый 0.

 

Читая венгерскую нотацию, профессиональные программисты автоматически отбрасывают префикс, так в имени объекта fltResult, и видят и читают только основную часть имени – Result.

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

 




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


Дата добавления: 2015-06-29; Просмотров: 333; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.014 сек.