Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Добавление к проекту существующего файла с исходным текстом




23. Создайте новый проект с именем MyFirstSumma. Для этого в меню File выполните команду New, затем команду Project.., а далее повторите пункты 3,4 этой лабораторной работы.

24. Если настройки таковы, что у вас на рабочем столе Microsoft Visual Studio.Net не появилось окно Solution Explorer –MyFirstSumma, то выберите в меню View пункт Solution Explorer и раскройте его. Окно появится.

25. Щелкните правой кнопкой мыши по папке Source Files и в появившемся контекстном меню выберите команду Add, затем команду Add Existing Item…. В результате будет отображено окно Add Existing Item- MyFirstSumma. В указанной преподавателем папке найдите имя файла FirstSumma.cpp ( этот уже существующий файл хотим добавить во вновь созданный проект) и нажмите кнопку O pen. После этого в списке файлов папки Source Files окна Solution Explorer –MyFirst Summa появится обозначение нового файла MyFirsSumma t.cpp и откроется окно редактора с этим же именем MyFirst Summa.cpp.

Запустите этот проект, выполнив команду Start.

Закончите работу, закрыв главное окно Microsoft Visual Studio.Net.

 

Приложение 1

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

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

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

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

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

 

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

ФУНКЦИИ В ЯЗЫКЕ С++

Цель работы: Изучение функций, структуры программы и возможностей раздельной компиляции и компоновки функций.

 

Общие указания к заданиям лабораторной работы.

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

Задание 1. Составить программу, имеющую линейный алгоритм и состоящую из одной функции main(). Программу записать в файл с именем имя1.cpp. Создать проект, откомпилировать его и выполнить.

В функции main() организовать вычисление задачи вашего варианта дважды:

ü для исходных данных, значения которых задать в виде констант в тексте функции main() -будем считать их отладочными данными, на которых проверяется правильность решения Вашей задачи;

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

Проанализировать результаты работы и сделать выводы. Перенести полученные результаты в отчет.

 

Задание 2. Линейный алгоритм функции из задания1 разделить на две процедуры, выделив в одну вычислительные операции этого алгоритма, а в другую все операции ввода-вывода. Каждую процедуру оформить как функцию. Вычислительную часть алгоритма оформить как функцию с параметрами, передаваемыми по значению, и возвращаемым значением. Другую часть алгоритма оформить как функцию main(), вызывающую первую функцию нужное количество раз. Записать тексты функций в файл с именем имя2.срр в следующем порядке: функция с параметрами, функция main(). Создать проект, откомпилировать его и выполнить.

Проанализировать результаты работы и сделать выводы. Примечание: Не пишите текст новых функций в окне РЕДАКТОРА заново. Используйте средства РЕДАКТОРА. Файл имя2.срр создайте, скопировав часть текст из файла имя1.срр, и измените его.

Задание 3. Создать файл имя3.срр, в котором изменить порядок записи текстов функций, созданных в задании 2. Функции записать в следующем порядке: функция main(), функция с параметрами, организующая вычисления. Создать проект, откомпилировать его, внести требуемые дополнения, добиться успешной компиляции и выполнить.

Проанализировать результаты работы и сделать выводы.

Примечание: Не пишите на экране текст алгоритма заново. Новый файл имя3.срp создайте скопировав текст файла имя2.срр и изменив его, используя только средства РЕДАКТОРА.

Задание 4. Линейный алгоритм функции из задания1 по-прежнему разделить на две процедуры, выделив в одну вычислительные операции этого алгоритма, а в другую все операции ввода-вывода. Вычислительную часть алгоритма оформить как функцию с параметрами без возвращаемого значения, вернув результат через параметр по ссылке. Другую часть алгоритма оформить как функцию main(), вызывающую вычислительную функцию. Записать тексты функций в файл с именем имя4.срр в следующем порядке: функция без возвращаемого значения, функция main(). Создать проект, откомпилировать его и выполнить.

Проанализировать результаты работы и сделать выводы.

Примечание: Не пишите на экране текст алгоритма заново. Новый файл имя4.срр создайте из одного из ранее созданных файлов, используя средства РЕДАКТОРА.

 

Задание 5. По-прежнему линейный алгоритм функции из задания1 разделить на две процедуры, выделив в одну вычислительные операции этого алгоритма, а в другую все операции ввода-вывода. Вычислительную часть алгоритма оформить как функцию без параметров и без возвращаемого значения. Другую часть алгоритма оформить как функцию main(), вызывающую вычислительную функцию. Обмен данными между функциями организовать через глобальные объекты. Записать тексты функций в файл с именем имя5.срр в следующем порядке: функция main(), затем функция без возвращаемого значения и без параметров. Создать проект, откомпилировать его и выполнить.

Проанализировать результаты работы и сделать выводы.

Примечание: Не пишите на экране текст алгоритма заново. Новый файл имя5.срр создайте из одного из ранее созданных файлов, используя средства РЕДАКТОРА.

Задание 6. В этом задании необходимо создать проект, состоящий из двух файлов. Для этого разделить текст файла имя3.срр два файла. В первый файл с именем имя6_m.cpp поместить текст функции main(). Включить файл в проект и откомпилировать только файл имя6_m.cpp.

Примечание: Не пишите на экране текст алгоритма заново. Файл имя6_m.срр создайте из файла имя3.срр, используя средства РЕДАКТОРА.

Во второй файл с именем имя6_f.срр поместить текст функции с параметрами. Включить файл в проект и откомпилировать только файл имя6_f.cpp.

Примечание: Не пишите на экране текст алгоритма заново. Файл имя6_f.срр создайте из файла имя3.срр, используя средства РЕДАКТОРА.

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

Проанализировать результаты работы и сделать выводы.

Задание 7. Создать проект, состоящий из двух файлов из файла имя5.срр. Разделить текст этого файла на два файла. В первый файл с именем имя7_m.cpp поместить текст функции main(). Включить файл в проект и откомпилировать только файл имя7_m.cpp.

Примечание: Не пишите на экране текст алгоритма заново. Файл имя7_m.срр создайте из файла имя5.срр, используя средства РЕДАКТОРА.

Во второй файл с именем имя7_f.срр поместить текст функции без параметров. Включить файл в проект и откомпилировать только файл имя7_f.cpp.

 

Примечание: Не пишите на экране текст алгоритма заново. Файл имя7_f.срр создайте из файла имя5.срр, используя средства РЕДАКТОРА.

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

Проанализировать результаты работы и сделать выводы.

 




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


Дата добавления: 2014-12-27; Просмотров: 575; Нарушение авторских прав?; Мы поможем в написании вашей работы!


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



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




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