Beginning ASP.NET using VB.NET 연습문제 / 해답

Beginning ASP.NET using VB.NET 연습문제 6, 7장 / 해답

 본문 최초 작성일 : 2002년 10월 04일
 본문 최종 수정일 : 2002년 10월 04일

 작성자 : 지용군(성 지용)
 편집자 : 지용군(성 지용)

안녕하세요. 지용군입니다. Beginning ASP.NET using VB.NET의 연습문제에 대한 해답이 서적에서 제공되지 않았습니다.

이에 대한 해답을 출판사 측으로 부터 받아서 게재해 드립니다.


▣ 6장. 제어 구조와 절차적 프로그래밍

Chap 6 - Q1 : A에 임의의 값을 넣어, 다음의 블리언 식의 참과 거짓을 평가하여라.

a. NOT A > 0 OR A > 5
b. A > 1 AND A < 5 OR A > 7 AND A < 10
c. A < 10 OR A > 12 AND NOT A > 20

A1 : a. 만약 A 가 0, 1, 2, 3, 4 또는 5이면 거짓. 그 이외에는 참.
b.만약 A가 2, 3, 4, 8 또는 9이면 탐. 그 이외에는 거짓
c.True 만약 A가 13, 14, 15, 16, 17, 18 또는 19이거나 A가 9 또는 그 미만인 경우 참. 그 이외에는 거짓.

Chap 6 - Q2 : 다음의 시나리오에 적절한 반복문의 형태를 제시하고, 이유를 말하라.
a. 구매 물품의 내역이나, 배열에 저장된 아이템을 보여줄 때
b. 현재 월의 달력을 보여 줄 때
c. 배열에서 특정 개체의 위치를 찾을 때
d. HTML 테이블을 사용하여 체스판을 그릴 때
보너스: 이들 중에서 하나를 수행할 수 있는 ASP.NET 페이지를 작성하라.

A2 :
a. 배열에 있는 모든 항목을 처리하는 간단한 방법을 제공하는 For Each 구문이 적절하다.
b. 해당 월은 몇 일이 있는지를 알 수 있고, 반복문을 시작하기 전에 반복할 횟수를 명시할 수 있으므로 For…Next 구문이 적절하다.
c. Do…Until 구문은 항목을 찾을 수 있는 동안에는 반복 작업을 수행할 수 있도록 허용하기 때문에, Do…Until 구문이 적절하다.
d. 애매한 작업이다. 두 개의 For…Next 반복 구문을 사용할 수도 있다. 하나는 내부, 또 다른 하나는 외부에서 반복 작업을 하도록 할 수 있다. 8개의 행과 각 행은 다시 여덟 개의 셀을 필요로 하기 때문에, 두 번의 반복 작업을 해야 한다.

Chap 6 - Q3 : 두 개의 정수를 매개변수로 전달 받아서, 두 정수 사이의 임의의 변수를 생성하는 함수를 작성하라. 최소값과 최대값을 입력 받는 ASP.NET 페이지를 작성하고, 이 범위 안의 임의의 숫자를 생성하여 보여주어야 한다.

A3 다음의 함수는 매개변수로 전달된 두 개의 정수 사이에서 임의의 숫자를 발생시킨다.
Function RandomNumber(a As Integer, b As Integer) As Integer
Return int((1 + b - a) * rnd) + a
End Function

다음의 ASP.NET 페이지는 사용자로 하여금 최대값과 최소값을 입력하도록 하고, RandomNumber 함수를 이용하여 해당 범위 내에서 임의의 값을 발생시키는 작업을 수행한다.

<%@ Page Language="VB" runat=server %>
<script runat=server>
Sub Page_Load()
     if num1.text="" then num1.text="0"
     if num2.text="" then num2.text="1"
     answer.text = CStr( RandomNumber( CInt(num1.text) , CInt(num2.text) ) )
EndSub

