56
웹 웹웹웹웹웹 웹 웹웹 (Web Programming & Practice) 웹웹웹웹웹 웹웹 웹웹 웹 웹웹 웹웹웹웹웹 IT 웹웹 웹웹웹웹웹웹웹

웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교 IT 대학 컴퓨터과학전공

  • Upload
    clodia

  • View
    92

  • Download
    2

Embed Size (px)

DESCRIPTION

웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교 IT 대학 컴퓨터과학전공. 배열 (Array). 프로그래밍 본격 시작. 같은 데이터 형식의 저장공간이 연속적으로 배치되어 있어 , 인덱스를 이용하여 상대위치를 읽거나 쓸 수 있는 자료구조 (array_dow.php). $dow = array (“Sun”, “Mon”, “Tue”, “Wed”, “Thu”, “Fri”, “Sat”);. - PowerPoint PPT Presentation

Citation preview

Page 1: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

웹 프로그래밍 및 실습(Web Programming & Practice)

프로그래밍 본격 시작

최 미정강원대학교 IT 대학 컴퓨터과학전공

Page 2: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 2

같은 데이터 형식의 저장공간이 연속적으로 배치되어 있어 , 인덱스를 이용하여 상대위치를 읽거나 쓸 수 있는 자료구조 (array_dow.php)

배열 (Array)프로그래밍 본격 시작

$dow = array (“Sun”, “Mon”, “Tue”, “Wed”, “Thu”, “Fri”, “Sat”);

<?PHP

$arr1 = array (“A”, “B”, “C”, “D”, “E”, “F”, “G”);

$arr2 = array (“A”, “B”, “D”, “E”, “F”, “G”, “H”);

$results = array_diff ($arr1, $arr2);

