все возможные значения порядкового типа представляют собой ограниченное упорядоченное множество; к любому порядковому типу может быть применена стандартная функция Ord, которая в качестве результата возвращает порядковый номер конкретного значения в данном типе; к любому порядковому типу могут быть применены стандартные функции Pred и Succ, которые возвращают предыдущее и последующее значения соответственно; к любому порядковому типу могут быть применены стандартные функции Low и High, которые возвращают наименьшее и наибольшее значения величин данного типа.

В языке Паскаль введены понятия эквивалентности и совместимости типов. Два типа Т1 и Т2 являются эквивалентными (идентичными), если выполняется одно из двух условий:

    Т1 и Т2 представляют собой одно и то же имя типа; тип Т2 описан с использованием типа Т1 с помощью равенства или последовательности равенств. Например:

·  type

·  T1 = Integer;

·  T2 = T1;

·  T3 = T2;

Менее строгие ограничения накладываются на совместимость типов. Так, типы являются совместимыми, если:

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

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

Имя_Типа(переменная или значение)

Напрмер, Integer('Z') представляет собой значение кода символа 'Z' в двухбайтном представлении целого числа, а Byte(534) даст значение 22, поскольку целое число 534 имеет тип Word и занимает два байта, а тип Byte занимает один байт, и в процессе приведения старший байт будет отброшен.

Имена и доступ к файлам в Turbo Pascal.

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

Любой файл имеет три характерные особенности. Во-первых, у него есть имя, что дает возможность программе работать одновременно с несколькими файлами. Во-вторых, он содержит компоненты одного типа. Типом компонентов может быть любой тип Турбо Паскаля, кроме файлов. Иными словами, нельзя создать «файл файлов». В-третьих, длина вновь создаваемого файла никак не оговаривается при его объявлении и ограничивается только емкостью устройств внешней памяти.

Имя каждого файла хранится в каталоге диска (в оглавлении диска). Полное имя файла состоит из 2-х частей: основного имени и расширения. Расширение отделяется от основного имени точкой: основное имя. расширение

например, "myfile. txt"

Основное имя может состоять не более чем из 8-ми. Расширение может состоять не более чем из 3-х символов, оно указывает на тип информации, хранимой в файле. Если расширение используется, то лучше давать ему общепринятое название:

.ASM - в файле хранится текст программы, написанной на Ассемблере;

.BAS - текст программы на Бэйсике;

.PAS - текст программы на Паскале;

.C - текст программы на языке "Си".

.TXT, .DOC - текстовые файлы произвольной тематики;

.DAT - файл данных (исходные данные для программы, либо результаты расчета);

.BAK - резервная копия файла, старая версия модифицированного файла (если файл записывается на диск, на котором уже хранится записанный ранее одноименный файл, то старая версия файла не стирается, вместо этого в ее имени расширение автоматически меняется на ".bak");

.BAT - пакетный файл - программа, состоящая из команд DOS;

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

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

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

Файловый тип или переменную файлового типа можно задать одним из трех способов:

<имя> = FILE OF <тип>; 

<имя> = TEXT; 

<имя> = FILE;

Здесь <имя> - имя файлового типа (правильный идентификатор); 

FILE, OF - зарезервированные слова (файл, из); 

TEXT - имя стандартного типа текстовых файлов; 

<тип> - любой тип Турбо Паскаля, кроме файлов.

Например:

type

product = record

name : String;

code : Word;

cost : comp 

end;

textSO = file of String [80] ;

var

fl : file of char;

f2 : text;

f3 : file;

f4 : text80;

f5 : file of product;

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

    типизированные файлы (задаются предложением FILE OF...); текстовые файлы (определяются типом TEXT); нетипизированные файлы (определяются типом FILE).

В наших примерах F1, F4 и F5- типизированные файлы, F2 - текстовый файл, F3 - нетипизированный файл. Вид файла, вообще говоря, определяет способ хранения информации в файле. При объявлении уже существующих файлов программист должен сам следить за соответствием вида объявления характеру файла.

Доступ к файлам.

