PowerPoint 프레젠테이션

Size: px
Start display at page:

Download "PowerPoint 프레젠테이션"

Transcription

1 Chapter 09 구조적자료형과실행시간환경

2 01 구조적자료형 02 메모리구성 03 메모리할당전략 04 매개변수전달방법

3 레코드, 배열등구조적자료형에대해이해할수있다. 메모리구성에대해이해할수있다. 정적메모리할당, 스택메모리할당, 힙메모리할당등메모리할당전략에대해이해할수있다. 값호출, 참조호출, 이름호출, 값-결과호출등매개변수전달방법에대해서이해할수있다.

4 9.1 구조적자료형 실행시필요한모든환경인실행시간환경에대해설명한다. 실행시간환경은매우다양한데, 구조적자료가어떻게구현되는지구조적자료형과메모리구성및메모리할당전략을살펴보고, 변수및데이터가어떻게접근하는지매개변수전달방법에대해서도다룬다 구조적자료형 (structured data type) 과기본자료형 (elementary data type) 에대해알아보자. 기본자료형은하나의이름이하나의자료객체 (data object) 를가진것으로정수, 실수, 문자형을말한다. 구조적자료형은하나의이름에여러개의자료객체가있는것으로레코드, 배열, 문자열, 집합, 트리등을말한다. 레코드 많은언어에서는이질 (heterogeneous) 의자료개체들을하나로묶고여기에그룹이름을부여하여하나의자료형을선언할수있는데, 이러한형태의구조적자료형을레코드또는구조체라고한다. PL/I, 코볼, 파스칼, C, 알골등과같은언어는레코드를사용할수있는데레코드의표현은언어마다조금씩다르다. 예를들어코볼언어의레코드는 [ 그림 9-1] 과같다. 4

5 9.1 구조적자료형 [ 그림 9-1] 에서레코드 ADDRESS 는 PERSON, STREET, CITY 와같은그룹항목으로되어있고, 이것들은다시하나이상의기본자료형으로구성되어있다. X(n) 은자료의속성을나타내는 PIC 구로 n 바이트로구성된자료의길이이다. 코볼언어에서레코드에대한일반적인구문은계층번호 (level number) 와자료이름 (data name), 자료의형과길이에따른속성 (attribute) 에의해다음과같이표현된다. level_num₁ data_name₁ PIC attribute₁ 5

6 9.1 구조적자료형 [ 그림 9-1] 에서레코드 ADDRESS 는 PERSON, STREET, CITY 와같은그룹항목으로되어있고, 이것들은다시하나이상의기본자료형으로구성되어있다. X(n) 은자료의속성을나타내는 PIC 구로 n 바이트로구성된자료의길이이다. 메모리에서레코드가어떻게저장되는지살펴보자. 자료형의속성으로서술된이름 ( 기본항목 ) 은자신의기억공간을필요로한다. 그러므로레코드에서속성을지닌모든자료항목은메모리에서장소를연속으로할당받음. [ 그림 9-1] 의레코드 ADDRESS 에대한메모리할당과자료이름의관계 6

7 9.1 구조적자료형 [ 그림 9-2] 의레코드 ADDRESS 에대한메모리할당에서만약 α 가레코드 ADDRESS 의시작주소라고할때, 각항목의자료길이를바이트로계산하면다음과같다. 7

8 9.1 구조적자료형 배열 동질 (homogeneous) 의자료객체들을묶고여기에그룹이름을부여하는배열 프로그램을실행하는동안특정한원소를상대주소로직접접근할수있도록허용 C 언어에서배열이다음과같이선언될때, 배열 score 는정수형자료 100 개를메모리에연속적으로기억시킬수있는기억공간을필요로한다. int score [100]; 배열의요소들은연속적으로저장되면빠르게접근할수있어실행시간이단축된다. 다음과같이가정하고위치를계산해보자. 각배열요소의크기를 u 라고하면배열 A 의 i 번째요소는다음위치에서시작한다. base + (i - low + 1) w (9.1) 여기서 low 는배열첨자의하한값이며 1 이라고하자 (C 언어의경우하한값이 0 이므로주소계산이달라진다 ). base 는배열에할당된메모리의상대주소이다. 즉 base 는 A[low] 의상대주소이다. 또한 w 는각요소의크기이다. 식 (9.1) 을식 (9.2) 로변환해보자. (i + 1) w + (base - low w) (9.2) 식 (9.2) 는컴파일시간에부분적으로실행될수있다. 부분식 d = base - low w 는배열의선언이나타나면바로계산될수있다. 즉배열 A 에대한기호표항목안에 d 의값이계산및저장되면 A[i] 의상대주소는단순히 (i + 1) w 를 d 에더함으로써계산된다. 8

9 9.1 구조적자료형 같은방법으로다차원배열을다음과같이선언한다. int board[2][3]; board 는각각원소가연속된메모리영역을할당하지만 board[1][2] 가자료영역에서몇번째셀에해당되는지쉽게알수없다. 그러나논리적인배열의구조는메모리에서 1 차원배열로정돈되기때문에손쉽게상대적인위치를계산해낼수있는반면에다차원배열은언어에따라하한값과상한값이달라질수있다. C 언어에서는하한값으로 0 이고정되어있으나파스칼에서는하한값이음수또는임의의정수로서술될수있다. 또한포트란언어는하한값이 1 로고정되어있다. 2 차원배열을메모리에저장하기위해 1 차원배열로변환하는방법은행우선 (rowmajor), 열우선 (column-major), 슬라이스 (slice) 등여러가지방법이있다. [ 그림 9-3] 은행우선및열우선방법으로저장된 2 3 배열 A 의내용을보여준다. 슬라이스는배열에서어떤부분의구조이다. 9

10 9.1 구조적자료형 다차원배열을 1 차원배열로저장하는방법 언어마다사용하는방법이다르므로이런특성을반영한다면매우효율적인프로그래밍이가능할것이다. C, 파스칼, PL/I 등은행우선방법을사용하고, 포트란은열우선방법을사용한다. 행우선방법으로저장된 2 차원배열의경우 A[i, j] 의상대주소는식 (9.3) 과같다. base + (((i - low1) n2) + (j - low2 + 1)) w (9.3) 10

11 9.1 구조적자료형 여기서 low1 과 low2 는 i 와 j 의하한값이고, n2 는열의크기로 j 가취할수있는값의크기이다. 즉 high2 를 j 에대한상한값이라고하면 n = high2 - low2 + 1 이다. A[i, j] 의상대주소를계산하는데컴파일시간에 i 와 j 의값만모르고다른값들을모두안다면식 (9.3) 은식 (9.4) 와같이다시쓸수있다. ((i n) + (j + 1)) w + (base - ((low1 n) + low2) w) (9.4) 식 (9.4) 의뒷부분은컴파일시간에계산할수있다. 같은방법으로열우선에대해서도 2 차원배열의경우 A[i, j] 의상대주소는식 (9.5) 와같다. base + (((j - low1) n1) + (i - low2 + 1)) w (9.5) n1 은행단위의원소개수로 i 가취할수있는값의크기이다. 11

12 9.1 구조적자료형 [ 예제 9-1] 행우선과열우선에따른주소계산하기 다음과같이선언된 2 차원행렬에대해하한값을 1 로하여행우선과열우선으로메모리에저장하고, 행우선과열우선에대해 B(3,2) 의주소를계산해보자. int B(4,4); [ 풀이 ] 행우선방법으로메모리에저장하면다음과같다. 열우선방법으로메모리에저장하면다음과같다. 12

13 9.1 구조적자료형 원소 B(3,2) 에대한상대주소를계산한다. 그림의화살표를보면행우선방법은열번째이고열우선방법은일곱번째임을알수있다. 또한각원소가정수형이므로 4 바이트를할당한다면주소는 base 로부터행우선의경우 40, 열우선의경우 28 이어야한다. 식 (9.3) 에의하면 i 는 3, j 는 2, low1 은하한값이므로 1, low2 도 1, n2 는열의크기이므로 4, w 는 4 이므로다음과같다. base + (((i - low1) n2) + (j - low2 + 1)) w = base + (((3-1) 4) + ( )) 4 = base + (8 + 2) 4 = base + 40 같은방법으로열우선으로계산하기위해식 (9.5) 를사용한다. 여기서 i 는 3, j 는 2, low1 은하한값이므로 1, low2 도 1, n1 은행의크기이므로 4, w 는 4 이므로다음과같다. base + (((j - low1) n1) + (i - low2 + 1)) w = base + (((2-1) 4) + ( )) 4 = base + (4 + 3) 4 = base

