Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab_cpp.doc
Скачиваний:
10
Добавлен:
07.06.2015
Размер:
2.81 Mб
Скачать

Lab18.Cpp- Основной файл проекта

Разработал Петров Ю.В.

Объявить глобальные переменные r (extern) и f (extern и static),

а также локальные переменные.

Объявить в отдельном файле функции, выполняющие работу с переменными

с различными классами памяти. Определение функций также разместить

в отдельных файлах. Выполнить инициализацию переменных. Вывести

значения рассчитанных глобальных и локальных переменных на экран */

#include <iostream.h>

#include <conio.h>

#include "my_18.h"

int r=5; //Глобальная переменная r

extern float f; //Глобальная переменная f = 0

void main()

{ auto int r; // Локальная переменная (auto) r

r = Sum_Variable(4, 5); //Функция объявлена в файле "my_18.h" r=9

clrscr();

cout << "Локальная (auto) r=\t" << r << " Глобальная r="<< ::r << endl;

r+=10; //Локальная переменная r=19

::r = Sum_Variable(4, 3); //Глобальная переменная ::r=7

cout << "Локальная (auto) r=\t" << r << " Глобальная r=\t"<< ::r << endl;

cout << "Глобальная f=" << f;

cout << endl << " Локальная (auto) f=\t" << Function_1()

<< " Статическая (static) f=\t" << Function_2();

cout << endl << " Локальная (auto) f=\t" << Function_1()

<< " Статическая (static) f=\t" << Function_2();

cout << endl << " Локальная (auto) f=\t" << Function_1()

<< " Статическая (static) f=\t" << Function_2();

getch();

}

/* Локальная (auto) r= 9 Глобальная r= 5

Локальная (auto) r= 19 Глобальная r= 7

Глобальная f= 0.2

Локальная (auto) f= 8 Статическая (static) f= 2

Локальная (auto) f= 8 Статическая (static) f= 3

Локальная (auto) f= 8 Статическая (static) f= 4 */

//lab18f1.cpp – первый вспомогательный файл проекта

// Объявление переменной r и определение функций

extern r; // Глобальная переменная r

float Function_1()

{ auto float f= r; // Локальная переменная f

return ++f;

}

int Sum_Variable(int a, int b)

{return a + b;

}

// lab18f2.cpp – второй вспомогательный файл проекта

//Определение функции

static float f=1;//Статическая переменная (static) f

float Function_2()

{ return ++f;

}

//my_18.h – заголовочный файл

//Объявление переменных и функций

int Sum_Variable(int, int);

float Function_1();

float Function_2();

static float f = 0.2;

Ход работы

  1. Изучить теоретические сведения.

  2. В соответствии с индивидуальным заданием разработать алгоритм и программу, содержащую заголовочный файл и несколько модулей (2-3). В каждом модуле разработать отдельные функции.

  3. Выполнить объявление переменных на внешних и внутренних уровнях с различными классами памяти.

  4. Разработать функции, вызываемые из дополнительных модулей. Использовать объявленные переменные с различной областью действия (классами памяти).

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

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

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

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

  9. Как ограничивается доступ к членам класса? Как ограничивается доступ к членам класса?

  10. Проверить выполнение инициализации переменных с классом памяти static, объявленных на внешнем уровне и внутри функции при нескольких вызовах.

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

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

  13. Набрать программу на компьютере, и устранить ошибки.

  14. Получить результат.

  15. Оформить отчет.

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

Индивидуальное задание к лабораторной работе №18

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

Проект должен содержать:

  • объявление и использование глобальных и локальных переменных;

  • передача глобальных данных в качестве параметров функций;

  • переопределение глобальных данных внутри функций;

  • вызов из вспомогательного файла внешней функции;

  • вызов из основного файла внешних функций;

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

Индивидуальные задания находятся в таблицах 18.1 и 18.2

Таблица 18.1 – индивидуальные задания

Варианты

Структура проекта

1-10

основной файл

2 вспомогательных файла

заголовочный файл

11-20

основной файл

3 вспомогательных файла

заголовочный файл

21-30

основной файл

4 вспомогательных файла

Таблица 18.2 - индивидуальные задания

Вариант

функция c классом памяти static

внешняя функция

переопределенная функция

локальные данные

внешние данные

переопределенные данные

1,11,21

auto int first (int, float)

void second (int *,float *)

static float *first(float)

auto int var1

const float var2

static long int var1

2,12,22

auto cdecl int first (int, float)

void second (int *,float *)

static pascal char *first(int,…)

auto long unsigned int var1

double var2

static float var1

3,13,23

near auto int first (int, float)

void far second (int *,float *)

huge static int *first(double)

auto int var1

extern float var2

static short unsigned int var1

4,14,24

auto int first (near int, near float)

far void * pascal near second (far int *,far float *)

static unsigned int *first(char)

near auto double var1

extern unsigned short int var2

static char var1

5,15,25

pascal auto int first(int)

char far * (far * second) (int *,float *)

cdecl static far short int *first(float, float)

register char var1

far double var2

static int var1

6,16,26

cdecl auto int first(int, float)

extern near void * second (int *,float *)

static near double * first(void, …)

auto long int var1

float var2

static double var1

7,17,27

huge auto int first(near int *, far int *)

extern void second (int *,float *)

near static float *first(void)

register int var1

extern near float var2

near static double var1

8,18,28

far int * auto pascal huge first(huge int, huge float)

void second (int *,float *)

static short int *first(float *)

huge int var1

far double var2

static long unsigned int var1

9,19,29

auto int first(int, float)

near void * extern far pascal second (int *,float *)

static float *first(float)

auto int var1

far extern float var2

near static char var1

10,20,30

auto far int * (first)(int *, …)

void second (int *,float *)

int far * pascal far first()

auto float var1

extern huge float var2

extern long int var1

Требования к содержанию отчёта приведены в лабораторной работе №1.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]