MyBooks.club
Все категории

W Cat - Описание языка PascalABC.NET

На сайте mybooks.club вы можете бесплатно читать книги онлайн без регистрации, включая W Cat - Описание языка PascalABC.NET. Жанр: Детская образовательная литература издательство неизвестно,. Доступна полная версия книги с кратким содержанием для предварительного ознакомления, аннотацией (предисловием), рецензиями от других читателей и их экспертным мнением.
Кроме того, на сайте mybooks.club вы найдете множество новинок, которые стоит прочитать.

Название:
Описание языка PascalABC.NET
Автор
Издательство:
неизвестно
ISBN:
нет данных
Год:
неизвестен
Дата добавления:
13 февраль 2019
Количество просмотров:
251
Читать онлайн
W Cat - Описание языка PascalABC.NET

W Cat - Описание языка PascalABC.NET краткое содержание

W Cat - Описание языка PascalABC.NET - описание и краткое содержание, автор W Cat, читайте бесплатно онлайн на сайте электронной библиотеки mybooks.club
PascalABC.NET — это язык программирования Паскаль нового поколения, включающий классический Паскаль, большинство возможностей языка Delphi, а также ряд собственных расширений. Он реализован на платформе Microsoft.NET и содержит все современные языковые средства: классы, перегрузку операций, интерфейсы, обработку исключений, обобщенные классы и подпрограммы, сборку мусора, лямбда-выражения, средства параллельного программирования.PascalABC.NET является мультипарадигменным языком: на нем можно программировать в структурном, объектно-ориентированном и функциональном стилях.PascalABC.NET — это также простая и мощная интегрированная среда разработки, поддерживающая технологию IntelliSense, содержащая средства автоформатирования, встроенный отладчик и встроенный дизайнер форм.

Описание языка PascalABC.NET читать онлайн бесплатно

Описание языка PascalABC.NET - читать книгу онлайн бесплатно, автор W Cat

case CurrentTest of

2: n := 1;

4: n := RandomN(2, 9);

end;

new(p1);

p1^.Data := RandomN(10, 99);

p1^.Prev := nil;

p2 := p1;

for i := 2 to n do

begin

new(p);

p^.Data := RandomN(10, 99);

p^.Prev := p2;

p2^.Next := p;

p2 := p;

end;

p2^.Next := nil;

SetPointer(1, p1);

SetPointer(2, p2);

ResultP('Последний элемент: ', 2, 0, 2);

ResultList(1, 0, 3);

ShowPointer(2);

DataP(1, 0, 2);

p := p1;

for i := 1 to n do

begin

p^.Prev := @WrongNode;

p := p^.Next;

end;

DataList(1, 0, 3);

ShowPointer(1);

end;


procedure MakerDemo8;

begin

CreateTask('Динамические структуры данных: двусвязный список');

TaskText('Дан указатель~{P}_1 на начало непустой цепочки ' +

'элементов-записей типа TNode,', 0, 1);

TaskText('связанных между собой с помощью поля Next. Используя ' +

'поле Prev записи TNode,', 0, 2);

TaskText('преобразовать исходную (Iодносвязнуюi) цепочку ' +

'в Iдвусвязнуюi, в которой каждый', 0, 3);

TaskText('элемент связан не только с последующим элементом ' +

'(с помощью поля Next),', 0, 4);

TaskText('но и с предыдущим (с помощью поля Prev). Поле Prev ' +

'первого элемента положить', 0, 5);

TaskText('равным N. Вывести указатель на последний элемент ' +

'преобразованной цепочки.', 0, 0);

MakerDemo8Data;

end;


procedure MakerDemo8Obj;

begin

CreateTask('Динамические структуры данных: двусвязный список');

TaskText(

'Дана ссылка~{A}_1 на начало непустой цепочки элементов-объектов типа Node,'#13 +

'связанных между собой с помощью своих свойств Next. Используя свойства Prev'#13 +

'данных объектов, преобразовать исходную (Iодносвязнуюi) цепочку в Iдвусвязнуюi,'#13 +

'в которой каждый элемент связан не только с последующим элементом (с помощью'#13 +

'свойства Next), но и с предыдущим (с помощью свойства Prev). Свойство Prev'#13 +

'первого элемента положить равным O. Вывести ссылку~{A}_2 на последний'#13 +

'элемент преобразованной цепочки.'

);

SetObjectStyle;

MakerDemo8Data;

end;


Анализируя приведенные варианты процедур, легко заметить, что они отличаются лишь деталями формулировки задания. Алгоритмы генерации исходных и контрольных данных для традиционного и объектного вариантов совпадают, поэтому они выделены в отдельную вспомогательную процедуру MakerDemo8Data. В то же время представления динамических структур и связанных с ними указателей или объектов будут отличаться (см. рисунки, приведенные ниже). Необходимые корректировки в представлении динамических структур выполняются задачником автоматически, с учетом используемого языка программирования.

