| |||
'도서관 I > 리눅스' 카테고리의 다른 글
[바람이] ssh 접속자 계정 제한 설정 하기 (0) | 2007.05.09 |
---|---|
[펌] crontab 사용법 (0) | 2007.05.07 |
[바람이] gdb의 간단한 사용법 (2) | 2006.09.19 |
[바람이] 간단한 Shell 명령어 정리 (0) | 2006.09.02 |
[바람이] mm_struct 에 대한 개요 (0) | 2005.09.28 |
| |||
[바람이] ssh 접속자 계정 제한 설정 하기 (0) | 2007.05.09 |
---|---|
[펌] crontab 사용법 (0) | 2007.05.07 |
[바람이] gdb의 간단한 사용법 (2) | 2006.09.19 |
[바람이] 간단한 Shell 명령어 정리 (0) | 2006.09.02 |
[바람이] mm_struct 에 대한 개요 (0) | 2005.09.28 |
* gdb란?
Command line Debugging을 위해 사용되는 Debugger
* 기본 명령어
- r : Run
- b 함수이름 or b 줄번호 : Breakpoint
- n : Next step
- c : Continue
- q : Quit
[펌] crontab 사용법 (0) | 2007.05.07 |
---|---|
[펌] 서버 관리를 위한 ssh 서버 보안세팅 (0) | 2006.10.30 |
[바람이] 간단한 Shell 명령어 정리 (0) | 2006.09.02 |
[바람이] mm_struct 에 대한 개요 (0) | 2005.09.28 |
[바람이] task의 순환 (Running , Ready , Blocked) (0) | 2005.09.28 |
[펌] 서버 관리를 위한 ssh 서버 보안세팅 (0) | 2006.10.30 |
---|---|
[바람이] gdb의 간단한 사용법 (2) | 2006.09.19 |
[바람이] mm_struct 에 대한 개요 (0) | 2005.09.28 |
[바람이] task의 순환 (Running , Ready , Blocked) (0) | 2005.09.28 |
[바람이] linux-2.6.12.3 중에 sched.h안에 task_struct 분석 (0) | 2005.09.28 |
Pseudo code (or Structured English) is used to specify program logic in a (somewhat) English like manner, that aims to be independent of any particular programming language. This simplifies program development by separating it into two main parts, logic design and coding. The use of pseudo code allows the programmer to focus on the logic of the program rather than implementation details such as how data is displayed Once the logic is developed, coding becomes the translation of the pseudo code into the required programming language.
variable = expression
Examples
total = 0
y = x * x + z / 4 - 1
name = "Joan Smith"
validLength = True
Input variable, variable, ...
Examples
Input custName
Input distance, speed
Display value, value, ...
Examples
Display "Hello World"
Display totalPrice, taxPayable
Display "Customer Number: ", custNum, "Name: ", custName
IF condition THEN
statement
statement
...
ENDIF
IF condition THEN
statement
statement
...
ELSE
statement
statement
...
ENDIF
IF condition THEN
statements
ELSE
IF condition THEN
statements
ELSE
IF condition THEN
statements
ELSE
statements
ENDIF
ENDIF
ENDIF
IF condition THEN
statements
ELSE IF condition THEN
statements
ELSE IF condition THEN
statements
ELSE
statements
ENDIF
Note: the Else part is optional. Use it where required by the logic.
Examples
IF lineNumber > 50 THEN
Display ""
Display "Student Number", "Student Name"
lineNumber = 0
ENDIF
IF monthNumber >= 1 AND monthNumber <= 12 THEN
Display "valid month"
ELSE
Display "invalid month"
Display "Month must be between 1 and 12"
ENDIF
IF mark >= 80 THEN
grade = "A"
comment = "Excellent"
ELSE
IF mark >= 70 THEN
grade = "B"
ELSE
IF mark >= 60 THEN
grade = "C"
ELSE
IF mark >= 50 THEN
grade = "D"
ELSE
grade = "N"
comment = "Poor"
ENDIF
ENDIF
ENDIF
ENDIF
IF mark >= 80 THEN
grade = "A"
comment = "Excellent"
ELSE IF mark >= 70 THEN
grade = "B"
ELSE IF mark >= 60 THEN
grade = "C"
ELSE IF mark >= 50 THEN
grade = "D"
ELSE
grade = "N"
comment = "Poor"
ENDIF
FOR counter = start-value to end-value DO
statement
statement
...
ENDFOR
Example
FOR x = 1 to 10 DO
xSquared = x * x
Display x, xSquared
ENDFOR
WHILE condition DO
statement
statement
...
ENDWHILE
Example
count = 1
WHILE count <= 10 DO
Display count
Add 1 to count
ENDWHILE
program-name()
statement
statement
...
STOP
Example
addTwoNumbers()
Input number1, number2
sum = number1 + number2
Display sum
STOP
Subroutines are also called procedures or void methods. Subroutines do not return a value.
Format - subroutine calls
subroutine-name()
subroutine-name(parameter, parameter, ...)
Examples - subroutine calls in a program
demoProgram()
...
displayTenStars()
displayAverage(count, total)
STOP
Format - subroutine declarations
subroutine-name()
statement
statement
...
EXIT
subroutine-name(parameter, parameter, ...)
statement
statement
...
EXIT
Examples - subroutine declarations
displayTenStars()
FOR numStars = 1 to 10 DO
Display "*"
ENDFOR
Display ""
EXIT
displayAverage(count, total)
IF count > 0 THEN
average = total / count
Display average
ELSE
Display "Error, nothing to average"
ENDIF
EXIT
Functions are also called non-void methods. Functions return a single value.
Format - function calls
function-name()
function-name(parameter, parameter, ...)
Examples - function calls in a program
demoProgram()
...
month = inputMonth()
IF oddNumber(month) THEN
...
ENDIF
volume = 4 /3 * PI * cube(radius)
max = maximumNumber(a, b)
STOP
Format - function declarations
The following are called functions. They return a single value.
function-name()
statement
statement
...
RETURN with value
function-name(parameter, parameter, ...)
statement
statement
...
RETURN with value
Examples - function declarations
inputMonth()oddNumber(num)
oddNumber = false
IF num modulus 2 = 0 THEN
oddNumber = true
ENDIF
RETURN with oddNumber
cube(number)
cube = number * number * number
RETURN with cube
maximumNumber (number1, number2)
IF number1 >= number2 THEN
maximumNumber = number1
ELSE
maximumNumber = number2
ENDIF
RETURN with maximumNumber
The following words have a special meaning in Pseudo Code (in this subject) and should only be used for the purposes described above.
AND, DO, ELSE, ENDIF, ENDFOR, ENDWHILE, EXIT, FOR, IF, NOT, OR, RETURN, STOP, THEN, TO, WHILE.Other statements: Display, Input
Operators: =, +, -, *, /, (), <, <=, >, >=, []
[바람이] TortoiseCVS 사용법 (0) | 2007.05.04 |
---|---|
[펌] 윈도우2003에서 CVSNT + TortoiseCVS 설치하기 (1~4) (0) | 2007.05.04 |
[펌] GoF의 디자인 패턴 그림 및 간략 설명 (0) | 2007.05.03 |
[펌] __FILE__ , __FUNCTION__ , __LINE__ 매크로 (0) | 2007.08.30 |
---|---|
[펌] 동적 디버깅 __FILE__ , __LINE__의 활용 (0) | 2007.08.30 |
[바람이] Release 버젼을 위한 효율적인 Debugging 코드 작성법 (0) | 2007.07.09 |
[펌] 컴퓨터가 이해할 수 있는 코드는 어느 바보나 다 짤 수 있다. 좋은 프로그래머는 사람이 이해할 수 있는 코드를 짠다. (0) | 2007.06.27 |
[바람이] 문자열 관련 함수 (0) | 2005.08.22 |
MFC에서 보면 아래와 같은 소스 코드가 있다.
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif // _DEBUG
이것에 대해 엄청난 궁금증이 있었지만 그려러니 하고 넘어갔었다.
그러던 중 우연치않게 이 용도를 알았다.
프로그래밍하던중 종료시에 "Detected memory leaks!" 이란 메시지를 우연찮게 발견했다.
아무래도 어디선가 new를 했다 delete 를 하지 못해 구천에서 떠도는 원혼의 소리 같은 필이팍! -_-;
하지만 어디서 나오는지 도저히 알 방법이 없었다.
힌트라도 주면 디버깅을 하겠지만 이건 뭐... 완존히... -_-;;
그래서 나름대로 사이트를 뒤적거리던중 ms 사이트에서 이걸 발견했다.
cpp 파일에다가 이걸 선언하면 (h에 하면 않된다.) 해결이 된다.
그렇다면 한번 예를 적겠다. 생성자에 아래와 같은 코드를 넣는다.
char *p = new char[4444];
물론 고의 적으로 delete p; 를 하지 않는다.
#define new DEBUG_NEW를 cpp 꼭대기에 선언하지 않았을 경우 디버그 모드로 실행하다
종료하면 디버깅창에 아래와 같은 메시지가 나온다. 몇번지에 몇 바이트까지 나온다.
원혼이 떠도는지는 알겠지만 원인은 모른다. ㅠㅠ
Detected memory leaks!
Dumping objects ->
{71} normal block at 0x00E1B748, 4444 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
Object dump complete.
#define new DEBUG_NEW를 해당 cpp 꼭대기에 선언한 경우는 종료시 아래와 같이 나온다.
Detected memory leaks!
Dumping objects ->
C:\어쩌고저쩌고\Test.cpp(172) : {71} normal block at 0x00E1B748, 4444 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
Object dump complete.
아! 얼마나 훌륭한가?
만약 선언되지 않은 cpp에 메모리 릭이 발생된다면 위치는 가르쳐 주지 않을것이다.
이제 원인을 아니까 성불 시킬수 있을것이다! (일본만화를 너무 많이 봤나? -_-)
모든 클래스의 사이즈를 외운다면 필요없겠지만.. 못외우는 분은 알고 있으면 좋을것 같다. ^^
이런 삽질을 반복하고 나서 이 코드의 의미를 알게 되었다.
이 덕분에 리소스 관리자의 버그를 찾아내었다. ^^;;
바꿔 말하면 버그 있는지 모르고 게임이 나올뻔했다. -_-;
ps... 이것은 어디까지나 MFC에 한해서 작동된다. 따라서
#ifdef _AFXDLL
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif // _DEBUG
#endif // _AFXDLL
라고 쓰는 것이 좋을 것이다.
알아낸곳은
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvissdk/html/vissdk.asp
좀더 자세한 정보가 있는곳을 찾았다.
[바람이] CCommanDialog Class (0) | 2005.09.26 |
---|
* Bubble Sort
마치 거품방울이 뽀글뽀글 올라가는 모양과 비슷하다하여 붙어진 이름이다.
Bubble Sort는 두가지만 알고 있으면 된다.
1. 두가지 값을 비교
2. 두값을 swap함
백문이 불여일견이다.
// Bubble sort
void bubble_sort(int size , int* val)
{
for (int i = 0 ; i < size - 1; i++)
{
for (int j = 0 ; j < size - 1 - i ; j++)
{
if (val[j] > val[j+1])
{
int tmp = val[j];
val[j] = val[j+1];
val[j+1] = tmp;
}
}
}
}
예로 다음 배열을 Bubble Sort 해보이겠다.
{ 9 , 7 , 3 , 5 , 1 , 7 , 2 }
우선 첫 Loop에서의 모습을 보이겠다.
9 7 3 5 1 7 2
7 9 3 5 1 7 2
7 3 9 5 1 7 2
7 3 5 9 1 7 2
7 3 5 1 9 7 2
7 3 5 1 7 9 2
7 3 5 1 7 2 9
마치 왼쪽이 밑이고 오른쪽이 위라고 생각하면 9라는 값은 마치 거품방울이 올라가듯
뽀글뽀글 올라가는 것이 보인다 @^-^@
다음은 7 값이 올라가게 될것이다.
결국 1 2 3 5 7 7 9 로 정렬이 될 것이다.
* 장점
1. 알고리즘이 간단하다.
2. 2중 Sorting이 간편하다. 즉, 학번순으로 정렬을 한뒤 같은 학번내에서 이름순의 정렬이
가능해진다.
* 단점
1. 성능이 O(n^2)으로 약간 느리다고 할 수 있다.
[C] 최대 이익을 내는 시기를 찾아내는 알고리즘 (0) | 2005.09.13 |
---|
[바람이] 2007.08.06 SCJP 답안지 (0) | 2007.08.17 |
---|---|
[바람이] 메소드 정의와 호출 (0) | 2005.10.12 |
[바람이] ObjectOutputStream 분석을 통한 SimpleObjectOutputStream의 구조설계 (0) | 2005.10.12 |
[펌] Java라는 언어의 개요 (0) | 2005.09.27 |
[바람이] Serializable 에서 transient 란? (1) | 2005.09.22 |
[바람이] DAMAGE: after Normal block (#XXX) at 0xXXXXXXXX (0) | 2007.02.23 |
---|---|
[바람이] HyperSnap 을 상시 띄워놓을 경우에 Visual Studio에서 Debugging 문제점 (0) | 2007.02.02 |
[바람이] 2007.08.06 SCJP 답안지 (0) | 2007.08.17 |
---|---|
[바람이] javadoc 사용법 (0) | 2005.10.13 |
[바람이] ObjectOutputStream 분석을 통한 SimpleObjectOutputStream의 구조설계 (0) | 2005.10.12 |
[펌] Java라는 언어의 개요 (0) | 2005.09.27 |
[바람이] Serializable 에서 transient 란? (1) | 2005.09.22 |