Category Archives: Homework

HW2

연습문제 (2)







단원 : C# 기초


목표 : C# 프로그램 기초


주요 연습 내용 : array, 클래스, 추상클래스, 상속, 속성 연습


준비자료 :


 


연습문제 Ex2 (Due by 10/18 24시까지)


-cyber 강의실 (cyber.dku.edu)source code, executable file, solution/project VC# file, 보고서를 학번_이름_Ex2.zip으로 묶어서 낼 것. 보고서 (30%)


 


[연습문제]


1. WeatherInfo 클래스를 정의하라 (WeatherInfo.cs 파일로 저장한다). (10%)


이 클래스는 기온(섭씨), 화씨기온, 풍속(m/s), 풍속(km/h), 습도를 멤버 속성으로 포함한다.


– public double Temperature { get; set;}


– public double Fahrenheit // getset에 대한 내부정의 필요 (섭씨<->화씨 변환)


– public double Wind { get; set;}


– public double WindKmh // getset에 대한 내부정의 필요


// 1 m/s = 3.6 Km/h = (1/1000) Km / (1/3600) h


– public string Humidity { get; set;}


그리고 메소드는 다음을 포함한다.


– public WeatherInfo() // 기본 생성자


– public WeatherInfo(double temperature, double wind, double humidity) // 생성자


– public virtual void Print() // WeatherInfo 모든 속성 값을 출력


– public override string ToString() // Print와 동일하게 string으로 출력


 


2. WeatherIndex 추상 클래스를 정의하라 (WeatherIndex.cs 파일로 저장한다).


이 클래스는 IndexLevel 열거형과 Title, Value, IndexColor, IndexDescription를 멤버 속성으로 포함한다. (10%)


– protected WeatherInfo info = null;


– public abstract string Title { get; }


– public abstract double Value { get; }


– public abstract ConsoleColor IndexColor { get; }


– public abstract string IndexDescription { get; }


그리고 메소드는 다음을 포함한다.


– protected WeatherIndex() { info = new WeatherInfo(); } // protected 생성자


– public abstract void PrintTable(); // 테이블 출력


– public abstract void UserInputCalculate(); // 사용자 입력에 의한 계산


– public override string ToString() { return string.Empty; } // 계산된 결과값 string


 


3. WeatherIndex 추상 클래스를 상속받은 WindChillTemperatureIndex 클래스를 정의하라 (WindChillTemperatureIndex.cs 파일로 저장한다). (10%)


– public enum IndexLevel { DANGER, WARNING, CAUTION, AWARE }


– public override string Title { get { return “체감온도지수“; } }


– public override double Value // get에 대한 내부정의 필요


// 체감온도값(섭씨) = 13.12 + 0.6215T – 11.37 V0.16 +0.3965 V0.16 T [ T: 기온, V : 풍속(km/h) ]


– public override ConsoleColor IndexColor // get에 대한 내부정의 필요 (체감온도지수색상)


– public override string IndexDescription // get에 대한 내부정의 필요 (체감온도지수 주의사항)


– public IndexLevel Index // get에 대한 내부정의 필요 (체감온도지수)


– public override void PrintTable() // 체감온도 산출표 출력 구현


– public override void UserInputCalculate() // 체감온도 사용자 입력에 의한 계산 구현


– public override string ToString() // 사용자입력에 대한 체감온도 결과 값 string 구현


 


4. WeatherIndex 추상 클래스를 상속받은 HeatIndex 클래스를 정의하라 (HeatIndex.cs 파일로 저장한다). (10%)


– public enum IndexLevel { VERYHIGH, HIGH, USUAL, LOW }


– public override string Title { get { return “열지수“; } }


– public override double Value // get에 대한 내부정의 필요


// 열지수값(HI) = -42.379 + (2.04901523*F) + (10.14333127*R) – (0.22475541*F*R) – (0.00683770*F*F) – (0.05481717*R*R) + (0.00122874*F*F*R) + (0.00085282*F*R*R) – (0.00000199*F*F*R*R) [F: 화씨온도, R: 상대습도]


– public override ConsoleColor IndexColor // get에 대한 내부정의 필요 (열지수색상)


