반응형

C언어 450

[C language] 104.도서관리프로그램 - 클래스다이어그램

도서 관리 프로그램에서는 장르별로 도서를 관리하게 할거예요. 따라서 사용자 정의 형식으로 프로그램, 장르, 도서로 역할을 구분하여 정의하기로 해요. 클래스 다이어그램에서는 프로그램에 정의할 형식을 클래스로 표시하고 클래스 간의 관계를 추가로 표시해요. 프로그램은 장르들의 집합체이고 장르는 도서의 집합체죠. 이와 같은 관계를 집합 관계(실선과 빈 다이아몬드)라 불러요.이 외에도 클래스 간의 관계는 직접 연관 관계, 연관 관계, 집합 관계, 일반화 관계, 의존 관계, 실현 관계가 있어요. C++, Java, C# 처럼 OOP 프로그램에서는 이와 같은 관계에 어울리는 문법이 있어요. 여기에서는 이들에 관한 설명은 하지 않을게요. 도서는 Book 구조체로 정의할게요. 도서 데이터에는 제목, 저자, 도서 번호를 ..

[C language] 103. 도서 관리 프로그램 - 분석 결과를 코드로

실습 각 단계에서 다이어그램을 작성할 때마다 약속한 부분을 코드로 구현할게요.먼저 Win32 콘솔 응용 프로그램 프로젝트를 생성한 후에 Program.h 파일과 Program.c 파일을 추가하세요. 그리고 앞에서 작성한 동적 배열(EHArray.h, EHArray.c)을 추가하세요. 요구 분석한 부분을 코드로 옮기기 전에 콘솔 응용 프로그램 종류에 관계없이 사용할 두 개의 함수를 작성하고 출발합시다. 하나는 콘솔 화면을 지우는 함수예요. void clrscr(); 그리고 나머지 하나는 기능 키를 입력받는 함수예요. int getkey(); 콘솔 화면을 지우는 함수는 단순히 system("cls")를 래핑한 함수예요. void clrscr() { system("cls"); } 기능 키를 입력받는 함수는 키..

[C language] 102. 도서관리 프로그램-요구분석 및 정의

요구 분석 및 정의 단계에서는 프로젝트와 이해 관계가 있는 이해 관계자를 파악하는 것에서 출발해요. 그리고 이해 관계자 별로 요구사항을 수집하는데 여기서는 생략할게요. 요구 사항을 수집한 후에는 작성할 시스템(여기서는 프로그램)을 사용할 사용자와 외부 시스템, 그리고 작성할 시스템이 사용하는 다른 외부 시스템이 있는지 조사해요. 이처럼 작성할 시스템과 상호작용하는 사용자와 외부 시스템을 액터라 불러요. 그리고 언제 우리 시스템을 사용하고 우리 시스템이 언제 다른 시스템을 사용하는지 조사하죠. 이러한 작업을 수행한 후에 결과를 유즈케이스 다이어그램으로 나타내죠. 유즈 케이스 다이어그램은 크게 액터와 유즈 케이스, 관계로 분류할 수 있어요. 액터는 작성할 시스템과 상호작용하는 외부 요소들이예요. 여기서는 최..

[C language] 101. 도서 관리 프로그램 실습 시나리오

전산 기술은 빠르게 발전하고 새로운 기술과 개발 공정이 나오고 있어요.여기에서는 시나리오를 소개한 후에 요구 분석하고 설계한 후에 구현하는 공정으로 진행할게요. 요구 분석에서는 프로그램의 외부 요소와 프로그램 사이의 상호 작용을 분석해요. 외부 요소가 언제 프로그램을 사용하는지 혹은 프로그램이 외부 요소를 언제 사용하는지 파악하죠. 그리고 분석 결과를 유즈케이스(Usecase) 다이어그램으로 작성할거예요. 설계 단계에서는 역할에 따라 사용자 정의 형식을 결정하고 형식 간의 관계를 정의해요. 그리고 유크케이스 별로 시퀀스를 정의하죠. 사용자 정의 형식과 형식 간의 관계는 클래스 다이어그램으로 표현할 거예요. 그리고 시퀀스를 정의한 것은 시퀀스(Sequence) 다이어그램으로 만들기로 해요. C언어로 프로그..

[C언어] 71. 문자열 비교와 strcmp 함수

71. 문자열 비교와 strcmp 함수 C언어에서 기본 형식은 비교 연산으로 값의 크기를 비교할 수 있죠. 그런데 배열은 메모리 주소를 값으로 갖기 때문에 비교 연산을 하면 메모리 주소를 비교해요. 개발자는 문자열의 내용을 비교하길 원하는데 메모리 주소를 비교하기 때문에 원하지 않는 결과가 나오지 않아요. 이는 프로그램 버그를 만드는 것이라 주의하세요. ◈ 비교 연산으로 문자열을 비교했을 때의 버그 #include #include #define MAX_NAME_LEN 50 int main() { char name1[MAX_NAME_LEN+1] = "hello"; char name2[MAX_NAME_LEN+1] = "hello"; if(name1 == name2) { printf("%s와 %s는 같다.\n..

[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언어] 순차 정렬, 버블 정렬, 선택 정렬, 삽입 정열, 쉘 정렬, 퀵 정렬, 병합 정렬, 힙 정렬)

순차 정렬(Sequential Sort) 알고리즘 이번에는 반복적인 방법으로 해결하는 순차 정렬(Sequential Sort) 알고리즘을 살펴볼게요. 정렬 알고리즘은 배열의 자료를 원하는 순으로 배치하는 알고리즘을 말해요. 정렬 알고리즘은 입력 인자로 정렬할 자료들이 있는 배열의 시작 주소와 원소 개수, 비교 알고리즘이 필요합니다. 그리고 수행 후에는 배열 내의 자료들은 원하는 순서로 배치한 상태여야 합니다. 순차 정렬은 맨 앞에서부터 제일 작은 원소를 배치하게 만들어 나가는 알고리즘이예요. 이를 위해 배치할 자리에 있는 원소를 뒤쪽에 있는 원소들과 비교하면서 작은 것을 발견하면 배치할 위치의 원소와 교환해요.순차 정렬(base:배열의 시작 주소, n: 원소 개수, compare:비교 논리) 반복(i:=..

[C언어 동영상 강의] 1. 들어가기에 앞서

[C언어 동영상 강의] 1. 들어가기에 앞서 1. 들어가기에 앞서C언어 소개C언어 문법 요소Hello, World 만들기Hello, World 프로그램 소개컴파일, 링크, 디버그 앞으로 프로그래밍 관련 글은 새롭게 개설한 언제나 휴일 전용 사이트에서 만나보세요. 2017년 1월 1일까지 이 곳의 프로그래밍 자료는 http://ehpub.co.kr 로 옮길 예정입니다.

반응형