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

Тут можно читать онлайн W Cat - Описание языка PascalABC.NET - бесплатно полную версию книги (целиком) без сокращений. Жанр: Детская образовательная литература. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.

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

Описание языка PascalABC.NET - описание и краткое содержание, автор W Cat, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru


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


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


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

Описание языка PascalABC.NET - читать онлайн бесплатно полную версию (весь текст целиком)

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

Интервал:

Закладка:

Сделать

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

Добавим к нашей библиотеке вспомогательный массив фамилий из 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.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


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

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




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


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


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

Напишите свой комментарий
x