foreach ($results as $value) {

{

print “$value<br>”;

}

?>

$coins = array (1, 5, 10, 50, 100, 500);

Page 3: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 3

함수 array_diff 문법

• array1 에는 있으나 나머지 array 에는 없는 값을 반환

• 두 개 이상 array 의 원소 값을 비교

array_diff(), foreach()프로그래밍 본격 시작

array array_diff (array array1, array array2 [,array …])

함수 foreach 문법

• Array_expression 에 의해 순환 , 현재 element 값이 $value 에 할당

• 매 순환마다 다음 element 로 전진

foreach (array_expression as $value) statement

Page 4: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 4

중첩된 구조로 표현 (array 구조 내부에 array 를 정의 )

2 차원 배열 예

2 차원 배열 (2D Array) (1/2)프로그래밍 본격 시작

9,8,7

6,5,4

3,2,1 $twod_array = array (

array (1, 2, 3),

array (4, 5, 6),

array (7, 8, 9)

);

2 차원 배열에서 원소를 지정하는 방법 ($var[i][j]) [index 는 0 부터 시작 ]

N 차원 배열인 경우• 반복적으로 중첩하여 표현• 원소 지정 방법 : $var[i1][i2]…[iN]

$temp = $twod_array[2][1];

Page 5: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 5

2 차원 배열의 예제 (array-2d.php)

2 차원 배열 (2D Array) (2/2)프로그래밍 본격 시작

<? $twod_array = array ( array (1, 2, 3), array (4, 5, 6), array (7, 8, 9) ); $dim = 1; foreach ($twod_array as $oned_array) { print "dimension(" . $dim++ . ") "; foreach ($oned_array as $element) { print $element . " "; } print "<br>"; }

for($i=0;$i < 3;$i++) { print "dimension(" . ($i+1) . ") "; for($j=0;$j < 3;$j++) { print $twod_array[$i][$j] . " "; } print "<br>"; }?>

Page 6: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 6

정렬의 예 (sort1.php)

배열의 정렬 (Sorting) (1/3)프로그래밍 본격 시작

<?

$arrays = array (“Kim”, “Lee”, “Park”, “Cho”, “Kang”, “Shim”,

“Choi”, “Chang”, “Bae”, “Yang”);

sort ($arrays);

foreach ($arrays as $ar)

{

print “$ar<br>”;

}

?>

Page 7: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 7

정렬 함수 sort()

• array 배열에 있는 원소들이 낮은 것에서 높은 순서로 배치

• 배열에 있는 내용을 알파벳 순으로 정렬하여 원래의 배열에 저장

배열의 정렬 (Sorting) (2/3)프로그래밍 본격 시작

void sort (array array)

sample1.php sample11.php sample21.php

sample2.php sample12.php sample22.php

sample3.php sample13.php sample23.php

sample1.php sample11.php sample12.php

sample13.php sample2.php sample21.php

sample22.php sample23.php sample3.php

sort 적용 후

Page 8: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 8

자연 (natural) 정렬 함수 natsort() (sort2.php)

• 문자 ( 알파벳 , 한글 등 ) 와 숫자가 섞여 있는 문자열을 정렬할 때 사용

• 자연 순서 (natural ordering)

배열의 정렬 (Sorting) (3/3)프로그래밍 본격 시작

void natsort (array array)

sample1.php sample11.php sample21.php

sample2.php sample12.php sample22.php

sample3.php sample13.php sample23.php

sample1.php sample2.php sample3.php

sample11.php sample12.php sample13.php

sample21.php sample22.php sample23.php

natsort 적용 후

Page 9: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 9

숫자를 사용하지 않고 문자 ( 스트링 ) 를 키 (key) 로 사용하는 배열

연상 / 연관 배열 (Associative Array) (1/7)

프로그래밍 본격 시작

<?PHP

$freshman = array (

“Kim” => “Computer”,

“Lee” => “Math”,

“Park” => “Physics”,

“Choi” => “Music”,

“Han” => array (“Electronics”, “Statistics”)

);

?>

키 (key) 배열 원소

Page 10: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 10

배열의 항목을 가져올 때

연상 / 연관 배열 (Associative Array) (2/7)

프로그래밍 본격 시작

배열에 항목을 추가할 때

배열에서 항목을 삭제할 때

$result = $freshman[Kim] // or

$result = $freshman[“Kim”];

$freshman[Ko] = “History”;

unset($array[key_value]); 혹은 unset($array[$index]);

Page 11: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 11

삭제 (unset() 함수 ) 의 예 (unset.php)

연상 / 연관 배열 (Associative Array) (3/7)

프로그래밍 본격 시작

<? $fruit = array ( "Apple" => "Red", "Pear" => array ("Brown", "Yellow"), "Peach" => "Pink", "Tomato" => array ("Red", "Green"), "Banana" => "Yellow" ); print "**** BEFORE ****<br>"; var_dump($fruit); print "<br><br>"; unset($fruit[Pear], $fruit[Banana]); print "**** AFTER ****<br>"; var_dump($fruit);?>

var_dump() 는 배열 내

모든 항목을 출력하는

함수임

Page 12: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 12

foreach 문의 사용 예

연상 / 연관 배열 (Associative Array) (4/7)

프로그래밍 본격 시작

$fruit = array ( “Apple” => “Red”, “Pear” => array (“Brown”, “Yellow”), “Peach” => “Pink”, “Tomato” => array (“Red”, “Green”), “Banana” => “Yellow” );

print “**** BEFORE ****<br>”; print_fruit ($fruit); print “<br><br>”; print “**** AFTER ****<br>”; unset ($fruit[Pear], $fruit[Banana]); print_fruit ($fruit);?>

Page 13: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 13

foreach 문의 사용 예 ( 계속 )

연상 / 연관 배열 (Associative Array) (5/7)

프로그래밍 본격 시작

<?PHP function print_fr ($arr_var) { foreach ($arr_var as $arr_item) { if (is_array ($arr_item)) print_fr ($arr_item); else print “Color = “ . $arr_item . “<br>”; } } function print_fruit ($arr_var)

{ foreach ($arr_var as $arr_item => $arr_list) { print “FRUIT: “ . $arr_item . “<br>”;

if (is_array ($arr_list)) print_fr ($arr_list); else print “Color = “ . $arr_list . “<br>”;

print “====================<br>”; } }

Page 14: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 14

foreach 문의 사용 예 ( 계속 ) – 결과 화면 (array_assoc.php)

연상 / 연관 배열 (Associative Array) (6/7)

프로그래밍 본격 시작

Page 15: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 15

연상 배열의 정렬

• asort() 함수의 경우 , 원소가 배열이 아닌 것을 먼저 정렬하고 , 배열인 것은 다음 순으로 정렬함

연상 배열의 정렬의 예 : array_assoc_sort.php

연상 / 연관 배열 (Associative Array) (7/7)

프로그래밍 본격 시작

정렬함수 함수의 의미

asort() 연상 배열을 값을 기준으로 정렬

arsort() 연상 배열을 값을 기준으로 역순으로 정렬

ksort() 연상 배열을 키를 기준으로 정렬

krsort() 연상 배열을 키를 기준으로 역순으로 정렬

Page 16: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 16

배열 재배치 : shuffle(), array_reverse()

배열 탐색 : each(), current(), reset(), end(), next(), pos(), prev()

배열 각 원소에 함수 적용 : array_walk()

배열의 수 세기 : count(), sizeof(), array_count_values()

배열을 스칼라 변수로 변환 : extract()

각 함수의 사용법에 대해서 각자 읽힐 것

기타 배열 관련 함수들프로그래밍 본격 시작

Page 17: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 17

문법

• expr1 계산

• 매 순환의 시작에 expr2 가 계산

• 이때 계산된 expr2 값이 TRUE 이면 순환은 계속되며 statement 가 수행

• 계산된 expr2 값이 FALSE 이면 순환 종료

• 매 순환의 마지막에 expr3 가 계산

for 문 (1/4)프로그래밍 본격 시작

for (expr1; expr2; expr3)

statement

for (expr1; expr2; expr3):

statement;

...;

endfor;

for (expr1; expr2; expr3) {

statement;

...;

}

Page 18: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 18

구하기 (for_ex1.php, for_ex2.php)

for 문 (2/4)프로그래밍 본격 시작

100

1i

i

<?PHP

for ($i = 1, $sum = 0;$i < 101;$i++)

$sum = $sum + $i;

print “1 부터 100 까지의 합 = $sum”;

?>

<?PHP

$i = 1;

$sum = 0;

while ($i < 101)

{

$sum = $sum + $i;

$i = $i + 1;

}

print “1 부터 100 까지의 합 = $sum”;

?>

Page 19: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 19

구구단 예제 (99_ex.php)

for 문 (3/4)프로그래밍 본격 시작

<html><body><center><table border=“1”><tr><td>&nbsp;</td><?PHP for ($cols = 1; $cols <= 9; $cols++) print “<td>$cols</td>”;?></tr>

<?PHP for ($rows = 1; $rows <= 9; $rows++) { print “<tr>\n”; print “<td>$rows</td>”; for ($cols = 1; $cols <= 9; $cols++) print “<td>” . $rows * $cols . “</td>”; print “</tr>\n”; }?></table></center></body></html>

Page 20: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 20

구구단 예제 – 결과 화면

for 문 (4/4)프로그래밍 본격 시작

Page 21: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 21

여러 개의 if 문이 이어져있는 것과 같은 기능을 수행

하나의 변수에 따라 각각의 다른 코드를 실행하고자 할 때 편리

switch 문프로그래밍 본격 시작

<?PHP

$score = 80;

switch ($score)

{

case 100: print “ 당신의 성적은 A 입니다 .”; break;

case 80: print “ 당신의 성적은 B 입니다 .”; break;

case 60: print “ 당신의 성적은 C 입니다 .”; break;

case 40: print “ 당신의 성적은 D 입니다 .”; break;

case 0: print “ 당신의 성적은 F 입니다 .”; break;

default: print “ 당신의 성적은 … 모르겠네요 .”; break;

}

?>

Page 22: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 22

함수 자신이 자기 자신을 호출

큰 문제를 작은 문제로 나누어서 해결할 수 있기 때문에 알고리즘의 구현에 있어 많이 사용되는 구조 ( 예 : merge sort)

Factorial 을 구하는 프로그램 예 (factorial.php)

• 수학적으로 보면 , n! = n x (n-1)!

재귀 호출 (Recursive Calls) (1/2)프로그래밍 본격 시작

function factorial ($n)

{

if ($n == 1) return (1);

return ($n * factorial ($n – 1));

}

Page 23: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 23

피보나치 수열 (Fibonacci Sequence) (fibonacci.php)

• 수열의 각 항은 바로 앞 두 항의 합으로 정의됨

• 이웃한 두 항에서 전항 / 후항 값이 황금비 (1.618033) 에 가까운 값을 가짐

재귀 호출 (Recursive Calls) (2/2)프로그래밍 본격 시작

otherwisenfnf

nornifnf

)2()1(

101)(

<?PHP function fibo ($num) { if ($num == 0 || $num == 1) return (1); return (fibo ($num – 1) + fibo ($num – 2)); }

print “ 피보나치수열 출력” . “<br>”; for ($i = 1; $i <= 20; $i++) print (fibo ($i)) . “<br>”;?>

Page 24: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 24

피보나치 수열 (Fibonacci Sequence) (fibonacci.php)

• 수열의 각 항은 바로 앞 두 항의 합으로 정의됨

• 이웃한 두 항에서 전항 / 후항 값이 황금비 (1.618033) 에 가까운 값을 가짐

재귀 호출 (Recursive Calls) (2/2)프로그래밍 본격 시작

otherwisenfnf

nornifnf

)2()1(

101)(

<?PHP function fibo ($num) { if ($num == 0 || $num == 1) return (1); return (fibo ($num – 1) + fibo ($num – 2)); }

print “ 피보나치수열 출력” . “<br>”; for ($i = 1; $i <= 20; $i++) print (fibo ($i)) . “<br>”;?>

Page 25: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 25

함수 영역 밖에 있는 변수를 참조하는 경우 ( 함수 영역 내 : local 변수 )(global_var.php)

global 변수프로그래밍 본격 시작

<?PHP

function counts()

{

global $i;

$i = $i + 1;

}

$i = 0;

while ($i < 10)

{

counts ();

print $i . “<br>”;

}

?>

Page 26: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 26

이전의 함수 호출 시 가지고 있던 변수의 값 유지 (static_var.php)

static 변수프로그래밍 본격 시작

<?PHP

function inc()

{

static $i = 1;

print $i . “<br>”;

$i = $i + 1;

}

for ($j = 1; $j <= 10; $j++)

inc ();

?>

Page 27: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 27

PHP 에서 기본적으로 사용하는 방법

파리메터의 ( 주소가 아닌 ) 값이 함수의 Argument 로 전달됨

C 의 예 : abc(int a, int b) {…}, abc(x, y); (cbv.php)

Call By Value (1/2)프로그래밍 본격 시작

<?PHP

function swap ($a, $b)

{

$temp = $a;

$a = $b;

$b = $temp;

}

$i = 3; $j = 4;

print "before swap = $i, $j <BR>"

swap ($i, $j);

print "after swap = $i, $j";

?>

Page 28: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 28

배열을 사용한 CBV 예제 (cbv_arr.php)

Call By Value (2/2)프로그래밍 본격 시작

<?PHP

function my_reverse($param_array, $num)

{

// $temp_array = $param_array;

for($i=0;$i < $num;$i++)

$temp_array[$num-$i-1] = $param_array[$i];

$param_array = $temp_array;

}

$num_array = array (10, 20, 30, 40, 50);

print "before = ";

for($i=0;$i < sizeof($num_array);$i++)

print “$num_array[$i] “;

my_reverse($num_array, sizeof($num_array));

print “<BR>after = ";

for($i=0;$i < sizeof($num_array);$i++)

print “$num_array[$i] “;

?>

Page 29: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 29

파리메터의 ( 값이 아닌 ) 저장 장소 ( 주소 ) 가 함수의 Argument 로 전달됨

C 의 예 : abc(int *a, int *b) {…}, abc(&x, &y) (cbr.php)

Call By Reference (1/2)프로그래밍 본격 시작

<?PHP

function swap(&$a, &$b)

{

$temp = $a;

$a = $b;

$b = $temp;

}

$i = 3; $j = 4;

print “before swap = $i, $j” . “<br>”;

swap($i, $j); // same as swap(&$i, &$j);

print “after swap = $i, $j” . “<br>”;

?>

Page 30: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 30

배열을 사용한 CBR 예제 (cbr_arr.php)

Call By Reference (2/2)프로그래밍 본격 시작

<?PHP

function my_reverse(&$param_array, $num)

{

// $temp_array = $param_array;

for($i=0;$i < $num;$i++)

$temp_array[$num-$i-1] = $param_array[$i];

$param_array = $temp_array;

}

$num_array = array (10, 20, 30, 40, 50);

print "before = ";

for($i=0;$i < sizeof($num_array);$i++)

print “$num_array[$i] “;

my_reverse($num_array, sizeof($num_array));

print “<BR>after = ";

for($i=0;$i < sizeof($num_array);$i++)

print “$num_array[$i] “;

?>

Page 31: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 31

용어 정리• 데이타 : attribute

• 함수 : method

• 객체 (object): 데이타 + 함수

• 클래스 (class): 동종의 객체를 하나의 그룹으로 묶어 정의한 것

• 객체화 (Instantiation): 클래스 정의에 의해 생성된 객체 변수

클래스 (Class) (1/9)프로그래밍 본격 시작

Page 32: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 32

클래스 선언의 예 (class1.php)

클래스 (Class) (2/9)프로그래밍 본격 시작

<?PHP class Student { var $StudentID; var $StudentName;

function printStudent ($id, $name) { print “ID: “ . $id . “<br>”; print “Name: “ . $name . “<br>”; } }

$object = new Student; $object->StudentID = 1234; $object->StudentName = “Kim”; $object->printStudent ($object->StudentID, $object->StudentName);?>

attribute

method

Page 33: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 33

클래스 내부 Attribute 접근 (this) (class2.php)

클래스 (Class) (3/9)프로그래밍 본격 시작

<?PHP class Student { var $StudentID; var $StudentName;

function printStudent () { print “ID: “ . $this->StudentID . “<br>”; print “Name: “ . $this->StudentName . “<br>”; } }

$object = new Student; $object->StudentID = 1234; $object->StudentName = “Kim”; $object->printStudent ();?>

Page 34: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 34

객체화 (Instantiation)

클래스 (Class) (3/9)프로그래밍 본격 시작

Student

$StudentID$StudentName

printStudent()

$StudentID=1234$StudentName=Kim

printStudent()

object1

$StudentID=7890$StudentName=Lee

printStudent()

object2

객체화 객체화

Page 35: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 35

Public vs. Private (class3.php)

• 클래스 내의 Attribute 는 기본적으로 ( 외부에서 보이는 ) Public 타입임

• ( 외부에서 보이지 않는 ) Private 타입을 표시하기 위해서는 Attribute 앞에 Underbar(“_”) 를 붙임

클래스 (Class) (4/9)프로그래밍 본격 시작

class Apple{ var $_price; var $color; var $weight;

function printApple () { $this->_printPrivate (); } function _printPrivate () { print $this->_price . $this->color . $this->weight . “<br>”; }}

Page 36: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 36

생성자 (Constructor)

• 클래스를 생성 (new) 할 때 실행되는 함수

• 클래스와 동일한 이름을 사용하여 생성자 Method 를 선언해야 함

클래스 (Class) (5/9)프로그래밍 본격 시작

<?PHP class fruit { var $_fruit_name; var $_price; var $_color;

function fruit ($name, $price, $color) { $this->_fruit_name = $name; $this->_price = $price; $this->_color = $color; }

Page 37: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 37

생성자 ( 계속 ) (class4.php)

클래스 (Class) (6/9)프로그래밍 본격 시작

function print_fruit () { print “Fruit name: $this->_fruit_name<br>”; print “Fruit price: $this->_price<br>”; print “Fruit color: $this->_color<br>”; print “<br>”; } }

$Apple = new fruit (‘Apple’, 1000, ‘red’); $Orange = new fruit (‘Orange’, 2000, ‘orange’); $Banana = new fruit (‘Banana’, 500, ‘yellow’); $Pear = new fruit (‘Pear’, 3000, ‘gray’); $Apple->print_fruit (); $Orange->print_fruit (); $Banana->print_fruit (); $Pear->print_fruit ();?>

Page 38: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 38

상속 (Inheritance)

• 부모 클래스로부터 자식 클래스가 특성 (property) 을 계승 받는 것

• 부모 클래스에서 선언되었던 Attribute 와 Method 를 자식 클래스에서 그대로사용 가능

• 예약어 “ extends” 를 사용하여 자식 클래스가 어느 부모 클래스로부터 상속받는지를 명시

클래스 (Class) (7/9)프로그래밍 본격 시작

Page 39: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 39

상속되는 클래스 예

클래스 (Class) (8/9)프로그래밍 본격 시작

People

$Name$Age

printPeople ()

Student

$Name$Age$ID

printPeople()printStudent()

Professor

$Name$Age

$Office_NoprintPeople()

printProfessor()

Staff

$Name$Age$Title

printPeople()printStaff()

상속

Page 40: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 40

상속이 적용된 프로그램의 예 (class5.php)

클래스 (Class) (9/9)프로그래밍 본격 시작

class People{ var $Name; var $Age; function printPeople () { print “Name: “ . $this->Name . “<br>”; print “Age: “ . $this->Age . “<br>”; }}

class Professor extends People{ var $Office_No; function printProfessor () { $this->printPeople (); print “Office_No: “ . $this->Office_No . “<br>”; }}

Page 41: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 41

사용자가 입력한 데이타를 전달 받기 위한 도구로서 , HTML 의 Form 필드를 활용하고 , 전달 받은 값을 PHP 프로그램으로 처리

사용 단계• HTML 로 사용자의 입력을 받을 Form 을 생성

• 입력 받은 Form 을 처리할 PHP 파일을 생성

Form 사용법에 대해서는 강의노트 “ 04. CGI.pptx” 참조

Form 필드를 사용한 입력 처리 (1/10)프로그래밍 본격 시작

Page 42: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 42

예제 1: 두 수 및 연산자를 입력 받아 계산하기

HTML 프로그램 (lecture10_form1.html)

Form 필드를 사용한 입력 처리 (2/10)프로그래밍 본격 시작

<form method=post action="lecture10_form1.php">

<input type="text" name="val01" size=5>

<input type="text" name="operator" size=1>

<input type="text" name="val02" size=5>

<input type="submit" value=" 계산하기 ">

</form>

Page 43: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 43

예제 1: 두 수 및 연산자를 입력 받아 계산하기 ( 계속 )

PHP 프로그램 (lecture10_form1.php)

Form 필드를 사용한 입력 처리 (3/10)프로그래밍 본격 시작

<?

extract(array_merge($HTTP_GET_VARS, $HTTP_POST_VARS));

switch($operator){ case("+"): $result = $val01 + $val02; print $val01." + ".$val02." = ".$result; break; case("-"): $result = $val01 - $val02; print $val01." - ".$val02." = ".$result; break; case("*"): $result = $val01 * $val02; print $val01." * ".$val02." = ".$result; break; case("/"): $result = $val01 / $val02; print $val01." / ".$val02." = ".$result; break;}?>

GET 및 POST 방식으로 전달된 변수 값을 “

변수 = 값”의 형태로 변환 다음 슬라이드

참조

Page 44: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 44

예제 1: 두 수 및 연산자를 입력 받아 계산하기 ( 계속 )

변수 및 함수 설명• $HTTP_GET_VARS: GET 으로 전송된 변수 값을 저장하는 배열

배열의 원소를 지칭하려면 , $HTTP_GET_VARS[“ 변수명” ] 사용

• $HTTP_POST_VARS: POST 로 전송된 변수 값을 저장하는 배열배열의 원소를 지칭하려면 , $HTTP_POST_VARS[“ 변수명” ] 사용

• array_merge(array, array, …): 모든 배열을 통합하는 함수

• extract(array): 배열에서 키와 값을 변수와 값으로 추출하는 함수

In conclusion, HTML 에서 전달된 변수를 PHP 프로그램에서 사용하기 위해서는 PHP 문서 맨 앞에 다음을 덧붙여 사용함

Form 필드를 사용한 입력 처리 (4/10)프로그래밍 본격 시작

extract(array_merge($HTTP_GET_VARS, $HTTP_POST_VARS));

Page 45: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 45

예제 2: 리스트로 구구단 출력하기

HTML 프로그램 (lecture10_form2.html)

Form 필드를 사용한 입력 처리 (5/10)프로그래밍 본격 시작

<form method=post action="lecture10_form2.php">

<select name="val01" size="1">

<option value="2">2 단 </option>

<option value="3">3 단 </option>

<option value="4">4 단 </option>

<option value="5">5 단 </option>

<option value="6">6 단 </option>

<option value="7">7 단 </option>

<option value="8">8 단 </option>

<option value="9">9 단 </option>

</select>

<input type="submit" value=" 결과 보기 ">

</form>

Page 46: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 46

예제 2: 리스트로 구구단 출력하기 ( 계속 )

PHP 프로그램 (lecture10_form2.php)

Form 필드를 사용한 입력 처리 (6/10)프로그래밍 본격 시작

<?

extract(array_merge($HTTP_GET_VARS, $HTTP_POST_VARS));

print $val01." 단 <p>";for($i=1;$i < 10;$i++)

print $val01." * ".$i." = ".$val01*$i."<br>";

?>

Page 47: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 47

예제 3: Radio/Check 박스를 사용하기

HTML 프로그램 (lecture10_form3.html)

Form 필드를 사용한 입력 처리 (7/10)프로그래밍 본격 시작

<form method=post action="lecture10_form3.php"> 이름 <input type="text" name="u_name" size=10> <br> 성별 <input type="radio" name="sexual_type" value="남 " checked>남 &nbsp; <input type="radio" name="sexual_type" value=" 여 "> 여 <br> 관심사항 <input type="checkbox" name="interesting[]" value="Web Programming"> Web Programming &nbsp; <input type="checkbox" name="interesting[]" value="Graphics"> Graphics &nbsp; <input type="checkbox" name="interesting[]" value="Mathematics"> Mathematics <P>

<input type="submit" value="전송 ">&nbsp; <input type="reset" value="다시쓰기 "></form>

Page 48: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 48

예제 3: Radio/Check 박스를 사용하기 ( 계속 )

PHP 프로그램 (lecture10_form3.php)

Form 필드를 사용한 입력 처리 (8/10)프로그래밍 본격 시작

<?extract(array_merge($HTTP_GET_VARS, $HTTP_POST_VARS));

print " 이름 : ". $u_name . " <br>";print " 성별 : ". $sexual_type . "<br>";print " 관심사항 : ";

for($i=0;$i < count($interesting);$i++) print "[“ . $interesting[$i] . "]";?>