14 9.2 메모리구성 프로시저가실행되는것을프로시저의활성 (activation) 만약어떤프로시저가재귀적 (recursive) 이라면몇개의활성이동시에존재할수있다. 프로시저정의 (procedure definition) 는가장간단한형태로식별자와문장을연관시키는선언이다. 식별자는프로시저이름이고, 문장은프로시저몸체 (body) 이다. 예를들어 [ 그림 9-4] 의퀵정렬 (quick sorting) 프로그램을생각해보자. 14

15 9.2 메모리구성 15

16 9.2 메모리구성 [ 그림 9-4] 의 3~7 행은 readarray 라는프로시저정의를하고있으며, 여기서 5~7 행은프로시저몸체이다. 프로시저가호출되었다는것은프로시저이름이실행가능한문장에나타난경우이다. 22~27 행은주프로그램이며, 25 행에서프로시저 readarray 를호출하고 26 행에서프로시저 quicksort 를호출한다. 프로시저정의에서사용되는식별자에는매개변수가있다. 매개변수는형식매개변수와실매개변수가있는데, [ 그림 9-4] 에서는 12 행의식별자 m 과 n 이프로시저 quicksort 의형식매개변수이고, 18 행의 m 과 i-1 이실매개변수이다. 즉프로시저를호출하는데있는매개변수가실매개변수이고, 프로시저호출을받는데있는매개변수가형식매개변수이다. 프로그램이실행되는동안프로시저사이에는제어의흐름이존재한다. 제어는순차적으로이동하는데, 프로시저는몸체의처음부터실행되다가모든실행이끝나면프로시저가호출된지점바로다음위치에제어를돌려준다. 프로시저 p 에대한존속시간 (life time) 은프로시저몸체가실행되는기간을말한다. 존속시간에는 p 가다시프로시저를호출하여그프로시저를실행하는시간도포함된다. [ 그림 9-4] 의프로그램을실행시킨결과는 [ 그림 9-5] 와같다. 여기서 partition(1,9) 가반환되는값은 4 라고가정하며, 활성 quicksort(1,9) 의존속시간은 enter quicksort(1,9) 와 leave quicksort(1,9) 사이이다. 16

17 9.2 메모리구성 17

18 9.2 메모리구성 만약어떤프로시저의새로운활성이그프로시저의이전활성이끝나기전에시작된다면그프로시저를재귀적이라고한다. quicksort 프로시저는재귀적이다. 제어가활성에들어가고다시나오는과정을트리로표현한것을활성트리 (activation tree) 라고한다. 활성트리의각노드는하나의활성을나타내고, 루트노드는전체프로그램을시작하는주프로그램의활성이다. 프로시저 p 의자식노드는프로시저 p 가호출하는활성노드이다. 활성은왼쪽에서오른쪽으로호출되며자식노드는자신의오른쪽에있는활성이시작되기전에끝내야한다. [ 예제 9-2] 프로시저호출과반환에대한활성트리그리기 [ 그림 9-5] 에있는프로시저호출과반환에대한활성트리를그려보자. [ 풀이 ] 각프로시저는프로시저의첫번째글자로만나타낸다. 활성트리의루트노드는주프로그램인 main 을나타낸다. main 이실행되는동안루트노드의첫번째자식노드로라벨이 r 이라붙은 readarray 의활성이존재한다. 루트노드의두번째자식노드는 quicksort(1,9) 이다. 같은방법으로활성트리를만들어갈수있다. 활성 q(1,3) 과 q(5,9) 는재귀적프로시저이며, q(1,3) 과 q(5,9) 는 q(1,9) 가끝나기전에시작되고 q(1,9) 보다먼저끝마쳐야한다. 전체적인활성트리는 [ 그림 9-6] 과같다. 여기서 m 은 main, r 은 readarray, q(1,9) 는 quicksort(1,9), p(1,9) 는 partition(1,9) 를나타낸다. 18

19 9.2 메모리구성 19

20 9.2 메모리구성 프로시저의호출과반환은제어스택 control stack 이라고불리는실행시간스택이관리한다. 즉, 활성이시작될때활성에대한노드를스택에삽입 (push) 하고활성이끝날때그노드를삭제 (pop) 한다. 그러므로제어스택의내용은활성트리의루트노드에대한경로와관계있는것이다. [ 예제 9-3] 제어스택그리기 [ 그림 9-6] 의 q(2,3) 에대한제어스택을그려보자. 루트로부터 q(2,3) 으로가는경로를나타낸 [ 그림 9-7] 에서이미활성이수행된것은점선으로표시하고, 루트 m 으로부터 q(2,3) 으로가는경로는실선으로표시했다. 제어스택은실선으로표시된경로에해당하는노드를저장하고있다. 즉제어스택에는다음과같이저장되어있다. m, q(1,9), q(1,3), q(12,3) 20

21 9.2 메모리구성 21

22 9.2 메모리구성 메모리구성 전형적인컴퓨터의메모리구성은 [ 그림 8-8] 과같이메모리코드부분과데이터부분으로더욱세분할수있다. 대부분의컴파일언어에서는실행하는동안에코드부분을변경할수없으며, 코드와자료부분이개념적으로분리되어있다. 더욱이코드부분은실행이전에고정되기때문에모든코드에대한주소는컴파일시간에알수있다. 특히각프로시저와함수의시작점 (entry point) 은컴파일시간에알수있다. 실행할때의코드메모리구성은 [ 그림 9-8] 과같다. 22

23 9.2 메모리구성 프로그램에서전역및정적자료는일반적으로코드와유사한형태로고정부분에별개로할당된다. C 언어의외부및정적변수와파스칼언어의전역변수가이러한유형에속한다. 동적자료할당에사용되는메모리부분은여러가지다른방법으로구성될수있다. 전형적인구조는이부분에대한메모리가스택부분과힙부분으로나뉘는데, 스택부분은할당이 LIFO(last-in, first-out) 방식으로발생하는자료에사용되고, 힙부분은 LIFO 방식을따르지않는동적할당 ( 예를들어 C 에서포인터할당 ) 에사용된다. 힙은일반적으로단순한선형메모리부분이라는것을주목해야한다. 포인터할당및해제를처리하는데는어떤동적인장치가필요한데그러한할당을처리하는자료구조가바로힙이다. 지금까지설명한실행시간메모리의일반적인구조는 [ 그림 8-8] 과같다. 좀더부연설명을하기위해 [ 그림 8-8] 을간단하게 [ 그림 9-9] 로나타냈다. 23

24 9.2 메모리구성 [ 그림 9-9] 에서화살표는스택과힙의확대방향을가리킨다. 전통적으로스택은메모리에서아래방향으로확대되는형태로그리며, 그래서톱은실제적으로그려진구역의바닥에그려진다. 힙은스택과유사하게그려지지만 LIFO 구조가아니고, 그확대및축소는화살표가가리키는것보다더욱복잡하다. 24

25 9.2 메모리구성 파스칼과 C 언어에서는프로시저활성을관리하기위해제어스택을확장해서사용한다. 호출이일어날때활성은실행을잠시멈추고, 프로그램계수기와레지스터값같은기계의상태정보를스택에저장한다. 호출이끝나고제어가반환될때호출바로뒤의위치로프로그램계수기가설정되고관련된레지스터값이다시저장된다음그활성은실행을계속한다. 프로시저가한번실행되는데필요한정보는메모리의연속블록을사용하여관리되는데, 이러한연속블록을활성레코드 (activation record) 혹은활성프레임 (activation frame) 이라한다. 활성레코드는실매개변수, 반환값, 지역자료, 임시값을저장하는공간을포함한다. 일반적인활성레코드는 [ 그림 9-10] 과같다. 25

26 9.2 메모리구성 모든언어와컴파일러가 [ 그림 9-10] 의공간을다사용하는것은아니다. 또한공간에대한자료의순서를포함하는특수상세사항은목표기계의구조, 컴파일되는언어의특성, 심지어컴파일러작성자의취향에따라다를수있다. 파스칼과 C 언어는프로시저가호출될때실행스택에프로시저의활성레코드를삽입하고, 제어가호출한쪽으로되돌아갈때스택에서활성레코드를삭제한다. [ 그림 9-10] 의각공간에대해살펴보면다음과같다. 반환값에대한공간 : 호출한프로시저로결과값이전달될때사용한다. 반환값은효율을위해종종레지스터에담아되돌려주기도한다. 실매개변수에대한공간 : 호출시매개변수가전달되면사용한다. 활성레코드에매개변수를저장한다고했지만실제로는효율을위해기계레지스터를통해매개변수를전달한다. 제어링크 : 생략가능한공간으로자신을호출한프로시저의활성레코드를가리킨다. 접근링크 : 생략가능한공간으로다른활성레코드에있는비지역자료 nonlocal data 를참조하는데사용된다. 파스칼언어에서는접근링크가필요하다. 기계상태저장공간 : 프로시저가호출되기바로전의기계상태에대한정보를저장한다. 지역자료에대한공간 : 프로시저가실행될때지역적으로사용되는자료를저장한다. 임시변수에대한공간 : 식을계산하는도중발생하는임시값을저장한다 26

