Загрузка дополнительных фильмов

С помощью действий loadMovie и unloadMovie можно обеспечить динамическую загрузку дополнительных фильмов или их выгрузку без повторной инициализации Flash-плеера.

Такая технология обеспечивает эффективное решение следующих задач:

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

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

  1. Добавьте новый «фоновый» слой.
  2. Поместите на него кнопку, которой будет назначено действие loadMovie.
  3. Откройте панель Actions.
  4. В списке Actions Toolbox откройте раздел Actions, затем — подраздел Browser/Network и дважды щелкните в строке loadMovie; в результате в окне сценария появится соответствующая конструкция на языке ActionScript, а в панели параметров — параметры действия loadMovie .
  5. Введите требуемые значения параметров.

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

Рассмотрим подробнее параметры действия loadMovie.

Параметр URL определяет адрес загружаемого фильма (SWF-файла); значение параметра может быть задано в виде абсолютного или относительного URL, либо в виде вычисляемого выражения.

Параметр Location (Расположение) определяет «место» загружаемого фильма или клипа в иерархии. Для фильма его положение определяется относительным уровнем (Level), для клипа — положением клипа-предшественника (Target), который он должен заместить.

Относительный уровень фильма — это целое положительное число от 0 и до… Верхний уровень ограничен только вашей фантазией и объемом оперативной памяти компьютера.

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

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

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

Параметр Variables имеет тот же смысл, что и для действия getURL.

Замечание

Для просмотра последовательности связанных фильмов в Flash-плеере или для их тестирования во Flash, все SWF-файлы должны быть сохранены в одной папке; в поле URL имя файла должно быть указано без папки или спецификаций дисковода, но обязательно с расширением swf.

Применение действия loadMovie проиллюстрируем небольшим примером. Пусть первым загружаемым фильмом (расположенным на нулевом уровне) будет фильм, содержащий только кнопку, которой назначено действие loadMovie . Предположим, что с его помощью требуется дополнительно загрузить фильм «про шарик» с двумя кнопками . Для решения указанной задачи необходимо:

  • 1. Экспортировать фильм «про шарик» в формат SWF и сохранить (например, под именем Interact.swf) в той же папке, что и фильм нулевого уровня.
  • 2. Для действия loadMovie установить следующие параметры:

URL = Interact.swf

Location: Level=l Variable = Don’t send.

Чтобы выгрузить фильм из Flash-плеера, необходимо назначить какой-либо кнопке или кадру фильма действие unloadMovie. Для него должен быть установлен единственный параметр — Location, определяющий уровень фильма (Level), который следует выгрузить.

Создание сценария для кадра

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

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

Чтобы связать с кадром некоторый сценарий, необходимо:

  1. Щелкнуть правой кнопкой мыши в ячейке кадра и в контекстном меню выбрать команду Actions (если выбранный кадр не является ключевым, то действие будет назначено предшествующему ключевому кадру).
  2. В списке Actions Toolbox открыть раздел Actions, а в нем -требуемый подраздел.
  3. Дважды щелкнуть мышкой на действии, которое вы хотите назначить кадру; при этом в окно сценария будет помещена соответствующая конструкция на языке ActionScript; обратите внимание, что сценарий кадра не содержит селектора; объясняется это тем, что для кадров предусмотрен только один тип событий— переход считывающей головки.

Имейте в виду, что действия, назначенные кадру, в режиме редактирования не работают. Чтобы протестировать фильм, необходимо в меню Control выбрать команду Test Movie (или Test Scene).

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

Замечание

На самом деле действия goto как такового не существует, в ActionScript используются два действия, реализующие

два варианта перехода на требуемый кадр или сцену: gotoAndPlay (Перейти и воспроизвести) и gotoAndStop (Перейти и остановить).

