최종보고서 SMT (System Monitoring Tool : 시스템자원모니터링툴 ) 팀명 : Point of C++ 팀장 : 한소라 (11학번) 팀원 : 이재익 (09학번) 한우영 (09학번) 김은지 (11학번) 지도교수 : 양정모교수님 - 1 -

Size: px
Start display at page:

Download "최종보고서 SMT (System Monitoring Tool : 시스템자원모니터링툴 ) 팀명 : Point of C++ 팀장 : 한소라 (11학번) 팀원 : 이재익 (09학번) 한우영 (09학번) 김은지 (11학번) 지도교수 : 양정모교수님 - 1 -"

Transcription

1 최종보고서 SMT (System Monitoring Tool : 시스템자원모니터링툴 ) 팀명 : Point of C++ 팀장 : 한소라 (11학번) 팀원 : 이재익 (09학번) 한우영 (09학번) 김은지 (11학번) 지도교수 : 양정모교수님 - 1 -

2 목 차 1. 서론 1-1. 개발배경및목적 연구내용 개발환경 본론 2-1. 프로그램구성 MEMORY 값측정함수 CPU값측정함수 프로그램실행화면 결론 3-1. 결론및의견 부록 4-1. 소스코드 발표PPT자료 참고자료

3 1. 서론 1-1 연구배경및목적 우리는현재어떤일이든컴퓨터를통해처리하고있고생활의거의대부분이컴퓨터와연관되어있다고생각합니다. 그런데최근각종악성코드로인해시스템자원을고갈시키는등의방법으로시스템의운영을방해하거나정보자료를훼손하여많은사용자들에게피해를주고있습니다. 따라서본프로젝트를통해시스템자원의과부하등시스템운영상태를실시간으로감시하고, 각종침해를실시간으로통제함으로써피해를최소화하고, 시스템의안정적인운영을도모하려고합니다. 더불어 MEMORY, CPU에관한시스템함수에대한학습을통해실력을쌓고체계적인진행을통해 C프로그램의전반적인학습으로프로그래밍실력의향상을목표에두고임할것입니다. 1-2 연구내용 우리의연구목적은실시간으로과다사용되고있는프로세스를검출하여시스템자원을통제하여시스템운영의피해를최소화하기위한프로그램인시스템모니터링툴 (System Monitoring Tool : SMT) 제작입니다. SMT에서는시스템함수인 GlobalMemoryStatusEx( ) 와 GetCpuUsage( ) 를사용하여시스템모니터링을실행합니다. 컴퓨터가동작하고 SMT를실행시켜시스템자원인 MEMORY, CPU의프로세스별사용량을모니터링하여사용량이 70% 이상으로과다사용이되고있는지를탐지합니다. 사용량이 70% 이상에해당되는프로세스를검출하여자동으로 Suspend하며, 사용자에게메시지박스와알림음을통해경보를하고해당하는프로세스의상세정보를출력합니다. 사용자에게해당프로세스를종료시킬것인지질의를통해사용자의의사를묻고, 계속실행할경우프로세스의 Suspend상태를풀어주고프로세스의과다사용을다시탐지합니다. 1-3 개발환경 - 운영체제 : Windows7 - 프로그래밍언어 : C/C++ - 개발도구 : Microsoft Visual Studio 2008/

4 2. 본론 2-1 프로그램구성 < 그림 1 > 시스템개요도 본시스템모니터링툴 (SMT) 은컴퓨터가동작하고 SMT를실행시켜시스템자원인 MEMORY, CPU의프로세스별사용량이 70% 으로과다사용이되고있는지를탐지합니다. 해당되는프로세스를검출하여자동으로 Suspend하며, 사용자에게메시지박스를통해경보를하고프로세스의상세정보를출력합니다. 사용자에게해당프로세스를종료시킬것인지질의를합니다. 계속실행할경우프로세스의 Suspend상태를풀어주고프로세스의과다사용을다시탐지합니다. 2-2 MEMORY 값측정함수 시스템의메모리값을얻어오기위하여 GlobalMemoryStatusEx( ) API를사용하였습니다. API 소개 GlobalMemoryStatusEx API는가상메모리, 페이지파일, 실제메모리 ( 물리메모리 ) 등의정보를얻고자할때사용합니다. 구조체는 MEMORYSTATUSEX가사용됩니다

5 API 선언 Public Dexlare Sub GlobalMemoryStatusEx Lib "kernel32"(lpbuffer As MEMORYSTATUSEX) 구조체선언 Public Type MEMORYSTATUSEX dwlength As Long 구조체의크기 dwmemoryload As Long 메모리의사용량 ( 백분율 ) ulltotalphys As Currency 실제메모리의총크기 ullavailphys As Currency 실제메모리의남은크기 ulltotalpagefile As Currency 페이지파일의총크기 ullavailpagefile As Currency 페이지파일의남은크기 ulltotalvirtual As Currency 가상메모리의총크기 ullavailvirtual As Currency 가상메모리의남은크기 ullavailextendedvirtual As Currency 확장된가상메모리의남은크기 설명 GlobalMemoryStatusEx( ) API를사용해얻어온값들의단위는메가바이트가아니므로, 단위를맞추기위해 102.4로나누고거기에 1000을곱한다음또다시 1024로나눕니다. 또, 구조체 MEMORYSTATUSEX 에서는각메모리의크기와사용가능한공간만을구할수있는데저두대를응용하여메모리사용량을구합니다. ( 메모리크기 - 사용가능한공간 ) GlobalMemoryStatus( ) API는메모리의크기가 4GB 이상이되면값이이상하게나온다고하여 GlobalMemoryStatusEx( ) API를사용하였습니다. 2-3 CPU 값측정함수 레지스트를통한 HKEY_PERPOMANCE_DATA 키에값을가져오는방법입니다. 실제보이지않는키이기 때문에 regedit 로해서 HKEY_PERFORMANCE_DATA 를조회할수는없습니다. HKEY_PERFORMANCE_DATA 에있는값들을통해서성능에관련된정보를획득할수있었습니다. 정의되는함수 LPBYTE GetPerformanceData(LPTSTR src); - 5 -

6 int GetCounterValue(const int& objid, const int& counterid, const char* instancename, PERF_DATA_BLOCK **datablock, LONGLONG &value); double GetCpuUsage(const char* process); 정의되는함수는총 3 개지만실제사용하는함수는 GetCpuUsage( ) 입니다. 다른함수는통계정보를얻 기위하여사용합니다. GetCpuUsage( ) 함수 GetCpuUsage( ) 함수를통해서 CPU 사용량을얻을수있습니다. GetCounterValue( ) 함수에의해서 HKEY_PERFORMANCE_DATA 키에있는원하는카운터객체 (PERF_COUNTER_BLOCK) 를얻을수있고, 그곳에서원하는값을얻을수있습니다. 이렇게얻은값을통해서 CPU사용율을계산할수있습니다. GetCounterValue( ) 함수 GetCounterValue( ) 함수는 HKEY_PERFORMANCE_DATA치에서원하는카운터객체를찾고거기에서을얻는것입니다. 사용되는인자가많습니다. 첫번째인자는찾는객체 ID이고두번째인자는찾고자하는카운터객체 ID이고세번째인자는찾고자하는인스턴스이름입니다. 네번째인자는성능데이터값 (PERF_DATA_BLOCK) 이저장되고다섯번째인자는카운트블록 (PERF_COUNTER_BLOCK) 의값이저장됩니다. 앞의세개인자는입력인자이고나머지두개인자는출력인자입니다. 반환값은에러가발생시 -1이반환되고성공이면 0이반환됩니다. GetCounterValue( ) 함수구조체 PERF_DATA_BLOCK PERF_OBJECT_TYPE PERF_COUNTER_DEFINITION PERF_INSTANCE_DEFINITION PERF_COUNTER_BLOCK - 6 -

