Авторские права

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

Здесь можно скачать бесплатно "W Cat - Описание языка PascalABC.NET" в формате fb2, epub, txt, doc, pdf. Жанр: Детская образовательная литература. Так же Вы можете читать книгу онлайн без регистрации и SMS на сайте LibFox.Ru (ЛибФокс) или прочесть описание и ознакомиться с отзывами.
Рейтинг:
Название:
Описание языка PascalABC.NET
Автор:
Издательство:
неизвестно
Год:
неизвестен
ISBN:
нет данных
Скачать:

99Пожалуйста дождитесь своей очереди, идёт подготовка вашей ссылки для скачивания...

Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.

Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.

Как получить книгу?
Оплатили, но не знаете что делать дальше? Инструкция.

Описание книги "Описание языка PascalABC.NET"

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



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

PascalABC.NET является мультипарадигменным языком: на нем можно программировать в структурном, объектно-ориентированном и функциональном стилях.

PascalABC.NET — это также простая и мощная интегрированная среда разработки, поддерживающая технологию IntelliSense, содержащая средства автоформатирования, встроенный отладчик и встроенный дизайнер форм.






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


const

famcount = 40;

var

fam: array[1..famcount] of string :=

('Иванов', 'Петров', 'Сидоров', 'Кузнецов', 'Филиппов',

'Сергеев', 'Александров', 'Петухов', 'Пономарев', 'Яшин',

'Греков', 'Иванова', 'Кузнецова', 'Алексеева', 'Зайцев',

'Волкова', 'Фролов', 'Юрьев', 'Бондарев', 'Семенов',

'Семенова', 'Федченко', 'Марченко', 'Борисова', 'Петровский',

'Беляева', 'Белкин', 'Лысенко', 'Сорокина', 'Пастухов',

'Юрьева', 'Кондратьев', 'Тимофеев', 'Степанова', 'Якимов',

'Юсов', 'Степанов', 'Руденко', 'Демидов', 'Леонидов');


Оба новых задания, как и два предыдущих, мы реализуем в виде одной процедуры с параметром m, принимающим значения 1 или 2:


procedure Exam2(m: integer);

var

n, i, y, num, max, k: integer;

a: array[1..100] of integer;

nums: array[1..10] of integer;

begin

CreateTask('Обработка сложных наборов данных');

case m of

1:

begin

TaskText('На вход подаются сведения об абитуриентах. В первой строке указывается',0,1);

TaskText('количество абитуриентов {N}, каждая из последующих {N} строк имеет формат',0,2);

TaskText('\(\M<Год поступления> <Фамилия> <Номер школы>\m\)',0,3);

TaskText('Номер школы содержит не более двух цифр, годы лежат в диапазоне от 1990',0,4);

TaskText('до 2010. Для каждого номера школы, присутствующего в исходных данных,',0,5);

TaskText('определить связанный с ним минимальный год поступления (вначале указывать',0,0);

TaskText('номер школы, затем минимальный год). Сведения о каждой школе выводить',0,0);

TaskText('на новой строке и упорядочивать по возрастанию номера школы.',0,0);

k := 1;

for i := 1 to 100 do

a[i] := 2100;

end;

2:

begin

TaskText('На вход подаются сведения об абитуриентах. В первой строке указывается',0,1);

TaskText('количество абитуриентов {N}, каждая из последующих {N} строк имеет формат',0,2);

TaskText('\(\M<Номер школы> <Фамилия> <Год поступления>\m\)',0,3);

TaskText('Номер школы содержит не более двух цифр, годы лежат в диапазоне от 1990',0,4);

TaskText('до 2010. Для каждого номера школы, присутствующего в исходных данных,',0,5);

TaskText('определить связанный с ним максимальный год поступления (вначале указывать',0,0);

TaskText('максимальный год, затем номер школы). Сведения о каждой школе выводить',0,0);

TaskText('на новой строке и упорядочивать по убыванию максимального года,',0,0);

TaskText('а для совпадающих годов \= по возрастанию номера школы.',0,0);

k := -1;

for i := 1 to 100 do

a[i] := 0;

end;

end;

StartExam;

if Random(2)=0 then

n := RandomN(50, 100)

else

n := RandomN(10, 20);

case CurrentTest of

1: n := RandomN(10, 20);

2: n := RandomN(50, 100);

end;

if n <= 20 then

for i := 1 to 10 do

nums[i] := RandomN(1, 100);

writeln(f1,n);

for i := 1 to n do

begin

y := RandomN(1990, 2010);

if n <= 20 then

num := nums[RandomN(1, 10)]

else

num := RandomN(1, 100);

case m of

1: writeln(f1, y, ' ', fam[RandomN(1, famcount)],' ', num);

2: writeln(f1, num, ' ', fam[RandomN(1, famcount)],' ', y);

end;

if k*a[num] k*y then

a[num] := y;

end;

case m of

1: for i := 1 to 100 do

if a[i] < 2100 then

writeln(f2, i, ' ', a[i]);

2: while true do

begin

max := 0;

for i := 1 to 100 do

if a[i] max then

begin

max := a[i];

num := i;

end;

if max = 0 then

break

else

begin

writeln(f2, max, ' ', num);

a[num] := 0;

end;

end;

end;

EndExam;

SetTestCount(5);

end;


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

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

В процедуре используются два массива: массив a предназначен для хранения контрольных (правильных) результатов, а массив nums является вспомогательным (его назначение описывается далее). Для хранения исходных данных массив не предусматривается, поскольку после генерации полей очередной записи они будут немедленно записываться в исходный файл и обрабатываться.

Количество записей в исходном наборе данных записывается в переменную n. Наборы, содержащие небольшое число записей, удобны при отладке программы (благодаря своей "обозримости"), в то время как большие наборы позволяют проверить программу в "реальной" ситуации и тем самым окончательно убедиться в правильности алгоритма. Используя функцию CurrentTest, добавленную в версию 4.11 конструктора PT4TaskMaker, мы обеспечили дополнительную "настройку" процесса генерации исходных данных: при первом тестовом запуске программы с решением задачи ей всегда предлагается набор из небольшого количества записей (что упрощает поиск и исправление ошибок), а при втором тестовом запуске -- большой набор записей (что позволяет проверить предложенный алгоритм "на прочность"). При последующих тестовых запусках (а также при демонстрационном и ознакомительном запуске программы) значение n с равной вероятностью выбирается либо из диапазона 10..20, либо из диапазона 50..100.

В случае генерации исходных данных для указанных заданий при небольших значениях n (10-20) возникает дополнительная проблема: если выбирать случайным образом номера школ из всего допустимого диапазона 1-100, то с большой вероятностью каждый номер школы появится в наборе исходных данных всего по одному разу, что не позволит проверить правильность реализованного в программе алгоритма нахождения минимального/максимального значения. Чтобы решить эту проблему, используется вспомогательный массив nums из 10 элементов, в который заносятся 10 случайно выбранных номеров школ, после чего номера школ для исходного набора записей выбираются уже из этого набора номеров.

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

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

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

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


На Facebook В Твиттере В Instagram В Одноклассниках Мы Вконтакте
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!

Похожие книги на "Описание языка PascalABC.NET"

Книги похожие на "Описание языка PascalABC.NET" читать онлайн или скачать бесплатно полные версии.


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

Все книги автора W Cat

W Cat - все книги автора в одном месте на сайте онлайн библиотеки LibFox.

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

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

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

А что Вы думаете о книге? Оставьте Ваш отзыв.