갑자기 닭갈비가 먹고 싶어져서 춘천으로 출발.

(피자 먹고 싶어지면 이탈리아로 갈 기세.JPG)



청량리역(지상)

그저 덥다는 생각밖에는 안들었다.(..)





여행의 시작은 언제나 두근두근~



하늘이 심상치 않았다.





...................아니, 범상치 않았다.






도시에서 벗어나 이런 경치를 감상하는 것만해도 좋구나~ 라고 생각했다.






기차가 빠른건지, 하늘의 바람이 빠른건지,

구름이 계속 변했다.




다시 맑은(척 하는) 하늘.




뭉게뭉게뭉게구름



구름 아래쪽에서 미사일 같은게 떨어지는 망상 같은것도 해보고<-
(미사일 같은걸 끼얹나?)







호수! 호수!! 호수가 나왔다!!!

물, 산, 하늘을 한 사진안에 담을 수 있어!!!








하지만 금방 지나가버렸다(...........)










호수에 산과 하늘이 비치고 있어!!0ㅂ0)!!!!!






김유정 역. 'ㅅ')



남춘천역 도착. 날씨가 끝내줌..




여행의 목적인 닭갈비 먹으러........... 명동 닭갈비 골목. 이 명동은 그 명동이 아니고...



더 이상의 자세한 사진은 생략한다.

정말 맛있었음. 서울에 있는 춘천 닭갈비도 맛있긴 맛있지만,

역시 본고장 이라는 느낌이 있어서인지, 양념이 정말 맛있게 잘 되어있었다.



닭갈비 골목의 약도.

개인적으로는 5번 가게를 추천(이름은 기억안나고 사진에도 잘 안보이고ㅠㅠ)

이유는 맛있고, 음료수가 무한이라서!!(........)





아, 태양 함부로 찍으면 안되는데, 

너무 끝내주는 구름이라 그만 찍어버렸다.







'사진' 카테고리의 다른 글

071101 학교 야경  (0) 2010.08.21
100812 춘천여행 part 2  (0) 2010.08.12
100727 월드컵공원역  (0) 2010.08.12
100709 용마산 + 아차산  (0) 2010.07.14
100708 용마산 + 아차산  (0) 2010.07.14

인셉션을 보러 갔던 날.










엽기적인 그녀에서 두 주인공이 교복으로 갈아입고 나왔던 그 화장실.

그 장면때문에 나는 이 나이 먹고도 교복 데이트의 로망을 버리지 못하고 있(........)


'사진' 카테고리의 다른 글

100812 춘천여행 part 2  (0) 2010.08.12
100812 춘천여행 part 1  (0) 2010.08.12
100709 용마산 + 아차산  (0) 2010.07.14
100708 용마산 + 아차산  (0) 2010.07.14
100707 아차산 + 용마산  (0) 2010.07.14

 * 변수 이름 규칙
- 변수 이름에는 영문자, 숫자, 밑줄(_) 만을 사용할 수 있다.
- 변수 이름의 첫 문자로 숫자는 올 수 없다.
- 변수 이름의 첫 문자로 밑줄이 두 개 오는 것은 컴파일러와 리소스가 사용하는것으로 예약 되어있다.
- 대문자와 소문자를 구별한다.
- 키워드는 변수 이름으로 사용할 수 없다.
- 이름의 길이는 제한이 없다. (단, ANSI C에서는 63번째 문자까지만 구별한다.)

 * 정수형 변수 short, int, long
- short형은 최소한 16비트 폭을 가진다.
- int형은 최소한 short만큼은 크다.
- long형은 최소한 32비트 폭을 가지며, 최소한 int만큼은 크다.

- sizeof 연산자를 데이터형 이름에 사용할 때에는 괄호를 사용해야 하지만, 변수 이름에 사용할 때에는 괄호가 없어도 상관없다.

 *진수의 표현
- 8진수는 0을, 16진수는 0x 또는 0X를 붙여서 10진수와 구별한다.
- cout은 기본으로 10진수로 출력하며, dec/oct/hex 조정자를 제공한다. 조정자로 인하여 바뀐 출력 형태는 다시 조정자를 쓸 때까지 그대로 유지된다.