27 9.2 메모리구성 언어에따라서는활성레코드가정적부분 ( 포트란 77), 스택부분 (C, 파스칼 ), 혹은힙부분 ( 리스프 ) 에할당된다. 활성레코드가스택에서유지될때그것을스택프레임이라고도부른다. 프로세서레지스터도실행시간환경의일부분이다. 레지스터는임시변수, 지역변수, 전역변수를저장하는데사용될수있다. 실행시간환경의설계에서특별히중요한부분은프로시저나함수가호출될때발생하는연산의순서결정이다. 이러한연산은활성레코드에대한메모리할당, 매개변수의계산과저장, 호출이이뤄지는데필요한레지스터를저장하고설정하는것을포함하며, 일반적으로호출순서 (calling sequence) 로언급된다. 프로시저나함수가반환될때호출자가접근할수있는장소에반환값을두는것, 레지스터의재조정, 활성레코드에대한메모리재조정등이호출순서에해당된다. 27

28 9.3 메모리할당전략 실행시간환경은실행과정을관리하는데필요한모든정보를유지해야하고메모리를관리하는역할 특히실행과정을관리하는데필요한정보를유지하고메모리를관리하는역할을하는목적컴퓨터의레지스터와메모리구조가실행환경에포함된다. [ 그림 9-9] 의메모리구조에서자료영역에대해메모리할당전략이필요하다. 정적및동적이라는용어는각각컴파일시간과실행시간을구별하는데사용된다. 메모리할당이정적이라면프로그램이실행될때무슨일을하는지보지않고프로그램텍스트만을보고메모리할당을결정한다. 메모리할당이동적이라면프로그램이실행되는중에메모리할당을결정한다. 동적할당을위해많은컴파일러에는스택메모리할당과힙메모리할당이있다. 세가지메모리할당전략 정적메모리할당 (static storage allocation) : 프로그램이실행될때이미해당메모리의크기가결정되는방법으로포트란 77 언어에서사용된다. 스택메모리할당 (stack storage allocation) : 메모리를스택으로관리하는방법으로 C, C++, 파스칼, 에이다와같은언어에서사용된다. 힙메모리할당 (( heap storage allocation) : 필요할때마다동적으로메모리를할당하고해체하는방법으로함수언어 (functional language) 에서사용된다 28

29 9.3 메모리할당전략 정적메모리할당 (static storage allocation) : 정적메모리할당에서는전역변수뿐만아니라모든변수가정적으로할당된다. 각프로시저는실행전에정적으로할당되는하나의활성레코드만가지고있다. 모든변수는지역적이든전역적이든고정주소 (fixed address) 에의해직접적으로접근할수있다. 29

30 9.3 메모리할당전략 정적메모리할당에서는각활성레코드에복귀주소 (return address) 이외의다른정보를유지할필요가없으므로정보측면에서상대적으로오버헤드가작다. 또한정적메모리할당의호출순서가매우단순하다. 프로시저가호출될때각각의매개변수는호출되는프로시저의활성에서적절한매개변수의위치에저장된다. 그런다음호출프로그램코드에있는복귀주소가저장되며, 호출된프로시저코드의시작부로분기가실행된다. 복귀할때는복귀주소로분기가실행된다. [ 예제 9-4] 정적메모리할당에대한메모리구조 [ 그림 9-12] 의포트란 77 프로그램을보고정적메모리할당에대한메모리구조에대해설명해보자. 30

31 9.3 메모리할당전략 31

32 9.3 메모리할당전략 [ 그림 9-12] 의프로그램은주프로시저 TEST1 과부프로시저 QUMEAN 으로구성되어있다. 이프로그램에는주프로시저와 QUMEAN 프로시저에서 COMMON MAXSIZE 선언에의해주어지는 1 개의전역변수가있다. COMMON 문장은전역변수로서로다른프로시저에서메모리를공유하는것을허용하는문장이다. [ 그림 9-13] 은 [ 그림 9-12] 에대해메모리에서정수와실수값사이의크기를고려하지않은실행시간환경이다. 32

33 9.3 메모리할당전략 [ 그림 9-13] 에서화살표는매개변수 A, SIZE, QMEAN 이주프로시저로부터의호출동안참조되는값을가리킨다. 포트란 77 에서는매개변수값이묵시적으로참조호출값이며, 따라서호출자의실매개변수인 TABLE, 3, TEMP 의위치 (location) 값은 QUMEAN 의매개변수위치값으로복사된다. 33

34 9.3 메모리할당전략 스택메모리할당 : 재귀적호출이허용되고지역변수가각각호출할때마다새롭게할당되는언어에서는활성레코드가정적으로할당될수없다. 대신에활성레코드가스택기반형태로할당되어야하며, 이경우에새로운활성레코드는새로운프로시저가호출되면스택의톱에할당되고호출이종료되면활성레코드가삭제된다. 스택메모리할당방법은실행시간스택 (run-time stack) 또는호출스택 (call stack) 이라고도한다. [ 예제 9-5] 실행시간스택에서이뤄지는삽입과삭제에대한활성레코드 [ 그림 9-6] 의활성트리를통해제어가이동함에따라실행시간스택에서이뤄지는삽입과삭제에대한활성레코드를나타내보자. [ 풀이 ] [ 그림 9-14] 는실행시간스택에서이뤄지는활성레코드를보여준다. 34

35 9.3 메모리할당전략 35

36 9.3 메모리할당전략 [ 그림 9-14] 에서점선은이미실행을끝낸활성레코드이다. 프로그램은프로시저 m 의활성에서시작된다. 제어가 m(main) 의몸체안에서첫번째로 r 을호출하면프로시저 r 이그활성을시작하고 r 의활성레코드가스택에저장된다. 제어가 r 의실행을끝내면 r 에대한활성레코드가스택에서삭제된다. 이때스택에는 m 에대한활성만남는다. m 의활성에서제어가실매개변수 1 과 9 를가지고 q 를호출하면스택의톱에는 q 에대한활성이할당된다. [ 그림 9-14] 의마지막그림전에는몇개의활성이발생했다가사라진다. 마지막그림에서 p(1,3) 과 q(1,0) 은 q(1,3) 의존속시간동안에활성이시작되고끝난다. 그러므로이것들의활성레코드는스택의톱에 q(1,3) 만을남겨놓는다. 호출순서와활성레코드는서로다르다. 호출순서안에있는코드는보통두가지로나뉘는데호출프로시저 (calling procedure, caller) 와피호출프로시저 (called procedure, callee) 가그것이다. 실행시호출자와피호출자사이의작업을명확하게구분할수는없다. 소스언어, 목적기계, 운영체제에따라작업의분담이달라지기때문이다. 호출자와피호출자가어떻게협력하여스택을관리하는지에대한예를 [ 그림 9-15] 에나타냈다. 36

37 9.3 메모리할당전략 [ 그림 9-15] 에서처럼레지스터 top_sp 는활성레코드의기계상태공간끝을가리킨다. 피호출자의활성레코드내에있는이지점은호출자에게알려지고, 호출자는제어가피호출자에게전달되기전에 top_sp 를설정해야한다. 37

38 9.3 메모리할당전략 호출순서및호출자와피호출자사이의스택관리는다음과같다. 1 호출자는실매개변수를평가한다. 2 호출자는복귀주소와 top_sp 의이전값을피호출자의활성레코드에저장한다. 그다음호출자는 [ 그림 9-15] 에나타낸위치로 top_sp 를증가시킨다. 즉 top_sp 는호출자의지역자료와임시기억변수, 그리고피호출자의매개변수와상태공간을지나서이동한다. 3 피호출자는레지스터값과다른상태정보를저장한다. 4 피호출자는자신의지역자료를초기화하고실행을시작한다. 이에대응하는적절한복귀순서는다음과같다. 1 [ 그림 9-15] 와같이피호출자는반환값을매개변수다음에저장한다. 2 피호출자는기계상태필드 status field 의정보를이용하여 top_sp 와다른레지스터를복원하고, 호출자가상태필드에저장했던복귀주소로분기한다. 3 top_sp 가감소되었지만호출자는반환값이있는위치를 top_sp 의현재값으로부터상대적인위치로알수있다. 따라서호출자는이값을사용할수있다. 38

39 9.3 메모리할당전략 [ 예제 9-6] 실행시간환경중스택메모리할당 음수가아닌 2 개의정수에대해최대공약수를구하는유클리드 (Euclid) 알고리즘을생각해보자. 이를 C 언어로간단하게구현한재귀적프로그램은다음과같다. 이프로그램을보고실행시간환경중에스택메모리할당을설명해보자. #include <stdio.h> int x, y; int gcd(int u, int v) { if (v == 0) return u; else return gcd(v, u % v); } main() { scanf("%d%d", &x, &y); printf("%d\n", gcd(x, y)); return 0; } 39

40 9.3 메모리할당전략 [ 풀이 ] 사용자가값 15 와 10 을입력하면 x 는 15, y 는 10 이되고, main 은처음에 gcd(15,10) 을호출한다. 이호출은 u 가 15, v 가 10 이므로 15 % 10 = 5 가되어재귀적으로 gcd(10,5) 를호출한다. 이것은 10 % 5 = 0 이므로세번째재귀적으로 gcd(5,0) 을호출한다음값 5 를반환한다. 이과정에대한실행시간환경은다음그림과같다. 40

41 9.3 메모리할당전략 힙메모리할당 : 스택메모리할당전략은 C, 파스칼, 에이다와같은표준적인명령형 (imperative) 언어사이에서가장공통적인방법이지만, 활성이끝난뒤에도지역변수의값을유지해야하는경우나호출된활성이호출자가사라진뒤에도살아있어야하는경우에는사용하지못한다. 이런경우에는무기한살아있거나프로그램이명시적으로제거할때까지살아있는자료를저장하는힙을사용하여해결할수있다. 지역변수는보통해당프로시저가끝나면접근할수없게되지만, 많은언어에서는해당프로시저의활성화에종속되지않는존속시간을가진객체나다른자료를사용할수있다. 예를들어 C++ 와자바는 new 로생성한객체를프로시저간에전달할수있다. 따라서이런객체는자신을생성한프로시저가종료된후에도계속존재할수있다. 힙메모리할당은연속적인기억공간을꾸러미로만들어활성레코드나다른객체에할당하는전략이다. 이꾸러미는다른순서로해체될수있으므로힙은사용중인영역과사용되지않고있는영역 (free area) 으로섞어서구성할수있다. 활성레코드의힙메모리할당은 [ 그림 9-16] 을통해알수있다. 41

42 9.3 메모리할당전략 [ 그림 9-14] 의세번째그림을보면프로시저 r 에대한활성이끝나고나서 r 에대한활성레코드가삭제되지만, [ 그림 9-16] 에서는 r 에대한활성이끝나도 r 에대한활성레코드가계속유지된다. 힙메모리할당은모든참조가없어질때만활성레코드를해제할수있으며, 활성레코드를동적으로실행하는동안임의의시점에해제되어야하기때문에동적메모리할당이라고도부른다. 42

43 9.4 매개변수전달방법 포트란 77 은참조호출방법을채택하고, C 는값호출방법을채택했다. 하나의프로시저가또다른프로시저를호출할때매개변수를통해서로값을주고받는다. 이러한매개변수에는실매개변수와형식매개변수가있다. 즉실매개변수와형식매개변수는서로값을주고받는다. 이처럼실매개변수와형식매개변수사이에값을주고받는것을매개변수전달 (parameter passing) 이라고하는데, 값을주고받는전달방법에따라프로그램의결과가달라질수있다. 그래서여러가지매개변수전달방법이존재한다. 매개변수전달방법을설명하기전에필요한개념을하나이해하기위해다음과같은치환문을생각해보자. a[i] = a[j] 산술식 a[j] 는값을나타내는 r- 값 (right value) 이고, a[i] 는 a[j] 의값이있는메모리의위치인 l- 값 (left value, location value) 을나타낸다. l- 값은산술식이나타내는기억위치를나타내고 r- 값은메모리에저장될값을나타내는용어이다. 접두사 l 과 r 은각각치환문의왼쪽과오른쪽을의미한다. 43

44 9.4 매개변수전달방법 값호출 값호출 (call by value) 은매개변수를전달하는가장일반적인방법으로 C, 파스칼, 에이다에서는기본적이다. 실매개변수와는별도로형식매개변수에대한메모리를할당하는방법이다. 형식매개변수는지역변수처럼다뤄지고, 호출자는형식매개변수에대한메모리에실매개변수의 r- 값을복사하는방법으로구현한다. 값호출의특징은형식매개변수에대한연산이호출자활성레코드안의값에는아무런영향을미치지않는다는것이다. [ 그림 9-17] 은두수를서로교환하는파스칼프로그램이다 44

45 9.4 매개변수전달방법 45

46 9.4 매개변수전달방법 [ 그림 9-17] 에서 3 행에있는 var 를없애면이프로그램은값호출방법이다. 12 행에있는 swap(a, b) 를호출하면 a 와 b 값을변화시키지않는다. 이과정을살펴보면, 12 행에서 swap(a, b) 를호출하면실매개변수 a 와 b 는 a:=1, b:=2 이므로 swap(1, 2) 가되고 3 행에있는 swap 프로시저를실행한다. 이때형식매개변수는 x 와 y 이다. 따라서형식매개변수에대한메모리를별도로할당하고 x 에는 1 을, y 에는 2 를할당한다. 그런다음지역변수 temp 에대한메모리를할당하고 6 행을실행한다. temp 에는 1, x 에는 2 가할당되고, y 에는다시 temp 의값 1 이할당된다. 여기까지는 x = 2, y = 1 이할당되어 x 와 y 의값이서로교환되었음을알수있다. 하지만제어가호출자로반환되고 swap 에대한활성레코드가해체될때지역변수인 x, y, temp 에대한메모리를삭제하기때문에호출자의활성레코드에는아무영향을주지못한다. 값호출프로시저는비지역변수나포인터로전달되는값을통해호출자에영향을줄수있다. 그렇지않으면호출된프로그램에서값을출력하는방법을선택해야한다. 46

47 9.4 매개변수전달방법 참조호출 참조호출 (call by reference, call by address) 방법은매개변수가참조에의해전달될때호출자가피호출자에게실매개변수의메모리에대한주소를가리키는포인터를전달한다. 포트란 77 에서매개변수전달방법은참조호출밖에없다. 또한파스칼에서참조호출은 var 키워드의사용으로이뤄지며, C++ 에서는매개변수선언시특수기호 & 의사용으로이뤄진다. 참조호출은만약실매개변수가 l- 값을가지고있는산술식이거나변수라면그 l- 값자신을전달한다. 그러나실매개변수가 b + c 나 5 와같이 l- 값을가지지않은산술식이라면그산술식은호출자활성레코드내의새로운위치에주소를전달한다. 피호출자가프로시저안에있는형식매개변수를목적코드에서참조하려면피호출프로시저로전달된포인터를통한간접참조 (indirect reference) 방식을이용해야한다. 47

48 9.4 매개변수전달방법 [ 예제 9-7] swap(a, b) 에대해구현되는과정 [ 그림 9-17] 의프로시저에서 swap(a, b) 에대해구현되는과정을설명해보자. [ 풀이 ] 실매개변수 a 와 b 에대한주소를피호출자활성레코드의 x 와 y 에해당하는위치 arg1 과 arg2 에각각복사한다. 6 행에서 temp 에 arg1 을가리키는위치의내용을복사한다. arg1 이가리키는위치의내용을 arg2 가가리키는위치의값으로설정한다. 마지막으로 arg2 가가리키는위치의내용을 temp 의값에복사한다. 48

49 9.4 매개변수전달방법 이름호출 이름호출 (call by name) 은가장복잡한매개변수전달방법이다. 이방법은형식매개변수의이름이사용될때마다그에대응하는실매개변수자체가사용된것처럼매번다시계산및시행된다. 이름호출은값호출과같이알골 60 에서매개변수전달방법으로제공되었으나부작용이존재하는경우에기대하지않았던결과가나타나기도하고, 매개변수가평가될때마다호출되어야만하는성크 (thunk) 라는프로시저를구현해야하므로구현하기가어려워잘사용되지않았다. [ 예제 9-8] swap(a, b) 에대해이름호출로구현되는과정 [ 그림 9-17] 의프로시저에서 swap(a, b) 에대해이름호출로구현되는과정을설명해보자. [ 풀이 ] 다음과같이 x 가나타날때마다 a 를, y 가나타날때마다 b 를대체하는방법이다. temp := a; a := b; b := temp; 49

50 9.4 매개변수전달방법 값 - 결과호출 값 - 결과호출 (call by value-result) 은값호출과참조호출을합성한방법으로입력복사출력복사 ( copy-in copy-out), 복사 회복 (copy-restore) 이라고도한다. 형식매개변수에대한메모리에실매개변수의값을복사하고호출전에실매개변수로부터계산된 l- 값에형식인자의마지막값을복사한다. 즉매개변수의값이복사되고프로시저에서사용되며, 그런다음매개변수의최종값은프로시저가종료될때매개변수의위치에다시복사된다. [ 예제 9-9] 값 - 결과호출과참조호출비교하기 다음과같은 C 코드에서값 - 결과호출과참조호출을구분해보자. void p(int x, int y) { ++x; ++y; } main( ) { int a = 1; p(a, a); return 0; } [ 풀이 ] 참조전달이사용된다면 a 는 p 가호출된후에값 3 을가지며, 값 - 결과호출이사 50

51 9.4 매개변수전달방법 [ 예제 9-10] 참조호출, 값호출, 이름호출의결과값구하기 다음과같은 PL/I 형태의프로그램에서참조호출, 값호출, 이름호출을하는경우의결과값을구해보자. P : PROCEDURE; DECLARE A(3), I; I=1; A(1)=2; A(2)=4; CALL Q(A(I)); Q : PROCEDURE(B) A(1)=3; I=2; PUT LIST(B); END Q; END P; [ 풀이 ] 1. 참조호출 I=1; A(1)=2; A(2)=4; CALL Q(A(I)); 로부터 addr(a(1))=addr(b) 이므로 A(1)=2 이다. A(1)=3; I=2; PUT LIST(B); A(1)=3 이고 PUT LIST(B); 로부터 A(1) 을출력해야하므로 3 이출력된다. 51

52 9.4 매개변수전달방법 2. 값호출 I=1; A(1)=2; A(2)=4; CALL Q(A(I)); 에서 A(1)=2 값을 B 에넘겨주는데 B 는메모리를따로잡아서 2 를저장한다. A(1)=3; I=2; PUT LIST(B); PUT LIST(B); 로부터 B 를출력하면 2 가저장되어있으므로 2 를출력한다. 3. 이름호출 I=1; A(1)=2; A(2)=4; CALL Q(A(I)); 에서값을 B 에넘겨주는것이아니라 B 가나타날때마다 A(I) 를대체한다. A(1)=3; I=2; PUT LIST(B); PUT LIST(B); 는 PUT LIST(A(I)); 이므로 A(I) 를출력하면된다. 현재 I 는 2 이므로 A(2) 를출력하여 4 가출력된다. 52

슬라이드 1

슬라이드 1 -Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역

More information

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap06-2pointer.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.

More information

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770> 연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.

More information

금오공대 컴퓨터공학전공 강의자료

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include

More information

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,

More information

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning C Programming Practice (II) Contents 배열 문자와문자열 구조체 포인터와메모리관리 구조체 2/17 배열 (Array) (1/2) 배열 동일한자료형을가지고있으며같은이름으로참조되는변수들의집합 배열의크기는반드시상수이어야한다. type var_name[size]; 예 ) int myarray[5] 배열의원소는원소의번호를 0 부터시작하는색인을사용

