★ 「2019학년도 1학기」 수/업/노/트 ★
by. 동동매니저 >_<
▶ 일자 : 2019년 03월 08일 (금)
▶ 과목 : 자료구조 1
▶ 담당 교수님 : SCH 컴소공 홍민 교수님
※ 이번 수업의 핵심 키워드!!
파일 입출력
※ 수업 내용을 요약해보면?
☆ Quiz!!
0.1mm 두깨의 종이를 접어서 약 40만km 떨어진 달까지 가려면, (이론상) 접어야 하는 최소 횟수는?
(정답은 느낀 점에서 설명할게요~!)
☆ C언어의 파일 입출력
▶ FILE 구조체를 사용 및 선언
FILE *fp;
▶ 파일 열기
fp=fopen("파일명","모드");
▶ 파일명 기입 방법!!
– 절대 경로 : "C:\\Temp\\data.txt" (반드시 역슬래시 2개로 작성!!)
– 상대 경로 : "data.txt" (파일 위치를 기준으로 상대적인 위치)
▶ 파일 열기 모드
– "r" : 읽기 전용으로 열기, 파일이 없으면 NULL을 반환
– "w" : 쓰기 전용으로 열기, 파일이 없으면 새로 생성, 있으면 다시 생성
– "a" : 추가 모드로 열기, 파일이 없으면 새로 생성
– "r+" : 읽고 쓰기 모드, 파일이 없으면 NULL을 반환
– "w+" : 읽고 쓰기 모드, 파일이 없으면 새로 생성
– "a+" : 읽고 추가 모드, 파일이 없으면 새로 생성
▶ 파일 닫기
fclose(fp);
▶ 파일의 끝인지 알아내기!!
int feof(FILE *stream);
– 파일의 끝이면 0이 아닌 수, 파일의 끝이면 0을 반환
▶ 파일 입출력 함수
int fscanf(FILE *stream, const char *format [, arguments]...);
int fprintf(FILE *stream, const char *format [, arguments]...);
– scanf, printf 함수와 비슷합니다.
※ 수업을 듣고 나서 느낀 점!!
교수님께서 내신 문제에 대해 몇몇 학생들은 100번, 200번 등의 많은(?) 횟수를 말했다.
하지만, 나는 잠시 생각에 잠겼고, 42번이라고 답을 했다. 그러자, 교수님께서도 놀라셨던 것 같았다.
그 이유는, 40만km = 4억m = 4,000억mm이고, 0.1mm에서 4,000억mm로 만들기 위해서는 두께가 약 4조배가 되어야 한다.
종이를 한 번 접을 때 마다 두께는 2배가 되므로, 근본적으로는 '2를 몇 번 곱하면 4조가 될까?'라는 문제가 된다.
(즉, 2n = 4조를 넘어가는 n의 최솟값을 구하는 문제겠죠?)
210 = 1,024
220 = 1,048,576
230 = 약 10.7억
240 = 약 1.1조
242 = 약 4.4조이므로,
(실제로는 불가능하겠지만...) 42번을 접게 되면 약 44만km가 된다.
이렇게 2의 제곱이 큰 결과를 만들게 될 줄은 몰랐다.
나중에 배우게 되겠지만, 팩토리얼의 경우, 이보다 기하급수적으로 늘어나게 된다고 한다.
(효율적인 알고리즘 작성 또한 중요하다고 생각되는 계기가 된 듯?)
또한, 작년 C언어 강의 때 교수님께서 생략하신 기초적인 파일 입출력을 배우게 되었다.
(예전에 책에서 봤던 기억이 가물가물...)
※ 기타 참고 사항!!
드디어... 첫 과제가 주어졌음. (제출 기한 : 2019.03.15.)
얼핏 보면 단순할 것 같지만, 만만치 않았음.
교수님께서 원하시는 형식이 있었고, 직접 데이터를 만들어서 테스트도 해 보라고 권하셨음.
(나중에 과제 목록도 올려보고 싶지만... 아직 교수님께 양해를 구하지 못한 이유로 올려드리는 것은 아직 무리일 것 같아요 ㅠ.ㅠ)
과제를 제출할 때, 프로젝트 폴더를 통째로 압축해서 올리라고 하셨음.
단, 반드시 Visual Studio 2010을 사용할 것!!