Page 49: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 49

예제 4: 여러 줄 입력하기

HTML 프로그램 (lecture10_form4.html)

Form 필드를 사용한 입력 처리 (9/10)프로그래밍 본격 시작

<form method=post action="lecture10_form4.php">

<textarea name="content" rows=4 cols=30></textarea><br>

<input type="submit" value=" 보내기 ">

<input type="reset" value=" 다시쓰기 ">

</form>

Page 50: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 50

예제 4: 여러 줄 입력하기 ( 계속 )

PHP 프로그램 (lecture10_form4.php)

Form 필드를 사용한 입력 처리 (10/10)프로그래밍 본격 시작

<?

extract(array_merge($HTTP_GET_VARS, $HTTP_POST_VARS));

print " 다음과 같은 글을 입력하셨습니다 . <br>". $content . "<p>";

// 개행 (줄바꿈 ) 을 인식하게 할 경우print " 개행을 인식한 경우는 다음과 같습니다 . <br>“ . nl2br($content);

?>

Page 51: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 51

파일 열기 (file pointer 를 리턴함 )

파일 (File) (1/6)프로그래밍 본격 시작

코드 설 명

‘r’ 읽기 전용으로 파일 열기 , 파일 포인터는 파일의 시작에 위치

‘r+’ 읽고 쓰기로 파일 열기 , 파일 포인터는 파일의 시작에 위치

