2.1.2. 수업내용 ¶
1. 개발환경 구축
Virtual Box를 이용하여 우분투를 설치하는 방법.
virtual box를 설치한다.
virtual box의 새로만들기에서 우분투 가상머신을 새로 만든다.(설정은 기본설정이면 되되 메모리 용량은 1024MB로 한다)
만든 가상머신을 실행시키면 처음실행 마법사에서 설치미디어 선택 화면에서 우분투 이미지를 마운트 시킨다.
우분투를 설치한다.
Virtual Box를 이용하여 우분투를 설치하는 방법.
virtual box를 설치한다.
virtual box의 새로만들기에서 우분투 가상머신을 새로 만든다.(설정은 기본설정이면 되되 메모리 용량은 1024MB로 한다)
만든 가상머신을 실행시키면 처음실행 마법사에서 설치미디어 선택 화면에서 우분투 이미지를 마운트 시킨다.
우분투를 설치한다.
2. VS2010사용방법
프로젝트를 만든다.(빈 프로젝트 체크박스에 체크를 해야 한다)
파일-새로만들기-파일에서 C++파일을 선택하되 이름 끝에 .c를 붙여서 C파일로 만든다.(C와 CPP는 약간 문법적인 부분이 다르다.)
프로젝트를 만든다.(빈 프로젝트 체크박스에 체크를 해야 한다)
파일-새로만들기-파일에서 C++파일을 선택하되 이름 끝에 .c를 붙여서 C파일로 만든다.(C와 CPP는 약간 문법적인 부분이 다르다.)
2.2.1. 수업내용 ¶
1. 함수의 선언
2. 전역변수와 지역변수
3. 분기문
2. 전역변수와 지역변수
3. 분기문
1. 함수의 선언
함수는 분리 해 낼 수 있다.
자기가 만들고 싶은 함수를 정의 해 주면 된다.
예를들어
int myfunction(int a, int b); 라고 하면 int 자료형을 반환하며 int자료형 2개를 파라미터로 하는 myfuction이라는 함수를 정의한 것이다.
그 뒤 중괄호를 열고 함수의 몸체를 정의 해 주면 된다.
함수는 분리 해 낼 수 있다.
자기가 만들고 싶은 함수를 정의 해 주면 된다.
예를들어
int myfunction(int a, int b); 라고 하면 int 자료형을 반환하며 int자료형 2개를 파라미터로 하는 myfuction이라는 함수를 정의한 것이다.
그 뒤 중괄호를 열고 함수의 몸체를 정의 해 주면 된다.
#include <stdio.h> int myfunc(int num1, int num2){ return num1+ num2; } int main(void){ int a= 2, b= 3; int c= myfunc(a, b); printf("%d", c); return 0; }
위 코드에서 보면 myfunc라는 함수는 int자료형 자료 2개를 각각 num1과 num2라는 이름으로 넘겨 받아 두개를 더해서 반환한다.
int c= myfunc(a, b);
라는 코드에서 myfunc함수를 호출하며 a,b를 파라미터로 넘겨주고 있다.
그럼 myfunc에선 num1에 a의 값을, num2에 b의 값을 넘겨받아 두 값을 더해 그 더한 값을 반환한다.
반환한 값은 c에 들어 간다.
결과적으로 c에는 5가 들어가게 된다.
int c= myfunc(a, b);
라는 코드에서 myfunc함수를 호출하며 a,b를 파라미터로 넘겨주고 있다.
그럼 myfunc에선 num1에 a의 값을, num2에 b의 값을 넘겨받아 두 값을 더해 그 더한 값을 반환한다.
반환한 값은 c에 들어 간다.
결과적으로 c에는 5가 들어가게 된다.
함수는 선언과 구현을 따로 분리 할 수도 있다.
#include <stdio.h> int myfunc(int num1, int num2); int main(void){ int a= 2, b= 3; int c= myfunc(a, b); printf("%d", c); return 0; } int myfunc(int num1, int num2){ return num1+ num2; }
함수의 선언은 그 함수를 호출하는 코드보다 위에 있어야 한다. 그렇기 때문에 위처럼 함수의 선언만 해놓고 실제 구현은 아래에다가 해놓는 경우가 많다.
int myfunc(int num1, int num2);는 myfunc라는 함수를 만들겠다고 선언만 해 놓은 것이다.
밑에
int myfunc(int num1, int num2){
라는 구문이 없으면 컴파일러는 함수의 구현이 없기 때문에 에러를 띄울 것이다.
int myfunc(int num1, int num2);는 myfunc라는 함수를 만들겠다고 선언만 해 놓은 것이다.
밑에
int myfunc(int num1, int num2){
return num1+ num2;
}라는 구문이 없으면 컴파일러는 함수의 구현이 없기 때문에 에러를 띄울 것이다.
2. 지역변수와 전역변수
지역변수란 함수 내에서 선언해 놓은 변수이며 그 함수 안에서만 유효하다.
전역변수란 함수 밖에서 선언한 변수이며 그 파일 전체에서 유효하다.
같은 이름으로 지역변수와 전역변수가 있을경우 지역변수를 우선으로 한다.
전역변수란 함수 밖에서 선언한 변수이며 그 파일 전체에서 유효하다.
같은 이름으로 지역변수와 전역변수가 있을경우 지역변수를 우선으로 한다.
#include <stdio.h> int num1= 6; int myfunc(int num1, int num2); int main(void){ int a= 2, b= 3; int c= myfunc(a, b); printf("%d", c); return 0; } int myfunc(int num1, int num2){ return num1+ num2; }
위 코드에서 num1이란 전역변수를 선언해 놓고 그 안에 6을 넣어 놓았다.
그리고 myfunc에선 num1과 num2를 더하는 작업을 하는데 myfunc에도 파라미터로 넘어온 num1이라는 변수가 있다.
이럴경우 전역변수보다 지역변수를 우선시 하여 6+3이 아닌 2+3을 하게 된다.
그리고 myfunc에선 num1과 num2를 더하는 작업을 하는데 myfunc에도 파라미터로 넘어온 num1이라는 변수가 있다.
이럴경우 전역변수보다 지역변수를 우선시 하여 6+3이 아닌 2+3을 하게 된다.
*전역변수는 이왕이변 쓰지 않는 것이 바람직하다.
3. 분기문
분기문은 if else, switch로 이루어 진다
아직 if문밖에 배우지 않았다.
if문은 if()에서 괄호 안이 true면 실행을 한다.
분기문은 if else, switch로 이루어 진다
아직 if문밖에 배우지 않았다.
if문은 if()에서 괄호 안이 true면 실행을 한다.
#include <stdio.h> int myfunc(int num1, int num2); int main(void){ int a= 2, b= 3; int c=0; if(a== 2){ c= myfunc(a, b); } printf("%d", c); return 0; } int myfunc(int num1, int num2){ return num1+ num2; }
if(a== 2)라는 문장에서 a의 값으로 참과 거짓을 판별한다.
a에는 2가 들어가 있으므로 ()안의 값이 true가 되서 c= myfunc(a, b)를 실행한다.
참과 거짓에 대해서는 보통 0을 거짓으로 하며 1을 참으로 간주한다. (사실 0아닌값은 모두 참으로 간주한다)
만약 위 코드에서 if(1)이라고 해놓으면 c= myfunc(a, b)이 구문은 무조건 실행이 될 것이다.
a에는 2가 들어가 있으므로 ()안의 값이 true가 되서 c= myfunc(a, b)를 실행한다.
참과 거짓에 대해서는 보통 0을 거짓으로 하며 1을 참으로 간주한다. (사실 0아닌값은 모두 참으로 간주한다)
만약 위 코드에서 if(1)이라고 해놓으면 c= myfunc(a, b)이 구문은 무조건 실행이 될 것이다.
2.2.2. 과제 ¶
다음 코드 안을 채워 넣어서 계산기 프로그램을 완성하세요
order에 1을 입력받으면 add함수를 호출해 두 수를 더하고
order에 2를 입력받으면 sub함수를 호출해 두 수를 뺍니다.
그 결과값을 c에 저장한수 출력을 합니다.
order에 1을 입력받으면 add함수를 호출해 두 수를 더하고
order에 2를 입력받으면 sub함수를 호출해 두 수를 뺍니다.
그 결과값을 c에 저장한수 출력을 합니다.
#include <stdio.h> int add(/*채워 넣을곳*/){ /*채워 넣을곳*/ } int sub(/*채워 넣을곳*/){ /*채워 넣을곳*/ } int main(){ int order; int a, b, c; scanf("%d",&order); scanf("%d%d",&a, &b); if(/*채워 넣을곳*/){ c= add(a, b); } if(/*채워 넣을곳*/){ c= sub(a, b); } printf("%d", c); return 0; }
2.2.3. 후기 ¶
후기좀 써주라 ㅜㅜ -이민규
어쨋든 다음 수업때부터 진짜 프로그래밍을 한다는 느낌을 받을 수 있을 거에요 -이민규
어쨋든 다음 수업때부터 진짜 프로그래밍을 한다는 느낌을 받을 수 있을 거에요 -이민규
오늘은 뭔가 갑자기 많이 배운 듯한 느낌이었습니다. ㅠㅠ 손이 안나가네요...-김현기
2.3.2. 과제 ¶
별을 다음과 같이 출력 하세요
1.
1.
*** ** * ** ***2.
******* ***** *** *3.
* * * * * * * * * * * * * * * * * * * * *4.
********** * **** * * **** * * **** * **********5.
********* **** **** *** *** ** ** * * ** ** *** *** **** **** *********HELL.
* *** ***** ************* *********** ********* ******* *** *** ** ** * *