adopted from KNK C Programming : A Modern Approach

Slides:



Advertisements
Similar presentations
Ⅰ. 연산자 Ⅱ. 제어 구조. 연산자 : 할당 연산자 - 사용자가 정의한 변수에 임의의 값을 저장하는 기능 strvar = strVar1+ “ Hello ”
Advertisements

파이썬 (Python). 1 일 : 파이썬 프로그래밍 기초 2 일 : 객체, 문자열 3 일 : 문자인코딩, 정규표현식, 옛한글 4 일 : 파일 입출력 5 일 : 함수와 모듈 6 일 : 원시 말뭉치 다루기 실습 7 일 : 주석 말뭉치 다루기 실습 8 일 : 웹 데이터로.
변수와 조건문 빛나리 36 호 박승운. 파이썬 쉽게 사용하기 Python IDLE 사용 FILE - New File 로 파일 만들기 Run – Run Module 로 실행하기.
6 장. printf 와 scanf 함수에 대한 고찰 printf 함수 이야기 printf 는 문자열을 출력하는 함수이다. – 예제 printf1.c 참조 printf 는 특수 문자 출력이 가능하다. 특수 문자의 미 \a 경고음 소리 발생 \b 백스페이스 (backspace)
연산자와 표현식 C H A P T E R 3. 소개 C 에는 많은 내장 연산자가 있다 프로그램에서 연산자는 데이터와 변수 조작에 사용 C 연산자의 분류 1. 산술 연산자 2. 관계 연산자 3. 논리 연산자 4. 대입 연산자 5. 증가 감소 연산자 6. 조건 연산자 7.
C 언어 컴퓨터학과 C 언어 ( STS ) (Chap5. Selection-Making Decisions ) C 언어.
Power Java 제6장 조건과 반복.
제 1장 C 언어의 소개.
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
C 5장. 제어문 #include <stdio.h> int main(void) { int num;
Chapter 7. 조건문.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
Chapter 04 C 연산자의 이해.
제3장 스택과 큐.
고급 선택 제어문과 반복문 Chapter 9 C에서의 다중 선택 제어문 선 검사 반복 구조와 for 문
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
Chapter 3 Flow of Control
2주차: 변수, 수식, Control Flow.
Part 07 제어 구조 ©우균, 창병모 © 우균, 창병모.
자바 프로그래밍 입문 : 객체지향적 사고법 chapter 04. 연산자와 제어문.
Tail-recursive Function, High-order Function
순서도.
C#.
4장 제어문 선택문: if 문, if – else 문, switch 문
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express.
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express.
Chapter 09 반복문.
쉽게 풀어쓴 C언어 Express 제7장 반복문 C Express Slide 1 (of 27)
MATLAB
JA A V W. 03.
C 언어 교육 02 주차 – scanf & 반복문과 조건문 교육부장 조하정.
어서와 C언어는 처음이지 제14장.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
adopted from KNK C Programming : A Modern Approach
Selection-- Making Decision
7장. 다양한 형태의 반복문. 7장. 다양한 형태의 반복문 7-1 반복문이란? 반복문의 기능 세 가지 형태의 반복문 특정 영역을 특정 조건이 만족하는 동안에 반복 실행하기 위한 문장 7-1 반복문이란? 반복문의 기능 특정 영역을 특정 조건이 만족하는 동안에 반복.
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
연산자 (Operator).
제어문 & 반복문 C스터디 2주차.
에어 조건문.
2장. 변수와 타입.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
컴퓨터 프로그래밍 기초 - 5th : 조건문(if, else if, else, switch-case) -
Choi Seong Yun 컴퓨터 프로그래밍 기초 #06 : 반복문 Choi Seong Yun
[INA470] Java Programming Youn-Hee Han
제 5장 제어문 Hello!! C 언어 강성호 김학배 최우영.
김선균 컴퓨터 프로그래밍 기초 - 7th : 함수 - 김선균
Chapter 02. 자바 기본 문법.
5장 선택제어문 if 선택문 switch-case 선택문 다양한 프로그램 작성 조건 연산자.
2007 1학기 08 반복문.
Control Flow 요약.
Fucntion 요약.
adopted from KNK C Programming : A Modern Approach
에어 PHP 입문.
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
2장 PHP 기초 PHP의 시작과 끝을 이해한다. 주석문에 대하여 이해한다. echo 문을 이용하여 화면에 출력하
SPL3D Printer If 조건문.
C++ 프로그래밍 기초 √ 원리를 알면 IT가 맛있다 3장. 연산자.
7장. 다양한 형태의 반복문. 7장. 다양한 형태의 반복문 7-1 반복문이란? 반복문의 기능 세 가지 형태의 반복문 특정 영역을 특정 조건이 만족하는 동안에 반복 실행하기 위한 문장 7-1 반복문이란? 반복문의 기능 특정 영역을 특정 조건이 만족하는 동안에 반복.
Chapter 08 조건문.
함수, 모듈.
Summary of Pointers and Arrays
제 22 강 논리식 및 논리 값 shcho.pe.kr.
Numerical Analysis Programming using NRs
8장 선택 논리 II 1. 논리연산자 1.1 논리연산자 : AND (&&) 1.2 논리연산자 : OR (||)
이산수학(Discrete Mathematics)  술어와 한정기호 (Predicates and Quantifiers)
3장 (2) 구문과 의미론 순천향대학교 컴퓨터공학과 하상호.
adopted from KNK C Programming : A Modern Approach
PHP 기초문법 PHP를 공부하는데 있어 가장 기초가 되는 PHP기초문법에 대해서 배워 봅니다.
Presentation transcript:

adopted from KNK C Programming : A Modern Approach Selection Statment adopted from KNK C Programming : A Modern Approach

Copyright © 2008 W. W. Norton & Company. Statements 문장 지금까지 배운 것은 return 문장과 표현식 문장 C의 나머지 문장들은 아래 3개 부류로 구분됨: Selection statements 선택문: if 와 switch Iteration statements 반복문: while, do, 와 for Jump statements 점프문: break, continue, 와 goto. (return 는 이 부류에 속함.) 다른 C 문장들: 합성 문장 Null 문장 Copyright © 2008 W. W. Norton & Company. All rights reserved.

Logical Expressions 논리 표현식 C의 여러 문장은 “true” or “false”를 알기 위해 문장을 평가함 예를 if 문장이 i < j를 검사함; 이 문장이 참이면 i은 j보다 작다는 뜻. i < j의 비교 결과는 정수를 갖음: 0 (false) 또는 1 (true). Copyright © 2008 W. W. Norton & Company. All rights reserved.

Relational Operators 관계 연산자 C의 relational operators 관계 연산자: < less than > greater than <= less than or equal to >= greater than or equal to 관계 연산자의 우선 순위는 수식 연산자들보다 낮음 example, i + j < k - 1 는(i + j) < (k - 1)을 뜻함. 관계 연산자는 왼쪽에서 오른쪽으로 결합됨. 표현식에 쓰이면 0 (false) , 1 (true)의 결과를 갖음 i < j < k (i < j) < k i < j 의 결과로 1 또는 0 가 나오고 그 후에 k와 비교됨 Copyright © 2008 W. W. Norton & Company. All rights reserved.

Equality Operators 동치 연산자 C 에는 두개의 equality operators 동치 연산자가 있음: == equal to != not equal to 동치 연산자는 관계 연산자보다 우선순위가 낮음 왼쪽 결함 결과로 0 (false) 또는 1 (true) i < j == j < k (i < j) == (j < k) Copyright © 2008 W. W. Norton & Company. All rights reserved.

Logical Operators 논리 연산자 ! logical negation (unary) && logical and (binary) || logical or (binary) 논리 연산자의 동작: !expr 의 결과는 expr 의 값이 0 일 때만 참. 참이면 거짓, 거짓이면 참 expr1 && expr2 는 expr1 와 expr2의 값이 0이 아닐 때만 참. 둘 다 참이면 참, 아니면 거짓 expr1 || expr2 의 결과는 expr1 와 expr2 중 하나 또는 둘 다 0이 아닐 때만 참. 둘 중 하나가 참이면 참, 둘 다 거짓이면 거짓 결과 0 은 false 1 은 true 피 연산자 0 은 false으로 처리 > 0 은 true로 처리 Copyright © 2008 W. W. Norton & Company. All rights reserved.

Copyright © 2008 W. W. Norton & Company. Logical Operators && 와 || 는 빠른 판단이 가능함. 왼쪽 먼저 검사 후 판단 가능하면 오른쪽 검사 안함 Example: (i != 0) && (j / i > 0) // 영으로 나누기 방지 Copyright © 2008 W. W. Norton & Company. All rights reserved.

Copyright © 2008 W. W. Norton & Company. Logical Operators ! 연산자는 단항 연산자와 같은 우선순위를 갖음 && 와 || 의 우선 순위는 관계연산자와 동치 연산자보다 낮음 예, i < j && k == m 는 (i < j) && (k == m) 을 뜻함. ! 연산자는 오른쪽 결합이고; && 와 || 는 왼쪽 결합 임 Copyright © 2008 W. W. Norton & Company. All rights reserved.

