한양대학교

    [07] 시스템 프로그래밍 기초(배열과 포인터)

    배열(Array) p.246 int grade[100]; 이라는 배열이 있다고 하자. 이때 주소값은 0x100이라고 하면 grade[1]의 주소갑은 0x104이다. int가 4byte이기 때문이다. char grade[] = "HANYANG"; 이라는 배열은 문자열의 각각의 문자를 각 문자 배열 안에 넣는 것이다. 따라서 grade[0]에는 'H'가, grade[1]에는 'A'가 들어있다. 주소값을 참조할 때는 &를 쓴다. grade의 주소값을 0x100이라 한다면 &grade[0]는 0x100이다. # Array space 32bit로는 4GB밖에 쓰지 못하기 때문에 64bit 운영체제가 나왔다. Pointer p.248 char *p = grade; p++; 배열은 상수(constant)이지만 포인터..

    [12] 이산수학(관계)

    관계(Relation) A와 B를 집합이라고 하자. A에서 B로의 이항관계(binary relation from A to B)는 두 집합의 곱집합 A x B의 부분집합이다. # 관계와 함수 집합 A에서 집합 B로의 함수 f는 A의 각 원소가 B의 원소 하나에 연결된다. A에서 B로의 관계 R은 두 집합 원소 사이의 일대다 관계로 표현할 수 있다. # 역관계 집합 A에 B로의 관계 R이 있을 때, B에서 A로의 관계를 R에 대한 역관계라고 한다. # 관계 행렬(Relation Matrix) 부울 행렬을 이용하는 방법으로서, 관계 행렬은 집합 A에서 집합 B으로 가는 관계 R에 대한 n x m 행렬로 정의할 수 있다. # 반사관계 집합 A에 대한 관계 R이 A에 속한 a들에 대해 R에 속한 (a,a)가 되면..

    [01] 아카데믹 글쓰기 - 나만의 사전 피드백, 서사

    피드백 나만의 단어 적기인데 사회적으로 이미 정의된 뜻을 적었다. 아무리 독특하더라도 설명이 불친절하면 안 된다. 바라보는 관점은 크게 세 가지가 있다. 긍정적으로 바라보는 것, 부정적으로 바라보는 것, 제3의 입장에서 바라보는 것 촉촉한 삶을 살아라 (우리나라뿐만 아니라 다른 나라의 시사를 보아라) 심미적 서사 - 플롯(plot)이란 단순히 육하원칙에만 맞게 해서는 독자들에게 큰 감흥을 줄 수 없다. 가) 왕이 죽자 왕비도 죽었다. 나) 왕이 죽자 슬픔을 못 이겨 왕비도 죽었다. 다) 왕비가 죽었다. 사인을 아는 사람이 하나도 없었는데 왕이 죽은 슬픔 때문이라는 것이 밝혀졌다. # 단순한 이야기와 플롯(plot)의 차이 인과관계의 여부에 있다. 서술 시간의 변형 여부에 달려 있다. 플롯의 사례 모두 아..

    [13] 프로그램 설계 방법론(interface 실습)

    instanceof 이것은 매개변수에 자식 클래스를 포괄할 수 있는 부모 클래스가 들어갔을 때 어떤 자식 클래스인지 비교를 위해 사용한다. 아래와 같이 사용할 수 있다. if(k instanceof IntegerKey) System.out.println(((IntegerKey)k).getInt()); else if(k instanceof StringKey) System.out.println(((StringKey)k).getString()); else System.out.println("모르는 Key 출현 오류"); Abstract Class interface는 아무것도 없는 빈 껍데기이고, 그것을 구현하면 class가 된다. 그 중간 단계를 abstract class라고 부른다. abstract 클래스를..

    [12] 프로그램 설계 방법론(interface, class hierarchy)

    인터페이스(Interface) 일반적인 MVC 모델은 클래스끼리의 종속 관계가 있어 구현의 분업이 어렵다. 이러한 문제를 해결하기 위해 interface를 이용한다. interface를 이용하면 종속 클래스를 대신해 컴파일이 가능하기 때문이다. 다음과 같은 프로그램이 있다고 하자. 이것을 MVC(Model, View, Controller)로 팀을 분업해서 프로그래밍하기란 어려운 일이다. 따라서 인터페이스를 사용하여 이 프로그램을 분업화 한다면 아래 그림과 같이 설계도를 구성할 수 있다. 그리고 인터페이스 내부의 코드는 다음과 같다. public interface SlidePuzzleBoardInterface { public boolean move(int w); public PuzzlePiece[][] b..

    [06] 시스템 프로그래밍 기초(메모리)

    character 타입을 이용하여 operator와 숫자로 input을 분류하고, input을 체크하는 함수 만들기(팀플) (p.214) C는 object를 어떻게 처리할 것인가, JAVA는 object 중심으로 처리해서 작성 방식이 반대이다. C는 절차지향적 언어이기 때문에, 함수 호출을 최소화하면서 모듈화 시키는 것이 중요하다. stack : First in last out 방식의 자료구조 메모리의 구조 : Code(코드 저장), Data(전역변수), 나머지(heap: 메모리가 부족할 때 자동으로 메모리를 할당한다(Dynamic memory allocation), stack : a->b->c에서 return은 c->b->a) Stack의 memory pointer는 아래로 내려가고, heap의 mem..