[[TableOfContents]] = 참여자 명단 = || 의사 || 장용운 || 11학번 || 출석 || ||<|3> 환자 || 천준현 ||<|3> 15학번 || 출석 || || 최지혁 || 출석 || || 박인서 || 출석 || = 수업 = == 진행 == 1. 장소 : 6층 학회실 2. 시간 : 11시 ~ 13시 == 내용 == '''7강. 전처리기와 I/O''' ''- I/O는 불필요하다 판단되어 생략함'' * 전처리기가 뭐죠? * 너를 define으로 임명해주마 * 내안에 너 있다 include * 전처리기 매크로 * ifdef, ifndef, endif * 프로젝트 빌드 과정 ○ 전처리-컴파일-링크 과정 ○ 헤더의 목적과 원리 ○ 코드의 분리와 재사용 ○ 링크 '''9강. 이게 말로만 듣던?''' * 포인터 * 메모리 주소 표현방식 * &연산자 * 포인터 변수와 자료형 * 더블 트리플 쿼드라 펜타! 손가락질에는 끝이없다 * Call by value와 Call by reference = 코드 = == 예제1 == {{{ #include #pragma warning(disable:4996) #define DEBUG #define PI 3.14 int main(void) { printf("PI = %f\n", (float)PI); #ifdef DEBUG printf("이 문장은 디버그 중일 때에만 출력됩니다."); #endif return 0; } }}} == 예제2 == {{{ void swap(int*, int*); void swap(int* pa, int* pb) { int c; c = *pa; *pa = *pb; *pb = c; } }}} = 숙제 = 1. 이 페이지에 후기 작성하기! 2. 오늘 공부한 개념 수업 페이지에 정리하기! 3. 다음 프로그래밍 용어들의 뜻 조사하기. Stack과 Queue의 연산은 동작을 이해해야함 * Stack -> push, pop 연산 * Queue -> push, pop 연산 * Line feed * Carriage return * SIMD = 후기 = * '''후기 작성 요령''' : 후기는 F4(ThreeFs + Future Action Plan)에 맞게 작성해주세요. * Facts, Feelings, Findings, Future Action Plan. 즉, 사실, 느낀 점, 깨달은 점, 앞으로의 계획. * 포인터를 맛보기로 배웠습니다. 오늘, 금요일 얼마나 빡치게 될지 기대가 됩니다. 열심히 하겠습니다. * 신기한 것(ifdef라던가)과 포인터를 배웠습니다. 참 수업을 들으면 들을수록 스스로 '난 ㅂㅅ이구나~' 라고 느끼게 됩니다. 그런 생각이 드는 만큼 열심히 하겠습니다... -[최지혁] * ---- = 숙제 제출 = == 천준현 == {{{ *용어정리 구조 알아보는 건 찾아서 읽어봤는데 이해가 잘 안되요. 설명 부탁드립니다, - Line feed : The character (0x0a in ASCII) which advances the paper by one line in a teletype or printer, or moves the cursor to the next line on a display. - Carriage return : The control character (0x0D in ASCII, abbreviated as CR) that originally signaled a device to perform a carriage return, but now merely indicates the end of a line of text. - SIMD : 병렬 프로세서의 한 종류로, 하나의 명령어로 여러 개의 값을 동시에 계산하는 방식이다. }}} {{{ &전처리기 #include 헤더파일같은 거 불러올 때 쓴다. #define 주로 수에 이름붙일 때 쓴다. #ifdef 정의가 되어있을 때 #ifndef 정의가 안되어있을 때 #endif 위의 두 지시자를 끝마칠 때 위 세개는 중간에 문제가 있는지 없는지 하여튼 구별할 때 자주 쓴다. &포인터 int a = 10; int *p = &a int * 요게 포인터이다 * 종류 : 1. 이항연산자 2. 포인터 3. 단항연산자 *하고 &는 서로 반대이다 call-by-value, call-by-reference call-by-reference를 이용하여 저장된 값을 서로 바꾸는 걸 할 수 있다. }}} == 최지혁 == {{{ 2. * 빌드: 소스코드에서 실행 exe로 만들때 전처리,컴파일,링크를 하는 것 * #이 붙는 것은 모두 전처리를 이용한다 (include define ifdef endif ...) *포인터에서의 * 과 & : * - 1. *a 로 a의 메모리 주소에 접근 & - 2. data*로 자료형 뒤에 붙어 이게 포인터임을 알려줌 *call by value/reference : value는 변수에 저장된 값을 불러 오는 것, 그래서 원래 변수의 값은 변하지 않는다. reference는 변수의 주소를 불러 오는 것, 주소로 직접 가서 변수의 값을 바꿀 수 있다. 3. *stack - push/pop : stack은 선형구조라 맨 끝의 데이터부터 차례차례 손을 댈 수 밖에 없다. stack이란 메모리에서 데이터를 집어넣는 걸 push 꺼내는 걸 pop이라 한다. 이걸 하는 방법은 포인터를 이용해서 데이터를 넣고 뺀다. *queue - push/pop : 메모리에 먼저 들어온(push) 것 부터 나가는(pop), 선입선출방식이다. *line feed : 아스키 코드에서 16진수로 0A 이다. 기능은 커서를 현재 행의 다음 행으로, 즉 아래로 내리게 하는 것이다. *carriage return : 아스키 코드에서 16진수로 0D 이다. 기능은 커서를 현재 행의 맨 좌측으로 옮기게 하는 것이다. *SIMD : 병렬 프로세서의 한 종류로, 하나의 명령어로 여러 개의 값을 동시에 계산하는 방식이다. 벡터 프로세서에서 많이 사용되는 방식으로, 비디오 게임 콘솔이나 그래픽 카드와 같은 멀티미디어 분야에 자주 사용된다 }}} == 박인서 == === 전처리기 내용 요약 === * 빌드란 소스코드를 실행파일로 만들 때 필요한 작업으로 전처리, 컴파일, 링크가 있다. * 이중에 전처리는 필요한 파일을 좀더 .C파일에 넣어주는 작업을 의미한다. * 전처리기는 전처리를 해주는 문구를 의미한다. * 대표적인 전처리기는 #include, ~해로운 전처리기인~ #define, #ifdef, #ifndef, #endif 등이 있다. * #ifdef->#define으로 정의하면 #endif나올 때 까지 실행, #define으로 정의 안하면 #endif나올 때 까지 실행X * #ifndef->#define으로 정의 안하면 #endif나올 때 까지 실행, #define으로 정의하면 #endif나올 때 까지 실행X === ~~소문이 무서운~~ 포인터 내용 요약 === * 모든 메모리에는 메모리 위치(주소)를 가지고 값이 저장된다. * 포인터 : 저장하는 값이 메모리 주소인 자료형, 변수 * 정의) int *p=&a;->정수 a라는 값의 주소값을 p에 저장 * *의 의미-이항연산자, data type, 단항연산자 * *p는 a와 완전 같음 * *와 &는 완전 반대 * &(&a)는 쓰는게 불가능 * but **은 가능->더블 포인터 * ***, **** 등이 모두 다 가능->다중포인터~고통받을 듯~ * call_by_value(메모리 주소를 안 넘김) vs call_by_reference(메모리 주소를 넘김) === 용어조사 === * Stack : 데이터를 push하는 곳과 pop하는 곳이 같은 선형구조 * Queue : 데이터를 push하는 곳과 pop하는 곳이 같은 선형구조 * push/pop : 데이터를 넣는 것을 push, 데이터를 꺼내는 것을 pop이라 한다. * Line feed : 커서의 위치를 아랫줄로 이동 * Carriage return : 커서의 위치를 맨 앞으로 이동 * SIMD : 단일 명령어로 복수의 데이터를 처리 ---- ----------------------------------- [새싹교실/2015] [새싹교실/2015/의사양반]