1. 다음은 쿠키와 세션에 관한 설명이다. 맞으면 o, 틀리면 x 표시를 하시오. 

① 쿠키는 웹 페이지에 접속할 때 웹 서버가 사용자의 컴퓨터에 저장하는 데이터이다. (   )

② 쿠키를 사용하면 사용자의 컴퓨터에서 아이디와 비밀번호를 기억할 수 있다. (   )

③ 세션은 쿠키보다 사용법이 간단하지만 보안성이 더 취약하다. (   )

④ 세션은 쿠키와 달리 사용자의 컴퓨터와 웹 서버에 세션 정보를 저장한다. (   )

⑤ 세션은 쿠키보다 보안성이 더 강하다 (   )

더보기

① o

② o

③ x

④ o

⑤ o


2. 쿠키와 세션에 관한 물음에 답하시오.

① 쿠키를 생성할 때 사용하는 함수는 무엇인가?

② 세션을 초기화하는 데 사용하는 함수는 무엇인가?

③ 세션을 삭제하는 데 사용하는 함수는 무엇인가?

더보기

① setcookie()

② session_start()

③ unset()


3. 생성된 쿠키인 userid를 불러오는 데 사용하는 변수는 무엇인가?

① $_COOKIE["userid"]

$_POST["userid"]

$_GET["userid"]

$_SERVER["userid"]

더보기

① $_COOKIE["userid"]


4. 등록된 세션인 userid를 불러오는 데 사용하는 변수는 무엇인가?

① $_COOKIE["userid"]

② $_POST["userid"]

③ $_SESSION["userid"]

④ $_SERVER["userid"]


5. 다음은 setcookie()에 의해 등록된 userid, username 쿠키를 사용하는 프로그램이다. 빈칸을 채워 프로그램을 완성하시오.

<?php
  if(isset($_COOKIE["userid"]) && isset($_COOKIE["username"]) )
  {
    $userid=(가)["userid"];
    $username=(나)["username"];

    echo "userid 쿠키 : " . (다)."<br>";
    echo "username 쿠키 : " . (라)."<br>";
  }
  else
  {
    echo "쿠키가 생성되지 않았다!";
  }

?>
더보기

(가) $_COOKIE
(나) $_COOKIE
(다) $userid
(라) $username

<?php
  if(isset($_COOKIE["userid"]) && isset($_COOKIE["username"]) )
  {
    $userid=$_COOKIE["userid"];
    $username=$_COOKIE["username"];

    echo "userid 쿠키 : " . $userid."<br>";
    echo "username 쿠키 : " . $username."<br>";
  }
  else
  {
    echo "쿠키가 생성되지 않았다!";
  }

?>

6. 다음은 세션을 시작하여 세션 변수를 등록하는 프로그램이다. 빈칸을 채워 프로그램을 완성하시오.

<?php
   session_start();
   echo "세션 시작!!!<br>";

   (가)['userid']="ocella";
   (나)['username']="박영준";
   echo '세션 등록 완료!!!<br>';

   echo $_SESSION['userid']."<br>";
   echo $_SESSION['usename']."<br>";
?>
더보기

(가) $_SESSION
(나) $_SESSION

<?php
   session_start();
   echo "세션 시작!!!<br>";

   $_SESSION['userid']="ocella";
   $_SESSION['username']="박영준";
   echo '세션 등록 완료!!!<br>';

   echo $_SESSION['userid']."<br>";
   echo $_SESSION['usename']."<br>";
?>

7. 다음은 등록된 세션을 웹 페이지에서 사용하는 프로그램이다. 빈칸을 채워 프로그램을 완성하시오.

<?php
  (가);
   $userid=(나)["userid"];
   $username=(다)["username"];
?>

<html>
  <head>
    <meta charset="utf-8"
  </head>
    <body>
      <h3>등록된 세션의 사용</h3>
      <ul>
        <li>등록된 세션(userid) : <?= (라)?></li>
        <li>등록된 세션(username) : <?=(마)?></li>
      </ul>
    </body>
</html>
더보기

(가)  session_start()
(나) $_SESSION
(다) $_SESSION
(라) $userId
(마) $username

<?php
  session_start();
   $userid=$_SESSION["userid"];
   $username=$_SESSION["username"];
?>

<html>
  <head>
    <meta charset="utf-8"
  </head>
    <body>
      <h3>등록된 세션의 사용</h3>
      <ul>
        <li>등록된 세션(userid) : <?= $userId?></li>
        <li>등록된 세션(username) : <?= $username?></li>
      </ul>
    </body>
</html>

1. 다음은 웹 페이지에서 아이디와 비밀번호를 입력하는 폼 양식의 소스코드이다.

<body>
  <form name="form1" method="post" action="view2.php">
    <ul>
      <li>아 &nbsp;이 &nbsp;디 : <input type="text" name="id"></li>
      <li>비밀번호 : <input type="text" name="pass"></li>
      <li><input type="submit" value="확인"></li>  <!--구간A-->
    </ul>
  </form>
</body>

구간 A의 <확인> 버튼을 눌렀을 때 사용자가 입력한 데이터를 처리하는 view2.php 파일의 소스코드는 다음과 같다. 빈칸을 채워 프로그램을 완성하시오.

<body>
<?php
   $id=(가)["id"];
   $pass=$_POST["(나)"];
?>
    <ul>
       <li>아 &nbsp;이 &nbsp;디 : <?= $id?></li>
       <li>비밀번호 : <?=(다) ?></li>
       
    </ul>
</body>
더보기

(가) $_POST
(나) pass
(다) $pass

<body>
<?php
   $id=$_POST["id"];
   $pass=$_POST["pass"];
?>
    <ul>
       <li>아 &nbsp;이 &nbsp;디 : <?= $id?></li>
       <li>비밀번호 : <?=$pass ?></li>
       
    </ul>
</body>

2. 다음은 웹 페이지에서 체크박스 폼 양식으로 사용자가 취미를 선택하게 하는 프로그램의 소스코드이다.

<body>
  <form name="form1" method="post" action="view5.php">
    <h3>당신의 취미는?</h3>
    <ul>
      <li>영화감상<input type="checkbox" name=" hobby[]" value="영화감상"></li>
      <li>맛집탐방<input type="checkbox" name=" hobby[]" value="맛집탐방"></li>
      <li>독서<input type="checkbox" name=" hobby[]" value="독서"></li>
      <li>요가<input type="checkbox" name=" hobby[]" value="요가"></li>
      <li>축구<input type="checkbox" name=" hobby[]" value="축구"></li>
      <li><input type="submit" value="확인"></li> <!--이 구간 A-->
    </ul>
  </form>

</body>

구간 A의 <확인> 버튼을 눌렀을 때 사용자가 체크박스에서 선택한 항목을 화면에 출력하는 파일의 소스코드는 다음과 같다. 빈칸을 채워 프로그램을 완성하시오.

<body>
    <ul>
       <li> 나의 취미 : 
         <?php
           $num= count((가)["hobby"]);

            for($i=0;$i<$num;$i++){
              echo $_POST["(나)"][(다)];
              if($i != $num -1)
                echo ", ";
            }
          ?>

       </li>
       
    </ul>
</body>
더보기

(가) $_POST
(나) hobby
(다) $i

<body>
    <ul>
       <li> 나의 취미 : 
         <?php
           $num= count($_POST["hobby"]);

            for($i=0;$i<$num;$i++){
              echo $_POST["hobby"][$i];
              if($i != $num -1)
                echo ", ";
            }
          ?>

       </li>
       
    </ul>
</body>