‘w’쓰기 전용으로 파일 열기 , 파일 포인터는 파일의 시작에 위치파일이 존재하면 내용을 삭제 , 파일이 존재하지 않으면 파일을 생성

‘w+’읽고 쓰기로 파일 열기 , 파일 포인터는 파일의 시작에 위치파일이 존재하면 내용을 삭제 , 파일이 존재하지 않으면 파일을 생성

‘a’쓰기 전용으로 파일 열기 , 파일 포인터는 파일의 끝에 위치파일이 존재하지 않으면 파일을 생성

‘a+’읽고 쓰기로 파일 열기 , 파일 포인터는 파일의 끝에 위치파일이 존재하지 않으면 파일을 생성

int fopen (string filename, string mode)

Page 52: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 52

파일 닫기

• 파일 포인터가 가리키는 파일을 닫음

• 성공하면 TRUE 를 실패하면 FALSE 를 리턴함

파일 (File) (2/6)프로그래밍 본격 시작

bool fclose (int filepointer)

int fputs (int filepointer, string str)

파일에 내용을 쓰기

• 파일 포인터가 가리키는 곳에 주어진 str 내용을 기록함

• fwrite(int, string) 과 동일한 기능 수행

Page 53: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 53

파일에서 내용을 읽기

• 파일 포인터가 가리키고 있는 곳에서 문자열을 읽어서 리턴함