Function RandomNumber(a As Integer, b As Integer) As Integer
     Return int((1 + b - a) * rnd) + a
End Function
</script>

<html>
     <body>

          <form runat="server">
          최소값: <asp:textbox id=num1 runat=server />
          최대값: <asp:textbox id=num2 runat=server />
          <br/>

          <input type= "Submit" value= "최대/최소값사이의 임의의 수">< BR>< BR>           <br />

          <font size=16pt>값: <asp:label id=answer runat=server /></font>
          </form>< BR>      </body>< BR> </html>

Chap 6 - Q4 : 크리스마스까지 남은 날짜를 보여주는 ASP.NET페이지를 작성하도록 하라. 다음의 함수가 필요할 것이다.
DateDiff(Interval as String, Date1 As Date, Date2 As Date)
남은 일자를 계산하기 위해 Interval에는 “d”를 전달해야 한다.
이 페이지를 사용자의 선택에 따라 5가지의 다른 공휴일의 남은 날짜를 반환할 수 있도록 수정하라.

A4

다음의 ASP.NET 페이지는 크리스마스까지 남아 있는 날짜의 수를 출력한다.

<%@ Page Language="VB" runat=server debug=true %>
<script runat=server>
> Sub Page_Load()
     Dim TodaysDate As Date = Now()
     Dim XmasDate As Date = "12/25"
     lblDate.text = TodaysDate.Date 
     lblDays.text = DateDiff("d", TodaysDate, XmasDate)
End Sub
</script>

<html>
     <head>
          <title>크리스마스까지의 날짜수</title>
     </head>
<body>
     <h2>오늘은 <asp:label id="lblDate" runat="server" />입니다.</h2>
     크리스마스까지는 <asp:label id="lblDays" runat="server"/>일 남았습니다.
</body>
</html>

사용자가 선택한 내역에 따라서, 5가지의 공휴일까지 남은 날짜를 제공하도록 페이지를 변경한다.

<%@ Page Language="VB" runat=server debug=true %>
<script runat=server>
Sub Page_Load()
     Dim TodaysDate As Date = Now()
     Dim HolDate As Date = ddlHoliday.SelectedItem.Value
     Dim ExtraDays As Integer
     If (HolDate.Date < TodaysDate.Date) Then ExtraDays =365 Else ExtraDays =0
     lblDate.text = TodaysDate.Date 
     lblDays.text = DateDiff("d", TodaysDate, HolDate) + ExtraDays
End Sub
</script>

<html>
     <head>
          <title>Days To Holiday</title>
     </head>
     <body>
          <h2>오늘은 <asp:label id="lblDate" runat="server" />일 입니다.</h2>
          <form runat="server">
               <asp:dropdownlist autopostback="true" id="ddlHoliday" runat="server">
               <asp:listitem value="01/01" text="New Years Day" />
               <asp:listitem value="06/14" text="Flag Day" />
               <asp:listitem value="07/04" text="Independence Day" />
               <asp:listitem value="11/11" text="Armistice" />
               <asp:listitem value="12/25" text="Christmas" />
               </asp:dropdownlist>
               까지는 <asp:label id="lblDays" runat="server" /> 일 남았습니다.
          </form>
     </body>
</html>

 

Chap 6 - Q5 : 함수나 서브루틴에 참조에 의한 전달을 할 경우를 제시하도록 하라. 또한 이것을 ASP.NET페이지로 작성하라.

A5
이는 폭 넓게 해석할 수 있는 질문이다. 따라서 어떠한 해결책도 제시될 수 없다.

▣ 7장. 이벤트 중심 프로그래밍과 포스트백

Chap 7 - Q1 : 왜 이벤트 중심 프로그래밍이 웹에서 가장 좋은 프로그래밍 방법인지를 설명하라.