3. 다음은 웹 페이지에서 라디오 버튼 폼 양식으로 사용자가 이메일 수신 여부를 선택하게 하는 프로그램의 소스코드이다. 

<body>
  <form name="form1" method="post" action="view4.php">
    <h3>당신의 취미는?</h3>
    <ul>
       <li>성별 : 남성<input type="radio" name="gender" value="남" checked>
                여성<input type="radio" name="gender" value="여">
      </li>
      <li>이메일 : 수신<input type="radio" name="email_ok" value="예">
               비수신<input type="radio" name="email_ok" value="아니오" checked>
      </li>
      <li><input type="submit" value="확인"></li>  <!--이 구간 A-->
    </ul>
  </form>

</body>

A구간의 <확인> 버튼을 눌렀을 때 사용자가 라디오 버튼에서 선택한 항목을 화면에 출력하는 파일의 소스코드는 다음과 같다. 빈칸을 채워 프로그램을 완성하시오.

<body>
<?php
   (가)=$_POST["gender"];
   $email_ok=$_POST["email_ok"];
   if((나)== "예")
      $email = "수신";
   else
     $email="비수신";
?>

  <ul>
    <li>성별 : <?= $gender?></li>
     <li>이메일 : <?= (다)?></li>
  </ul>
</body>
더보기

(가) $gender
(나) $email_ok
(다) $email

<body>
<?php
   $gender=$_POST["gender"];
   $email_ok=$_POST["email_ok"];
   if($email_ok== "예")
      $email = "수신";
   else
     $email="비수신";
?>

  <ul>
    <li>성별 : <?= $gender?></li>
     <li>이메일 : <?= $email?></li>
  </ul>
</body>

4. 업로드 파일의 name 속성을 "upload"로 설정했을 때 업로드된 파일을 처리하는 쪽에서 사용하는 다음 변수의 의미를 간단히 설명하시오.

① $_FILES["upload"]["name"] 
② $_FILES["upload"]["type"] 
③ $_FILES["upload"]["size"]
④ $_FILES["upload"]["tmp_name"]

⑤$_FILES["upload"]["error"]

더보기

① $_FILES["upload"]["name"]            // 업로드된 파일명
② $_FILES["upload"]["type"]             // 업로드된 파일의 데이터형
③ $_FILES["upload"]["size"]             // 업로드된 파일의 크기(바이트)
④ $_FILES["upload"]["tmp_name"]  // 서버에 저장된 파일명

⑤$_FILES["upload"]["error"]            // 업로드 시 발생한 오류 코드


5. 게시판의 목록 보기 페이지(board_list.php)를 브라우저 화면에 가져오기 위해 사용하는 URL주소가 다음과 같을 때, board_view.php 소스코드의 빈칸을 채워 프로그램을 완성하시오.

http://localhost/board_list.php?table=free
<body>
<?php
  $table=(가)["table"];
if((나)=="free")
  $board_title="자유게시판";
else
  $board_title="공지사항";
?>
<h1><?= (다) ?></h1>
</body>
더보기


(가) $_GET
(나) $table
(다) $board_title

<body>
<?php
  $table=$_GET["table"];
if($table=="free")
  $board_title="자유게시판";
else
  $board_title="공지사항";
?>
<h1><?= $board_title ?></h1>
</body>

1. 다음은 함수를 이용하여 두 수의 최대공약수를 구하는 프로그램이다. 빈칸을 채워 프로그램을 완성하시오.

 

출력 포맷

###와 ###의 최대 공약수 : ###
<?php
	function (가)($x, $y) { 
		if ($x > $y) 
			$small = $y; 
		else 
			$small = (나);

		for ($i=1; $i<=$small; $i++) { 
			if($x%$i == 0 and $y%$i == 0) 
				(다) = $i; 
				
		}
		return $result; 
	}

	$num1 = 9;
	$num2 = 33; 

	$max_gong = computeMaxGong($num1, $num2); 

	echo "{$num1}와 {$num2}의 최대공약수 : (라)"; 
?>
더보기

(가) computeMaxGong
(나) $x
(다) $result
(라) $max_gong

<?php
	function computeMaxGong($x, $y) { 
		if ($x > $y) 
			$small = $y; 
		else 
			$small = $x;

		for ($i=1; $i<=$small; $i++) { 
			if($x%$i == 0 and $y%$i == 0) 
				$result = $i; 
				
		}
		return $result; 
	}

	$num1 = 9;
	$num2 = 33; 

	$max_gong = computeMaxGong($num1, $num2); 

	echo "{$num1}와 {$num2}의 최대공약수 : $max_gong"; 
?>

 


2. 다음은 함수를 이용하여 3개의 수 중에서 가장 큰 수를 찾는 프로그램이다. 빈칸을 채워 프로그램을 완성하시오.

 

출력포맷

###, ###, ### 중 가장 큰 수 : ###
<?php
	function maxTwo($i, $j) {
		if($i > $j) return $i; 
		else return (가); 
	}

	function maxThree($x, $y, (나)) { 

		return maxTwo((다)($x, $y), maxTwo($y, $z));

	}

	$a = 10;
	$b = 5;
	$c = 7; 

	(라) = maxThree($a, $b, $c); 

	echo "$a, $b, $c 중 가장 큰 수 : $max_num"; 
?>
더보기

(가) $j
(나) $z
(다) maxTwo
(라) $max_num

<?php
	function maxTwo($i, $j) {
		if($i > $j) return $i; 
		else return $j; 
	}

	function maxThree($x, $y, $z) { 

		return maxTwo(maxTwo($x, $y), maxTwo($y, $z));

	}

	$a = 10;
	$b = 5;
	$c = 7; 

	$max_num = maxThree($a, $b, $c); 

	echo "$a, $b, $c 중 가장 큰 수 : $max_num"; 
?>

3. 다음은 놀이공원 입장객의 나이와 입장권의 종류에 따라 요금을 계산하여 출력하는 프로그램이다. 빈칸을 채워 프로그램을 완성하시오. 입장권의 종류별 요금은 다음과 같다.

구분 어른 청소년 어린이 비고
입장권 18,000원 15,000원 13,000원 놀이공원 기본 입장
자유
이용권
주간 32,000원 28,000원 25,000원 입장+놀이기구 무제한 이용
야간 29,000원 25,000원 22,000원
빅5 이용권 29,000원 25,000원 22,000원 입장+놀이기구  5종 이용

※입장객의 나이에 따른 구분(만 나이 기준) : 0~3세는 무료, 어린이는 4~10세, 청소년은 11~17세, 성인은 18세이상

 

출력포맷

입장권 종류 : ####

입장객 나이 : ## 세

입장료 : ###### 원
<?php
	function (가)($cat){
		if ($cat == "입장권") $price = 13000;
		elseif ($cat == "자유 이용권 주간") $price = 25000;
		elseif ($cat == "자유 이용권 야간") $price = 22000;
		else $price = 22000;

		return (나);
	}
	function (다)($cat){ 
		if ($cat == "입장권") $price = 15000;
		elseif ($cat == "자유 이용권 주간") $price = 28000;
		elseif ($cat == "자유 이용권 야간") $price = 25000;
		(라) $price = 25000;

		(마) $price;
	}
	function (바)($cat){ 
		(사) ($cat == "입장권") $price = 18000;
		elseif ($cat == "자유 이용권 주간") $price = 32000;
		elseif ($cat == "자유 이용권 야간") $price = 29000;
		else $price = 29000;

		return $price;
	}

	$age = 2;
	$category = "자유 이용권 야간";


	
	if($age >= 0 && $age <= 3) $fee = 0;
	elseif($age >= 4 && $age <= 10) $fee = child_rate($category);
	elseif($age >= 11 && $age <= 17) $fee = youth_rate($category);
	else $fee = adult_rate($category);

	
	echo "입장권 종류 : (아)<br>";
	echo "입장객 나이 : {(자)}세<br>";
	echo "입장료 : {(차)}원";
