31
04 장 장장장 장장

04 장 배열과 함수

Embed Size (px)

DESCRIPTION

04 장 배열과 함수. 배열의 개념 이해 반복문에서의 배열 사용법 1 차원 /2 차원 배열의 구조 함수의 기본 개념 이해 내장함수와 외장함수. 배열 1 차원 배열 2 차원 배열 함수 함수의 이해 함수의 종류 함수의 인자와 반환값. 1.1 1 차원 배열. 배열 사용의 장점 여러 개의 변수를 관리하기 편함 -> 효율적인 프로그래밍 가능. [ 그림 4-1] 1 차원 메모리 공간과 배열의 인덱스. 예제 4-1 배열을 이용한 다섯 과목의 합계와 평균. array_avg.php. 01

Citation preview

Page 1: 04 장 배열과 함수

04 장 배열과 함수

Page 2: 04 장 배열과 함수

IT CookBook,PHP 웹 프로그래밍 입문 ( 개정판 )

[ 강의교안 이용 안내 ]• 본 강의교안의 저작권은 한빛아카데미㈜에 있습니다 . • 이 자료를 무단으로 전제하거나 배포할 경우 저작권법 136 조에 의거하여 최고 5 년

이하의 징역 또는 5 천만원 이하의 벌금에 처할 수 있고 이를 병과 ( 倂科 ) 할 수도 있습니다 .

Page 3: 04 장 배열과 함수

학습목표 배열의 개념 이해 반복문에서의 배열 사용법 1 차원 /2 차원 배열의 구조 함수의 기본 개념 이해 내장함수와 외장함수

Page 4: 04 장 배열과 함수

목차1. 배열

1 차원 배열 2 차원 배열

2. 함수 함수의 이해 함수의 종류 함수의 인자와 반환값

Page 5: 04 장 배열과 함수

1.1 1 차원 배열

• 배열 사용의 장점 여러 개의 변수를 관리하기 편함 -> 효율적인 프로그래밍 가능

[ 그림 4-1] 1 차원 메모리 공간과 배열의 인덱스

Page 6: 04 장 배열과 함수

예제 4-1 배열을 이용한 다섯 과목의 합계와 평균 array_avg.php

01 <?02 // 배열을 이용한 다섯 과목 점수의 합계와 평균03 // 배열의 인덱스 값은 0 부터 시작한다 .04 05 $score[0]=78;06 $score[1]=83;07 $score[2]=97;08 $score[3]=88;09 $score[4]=78;10 11 $sum = 0;12 for($a=0; $a<=4; $a++)13 {14 $sum = $sum + $score[$a];15 }16 17 $avg = $sum/5;18 19 echo" 과목 점수 : $score[0], $score[1], $score[2], $score[3], $score[4]<br> "; 20 echo" 합계 : $sum, 평균 : $avg <br> ";21 ?>

Page 7: 04 장 배열과 함수

예제 4-1 배열을 이용한 다섯 과목의 합계와 평균 array_avg.php

실행 결과

$a 와 $sum 값의 변화

[ 표 4-1] for 문 반복에 따른 $a 와 $sum 값의 변화

반복 횟수 $a 값 $sum 값

1 회 0 0+$score[0]

2 회 1 0+$score[0]+$score[1]

3 회 2 0+$score[0] +$score[1] +$score[2]

4 회 3 0+$score[0] +$score[1] +$score[2] +$score[3]

5 회 4 0+$score[0] +$score[1] +$score[2] +$score[3] +$score[4]

Page 8: 04 장 배열과 함수

예제 4-2 array() 함수를 이용한 배열 원소값 입력 array_func.php

01 <?02 // array() 함수를 이용한 03 // 학생 20 명이 받은 영어 점수의 합계와 평균 계산04 05 $eng_score = array(87, 76, 98, 87, 87, 93, 79, 85, 88, 63, 74, 84, 93, 89, 63, 99, 81, 70, 80, 95);06 07 $sum = 0;08 09 for($a=0; $a<20; $a++)10 {11 $sum = $sum + $eng_score[$a]; // 영어 점수의 누적합12 }13 14 $avg = $sum/20; // 평균 계산

Page 9: 04 장 배열과 함수

예제 4-2 array() 함수를 이용한 배열 원소값 입력 array_func.php

1516 echo " 학생 20 명의 영어 점수 : "; 17 for($a=0; $a<20; $a++) // 입력된 영어 점수 출력18 echo $eng_score[$a]." ";19 20 echo "<br>"; // 행바꿈21 22 echo" 합계 : $sum, 평균 : $avg";23 ?>

Page 10: 04 장 배열과 함수

예제 4-3 for 문을 이용한 배열 원소값 입력 array_abc.php

01 <?02 for($i=0; $i<10; $i++)03 $a[$i] = $i+1; // 배열 $a 에 1~10 을 저장04 05 for($i=9; $i>=0; $i--)06 $b[9-$i] = $i+1; // 배열 $b 에 10~1 을 저장07 08 for($i=0; $i<10; $i++)09 $c[$i] = $a[$i] * $b[$i]; // $a * $b 를 곱한 결과 저장10 11 for($i=0; $i<10; $i++)12 echo "$a[$i] x $b[$i] = $c[$i]<br>";13 ?>

