제 10장 부 프로그램 10.1 개요 10.2 매개 변수 평가와 전달 기법 10.3 형식 매개 변수 명세

Slides:



Advertisements
Similar presentations
Copyright © 2015 Pearson Education, Inc. 6 장 : 프로그래밍 언어.
Advertisements

YES C 제 1 장 C 언어의 개요 1/34 제 1 장 C 언어의 개요 문봉근. YES C 제 1 장 C 언어의 개요 2/34 제 1 장 C 언어의 개요 1.1 프로그램과 C 언어의 특징 1.2 C 언어의 프로그램 구성 1.3 비주얼 C++ 통합 환경 들어가기.
Copyright © 2006 The McGraw-Hill Companies, Inc. 프로그래밍 언어론 2nd edition Tucker and Noonan 5 장 타입 “ 타입은 컴퓨터 프로그래밍의 효소이다 ; 프로그래밍은 타입을 통해 소화할만한 것이 된다.” 로빈.
프로젝트 구성. 프로젝트 델파이 프로그램의 기본 단위 즉, 델파이로 만드는 프로그램을 구성하 는 모든 파일들의 집합 구성파일 확인 –View 메뉴 -> Project Manager 메뉴 – 프로젝트 파일 (DPR 확장자 ) – 폼 관련 파일 (FRM 확장자 ) – 소스.
Chapter 7 서브프로그램. Introduction 서브 프로그램의 명시 형식 인자전달 방법 ▫ Call by value ▫ Call by value result ▫ Call by reference ▫ Call by name 구현 방법 2.
신현중학교 김유재 최강 꽃 미남 태릉중학교 정찬혁 성일중학교 방현조 성일중학교 박해찬
Chapter 02. C언어 기반의 C++ 박 종 혁 교수 UCS Lab SeoulTech Tel:
제 4 장 변수, 영역, 수명 변수 바인딩 영역 기억장소 할당과 수명 변수와 그 환경 변수 초기화 상수와 변수.
8장 프로그래밍 언어 8.1 프로그램이란? 8.2 프로그램 언어의 역사 8.3 프로그램 설계 절차
PL/SQL.
9장 부프로그램(2) 순천향대학교 컴퓨터공학부 하 상 호.
제 3장 프로그래밍 언어 설계 3.1 설계 기준의 역사적 변천 3.2 효율성 3.3 일반성, 직교성, 획일성
Chapter 3 – 프로그래밍 언어 설계 Outline 3.1 설계 기준의 역사적 변천 3.2 효율성
프로그래밍 언어론 제 8 장 함수와 프로시져 함수의 원소 재귀 함수(Recursive Functions) 프로시져
제 7 장 문장 구조화 제어문 지정문 조건문 반복문 GOTO 문 비결정적문.
Chapter 10 – 추상 자료형 Outline 10.1 소개 10.2 Ada의 추상 자료형 10.3 C++의 추상 자료형
제 12장 예외 처리 12.1 설계 쟁점 12.2 PL/I의 ON-조건 12.3 Ada의 예외 처리
데이터 구조 - 소개 순천향대학교 컴퓨터공학과 하 상 호.
제 2장 언어의 변천 2.1 디지털 컴퓨터 이전의 언어 년대 : 최초의 프로그래밍 언어
Chapter 11 – 예외 처리 Outline 11.1 설계 쟁점 11.2 Pl/I의 예외 처리 11.3 Ada의 예외 처리
10장 예외 처리 프로그래밍 언어론 10.6 Pascal과 C의 에러 처리 10.1 설계 주제 10.2 PL/I의 예외 처리
제 6 장 데이터 타입 6.1 데이터 타입 및 타입 정보 6.2 타입의 용도 6.3 타입 구성자 6.4 사례 연구
2007 1학기 10 함수 활용.
 DBMS의 발전 배경(1) 화일 중심 자료처리(DP)시스템의 한계 ☞ Note