?>
더보기

(가) child_rate
(나) $price
(다) youth_rate
(라) else
(마) return
(바) adult_rate
(사) if
(아) $category
(자) $age
(차) $fee

<?php
	function child_rate($cat){
		if ($cat == "입장권") $price = 13000;
		elseif ($cat == "자유 이용권 주간") $price = 25000;
		elseif ($cat == "자유 이용권 야간") $price = 22000;
		else $price = 22000;

		return $price;
	}
	function youth_rate($cat){ 
		if ($cat == "입장권") $price = 15000;
		elseif ($cat == "자유 이용권 주간") $price = 28000;
		elseif ($cat == "자유 이용권 야간") $price = 25000;
		else $price = 25000;

		return $price;
	}
	function adult_rate($cat){ 
		if ($cat == "입장권") $price = 18000;
		elseif ($cat == "자유 이용권 주간") $price = 32000;
		elseif ($cat == "자유 이용권 야간") $price = 29000;
		else $price = 29000;

		return $price;
	}

	$age = 2;
	$category = "자유 이용권 야간";


	
	if($age >= 0 && $age <= 3) $fee = 0;
	elseif($age >= 4 && $age <= 10) $fee = child_rate($category);
	elseif($age >= 11 && $age <= 17) $fee = youth_rate($category);
	else $fee = adult_rate($category);

	
	echo "입장권 종류 : $category<br>";
	echo "입장객 나이 : {$age}세<br>";
	echo "입장료 : {$fee}원";
?>

1. 다음은 배열을 이용하여 어떤 과목에 대한 학생 10명의 점수 합계와 평균을 구하는 프로그램이다. 빈칸을 채워 프로그램을 완성하시오.

 

출력 포맷

입력된 점수 : 87 76 98 87 87 93 79 85 88 63

합계 : 843, 평균 : 84.3
<?php
	$score = (가)(87, 76, 98, 87, 87, 93, 79, 85, 88, 63); 
	$sum = 0; 
	for($i=0; (나); $i++) 
		$sum = (다) + $score[(라)]; 

	$avg = (마)/10; 
	echo "입력된 점수 : "; 

	for($i=0; $i<10; $i++) 
		echo (바)." "; 

	echo "<br>";
	echo("합계 : $sum, 평균 : $avg"); 
?>
더보기

(가) array
(나) $i<10
(다) $sum
(라) $i
(마) $sum
(바) $score[$i]

<?php
	$score = array(87, 76, 98, 87, 87, 93, 79, 85, 88, 63); 
	$sum = 0; 
	for($i=0; $i<10; $i++) 
		$sum = $sum + $score[$i]; 

	$avg = $sum/10; 
	echo "입력된 점수 : "; 

	for($i=0; $i<10; $i++) 
		echo $score[$i]." "; 

	echo "<br>";
	echo("합계 : $sum, 평균 : $avg"); 
?>

2. 다음은 배열을 이용하여 학생 10명(김**, 이**, 정**, 장**, 황**, 이**, 최**, 함**, 도**, 강**)의 5개 과목(파이썬, PHP, 자바스크립트, 사진, 영화감상)별 성적 합계와 평균을 구하는 프로그램이다. 빈칸을 채워 프로그램을 완성하시오.

 

출력포맷


파이썬의 합계 : 888, 평균 : 88.8

PHP의 합계 : 809, 평균 : 80.9



영화감상의 합계 : 840, 평균 : 84
<?php
	
	$subject = array("파이썬", "PHP", "자바스크립트", "사진", "영화감상");
	$name = array("김**", "이**", "정**", "장**", "황**", "이**", "최**", "함**", "도**", "강**");

	$score = array(array(80, 79, 90, 89, 100, 87, 85, 83, 96, 99),
					array(70, 88, 70, 85, 60, 95, 77, 89, 82, 93),
					array(80, 79, 90, 89, 100, 87, 85, 83, 96, 99),
					array(70, 88, 70, 85, 60, 95, 77, 89, 82, 93),
					array(85, 66, 80, 88, 90, 86, 85, 93, 88, 79));

	for($i=0; $i<=4; $i++) { 
		(가) = 0; 
		for($j=0; $j<=9; $j++) 
			$sum = $sum + (나)[$i][$j];

		$avg = $sum/10;
		echo "{(다)}의 합계 : $sum, 평균 : (라) <br>"; 
	}
?>
더보기

(가) $sum
(나) $score
(다) $subject
(라) $avg

<?php
	
	$subject = array("파이썬", "PHP", "자바스크립트", "사진", "영화감상");
	$name = array("김**", "이**", "정**", "장**", "황**", "이**", "최**", "함**", "도**", "강**");

	$score = array(array(80, 79, 90, 89, 100, 87, 85, 83, 96, 99),
					array(70, 88, 70, 85, 60, 95, 77, 89, 82, 93),
					array(80, 79, 90, 89, 100, 87, 85, 83, 96, 99),
					array(70, 88, 70, 85, 60, 95, 77, 89, 82, 93),
					array(85, 66, 80, 88, 90, 86, 85, 93, 88, 79));

	for($i=0; $i<=4; $i++) { 
		$sum = 0; 
		for($j=0; $j<=9; $j++) 
			$sum = $sum + $score[$i][$j];

		$avg = $sum/10;
		echo "{$subject[$i]}의 합계 : $sum, 평균 : $avg <br>"; 
	}
?>

3. 2번 문제의 학생별로 5개 과목의 성적 합계와 평균을 구하는 프로그램을 작성하시오.

 

출력포맷

김** 학생의 합계 : 385, 평균 : 77

이** 학생의 합계 : 400, 평균 : 80



강** 학생의 합계 : 463, 평균 : 92.6
더보기
<?php
	
	$subject = array("파이썬", "PHP", "자바스크립트", "사진", "영화감상");
	$name = array("김**", "이**", "정**", "장**", "황**", "이**", "최**", "함**", "도**", "강**");

	$score = array(array(80, 79, 90, 89, 100, 87, 85, 83, 96, 99),
					array(70, 88, 70, 85, 60, 95, 77, 89, 82, 93),
					array(80, 79, 90, 89, 100, 87, 85, 83, 96, 99),
					array(70, 88, 70, 85, 60, 95, 77, 89, 82, 93),
					array(85, 66, 80, 88, 90, 86, 85, 93, 88, 79));

	for($i=0; $i<=9; $i++) { 
		$sum = 0;
		for($j=0; $j<=4; $j++)
			$sum = $sum + $score[$j][$i]; 
		
		$avg = $sum/5; 
		echo "{$name[$i]} 학생의 합계 : $sum, 평균 : $avg <br>";
	}
?>

4. 다음은 HTML의 <table> 태그와 배열을 이용하여 구구단 표를 만드는 프로그램이다. 빈칸을 채워 프로그램을 완성하시오.

 

출력 포맷

