Новые книги

Вы на заслуженном отдыхе… сосредоточенно копите деньги на подарки внукам, ищете способы разнообразить свою жизнь и всеми силами стараетесь заработать дополнительную копеечку к мизерной пенсии. А вокруг вас продолжает крутиться динамичный молодёжный мир Интернета, который кажется далёким и непонятным. Но Любовь Левина уверена, что заработать на пенсии можно не только вязанием носочков – есть много других не менее успешных, а главное – современных методов работы (и не таких страшных, как кажется на первый взгляд)!

Попробуйте под чутким руководством Любови Левиной создать свой маленький бизнес в Интернете – и узнайте, на что вы способны!

Попробуйте – и у вас обязательно получится!
The tutorials start with the most basic Windows program, the windows equivalent of "hello world!", Winnie. Then we move on to a more Generic program, which serves as a skeleton for a simple Windows application. Then we discuss various Controls. Using these controls one can build a complete dialog-based application, whose main window is a dialog. We are then ready to discuss a Generic Dialog, a framework with which one can quickly build specific dialogs.

To do some simple graphics one needs a Canvas object. You use Pens and Brushes to paint on the canvas.

More advanced topics include programming with Threads with a practical example of a Folder Watcher — a program that watches directories for changes.

Modern windows programming requires some knowledge of the Shell API, which leads us to the discussion of OLE and COM. We show how one can encapsulate OLE in C++ to create Smart OLE. OLE is also used in Automation, which lets your application talk to other applications.

Controls are nothing but specialized windows. You can easily create your own controls, as evidenced by the Splitter Bar tutorial.

For graphics programmer, we give a short introduction on using Bitmaps for animation and a more advanced tutorial on using Direct Draw.

28. Множества

28. Множества

   Понятие множества в языке ПАСКАЛЬ основывается  на  математическом

представлении о  множествах:  это ограниченная совокупность различных

элементов. Для построения конкретного множественного типа использует-

ся перечисляемый или интервальный тип данных.  Тип элементов, состав-

ляющих множество, называется базовым типом.

   Множественный тип  описывается  с  помощью  служебных слов Set of,

например:

 

         type  M= Set of B;

 

Здесь М - множественный тип, В - базовый тип.

   Пример описания переменной множественного типа:

 

         type

             M= Set of 'A'..'D';

         var

            MS: M;

 

   Принадлежность переменных к множественному типу может быть опреде-

лена прямо в разделе описания переменных:

 

         var

            C: Set of 0..7;

 

   Константы множественного  типа  записываются  в виде заключенной в

квадратные скобки последовательности элементов или интервалов базово-

го типа, разделенных запятыми, например:

 

         ['A', 'C']    [0, 2, 7]    [3, 7, 11..14].

 

Константа вида

 

         [ ]

 

означает пустое подмножество.

   Множество включает в себя набор элементов базового типа, все подм-

ножества данного множества, а также пустое подмножество. Если базовый

тип, на котором строится множество, имеет К элементов, то число подм-

ножеств, входящих в это множество, равно 2 в степени К. Пусть имеется

переменная Р интервального типа:

 

         var P: 1..3;

 

   Эта переменная может принимать три различных значения  -  либо  1,

либо 2, либо 3. Переменная Т множественного типа

 

         var T: Set of 1..3;

 

может принимать восемь различных значений:

 

         [ ]        [1,2]

         [1]        [1,3]

         [2]        [2,3]

         [3]        [1,2,3]

 

   Порядок перечисления элементов базового типа в константах  безраз-

личен.

   Значение переменной  множественного  типа  может быть задано конс-

трукцией вида [T], где T - переменная базового типа.

   К переменным и константам множественного типа  применимы  операции

присваивания(:=), объединения(+), пересечения(*) и вычитания(-):

 

         ['A','B'] + ['A','D']      даст  ['A','B','D']

         ['A'] * ['A','B','C']      даст  ['A']

         ['A','B','C'] - ['A','B']  даст  ['C'].

 

   Результат выполнения  этих  операций  есть величина множественного

типа.

   К множественным величинам применимы операции: тождественность (=),

нетождественность (<>), содержится  в (<=), содержит (>=).  Результат

выполнения этих операций имеет логический тип, например:

 

         ['A','B'] = ['A','C']  даст FALSE

         ['A','B'] <> ['A','C'] даст TRUE

         ['B'] <= ['B','C']     даст TRUE

         ['C','D'] >= ['A']     даст FALSE.

 

   Кроме этих операций для работы с величинами множественного типа  в

языке ПАСКАЛЬ используется операция

 

         in

 

проверяющая  принадлежность  элемента  базового типа,  стоящего слева

от знака операции,  множеству, стоящему справа от знака операции. Ре-

зультат выполнения этой операции - булевский.  Операция проверки при-

надлежности элемента множеству часто используется вместо операций от-

ношения, например:

 

         A in ['A', 'B'] даст  TRUE,

         2 in [1, 3, 6]  даст  FALSE.

  

   При использовании  в   программах   данных   множественного   типа

выполнение операций происходит над битовыми строками данных.  Каждому

значению множественного типа в памяти ЭВМ соответствует один двоичный

разряд. Например, множество

 

         ['A','B','C','D']

 

представлено в памяти ЭВМ битовой строкой

 

         1 1 1 1.

 

Подмножества этого множества представлены строками:

 

         ['A','B','D']   1 1 0 1

         ['B','C']       0 1 1 0

         ['D']           0 0 0 1

 

   Величины  множественного типа не могут быть элементами списка вво-

да - вывода.

   В каждой  конкретной  реализации транслятора с языка ПАСКАЛЬ коли-

чество элементов базового типа,  на котором строится множество, огра-

ничено. В  TURBO PASCAL количество базовых элементов не должно превы-

шать 256.

   Инициализация величин  множественного  типа производится с помощью

типизированных констант:

  

   const  seLit: Set of 'A'..'D'= [];

  

   Проиллюстрируем применение  данных множественного типа на примере.

   Пример. Составить программу, которая вырабатывает и выводит на эк-

ран дисплея наборы случайных чисел для игры в "Спортлото 5 из 36".

   Для заполнения каждой карточки спортлото необходимо получить набор

из пяти псевдослучайных чисел. К этим числам предъявляются два требо-

вания:

    -числа должны находиться в диапазоне 1..36;

    -числа не должны повторяться.

  

    Program Lotto;

     var

         nb, k: Set of 1..36;

         kol, l, i, n: Integer;

     begin

        Randomize;

        WriteLn('ВВЕДИ kol');

        ReadLn(kol);

        nb:=[1..36];

        for i:=1 to kol do

          begin

           k:=[];

           for l:=1 to 5 do

             begin

               repeat

                 n:=Random(36)

               until (n in nb) and not (n in k);

               k:=k+[n];

               Write(n:4)

             end;

           WriteLn

          end

         end.