17120

Розробка програм із багатофайлової структурою. Заголовні файли. Класи пам'яті перемінних і функцій

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

Информатика, кибернетика и программирование

Лабораторна робота № 29 Тема: Розробка програм із багатофайлової структурою. Заголовні файли. Класи пам'яті перемінних і функцій. Ціль роботи: ознайомитися з написанням програм із багатофайлової структурою заголовними файлами вивчити класи пам'яті перемінних і функц

Украинкский

2013-06-29

88.5 KB

1 чел.

Лабораторна робота № 29

Тема: Розробка програм із багатофайлової структурою. Заголовні файли. Класи пам'яті перемінних і функцій.

Ціль роботи: ознайомитися з написанням програм із багатофайлової структурою, заголовними файлами, вивчити класи пам'яті перемінних і функцій, навчитися створювати модульні програми і заголовні файли. Вивчити область дії і час життя перемінних і функцій з різними класами пам'яті.

Обладнання: ПК,ПО Borland C++

Теоретичні відомості

Керування багатофайлової проектами

Оскільки більшість програм складається з декількох файлів, бажано мати можливість автоматичної ідентифікації тих файлів, що повинні бути перекомпільовані і скомпоновані. Ці і багато інших обов'язків виконує убудований адміністратор (менеджер) проектів системи Borland C.

Адміністратор проектів дозволяє задавати ті файли, що відносяться до описуваного проекту. Коли здійснюється перекомпіляція проекту, адміністратор проектів автоматично обновляє інформацію, що зберігається у файлі проекту. У файл проекту входить наступна інформація:

імена усіх файлів, що входять у проект;

шляху для пошуку файлів;

які файли залежать від інших файлів, які повинні бути відкомпільовані в першу чергу (зважуються питання, що стосуються залежностей, що автоматично відслідковуються,);

які компілятори і параметри командного рядка повинні використовуватися при створенні кожної з частин програми;

куди варто помістити результуючу програму;

розмір коду, розмір даних і число рядків, отриманих у результаті останньої компіляції.

Використання адміністратора проектів

Використання адміністратора проектів не представляє утруднень. Для побудови проекту випливає:

вибрати ім'я файлу проекту (за допомогою команди Project|Open Project);

додати до проекту імена вихідних файлів (за допомогою команди Project| Add Item);

задати системі Borland C компіляцію файлу (за допомогою команди Compile|Make EXE).

Потім, коли в меню Project стануть доступні команди ведення проекту, можна:

додавати імена файлів у чи проект видаляти їх з нього;

задавати параметри файлу, що входить у проект;

переглядати уміст файлів, включених у конкретний проект.

Приклад роботи з адміністратором проектів.

Мається програма, що складається з основного вихідного файлу з ім'ям mymain.c, додаткового файлу myfuncs.c, що містить визначення функції і дані, звертання до яких маються в основному файлі, і файлу myfuncs.h, де знаходяться оголошення функцій.

Файл mymain.c виглядає в такий спосіб:

#include <stdio.h>         // заголовний файл у стандартному каталозі

#include "myfuncs.h"    // заголовний файл в активному каталозі

main (int argc, char *argv[ ]) // передача у функцію main() параметрів з //навколишнього середовища: argc – кількість параметрів, argv[i] - масив строкових //параметрів, розділених пробілом, argv[об] – ім'я програми

{

char *s;                                  // клас пам'яті за замовчуванням auto

if (argc > 1)

s = argv[1];                           // вибір другого строкового параметра з масиву

else

s = " уселеної";                // ініціалізація покажчика строковою константою

printf("%s %s.\n",GetString(),s);  // висновок результуючої роботи функції

// GetString()  і рядка, зв'язаної з покажчиком s     

}

Файл myfuncs.c виглядає в такий спосіб:

char ss[] ="Притулок на границі";   // масив ss[ ] проініціалізованні строкової

// константою

