g+ summer c study 20130709(3일차)

45
G+ Summer C Programming Study 1 2013. 07. 09 19:30 G-Lab

Upload: jake-yoon

Post on 20-Jun-2015

551 views

Category:

Education


0 download

DESCRIPTION

3일차 20130709 7월9일 스터디에 대한 PPT 자료입니다. 다룬 내용은 입력(scanf)과 반복문(for문) 입니다. 숙제는 프로젝트 오일러를 활용하였습니다. 다소 어렵습니다만, 견뎌야 합니다. 화이팅!!

TRANSCRIPT

Page 1: G+ Summer C Study 20130709(3일차)

G+ Summer C Programming Study

1

2013. 07. 09

19:30G-Lab

Page 2: G+ Summer C Study 20130709(3일차)

2

잠시 스터디에 앞서 공지를 하자면 ,오늘부터 숙제가 많습니다 . 그렇기에…오늘 바로 가셔서 안 하시면 , 쌓여서 버틸 수가 없는 상황이 올 겁니다 .

다 여러분을 위한 것 입니다 .힘내십시오 !뭔가 얻어가려면 노력 해야만 합니다 .

Page 3: G+ Summer C Study 20130709(3일차)

3

지난 시간복습

Page 4: G+ Summer C Study 20130709(3일차)

4

C 언어를 공부하면무엇을 할 수 있을까 ?

Page 5: G+ Summer C Study 20130709(3일차)

5

C 언어의 모든 문장은 ____ 으로 끝난다 !

Page 6: G+ Summer C Study 20130709(3일차)

6

바구니의 이름의 규칙 ?규칙이 왜 ?!

Page 7: G+ Summer C Study 20130709(3일차)

7

C 언어에서 어떤 조건 별로할 일을 나눌 때 어떻게 할까요 ?

Page 8: G+ Summer C Study 20130709(3일차)

8

오늘의 TODO입력 ?

반복하는 일들 ?!

Page 9: G+ Summer C Study 20130709(3일차)

9

저번시간에 우리는 바구니를 배웠고 ,바구니에 값을 대입하는 방법을단순히 = 을 이용해서 하였습니다 .

Page 10: G+ Summer C Study 20130709(3일차)

10

컴퓨터의 기본입력을담당하는 것은 무엇일까요 ?

Page 11: G+ Summer C Study 20130709(3일차)

11

아직 사실 저희는 바구니에대해 자세히 배우지 않았습니다 .

Page 12: G+ Summer C Study 20130709(3일차)

12

우리가 바구니를 만들면컴퓨터는 내부적으로 이러한 일을 합니다 .

Page 13: G+ Summer C Study 20130709(3일차)

13

1. int A; 를 하게 되면2. int 형 데이터를 저장할 수 있는 공간을 만듭니다 .3. 그 공간은 메모리라고 하는 것 안에 위치합니다 .4. 위치한다는 말은 즉 , 주소가 있다는 것입니다 .

바구니 이름 : A바구니 종류 : int (정수 )바구니 크기 : 4바구니 주소 : 11

A

Page 14: G+ Summer C Study 20130709(3일차)

14

C 언어에서는바구니의 주소를 얻기 위해

& 라는 연산자를 사용합니다 .

Page 15: G+ Summer C Study 20130709(3일차)

15

int A = 5; // 바구니 생성 , 5 대입printf(“%d”, A); // 바구니 값 출력printf(“%d”, &A); // 바구니 주소 출력

Page 16: G+ Summer C Study 20130709(3일차)

16

입력하기 위해서는주소가 필요하기 때문에

주소를 배웠습니다 .

Page 17: G+ Summer C Study 20130709(3일차)

17

입력을 위한 함수는다행히도 첫 시간에 배웠던

printf 와 유사하게scanf 라고 합니다 .

Page 18: G+ Summer C Study 20130709(3일차)

18

char inputC;scanf(“%c”, & inputC);

Page 19: G+ Summer C Study 20130709(3일차)

19

int inputI;scanf(“%d”, &inputI);

Page 20: G+ Summer C Study 20130709(3일차)

20

float inputF;scanf(“%f”, &inputF);

Page 21: G+ Summer C Study 20130709(3일차)

21

char a, b;scanf(“%c %c”, &a, &b);

Page 22: G+ Summer C Study 20130709(3일차)

22

int a, b;scanf(“%d %d”, &a, &b);

Page 23: G+ Summer C Study 20130709(3일차)

23

간단한 입력 프로그램을 짜봅시다 .

두 개의 정수 20, 10 을 입력 받아서두 수의 사칙연산결과를

다음과 같이 출력하시오 .a+b=30, a-b=10, a*b=200, a/b=2

Page 24: G+ Summer C Study 20130709(3일차)

24

#include <stdio.h> // 기본 입출력 사용int main(void) // 메인 (Entry Point){

int a, b; // 바구니 생성scanf(“%d %d”, &a, &b);

// 바구니에 값 입력printf(“a+b=%d, “, a+b); // 덧셈

출력printf(“a-b=%d, “, a-b); // 뺄셈

출력printf(“a*b=%d, “, a*b); // 곱셈

출력printf(“a/b=%d\n”, a/b); // 나눗셈

출력return 0; // Entry Point 종료

}

Page 25: G+ Summer C Study 20130709(3일차)

25

자 백지를 드리겠습니다 .금방 보셨던 코드를 짜봅시다 .

