Язык программирования Turbo Pascal 7.0

История развития языков программирования. Понятие алгоритма и схемы алгоритмов. Характеристика языка Turbo Pascal. Классификация типов данных и операторов языка Turbo Pascal 7.0. Использование процедур и функций в программах. Программы обработки данных.

Рубрика Программирование, компьютеры и кибернетика
Вид учебное пособие
Язык русский
Дата добавления 13.06.2016
Размер файла 515,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

VAR

имя1: тип1;

список имен: тип;

Например,

VAR

X, Y: real;

Z: integer;

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

1. Среди глобальных переменных не может быть двух с одинаковым идентификатором.

2. Среди локальных переменных в пределах одной процедуры или функции не может быть двух с одинаковым идентификатором.

3. В тексте программы любой глобальный идентификатор переменной может дублировать любой локальный идентификатор переменной.

3.3 Простые типы данных

Простой тип определяет упорядоченное множество значений параметра. В Turbo Pascal имеются следующие группы простых типов:

· целые (целочисленные) типы;

· вещественные типы;

· логический тип;

· символьный тип;

· перечисляемый тип;

· тип-диапазон.

Все простые типы, за исключением вещественных, называются порядковыми типами. Для величин порядковых типов определены стандартные процедуры и функции: Dec, Inc, Ord, Pred, Succ.

В табл. 3.2 приведены простые типы данных языка Turbo Pascal, объем памяти, необходимый для хранения одной переменной указанного типа и множество допустимых значений.

Для работы с символьной информацией в Turbo Pascal 7.0 используются данные символьного типа (Char).

Таблица 3.2

Простые типы данных Turbo Pascal

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

Длина (байт)

Диапазон значений

Целочисленные типы

Integer

2

-32768..32767

Byte

1

0..255

Word

2

0..65535

ShortInt

1

-128..127

LongInt

4

-2147483648..2147483647

Вещественные типы

Real

6

2,9x10-39..1,7x10+38

Single

4

1,5x10-45..3,4x10+38

Double

8

5,0x10-324..1,7x10+308

Extended

10

1,9x10-4951..1,1x10+4932

Comp

8

-9,2x10+18..9,2x10+18

Логический тип

Boolean

1

true, false

ByteBool

1

true, false

WordBool

2

true, false

LongBool

4

true, false

Символьный тип

Char

1

все символы кода ASCII

Символьный тип представляет собой тип данных, предназначенный для хранения одного символа из 256 символов кода ASCII. Символы в ЭВМ представляются двоичными кодами. Для латинских букв коды упорядочены по возрастанию в соответствии их расположением в алфавите от 'А' до 'Z', от 'a' до 'z'.

Задаются переменные символьного типа следующим образом:

CH_1:= 'А'; CH_2:=#65; {код А}

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

Ord (символ) - вычисляет порядковый номер (код) символа;

Chr (код) - определяет символ с заданным кодом;

Pred (символ) - определяет символ, имеющий код, предшествующий данному;

Succ (символ) - определяет символ, имеющий код, следующий за данным.

Пример.

Ord('A') => 65; Pred('C') => 'B'

Сhr (66) => 'B'; Succ('C') => 'D'

Для литер из интервала 'a'..'z' применима функция UpCase(C), которая переводит эти литеры в верхний регистр 'A'..'Z'.

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

type

<имя типа> = (<идентификатор 1, идентификатор 2, ... , идентификатор N>);)

Важно, в каком порядке перечислены идентификаторы при определении типа, т. к. первому идентификатору присваивается порядковый номер 0, второму - 1 и т. д.

Один и тот же идентификатор можно использовать в определении только одного перечисляемого типа. Функция Ord от величины перечисляемого типа дает порядковый номер ее значения.

Пример.

type Operat = (Plus, Minus, Mult, Divide);

Логический тип является частным случаем перечисляемого:

type Boolean = (False, True);

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

type <имя типа> = <мин. значение> . . <макс. значение>;

Минимальное значение при определении такого типа не должно быть больше максимального.

Пример.

type

Dec = 1..10; {числа от 1 до 10}

