Имя программы записывается после слова паскаль

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

структурированные.

Простые операторы – это операторы, не содержащие в себе других операторов. К ним относятся:

оператор присваивания ( := );
обращение к подпрограмме;
оператор безусловного перехода (GOTO);
пустой оператор.

Структурированные операторы – это операторы, которые содержат в себе другие операторы. К ним относятся:

составной оператор;
операторы условий (IF, CASE);
операторы цикла (FOR, WHILE, REPEAT);
оператор присоединения (WITH).

Оператор присваивания

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

Подпрограммы, процедуры и функции


X := Y; Z := А + В; Res := (I>0) and (I < 100); I := Sqr(J) + I * К;

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

Goto – зарезервированное слово в языке Паскаль. [метка] – это произвольный идентификатор, который позволяет пометить некий оператор программы и в дальнейшем сослаться на него. Метка располагается перед помеченным оператором и отделяется от него двоеточием : . Один оператор можно помечать несколькими метками. Они так же отделяются друг от друга : . Перед тем как использовать метку в разделе оператора ее необходимо описать в разделе label (раздел описания). Пример:

procedure MyProc; label Lbl1, Lbl2, met1; … begin … Lbl1: … goto met1; Lbl2: … goto Lbl1; Met1: … end;

Действие goto передает управление соответствующему помеченному оператору.

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

Использовать оператор goto следует крайне осторожно. Широкое его применение без особых на то оснований ухудшает понимание логики работы программы. Безусловный переход можно осуществлять далеко не из каждого места программы и не в любое место программы. Так, нельзя с помощью этого оператора перейти из основной программы в подпрограмму или выйти из подпрограммы, не рекомендуется осуществлять переход внутрь структурированного оператора, т. к. он может дать неправильный результат, и т. д.

Пустой оператор

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

Урок1. Структура программы на языке Паскаль

Составной оператор

Составной оператор – это последовательность произвольных операций в программе, заключенная в так называемые операторные скобки Begin-End . Синтаксис:

begin [оператор1]; [оператор2]; … [операторN]; end;

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

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

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

Условный оператор IF

Условный оператор IF позволяет проверить некоторое условие и в зависимости от результатов проверки выполнить то или иное действие. Таким образом, условный оператор — это средство ветвления вычислительного процесса. Структура условного оператора имеет следующий вид:

if [условие] then [оператор1] else [оператор2];

где if, then, else — зарезервированные слова (если, то, иначе);

условие – произвольное выражение логического типа;
оператор1, оператор2 – любые операторы языка Паскаль.

Условный оператор работает по следующему алгоритму. Вначале вычисляется условное выражение [условие]. Если результат есть True (истина), то выполняется [оператор1], а [оператор2] пропускается; если результат есть False (ложь), наоборот, [оператор1] пропускается, а выполняется [оператор2]. Например:

var X, Y, Max: Integer; begin if X > Max then Y := Max else Y := X; … end;

При выполнении этого фрагмента переменная Y получит значение переменной X, если только это значение не превышает Mах, в противном случае Y станет равно Mах.

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

Условными называются выражения, имеющие одно из двух возможных значений: истина или ложь. Такие выражения чаще всего получаются при сравнении переменных с помощью операций отношения =, <>, >, >=,
if (а > b) and (b <> 0) then …

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

Например, такая запись предыдущего оператора будет неверной:

if a > b and b <> 0 then …

С учетом приоритета операций компилятор будет транслировать такую строку как:

if a > (b and b) <> 0 then …

Часть else [оператор2] условного оператора может быть опущена. Тогда при значении True условного выражения выполняется [оператор1], в противном случае этот оператор пропускается:

var X, Y, Max: Integer; begin if X > Мах then Мах := X; Y := X; end;

В этом примере переменная Y всегда будет иметь значение переменной X, а в Mах запоминается максимальное значение X. Вслед за else может идти другой оператор if. Таким образом, можно составить множественное ветвление:

if [условие1] then … else if [условие2] then … else if [условие3] then … else …

Оператор выбора CASE

Оператор реализует множественное ветвление. В определенных ситуациях case использовать удобнее, чем if. Синтаксис оператора:

case [выражение] of [выражение_1]:[оператор_1]; [выражение_2]:[оператор_2]; … [выражение_N]:[оператор_N]; else [оператор]; end;

Выполнение операторов зависит, будет ли [выражение] равно [выражение_1], [выражение_2] или [выражение_N]. Например, [оператор_2] будет выполнен только в случае, когда [выражение]=[выражение_2]. Если ни одно из условий не выполняется, то будет выполнен [оператор], следующий за блоком else. Если блока else нет, то оператор case просто пропускается. Оператор case эквивалентен следующему оператору if:

if [выражение]=[выражение_1] then [оператор_1] else if [выражение]=[выражение_2] then [оператор_2] … else if [выражение]=[выражение_N] then [оператор_N] else [оператор]

Операторы цикла

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

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

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

В языке Паскаль имеются три оператора, реализующих циклические вычислительные структуры:

счетный оператор for. Он предназначен для реализации цикла с параметром и не может быть использован для реализации итерационного цикла;

оператор цикла с предусловием while;
оператор цикла с постусловием repeat.

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

Оператор FOR

for [параметр] := [начальное значение] to [конечное значение] do [оператор]
For, to, do – служебные слова.
Параметр – переменная порядкового типа.

Начальное и конечное значения должны быть того же типа, что и параметр.

Читайте также:
Как написать программу безопасности

На первом шаге параметр цикла принимает начальное значение затем осуществляется проверка: параметр цикла меньше или равен конечному значению. Это условие является условием продолжения цикла. Если выполнено, то цикл продолжает свою работу и выполняется [оператор], после чего параметр цикла увеличивается (уменьшается) на единицу.

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

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

Оператор может не выполниться ни разу, поскольку проверка условия продолжения цикла выполняется до тела цикла;

Шаг изменения параметра цикла постоянный и равен 1;

Тело цикла в операторе for представлено одним оператором. В том случае, если действие тела цикла требует более одного простого оператора, то эти операторы необходимо превратить в один составной оператор посредством операторных скобок (BEGIN-END);

Параметр цикла может быть только переменой порядкового типа.

Цикл for может уменьшать параметр. В этом случае синтаксис следующий:

for [параметр] := [конечное значение] downto [начальное значение] do [оператор]

Оператор WHILE (цикл с предусловием)

while [условие] do [оператор]
While, do – служебные слова,
условие – логическое выражение.

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

При работе с while надо обратить внимание на его свойства:

условия, использованные в while, являются условием продолжения цикла;
в теле цикла всегда происходит изменение значения параметра входящего в выражение условия;

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

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

while Self.EOF = False do begin … Self.MoveNext; end;

Оператор REPEAT (цикл с постусловием)

repeat [тело цикла]; until [условие];

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

Оператор repeat имеет следующие особенности:

в repeat проверяется условие завершения цикла и если условие выполняется, то цикл прекращает работу;
тело цикла всегда выполняется хотя бы один раз;
параметр для проверки условия изменяется в теле цикла;

операторы тела цикла не надо заключать в операторские скобки (BEGIN-END), при этом роль операторных скобок выполняют repeat и until.

Прерывание цикла

Любой из циклов можно прервать оператором break.

while [условие] do begin … if [условие выхода из цикла] then Break; … end;

Источник: dataexpress.wiki

Урок 27

Языки программирования — это формальные языки, предназна­ченные для записи алгоритмов, исполнителем которых будет компьютер. Записи алгоритмов на языках программирования называются программами .
Существует несколько тысяч языков программирования. Мы с вами познакомимся с языком программирования Паскаль, который был разработан в 70-х годах прошлого века Никлаусом Виртом (Швейцария). Своё название этот язык получил в честь французского учёного Блеза Паскаля, известного не только своими достижениями в математике, физике и философии, но и созданием первой в мире механической машины, выполнявшей сложение двух чисел.
Язык Паскаль считается универсальным языком программирования, так как он может применяться для записи алгоритмов реше­ния самых разных задач (вычислительных, обработки текстов, по­строения графических изображений, поиска информации и т.д.).
Он поддерживает процедурный стиль программирования , в соответ­ствии с которым программа представляет собой последовательность операторов, задающих те или иные действия 1 .

Никлаус Вирт (род. в 1934 г.) — швейцарский учёный, специалист в области информатики, один из известнейших теоретиков в области разработки языков программиро­ вания, профессор компьютерных наук. Разработчик языка Паскаль и ряда других языков программирования.

Рекомендуем вам зайти на сайт pascalabc.net. Здесь вы найдёте много полезной информации для начинающих программистов, сможете скачать систему программирования PascalABC.NET.

3.1.1. Алфавит и словарь языка

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

  • латинские прописные буквы (А, В, С, . X, Y, Z);
  • латинские строчные буквы (а, Ь, с, . х, у, z);
  • арабские цифры (0, 1, 2, . 7, 8, 9);
  • специальные символы (знак подчёркивания; знаки препинания; круглые, квадратные и фигурные скобки; знаки арифметических операций и др.).