7 < 그림 2 > 구조체의관계 기본적인객체는 PERF_DATA_BLOCK 에서시작됩니다. 그뒤로여러객체들이따라오는데각객체는 PERF_OBFECT_TYPE를헤더로갖습니다. 그리고각객체에는여러카운터객체가포함됩니다. 그리고각객체에인스턴스개수에따라서여러인스턴스객체가포함되어있습니다. PERF_DATA_BLOCK 에서다음객체 (PERF_OBJECT_TYPE) 를찾으려면 PERF_DATA_BLOCK 의 HeaderLength 만큼이동하면되고여러객체에서다음객체를찾으려면 PERF_OBJECT_TYPE 에서 TotalByteLength 만큼이동하면됩니다. 그리고각객체 (PERF_DATA_BLOCK) 에서카운터정의객체 (PERF_COUNTER_DEFINITION) 을찾으려면 PERF_DATA_BLOCK 에서 PERF+DATA_BLOCK 의 HeaderLength 만큼이동하면됩니다. 카운터객체가여러개가오는데다음카운터객체 (PERF_COUNTER_DEFINITION) 를찾으려면 PERF_COUNTER_DEFINITION 의 ByteLength만큼이동하면됩니다. 그리고다중인스턴스라면첫번째인스턴스객체 (PERF_INSTANCE_DEFINITION) 를찾으려면 PERF_OBJECT_TYPE 에서 PERF_OBJECT_TYPE 의 DefinitionLength 만큼이동하면됩니다. 그리고다음인스턴스객체를찾으려면 PERF_INSTANCE_DEFINITION 에서 PERF_INSTANCE_DEFINIRION 의 ByteLength 만큼이동하면 PERF_INSTANCE_DEFINITION 을얻을수있습니다. 다중객체가아니면간단합니다. 첫번째인스턴스객체 (PERF_INSTANCE_DEFINITION) 위치는앞에서구한 - 7 -

8 값으로가지면되고다음은 PERF_COUNTER_BLOCK 에서 ByteLength 만큼이동하면됩니다. GetPerformanceData( ) 함수 GetPerformanceData( ) 함수는레지스트리에있는 HKEY_PERFORMANCE_DATA 키에서원하는객체값을얻어오는것이다. 이함수는 GetCounterValue( ) 함수에비해서는간단합니다. 입력되는인자는원하는인스턴스객체명을받습니다. 반환되는값은 PERF_DATA_BLOCK 의포인터를반환합니다. 만약에러가발생한다면 NULL값이반환됩니다. 2-4 프로그램실행화면 CPU 및메모리실시간모니터링구현부분소스코드 // CPU 및메모리실시간모니터링소스 BOOL SystemMonitoring( ) { HANDLE hprocesssnap; HANDLE hprocess; PROCESSENTRY32 pe32; MEMORYSTATUSEX statex; statex.dwlength = sizeof ( statex ); GlobalMemoryStatusEx ( &statex ); PROCESS_MEMORY_COUNTERS pmc; DWORD Code = 0; int i=0, j=0, ProcessID, suspend; char * processname; DWORD dwpriorityclass; hprocesssnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 ); //32bit 인 process 의정보를가져옴. if( hprocesssnap == INVALID_HANDLE_VALUE ) { printerror( TEXT("CreateToolhelp32Snapshot (of processes)") ); return( FALSE ); pe32.dwsize = sizeof( PROCESSENTRY32 ); //pe23 사이즈초기화 if(!process32first( hprocesssnap, &pe32 ) ) { - 8 -

