3주차: 세 살 코딩버릇을 여든까지
- 배열, 포인터, 어드레스, 함수, Call-by-value, Call-by-reference, 구조체 -
이번 시간에 이건 꼭 해야 돼! (이거 궁서체다 강사 진지하다)
1. Wiki에 Ice breaking 및 진행 상황 정리.
2. Koistudy.net 과제 확인 및 빠른 복습 후 수업 진행
3. 코딩 Keyword 설명
4. 구글 협업 문서 만들어보기

1. 보기 좋은 코드의 중요성?
코딩을 하다 보면 자신의 코드를 다시 한번 점검해야 하는 경우가 꼭 생깁니다. 하지만 항상 문제가 생기죠. 이게 main문의 괄호(curly bracket : {} ) 인지 for문의 {} 인지 헷갈릴 때가 있죠? 이번 시간 이후에 한번 검색해보세요. 코딩 띄어쓰기, 괄호를 어떻게 붙여야 하는지에 대해서 말입니다. 꼭! 잊지 마세요. 중요하답니다.

유지보수가 어렵게 코딩 하는 방법(이렇게 하진 맙시다) 15페이지까지.
http://www.hanb.co.kr/events/eventview.html?event_id=freebook

2. 코딩 실습
#include<stdio.h>
#include<string.h>
typedef struct _CALORIE{
	char name[40];
	float value;
}CALORIE;
int calregist(CALORIE *, int);
float calcalc(CALORIE *, int);
int main(){
	CALORIE cal[500] = { {"쌀류", 150.0}, {"짜장면", 57.1}, {"국수",133.3}, {"우동",100.0}, {"소면",133.3}, {"식빵", 250.0}};
	int cal_num = 6;
	int mode =0;
	printf("칼로리 계산기\n");
	while(1){
		printf("등록은 1, 계산은 2, 종료는 0을 입력하세요 : ");
		scanf("%d", &mode);
		if(mode == 0) break;
		else if(mode == 1) cal_num = calregist(cal, cal_num);
		else if(mode == 2) printf("총칼로리 : %6.2fkcal\n\n", calcalc(cal, cal_num));
	}
	return 0;
}
int calregist(CALORIE *pcal, int num){
		printf("식품명을 입력하세요 : ");
		scanf("%s", (pcal+num)->name);
		printf("그 식품의 칼로리를 입력하세요[kcal/100g] : ");
		scanf("%f", &(pcal+num)->value);
		printf("등록되었습니다.\n\n");
		return num+1;
}
float calcalc(CALORIE *pcal, int num){
	char name[40];
	float gram = 0;
	float totalcal = 0.0;
	int i;
	printf("-- 식품명 일람 -------------\n");
	for(i = 0; i<num;i++)
		printf("%s\t", (pcal+i)->name);
	printf("\n----------------------------------------\n");
	while(1){
		printf("식품명(end를 입력하면 계산합니다.) : ");
		scanf("%s", name);
		if(strcmp(name, "end") == 0)
			break;
		printf("그램 수 : ");
		scanf("%f", & gram);
		for(i=0;i<num;i++){
			if(strcmp(name, (pcal+i)->name) == 0){
				totalcal += (pcal+i)->value * gram /100.0;
				break;
			}
		}
	}
	return totalcal;
}	
3. 코딩 KeyWord (선생님들께 질문해보세요)
3.1 함수(function)는 뭐고. 왜 생겼는가? 쓰면 좋은 점은? 함수의 범위(Scope)란?
3.2 같은 타입(Type)의 변수를 한꺼번에 관리해주는 배열(array)란?
3.3 메모리 주소(address)와 변수의 메모리 할당. 그리고 *포인터 (pointer)
3.4 Call-by-value, Call-by-reference.? 무엇이 다른가?
3.5 자기자신을 부르는 재귀 함수?
3.6 난 나만의 Type을 만들겠어 구조체(struct)와 typedef!
.
모르는 것이 생겼을 때
C Library reference Guide http://www.acm.uiuc.edu/webmonkeys/book/c_guide/
WinAPI http://winapi.co.kr/ 를 찾아보시는 것을 항상 추천 드립니다.

4. 과제
컴퓨터 공학을 다니면서 우리와 관련된 것을 알아보는 것은 당연하겠죠?
컴퓨터 관련 자유주제에 대해 조사해오세요~! 구글 협업문서로 조를 이루어 해봅시다.
강사의 계정에 구글 협업 문서 만들기 -> 학생들의 계정 공유 등록 까지 마쳐봅시다.

새싹교실/2012/새싹교실강사교육
Retrieved from http://wiki.zeropage.org/wiki.php/새싹교실/2012/새싹교실강사교육/3주차
last modified 2021-02-07 05:29:45