제7장 제어구조 I – 식과 문장.
자료 구조: Chapter 3 배열(1) 순천향대학교 컴퓨터공학과 하 상 호.
자료 구조: Chapter 3 배열(1) 순천향대학교 컴퓨터공학과 하 상 호.
바인딩, 메모리 관리 SANGJI University Kwangman Ko
Part 08 함수 ©우균, 창병모 이 슬라이드는 부산대학교 우균이 작성하였습니다. 오류나 수정할 사항 있으면 연락 주세요.
객체지향 언어와 클래스, 객체 ㅎㅎ 개요 클래스의 선언, 객체의 생성 및 속성 참조 방식 멤버 변수 메소드 한빛미디어(주)
배열, 포인터, 참조 배열은 같은 형을 가지는 변수들의 묶음이다..
제 1장 프로그래밍 언어 소개 1.1 프로그래밍 언어란 무엇인가 1.2 프로그래밍 언어를 배워야 하는 이유
VHDL Package and Sub program
Chapter 9 – 부 프로그램 Outline 9.1 개요 9.2 매개변수 평가와 전달기법 9.3 형식 매개변수 명세
Ch2-2. VHDL Basic VHDL lexical element VHDL description
장. 문법 구조(Syntax) 컴퓨터공학과 권기태 프로그래밍언어론.
9. 중간언어 9-1. Polish표기법 9-2. N-투플 표기법 9-3. 트리 구조 코드 9-4. 추상 기계 코드
3장. 포인터, 배열, 구조체 포인터, 배열, 구조체 학습목표 기본적 데이터 타입
5주차: Functions in C.
4 병행 프로세스와 상호배제.
명품 C++ 프로그래밍 1장. C++ 시작.
Chapter 2 – 언어의 변천 Outline 2.1 디지털 컴퓨터 이전의 언어
5장 이름, 바인딩, 영역(2) 순천향대학교 컴퓨터공학과 하상호.
Chapter 10 함수 기본.
6장 데이터 타입(2) 순천향대학교 컴퓨터공학부 하 상 호.
프로그래밍 보고서 작성법 순천향대학교 컴퓨터공학과 하 상 호.
제 2장 어휘구조와 자료형 토 큰 리 터 럴 주 석 자 료 형 배 열 형.
주제 : 배열, 사용자정의 데이터형, 프로시저와 함수 등..
6장 데이터 타입(2) 순천향대학교 컴퓨터공학부 하 상 호.
Python.
제 5장 변수, 바인딩, 식 및 제어문 5.1 변수 5.6 표현식 5.2 바인딩 5.7 조건문 5.3 선언 5.8 반복문
수직선 위의 점의 좌표와 순서쌍 점의 좌표 원점 수직선 위의 한 점에 대응하는 수 A 수직선 위의 좌표가 0인 점
제 1 장. 자료구조와 알고리즘.
Chapter 4 변수 및 바인딩.
9장 부프로그램(2) 순천향대학교 컴퓨터공학부 하 상 호.
Signature, Strong Typing
Signature, Strong Typing
데이터 구조 - 소개 순천향대학교 컴퓨터공학과 하 상 호.
Signature, Strong Typing
Chapter 3 – 프로그래밍 언어 설계 Outline 3.1 설계 기준의 역사적 변천 3.2 효율성
주간 콜센터 운영현황 보고 주간 인입콜 동향 주간 주요 Focus 고객민원 (콜+게시판) 요청사항 금주 진행 사항 차주 계획
4. 데이타베이스 시스템의 구성.
Report #4 (1) (due 4/4) 문제 #1 3개의 막대 A, B, C와 원판 n개를 전달받아 Hanoi 탑 문제를 해결하는데 필요한 원판의 이동 회수를 구하여 반환하는 hanoi_tower(n, A, B, C)를 작성하라. 여기서 원판 n은 막대 A에 쌓여 있고.
Stored program 장종원
Signature, Strong Typing
제 1장 프로그래밍 언어 소개 1.1 프로그래밍 언어란 무엇인가 1.2 프로그래밍 언어를 배워야 하는 이유
C++ 언어의 특징
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 02. C언어 기반의 C++ 2.
프로그래밍 기법 최적화 프로그래밍.
제 8장 영역과 수명 8.1 블록과 영역 8.2 정적 영역과 동적 영역 8.3 주요 언어에서의 영역 8.4 변수의 수명
Presentation transcript:

제 10장 부 프로그램 10.1 개요 10.2 매개 변수 평가와 전달 기법 10.3 형식 매개 변수 명세 10.4 부작용과 이명 10.5 연산자 중복 정의 10.6 포괄 기능 10.7 코루틴

10.1 개요 부 프로그램 프로그램 모듈화 지원 함수 (function) - 함수 이름으로 값 반환 부 프로그램 (subroutine, procedure) 매개 변수로 값 반환 프로시저 4대 요소 프로시저 이름 매개 변수 (parameter) 리스트 몸체 환경

10.2 매개 변수 평가와 전달 기법 형식 매개 변수와 실 매개 변수 부 프로그램 10.2 매개 변수 평가와 전달 기법 형식 매개 변수와 실 매개 변수 (formal parameter) (actual parameter) 형식 매개 변수 부 프로그램 실행시 식 또는 다른 이름 대신하여 그 프로그램에서 사용되는 이름 일반적으로 지역 변수 역할

실 매개 변수 부 프로그램 전달 위해 사용된 원래식 또는 이름 subroutine p (A, B) ... CALL p(X, Y * Z) formal parameter Actual parameter

