3주차: Control Flow and Others
반복 어떤 작업을 반복적으로 해야 하는 경우 while 문 for 문 do-while 문 1에서 100까지 정수의 합을 구하는 경우 이 강의를 듣는 학생 전부의 기말고사 점수의 평균을 구할 때 while 문 for 문 do-while 문
while 문이 사용된 프로그램의 예 이 프로그램은 1에서 100까지 정수의 합을 구하고 출력하는 프로그램이다. #include<stdio.h> int main(void) { int i, sum; i = 100; sum = 0; while(i >= 0){ sum += i; i = i – 1; } printf(“Sum of 1 – 100 = %d\n”, sum); return 0; 이 프로그램은 1에서 100까지 정수의 합을 구하고 출력하는 프로그램이다. sum += i는 sum = sum + i와 같다.
while 문 형식 expression의 값이 참인 동안 statement를 수행한다.
next part of the program while 문의 수행순서 expression is TRUE? statement next part of the program yes no
for 문이 사용된 프로그램의 예 이 프로그램은 1에서 100까지 정수의 합을 구하고 출력하는 프로그램이다. #include<stdio.h> int main(void) { int i, sum; sum = 0; for(i = 0; i <= 100; i++) sum += i; printf(“Sum of 1 – 100 = %d\n”, sum); return 0; } 이 프로그램은 1에서 100까지 정수의 합을 구하고 출력하는 프로그램이다. i++는 i = i + 1과 같다.
for 문 형식 for(expr1; expr2; expr3) statement 수행과정 1. expr1을 계산한다. Initializing 2. expr2의 값이 참이면 statement를 수행하고, 거짓이면 for 문의 수행을 끝낸다. 3. expr3를 계산한다. 4. 다시 1로 돌아간다.
printf() 함수 stdout으로 무엇인가를 출력하는 함수 printf 함수의 인자(parameter) 함수 이름 control_string, other_arguments
간단한 printf()의 예 #include <stdio.h> int main(void) { printf(“Hello world!\n”); return 0; } control_string: “Hello world!\n”); control_string의 내용을 stdout으로 출력한다.
수식의 값을 출력하는 printf()의 예 avg_score의 정수값을 출력하는 경우 #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; } avg_score의 정수값을 출력하는 경우 %d: conversion specification avg_score: other_arguments
Conversion Specifications and other_arguments %로 시작한다. control_string에 나타난 conversion_specification은 other_arguments의 수식들에 차례로 대응된다. conversion_specification은 해당 수식을 어떻게 출력할 것인가를 정하는 역할을 한다.
수식(Expressions) C에서 수식은 상수(constant), 변수(variable), 연산자(operator)들로 구성된다. 3 정수 상수 수식 3 + sum 3: 정수상수, +: 연산자, sum: 변수 ‘A’ 문자(character) 상수 수식 “This is a string!” 문자열(string) 상수 수식
Conversion Specification의 예 printf(“%d”, 3); printf(“Adding 3 to sum = %d”, sum + 3); printf(“%c%4c%5c”, ‘A’, ‘B’, ‘C’); printf(“%s”, “This is a string”); printf(“%f”, 3.7); printf(“%e”, 3.7); %d: 정수 %c: 문자 %s: 문자열 %f: 실수 %e: 실수(지수형태로 출력) %4c: 4는 출력시의 여백을 나타낸다.
출력시의 여백 조정 printf(“%c%4c%5c”, ‘A’, ‘B’, ‘C’); 출력결과 printf(“%.3f”, avg_fscore); avg_score에 93.333333...이 들어 있는 경우 A C B 9 3 .
scanf() 함수 Conversion specifications %d: 정수 %c: 문자 %s: 문자열 %f: 실수
간단한 성적 처리 프로그램(1/2) #include<stdio.h> int main(void) { float prog_score, eng_score, math_score, avg_score; int i; printf(“\nInput score of the programming:”); scanf(“%f”, &prog_score); printf(“\nInput score of the english:”); scanf(“%f”, &eng_score); printf(“\nInput score of the mathematics:”); scanf(“%f”, &math_score); avg_score = (prog_score + eng_score + math_score) / 3; printf(“\n\n%15s%15s%15s%15s\n”, “Programming”, “English”, “Mathematics”, “Average”);
간단한 성적 처리 프로그램(2/2) for(i = 0; i < 60; i++) printf(“=“); printf(“\n%15.1f%15.1f%15.1f%15.1f\n”, prog_score, eng_score, math_score, avg_score); return 0; } Input score of the programming: 76.0 ... Programming English Mathematics Average =========================================== 76.0 85.3 68.9 76.7
Fundamental Data Types char, signed char, unsigned char 문자(character)를 저장 (signed) short (int), (signed) int, (signed) long (int) 부호있는 정수 unsigned short (int), unsigned (int), unsigned long (int) 부호없는 정수 float, double, long double 실수(부동(浮動)소수)
Bit and Byte in Computers 컴퓨터메모리의 최소기억단위 0 또는 1을 기억 Byte 컴퓨터메모리에서 주소지정의 최소단위 8비트
Characters in C ‘A’가 변수 tmpchr에 들어가는 과정은 다음과 같다. char tmpchr; tmpchr = ‘A’; printf(“%c”, ‘A’); ‘A’가 변수 tmpchr에 들어가는 과정은 다음과 같다. 메모리의 어딘가에 ‘A’가 저장되어 있다. tmpchr도 메모리의 어떤 장소이다. ‘A’라는 값이 tmpchr에 들어간다. memory memory A tmpchr
Representations for Characters 65가 이진수로 메모리에 들어 있다. ASCII 코드 ‘B’ = 66, ‘C’ = 67,... ‘+’, ‘0’, ... 7비트 = 128개의 문자 표현가능
Type char in C char 1바이트 = 8비트 ‘A’ = 65 = 10000012 char tmpchr = ‘A’; tmpchr in memory 1
교재에서 강의와 연관된 부분 1장 1.5 3장 3.1, 3.2, 3.3 4장 4.8, 4.9, 4.10, 4.11, 4.12, 4.13