Copyright © 2008 W. W. Norton & Company. if 문 If문은 표현식 검사 결과에 따라 서로 다른 문장을 선택할 수 있도록 함 가장 간단한 형태의 if 문은 다음과 같음 if ( expression ) statement if 문이 실행되어, 표현식 expression 이 평가되어 0이 아닌 값이 나오면 statement 문장이 실행됨 Example: if (line_num == MAX_LINES) line_num = 0; Copyright © 2008 W. W. Norton & Company. All rights reserved.

Copyright © 2008 W. W. Norton & Company. The if Statement == (equality 동치) 를 = (assignment 할당)과 혼돈하는 것이 가장 흔한 실수 다음의 문장은 if (i == 0) … i 가 0 인지 비교함. if (i = 0) … i에 0을 할당하고, 0이 아닌지 판단하는 문장임 Copyright © 2008 W. W. Norton & Company. All rights reserved.

Copyright © 2008 W. W. Norton & Company. The if Statement 많은 경우 if문에 비교문장은 어떤 특정 값의 범위 내에 있는 검사하기 위해 사용됨 0 £ i < n인지 검사: if (0 <= i && i < n) … 그 반대의 경우 검사 (i 가 범위 밖에 존재): if (i < 0 || i >= n) … Copyright © 2008 W. W. Norton & Company. All rights reserved.

Compound Statements 합성 문장 if 문의 형식에서 statement는 단수로 표현됨: if ( expression ) statement if 문이 두 개 이상의 문장을 제어하기 위해서 compound statement 합성 문장을 써야 함. 합성 문장은 다음의 형식을 갖음 { statements } 여러 문장을 중괄호로 묶으면 컴파일러가 보기에는 마치 한 묶음으로 처리해야 하는 문장으로 보게 됨 Copyright © 2008 W. W. Norton & Company. All rights reserved.

