* 이번주주제: 배열, 문자열 1 * 지난주내용: 함수 2
* 배열의 개념 (p86) - 복수의 동일한 데이터 형의 변수를 하나로 묶은 것. - 대량의 데이터를 취급할 때나 여러 데이터를 차례로 자동적으로 입출력해야 할 때 배열을 사용 하면 편리. - 배열도 변수와 마찬가지로 선언이 필요. - 배열을 초기화 할 때는 { }를 사용하여 값을 열거. - [ ]안의 요소 수는 생략 가능. 3 * 배열 - 동일한 형의 변수를 모아서 등번호 로 처리하는 방법. - 배열의 각 요소는 배열의 이름에 붙여 첨자 연산자라 부르는 [ ]의 중간에 등번호 를 넣어서 표 시. - 맨 앞의 요소부터 몇 개 후 에 위치하고 있는가를 표시. 4
* 연습 : 예제 5-1. 배열이 필요한 이유 - 다섯명의 학생들의 점수를 읽어 들여서 합계점과 평균점을 표시하는 프로그램을 작성하세요. 5 * 연습 : 예제 5-2. 배열 - 배열의 각 요소에 처음부터 순서대로 1,2,3,4,5를 대입하여 표시하는 프로그램을 작성하세요. 6
* 배열 요소의 참조와 대입 (p87) - 배열의 요소 하나하나는 일반 변수처럼 참조하고 대입할 수 있음. - 첨자에 0~(요소의 개수-1) 이외의 값을 지정하면, 프로그램 중에 에러가 발생. 7 * 배열 요소의 참조와 대입 예 (p87) 8
* 연습 : 예제 5-3. 배열과 for문 - 배열의 각 요소에 처음부터 순서대로 1,2,3,4,5를 대입하여 표시하는 프로그램을 작성하세요. 9 * 연습 : 예제 5-4. double형 배열 - 요소형이 double형인 배열의 모든 요소에 0.0을 대입하는 프로그램을 작성하세요. 10
* 배열의 초기화 - 변수를 선언할 때에는 부득이한 경우를 제외하고는 반드시 초기화해야함. - 배열에 주는 초기화자는 콤마(,)로 구분하여 나열하며, { }로 둘러쌈. - 배열의 요소수를 주지 않고 선언하면 초기화자의 수에 의하여 배열의 요소수는 자동 적으로 정해짐. - - 초기화자가 부족한 요소는 0으로 초기화. - - - 초기화자의 수가 배열의 요소수를 초과하면 에러 발생. - 11 * 연습 : 예제 5-5. 배열의 초기화 - 배열의 각 요소에 처음부터 순서대로 1,2,3,4,5로 초기화하여 표시하는 프로그램을 작성하세요. 12
* 연습 : 예제 5-6. 배열의 복사 - 배열의 모든 요소를 다른 배열에 복사하는 프로그램을 작성하세요. 13 * 연습 : 예제 5-8. 배열을 역순으로 늘어놓기 - 배열의 모든 요소를 역순으로 늘어놓는 프로그램을 작성하세요. 14
* 다차원 배열이란 (p92) - 표처럼 종횡으로 확장되는 데이터를 한번에 다루기 위해서 다차원 배열을 사용. 15 * 다차원 배열에 대한 대입, 초기화, 참조 (p93) 16
* 연습 : 예제 5-14. 행렬 - 2행 3열의 배열 a,b의 합을 구해서 표시하는 프로그램을 작성하세요. 17 * 연습 : 예제 83. 수치의 1차원 배열 - 다음의 표의 값을 배열 a[5], b[5]에 대입한 다음 상응하는 값의 곱을 배열 c[5]에 대입하여 표시하는 프로그램을 작성하세요. 18
* 연습 : 예제 84. 배열의 값을 초기화 - 배열 a[]의 값을 5, 2, 3, 5, 3, 2, 4, 8, 9, 9, 7로 하여 그 합을 구하는 프로그램을 작성하세요. 19 * 참고 : 예제 85. 2차원 배열 - 다음의 표를 배열 a[5][3]에 저장한 다음 가로항(행)의 합을 구하여 표시하는 프로그램을 작성하세요. 20
* 연습 : 예제 86. 2차원 배열의 값을 초기화 - 다음의 표에서 배열 a, b를 초기화 한 다음, 상응하는 항의 합의 배열을 만들고 표시 하는 프로그램을 작성하세요. 21 * 연습 : 예제 88. 1문자를 넣는 배열 - T, u, r, b, o, C를 각각 배열 a[0]~a[5]에 대입하고 연속해서 표시하는 프로그램을 작성하세요. 22
* 연습 : 예제 89. 문자열 배열의 초기화 - 문자열 배열 a[]를 computer 의 각 문자로 초기화하여 a[0]~a[7]을 표시하는 프 로그램을 작성하세요. 23 * 참고 : 예제 90. 문자형 2차원 배열 - 다음 데이터를 한 문자씩 2차원 배열에 대입하여 표시하는 프로그램을 작성하세요. 24
* 참고 : 예제 91. 문자형 2차원 배열의 값을 초기화 - 다음의 데이터를 한 문자씩 2차원 문자형 배열 a에 대입 초기화하여 표시하는 프로그램을 작성하세요. - personal - computer 25 * 연습 : 예제 92. 배열을 사용한 문자열 - BASIC 을 배열변수 a[6]에 대입한 후 전체 문자열을 표시한 다음 한 문자씩 띄어 서 표시하는 프로그램을 작성하세요. 26
* 연습 : 예제 93. 복수의 문자열을 배열에 대입 - BASIC, C, FORTRAN, COBOL의 네 문자열을 배열 a에 대입하여 표시하는 프로그 램을 작성하세요. 27 * 도전 : 예제 5-9. 배열에 의한 성적처리 - 다섯명 학생들의 점수를 읽어들여 합계점과 평균점을 표시하는 프로그램을 작성하세요. 28
* 문자열 - 문자열 리터럴 : ABC 와 같이 문자의 나열을 큰 따옴표( )로 둘러싼 것. - 문자열 리터럴에는 널문자라고 부르는 즉, 0인 문자가 끝에 붙음. - 널문자는 모든 비트가 0.(문자상수가 아니라 정수상수로 표시해도 0) - 예) ABC 는 실질적으로 4문자 분의 영역을 점유. - 문자열 리터럴로 표시한 문자 중, 큰 따옴표가 있는 경우, 확장표기 을 사용해 표기. - 예) XY Z라는 문자를 표현하는 문자열 리터럴은 XY Z임. - 문자열 리터럴의 크기 : - 문자열 리터럴 AB tc 의 중간에 있는 t 는 외관상으로 2문자이지만 탭을 표시하는 확 장문자이기 때문에 1문자로 취급 - 문자배열의 초기화 : 29 * 참고 : 예제 9-1. 문자열 리터럴 - 문자열 리터럴의 크기를 표시하는 프로그램을 작성하세요. 30
* 연습 : 예제 9-2. 문자열 - 문자열 배열에 문자열 ABC 를 저장, 표시하는 프로그램을 작성하세요. 31 * 연습 : 예제 9-3. 문자배열의 초기화 - 배열의 각 요소에 문자를 대입하지 않고, 최초부터 초기화하는 프로그램을 작성하세 요. 32
* 연습 : 예제 9-4. 문자열 읽기 - 이름을 표시하는 문자열을 읽어 들여서, 인사하는 프로그램을 작성하세요. 33 * 연습 : 예제 9-5. 문자열을 서식화하여 표기 - 문자열 12345 를 서식화해서 표시하는 프로그램을 작성하세요. 34
* 배열과 문자의 관계 (p88) - 문자열 : 복수 문자의 집합 - 문자열을 담아두기 위해서는 배열(문자열 배열)을 사용해야 함. - 문자열에서는 배열 요소 하나에 한 문자가 들어감. 35 * 배열과 문자의 관계 예제 (p89) 36
* 연습 : 예제 9-6. 문자열의 배열 - 문자열의 배열을 표시하는 프로그램을 작성하세요. 37 * 연습 : 예제 9-7. 문자열 배열의 요소, 문자열 읽기 - 문자열 배열의 각 요소에 표준 입력에서부터 문자열을 읽어서, 이를 표시하는 프로그램을 작성하세요. 38
* 문자열 함수 1 (p90) - C언어에는 문자열을 조작하는 표준함수(문자열함수)가 준비되어 있음. - 문자열함수를 사용하기 위해서는 프로그램의 첫머리에 다음과 같은 구문을 추가해야 함. - #include<string.h> - 대표적인 문자열 함수 : 39 * memo - - - 40
* 참고 : 예제 11-23. 문자열의 길이 - 문자열의 길이를 반환하는 프로그램을 작성하세요. 41 * 참고 : strlen() 문자열 길이 반환 - 매개변수로 길이를 계산할 문자열을 전달받고, 계산한 길이를 반환. - 널문자는 데이터가 아니기 때문에 길이를 포함되지 않음. - 널문자를 중간에 삽입하면 그 전까지의 길이만을 반환. 42
* 연습 : 예제 11-21. 문자열 복사 - 배열과 포인터를 이용한 문자열복사 프로그램을 작성하세요. 43 * 참고 : strcpy() 문자열 복사 44
* 문자열 함수 2 (p90~91) 45 * memo - - - 46
* 연습 : 예제 11-24. 문자열 복사, 연결 - 문자열을 복사하고 연결하는 프로그램을 작성하세요. 47 * 참고 : strcat() 문자열 붙여넣기 48
* 참고 : 예제 11-22. 문자열 비교 - 문자열의 대소를 비교하여 포인터를 바꿔 연결하는 프로그램을 작성하세요. 49 * 참고 : strcmp() - 문자열 비교 - 한글은 각각의 글자에 따른 고유한 값이 있고, 이들 값은 사전순서에 맞게 배치되어 있어서 알 파벳과 똑같이 비교됨. - 한글은 아스키코드를 벗어난 범위에 존재하기 때문에 무조건 알파벳보다 ASCII 코드의 번호가 크게 됨. 50
* 연습 : 예제 11-25. 문자열 비교 - 문자열을 비교하는 프로그램을 작성하세요. 51 * memo - - - 52
* 문자열 변환에 관련된 함수 (p91) 53 * 참고 : ASCII 코드표 54
* 연습 : 예제 11-13. 문자열 변환 함수 - atoi함수를 이용해서 문자열을 변환하는 프로그램을 작성하세요. 55 * 연습 : 예제 11-27. 수를 문자열로 변환 - 수를 문자열로 변환하는 프로그램을 작성하세요. 56
* 도전 : 예제 11-26. 문자열을 수로 변환 - 문자열을 정수, 실수형으로 변환하는 프로그램을 작성하세요. 57 * 참고 : atoi // atol - 문자열을 수로 변경 58
* 참고 : atof() 문자열을 수로 변경 59 * 참고-BCD 램프제어#1-4개의 램프를 이용해서 7세그먼트를 표현. - 스위치를 on/off 할 때마다 숫자가 증가하는 프로그램. - 숫자의 증가는 2진수 형식의 4개의 램프로 표현. - 1부터 8까지 증가 한 후, 9번째 신호에서는 초기화. - 펑션 및 펑션블록을 사용하여 설계. 60