- cout은 char형 변수를 자동으로 문자로 출력한다. 하지만 char형 변수 자체의 값은 정수이기 때문에, 연산을 할 수 있다. char형 변수에 저장되어 있는 정수를 보려면 printf를 사용하거나 int형에 대입시킨 다음 출력하면 된다.

- 1바이트로 표현할 수 없는 문자 세트를 처리할 때, 데이터 타입으로 wchar_t 를 쓰고, 해당 문자 앞(따옴표 앞)에 L을 붙인다.

- 키워드 const를 사용하여 변수를 상수로 만들수 있고, 이것은 안정적인 프로그래밍을 가능하게 한다.

- 부동소수형 변수는 소수부가 있는 수, 매우 큰 수, 매우 작은 수를 나타낼 수 있다.

- 부동소수형 변수의 연산은 정수형 연산보다 느리고, 정밀도가 떨어진다.

- 정수형과 부동소수형을 합쳐서 산술형 이라고 부른다.

 * 산술 연산자
- 하나의 피연산자에 두 개의 연산자가 앞,뒤로 있을 경우, 우선순위가 높은 연산자가 먼저 연산된다.
 만약 우선순위가 같은 연산자가 있으면, 결합 방향 규칙에 따라 순서가 정해진다.
- %연산자는 피연산자로 정수만 올 수 있다.
- /연산자는 피연산자 모두 정수이면 정수 나눗셈을, 둘 중 하나라도 소수이면 소수 나눗셈을 한다.

 * 데이터형 변환
- 대입 명령문에서 대입되는 값은 해당 변수의 타입으로 변환된다.
- 강제 형 변환에서는 소수부의 손실이나 값의 변조가 일어날 수 있다.



'학부 전공 > C++' 카테고리의 다른 글

2. C++ 시작하기  (0) 2010.07.19
1. C++ 첫걸음  (0) 2010.07.19

- 일반적으로 main함수는 컴파일러가 프로그램에 추가하는 시동 코드에 의해 호출된다.

- 함수에서 리턴형을 void로 할 경우, C++ 표준이 아니므로 어떤 시스템에서는 동작하지 않을 수 있다.

- 컴파일러가 리턴 명령문을 만나지 못한 채 main()의 끝에 도달하면 자동으로 return 0; 과 동일하게 동작한다.

 * Name Space
- name space는 C++의 새로운 기능이다. 이것은 프로그램을 작성할 때, 같은 이름의 함수가 존재할 때, 선택할 수 있게 한다.
using namespace std; 
이것은 C++ 컴파일러의 표준 구성 요소를 쓸 수 있게 하는 것이다.

- using 지시자는 필요한 것들만 개별적으로 선언하여 쓸 수도 있다.
using std::cout;
using std::cin;
using std::endl;

 * 조정자(manipulator) endl
- cout에 대해 특수한 의미를 지니는 키워드를 조정자라고 부른다.
- endl은 개행문자인 \n과 같은 동작을 한다.

 * 소스 코드의 모양
- 코드에서 더 이상 분리할 수 없는 기본 요소를 토큰(token)이라 한다.
- 토큰들끼리는 빈칸, 탭, 캐리지 리턴에 의하여 구분되는데 이 세 가지를 white space라 한다.
- white space는 토큰 사이사이에 얼마든지 들어가도 되지만, 코드의 가독성을 생각해야 한다.

 * 명령문
- C에서는 변수의 선언을 함수의 시작 위치에 선언해야 하지만, C++에서는 사용되기 전이라면 어디에서든지 선언해도 된다. 
- cout/cin은 연산자 오버로딩 된 객체이기 때문에, 어떤 데이터형이든지 구별않고 출력/입력할 수 있다.

- 클래스는 데이터 형식의 모든 속성을 서술한 것이고, 객체는 그 서술에 따라 실제로 생성된 구체물이다.

- C++ 프로그램은 함수라고 부르는 모듈들로 이루어진다.



'학부 전공 > C++' 카테고리의 다른 글

3. 데이터 처리  (0) 2010.07.21
1. C++ 첫걸음  (0) 2010.07.19


- C++은 절차적 언어 방식, 객체 지향 언어 방식, 일반화 프로그래밍 방식을 하나로 결합한다.