2단 3단 4단 5단 6단 7단 8단 9단
2×1=2 3×1=3 4×1=4 5×1=5 6×1=6 7×1=7 8×1=8 9×1=9
2×2=4 3×2=6 4×2=8 5×2=10 6×2=12 7×2=14 8×2=16 9×2=18
2×3=6 3×3=9 4×3=12 5×3=15 6×3=18 7×3=21 8×3=24 9×3=27
2×4=8 3×4=12 4×4=16 5×4=20 6×4=24 7×4=28 8×4=32 9×4=36
2×5=10 3×5=15 4×5=20 5×5=25 6×5=30 7×5=35 8×5=40 9×5=45
2×6=12 3×6=18 4×6=24 5×6=30 6×6=36 7×6=42 8×6=48 9×6=54
2×7=14 3×7=21 4×7=28 5×7=35 6×7=42 7×7=49 8×7=56 9×7=63
2×8=16 3×8=24 4×8=32 5×8=40 6×8=48 7×8=56 8×8=64 9×8=72
2×9=18 3×9=27 4×9=36 5×9=45 6×9=54 7×9=63 8×9=72 9×9=81
<?php
	echo "<table border=1>";
	echo "<tr align=center>";
	echo "<th width=100>2단</th>";
	echo "<th width=100>3단</th>";
	echo "<th width=100>4단</th>";
	echo "<th width=100>5단</th>";
	echo "<th width=100>6단</th>";
	echo "<th width=100>7단</th>";
	echo "<th width=100>8단</th>";
	echo "<th width=100>9단</th>";
	echo "</tr>";


	for($i=0; $i<=(가); $i++)
		for($j=0; $j<=(나); $j++) 
			$result[$i][$j] = ($i+2) * ($j+1);
			
	
	for($j=0; $j<=8; $j++) {
		echo "<tr align=center>"; 
		for($i=0; $i<=7; $i++) { 
			$a = $i + 2; 
			$b = $j + 1;
			$c = (다)[$i][$j];
			echo "<td>$a x $b = $c</td>";
		}
		echo "</tr>";
	}
	echo "</table>";
?>
더보기

(가) 7
(나) 8
(다) $result

<?php
	echo "<table border=1>";
	echo "<tr align=center>";
	echo "<th width=100>2단</th>";
	echo "<th width=100>3단</th>";
	echo "<th width=100>4단</th>";
	echo "<th width=100>5단</th>";
	echo "<th width=100>6단</th>";
	echo "<th width=100>7단</th>";
	echo "<th width=100>8단</th>";
	echo "<th width=100>9단</th>";
	echo "</tr>";


	for($i=0; $i<=7; $i++)
		for($j=0; $j<=8; $j++) 
			$result[$i][$j] = ($i+2) * ($j+1);
			
	
	for($j=0; $j<=8; $j++) {
		echo "<tr align=center>"; 
		for($i=0; $i<=7; $i++) { 
			$a = $i + 2; 
			$b = $j + 1;
			$c = $result[$i][$j];
			echo "<td>$a x $b = $c</td>";
		}
		echo "</tr>";
	}
	echo "</table>";
?>

1. 다음은 while 문을 사용하여 정수 1~1000 중 짝수를 출력하는 프로그램이다. 빈칸을 채워 프로그램을 완성하시오.

<?php
	(가) = 1; 

	while($num<=1000) { 
		if((나)==0) 
			echo "$num "; 

			(다); 
	}
?>
더보기

(가) $num 

(나) $num%2

(다) $num++

<?php
	$num = 1; 

	while($num<=1000) { 
		if($num%2==0) 
			echo "$num "; 

			$num++; 
	}
?>

2. 다음은 for문을 사용하여 정수 100~500 중 짝수를 출력하는 프로그램이다. 빈칸을 채워 프로그램을 완성하시오.

 

출력포맷


100 102

104 106

108 110



496 498

500
<?php
	$count = 0; 

	for($num=100; (가); $num++) 
	{ 
		if ($num%2 == 0) { 
			(나) "$num "; 
			$count++; 
		}
		if ((다) == 0) { 
			echo "<br>"; 
		}
	}
?>
더보기

(가) : $num<=500

(나) : echo

(다) : $count%2

<?php
	$count = 0; 

	for($num=100; $num<=500; $num++) 
	{ 
		if ($num%2 == 0) { 
			echo "$num "; 
			$count++; 
		}
		if ($count%2 == 0) { 
			echo "<br>"; 
		}
	}
?>

3. 다음은 while문을 사용하여 정수 300~3000 중 홀수의 합계를 출력하는 프로그램이다. 빈칸을 채워 프로그램을 완성하시오.

 

출력 포맷

300~3000 중 홀수의 합 : ###
<?php
	(가) = 300;
	(나) = 0; 

	while ($num <= 3000) {
		if ($num%2 == (다)) 
			$sum = $sum + (라); 
			

		$num++; 
	}
	echo "300~3000 홀수의 합 : (마)"; 
?>
더보기

(가) $num
(나) $sum
(다) 1
(라) $num
(마) $sum

<?php
	$num = 300;
	$sum = 0; 

	while ($num <= 3000) {
		if ($num%2 == 1) 
			$sum = $sum + $num; 
			

		$num++; 
	}
	echo "300~3000 홀수의 합 : $sum"; 
?>

4. 다음은 for문을 사용하여 정수 100~900 중 3의 배수가 아닌 수의 합계를 출력하는 프로그램이다. 빈칸을 채워 프로그램을 완성하시오.

 

출력 포맷

100까지의 합 : 100

101까지의 합 : 201

103까지의 합 : 304



899까지의 합 : ###
<?php
	$sum = 0; 

	for($num=100; $num<=900; (가))
	{ 
		if($num%3 (나) 0) { 
			$sum = $sum + $num; 
			echo "{(다)}까지의 합 : $sum<br>";
		}
	}
?>
더보기

(가) $num++
(나) !=
(다) $num

<?php
	$sum = 0; 

	for($num=100; $num<=900; $num++)
	{ 
		if($num%3 !=0) { 
			$sum = $sum + $num; 
			echo "{$num}까지의 합 : $sum<br>";
		}
	}
?>

5. for문을 사용하여 10!(1*2*3*…*10)을 구하는 프로그램을 작성하시오.

 

출력포맷


1! = 1

2! = 2

3! = 6



10! = 3628800
더보기
<?php
	$factorial = 1; 
	for($num=1; $num<=10; $num++) {
		
		$factorial *= $num; // num! 
		echo "{$num}! = $factorial<br>"; 
	}
?>

6. 다음은 정수 1~500 중 5의 배수를 출력하는 프로그램이다. 빈칸을 채워 프로그램을 완성하시오.

출력 포맷

5 10 15 20 25 30 35 40 45 50

55 60 65 70 75 80 85 90 95 100



455 460 465 470 475 480 485 490 495 500
<?php
	$count = 0; 

	for((가); $num<=500; $num++)
	{ 
		if((나) ==0) { 
			echo "$num "; 
			$count++; 
			if((다) == 0) 
			
			echo "<br>";
		}
	}
?>
더보기

(가) $num=1
(나) $num%5
(다) $count%10

<?php
	$count = 0; 

	for($num=1; $num<=500; $num++)
	{ 
		if($num%5 ==0) { 
			echo "$num "; 
			$count++; 
			if($count%10 == 0) 
			
			echo "<br>";
		}
	}
?>

7. 다음은 길이의 단위인 야드를 미터로 변환하는 프로그램이다(10~300야드, 10씩 증가). 빈칸을 채워 프로그램을 완성하시오.

미터 = 야드×0.9144

출력 포맷

-------------------

야드 미터

-------------------

10 9.144

20 18.288

30 27.432



300 274.32

-------------------
<?php
	echo "-------------------<br>";
	echo "야드 미터<br>";
	echo "-------------------<br>";

	for($yard = (가); $yard <= 300; $yard=(나)) {	
		(다) = $yard * 0.9144; 
		echo "$yard $meter<br>"; 
	}
	echo "-------------------<br>";	
?>
더보기

