SlideShare a Scribd company logo
2016.08.21
1
YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
2
C 프로그래밍 (3)반복문(for문)
for문 구조 for문 예시 코드
- 초기 값(식1)에서 시작하여 반복 여부 조건
(식2)이 참이면 블록 내의 문을 처리
- 블록 내 문의 처리 후 식3에 의해 초기값이
변화됨
for(초기화 식1; 반복 여부 조건 식2;
초기값 변화 식3) {
문1;
문2;
…
}
int i;
for(i=1; i<=5; i++){
printf(“%d번째 반복입니다.n”, i);
}
printf(“반복을 종료했습니다. n”);
1번째 반복입니다.
2번째 반복입니다.
3번째 반복입니다.
4번째 반복입니다.
5번째 반복입니다.
반복을 종료했습니다.
실행 결과
블록 내의 문을 순서대로
반복 처리합니다.
for
조건 문
참
거짓
변수 i값을 1로 초기화, i값이 5보다
커질 때까지 내부의 문을 반복
처리 후 i값을 1씩 증가시킴
반복할 때마다 값이
1씩 증가합니다.
YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
3
C 프로그래밍 (3)반복문(while문)
while문 구조 while문 예시 코드
- 조건이 참이면 지정한 문을 몇 번이라도
반복 처리
- while문은 조건이 거짓이면 while문을
처리하지 않음
while(조건) {
문1;
문2;
…
}
int i=1;
while(i <= 5){
printf(“%d번째 반복입니다. n”, i);
i++;
}
printf(“반복을 종료했습니다. n”);
1번째 반복입니다.
2번째 반복입니다.
3번째 반복입니다.
4번째 반복입니다.
5번째 반복입니다.
반복을 종료했습니다.
실행 결과
블록 내의 문을 순서대로
반복 처리합니다.
while
조건 문
참
거짓
조건이 거짓이 되도록 증가시킵니다.
무한 반복이 되지 않도록 하는 역할
반복할 때마다 값이
1씩 증가합니다.
조건 표기에 주의해야 함,
조건이 무조건 참인 경우는
무한반복하게 됨
YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
4
C 프로그래밍 (3)반복문(do~while문)
do~while문 구조 do~while 문 예시 코드
- while문과 달리 조건을 판단하기 전에
블록 내의 문을 처리함
- 최소 한 번은 반드시 블록 내의 처리가
이루어짐
do{
문1;
문2;
…
} while(조건);
int i=1;
do{
printf(“%d번째 반복입니다. n”, i);
i++;
} while(i <= 5);
printf(“반복을 종료했습니다. n”);
1번째 반복입니다.
2번째 반복입니다.
3번째 반복입니다.
4번째 반복입니다.
5번째 반복입니다.
반복을 종료했습니다.
실행 결과
블록 내의 문을 순서대로
반복 처리합니다.
while
조건
참
거짓
i<=5가 거짓이면 반복을
종료합니다
최소한 한번은 루프
본체가 실행됨
조건이 참이면 반복을
계속합니다.
문
do
YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
5
C 프로그래밍 (3)처리 흐름의 변경
break문 구조 continue문 구조
int res, i;
printf(“몇 번째 루프를 중지할까요? (1-
10) n“);
scanf(“%d”, &res);
for(i=1; i<=10; i++){
printf(“%d번째 처리입니다. n“, i);
if(i==res) break;
}
몇 번째에서 루프를 중지할까요?(1-10)
3 [enter]
1번째 처리입니다.
2번째 처리입니다.
3번째 처리입니다.
실행 결과
구문 : break;
처리의 흐름을 강제적으로 종료시키고,
그 블록에서 빠져나가는 처리
int res, i;
printf(“몇 번째 처리를 건너뛸까요?(1-10)
n”);
scanf(“%d”, &res);
for(i=1; i<=5; i++){
if( i == res) continue;
printf(“%d번째 처리입니다. n“, i);
}
입력한 횟수에서
반복을 종료함
구문 : continue;
반복문 안의 처리를 건너뛰고 블록의
처음 위치로 돌아가서 다음 처리 실행
몇 번째 처리를 건너뛸까요?(1-10)
3 [enter]
1번째 처리입니다.
2번째 처리입니다.
4번째 처리입니다.
5번째 처리입니다.
실행 결과
10번 반복하는 for문이지
만 입력한 횟수인 3번째
문 처리 후 강제 종료됨
5번 반복하는 for문이지
만 입력한 횟수인 3번째
문은 건너뛰고 다음 문
이후 계속 처리됨
입력한 횟수에서
다음 문은 건너뛰고
처음으로 돌아감
YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
6
C 프로그래밍 (3)배열의 선언 및 이용
int test[5];
배열의 선언 배열의 요소와 값 대입
- 배열은 같은 형의 복수의 값을 나열하
여 기억하는 기능이며 배열 내 각각의
상자를 배열 요소(element)라고 함
- 배열 선언이란 배열이라는 복수의 상
자를 준비하면서 데이터 형과 식별자
인 배열이름을 지정하는 것
- 배열의 요소 수는 미리 지정해 두어야
하고, [ ] 안에 요소 수를 지정하고 이
번호를 인덱스(index, 첨자)라고 함
- 배열 인덱스는 0부터 시작하기 때문에
마지막 인덱스는 ‘요소 수-1’이 됨
형 이름 배열 이름[요소 수];
int test[5], i;
test[0] = 80;
test[1] = 60;
test[2] = 22;
test[3] = 50;
test[4] = 75;
1번째 사람의 점수는 80점입니다.
2번째 사람의 점수는 60점입니다.
3번째 사람의 점수는 22점입니다.
4번째 사람의 점수는 50점입니다.
5번째 사람의 점수는 75점입니다.
test[0] test[1] test[2] test[3] test[4]
for(i=0; i<5; i++){
printf(“%d번째 사람
의 점수는 %d점입니다.
n”, i+1, test[i]);
}
int형 5개의 값을 배열로 선언
배열 이름[인덱스] = 식;
실행 결과
test[0] test[1] test[2] test[3] test[4]
80 60 22 50 75
YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
7
C 프로그래밍 (3)배열의 초기화
int test[5] = {80, 60, 22, 50, 75};
||
int test[] = {80, 60, 22, 50, 75};
배열의 초기화 배열의 초기화 예시코드
- 배열의 초기화는 ‘배열의 선언’과 ‘값
의 대입’을 한번에 표기
- { } 안에 각 요소의 값을 나열해서 표
기하면 배열이 준비되었을 때 각각의
값이 배열의 요소에 저장됨
- { } 안에 지정하는 값을 초기화 값
(initializer) 또는 초기자라고 함
- 요소 수를 지정하지 않으면 초기화 값
의 수에 따라 요소가 자동으로 준비됨
- 요소 수보다 적은 초기화 값을 표기하
면 남는 요소에 0 값이 자동 저장
형이름 배열이름[요소수]={값0, 값1,…};
int test[5] = {80, 60, 22, 50, 75}
int i;
for(i=0; i<5; i++){
printf(“%d번째 사람의 점수는 %d점입
니다. n”, i+1, test[i]);
}
1번째 사람의 점수는 80점입니다.
2번째 사람의 점수는 60점입니다.
3번째 사람의 점수는 22점입니다.
4번째 사람의 점수는 50점입니다.
5번째 사람의 점수는 75점입니다.
실행 결과
test[0] test[1] test[2] test[3] test[4]
80 60 22 50 75
5개의 배열 요소를 초기화
YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
8
C 프로그래밍 (3)다차원 배열
다차원 배열 다차원 배열 예시코드
- 배열은 2차원 이상으로 나열된 다차원
배열로 지정 할 수 있음
- 배열의 n차원은 요소 수를 n개 나열하
면 됨
- 다차원 배열의 초기화는 아래와 같이
여러가지 방법으로 가능함
- 배열의 인덱스를 지정하여 값을 대입
test[0][0] = 80;
…
test[1][4] = 58;
- 배열의 요소별 값을 모두 초기화 방법
int test[2][5] = {{80, 60, 22, 50, 75},
{90, 55, 68, 72, 58}}
int test[ ][5] = {{80, 60, 22, 50, 75},
{90, 55, 68, 72, 58}}
형 이름 배열 이름[요소 수][요소 수]
int test[2][5] = {{80, 60, 22, 50, 75}, {90,
55, 68, 72, 58}}
for(int i=0; i<5; i++){
printf(“%d번째 사람의 국어 %d점, 산
수 %d점입니다. n”, i+1, test[0][i],
test[1][i]);
}
1번째 사람의 국어 80점, 산수 90점입니다.
2번째 사람의 국어 60점, 산수 55점입니다.
3번째 사람의 국어 22점, 산수 68점입니다.
4번째 사람의 국어 50점, 산수 72점입니다.
5번째 사람의 국어 75점, 산수 58점입니다.
실행 결과
test[0] test[1] test[2] test[3] test[4]
요소 수를 생략 가능 test[0][0] test[0][1] test[0][2] test[0][3] test[0][4]
test[1][0] test[1][1] test[1][2] test[1][3]
80 60 22 50 75
test[1][4]
90 55 68 72 58
YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
9
C 프로그래밍 (3)문자열과 배열
문자열과 배열의 관계 문자열 입출력 예시코드
- 문자열은 char형 배열로 취급
- 문자열 배열의 마지막 요소는 ‘0’
- 문자열 배열의 요소 수는 ‘문자열
길이+1’ 이상이 필요
- “ “로 문자열을 초기화할 수 있지만
변수에 대입은 불가함
문자열 배열의 초기화 구문
char str[6]=“Hello”
char str[]=“Hello”
char str[6]={‘H’, ’e’, ’l’, ’l‘, ’o’, ‘0’};
char str[]={‘H’, ’e’, ’l’, ’l‘, ’o’, ‘0’};
char str1[ ] = “Hello”;
char str2[100];
printf(“str1 문자열은 %s 입니다. n”,
str1);
printf(“문자열을 입력하세요. n”);
scanf(“%s”, str2);
printf(“입력한 문자열은 %s입니다. n”,
str2);
str1 문자열은 Hello 입니다.
문자열을 입력하세요.
Hello [enter]
입력한 문자열은 Hello입니다.
실행 결과
str[0] str[1] str[2] str[3] str[4]
‘H’ ‘e’ ‘l’ ‘l’
str[5]
‘l’ ‘0’
문자열 출력 위한
변환 사양은
%s 사용
문자열 입력 변환사양
은 %s 사용, 배열 이름
에 & 붙이지 않음
YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
C 프로그래밍 (3)함수의 정의와 호출
함수의 정의 함수의 호출
- 함수(function) : 여러 번 반복하는 일정한
처리를 하나로 모아두고 호출해서 사용하
는 기능
- 함수를 이용하기 위해서는 2가지 과정이
필요함(함수 정의 및 호출)
- 함수의 정의는 코드 안에서 일정하게 정리
된 처리를 작성하는 것
반환 값의 형 함수 이름(인수 리스트)
{
문;
. . .
return 식;
}
- 함수 호출(function call) : 정의된 함
수를 이용하는 것
- 함수를 호출하기 위해서는 함수 이름
과 인수 리스트, 마지막에 세미콜론을
붙임
- 함수가 호출되면 정의한 함수가 일괄
적으로 처리됨
함수 이름(인수 리스트);
함수의 이름은
식별자를 사용
처리를 블록 내에
정리하여 작성
10
/* buy 함수 호출 */
int main(void) {
buy();
return 0;
}
차를 구입했습
니다.
실행 결과예시 코드
/* buy 함수 정의 */
void buy(void) {
printf(“차를 구입했습니다. n”);
}
함수의 이름
YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
C 프로그래밍 (3)함수의 인수
함수의 인수 인수를 갖는 함수 예시 코드
- 인수(argument) : 함수로 전달하는 정
보
- 함수는 인수를 이용하여 호출한 장소
로부터 함수 안으로 어떤 정보(값)을
전달하고 그 값에 따른 처리 가능
- 변수 x(인수)는 buy() 함수 내부 처리
에 이용할 수 있으며 함수 안에서만
사용 가능
/* buy 함수 정의 */
void buy( int x )
{
printf(“%d만 원짜리 차를 구입했
습니다. n”, x );
}
/* buy 함수 정의 */
void buy(int x )
{
printf(“%d만 원짜리 차를 구입했습
니다. n”, x );
}
/* buy 함수 호출 */
int main(void)
{
buy( 20 );
buy( 50 );
return 0;
}
int형 인수 준비
11
20만 원짜리 차를 구입했습니다.
50만 원짜리 차를 구입했습니다.
실행 결과
인수를 함수
안에서 사용
값을 전달받는 가인수
(parameter) 또는
매개변수
전달 받은 값을 출력
실인수 20을 전달해서 호출
실인수 50을 전달해서 호출
YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
C 프로그래밍 (3)함수의 반환 값
함수의 반환 값 함수 반환 값 예시 코드
- 반환 값(return value) : 함수 본체로부
터 함수를 호출한 곳으로 반환되는
특정한 정보
- 반환 값을 반환하기 위해서는 반환하
는 값의 데이터 형을 함수 이름 앞에
표기(①)
- 함수의 블록 안에 return 문을 사용해
서 실제로 식의 값을 반환 처리(②)
반환 값의 형 함수 이름(인수 리스트)
{
문;
. . .
return 식;
}
int buy(int x, int y) {
int z;
printf(“%d만원과 %d만 원짜리 차를
구입했습니다. n”, x, y );
z = x+y;
return z;
}
int main(void) {
int num1=20, num2=50, sum;
printf(“%d만원과 %d만 원짜리 차를
구입했습니다.”, num1, num2);
sum = buy(num1, num2);
printf(“합계 %d만원입니다. n”, sum);
return 0;
}
반환 값의 형을 지정
12
20만원과 50만 원짜리 차를 구입했습니
다. 합계 70만원입니다.
실행 결과
함수를 호출한 곳으
로 식의 값을 반환
②
①
반환 값을 갖는
함수
함수를 호출하고 그 반환
값을 변수 sum에 대입
YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
C 프로그래밍 (3)인수와 반환 값 없는 함수
인수 없는 함수 반환 값 없는 함수
- 인수 없는 함수를 정의할 때는 void
라는 특수한 형 이름으로 지정
- 인수가 없는 함수를 호출할 때는 ( )
값을 지정하지 않고 호출
/* buy 함수 정의 */
void buy( void )
{
printf(“차를 구입했습니다. n”);
}
/* buy 함수 호출 */
int main(void){
buy( );
}
인수가 없는 경우
void형으로 지정
13
인수를 전달하지
않고 호출
- 반환 값이 없는 함수를 정의할 때는
반환 값의 형을 void 형으로 지정
- 반환 값이 없는 함수는 블록 마지막 }
까지 처리되거나, return; 문으로 종료
/* buy 함수 정의 */
void buy( void ) {
printf(“차를 구입했습니다. n”);
(return;)
}
/* buy 함수 호출 */
int main(void){
buy( );
}
반환 값이 없는 경우
void형으로 지정
반환 값이 없으므로
함수만 호출
YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
C 프로그래밍 (3)함수 형식 매크로
함수 형식 매크로 함수 형식 매크로 예시 코드
- 함수를 이용하면 인수나 반환 값을
전달할 때 필요 이상으로 시간이 걸
리는 경우가 있음
- 함수 형식 매크로(function-like
macro)를 이용하면 처리 속도 향상
가능
- 함수 형식 매크로를 호출하면 프리프
로세서에 의해 정의된 식으로 변환됨
[ 함수 형식 매크로의 정의 ]
#define 매크로 이름(인수) (식)
#define MAX(x, y) (x > y ? x : y)
[함수 형식 매크로의 호출]
매크로 이름(인수);
ans = MAX(num1, num2);
#include <stdio.h>
#define MAX(x, y) (x > y ? x : y)
int main(void){
int num1, num2, ans;
printf(“1번째 정수를 입력하세요. n”);
scanf(“%d”, &num1);
printf(“2번째 정수를 입력하세요. n”);
scanf(“%d”, &num2);
ans = MAX(num1, num2);
printf(“최댓값은 %d입니다. n”, ans);
return 0;
}
14
1번째 정수를 입력하세요.
10 [enter]
2번째 정수를 입력하세요.
프리프로
세서에 의
해 변환
num1 > num2 ? num1 : num2
5 [enter]
최댓값은 10입니
다.
실행 결과
YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
15
C 프로그래밍 (3)변수의 종류와 유효 범위
변수의 종류 변수의 유효 범위
- 지역 변수(local variable) : 함수 안에
서 선언한 변수
- 전역 변수(global variable) : 함수 밖
에서 선언한 변수
- 지역 변수는 for문, if문 블록 안에서
선수에 선언될 수 있으며, 함수의 가
인수도 지역 변수임
- 전역 변수와 지역 변수는 이름이 동
일해도 다른 변수로 인식 처리됨
int a = 0;
void func(void) {
int c = 2;
}
int main(void) {
int b = 1;
}
- 지역 변수는 함수 안에서 선언되며
함수가 끝날 때까지 이용 가능, 함수
밖에서는 이용 불가
- 전역 변수는 선언된 소스 코드 전체
에서 이용 가능
int a = 0;
void func(void) {
int c = 2;
}
int main(void) {
int b = 1;
func( );
return 0;
}
전역변수
지역변수
지역변수 c의
유효범위
지역변수 b의
유효범위
전역변수
a의 유효
범위
YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
C 프로그래밍 (3)변수의 기억 수명
지역 변수의 기억 수명 전역 변수의 기억 수명
]
- 함수가 종료되면 지역 변수의 메모리 공간
은 해제되고 다시 함수를 호출하면 새로운
메모리 공간이 생성됨
- 지역변수에 static을 정적 변수가 되어 전
연 변수처럼 이용 가능, 프로그램 종료시
까지 변수 유지됨
[지역 변수 생성과 소멸]
(1) 함수 안에서 지역 변수가 선언될
때 메모리에 특정 공간이 준비됨
(2) 지역 변수에 값이 저장됨
(3) 함수가 종료할 때 지역 변수를 위
한 메모리의 특정 공간은 해제되
고 다른 용도로 사용됨
16
b b
함수 종료
메모리 해제
함수 시작
변수 선언
지역
변수 b
- 프로그램이 종료되기 전까지 전역 변
수는 계속 유지되므로 정적 기억 영
역이라고 함
[전역 변수 생성과 소멸]
(1) 프로그램 선두에 전역 변수가 선
언되면 프로그램 본체의 처리가
시작하기 전에 한번만 메모리가
확보됨
(2) 전역 변수에 값이 저장됨
(3) 프로그램이 종료되면 전역 변수를
위한 메모리 공간은 해제됨
a a
프로그램
종료
프로그램
시작
전역
변수 a
YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
C 프로그래밍 (3)함수 선언
함수 프로토타입 선언 함수 선언 예시 코드
- 함수 프로토타입 선언(function
declaration) : 함수를 호출하기 전에
호출하는 함수의 이름, 반환 값의 형,
인수를 선언하는 것
- 이 선언을 해두면 함수 본체를 코드
안의 어느 장소에서 정의해도 정확하
게 호출할 수 있음
- 먼저 함수 선언을 하면 main() 함수
뒤에 함수를 정의 가능
반환 값의 형 함수 이름(인수 리스트);
/* max 함수 선언 */
int max(int x, int y);
int main(void){
int num1=10, num2=5, ans;
printf(“10과 5의 최대값을 구합니다.
n”)
ans = max(num1, num2);
printf(“최댓값은 %d입니다. n”, ans);
return 0;
}
/* max 함수 정의 */
int max(int x, int y) {
return x > y ? x : y;
}
17
20과 50의 최대값을 구합니다.
최댓값은 50입니다.
실행 결과
/* max 함수 선언 */
int max(int x, int y);
int main(void) { … }
/* max 함수 정의 */
int max(int x, int y) { … }
함수 프로토타입
선언
함수 선언을 이용
하면 함수 정의는
어느 장소에 해도
되며, 다른 파일로
저장 이용 가능
YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
18
본 자료는 코딩인카페 1기 C&JAVA 기초과정
5회차 자료 중 일부를 발췌한 내용입니다.
< 참고자료 >
- 그림으로 배우는 C프로그래밍, 마나 다카하시, 영진닷컴.