More information

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조 - Part2- 제 2 장다차원배열이란무엇인가 학습목차 2.1 다차원배열이란 2. 2 2 차원배열의주소와값의참조 2.1 다차원배열이란 2.1 다차원배열이란 (1/14) 다차원배열 : 2 차원이상의배열을의미 1 차원배열과다차원배열의비교 1 차원배열 int array [12] 행 2 차원배열 int array [4][3] 행 열 3 차원배열 int array [2][2][3]

More information

11장 포인터

11장 포인터 누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소

More information

설계란 무엇인가?

설계란 무엇인가? 금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 6 강. 함수와배열, 포인터, 참조목차 함수와포인터 주소값의매개변수전달 주소의반환 함수와배열 배열의매개변수전달 함수와참조 참조에의한매개변수전달 참조의반환 프로그래밍연습 1 /15 6 강. 함수와배열, 포인터, 참조함수와포인터 C++ 매개변수전달방법 값에의한전달 : 변수값,

More information

Microsoft PowerPoint - chap10-함수의활용.pptx

Microsoft PowerPoint - chap10-함수의활용.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 중 값에 의한 전달 방법과

More information

PowerPoint Presentation

PowerPoint Presentation Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음

More information

chap 5: Trees

chap 5: Trees 5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경

More information

11장 포인터