В качестве неделимых элементов (составных символов) рассматриваются следующие последовательности символов:

:= (знак операции присваивания);
>= и (* и *) (начало и конец комментария).

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

С другими стилями программирования вы познакомитесь при изучении курса информатики в 10-11 классах.

Служебные слова языка Паскаль

Для обозначения констант, переменных, программ и других объ­ектов используются имена — любые отличные от служебных слов последовательности букв, цифр и символа подчёркивания, начина­ющиеся с буквы или символа подчёркивания.
Прописные и строчные буквы в именах не различаются.
Длина имени может быть любой. Для удобства мы будем пользоваться именами, длина которых не превышает 8 символов.

3.1.2. Типы данных , используемые в языке Паскаль

В языке Паскаль используются различные типы данных . Мы бу­дем пользоваться некоторыми из так называемых простых типов данных (табл. 3.2)

Некоторые типы данных в языке Паскаль

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

3.1.3. Структура программы на языке Паскаль

В программе, записанной на языке Паскаль, можно выделить:
1) заголовок программы;
2) блок описания используемых данных;
3) блок описания действий по преобразованию данных (программный блок).

Блок описания данных состоит из раздела описания констант (const), раздела описания переменных (var) и некоторых других разделов. В разделе описания переменных указываются имена используемых в программе переменных и их типы. Имена переменных од­ного типа перечисляются через запятую, затем после двоеточия указывается их тип; описание каждого типа заканчивается точкой с запятой. Ниже приведён пример раздела описания переменных:

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

Ниже приведён общий вид программы :

begin

end.

Операторы — языковые конструкции, с помощью которых в про­граммах записываются действия, выполняемые над данными в про­цессе решения задачи.
Точка с запятой служит разделителем между операторами, а не является окончанием соответствующего оператора.
Перед оператором end точку с запятой ставить не нужно.

3.1.4. Оператор присваивания

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

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

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

При выполнении оператора а:=10 в ячейку оперативной памяти компьютера с именем а заносится значение 10; при выполнении опе­ратора b:=5 в ячейку оперативной памяти компьютера с именем b за­носится значение 5. При выполнении оператора s:=а+b значения ячеек оперативной памяти с именами а и b переносятся в процессор, где над ними выполняется операция сложения. Полученный резуль­тат заносится в ячейку оперативной памяти с именем s (рис. 3.1).

Читайте также:
Как установить программу для электронной подписи на компьютер

Рис. 3.1. Процесс выполнения оператора присваивания

Организация ввода и вывода данных

Ключевые слова:

• оператор вывода write
• формат вывода
• оператор ввода read

3.2.1. Вывод данных

В предыдущем параграфе мы познакомились со структурой программы на языке Паскаль, научились описывать данные, рас­смотрели оператор присваивания. Этого достаточно для того, чтобы записать программу преобразования данных. Но результат этих пре­образований нам виден не будет.
Для вывода данных из оперативной памяти на экран монитора используется оператор вывода write:

Здесь в круглых скобках помещается список вывода — список выражений, значения которых выводятся на экран. Это могут быть числовые, символьные и логические выражения, в том числе пере­менные и константы.

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

Пример. Оператор write (‘ s=’, s) выполняется так:

1) на экран выводятся символы, заключённые в апострофы: s=
2) на экран выводится значение переменной, хранящееся в ячей­ке оперативной памяти с именем s.

Если значение переменной s равно 15 и она имеет целочисленный тип, то на экране появится: s=15.
Если значение переменной s равно 15, но она имеет веществен­ный тип, то на экране появится: s=1 . 5E+01
При выполнении оператора вывода все элементы списка вывода печатаются непосредственно друг за другом. Так, в результате рабо­ты оператора write (1, 20, 300) на экран будет выведена после­довательность цифр 120300, которая будет восприниматься нами как число 120300, а не как три отдельные числовые константы. Сде­лать выводимые данные более доступными для восприятия можно разными способами:

Формат вывода — это указываемое после двоеточия целое чис­ло, определяющее, сколько позиций на экране должна занимать выводимая величина. Если цифр в числе меньше, чем зарезервиро­ванных под него позиций на экране, то свободные позиции допол­няются пробелами слева от числа. Если указанное в формате выво­да после двоеточия число меньше, чем необходимо, то оно автома­тически будет увеличено до минимально необходимого.
Для вывода вещественного числа в списке вывода для каждого выражения указываются два параметра:

1) общее количество пози­ций, отводимых под число;
2) количество позиций в дробной части числа:

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

3.2.2. Первая программа на языке Паскаль

