Взаємодія програми з операційною системою 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Взаємодія програми з операційною системою



Програмування під DOS зв'язано з частим звертанням до ресурсів, наприклад, до відеокарти, прямо без виклику функцій операційної системи, що підвищує швидкодію програм за рахунок відмовлення від універсальності. Однак такий підхід до програмування в Windows неможливий, тому що може порушити цілісність інших додатків.

Ще один недолік прямого підходу складається в необхідності самостійної роботи з пристроями, що іноді істотно відрізняються один від одного, особливо в даний час. В Windows ця проблема вирішена за допомогою універсального програмного інтерфейсу операційної системи, що забезпечує однаковий доступ до пристроїв одного типу за допомогою набору так званих API-функцій (від англ. API - Application Programming Interface - інтерфейс прикладного програмування). Наприклад, незалежно від відеокарти, встановленої на конкретному комп'ютері, для виведення зображення використовуються ті самі функції.

Незважаючи на зниження швидкодії, визване більш складним шляхом при виконанні операції «програма - операційна система -драйвер - пристрій», програма стає абсолютно переносною, тобто може бути запущена на комп'ютері з будь-якою конфігурацією.

Таким чином, Windows-програми значно тісніше зв'язані з операційною системою, чим програми, що працюють у DOS.


Програма-тест

unit Unit1;

 

interface

 

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,

Forms,Dialogs, StdCtrls;

 

type

TForm1 = class(TForm)

Memo1: TMemo;

Edit1: TEdit;

Button1: TButton;

Label1: TLabel;

Label2: TLabel;

Button2: TButton;

Button3: TButton;

Memo2: TMemo;

Label3: TLabel;

Label4: TLabel;

Edit2: TEdit;

Label5: TLabel;

Edit3: TEdit;

Label6: TLabel;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure FormActivate(Sender: TObject);

procedure Edit1KeyPress(Sender: TObject; var Key: Char);

 

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

Form1: TForm1;

 

implementation

 

{$R *.dfm}

Var

k,km,m: Integer;

Sk,Skm: String;

procedure TForm1.FormCreate(Sender: TObject);

begin

Memo1.Clear;

Memo2.Clear;

Edit1.Clear;

Edit2.Clear;

Edit3.Clear;

Memo1.ReadOnly:= True;

Memo2.ReadOnly:= True;

Edit2.ReadOnly:= True;

Edit3.ReadOnly:= True;

k:= 1;

m:= 0;

Label3.Caption:= '';

Label3.Caption:= 'Основні елементи програми:';

Memo1.Lines.Add('1. Дійсні');

Memo1.Lines.Add('2. Цілочисельні');

Memo1.Lines.Add('3. Літерні');

Memo1.Lines.Add('4. Оператори, ключові слова, директиви компілятору');

Memo1.Lines.Add('5. Логічні');

end;

 

procedure TForm1.Button1Click(Sender: TObject);

Var

i: Integer;

Si: String;

begin

Si:= Edit1.Text;

i:= StrToInt(Si);

Case k of

1: Case I of

1: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

2: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

3: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

4: Begin

Memo2.Lines.Add (' Відповідь вірна');

m:= m + 1;

End;

5: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

end;

2: Case I of

1: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

2: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

3: Begin

Memo2.Lines.Add (' Відповідь вірна');

m:= m + 1;

End;

4: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

5: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

end;

3: Case I of

1: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

2: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

3: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

4: Begin

Memo2.Lines.Add (' Відповідь вірна');

m:= m + 1;

End;

5: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

end;

4: Case I of

1: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

2: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

3: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

4: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

5: Begin

Memo2.Lines.Add (' Відповідь вірна');

m:= m + 1;

End;

end;

5: Case I of

1: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

2: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

3: Begin

Memo2.Lines.Add (' Відповідь вірна');

m:= m + 1;

End;

4: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

5: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

end;

6: Case I of

1: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

2: Begin

Memo2.Lines.Add (' Відповідь вірна');

m:= m + 1;

End;

3: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

4: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

5: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

end;

7: Case I of

1: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

2: Begin

Memo2.Lines.Add (' Відповідь вірна');

m:= m + 1;

End;

3: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

4: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

5: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

end;

8: Case I of

1: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

2: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

3: Begin

Memo2.Lines.Add (' Відповідь вірна');

m:= m + 1;

End;

4: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

5: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

end;

9: Case I of

1: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

2: Begin

Memo2.Lines.Add (' Відповідь вірна');

m:= m + 1;

End;

3: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

4: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

5: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

end;

10: Case I of

1: Begin

Memo2.Lines.Add (' Відповідь вірна');

m:= m + 1;

End;

2: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

3: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

4: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

5: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

end;

11: Case I of

1: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

2: Begin

Memo2.Lines.Add (' Відповідь вірна');

m:= m + 1;

End;

3: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

4: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

5: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

end;

12: Case I of

1: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

2: Begin

Memo2.Lines.Add (' Відповідь вірна');

m:= m + 1;

End;

3: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

4: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

5: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

end;

13: Case I of

1: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

2: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

3: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

4: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

5: Begin

Memo2.Lines.Add (' Відповідь вірна');

m:= m + 1;

End;

end;

14: Case I of

1: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

2: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

3: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

4: Begin

Memo2.Lines.Add (' Відповідь вірна');

m:= m + 1;

End;

5: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

end;

15: Case I of

1: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

2: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

3: Begin

Memo2.Lines.Add (' Відповідь вірна');

m:= m + 1;

End;

4: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

5: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

end;

end;

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

Close;

end;

 

procedure TForm1.Button2Click(Sender: TObject);

begin

Memo1.Clear;

Memo2.Clear;

Edit1.Clear;

Label3.Caption:= '';

k:= k + 1;

Case k of

2: Begin

Label3.Caption:= 'З чого складається програма?';

Memo1.Lines.Add('1. StringAnsi');

Memo1.Lines.Add('2. StringShort');

Memo1.Lines.Add('3. З основної частини і декількох модулів');

Memo1.Lines.Add('4. Short');

Memo1.Lines.Add('5. WideShort');

End;

3: Begin

Label3.Caption:= 'Яким ключовим словом починається заголовок програми?';

Memo1.Lines.Add('1. Статистичні і динамічні');

Memo1.Lines.Add('2. Формальні і статичні');

Memo1.Lines.Add('3. Типові і динамічні');

Memo1.Lines.Add('4. Program');

Memo1.Lines.Add('5. Логічні і формальні');

End;

4: Begin

Label3.Caption:= 'Чим починається і закінчується розділ опису логіки програми?';

Memo1.Lines.Add('1. Об'+'"'+'єднання множин: +');

Memo1.Lines.Add('2. Пересічення множин: *');

Memo1.Lines.Add('3. Еквівалентність: =');

Memo1.Lines.Add('4. Перевірка входження: <=');

Memo1.Lines.Add('5. Begin..End.');

End;

5: Begin

Label3.Caption:= 'Який розділ програми є обовязковим?';

Memo1.Lines.Add('1. нефіксованої кількісті різних типів');

Memo1.Lines.Add('2. фіксованої кількісті тільки однакових типів');

Memo1.Lines.Add('3. розділ опису логіки програми');

Memo1.Lines.Add('4. нефіксованої кількісті однакових типів');

Memo1.Lines.Add('5. однакової кількісті різних типів');

End;

6: Begin

Label3.Caption:= 'Яким ключовим словом починається розділ опису констант? ';

Memo1.Lines.Add('1. Файлова константа');

Memo1.Lines.Add('2. Const');

Memo1.Lines.Add('3. Файловий оператор');

Memo1.Lines.Add('4. Файловий масив');

Memo1.Lines.Add('5. Файлові записи');

End;

7: Begin

Label3.Caption:= 'Яким ключовим словом починається заголовок модуля?';

Memo1.Lines.Add('1. Дійсного типу');

Memo1.Lines.Add('2. Unit ');

Memo1.Lines.Add('3. Типу множина');

Memo1.Lines.Add('4. Типу масив');

Memo1.Lines.Add('5. Файлового типу');

End;

8: Begin

Label3.Caption:= 'Яким ключовим словом починається інтерфейсна секція?';

Memo1.Lines.Add('1. mass[1..5] of real');

Memo1.Lines.Add('2. real[1..5] of real');

Memo1.Lines.Add('3. interface');

Memo1.Lines.Add('4. readmass[1..5] of real');

Memo1.Lines.Add('5. matr[1..5] of real');

End;

9: Begin

Label3.Caption:= 'Яким ключовим словом починається описова секція?';

Memo1.Lines.Add('1. 128');

Memo1.Lines.Add('2. Implementation');

Memo1.Lines.Add('3. 32767');

Memo1.Lines.Add('4. 65535');

Memo1.Lines.Add('5. 2147483647');

End;

10: Begin

Label3.Caption:= 'Яким ключовим словом починається секція ініціалізації? ';

Memo1.Lines.Add('1. initialization');

Memo1.Lines.Add('2. елементи другої множини, що не містяться в першій множині');

Memo1.Lines.Add('3. елементи множини, що містяться в другій множині');

Memo1.Lines.Add('4. елементи множини, що містяться в першій множині');

Memo1.Lines.Add('5. елементи першої множини, що містяться в другій множині');

End;

11: Begin

Label3.Caption:= 'Яким ключовим словом починається секція деініціалізації?';

Memo1.Lines.Add('1. одним');

Memo1.Lines.Add('2. finalization');

Memo1.Lines.Add('3. трьома');

Memo1.Lines.Add('4. чотирма');

Memo1.Lines.Add('5. п'+'"'+'ятьма');

End;

12: Begin

Label3.Caption:= 'Яка схема програм реалізується у Windows?';

Memo1.Lines.Add('1. 4 Гб');

Memo1.Lines.Add('2. Керованих подіями');

Memo1.Lines.Add('3. 512 Кб');

Memo1.Lines.Add('4. 256 Кб');

Memo1.Lines.Add('5. 64 Кб');

End;

13: Begin

Label3.Caption:= 'Як розшифровується абревіатура API?';

Memo1.Lines.Add('1. LengthSet');

Memo1.Lines.Add('2. SetString');

Memo1.Lines.Add('3. StringSet');

Memo1.Lines.Add('4. StringLength');

Memo1.Lines.Add('5. Інтерфейс прикладного програмування');

End;

14: Begin

Label3.Caption:= 'Який розділ програми є обовязковим?';

Memo1.Lines.Add('1. f1: TextFile');

Memo1.Lines.Add('2. f2: File of integer');

Memo1.Lines.Add('3. f3: File of real');

Memo1.Lines.Add('4. Begin..End.');

Memo1.Lines.Add('5. f5: System.Text');

End;

15: Begin

Label3.Caption:= 'Яким ключовим словом починається розділ опису типів?';

Memo1.Lines.Add('1. Low');

Memo1.Lines.Add('2. SetLow');

Memo1.Lines.Add('3. Type');

Memo1.Lines.Add('4. High');

Memo1.Lines.Add('5. LowHigh');

End;

 

end;

if k > 15 then

Begin

if (m>=0)and(m<4) then km:= 1;

if (m>=4)and(m<7) then km:= 2;

if (m>=7)and(m<9) then km:= 3;

if (m>=9)and(m<12) then km:= 4;

if (m>=12)and(m<=15) then km:= 5;

Str(km:7,Skm);

Edit3.Text:= Skm;

Exit;

End;

Sk:= IntToStr(k);

Edit2.Text:= Sk;

Edit1.SetFocus;

Form1.Button1.Enabled:= False;

end;

 

procedure TForm1.FormActivate(Sender: TObject);

begin

Edit1.SetFocus;

Sk:= IntToStr(k);

Edit2.Text:= Sk;

Form1.Button1.Enabled:= False;

end;

 

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

begin

if not (Key in ['1'..'5']) then

Begin

Key:= #0;

Beep;

Exit;

End;

Form1.Button1.Enabled:= True;

 

end;

 

end.



Поделиться:


Последнее изменение этой страницы: 2020-03-02; просмотров: 96; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.138.69.45 (0.147 с.)