11장 포인터 Dynamic Memory and Linked List 1 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것 메모리의크기는프로그램이시작하기전에결정 int i, j; int buffer[80]; char name[] = data structure"; 처음에결정된크기보다더큰입력이들어온다면처리하지못함

More information

Microsoft PowerPoint - chap06-5 [호환 모드]

Microsoft PowerPoint - chap06-5 [호환 모드] 2011-1 학기프로그래밍입문 (1) chapter 06-5 참고자료 변수의영역과데이터의전달 박종혁 Tel: 970-6702 Email: jhpark1@seoultech.ac.kr h k 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- ehanbit.net 자동변수 지금까지하나의함수안에서선언한변수는자동변수이다. 사용범위는하나의함수내부이다. 생존기간은함수가호출되어실행되는동안이다.

More information

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - ch07 - 포인터 pm0415 2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자

More information

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

More information

Microsoft PowerPoint - chap06-1Array.ppt

Microsoft PowerPoint - chap06-1Array.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-1 참고자료 배열 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 배열의선언과사용 같은형태의자료형이많이필요할때배열을사용하면효과적이다. 배열의선언 배열의사용 배열과반복문 배열의초기화 유연성있게배열다루기 한빛미디어

More information

JVM 메모리구조

JVM 메모리구조 조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.

More information

금오공대 컴퓨터공학전공 강의자료

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 13. 포인터와배열! 함께이해하기 2013.10.02. 오병우 컴퓨터공학과 13-1 포인터와배열의관계 Programming in C, 정재은저, 사이텍미디어. 9 장참조 ( 교재의 13-1 은읽지말것 ) 배열이름의정체 배열이름은 Compile 시의 Symbol 로서첫번째요소의주소값을나타낸다. Symbol 로서컴파일시에만유효함 실행시에는메모리에잡히지않음

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

Data Structure

Data Structure Function & Pointer C- 언어의활용을위한주요기법 (3) Dong Kyue Kim Hanyang University dqkim@hanyang.ac.kr 함수의인자전달 함수의인자전달 함수의인자전달방식 인자전달의기본방식은복사다. 함수호출시전달되는값을매개변수를통해서전달받는데, 이때에값의복사가일어난다. int main(void) int val = 10;