(가) 10
(나) $yard+10
(다) $meter

<?php
	echo "-------------------<br>";
	echo "야드 미터<br>";
	echo "-------------------<br>";

	for($yard = 10; $yard <= 300; $yard=$yard+10) {	
		$meter = $yard * 0.9144; 
		echo "$yard $meter<br>";
	}
	echo "-------------------<br>";	
?>

8. 다음은 HTML의 <table> 태그를 이용하여 7번 문제의 출력 결과를 표로 출력하는 프로그램이다. 빈칸을 채워 프로그램을 완성하시오.

 

출력 포맷

야드 미터
10 9.144
20 18.288
30 27.432
... ...
300 274.32
<?php
	echo "<table border=1>";
	echo "<tr align=center><td width=150>야드</td><td width=150>미터</td></tr>"; 


	for($yard=10; (가); $yard=$yard+10) {
		$meter = (나) * 0.9144; 
		echo "<tr align=center>"; 
		echo "<td>$yard</td><td>(다)</td>"; 
		echo "</tr>";
	}	
	echo "</table>";
?>
더보기

(가) $yard<=300
(나) $yard
(다) $meter

<?php
	echo "<table border=1>";
	echo "<tr align=center><td width=150>야드</td><td width=150>미터</td></tr>"; 


	for($yard=10; $yard<=300; $yard=$yard+10) {
		$meter = $yard * 0.9144; 
		echo "<tr align=center>"; 
		echo "<td>$yard</td><td>$meter</td>"; 
		echo "</tr>";
	}	
	echo "</table>";
?>

9. 넓이의 단위인 제곱미터를 평으로 변환하는 프로그램을 작성하되 출력 포맷은 7번 문제를 참고하시오(10~200제곱미터, 10씩 증가).

평 = 제곱미터×0.3025
더보기
<?php
	echo "-------------------<br>";
	echo "평 제곱미터<br>";
	echo "-------------------<br>";

	for($pyeong = 10; $pyeong <= 200; $pyeong=$pyeong+10) {
		
		$square_meter = $pyeong * 0.3025;
		echo "$pyeong $square_meter<br>"; 
	}
	echo "-------------------<br>";	
?>

1. 다음은 주간 또는 야간 근무 시간에 따라 아르바이트 급여를 계산하는 프로그램이다. 빈칸을 채워 프로그램을 완성하시오.

 

출력 포맷

시간당 급여
- 주간 근무 : 9,500원
- 야간 근무 : 주간 시급 * 1.5
<?php
	
	echo "시간당 급여<br>";
	echo "- 주간 근무 : 9,500원<br>";
	echo "- 야간 근무 : 주간 시급 * 1.5<br><br>";

	$hour_rate = 9500; 

	(가) = "주간";
	$work_time = 8; 

	if ($day_night == "주간") { 
		$pay = $hour_rate * $work_time;
	} (나) { 
		$pay = $hour_rate * $work_time * 1.5; 
	}
	
	
	echo "$work_time 시간 동안 일한 (다) 급여는 $pay 원입니다.";
?>
더보기

(가) $day_night

(나) else

(다) $day_night 

<?php
	echo "시간당 급여<br>";
	echo "- 주간 근무 : 9,500원<br>";
	echo "- 야간 근무 : 주간 시급 * 1.5<br><br>";

	$hour_rate = 9500; 

	$day_night = "주간"; 
	$work_time = 8; 

	if ($day_night == "주간") { 
		$pay = $hour_rate * $work_time; 
	} else { 
		$pay = $hour_rate * $work_time * 1.5;
	}
	

	echo "$work_time 시간 동안 일한 $day_night 급여는 $pay 원입니다.";
?>

2. 다음은 숫자로 된 월에 해당되는 계절 이름을 출력하는 프로그램이다. 빈칸을 채워 프로그램을 완성하시오.

<?php
	$month = 12; 

	if($month >= 3 (가) $month <= 5) { 
		$season = '봄'; 
		echo "{$month}월은 {$season}입니다."; 
	}
	(나) ($month >=6 && $month <= 8) { 
		$season = '여름'; 
		echo "{$month}월은 {$season}입니다."; 
	}
	(다) ($month >=9 && $month <= 11) { 
		$season = '가을'; 
		echo "{$month}월은 {$season}입니다."; 
	}
	elseif($month == 12 (라) $month == 1 || $month == 2) {

		$season = '겨울'; 
		echo "{$month}월은 {$season}입니다.";
	}
	else { 
		echo "잘못 입력되었습니다!"; 
	}
?>
더보기

(가) &&

(나) elseif

(다) elseif

(라) ||

<?php
	$month = 12; 

	if($month >= 3 && $month <= 5) { 
		$season = '봄'; 
		echo "{$month}월은 {$season}입니다."; 
	}
	elseif($month >=6 && $month <= 8) { 
		$season = '여름'; 
		echo "{$month}월은 {$season}입니다."; 
	}
	elseif($month >=9 && $month <= 11) { 
		$season = '가을'; 
		echo "{$month}월은 {$season}입니다."; 
	}
	elseif($month == 12 || $month == 1 || $month == 2) {
	
		$season = '겨울'; 
		echo "{$month}월은 {$season}입니다.";
	}
	else { 
		echo "잘못 입력되었습니다!"; 
	}
?>

3. 다음은 시험 점수가 90~100점이면 수, 80~90점이면 우, 70~79점이면 미, 60~69점이면 양, 0~59점이면 가, 그 외 점수가 입력되면 ‘점수를 잘못 입력하셨습니다!’라는 메세지를 출력하는 프로그램이다. 빈칸을 채워 프로그램을 완성하시오.

<?php
	(가) = 90; 
	echo "시험 점수 : {$score}점<br>"; 

	if($score >= 90 (나) $score <= 100)
		echo "등급 : 수";
	elseif($score >= 80 && $score <= 89) 
		echo "등급 : 우"; 
	elseif($score >= 70 && $score <= 79)
		echo "등급 : 미"; 
	(다)($score >= 60 && $score <= 69) 
		echo "등급 : 양";
	elseif($score >= 0 && $score <= 59) 
		echo "등급 : 가";
	(라)
		echo "점수를 잘못 입력하셨습니다!"; 
?>
더보기

(가) $score

(나) &&

(다) elseif

(라) else

<?php
	$score = 90;
	echo "시험 점수 : {$score}점<br>"; 

	if($score >= 90 && $score <= 100)
		echo "등급 : 수"; 
	elseif($score >= 80 && $score <= 89) 
		echo "등급 : 우";
	elseif($score >= 70 && $score <= 79)
		echo "등급 : 미"; 
	elseif($score >= 60 && $score <= 69) 
		echo "등급 : 양"; 
	elseif($score >= 0 && $score <= 59) 
		echo "등급 : 가"; 
	else 
		echo "점수를 잘못 입력하셨습니다!"; 
?>

4. 다음은 물건 구매액의 할인율에 따라 지불액을 계산하는 프로그램이다. 빈칸을 채워 프로그램을 완성하시오.

물건 구매액의 할인율

- 10,000원 이상 50,000원 미만: 5%

- 50,000원 이상 300,000원 미만: 7.5%

- 300,000원 이상: 10%
<?php
	$buy = 80000; 

	(가)($buy >= 10000 && $buy < 50000) 
		$rate = 5.0; 
	elseif($buy >= 50000 && $buy < 300000) 
		$rate = 7.5;
	(나) ($buy >= 300000) 
		$rate = 10.0;
	else 
		$rate = 0; 

	(다) = $buy * $rate / 100; 
	$pay = $buy - $discount; 


	echo "구매액 : {$buy}원<br>";
	echo "할인율 : {(라)}원<br>";
	echo "할인금액 : {$discount}원<br>";
	echo "지불액 : {(마)}원";