Для обоих вариантов перехода предусмотрены следующие параметры:

  • Scene (Сцена) – задает сцену, на которую требуется перейти, или на которой расположен кадр, на который требуется перейти; значение параметра выбирается с помощью раскрывающегося списка, который содержит четыре основных пункта:

    • <current scene> — текущая сцена;
    • <next scene> — следующая сцена; переход возможен только на первый кадр следующей сцены;
    • <previous scene> – предыдущая сцена; переход возможен только на первый кадр предыдущей сцены;
    • Scene 1 — имя, используемое по умолчанию для первой сцены фильма; если фильм содержит более одной сцены, то в список автоматически добавляются их имена;
  • Туре (Тип) — задает способ указания кадра, на который требуется перейти; значение параметра выбирается с помощью раскрывающегося списка, который содержит пять пунктов:

    • Frame Number (Номер кадра) — кадр задается его порядковым номером на временной диаграмме; номер кадра должен быть указан в расположенном ниже поле Frame;
    • Frame Label (Метка кадра) — кадр задается его меткой (именем); метка для кадра должна быть предварительно указана в поле Label панели инспектора свойств;
    • Expression (Выражение) – номер или метка кадра определяются как результат вычисления выражения; выражение должно быть введено в расположенном ниже поле Frame;
    • Next Frame (Следующий кадр) – переход выполняется на следующий кадр той же сцены;
    • Previous Frame (Предыдущий кадр) — переход выполняется на предыдущий кадр той же сцены.

Пара переключателей Go to and Play (Перейти и воспроизвести) и Go to and Stop (Перейти и остановить) определяет операцию, выполняемую после перехода на заданную сцену или кадр: после перехода воспроизведение фильма либо продолжается (возобновляется), либо приостанавливается.

Замечание

При указании номера кадра следует иметь в виду, что он должен лежать в диапазоне от 1 до 16000.

Создание сценария клипа

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

Чтобы связать с клипом сценарий, необходимо:

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

В контекстном меню выбрать команду Actions.

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

В поле параметров ввести требуемые значения (если для данного действия они предусмотрены).

В окне сценария щелкнуть на строке с обработчиком onClipEvent; при этом в поле параметров появится перечень допустимых типов событий, которые могут инициализировать действие .

Выберите тип события, при наступлении которого введенные данные должны быть переданы на сервер; обратите внимание, что, в отличие от кнопок, для клипа может быть выбран только один из типов событий; перечень типов событий также отличается от предусмотренного для кнопок:

load — действие инициализируется, как только экземпляр клипа появляется на столе;

unload — действие инициализируется при переходе к первому кадру после выгрузки клипа;

enterFrame – действие инициализируется при переходе к каждому очередному кадру;

mouseMove — действие инициализируется при каждом перемещении мыши;

mouseDown — действие инициализируется при нажатии левой кнопки мыши;

mouseUp – действие инициализируется, когда левая кнопка мыши освобождается;

keyDown — действие инициализируется при нажатии заданной клавиши на клавиатуре;

keyUp — действие инициализируется, когда нажатая клавиша освобождается;

data — действие инициализируется, когда закончена загрузка данных с сервера.

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

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

Замечание
Разумеется, указанный эффект может быть получен с помощью операций трансформации, однако в данном случае нас интересует не столько «сила» визуального эффекта, сколько способ его достижения.
Начнем с того, что поясним конечный результат, который должен быть получен с помощью сценария: маска в виде «пропеллера» должна перемещаться вдоль маскированного слоя и при этом «пропеллер» должен вращаться.
Итак, для решения поставленной задачи выполните следующие действия:
Создайте клип, который будет использован в качестве маски (в соответствии с условиями рассматриваемого примера, «пропеллер» должен просто вращаться вокруг центральной точки).
Поместите экземпляр клипа на стол, в первый слой фильма.
С помощью инспектора свойств дайте экземпляру клипа имя (например, mask).
Создайте для маски анимацию движения (чтобы «пропеллер» перемещался вдоль стола).
Добавьте в фильм слой, который будет использоваться в качестве фона (то есть будущий маскированный слой).
Поместите на фоновый слой изображение и преобразуйте его в символ-клип, выбрав в меню Insert команду Convert to Symbol.
С помощью инспектора свойств дайте экземпляру клипа имя (например, Fon).
Преобразуйте слой с клипом mask в слой-маску, выбрав в его контекстном меню команду Mask.
Щелкните правой кнопкой мыши на первом кадре слоя-маски и в контекстном меню выберите команду Action, чтобы открыть панель Action.
В списке Action Toolbox откройте раздел Objects, а в нем -последовательно подразделы Movie -> MovieClip -> Methods.
В подразделе Methods отыщите метод setMask и дважды щелкните на нем мышью, чтобы копировать его в окно сценария;
В поле установки параметров введите имена экземпляров клипов: в поле Object – имя фонового клипа (Fon), в поле Parameters — имя клипа-маски (mask).