– public override string IndexDescription // get에 대한 내부정의 필요 (열지수 주의사항)


– public IndexLevel Index // get에 대한 내부정의 필요 (열지수)


– public override void PrintTable(); // 열지수 산출표 출력 구현


– public override void UserInputCalculate() // 열지수 사용자 입력에 의한 계산 구현


– public override string ToString() // 사용자입력에 대한 열지수 결과 값 string 구현


 


5. WeatherIndexFactory 클래스 (WeatherIndexFactory.cs 파일로 저장한다)는 아래의 메소드를 포함한다. (10%)


// id에 따라서 WindChillTemperatureIndex 또는 HeatIndex 객체 (instance)를 생성


– static public WeatherIndex GetInstance(int id)


 


6. Program 클래스 (Program.cs 파일로 저장한다)는 아래의 메소드를 포함한다. (10%)


// do-while를 사용하여 ESCAPE-키를 누르지 않는 경우, 계속해서 사용자로 하여금 체감온도 또는 열지수를 선택하면, 산출표를 보여주고 사용자 입력된 수치로 계산 할 수 있도록 함.


– WeatherIndex calc = WeatherIndexFactory.GetInstance(value);


calc.PrintTable();


calc.UserInputCalculate();


 


// ArrayList를 사용하여, 사용자가 입력한 수치로 계산된 결과를 리스트에 저장해 두었다가, do-while를 벗어나서 프로그램을 종료할 시 사용자가 테스트한 계산 정보의 전체 리스트를 출력함.


– ArrayList wicList = new ArrayList();


foreach (WeatherIndex wic in wicList) Console.WriteLine(wic.ToString());


 


7. 프로그램에 본인이 더 테스트해보고 싶은 Methodroutine을 추가하라. 그리고 기상청에서 제공하는 체감온도지수 & 열지수 같이 정확히 계산됨을 본인의 프로그램과 비교하여 증명하라. (10%)


 


체감온도 http://www.kma.go.kr/HELP/basic/help_01_07.jsp


체감온도는 외부에 있는 사람이나 동물이 바람과 한기에 노출된 피부로부터 열을 빼앗길 때 느끼는 추운 정도를 나타내는 지수임





















위험


-45 미만


노출된 피부는 몇분내에 얼게 되고, 야외 활동시 저체온 위험이 매우 크므로 방풍·보온기능이 있는 매우 따뜻한 겹옷을 착용해야 함. 또한 노출된 모든 피부를 덮고 모자, 벙어리장갑, 스카프, 목도리, 마스크의 착용이 필요함. 야외환경은 생명에 매우 위험하므로 야외활동은 가급적 짧게 하거나 취소하여 실내에 머무를 수 있도록 할 것.


경고


-45~-25 미만 10~15분이내


동상 위험이 있고, 보호장구 없이 장기간 노출시 저체온에 빠질 위험이 크므로 방풍기능이 있는 겹옷이나 따뜻한 겹옷을 착용해야함. 또한 노출된 모든 피부를 덮고 모자, 벙어리장갑, 스카프, 목도리, 마스크의 착용이 필요함. 피부가 바람에 직접 노출되지 않도록 할 것


주의


-25~-10 미만


노출된 피부에 매우 찬 기운이 느껴지고, 보호장구 없이 장기간 노출시 저체온에 빠질 위험이 있으므로 방풍기능이 있는 겹옷이나 따뜻한 옷을 착용해야함. 또한 모자, 벙어리장갑, 스카프의 착용이 필요함


관심


-10 이상


추위를 느끼는 정도가 증가함. 긴 옷이나 따뜻한 옷의 착용이 필요함


 


열지수 http://www.kma.go.kr/HELP/basic/help_01_04.jsp


열지수는 기온과 습도에 따른 사람이 실제로 느끼는 더위를 지수화한 것임





















매우높음


54 이상


보통사람이 열에 지속적으로 노출될 시 열사·일사병 위험 매우 높음


높음


41~54 미만


보통사람이 열에 지속적으로 노출되면, 신체활동 시 일사병, 열경련, 열피폐 위험 높음


보통


32~41 미만


보통사람이 열에 지속적으로 노출되면, 신체활동 시 열사병, 열경련, 열피폐 가능성 있음


