Модульное программирование на Си. Классы памяти и области действия переменных

Страницы работы

Фрагмент текста работы

Модульное программирование на Си

Файл Си-программы как элемент модульного программирования

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

Классически, в Си, завершённый модульфункция.

На более глобальном (макро) уровне,

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

Использовать принцип модульного программирования на уровне файлов –значит:

получить возможность разделить полный текст программы на несколько файлов;

транслировать их независимо друг от друга;

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

Например, схема:

main.c

menu.c

data_mod.c

transfer.c

edit_mod.c

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

Изменяем наполнение модулей – создаём новые варианты уже готовой задачи.

Пишем новый код – используем стандартные функции S в готовых модулях, например в menu.c.

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

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

и

как они "узнают" о существовании друг друга, каким образом взаимодействуют между собой.

Для начала сформулируем ряд необходимых терминов:

МОДУЛЬ – файл Си-программы, транслируемый независимо от других файлов (модулей)

ОПРЕДЕЛЕНИЕ ПЕРЕМЕННОЙ ИЛИ ФУНКЦИИ – процесс создания программного эквивалента переменной или функции транслятором по их описанию в программе (трансляция  во внутреннее представление)

Несколько отойдём от непосредственно модульного подхода в программировании и поговорим о необходимой составляющей этого процесса

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

Определение функции включает в себя её заголовок и тело.

Определение переменной – обычное контекстное определение и, возможно, её инициализация.

Рассмотрим подробнее на примерах:

int strcmp(char *s, char *d)

{ ... }

В определении функции:

-  задан тип результата;

-  задано имя функции;

-  задан список формальных параметров и их типов;

-  транслируется тело функции;

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

int a = 5, B[10]={1,6,3,6,4,6,47,55,44,77};

В определении переменной:

-  задан тип переменной;

-  задано имя переменной;

-  определяется размерность и резервируется память. Размерность массивов в определении обязательно должна быть задана;

-  производится инициализация памяти;

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

ОБЪЯВЛЕНИЕ ПЕРЕМЕННОЙ ИЛИ ФУНКЦИИ – информация транслятору о том, что указанные переменная или функция где-то определены, но неизвестны в данный момент  транслятору

Например, определение размещается далее по тексту в текущем модуле или находится в другом модуле.

Переменная или функция при объявлении во внутреннее представление не переводятся, транслятору сообщается лишь факт их существования, имя и тип. Это необходимо для формирования правильного обращения к переменной или к функции.

extern    int a, B[];

В объявлении переменной:

-  задан тип переменной;

-  задано имя переменной;

-  запоминается факт наличия переменной с указанными  именем и типом. Размерность массивов в объявлении может отсутствовать.

int        strcmp();

int        strcmp(char*, char*);

extern int strcmp();

extern int strcmp(char*, char*);

B объявлении функции:

-  задается тип функции;

-  задается имя функции;

-  может быть задан список типов формальных  параметров (прототип).

-  запоминается факт наличия функции с указанными  именем, результатом и, возможно, параметрами.

Различия между определением и объявлением принципиальны!

Похожие материалы

Информация о работе