?>
더보기

(가) if

(나) elseif

(다) $discount

(라) $rate

(마) $pay

<?php
	$buy = 80000; 

	if($buy >= 10000 && $buy < 50000) 
		$rate = 5.0; 
	elseif($buy >= 50000 && $buy < 300000) 
		$rate = 7.5;
	elseif($buy >= 300000) 
		$rate = 10.0;
	else 
		$rate = 0; 

	$discount = $buy * $rate / 100; 
	$pay = $buy - $discount; 


	echo "구매액 : {$buy}원<br>";
	echo "할인율 : {$rate}원<br>";
	echo "할인금액 : {$discount}원<br>";
	echo "지불액 : {$pay}원";
?>

5. 다음은 음식점에서 고객의 서비스 만족도에 따라 팁을 계산하는 프로그램이다. 빈칸을 채워 프로그램을 완성하시오.

서비스 만족도에 따른 팁

- 매우 만족 : 음식 값의 20%

- 만족 : 음식 값의 10%

- 불만족 : 음식 값의 5%
<?php
	$price = 30000; 
	$service = "매우 만족"; 
	echo "서비스 만족도 : (가)<br>";
	
	
	if($service == "매우 만족")
		(나) = $price * 0.2; 
	elseif ($service == "만족") 
		$tip = $price * 0.1; 
	(다) 
		$tip = $price * 0.05; 

	echo "팁 : {$tip}원";
?>
더보기

(가) $service

(나) $tip

(다) else

<?php
	$price = 30000; 
	$service = "매우 만족"; 
	echo "서비스 만족도 : $service";
	
	
	if($service == "매우 만족")
		$tip = $price * 0.2; 
	elseif ($service == "만족") 
		$tip = $price * 0.1; 
	else 
		$tip = $price * 0.05; 

	echo "팁 : {$tip}원";
?>

2023 정보처리기사 실기 예상 문제 모음

기출과 동일한 문제가 9문제나 출제됨

 

1. 출력결과

class Static{
  public int a=20;
  static int b=0;
}


public class Main {
  public static void main(String[] args) {
    int a=10;
    Static.b=a;
    Static st=new Static();

    System.out.println(Static.b++);
     System.out.println(st.b);
     System.out.println(a);
     System.out.println(st.a);
  }
}

 

더보기

10

11

10

20


2. 출력결과

#include <stdio.h>

int main(void) {
  char a[]="Art";
  char*p=NULL;
  p=a;
  printf("%s\n",a);
  printf("%c\n",*p);
  printf("%c\n",*a);
  printf("%s\n",a);

  for(int i=0;a[i]!='\0';i++){
    printf("%c",a[i]);
  }
}
더보기

Art

A

A

Art

Art


3. 네트워크에 관련된 다음 설명에서 괄호에 들어갈 알맞은 용어를 쓰시오(21년 2회차 기출문제와 거의 동일)

(1) : 연결형 통신에서 주로 사용되는 방식으로, 출발지와 목적지와 전송 경로를 미리 연결하여 논리적으로 고정한 후 통신하는 방식
(2) : 비연결형 통신에서 주로 사용되는 방식으로, 사전에 접속 절차를 수행하지 않고 헤더에 출발지에서 목적지까지의 경로 지정을 위한 충분한 정보를 붙여서 개별적으로 전달하는 방식
ㄱ : 데이터 그램
ㄴ : 패킷
ㄷ : 프레임
ㄹ : 가상회선

(가 ) : 

(나 ) : 

더보기

(가 )  : ㄹ

(나 ) : ㄱ


4. 클라이언트와 서버 간 자바스크립트 및 XML을 비동기 방식으로 처리하며 전체 페이지를 새로고치지 않고도 웹페이지 일부 영역만을 업데이트할 수 있도록 하는 기술을 의미하는 용어를 쓰시오(20년 2회차 기출문제와 거의 동일)

더보기

AJAX


5. 해당하는 용어를 골라 쓰시오.

(가) 독립적으로 실행되는 악의적인 소프트웨어로, 스스로를 복제하고 다른 컴퓨터로 확산된다.

(나) 자가 복제는 하지 못하지만 사용자가 원하는 무언가로 위장해 자신을 활성화하도록 유도하는 방식으로 피해를 입히고 확산된다.

(다) 다른 독립적 프로그램의 코드 내에 스스로를 주입한 다음, 그 프로그램이 악성 행동을 하고 스스로 확산되도록 강제하는 컴퓨터 코드
ㄱ. 바이러스
ㄴ. 웜
ㄷ. 트로이목마
더보기

웜/트/바

(가) : ㄴ

(나) : ㄷ

(다) : ㄱ

 


6. 다음에 해당하는 용어를 쓰시오.

원격지 호스트 컴퓨터에 접속하기 위해 사용되는 인터넷 프로토콜, 기본 포트는 22번

7. (가), (나), (다) 설명에 해당하는 기호를 쓰시오.

(가)  : 릴레이션에서 행을 나타내는 말이며 파일의 레코드(record)에 대응하는 개념
(나)  : 어느 한 시점에 릴레이션에 존재하는 투플들의 집합이며 릴레이션 인스턴스는 간단히 릴레이션이라고 부르기도 하고 릴레이션 외연(relation extension)이라고도 부른다.
(다) : 하나의 릴레이션에서 투플의 전체 개수
ㄱ : 릴레이션 인스턴스  
ㄴ : 
ㄷ : 튜플
ㄹ : 차수
ㅁ : 도메인
ㅂ : 카디널리티

(가) :

(나) :

(다) :

더보기

(가) : ㄷ

(나 ) : ㄱ

(다) : ㅂ


8.  출력결과를 쓰시오

#include <stdio.h>

int main(void) {
  char *a = "qwer";
  char *b = "qwtety";
  for (int i = 0; a[i] != '\0'; i++) {
    for (int j = 0; b[j] != '\0'; j++) {
      if (a[i] == b[j]) printf("%c", a[i]);
    }
  }
}

9. 해당하는 용어를 쓰시오

마이크로소프트의 PPTP와 시스코의 L2F(Layer 2 Forwarding) 프로토콜을 합친 형태
더보기

L2TP


10. (가)는 연산자이고 (나)는 정수인데 빈칸을 알맞게 쓰시오.

#include <stdio.h>

int main(void) {
int input = 101110;
int di = 1;
int sum = 0;

while (input > 0) {
sum = sum + (input (가)(나) * di);
di = di * 2;
input = input / 10;
}

printf("%d", sum);

return 0;
}
더보기

(가 ) : %

(나) : 10 또는 2


11. 다음에 해당하는 디자인패턴을 골라서 쓰시오.

대리자, 대변인의 의미를 갖고 있으며 어떤 객체를 사용하고자 할때, 객체를 직접적으로 참조하는 것이 아닌 해당 객체를 대항하는 객체를 통해 대상 객체에 접근하는 방식을 사용하면 해당 객체가 메모리에 존재하지 않아도 기본적인 정보를 참조하거나 설정할 수 있고, 실제 객체의 기능이 필요한 시점까지 객체의 생성을 미룰 수 있다.
디자인 패턴 이름이 보기에 다 적혀있음
더보기

proxy


12. 다음 네트워크 관련 설명에서 괄호에 들어갈 알맞은 용어를 쓰시오(20년 3회 기출과 유사)