Page 11: 04 장 배열과 함수

1.1 1 차원 배열• 버블 정렬을 이용한 배열 원소 정렬

[ 그림 4-5] 버블 정렬의 개념

Page 12: 04 장 배열과 함수

예제 4-4 버블 정렬 bubble_sort.php

01 <?02 $num = array(15, 13, 9, 7, 6, 12, 19, 30, 28, 26); 0304 $count = 10; // 배열 원소의 개수를 (10) $count 에 입력0506 echo " 정렬되기 전 : "; 07 for ($a=0; $a<10; $a++) // 정렬되기 전 배열 원소 출력08 echo $num[$a]." ";09 10 echo "<br>";11 12 for($i=$count-2; $i>=0; $i--) // $i 는 8~0 으로 1 씩 감소13 {14 for($j=0; $j<=$i; $j++) // $j 는 0~$i 로 1 씩 증가15 {16 if($num[$j] > $num[$j+1])17 {18 $tmp = $num[$j]; 19 $num[$j] = $num[$j+1];20 $num[$j+1] = $tmp;21 }

Page 13: 04 장 배열과 함수

예제 4-4 버블 정렬 bubble_sort.php

22 }23 }24 25 echo " 오름차순 정렬 ( 버블 정렬 ) : ";26 for ($a=0; $a<10; $a++) // 버블 정렬 후 배열 원소 출력27 echo $num[$a]." ";28 ?>

[ 참고 ] 버블 정렬 참고 동영상- 헝가리안 춤과 함께 보는 버블 정렬http://www.youtube.com/watch?v=lyZQPjUT5B4

Page 14: 04 장 배열과 함수

1.2 2 차원 배열

[ 그림 4-8] 2 차원 배열의 메모리 공간과 배열 인덱스

Page 15: 04 장 배열과 함수

예제 4-5 2 차원 배열을 이용한 합계와 평균 계산 array_2d_avg.php

01 <?02 // 2 차원 배열을 이용하여 세 학생이 받은 다섯 과목 점수의 합계와 평균 계산03 $score = array(array(88, 98, 96, 77, 63), array(86, 77, 66, 86, 93), array(74, 83, 95, 86, 97));0405 // 입력된 점수와 배열의 인덱스 출력06 for($i=0; $i<3; $i++)07 {08 for($j=0; $j<5; $j++)09 echo "\$score[$i][$j] = ".$score[$i][$j]."<br>"; 1011 echo "<br>";12 }1314 // 각 학생의 합계와 평균15 for($i=0; $i<3; $i++)16 {17 $sum=0;18

Page 16: 04 장 배열과 함수

예제 4-5 2 차원 배열을 이용한 합계와 평균 계산 array_2d_avg.php

19 for($j=0; $j<5; $j++)20 $sum = $sum + $score[$i][$j]; 21 22 $avg = $sum/5;23 $student_num = $i + 1;24 echo"$student_num 번째 학생의 점수 => 합계 : $sum, 평균 : $avg <br>";25 }26 ?>

Page 17: 04 장 배열과 함수

2.1 함수의 이해• 함수

반복해서 사용하는 기능을 하나의 모듈로 만든 것 한 행 또는 여러 행으로 구성됨

• 함수의 정의 함수의 기능을 프로그램으로 구현한 부분

• 함수의 호출 함수의 정의로 프로그램의 흐름이 이동해 구현된 기능을 수행하는

• 사용 목적 모듈화를 통한 코드 및 프로그램 흐름의 간결화 ( 프로그램 가독성

UP) 재사용성

Page 18: 04 장 배열과 함수

예제 4-6 함수의 정의와 호출 aaa_func.php

01 <? 02 function aaa() 03 {04 echo (“ 안녕하세요 !”);05 }06 07 aaa();08 ?>

Page 19: 04 장 배열과 함수

2.2 함수의 종류• 내장 함수 : 시스템에 존재하는 함수

수학 , 문자열 , 파일 , MySQL 데이터베이스 관련 내장 함수 등이 존재

• 외장 함수 : 사용자가 정의한 함수

[ 그림 4-12] PHP 사이트의 내장 함수 설명

Page 20: 04 장 배열과 함수

2.2 함수의 종류• 내장함수

함수명 기능

abs() 절댓값 계산

sin() 삼각형의 사인값 계산

cos() 삼각형의 코사인값 계산

tan() 삼각형의 탄젠트값 계산

date() 현재 날짜 계산

ceil() 소수점 아래에서 올린 정수값 계산

floor() 소수점 아래에서 내린 정수값 계산

round() 반올림값 계산

sqrt() 제곱근 (square root) 계산

rand() 임의의 난수 생성

[ 표 4-2] 수학 관련 내장 함수

Page 21: 04 장 배열과 함수

2.2 함수의 종류

• 내장함수[ 표 4-3] 문자열 관련 내장 함수