1.1.1. Используемые символы

Множество символов используемых в языке СИ можно разделить на пять групп.

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

Таблица 1

Прописные буквы латинского алфавита A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Строчные буквы латинского алфавита a b c d e f g h i j k l m n o p q r s t u v w x y z
Символ подчеркивания _

2. Группа прописных и строчных букв русского алфавита и арабские цифры (табл.2).

Таблица 2

Прописные буквы русского алфавита А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ы Ь Э Ю Я
Строчные буквы русского алфавита а б в г д е ж з и к л м н о п р с т у ф х ц ч ш щ ъ ы ь э ю я
Арабские цифры 0 1 2 3 4 5 6 7 8 9

3. Знаки нумерации и специальные символы (табл. 3). Эти символы используются с одной стороны для организации процесса вычислений, а с другой – для передачи компилятору определенного набора инструкций.

Таблица 2

Символ Наименование Символ Наименование
, запятая ) круглая скобка правая
. точка ( круглая скобка левая
; точка с запятой } фигурная скобка правая
: двоеточие { фигурная скобка левая
? вопросительный знак < меньше
апостроф > больше
! восклицательный знак [ квадратная скобка
| вертикальная черта ] квадратная скобка
/ дробная черта # номер
\ обратная черта % процент
~ тильда & амперсанд
* звездочка ^ логическое не
+ плюс = равно
- мину « кавычки

4. Управляющие и разделительные символы. К той группе символов относятся: пробел, символы табуляции, перевода строки, возврата каретки, новая страница и новая строка. Эти символы отделяют друг от друга объекты, определяемые пользователем, к которым относятся константы и идентификаторы. Последовательность разделительных символов рассматривается компилятором как один символ (последовательность пробелов).

5. Кроме выделенных групп символов в языке СИ широко используются так называемые, управляющие последовательности, т.е. специальные символьные комбинации, используемые в функциях ввода и вывода информации. Управляющая последовательность строится на основе использования обратной дробной черты (\) (обязательный первый символ) и комбинацией латинских букв и цифр (табл.4).

Таблица 4

Управляющая последовательность Наименование Шеснадцатеричная замена
\a Звонок 007
\b Возврат на шаг 008
\t Горизонтальная табуляция 009
\n Переход на новую строку 00A
\v Вертикальная табуляция 00B
\r Возврат каретки 00C
\f Перевод формата 00D
Кавычки 022
\’ Апостроф 027
\0 Ноль-символ 000
\\ Обратная дробная черта 05C
\ddd Символ набора кодов ПЭВМ в восьмеричном представлении
\xddd Символ набора кодов ПЭВМ в шестнадцатеричном представлении

Последовательности вида \ddd и \xddd (здесь d обозначает цифру) позволяет представить символ из набора кодов ПЭВМ как последовательность восьмеричных или шестнадцатеричных цифр соответственно. Например символ возврата каретки может быть представлен различными способами:

\r – общая управляющая последовательность,

\015 – восьмеричная управляющая последовательность,

\x00D – шестнадцатеричная управляющая последовательность.

Следует отметить, что в строковых константах всегда обязательно задавать все три цифры в управляющей последовательности. Например отдельную управляющую последовательность \n (переход на новую строку) можно представить как \010 или \xA, но в строковых константах необходимо задавать все три цифры, в противном случае символ или символы следующие за управляющей последовательностью будут рассматриваться как ее недостающая часть. Например:

«ABCDE\x009FGH» данная строковая команда будет напечатана с использованием определенных функций языка СИ, как два слова ABCDE FGH, разделенные 8-ю пробелами, в этом случае если указать неполную управляющую строку»ABCDE\x09FGH»,то на печати появится ABCDE=|=GH, так как компилятор воспримет последовательность \x09F как символ «=+=».

Отметим тот факт, что, если обратная дробная черта предшествует символу не являющемуся управляющей последовательностью (т.е. не включенному в табл.4) и не являющемуся цифрой, то эта черта игнорируется, а сам символ представляется как литеральный. Например:

символ \h представляется символом h в строковой или символьной константе.

Кроме определения управляющей последовательности, символ обратной дробной черты (\) используется также как символ продолжения. Если за (\) следует (\n), то оба символа игнорируются, а следующая строка является продолжением предыдущей. Это свойство может быть использовано для записи длинных строк.

1.1.2. Константы

Константами называются перечисление величин в программе. В языке СИ разделяют четыре типа констант: целые константы, константы с плавающей запятой, символьные константы и строковыми литералы.

Целая константа: это десятичное, восьмеричное или шестнадцатеричное число, которое представляет целую величину в одной из следующих форм: десятичной, восьмеричной или шестнадцатеричной.

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

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

Шестнадцатеричная константа начинается с обязательной последовательности 0х или 0Х и содержит одну или несколько шестнадцатеричных цифр (цифры представляющие собой набор цифр шеснадцатеричной системы счисления: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F)

      Примеры целых констант:
         Десятичная      Восьмеричная       Шестнадцатеричная
         константа       константа          константа
             16             020                0x10
            127             0117               0x2B
            240             0360               0XF0

Если требуется сформировать отрицательную целую константу, то используют знак «-» перед записью константы (который будет называться унарным минусом). Например: -0x2A, -088, -16 .

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

- десятичные константы рассматриваются как величины со знаком, и им присваивается тип int (целая) или long (длинная целая) в соответствии со значением константы. Если константа меньше 32768, то ей присваивается тип int в противном случае long.

- восьмеричным и шестнадцатеричным константам присваивается тип int, unsigned int (беззнаковая целая), long или unsigned long в зависимости от значения константы согласно табл 5.

Таблица 5

Диапазон шестнадцатеричных констант Диапазон восьмеричных констант Тип
0×0 – 0x7FFF 0 – 077777 int
0X8000 – 0XFFFF 0100000 – 0177777 unsigned int
0X10000 – 0X7FFFFFFF 0200000 – 017777777777 long
0X80000000 – 0XFFFFFFFF 020000000000 – 037777777777 unsigned long

Для того чтобы любую целую константу определить типом long, достаточно в конце константы поставить букву «l» или «L». Пример:

5l, 6l, 128L, 0105L, OX2A11L.

Константа с плавающей точкой – десятичное число, представленное в виде действительной величины с десятичной точкой или экспонентой. Формат имеет вид:

[ цифры ].[ цифры ] [ Е|e [+|-] цифры ] .

Число с плавающей точкой состоит из целой и дробные части и (или) экспоненты. Константы с плавающей точкой представляют положительные величины удвоенной точности (имеют тип double). Для определения отрицательной величины необходимо сформировать константное выражение, состоящее из знака минуса и положительной константы.

Примеры: 115.75, 1.5Е-2, -0.025, .075, -0.85Е2

Символьная константа – представляется символом заключенном в апострофы. Управляющая последовательность рассматривается как одиночный символ, допустимо ее использовать в символьных константах. Значением символьной константы является числовой код символа. Примеры:

‘ ‘- пробел ,

‘Q’- буква Q ,

‘\n’ – символ новой строки ,

‘\\’ – обратная дробная черта ,

‘\v’ – вертикальная табуляция .

Символьные константы имеют тип int и при преобразовании типов дополняются знаком.

Строковая константа (литерал) – последовательность символов (включая строковые и прописные буквы русского и латинского а также цифры) заключенные в кавычки («) . Например: «Школа N 35″, «город Тамбов», «YZPT КОД».

Отметим, что все управляющие символы, кавычка («), обратная дробная черта (\) и символ новой строки в строковом литерале и в символьной константе представляются соответствующими управляющими последовательностями. Каждая управляющая последовательность представляется как один символ. Например, при печати литерала «Школа \n N 35″ его часть «Школа» будет напечатана на одной строке, а вторая часть «N 35″ на следующей строке.

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

Строковый литерал имеет тип char[] . Это означает, что строка рассматривается как массив символов. Отметим важную особенность, число элементов массива равно числу символов в строке плюс 1, так как нулевой символ (символ конца строки) также является элементом массива. Все строковые литералы рассматриваются компилятором как различные объекты. Строковые литералы могут располагаться на нескольких строках. Такие литералы формируются на основе использования обратной дробной черты и клавиши ввод. Обратная черта с символом новой строки игнорируется компилятором, что приводит к тому, что следующая строка является продолжением предыдущей. Например:

«строка неопределенной \n

длины»

полностью идентична литералу

«строка неопределенной длинны» .

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

1.1.3. Идентификатор

Идентификатором называется последовательность цифр и букв, а также специальных символов, при условии, что первой стоит буква или специальный символ. Для образования идентификаторов могут быть использованы строчные или прописные буквы латинского алфавита. В качестве специального символа может использоваться символ подчеркивание (_). Два идентификатора для образования которых используются совпадающие строчные и прописные буквы, считаются различными. Например: abc, ABC, A128B, a128b .

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

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

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

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

1.1.4. Ключевые слова

Ключевые слова – это зарезервированные идентификаторы, которые наделены определенным смыслом. Их можно использовать только в соответствии со значением известным компилятору языка СИ.

Приведем список ключевых слов

   auto      double     int   struct  break   else   long   switch
   register  tupedef    char  extern  return  void   case   float
   unsigned  default    for   signed  union   do     if     sizeof
   volatile  continue   enum  short   while

Кроме того в рассматриваемой версии реализации языка СИ, зарезервированными словами являются :

_asm, fortran, near, far, cdecl, huge, paskal, interrupt .

Ключевые слова far, huge, near позволяют определить размеры указателей на области памяти. Ключевые слова _asm, cdelc, fortran, pascal служат для организации связи с функциями написанными на других языках, а также для использования команд языка ассемблера непосредственно в теле разрабатываемой программы на языке СИ.

Ключевые слова не могут быть использованы в качестве идентификаторов.

1.1.5. Использование комментариев в тексте программы

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

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

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

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

Типы данных и их объявление

Важное отличие языка СИ от других языков (PL1, FORTRAN, и др.) является отсутствие принципа умолчания, что приводит к необходимости объявления всех переменных используемых в программе явно вместе с указанием соответствующих им типов.

Объявления переменной имеет следующий формат:

   [спецафикатор-класа-памяти]  спецификатор-типа
   описатель [=инициатор] [,описатель [= инициатор] ]...

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

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

Инициатор – задает начальное значение или список начальных значений, которые (которое) присваивается переменной при объявлении.

Спецификатор класса памяти – определяется одним из четырех ключевых слов языка СИ: auto, extern, register, static, и указывает,каким образом будет распределяться память под объявляемую переменную, с одной стороны, а с другой, область видимости этой переменной, т.е., из каких частей программы можно к ней обратиться.

1.2.1 Категории типов данных

Ключевые слова для определения основных типов данных

     Целые типы :                 Плавающие типы:
       char                         float
       int                          double
       short                        long  double
       long
       signed
       unsigned

Переменная любого типа может быть объявлена как немодифицируемая. Это достигается добавлением ключевого слова const к спецификатору-типа. Объекты с типом const представляют собой данные используемые только для чтения, т.е. этой переменной не может быть присвоено новое значение. Отметим, что если после слова const отсутствует спецификатор-типа, то подразумевается спецификатор типа int. Если ключевое слово const стоит перед объявлением составных типов (массив, структура, смесь, перечисление), то это приводит к тому, что каждый элемент также должен являться немодифицируемым, т.е. значение ему может быть присвоено только один раз.

Примеры:

      const double A=2.128E-2;
      const B=286; (подразумевается const int B=286)

Примеры объявления составных данных будут рассмотрены ниже.