반응형

언어 자료구조 알고리즘/디딤돌 C언어 150

[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 형식 원소로 배열을 선언하면 문자열을 구성하는 문..

67. 정리하기

52. 함수 개요 53. 프로그램 생명 주기 54. 프로세스 메모리 구조 55. 프로그램 동작 원리 56. 매개변수 전달 원리 57. 전역 변수 58. 지역변수 59. 정적 변수 60. 상수화 변수 61. 함수 만들기 실습 시나리오 62. 도메인 분석 63. 함수명 결정 64. 함수 원형 결정 65. 테스트 코드 작성하기 66. 구현 1. 피보나치 수열의 n 항을 구하는 함수를 구현하시오. 2. 특정 구간 내에 n의 배수의 개수를 구하는 함수를 구현하시오. 3. 1에서 n 사이의 수 중에서 랜덤한 수를 m개 발급하는 함수를 구현하시오. 4. 두 수의 최대 공약수를 구하는 함수를 구현하시오. 5. 두 수의 최소 공배수를 구하는 함수를 구현하시오. 6. 두 수의 공약수의 개수를 구하는 함수를 구현하시오. 7..

66. 구현

실습 시나리오 도메인(Domain) 분석 함수명 결정 함수 원형 결정 테스트 로직 작성 구현 이제 하나 하나 구현해 보세요. 여러분은 먼저 함수를 구현해 본 후에 책을 보세요. 어렵고 귀찮아도 구현 전에 논리를 의사코드(pseudo code)나 플로우 차트, UML 등을 이용해서 정리해 보세요. 그리고 구체적으로 구현하는 것이 전체 비용을 줄이는 데 도움을 줄 거예요. a. 범위 내의 정수 합계를 구하는 함수 int GetSumInBoundary(int start, int end) start에서 end 구간까지의 정수 합계를 구하기 위해 반복문이 필요하겠죠. 여기서는 for 문을 사용할게요. 반복문에서는 현재 어디까지 더했는지 기억하기 위한 루프(반복문) 카운터 변수와 합계를 기억할 변수가 필요해요. 그..

65. 테스트 코드 작성하기

실습 시나리오 도메인(Domain) 분석 함수명 결정 함수 원형 결정 테스트 로직 작성 구현 이제 콘솔 응용 프로젝트를 생성하여 함수 원형에 맞게 비어 있는 함수를 추가하고 테스트 코드를 작성해 보세요. 함수를 먼저 만들고 테스트 코드를 작성할 수도 있지만 테스트 코드를 먼저 작성하 팀 작업의 신뢰성을 높일 수 있어요. 먼저 콘솔 응용 프로젝트를 생성하세요. 프로젝트에 main 함수와 테스트 코드를 작성할 Program.c 파일을 추가하세요. 그리고 실습 대상인 함수를 작성할 Common.c 파일과 Common.h를 추가하세요. 소스 파일(.c)에는 함수 정의문을 작성하고 헤더 파일(.h)에는 함수 선언문을 작성할 거예요. 테스트 코드를 작성할 Program.c 파일에서 Common.c 파일에 작성한 함..

64. 함수 원형 결정

실습 시나리오 도메인(Domain) 분석 함수명 결정 함수 원형 결정 테스트 로직 작성 구현 이번에는 함수 원형을 결정해 보세요. 함수 원형은 함수 이름과 입력 매개 변수 리스트와 반환 형식을 말하죠. 앞에서 함수 이름은 결정했으니 입력 매개변수 리스트와 반환 형식을 결정하세요. 입력 매개변수 리스트를 결정할 때는 기능 수행에 영향을 미치는 인자를 판단해야죠. 이를 위해 구체적인 사용 예를 생각하시고 전달할 구체적인 값을 생각하세요. 특히 기능을 수행하기 위해서 호출하는 곳의 지역 변수의 값을 변경해야 한다면 포인터 형식으로 받아야겠죠. 그리고 입력 인자가 필요가 없거나 결과를 반환할 필요가 없는 함수도 있어요. 만얀 인자가 필요 없거나 결과를 반환할 필요가 없을 때는 void로 명시해요. 이제 여러분께..

63. 함수명 결정

실습 시나리오 도메인(Domain) 분석 함수명 결정 함수 원형 결정 테스트 로직 작성 구현 함수 이름은 사용하는 개발자가 어떤 기능을 수행하는 것인지 이해하기 쉽게 만드면 좋은 이름이라고 할 수 있겠죠. 일반적으로 함수 이름은 동사로 만들어 이해하기 쉽게 만들고 있어요. 여러분이 만든 함수를 다른 개발자가 이름만 보고 어떠한 일을 수행하는지 예측할 수 있다면 개발 비용을 줄일 수 있겠죠. 이제 여러분께서는 해야 할 기능에 알맞는 함수 이름을 결정한 후에 책을 보세요. 다음은 함수 이름을 정한 예입니다. 정답이 있는 것이 아니므로 설명은 생략할게요. a. 범위 내의 정수 합계를 구하는 함수 GetSumInBoundary b. 특정 수가 소수(Prime Number)인지 판단하는 함수 IsPrime c. ..

62. 도메인 분석

시나리오 도메인 분석 함수명 결정 함수 원형 결정 테스트 로직 작성 구현 다음은 이번 실습에서 만들 함수들의 도메인 분석한 결과예요. 각 함수들이 어떨 때 사용하는 것인지 설명할게요. 여러분이 생각한 기능과 차이가 있는지 확인해 보세요. a. 범위 내의 정수 합계를 구하는 함수 사용 예: 1부터 100까지 합을 구하고자 할 때 b. 특정 수가 소수(Prime Number)인지 판단하는 함수 사용 예: 3이 소수인지 확인하고자 할 때 c. 범위 내의 정수중에 소수(Prime Number)의 개수를 구하는 함수 사용 예: 5에서 20 사이의 소수가 몇 개인지 확인하고자 할 때 d. n 개의 정수의 합계를 구하는 함수 사용 예: {1, 3, 10, 8, 5, 2} 의 원소의 합을 구하고자 할 때 e. 두 수를..

61. 함수 만들기 실습 시나리오

이번에는 단순한 기능을 수행하는 함수들을 직접 만들고 호출해서 사용하는 실습을 진행할게요. 함수 만들기 실습은 작성할 함수가 해야 할 일을 분석하는 것부터 시작하며 이런 작업을 도메인(Domain) 분석이라고 불러요. 도메인 분석이 끝나면 적당한 이름을 결정하고 입력 매개변수 리스트와 반환 형식을 결정할 거예요. 그리고 테스트 코드를 작성한 후에 실제 함수를 구현하는 순서로 실습할게요. 여러분은 함수 만들기 과정을 통해 기본적인 알고리즘 논리 전개와 함수 원형을 결정하는 능력을 키워야겠죠. 어떤 종류의 프로그래밍 언어를 사용하더라도 이러한 능력은 필수적으로 필요해요. 여러분은 각 단계별로 진행하고 난 후에 책의 내용과 비교해 보세요. 만약 책의 내용을 본 후에 따라하기 형태로 학습하면 시간은 적게 들겠지..

반응형