Однако для языка PascalABC.NET требуемую настройку необходимо выполнить явно, так как в нем можно использовать оба варианта представления динамических структур: традиционный (как для обычного Паскаля в системах Delphi и Free Pascal Lazarus) и объектный (как в языках C#, Visual Basic .NET, Python и Java). Для того чтобы представление динамических данных при выполнении задания в среде PascalABC.NET соответствовало объектному варианту, следует в начале процедуры, реализующей задание (перед вызовом любых процедур, связанных с указателями и динамическими структурами), вызвать специальную процедуру без параметров SetObjectStyle. Для остальных языков данная процедура не выполняет никаких действий.

Обратите внимание на возможность использования в формулировке задания более 5 экранных строк. Строки, которые не умещаются в области формулировки задания, следует добавлять к заданию процедурой TaskText, указывая в качестве последнего параметра процедуры число 0 (см. процедуру MakerDemo8). Еще проще задавать длинные" формулировки заданий с помощью нового варианта процедуры TaskText с единственным строковым параметром, содержащим все строки формулировки (см. процедуру MakerDemo9). При наличии подобных строк в окне задачника (если окно находится в режиме с фиксированной компоновкой) слева от области формулировки появятся кнопки, обеспечивающие прокрутку формулировки задания; кроме этих кнопок для прокрутки можно также использовать стандартные клавиши, в частности, клавиши со стрелками.

Для того чтобы имя нулевого указателя (или объекта) соответствовало используемому языку программирования, в формулировке задания применяются управляющие последовательности N (имя нулевого указателя) и O (имя нулевого объекта). Для языка PascalABC.NET обе эти последовательности генерируют текст nil.

Достаточно часто алгоритмы, разработанные учащимися для обработки динамических структур данных, дают неверные результаты в случае особых (хотя и допустимых) структур, например, состоящих только из одного элемента. Поэтому желательно предусмотреть появление подобных структур в тестовых наборах исходных данных. В наших заданиях исходный список, состоящий из одного элемента, будет предлагаться программе учащегося в среднем один раз при каждых четырех тестовых испытаниях. Кроме того, благодаря использованию функции CurrentTest, появившейся в версии 4.11 конструктора, вариант списка с единственным элементом будет предложен программе учащегося для обработки в тесте номер 2, а вариант списка с более чем одним элементом -- в тесте номер 4. Таким образом, можно гарантировать, что при прохождении набора из 5 тестовых испытаний программе будут предложены как стандартные", так и "особые" наборы исходных данных.

При формировании односвязной структуры неиспользуемые поля Prev для каждого элемента структуры следует положить равными адресу фиктивного" элемента (в нашем случае -- переменной WrongNode), не связанного с данной структурой. Заметим, что для всех элементов, кроме первого, значения поля Prev можно было бы положить равными nil, однако это не подходит для первого элемента: если поле Prev первого элемента будет равно nil, то слева от него будет выведен "лишний" (в данной ситуации) текст nil<.

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

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

имеются языки, для которых отсутствует возможность выполнять задания на обработку динамических структур (например, Visual Basic и 1C); в языках платформы .NET, а также Python и Java, необходимо использовать объектный" стиль формулировок вместо стиля, основанного на указателях и применяемого для языков Pascal и C++. Кроме того, следует определиться с выбором стиля для языка PascalABC.NET, поскольку в нем можно использовать как стиль указателей, так и стиль объектов. Можно, например, включить в группу заданий для языка PascalABC.NET оба варианта каждого задания.

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

С учетом этих замечаний изменим основную процедуру группы InitTask следующим образом:


procedure InitTask(num: integer);

begin

case num of

1..2: UseTask('Begin', num);

3: MakerDemo3;

4: MakerDemo4;

5: MakerDemo5;

6: MakerDemo6;

7: MakerDemo7;

8: if CurrentLanguage and lgWithPointers <> 0 then

MakerDemo8

else

MakerDemo8Obj;

9: MakerDemo8Obj;

end;

end;


В этой процедуре используется функция CurrentLanguage, позволяющая определить текущий язык программирования, используемый задачником. Если текущий язык относится к категории языков, поддерживающих указатели (в том числе PascalABC.NET), то в качестве задания номер 8 вызывается процедура MakerDemo8, в которой задание формулируется в терминах указателей. В противном случае вызывается вариант задания, использующий объектную терминологию. При использовании языка PascalABC.NET число заданий в группе будет равно 9; при этом дополнительное задание номер 9 будет представлять собой объектный" вариант задания номер 8.

Функцию CurrentLanguage потребуется использовать и в начале процедуры inittaskgroup для того, чтобы правильно определить количество заданий в группе для разных языков программирования. Приведем фрагмент, на который надо заменить вызов процедуры CreateGroup и предшествующее ему ключевое слово begin (обратите внимание на то, что теперь в качестве предпоследнего параметра процедуры CreateGroup используется переменная n):


W Cat читать все книги автора по порядку

W Cat - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки mybooks.club.


Описание языка PascalABC.NET отзывы

Отзывы читателей о книге Описание языка PascalABC.NET, автор: W Cat. Читайте комментарии и мнения людей о произведении.

Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*
Все материалы на сайте размещаются его пользователями.
Администратор сайта не несёт ответственности за действия пользователей сайта..
Вы можете направить вашу жалобу на почту librarybook.ru@gmail.com или заполнить форму обратной связи.