A1
이벤트 중심의 웹 페이지에서, 페이지가 제공될 때마다 코드는 미리 정의된 순서에 따라서 수행되도록 제한되어 있지 않다. 물론, 코드는 사용자가 발생시킨 특정 이벤트에 대해서 반응하게 되는 기능의 블록들로 나눌 수 있다. 따라서 웹 폼에 있는 여러 개의 독립된 컴퍼넌트로부터 복잡한 기능들을 접합시킬 수 있으며, 클라이언트 소프트웨어에서는 컴퍼넌트가 어떻게 프로그래밍 되었는지를 전혀 알 필요가 없다.

Chap 7 - Q2 : 다음의 HTML 코드를 작성하고, 브라우저에서 호출하라(확장자를 .htm으로 저장하여야 한다). 이제 사용자가 클릭 버튼을 눌러서 정보를 전달할 때, 폼에 입력된 정보를 유지하도록 하라. 이는 작성한 HTML 코드를 일련의 ASP.NET 서버 컨트롤로 변경함으로써 가능하다. 또한 입력된 정보가 제대로 전달되었는지를 확인할 수 있도록, 버튼에 서브 루틴을 추가하도록 하라.

<html>
     <head>
          <title>HTML</title>
     </head>
<body>
     <form>
          <h4>성명을 입력하세요:<h4>
          <input type="text"><br /><br />
          <h4>아침 식사로 뭘 드시고 싶으세요?<h4>
          <h4>시리얼<input type="checkbox"><h4>
          <h4>계란<input type="checkbox"><h4>
          <h4>펜케이크<input type="checkbox"><h4><br />
          <h4>주문:<h4> 
          <h4>바로 주문<input type="radio" name="test"><h4>
          <h4>차후에 주문<input type="radio" name="test"><h4>
          <input type="submit" value="감사합니다!">
     </form>
</body>
</html>
 

A2

<%@ Page Language="VB" runat="server" %>
<script runat="server">
Sub ClickHandler(Sender As Object, E As EventArgs)
     message.text = "내용 전송."
     questions.visible = False
End Sub
</script>

<html>
     <head>
          <title>ASP.NET</title>
     </head>
     <body>
          <asp:label id=message runat=server />
          <form id=questions runat="server">

          <h4>성명을 입력하세요:</h4>
               <asp:textbox id=name runat="server" /><br /><br />

               <h4>아침식사는 뭘 드시고 싶으세요?</h4>
               <asp:checkboxlist id=food runat="server">
               <asp:listitem value="시리얼"/>
               <asp:listitem value="달걀"/>
               <asp:listitem value="펜케이크"/>
               </asp:checkboxlist>

               <h4>주문:<h4> 
               <asp:radiobuttonlist id=when runat="server">
               <asp:listitem value="바로"/>
               <asp:listitem value="차후에"/>
               </asp:radiobuttonlist>

               <asp:button type="submit" id= "btnSubmit" onclick= "ClickHandler" text= "감사합니다.!"<BR>               runat="server" />

          </form>

     </body>
</html>
 

Chap 7 - Q3 : Page_Load 이벤트 처리기에 선택 내역을 확인할 수 있도록, 다음의 내용을 포함하는 ASPX 코드를 추가하라
         님 감사합니다.
아침으로는           을 선택하셨습니다.           준비하도록 하겠습니다.

A3

<%@ Page Language="VB" runat="server" debug = true %>
<script runat="server">
Sub ClickHandler(Sender As Object, E As EventArgs)
     dim item as listitem

     message.text = name.text & "님 감사합니다."
     message.text += "아침으로는 "

     if food.items(0).Selected then message.text += food.items(0).text + " "
     if food.items(1).Selected then message.text += food.items(1).text + " "
     if food.items(2).Selected then message.text += food.items(2).text + " "

     message.text += "을 선택하셨습니다. " + Request.Form("when") + " 준비 하도록 하겠습니다."
     questions.visible = False
End Sub
</script>