Alphabet = `A'..'Z'{алфавит}

3.4 Структурированные типы данных

3.4.1 Общая характеристика структурированных типов данных

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

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

В Turbo Pascal 7.0 определены пять структурированных типов данных:

ь Массив (Array)- это упорядоченный набор переменных одного типа, которые адресуются с помощью некоторого индекса.

ь Строка (String) - это упакованный массив, компоненты которого имеют тип Char и тип индекса имеет нижнюю границу равную одному.

ь Множество (Set) - это совокупность элементов одного и того же перечисляемого типа.

ь Запись (Record) - это совокупности элементов разных типов, имеющих общее имя и назначение.

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

3.4.2 Массивы (array)

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

Тип элементов (компонент) может быть любым, принятым в Turbo Pascal, кроме файлового.

Каждый элемент массива имеет свой индекс.

Индекс - это число, переменная или выражение перечисляемого целого или символьного типа. Количество индексов называется размерностью массива.

По количеству индексов различают:

- одномерные массивы (последовательность чисел, символов): х1, x2, x3, ..., xn - 1 индекс;

- многомерные массивы:

- двумерные массивы (матрицы) вида:

- трехмерные и т.д. массивы.

Для описания массива используется служебное слово Array.

Кроме того, необходимо задать:

1) имя массива;

2) диапазон изменения каждого индекса.

Массивы описываются в разделе описания переменных (т.е. после служебного слова Var), например:

Var

Имя_Массива: Array [Диапазоны_индексов] Of Тип_Элементов_Массива;

где Диапазоны_индексов - список границ изменения индексов.

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

Var

Имя_Массива : ARRAY [нач_индекс..кон_индекс] OF Тип_данных;

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

Var

Имя_массива : ARRAY [нач_индекс_1..кон_индекс_1, нач_индекс_2..кон_индекс_2] OF Тип_данных;

Например,

Var

mass:Array[1..100] Of Real;

A:Array[1..3,1..5] Of Integer;

B: Array ['A'..'Z'] Of Boolean.

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

Элемент массива в программе записывают в виде

Имя_Массива [индекс]

или

Имя_Массива [список индексов]

Пример.

Line[3]:=5;

Matrix[3,5]:=10;

Massiv[1,2,3]:=0;

Ссылка на элемент матрицы А, лежащий на пересечении i-той строки и j-ого столбца выглядит следующим образом A [i,j].

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

Для составления алгоритма и программы необходимо определить, как они меняются.

Последовательный доступ ко всем элементам массива осуществляется путем применения параметрического оператора цикла FOR…TO…DO с использованием в качестве индекса переменной.

3.4.3 Строковый (string) тип данных

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

Особое место в Turbo Pascal 7.0 занимают массивы символов.

Хранение символьных массивов осуществляется

1. В распакованном виде массивы символов хранятся в памяти по одному символу в машинном слове.

Описание распакованного массива символов имеет вид:

var M: Array[1..20] of char;

2. В упакованном виде хранятся в памяти по одному символу в байте. При его описании используют служебное слово PACKED.

var MAS: Packed Array[1..20] of Char;

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

Упакованный массив символов образует символьную строку.

Символьная строка может быть

1. Строковой константой

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

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

2. Строковой переменной.

Строковые переменные - это одномерные упакованные массивы символов, для описания которых введен тип String.

Var

line : String[80];

str : String;

После слова String может указываться максимальная длина строки. Длина строки не может содержать более, чем 255 символов.

Если длина не указана, то считается, что она переменная и определяется числом символов, записанных на место переменной типа String при вводе или присваивании. Это число хранится в нулевом байте соответствующей переменной. Тип String без указания длины совместим со всеми типами строк.

Важно, что в переменной строкового типа доступен каждый отдельный символ. Обращение к нему производится путем указания его номера (индекса). При этом нижняя граница индекса равна 1. Отдельный символ строки совместим с типом Char.

Строки могут быть элементами списка ввода-вывода, при этом записывается имя строки без индекса. Writeln(str);

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

Для работы со строками в TP 7.0 включены процедуры и функции, которые обеспечивают редактирование и преобразование строк.

Существуют два пути обработки переменных типа String:

1. Обработка всей строки, как единого целого.

2. Обработка элементов строки по отдельности.

Для строк определены операции

1. Присваивание s1 := 'ВГТУ'; s2 := '_ЕГФ';

2. Слияние, объединение строк с помощью символа +.

В результате выполнения операции s3 := s1 + s2; получим строку s3, являющуюся объединением строк s1 и s2. s3 получит значение 'ВГТУ_ЕГФ'.

3. Сравнение с помощью всех операций отношения.

Сравнение строк происходит посимвольно, начиная с первого символа. Строки равны, если имеют одинаковую длину и посимвольно эквивалентны.

4. Функция Copy (исх_строка, нач_номер, длина)

Выделение подстроки заданной «длины» из «исходной строки», начиная с символа, определенного «начальным_номером».

s1 := 'ВГТУ_ЕГФ';

s2 := Copy(s1,6,3);{Результат: s2 получит значение 'ЕГФ'}

5. Процедура Insert(подстрока, исх_строка, нач_номер);

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

6. Процедура Delete(исх_строка, нач_номер, длина)

Удаляет из «исходной строки» подстроку заданной «длины», начиная с заданного «номера»:

S:= 'ВГТУ_ЕГФ';

Delete(S,1,5);{Результат: S получит значение 'ЕГФ'}

7. Функция Length(строка)

Возвращает длину строки (количество символов в ней).

8. Функция POS(подстрока, строка)

Возвращает номер символа, начиная с которого «подстрока» встречается в «строке» (если не встречается - возвращает ноль). Прописные и строчные буквы считаются различными.

N := Pos('ра', 'Абракадабра'); {N получит значение 3}

9. Функция UpCase(символ строки)

Преобразует символ любой литеры из строчного в прописной

10. Процедура Str(X: арифметическое выражение; var st: string)

Преобразует численное выражение X в его строковое представление и помещает результат в st.

11. Процедура Val(st: string; x: числовая переменная; var code: integer)

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

3.4.4 Тип-запись (record)

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

При задании типа-записи после зарезервированного слова record следует перечислить все поля типа-записи с указанием через двоеточие их типов и завершить задание типа словом end. Поля отделяются друг от друга точкой с запятой. Количество полей записи может быть любым.

Пример.

Type

Data = record

{Тип - дата рждения}

Year: Integer;

Month: 1..12;

Day: 1..31

end;

Person = record

{Тип - сведения о сотруднике}

Name: string[20] ;

Sex: (Male, Female);

Age: Integer;

Married: Boolean

end;

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

После введения типа-записи можно затем задать переменные или типизированные константы этого типа - записи.

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

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

var

Dat: Data;

Сonst

Birthday: Data = (Year: 1971; Month: 12; Day: 9 );

Ivanov: Person = (Name: 'Иванов'; Sex: Male; Age: 40; Married: True);

Доступ к полям записи осуществляется указанием имени переменной (константы) и имени поля, записываемого через точку, например:

Ivanov.age,

Dat.Day и т. д.

Пример. Использование полей записей.

Ivanov.Married := True;

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

with <имя записи> do <оператор>;

В этом случае внутри оператора можно указывать только поле записи.

with Ivanov do

Married := True;

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

Пример использования вариантной части.

Type

Figure = (Square, Triangle, Circle);

Param = record

X ,Y: Real; {точка привязки}

case Fig: Figure of {параметры фигур}

Square: (Side: Real);

Triangle: (Side1, Side2, Angle: Real);

Circle: (Radius: Real)

End;

var MySquare , MyCircle: Param;

Вариантная часть начинается словом case, за которым следует переменная выбора варианта (в примере Fig) с указанием типа. Далее указываются константы, значения которых может принимать переменная выбора варианта (в примере - Sguare, Triangle, Circle). За каждой константой через двоеточие в круглых скобках записываются поля данного варианта записи с указанием их типов. Круглые скобки необходимы, даже если для данного варианта вариантная часть отсутствует. Следует отметить, что вариантная часть не завершается своей операторной скобкой end, как у обычной конструкции CASE, т.к. далее идет завершающая операторная скобка end всего типа.

В тип-записи допустимо не вводить переменную выбора вариантов, а перечислить лишь разные варианты, например:

Transf = record

case Integer of

1: (Word: Word);

2: (TwoSymb: array[1..2] of Char)

end;

3.4.5 Тип-множество (set)

Множество (Set) - это совокупность элементов одного и того же перечисляемого типа.

Число элементов исходного множества в Turbo Pascal не может быть больше 256, а порядковые номера элементов (т. е. значение функции Ord) должны находиться в пределах от 0 до 255.

Для задания типа-множества следует использовать зарезервированные слова set и of, а затем указать элементы этого множества, как правило, в виде перечисления или диапазона, например:

type

Alfa = set of 'A'..'Z';

Count = set of (Plus, Minus, Mult, Divid);

Ten = set of 0..9;

Number = set of '0'..'9';

Введя тип-множество, можно задать переменные или типизированные константы этого типа-множества.

При задании значений константе-множеству ее элементы перечисляются через запятую (допустимо указывать диапазоны) и помещаются в квадратные скобки.

var

Charval: Alfa;

Operation: Count;

Const

Index: Ten = [0, 2, 4, 6, 8];

Digit: Number = ['0'..'9'];

Так же как и для других структурированных типов, тип-множество можно тести непосредственно при задании переменных или типизированных констант:

var

CharVal: set of 'A'..'Z';

Operation: set of (Plus, Minus, Mult, Divid);

Const

Index: set of 0..9=[0, 2, 4, 6, 8];

Digit: set of '0'..'9'=['0'..'9'];

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

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

[Plus, Minus]

[1..К mod 12, 15]

[Chr(0)..Chr(31), 'А', 'В']

В каждое множество включается и т. н. пустое множество [ ], не содержащее никаких элементов.

Конструктор множества можно использовать и непосредственно в операциях над множествами.

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

+ - объединение множеств;

- - разность множеств;

* - пересечение множеств;

= - проверка эквивалентности двух множеств;

<> - проверка неэквивалентности двух множеств;

<= - проверка, является ли левое множество подмножеством правого множества;

>= - проверка, является ли правое множество подмножеством левого множества;

in - проверка, входит ли элемент, указанный слева, в множество, указанное справа.

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

Пример.

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

program EXAMPLE;

Var

Str: string;

L: Byte;

Tru: Boolean;

Begin

WriteLn('Введите строку');

ReadLn(Str);

L := Length(Str); {число введенных символов}

Tru := L > 0; {true, если не пустая строка}

while Tru and (L > 0) do {проверка с конца строки}

Begin

Tru:=Str[L] in ['0'..'9, 'A'..'Z, 'a'..'z, ' ']; {проверка допустимости символа}

Dec(L) {предыдущий символ}

end;

if Tru then

WriteLn('Правильная строка')

Else

WriteLn('Неправильная строка')

end.

3.4.6 Файл (File)

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

Файл - это логическое понятие, связанное с физически существующим набором данных. Это может быть обычный файл на диске, коммуникационный порт ЭВМ, устройство печати или другие устройства. Связь обеспечивается операционной системой при выполнении программы пользователя. При работе с файлами выполняются операции ввода-вывода. Операция ввода означает перепись данных с внешнего устройства (из входного файла) в основную память ЭВМ, операция вывода - это пересылка данных из основной памяти на внешнее устройство (в выходной файл).

Файлы на внешних устройствах часто называют физическими файлами. Их имена определяются операционной системой. В программах имена файлов задаются с помощью строк. Например, имя файла на диске может иметь вид: 'LAB1.DAT', 'c:\ABC150\pr.txt'.

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

Для задания типа-файла следует использовать зарезервированные слова file и of, после чего указать тип компонент файла.

type

Number = file of Integer; {тип-файл целых чисел}

Symb = file of 'A'..'Z'; {тип-файл прописных латинских букв}

Текстовые файлы определяются в разделе Var:

Var Имя_текстового_файла : Text;

Input, Output : Text;

Fl, F2: file of Integer;

Тип-файл можно определять и непосредственно при введении файловых переменных. Файловые переменные имеют специфическое применение. Над ними нельзя выполнять никаких операций. Их можно использовать лишь для выполнения операций с файлами.

В Паскале определены три типа файлов:

1) текстовые; состоят из строк символов. Конец записи определяется концом строки. Чтение и запись в файл осуществляется посимвольно.

2) типизированные могут состоять из записей любого типа.

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

Обработка файла может производиться двумя способами:

1) с использованием последовательного доступа;

2) с использованием прямого (произвольного) доступа.

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

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

Для чтения и записи в текстовые файлы используются стандартные операторы Read (Readln) и Write (Writeln):

Readln(имя файла, запись);

Writeln(имя файла, запись);

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

Работа с существующим файлом обычно включает в себя операции открытия его для чтения, и затем считывания из него записей, пока не появится признак "Конец файла" - Eof(Файл). Поэтому соответствующие программы содержат циклы вида

While Not Eof (Файл) do readln(Файл, Запись);

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

Таблица 3.3

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

ФУНКЦИЯ

ОПИСАНИЕ

Procedure Append(var f : text)

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

Procedure Assign(var f: String)

Связывает внешний файл, имя которого указано в строковой константе String, с файловой переменной f

procedure BlockRead(var R file; var But; Count: Word)

Считывает из нетипизированного файла, связанного с файловой переменной f , одну или несколько записей (их количество задается целочисленным выражением Count) в переменную Buf

Procedure BlockWrite(var R file; var Buf; Count: Word)

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

Procedure ChDir(S: String)

Выполняет смену текущего каталога на каталог, маршрут к которому указан в текстовой переменной S

Procedure Close(var F)

Закрывает открытый файл, связанный с файловой переменной F

Procedure Erase(var F)

Стирает внешний файл, связанный с файловой переменной F

function Eof(var F): Boolean

Возвращает состояние End-of-file (конец файла) для файла, связанного с файловой переменной F: True - если текущее положение указателя находится в конце файла или файл пустой; False - во всех остальных случаях

Function FilePos(var F): Longlnt

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

function FileSize(var F): Longtnt

Возвращает текущий размер файла, связанного с файловой переменной F. Если файл пустой, возвращает нулевое значение. Для текстовых файлов не используется

procedure Flush(var F: text)

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

procedure GetDir(D: Byte; varS: String);

Возвращает текущий каталог на заданном диске. Имя каталога находится в строковой переменной S, а диск задается значением параметра D: 0 - текущий диск; 1 - диск А; 2 - диск В; 3 - диск С, и т. д. Если значение, заданное в параметре D, неверное, возвращается результат «Х:\»

function IOResult: Integer

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

procedure MkDir(S: String)

Создает подкаталог, имя для которого задается строковой переменной S

procedure Read(var R text;v1,...)

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

procedure ReadLn(var R text; v1,...)

То же, что и Read, но выполняет пропуск до начала следующей строки текстового файла

procedure Rename(var F, S)

Переименовывает внешний файл, связанный с файловой переменной F, присваивая ему имя, содержащееся в строковой переменной S

procedure Reset(var F)

Открывает существующий файл, связанный с файловой переменной F. Текущий указатель устанавливается в начало файла. Текстовый файл открывается только для чтения

procedure Rewrite(var F)

Создает и открывает новый файл, связанный с файловой переменной F. Если файл с указанным именем уже существует, старый файл стирается, а на его месте создается новый пустой файл. Текущий указатель устанавливается в начало файла

procedure RmDir(S: String)

Удаляет пустой подкаталог, маршрут которого указан в строковой переменной S

procedure Seek(var F, N: Longint)

Перемещает текущую позицию в файле, связанном с файловой переменной F, на заданный элемент. Началу файла соответствует нулевое значение N. Для текстовых файлов не используется

function SeekEof(var R text): Boolean

Возвращает состояние «конец файла» для текстового файла, связанного с файловой переменной F

function SeekEoln(var R text): Boolean

Возвращает состояние «конец строки» для текстового файла, связанного с файловой переменной F

procedure SetTextBuf(var F. text; var Buf)

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

procedure Truncate(var F)

Усекает размер файла, связанного с файловой переменной F, до текущей позиции. Вся информация после текущего положения указателя теряется. Для текстовых файлов не используется

procedure Write(var P. text, vl,...)

Записывает в файл, связанный с файловой переменной F, одно или несколько значений, хранящихся в переменных vl, ... Файловая переменная может быть связана не только с текстовым файлом. В случае текстового файла значения могут иметь целый, вещественный, строковый, символьный или булев типы. В случае типизированного файла тип значений должен совпадать с типом компонентов файла

Procedure WriteLn(var R text, v1,...)

Делает то же, что Write, но затем записывает в текстовый файл признак конца строки

Контрольные вопросы

1. Что определяет тип данных в Turbo Pascal 7.0?

2. Дайте классификацию типов данных Turbo Pascal 7.0?

3. В какие случаях в программах используют постоянные данные, константы?

4. Перечислите простые типы данных, используемых в Turbo Pascal 7.0.

5. Что представляет собой символьный тип данных?

6. Что представляет собой пепечисляемый тип данных?

7. Что представляет собой тип-диапазон данных?

8. Какие типы данных Turbo Pascal 7.0 относятся к структурированным и какие особенности они имеют?

9. Дайте характеристику массивов?

10. Какие данные в Turbo Pascal 7.0 определены типом String?

11. Дайте характеристику типа-записи.

12. Дайте характеристику типа-множества?

13. Дайте определение файловой переменной.

14. Какие основные операции над файлами осуществляются в Паскаль-программе?

4. Классификация операторов языка программирования Turbo Pascal 7.0

4.1 Классификация операторов

Оператор (Statement) - это основная единица программы, которая выполняет определенные действия над данными.

Операторы в программе располагаются после описания данных и отделяются от него служебным словом BEGIN.

Между собой операторы разделяются точкой с запятой.

По действиям операторы разделяются на следующие типы:

1) обрабатывающие, которые обрабатывают данные:

- ввода;

- вывода;

- присваивания (вычисления новых значений).

2) управляющие, которые управляют выполнением обрабатывающих операторов:

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

- обеспечивающие повторение некоторых групп операторов.

По строению или структуре операторы разделяются на типы:

1) простые, которые не содержат в себе других операторов:

- оператор присваивания :=

- оператор безусловного перехода GOTO, и безусловные функции BREAK, CONTINUE, EXIT, HALT;

- оператор обращения к процедуре (функции) (содержит имя процедуры и перечисленные в скобках параметры процедуры);

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

2) структурные или структурированные, которые состоят из других операторов:

- составной оператор (последовательность операторов программы, заключенная в операторные скобки begin end;);

- условные операторы;

- операторы цикла;

- оператор присоединения.

4.2 Запись выражений и использование стандартных функций

С помощью оператора присваивания (:=) переменной присваивается значение выражения или функции. Слева от знака присваивания записывается имя переменной, а справа - выражение или функция.

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

В табл.4.1 приведена классификация основных операций, применимых к простым типам данных.

Таблица 4.1

Операции языка TP 7.0 в порядке убывания их приоритета

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

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

Тип допустимых операндов

Тип результата

1

2

3

4

Операторы, имеющие первый приоритет

@

Взятие адреса

любой

pointer

Унарный минус

целый, вещественный

целый, вещественный

+

Унарный плюс

целый, вещественный

целый, вещественный

NOT

Поразрядное «НЕ»

целый

целый

NOT

Логическое «НЕ»

логический

логический

Операторы, имеющие второй приоритет

*

Умножение

целый * целый

целый

целый * вещественный

вещественный

вещественный * целый

вещественный

вещественный * вещественный

вещественный

/

Деление

целый / целый

вещественный

целый / вещественный

вещественный

вещественный / целый

вещественный

вещественный / вещественный

вещественный

DIV

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

целый DIV целый

целый

MOD

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

целый MOD целый

целый

AND

Логическое «И»

логический

логический

AND

Поразрядное «И»

целый

целый

SHR

Циклические сдвиги вправо

целый

целый

SHL

Циклические сдвиги влево

целый

целый

Операторы, имеющие третий приоритет

+

Сложение

целый + целый

целый

целый + вещественный

вещественный

вещественный + целый

вещественный

вещественный + вещественный

вещественный

Вычитание

целый целый

целый

целый вещественный

вещественный

вещественный целый

вещественный

вещественный вещественный

вещественный

OR

Логическое «ИЛИ»

логический

логический

OR

Поразрядное «ИЛИ»

целый

целый

XOR

Логическое исключающее «ИЛИ»

логический

логический

XOR

Поразрядное исключающее «ИЛИ»

целый

целый

Операторы, имеющие четвертый приоритет

IN

Вхождение Во множество

множество

логический

>

Больше

логический

<

Меньше

логический

=

Равно

логический

<>

Не равно

логический

>=

Больше или равно

логический

<=

Меньше или равно

логический

Стандартные функции для простых типов данных сведены в табл. 4.2.

Таблица 4.2

Основные операции и стандартные функции для простых типов данных

Форма записи

Название

Типы

Аргумента

Результата

Математические функции

Abs(X)

Абсолютное значение числа X

целый, вещественный

соответствует типу аргумента

Sqr(X)

Квадрат числа X

целый, вещественный

соответствует типу аргумента

Sqrt(X)

Корень квадратный из числа X

вещественный

вещественный

Exp(X)

Экспонента eX

вещественный

вещественный

Ln(X)

Натуральный логарифм от числа X

вещественный

вещественный

Sin(X)

Синус числа X

вещественный (в рад.)

вещественный

Cos(X)

Косинус числа X

вещественный (в рад.)

вещественный

Arctan(X)

Арктангенс числа X

вещественный

вещественный (рад.)

Pi

Число Пи

Trunc(X)

Округление с отбрасыванием дробной части

вещественный

целый (длинный)

Round(X)

Округление до ближайшего целого

вещественный

целый (длинный)

Frac(X)

Дробная часть числа X

вещественный

вещественный

Int(X)

Целая часть числа X

вещественный

вещественный

Random(X)

Случайное число от 0 до X

целый

целый

Odd(X)

Возвращает True, если число X нечётное

целое

логический

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

Inc(X,Y)

Увеличивает число X на Y (если Y не приведен, то на 1)

целое

целое

Dec(X,Y)

Уменьшает число X на Y (если Y не приведен, то на 1)

целое

целое

randomize

Обеспечивает несовпадение последовательностей случайных чисел, генерируемых функцией Random

Операции над символами

Chr(X)

Символ для ASCII кода X

целое (байт)

символьный

Ord(X)

Порядковый номер X в таблице ASCII

перечислимый (целый, символьный)

совпадает с типом аргумента

UpCase(X)

Символы из строчных в прописные

символьный

символьный

Pred(X)

Предшествующий X в таблице ASCII элемент

перечислимый (целый, символьный)

совпадает с типом аргумента

Succ(X)

Следующий за X в таблице ASCII элемент

перечислимый (целый, символьный)

совпадает с типом аргумента

Вид формулы (выражения) зависит от типа входящих в него переменных. Причем выражение должно:

1) содержать данные одного типа;

2) использовать операции, разрешенные для данных этого типа.

Например, для функции вида выражение на языке TP имеет следующую запись

.

Целочисленные значения записываются в привычной форме (-100; 777), а вещественные как в форме с фиксированной точкой (-5.4; 56.789), так и с плавающей десятичной (-2Е+3; -0.32Е-1).

4.3 Операторы ввода и вывода данных

4.3.1 Операторы ввода READ, READLN

Операторы ввода READ, READLN служат для присвоения переменным конкретных значений, введенных пользователем с клавиатуры.

Read (список ввода);

Readln (список ввода);

Список ввода - это одно или несколько имен переменных, разделяемых запятыми.

Read(A,B,C);

Readln(X,Y);

Операторы в таком виде еще не вводят данные. Это произойдет только при выполнении программы!

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

Отличие оператора Readln от Read в том, что он позволяет считать целую строку, поэтому он чаще используется для ввода строк.

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

Read (имя файловой переменной, список ввода);

Readln (имя файловой переменной, список ввода).

Оператор Readln выполняет пропуск до начала следующей строки текстового файла.

Read(f,A);

Readln(f,S);

4.3.2 Операторы вывода WRITE, WRITELN

Без вывода информации не обходится ни одна реальная задача. Всегда пользователя интересует результат решения задачи. Выводимая информация передается из оперативной памяти на устройства вывода компьютера: дисплей, гибкие и жесткие магнитные диски, принтер. Операторы вывода WRITE, WRITELN служат для передачи данных из памяти ЭВМ на устройство вывода. Они записываются так:

Write(список вывода);

Writeln(список вывода);

Список вывода - это последовательность строковых констант или имен переменных, разделяемых запятыми.

Write(`факультет',А,В,С);

