U E D R , A S I H C RSS

새싹배움터05/첫번째배움터

새싹배움터05/첫번째배움터

주제

  • C Language

강사

학생


일시, 장소

  • 2005년 4월 4일

강의 내용

들어가기

{{|
안녕하세요. 이번에 C세미나를 하게된 03학번 강희경입니다. 이 세미나에서는 여러분들이 지난 한달동안 익혔고 앞으로도 익혀갈 C언어 프로그래밍을 다룰 것입니다.

본격적인 세미나에 들어가기 앞서 여러분들에게 질문 하나 하겠습니다.(한 명 고른다.)
프로그래밍이란 무엇이라고 생각하십니까?(대답을 듣는다.)

C프로그래밍 수업을 듣기 시작한 시점에서 여러분들은 모두 프로그래머입니다. 그러면 자신이 지금 무엇을 하고 있는가 정도는 알아야겠지요? 정답은 없습니다. 각자 각자 다른거죠. 저는 프로그래밍을 창조라고 생각합니다. 컴퓨터공학과에 들어와서 2년간 프로그래밍을 했고 참 많은 것들을 창조했습니다. 학교 과제로 포토샵도 만들었었고 각종 게임도 만들었었습니다. 최근에는 바퀴벌레도 만들었었고 오늘 아침에는 자판기도 만들었습니다. 오늘 아침에 급조한 자판기를 조금 있다가 선보일 예정입니다.
|}}

간단한 C언어의 역사

Dennis Ritchie of Bell Labs created the C Programming Language in 1971-1972 as he and Ken Thompson worked together to design the UNIX operating system.

간단한 문법

{{|
언어란 사람들끼리 서로 의사소통을 하기 위해 사용되는 것입니다. 프로그래밍 언어는 컴퓨터끼리의 또는 사람과 컴퓨터의 의사소통을 의해 사용됩니다. 하지만 컴퓨터가 프로그래밍 언어를 이해하는 것은 아닙니다. 컴퓨터는 01001과 같은 0과 1의 조합만을 인식 할 수 있습니다. 그런 조합을 기계가 이해하는 언어라고 하여 기계어라고 합니다. 하지만 사람이 일일이 0과 1을 찍어줄 수 없는 일!! 그렇기 때문에 만들어진 것이 프로그래밍 언어이고 컴파일러입니다. 사람은 프로그래밍 언어로 표현하고자 하는 바를 표현하고 컴파일러가 그 내용을 기계가 알아들을 수 있는 기계어로 번역해주는 것입니다. 결론은 프로그래밍 언어를 알면 컴퓨터과 대화가 가능하다는 것입니다.

이제 본격적으로 C언어를 배워봅시다.

변수, 상수(variable, constant): 프로그램이 실행되는 동안 값을 저장할 수 있는 영역입니다. y = 2x + 3이라는 수식이 있으면 x, y가 변수이고 2와 3이 상수가 됩니다.

변수는 사용 전에 변수선언을 먼저 해야합니다. 메모리 배정 받기. 예약시스템.
|}}

예제1

{{|
예제를 하나 하나 칠판에 적어가며 소스 설명을 한다.
|}}
벤딩 머신
~cpp 
#include<stdio.h> 
 
int main(void){ 
        //변수 정의 
        const char beverage[3] = {'A', 'B', 'C'}; 
        const int beveragePrice[3] = {100, 200, 300}; 
        int beverageNumber; 
        int money; 
        
        do{ 
                printf("돈을 넣어 주세요. : "); 
                scanf("%d", &money); 
        }while(money <= 0); 
        for(beverageNumber = 0; beverageNumber < 3; beverageNumber++){ 
                printf("%d. %c : %d원\n", beverageNumber, beverage[beverageNumber], beveragePrice[beverageNumber]); 
        }  
        do{ 
                printf("음료수를 선택해주세요: "); 
                scanf("%d", &beverageNumber); 
        }while(beverageNumber < 0 || beverageNumber >=3); 
         
        printf("%c 음료수가 선택되었습니다\n", beverage[beverageNumber]); 
         
        if(money >= beveragePrice[beverageNumber]){ 
                money -= beveragePrice[beverageNumber]; 
                printf("%c 음료수가 나왔습니다.\n", beverage[beverageNumber]); 
        } 
 
        else{ 
                printf("금액이 부족합니다.\n"); 
        } 
 
        printf("%d원이 반환됩니다.\n", money);
        system("PAUSE"); 
        return 0; 
} 

함수

{{|
함수란 무엇인가? => function =>공대생 개그.
함수란 어떤 작업을 해주는 처리 단위이다.

함수선언을 해야한다.
함수선언을 함으로 이 프로그램에서 그 함수를 사용할 것이라는 내용을 컴파일러에게 알려주게된다.
만약 하지 않으면 컴파일러는 함수의 존재여부조차 모르게된다.

함수정의를 해야한다.

모듈화란 무엇인가?
모듈화는 "기능별"로 프로그램을 쪼개는 것이지요.

모듈화를 하는 이유?
컴퓨터를 예를 들어 모니터, 프린터, 키보드, 마우스등이 하나로 붙어있다면 마우스 하나가 고장나면 컴퓨터를 통체로 바꿔줘야 한다.

과제: 벤딩 머신 프로그램을 적절하게 모듈화 하여 4월 6일까지 위키에 업로드하거나 이승한에게 서면제출.
|}}

예제2

{{|
미완성된 모듈화된 벤딩머신
|}}
~cpp 
#include<stdio.h> 

int getMoney(); //돈 받기
int selecteBeverage(); //음료 선택
int isEnoughMoney(int aMoney, int aBeverageNumber); //돈이 충분한지 검사
void beverageOut(bool aEnough); //음료 내보내기
int calculateChange(int aMoney, int aprice); //거스름돈 계산
void changeOut(int aChange); //거스름돈 내보내기
 
int main(void){
	const char beverage[3] = {'A', 'B', 'C'};
	const int beveragePrice[3] = {100, 200, 300};
	
	int money = getMoney();
	int selectedBeverageNumber = selectBeverage();
	int selectedBeveragePrice = beveragePrice[selectedBeverageNumber];
	beverageOut(isEnoughMoney(money, selectedBeveragePrice));
	changeOut(calculateChange(money, selectedBeveragePrice));
	return 0;
}
int getMoney(){

}

int selecteBeverage(){

}

int isEnoughMoney(int aMoney, int aBeverageNumber){

}

void beverageOut(bool aEnough){

}

int calculateChange(int aMoney, int aprice){

}

void changeOut(int aChange){

}

엮어가기

  • 자료를 꼭 모아둡시다. - 임인택
  • 공부 열심히 합시다. - 윤성만
  • 벤딩머신 음료수 고를때 숫자말고 알파벳 입력하면 이상한글자가 무한 루프되어 나옵니다 음... 이건 어떻해야하나... - 조동영
    • 벌써 들켜버렸네 ㅋ. 예외처리를 해야되는데 어떤식으로 해야될지 고민이 많아서 그냥 안했거든...재동이형이 리팩토링 세미나하면서 해주면 되겠네 -강희경
      • 그런 예외 처리는 스스로 할 것!! --재동



Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2009-05-27 07:09:19
Processing time 0.0866 sec