More Related Content

What's hot

C수업자료
C수업자료C수업자료
C수업자료
koominsu
 
6장 표현식 및 문장
6장 표현식 및 문장6장 표현식 및 문장
6장 표현식 및 문장재정 이
 
Refelction의 개념과 RTTR 라이브러리
Refelction의 개념과 RTTR 라이브러리Refelction의 개념과 RTTR 라이브러리
Refelction의 개념과 RTTR 라이브러리
ssuser7c5a40
 
C++ 타입 추론
C++ 타입 추론C++ 타입 추론
C++ 타입 추론
Huey Park
 
프로그래밍 대회: C++11 이야기
프로그래밍 대회: C++11 이야기프로그래밍 대회: C++11 이야기
프로그래밍 대회: C++11 이야기
Jongwook Choi
 
프로그래밍 및 실습 Chap2
프로그래밍 및 실습 Chap2프로그래밍 및 실습 Chap2
프로그래밍 및 실습 Chap2dktm
 
Modern C++의 타입 추론과 람다, 컨셉
Modern C++의 타입 추론과 람다, 컨셉Modern C++의 타입 추론과 람다, 컨셉
Modern C++의 타입 추론과 람다, 컨셉
HyunJoon Park
 
파이썬 스터디 2주차
파이썬 스터디 2주차파이썬 스터디 2주차
파이썬 스터디 2주차
Han Sung Kim
 
