/********************************************************************************
제작자: 신대용
제작일: 2005.05.09
제작시작시간: 오후 11시 57분
제작종료시간: 오후 11시 42분
알고넘어가야할것:제약조건, Identifier
********************************************************************************/
내일 저희과 1학년들의 2차 C언어 시험이 있어서 예상문제를 풀어서 애들한테 돌렸습니다.
뭐 물론 자세한 설명 위주로 풀어서 줬죠
그런데 애들이 참 재미있는 부분에서 난색을 표하더라고요^^,소스는 컴파일하면에러가 납니다. 애들이 공부하라고 일부러 ㅋㅋ
#include <stdio.h>
main(){
int count=0;
int tmp;
while(EOF != tmp=getchar()){
if( (tmp >= 'A' && tmp <= 'Z' ) || (tmp >= 'a' && tmp <='z') ) count++;
}
}
후배2: 오빠, 우리 count 랑 tmp같은거 안배웠어요!!!!
나:ㅡㅡ^
순간 "아~~~좌절이다" 라는 생각이 들더라고요-_-
잘 들으세요 씨언어에서 어떤 변수나 함수의 이름이 기능을 하는건 아니랍니다.
그냥 이름은 이름의 역활만 해요
그럼 오늘은 Identifier를 공부해볼까요?
Identifier
Identifier는 인식자라는 이름으로 번역이 많이 되어있는데요 그냥 이름이라고 생각하시는 편이 더 좋아요. Identifier를 알아보기전에 제약조건이란걸 알아볼까요?
그런데 컴퓨터에서는 뭐든지 정확하게 "정의"되어있어야해요^^ 그래서 제약 조건이 생긴답니다. 제약 조건이라는건 "반드시 이 정도는 만족해야한다 "라는 거예요
예로 제가 저일려면 사람이며 남자고 이름이 신대용이며 컴퓨터를 공부해 왔고 신상현 최은숙부모님께 태어난것 정도는 만족해야지 신대용으로 있을수있는거죠^^
Identifier의 단어뜻은 일반 영어 사전에서 찾아보면 안나오는경우가 많아요 ㅋ
인식자라고 번역이 많이 되는데 "구분,확인 하는데 쓰이는것"정도가 좋겠어요^^
눈썰미 좋은 분들은 이미 아셨겠지만 ID가 저 단어에서 온거랍니다.^^
ID는 다른 사람하고 나를 구분해주는거죠? 주민등록 번호같은거예요 ㅎ
반듯이 있어야하고, 다른것과 겹치면 안된답니다.
실생황에서 한반에 이름이 "윤지현"인 사람 2명이 있어요 "전지현"하고는 구분이 되지만 같은 윤지현끼리는 구분이 안가죠? 만약에 수학시간에 선생님이 "윤지현 나와서 이 문제 풀어봐" 그러면 "둘중에 누구요?"라고 하겠죠?
그런데 컴퓨터는 이렇게 누구를 불렀는데 2명이 나와서 이 둘중에 구분이 안가면 바로 에러가 난답니다. 사람 처럼 다시 "누구요?"라고 하지 않아요
int , char이런것도 identifier랍니다. 모든 이름은 다 identifier에요, 이름은 구분할려고있는거니까요^^ 명령어, 함수이름, 변수이름등등이 다 identifier랍니다^^
그래서 여러분이 프로그래밍을 할때 이름이 같은 변수가 있으면 안되는게 컴퓨터가 어떤 변수를 말하는건지 알수 없기 때문이예요. 함수가 이름이 a이고 변수이름이 a인건 괜찮지만 함수중에 이름이 a인게2개있고 변수중에 이름이 같은게 2개 있으면 안된답니다.
자 그럼 C언어에서 identifier의 제약조건을 볼까요?
1.처음글자에는 숫자가 올수없다
2.특수문자는 사용할수없다 _ 가능
3.32자 이상넘어가면 안된다.(넘어가도 되는데 32자 이상으로는 구분을 못해요)
4.중간에 공백이 올수없다.
5.예약어 (C언어에서 기본적으로 사용되는 것들 ex> for, while, if ,int 등 )
--2009년 5월 21일 5번 항목 추가 ^^님 제보 --
간단히 이 정도랍니다.
그래서
1adfas
a fsf
@afsf
<><af
fakjlf<>
?fsd/
이런것들은 이름으로 올수없어요^^
마지막 공백에 대한 이야기도 있죠? 이건 나중에 살펴 보도록 해요^^ 재미있을꺼예요
담에 뵈여