char *GetString(void);        // визначення функції

{

return ss;    // доступ до масиву з функції дозволений, тому що клас пам'яті по

// умовчанню extern

}

А файл myfuncs.h виглядає в такий спосіб:

extern char *GetString(void);  // клас пам'яті глобальний - extern.

Приклад

/*    ЗАНЯТТЯ N18

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;

Приклад програми на С++

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

Проект повинний містити:

  •  оголошення і використання глобальних і локальних перемінних;
  •  передача глобальних даних як параметри функцій;
  •  перевизначення глобальних даних усередині функцій;
  •  виклик з допоміжного файлу зовнішньої функції;
  •  виклик з основного файлу зовнішніх функцій;
  •  перевизначення функцій у допоміжних файлах.

Індивідуальні завдання знаходяться в таблицях  18.1 і  18.2

Варіанти

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

1-10

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

2 допоміжних файли

заголовний файл

Варіант

локальна функція

зовнішня функція

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

локаль
ні дані

зовнішні дані

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

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

#include<iostream.h>

#include"mainf.h"

void main()

{cout<<"Vvedite k,l,var2: ";

cin>>k>>l>>var2;

auto int first(int,float);

{auto int var1;

var1=k+l-(var2)/2;

cout<<"\nvar1="<<var1;

}

float first(float k);

{int s=0;

static float var1;

var1=var2/k;

cout<<"\nvar1="<<var1;

s=var1+l;

cout<<"\ns="<<s;

}

}

Хід роботи

1.Вивчити теоретичні відомості.

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

3.Виконати оголошення перемінних на зовнішніх і внутрішніх рівнях з різними класами пам'яті.

4.Розробити функції, викликувані з додаткових модулів. Використовувати оголошені перемінні з різною областю дії (класами пам'яті).

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

Написати основну програму, що підключає необхідні заголовні модулі і використовує функції і перемінні з інших модулів.

Показати зміна перемінних у різних областях дії.

Перевірити доступ до перемінного з різними класами пам'яті (усередині блоку, модуля й в інших модулях).

6.Як обмежується доступ до членів класу? Як обмежується доступ до членів класу?

7.Перевірити виконання ініціалізації перемінних із класом пам'яті static, оголошених на зовнішньому рівні й усередині функції при декількох викликах.

8.Перевірити доступ до функцій, оголошеним з різними класами пам'яті.

9.Розробити функції, що мають одне ім'я і різні області дії. Здійснити виклик цих функцій.

10.Набрати програму на комп'ютері, і усунути помилки.

11.Одержати результат.

12.Оформити звіт.

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

Індивідуальне завдання

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

Проект повинний містити:

  •  оголошення і використання глобальних і локальних перемінних;
  •  передача глобальних даних як параметри функцій;
  •  перевизначення глобальних даних усередині функцій;
  •  виклик з допоміжного файлу зовнішньої функції;
  •  виклик з основного файлу зовнішніх функцій;
  •  перевизначення функцій у допоміжних файлах.

Індивідуальні завдання знаходяться в таблицях  18.1 і  18.2

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

Варіанти

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

1-10

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

2 допоміжних файли

заголовний файл

11-20

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

3 допоміжних файли

заголовний файл

21-30

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

4 допоміжних файли

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

Варіант

локальна функція

зовнішня функція

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

локаль
ні дані

зовнішні дані

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

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.

Контрольні запитання

1.Які класи пам'яті (КП) припустимі стосовно до перемінного і функціям?

2.Які класи пам'яті використовуються для перемінних і функцій за замовчуванням?

3.Назвіть область дії і час життя даних і функцій з різними класами пам'яті.

4.Чи можна використовувати перемінні з КП register у лівій частині вираження присвоювання?

5.У яких випадках можна використовувати перемінні, а також функції з однаковими іменами?

6.Чи можна переоголосити перемінну у вкладених блоках? Яка область дії таких перемінних?

7.Чи можна одержати доступ до глобальній перемінній у блоці, де оголошена локальна перемінна з тим же ім'ям?

8.Чи виробляється ініціалізація перемінних з різними класами пам'яті?

Скільки разів виробляється ініціалізація перемінних із КП static, оголошених у тілі функції?

9.Яку інформацію містять заголовні файли і де вони знаходяться?

10.Як запобігти повторне включення заголовних файлів у декількох модулях?


 

А также другие работы, которые могут Вас заинтересовать

44889. «Гнездо» Аксаковых. Творческий путь С.Т. Аксакова, место и значение его творчества в истории русской литературы 29 KB
  Гнездо Аксаковых. Аксакова место и значение его творчества в истории русской литературы. Аксаков Сергей Тимофеевич 17911859 его сыновья: Константин 18171860 Иван 18231886. Аксаков родился в Уфе в старинной дворянской семье отец – чиновник мать – дочь наместника.
44890. Новое время. Европа в начале нового времени 14.19 KB
  Новое время неразрывно связывается с утверждением €œбуржуазным индустриальным прогрессомâ€. В последнее время многие историки склоняются к мнению что нельзя искусственно отрывать от буржуазной цивилизации такие явления как великие географические открытия реформация и гуманизм научная революция которые дали толчок к зарождению буржуазии.: ранее новое время когда капитализм только зарождался и существовал в виде одного из укладов жизни.
44891. Методика формирования и развития системы понятий о химическом элементе 23.19 KB
  Цель изучения химических производств показать учащимся как достижения науки используются для практических нужд отразить роль науки как движущей силы производства и прогресса. Изучение химических производств позволяет существенно усилить экологическую сторону обучения химии раскрыть возможность реализации и требований экологической безопасности при грамотной организации производства что является важной воспитательной задачей курса химии средней школы. Структура системы понятий об основах химического производства. На этом основании можно...
44893. Понятие ОМ. Общественное мнение и паблицитный капитал как результаты PR-деятельности 20.26 KB
  Общественное мнение и паблицитный капитал как результаты PRдеятельности Общественное мнение –- это специфическое проявление общественного сознания выражающееся в оценках как в устной так и в письменной форме и характеризующее явное отношение групп общественности к актуальным проблемам действительности представляющим общественный интерес. Для PRдеятельности Общественное мнение его преобразование изменение в нужном для субъекта PR направлении – это объект и продукт PRдеятельности. Программы деятельности субъектов PR...
44894. Travelling. Путешествие 15.03 KB
  It is аlwys interesting to discover new things different wys of life to meet different people to try different food to listen to different musicl rhythms. Most trvellers nd holidymkers tke cmer with them nd tke pictures of everything tht interests them the sights of city old churches nd cstles views of mountins lkes vlleys plins wterflls forests different kinds of trees flowers nd plnts nimls nd birds.
44895. Трудная жизненная ситуация как категория социальной работы 23 KB
  Устоявшиеся нормативные стандарт трудныепротиворесчивые Признаки ТЖС:1 Неадекватность алгоритм. ЧеловекаТЖС ситуация соц.Факторы ТЖС: поведенческий экзистенциональный вероятностнопрогностическийСтруктура ТЖС:участники связан. Классификация ТЖС: по харкам субъектаиндивидуал.
44896. Синтаксические нормы 15.33 KB
  Благодаря преступной халатности водителя произошла эта авария Выбор падежной формы при гл. Выбор предлога. Выбор падежа при глаголе с отрицанием.
44897. Поняття культури мови. Комунікативні якості культури мови 25.5 KB
  Поняття культури мови. Комунікативні якості культури мови. Культура мови ознака літературної мови параметр за яким встановлюються авторитетні загальновизнані стандарти реалізовані в нормах писемного й усного спілкування. З культурою мови насамперед пов'язують уміння правильно говорити й писати дотримуватися всіх норм літературної мови.