Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
shpory_si.docx
Скачиваний:
33
Добавлен:
25.09.2019
Размер:
205.61 Кб
Скачать

4. Переменные.

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

Все переменные перед их использованием должны быть объявлены.

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

тип имя переменной [= значение];

Рассмотри подробнее каждый элемент синтаксиса переменной:

тип: размер выделяемой памяти;имя переменной: любое английское название; значение: (необязательный параметр) можно сразу присвоить определенное значение для нашей переменной; int a,b,c; /*

Объявляем три переменные типа int без указания имени */

float d = 2.01, f; /* Одну переменную просто объявляем, а вторую инициализируем значением */

Типы переменных В языке си ( с ) выделяют следующие типы переменных:

целочисленные: Тип Диапазон значений int 32768 по 32767 char -128 по 127 long -2 147 483 648 по 2 147 483 647 Тип Диапазон значений float 3.4*10^(-38) по 3.4*10^(+38) double 1.7*10^(-308) по 1.7*10^(+308) long double очень много) Имена переменных Имена переменных должны начинаться обязательно с буквы или символа подчеркивания "_". При чем в языке С/С ++ имеется разница заглавная илистрочная буква.

5. Структура с - программы. Понятие локальных и глобальных переменных. Функция main().Директивы препроцессора (#include и #define). Комментарии.

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

Пример:

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

// описание

int main()

{

//операторы главной функции

}

int f1()

{

//операторы функции f1

}

int f2()

{

//операторы функции f2

}

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

Одна из функций должна иметь имя main(). Выполнение программы начинается с первого оператора этой функции.

Функция main()

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

main()

{

/*Код, реализующий функцию main */

}

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

Директивы препроцессора (#include и #define)

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

Директива #include включает в текст программы содержимое указанного файла. Эта директива имеет две формы:

#include "имя файла" – заданный маршрут

#include <имя файла> - стандартные директории

Директива #include может быть вложенной, т.е. во включаемом файле тоже может содержаться директива #include, которая замещается после включения файла, содержащего эту директиву.

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

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

Директива #define имеет две синтаксические формы:

#define идентификатор текст

#define идентификатор (список параметров) текст

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

Пример:

#define WIDTH 80

#define LENGTH (WIDTH+10)

Эти директивы изменят в тексте программы каждое слово WIDTH на число 80, а каждое слово LENGTH на выражение (80+10) вместе с окружающими его скобками.

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

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

Пример:

#define MAX(x,y) ((x)>(y))?(x):(y)

Эта директива заменит фрагмент t=MAX(i,s[i]); на фрагмент t=((i)>(s[i])?(i):(s[i]);

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

Комментарии

Комментарий – это набор символов, которые игнорируются компилятором, на этот набор символов, однако, накладываются следующие ограничения. Внутри набора символов, который представляет комментарий не может быть специальных символов определяющих начало и конец комментариев, соответственно (/* и */). Отметим, что комментарии могут заменить как одну строку, так и несколько. Например:

/* комментарии к программе */

/* начало алгоритма */

или

/* комментарии можно записать в следующем виде, однако надо

быть осторожным, чтобы внутри последовательности, которая

игнорируется компилятором, не попались операторы программы,

которые также будут игнорироваться */

Неправильное определение комментариев.

/* комментарии к алгоритму /* решение краевой задачи */ */

или

/* комментарии к алгоритму решения */ краевой задачи */

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