- FORTRAN이나 BASIC은 초기의 절차적 언어이다. 프로그램이 스파게티처럼 꼬여있어서 코드를 파악하고 수정하는 것이 어려웠다.
- C언어에서는 구조적 프로그래밍 언어이다. 정형화된 분기문을 사용하도록 되어있었고, 하향식 설계(모듈화)를 지향했다. 
- C++ 은 객체 지향 프로그래밍 언어이다. 클래스를 사용하여 알고리즘보다 데이터를 더 중시한다.

 *객체 지향 프로그래밍(Object-Oriented Programming)
- 절차적 프로그래밍은 알고리즘을 강조하지만, 객체 지향 프로그래밍은 데이터를 강조한다.
- 문제를 언어의 절차적 방식에 끼워맞추지 않고, 언어 자체를 문제에 맞춰서 설계한다.
- 클래스는 그것을 위한 새로운 데이터형이고, 객체는 클래스에 의해 만들어지는 특정한 구조이다.
- 클래스는 객체를 나타내는 데이터 부분과, 데이터를 대상을 수행할 수 있는 동작 부분으로 정의된다.

- OOP는 코드를 쉽게 재활용 할 수 있고, 정보를 은닉할 수 있다. 문제를 쪼개는 하향식이 아니라, 클래스부터 시작하여 문제를 완성해 나가는 상향식 프로그래밍이다.

- 프로그램 코드를 수정하지 않고 다시 컴파일하여 새로운 플랫폼에서 프로그램이 잘 작동한다면, 그 프로그램은 이식성이 있다고 말한다.

- 프로그램의 마지막에 cin.get();을 넣으면 실행시에 사용자가 enter를 누르기를 기다린다.






'학부 전공 > C++' 카테고리의 다른 글

3. 데이터 처리  (0) 2010.07.21
2. C++ 시작하기  (0) 2010.07.19

27-1 프로그래밍의 모듈화


- 일반적인 소프트웨어 공학에서 이야기하는 모듈은 하나의 파일이 될 수도 있고, 하나의 함수가 될 수도 있다.

extern int i;
- 키워드 extern은 전역 변수가 다른 파일에 이미 선언되어 있음을 알려준다.

- 키워드 static은 전역 변수가 다른 파일에서 사용될 수 없게 한다.

-링크는 파일간에 접근하는 변수가 어디에 있는지, 호출하는 함수가 어디에 있는지 연결해주는 작업이다.


27-2 헤더 파일의 구현과 유용성

- 헤더 파일은 #include 전처리기 지시가에 의해서 파일 내에 그대로 포함된다.

- < >을 사용하면 표준 디렉토리에서 표준 헤더 파일을 포함시킨다.
- " "을 사용하면 디렉토리를 직접 지정하는 것이 가능하다.(파일 이름만 적으면 현재 작업 디렉토리에서 찾는다.)

- 헤더 파일을 사용하면 파일들 사이의 변수와 함수에 extern 선언을 하지 않아도 된다.


27-3 조건부 컴파일

#if 조건1
내용1
#elif 조건2
내용2
#else
내용3
#endif

- 위의 구문으로 컴파일 할 대상을 지정할 수 있다.


#ifndef head
#define head

#endif

- 헤더 파일에 위의 구문이 삽입되어 있으면 다른 파일에서 중복 포함되더라도 한번만 포함시킨다.



'학부 전공 > C' 카테고리의 다른 글

26. 매크로와 전처리기  (0) 2010.07.16
25. 메모리 관리와 동적 할당  (0) 2010.07.16
24. 파일 입출력  (0) 2010.07.16
23. 구조체와 사용자 정의 자료형 2  (0) 2010.07.15
22. 구조체와 사용자 정의 자료형  (0) 2010.07.15

26-1 전처리기에 의한 매크로 처리

- 일반적으로 말하는 컴파일은 전처리 과정이 포함되어 있다.

- 전처리 과정은 소스코드중 #이 붙은 문장을 처리하는 과정이다.

- #이 붙은 문장을 전처리기 지시자 라고 한다.

- #define이 붙은 문장은 단순 치환 작업을 요청할 때 사용하는 지시자이다.

#define PI 3.14
- PI는 매크로 상수이고, 3.14는 대체 리스트 라고 한다.

- 이미 선언된 매크로를 다른 매크로 선언에서 사용할 수 있다.
- 대체 리스트 영역에서는 공백도 존재할 수 있다.