2 1. variables & data types
2 1. variables & data types2 1. variables & data types
2 1. variables & data types웅식 전
 
Lua 문법 -함수
Lua 문법 -함수Lua 문법 -함수
Lua 문법 -함수
Jaehoon Lee
 
Lua 문법
Lua 문법Lua 문법
Lua 문법
Jaehoon Lee
 
C++ Advanced 강의 3주차
C++ Advanced 강의 3주차C++ Advanced 강의 3주차
C++ Advanced 강의 3주차
HyunJoon Park
 
자바스크립트 함수
자바스크립트 함수자바스크립트 함수
자바스크립트 함수유진 변
 
(학생용)+프로그래밍+및+실습 Chap4 3
(학생용)+프로그래밍+및+실습 Chap4 3(학생용)+프로그래밍+및+실습 Chap4 3
(학생용)+프로그래밍+및+실습 Chap4 3guestc0587d1
 
[C++ korea] effective modern c++ study item8~10 정은식
[C++ korea] effective modern c++ study item8~10 정은식[C++ korea] effective modern c++ study item8~10 정은식
[C++ korea] effective modern c++ study item8~10 정은식
은식 정
 
C++ 11 에 대해서 쉽게 알아봅시다 1부
C++ 11 에 대해서 쉽게 알아봅시다 1부C++ 11 에 대해서 쉽게 알아봅시다 1부
C++ 11 에 대해서 쉽게 알아봅시다 1부
Gwangwhi Mah
 