More information

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드] Chapter 03 변수와자료형 2009 한국항공대학교항공우주기계공학부 (http://mercury.kau.ac.kr/sjkwon) 1 변수와자료유형 변수 프로그램에서자료값을임시로기억할수있는저장공간을변수 (variables) 변수 (Variables) 는컴퓨터의메모리인 RAM(Random Access Memory) 에저장 물건을담는박스라고생각한다면박스의크기에따라담을물건이제한됨

More information

Microsoft Word - FunctionCall

Microsoft Word - FunctionCall Function all Mechanism /* Simple Program */ #define get_int() IN KEYOARD #define put_int(val) LD A val \ OUT MONITOR int add_two(int a, int b) { int tmp; tmp = a+b; return tmp; } local auto variable stack

More information

untitled

untitled int i = 10; char c = 69; float f = 12.3; int i = 10; char c = 69; float f = 12.3; printf("i : %u\n", &i); // i printf("c : %u\n", &c); // c printf("f : %u\n", &f); // f return 0; i : 1245024 c : 1245015

More information

gnu-lee-oop-kor-lec06-3-chap7

gnu-lee-oop-kor-lec06-3-chap7 어서와 Java 는처음이지! 제 7 장상속 Super 키워드 상속과생성자 상속과다형성 서브클래스의객체가생성될때, 서브클래스의생성자만호출될까? 아니면수퍼클래스의생성자도호출되는가? class Base{ public Base(String msg) { System.out.println("Base() 생성자 "); ; class Derived extends Base

More information

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures 단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct

More information

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수

More information

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2 제 17 장동적메모리와연결리스트 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다.

More information

Microsoft PowerPoint - 제11장 포인터(강의)

Microsoft PowerPoint - 제11장 포인터(강의) 쉽게풀어쓴 C 언어 Express 제 11 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 1003 1004 1005 영화관 1002 1006 1001 포인터 (pointer) 1007 메모리의구조

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 10 포인터 01 포인터의기본 02 인자전달방법 03 포인터와배열 04 포인터와문자열 변수의주소를저장하는포인터에대해알아본다. 함수의인자를값과주소로전달하는방법을알아본다. 포인터와배열의관계를알아본다. 포인터와문자열의관계를알아본다. 1.1 포인터선언 포인터선언방법 자료형 * 변수명 ; int * ptr; * 연산자가하나이면 1 차원포인터 1 차원포인터는일반변수의주소를값으로가짐

More information

Microsoft PowerPoint - chap03-변수와데이터형.pptx

Microsoft PowerPoint - chap03-변수와데이터형.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num %d\n", num); return 0; } 1 학습목표 의 개념에 대해 알아본다.

More information

Chapter 4. LISTS

Chapter 4. LISTS C 언어에서리스트구현 리스트의생성 struct node { int data; struct node *link; ; struct node *ptr = NULL; ptr = (struct node *) malloc(sizeof(struct node)); Self-referential structure NULL: defined in stdio.h(k&r C) or

More information

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 제 8 장. 포인터 목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 포인터의개요 포인터란? 주소를변수로다루기위한주소변수 메모리의기억공간을변수로써사용하는것 포인터변수란데이터변수가저장되는주소의값을 변수로취급하기위한변수 C 3 포인터의개요 포인터변수및초기화 * 변수데이터의데이터형과같은데이터형을포인터 변수의데이터형으로선언 일반변수와포인터변수를구별하기위해

More information

PowerPoint Template

PowerPoint Template 10 포인터 1 주소 Address( 주소 ) 메모리에는그메모리의저장장소의위치를나타내는주소값 주소 (address) 는 1 바이트마다 1 씩증가하도록메모리에는연속적인번호가구성 2 주소연산자 & & 변수 변수의주소값을알아내려면변수앞에주소연산자 & (ampersand) 를이용 주소값이용장단점 주소값을이용하면보다편리하고융통성있는프로그램이가능 그러나복잡하고어려운단점

More information

PowerPoint Presentation

PowerPoint Presentation public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +

More information

1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문

1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문 1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문 1. 표준입출력 표준입출력 입력 : 키보드, scanf 함수 출력 : 모니터, printf 함수문제 : 정수값 2개를입력받고두값사이의값들을더하여출력하라. #include int main(void) int Num1, Num2; int

More information

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 비트연산자 1 1 비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 진수법! 2, 10, 16, 8! 2 : 0~1 ( )! 10 : 0~9 ( )! 16 : 0~9, 9 a, b,

More information

Microsoft PowerPoint - additional01.ppt [호환 모드]

Microsoft PowerPoint - additional01.ppt [호환 모드] 1.C 기반의 C++ part 1 함수 오버로딩 (overloading) 디폴트매개변수 (default parameter) 인-라인함수 (in-line function) 이름공간 (namespace) Jong Hyuk Park 함수 Jong Hyuk Park 함수오버로딩 (overloading) 함수오버로딩 (function overloading) C++ 언어에서는같은이름을가진여러개의함수를정의가능

More information

설계란 무엇인가?

설계란 무엇인가? 금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 5 강. 배열, 포인터, 참조목차 배열 포인터 C++ 메모리구조 주소연산자 포인터 포인터연산 배열과포인터 메모리동적할당 문자열 참조 1 /20 5 강. 배열, 포인터, 참조배열 배열 같은타입의변수여러개를하나의변수명으로처리 int Ary[10]; 총 10 개의변수 : Ary[0]~Ary[9]

More information

Microsoft PowerPoint - 제11장 포인터

Microsoft PowerPoint - 제11장 포인터 쉽게풀어쓴 C 언어 Express 제 11 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 1003 1004 1005 영화관 1002 1006 1001 포인터 (pointer) 1007 메모리의구조

More information

Microsoft PowerPoint - C++ 5 .pptx

Microsoft PowerPoint - C++ 5 .pptx C++ 언어프로그래밍 한밭대학교전자. 제어공학과이승호교수 연산자중복 (operator overloading) 이란? 2 1. 연산자중복이란? 1) 기존에미리정의되어있는연산자 (+, -, /, * 등 ) 들을프로그래머의의도에맞도록새롭게정의하여사용할수있도록지원하는기능 2) 연산자를특정한기능을수행하도록재정의하여사용하면여러가지이점을가질수있음 3) 하나의기능이프로그래머의의도에따라바뀌어동작하는다형성

More information

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100 2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack

More information

Microsoft PowerPoint - e pptx

Microsoft PowerPoint - e pptx Import/Export Data Using VBA Objectives Referencing Excel Cells in VBA Importing Data from Excel to VBA Using VBA to Modify Contents of Cells 새서브프로시저작성하기 프로시저실행하고결과확인하기 VBA 코드이해하기 Referencing Excel Cells

More information

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Example 3.1 Files 3.2 Source code 3.3 Exploit flow

More information

JAVA PROGRAMMING 실습 08.다형성

JAVA PROGRAMMING 실습 08.다형성 2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스

More information

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을 (structures) 구조체정의 구조체선언및초기화 구조체배열 구조체포인터 구조체배열과포인터 구조체와함수 중첩된구조체 구조체동적할당 공용체 (union) 1 구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean

More information

Lab 3. 실습문제 (Single linked list)_해답.hwp

Lab 3. 실습문제 (Single linked list)_해답.hwp Lab 3. Singly-linked list 의구현 실험실습일시 : 2009. 3. 30. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 5. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Singly-linked list의각함수를구현한다.

More information

JAVA PROGRAMMING 실습 05. 객체의 활용

JAVA PROGRAMMING 실습 05. 객체의 활용 public class Person{ public String name; public int age; } public Person(){ } public Person(String s, int a){ name = s; age = a; } public String getname(){ return name; } @ 객체의선언 public static void main(string

More information

02장.배열과 클래스

02장.배열과 클래스 ---------------- DATA STRUCTURES USING C ---------------- CHAPTER 배열과구조체 1/20 많은자료의처리? 배열 (array), 구조체 (struct) 성적처리프로그램에서 45 명의성적을저장하는방법 주소록프로그램에서친구들의다양한정보 ( 이름, 전화번호, 주소, 이메일등 ) 를통합하여저장하는방법 홍길동 이름 :

More information

Microsoft PowerPoint - chap-11.pptx

Microsoft PowerPoint - chap-11.pptx 쉽게풀어쓴 C 언어 Express 제 11 장포인터 컴퓨터프로그래밍기초 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 컴퓨터프로그래밍기초 2 포인터란? 포인터 (pointer): 주소를가지고있는변수 컴퓨터프로그래밍기초 3 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다.

More information

제 11 장포인터 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

제 11 장포인터 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 제 11 장포인터 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습합니다.

More information

Chapter 4. LISTS

Chapter 4. LISTS 6. 동치관계 (Equivalence Relations) 동치관계 reflexive, symmetric, transitive 성질을만족 "equal to"(=) 관계는동치관계임. x = x x = y 이면 y = x x = y 이고 y = z 이면 x = z 동치관계를이용하여집합 S 를 동치클래스 로분할 동일한클래스내의원소 x, y 에대해서는 x y 관계성립

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 3 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

OCW_C언어 기초

OCW_C언어 기초 초보프로그래머를위한 C 언어기초 4 장 : 연산자 2012 년 이은주 학습목표 수식의개념과연산자및피연산자에대한학습 C 의알아보기 연산자의우선순위와결합방향에대하여알아보기 2 목차 연산자의기본개념 수식 연산자와피연산자 산술연산자 / 증감연산자 관계연산자 / 논리연산자 비트연산자 / 대입연산자연산자의우선순위와결합방향 조건연산자 / 형변환연산자 연산자의우선순위 연산자의결합방향

More information

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - [2009] 02.pptx 원시데이터유형과연산 원시데이터유형과연산 원시데이터유형과연산 숫자데이터유형 - 숫자데이터유형 원시데이터유형과연산 표준입출력함수 - printf 문 가장기본적인출력함수. (stdio.h) 문법 ) printf( Test printf. a = %d \n, a); printf( %d, %f, %c \n, a, b, c); #include #include

More information

PowerPoint Presentation

PowerPoint Presentation 자바프로그래밍 1 배열 손시운 ssw5176@kangwon.ac.kr 배열이필요한이유 예를들어서학생이 10 명이있고성적의평균을계산한다고가정하자. 학생 이 10 명이므로 10 개의변수가필요하다. int s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; 하지만만약학생이 100 명이라면어떻게해야하는가? int s0, s1, s2, s3, s4,

More information

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

Microsoft PowerPoint 자바-기본문법(Ch2).pptx 자바기본문법 1. 기본사항 2. 자료형 3. 변수와상수 4. 연산자 1 주석 (Comments) 이해를돕기위한설명문 종류 // /* */ /** */ 활용예 javadoc HelloApplication.java 2 주석 (Comments) /* File name: HelloApplication.java Created by: Jung Created on: March

More information

2002년 2학기 자료구조

2002년 2학기 자료구조 자료구조 (Data Structures) Chapter 1 Basic Concepts Overview : Data (1) Data vs Information (2) Data Linear list( 선형리스트 ) - Sequential list : - Linked list : Nonlinear list( 비선형리스트 ) - Tree : - Graph : (3)

More information

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp Lab 4. Circular singly-linked list 의구현 실험실습일시 : 2009. 4. 6. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 12. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Circular Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Circular

More information

Frama-C/JESSIS 사용법 소개

Frama-C/JESSIS 사용법 소개 Frama-C 프로그램검증시스템소개 박종현 @ POSTECH PL Frama-C? C 프로그램대상정적분석도구 플러그인구조 JESSIE Wp Aorai Frama-C 커널 2 ROSAEC 2011 동계워크샵 @ 통영 JESSIE? Frama-C 연역검증플러그인 프로그램분석 검증조건추출 증명 Hoare 논리에기초한프로그램검증도구 사용법 $ frama-c jessie

More information

KNK_C_05_Pointers_Arrays_structures_summary_v02

KNK_C_05_Pointers_Arrays_structures_summary_v02 Pointers and Arrays Structures adopted from KNK C Programming : A Modern Approach 요약 2 Pointers and Arrays 3 배열의주소 #include int main(){ int c[] = {1, 2, 3, 4}; printf("c\t%p\n", c); printf("&c\t%p\n",

More information

Microsoft PowerPoint - 제3장-배열.pptx

Microsoft PowerPoint - 제3장-배열.pptx 제 3 강. 배열 (Array) 자료구조 1 제 3 강. 배열자료구조 학습목차 1. 배열의개념 2. 구조체 3. 희소 (Sparce) 행렬 4. 다차원배열의저장 2 1. 배열의개념 리스트는일상생활에서가장많이쓰이는자료형태이다. 예 ) 학생의명단, 은행거래고객명단, 월별판매액등 배열 (Array) 은컴퓨터언어에서리스트를저장하는데이터타입이다. 리스트와배열은같은개념이지만다른차원의용어이다.