Пользуясь рассмотренными операторами, составим программу, вычисляющую длину окружности и площадь круга радиуса 5,4 см.
Исходным данным в этой задаче является радиус: r=5,4 см. Ре­зультатом работы программы должны быть величины с — длина окружности и s — площадь круга. с, s и r — величины вещественно­го типа.

Исходные данные и результаты связаны соотношениями, извест­ными из курса математики: с=2 π r, s= π r². Программа, реализую­щая вычисления по этим формулам, будет иметь вид:

program n_l;

const pi=3.14;
var r, с, s: real;

begin

end.

Эта программа верна и решает поставленную задачу. Запустив её на выполнение, вы получите следующий результат:

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

3.2.3. Ввод данных с клавиатуры

Для ввода в оперативную память значений переменных используется оператор ввода read:

При выполнении оператора read компьютер переходит в режим ожидания данных: пользователь должен ввести данные с клавиатуры и нажать клавишу Enter¹. Несколько значений переменных числовых типов могут вводиться через пробел или через запятую. При вводе символьных переменных пробел и запятая воспринимаются как символы, поэтому ставить их нельзя.

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

Пример. Пусть .

var i, j: integer; x: real; a: char;

Присвоим переменным i, j, x, а значения 1, 0, 2,5 и ‘А’. Для этого воспользуемся оператором

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

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

Усовершенствуем программу n_1, организовав в вей ввод данных с помощью оператора read. А чтобы пользователь знал, для чего предназначена программа, и понимал, какое именно действие ожидает от него компьютер, выведем соответствующие текстовые сооб­щения с помощью оператора writeln:

program n_2;

const pi=3.14;
var r, с, s: real;

begin

writeln (‘Вычисление длины окружности и площади круга ‘ );
write (‘Введите r>>’);
readln (r);
c:=2*pi*r;
s:=pi*r*r;
writeln (‘c=’, c:6:4);
writeln (‘s=’, s:6:4)

end.

Результат работы усовершенствованной программы:

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

Вопросы и задания

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

2. В честь кого назван язык программирования Паскаль? Подготовьте краткую биографическую справку об этом учёном.

3. Почему язык программирования Паскаль считается универсальным?

4. Что входит в состав алфавита языка Паскаль?

5. Каких требований следует придерживаться при выборе имён для различных объектов в языке Паскаль?

6. Указывая название, обозначение, диапазон и занимаемую область памяти, опишите известные вам типы данных, используемые в языке Паскаль.

7. В чём разница между числами 100 и 100.0 в языке Паскаль?

8. Какую структуру имеет программа, записанная на языке Паскаль?

9. Как записывается раздел описания переменных?

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

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

12. Что является результатом выполнения оператора?

a) write (a)
б)write (‘a’)
в)write (‘a =’ , а)

13. Какой тип имеет переменная f, если после выполнения оператора write (f) на экран было выведено следующее число?

14. Каким образом можно вывести на экран вещественное число?

Источник: informatika-ru.ucoz.com

Написание программы на языке Паскаль с использованием записей

Цель работы: формирование знаний и умений по работе с записями. Приобретение навыков работы с записями.

Краткие теоретические сведения

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

Читайте также:
Изменить размер диска без потери данных программа

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

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

Запись -это структурированный тип данных, состоящий из фиксированного числа компонентов, называемых полями записи. Определение типа записи начинается идентификатором Record и заканчивается зарезервированным словом end. Между ними заключен список компонентов, называемых полями, с указанием имен полей и типа каждого поля.

Структура объявления типа записи такова:

Type

= Record

End;

VAR

Пример описания записи:

Type

Car= Record

Number:Integer;

Marka:String[20];

FIO:String[40];

Address:String[60];

End;

Var

Mashina: Car;

В данном примере была объявлена запись с именем Car, у которой имеется 4 поля: номер, название марки машины, ФИО владельца и его адрес.

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

Например, доступ к полям записи Car осуществляется как: Mashina.Marka, Mashina.FIO, Mashina.Number. Составное имя можно использовать везде, где допустимо применение типа поля. Для присваивания полям значений используется оператор присваивания.

Пример присваивания полям записи Mashina:

Mashina. Number:=164536l;

Mashina.Marka:=’ГАЗ-24’;

Mashina.FIO:=’Иванов И.И’;

Mashina. Address:=’ул.Пушкина 12-30’;

Составные имена можно использовать в операторах ввода-вывода:

Read (Mashina. Number, Mashina. FIO, Mashina. Address);

Write(Mashina. Number:4, Mashina. FIO:12, Mashina. Address:25);

Допускается применение оператора присваивания и к записям в целом, если они имеют один и тот же тип. Например,

Mash:=Mashina;