2. c언어의 기본
2. c언어의 기본2. c언어의 기본
2. c언어의 기본
SeonMan Kim
 
[devil's camp] - 알고리즘 대회와 STL (박인서)
[devil's camp] - 알고리즘 대회와 STL (박인서)[devil's camp] - 알고리즘 대회와 STL (박인서)
[devil's camp] - 알고리즘 대회와 STL (박인서)
NAVER D2
 
Pure Function and Rx
Pure Function and RxPure Function and Rx
Pure Function and Rx
Hyungho Ko
 

What's hot (20)

C수업자료
C수업자료C수업자료
C수업자료
 
6장 표현식 및 문장
6장 표현식 및 문장6장 표현식 및 문장
6장 표현식 및 문장
 
Refelction의 개념과 RTTR 라이브러리
Refelction의 개념과 RTTR 라이브러리Refelction의 개념과 RTTR 라이브러리
Refelction의 개념과 RTTR 라이브러리
 
C++ 타입 추론
C++ 타입 추론C++ 타입 추론
C++ 타입 추론
 
프로그래밍 대회: C++11 이야기
프로그래밍 대회: C++11 이야기프로그래밍 대회: C++11 이야기
프로그래밍 대회: C++11 이야기
 
프로그래밍 및 실습 Chap2
프로그래밍 및 실습 Chap2프로그래밍 및 실습 Chap2
프로그래밍 및 실습 Chap2
 
Modern C++의 타입 추론과 람다, 컨셉
Modern C++의 타입 추론과 람다, 컨셉Modern C++의 타입 추론과 람다, 컨셉
Modern C++의 타입 추론과 람다, 컨셉
 
파이썬 스터디 2주차
파이썬 스터디 2주차파이썬 스터디 2주차
파이썬 스터디 2주차
 
2 1. variables & data types
2 1. variables & data types2 1. variables & data types
2 1. variables & data types
 
Lua 문법 -함수
Lua 문법 -함수Lua 문법 -함수
Lua 문법 -함수
 
Lua 문법
Lua 문법Lua 문법
Lua 문법
 
C++ Advanced 강의 3주차
C++ Advanced 강의 3주차C++ Advanced 강의 3주차
C++ Advanced 강의 3주차
 
자바스크립트 함수
자바스크립트 함수자바스크립트 함수
자바스크립트 함수
 
(학생용)+프로그래밍+및+실습 Chap4 3
(학생용)+프로그래밍+및+실습 Chap4 3(학생용)+프로그래밍+및+실습 Chap4 3
(학생용)+프로그래밍+및+실습 Chap4 3
 
[C++ korea] effective modern c++ study item8~10 정은식
[C++ korea] effective modern c++ study item8~10 정은식[C++ korea] effective modern c++ study item8~10 정은식
[C++ korea] effective modern c++ study item8~10 정은식
 
C++ 11 에 대해서 쉽게 알아봅시다 1부
C++ 11 에 대해서 쉽게 알아봅시다 1부C++ 11 에 대해서 쉽게 알아봅시다 1부
C++ 11 에 대해서 쉽게 알아봅시다 1부
 
What’s new in c++11
What’s new in c++11What’s new in c++11
What’s new in c++11
 
2. c언어의 기본
2. c언어의 기본2. c언어의 기본
2. c언어의 기본
 
[devil's camp] - 알고리즘 대회와 STL (박인서)
[devil's camp] - 알고리즘 대회와 STL (박인서)[devil's camp] - 알고리즘 대회와 STL (박인서)
[devil's camp] - 알고리즘 대회와 STL (박인서)
 
Pure Function and Rx
Pure Function and RxPure Function and Rx
Pure Function and Rx
 

Viewers also liked

코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(1)
코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(1)코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(1)
코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(1)
유익아카데미
 
ประวัติ ภาษาซี
ประวัติ ภาษาซีประวัติ ภาษาซี
ประวัติ ภาษาซี
del1997
 
Whte Paper: Using aws for disaster recovery
Whte Paper:  Using aws for disaster recoveryWhte Paper:  Using aws for disaster recovery
Whte Paper: Using aws for disaster recoveryPBTAdvantage
 
SCREENPLAY - THROUGH HER EYES
SCREENPLAY - THROUGH HER EYESSCREENPLAY - THROUGH HER EYES
SCREENPLAY - THROUGH HER EYES
Syed Shan Tariq
 
Four Graphs, showing Primary Research (Qualtive Data)
Four Graphs, showing Primary Research (Qualtive Data)Four Graphs, showing Primary Research (Qualtive Data)
Four Graphs, showing Primary Research (Qualtive Data)
_hayley_
 
Manual de establecimiento de pasturas
Manual de establecimiento de pasturasManual de establecimiento de pasturas
Manual de establecimiento de pasturas
razasbovinasdecolombia
 
코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(2)
코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(2)코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(2)
코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(2)
유익아카데미
 
Owasp top 10
Owasp top 10  Owasp top 10
Owasp top 10
Pensamiento Libre
 
Breeding for profit (australia)
Breeding for profit (australia)Breeding for profit (australia)
Breeding for profit (australia)
razasbovinasdecolombia
 
Cri corte taurino 2015
Cri corte taurino 2015Cri corte taurino 2015
Cri corte taurino 2015
razasbovinasdecolombia
 
MX-Sync Brochure
MX-Sync BrochureMX-Sync Brochure
MX-Sync Brochure
PBTAdvantage
 
My market presentations
My market presentationsMy market presentations
My market presentations
08abisogung
 
EGE-2014
EGE-2014EGE-2014
EGE-2014
EGE-GIA
 
Cattle care standards (usa)
Cattle care standards (usa)Cattle care standards (usa)
Cattle care standards (usa)
razasbovinasdecolombia
 
Meritorious and Glorious Service at ICAI, New Delhi
Meritorious and Glorious Service at ICAI, New DelhiMeritorious and Glorious Service at ICAI, New Delhi
Meritorious and Glorious Service at ICAI, New DelhiSamuel Ernest
 
Laura mulvey theory shan and wasay
Laura mulvey theory shan and wasayLaura mulvey theory shan and wasay
Laura mulvey theory shan and wasaySyed Shan Tariq
 
Director research
Director researchDirector research
Director research
Syed Shan Tariq
 

Viewers also liked (20)

코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(1)
코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(1)코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(1)
코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(1)
 
ประวัติ ภาษาซี
ประวัติ ภาษาซีประวัติ ภาษาซี
ประวัติ ภาษาซี
 
Whte Paper: Using aws for disaster recovery
Whte Paper:  Using aws for disaster recoveryWhte Paper:  Using aws for disaster recovery
Whte Paper: Using aws for disaster recovery
 
SCREENPLAY - THROUGH HER EYES
SCREENPLAY - THROUGH HER EYESSCREENPLAY - THROUGH HER EYES
SCREENPLAY - THROUGH HER EYES
 
Film referencing
Film referencingFilm referencing
Film referencing
 
Film treatment
Film treatmentFilm treatment
Film treatment
 
Four Graphs, showing Primary Research (Qualtive Data)
Four Graphs, showing Primary Research (Qualtive Data)Four Graphs, showing Primary Research (Qualtive Data)
Four Graphs, showing Primary Research (Qualtive Data)
 
Manual de establecimiento de pasturas
Manual de establecimiento de pasturasManual de establecimiento de pasturas
Manual de establecimiento de pasturas
 
코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(2)
코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(2)코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(2)
코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(2)
 
Owasp top 10
Owasp top 10  Owasp top 10
Owasp top 10
 
Breeding for profit (australia)
Breeding for profit (australia)Breeding for profit (australia)
Breeding for profit (australia)
 
Cri corte taurino 2015
Cri corte taurino 2015Cri corte taurino 2015
Cri corte taurino 2015
 
MX-Sync Brochure
MX-Sync BrochureMX-Sync Brochure
MX-Sync Brochure
 
My market presentations
My market presentationsMy market presentations
My market presentations
 
EGE-2014
EGE-2014EGE-2014
EGE-2014
 
Lancaster Leadership Philosophy
Lancaster Leadership PhilosophyLancaster Leadership Philosophy
Lancaster Leadership Philosophy
 
Cattle care standards (usa)
Cattle care standards (usa)Cattle care standards (usa)
Cattle care standards (usa)
 
Meritorious and Glorious Service at ICAI, New Delhi
Meritorious and Glorious Service at ICAI, New DelhiMeritorious and Glorious Service at ICAI, New Delhi
Meritorious and Glorious Service at ICAI, New Delhi
 
Laura mulvey theory shan and wasay
Laura mulvey theory shan and wasayLaura mulvey theory shan and wasay
Laura mulvey theory shan and wasay
 
Director research
Director researchDirector research
Director research
 

Similar to 코딩인카페 C&JAVA 기초과정 C프로그래밍(3)

스칼라와 스파크 영혼의 듀오
스칼라와 스파크 영혼의 듀오스칼라와 스파크 영혼의 듀오
스칼라와 스파크 영혼의 듀오
Taeoh Kim
 
헷갈리는 자바스크립트 정리
헷갈리는 자바스크립트 정리헷갈리는 자바스크립트 정리
헷갈리는 자바스크립트 정리
은숙 이
 
포트폴리오에서 사용한 모던 C++
포트폴리오에서 사용한 모던 C++포트폴리오에서 사용한 모던 C++
포트폴리오에서 사용한 모던 C++
KWANGIL KIM
 
일단 시작하는 코틀린
일단 시작하는 코틀린일단 시작하는 코틀린
일단 시작하는 코틀린
Park JoongSoo
 
Effective c++(chapter 5,6)
Effective c++(chapter 5,6)Effective c++(chapter 5,6)
Effective c++(chapter 5,6)문익 장
 
C수업자료
C수업자료C수업자료
C수업자료koominsu
 
5장 객체와클래스
5장 객체와클래스5장 객체와클래스
5장 객체와클래스
SeoYeong
 
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
Sang Don Kim
 
자바스크립트 기초문법~함수기초
자바스크립트 기초문법~함수기초자바스크립트 기초문법~함수기초
자바스크립트 기초문법~함수기초
진수 정
 
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)
Kyoungchan Lee
 
스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍
스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍
스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍
Young-Beom Rhee
 
Startup JavaScript 6 - 함수, 스코프, 클로저
Startup JavaScript 6 - 함수, 스코프, 클로저Startup JavaScript 6 - 함수, 스코프, 클로저
Startup JavaScript 6 - 함수, 스코프, 클로저
Circulus
 
함수적 사고 2장
함수적 사고 2장함수적 사고 2장
함수적 사고 2장
HyeonSeok Choi
 
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
NAVER D2
 
HI-ARC PS 101
HI-ARC PS 101HI-ARC PS 101
HI-ARC PS 101
Jae-yeol Lee
 
[C++ Korea] Effective Modern C++ Study item14 16 +신촌
[C++ Korea] Effective Modern C++ Study item14 16 +신촌[C++ Korea] Effective Modern C++ Study item14 16 +신촌
[C++ Korea] Effective Modern C++ Study item14 16 +신촌
Seok-joon Yun
 
Kotlin with fp
Kotlin with fpKotlin with fp
Kotlin with fp
Myeongin Woo
 

Similar to 코딩인카페 C&JAVA 기초과정 C프로그래밍(3) (20)

06장 함수
06장 함수06장 함수
06장 함수
 
스칼라와 스파크 영혼의 듀오
스칼라와 스파크 영혼의 듀오스칼라와 스파크 영혼의 듀오
스칼라와 스파크 영혼의 듀오
 
헷갈리는 자바스크립트 정리
헷갈리는 자바스크립트 정리헷갈리는 자바스크립트 정리
헷갈리는 자바스크립트 정리
 
6 function
6 function6 function
6 function
 
포트폴리오에서 사용한 모던 C++
포트폴리오에서 사용한 모던 C++포트폴리오에서 사용한 모던 C++
포트폴리오에서 사용한 모던 C++
 
C review
C  reviewC  review
C review
 
일단 시작하는 코틀린
일단 시작하는 코틀린일단 시작하는 코틀린
일단 시작하는 코틀린
 
Effective c++(chapter 5,6)
Effective c++(chapter 5,6)Effective c++(chapter 5,6)
Effective c++(chapter 5,6)
 
C수업자료
C수업자료C수업자료
C수업자료
 
5장 객체와클래스
5장 객체와클래스5장 객체와클래스
5장 객체와클래스
 
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
 
자바스크립트 기초문법~함수기초
자바스크립트 기초문법~함수기초자바스크립트 기초문법~함수기초
자바스크립트 기초문법~함수기초
 
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)
 
스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍
스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍
스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍
 
Startup JavaScript 6 - 함수, 스코프, 클로저
Startup JavaScript 6 - 함수, 스코프, 클로저Startup JavaScript 6 - 함수, 스코프, 클로저
Startup JavaScript 6 - 함수, 스코프, 클로저
 
함수적 사고 2장
함수적 사고 2장함수적 사고 2장
함수적 사고 2장
 
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
 
HI-ARC PS 101
HI-ARC PS 101HI-ARC PS 101
HI-ARC PS 101
 
[C++ Korea] Effective Modern C++ Study item14 16 +신촌
[C++ Korea] Effective Modern C++ Study item14 16 +신촌[C++ Korea] Effective Modern C++ Study item14 16 +신촌
[C++ Korea] Effective Modern C++ Study item14 16 +신촌
 
Kotlin with fp
Kotlin with fpKotlin with fp
Kotlin with fp
 

코딩인카페 C&JAVA 기초과정 C프로그래밍(3)

  • 2. YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ 2 C 프로그래밍 (3)반복문(for문) for문 구조 for문 예시 코드 - 초기 값(식1)에서 시작하여 반복 여부 조건 (식2)이 참이면 블록 내의 문을 처리 - 블록 내 문의 처리 후 식3에 의해 초기값이 변화됨 for(초기화 식1; 반복 여부 조건 식2; 초기값 변화 식3) { 문1; 문2; … } int i; for(i=1; i<=5; i++){ printf(“%d번째 반복입니다.n”, i); } printf(“반복을 종료했습니다. n”); 1번째 반복입니다. 2번째 반복입니다. 3번째 반복입니다. 4번째 반복입니다. 5번째 반복입니다. 반복을 종료했습니다. 실행 결과 블록 내의 문을 순서대로 반복 처리합니다. for 조건 문 참 거짓 변수 i값을 1로 초기화, i값이 5보다 커질 때까지 내부의 문을 반복 처리 후 i값을 1씩 증가시킴 반복할 때마다 값이 1씩 증가합니다.
  • 3. YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ 3 C 프로그래밍 (3)반복문(while문) while문 구조 while문 예시 코드 - 조건이 참이면 지정한 문을 몇 번이라도 반복 처리 - while문은 조건이 거짓이면 while문을 처리하지 않음 while(조건) { 문1; 문2; … } int i=1; while(i <= 5){ printf(“%d번째 반복입니다. n”, i); i++; } printf(“반복을 종료했습니다. n”); 1번째 반복입니다. 2번째 반복입니다. 3번째 반복입니다. 4번째 반복입니다. 5번째 반복입니다. 반복을 종료했습니다. 실행 결과 블록 내의 문을 순서대로 반복 처리합니다. while 조건 문 참 거짓 조건이 거짓이 되도록 증가시킵니다. 무한 반복이 되지 않도록 하는 역할 반복할 때마다 값이 1씩 증가합니다. 조건 표기에 주의해야 함, 조건이 무조건 참인 경우는 무한반복하게 됨
  • 4. YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ 4 C 프로그래밍 (3)반복문(do~while문) do~while문 구조 do~while 문 예시 코드 - while문과 달리 조건을 판단하기 전에 블록 내의 문을 처리함 - 최소 한 번은 반드시 블록 내의 처리가 이루어짐 do{ 문1; 문2; … } while(조건); int i=1; do{ printf(“%d번째 반복입니다. n”, i); i++; } while(i <= 5); printf(“반복을 종료했습니다. n”); 1번째 반복입니다. 2번째 반복입니다. 3번째 반복입니다. 4번째 반복입니다. 5번째 반복입니다. 반복을 종료했습니다. 실행 결과 블록 내의 문을 순서대로 반복 처리합니다. while 조건 참 거짓 i<=5가 거짓이면 반복을 종료합니다 최소한 한번은 루프 본체가 실행됨 조건이 참이면 반복을 계속합니다. 문 do
  • 5. YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ 5 C 프로그래밍 (3)처리 흐름의 변경 break문 구조 continue문 구조 int res, i; printf(“몇 번째 루프를 중지할까요? (1- 10) n“); scanf(“%d”, &res); for(i=1; i<=10; i++){ printf(“%d번째 처리입니다. n“, i); if(i==res) break; } 몇 번째에서 루프를 중지할까요?(1-10) 3 [enter] 1번째 처리입니다. 2번째 처리입니다. 3번째 처리입니다. 실행 결과 구문 : break; 처리의 흐름을 강제적으로 종료시키고, 그 블록에서 빠져나가는 처리 int res, i; printf(“몇 번째 처리를 건너뛸까요?(1-10) n”); scanf(“%d”, &res); for(i=1; i<=5; i++){ if( i == res) continue; printf(“%d번째 처리입니다. n“, i); } 입력한 횟수에서 반복을 종료함 구문 : continue; 반복문 안의 처리를 건너뛰고 블록의 처음 위치로 돌아가서 다음 처리 실행 몇 번째 처리를 건너뛸까요?(1-10) 3 [enter] 1번째 처리입니다. 2번째 처리입니다. 4번째 처리입니다. 5번째 처리입니다. 실행 결과 10번 반복하는 for문이지 만 입력한 횟수인 3번째 문 처리 후 강제 종료됨 5번 반복하는 for문이지 만 입력한 횟수인 3번째 문은 건너뛰고 다음 문 이후 계속 처리됨 입력한 횟수에서 다음 문은 건너뛰고 처음으로 돌아감
  • 6. YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ 6 C 프로그래밍 (3)배열의 선언 및 이용 int test[5]; 배열의 선언 배열의 요소와 값 대입 - 배열은 같은 형의 복수의 값을 나열하 여 기억하는 기능이며 배열 내 각각의 상자를 배열 요소(element)라고 함 - 배열 선언이란 배열이라는 복수의 상 자를 준비하면서 데이터 형과 식별자 인 배열이름을 지정하는 것 - 배열의 요소 수는 미리 지정해 두어야 하고, [ ] 안에 요소 수를 지정하고 이 번호를 인덱스(index, 첨자)라고 함 - 배열 인덱스는 0부터 시작하기 때문에 마지막 인덱스는 ‘요소 수-1’이 됨 형 이름 배열 이름[요소 수]; int test[5], i; test[0] = 80; test[1] = 60; test[2] = 22; test[3] = 50; test[4] = 75; 1번째 사람의 점수는 80점입니다. 2번째 사람의 점수는 60점입니다. 3번째 사람의 점수는 22점입니다. 4번째 사람의 점수는 50점입니다. 5번째 사람의 점수는 75점입니다. test[0] test[1] test[2] test[3] test[4] for(i=0; i<5; i++){ printf(“%d번째 사람 의 점수는 %d점입니다. n”, i+1, test[i]); } int형 5개의 값을 배열로 선언 배열 이름[인덱스] = 식; 실행 결과 test[0] test[1] test[2] test[3] test[4] 80 60 22 50 75
  • 7. YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ 7 C 프로그래밍 (3)배열의 초기화 int test[5] = {80, 60, 22, 50, 75}; || int test[] = {80, 60, 22, 50, 75}; 배열의 초기화 배열의 초기화 예시코드 - 배열의 초기화는 ‘배열의 선언’과 ‘값 의 대입’을 한번에 표기 - { } 안에 각 요소의 값을 나열해서 표 기하면 배열이 준비되었을 때 각각의 값이 배열의 요소에 저장됨 - { } 안에 지정하는 값을 초기화 값 (initializer) 또는 초기자라고 함 - 요소 수를 지정하지 않으면 초기화 값 의 수에 따라 요소가 자동으로 준비됨 - 요소 수보다 적은 초기화 값을 표기하 면 남는 요소에 0 값이 자동 저장 형이름 배열이름[요소수]={값0, 값1,…}; int test[5] = {80, 60, 22, 50, 75} int i; for(i=0; i<5; i++){ printf(“%d번째 사람의 점수는 %d점입 니다. n”, i+1, test[i]); } 1번째 사람의 점수는 80점입니다. 2번째 사람의 점수는 60점입니다. 3번째 사람의 점수는 22점입니다. 4번째 사람의 점수는 50점입니다. 5번째 사람의 점수는 75점입니다. 실행 결과 test[0] test[1] test[2] test[3] test[4] 80 60 22 50 75 5개의 배열 요소를 초기화
  • 8. YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ 8 C 프로그래밍 (3)다차원 배열 다차원 배열 다차원 배열 예시코드 - 배열은 2차원 이상으로 나열된 다차원 배열로 지정 할 수 있음 - 배열의 n차원은 요소 수를 n개 나열하 면 됨 - 다차원 배열의 초기화는 아래와 같이 여러가지 방법으로 가능함 - 배열의 인덱스를 지정하여 값을 대입 test[0][0] = 80; … test[1][4] = 58; - 배열의 요소별 값을 모두 초기화 방법 int test[2][5] = {{80, 60, 22, 50, 75}, {90, 55, 68, 72, 58}} int test[ ][5] = {{80, 60, 22, 50, 75}, {90, 55, 68, 72, 58}} 형 이름 배열 이름[요소 수][요소 수] int test[2][5] = {{80, 60, 22, 50, 75}, {90, 55, 68, 72, 58}} for(int i=0; i<5; i++){ printf(“%d번째 사람의 국어 %d점, 산 수 %d점입니다. n”, i+1, test[0][i], test[1][i]); } 1번째 사람의 국어 80점, 산수 90점입니다. 2번째 사람의 국어 60점, 산수 55점입니다. 3번째 사람의 국어 22점, 산수 68점입니다. 4번째 사람의 국어 50점, 산수 72점입니다. 5번째 사람의 국어 75점, 산수 58점입니다. 실행 결과 test[0] test[1] test[2] test[3] test[4] 요소 수를 생략 가능 test[0][0] test[0][1] test[0][2] test[0][3] test[0][4] test[1][0] test[1][1] test[1][2] test[1][3] 80 60 22 50 75 test[1][4] 90 55 68 72 58
  • 9. YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ 9 C 프로그래밍 (3)문자열과 배열 문자열과 배열의 관계 문자열 입출력 예시코드 - 문자열은 char형 배열로 취급 - 문자열 배열의 마지막 요소는 ‘0’ - 문자열 배열의 요소 수는 ‘문자열 길이+1’ 이상이 필요 - “ “로 문자열을 초기화할 수 있지만 변수에 대입은 불가함 문자열 배열의 초기화 구문 char str[6]=“Hello” char str[]=“Hello” char str[6]={‘H’, ’e’, ’l’, ’l‘, ’o’, ‘0’}; char str[]={‘H’, ’e’, ’l’, ’l‘, ’o’, ‘0’}; char str1[ ] = “Hello”; char str2[100]; printf(“str1 문자열은 %s 입니다. n”, str1); printf(“문자열을 입력하세요. n”); scanf(“%s”, str2); printf(“입력한 문자열은 %s입니다. n”, str2); str1 문자열은 Hello 입니다. 문자열을 입력하세요. Hello [enter] 입력한 문자열은 Hello입니다. 실행 결과 str[0] str[1] str[2] str[3] str[4] ‘H’ ‘e’ ‘l’ ‘l’ str[5] ‘l’ ‘0’ 문자열 출력 위한 변환 사양은 %s 사용 문자열 입력 변환사양 은 %s 사용, 배열 이름 에 & 붙이지 않음
  • 10. YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ C 프로그래밍 (3)함수의 정의와 호출 함수의 정의 함수의 호출 - 함수(function) : 여러 번 반복하는 일정한 처리를 하나로 모아두고 호출해서 사용하 는 기능 - 함수를 이용하기 위해서는 2가지 과정이 필요함(함수 정의 및 호출) - 함수의 정의는 코드 안에서 일정하게 정리 된 처리를 작성하는 것 반환 값의 형 함수 이름(인수 리스트) { 문; . . . return 식; } - 함수 호출(function call) : 정의된 함 수를 이용하는 것 - 함수를 호출하기 위해서는 함수 이름 과 인수 리스트, 마지막에 세미콜론을 붙임 - 함수가 호출되면 정의한 함수가 일괄 적으로 처리됨 함수 이름(인수 리스트); 함수의 이름은 식별자를 사용 처리를 블록 내에 정리하여 작성 10 /* buy 함수 호출 */ int main(void) { buy(); return 0; } 차를 구입했습 니다. 실행 결과예시 코드 /* buy 함수 정의 */ void buy(void) { printf(“차를 구입했습니다. n”); } 함수의 이름
  • 11. YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ C 프로그래밍 (3)함수의 인수 함수의 인수 인수를 갖는 함수 예시 코드 - 인수(argument) : 함수로 전달하는 정 보 - 함수는 인수를 이용하여 호출한 장소 로부터 함수 안으로 어떤 정보(값)을 전달하고 그 값에 따른 처리 가능 - 변수 x(인수)는 buy() 함수 내부 처리 에 이용할 수 있으며 함수 안에서만 사용 가능 /* buy 함수 정의 */ void buy( int x ) { printf(“%d만 원짜리 차를 구입했 습니다. n”, x ); } /* buy 함수 정의 */ void buy(int x ) { printf(“%d만 원짜리 차를 구입했습 니다. n”, x ); } /* buy 함수 호출 */ int main(void) { buy( 20 ); buy( 50 ); return 0; } int형 인수 준비 11 20만 원짜리 차를 구입했습니다. 50만 원짜리 차를 구입했습니다. 실행 결과 인수를 함수 안에서 사용 값을 전달받는 가인수 (parameter) 또는 매개변수 전달 받은 값을 출력 실인수 20을 전달해서 호출 실인수 50을 전달해서 호출
  • 12. YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ C 프로그래밍 (3)함수의 반환 값 함수의 반환 값 함수 반환 값 예시 코드 - 반환 값(return value) : 함수 본체로부 터 함수를 호출한 곳으로 반환되는 특정한 정보 - 반환 값을 반환하기 위해서는 반환하 는 값의 데이터 형을 함수 이름 앞에 표기(①) - 함수의 블록 안에 return 문을 사용해 서 실제로 식의 값을 반환 처리(②) 반환 값의 형 함수 이름(인수 리스트) { 문; . . . return 식; } int buy(int x, int y) { int z; printf(“%d만원과 %d만 원짜리 차를 구입했습니다. n”, x, y ); z = x+y; return z; } int main(void) { int num1=20, num2=50, sum; printf(“%d만원과 %d만 원짜리 차를 구입했습니다.”, num1, num2); sum = buy(num1, num2); printf(“합계 %d만원입니다. n”, sum); return 0; } 반환 값의 형을 지정 12 20만원과 50만 원짜리 차를 구입했습니 다. 합계 70만원입니다. 실행 결과 함수를 호출한 곳으 로 식의 값을 반환 ② ① 반환 값을 갖는 함수 함수를 호출하고 그 반환 값을 변수 sum에 대입
  • 13. YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ C 프로그래밍 (3)인수와 반환 값 없는 함수 인수 없는 함수 반환 값 없는 함수 - 인수 없는 함수를 정의할 때는 void 라는 특수한 형 이름으로 지정 - 인수가 없는 함수를 호출할 때는 ( ) 값을 지정하지 않고 호출 /* buy 함수 정의 */ void buy( void ) { printf(“차를 구입했습니다. n”); } /* buy 함수 호출 */ int main(void){ buy( ); } 인수가 없는 경우 void형으로 지정 13 인수를 전달하지 않고 호출 - 반환 값이 없는 함수를 정의할 때는 반환 값의 형을 void 형으로 지정 - 반환 값이 없는 함수는 블록 마지막 } 까지 처리되거나, return; 문으로 종료 /* buy 함수 정의 */ void buy( void ) { printf(“차를 구입했습니다. n”); (return;) } /* buy 함수 호출 */ int main(void){ buy( ); } 반환 값이 없는 경우 void형으로 지정 반환 값이 없으므로 함수만 호출
  • 14. YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ C 프로그래밍 (3)함수 형식 매크로 함수 형식 매크로 함수 형식 매크로 예시 코드 - 함수를 이용하면 인수나 반환 값을 전달할 때 필요 이상으로 시간이 걸 리는 경우가 있음 - 함수 형식 매크로(function-like macro)를 이용하면 처리 속도 향상 가능 - 함수 형식 매크로를 호출하면 프리프 로세서에 의해 정의된 식으로 변환됨 [ 함수 형식 매크로의 정의 ] #define 매크로 이름(인수) (식) #define MAX(x, y) (x > y ? x : y) [함수 형식 매크로의 호출] 매크로 이름(인수); ans = MAX(num1, num2); #include <stdio.h> #define MAX(x, y) (x > y ? x : y) int main(void){ int num1, num2, ans; printf(“1번째 정수를 입력하세요. n”); scanf(“%d”, &num1); printf(“2번째 정수를 입력하세요. n”); scanf(“%d”, &num2); ans = MAX(num1, num2); printf(“최댓값은 %d입니다. n”, ans); return 0; } 14 1번째 정수를 입력하세요. 10 [enter] 2번째 정수를 입력하세요. 프리프로 세서에 의 해 변환 num1 > num2 ? num1 : num2 5 [enter] 최댓값은 10입니 다. 실행 결과
  • 15. YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ 15 C 프로그래밍 (3)변수의 종류와 유효 범위 변수의 종류 변수의 유효 범위 - 지역 변수(local variable) : 함수 안에 서 선언한 변수 - 전역 변수(global variable) : 함수 밖 에서 선언한 변수 - 지역 변수는 for문, if문 블록 안에서 선수에 선언될 수 있으며, 함수의 가 인수도 지역 변수임 - 전역 변수와 지역 변수는 이름이 동 일해도 다른 변수로 인식 처리됨 int a = 0; void func(void) { int c = 2; } int main(void) { int b = 1; } - 지역 변수는 함수 안에서 선언되며 함수가 끝날 때까지 이용 가능, 함수 밖에서는 이용 불가 - 전역 변수는 선언된 소스 코드 전체 에서 이용 가능 int a = 0; void func(void) { int c = 2; } int main(void) { int b = 1; func( ); return 0; } 전역변수 지역변수 지역변수 c의 유효범위 지역변수 b의 유효범위 전역변수 a의 유효 범위
  • 16. YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ C 프로그래밍 (3)변수의 기억 수명 지역 변수의 기억 수명 전역 변수의 기억 수명 ] - 함수가 종료되면 지역 변수의 메모리 공간 은 해제되고 다시 함수를 호출하면 새로운 메모리 공간이 생성됨 - 지역변수에 static을 정적 변수가 되어 전 연 변수처럼 이용 가능, 프로그램 종료시 까지 변수 유지됨 [지역 변수 생성과 소멸] (1) 함수 안에서 지역 변수가 선언될 때 메모리에 특정 공간이 준비됨 (2) 지역 변수에 값이 저장됨 (3) 함수가 종료할 때 지역 변수를 위 한 메모리의 특정 공간은 해제되 고 다른 용도로 사용됨 16 b b 함수 종료 메모리 해제 함수 시작 변수 선언 지역 변수 b - 프로그램이 종료되기 전까지 전역 변 수는 계속 유지되므로 정적 기억 영 역이라고 함 [전역 변수 생성과 소멸] (1) 프로그램 선두에 전역 변수가 선 언되면 프로그램 본체의 처리가 시작하기 전에 한번만 메모리가 확보됨 (2) 전역 변수에 값이 저장됨 (3) 프로그램이 종료되면 전역 변수를 위한 메모리 공간은 해제됨 a a 프로그램 종료 프로그램 시작 전역 변수 a
  • 17. YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ C 프로그래밍 (3)함수 선언 함수 프로토타입 선언 함수 선언 예시 코드 - 함수 프로토타입 선언(function declaration) : 함수를 호출하기 전에 호출하는 함수의 이름, 반환 값의 형, 인수를 선언하는 것 - 이 선언을 해두면 함수 본체를 코드 안의 어느 장소에서 정의해도 정확하 게 호출할 수 있음 - 먼저 함수 선언을 하면 main() 함수 뒤에 함수를 정의 가능 반환 값의 형 함수 이름(인수 리스트); /* max 함수 선언 */ int max(int x, int y); int main(void){ int num1=10, num2=5, ans; printf(“10과 5의 최대값을 구합니다. n”) ans = max(num1, num2); printf(“최댓값은 %d입니다. n”, ans); return 0; } /* max 함수 정의 */ int max(int x, int y) { return x > y ? x : y; } 17 20과 50의 최대값을 구합니다. 최댓값은 50입니다. 실행 결과 /* max 함수 선언 */ int max(int x, int y); int main(void) { … } /* max 함수 정의 */ int max(int x, int y) { … } 함수 프로토타입 선언 함수 선언을 이용 하면 함수 정의는 어느 장소에 해도 되며, 다른 파일로 저장 이용 가능
  • 18. YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ 18 본 자료는 코딩인카페 1기 C&JAVA 기초과정 5회차 자료 중 일부를 발췌한 내용입니다. < 참고자료 > - 그림으로 배우는 C프로그래밍, 마나 다카하시, 영진닷컴.