반응형

전체 글 2934

[C언어] 70. 문자열 길이와 strlen 함수

70. 문자열 길이와 strlen 함수 C 컴파일러에서는 문자열 데이터에 관한 여러가지 함수를 제공하고 있어요. 이러한 함수들을 사용하려면 string.h 파일을 포함하세요. #include strlen 함수는 문자열 길이를 구하는 함수예요. size_t strlen(const char *str); 입력 인자로 문자열을 const char * 형식 변수로 받고 문자열 길이를 size_t 형식으로 반환해요. const char * 형식으로 받는 이유는 전달받은 문자열의 내용을 바꾸지 않겠다는 의미예요. 그리고 반환 형식인 size_t 형식은 부호없는 정수형으로 unsigned int 와 같은 표현이예요. 실제 헤더 파일에는 다음처럼 size_t를 typedef 문으로 정의하고 있어요. typedef uns..

[C언어] 69. 문자열 사용 기초

69. 문자열 사용 기초 C언어에서 문자열은 아스키 코드의 나열이예요. 특히 아스키 코드 값이 0인 문자를 널문자(‘\0’)라고 부르는데 문자열은 널문자를 만나기 전까지의 아스키 코드 나열이예요. 따라서 문자열을 char 형식 원소 배열을 선언할 때 널문자를 포함하여 원소 개수를 정하세요. 이 책에서는 문자열을 배열로 관리할 때 원소 개수를 나타내는 부분을 MAX_NAME_LEN+1 처럼 표현하고 있어요. #define MAX_NAME_LEN 50 char name[MAX_NAME_LEN+1] = {'a','b','c'}; 그리고 C언어에서는 문자열 리터럴 상수를 초기화 구문에서도 사용할 수 있어요. #define MAX_ADDR_LEN 100 char addr[MAX_ADDR_LEN+1] = "제주도 ..

[C언어] 68. 문자열

68. 문자열 프로그램을 작성하다 보면 문자열 데이터를 사용할 때가 많아요. 대부분의 프로그래밍 언어에서는 문자열을 관리하는 별도의 형식을 제공하지만 C언어는 문자열 형식을 제공하지 않아요. 그렇다고 C언어에서 문자열 데이터를 표현할 수 없는 것은 아니예요. C언어에서는 문자열을 char 형을 원소로 하는 배열이나 char 형을 원소로 하는 포인터 형식으로 문자열을 표현할 수 있어요. 그리고 문자열 데이터를 표현할 때 쉽게 표현할 수 있게 쌍 따옴표를 사용하여 문자열을 표현할 수 있어요. #define MAX_NAME_LEN 50 char name[MAX_NAME_LEN + 1] = "hello"; const char *str = "yahoo"; char 형식 원소로 배열을 선언하면 문자열을 구성하는 문..

[C언어 무료 동영상 강의] 6. 첫 번째 프로그램 만들기 7. 설명

6. 첫 번째 프로그램 만들기 7. 설명 첫 번째 프로그램 만들기 설명프로그램 진입점주석#include 문printf 문return 문디딤돌 C언어 관련 게시글 6. 첫 번째 프로그램 만들기 내용 바로가기7. 첫번째 프로그램 설명 내용 바로가기 앞으로 프로그래밍 관련 글은 새롭게 개설한 언제나 휴일 전용 사이트에서 만나보세요. 2017년 1월 1일까지 이 곳의 프로그래밍 자료는 http://ehpub.co.kr 로 옮길 예정입니다.

