Upload
yeonah-ki
View
405
Download
0
Embed Size (px)
Citation preview
게임프로그래밍입문
기연아
printf()의 활용
게임프로그래밍
printf()의 활용
printf()는 화면(모니터)에 무언가를 보여주는 역할을 함
printf(“hello world!”); hello world!
printf(“100”);printf(“%d”, 100);
10090
숫자?문자?숫자?문자?
printf()의 기본 활용
결과 확인해보기
#include <stdio.h>
int main(){
printf(“%d %d \n”, 100, 10);printf(“%d \n”, 100, 10);printf(“%d %d \n”, 100);printf(“%d - %d = %d \n”, 100, 10, 90);
}
printf()의 활용
궁금증 하나! 에서, 괄호 안의 %d는 그대로
나오지 않는 것일까? 프로그램에 미리 정의된 서식이기 때문이다!
printf(“%d - %d = %d \n”, 100, 10, 90)
서식 예시 설명
%d 10, 100 정수
%f or %lf 0.5, 3.14 실수(소수점이 포함된 수)
%c ‘a’, ‘b’, ‘A’, ‘B’ 한 글자로 된 문자
%s “hello”, “안녕” 문자열
서식의종류
printf()의 기본 활용
결과 확인해보기
#include <stdio.h>
int main(){
printf(“%d \n”, 100);printf(“%f \n”, 3.14);printf(“%c \n”, ‘a’);printf(“%s \n”, “hello”);
}
printf()의 기본 활용
값이 정상적으로 출력되는가?
#include <stdio.h>
int main(){
printf(“%d \n”, 0.5);printf(“%f \n”, 100);printf(“%c \n”, “hello”);printf(“%s \n”, ‘a’);
}
printf()의 활용
궁금증 둘! 에서, \n이 의미하는 것은? 프로그램에 미리 정의된 서식으로, 줄 바꿈을 의미한다
printf(“%d - %d = %d \n”, 100, 10, 90)
서식 설명
\n 새로운 줄로 이동한다
\t 다음 탭(tab)으로 이동한다
\b 뒤로 한 칸 이동한다
\r 줄의 맨 앞으로 이동한다
\a beep 소리를 낸다
\\ \를 출력한다
\’ ‘를 출력한다
\” “를 출력한다
서식의종류
printf()의 기본 활용
결과 확인해보기
#include <stdio.h>
int main(){
printf(“\n 줄바꾸기 \n 한 번 더 \n”);printf(“\t 탭 연습하기 \n”);printf(“글씨쓰기\r덮어쓰기\n”);printf(“\a beep 소리내기 \n”);printf(“\\\\ 쌍 슬래시 출력하기 \n”);printf(“안녕하세요 \”hello\” \n”);
}
변수의 이해
게임프로그래밍
변수란?
프로그램이 실행되는 동안 데이터의 값을 저장해두는 박스 변수 각각은 다른 박스에 담는다.
int num;char name;
num을 담는 박스 name을 담는 박스
변수의 구성
int num;
변수의 자료형 변수의 이름
int num = 100;
변수 num을 담는 상자
100
변수 num을 담는 상자
?
변수의 선언
변수 이름의 규칙
알파벳 대문자, 소문자, 밑줄(_), 숫자로 표현할 수 있음
명칭의 첫 글자는 반드시 대문자 또는 소문자 또는 밑줄이어야 함
알파벳 대문자와 소문자는 서로 다른 문자로 인식함
C언어의 문법을 위한 예약어는 변수명으로 사용할 수 없음
auto break case char const continue default do
double else enum extern float for goto if
int long register return short signed sizeof static
struct switch typedef union unsigned void volatile while
변수의 선언
변수 별로 선언하기
int num;int age;char name;float grade;
동일한 자료형끼리 묶어서 선언하기
int num, age;char name;float grade;
변수 초기화하기
선언 후 초기화하기
int num;int age;num = 100;age = 20;
선언과 동시에 초기화하기
int num = 100;int age = 20;
int num = 100, age = 20;
변수의 기본
결과 확인해보기
#include <stdio.h>
int main(){int num;double pi;
num = 100;pi = 3.14;
printf(“num is %d \n”, num);printf(“pi is %f \n”, pi);}
변수의 기본
결과 확인해보기
#include <stdio.h>
int main(){int num;double pi;
num = 3.14;pi = 100;
printf(“num is %d \n”, num);printf(“pi is %f \n”, pi);}
변수의 크기
변수에 따라 다른 크기의 박스가 할당됨
종류 서식 자료형 크기 값의범위
작은 정수
%d
short 2바이트 -215 ~ 215 -1
부호 없는 작은 정수 unsigned short 2바이트 0 ~ 216 -1
정수 int 4바이트 -232 ~ 231 -1
부호 없는 정수 unsinged int 4바이트 0~ 232-1
큰 정수 long (int) 4바이트 -231 ~ 231 -1
부호 없는 큰 정수 unsinged long 4바이트 0 ~ 232 -1
실수 %f float 4바이트 약 -3.4x1038 ~ 3.4x1038
큰 실수 %lf double 8바이트 약 -1.79x10308 ~ 1.79x10308
문자 하나 %c char 1바이트 -27 ~ 27 -1
문자열 %s char* 4바이트
변수의 크기
실제로 확인해보기
#include <stdio.h>
int main(){printf("%dbyte \n", sizeof(int));printf("%dbyte \n", sizeof(float));printf("%dbyte \n", sizeof(double));printf("%dbyte \n", sizeof(char));printf("%dbyte \n", sizeof(char*));}
할당된 크기를 알 수 있는 연산자
변수의 함정!
‘A’와 65는 같다?
#include <stdio.h>
int main(){
int num1, num2;char alpha1, alpha2;
num1 = 65;num2 = ‘A’;alpha1 = 65;alpha2 = ‘A’;
printf(“num1 is %d num2 is %d \n”, num1, num2);printf(“alpha1 is %c alpha2 is %d \n”, alpha1, alpha2);
}
변수의 함정!
‘A’와 65는 같다? 어떤 출력을 사용하느냐에 따라 값이 다르다. 아스키 코드를 사용하기 때문이다.
아스키코드 10진수
0 ~ 9 48 ~ 57
A ~ Z 65 ~ 90
a ~ z 97 ~ 122
연산자의 기초
게임프로그래밍
산술 연산자
기본 산술 연산자
연산자 설명 사용예
= 대입 연산자 a = 3
+ 더하기 a = 3 + 10
- 빼기 a = 4 – 10
* 곱하기 a = 3 * 10
/ 나누기 a = 10 / 3
% 나머지 a = 10 % 3
산술 연산자 실제로 해보자#include <stdio.h>
int main(){
int a, b = 10, c = 3;
a = b + c;printf(“10 + 3 = %d \n”, a);
a = b - c;printf(“10 - 3 = %d \n”, a);
a = 10 * 3;printf(“10 * 3 = %d \n”, a);
a = 10 / 3;printf(“10 / 3 = %d \n”, a);
a = 10 % 3;printf(“10 % 3 = %d \n”, a);
}
산술 연산자
대입 연산자와 증감 연산자
연산자 설명 사용예 결과
+= 대입 연산자 a += 3 a = a + 3
-= 대입 연산자 a -=3 a = a – 3
*= 대입 연산자 a *=3 a = a * 3
/= 대입 연산자 a /=3 a = a / 3
%= 대입 연산자 a %=3 a = a % 3
++ 증감 연산자 a++, ++a a = a + 1 , a += 1
-- 증감 연산자 a--, --a a = a - 1, a -=1
산술 연산자 실제로 해보자#include <stdio.h>
int main(){
int a = 10;
a += 5;printf(“a+= %d \n”, a);
a -= 5;printf(“a -= %d \n”, a);
a *= 5;printf(“a *= %d \n”, a);
a /= 5;printf(“a /= %d \n”, a);
a %= 5;printf(“a %%= %d \n”, a);
}
산술 연산자 그럼 다음 결과는?
#include <stdio.h>
int main(){
int a = 10;
a++;printf(“a++ %d \n”, a);
++a;printf(“++a \d \n”, a);
a--;printf(“a-- \d \n”, a);
--a;printf(“--a %d \n”, a);
}
산술 연산자
b = a++;
b = ++a;
①
①②
②
① a를 b에 대입시킨다
② a의 값을 1 증가시킨다
① a의 값을 1 증가시킨다
② a를 b에 대입시킨다
관계 연산자
양쪽을 비교하여 참 또는 거짓을 판별할 수 있음
같으면 참(true, 1), 같지 않으면 거짓(false, 0) 주로 조건식에 많이 사용
연산자 설명 사용예 결과
== 같다 a == 10 a와 10은 같다
!= 같지 않다 a != b a와 b는 같지 않다
> 크다 a > 3 a는 3보다 크다
< 작다 a < 100 a는 100보다 작다
>= 크거나 같다 a >= 50 a는 50보다 크거나 같다
<= 작거나 같다 a <= 1 a는 1보다 작거나 같다
관계 연산자 실제로 해보자
#include <stdio.h>
int main(){
int a = 100, b = 200;
… ….아래의 결과가 나오도록 직접 짜보자
}
논리 연산자
그리고, 또는, 부정
같으면 참(true, 1), 같지 않으면 거짓(false, 0) 주로 조건식에 많이 사용
연산자 설명 사용예 결과
&& 그리고 (a > 10) && (b <100) (a > 10)이고 (b<100)
|| 또는 (a > 10) || (b < 100) (a > 10) 또는 (b<100)
! 부정(아니다) !(a> 10) (a>10)이 아니다
논리 연산자 실제로 해보자
#include <stdio.h>
int main(){
int a = 100;
… ….아래 내용이 참인지 거짓인지 직접 짜보도록 하자.
}
연산자 설명 사용예 결과
&& 그리고 (a > 10) && (b <100) (a > 10)이고 (b<100)
|| 또는 (a > 10) || (b < 100) (a > 10) 또는 (b<100)
! 부정(아니다) !(a> 10) (a>10)이 아니다
비트 연산자
정수나 문자 등을 2진수로 변환한 후에 각 자리의 비트끼리연산을 수행하는 것
연산자 설명 결과
& 비트 논리곱 둘다 1이면 1이다
| 비트 논리합 둘 중 하나만 1이면 1이다
^ 비트 배타적 논리합 둘이 같으면 0, 둘이 다르면 1이다
~ 비트 부정 1은 0으로, 0은 1로 변경한다
<< 비트 왼쪽 시프트 비트를 왼쪽으로 shift한다
>> 비트 오른쪽 시프트 비트를 오른쪽으로 shift 한다
실습 1
printf()와 다양한자료형을 활용한 학점 계산기 만들기 5개의 과목을 변수로 만든다 각각의 학점을 변수에 담는다 5과목의 총점을 출력한다 5과목의 평균을 출력한다
실행결과
실습 2
printf()와 다양한자료형을 활용한 학점 계산기 만들기 실습 1의 결과를 소수점 한 자리까지 출력되도록 만든다
실행결과
변수의 크기
변수의 자료형에 따라 변수에 할당되는 크기가 달라짐 예를 들어, 실수는 기본적으로 소수점 6자리까지 출력이 되는
데 수정하여 소수점 자리수를 변경할 수 있음
변수의 크기
출처 : C언어 for Beginner
scanf()의 이해
게임프로그래밍
scanf()란?
키보드로부터 값을 입력 받을 수 있는 표준 입력 예시
여러 개의 값을 한 번에 받을 수 있으며, 다양한 자료형에 대해 입력 받을 수 있음
예시
printf(“%d \n”, 100);
scanf(“%d”, &num);
특정한 변수에 입력 받은 값을 담는다
scanf(“%d %d %d”, &num1, &num2, &num3);
scanf(“%lf %d”, &sosu, &jungsu);
scanf()에러 수정하기
scanf()사용하기
다음과 같은 에러 발생
#include <stdio.h>
int main(){
int num;scanf(“%d ”, &num);
}
scanf()에러 수정하기
에러 수정하기
scanf()에러 수정하기
_CRT_SECURE_NO_WARNINGS 추가
scanf()에러 수정하기
scanf()를 그냥 사용하면 다음과 같은 오류 발생
실습 3
printf()와 scanf(), 다양한자료형을 활용한 학점 계산기 만들기 5개의 과목을 변수로 만든다 각각의 학점을 키보드로부터 입력 받는다 5과목의 총점을 출력한다 5과목의 평균을 출력한다
실행결과
추가. Visual Studio 2015 설치하기
게임프로그래밍
Community 2015 다운로드https://www.visualstudio.com/ko-kr
Community 2015 다운로드저장하고 싶은 위치에 .exe 파일 저장
Community 2015 설치다운로드한 .exe 파일 실행
Community 2015 설치여유공간이 8G가 안되어도 설치는 가능
Community 2015 설치다운로드한 .exe 파일 실행
Blend for Visual Studio 2015 아님!!!!!
Community 2015 시작하기개발환경 설정하기
본인이 원하는 스타일의레이아웃으로 변경 가능
Community 2015 시작하기추가 도구 설치하기
새 프로젝트 생성, 콘솔 설정
Community 2015 시작하기추가 도구 설치하기
.exe 파일 생성(Win32 콘솔 응용프로그램)을위한 추가 도구 설치
Community 2015 시작하기추가 도구 설치하기
윈도우 PC에서 사용 시 필요한 추가 도구 설치,사용 중이던 비주얼 스튜디오를 종료하고 작업을 진행할 것
Community 2015 시작하기추가 도구 설치하기
Community 2015 시작하기추가 도구 설치하기
프로그램 다시 시작
Community 2015 시작하기“Win32 콘솔 응용프로그램”이 제대로 생성되었는지 확인
이렇게 보이면 정상적으로 생성된 것!
Community 2015 프로젝트 생성하기새 프로젝트 생성하기
프로젝트명은 프로젝트명으로 어떤 프로젝트인지 이해할 수 있는 것으로 생성할 것
Community 2015 프로젝트 생성하기설정을 위해 ‘다음’선택
Community 2015 프로젝트 생성하기개발환경 설정하기
미리 컴파일된 헤더를 선택할 경우, 불필요한 내용이소스코드에 기본으로 추가됨
Community 2015 프로젝트 생성하기소스코드 작성을 위한 .c/.cpp 파일 추가하기
Community 2015 프로젝트 생성하기.c파일 추가하기
파일 명도 프로젝트 명과 동일하게이름으로 내용을 파악할 수 있도록 생성