<html>
     <head>
          <title>ASP.NET</title>
     </head>
     <body>

          <asp:label id=message runat=server />
          <form id=questions runat="server">

               <h4>성명을 입력하세요:</h4>
               <asp:textbox id=name runat="server" /><br /><br />

               <h4>아침식사는 뭘 드시고 싶으세요?</h4>
               <asp:checkboxlist id=food runat="server">
               <asp:listitem value="시리얼"/>
               <asp:listitem value="달걀"/>
               <asp:listitem value="펜케이크"/>
               </asp:checkboxlist>

               <h4>주문:<h4> 
               <asp:radiobuttonlist id=when runat="server">
               <asp:listitem value="바로"/>
               <asp:listitem value="차후에"/>
               </asp:radiobuttonlist>

               <asp:button type="submit" id= "btnSubmit" onclick= "ClickHandler" text= "감사합니다.!"<BR>               runat="server" />

          </form>

     </body>
</html>
 

Chap 7 - Q4 : ASPX 파일로 아주 간단한 가상 전화기 폼을 작성하라. 페이지에는 텍스트 박스와 ‘통화’이라는 버튼을 생성하라. 텍스트 박스에 전화번호를 입력하고, '통화' 버튼를 눌렀을 때, 다음과 같은 작업이 이루어지도록 ASPX 파일을 설정하도록 하라.

  • 전화를 걸려는 전화번호를 확인하는 메시지를 출력하라.
  • '끊기'라는 버튼을 추가하고, 버튼이 눌러졌을 때, 초기 페이지로 돌아가도록 하라. 이때 다른 전화번호를 입력할 수 있도록 하라.

A4

<%@ Page Language="VB" runat="server" debug = true %>
<script runat="server">
Sub ClickHandler(Sender As Object, E As EventArgs)
     if btnSubmit.text = "전화 걸기" Then
          message.text = "전화 걸기: " + number.text
          btnSubmit.text = "끊기"
          number.enabled = False
     else
          message.text = ""
          btnSubmit.text = "전화 걸기"
          number.enabled = True
     end if
End Sub
</script>

<html>
     <head>
          <title>Phone</title>
     </head>
     <body>

          <form id=questions runat="server">
               전화번호를 입력하세요:<asp:textbox id=number runat="server" /><br />

               <asp:button type="submit" id= "btnSubmit" onclick="ClickHandler" text="전화 걸기"< BR>                runat="server" />
               <asp:label id=message runat=server />
          </form>

     </body>
</html>
 

Chap 7 - Q5 : SELECT CASE 구조를 이용하여, 세 개의 특정 전화번호와 세 사람의 이름을 연결하도록 하라. '연결' 버튼이 눌러졌을 때, 확인 메시지에는 전화를 걸려는 사람의 이름과 전화번호가 출력되어져야 한다.

A5

<%@ Page Language="VB" runat="server" debug = true %>
<script runat="server">
Sub ClickHandler(Sender As Object, E As EventArgs)
     if btnSubmit.text = "전화 걸기" Then
          dim name as string
          select case(number.text)
               case "6874923"
                    name = "Jake"
               case "6874831"
                    name = "Ewan"
               case "6874624"
                    name = "Alessandro"
               case else
                    name = "<unknown>"
          end select
          message.text = name + " 에게 " + number.text + "번으로 전화 걸기 "
          btnSubmit.text = "끊기"
          number.enabled = False
     else
          message.text = ""
          btnSubmit.text = "전화 걸기"
          number.enabled = True
     end if
End Sub
</script>

<html>
     <head>
          <title>Phone</title>
     </head>
     <body>

          <form id=questions runat="server">
               전화번호를 입력하세요:<asp:textbox id=number runat="server" /><br />

               <asp:button type="submit" id= "btnSubmit" onclick="ClickHandler" text="전화 걸기"< BR>                runat="server" />
               <asp:label id=message runat=server />
          </form>

     </body>
</html>