3주차: 세 살 코딩버릇을 여든까지
- 배열, 포인터, 어드레스, 함수, Call-by-value, Call-by-reference, 구조체 -
이번 시간에 이건 꼭 해야 돼! (이거 궁서체다 강사 진지하다)
1. Wiki에 Ice breaking 및 진행 상황 정리.
2. Koistudy.net 과제 확인 및 빠른 복습 후 수업 진행
3. 코딩 Keyword 설명
4. 구글 협업 문서 만들어보기
1. 보기 좋은 코드의 중요성?
코딩을 하다 보면 자신의 코드를 다시 한번 점검해야 하는 경우가 꼭 생깁니다. 하지만 항상 문제가 생기죠. 이게 main문의 괄호(curly bracket : {} ) 인지 for문의 {} 인지 헷갈릴 때가 있죠? 이번 시간 이후에 한번 검색해보세요. 코딩 띄어쓰기, 괄호를 어떻게 붙여야 하는지에 대해서 말입니다. 꼭! 잊지 마세요. 중요하답니다.
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. 과제
컴퓨터 공학을 다니면서 우리와 관련된 것을 알아보는 것은 당연하겠죠?
컴퓨터 관련 자유주제에 대해 조사해오세요~! 구글 협업문서로 조를 이루어 해봅시다.
강사의 계정에 구글 협업 문서 만들기 -> 학생들의 계정 공유 등록 까지 마쳐봅시다.