낮음


32 미만


보통사람이 열에 지속적으로 노출되면, 신체활동 시 피로 위험 높음


 


체감온도(Wind Chill Temperature) 산출표


5 0 -5 -10 -15 -20 -25 -30 -35 -40 -45 -50


5 4.08 -1.59 -7.26 -12.93 -18.61 -24.28 -29.95 -35.62 -41.30 -46.97 -52.64 -58.31


10 2.66 -3.31 -9.29 -15.26 -21.23 -27.21 -33.18 -39.15 -45.13 -51.10 -57.07 -63.05


15 1.75 -4.42 -10.58 -16.75 -22.91 -29.08 -35.24 -41.41 -47.57 -53.74 -59.90 -66.07


20 1.07 -5.24 -11.55 -17.86 -24.17 -30.48 -36.79 -43.10 -49.41 -55.72 -62.02 -68.33


25 0.52 -5.91 -12.34 -18.76 -25.19 -31.61 -38.04 -44.46 -50.89 -57.31 -63.74 -70.17


30 0.05 -6.47 -13.00 -19.52 -26.04 -32.57 -39.09 -45.62 -52.14 -58.66 -65.19 -71.71


35 -0.35 -6.96 -13.57 -20.18 -26.79 -33.40 -40.01 -46.62 -53.23 -59.83 -66.44 -73.05


40 -0.71 -7.40 -14.08 -20.77 -27.45 -34.13 -40.82 -47.50 -54.19 -60.87 -67.56 -74.24


45 -1.03 -7.79 -14.54 -21.29 -28.04 -34.80 -41.55 -48.30 -55.06 -61.81 -68.56 -75.31


50 -1.33 -8.14 -14.96 -21.77 -28.59 -35.40 -42.22 -49.03 -55.84 -62.66 -69.47 -76.29


55 -1.60 -8.47 -15.34 -22.21 -29.08 -35.96 -42.83 -49.70 -56.57 -63.44 -70.31 -77.19


60 -1.85 -8.77 -15.70 -22.62 -29.54 -36.47 -43.39 -50.32 -57.24 -64.17 -71.09 -78.02


65 -2.08 -9.05 -16.03 -23.00 -29.97 -36.95 -43.92 -50.90 -57.87 -64.84 -71.82 -78.79


70 -2.30 -9.32 -16.34 -23.36 -30.38 -37.40 -44.42 -51.44 -58.46 -65.48 -72.50 -79.52


75 -2.50 -9.57 -16.63 -23.69 -30.76 -37.82 -44.88 -51.95 -59.01 -66.07 -73.14 -80.20


80 -2.70 -9.80 -16.91 -24.01 -31.11 -38.22 -45.32 -52.43 -59.53 -66.64 -73.74 -80.84


관심 주의 경고 위험


 


열지수(Heat Index) 산출표


27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43


40 26.90 27.70 28.60 29.70 30.90 32.30 33.80 35.40 37.20 39.10 41.20 43.40 45.80 48.30 50.90 53.70 56.60


45 27.10 28.00 29.10 30.30 31.70 33.20 34.90 36.80 38.80 41.00 43.40 45.90 48.50 51.30 54.30 57.50 60.80


50 27.40 28.40 29.70 31.00 32.60 34.40 36.30 38.40 40.70 43.10 45.80 48.60 51.60 54.80 58.10 61.70 65.40


55 27.70 28.90 30.30 31.90 33.70 35.60 37.80 40.20 42.70 45.50 48.50 51.60 55.00 58.50 62.30 66.20 70.40


60 28.10 29.50 31.00 32.80 34.80 37.10 39.50 42.20 45.10 48.10 51.40 55.00 58.70 62.60 66.80 71.20 75.80


65 28.50 30.00 31.80 33.90 36.20 38.70 41.40 44.40 47.60 51.00 54.70 58.60 62.70 67.10 71.70 76.50 81.60


70 28.90 30.70 32.70 35.00 37.60 40.40 43.50 46.80 50.30 54.20 58.20 62.50 67.10 71.90 77.00 82.30 87.80