SUBROUTINE P(A , B) [Fortran] procedure P(A , B) [Algol] 부 프로그램 다른 프로그래밍 언어의 예 SUBROUTINE P(A , B) [Fortran] procedure P(A , B) [Algol] P:PROCEDURE(A , B); [PL/I] ▽ A P B [APL] CALL P(X , Y * Z) P(X , Y * Z) CALL P(X , Y * Z); X P Y × Z

(1) call by reference (by address, by location) 부 프로그램 전달 방법 (1) call by reference (by address, by location) (2) call by value (3) call by result (4) call by value & result (5) call by name

(1) call by reference (by address, by location) 부 프로그램 (1) call by reference (by address, by location) 실 매개 변수 주소를 대응되는 형식 매개 변수에 보내는 방법 실 매개 변수가 수식이면 임시 기억 장소 계산 FORTRAN, PL/I, PASCAL(var 사용) 예) procedure P(x, y) call P(a, b)

전달 : x[i] 주소 -> ADDR1 y 주소 -> ADDR2 부 프로그램 예) call by reference Procedure P(a, b) begin a <- b * 4 end 호출 : P(x[i], y) 전달 : x[i] 주소 -> ADDR1 y 주소 -> ADDR2 목적 코드 LDIND ADDR2 MULT @4 STIND ADDR1

실 매개 변수의 r-value를 구하여 형식 매개 변수에 복사 부 프로그램 (2) call by value 실 매개 변수의 r-value를 구하여 형식 매개 변수에 복사 실 매개 변수 값이 변하지 않음 Coupling(결합도) 작게 하는 장점 PASCAL 기본, ALGOL value 사용 예) procedure P(x, y) call P(a, b)

예) call by value Procedure P(a, b) begin a <- b * 4 end 목적 코드 부 프로그램 예) call by value Procedure P(a, b) begin a <- b * 4 end 목적 코드 LDIND ADDR1 STORE a LDIND ADDR2 STORE b LOAD b MULT @4 실매개 변수값을 지역 변수인 형식 매개 변수에 복사 몸체부에 대한 코드

부 프로그램에서 값을 반환하는 형식 매개 변수 값 저장, 기억 장소 보유 최종 값 실 매개 변수에 복사 (epolog) (3) call by result 값 반환 방법 부 프로그램에서 값을 반환하는 형식 매개 변수 값 저장, 기억 장소 보유 최종 값 실 매개 변수에 복사 (epolog) (4) call by value & result Call by value + call by result ALGOL-w, ALGOL 68, Ada

예) call by value & result 부 프로그램 예) call by value & result Procedure P(a, b) { a:by result, b : by value } begin a <- b * 4 end 목적 코드 LDIND ADDR1 STORE b LOAD b MULT @a STORE a LOAD b STIND ADDR1 B에 대한 시작부 (by value) 몸체부 A에 대한 끝맺음부(by result)

매개 변수 전달 기법에 따른 차이를 보이기 위한 프로그램 예 procedure PRINT integer y 부 프로그램 매개 변수 전달 기법에 따른 차이를 보이기 위한 프로그램 예 procedure PRINT integer y procedure INCR(x) integer x begin y 1 x x + 2 end y 0 INCR(y) write y call by reference y 3 call by value y 1 call by value & result y 2

형식 매개 변수의 이름이 사용될 때마다 그에 대응 되는 실 매개 변수 그 자체가 사용된 것 처럼 매번 구하여 실행 부 프로그램 (5) call by name 형식 매개 변수의 이름이 사용될 때마다 그에 대응 되는 실 매개 변수 그 자체가 사용된 것 처럼 매번 구하여 실행 구현 거의 불가능 (컴파일러 언어) 프로그램 작성, 읽기 어렵다 ALGOL 60

예) PL/I 형태 프로그램 (1) P : PROCEDURE; 부 프로그램 예) PL/I 형태 프로그램 (1) P : PROCEDURE; DECLARE A(3), I; /* A는 세개의 원소를 갖는 배열*/ I = 1; /* =은 배정 연산자 */ A(1) = 2; A(2) = 4; CALL Q(A(I)); /* A(I)가 실매개 변수 */ Q : PROCEDURE(B); /* 형식 매개 변수 B는 실매개 변수 A(I)에 대응됨 */ A(I) = 3; /* 식별자 A와 I는 프로시저 P에서 상속 */ I = 2; PUT LIST(B); /* B값을 인쇄 */ END Q; END P;

예) PL/I 형태 프로그램 (2) P : PROCEDURE; DECLARE A; A = 1; CALL Q(A); 부 프로그램 예) PL/I 형태 프로그램 (2) P : PROCEDURE; DECLARE A; A = 1; CALL Q(A); Q : PROCEDURE(B); DECLARE A, B; A = 2; PUT LIST(B); END Q; END P;

