04 제어문과 예외처리

Download Report

Transcript 04 제어문과 예외처리

C#
04장. 제어문과 예외처리
04장. 제어문과 예외처리
학습 목표
제어문의 종류와 쓰임새를 이해한다
조건문을 사용하여 문장을 작성한다
반복문을 사용하여 문장을 작성한다
점프문을 사용하여 문장을 작성한다
예외 처리를 이해하고 적절한 예외 처리를 다루어본다
c#
2 / 31
04장. 제어문과 예외처리
목차
•
•
•
•
•
c#
코드 블록과 제어문의 종류
조건문
반복문
점프문
예외처리
3 / 31
04장. 제어문과 예외처리
1. 코드 블록과 제어문의 종류
코드블록 이란
여러 명령문을 논리적으로 결합해야 할 때 중괄호 ({ })를 사용하여 명령문 그룹을 만들어 표
현한다. 이러한 명령문 그룹을 코드 블록(code block)이라고 한다.
코드 블록 안에는 변수를 선언할 수 있고 다른 코드 블록을 포함할 수도 있다
c#
4 / 31
04장. 제어문과 예외처리
1. 코드 블록과 제어문의 종류
using System;
namespace Operators
{
class CodeBlock
{
static void Main(string[] args)
{
int outer;
{
int inner;
outer = 5;
inner = 10;
}
outer = 6;
inner = 12; //오류 ; inner는 위의 블럭안에서 사용되고 소멸됨
}
}
}
c#
5 / 31
04장. 제어문과 예외처리
1. 코드 블록과 제어문의 종류
제어문의 종류
제어문이란 프로그램을 실행할 때는 논리적인 흐름이 필요한데, 이러한 문장의 논리적인 흐
름을 통제해 주는 것. 제어문은 성격에 따라 조건문, 반복문, 그리고 점프문으로 구분할 수
있다
c#
6 / 31
04장. 제어문과 예외처리
2 조건문
조건문은 조건식의 값에 따라 각각에 해당되는 명령문을 수행한다. 조건문에는 if 문과
switch 문이 있다
•If ~ Else 문
-if 문은 조건식에 따라 각각에 해당하는 명령문을 실행한다
if(조건식)
명령문1 ; // 조건식이 참일 때 실행
else
명령문2 ; // 조건식이 거짓일 때 실행
c#
7 / 31
04장. 제어문과 예외처리
2 조건문
•If ~ Else 문의 순서도
if(조건식)
명령문1 ; // 조건식이 참일 때 실행
else
명령문2 ; // 조건식이 거짓일 때 실행
c#
8 / 31
04장. 제어문과 예외처리
2 조건문
•다중 if문
if (point >=0 && point <=100){
if (point >50)
result = “Pass”;
}
else{
Console.WriteLine(“에러:범위를 벗어났습니다.”);
}
If가 여러 번 쓰일 경우는 코드블록{}을 이용하여, 조건식의 참/거짓시의 실행문을 명확히
한다.
c#
9 / 31
04장. 제어문과 예외처리
2 조건문
if 문 예제1
using System;
namespace If_Statement
{
class If_Statement
{
static void Main(string[] args)
{
int age;
bool login = false;
age = 25; // age에 값 할당
if (age > 18)
{
login = true;
Console.WriteLine("당신을 환영합니다");
}
else
{
login = false;
Console.WriteLine("성인만 입장이 가능합니다!");
}
}
}
}
c#
10 / 31
04장. 제어문과 예외처리
2 조건문
if 문 예제2
using System;
else if (point > 70)
{
result = "C";
}
namespace If_Statement2
{
class If_Statement2
{
static void Main(string[] args)
{
int point;
string result;
else if (point > 60)
{
result = "D";
}
else
{
result = "F";
}
point = 82; // point에 82 값 할당
if (point > 90)
{
result = "A";
}
else if (point > 80)
{
result = "B";
}
c#
Console.WriteLine("당신의 점수는 {0}입니다.", point);
Console.WriteLine("그리고 학점은 {0}입니다.", result);
}
}
}
11 / 31
04장. 제어문과 예외처리
2 조건문
•Switch 문
switch(조건변수){
case 값1 :
// 조건변수의 값이 값1과 일치할 때 실행
명령문1 ;
break ;
….
….
case 값n :
// 조건변수의 값이 값n과 일치할 때 실행
명령문n ;
break;
default :
// 어떠한 값도 만족하지 않을 때 실행
명령문z ;
break;
}
c#
12 / 31
04장. 제어문과 예외처리
2 조건문
using System;
namespace Switch_Statement
{
class Switch_Statement
{
static void Main(string[] args)
{
int num = 23;
switch (num % 5)
{
case 1:
Console.WriteLine("나머지의 값은 1입니다.");
break;
case 2:
Console.WriteLine("나머지의 값은 2입니다.");
break;
case 3:
Console.WriteLine("나머지의 값은 3입니다.");
break;
case 4:
Console.WriteLine("나머지의 값은 4입니다.");
break;
default:
Console.WriteLine("5의 배수입니다.");
break;
}
}
}
}
c#
13 / 31
04장. 제어문과 예외처리
2 조건문
switch문에서 점프문을 사용하지 않은 경우
using System;
case 2:
Console.WriteLine("나머지의 값은 2입니다.");
break;
namespace Switch_Statement2
{
class Switch_Statement2
{
static void Main(string[] args)
{
int num = 23;
case 3:
Console.WriteLine("나머지의 값은 3입니다.");
// 에러 : 모든 case 문의 블록 끝에는 break 문,
//
return 문, throw 문, goto 문 등이 와야 한다.
case 4:
Console.WriteLine("나머지의 값은 4입니다.");
break;
switch (num % 5)
{
case 1:
Console.WriteLine("나머지의 값은 1입니다.");
break;
default:
Console.WriteLine("5의 배수입니다.");
break;
}
}
}
}
c#
14 / 31
04장. 제어문과 예외처리
2 조건문
조건변수에 적절하지 못한 형식을 사용한 경우
using System;
namespace Switch_Statement3
{
class Switch_Statement3
{
static void Main(string[] args)
{
double number = 3.14;
switch (number) // 에러: 조건변수에 double형을 사용할 수 없다.
{
case 3.14:
Console.WriteLine(3.14);
break;
case 3.15:
Console.WriteLine(3.15);
break;
}
}
}
}
c#
15 / 31
04장. 제어문과 예외처리
3 반복문
While문
while 문은 조건식을 만족하는 동안, 반복적으로 명령문을 실행한다.
조건식이 false가 되야지만, while{}구문을 빠져 나간다
while (조건식) {
명령문1 ;
명령문2 ;
…
명령문n ;
}
c#
16 / 31
04장. 제어문과 예외처리
3 반복문
while 문 예제
using System;
namespace While_Statement
{
class While_Statement
{
static void Main(string[] args)
{
int i = 0;
while (i < 10)
{
Console.Write("{0} ", i);
i++;
}
Console.WriteLine();
}
}
}
c#
17 / 31
04장. 제어문과 예외처리
3 반복문
 Do While문