9 printerror( TEXT("Process32First") ); CloseHandle( hprocesssnap ); return( FALSE ); do { hprocess = OpenProcess( PROCESS_QUERY_INFORMATION // 프로세스의 Handle값을얻어옴. PROCESS_VM_READ, FALSE, pe32.th32processid ); dwpriorityclass = GetPriorityClass(hProcess); // 프로세스의우선순위값을반환. processname=pe32.szexefile; strtok(processname,"."); if(0==i%3 i==0) { \n\n\n\n\n\n=============================== =======================\n" ); System Monitoring Tool\n"); [Point of Challenge]\n"); 모니터링중입니다.\n"); \n\n\n\n\n\n=============================== =======================\n" ); else if(0==i%2) { \n\n\n\n\n\n=============================== =======================\n" ); System Monitoring Tool\n"); [Point of Challenge]\n"); 모니터링중입니다...\n"); \n\n\n\n\n\n=============================== =======================\n" ); else { \n\n\n\n\n\n=============================== =======================\n" ); System Monitoring Tool\n"); [Point of Challenge]\n"); 모니터링중입니다..\n"); \n\n\n\n\n\n=============================== =======================\n" ); int processid=0; CCpuUsage usagea; CCpuUsage usageb; - 9 -

10 for( j=0;j<2;j++ ) { int SystemWideCpuUsage = usagea.getcpuusage(); // 전체프로세스 CPU 사용량 int ProcessCpuUsageByName = usageb.getcpuusage( processname ); // 프로세스 CPU 사용량 Sleep( 250 ); if( ProcessCpuUsageByName > 70 ) { // 프로세스 CPU 점유율 70% 가넘었을때 ProcessID = pe32.th32processid; suspend = DebugActiveProcess(ProcessID); // 프로세스일시중지 printf("\a"); printf("\a"); printf("\a"); // 경고음 MessageBoxW( NULL, L"CPU점유율이최대 70% 가넘는프로세스가발견되었습니다.", L"Warning", 0 ); // 경고메세지 system("cls"); _tprintf(text("\n\n\n\n\n\n\n=============================== ================" ) ); _tprintf( TEXT("\n PROCESS NAME : %s"), pe32.szexefile ); _tprintf( TEXT("\n Process ID : %u"), pe32.th32processid ); if( j==1 ) 전체프로세스 CPU 사용량 : %d", SystemWideCpuUsage); if( j==1 ) 프로세스 CPU 사용량 : %d", ProcessCpuUsageByName); _tprintf(text("\n\n\n\n\n\n\n=============================== ================" ) ); 프로세스를중지하였습니다."); 프로세스를종료하시려면 1"); 다시되돌리시려면 2를입력해주세요."); scanf("%d",&suspend); if( suspend == 1 ) { KillProcess(processname,ProcessID); // 프로세스kill함수호출 printf(" 프로세스를종료하였습니다.\n"); Sleep( 1000 ); printf(" 모니터링을다시시작합니다."); Sleep( 1000 );

11 if( suspend == 2 ) { DebugActiveProcessStop(ProcessID); // 프로세스일시중지해제 printf(" 프로세스를원래대로되돌렸습니다.\n"); Sleep( 1000 ); printf(" 모니터링을다시시작합니다."); Sleep( 1000 ); if( GetProcessMemoryInfo(hProcess, &pmc, sizeof(pmc)) ) { // 프로세스메모리정보구하는함수 if( (pmc.workingsetsize/div) > ((statex.ullavailphys/div)*0.75) ) { // 메모리점유율 70% 가넘었을때 ProcessID = pe32.th32processid; suspend = DebugActiveProcess(ProcessID); // 프로세스일시중지 printf("\a"); printf("\a"); printf("\a"); // 경고음 MessageBoxW( NULL, L" 메모리점유율이최대 70% 가넘는프로세스가발견되었습니다.", L"Warning", 0 );// 경고메세지 system("cls"); _tprintf(text("\n\n\n\n\n\n\n=============================== ================" ) ); _tprintf( TEXT("\n PROCESS NAME : %s"), pe32.szexefile ); _tprintf( TEXT("\n Process ID : %u"), pe32.th32processid ); 최대작업메모리의크기 : %*d KB\n", WIDTH, statex.ulltotalphys/div); 프로세스의작업메모리크기 : %d KB\n", pmc.workingsetsize/div); _tprintf(text("\n\n\n\n\n\n\n=============================== ================" ) ); 프로세스를중지하였습니다."); 프로세스를종료하시려면 1"); 다시되돌리시려면 2를입력해주세요."); scanf("%d",&suspend); if (suspend == 1) { KillProcess( processname, ProcessID ); // 프로세스kill함수호출 printf(" 프로세스를종료하였습니다.\n"); Sleep( 1000 ); printf(" 모니터링을다시시작합니다."); Sleep( 1000 );

12 if (suspend == 2) { DebugActiveProcessStop( ProcessID ); // 프로세스일시중지해제 printf(" 프로세스를원래대로되돌렸습니다.\n"); Sleep( 1000 ); printf(" 모니터링을다시시작합니다."); Sleep( 1000 ); CloseHandle(hProcess); // 프로세스의핸들을반환해주는함수 i++; system("cls"); while( Process32Next( hprocesssnap, &pe32 ) ) // 엔트리프로세스를읽고없을때까지계속읽음 CloseHandle( hprocesssnap ); // 스냅샷의핸들을반환해주는함수 return 0; 위의프로그램소스코드를실행하게되면메인화면이출력되고 0 을제외한다른값을입력시켜모니터링 을시작합니다. < 그림 3 > 프로그램메인화면

13 < 그림 4 > 프로그램모니터링화면 프로그램이프로세스별 CPU, MEMORY 의사용율을모니터링하면서과다사용을검출합니다. MEMORY, CPU 의프로세스별사용량이 70% 으로과다사용이확인되면알림을주고프로세스를종료를원하면프 로세스를종료시킵니다. < 그림 5 > 프로세스 Suspend 후질의화면

14 3. 결론 3-1 결론및기대효과 시스템자원모니터링툴을직접프로그램으로구현하는과정에서시스템함수에관한지식을습득하고메모리과부하프로그램을제작하여컴퓨터에직접영향을미치는위험성들을실험을통해프로그램구동원리를공부할수가있었으며원도우프로그래밍의다양한기법, 기술을학습하여좀더폭넓은기술개발역량을배량하였습니다. 프로젝트를진행하면서처음에는과연수업시간에배웠던모든것을활용해서우리가할수있을까라는의문점을갖으면서도계획을세우고끝까지해보려는노력과팀워크가힘을더해어려운것도잘해결할수있었습니다

15 4. 부록 4-1. 소스코드 //include파일및전처리기정의 #include "stdafx.h" #include <windows.h> #include <winuser.h> #include <tlhelp32.h> #include <tchar.h> #include <stdio.h> #include <string.h> #include <Psapi.h> #include <stdlib.h> #include "CpuUsage.h" #pragma comment( lib, "psapi" ) #define DIV 1024 #define WIDTH 7 // 함수정의 BOOL KillProcess( char* processname, int a ); // 프로세스kill 함수 BOOL SystemMonitoring( ); // 시스템모니터링함수 void printerror( TCHAR* msg ); //Error탐지함수 //main 함수 int main( void ) { int start; \n"); printf(" + +\n"); printf(" + +\n"); printf(" + +\n"); printf(" + System Monitoring Tool +\n"); printf(" + Ver \n"); printf(" + +\n"); printf(" + +\n"); printf(" + +\n"); printf(" + [Point of Challenge] +\n"); printf(" + +\n"); printf(" + Han So ra +\n"); printf(" + Han Woo young +\n"); printf(" + Lee Jae ik +\n"); printf(" + Kim Eun ji +\n");

16 printf(" + +\n"); printf(" + +\n"); printf(" + +\n"); printf(" + +\n"); printf(" + +\n"); printf(" + +\n"); printf(" \n"); printf(" 계속하시려면아무키나입력하시오.( 종료 =0)"); scanf("%d",&start); if(start==0){system("cls"); printf(" 프로그램을종료합니다.\n"); exit(0); system("cls"); while( 1 ) { SystemMonitoring( ); return 0; // CPU 및메모리실시간모니터링소스 BOOL SystemMonitoring( ) { HANDLE hprocesssnap; HANDLE hprocess; PROCESSENTRY32 pe32; MEMORYSTATUSEX statex; statex.dwlength = sizeof ( statex ); GlobalMemoryStatusEx ( &statex ); PROCESS_MEMORY_COUNTERS pmc; DWORD Code = 0; int i=0, j=0, ProcessID, suspend; char * processname; DWORD dwpriorityclass; hprocesssnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 ); //32bit 인 process 의정보를가져옴. if( hprocesssnap == INVALID_HANDLE_VALUE ) { printerror( TEXT("CreateToolhelp32Snapshot (of processes)") ); return( FALSE ); pe32.dwsize = sizeof( PROCESSENTRY32 ); //pe23 사이즈초기화

17 if(!process32first( hprocesssnap, &pe32 ) ) { printerror( TEXT("Process32First") ); CloseHandle( hprocesssnap ); return( FALSE ); do { hprocess = OpenProcess( PROCESS_QUERY_INFORMATION // 프로세스의 Handle값을얻어옴. PROCESS_VM_READ, FALSE, pe32.th32processid ); dwpriorityclass = GetPriorityClass(hProcess); // 프로세스의우선순위값을반환. processname=pe32.szexefile; strtok(processname,"."); if(0==i%3 i==0) { \n\n\n\n\n\n=============================== =======================\n" ); System Monitoring Tool\n"); [Point of Challenge]\n"); 모니터링중입니다.\n"); \n\n\n\n\n\n=============================== =======================\n" ); else if(0==i%2) { \n\n\n\n\n\n=============================== =======================\n" ); System Monitoring Tool\n"); [Point of Challenge]\n"); 모니터링중입니다...\n"); \n\n\n\n\n\n=============================== =======================\n" ); else { \n\n\n\n\n\n=============================== =======================\n" ); System Monitoring Tool\n"); [Point of Challenge]\n"); 모니터링중입니다..\n"); \n\n\n\n\n\n=============================== =======================\n" ); int processid=0;

18 CCpuUsage usagea; CCpuUsage usageb; for( j=0;j<2;j++ ) { int SystemWideCpuUsage = usagea.getcpuusage(); // 전체프로세스 CPU 사용량 int ProcessCpuUsageByName = usageb.getcpuusage( processname ); // 프로세스 CPU 사용량 Sleep( 250 ); if( ProcessCpuUsageByName > 70 ) { // 프로세스 CPU 점유율 70% 가넘었을때 ProcessID = pe32.th32processid; suspend = DebugActiveProcess(ProcessID); // 프로세스일시중지 printf("\a"); printf("\a"); printf("\a"); // 경고음 MessageBoxW( NULL, L"CPU점유율이최대 70% 가넘는프로세스가발견되었습니다.", L"Warning", 0 ); // 경고메세지 system("cls"); _tprintf(text("\n\n\n\n\n\n\n=============================== ================" ) ); _tprintf( TEXT("\n PROCESS NAME : %s"), pe32.szexefile ); _tprintf( TEXT("\n Process ID : %u"), pe32.th32processid ); if( j==1 ) 전체프로세스 CPU 사용량 : %d", SystemWideCpuUsage); if( j==1 ) 프로세스 CPU 사용량 : %d", ProcessCpuUsageByName); _tprintf(text("\n\n\n\n\n\n\n=============================== ================" ) ); 프로세스를중지하였습니다."); 프로세스를종료하시려면 1"); 다시되돌리시려면 2를입력해주세요."); scanf("%d",&suspend); if( suspend == 1 ) { KillProcess(processname,ProcessID); // 프로세스kill함수호출 printf(" 프로세스를종료하였습니다.\n"); Sleep( 1000 ); printf(" 모니터링을다시시작합니다."); Sleep( 1000 );

19 if( suspend == 2 ) { DebugActiveProcessStop(ProcessID); // 프로세스일시중지해제 printf(" 프로세스를원래대로되돌렸습니다.\n"); Sleep( 1000 ); printf(" 모니터링을다시시작합니다."); Sleep( 1000 ); if( GetProcessMemoryInfo(hProcess, &pmc, sizeof(pmc)) ) { // 프로세스메모리정보구하는함수 if( (pmc.workingsetsize/div) > ((statex.ullavailphys/div)*0.75) ) { // 메모리점유율 70% 가넘었을때 ProcessID = pe32.th32processid; suspend = DebugActiveProcess(ProcessID); // 프로세스일시중지 printf("\a"); printf("\a"); printf("\a"); // 경고음 MessageBoxW( NULL, L" 메모리점유율이최대 70% 가넘는프로세스가발견되었습니다.", L"Warning", 0 );// 경고메세지 system("cls"); _tprintf(text("\n\n\n\n\n\n\n=============================== ================" ) ); _tprintf( TEXT("\n PROCESS NAME : %s"), pe32.szexefile ); _tprintf( TEXT("\n Process ID : %u"), pe32.th32processid ); 최대작업메모리의크기 : %*d KB\n", WIDTH, statex.ulltotalphys/div); 프로세스의작업메모리크기 : %d KB\n", pmc.workingsetsize/div); _tprintf(text("\n\n\n\n\n\n\n=============================== ================" ) ); 프로세스를중지하였습니다."); 프로세스를종료하시려면 1"); 다시되돌리시려면 2를입력해주세요."); scanf("%d",&suspend); if (suspend == 1) { KillProcess( processname, ProcessID ); // 프로세스kill함수호출 printf(" 프로세스를종료하였습니다.\n"); Sleep( 1000 ); printf(" 모니터링을다시시작합니다.");

20 Sleep( 1000 ); if (suspend == 2) { DebugActiveProcessStop( ProcessID ); // 프로세스일시중지해제 printf(" 프로세스를원래대로되돌렸습니다.\n"); Sleep( 1000 ); printf(" 모니터링을다시시작합니다."); Sleep( 1000 ); CloseHandle(hProcess); // 프로세스의핸들을반환해주는함수 i++; system("cls"); while( Process32Next( hprocesssnap, &pe32 ) ) // 엔트리프로세스를읽고없을때까지계속읽음 CloseHandle( hprocesssnap ); // 스냅샷의핸들을반환해주는함수 return 0; BOOL KillProcess(char * processname,int ProcessID) { // 프로세스 kill 함수선언 HANDLE hprocesssnap = NULL; DWORD Return = FALSE; PROCESSENTRY32 pe32 = {0; int result; char *exe = ".exe"; strcat(processname,exe); char *Temp = pe32.szexefile; hprocesssnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if(hprocesssnap == INVALID_HANDLE_VALUE) return (DWORD)INVALID_HANDLE_VALUE; pe32.dwsize = sizeof(processentry32); if(process32first(hprocesssnap, &pe32)) { DWORD Code = 0; DWORD dwpriorityclass; do { HANDLE hprocess; hprocess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pe32.th32processid); dwpriorityclass = GetPriorityClass(hProcess);

21 result=strcmp(temp, processname); //kill 할프로세스를찾음 if(result==0) { // 찾으면 kill if(terminateprocess(hprocess, 0)) GetExitCodeProcess(hProcess, &Code); else return GetLastError(); CloseHandle(hProcess); while(process32next(hprocesssnap, &pe32)); Return = TRUE; else Return = FALSE; DebugActiveProcessStop(ProcessID); // 프로세스일시중지해제 CloseHandle(hProcessSnap); return Return; void printerror( TCHAR* msg ) { DWORD enum; TCHAR sysmsg[256]; TCHAR* p; //Error 출력함수선언 enum = GetLastError( ); FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM FORMAT_MESSAGE_IGNORE_INSERTS, NULL, enum, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language sysmsg, 256, NULL ); p = sysmsg; while( ( *p > 31 ) ( *p == 9 ) ) ++p; do { *p-- = 0; while( ( p >= sysmsg ) && ( ( *p == '.' ) ( *p < 33 ) ) ); _tprintf( TEXT("\n WARNING: %s failed with error %d (%s)"), msg, enum, sysmsg ); //Error부분출력

22 4-2. 발표 PPT 자료

23 - 23 -

24 - 24 -

25 - 25 -

26 - 26 -

27 - 27 -

28 - 28 -

29 - 29 -

30 - 30 -

31 - 31 -

32 - 32 -

33 4-3. 참고자료 (MSDN 코리아 ) (JaPa2 - 배우면배울수록더배울것이생긴다 ) (Daum blog)

K&R2 Reference Manual 번역본

K&R2 Reference Manual 번역본 typewriter structunion struct union if-else if if else if if else if if if if else else ; auto register static extern typedef void char short int long float double signed unsigned const volatile { } struct

More information

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap06-2pointer.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.

More information

슬라이드 1

슬라이드 1 -Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역

More information

untitled

untitled int i = 10; char c = 69; float f = 12.3; int i = 10; char c = 69; float f = 12.3; printf("i : %u\n", &i); // i printf("c : %u\n", &c); // c printf("f : %u\n", &f); // f return 0; i : 1245024 c : 1245015

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소

More information

À©µµ³×Æ®¿÷ÇÁ·Î±×·¡¹Ö4Àå_ÃÖÁ¾

À©µµ³×Æ®¿÷ÇÁ·Î±×·¡¹Ö4Àå_ÃÖÁ¾ P a 02 r t Chapter 4 TCP Chapter 5 Chapter 6 UDP Chapter 7 Chapter 8 GUI C h a p t e r 04 TCP 1 3 1 2 3 TCP TCP TCP [ 4 2] listen connect send accept recv send recv [ 4 1] PC Internet Explorer HTTP HTTP

More information

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,

More information

Lab 3. 실습문제 (Single linked list)_해답.hwp

Lab 3. 실습문제 (Single linked list)_해답.hwp Lab 3. Singly-linked list 의구현 실험실습일시 : 2009. 3. 30. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 5. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Singly-linked list의각함수를구현한다.

More information

C 언어 프로그래밊 과제 풀이

C 언어 프로그래밊 과제 풀이 과제풀이 (1) 홀수 / 짝수판정 (1) /* 20094123 홍길동 20100324 */ /* even_or_odd.c */ /* 정수를입력받아홀수인지짝수인지판정하는프로그램 */ int number; printf(" 정수를입력하시오 => "); scanf("%d", &number); 확인 주석문 가필요한이유 printf 와 scanf 쌍

More information

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070> 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include "QuickSort.h" 7 using namespace std; 8 9 10 Node* Queue[100]; // 추가입력된데이터를저장하기위한 Queue

More information

금오공대 컴퓨터공학전공 강의자료

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include

More information

Chapter #01 Subject

Chapter #01  Subject Device Driver March 24, 2004 Kim, ki-hyeon 목차 1. 인터럽트처리복습 1. 인터럽트복습 입력검출방법 인터럽트방식, 폴링 (polling) 방식 인터럽트서비스등록함수 ( 커널에등록 ) int request_irq(unsigned int irq, void(*handler)(int,void*,struct pt_regs*), unsigned

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program

More information

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D> 리눅스 오류처리하기 2007. 11. 28 안효창 라이브러리함수의오류번호얻기 errno 변수기능오류번호를저장한다. 기본형 extern int errno; 헤더파일 라이브러리함수호출에실패했을때함수예 정수값을반환하는함수 -1 반환 open 함수 포인터를반환하는함수 NULL 반환 fopen 함수 2 유닉스 / 리눅스 라이브러리함수의오류번호얻기 19-1

More information

03장.스택.key

03장.스택.key ---------------- DATA STRUCTURES USING C ---------------- 03CHAPTER 1 ? (stack): (LIFO:Last-In First-Out) 2 : top : ( index -1 ),,, 3 : ( ) ( ) -> ->. ->.... 4 Stack ADT : (LIFO) : init():. is_empty():

More information

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600 균형이진탐색트리 -VL Tree delson, Velskii, Landis에의해 1962년에제안됨 VL trees are balanced n VL Tree is a binary search tree such that for every internal node v of T, the heights of the children of v can differ by at

More information

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070> #include "stdafx.h" #include "Huffman.h" 1 /* 비트의부분을뽑아내는함수 */ unsigned HF::bits(unsigned x, int k, int j) return (x >> k) & ~(~0

More information

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - ch07 - 포인터 pm0415 2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자

More information

1장. 유닉스 시스템 프로그래밍 개요

1장.  유닉스 시스템 프로그래밍 개요 Unix 프로그래밍및실습 7 장. 시그널 - 과제보충 응용과제 1 부모프로세스는반복해서메뉴를출력하고사용자로부터주문을받아자식프로세스에게주문내용을알린다. (SIGUSR1) ( 일단주문을받으면음식이완료되기전까지 SIGUSR1 을제외한다른시그널은모두무시 ) timer 자식프로세스는주문을받으면조리를시작한다. ( 일단조리를시작하면음식이완성되기전까지 SIGALARM 을제외한다른시그널은모두무시

More information

C프로-3장c03逞풚

C프로-3장c03逞풚 C h a p t e r 03 C++ 3 1 9 4 3 break continue 2 110 if if else if else switch 1 if if if 3 1 1 if 2 2 3 if if 1 2 111 01 #include 02 using namespace std; 03 void main( ) 04 { 05 int x; 06 07

More information

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt 변수와상수 1 변수란무엇인가? 변수 : 정보 (data) 를저장하는컴퓨터내의특정위치 ( 임시저장공간 ) 메모리, register 메모리주소 101 번지 102 번지 변수의크기에따라 주로 byte 단위 메모리 2 기본적인변수형및변수의크기 변수의크기 해당컴퓨터에서는항상일정 컴퓨터마다다를수있음 short

More information

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어 개나리 연구소 C 언어 노트 (tyback.egloos.com) 프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어먹고 하더라구요. 그래서,

More information

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Example 3.1 Files 3.2 Source code 3.3 Exploit flow

More information

중간고사

중간고사 중간고사 예제 1 사용자로부터받은두개의숫자 x, y 중에서큰수를찾는알고리즘을의사코드로작성하시오. Step 1: Input x, y Step 2: if (x > y) then MAX

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 3 if, if else, if else if, switch case for, while, do while break, continue : System.in, args, JOptionPane for (,, ) @ vs. logic data method variable Data Data Flow (Type), ( ) @ Member field

More information

11장 포인터

11장 포인터 Dynamic Memory and Linked List 1 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것 메모리의크기는프로그램이시작하기전에결정 int i, j; int buffer[80]; char name[] = data structure"; 처음에결정된크기보다더큰입력이들어온다면처리하지못함

More information

11장 포인터

11장 포인터 누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리

More information

6주차.key

6주차.key 6, Process concept A program in execution Program code PCB (process control block) Program counter, registers, etc. Stack Heap Data section => global variable Process in memory Process state New Running

More information

BMP 파일 처리

BMP 파일 처리 BMP 파일처리 김성영교수 금오공과대학교 컴퓨터공학과 학습내용 영상반전프로그램제작 2 Inverting images out = 255 - in 3 /* 이프로그램은 8bit gray-scale 영상을입력으로사용하여반전한후동일포맷의영상으로저장한다. */ #include #include #define WIDTHBYTES(bytes)

More information

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음 프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음 CHAPTER 9 둘중하나선택하기 관계연산자 두개의피연산자를비교하는연산자 결과값은참 (1) 아니면거짓 (0) x == y x 와 y 의값이같은지비교한다. 관계연산자 연산자 의미 x == y x와 y가같은가? x!= y

More information

OCW_C언어 기초

OCW_C언어 기초 초보프로그래머를위한 C 언어기초 4 장 : 연산자 2012 년 이은주 학습목표 수식의개념과연산자및피연산자에대한학습 C 의알아보기 연산자의우선순위와결합방향에대하여알아보기 2 목차 연산자의기본개념 수식 연산자와피연산자 산술연산자 / 증감연산자 관계연산자 / 논리연산자 비트연산자 / 대입연산자연산자의우선순위와결합방향 조건연산자 / 형변환연산자 연산자의우선순위 연산자의결합방향

More information

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 비트연산자 1 1 비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 진수법! 2, 10, 16, 8! 2 : 0~1 ( )! 10 : 0~9 ( )! 16 : 0~9, 9 a, b,

More information

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

C++-¿Ïº®Çؼ³10Àå

C++-¿Ïº®Çؼ³10Àå C C++. (preprocessor directives), C C++ C/C++... C++, C. C++ C. C C++. C,, C++, C++., C++.,.. #define #elif #else #error #if #itdef #ifndef #include #line #pragma #undef #.,.,. #include #include

More information

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을 (structures) 구조체정의 구조체선언및초기화 구조체배열 구조체포인터 구조체배열과포인터 구조체와함수 중첩된구조체 구조체동적할당 공용체 (union) 1 구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined

More information

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074> Chap #2 펌웨어작성을위한 C 언어 I http://www.smartdisplay.co.kr 강의계획 Chap1. 강의계획및디지털논리이론 Chap2. 펌웨어작성을위한 C 언어 I Chap3. 펌웨어작성을위한 C 언어 II Chap4. AT89S52 메모리구조 Chap5. SD-52 보드구성과코드메모리프로그래밍방법 Chap6. 어드레스디코딩 ( 매핑 ) 과어셈블리어코딩방법

More information

본 강의에 들어가기 전

본 강의에 들어가기 전 C 기초특강 종합과제 과제내용 구조체를이용하여교과목이름과코드를파일로부터입력받아관리 구조체를이용하여학생들의이름, 학번과이수한교과목의코드와점수를파일로부터입력 학생개인별총점, 평균계산 교과목별이수학생수, 총점및평균을계산 결과를파일에저장하는프로그램을작성 2 Makefile OBJS = score_main.o score_input.o score_calc.o score_print.o

More information

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp Lab 4. Circular singly-linked list 의구현 실험실습일시 : 2009. 4. 6. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 12. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Circular Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Circular

More information

vi 사용법

vi 사용법 네트워크프로그래밍 6 장과제샘플코드 - 1:1 채팅 (udp 버전 ) 과제 서버에서먼저 bind 하고그포트를다른사람에게알려줄것 클라이언트에서알려준포트로접속 서로간에키보드입력을받아상대방에게메시지전송 2 Makefile 1 SRC_DIR =../../common 2 COM_OBJS = $(SRC_DIR)/addressUtility.o $(SRC_DIR)/dieWithMessage.o

More information

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2 제 17 장동적메모리와연결리스트 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다.

More information

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 이중포인터란무엇인가? 포인터배열 함수포인터 다차원배열과포인터 void 포인터 포인터는다양한용도로유용하게활용될수있습니다. 2 이중포인터

More information

chap 5: Trees

chap 5: Trees 5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경

More information

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - [2009] 02.pptx 원시데이터유형과연산 원시데이터유형과연산 원시데이터유형과연산 숫자데이터유형 - 숫자데이터유형 원시데이터유형과연산 표준입출력함수 - printf 문 가장기본적인출력함수. (stdio.h) 문법 ) printf( Test printf. a = %d \n, a); printf( %d, %f, %c \n, a, b, c); #include #include

More information

Microsoft PowerPoint - 03_(C_Programming)_(Korean)_Pointers

Microsoft PowerPoint - 03_(C_Programming)_(Korean)_Pointers C Programming 포인터 (Pointers) Seo, Doo-Ok Clickseo.com clickseo@gmail.com 목 차 포인터의이해 다양한포인터 2 포인터의이해 포인터의이해 포인터변수선언및초기화 포인터연산 다양한포인터 3 주소연산자 ( & ) 포인터의이해 (1/4) 변수와배열원소에만적용한다. 산술식이나상수에는주소연산자를사용할수없다. 레지스터변수또한주소연산자를사용할수없다.

More information

C 프로그래밍 언어 입문 C 프로그래밍 언어 입문 김명호저 숭실대학교 출판국 머리말..... C, C++, Java, Fortran, Python, Ruby,.. C. C 1972. 40 C.. C. 1999 C99. C99. C. C. C., kmh ssu.ac.kr.. ,. 2013 12 Contents 1장 프로그래밍 시작 1.1 C 10 1.2 12

More information

5.스택(강의자료).key

5.스택(강의자료).key CHP 5: https://www.youtube.com/watch?v=ns-r91557ds ? (stack): (LIFO:Last-In First-Out):. D C B C B C B C B (element) C (top) B (bottom) (DT) : n element : create() ::=. is_empty(s) ::=. is_full(s) ::=.

More information

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770> 연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.

More information

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2> 게임엔진 제 4 강프레임리스너와 OIS 입력시스템 이대현교수 한국산업기술대학교게임공학과 학습내용 프레임리스너의개념 프레임리스너를이용한엔터티의이동 OIS 입력시스템을이용한키보드입력의처리 게임루프 Initialization Game Logic Drawing N Exit? Y Finish 실제게임루프 오우거엔진의메인렌더링루프 Root::startRendering()

More information

PowerPoint Presentation

PowerPoint Presentation Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음

More information

KNK_C_05_Pointers_Arrays_structures_summary_v02

KNK_C_05_Pointers_Arrays_structures_summary_v02 Pointers and Arrays Structures adopted from KNK C Programming : A Modern Approach 요약 2 Pointers and Arrays 3 배열의주소 #include int main(){ int c[] = {1, 2, 3, 4}; printf("c\t%p\n", c); printf("&c\t%p\n",

More information

Microsoft PowerPoint - chap03-변수와데이터형.pptx

Microsoft PowerPoint - chap03-변수와데이터형.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num %d\n", num); return 0; } 1 학습목표 의 개념에 대해 알아본다.

More information

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수

More information

슬라이드 1

슬라이드 1 정적메모리할당 (Static memory allocation) 일반적으로프로그램의실행에필요한메모리 ( 변수, 배열, 객체등 ) 는컴파일과정에서결정되고, 실행파일이메모리에로드될때할당되며, 종료후에반환됨 동적메모리할당 (Dynamic memory allocation) 프로그램의실행중에필요한메모리를할당받아사용하고, 사용이끝나면반환함 - 메모리를프로그램이직접관리해야함

More information

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

More information

In this tutorial i'll try to cover all of the known methods(or at least, those that I know =p) of injecting dll's into a proce

In this tutorial i'll try to cover all of the known methods(or at least, those that I know =p) of injecting dll's into a proce DLL injection Written by Darawk 편역 : poc@securityproof.net * 이글은 Codebreakers Journal Vol.1, No.1, 2007 에서발표된것이며, 오역이나 오타가있을수있으니원문을참고시기바랍니다. 이문서에서, 나는프로세스에 dll을삽입하는알려진 ( 적어도내가아는한에서 ) 방법들모두를다룰것이다. Dll injection은

More information

1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문

1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문 1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문 1. 표준입출력 표준입출력 입력 : 키보드, scanf 함수 출력 : 모니터, printf 함수문제 : 정수값 2개를입력받고두값사이의값들을더하여출력하라. #include int main(void) int Num1, Num2; int

More information

버퍼오버플로우-왕기초편 10. 메모리를 Hex dump 뜨기 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습

버퍼오버플로우-왕기초편 10. 메모리를 Hex dump 뜨기 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습니다. 여러분모두 Windows 에서 hex editor(hex dump, hex viewer) 라는것을사용해보셨을겁니다. 바로바이너리파일을 16 진수

More information

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures 단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct

More information

Microsoft PowerPoint - chap10-함수의활용.pptx

Microsoft PowerPoint - chap10-함수의활용.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 중 값에 의한 전달 방법과

More information

윤성우의 열혈 TCP/IP 소켓 프로그래밍

윤성우의 열혈 TCP/IP 소켓 프로그래밍 C 프로그래밍프로젝트 Chap 22. 구조체와사용자정의자료형 1 2013.10.10. 오병우 컴퓨터공학과 구조체의정의 (Structure) 구조체 하나이상의기본자료형을기반으로사용자정의자료형 (User Defined Data Type) 을만들수있는문법요소 배열 vs. 구조체 배열 : 한가지자료형의집합 구조체 : 여러가지자료형의집합 사용자정의자료형 struct

More information

제 11 장포인터 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

제 11 장포인터 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 제 11 장포인터 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습합니다.

More information

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning C Programming Practice (II) Contents 배열 문자와문자열 구조체 포인터와메모리관리 구조체 2/17 배열 (Array) (1/2) 배열 동일한자료형을가지고있으며같은이름으로참조되는변수들의집합 배열의크기는반드시상수이어야한다. type var_name[size]; 예 ) int myarray[5] 배열의원소는원소의번호를 0 부터시작하는색인을사용

More information

chap7.key

chap7.key 1 7 C 2 7.1 C (System Calls) Unix UNIX man Section 2 C. C (Library Functions) C 1975 Dennis Ritchie ANSI C Standard Library 3 (system call). 4 C?... 5 C (text file), C. (binary file). 6 C 1. : fopen( )

More information

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4 Introduction to software design 2012-1 Final 2012.06.13 16:00-18:00 Student ID: Name: - 1 - 0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x

More information

PowerPoint Presentation

PowerPoint Presentation public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +

More information

3. 1 포인터란 3. 2 포인터변수의선언과사용 3. 3 다차원포인터변수의선언과사용 3. 4 주소의가감산 3. 5 함수포인터

3. 1 포인터란 3. 2 포인터변수의선언과사용 3. 3 다차원포인터변수의선언과사용 3. 4 주소의가감산 3. 5 함수포인터 - Part2-3 3. 1 포인터란 3. 2 포인터변수의선언과사용 3. 3 다차원포인터변수의선언과사용 3. 4 주소의가감산 3. 5 함수포인터 3.1 포인터란 ü ü ü. ü. ü. ü ( ) ? 3.1 ü. ü C ( ).? ü ü PART2-4 ü ( ) PART3-4 3.2 포인터변수의선언과사용 3.2 포인터 변수의 선언과 사용 (1/8) 포인터 변수의

More information

C++ Programming

C++ Programming C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout

More information

untitled

untitled Step Motor Device Driver Embedded System Lab. II Step Motor Step Motor Step Motor source Embedded System Lab. II 2 open loop, : : Pulse, 1 Pulse,, -, 1 +5%, step Step Motor (2),, Embedded System Lab. II

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Web server porting 2 Jo, Heeseung Web 을이용한 LED 제어 Web 을이용한 LED 제어프로그램 web 에서데이터를전송받아타겟보드의 LED 를조작하는프로그램을작성하기위해다음과같은소스파일을생성 2 Web 을이용한 LED 제어 LED 제어프로그램작성 8bitled.html 파일을작성 root@ubuntu:/working/web# vi

More information

int main(void) int a; int b; a=3; b=a+5; printf("a : %d \n", a); printf("b : %d \n", b); a b 3 a a+5 b &a(12ff60) &b(12ff54) 3 a 8 b printf(" a : %x \

int main(void) int a; int b; a=3; b=a+5; printf(a : %d \n, a); printf(b : %d \n, b); a b 3 a a+5 b &a(12ff60) &b(12ff54) 3 a 8 b printf( a : %x \ ? 1 int main(void) int a; int b; a=3; b=a+5; printf("a : %d \n", a); printf("b : %d \n", b); a b 3 a a+5 b &a(12ff60) &b(12ff54) 3 a 8 b printf(" a : %x \n", &a); printf(" b : %x \n", &b); * : 12ff60,

More information

컴파일러

컴파일러 YACC 응용예 Desktop Calculator 7/23 Lex 입력 수식문법을위한 lex 입력 : calc.l %{ #include calc.tab.h" %} %% [0-9]+ return(number) [ \t] \n return(0) \+ return('+') \* return('*'). { printf("'%c': illegal character\n",

More information

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 제 8 장. 포인터 목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 포인터의개요 포인터란? 주소를변수로다루기위한주소변수 메모리의기억공간을변수로써사용하는것 포인터변수란데이터변수가저장되는주소의값을 변수로취급하기위한변수 C 3 포인터의개요 포인터변수및초기화 * 변수데이터의데이터형과같은데이터형을포인터 변수의데이터형으로선언 일반변수와포인터변수를구별하기위해

More information

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - Java7.pptx HPC & OT Lab. 1 HPC & OT Lab. 2 실습 7 주차 Jin-Ho, Jang M.S. Hanyang Univ. HPC&OT Lab. jinhoyo@nate.com HPC & OT Lab. 3 Component Structure 객체 (object) 생성개념을이해한다. 외부클래스에대한접근방법을이해한다. 접근제어자 (public & private)

More information

untitled

untitled 자료형 기본자료형 : char, int, float, double 등 파생자료형 : 배열, 열거형, 구조체, 공용체 vs struct 구조체 _ 태그 _ 이름 자료형멤버 _ 이름 ; 자료형멤버 _ 이름 ;... ; struct student int number; // char name[10]; // double height; // ; // x값과 y값으로이루어지는화면의좌표

More information

/chroot/lib/ /chroot/etc/

/chroot/lib/ /chroot/etc/ 구축 환경 VirtualBox - Fedora 15 (kernel : 2.6.40.4-5.fc15.i686.PAE) 작동 원리 chroot유저 ssh 접속 -> 접속유저의 홈디렉토리 밑.ssh의 rc 파일 실행 -> daemonstart실행 -> daemon 작동 -> 접속 유저만의 Jail 디렉토리 생성 -> 접속 유저의.bashrc 의 chroot 명령어

More information

untitled

untitled if( ) ; if( sales > 2000 ) bonus = 200; if( score >= 60 ) printf(".\n"); if( height >= 130 && age >= 10 ) printf(".\n"); if ( temperature < 0 ) printf(".\n"); // printf(" %.\n \n", temperature); // if(

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 10 포인터 01 포인터의기본 02 인자전달방법 03 포인터와배열 04 포인터와문자열 변수의주소를저장하는포인터에대해알아본다. 함수의인자를값과주소로전달하는방법을알아본다. 포인터와배열의관계를알아본다. 포인터와문자열의관계를알아본다. 1.1 포인터선언 포인터선언방법 자료형 * 변수명 ; int * ptr; * 연산자가하나이면 1 차원포인터 1 차원포인터는일반변수의주소를값으로가짐

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean

More information

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F > 10주차 문자 LCD 의인터페이스회로및구동함수 Next-Generation Networks Lab. 5. 16x2 CLCD 모듈 (HY-1602H-803) 그림 11-18 19 핀설명표 11-11 번호 분류 핀이름 레벨 (V) 기능 1 V SS or GND 0 GND 전원 2 V Power DD or V CC +5 CLCD 구동전원 3 V 0 - CLCD 명암조절

More information

API 매뉴얼

API 매뉴얼 PCI-TC03 API Programming (Rev 1.0) Windows, Windows2000, Windows NT, Windows XP and Windows 7 are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 08 함수 01 함수의개요 02 함수사용하기 03 함수와배열 04 재귀함수 함수의필요성을인식한다. 함수를정의, 선언, 호출하는방법을알아본다. 배열을함수의인자로전달하는방법과사용시장점을알아본다. 재귀호출로해결할수있는문제의특징과해결방법을알아본다. 1.1 함수의정의와기능 함수 (function) 특별한기능을수행하는것 여러가지함수의예 Page 4 1.2

More information

설계란 무엇인가?

설계란 무엇인가? 금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 6 강. 함수와배열, 포인터, 참조목차 함수와포인터 주소값의매개변수전달 주소의반환 함수와배열 배열의매개변수전달 함수와참조 참조에의한매개변수전달 참조의반환 프로그래밍연습 1 /15 6 강. 함수와배열, 포인터, 참조함수와포인터 C++ 매개변수전달방법 값에의한전달 : 변수값,

More information

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V Mobile Service > IAP > Android SDK IAP SDK TOAST SDK. IAP SDK. Android Studio IDE 2.3.3 Android SDK Version 2.3.3 (API Level 10). Name Reference Version License okhttp http://square.github.io/okhttp/ 1.5.4

More information

The C++ Programming Language 4 장타입과선언 4.11 연습문제 Hello,world! 프로그램을실행시킨다. 프로그램이컴파일되지않으면 B3.1 을참고하자. #include<iostream> //#include 문, 헤더파일, 전처리지시

The C++ Programming Language 4 장타입과선언 4.11 연습문제 Hello,world! 프로그램을실행시킨다. 프로그램이컴파일되지않으면 B3.1 을참고하자. #include<iostream> //#include 문, 헤더파일, 전처리지시 The C++ Programming Language 4 장타입과선언 4.11 연습문제 4.11.1 Hello,world! 프로그램을실행시킨다. 프로그램이컴파일되지않으면 B3.1 을참고하자. #include //#include 문, 헤더파일, 전처리지시자로호칭 using namespace std; //using 키워드를사용하여 std 네임스페이스를사용선언

More information

2015 개정교육과정에따른정보과평가기준개발연구 연구책임자 공동연구자 연구협력관

2015 개정교육과정에따른정보과평가기준개발연구 연구책임자 공동연구자 연구협력관 2015 개정교육과정에따른정보과평가기준개발연구 연구책임자 공동연구자 연구협력관 2015 개정교육과정에따른정보과평가기준개발연구 연구협력진 머리말 연구요약 차례 Ⅰ 서론 1 Ⅱ 평가준거성취기준, 평가기준, 성취수준, 예시평가도구개발방향 7 Ⅲ 정보과평가준거성취기준, 평가기준, 성취수준, 예시평가도구의개발 25 Ⅳ 정보과평가준거성취기준, 평가기준, 성취수준, 예시평가도구의활용방안

More information

Microsoft PowerPoint - IP11.pptx

Microsoft PowerPoint - IP11.pptx 열한번째강의카메라 1/43 1/16 Review 2/43 2/16 평균값 중간값 Review 3/43 3/16 캐니에지추출 void cvcanny(const CvArr* image, CvArr* edges, double threshold1, double threshold2, int aperture_size = 3); aperture_size = 3 aperture_size

More information

Microsoft PowerPoint - 제11장 포인터(강의)

Microsoft PowerPoint - 제11장 포인터(강의) 쉽게풀어쓴 C 언어 Express 제 11 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 1003 1004 1005 영화관 1002 1006 1001 포인터 (pointer) 1007 메모리의구조

More information

Microsoft PowerPoint - 제11장 포인터

Microsoft PowerPoint - 제11장 포인터 쉽게풀어쓴 C 언어 Express 제 11 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 1003 1004 1005 영화관 1002 1006 1001 포인터 (pointer) 1007 메모리의구조

More information

Microsoft PowerPoint - chap06-1Array.ppt

Microsoft PowerPoint - chap06-1Array.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-1 참고자료 배열 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 배열의선언과사용 같은형태의자료형이많이필요할때배열을사용하면효과적이다. 배열의선언 배열의사용 배열과반복문 배열의초기화 유연성있게배열다루기 한빛미디어

More information

Microsoft PowerPoint - chap11-포인터의활용.pptx

Microsoft PowerPoint - chap11-포인터의활용.pptx #include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 포인터를 사용하는 다양한 방법에

More information

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100 2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack

More information

untitled

untitled while do-while for break continue while( ) ; #include 0 i int main(void) int meter; int i = 0; while(i < 3) meter = i * 1609; printf("%d %d \n", i, meter); i++; return 0; i i< 3 () 0 (1)

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 쉽게풀어쓴 C 언어 Express 제 9 장함수와변수 이번장에서학습할내용 변수의속성 전역, 지역변수 자동변수와정적변수 재귀호출 이번장에서는함수와변수와의관계를집중적으로살펴볼것이다. 또한함수가자기자신을호출하는재귀호출에대하여살펴본다. 변수의속성 변수의속성 : 이름, 타입, 크기, 값 + 범위, 생존시간, 연결 범위 (scope) : 변수가사용가능한범위, 가시성생존시간

More information

chap10.PDF

chap10.PDF 10 C++ Hello!! C C C++ C++ C++ 2 C++ 1980 Bell Bjarne Stroustrup C++ C C++ C, C++ C C 3 C C++ (prototype) (type checking) C C++ : C++ 4 C C++ (prototype) (type checking) [ 10-1] #include extern

More information

12 강. 문자출력 Direct3D 에서는문자를출력하기위해서 LPD3DXFONT 객체를사용한다 LPD3DXFONT 객체생성과초기화 LPD3DXFONT 객체를생성하고초기화하는함수로 D3DXCreateFont() 가있다. HRESULT D3DXCreateFont

12 강. 문자출력 Direct3D 에서는문자를출력하기위해서 LPD3DXFONT 객체를사용한다 LPD3DXFONT 객체생성과초기화 LPD3DXFONT 객체를생성하고초기화하는함수로 D3DXCreateFont() 가있다. HRESULT D3DXCreateFont 12 강. 문자출력 Direct3D 에서는문자를출력하기위해서 LPD3DXFONT 객체를사용한다. 12.1 LPD3DXFONT 객체생성과초기화 LPD3DXFONT 객체를생성하고초기화하는함수로 D3DXCreateFont() 가있다. HRESULT D3DXCreateFont( in LPDIRECT3DDEVICE9 pdevice, in INT Height, in UINT

More information

1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 #define _CRT_SECURE_NO_WARNINGS #include #include main() { char ch; printf(" 문자 1개를입력하시오 : "); scanf("%c", &ch); if (isalpha(ch))

More information

Microsoft PowerPoint - Chapter_09.pptx

Microsoft PowerPoint - Chapter_09.pptx 프로그래밍 1 1 Chapter 9. Structures May, 2016 Dept. of software Dankook University http://embedded.dankook.ac.kr/~baeksj 구조체의개념 (1/4) 2 (0,0) 구조체 : 다양한종류의데이터로구성된사용자정의데이터타입 복잡한자료를다루는것을편하게해줌 예 #1: 정수로이루어진 x,

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 5 장생성자와접근제어 1. 객체지향기법을이해한다. 2. 클래스를작성할수있다. 3. 클래스에서객체를생성할수있다. 4. 생성자를이용하여객체를초기화할수 있다. 5. 접근자와설정자를사용할수있다. 이번장에서만들어볼프로그램 생성자 생성자 (constructor) 는초기화를담당하는함수 생성자가필요한이유 #include using namespace

More information

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD> 2006 년 2 학기윈도우게임프로그래밍 제 8 강프레임속도의조절 이대현 한국산업기술대학교 오늘의학습내용 프레임속도의조절 30fps 맞추기 스프라이트프레임속도의조절 프레임속도 (Frame Rate) 프레임속도란? 얼마나빨리프레임 ( 일반적으로하나의완성된화면 ) 을만들어낼수있는지를나타내는척도 일반적으로초당프레임출력횟수를많이사용한다. FPS(Frame Per Sec)

More information

Microsoft PowerPoint - chap-11.pptx

Microsoft PowerPoint - chap-11.pptx 쉽게풀어쓴 C 언어 Express 제 11 장포인터 컴퓨터프로그래밍기초 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 컴퓨터프로그래밍기초 2 포인터란? 포인터 (pointer): 주소를가지고있는변수 컴퓨터프로그래밍기초 3 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다.

More information