26-2 매크로를 이용한 함수

#define SQUARE(x) x*x
- 위와 같이 선언된 SQUARE(x)를 매크로 함수 라고 한다.

- 매크로 함수는 자료형에 독립적이며, 실행 속도가 빠르다.

- 함수의 크기가 작아야 매크로 함수로 쓰기에 적당하다.

- 단순치환이므로 괄호를 사용하지 않을 경우, 연산자 우선순위에 의해 착오가 생길 수 있다.

- 매크로에 의한 치환은 문자열 내에서는 이루어지지 않는다.
- 대체 리스트의 앞에 #을 붙이면 문자열로 치환된다.

- 토큰이란 컴파일러가 인식하는 의미를 지니는 문자나 문자열의 최소 단위 이다.

- ##은 토큰을 결합할 때 사용한다.

 * 표준 매크로
_FILE_ : 현재 소스 코드의 파일명을 나타내는 문자열
_TIME_ : 컴파일 시각을 "시: 분: 초"의 형태로 나타내는 문자열
_DATE_ : 컴파일 날짜를 "년 월 일"의 형태로 나타내는 문자열
_LINE_ : 현재 처리중인 소스파일의 행 번호를 나타내는 문자열


'학부 전공 > C' 카테고리의 다른 글

27. 모듈화 프로그래밍  (0) 2010.07.16
25. 메모리 관리와 동적 할당  (0) 2010.07.16
24. 파일 입출력  (0) 2010.07.16
23. 구조체와 사용자 정의 자료형 2  (0) 2010.07.15
22. 구조체와 사용자 정의 자료형  (0) 2010.07.15


25-1 C언어의 메모리 구조

- 프로그램이 실행되면 메모리에 데이터영역, 스택영역, 힙영역이 생긴다.

- 데이터 영역 : 전역 변수와 static변수가 저장 된다. 프로그램이 종료될 때까지 유지된다.
- 스택 영역 : 지역변수와 매개 변수가 저장된다. 해당하는 함수가 종료될 때까지 유지된다.
- 힙 영역 : 프로그래머가 관리하는 메모리 영역이다. 

- 배열 선언시 상수를 써야 하는 이유 : 스택과 데이터 영역에 할당될 메모리의 크기는 컴파일타임에 결정되어야 한다.

- 할당해야 할 메모리의 크기를 런타임에 결정해야 하는 경우, 힙 영역을 사용한다.


25-2 메모리 동적 할당

- 힙에 메모리를 할당하는 것을 동적 할당이라 한다.

void* malloc(size_t size);
- size만큼 메모리를 할당한다. 실패하면 NULL포인터를 리턴한다.

- 힙에 할당된 메모리 공간에는 포인터를 사용해서 접근해야 한다.

int* i = (int*)malloc(sizeof(int));
- void포인터로 리턴하고 있기 때문에 사용하기 전에 위처럼 형 변환을 해주어야 한다.

void free(void* ptr);
-해당하는 메모리 공간을 해제한다.

void *calloc(size_t elt_count, size_t elt_size);
- elt_size 크기의 변수를 elt_count 개수만큼 할당.



'학부 전공 > C' 카테고리의 다른 글

27. 모듈화 프로그래밍  (0) 2010.07.16
26. 매크로와 전처리기  (0) 2010.07.16
24. 파일 입출력  (0) 2010.07.16
23. 구조체와 사용자 정의 자료형 2  (0) 2010.07.15
22. 구조체와 사용자 정의 자료형  (0) 2010.07.15

24-1 파일의 open과 close

- 파일을 open한다는 것은 파일과 데이터를 주고 받을 수 있는 스트림을 생성한다는 의미이다.

FILE* fopen(const char* filename, const char* mode)

- 두번째 인자인 mode는 open하는 파일의 특징 및 용도를 결정한다.

 * 파일 접근 모드
- r : 읽기 가능
- w : 쓰기 가능, 파일이 존재하면 지워버리고 새로 쓴다.
- a : 쓰기 가능, 파일이 존재하면 그 뒤에 추가해서 쓴다.
- r+ : 읽고 쓰기 가능, 파일이 존재하면 그 위에 덮어 쓴다.
- w+ : 읽고 쓰기 가능, 파일이 존재하면 지워버리고 새로 쓴다.
- a+ : 읽고 쓰기 가능, 파일이 존재하면 그 뒤에 추가해서 쓴다.

 * 데이터 입출력 모드