Do While문은 명령문을 먼저 실행한 후에 조건을 검색해야 하는 경우에 사용한다
do {
명령문1 ;
명령문2 ;
…
명령문n ;
} while (조건식) ;
c#
18 / 31
04장. 제어문과 예외처리
3 반복문
앞의 예제를 do … while 문으로 수정한 예제
using System;
namespace DoWhile_Statement
{
class DoWhile_Statement
{
static void Main(string[] args)
{
int i = 0;
do
{
Console.Write("{0} ", i);
i++;
} while (i < 10);
Console.WriteLine();
}
}
}
c#
19 / 31
04장. 제어문과 예외처리
3 반복문
 for 문
while 문과 do … while 문이 조건에 따라 반복 수행 한다면 for 문은 반복 회수가 먼저
결정되었을 때 사용한다
•for 문 문법
for(초기값; 조건식; 증감){
명령문1 ;
명령문2 ;
…
명령문n ;
}
c#
20 / 31
04장. 제어문과 예외처리
3 반복문
앞의 예제를 for 문으로 수정한 예제
using System;
namespace While_Statement
{
class While_Statement
{
static void Main(string[] args)
{
int i = 0;
while (i < 10)
{
Console.Write("{0} ", i);
i++;
}
Console.WriteLine();
}
}
}
c#
21 / 31
04장. 제어문과 예외처리
3 반복문
블록 밖에서 블록 내의 i 변수 사용
using System;
namespace For_Statement2
{
class For_Statement2
{
static void Main(string[] args)
{
for (int i = 0; i < 10; i++)
{
Console.WriteLine("{0} ", i);
}
// 에러 : 변수 i는 for 문 안에서만 유효하다.
Console.WriteLine(i);
}
}
}
c#
22 / 31
04장. 제어문과 예외처리
3 반복문
같은 코드 블록 내에 I 변수 2번 선언
using System;
namespace For_Statement3
{
class For_Statement3
{
static void Main(string[] args)
{
int i;
for (int i = 0; i < 10; i++)
{
//에러: 이미 변수 i가 선언되었다.
Console.Write("{0} ", i);
}
}
}
}
c#
23 / 31
04장. 제어문과 예외처리
3 반복문
foreach문
일련의 데이터를 하나의 객체에 저장하고자 할 때 배열이나 컬렉션 객체를 이용한다.
foreach 문은 이런 배열과 컬렉션 객체 내의 데이터에 순차적으로 접근할 때 사용된다
c#
24 / 31
04장. 제어문과 예외처리
3 반복문
foreach문 예제
using System;
using System.Collections;
class foreachTest
{
static void Main(string[] args)
{
ArrayList numbers = new ArrayList();
for (int i = 0; i < 10; i++)
{
numbers.Add(i);
}
// foreach 문
foreach (int number in numbers)
{
Console.Write("{0} ", number);
}
Console.WriteLine();
}
}
c#
25 / 31
04장. 제어문과 예외처리
4 점프문
goto문
goto 문은 프로그램 실행의 제어권을 이동 시킨다.
goto 문이 지시하는 레이블은 반드시 존재해야 하고 goto 문이 접근 가능한 위치여야
한다. goto 문은 사용된 곳보다 상위 코드 블록으로는 제어권을 이동 할 수 있지만 하위
코드 블록으로는 제어권을 이동할 수 없다. goto 문을 사용하면 자칫 프로그램의 흐름
을 혼란스럽게 만들 수 있기 때문에 switch 문 외에는 사용을 자제하는 편이 좋다.
Break, continue문
break 문의 역할은 반복문의 코드 블록밖으로 제어권이 나오게 하는 것이다. 이와 비슷하
지만 continue 문은 제어권을 반복문의 조건식으로 이동시킨다. 문장에서 break 문을 만
나면 반복문(while, do ... while, for, foreach 문)이나 switch 문은 실행을 멈춘다. 이에
반해 continue 문을 만나면 반복문의 조건식을 다시 조사하여 실행여부를 결정한다.
c#
26 / 31
04장. 제어문과 예외처리
4 점프문
continue 문 예제
using System;
namespace Continue_Statement
{
class Continue_Statement
{
static void Main(string[] args)
{
for (int i = 0; i < 10; i++)
{
if (i % 2 == 1)
continue;
Console.Write("{0} ", i);
}
Console.WriteLine();
}
}
}
c#
27 / 31
04장. 제어문과 예외처리
4 점프문
break 문 예제
using System;
namespace Break_Statement
{
class Break_Statement
{
static void Main(string[] args)
{
for (int i = 1; i < 10; i++)
{
if (i % 3 == 0)
break;
Console.Write("{0} ", i);
}
Console.WriteLine();
}
}
}
c#
28 / 31
04장. 제어문과 예외처리
5. 예외처리
Try/catch문
프로그램이 실행 중에 에러가 나거나 멈출 수 있는데, 이러한 현상을 통틀어 예외현상
(Exception)이라고 함
예외현상을 사전에 방지하기 위해 예외현상이 발생가능한 지점에 try/catch문을 적용 한다
c#
29 / 31
04장. 제어문과 예외처리
5. 예외처리
Try/catch문 문법
try
{
예외처리가 필요한 구문
}
catch(예외종류)
{
예외현상 발생 시 실행할 명령
}
finally()
{
예외 현상이 발생하는지에 상관없이 항상 실행하는 명령
}
c#
30 / 31
04장. 제어문과 예외처리
5 예외처리
using System;
namespace TryCatch_Statement
{
class TryCatch_Statement
{
static void Main(string[] args)
{
int a, b;
float c = 0;
try/catch finally문 예제
a = int.Parse(Console.ReadLine());
b = int.Parse(Console.ReadLine());
try
{
c = a / b;
}
catch (Exception)
{
Console.WriteLine("변수의 값이 올바르지 않습니다.");
Environment.Exit(0);
}
finally
{
Console.WriteLine("프로그램이 실행 되었습니다.");
}
Console.WriteLine("A/B값은 {0}입니다.", c);
}
}
}
c#
31 / 31
04장. 제어문과 예외처리
요약
• 프로그램의 흐름을 통제하는 제어문의 성격에 따라 조건문(if문,
switch문), 반복문(while문, do…while문, for문, foreach문)과 점프
문(break문, continue문, goto문)이 있다.
• 조건문은 조건식 또는 조건 값에 따라 해당되는 명령문을 실행하는
데 유용하며, if 문은 조건식을 계산해서 참,거짓의 결과에 따라 두 가
지 문장 중에 하나를 실행한다.
• switch문에 사용되는 수식은 단순한 자료형이거나 string, enum형이
가능하며, 수식을 평가한 값은 case문에 의해서 구분된다.
c#
32 / 31
04장. 제어문과 예외처리
요약
• 반복문은 조건식에 따라 해당 명령문을 반복적으로 수행한다. 반복할
조건식이 항상 참인 경우에는 무한루프에 빠지기 때문에 탈출 조건을
확인해야 한다.
• for문은 반복횟수가 정해져 있는 경우 명령문을 반복 수행한다. 그리
고 foreach문은 컬렉션이나 배열의 멤버에 접근해서 명령문을 수행
한다.
• while문은 초기에 조건문을 판단해서 참이면 반복, 거짓이면 while문
밖으로 탈출한다. Do … while 문은 무조건 한번 실행하며, 마지막에
조건문을 판단해서 반복과 탈출 여부를 결정한다.
c#
33 / 31
04장. 제어문과 예외처리
요약
• 점프문은 프로그램 실행의 제어권을 목적에 따라 이동시키는 데 사용
한다. goto문을 사용하면 자칫 프로그램의 흐름을 혼란스럽게 만들
수 있기 때문에 switch문 외에는 사용을 자제하는 편이 좋다.
• 프로그램에서 break문을 만나면 반복문(while문, do문, for문,
foreach문)이나 switch문은 실행을 멈춘다. 이에 반해 continue문을
만나면 반복문의 조건식을 다시 조사해서 실행 여부를 결정한다.
• 예외처리문은 프로그램의 예상치 못한 오류를 방지하는 데 사용하며,
try/catch finally문이 이에 해당한다.
c#
34 / 31