Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЭЛЕМЕНТЫ ЯЗЫКА C.doc
Скачиваний:
12
Добавлен:
05.11.2018
Размер:
476.16 Кб
Скачать
    1. Понятие модуля

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

Чтобы функция стала модулем, ее надо оформить особым образом.

Модулю должны быть приданы следующие свойства:

1) выполнять строго однозначную функцию (от слова функционирование), например "расчет зарплаты", но не "расчет зарплаты и расчет значения синуса";

2) иметь один вход;

3) иметь один выход;

4) вызывать при необходимости другие модули;

5) обеспечивать раздельную от текста других модулей компиляцию, при которой «забываются» все обозначения внутренних идентификаторов (кроме имени самого модуля и имен вызываемых модулей), что облегчает коллективное написание больших программ при отсутствии необходимости согласования внутренних имен;

6) длина текста модуля должны быть обозрима (Рекомендуемая длина модуля 25 или 60 строк, но модуль может включать только один выполняемый оператор или иметь длину до 200 строк);

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

Свойства 1-5 обеспечиваются особенностями языка Pascal. Свойства 6-7 обеспечиваются квалификацией программиста.

Следствие: модуль не использует значений глобальных переменных или их использует очень ограниченно.

При проектировании модульной структуры программы используются схемы иерархии (подчиненности) модулей, рисунок 2:

Рисунок 2 – схема иерархии модулей программы вычисления значения куба числа.

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

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

    1. Арифметические выражения и присваивания

      1. Арифметические выражения

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

В языке СИ присваивание также является выражением, и значением такого выражения является величина, которая присваивается. Рассмотрим примеры операторов присваивания:

j = 3 + i;

j = i = 5;

j = 2 + i = 3;

В последнем примере использование присваивания i = 3 не наглядное, такие присваивания лучше не использовать!

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

Если в качестве операнда используется константа, то ему соответствует значение и тип представляющей его константы. Целая константа может быть типа int, long, unsigned int, unsigned long, в зависимости от ее значения и от формы записи. Символьная константа имеет тип int. Константа с плавающей точкой всегда имеет тип double.

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

Итак, арифметические выражения, стоящие в правой части оператора присваивания, могут содержать:

  1. целые и вещественные переменные;

  2. целые и вещественные числа (в вещественных числах целая и дробная часть разделяются точкой, а не запятой, как это принято в математике);

  3. знаки арифметических действий;

  4. вызовы функций;

  5. круглые скобки для изменения порядка действий.

Знаки арифметических действий:

+ - сложение, вычитание;

* / умножение, деление;

% остаток от деления значений целых типов.

Вызовы функций, например, математических, определяемых в <math.h>.

abs(i) модуль целого числа i;

fabs(x) модуль вещественного числа x;

sqrt(x) квадратный корень из вещественного числа x;

sin(x) вычисление синуса вещественного числа x;

cos(x) вычисление косинуса вещественного числа x;

exp(x) вычисление экспоненты вещественного числа x;

ln(x) вычисление натурального логарифма вещественного числа x.

При использовании деления надо помнить, что:

  1. при делении целого числа на целое остаток от деления отбрасывается, таким образом, 7/4 будет равно 1.

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

Например:

int i, n;

float x;

i = 7;

x = i / 4; // x=1, делится целое на целое

x = i % 4; // x=3, остаток от деления целого на целое

x = i / 4.; // x=1.75, делится целое на дробное

x =(float) i / 4; // x=1.75, делится дробное на целое

n = 7. / 4.; // n=1, результат записывается в

// целую переменную

Здесь (float) i – явное преобразование типа целый в вещественный тип.

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

Пример:

double u = 5;

u = -u; /* переменной u присваивается ее отрицание,

т.е. u принимает значение -5 */