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