TCP/IP기반의 인터넷 통신 서비스에서 인터넷 프로토콜과 조합하여 통신 중에 발생하는 오류의 처리와 전송 경로 변경 등을 위한 제어 메시지를 취급하는 무연결 전송용 프로토콜로, OSI기본 참조 모델의 네트워크 계층에 속한다
더보기

ICMP


13. 다음은 화이트박스 테스트의 프로그램 제어흐름이다. 다음의 순서도를 참고하여 분기 커버리지로 구성할 테스트 케이스를 작성하시오. (20년 3회 기출과 동일)

더보기

( 1 )->( 2 )->( 3 )->( 4 )->( 5 )->( 6 )->( 7 )

(1 )->( 2 )->( 4 )->( 5 )->( 6 )->( 1 )

 

또는

 

( 1 )->( 2 )->( 3 )->( 4 )->( 5 )->( 6 )->( 1 )

(1 )->( 2 )->( 4 )->( 5 )->( 6 )->( 7 )


14. (가) (나) 빈칸에 알맞은 변수를 쓰시오.

#include <stdio.h>

void swap(int* idx1, int* idx2) {
  
  int t = *idx1;
  *idx1 = *idx2;
  *( 가 ) = t;
}
void Usort(int a[], int len) {
  for (int i = 0; i < len - 1; i++) {
    for (int j = 0; j < len - i - 1; j++) {
      if (a[j] > a[j + 1])
        swap(&a[j], &a[j + 1]);
    }
  }

  for (int k = 0; k < 5; k++) {
    printf("%d ", a[k]);
  }
}

int main(void) {
  int arr[] = {64, 34, 25, 12, 40};
  int nx = 5;

  Usort(arr, (나));
  return 0;
}
더보기

(가) idx2

(나) nx


15. <학생> 테이블에서 '이름'이 "민수"인 튜플을 삭제하고자 한다. 다음 <처리 조건>을 참고하여 SQL문을 작성하시오.(20년 3회차 기출과 동일)

더보기

DELETE FROM 학생 WHERE 이름='민수';


16. 다음 <성적> 테이블에서 과목별 점수의 평균이 90점 이상인 '과목이름', '최소점수', '최대점수'를 검색하고자 한다. <처리 조건>을 참고하여 적합한 SQL문을 작성하시오. (20년 3회차 기출과 동일)

더보기

SELECT 과목이름, MIN(점수) AS 최소점수, MAX(점수) AS 최대점수 FROM 성적 GROUP BY 과목이름 HAVING AVG(점수) >=90;


17. 출력결과(20년 2회 기출문제와 동일)

a={'한국','중국','일본'}
a.add('베트남')
a.add('중국')
a.remove('일본')
a.update(['한국','홍콩','태국'])
print(a)
더보기

{'한국', '중국', '베트남', '홍콩', '태국'}


18.  출력 결과를 쓰시오.(20년 3회 기출과 동일)

abstract class Vehicle{
	String name;
    abstract public String getName(String val);
    public String getName(){
    	return "Vehicle name:" + name;
    }
}

class Car extends Vehicle{
  private String name;
	public Car(String val){
    	name=super.name=val;
   }
public String getName(String val){
	return "Car name : " + val;
   }
public String getName(byte val[]){
	return "Car name : " + val;
   }
}

public class Main {
	public static void main(String[] args){
    Vehicle obj = new Car("Spark");
    System.out.print(obj.getName());
    }
}
더보기

Vehicle name : Spark


19. 설명에 해당하는 것을 기호로 찾아쓰시오. (22년 2회차 산업기사 문제와 거의 동일)

스키마는 데이터베이스의 구조와 제약 조건에 관한 전반적인 명세를 기술한 것이다.
(    가    ) : 사용자나 응용 프로그래머가 각 개인의 입장에서 필요로 하는 데이터베이스의 논리적 구조를 정의한 것이다.
(    나   ) : 데이터베이스의 전체적인 논리적 구조이며, 모든 응용 프로그램이나 사용자들이 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로, 하나만 존재한다.
(    다   ) : 물리적 저장장치의 입장에서 본 데이터베이스 구조로, 실제로 저장될 레코드의 형식, 저장 데이터 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타낸다. 
ㄱ : 외부스키마
ㄴ : 개념스키마
ㄷ : 내부스키마

가 : 

나 : 

다 : 

더보기

가 : ㄱ

나 : ㄴ

다 : ㄷ


20. 출력 결과를 쓰시오.

class Parent {
int x = 100;

Parent() {
this(500);
}
Parent(int x) {
this.x = x;
}
int getX() {
return x;
}
}
class Child extends Parent {
int x = 4000;

Child() {
this(5000);
}

Child(int x) {
this.x = x;
}


}

public class Main {
public static void main(String[] args) {
Child obj = new Child();
System.out.println(obj.getX());
}
}

2023 정보처리기사 실기 예상 문제 모음

 2023 정보처리기사 실기 예상 문제 모음

 

1. 소프트 웨어 테스트에서 오류의 80%는 전체 모듈의 20% 내에서 발견된다는 법칙을 쓰시오.

더보기

Pareto의 법칙


2. 하향식 통합에 있어서 모듈 간의 통합 시험을 위해 일시적으로 필요한 조건만을 가지고 임시로 제공되는 시험용 모듈을 무엇이라고 하는지 쓰시오.

더보기

Stub


3. 테스트의 결과가 참인지 거짓인지를 판단하기 위해서 사전에 정의된 참값을 입력하여 비교하는 기법 및 활동으로 종류에는 참, 샘플링, 휴리스틱, 일관성 검사가 존재하는 용어를 쓰시오.

더보기

테스트 오라클


4. 아래는 목적에 따른 테스트 기법이다. 뒤에 TEST는 생략하고 답을 영어로 적으시오

ㄱ. 시스템에 여러 가지 결함을 주어 실패하도록 한 후 올바르게 복구되는지를 확인하는 테스트
ㄴ. 시스템에 설치된 시스템 보호 도구가 불법적인 침입으로부터 시스템을 보호할 수 있는지를 확인하는 테스트
ㄷ. 스스템에 과도한 정보량이나 빈도 등을 부과하여 과부하 시에도 소프트웨어가 정상적으로 실행되는지를 확인하는 테스트
ㄹ. 소프트웨어의 실시간 성능이나 전체적인 효율성을 진단하는 테스트로, 소프트웨어의 응답 시간, 처리량 등을 테스트
ㅁ. 소프트웨어 내부의 논리적인 경로, 소스 코드의 복잡도 등을 평가하는 테스트
ㅂ. 소프트웨어의 변경 또는 수정된 코드에 새로운 결함이 없음을 확인하는 테스트
ㅅ. 변경된 소프트웨어와 기존 소프트웨어에 동일한 데이터를 입력하여 결과를 비교하는 테스트
더보기

ㄱ: Recovery(회복)
ㄴ: Security(안전)
ㄷ: Stress(강도)
ㄹ: Performance(성능)
ㅁ: Structure(구조)
ㅂ: Regression(회귀)
ㅅ: Parallel(병행)


5. 다음에 해당하는 테스트를 영어로 쓰시오 뒤에 TEST는 생략하고 답을 영어로 적으시오

ㄱ. 프로그램을 실행하여 오류를 찾는 테스트
ㄴ. 프로그램을 실행하지 않고 명세서나 소스 코드를 대상으로 분석하는 테스트
더보기

ㄱ: Dynamic(동적)
ㄴ: Static(정적)


6. 해당하는 테스트를 영어로 쓰시오.(뒤에 test는 생략)

ㄱ. 개발자의 시각에서 제품의 생산 과정을 테스트 하는 것
ㄴ. 사용자의 시각에서 생산된 제품의 결과를 테스트 하는 것
더보기

