Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

СПО_Praktikum_k_lab_rabotam

.pdf
Скачиваний:
15
Добавлен:
16.05.2015
Размер:
1.26 Mб
Скачать

41

) 0 !<?!) ) " !, 2 / ) 01 ! 9 7& 8 < !1" ! 0 !B ), 9 & 9 ) & D! &, &B

/ ) « », 6 9 & & 0-

345 + 55

!<?!) ) " !.

1& 9 ! !1" ! 400. @ !), # 1 ! B/& ! ! 0 "0 «», 1 / 0# ) −380.

M& 8 ) _tmain 7& 8 ) GetItem, 0 )<?!) 2 / - /&<? & ! /& !8 & 0 )/ 9 !, ! G !- 1! 10.1.

&- .- G 10.1. M ! 7!6 ! Calc.cpp.

double Calculator(char *s);

// • #

double GetItem(void);

// # ># P

double Summation(void);

//

c

+

-

double Multiplication(void);

//

c

*

/

//’ > ! … P >.

//— • # ! # P « » # •.

char *gp_Str;

int _tmain(int argc, _TCHAR* argv[])

{

char szString[255] = "5*4-(345+55)"; double fResult;

fResult = Calculator(szString);

cout<< szString << " " << fResult << endl;

system("pause"); return 0;

}

/////////////////////////////////////////////////////////////////

//

// % # o.

// s – > , ! … P #

//#= … > # # # .

//‚ ># P > - double.

//

double Calculator(char *pString)

{

gp_Str = pString;

42

return Summation();

}

/////////////////////////////////////////////////////////////////

//

//c =# "(", ")" > ,

//! # # # ! # # # double.

//‚= # .

double GetItem(void)

{

double fResult;

// c

 

 

if(*gp_Str == '(')

 

 

{

 

// P > >

gp_Str++;

 

fResult = Summation();

// # = #=> #

gp_Str++;

// #

// P > ! P

// y #

if(*gp_Str == ')')

// P > >

gp_Str++;

 

return fResult;

// # ># P

}

 

 

//y , # # #= …

//! … ! … . ‚= > #

//# double.

//Œ strtod P #

//# #g #, = … = -

//#, # # P !# .

//‚ ! … > #,

//= # =#. " ƒ # =

//P > # >

double D = strtod(gp_Str, &gp_Str); return D;

}

M& 8 ) B ) (0# ! )) / ! ! 10.2.

&- .- G 10.2. M ! 7!6 ! Calc.cpp.

/////////////////////////////////////////////////////////////////

//

//‚= #= … P > • =?.

//‚ ># P > #=.

//

double Summation(void)

{

43

char cOperation;

double fResult = Multiplication(); // # •

//— > !# # + –

//! ? , # ! •

//#

while(*gp_Str == '+' || * gp_Str == '-')

{

//x !# • > # >

//! P >

cOperation = *gp_Str++; // # •

double product = Multiplication();

// ‚= … #= if(cOperation == '+')

fResult += product;

else

fResult -= product;

}

return fResult;

}

!B/!) 7& 8 ) (B ), & B ) 1 / 9) !- " ! 9 1& 9 ! 1 !?! 0 7& 8 6, <? 6

" 9D 6 (/&<? 6 & 9 ). F!-

, 7& 8 ) B ) (5 10.2) 010 ! 7& 8 < & B- ) !), < # /9, / B ! 010 ! 9 9 7& 8 < 1- / ) 9. N!1" <" 6 7& 8 6 1 / )

!#! ! / 2 , ! ) ! 1 ! ! 06 < . ,!, ! 7& 8 ) 0# ) 1 / ) B " !" ! 9

! 0 «*» «/». m B 6 ) ! 6-" / & 6 -

, ! «+» «–», ! / B ! ! 9 !1"

& 9 06 1& 9 !.

4.3.2 -2 .= ;2F2 -0

 

 

 

 

 

 

1

1

F! ! 9 ! &-! 9 & ), 0-

)<?&< B & B #

 

 

 

 

 

44

 

 

 

 

F! ! 9

! &-! 9 & ),

0-

 

 

 

 

2

2

)<?&<

! ! # / 6 ) !/

 

 

 

! 9 0 " # 0 0 !B

 

 

 

 

F! ! 9

! &-! 9 & ),

0-

 

3

3

)<?&< # 0 ! ! # 2 / 6 )

 

1 / 9 !/ ! 9 0 -

 

 

 

 

 

 

" # 0 0 !B

 

 

 

 

F! ! 9

! &-! 9 & ),

!)

 

4

5

! ! # 2 / 6 6 B !-

 

 

 

" ! 9 # 7& 8 ).

 

4.4. % F =4- 2< .=

2 / 0 ) !" 0 "2 / !1 !" ! 9, !" ! 9

!/ 9 ! &, !) 0 ) B, 0# !, &- B, /, 1 / 9 !/ # ! 0 !B ), 1! <# 0 ". / 0 !B ) &? ) ) / -

6 , 6 & & ! 9 " 0 0

!"& )8. ./ 9 # 0 6 !". . ! ! / B ! / B! 9 / ! # # !, 0

/ B! &/! < 7 ! ) # !.

4.5. F I2- ., .2

1.M & ! / /&! 9 1!/! ).

2.! !) # !) #! 9.

3.5 7!6 cpp h.

4.N 1& 9 ! 0 ! ) ! 0, / G ! 02 6.

4.6. . 5 = 4 =

1.N! !B ! !" 0 !D 6 ! 0-! ! 1! !

.

45

2.Œ ! 0 7& 8 6 1!# & !B 2 !1 !#-

?

3. .# 91& 0 !D 6 ! 7& 8 & !- B 2 !1 !#.

4.!B !1 !# !8 +=.

5.!B !1 !# !B/ ! ! !D 6 ! 0.

46

5.& )5. 4 2- 4 3 2/- Windows.

5.1.! 5 2< .=

> 9< !" 0 ) ) ) 1 8 A Windows. 1- /! 8 - G 06 D! ! & 1/! ) # 02

B 6. F! . 5.1 !1! / 9 B )

Create Process, 1! & !<? / ! / # 2 8 ! - Calculator.

b)

a) c)

. 5.1. " #, % : a) – ) #; b) – , ) # (Calculator); c) – ) , ) # (Calculator)

5.2. .-, 2 ,2 .5

47

A 6 # 6 02 !8 02 ) ) ) 2 1!/!# 9 (multitasking). 1!/!# 02 !8 02

!2 ! / 8 & 0 ) 9 ) !1&

9 B 6. ) // B & 9 1!/!#, !8-

!) ! / B ! // B ! 9 / ! /! !" 0, B/& - 0 "&/ ! / ) 9 ) ) !" 0 8 ! / & &- 0 9< !. K / ! /! !" 0 ) !1 ! ! -

8 !. .8 (Process) – G G 1 ) ! 0 1! &B 6

 

. 8 0

! ) 9 / ) 0 ) ( "&/&

4

! 0 /&<? 6 !" !-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6 !"). N! /

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8 ! B/& / & ) !" !<?-

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

! ! (8 !) !1!-

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

! . 5.2. (! – -

 

 

 

 

 

 

 

 

 

 

 

 

 

 

)

55 & /) 8 0

 

 

 

 

 

 

1 ! 0. + 91& 0 -

. 5.2. -

& 0 (! ) 9, /, /-0 /, -

D #

8 )) &! 9 0, !, #

 

 

 

 

 

 

 

 

 

!B/06 8 6 !" -

&. C D

# B ) B

&B 9 B * F- . ?9<, 6 /-

9 ! / 9 02 !2 1! & !-

" 9D 7!6 ! / 1 0 02 . K !

#! 9 ! <"0 / 6 ) 91 ! ), ! 9 0 !

B 91 ! 9.

1/! 8 ! ! ! 0 ) ) - ?9< 7& 8 CreateProcess. 1& 9 ! 01 ! G 6 7& 8 &? ) ) 1! & ) /& ) 1!/! -

&<? 7!6 !. M& 8 ) CreateProcess 1 !?! TRUE

& 2 FALSE !.

BOOL CreateProcess(

LPCTSTR lpApplicationName,

LPTSTR lpCommandLine,

LPSECURITY_ATTRIBUTES lpProcessAttributes,

LPSECURITY_ATTRIBUTES lpThreadAttributes,

BOOL bInheritHandles,

48

DWORD dwCreationFlags, LPVOID lpEnvironment, LPCTSTR lpCurrentDirectory,

LPSTARTUPINFO lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation

);

 

.! ! 0 7& 8 CreateProcess

 

2< -32 5.1

 

 

 

 

 

 

 

 

 

"

 

,

 

 

 

lpApplicationName

 

) ) /& )

 

 

lpCommandLine

 

& !1! 9 ! ! / &< &

 

 

lpProcessAttributes

 

& !1! 9 ! & & &, / B!?&< ! "&-

 

 

0 1!? 0 8 !

 

 

lpThreadAttributes

 

& !1! 9 ! & & &, / B!?&< ! "&-

 

 

0 1!? 0 !

 

 

bInheritHandles

 

7 ! ! / ! ) 02 "i

dwCreationFlags

 

7 ! 1/! ) 8 !

 

 

lpEnvironment

 

& !1! 9 ! 06 " 7 & !8

lpCurrentDirectory

 

& !1! 9 ! ) &? 6 !

 

lpStartupInfo

 

& !1! 9 ! & & & STARTUPINFO

lpProcessInformation

& !1! 9

!

 

& & &

 

 

PROCESS_INFORMATION

 

 

& & !

STARTUPINFO

91& )

 

7& 8 6

CreateProcess, # "0 / 9 D 6 / ! / ) -

8 !.

& & ! PROCESS_INFORMATION 1! ) ) 7& 8 6 CreateProcess 7 !8 6 /! 1/! 8

# .

5.1. / ! 0, !) B 1!- & 9 1 9 &< ! &, ) 6 & !10 ! )

! / 6 .

&- .- G 5.1. M!6 DemoProcess.cpp

#include "stdafx.h" #include <windows.h>

49

#include <iostream> #include <locale>

using namespace std;

void _tmain( int argc, TCHAR *argv[] )

{

setlocale(LC_CTYPE, "Russian_Russia.1251");

STARTUPINFO si;

PROCESS_INFORMATION pi;

// x =

ZeroMemory( &si, sizeof(si) ); si.cb = sizeof(si); ZeroMemory( &pi, sizeof(pi) );

if( argc != 2 )

{

cout << "f >, > ! \n"; system("pause");

return;

}

//! • .

if( !CreateProcess( NULL,

// ! >

argv[1],

// !

NULL,

// = > P = !

NULL,

// = > P = !

FALSE,

// # # • ! # FALSE

0,

// • # >!

NULL,

// > ! … !

NULL,

// > P

&si,

// > STARTUPINFO

&pi)

// > PROCESS_INFORMATION

)

 

 

{

 

 

cout << "cg CreateProcess (" << GetLastError() << ").\n";

system("pause");

}

//c… ! > # g ! • • ! •. WaitForSingleObject( pi.hProcess, INFINITE );

//x =# .

CloseHandle( pi.hProcess ); CloseHandle( pi.hThread ); system("pause");

}

50

m 1! & / # 8 ! 1 D & D, !

B ! ! ! < !" & / 2 , ! 1! &- ? 06 8 1! D < !" &. ) G ! 010 ! 7& 8 < WaitForSingleObject, /! !) 6 / 7 ! 1! &- ? 8 !. . 7& 8 WaitForSingleObject:

DWORD WaitForSingleObject(

HANDLE hObject,

// / 7 ! "i !

DWORD dwTimeout);

// ) B /! ) & /!2

M& 8 ) ! / ! ! ! !: hObject / 7 ! "i !, 1! D !" 0 B /! ) 7& 8 6 WaitForSingleObject dwTimeout ! ! 9 ) B /! ). m !- ! & dwTimeout 9 1 !# INFINITE, B /! "&- / " # / .

M& 8 ) WaitForSingleObject "?! ! ? & 1!/!#, # 0 / 9 8 !, 01 ! D G & 7& 8 <,

"2 / ! 9 / 2 , ! / # )) 1!/!#!

8 1! D < !" &.

, 9, 0 #! "&/ 91 ! 9 ) HANDLE G /-

1, / !1 !# 06 / ) ! ) !1 # 02 "i. m / 9 & 8 & !B, 1! D < !" & / # 6 8 , 7& 8 ) WaitForSingleObject &B- !. G ! / 9 6 8 B !1& 1! 0 9 /- 7 ! 0 / # 8 ! ! 6 1!/!# / # 8-

!, 91&) 7& 8 <

BOOL CloseHandle(

HANDLE hObject // / "i !

);

1 , (handle, ! 9) - #, 1!/! ! -" & ! (" ! ), 7!6, &, D 7, . .) !" . 91& )

"0# !" # 1 06 7 6 (API), # 0 1 !# ) /- ! 0 1! G 7 6. F!, / " ! ! ) B 1 !#! 9 -

)# 6 !" 8 !/ " ! ); 9 & 91 ! 9 API !" ! /-

, ! & !1!, !/ !1 ? ) " ! ! ) B 1 ) 9 ) G !B ) ! !" # 1 /.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]