- t : 텍스트 모드
- b : 2진 모드

- Carriage Return : 특수문자 \r로 표현되며, 커서의 위치를 줄 맨 앞으로 이동시킨다.
- Line Feed : 특수문자 \n으로 표현되며, 커서를 한 줄 아래로 이동시킨다.

- C의 소스코드에서의 \n은 텍스트 파일상에서 \r\n과 같은 의미이다. 텍스트 모드에서는 이 변환이 일어나지만 2진 모드에서는 일어나지 않는다.

- fopen함수의 리턴값은 파일 포인터이다.


int fclose(FILE * stream);
- 파일을 닫는다. 정상적으로 동작하면 0을 리턴한다.



24-2 파일 입출력 함수

- 문자,문자열 입출력 함수를 파일 입출력에 사용한다. 사용하는 스트림을 파일 포인터로 쓸 뿐이다.

int fprintf(FILE* stream, const char* format, ....)
int fscanf(FILE* stream, const char* format, ...)
-형식 지정 입출력 함수를 사용할 수 있다.

- 파일 포인터 내에는 파일 위치 지시자가 존재하여 어디까지 읽었는지/썼는지 알 수 있다.


24-3 파일의 끝

- 파일의 끝에서 fgetc, fscanf는 -1을, fgets는 0을 리턴한다.

- 함수 fgetc의 리턴 값을 char형에 저장할 경우, 숫자 -1과 EOF를 구별할 수 없게 된다. 따라서 int형에 저장해야한다.

int feof(FILE *stream);
- 파일의 끝에 도달한 경우 0이 아닌 값을 리턴한다.


24-4 Random Access 파일 입출력

- 파일 위치 지시자를 임의의 위치로 이동시킬 수 있다.

int fseek(FILE *stream, long offset, int wherefrom);
- 성공했을 경우 0을 리턴한다.
- wherefrom의 값은 0/1/2를 가지고, 각각 맨 앞/현재/맨 뒤를 의미한다.



23-1 구조체 변수의 전달과 리턴

- 함수 호출 시 구조체 변수를 인자로 전달하거나 리턴하는 것은 기본 자료형 변수로 하는 것과 동일하다.

- 구조체 변수도 값에 의한 전달, 참조에 의한 전달이 존재한다.


23-2 구조체의 유용함

- 구조체를 사용하면 자료를 관리하기가 쉬워진다.

- 구조체를 사용하면 함수의 리턴 값을 여러개 받을 수 있다.


23-3 구조체를 포함하는 구조체

- 구조체를 포함하는 구조체를 중첩된 구조체라 한다.

- 중첩된 구조체의 선언과 초기화는 일반적인 구조체와 동일하다.


23-4 새로운 자료형

- typedef 라는 키워드는 자료형에 새로운 이름을 붙이기 위해 사용된다.

struct position
{
int x;
int y;
};
typedef struct position POSITION;


typedef struct position
{
int x;
int y;
}POSITION;


23-5 공용체

-공용체는 서로 다른 자료형의 변수를 하나의 메모리 공간에서 사용한다.

-구조체의 크기는 멤버의 크기의 총 합이지만, 공용체의 크기는 가장 큰 멤버의 크기이다.

-공용체는 하나의 멤버만 의미있게 사용할 수 있다.


23-6 열거형

선언 : enum day {MON, TUE, WED, THU, FRI, SAT, SUN};

사용 : enum day today = MON;

- 변수 today는 열거형에 정의된 7가지 값들 중 하나를 가질수 있다. 각각의 값은 상수인데, 따로 값을 지정해주지 않으면 0부터 시작해서 자동으로 정해진다.



'학부 전공 > C' 카테고리의 다른 글

25. 메모리 관리와 동적 할당  (0) 2010.07.16
24. 파일 입출력  (0) 2010.07.16
22. 구조체와 사용자 정의 자료형  (0) 2010.07.15
21. 문자와 문자열 처리 함수  (0) 2010.07.15
19. 함수 포인터와 void 포인터  (0) 2010.07.14

+ Recent posts