Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
chast3.doc
Скачиваний:
8
Добавлен:
03.11.2018
Размер:
345.09 Кб
Скачать

14.4.4 Нетипизированные файлы.

Нетипизированными или без типовыми файлами, называются файлы, задающиеся следующим образом.

Var

NEWFILE:file;

Для нетипизированнтых файлов используются те же процедуры и функции, что и для типизированных, кроме Read, Write. Вместо них используются соответствующие им по смыслу:

Blokread(F,Buf,N[,Result])

Blokrwrite(F,Buf,N[,Result])

Где F имеет то же значение что и выше, Buf- имя буферной переменной, которая будет участвовать в обмене данными с дисками (ее размер 128*N); N – количество записей по 128 байт каждая, Result – необязательный параметр, содержащий при выходе из процедуры количество фактических обработанных записей.

15. 1. Структура программы и простые типы данных

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

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

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

Программа на языке С может иметь следующую структуру:

программа С <раздел препроцессора>

<раздел функций>

<раздел препроцессора> #<опция препроцессора

{#<опция препроцессора>}

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

Так, например, в результате обработки директивы #include <<имя файла>> (внешние угловые скобки – символы языка С) в текст программы вместо этой директивы будет помещен файл описания стандартных функций системы (файл библиотеки). Файлы библиотеки языка С им囑ют расширение h (например, stdio.h – файл описания функций ввода/вывода).

Директива #define <идентификатор> <конструкция С> задает так называемое макроопределение. В результате обработки этой директивы каждое вхождение <идентификатор> в текст программы после макроопределения заменяется на <конструкция С>. Например, #define n 100 – макроопределение целочисленной константы n.

Внимание: в языке С строчные и прописные буквы во всех конструкциях различаются. Так N и n – различные идентификаторы.

<раздел функций> <описание функции>

{<описание функции>}

<описание функции> [<идентификатор типа>] <идентификатор>([< формальные параметры>])

<составной оператор>

Здесь <идентификатор типа> – тип возвращаемого значения (тип значения <идентификатор>).

<формальные параметры>

<идентификатор типа> <идентификатор>{, <идентификатор типа> <идентификатор>}

Идентификатор типа

Размер, бит

Диапазон

unsigned char

8

0÷255

Char

8

-128÷127

Enum

16

-32768÷32767

unsigned short

16

0÷65535

Short

16

-32768÷32767

unsigned int

16

0÷65535

Int

16

-32768÷32767

unsigned long

32

0÷4294967295

Long

32

-2147483648÷2147483647

Float

32

3.4∙10-38÷3.4 10+38

Double

64

1.7∙10-308÷1.7 10+308

long double

80

1.7 10-4932÷1.7 10+4932

Таблица 15.1 <идентификатор типа> задается стандартными служебными словами int (целый), long (длинный), short (короткий), unsigned (беззнаковый), char (символьный), float (действительный одинарной точности), double (действительный двойной точности), pointer (указатель), enum (перечислимый). Допустимые в языке типы данных, размеры выделяемой памяти в битах и диапазон представления приведены в табл. 1.1.

<составной оператор> {

<оператор>|<выражение>;

{<оператор>|<выражение>;}

}

Здесь первая открывающаяся { и последняя закрывающаяся } являются символами алфавита языка С. | – метасимвол. Значение функции определяется значением <выражения> необязательного оператора return <выражение>, вложенного в <составной оператор>. Если значение функции не определяется (оператор return <выражение> отсутствует), то рекомендуем в качестве типа значения использовать void (отсутствие типа).

В <составном операторе> могут содержаться операторы резервирования памяти, с помощью которых описываются локальные переменные.

<резервирование памяти> <идентификатор типа> <идентификатор>{, <идентификатор>}

Например, оператор int i, j; описывает переменные i и j как целые, а оператор float t; определяет переменную t как действительную одинарной точности.

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