예) ALGOL 형태 프로그램 begin integer k integer array v procedure P(a) 부 프로그램 예) ALGOL 형태 프로그램 begin integer k integer array v procedure P(a) integer a a <- a + 1 v[k] <- 5 k <- 3 end v[3] <- 6 v[4] <- 8 k <- 4 call P(v[k])

10.3 형식 매개 변수 명세 언어들은 매개 변수의 여러 사항 번역기에게 알림 Ada call by value 부 프로그램 10.3 형식 매개 변수 명세 언어들은 매개 변수의 여러 사항 번역기에게 알림 Ada call by value in : 값 전달 (지역 상수) out : 결과 전달 in out : 값 결과 전달

예) Procedure NonSense ( A : in integer B : in out integer 부 프로그램 예) Procedure NonSense ( A : in integer B : in out integer C : out integer ) is begin B := B + A C := 0; end main : x := 1; y := 5; z := 10; NonSense ( X, Y, Z)

10.4 부작용과 이명 프로그램을 난해하게 함 Goto 문 부작용(side effect) 비 지역 변수의 값을 변화 시킴 부 프로그램 10.4 부작용과 이명 프로그램을 난해하게 함 Goto 문 부작용(side effect) 비 지역 변수의 값을 변화 시킴 call by reference, call by name FORTRAN COMMON문 이명 (aliasing) 동일한 기억 장소를 함께 사용하고 있는 다른 이름의 변수들 FORTRAN의 EQUIVALENCE, COBOL의 REDEFINES

10.5 연산자 중복 정의 (overloading) 부 프로그램 10.5 연산자 중복 정의 (overloading) 한 개체 (식별자, 함수이름, 연산자 등등)가 두 가지 이상의 개념으로 사용되었을 때 장점 일반적 표기 방법 지원 중복 사용하여 프로그램 합쳐도 혼동 안됨 예) Ada : 연산자가 행렬 곱셈으로 중복 표현 function “*” (X, Y : MATRIX) return MATRIX;

Ada에서의 중복 표현 해결 예 부 프로그램 procedure MAIN is ... package P is function F(X : REAL) return RANGE ; -- P.F function G(X : DOMAIN) return REAL ; -- P.G function K(X : DOMAIN) return BOOLEAN ; -- P.K end P; function F(X : BOOLEAN) return RANGE ; -- MAIN.F function G(X : DOMAIN) return BOOLEAN ; -- MAIN.G function K(X : DOMAIN) return REAL ; -- MAIN.K S : DOMAIN ; T : RANGE ; U : BOOLEAN ; V : REAL ; use P; begin T := F(V) ; -- P.F(V)를 의미 T := F(U) ; -- MAIN.F(U)를 의미 T := F(K(S)) ; -- MAIN.F(P.K(S))인지 P.F(MAIN.K(S))인지 애매 모호함 T := F(G(S)) ; -- MAIN.F(MAIN.G(S))인지 P.F(P.G(S))인지 애매 모호함 end

10.6 포괄 기능 하나 이상의 요소는 매개 변수로 받아 들이는 프로시저들을 의미 부 프로그램 10.6 포괄 기능 하나 이상의 요소는 매개 변수로 받아 들이는 프로시저들을 의미 매개 변수가 컴파일 시간에 실매개 변수로 대체되어 실제 프로시저를 발생 장점 일반적 표기 방법 지원 중복 사용하여 프로그램 합쳐도 혼동 안됨

Ada에서의 포괄 프로시저 generic type ITEM is private; 부 프로그램 Ada에서의 포괄 프로시저 generic type ITEM is private; procedure SWAP(X, Y : in out ITEM) is TEMP : ITEM ; begin TEMP := Y ; Y := X ; X := TEMP ; end ;

포괄 프로시저의 실제화 방법 프로시저의 사용 프로시저의 사용 부 프로그램 포괄 프로시저의 실제화 방법 procedure SWAPINTEGER is new SWAP(INTEGER) ; procedure SWAPREAL is new SWAP(FLOAT) ; 프로시저의 사용 SWAPINTEGER(A, B) ; SWAPREAL(P, Q) ; 프로시저의 사용 procedure EXCHG is new SWAP(INTERGER) ; procedure EXCHG is new SWAP(FLOAT) ; procedure EXCHG is new SWAP(BOOLEAN) ; procedure EXCHG is new SWAP(CHARACTER) ;

10.7 코루틴 (coroutines) 주종이 아니라 프로시저들 사이의 동등관계 부 프로그램 10.7 코루틴 (coroutines) 주종이 아니라 프로시저들 사이의 동등관계 Coroutine A에서 resume B 수행 단계 A의 resume 문장 다음 위치를 A의 제어 장소에 기억 Coroutine B의 실행 위치 알기 위해 B의 제어 장소의 값 참조

부 프로그램 두 코루틴 사이의 제어 수행도 Resume A B Resume B A