русс | укр

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

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

ASCII Z-строка


Дата добавления: 2014-11-28; просмотров: 1151; Нарушение авторских прав


Строка, оканчивающаяся нулевым байтом - символом с кодом 0. Не накладывается ограничение на их размер (до 65535 байтов); тип определен как PChar.

Ключ {X+} - в этом случае используется как строка, эквивалентная массиву типа

Pchar=array [0…k] of char; {расширенный синтаксис}

где k - количество символов в строке, не считая символа с кодом 0 в конце строки.

В версии 7.0 используются стандартные модули Strings и Windows.

Запись

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

Поля отделяются друг от друга ; . Количество полей может быть любым.

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

Пример

type type

complex=record complex = record

re: real; re, im: real

im: real end;

end;

Далее можно задать переменные

var

x, y, z: complex;

Другой вариант задания переменной в записи

 

var

x, y, z: record

re, im: Real;

end;

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

Пример

x.re, y. im

x. im: = 1.7;

x.re := 1.5;

y . re : = - x.re;

y. im: = - x. im;

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

Пример

type

point = record

x, y: Real

end;

vector = array [0..1] of point;

month = (Jan, Feb, Mar, Apr, May, Jun, Jyl, Aug, Sep, Oct, Nov, Dec);

date= record

d: 1..31;

m: month;

y: 1900..1999

end;

const

origon: point= (x: 0; y: -1);

 

имя поля константа

line: vector=((x: - 3.1; y: 1.5), (x: 5.9);(y: 3.0));

Someday: date = (d: 16; m: mar; y: 1989);

Поля должны указываться в той последовательности, в какой они перечислены в объявлении типов.



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

Структура оператора

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

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

Пример

with x do

begin

re:=1.5 {x.re := 1.5;}

im:=1.7; {x. im: = 1.7;}

y.re:=-re; ; {y . re : = - x.re;}

y.im:=-im; {y. im: = - x. im;}

end;

Для вложенных полей делают уточнение.

Пример

type

birthday = record

day, mounth: byte;

year :word

end;

var

c :record

name: string;

bd: Birthday

end;

begin

……………………

if c.bd. year =1939 then

……………………

end.

 

Записи с вариантами

Прежде чем начать разговор о записи с вариантами, ещё раз построим запись с описанием конкретного объекта.

Для описания объекта «человек» могут понадобиться, например, следующие характеристики:

- фамилия, имя, отчество (символьные массивы или строки);

- пол (перечисляемый тип из двух значений):

- индекс специальности (целое) и т.д.

Описание типа запись представляет собой список описаний его элементов (поля записи); каждое описание похоже на описание простой переменной. Список полей начинается зарезервированным (служебным) словом record и завершается зарезервированным (служебным) словом end.

type

person = record

name, secondname, surname: string[20];

sex: (Male, Female);

speciality: word;

end;

Уникальность имён записей требуется только внутри записи. Идентификаторы полей могут совпадать с другими идентификаторами текущего блока, а также с идентификаторами полей в других записях. Конфликт не наступает, так как идентификатор поля всегда выступает в программе в паре с переменной-записью.

Далее определяем переменные.

var

sasha, masha: person;

Доступ производится с помощью конфигурации R.F, которая называется селектор записи, где R – переменная типа запись, F – идентификатор поля.

Пример

sasha.name:=’Александр’;

masha.name:=’Мария’;

sasha.sex:=Male;

masha.sex:=Female;

masha.speciality:=sasha.speciality;

Можно строить:

- массивы, состояшие из записей.

- записи, в состав которых, в свою очередь входят записи.

Пример

var

group: array [1..10] of person;

Для переменной group доступ к полям записи, составляющих этот массив, производится следующим образом:

if group[i].name=’Борис’ then

writeln (group[i].surname);

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

type

date=record

month :( Jan, Feb, Mar , Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec);

day: 1..31;

year: 1900..2000

end;

Используем введённые типы данных в записи person:

 

type

person=record

name, secondname, surname: string[20];

sex: (Male, Female);

specialty: word;

birthday: date;

end;

 

Доступ к полям элемента birthday производится по общим правилам:

sasha.birthday.year:=1970;

masha. birthday.month:=Feb;

Слева от точки находится переменная типа запись

В первом примере - group[i], во втором - sasha.birthday.

На основе записи person построим запись с вариантами. Рассмотрим тип person. В этом типе поле sex(пол) имеет значение Male. Для него рассмотрим

- время прохождения очередных военных сборов;

- курит человек или нет.

Можно задать два отдельных типа зersonмale и зersonаemale, в которых задать соответствующие поля.

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

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

type

personsex = (Male, Female);

date=record

month :( Jan, Feb, Mar , Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec);

day: 1..31;

year: 1900..2000

end;

person = record

имя типа
name, secondname, surname : string[20];

переменная выбора варианта с указанием типа
specialty: word;

birthday: date;

case sex: personsexof

Male: (army:date; Smoking : Boolean);

Female: ( eyescolor: (Blue, Brown, Green, Gray))

 
 


end;

 

1. Начало вариантной части отмечается служебным словом case;после определения поля-признака выбора вариантов (переменная выбора варианта) записывается служебное слово of. Завершается вариантная часть словом endвместе с завершением всей записи. Следовательно, в определении типа может быть только одна вариантная часть и должна быть в конце записи.

2. Альтернативы вариантной части помечаются допустимыми значениями поля sex. Определение этого поля вынесено из фиксированной части и помещено в заголовке вариантной части. Поле, значение которого задают варианты, иногда называют дискриминантом записи.

3. Для того, чтобы поле sex могло служить дискриминантом, его тип должен задаваться идентификатором. Поэтому перечисляемый тип определен отдельно, а в заголовке вариантной части использован идентификатор personsex.

4. Идентификаторы полей во всех вариантах должны быть различны и отличаться от идентификаторов полей фиксированной части.

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

Теперь возможно

if group[i].sex= Male then group[i].smoking:= true

else group[i].eyescolor:=Green;

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

type

forma = record

name :string;

case byte of

0: (birthplace: string[40]);

1: (country: string[20];

entryport: string[20];

entrydate: 1..31;

exitdate: 1..31)

end;

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

Это открывает возможности преобразования типов.

Пример

var

mem4: record

case byte of

0: (by: array[0..3] of byte);

1: (wo: array[0..1] of word);

2: (lo: longint)

end;

Каждый из трёх вариантов занимает в памяти один и тот же участок из 4 байт. В зависимости от того, к какому полю записи мы обращаемся в программе, этот участок рассматривается как массив из 4 байт (поле by), массив из 2 целых типа word (поле wo) или как целое число типа longint (поле lo).

var

x: word;

xb: byte;

xl: longint;

begin

………….

with mem4 do

begin

lo:= trunc(2*pi*x);

if wo[1]=0 then

if by[1]=0 then

xb:=x[0]

else

x:=wo[0]

else

xl:=lo

end;

…………………………

end.

Дополнение 1 Запись

Type

Person = record {объявление типа запись}

Name, Secondname, Surname: String[20];

Sex:(Male,Female);

Speciality:Word

End;

Var {объявление переменной типа запись}

Sasha, Masha: Person;

Доступ

Sasha. Name:=’Александр’;

Masha. Name:= ’Мария’;

Sasha. Sex:=Male;

Masha. Sex:=Female;

Masha. Speciality:= Sasha. Speciality;



<== предыдущая лекция | следующая лекция ==>
Строки типа string | 


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 2.781 сек.