• 길이 “ length – 1” 바이트를 읽었거나 , 읽는 줄이 바뀌었거나 , 파일의 끝이면 문자열 읽는 것을 멈춤

• 문자열을 읽는 중에 에러가 발생하면 FALSE 를 리턴함

파일 (File) (3/6)프로그래밍 본격 시작

string fgets (int filepointer, int length)

Page 54: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 54

예제 ( 파일에 쓰고 읽기 ) (file_io.php, exam.txt)

파일 (File) (4/6)프로그래밍 본격 시작

<?PHP

$filep = fopen (“./exam.txt”, “a”);

if (!$filep) die (“ 파일을 열 수 없습니다 .”); // die() == exit()

fputs ($filep, “1 2 3 4 5 6 7 8 9 0\n”);

fclose ($filep);

$filep = fopen (“./exam.txt”, “r”);

while ($line = fgets ($filep, 1024))

print $line . “<br>”;

fclose ($filep);

?>

프로그램을네 번 실행한 경우

Page 55: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 55

파일 관련 유용한 함수 ( 파라미터는 개인적으로 확인 바람 )

• bool feof(): 파일의 끝 (end of file) 을 확인하여 , 끝이면 true 를 리턴함

• array fgetcsv(): 문자열을 구분 문자로 나누어 배열에 저장( 예 : $order = fgetcsv($fp, 100, “\t”);)

