Div, Mod, сложение, вычитание в Pascal.

Помимо операций умножения и сложения, над целочисленными переменными производятся операции Div (операция целочисленного деления), Mod (вычисление остатка от целочисленного деления), операция вычитания «-».

Использование program, begin…end, write, readln, Uses Crt, Clrscr.

В этом уроке мы напишем самую простую программу, состоящую всего из пяти строк. Эта программа будет выводить сообщение на экран. Для написания программы нам необходимо знать как работают операторы Write, Readln, а также понять для чего нужны ...

Функции Copy, Pos, процедуры Delete, Insert.

Функция Copy позволяет копировать из строки часть символов. Функция имеет 3 параметра. Copy (st, index, count). St-строка из которой копируют, Index-номер символа, с которого начинается копирование, Count-количество символов, которое будет ...

Циклы и массивы

Спецификация процедуры.

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

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

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

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

WITH <Переменная типа RECORD> DO <Оператор>;
Используем предыдущий пример для пояснения работы оператора присоединения.
WITH Std
DO BEGIN
Tab := 910678;
Fio := 'Петухов И.М.';
Data :='13.01.82';
Group :='ИП-11';
Stepa := 550.00;
END;
Проще эта запись, чем предыдущая или нет пусть для себя решает сам программист. С позиций надежности программы (имеется в виду ее устойчивость к неизбежной коррекции исходного кода) предыдущий пример лучше, так как не допускает альтернатив при совпадающих названиях имен полей различных записей.

Ввод данных в массив записей с клавиатуры.

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


FOR I:=1 TO 20
DO BEGIN
WRITELN('Введите данные о студенте № ', 1:1);
WITH Mstd[I] DO
BEGIN
WRITELN('Hoмер зачетной книжки');
READLN(Tab);
WRITELN('Фамилия И.О.');
READLN(FIO);
WRITELN('Дата рождения');
READLN(Data);
WRITELN('Номер группы');
READLN(Group);
WRITELN('Размер стипендии, руб.');
READLN(Stepa);
END;


Вложение записей.

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

zapisi.

Эта таблица структурно отличается от табл. 3.1. В табл. 3.1 все поля были одного уровня. А в табл. 3.2 пять полей: Дисциплина 1, Дисциплина 2, Дисциплина 3, Дисциплина 4, Дисциплина 5 - образуют группу, которая подведена под общее имя — Аттестация.
Для создания такой таблицы следует использовать два типа записей ATTESTACIA и USPEVAEMOST. При этом порядок объявления этих записей существенен. Первой объявляется та запись, на которую ниже по тексту программы будет ссылка.


TYPE ATTASTACIA = RECORD
D1: BOOLEAN; {Дисциплина 1}
D2: BOOLEAN; {Дисциплина 2}
D3: BOOLEAN; {Дисциплина 3}
D4 : BOOLEAN; {Дисциплина 4}
D5: BOOLEAN; {Дисциплина 5}
END;
USPEVAEMOST = RECORD
TAB : LONGINT; {Номер зачетной книжки}
ATT : ATTESTACIA
END;
VAR USP: ARRAY[1..20] OF USPEVAEMOST;


Из текста программы видно, что для кодирования результатов аттестации выбран логический тип данных — BOOLEAN. То есть значению 'А' — аттестован соответствует TRUE, а ситуации не аттестован — 'Н/А' соответствует FALSE. Если Вам понадобиться заправка картриджей OKI обращайтесь к опытным специалистам, которые все сделают по доступным ценам. Существует ограничение на глубину вложения записей — не более 9.

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

Ниже приведен пример прямого присвоения значений полям первой записи USP[1] в массиве записей USP - успеваемость группы. Уровень вложения соответствует числу разделителей имен, то есть точек в идентификаторе поля.


USP[1].TAB:= 910678; {Уровень вложения 1}
USP[1].ATT.D1:= TRUE; {Уровень вложения 2}
USP[1].ATT.D2:= TRUE;
USP[1].ATT.D3:= FALSE;
USP[1].ATT.D4:= TRUE;
USP[1].ATT.D5:= FALSE;
Используем оператор WITH для этого же примера.
WITH USP[1] {Уровень вложения 1}
DO BEGIN
TAB :=910678;
WITH ATT DO BEGIN {Уровень вложения 2}
D1:=TRUE;
D2:=TRUE;
D3:=FALSE;
D4:=TRUE;
D5:=FALSE;
END
END;


 

Комментарии  

 
+1 # Иван 25.03.2016 13:12
Усе найссс епт
 
   ГлавнаяПаскальЛекции по Pascal. Часть 2.Использование оператора WITH ... DO.