More information

슬라이드 1

슬라이드 1 정적메모리할당 (Static memory allocation) 일반적으로프로그램의실행에필요한메모리 ( 변수, 배열, 객체등 ) 는컴파일과정에서결정되고, 실행파일이메모리에로드될때할당되며, 종료후에반환됨 동적메모리할당 (Dynamic memory allocation) 프로그램의실행중에필요한메모리를할당받아사용하고, 사용이끝나면반환함 - 메모리를프로그램이직접관리해야함

More information

Microsoft PowerPoint - Chapter_08.pptx

Microsoft PowerPoint - Chapter_08.pptx 프로그래밍 1 1 Chapter 8. Pointers May, 2016 Dept. of software Dankook University http://embedded.dankook.ac.kr/~baeksj 포인터의개념 (1/6) 2 포인터란 : 다른객체를가리키는변수 객체의메모리주소를저장하는변수 기호적방식 (symbolic way) 으로주소사용 포인터와관련된연산자

More information

<342EBAAFBCF620B9D720B9D9C0CEB5F92E687770>

<342EBAAFBCF620B9D720B9D9C0CEB5F92E687770> 예약어(reserved word) : 프로그래밍 언어에서 특별한 용도로 사용하고자 미리 지정한 단어 - 프로그램의 구성요소를 구별하게 해주는 역할 => 라벨, 서브 프로그램 이름, 변수에 연관되어 다른 변수나 서브 프로그램 등과 구별 - 식별자의 최대길이는 언어마다 각각 다르며 허용길이를 넘어서면 나머지 문자열은 무시됨 - FORTRAN, COBOL, HTML

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 08 함수 01 함수의개요 02 함수사용하기 03 함수와배열 04 재귀함수 함수의필요성을인식한다. 함수를정의, 선언, 호출하는방법을알아본다. 배열을함수의인자로전달하는방법과사용시장점을알아본다. 재귀호출로해결할수있는문제의특징과해결방법을알아본다. 1.1 함수의정의와기능 함수 (function) 특별한기능을수행하는것 여러가지함수의예 Page 4 1.2

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 3 장함수와문자열 1. 함수의기본적인개념을이해한다. 2. 인수와매개변수의개념을이해한다. 3. 함수의인수전달방법 2가지를이해한다 4. 중복함수를이해한다. 5. 디폴트매개변수를이해한다. 6. 문자열의구성을이해한다. 7. string 클래스의사용법을익힌다. 이번장에서만들어볼프로그램 함수란? 함수선언 함수호출 예제 #include using

More information

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt 변수와상수 1 변수란무엇인가? 변수 : 정보 (data) 를저장하는컴퓨터내의특정위치 ( 임시저장공간 ) 메모리, register 메모리주소 101 번지 102 번지 변수의크기에따라 주로 byte 단위 메모리 2 기본적인변수형및변수의크기 변수의크기 해당컴퓨터에서는항상일정 컴퓨터마다다를수있음 short

More information

윤성우의 열혈 TCP/IP 소켓 프로그래밍

윤성우의 열혈 TCP/IP 소켓 프로그래밍 C 프로그래밍프로젝트 Chap 22. 구조체와사용자정의자료형 1 2013.10.10. 오병우 컴퓨터공학과 구조체의정의 (Structure) 구조체 하나이상의기본자료형을기반으로사용자정의자료형 (User Defined Data Type) 을만들수있는문법요소 배열 vs. 구조체 배열 : 한가지자료형의집합 구조체 : 여러가지자료형의집합 사용자정의자료형 struct

More information

Microsoft PowerPoint - function

Microsoft PowerPoint - function 제 7 장함수구현 7.1 함수정의 7.2 매개변수전달 7.3 함수구현 7.4 인터프리터에서함수구현 Reading Chap 8 숙대창병모 Nov. 2007 1 7.1 함수정의및호출 숙대창병모 Nov. 2007 2 프로시저 / 함수? 프로시저 (Procedure) 한그룹의계산과정을추상화하는메커니즘으로반환값없으며 매개변수나비지역변수를변경한다. 함수 (Function)

More information

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 이중포인터란무엇인가? 포인터배열 함수포인터 다차원배열과포인터 void 포인터 포인터는다양한용도로유용하게활용될수있습니다. 2 이중포인터

More information

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 6.1 함수프로시저 6.2 서브프로시저 6.3 매개변수의전달방식 6.4 함수를이용한프로그래밍 3 프로시저 (Procedure) 프로시저 (Procedure) 란무엇인가? 논리적으로묶여있는하나의처리단위 내장프로시저 이벤트프로시저, 속성프로시저, 메서드, 비주얼베이직내장함수등

More information

JAVA PROGRAMMING 실습 02. 표준 입출력

JAVA PROGRAMMING 실습 02. 표준 입출력 # 메소드의구조자주반복하여사용하는내용에대해특정이름으로정의한묶음 반환형메소드이름 ( 매개변수 ) { 실행문장 1; : 실행문장 N; } 메소드의종류 Call By Name : 메서드의이름에의해호출되는메서드로특정매개변수없이실행 Call By Value : 메서드를이름으로호출할때특정매개변수를전달하여그값을기초로실행하는메서드 Call By Reference : 메서드호출시매개변수로사용되는값이특정위치를참조하는

More information

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600 균형이진탐색트리 -VL Tree delson, Velskii, Landis에의해 1962년에제안됨 VL trees are balanced n VL Tree is a binary search tree such that for every internal node v of T, the heights of the children of v can differ by at

More information

06장.리스트

06장.리스트 ---------------- DATA STRUCTURES USING C ---------------- CHAPTER 리스트 1/28 리스트란? 리스트 (list), 선형리스트 (linear list) 순서를가진항목들의모임 집합 : 항목간의순서의개념이없음 리스트의예 요일 : ( 일요일, 월요일,, 토요일 ) 한글자음의모임 : ( ㄱ, ㄴ,, ㅎ ) 카드 :

More information

PowerPoint Template