Writeln(`значение X=', X);

Строковая константа выводится без изменений. При выводе переменных на экране появляются не имена, а значения из памяти ЭВМ.

Отличие оператора Writeln от Write заключается в том, что после оператора Writeln происходит переход на новую строку. После выполнения оператора WriteLn последующий вывод приведет к выдаче информации в следующую строку экрана, а после оператора Write - в ту же строку, следом за уже выведенным текстом, пока хватит места, а затем вывод продолжится уже на следующей строке экрана. Оператор WriteLn; без параметров просто переведет курсор на начало следующей строки.

Форма представления значений в поле вывода соответствует типу переменных и выражений: величины целого типа выводятся как целые десятичные числа, действительного типа - как действительные десятичные числа с десятичным порядком, символьного типа и строки - в виде символов, логического типа - в виде логических констант TRUE и FALSE.

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

Форму вывода вещественных чисел можно задать с использованием двух значений в виде

Write(Имя:w:n);

где w - общая ширина поля, отводимого под число (включая знак и десятичную точку);

n - количества цифр в дробной части.

В этом случае действительные значения выводятся в форме десятичного числа с фиксированной точкой.

Оператор Write в диалоговых программах используется в паре с Read для подсказок при вводе.

4.4 Оператор безусловного перехода и безусловные функции

4.4.1 Оператор безусловного перехода GOTO

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

Goto(metka_1);

………

metka_1: <оператор>;

Метка, должна быть описана в разделе описаний.

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

4.4.2 Безусловные функции

Функция BREAK позволяет досрочно закончить цикл.

Функция CONTINUE позволяет начать новую итерацию цикла, даже если предыдущая итерация не была завершена.

Функция EXIT позволяет завершить работу текущего программного блока (самой программы или ее подпрограммы).

Функция HALT(n), где n - некоторое целое число, позволяет завершить работу программы с кодом завершения n.

4.5 Условный оператор IF (если)

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

Условный оператор IF реализует разветвляющийся алгоритм, т.е. предполагает выполнение вычислений по одному из возможных направлений в зависимости от исходных данных или промежуточных результатов. Ветвление в таких алгоритмах производится при проверке некоторых условий. Формат записи оператора IF следующий:

IF условие THEN оператор_1

ELSE оператор_2;

Условие - значение типа BOOLEAN или логическая операция. Если условие верно, выполняется оператор, или блок операторов, следующий за THEN, в противном случае выполняется блок операторов после ELSE, если он есть.

Оператор IF - это один оператор, поэтому ";" после оператора_1, т.е. перед ELSE, не ставится.

Часть со служебным словом ELSE может отсутствовать. В этом случае выполняется или не выполняется только оператор_1.

Если с помощью оператора IF необходимо управлять группой операторов, то эта группа заключается в операторные скобки begin end;.

Схема алгоритма работы условного оператора приведена на рис. 4.1.

Допустима вложенность операторов IF друг в друга на любую глубину. При этом важно не запутаться, какой ELSE к какому IF относится. В общем случае служебное слово ELSE связывается с ближайшим словом IF, которое еще не связано со служебным словом ELSE. Для удобства чтения и понимания логики программы записывайте ELSE под соответствующим ему IF.

Рис.4.1. Структурная схема условного оператора

4.6 Оператор выбора CASE (вариант из)

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

Для выбора одного из нескольких путей р...


Подобные документы

  • Структура и основные элементы языка Turbo Pascal. Алгоритм составления простейших программ на Turbo Pascal. Применение условного оператора и сильноветвящихся алгоритмов. Циклы с предусловием и постусловием, сочетание циклических и условных операторов.

    реферат [64,0 K], добавлен 20.03.2016

  • История создания и развитие Pascal. Особенности пакета программирования Turbo. его возможности редактора текстов, компилятора и отладчика. Построения программы на языке Turbo Pascal, ее структура, типы алгоритмов, одномерные и многомерные массивы.

    курсовая работа [519,3 K], добавлен 25.06.2011

  • Изучение текстового режима языка программирования Turbo Pascal. Написание игры "Змейка" с помощью средств, процедур и функций языка программирование Turbo Pascal. Структурное и функциональное описание разработки. Листинг и общие примеры работы программы.

    контрольная работа [286,3 K], добавлен 10.04.2011

  • Строгая типизация и наличие средств структурного (процедурного) программирования императивного языка Pascal. Структура программы, выражения, строки. Правила и описание типов, процедур и функций, операторов ввода - вывода, модулей и подпрограмм.

    курсовая работа [37,3 K], добавлен 28.06.2008

  • Разработка эскизного и технического проектов программы "Helpopr" (ввод, хранение и вывод данных на дисплей по запросу пользователя). Язык программирования Turbo Pascal. Описание алгоритма программы. Требования к компьютеру и программному обеспечению.

    курсовая работа [198,1 K], добавлен 03.02.2010

  • Понятие и история развития языка Turbo Pascal, оценка его графических возможностей и особенностей. Инициализация графического режима. Управление экраном и окнами, цветом и фоном, принципы работы с текстом. Построение графиков функций и изображений.

    курсовая работа [159,9 K], добавлен 17.12.2014

  • Символьный тип данных как составляющая языка программирования: управляющие символы, лексемы и разделители. Разработка программного обеспечения для практической реализации решения задач, содержащих символьные величины языка программирования Turbo Pascal.

    курсовая работа [37,7 K], добавлен 03.05.2012

  • История появления и распространения Turbo Pascal - среды разработки для языка программирования Паскаль. Общий вид объявления файлового типа. Входная, выходная и промежуточная информация. Алгоритм решения задачи: словесный алгоритм, блок-схема, программа.

    курсовая работа [359,4 K], добавлен 05.01.2010

  • Характеристика используемой операционной системы, языка программирования. Структура программы на языке Turbo Pascal 7.1. Операторы языка Turbo Pascal. Проведение сортировки записей. Алгоритмы программы и подпрограмм. Причины возникновения ошибок.

    курсовая работа [454,1 K], добавлен 13.06.2014

  • Базовые информационные технологии в управлении. Целый и вещественный тип данных языка программирования Turbo Pascal. Создание программы в интегрированной инструментальной оболочке Turbo Pascal 7.0. Полезные качества информационных технологий управления.

    курсовая работа [1,1 M], добавлен 12.02.2015

  • При помощи Turbo Pascal достаточно не просто создать программу, которая бы демонстрировала работу с базами данных. Для этого существует огромное количество специализированных программ. Основа и сущность формирования базы данных при помощи Turbo Pascal.

    курсовая работа [479,7 K], добавлен 04.07.2008

  • История создания и развитие языка программирования Pascal, его версии. Особенности и порядок построения графика функции на языке Turbo Pascal с использованием декартовой системы координат. Блок схема алгоритма процедур, листинг и тестирование программы.

    курсовая работа [102,7 K], добавлен 23.12.2011

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

    учебное пособие [1,5 M], добавлен 10.12.2010

  • Разработка программ на языке Turbo Pascal на основе использования массивов данных. Особенности хранения данных, способы объявления переменных, действия над элементами массивов, их ввод и вывод. Практическое применение одномерных и многомерных массивов.

    методичка [17,8 K], добавлен 25.11.2010

  • Основы работы на языке высокого уровня Turbo Pascal. Основное оборудование и программное обеспечение. Операторы, необходимы для работы в графической среде Turbo Pascal. Запуск графического режима. Текст программы в графической среде Turbo Pascal.

    лабораторная работа [12,7 K], добавлен 14.05.2011

  • Разработка алгоритма поставленной задачи по обработке числовой информации в среде Turbo Pascal 7.0 с базовым языком программирования Pascal, отладка программы, реализующей разработанный алгоритм. Описание структуры программы, ее вспомогательных процедур.

    курсовая работа [668,0 K], добавлен 25.02.2010

  • Особенности разработки программ на языке Turbo Pascal на примере программы обработки массива данных с построением диаграммы. Функции программы и основные требования к ней. Состав входных и выходных данных. Использование предметной области "Садовод".

    курсовая работа [789,1 K], добавлен 13.03.2013

  • Характеристика вычислительной системы и инструментов разработки. Программирование на языке Pascal в среде Turbo Pascal и на языке Object Pascal в среде Delphi. Использование процедур, функций, массивов, бинарного поиска. Создание базы данных в виде файла.

    отчет по практике [2,1 M], добавлен 02.05.2014

  • Процедура сложения и вычитания матриц (с учетом коэффициента перед матрицами). Основные концепции языка Turbo Pascal. Фортран как один из пионеров программирования Дейкстрой. Первый компилятор Паскаля на платформах DEC. Основные стандарты языка.

    контрольная работа [21,6 K], добавлен 08.03.2011

  • Анализ эффективности методов сортировки данных в языке Turbo Pascal. Разработка эскизного и технического проекта программы. Сортировка без и с использованием дополнительной памяти, за исключением небольшого стека (массива). Сортировка связанных списков.

    курсовая работа [359,0 K], добавлен 23.05.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.