Copyright © 2008 W. W. Norton & Company. Compound Statements Example: { line_num = 0; page_num++; } 합성 문장은 여러 줄로 나뉘어 작성됨. 한 문장이 한 줄 { line_num = 0; page_num++; } if 문자에 쓰인 합성 문자의 예: if (line_num == MAX_LINES) { Copyright © 2008 W. W. Norton & Company. All rights reserved.

Copyright © 2008 W. W. Norton & Company. else Clause (절) If 문은 else 절이 있을 수 있음: if ( expression ) statement else statement else 뒤에 따르는 문장은 검사식이 0일 때 수행됨 Example: if (i > j) max = i; else max = j; Copyright © 2008 W. W. Norton & Company. All rights reserved.

Copyright © 2008 W. W. Norton & Company. The else Clause if 문은 또 다른 if 문 내에 포함 될 수 있음: 중첩가능 if (i > j) if (i > k) max = i; else max = k; if (j > k) max = j; 각else 절을 if 문과 정렬하면 읽기 쉬워짐 if (i > j) { if (i > k) max = i; else max = k; } else { if (j > k) max = j; } if (i > j) { if (i > k) { max = i; } else { max = k; } if (j > k) { max = j; Copyright © 2008 W. W. Norton & Company. All rights reserved.

Copyright © 2008 W. W. Norton & Company. 중첩 if 문 “cascaded 중첩” if 문은 연달은 검사 조건을 평가하기에 유용함 Example: if (n < 0) printf("n is less than 0\n"); else if (n == 0) printf("n is equal to 0\n"); printf("n is greater than 0\n"); Copyright © 2008 W. W. Norton & Company. All rights reserved.

Cascaded if Statements 두 번째 if 문이 첫 번째 if 내에 중첩되었지만 분리해서 쓰지는 않음 대신 else 를 최초의 if에 맞춰서 작성함: if (n < 0) printf("n is less than 0\n"); else if (n == 0) printf("n is equal to 0\n"); else printf("n is greater than 0\n");  Copyright © 2008 W. W. Norton & Company. All rights reserved.

Cascaded if Statements 이런 식으로 표현하면 들여쓰기를 너무 많이 해야 하는 경우를 방지할 수 있음: if ( expression ) statement else if ( expression ) … else Copyright © 2008 W. W. Norton & Company. All rights reserved.

The “Dangling else” Problem If이 중첩되면 “매달린 else” 문제가 생길 수 있음: if (y != 0) if (x != 0) result = x / y; else printf("Error: y is equal to 0\n"); 들여쓰기 상으로는 else 절이 처음의 if 문에 연결된 것처럼 보임. 하지만 C의 규칙은 else 절은 가장 가까운 if 문에 연결됨 Copyright © 2008 W. W. Norton & Company. All rights reserved.

Conditional Expressions 조건식 C의 conditional operator 조건 연산자는 조건 계산 결과에 따라 두 개 중 하나의 값을 표현함 조건 연산자는 두개의 기호로 구성 (? 와 :), 항상 같이 쓰임: expr1 ? expr2 : expr3 피연산자의 형은 상관 없음. 이런 표현식을 조건식 conditional expression이라 부름. 삼항 ternary 연산자라고도 함. 조건식 expr1 ? expr2 : expr3 은“만약 expr1 이 참이면 expr2 아니면 expr3”라고 읽음 Copyright © 2008 W. W. Norton & Company. All rights reserved.

Conditional Expressions Example: int i, j, k; i = 1; j = 2; k = i > j ? i : j; /* k is now 2 */ k = (i >= 0 ? i : 0) + j; /* k is now 3 */ 괄호가 꼭 필요함. 조건식의 기호들은 앞에 말한 연산자들보다 우선 순위가 낮기 때문 조건식은return 문에 주로 쓰임: return i > j ? i : j; 짧지만 난해함 Copyright © 2008 W. W. Norton & Company. All rights reserved.

Conditional Expressions printf 호출에 조건식을 쓰면 유용함 if (i > j) printf("%d\n", i); else printf("%d\n", j); 처럼 쓰는 대신 printf("%d\n", i > j ? i : j); 조건식은 매크로 정의에 많이 쓰임 Copyright © 2008 W. W. Norton & Company. All rights reserved.

Boolean 값: 1 또는 0; true 또는 false Old way C89 C89 Better Usage int flag;   flag = 0; … flag = 1; #define TRUE 1 #define FALSE 0   flag = FALSE; … flag = TRUE; #define BOOL int BOOL flag; 이해하기 어려움 이해가 자연스러움 불리언 조건이 명확함 if (flag == TRUE) … if (flag == FALSE) if (flag) … if (!flag) Copyright © 2008 W. W. Norton & Company. All rights reserved.

Copyright © 2008 W. W. Norton & Company. C99 는_Bool 형을 제공함. 불리언 변수는 다음과 같이 선언됨 _Bool flag; //특별한 변수 형으로 0 과 1만 있음 flag = 5; /* flag에 1이 할당됨 */ C99의 <stdbool.h> 헤더에는 _Bool를 뜻하는 bool을 정의하고 있음. #include <stdbool.h> bool flag; /* same as _Bool flag; */ 그리고 1 과 0을 뜻하는 true 와 false 매크로도 존재함 flag = false; flag = true; Copyright © 2008 W. W. Norton & Company. All rights reserved.

Copyright © 2008 W. W. Norton & Company. switch 문 중첩 if 문 switch 문 if (grade == 4) printf("Excellent"); else if (grade == 3) printf("Good"); else if (grade == 2) printf("Average"); else if (grade == 1) printf("Poor"); else if (grade == 0) printf("Failing"); else printf("Illegal grade");  switch (grade) { case 4: printf("Excellent"); break; case 3: printf("Good"); case 2: printf("Average"); case 1: printf("Poor"); case 0: printf("Failing"); default: printf("Illegal grade"); } Copyright © 2008 W. W. Norton & Company. All rights reserved.

Copyright © 2008 W. W. Norton & Company. The switch Statement switch 문은 중첩 if 문 보다 읽기 쉬움. switch 는 보통 if 보다 빠름. switch 문의 형태: switch ( expression ) { case constant-expression : statements … default : statements } Copyright © 2008 W. W. Norton & Company. All rights reserved.

Copyright © 2008 W. W. Norton & Company. The switch Statement controlling expression: 정수 형만 쓸 수 있음 switch (grade) { case 4: printf("Excellent"); break; case 3: printf("Good"); case 2: printf("Average"); case 1: printf("Poor"); case 0: printf("Failing"); default: printf("Illegal grade"); } Label 정수형의 상수 값 중복 값은 허용 안함 순서는 중요하지 않음 Statements 하나 이상의 문장이 있을 수 있고 break문으로 끝냄 Copyright © 2008 W. W. Norton & Company. All rights reserved.

Copyright © 2008 W. W. Norton & Company. The switch Statement 어떤 문장 전에는 여러 라벨이 있을 수 있음: switch (grade) { case 4: case 3: case 2: case 1: printf("Passing"); break; case 0: printf("Failing"); default: printf("Illegal grade"); } default 케이스가 없고, 제어식에 따라 맞는 케이스가 없으면 switch 다음의 문장을 실행함 Copyright © 2008 W. W. Norton & Company. All rights reserved.