[소프트웨어 패턴 C#] 25. 방문자 패턴(Visitor Pattern)

25. 방문자 패턴(Visitor Pattern) 프로그래밍을 하다 보면 여러 구성 요소들로 구성된 개체를 정의해야 하는 경우는 매우 흔한 일입니다. 그리고, 특정 명령을 수행함에 있어 내부 구성 요소 개체들의 형식에 따라 적용해야 할 구체적 행위가 다른 경우가 있을 것입니다. 이와 같은 경우에 방문자 패턴을 사용하면 개체들의 형식에 따라 적용해야 할 구체적 행위를 분리하여 정의할 수 있습니다. 이는 새로운 행위를 정의할 필요가 생길 경우에도 구성 요소 형식을 변경하지 않으면서 추가할 수 있게 됩니다. 방문자 패턴에서는 개체를 구성하는 여러 요소 개체들에게 요소의 형식에 따라 수행할 구체적 작업을 방문자에 정의하게 됩니다. 대신 요소의 형식에서는 방문자를 수용하는 메서드를 제공을 하고 방문자를 통해 자신..

[소프트웨어 패턴 C#] 24. 템플릿 메서드 패턴(Template Method Pattern)

24. 템플릿 메서드 패턴(Template Method Pattern) 템플릿 메서드 패턴은 단계별로 수행하는 행위에 대한 약속을 기반 클래스에서 정의를 하고 각 단계별로 수행하는 구체적 구현은 파생 클래스에서 재 정의하는 형태의 패턴입니다. 비슷한 형태의 프로그램 구현에 필요한 뼈대를 일반화하여 제공을 하는 것은 실무에서 자주 사용하는 기법입니다. 일반화 과정을 통해 작성된 뼈대가 마련이 되어 있다면 실제 프로그래밍을 할 때에는 이를 기반으로 세부적인 기능에 대한 재 정의를 통해 효과적인 프로그래밍을 할 수 있습니다. 그리고, 설계 단계에서 프로그램 뼈대를 고민하는 비용을 줄일 수 있게 되고 기술 노하우를 결집 시킬 수 있게 해 줍니다. 이를 위해서 템플릿 메서드 패턴에서는 특정 연산을 구성하는 세부 ..

[소프트웨어 패턴 C#] 23.전략 패턴(Strategy Pattern)

23. 전략 패턴(Strategy Pattern) 프로그래밍을 하다보면 같은 문제를 해결하는 여러 가지 방법 중에 무엇을 사용하는 것이 효과적인지 고민을 하는 경우가 많습니다. 경우에 따라서는 일단은 효율이 떨어져도 개발 비용이 적게 드는 방법으로 해결을 하고 차후에 개선된 알고리즘을 사용하여 교체를 하는 방법을 사용하기도 합니다. 전략 패턴은 동일한 문제를 해결하기 위한 여러 알고리즘을 일반화하여 사용하는 부분에서 특정 알고리즘에 종속적이지 않고 독립적으로 사용할 수 있게 하는 패턴입니다. 전략 패턴에서는 구체적으로 어떠한 방법으로 문제를 해결해야 할 지를 결정하지 못한 경우에 해당 부분만을 별도의 형식으로 추상화하여 사용함으로써 작업을 분리할 수 있게 해 줍니다. 이를 통해 작업 분배가 용이해 질 수..

[소프트웨어 패턴 C#] 22. 상태 패턴(State Pattern)

22. 상태 패턴(State Pattern) 프로그래밍을 하다 보면 개체의 상태에 따라 구체적인 행위가 다르게 작성해야 하는 경우가 있습니다. 상태 패턴은 이와 같이 상태에 따라 동작을 다르게 해야 하는 부분만 별도의 클래스로 정의를 하는 패턴입니다. 상태 패턴에서는 특정 형식의 개체가 상태에 따라 동작을 다르게 하는 행위를 조사하여 추상 클래스로 만듭니다. 그리고, 각 상태에 따라 구체적인 행동을 하는 파생 클래스들을 정의를 하게 됩니다. 이와 같이 정의를 하면 특정 형식에서 해당 부분은 별도의 상태 개체를 통해 수행하게 됩니다. 개발자 입장에서 본다면 특정 형식의 상태 추가나 삭제를 빠르고 유연하게 대처할 수 있게 됩니다. 2016/04/28 - [프로그래밍 기술/Escort GoF의 디자인 패턴 C..

[소프트웨어 패턴 C#] 21.감시자 패턴(Observer Pattern)

21. 감시자 패턴(Observer Pattern) 감시자 패턴은 하나의 개체가 여러 개체의 상태의 변화를 감지하는 역할을 담당하게 하는 패턴입니다. 특정 개체의 상태가 바뀌게 되었을 때 이를 반영해야 하는 개체가 여러 개가 있을 수 있습니다. 이 경우에 다른 개체의 상태가 바뀌었을 때 자신도 변화를 갖어야 하기 때문에 결합도가 강하여 유연하게 프로그래밍 하기 힘들어집니다. 이 경우에 감시자 패턴을 사용을 하면 결합도를 느슨하게 하여 유연한 프로그래밍을 할 수 있게 해 줍니다. 감시자 패턴에서는 감시자는 다른 개체의 상태의 변화를 통보를 받는 역할과 이 변화를 구독하기를 원하는 개체에게 알려주는 역할을 합니다. 이를 위해 감시자 개체는 상태의 변화가 발생하는 주 개체에게 상태 변화에 대한 통보를 해 줄 ..

[소프트웨어 패턴 C#] 20. 메멘토 패턴 (Memento Pattern)

20. 메멘토 패턴(Memento Pattern) 메멘토 패턴은 개체의 상태를 기록해 놓았다가 원래 상태로 복원을 할 필요가 있을 때 기록해 놓은 것을 사용하는 패턴입니다. 메멘토 패턴은 실행 취소 기능을 지원하고자 할 때 많이 사용됩니다. 간단한 예를 들어볼께요. 어떠한 응용에서 특정 기능을 수행할 것을 요청하기 전에 원본 개체에게 메멘토 개체를 요청합니다. 원본 개체는 자신의 상태 정보에 대한 스냅샷인 메멘토 개체를 생성하여 반환합니다. 그리고, 특정 기능을 수행하다가 수행 이전 상태로 복원이 필요하게 되면 반환 받았던 메멘토 개체를 원본 개체에게 전달하여 복원할 것을 요청합니다. 원본 개체는 전달받은 메멘토 개체에 보관해 두었던 이전 상태 값을 얻어와서 자신의 상태를 복원을 하는 것입니다. 2016..

반응형