Любой программе доступны два предварительно объявленных файла со стандартными файловыми переменными: INPUT - для чтения данных с клавиатуры и OUTPUT - для вывода на экран. Стандартный Паскаль требует обязательного упоминания этих файлов в заголовке программы, например, так:

PROGRAM NameOfProgram(input, output) ;

В Турбо Паскале это необязательно, вот почему заголовок программы можно опускать.

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

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

ASSIGN (<ф. п.>, <имя файла или л. у.>); .

Здесь <ф. п.> - файловая переменная (правильный идентификатор, объявленный в программе как переменная файлового типа); 

<имя файла или л. у.> - текстовое выражение, содержащее имя файла или логическое устройство.

Если имя файла задается в виде пустой строки, например, ASSIGN(f, ' '), то в зависимости от направления обмена данными файловая переменная связывается со стандартным файлом INPUT или OUTPUT.

Имена файлов

Имя файла - это любое выражение строкового типа, которое строится по правилам определения имен в MS-DOS (операционной системе ПК):

    имя содержит до восьми разрешенных символов; разрешенные символы - это прописные и строчные латинские буквы, цифры, и символы: 

! @ # $ % ^ & ( ) ' ~ - _

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

Имя диска - это один из символов A...Z, после которого ставится двоеточие. Имена А: и В: относятся к дисковым накопителям на гибких дискетах, имена С:, D: и т. д. - к жестким дискам. За именем диска может указываться имя каталога, содержащего файл. Весь путь к файлу отделяется от имени файла обратной косой чертой.

var

finp: text;

fout:file of String;

const

name = 'c:\dir\subdir\out. txt'; 

begin

assign(finp,'123.dat') ;

assign(fout, name); 

end.

Инициация файла

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

Для чтения файл инициируется с помощью стандартной процедуры RESET:

RESET (<ф. п.>);

Здесь <ф. п.> - файловая переменная, связанная ранее процедурой ASSIGN с уже существующим файлом или логическим устройством-приемником информации.

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

Если делается попытка инициировать чтение из несуществующего файла или из логического устройства PRN, возникает ошибка периода исполнения, которая может быть сообщена программе ненулевым значением встроенной функции IORESULT типа WORD. Например, следующий фрагмент программы позволяет установить, существует ли требуемый файл на диске:

var

f : file of char; 

begin

assign(f,'myfile. dat');

{$I-} {Отключаем контроль ошибок ввода-вывода} 

reset(f);

{$I+} {Включаем контроль ошибок ввода-вывода} 