ㄱ : Verification(검증)
ㄴ:  Validation(확인)


7. 모듈의 원시 코드를 오픈시킨 상태에서 원시 코드의 논리적인 모든 경로를 테스트하여 테스트 케이스를 설하는 방법으로 코드 기반 테스트라고도 하는 것을 쓰시오.

더보기

화이트박스 테스트(White Box Test)


8. 소프트웨어가 수행할 특정 기능을 알기 위해서 각 기능이 완전히 작동되는 것을 입증하는 테스트로 프로그램 내부의 구조나 알고리즘을 보지 않고 요구 분석 명세서나 설계 사양서에 테스트 케이스를 추출하여 테스트하는 것을 쓰시오.

더보기

블랙박스 테스트(Black Box Test)


9. 테스트에 대한 다음 설명에서 각 지문에 해당하는 커버리지를 <보기>에서 찾아 기호로 쓰시오

1. 최소 한번은 모든 문장이 수행되도록 구성하는 검증 기준
2. 조건식이 참/거짓일 때 수행되도록 구성하는 검증 기준
3. 2번과 달리 조건식에 상관없이 개별 조건이 참/거짓일 때 수행되도록 구성하는 검증 기준

 

<보기>
ㄱ. multiple Coverage
ㄴ. Choice Coverage
ㄷ. Condition Coverage
ㄹ. Branch Coverage
ㅁ. Branch/ Condition Coverage
ㅂ. Statement Coverage
더보기

1 : ㅂ

2 : ㄹ

3 : ㄷ

 

statement coverage : 문장 검증 기준

branch coverage : 분기 검증 기준

condition coverage :조건 검증 기준

branch/Condition coverage : 분기/조건 기준


10. 다음 중 화이트 박스 테스트 기법에 해당하는 것을 모두 골라 기호로 쓰시오

<보기>
ㄱ. Base Path Testing
ㄴ. Condition Testing
ㄷ. Boundary Value Analysis
ㄹ. Equivalence Paritioning
ㅁ. Data Flow Testing
ㅂ. Cause-Effect Graph
ㅅ. Branch Coverage Testing
ㅇ. Statement coverage Testing
ㅈ. Boundary Division Analysis
더보기

ㄱ, ㄴ, ㅁ, ㅅ,ㅇ


11. 메케이브(McCabe)가 만든 것으로 테스트 케이스 설계자가 절차적 설계의 논리적 복잡성을 측정할 수 있게 해주는 테스트 기법을 영어로 쓰시오

더보기

Base path Testing(기초 경로 검사)


12. 프로그램의 입력 조건에 타당한 입력 자료와 타당하지 않은 입력 자료의 개수를 균등하게 하여 테스트 케이스
를 정하고, 해당 입력 자료에 맞는 결과가 출력되는지 확인하는 기법을 영어로 쓰시오

더보기

Equivalence Partitioning Testing(동치 분할 검사) 또는 동등 분할 기법


13. 입력 조건의 중간값보다 경계값에서 오류가 발생 될 확률이 높다는 점을 이용하여 입력 조건의 경계값을 테스트 케이스로 선정하여 검사하는 기법을 영어로 쓰시오.

더보기

Boundary Value Analysis(경계값 분석)


14. 코딩 직후 소프트웨어 설계의 최소 단위인 모듈이나 컴포넌트에 초점을 맞춰 테스트로 모듈 테스트라고도 하며 모듈 내부의 구조를 구체적으로 들여다볼 수 있는 화이트박스 테스트 같은 구조 기반 테스트를 주로 시행하는 테스트를 영어로 쓰시오.

더보기

Unit Test(단위 테스트)


15. 14번에서 하나의 모듈을 테스트할 때 상위나 하위 모듈이 개발이 안된 경우도 있다. 이 때 상위나 하위 모듈이 개발될 때까지 기다릴 수 없으므로 가상의 상위나 하위 모듈을 만들어 사용해야 하는데 가상 상위 모듈을 (가)라 하고 가상 하위 모듈을 (나)라고 한다. (가), (나)에 해당하는 것을 쓰시오. 

더보기

(가) : 테스트 드라이버(Driver)

(나) : 테스트 스텁(Stub)


16.   단위테스트가 끝난 모듈을 통합하는 과정에서 발생하는 오류 및 결함을 찾는 테스트 기법을 영어로 쓰시오

더보기

Integration Test(통합 테스트)


17.  프로그램의 상위 모듈에서 하위 모듈 방향으로 통합하면서 테스트하는 기법을 영어로 쓰시오.

더보기

Top Down Integration Test(하향식 통합 테스트)


18. 프로그램의 하위 모듈에서 상위 모듈 방향으로 통합하면서 테스트하는 기법을 영어로 쓰시오.

더보기

Bottom Up Integration Test(상향식 통합 테스트)

 


19. 하향식 통합 테스트에서는 아래 그림과 같을 때 맨 상위 모듈 A를 모듈 B와 통합하여 테스트하고 그 다음으로 모듈 C를 먼저 할지 E를 먼저할 지 결정해야 하는데 C를 먼저 선택하는 방식을 (가)이라 하고 모듈 E를 먼저 선택하는 방식을 (나)라 한다. (가), (나)에 들어갈 것을 쓰시오. 

더보기

(가) : 넓이 우선(Breadth first) 방식

(나) : 깊이 우선(Depth first) 방식


20. 개발한 소프트웨어가 사용자의 요구사항을 충족하는지에 중점을 두고 테스트하는 방법을 영어로 쓰시오.

더보기

Acceptance Test(인수 테스트)


21. 테스트 결과가 올바른지 판단하기 위해 사전에 정의된 참 값을 대입하여 비교하는 기법을 테스트 오라클이라고 한다. 다음은 테스트 오라클의 종류인데 설명에 해당하는 것을 영어로 쓰시오.

ㄱ : 모든 테스트 케이스의 입력값에 대해 기대하는 결과를 제공하는 오라클
ㄴ : 특정한 몇몇 테스트 케이스의 입력값들에 대해서만 기대하는 결과를 제공하는 오라클
ㄷ : 특정 테스트 케이스의 입력값에 대해 기대하는 결과를 제공하고 나머지 입력값들 에 대해서는 추정으로 처리하는 오라클 
ㄹ : 애플리케이션에 변경이 있을 때, 테스트 케이스의 수행 전과 후의 결과 값이 동일한지를 확인하는 오라클
더보기

ㄱ : True Oracle(참 오라클)

ㄴ : Sampling Oracle (샘플링 오라클)

ㄷ : Heuristic Oracle(추정 오라클)

ㄹ : Consistent ORacle(일관성 오라클)


22. 테스트가 실행될 환경을 시뮬레이션 하여 컴포넌트 및 모듈이 정상적으로 테스트 되도록 하는 도구를 테스트 하네스라고 한다. 다음은 테스트 하네스의 구성요소중 하나와 테스트 단계에서 사용되는 개념이다. 해당하는 것을 쓰시오.

ㄱ : 테스트 대상 컴포넌트나 모듈, 시스템에 사용되는 테스트 케이스의 집합
ㄴ : 테스트 케이스를 적용하는 순서에 따라 여러 개의 테스트케이스를 묶은 집합
더보기

ㄱ : Test Suites(테스트 슈트)

ㄴ : Test Scenario(테스트 시나리오) 

 

테스트 슈트가 단순한 묶음이라면 테스트 시나리오는 테스트 케이스의 동작 순서에 따른 묶음이다

 

 2023 정보처리기사 실기 예상 문제 모음

+ Recent posts