Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Высокоуровневые методы информатики и программир...docx
Скачиваний:
25
Добавлен:
12.11.2019
Размер:
6.53 Mб
Скачать

6.1.6. Объединения union

Объединения соответствуют типам вариантных записей языка Delphi и объявляются подобно структурам. Активным может быть только одно поле. Все поля перекрывают друг друга в памяти.

Размер объеди­нения равен размеру наибольшего поля.

Пример:

union un {int i; float f; char c;} a,b; // объявление объединения

a.i=1; Label1->Caption=a.i; // использование поля i

a.f=12.34; Label2->Caption=a.f; // использование поля f

a.c='w'; Label3->Caption=a.c; // использование поля c

6.1.7. Перечисления enum

Перечисления служат для присвоения имен набору целых чисел (int), что повышает наглядность и надежность задания правильных значений переменной. Объявление имеет вид:

enum [<имя перечисляемого типа для объявления переменных>]

{<имя 1>[=<значение 1>],...,<имя N>[=<значение N>]}

[<список имен перечисляемых переменных>] ;

По умолчанию значение первого элемента равно нулю, а значение сле­дую­щего элемента списка на единицу больше.

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

Int main(int argc, char **argv) // основная процедура

{enum dninedeli {poned=1,vtor,sreda,hetv,pjtn,subb,vosk} den; // дни недели

den=vosk; // задание значения перечисляемой переменной den

if (den==vosk) printf(“Воскресенье %d день недели“, den); getch(); // вывод

}

6.2. Основные возможности

6.2.1. Предпроцессор

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

6.2.2. Директива #Include

Во многие программы подставляются один или несколько файлов, часто в самое начало кода главной программы main. Появление директив:

#include <файл_1>

...

#include “файл_n”

приводит к тому, что препроцессор подставляет на место этих директив тексты файлов: файл_1 файл_2 файл_n соответственно. Если имя файла заключено в кавычки, то вклю­чает­ся файл пользователя. Если имя файла заключено в угловые скобки, то файл входит во внеш­ние биб­лиоте­ки C++. Приведем список основных библиотек: stdlib.h (стандартная), math.h, math.hpp (математика), SysUtils.hpp (утилиты), time.h (время), ctype.h (обработка символов), string.h (строки), stdio.h, conio.h (ввод‑вы­вод).

6.2.3. Директива #define

С помощью директивы #define, вслед за которой пишутся имя и значение макрооператора, оказывается возможным указать пред­процес­со­ру, чтобы он при любом появлении в исходном файле данного имени заменял это имя на соответствующее значение макро­оператора (име­но­ван­ные константы (п. 1.1.1)).

Пример: #define square (х) ((х)*(х)); /* задает замену символа square (аргумент) на значение (аргумент) * (аргумент) */

Пример: #define рi 3.1415926; /* связывает идентификатор pi со значением 3.1415962 */

6.2.4. Функция вывод на терминал - Printf

Функция включена в библиотеку stdio.h (стандартный ввод / вывод) и используется в С и в консольных приложениях С++ и обычно имеет вид:

int printf (“<управляющая строка>” ,<список выводимых значений>);

Управляющая строка содержит набор спецификаций (шаблонов редак­тирования), управляющих и информационных символов, который вы­во­дят­ся без изменения).

Спецификация начинается с символа % и имеет вид:

% [<флаг>] [<ширина>] [.<точность>] <символ формата>

<флаг> - задает порядок вывода данных:

минус - выравнивание строковых данных по левому краю поля;

плюс - вывести знак значения: плюс или минус;

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

<ширина> - минимальный размер поля вывода;

<точность> - задает число:

цифр для целочисленных данных;

цифр после десятичной точки для вещественных данных;

символов для строковых данных;

<символ формата> - задает тип выводимого данного: с (один символ), s (стро­ка символов); d/u (десятичное целое со знаком/без знака); f/e/g (вещест­вен­ное число в обычной/экспоненциальной/смешанной форме); % (про­цент), n, p (указатели).

Пример:

printf(“\n Возраст Володи -%d. Его доход %.2f рублей.”, age , income );