• int readfile(): 파일을 연 후 , 내용을 모두 읽어서 브라우저 (standard output) 로 출력하고 , 총 길이 리턴

• bool fpassthru(): 열려진 파일의 내용을 모두 읽어서 출력하고 , 그 결과를 리턴

• array file(): 열려진 파일의 내용을 모두 읽어서 배열에 저장파일의 한 줄 한 줄이 배열의 한 요소가 됨

• string fgetc(): 파일에서 한 번에 한 문자씩 읽음

• string fread(int fp, int length): 파일의 끝 혹은 length 만큼 바이트를 읽음

• bool file_exists(): 해당 파일이 존재하는지 확인함

• int filesize(): 해당 파일의 크기 ( 바이트 수 ) 를 리턴

• unlink(): 해당 파일을 지움

파일 (File) (5/6)프로그래밍 본격 시작

Page 56: 웹 프로그래밍 및 실습 (Web Programming & Practice) 프로그래밍 본격 시작 최 미정 강원대학교  IT 대학 컴퓨터과학전공

Web Program-mingPage 56

파일 관련 유용한 함수 ( 계속 )• int rewind(): 파일 포인터를 파일의 처음 ( 시작 ) 으로 옮김

• int fseek(int fp, int offset, int whence): 파일 포인터를 주어진 위치 (whence) 에서 주어진 양 (offset)만큼 옮김 (whence = SEEK_SET | SEEK_CUR | SEEK_END)

• int ftell(): 파일 포인터의 현재 위치를 바이트 수로 리턴함

• bool flock(): 파일에 lock 을 설정함 (read/write lock, unlock 등 )

파일 (File) (6/6)프로그래밍 본격 시작