75 29.30 31.40 33.70 36.30 39.20 42.30 45.70 49.40 53.30 57.50 62.00 66.70 71.80 77.00 82.60 88.40 94.50


80 29.70 32.10 34.70 37.70 40.90 44.40 48.10 52.20 56.50 61.20 66.10 71.30 76.80 82.50 88.60 94.90 101.50


85 30.20 32.90 35.90 39.10 42.70 46.60 50.80 55.20 60.00 65.10 70.40 76.10 82.10 88.30 94.90 101.80 108.90


90 31.10 34.00 37.20 40.80 44.70 49.00 53.50 58.40 63.70 69.20 75.10 81.20 87.70 94.50 101.60 109.00 116.80


95 32.00 35.20 38.70 42.50 46.80 51.50 56.50 61.90 67.60 73.60 80.00 86.60 93.70 101.00 108.70 116.70 125.10


100 32.90 36.40 40.20 44.40 49.00 54.20 59.70 65.50 71.70 78.20 85.10 92.40 99.90 107.90 116.10 124.80 133.70


낮음 보통 높음 매우높음

Console Class

http://msdn.microsoft.com/en-us/library/system.console.aspx

Console 클래스에는 ReadLine, WriteLine 같은 기본적인 입출력 메서드 외에도 콘솔 관리를 위한 여러 가지 멤버들이 제공된다. 어떤 멤버는 함수처럼 필요할 때 호출할 수 있는 메서드이고 어떤 것은 값을 읽고 쓰는 프로퍼티 형태로 되어 있다.

































멤버


설명


Title


콘솔창의 제목 문자열이다.


BackgroundColor, ForegroundColor


전경색, 배경색의 색상이다.


CursorSize


커서의 높이를 지정한다.


CursorVisible


커서의 보임/숨김을 지정한다.


CursorLeft, CursorTop


커서의 현재 위치이다.


Clear()


화면을 지운다.


Beep()


소리를 낸다.


ResetColor()


디폴트 색상으로 변경한다.


SetCursorPosition(x,y)


커서의 위치를 옮긴다.



class Program
{
  public static void Main()
  {
    Console.Title = “콘솔 테스트”; // 콘솔창의 제목
    Console.BackgroundColor = ConsoleColor.Yellow; // 콘솔창의 배경색
    Console.ForegroundColor = ConsoleColor.Blue; // 콘솔창의 전경색
    Console.Clear(); // 콘솔창 화면을 깨끗이 지움
    Console.Beep(); // 콘솔창에 삑소리를 냄
    Console.WriteLine(“색상을 변경했습니다.”); // 콘솔창에 “색상을 변경했습니다.” 출력
    Console.ReadKey(); // 콘솔창에서 아무키나 입력받길 대기
    Console.ResetColor(); // 콘솔창에서 색상(배경,전경)을 초기화
    Console.SetCursorPosition(10, 10); // (10, 10) 좌표로 커서를 이동
    Console.WriteLine(“디폴트 색상입니다.”); // 콘솔창에 “디폴트 색상입니다.” 출력
    Console.ReadKey(); // 콘솔창에서 아무키나 입력받길 대기
  }
}

체감온도산출식

// 체감온도(℃) = 13.12 + 0.6215ⅹT – 11.37 V0.16 +0.3965 V0.16 ⅹT
// [ T : 기온, V : 풍속(km/h) ]    
public double GetWindChillTemperature(double T, double V)
{
       return (13.12 + 0.6215 * T – 11.37 * Math.Pow(V, 0.16) + 0.3965 * Math.Pow(V, 0.16) * T);
}

체감온도


  • 체감온도는 외부에 있는 사람이나 동물이 바람과 한기에 노출된 피부로부터 열을 빼앗길 때 느끼는 추운 정도를 나타내는 지수임
  • 바람이 강해질수록 피부의 열 손실률은 높아지게 되며 결국 내부체온을 떨어뜨리게 됨. 예를 들어 영하 10℃에서 풍속이 5km/h일 때 체감온도는 영하 13℃이지만 풍속이 30km/h가 되면 체감온도가 영하 20℃까지 떨어져 강한 추위를 느끼게 됨

산출방법



수식


