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

Макросы

Директива #define позволяет осуществлять более сложные подстановки, а именно определять функции, зависящие от нескольких аргументов – макроопределения илимакросы:

#define SUMMA(x,y) ((x)+(y))

При этом каждое вхождение в текст программы выраженияSUMMA(a,b) заменяется препроцессором на выражение((a)+(b)), причем формальные аргументы макросаxиyзаменяются соответственно на фактические аргументы (константы, переменные, элементы массивов, выражения)aиb, для которых и вычисляется значение макроса:

r=SUMMA(2,3);

В этом случае значение переменной r будет равно5.

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

#define ИМЯ (список аргументов) выражение

После слова define и передвыражениемдолжны стоять пробелы. Подставляемоевыражениеи каждый формальный аргумент в нем необходимовзять вскобки. Если оно не помещается на одной строке, то его можно продолжить на следующих, используяслэш:

#define SUMMA(x,y) ((x)+\

(y))

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

Директиву можно использовать и для обращения к стандартным функциям:

#define VYVOD puts(“Programma studenta Vasi Pupkina”)

Выполняя эту директиву, препроцессор заменит в программе все встретившиеся имена VYVODна функцию выводаputs(“Programma studenta Vasi Pupkina”).

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

Структуры данных

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

Естественная организация данных эффективно отражается в современных языках программирования понятием структур данных.

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

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

К базовым структурамданныхвСиотносятся:

  • переменные,

  • массивы,

  • строки,

  • смеси,

  • структуры,

  • файлы.

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]