두 개의 정수 20, 10 을 입력 받아서두 수의 사칙연산결과를

다음과 같이 출력하시오 .a+b=30, a-b=10, a*b=200, a/

b=2

Page 26: G+ Summer C Study 20130709(3일차)

26

Practice Practice!

두 개의 정수를 입력 받아서두 수 중 큰 수를 출력해주는

프로그램을 작성하시오 !

Page 27: G+ Summer C Study 20130709(3일차)

27

Practice Practice!

세 개의 정수를 입력 받아서세 수를 한 변의 길이로 하였을 때 ,

삼각형이 가능한지 판단하고 ,삼각형이라면 직각 , 예각 , 둔각

삼각형인지 판단하시오 .

Page 28: G+ Summer C Study 20130709(3일차)

28

Practice Practice!

두 개의 정수와 한 개의 문자를입력 받아서

문자가 + 이면 덧셈을 , - 이면 뺄셈을 ,

* 이면 곱셈을 , / 이면 나눗셈을 결과를 출력하시오 .

Page 29: G+ Summer C Study 20130709(3일차)

29

Practice Practice!

한 개의 정수를 입력 받아서정수에 해당하는 구구단을 출력하세요 .

ex: ) 2 를 입력했다면2*1=22*2=2

…2*9=18

Page 30: G+ Summer C Study 20130709(3일차)

30

금방 전 구구단을 출력할 때printf 를 몇 번이나 타이핑하셨나요 ?

Page 31: G+ Summer C Study 20130709(3일차)

31

잘 생각해보면printf 를 할 때

아래와 같은 규칙이 있었습니다 .

ex: ) printf(“%d*1=%d\n”, i, i*1); printf(“%d*2=%d\n”, i, i*2); printf(“%d*3=%d\n”, i, i*3);

Page 32: G+ Summer C Study 20130709(3일차)

32

이러한 일정한 규칙을 가지고반복적으로 일어나는 일들을

처리하는 문장을반복문이라고 합니다 .

Page 33: G+ Summer C Study 20130709(3일차)

33

사실 C 언어에는

여러가지 반복문이 있습니다 .

for 문while 문

do-while 문그러나 우리는 for 문만 배울 것 입니다 .

Page 34: G+ Summer C Study 20130709(3일차)

34

먼저 for 문for 문은 아래와 같이 생겼습니다 .

for(i=0; i<5; i++)

초기화 : 반복 문을 시작하기에 앞서 준비하는 일조건문 : 반복을 계속해야 할지 말지를 결정하는 문장

증감문 : 반복이 이루어질 때마다 변화시킬 일

Page 35: G+ Summer C Study 20130709(3일차)

35

예를 들어

for(i=5; i <= 10; i++) {반복할 일

}

이런 문장이 있다면i 의 값이 5 에서 10 이 될 때까지 ,(5,6,7,8,9,10)

6 번 반복할 것입니다 .

Page 36: G+ Summer C Study 20130709(3일차)

36

그럼 다시 이 문제를for 문을 이용해 구현해봅시다 .

한 개의 정수를 입력 받아서정수에 해당하는 구구단을 출력하세요 .

ex: ) 2 를 입력했다면2*1=22*2=2

…2*9=18

Page 37: G+ Summer C Study 20130709(3일차)

37

어떤가요 ?반복 문을 사용하는 이유를

알겠나요 ?

Page 38: G+ Summer C Study 20130709(3일차)

38

더 귀찮은 반복작업들을해보도록 하죠

Page 39: G+ Summer C Study 20130709(3일차)

39

Practice Practice!

한 개의 정수를 입력 받아서그 정수보다 작은 자연수 중에서

7 의 배수의 합을 구하시오ex: ) 10000 를 입력했다면

결과 : 7142142

Page 40: G+ Summer C Study 20130709(3일차)

40

머리 아프시죠 ? ㅠ . ㅠ힘내세요

여러분의 마음 알아요… 저도

Page 41: G+ Summer C Study 20130709(3일차)

41

모범답안#include <stdio.h>

int main(void){ int n = 10000; int i; int s = 0;

for(i = 0; i < n; i++) { if( i % 7 == 0 ) { s += i; } } printf(“ 결과 : %d\n", s);}

Page 42: G+ Summer C Study 20130709(3일차)

42

Practice Practice!

한 개의 정수를 입력 받아서그 정수보다 작은 자연수 중에서

소수를 모두 출력하시오 .ex: ) 10 를 입력했다면

결과 : 2 3 5 7

Page 43: G+ Summer C Study 20130709(3일차)

43

모범답안#include <stdio.h>

int main(void){ int n = 100; int i, j; int s = 0; int isPrime;

for(i = 2; i < n; i++) { isPrime = 1; for(j = 2; j < i; j++) { if ( i % j == 0 ) { isPrime = 0; break; } }

if( isPrime == 1 ) printf("%d ", i); } printf("\n");}

Page 44: G+ Summer C Study 20130709(3일차)

44

수고하셨습니다 . 숙제 공지

Page 45: G+ Summer C Study 20130709(3일차)

45

1. 먼저 http://euler.synap.co.kr 에 접속 ! ( 즐겨찾기추가 )

2. 회원가입을 해주세요 .3. 1 번부터 10 번 문제까지 숙제입니다 .4. 문제를 풀기 위한 C 코드는

wide.so 에/home/share/[ 아이디 ]/assignment/3/3-[ 문제번호 ].c 형식으로 제출해주세요 .