if IOResult <> 0 then

 ..... {Файл не существует

else

..... {Файл существует} 

end.

В этом фрагменте с помощью директивы компилятора {$I-} отключается автоматический контроль ошибок ввода-вывода. Если этого не сделать, то отсутствие файла приведет к аварийному завершению программы.

В Турбо Паскале разрешается обращаться к типизированным файлам, открытым процедурой RESET (т. е. для чтения информации), с помощью процедуры WRITE (т. е. для записи информации). Такая возможность позволяет легко обновлять ранее созданные типизированные файлы и при необходимости расширять их. Для текстовых файлов, открытых процедурой RESET, нельзя использовать процедуру WRITE или WRITELN.

Стандартная процедура REWRITE (<ф. п.>).

инициирует запись информации в файл или в логическое устройство, связанное ранее с файловой переменной <ф. п.>. Процедурой REWRITE нельзя инициировать запись информации в ранее существовавший дисковый файл: при выполнении этой процедуры старый файл уничтожается и никаких сообщений об этом в программу не передается. Новый файл подготавливается к приему информации и его указатель принимает значение 0.

Стандартная процедура APPEND (<ф. п.>) инициирует запись в ранее существовавший текстовый файл для его расширения, при этом указатель файла устанавливается в его конец. Процедура APPEND применима только к текстовым файлам, т. е. их файловая переменная должна иметь тип TEXT (см. выше). Процедурой APPEND нельзя инициировать запись в типизированный или нетипизированный файл. Если текстовый файл ранее уже был открыт с помощью RESET или REWRITE, использование процедуры APPEND приведет к закрытию этого файла и открытию его вновь, но уже для добавления записей.

Процедуры и функции для работы с файлами

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

Процедура Close. Закрывает файл, однако связь файловой переменной с именем файла, установленная ранее процедурой ASSIGN, сохраняется. Формат обращения:

CLOSE (<ф. п.>)

При создании нового или расширении старого файла процедура обеспечивает сохранение в файле всех новых записей и регистрацию файла в каталоге.

Процедура RENAME. Переименовывает файл. Формат обращения:

RENAME (<ф. п.>, <новое имя>)

Здесь <новое имя> - строковое выражение, содержащее новое имя файла. Перед выполнением процедуры необходимо закрыть файл, если он ранее был открыт.

Процедура ERASE. Уничтожает-файл. Формат обращения:

ERASE (<ф. п.>)

Перед выполнением процедуры необходимо закрыть файл, если он ранее был открыт процедурами RESET, REWRITE или APPEND.

Следующий фрагмент программы показывает, как можно использовать процедуры RENAME и CLOSE при работе с файлами. Предположим, что требуется отредактировать файл, имя которого содержит переменная NAME. Перед редактированием необходимо убедиться, что нужный файл имеется на диске, и переименовать его - заменить расширение этого файла на ВАК (страховочная копия). Если файл с таким расширением уже существует, его надо стереть.

var

fi : text; {Исходный файл}

fo : text; {Отредактированный файл}

name : String;

name_bak: String;

k, i: Word; 

const

bak = '.bak'; 

Процедура FLUSH. Очищает внутренний буфер файла и, таким образом, гарантирует сохранность всех последних изменений файла на диске. Формат обращения:

FLUSH (<ф. п.>)

Любое обращение к файлу в Турбо Паскале осуществляется через некоторый буфер, что необходимо для согласования внутреннего представления файлового компонента (записи) с принятым в ДОС форматом хранения данных на диске. В ходе выполнения процедуры FLUSH все новые записи будут действительно записаны на диск. Процедура игнорируется, если файл был инициирован для чтения процедурой RESET.

Функция EOF (<ф. п. >) : BOOLEAN. Логическая функция, тестирующая конец файла. Возвращает TRUE, если файловый указатель стоит в конце файла. При записи это означает, что очередной компонент будет добавлен в конец файла, при чтении - что файл исчерпан.

Текстовые файлы

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

Текстовый файл трактуется в Турбо Паскале как совокупность строк переменной длины. Доступ к каждой строке возможен лишь последовательно, начиная с первой. При создании текстового файла в конце каждой записи (строки) ставится специальный признак EOLN (End OfLiNe - конец строки), а в конце всего файла - признак EOF (End Of File - конец файла). Эти признаки можно протестировать одноименными логическими функциями (см. ниже). При формировании текстовых файлов используются следующие системные соглашения:

EOLN - последовательность кодов ASCII #13 (CR) и #10 (LF);

EOF - код #26 стандарта ASCII.

Для доступа к записям применяются процедуры READ, READLN, WRITE, WRITELN. Они отличаются возможностью обращения к ним с переменным числом фактических параметров, в качестве которых могут использоваться символы, строки и числа. Первым параметром в любой из перечисленных процедур может стоять файловая переменная. В этом случае осуществляется обращение к дисковому файлу или логическому устройству, связанному с переменной процедурой ASSIGN. Если файловая переменная не указана, происходит обращение к стандартным файлам INPUT к OUTPUT.

Процедура READ. Обеспечивает ввод символов, строк и чисел. Формат обращения:

READ (<ф. п.>,<сп. ввода>) или READ (<сп. ввода>)

Здесь <сп. ввода> - список ввода: последовательность из одной или более переменных типа CHAR, STRING, а также любого целого или вещественного типа.

При вводе переменных типа CHAR выполняется чтение одного символа из файла и присваивание считанного значения переменной. Если перед выполнением чтения указатель файла достиг конца очередной строки, то результатом чтения будет символ CR (ASCII код #13), а если достигнут конец файла, то - символ EOF (код #26). При вводе с клавиатуры символ CR вводится при нажатии на клавишу Enter, а символ EOF - при одновременном нажатии клавиш CTRL и Z.

При вводе переменных типа STRING количество считанных процедурой и помещенных в строку символов равно максимальной длине строки, если только раньше не встретились символы CR или EOF. В этом случае сами символы CR и EOF в строку не помещаются. Если количество символов во входном потоке данных больше максимальной длины строки, «лишние» символы до конца строки отбрасываются, а новое обращение к READ возвращает пустую строку.

При вводе числовых переменных процедура READ вначале выделяет подстроку во входном потоке по следующему правилу: все ведущие пробелы, символы табуляции и маркеры конца строк EOLN пропускаются; после выделения первого значащего символа, наоборот, любой из перечисленных символов или символ EOF служат признаком конца подстроки. Выделенная таким образом подстрока затем рассматривается как символьное представление числовой константы соответствующего типа и преобразуется во внутреннее представление, а полученное значение присваивается переменной. Если в подстроке был нарушен требуемый формат представления численной константы, возникает ошибка ввода-вывода. Если при пропуске ведущих пробелов встретился символ EOF, переменная получает значение 0. Отметим, что в Турбо Паскале не предусмотрен ввод шестнадцатеричных констант.

При использовании процедуры READ применительно к стандартному файлу INPUT, т. е. при вводе с клавиатуры, символьные строки запоминаются в буфере, который передается процедуре только после нажатия на клавишу Enter. Это позволяет редактировать данные при их вводе. Для редактирования используются следующие клавиши:

    Backspace, Ctrl-H, перевод курсора влево - стирают символ слева от курсора; перевод курсора вправо - восстанавливает символ за символом предыдущую строку ввода; Ctrl-Z Enter - завершает ввод по процедуре READ; оставшиеся «лишние» символьные параметры принимают значение CHR(26), строки возвращаются пустыми, а численные переменные остаются без изменения.

Максимальная длина буфера ввода при работе с клавиатурой составляет 127 символов. Ввод с клавиатуры по процедуре READ сопровождается эхо-повтором вводимых символов на экране ПК.

Процедура READ прекрасно приспособлена к вводу чисел. При обращении к ней за вводом очередного целого или вещественного числа процедура «перескакивает» маркеры конца строк, т. е. фактически весь файл рассматривается ею как одна длинная строка, содержащая текстовое представление чисел. В сочетании с проверкой конца файла функцией EOF процедура READ позволяет организовать простой ввбд массивов данных, например, так:

const

N = 1000; {Максимальная длина ввода}

var

f : text;

m : array [1..N] of real; 

i : Integer; 

begin

assign(f, 'prog. dat') ; 

reset(£); i := 1;

while not EOF(f) and (i <= N) do 

begin

read(f, m[i] ) ; 

inc(i) 

end; 

close(f);

.......

end.

Процедура READLN. Обеспечивает ввод символов, строк и чисел. Эта процедура идентична процедуре READ за исключением того, что после считывания последней переменной оставшаяся часть строки до маркера EOLN пропускается, поэтому следующее обращение к READLN или READ начинается с первого символа новой строки. Кроме того, эту процедуру можно вызвать без параметра <cn. вводa> (см. процедуру READ), что приведет к пропуску всех символов текущей строки вплоть до EOLN.

Если процедура используется для чтения с клавиатуры, нажатие на клавишу Enter отобразится на экране как последовательность CR + LF и курсор будет помещен в начало следующей строки, в то время как в процедуре READ эхо-повтором клавиши Enter является символ CR и курсор помещается в начало текущей строки.

Процедура WRITE. Обеспечивает вывод информации в текстовый файл или передачу ее на логическое устройство. Формат обращения:

WRITE (<ф. п.>, <сп. вывода>) или WRITE (<сп. вывода>)

Здесь <сп. вывода> - список вывода: последовательность из одного или более выражений типа CHAR, STRING, BOOLEAN, a также любого целого или вещественного типа.

Файловая переменная <ф. п.>, если она указана, должна быть предварительно описана как переменная типа TEXT и связана с именем файла или логическим устройством процедурой.

Процедура WRITELN. Эта процедура полностью идентична процедуре WRITE за исключением того, что выводимая строка символов завершается кодами CR и LF. При вызове WRITELN можно опускать параметр <сп. вывода>: в этом случае в файл передается маркер EOLN, что при выводе на экран приведет к переводу курсор» в начало следующей строки.

Логическая функция EOLN. Возвращает TRUE, если во входном текстовом файле достигнут маркер конца строки. Формат обращения:

EOLN<ф. п.>

Если параметр <ф. п.> опущен, функция проверяет стандартный файл INPUT.

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

Типизированные файлы

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

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

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

READ (<ф. п.>,<сп. ввода>)

Здесь <cn. вводa> - список ввода, содержащий одну или более переменных такого же типа, что и компоненты файла.

Файловая переменная <ф. п.> должна быть объявлена предложением FILE OF... и связана с именем файла процедурой ASSIGN. Файл необходимо открыть процедурой RESET. Если файл исчерпан, обращение к READ вызовет ошибку ввода-вывода.

Процедура WRITE. Используется для записи данных в типизированный файл. Формат обращения:

WRITE (<ф. п.>,<сп. вывода>)

Здесь <сп. вывода> - список вывода, содержащий одно или более выражений того же типа, что и компоненты файла.

Процедура SEEK. Смещает указатель файла к требуемому компоненту. Формат обращения:

SEEK (<ф. п.>,<N компонента>)

Здесь <N компонента> - выражение типа LONGINT, указывающее номер компонента файла.

Первый компонент файла имеет номер 0. Процедуру нельзя применять к текстовым файлам.

Функция FILESIZE. Возвращает значение типа LONGINT, которое содержит количество компонентов файла. Формат обращения: '

FILESIZE (<ф. п.>)

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

seek (FileVar, FileSize(FileVar)); 

где FILEVAR - файловая переменная.

Функция.FILEPOS. Возвращает значение типа LONGINT, содержащее порядковый номер компонента файла, который будет обрабатываться следующей операцией ввода-вывода. Формат обращения:

FILEPOS (<ф. п.>)

Функцию нельзя использовать для текстовых файлов. Первый компонент файла имеет порядковый номер 0.

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

Нетипизированные файлы объявляются как файловые переменные типа FILE и отличаются тем, что для них не указан тип компонентов. Отсутствие типа делает эти файлы, с одной стороны, совместимыми с любыми другими файлами, а с другой - позволяет организовать высокоскоростной обмен данными между диском и памятью.

При инициации нетипизированного файла процедурами RESET или REWRITE можно указать длину записи нетипизированного файла в байтах. Например, так:

var

f: file;

begin

.......

assign(f, 'myfile. dat') 

reset(f,512);

.......

end.

Длина записи нетипизированного файла указывается вторым параметром при обращении к процедурам RESET или REWRITE, в качестве которого может использоваться выражение типа WORD. Если длина записи не указана, она принимается равной 128 байтам.

Турбо Паскаль не накладывает каких-либо ограничений на длину записи нетипизированного файла.

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

BLOCKREAD (<ф. п. >, <буф>, < [, <NN>] )

Операторы вводы/ вывода в Turbo Pascal.

Операторы вывода данных на экран Write("список_переменных"); или Writeln("список_переменных ")

Например, операторы Write(a, b, c); или Write(a); Write(b); Write(c); или Writeln(a, b, c); - выводят значения переменных "a", "b", "c" начиная с текущей позиции курсора.

После вывода данных оператором Write("сп"); курсор остается за последним выведенным символом.

Оператор Writeln("сп"); после вывода данных переводит курсор на первую позицию следующей строки.

Оператор Writeln; переводит курсор на начало следующей строки экрана.

Оператор Write('Моя первая программа!'); выводит на экран указанный текст.

В операторах вывода допускается производить арифметические действия, например, оператор Writeln(32*a+Sin(x));

При выводе данных можно задавать формат вывода.

Для этого после имени переменной ставится знак двоеточие " : " , например: Writeln(a:5:2); - при выводе значения переменной вещественного типа отводится 5 позиций (включая отрицательный знак и точку), из них 2 позиции отводится для вывода цифр в дробной части. При выводе значения переменной целого типа задается количество позиций для числа (включая отрицательный знак), например: Writeln(i:8);

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

При выводе число или текст выравниваются по правому краю отведенного поля, например: если а:=5. 02;, то оператор Writeln('а=', a:6:2); выведет на экран: а= _ _ 5. 02, если n:= '116'; s:= 'Школа N';, то оператор Writeln(s:7, n:6); выведет на экран надпись: Школа N _ _ _ 116 .

Для выравнивания числа или текста по левому краю отведенного поля первый знак формата задается отрицательным, например: оператор Writeln('а=', a:-8:2); выведет на экран надпись: а=5. 02. При недостатке количества позиций для вывода число или текст выводятся полностью, а формат игнорируется, кроме формата вывода дробной части числа. Если формат вывода не задавать, то значения целых и строковых переменных выводятся полностью, а вещественных - в экспоненциальной форме с количеством цифр, соответствующих типу переменной.

Операторы ввода данных с клавиатуры Read("сп"); или Readln("сп");

Оператор Readln(a); будет ждать ввода данных. Следует набрать на клавиатуре значение переменной "а", например, число и нажать клавишу Enter.

Для ввода значений нескольких переменных, например, a, b, c применяются конструкции вида: Readln(a); Readln(b); Readln(c); или Readln(a, b, c);

При вводе нескольких числовых данных, например, оператором Readln(a, b, c); необходимо после набора каждого значения переменной нажимать клавишу SpaceBar или Enter, а в конце ввода - Enter.

При вводе значений символьных переменных нажатие клавиши Enter приводит к присвоению символьной переменной значения кода клавиши Enter (#13), поэтому значения символьных переменных вводятся одна за другой без нажатия Enter или SpaceBar (#32).

Например, оператор: Readln(с1, с2, с3, c4); ожидает ввода значений символьных переменных с1, с2, с3, c4, т. е. набора на клавиатуре символов, например: "У", "Р", "А", "!" и нажатия Enter. Тогда оператор Writeln(с1, с2, с3, c4); выведет на экран надпись: УРА!

Оператор Readln; без параметров служит для приостановки выполнения программы и ожидает нажатия клавиши Enter, т. е. применяется с целью приостановки вывода информации на экран для просмотра результатов. При вводе данных предпочтительнее использовать оператор Readln, поскольку оператор Read после срабатывания не считывает управляющий код (#13), который остается в буфере клавиатуры.

Операции в Turbo Pascal.

Математические операции

В таблице приведены основные математические операции Турбо Паскаль.

Символ операции

Название операции

Пример

*

умножение

2*3 (результат: 6)

/

деление

30/2 (результат: 1.5E+01)

+

сложение

2+3 (результат: 5)

-

вычитание

5-3 (результат: 2)

div

целочисленное деление

5 div 2 (результат: 2)

mod

остаток от деления

5 mod 2 (результат: 1)

Логические операции

Над логическими аргументами в Турбо Паскаль определены следующие операции:

1.  NOT - логическое отрицание ("НЕ")

2.  AND - логическое умножение ("И")

3.  OR - логическое сложение ("ИЛИ")

4.  XOR - логическое "Исключающее ИЛИ"

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

A

B

 not A 

 A and B 

 A or B 

 A xor B 

true

true

false

true

true

false

true

false

false

true

true

false

true

true

false

true

true

 false 

 false 

false

false

false

Операции отношения

К операциям отношения в Турбо Паскаль относятся такие операции, как:

1.  > - больше

2.  < - меньше

3.  = - равно

4.  <> - не равно

5.  >= - больше или равно

6.  <= - меньше или равно

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

Приоритет операций

Порядок вычисления выражения определяется старшинством (приоритетом) содержащихся в нем операций. В языке Паскаль принят следующий приоритет операций:

1.  унарная операция not, унарный минус -, взятие адреса @

2.  операции типа умножения: * / div mod and

3.  операции типа сложения: + - or xor

4.  операции отношения: = <> < > <= >= in

Порядок выполнения операций переопределить можно с помощью скобок. Например 2*5+10 равно 20, но 2*(5+10) равно 30.

Условный оператор. Оператор выбора в Turbo Pascal.

В языке Паскаль используется два оператора для реализации условных переходов - IF и CASE, а также оператор безусловного перехода GOTO.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4