- •Алгоритм, понятие, свойства, форма записи, виды. Понятие языка программирования. Классификация языков программирования
- •Арифметические операции, функции, выражения. Арифметический оператор присваивания "turbo- pascal 7.0. Типы данных.
- •Условный оператор, оператор выбора и безусловного перехода в turbo- pascal 7.0
- •Циклы, виды. Операторы цикла в turbo- pascal 7.0
- •Итерационные циклы.
- •Массивы, виды, описание, использование в программе. Приемы программирования квадратных матриц.
- •Логические величины, выражения, операнды и операции. Логический оператор присваивания. Логические выражения в управляющих операторах.
- •Множества, описание множества, конструктор множества, операции над множествами.
- •Понятие файла и файловой переменной, внешние файлы в turbo- pascal 7.0 (определение, общие принципы работы: создание и обработки)
- •Комбинированный тип данных. Работа с файлами записей. Прямой доступ к записям
- •Строковый тип данных в turbo- pascal 7.0. Стандартные функции по работе со строками.
- •Процедуры пользователя (описание, вызов, структура),
- •Var имя праметра: имя типа
- •Функции пользователя (описание, вызов, структура). Рекурсивные подпрограммы.
- •Понятие текстового файла, определение, общие принципы работы, создание и обработка.
- •Внешние подпрограммы и модули в системе Turbo pascal: определение, назначение, структура
Комбинированный тип данных. Работа с файлами записей. Прямой доступ к записям
Разбор на примере
При работе с массивами основное ограничение заключается в том, что каждый элемент должен иметь один и тот же тип. Но при решении многих задач возникает необходимость хранить и обрабатывать совокупности данных различного типа.
Пример
Для каждого из 25 учеников класса известны фамилия и оценка (в баллах) по пяти дисциплинам. Требуется вычислить среднюю оценку каждого ученика и выбрать человека, имеющего максимальный средний балл.
В данном случае фамилия может быть представлена строкой из 15 символов, оценка - это целое число, а средний балл должен быть представлен вещественным (действительным) числом. В Паскале для описания комбинаций объектов разных типов используются записи.
Запись - это структурированный тип, содержащий набор объектов разных типов. Составляющие запись объекты называются ее полями. В записи каждое поле имеет свое собственное имя. Чтобы описать запись, необходимо указать ее имя, имена объектов, составляющих запись и их типы. Общий вид такой:
Type "имя записи" = Record
"поле 1" : "тип 1";...
"поле n" : "тип n"
End;
Данные для решения рассматриваемой задачи можно описать как запись следующим образом:
Type
pupil = Record
fam: String[15]; {поле фамилии ученика}
b1, b2, b3, b4, b5 : 2...5; {поля баллов по дисциплинам}
sb : Real {поле среднего балла}
End;
Переменная типа puple будет иметь смысл структуры, содержащий информацию, характеризующую одного ученика. Организация этой структуры показана на рис.1.
Чтобы хранить в памяти ЭВМ информацию о всех 25 учениках класса, необходимо ввести массив klass, представляющий массив записей:
Var klass : Array[1.25] Of pupil;
Примечания
1.Имена полей, составляющих запись, не должны повторяться.
2.Каждое поле записи может иметь любой тип (кроме файлового),в частности, оно может быть снова записью.
Доступ к полям записи
Его можно осуществить двумя способами.
1.Указанием имени переменной и имени поля. Например, klass[2].fam, klass[3].sb, klass[1].b4. Поэтому ввод фамилий и оценок учащихся, то есть элементов массива klass, можно задать так:
For i: = 1 To 25 Do
Begin
Readln(klass[i].fam); Readln(klass[i].b1);
Readln(klass[i].b2); Readln(klass[i].b3);
Readln(klass[i].b4); Readln(klass[i].b5);
End;
2.Использованием оператора присоединения, который позволяет осуществлять доступ к полям записи, таким образом, как если бы они были простыми переменными. Его общий вид:
With <имя записи> Do <оператор>.
Внутри оператора к компонентам записи можно обращаться только с помощью имени соответствующего поля.
Пример
For i : = 1 To 25 Do
With klass [i] Do
Begin
Readln (fam);
ReadLn (b1,b2,b3,b4,b5);
End;
Строковый тип данных в turbo- pascal 7.0. Стандартные функции по работе со строками.
Тип STRING (строка) в Турбо Паскале широко используется для обработки текстов. Он во многом похож на одномерный массив символов, однако, в отличие от последнего, количество символов в строке-переменной может меняться от 0 до N, где N - максимальное количество символов в строке. Значение N определяется объявлением типа STRING [N] и может быть любой константой порядкового типа, но не больше 255 . Турбо Паскаль разрешает не указывать N, в этом случае длина строки принимается максимально возможной, а именно N=255 .
Строка в Турбо Паскале трактуется как цепочка символов. К любому символу в строке можно обратиться точно так же, как к элементу одномерного массива ARRAY [0..N] OF CHAR.
LENGTH(st) - текущая длина строки.
CONCAT(S1 [S1, ... , SN] ) - функция типа STRING; возвращает строку, представляющую собой сцепление строк-параметров S1, S2, ..., SN.
COPY(ST, POS, n) - функция типа STRING; копирует из строки ST n символов, начиная с символа с номером POS.
DELETE (ST, POS, n) - процедура удаляет n символов из строки ST, начиная с символа с номером POS.
INSERT (S, ST, POS) - процедура; вставляет подстроку S в строку ST, начиная с символа с номером POS.
LENGTH (ST) - функция типа INTEGER; возвращает длину строки ST.
POS (S, ST) - функция типа INTEGER; отыскивает в строке ST первое вхождение подстроки S и возвращает номер позиции, с которой она начинается; если подстрока не найдена, возвращается ноль.
STR(X [; WIDTH [: DECIMALS] ], ST) - процедура; преобразует число X любого вещественного или целого типов в строку символов ST
VAL(ST, X, CODE) - процедура; преобразует строку символов ST во внутреннее представление целой или вещественной переменной X, которое определяется типом этой переменной; параметр CODE содержит ноль, если преобразование прошло успешно, и тогда в X помещается результат преобразований, в противном случае он содержит номер позиции в строке ST, где обнаружен ошибочный символ, и в этом случае содержимое Х не меняется. Примеры:
var х : Real; у : Integer; st,st1: String[15];
begin
st := concat('12','345'); {строка st содержит 12345}
st1 := copy(st,3,Length(st)-2); {st1 содержит 345}
insert('-',st1,2); {строка st1 содержит 3-45}
delete(st,pos('2',at),3); {строка st содержит 15}
str(pi:6:2,st); {строка st содержит 3.14}
val(''3,1415' ,x,y) ; {у содержит 2, х остался без изменения}
end.
Операции отношения =, о, >, <, >=, <= выполняются над двумя строками посимвольно, слева направо с учетом внутренней кодировки символов (см. табл.4.1 и прил.2). Если одна строка меньше другой по длине, недостающие символы короткой строки заменяются значением СНR(0) .