* 현재 사용하고 있는 체감온도 산출식은 2001년 8월 캐나다 토론토에서 열린 Joint Action Group for Temperature Indices (JAG/TI) 회의에서 발표된 것으로 미국과 캐나다 등 북아메리카 국가들을 중심으로 최근에 가장 널리 사용되고 있음


단계별 설명및 주의사항


























단계 지수범위 설명 및 주의사항
위험 -45 미만

노출된 피부는 몇분내에 얼게 되고, 야외 활동시 저체온 위험이 매우 크므로 방풍·보온기능이 있는 매우 따뜻한 겹옷을 착용해야 함. 또한 노출된 모든 피부를 덮고 모자, 벙어리장갑, 스카프, 목도리, 마스크의 착용이 필요함. 야외환경은 생명에 매우 위험하므로 야외활동은 가급적 짧게 하거나 취소하여 실내에 머무를 수 있도록 할 것.

경고 -45~-25 미만 10~15분이내 동상 위험이 있고, 보호장구 없이 장기간 노출시 저체온에 빠질 위험이 크므로 방풍기능이 있는 겹옷이나 따뜻한 겹옷을 착용해야함. 또한 노출된 모든 피부를 덮고 모자, 벙어리장갑, 스카프, 목도리, 마스크의 착용이 필요함. 피부가 바람에 직접 노출되지 않도록 할 것
주의 -25~-10 미만 노출된 피부에 매우 찬 기운이 느껴지고, 보호장구 없이 장기간 노출시 저체온에 빠질 위험이 있으므로 방풍기능이 있는 겹옷이나 따뜻한 옷을 착용해야함. 또한 모자, 벙어리장갑, 스카프의 착용이 필요함
관심 -10 이상 추위를 느끼는 정도가 증가함. 긴 옷이나 따뜻한 옷의 착용이 필요함

 

HW1

연습문제 (1)





단원 : C# 기초


목표 : C# 프로그램 기초


주요 연습 내용 : Visual Studio 2010, C# 입출력, 변수, 메소드, 제어문 사용 연습


준비자료 : WindChillTemperatureCalculator.cs


기상청 체감온도산출법  http://www.kma.go.kr/HELP/basic/help_01_07.jsp


연습문제 Ex1 (Due by 9/27 24시까지)


-cyber 강의실 (cyber.dku.edu)source code, executable file, solution/project VC# file, 보고서를 학번_이름_Ex1.zip으로 묶어서 낼 것. 보고서 (30%)


 


[연습문제]


0. Visual C# Console Application의 프로젝트를 생성한다.


1. 체감온도계산기 WindChillTemperatureCalculator 클래스를 작성하라. (30%)


enum WindChillTemperatureIndex { DANGER, WARNING, CAUTION, AWARE };


– void GetKeyboardInput() 콘솔창에서 키보드로 기온, 풍속을 입력받아서 처리


+ 힌트: while 문을 사용하여 사용자가 잘못 입력했을 경우 다시 입력 가능하도록 함


+ 힌트: Console.ReadLine() string을 반환하므로, double로 변환하기 위하여


TryParse 함수 사용 => boolValue = double.TryParse(string, out doubleValue)


– void PrintWindChillTemperature() 체감온도와 체감온도지수를 화면에 출력


double GetWindChillTemperature(double T, double V) 체감온도 값을 반환


WindChillTemperatureIndex GetWindChillTemperatureIndex(double T) 체감온도 지수를 반환


ConsoleColor GetWindChillTemperatureIndexColor(WindChillTemperatureIndex index) 체감온도지수 경보색을 반환


2. WindChillTemperatureCalculator 클래스에 PrintWindChillTemperatureIndexTable() 메소드를 추가하라. (20%)


체감온도 산출표를 출력함 (테이블의 형식으로 색깔까지 맞춰서)


3. Main 함수에서는 WindChillTemperatureCalculator 객체를 생성하고 체감온도 산출표와 사용자 입력을 받아서 체감온도를 출력하거나 등 routine을 추가한다. (20%)


– do..while 문을 사용하여 계속해서 다른 계산을 할 수 있도록 함


그리고, 본인이 더 테스트해보고 싶은 메소드나 루틴을 추가함

사용자 삽입 이미지