После выполнения этого оператора значения полей записи Mash станут равны значениям соответствующих полей записи Mashina.

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

Car=Record

Mashins: array [1..20] of Car;

Обращение к полям такой записи имеет громоздкий вид, для решения этой проблемы в языке Паскаль предназначен оператор With, который имеет следующий формат:

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

Пример присвоения значения полям записи Car с помощью оператора With.

With Mashina do

Пример программы работы с записями

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

Для описания сведений о компьютерных программах в разделе типов введем тип Prog_Type –запись следующей структуры:

где Title — поле для записи названия программы, Author -поле для записи фамилии автора, Entry — поле для записи года разработки, Firma -поле для записи фирмы-разработчика.

В разделе описания переменных введем массив Prog_Katalog из 10 записей типа Prog_Type. Переменную Num_Array, принимающую значения от 1до 10 введем для указания на порядковый номер записи в массиве Prog_Katalog. Для критерия поиска введем переменную Author строкового типа. Результат поиска записывается в переменную логического типа Yes_Prog.

В целом текст программы может выглядеть так:

Prog_Katalog:Array[1..10] of Prog_Type;

Writeln(‘Введите данные о ‘,Num_Array,’-й программе:’);

With Prog_Katalog[Num_Array] do

With Prog_Katalog[Num_Array] do

for Num_Array:=1 to 3 do

Writeln(‘Поиск информации(программы) по фамилии автора: ‘);

Write(‘Введите фамилия автора: ‘);

for Num_array:=1 to 10 do

if Prog_Katalog[Num_Array].Author=Author then

if not Yes_Prog then Write(‘Нет программ данного автора ‘,Author);

Порядок выполнения работы

1. Изучить теоретические сведения по теме “Работа с записями”.

2. Получить у преподавателя индивидуальное задание.

3. Разработать программу для работы с записями согласно полученному заданию.

4. Показать работающую программу преподавателю.

5. Ответить на контрольные вопросы.

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

1. Понятие записи. Структура объявления типа записи.

2. Обращение к значению поля. Составные имена.

3. Присвоение полям записи значений. Массивы записей.

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

Лабораторная работа № 26

Написание программы на языке Паскаль с использованием записей с вариантами

Цель работы: формирование знаний и умений по работе с записями с вариантами. Приобретение навыков работы с вариантными полями.

Краткие теоретические сведения

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

Записи с вариантами обеспечивают средства объединения записей, которые похожи, но не идентичны по форме. Они состоят из фиксированной и вариантной частей.

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

Type

= Record

Case : of

End;

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

Type

Rec= Record

Code:Integer;

Case Flag:Boolean of

True:(Proce1:Integer);

False:(Price2:Real);

End;

Var

В данном примере была объявлена запись с именем Rec, у которой поля Number и Code расположены в фиксированной части записи, они доступны в программе в любой текущий момент независимо от значения поля признака. Поле Price 1 может использоваться только в том случае, если значение поля признака Flag равно True. Поле Price 2 доступно в противоположном случае, т.е. если значение Flag равно False.

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

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

3 запись может иметь только одну вариантную часть, причем вариантная часть должна размещаться в конце записи

3 если поле, соответствующее какой-либо метке, является пустым, то оно записывается следующим образом: < метка>: ();

Пример программы работы с записями

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

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

Type_Publ=(Book,Journal,Newspaper);

Для описания сведений о литературе в разделе типов ведем тип Liter. Для разного типа изданий в каталоге требуется хранить разную информацию, например: если для поиска книги нужно знать год издания, то для журнала помимо года издания, нужно знать его номер, а для газеты не только год, номер, но и день выпуска. В связи с необходимостью хранения разной информации в структуре записи Liter наряду с неизменной частью — полями Title и Author, в которых отображается название публикации и фамилия автора будет вариантная часть, отражающая дату издания по-разному в зависимости от типа издания. Запись Liter будет иметь следующую структуру:

Liter=Record

Title:String[50];

Author:String[50];

Case V: Type_Publ of

Book: (YearB:Integer);

Journal: (Num:1..12;

YearJ:1900..2001);

Newspaper: (Day:1..31;

YearN:Integer);

где V — признак выбора вариантов, который может принимать значение Book, Journal, Newspaper. Для типа Book предусмотрено хранение года издания (поле YearB), для издания типа Journal- номера(Num) и год издания (поле YearJ), для издания типа Newspaper –дня (поле Day), месяца (поле Month) и года выпуска (поле YearN).

В разделе описания констант зададим значение максимального числа записей в каталоге Count=10.

Текст программы:

Источник: infopedia.su

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru