СПО_Praktikum_k_lab_rabotam
.pdf41
) 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 /.