PowerPoint Template 16-1. 보조자료템플릿 (Template) 함수템플릿 클래스템플릿 Jong Hyuk Park 함수템플릿 Jong Hyuk Park 함수템플릿소개 함수템플릿 한번의함수정의로서로다른자료형에대해적용하는함수 예 int abs(int n) return n < 0? -n : n; double abs(double n) 함수 return n < 0? -n : n; //

More information

Microsoft PowerPoint - 03_(C_Programming)_(Korean)_Pointers

Microsoft PowerPoint - 03_(C_Programming)_(Korean)_Pointers C Programming 포인터 (Pointers) Seo, Doo-Ok Clickseo.com clickseo@gmail.com 목 차 포인터의이해 다양한포인터 2 포인터의이해 포인터의이해 포인터변수선언및초기화 포인터연산 다양한포인터 3 주소연산자 ( & ) 포인터의이해 (1/4) 변수와배열원소에만적용한다. 산술식이나상수에는주소연산자를사용할수없다. 레지스터변수또한주소연산자를사용할수없다.

More information

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - CSharp-10-예외처리 10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.

More information

OCW_C언어 기초

OCW_C언어 기초 초보프로그래머를위한 C 언어기초 2 장 : C 프로그램시작하기 2012 년 이은주 학습목표 을작성하면서 C 프로그램의구성요소 주석 (comment) 이란무엇인지알아보고, 주석을만드는방법 함수란무엇인지알아보고, C 프로그램에반드시필요한 main 함수 C 프로그램에서출력에사용되는 printf 함수 변수의개념과변수의값을입력받는데사용되는 scanf 함수 2 목차 프로그램코드

More information

C++ Programming

C++ Programming C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout

More information

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - ch07 - 포인터 pm0415 함수의인수 (argument) 전달방법 C 에서함수의인수전달방법 값에의한호출 (call-by-value): 기본적인방법 포인터에의한호출 (call-by-pointer): 포인터이용 참조에의한호출 (call-by-reference): 참조 (reference) 이용 7-35 값에의한호출 (call-by-value) 함수호출시에변수의값을함수에복사본으로전달 복사본이전달되며,

More information

PowerPoint Presentation

PowerPoint Presentation #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을작성하면서 C 프로그램의구성요소에대하여알아본다.

More information

PowerPoint Presentation

PowerPoint Presentation #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 변수와상수의개념에대해알아본다.

More information

강의 개요

강의 개요 DDL TABLE 을만들자 웹데이터베이스 TABLE 자료가저장되는공간 문자자료의경우 DB 생성시지정한 Character Set 대로저장 Table 생성시 Table 의구조를결정짓는열속성지정 열 (Clumn, Attribute) 은이름과자료형을갖는다. 자료형 : http://dev.mysql.cm/dc/refman/5.1/en/data-types.html TABLE

More information

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음 프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음 CHAPTER 9 둘중하나선택하기 관계연산자 두개의피연산자를비교하는연산자 결과값은참 (1) 아니면거짓 (0) x == y x 와 y 의값이같은지비교한다. 관계연산자 연산자 의미 x == y x와 y가같은가? x!= y

More information

목차 배열의개요 배열사용하기 다차원배열 배열을이용한문자열다루기 실무응용예제 C 2

목차 배열의개요 배열사용하기 다차원배열 배열을이용한문자열다루기 실무응용예제 C 2 제 7 장. 배열 목차 배열의개요 배열사용하기 다차원배열 배열을이용한문자열다루기 실무응용예제 C 2 배열의개요 배열 (array) 의정의 같은데이터형을가지는여러개의변수를하나의배열명으로공유 기억공간을순차적으로할당받아사용하는것 [ 7.1] C 3 배열의개요 배열 (array) 의필요성 같은데이터형의여러개의변수간결하게선언 기억공간을순차적으로변수의값들을저장, 관리

More information

쉽게

쉽게 Power Java 제 4 장자바프로그래밍기초 이번장에서학습할내용 자바프로그램에대한기초사항을학습 자세한내용들은추후에. Hello.java 프로그램 주석 주석 (comment): 프로그램에대한설명을적어넣은것 3 가지타입의주석 클래스 클래스 (class): 객체를만드는설계도 ( 추후에학습 ) 자바프로그램은클래스들로구성된다. 그림 4-1. 자바프로그램의구조 클래스정의

More information

Microsoft PowerPoint - chap04-연산자.pptx

Microsoft PowerPoint - chap04-연산자.pptx int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); } 1 학습목표 수식의 개념과 연산자, 피연산자에 대해서 알아본다. C의 를 알아본다. 연산자의 우선 순위와 결합 방향에

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 오픈소스소프트웨어개발입문 (CP33992) 포인터 부산대학교공과대학정보컴퓨터공학부 학습목표 포인터선언과간접참조를통한포인터사용방법을알수있다. 함수의인수전달에서포인터의역할및사용방법을알수있다. 포인터를통한배열원소의참조방법에대해알수있다. 포인터의가감연산을통한다양한활용법을알수있다. 포인터를이용한문자열처리에대해알수있다. void 포인터, 함수포인터의사용방법을알수있다.

More information

슬라이드 1

슬라이드 1 명령어집합 주소지정모드 (addressing mode) 내용 명령어는크게연산자부분과이연산에필요한주소부분으로구성 이때주소부분은다양한형태를해석될수있으며, 해석하는방법을주소지정방식 ( 모드 )(addressing mode) 라한다. 즉피연산자정보를구하는방법을주소지정방식이라고함 명령어형식 주소지정 명령어형식에있는주소필드는상대적으로짧다. 따라서지정할수있는위치가제한된다.

More information

슬라이드 1

슬라이드 1 Recursion SANGJI University KO Kwangman () 1. 개요 재귀 (recursion) 의정의, 순환 정의하고있는개념자체에대한정의내부에자기자신이포함되어있는경우를의미 알고리즘이나함수가수행도중에자기자신을다시호출하여문제를해결하는기법 정의자체가순환적으로되어있는경우에적합한방법 예제 ) 팩토리얼값구하기 피보나치수열 이항계수 하노이의탑 이진탐색

More information

슬라이드 1

슬라이드 1 6-1 리스트 (list) 란순서를가진항목들을표현하는자료구조 리스트를구현하는두가지방법 배열 (array) 을이용하는방법 구현간단 삽입, 삭제시오버헤드 항목의개수제한 연결리스트 (linked list) 를이용하는방법 구현복잡 삽입, 삭제가효율적 크기가제한되지않음 6-2 객체 : n 개의 element 형으로구성된순서있는모임 연산 : add_last(list,

More information

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D> 리눅스 오류처리하기 2007. 11. 28 안효창 라이브러리함수의오류번호얻기 errno 변수기능오류번호를저장한다. 기본형 extern int errno; 헤더파일 라이브러리함수호출에실패했을때함수예 정수값을반환하는함수 -1 반환 open 함수 포인터를반환하는함수 NULL 반환 fopen 함수 2 유닉스 / 리눅스 라이브러리함수의오류번호얻기 19-1

More information

03_queue

03_queue Queue Data Structures and Algorithms 목차 큐의이해와 ADT 정의 큐의배열기반구현 큐의연결리스트기반구현 큐의활용 덱 (Deque) 의이해와구현 Data Structures and Algorithms 2 큐의이해와 ADT 정의 Data Structures and Algorithms 3 큐 (Stack) 의이해와 ADT 정의 큐는 LIFO(Last-in,

More information

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout <<  양수입력 : ; cin >> *p; if (*p <= 0) cout <<  양수를입력해야합니다  << endl; return; 동적할 15 장기타주제들 auto_ptr 변환함수 cast 연산자에의한명시적형변환실행시간타입정보알아내기 (RTTI) C++ 프로그래밍입문 1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout > *p; if (*p

More information

제4장 기본 의미구조 (Basic Semantics)

제4장  기본 의미구조 (Basic Semantics) 제 4 장블록및유효범위 Reading Chap. 5 숙대창병모 1 4.1 변수선언및유효범위 숙대창병모 2 변수선언과유효범위 변수선언 Declaration before Use! 대부분의언어에서변수는사용전에먼저선언해야한다. 변수의유효범위 (scope) 선언된변수가유효한 ( 사용될수있는 ) 프로그램내의범위 / 영역 변수이름뿐아니라함수등다른이름도생각해야한다. 정적유효범위

More information

Microsoft PowerPoint - chap11-포인터의활용.pptx

Microsoft PowerPoint - chap11-포인터의활용.pptx #include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 포인터를 사용하는 다양한 방법에

More information