2주차: 변수, 수식, Control Flow
변수(Variable) 프로그래밍에서의 변수 어떤 값을 저장할 수 있는 장소 숫자, 문자, ... 프로그램의 수행중에 컴퓨터의 주메모리에 존재하는 기억장소
변수가 사용된 프로그램의 예 - 세 점수의 평균을 구하고 화면에 출력하는 프로그램 #include<stdio.h> int main(void) { int score1, score2, score3, avg_score; int num_score; score1 = 87; score2 = 93; score3 = 100; num_score = 3; avg_score = (score1 + score2 + score3) / num_score; printf(“Average score: %d\n”, avg_score); return 0; } - 세 점수의 평균을 구하고 화면에 출력하는 프로그램
변수의 정의(Definition of the Variable) 사용하려는 변수는 프로그램의 앞부분에 정의해주어야 한다. 변수의 타입 변수1의 이름, 변수2의 이름, ...; int score1, score2, score3;
변수의 타입(Type of the Variable) 변수가 저장할 값의 성격을 나타낸다. 정수(int), 실수(float), 문자(char), ... int score1, score2, score3; 정수를 저장할 수 있는 변수 3개 score1, score2, score3를 정의한다.
변수의 이름(Name of the Variable) 변수의 이름은 영어 알파벳, 숫자, underscore(_)로 구성할 수 있다. 제한 숫자로 시작되면 안 된다. 대소문자는 구분된다. Score라는 변수와 score라는 변수는 서로 다른 변수이다. 길이는 보통 31자까지 구분한다. underscore(_)로 시작하는 이름은 쓰지 않는 것이 좋다. C 언어에서 사용되는 명령어(keyword)와 같은 이름을 가질 수 없다. int, float,...
변수값의 할당(Assignments) 변수는 자신의 타입에 적당한 값을 가질 수 있다. 할당연산자(assignment operator)를 사용해서 변수에 값을 할당할 수 있다. score1 = 87; 정수변수 score1에 87이라는 값을 저장한다. 할당연산자: = 87: 정수상수
수식(Expressions) C 프로그램에서는 일반적인 수학적 수식을 사용할 수 있다. 할당수식 할당연산자가 쓰인 수식 (score1 + score2 + score3) / num_score; score1 * 3 – 100; 할당수식 할당연산자가 쓰인 수식 score1 = 89;
변수의 타입과 수식의 타입 이 수식에 나타난 모든 변수들의 타입은 int이다. avg_score = (score1 + score2 + score3) / num_score 이 수식에 나타난 모든 변수들의 타입은 int이다. 실제 계산값은 (score1 + score2 + score3) / num_score = (87 + 93 + 100) / 3 = 93.333...이 된다. 그런데 변수avg_score는 정수변수이고 따라서 avg_score에는 93이라는 값이 들어간다.
실수변수가 들어간 프로그램 #include<stdio.h> int main(void) { float fscore1, fscore2, fscore3; float avg_fscore; int num_score; fscore1 = 87.0; fscore2 = 93.0; fscore3 = 100.0; num_score = 3; avg_fscore = (fscore1 + fscore2 + fscore3) / num_score; printf(“Average score: %f\n”, avg_fscore); return 0; } 이 프로그램에서 avg_fscore는 실수변수이고 따라서 93.333....이라는 값을 가질 수 있다. 87.0: 실수상수
printf() 함수에 대해서 printf() printf(“Average score: %d\n”, avg_score); stdout(기본적으로 화면)으로 무엇인가를 출력한다. printf(“Average score: %d\n”, avg_score); 정수변수 avg_score의 값을 %d자리에 출력한다. 출력결과 Average_score: 93 \n: 한 줄 내림을 뜻하는 특수문자
키보드를 통한 값의 입력 #include<stdio.h> int main(void) { float fscore1, fscore2, fscore3; float avg_fscore; int num_score; scanf(“%f”, &fscore1); scanf(“%f”, &fscore2); scanf(“%f”, &fscore3); num_score = 3; avg_fscore = (fscore1 + fscore2 + fscore3) / num_score; printf(“Average score: %f\n”, avg_fscore); return 0; }
scanf() 함수 stdin(기본적으로 키보드)으로부터 어떤 값을 입력받는다. scanf(“%f”, &fscore1);
Control Flow 일반적인 프로그램의 수행과정 때로는 프로그램의 수행절차가 순차적이 아니어야 하는 경우가 있다. 원시프로그램(source program)의 첫 부분부터 시작해서 순차적으로 진행된다. 때로는 프로그램의 수행절차가 순차적이 아니어야 하는 경우가 있다. 분기, 반복 Control flow는 프로그램의 수행절차를 조정할 수 있게 한다.
조건부 분기 입력받은 점수에 따라서 다른 값을 출력하고 싶을 때 score score >= 90 Grade: A Grade: B yes no
조건부분기프로그램의 예 char는 문자변수에 대한 타입 선언자이다. if-else는 C에서 사용되는 분기문에 이용된다. #include<stdio.h> int main(void) { int score; char grade; scanf(“%d”, &score); if(score >= 90) grade = ‘A’; else grade = ‘B’; printf(“Grade: %c\n”, grade); return 0; } char는 문자변수에 대한 타입 선언자이다. if-else는 C에서 사용되는 분기문에 이용된다. %c는 문자를 출력할 때 사용된다.
if-else 문(文, Statement) statement(s) else statement(s) <- 생략가능
관계수식(Relational Expressions) 관계, 논리 연산자 <, >, >=, <= ==(equal), !=(not equal) !(negation), &&(and), ||(or)
복합문(Compound Statements)
if-else의 예 if(score == 0){ if(score >= 90) grade = ‘F’; printf(“Grade: %c\n”, grade); } if(score >= 90) grade = ‘A’; else if(score >= 80) grade = ‘B’; else if(score >= 70) grade = ‘C’; else if(score >= 60) grade = ‘D’; else grade = ‘F’;
교재에서 강의와 연관된 부분 1장 1.1, 1.2, 1.3, 1.5, 1.6 2장 2.4, 2.5, 2.6 4장 4.1, 4.2, 4.3, 4.4, 4.5, 4.7