2024/11 11

[시스템프로그래밍] 컴파일러&인터프리터, 전처리기

[1] 컴파일러&인터프리터프로그래밍 언어의 구분1. low-level Langueages- 기계어 프로그램 > 실행 코드 or 목적 코드- CPU 종류마다 고유의 기계어가 존재 2. High-level Languages- 고급언어 프로그램> 소스코드- 인간의 자연언어와 유사하게 표현 > 이해도 ^- 프로그래머가 기계의 세부사항을 알 필요 x- c, c++, C#, java, basic, python, Lisp 등등 번역사용자가 작성하는 고급언어에서 컴퓨터가 이해할 수 있도록 기계어로 번역시킨다.방법1. 컴파일러: 전체 프로그램을 먼저 번역한 후 실행방법2. 인터프리터: 한 라인별로 번역한 후 바로 실행 컴파일 언어(c, c+, java)&소스코드 -> 컴파일러(전처리(preprocess)> 컴파일(Com..

[자료구조] 트리

용어정리- 서브 트리 : 하나의 노드와 그 노드들의 자손들로 이루어진 트리- 단말 노드 : 자식이 없는 노드( leaf node)라고도 불림- 비단말 노드 : 적어도 하나의 자식을 갖는 노드- 레벨 : 트리의 각층의 번호- 높이 : 트리의 최대 레벨 h- 차수 : 노드가 가지고 있는 자식 노드의 개수 이진 트리: 모든 노드의 차수가 2 이하가 되어 구현하기에 편리하다는 장점특징1. 노드의 개수가 n개이면 간선의 개수는 n-1개2. 높이가 h인 이진트리의 경우, 최소 h개의 노드, 최대 2h-1개의 노드를 갖는다.3. n개의 노드를 가지는 이진트리의 높이는 최대 n이거나 최소 ┌log₂(n+1)​┐-> 높이가 h일 때(노드의 개수 h) 최대 2^h-1개의 노드따라서 2^h = logn(n+1) 만약 h가 ..

자료구조 2024.11.27

덱 (deque)

### **1. `llink`와 `rlink`의 역할**- **`llink` (left link)**: 현재 노드의 **이전 노드**를 가리키는 포인터.- **`rlink` (right link)**: 현재 노드의 **다음 노드**를 가리키는 포인터.---### **2. 새 노드가 삽입될 때 해야 할 작업**`add_rear` 함수에서는 새 노드 `new_node`를 **덱의 끝에 추가**합니다.  즉, 새로 추가된 노드는 이전의 `tail` 노드와 연결되어야 합니다.#### (1) 기존 `tail`과 새 노드 연결- 새 노드는 이전 노드(`tail`)을 알고 있어야 하므로, **`new_node->llink`**에 기존의 `tail`을 저장합니다.- 동시에, 기존의 `tail`도 새 노드를 알아야 하므..

자료구조 2024.11.27

C# _ 반환값과 매개 변수

void형 메소드는 리턴하는 값이 없어서 retrun;문을 넣지 않아도 됨.retrun문은 값을 하나만 반환할 수 있음반환값이 여러개일 경우(*****) >> 배열에 반환할 값을 넣은 후 배열을 반환한다.소스8-18) 함수를 호출하면 배열에 랜덤하게 5~10개의 주사위 숫자를 넣어서 변환하는 프로그램(중요)namespace source08 {     internal class Program     {         static int[] DrawDice()         {             Random rnd = new Random();             int[] diceAry = new int[rnd.Next(5, 11)];             for (int i = 0; i        ..

카테고리 없음 2024.11.27

c#_문자열, 메서드

소스8-8 ) CompareTo(), Contains()교재 310페이지에 결과 0, 1, -1 값 >> CompareTo() 매서드 설명 *********반면에 Contains() 매서드는 부울값 문자가 숫자인지 확인하는 Char.IsDigit() 메서드소스8-9 ) char.IsDigit() 메서드 사용 예namespace source08 {     internal class Program     {         static void Main(string[] args)         {             string str;             bool numYN = true;             Console.Write("문자열 입력 => ");             str = Consol..

카테고리 없음 2024.11.26

C# 8장 문자열과 매서드

1. 문자열 처리를 위한 내장 메서드 (1) 문자의 처음과 끝을 확인하는 StartWith(), EndsWith() 메서드 >> 부울값 반환사요ㅛㅇ예namespace zz {     internal class Program     {         static void Main(string[] args)         {             string str;             Console.Write("문자열 입력 => ");             str = Console.ReadLine();             Console.Write("출력 문자열 ==> ");             if ( !str.StartsWith("("))                 Console.Write('('..

카테고리 없음 2024.11.19

[자료구조] 큐

참고: 원형 큐에서 front와 rear 사용삽입(Enqueue): 데이터를 큐에 추가하고 rear를 갱신.삭제(Dequeue): 데이터를 큐에서 제거하고 front를 갱신.빈 상태:front == -1 && rear == -1꽉 찬 상태:(rear + 1) % MAX_QUEUE_SIZE == frontlinked list Queue1. 삽입 큐 #include #include  typedef int element; // 큐의 각 노드를 정의하는 구조체 (연결 리스트 방식)typedef struct QueueNode {    element item;    struct QueueNode* link;} QueueNode; // 큐를 정의하는 구조체typedef struct {    QueueNode* fro..

자료구조 2024.11.18

[자료구조] Stack (C언어)

스택과 큐배열/리스트 vs 스택/큐공통점: 선형 구조 이다.차이점: 삽입과 삭제의 위치 고정 여부배열/리스트: 임의의 위치에서 삽입/삭제스택: 맨 위(top)큐:삽입: 맨 앞(front)삭제: 맨 뒤(rear)     구조체 포인터(다시 복습 >> 함수 선언할 시에 구조체에 포인터를 사용하기 위해)포인터가 어떤 변수의 주소를 담아 가리키는 변수이기 때문에 구조체 포인터도 마찬가지로 구조체의 주소를 가리키는 포인터를 구조체 포인터라고 합니다. 구조체 포인터 문법struct 구조체이름* 구조체포인터이름;// examplestruct book my_book;struct book* p_my_book;p_my_book = &my_book;배열의 경우와는 달리 구조체의 이름은 구조체를 가리키는 주소가 아닙니다.따라..

자료구조 2024.11.18

C# 배열

1차원 배열의 활용1. 배열의 초기화 방식            int[] aa = { 100, 200, 300, 400 };            int[] bb = new int[] { 100, 200, 300 };            int[] cc;             cc = new int[] { 100, 200 };             int[] dd = new int[1];            dd[0] = 100;2. 큰 배열을 초기화 할 때 for문 활용함 ex) 100개의 배열 aa에 2의 배수의 수를 넣음(큰 배열)            int[] aa = new int[100];             int[] bb = new int[200];                       ..

카테고리 없음 2024.11.12