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

Переменные перечисляемого типа

Ключевое слово enum в С(С++) используется для объявления еще одного типа данных – перечисляемого. Он предназначен для описания целых констант (типа int) из некоторого заданного множества, например:

enum months {jan,feb,mar,apr,may,jun};

enum number {one,two,four,nine};

Здесь определены два типа months и days. Для определения переменной типа months запишем:

enum months ms;

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

jan=1, feb=2, mar=3 и так далее.

enum number i1,i2;

Каждая из переменных i1 и i2 может принимать одно из четырех значений: one, two, four или nine. Определение переменных можно выполнить и при объявлении типа, например:

enum number {one,two,four,nine} i1=one, i2=four;

Перечисление может быть описано и без задания имени типа. Имена в различных перечислениях должны отличаться друг от друга. Значения внутри одного перечисления могут совпадать:

enum number {one,two=one,four=4,six=4,nine} i1=one, i2=two;

В этом случае переменные i1 и i2 будут равны обе нулю и ассоциироваться с константой one. Константы four и six будут равны четырем .

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

enum number{one= 2,two,four= two+one-1,six= two+3} i1=two, i2= four;

В этом случае значения именованных констант будут следующими:

one= 2, two=3, four= 4, six= 6.

Переменные типа enum могут использоваться в индексных выражениях, как операнды в арифметических выражениях и в операциях отношения. Имя константы из списка перечисление эквивалентно её числовому значению. Именованным константам можно устанавливать как положительные, так и отрицательные значения.

Константы

В отличие от переменных, константы не изменяют своего значения в процессе выполнения всей функции (группы взаимосвязанных функций). Аналогично переменным константы могут быть следующих основных типов:

- целые;

- беззнаковые (символ U);

- вещественные;

- символьные;

- константное выражение, состоящее из констант объединенных знаками операций.

Константа целого типа. Примером константы целого типа является, например, число 241. Если требуется ввести константу типа long, то для этого надо в конце числа указать признак L или l, например, 143L. Признак L гарантирует, что для константы 143 в памяти будет отведено соответствующее число (4) байт. Это может быть важным для достижения совместимости при использовании константы с другими переменными и константами типа long.

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

- восьмеричного числа (если запись константы начинается с цифры 0), например 016, что соответствует десятичному числу 14.

- шестнадцатеричного числа (если число начинается с символов 0x или 0X), например 0x16, что соответствует десятичному числу 22.

Ниже приведены примеры целочисленных констант:

4356; - десятичная константа,

431L; - десятичная константа типа long,

0427; - восьмеричная константа,

0x136; - шестнадцатеричная константа.

Символьная константа. Символьные константы представляют собой одиночные символы, заключенные в апострофы, например:

simv=’S’;

Если в апострофы заключено более одного символа, то компилятор трактует это как ошибку:

simv=’SS’;

При описании символьной константы вместо символа может быть использован его ASCII код, например:

simv=’\123’; /* 123 - ASCII код символа S*/

В качестве символьных переменных могут использоваться управляющие символы (табл. 3).

Таблица 3.

Управляющий знак

Наименование Код

\n

Переход на новую строку \х0A

\t

Горизонтальная табуляция \x09

\v

Вертикальная табуляция \x0B

\b

Возврат на одну позицию \x08

\r

Перевод курсора в начало строки \x0C

\f

Новая страница \x0D

\a

Звонок ( сигнал ) \x07

\’

Одиночная кавычка \x27

\”

Двойная кавычка \x22

\\

Наклонная черта влево(обратный слэш) \x5C

\ddd

ASCII символ в восьмеричном представлении

\xdd

ASCII символ в шестнадцатеричном представлении

При присваивании символьной переменной эти символы должны быть заключены также в апострофы:

simv=’\n’; simb=’\f’;

Вещественные константы. В языке С(С++) допустимо несколько способов описания вещественных чисел. Наиболее общим является способ, при котором последовательность цифр включает в себя десятичную точку и символ e(E): 3.142е-2, -1.732Е+4. Знак + не обязателен в записи числа. Можно пускать либо десятичную точку, либо экспоненциальную часть, но не обе одновременно: 2.5348, .34е-2, 34е-2,, .34, 34. Использование пробелов в записи константы недопустимо.

В процессе работы константы с плавающей точкой представляются в формате double, то есть им отводится по 8 байт памяти.

main()

{ float sm;

sm=3.45*3.5;

}

Результат операции умножения 3.45*3.5 имеет двойную точность. При выполнении присваивания происходит усечение результата до размера float. Это позволит достичь максимальной точности.

В заключение отметим, что использование модификатора const запрещает любые переопределения константы. Например:

const char s[]=”БГУИР”;

const float ff=23.527;

const i=341;

Применение модификатора без указания типа константы подразумевает по умолчанию тип int.

Использование препроцессора (директивы препроцессора #define, будет рассмотрено далее) является еще одним механизмом, позволяющим существенно упростить процедуру определения и изменения значения констант.

Структура программы на языке С(С++)

Общая структура программы на С имеет вид:

директивы препроцессора

определение типов пользователя (используется typedef)

прототипы функций

определение глобальных переменных

функции

Программа на языке С(С+) представляет собой набор инструкций (операторов), объединенных в одну или более функций, которые должны быть выполнены. Среди этих функций есть одна, которая всегда должна иметь имя main, с которой и начинается выполнение всей программы. В процессе выполнения функция main обращается к другим функциям, находящимся в той же программе, либо в библиотеках, содержащих ранее написанные функции.

Ниже приведен пример простой программы .

#include<stdio.h> // подключение системной библиотеки

#include "file.cpp" // подключение личного файла

int fun(int,int); // прототип функции fun

main() // описание функции main

{ int a, b, c; // раздел описания данных

scanf("%d%d",&a,&b); // функция ввода нанных i и j

printf(" a+b= %d",a+b ); // вывод результатов

c=fun(a,b); // обращение к функции fun

funk(); // обращение к функции из файла file.cpp

return; //

}

int fun(int aa,int bb) // тело функции fun

{ return aa-bb; }