320 likes | 657 Views
04 장 배열과 함수. 배열의 개념 이해 반복문에서의 배열 사용법 1 차원 /2 차원 배열의 구조 함수의 기본 개념 이해 내장함수와 외장함수. 배열 1 차원 배열 2 차원 배열 함수 함수의 이해 함수의 종류 함수의 인자와 반환값. 1.1 1 차원 배열. 배열 사용의 장점 여러 개의 변수를 관리하기 편함 -> 효율적인 프로그래밍 가능. [ 그림 4-1] 1 차원 메모리 공간과 배열의 인덱스. 예제 4-1 배열을 이용한 다섯 과목의 합계와 평균. array_avg.php. 01 <?
E N D
배열의 개념 이해 • 반복문에서의 배열 사용법 • 1차원/2차원 배열의 구조 • 함수의 기본 개념 이해 • 내장함수와 외장함수
배열 • 1차원 배열 • 2차원 배열 • 함수 • 함수의 이해 • 함수의 종류 • 함수의 인자와 반환값
1.1 1차원 배열 • 배열 사용의 장점 • 여러 개의 변수를 관리하기 편함 -> 효율적인 프로그래밍 가능 [그림 4-1] 1차원 메모리 공간과 배열의 인덱스
예제 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 ?>
예제 4-1 배열을 이용한 다섯 과목의 합계와 평균 array_avg.php 실행 결과 $a와 $sum값의 변화 [표 4-1] for문 반복에 따른 $a와 $sum값의 변화
예제 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;// 평균 계산
예제 4-2 array()함수를 이용한 배열 원소값 입력 array_func.php 15 16 echo "학생 20명의 영어 점수 : "; 17 for($a=0; $a<20; $a++)// 입력된 영어 점수 출력 18 echo $eng_score[$a]." "; 19 20 echo "<br>"; // 행바꿈 21 22 echo"합계 : $sum, 평균 : $avg"; 23 ?>
예제 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 ?>
1.1 1차원 배열 • 버블 정렬을 이용한 배열 원소 정렬 [그림 4-5] 버블 정렬의 개념
예제 4-4 버블 정렬 bubble_sort.php 01 <? 02 $num = array(15, 13, 9, 7, 6, 12, 19, 30, 28, 26); 03 04 $count = 10;// 배열 원소의 개수를(10) $count에 입력 05 06 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 }
예제 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
1.2 2차원 배열 [그림 4-8] 2차원 배열의 메모리 공간과 배열 인덱스
예제 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)); 04 05 // 입력된 점수와 배열의 인덱스 출력 06 for($i=0; $i<3; $i++) 07 { 08 for($j=0; $j<5; $j++) 09 echo "\$score[$i][$j] = ".$score[$i][$j]."<br>"; 10 11 echo "<br>"; 12 } 13 14 // 각 학생의 합계와 평균 15 for($i=0; $i<3; $i++) 16 { 17 $sum=0; 18
예제 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 ?>
2.1 함수의 이해 • 함수 • 반복해서 사용하는 기능을 하나의 모듈로 만든 것 • 한 행 또는 여러 행으로 구성됨 • 함수의 정의 • 함수의 기능을 프로그램으로 구현한 부분 • 함수의 호출 • 함수의 정의로 프로그램의 흐름이 이동해 구현된 기능을 수행하는 것 • 사용 목적 • 모듈화를 통한 코드 및 프로그램 흐름의 간결화(프로그램 가독성UP) • 재사용성
예제 4-6 함수의 정의와 호출 aaa_func.php 01 <? 02 function aaa() 03 { 04 echo (“안녕하세요!”); 05 } 06 07 aaa(); 08 ?>
2.2 함수의 종류 • 내장 함수: 시스템에 존재하는 함수 • 수학, 문자열, 파일, MySQL 데이터베이스 관련 내장 함수 등이 존재 • 외장 함수: 사용자가 정의한 함수 [그림 4-12] PHP 사이트의 내장 함수 설명
2.2 함수의 종류 • 내장함수 [표 4-2] 수학 관련 내장 함수
2.2 함수의 종류 • 내장함수 [표 4-3] 문자열 관련 내장 함수
2.2 함수의 종류 • 내장함수 [표 4-4] 파일 관련 내장 함수
2.2 함수의 종류 • 내장함수 [표 4-5] MySQL데이터베이스 관련 내장 함수
예제 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 ?>
예제 4-7 문자열 관련 내장 함수의 사용 예 string_tunc.php
예제 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 ?>
예제 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 ?>
예제 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 ?>
예제 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 ?>
예제 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 else 12 $age= $year - $b_year - 1; 13 } 14 else 15 { 16 $age= $year - $b_year - 1; 17 } 18 return $age; 19 }
예제 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 ?>