함수명 기능

echo() 문자열 출력

explode() 특정 문자를 기준으로 문자열 분리

str_len() 문자열의 길이 계산

substr() 문자열에서 문자열의 일부 추출

nl2br() 행 바꿈 (\n) 을 <br> 태그로 변환

sprintf() 문자열을 특정 양식에 맞춤

Page 22: 04 장 배열과 함수

2.2 함수의 종류

• 내장함수

함수명 기능

copy() 파일 복사

mkdir() 디렉터리 생성

chdir() 디렉터리 변경

fopen() 파일 열기

fread() 파일 읽기

fwrite() 파일 쓰기

[ 표 4-4] 파일 관련 내장 함수

Page 23: 04 장 배열과 함수

2.2 함수의 종류

• 내장함수

함수명 기능

mysql_connect() 데이터베이스 접속

mysql_create_db() 데이터베이스 생성

mysql_drop_db() 데이터베이스 삭제

mysql_close() 데이터베이스 접속 종료

[ 표 4-5] MySQL 데이터베이스 관련 내장 함수

Page 24: 04 장 배열과 함수

예제 4-7 문자열 관련 내장 함수의 사용 예 string_tunc.php

01 <? 02 $tel = "010-2777-3333";03 04 $num_tel = strlen($tel); // 문자열의 길이 계산05 06 echo "strlen() 함수 사용 : $num_tel<br>";07 08 $tel1 = substr($tel, 0, 3); // 문자열의 앞에서 문자를 3 개 가져옴09 $tel2 = substr($tel, 4, 4); // 문자열의 4 번째부터 문자를 4 개 가져옴10 $tel3 = substr($tel, 9, 4); // 9 번째부터 문자를 4 개 가져옴11 12 echo "substr() 함수 사용 : $tel1 $tel2 $tel3<br>";13 14 $phone = explode("-", $tel); // 하이픈 (-) 을 기준으로 문자열 분리15 16 echo "explode() 함수 사용 : $phone[0] $phone[1] phone[2]<br>";17 ?>

Page 25: 04 장 배열과 함수

예제 4-7 문자열 관련 내장 함수의 사용 예 string_tunc.php

Page 26: 04 장 배열과 함수

예제 4-8 함수를 이용한 두수의 합 계산 func_plus_2.php

01 <?02 function plus($a, $b)03 {04 $c=$a+$b;05 echo $c;06 }07 08 plus(15, 25);09 echo "<br>";10 plus(3500, 1500);11 ?>

Page 27: 04 장 배열과 함수

예제 4-9 함수를 이용한 두수의 합 계산 ( 반환값 존재 ) func_plus_2_.php

01 <?02 function plus($a, $b)03 {04 $c = $a + $b;05 return $c;06 }07 08 $result = plus(15, 25);09 echo $result."<br>";10 11 $result = plus(3500, 1500);12 echo $result;13 ?>

Page 28: 04 장 배열과 함수

예제 4-10 인자가 세 개인 함수 func_bbb.php

01 <?02 function bbb($a, $b, $c)03 {04 $d = $a + $b - $c;05 return $d;06 }07 08 $i=500;09 $j=200;10 $k=300;11 $m = bbb($i, $j, $k);12 echo $m;13 ?>

Page 29: 04 장 배열과 함수

예제 4-11 함수를 이용한 정수의 합계 계산 func_hap.php

01 <?02 // hap($a, $b) 함수는 $a 에서 $b 까지의 합을 구한다 .03 04 function hap($a, $b)05 {06 $sum=0;07 while($a<=$b)08 {09 $sum=$sum+$a;10 $a++;11 }12 13 return $sum;14 }15 16 $from = 1;17 $to = 100;18 19 $total = hap($from, $to); 20 echo"$from 에서 $to 까지의 합 : $total";21 ?>

Page 30: 04 장 배열과 함수

예제 4-12 함수를 이용한 만 나이 계산 func_man_age.php

01 <?02 // 오늘 날짜와 생년월일에 따라 만 나이 계산하기 03 function man_age($year, $month, $day, $b_year, $b_month, $b_day)04 {05 if($b_month<$month) 06 $age= $year - $b_year;07 else if($b_month==$month)08 { 09 if($birth_day<=$now_day)10 $age= $year - $b_year;11 else12 $age= $year - $b_year - 1;13 }14 else15 {16 $age= $year - $b_year - 1;17 }18 return $age;19 }

Page 31: 04 장 배열과 함수

예제 4-12 함수를 이용한 만 나이 계산 func_man_age.php

20 21 $now_year=2013;22 $now_month=2;23 $now_day=10;24 25 $birth_year=1993;26 $birth_month=2;27 $birth_day=9;28 29 $your_age = man_age($now_year, $now_month, $now_day, $birth_year, $birth_month, $birth_day);30 31 echo " 오늘 날짜 : $now_year 년 $now_month 월 $now_day 일 <br>";32 echo " 생년월일 : $birth_year 년 $birth_month 월 $birth_day 일생<br>";33 echo " 만 나이 : $your_age 세 ";34 ?>