일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 실습
- 네트워크 프로그래밍
- 표준 입출력
- 언제나 휴일
- 실습으로 다지는 c#
- 충남 천안
- Windows Forms
- 유튜브 동영상 강의
- 언제나휴일
- C++
- 알고리즘
- 추천
- 파이썬
- 프로젝트
- 졸업 작품
- 졸업 작품 소재
- 강의
- 원격 제어 프로그램
- 동영상 강의
- c#
- 산책하기 좋은 곳
- 동영상
- 소켓 통신
- 소스 코드
- 캡슐화
- 무료 동영상 강의
- 클래스 다이어그램
- 안드로이드 앱 개발
- 표준 라이브러리 함수
- c언어
- Today
- Total
목록c언어 (101)
프로그래밍 언어 및 기술 [언제나휴일]
Part 20. 문자열 68. 문자열 문자열 - C언어 프로그램을 작성하다 보면 문자열 데이터를 사용할 때가 많아요. 대부분의 프로그래밍 언어에서는 문자열을 관리하는 별도의 형식을 제공하지만 C언어는 문자열 형식을 제공하지 않아요. 그렇다고 C언어에서 문자열 데이터를 표현할 수 없는 것은 아니예요. C언어에서는 문자열을 char 형을 원소로 하는 배열이나 char 형을 원소로 하는 포인터 형식으로 문자열을 표현할 수 있어요. 그리고 문자열 데이터를 표현할 때 쉽게 표현할 수 있게 쌍 따옴표를 사용하여 문자열을 표현할 수 있어요. #define MAX_NAME_LEN 50 char name[MAX_NAME_LEN + 1] = "hello"; const char *str = "yahoo"; char 형식 원..
Part 19. 함수 만들기 실습 61. 함수 만들기 실습 시나리오 함수 만들기 실습 - C언어 이번에는 단순한 기능을 수행하는 함수들을 직접 만들고 호출해서 사용하는 실습을 진행할게요. 함수 만들기 실습은 해야 할 일을 분석하는 것부터 시작하며 이런 작업을 도메인(Domain) 분석이라고 불러요. 도메인 분석이 끝나면 적당한 이름을 결정하고 입력 매개변수 리스트와 반환 형식을 결정할 거예요. 그리고 테스트 코드를 작성한 후에 실제 함수를 구현하는 순서로 실습할게요. 여러분은 함수 만들기 과정을 통해 기본적인 알고리즘 논리 전개와 함수 원형을 결정하는 능력을 키워야겠죠. 어떤 종류의 프로그래밍 언어를 사용하더라도 이러한 능력은 필수적으로 필요해요. 여러분은 각 단계별로 진행하고 난 후에 책의 내용과 비교..
Part 18. 다양한 종류의 변수 (전역, 지역, 정적, 상수화) 57. 전역 변수 다양한 종류의 변수, 전역 변수, 지역 변수, 정적 변수, 상수화 변수 - C언어 아시는 것처럼 C언어에서는 프로그램에서 관리할 데이터를 할당하고 관리하기 위해 변수에 관한 문법을 제공하고 있죠. C언어에서는 프로그램의 모든 함수에서 접근할 수 있는 전역 변수와 선언한 블록에서만 접근할 수 있는 지역 변수가 있어요. 그리고 이 외에도 정적 변수와 상수화 변수를 제공하는데 이들에 관해 하나 하나 살펴봅시다. 전역 변수 C언어에서는 변수 선언을 특정 블록 내부가 아닌 외부에 선언한 변수를 전역 변수라 불러요. 전역 변수는 프로그램 시작할 때 할당하고 프로그램 끝날 때 해제하며 프로그램 전제 영역에서 접근할 수 있죠. 예를 ..
Part 17. 매개변수 전달 원리 56. 매개변수 전달 원리 매개변수 전달 원리 - C언어 이번에는 함수 호출에서 종료까지 수행 원리를 간단히 알아볼게요. 함수를 호출하면 해당 함수의 지역 변수를 위한 메모리를 스택에 할당해요. 그리고 피호출 함수의 동작이 끝나면 호출한 함수의 다음 부분을 수행하는 것이 기본 동작이죠. main 함수가 시작하면 main함수의 지역 변수를 위한 메모리를 스택에 할당해요. 그리고 Add 함수를 호출하면 입력 인자를 복사한 후에 Add 함수의 지역 변수를 할당한 후에 복사한 값으로 초기화를 수행하죠. 그리고 함수의 return 문을 만나면 자신의 스택 영역 바로 밑(호출 함수 스택의 맨 위)에 반환 값을 설정해요. 그리고 자신의 스택 메모리를 해제한답니다. 호출 결과를 대입..
Part 16. 함수 개요 그리고 프로그램 52. 함수 개요 함수 개요 - C언어 소프트웨어를 만들 때 가장 많은 비용이 들어가는 것이 유지 보수 비용이라는 연구 결과가 계속 나오고 있어요. 그리고 점점 유지 보수 비용이 차지하는 비율도 높아지고 있답니다. 프로그램을 제작할 때 유지 보수 비용을 줄이는 여러 가지 방법이 있는데 그 중에 하나가 재사용성을 높이는 것이죠. 여러 프로그램에서 공통으로 사용할 수 있는 것들을 라이브러리로 만들어서 필요할 때 추가하여 사용하는 거예요. 여러 개의 컴포넌트(Component, 부품)로 만들고 필요한 부품을 결합하여 프로그램을 만들어서 재사용성을 높이기도 해요. 그리고 프로그래밍할 때 재사용성을 높이는 기본은 함수를 만들어 사용하는 것이예요. 대부분의 프로그래밍 언어..
Part 15. 배열과 포인터 사용은 인덱스와 간접 연산자 49. 간접 연산자 배열과 포인터 사용은 인덱스와 간접 연산자 [디딤돌 C언어] 피연산자로 포인터를 사용하는 더하기, 빼기 연산은 프로그램 메모리 주소를 계산하거나 상대적 거리를 계산하죠. 하지만 실제 개발자는 프로그램 메모리 주소를 아는 것은 큰 의미가 없어요. 개발자는 특정 프로그램 메모리 주소에 있는 값을 얻어오거나 설정하는 것을 원해요. C언어에서 포인터(배열 이름 포함)가 갖는 메모리 주소에 원하는 값을 설정하거나 얻어오는 방법은 크게 간접 연산자와 인덱스 연산자를 사용하는 방법이 있어요. 간접 연산자는 선언문이 아닌 코드 구문에서 포인터 형식을 피연산자로 오는 단항 연산자예요. 연산 기호는 포인터 변수를 선언할 때 사용한 지시 연산자 ..
43. 매크로 구문 C언어에서는 자주 사용하는 표현을 약속하여 쉽게 표현할 수 있게 매크로 구문을 제공하고 있어요. 매크로 구문은 자주 사용하는 표현을 약속한 후 개발자가 매크로 구문을 사용하여 쉽게 코드를 작성하는 문법이예요. 개발자가 매크로 구문으로 코드를 작성하면 컴파일러가 기계어 코드로 번역하기 전에 약속한 구문으로 바꾸어 줘요. 이러한 과정을 전개라 부르며 컴파일 전에 수행해서 전처리 구문이라고도 불러요. C언어에서는 #include문으로 다른 파일의 내용을 포함시키거나 #define문으로 매크로 구문을 약속하는 것이 대표적이죠. #include #include “파일명” #include 문은 다른 파일에 있는 내용을 포함시키는 매크로 구문이예요. 개발도구를 설치하면서 함께 설치한 파일들이 있는..
C언어 - 반복문, 별출력 00:20 반복문 01:14 [실습] while문 1에서 100까지 합계 구하기 02:30 [실습] do while문 1에서 100까지 합계 구하기 03:11 [실습] do while문 음수 입력 전까지 합계 구하기 04:34 [실습] for문 1에서 100까지 합계 구하기 05:43 별출력 05:51 [실습] 별출력 - 속이 빈 정사각형 출력 41. 반복문 (while, do while, for) 반복문은 특정 조건이 참일 동안 반복해서 구문을 수행하는 구문이예요. C언어에서는 세 가지 종류의 반복문을 제공합니다. while(조건 표현식) 반복 수행 구문; do 반복 수행 구문 while(조건 표현식); for(초기 수행문; 조건 표현문; 조건 변화 구문) 반복 수행 구문; ..
C언어 - 제어문 (조건문, 선택문) C언어 - 제어문 실습 (조건문, 선택문) 00:14 조건문 00:53 [실습] if 문 - 홀수일 때 출력 01:58 [실습] if else 문 - 3의 배수인지 판별하여 출력 02:53 선택문 03:49 [실습]if 문으로 학점 출력하기 06:10 [실습] switch case 문으로 학점 출력하기 39. 조건문 (if else) C언어에서는 조건에 따라 수행할 작업을 판단하거나 반복해서 수행하는 등의 제어문을 제공해요. 조건 표현식에 따라 구문을 수행하는 조건문과 조건 표현식이 참일 동안 반복해서 구문을 수행하는 반복문, 표현식의 값에 따라 수행할 위치를 선택하는 선택문 등이 있어요. 그리고 미리 특정 코드에 대응하는 표현을 약속하는 매크로 구문을 제공하고 있어..
1. 다음리터럴상수로초기값을설정하는선언문중에서오류가있는것을고르시오. a. char c = “hello”; b. int i = ‘a’; c. char c = 38; d. char c = 0xC; 더보기 답: a “hello”는 문자열이며 char 형식을 원소로 하는 배열이나 포인터 형식 변수로 사용할 수 있습니다. 2. 다음코드를수행했을때출력결과를예측하시오. printf(“%d\n”, 8^8); 더보기 답: ^ 연산은 비트 자리별로 같으면 0이고 다르면 1로 계산하는 연산입니다. 좌항과 우항이 같은 수이므로 모든 자리는 같으며 따라서 결과도 모든 자리가 0입니다. 3. 다음코드를수행했을때출력결과를예측하시오. printf(“%d\n”, 2
C언어 - 대입, 증감, 기타 연산자 00:14 대입 연산자 01:09 [실습] 대입 연산자 l-value 01:42 [실습] 복합 대입 연산자 02:19 [실습] 대입 연산자 우선 순위 03:27 증감 연산자 03:57 [실습] 증감 연산자 05:15 기타 연산자 05:28 [실습] 콤마 연산자 06:30 [실습] 형 변환 연산자 07:05 [실습] sizeof 연산자 07:45 [실습] 삼항 조건 연산자 35. 대입 연산자 =, +=, -=, *=, /=, %= 등 대입 연산은 변수의 값을 설정할 때 사용하는 연산이죠. 이러한 이유로 대입 연산의 좌항에는 상수 표현은 올 수 없으며 l- value라 불러요. 대입 연산자에는 우항의 값을 좌항에 대입하는 단순 대입 연산과 좌항과 우항의 값을 더하거나 빼..
C언어 - 비트 연산자, 쉬프트 연산자 00:19 비트 연산자 01:22 [실습] 비트 연산자 02:44 xor 연산을 이용한 대칭형 암호화 03:28 [실습] xor 연산을 이용한 대칭형 암호화 05:46 쉬프트 연산자 07:00 [실습] 쉬프트 연산 32. 비트 연산자 & | ^ ~ C언어에서는 비트 단위로 논리 연산을 수행하는 비트 연산을 제공하고 있어요. 비트 연산의 피연산자는 정수 형식이 올 수 있어요. 이항 연산자 &는 비트 단위로 논리곱 연산을 수행하죠. 예를 들어 6&5를 하면 6은 이진수로 110이고 5는 이진수로 101이므로 6&5의 연산 결과는 이진수 100이고 10진수 4예요. 이항 연산자 | 는 비트 단위로 논리합 연산을 수행하죠. 예를 들어 6|5의 연산 결과는 이진수 111 이..
[C언어] 산술, 논리, 비교 연산자 00:19 산술 연산 00:35 [실습] 부호 연산 01:35 [실습] 사칙 연산 04:05 [실습] 나머지 연산 05:32 논리 연산자 05:46 [실습] 논리 연산 07:18 [실습] 논리 연산에서 주의할 점 09:03 비교연산자 09:18 [실습] 비교 연산자 10:01 비교 연신에서 주의할 점 29. 산술 연산자 프로그래밍 언어는 관리해야 할 데이터를 위한 문법도 제공하지만 수행해야 할 코드를 작성하는 문법도 제공하죠. 이번에는 C언어에서 수행할 코드를 작성하는 가장 기본적인 문법인 연산자를 다룰게요. C언어에서는 사칙 연산이나 논리 연산, 비트 연산을 비롯하여 30여 가지의 연산자를 제공하고 있어요. 여러분은 책에 나온 예제 코드를 직접 작성하여 하나 하나 ..
C언어 - 표준 입출력 23. 표준 입출력 개요 2024년 4월 3일에 새롭게 제작하여 유튜브에 업로드할 예정입니다. 프로그래밍 언어의 문법을 익히고 프로그래밍 작성 능력을 키우려면 기본적인 입출력 기능은 사용할 수 있어야겠죠. C언에서는 다양한 입출력 방법을 제공하는데 여기에서는 표준 입출력 함수 중에 자주 사용하는 함수를 살펴볼게요. 이미 앞에서 설명없이 사용했던 printf 함수는 대표적인 표준 입출력 함수예요. 표준 입출력 함수를 사용하려면 stdio.h 파일 포함문이 필요하죠. #include 여기에서는 stdio.h에서 제공하는 많은 함수 중에 세 가지 표준 출력 함수와 다섯 가지 표준 입력 함수를 소개할게요. int printf(const char * format, … ); int putch..
21. 명명법 C언어에서는 변수 이름, 함수 이름, 사용자 정의 형식의 태그 이름 등을 개발자가 정할 수 있어요. C언어에서는 개발자가 정하는 이름은 다음 규칙을 따라야 하죠. 예약어를 사용할 수 없음 첫 문자로 숫자 문자를 사용할 수 없음 언더 바를 제외한 기호 문자를 사용할 수 없음 같은 블록 내에 같은 이름을 선언할 수 없음 참고로 예전에는 한글로 이름을 정할 수 없었는데 지금은 한글로 정할 수 있어요. 프로그래밍을 할 때 이름을 대충 정하면 생각이 나지 않아 확인하는 비용도 들어요. 여러 개발자가 같이 개발할 때는 이러한 문제로 예상하지 못한 비용이 추가로 발생하곤 하죠. 많은 개발자들은 서로 이해하기 쉽게 나름의 규칙을 정하여 이름을 결정하고 있어요. 이 책에서는 다음과 같은 규칙으로 이름을 결..
C언어 - 실수 표현과 메모리 구조 19. 실수는 근사치 0.1에서 0.5사이에 몇 개의 실수가 있을까요?\ 여러분이 아는 것처럼 무한 개의 실수가 존재하죠. 따라서 0.1과 0.5 사이의 모든 실수를 유한한 메모리에 표현할 수 없어요. 실제로 컴퓨터에서 실수 표현은 오차 범위 내에서 값을 표현하는 근사치예요. C언어에서는 실수 형식으로 float 형식과 double 형식을 제공해요. float 형식은 4바이트이며 double 형식은 8바이트예요. 그리고 C언어에서 실수 표현은 기본적으로 double 형식으로 취급하며 float 형식을 표현할 때는 뒤에 f를 붙여요. 그렇지만 C언어에서 실수 형식 사이에는 서로 묵시적 형변환을 제공해서 실수 뒤에 f를 붙이지 않아도 가능하답니다. 물론 값 잘림 현상이 발..
[C언어] Part 6. 정수 형식의 표현 범위와 Overflow 값 잘림 현상 17. 정수 형식의 표현 범위 char 형식과 unsigned char 형식은 정수를 표현할 때도 사용할 수 있다고 했어요. 두 가지 형식 모두 1바이트를 할당하여 256가지의 정수를 표현할 수 있답니다. unsigned char 형식은 부호 없는 정수만 표현하므로 0~0xFF(0~255)까지 표현 가능해요. char 형식은 최상위 비트가 0인 0x00~0x7F(0~127)까지는 부호없는 정수예요. 그리고 최상위 비트가 1인 0x80~0xFF(-128~-1)까지는 부호있는 정수죠. ◈ char 형식과 unsigned char 형식의 표현 범위 확인 #include int main() { char c = 0; unsigned ..
Part 5. 문자 형식과 ASCII 코드 15. ASCII 코드 C언어 - 문자 형식과 ASCII 코드 C언어에서 char 형식은 -128~127까지의 정수를 표현할 수 있는 정수 형식이예요. 형식 이름을 보면 알 수 있듯이 char 형식은 문자를 표현할 때 많이 사용하죠. 미국 표준 기구(ANSI, American National Standards Instutitute)에서는 영문 알파벳과 숫자 문자와 여러 기호를 아스키 코드로 정의했어요. 아스키 코드에는 128개의 문자를 약속하고 있답니다. 최초의 아스키 코드는 하드웨어 사이에서 주고 받는 신호를 약속한 것으로 제어 신호도 포함하고 있어요. char 형식이 8비트(1바이트)죠. 첫번째 비트는 0이고 나머지 비트를 아스키 코드를 이용하여 표현해요. ..
Part 4. 부호 있는 정수 표현 방법 12. 부호 있는 정수 표현 - 부호 비트 필드 C언어 부호있는 정수 표현, 부호 비트 필드, 1진 보수, 2진 보수 메모리에 부호있는 정수를 표현하는 방법은 여러가지 방법이 있어요. 그 중에 대표적인 방법이 부호비트 필드 방식, 1진 보수 방식, 2진 보수 방식이 있죠.(C언어의 정수 형식은 2진 보수 방식을 사용하고 있어요.) 이제 이 세가지 방법을 알아봅시다. 먼저 부호 비트를 이용하는 방법을 알아볼게요. 부호비트 필드 방식에서는 첫 번째 비트를 부호비트로 사용하는 방식이예요. 첫 번째 비트가 1이면 부호있는 정수이고 0이면 부호없는 정수인 것이죠. 그리고 나머지 비트는 크기를 나타내요. 예를 들어 8비트의 메모리에 10010001 값이 들어있다면 첫번째 비..
Part 3. 형식과 메모리 크기, 진수 표현 [디딤돌 C언어] Part 3. 형식과 메모리 크기, 진수 표현 9. 기본 형식(TYPE) 프로그래밍 언어에서는 데이터를 표현하는 문법으로 형식과 변수를 제공해요. 형식은 데이터의 종류와 표현 범위에 따라 메모리 크기와 범위를 약속하고 있어요. 실제 메모리가 필요할 때 형식을 지정하여 변수를 선언하면 약속한 메모리를 할당받아 사용할 수 있어요. C 언에에서 제공하는 형식에는 문자, 정수, 실수를 표현할 때 사용하는 기본 형식이 있어요. 그리고 여러개의 원소를 연속적인 메모리에 할당받아 사용하는 배열과 프로그램의 메모리 주소를 기억하는 포인터도 있죠. 이 외에 개발자가 프로그램에 필요한 형식을 정의하는 문법을 제공합니다. 개발자가 정의하여 사용하는 형식을 사용..
1. C언어는 Bell 연구소에서 운영체제(O/S)를 만드는 과정에서 사용한 B언어을 발전한 프로그래밍 언어입니다. B언어는 어떠한 운영체제를 만드는 과정에서 사용했나요? 더보기 답: Unix 2. 프로그래밍 언어에서 데이터 종류에 따라 필요한 메모리 사이즈와 표현 방법을 약속하는 것은 무엇입니까? 더보기 답: 형식 3. 콘솔 프로그램의 진입점 함수 이름은 무엇입니까? 더보기 답: main 4. 표준 입출력을 사용하기 위해 포함시켜야 하는 헤더 파일 이름은 무엇입니까? 더보기 답: stdio.h 5. 표준 출력 파일에 포멧에 맞게 출력하는 함수 이름은 무엇입니까? 더보기 답: printf 6. 편집한 소스 파일을 기계어로 번역하는 것을 무엇이라 부릅나요? 더보기 답: 컴파일 7. C언어에서 주석을 표현하..
[디딤돌 C언어] Part 2. 첫 번째 프로그램 Hello, World! 6. 첫 번째 프로그램 만들기 이제 처음으로 간단한 프로그램을 만들어 봐요. 프로그램 언어를 공부할 때는 머리로 이해하는 것도 필요하지만 받드시 개발 도구에서 만들어 보는 것이 필요해요. 책의 내용을 머리로 이해했다고 만족하지 마시고 개발도구로 만들어 보세요. 이번에 만들 프로그램은 콘솔 화면에 “Hello, World”를 출력하는 프로그램이예요. 여러분은 이 과정을 통해 개발 도구에서 C언어로 프로그램을 만드는 과정을 익힐 수 있어요. 그리고 C언어의 문법 요소도 간단히 살펴볼 수 있답니다. 여기에서는 Microsoft Visual Studio 2022 개발 도구를 사용할게요. (2023년 12월 26일 현재 동영상에서는 Vis..
C언어 - C언어 소개 [유튜브 동영상 강의] 1. 들어가기에 앞서 아래 동영상 강의는 예전에 만든 동영상 강의입니다. 이 책은 컴퓨터 프로그래머를 꿈꾸는 이들을 위해 만들었어요. 컴퓨터 프로그래머가 하는 작업 중에 가장 기본은 원하는 작업을 컴퓨터가 수행할 수 있게 논리를 전개하는 것이죠. 그리고 컴퓨터가 수행할 수 있는 프로그램을 작성하기 위해 프로그래밍 언어와 개발 도구를 이용하는 것입니다. 많은 이들은 컴퓨터 프로그래밍을 학습하는 것은 책을 보고 머리로 이해하는 것이라 생각하는 것 같아요. 하지만 실제 컴퓨터 프로그래밍을 효과적으로 학습하려면 머리를 이용하는 것 외에도 자신의 논리를 종이에 적고 그림을 그리고 자료를 검색하고 아는 이들에게 물어보는 등의 사용할 수 있는 모든 자원을 활용하는 것이 ..
1. 개요 및 알고리즘 안녕하세요. 언제나 휴일입니다. 이번에는 원형 큐 중에서 버퍼의 모든 공간을 사용하는 소스 코드입니다. 큐는 자료를 한쪽으로 보관하고 다른쪽에서 꺼내는 FIFO(First In First Out) 방식의 자료구조입니다. 큐에 자료를 보관하는 연산을 PUT 혹은 ENQUEUE라 말하고 꺼내는 연산을 GET 혹은 DEQUEUE라고 말합니다. 그리고 보관할 위치 정보를 rear, 꺼낼 위치 정보를 front라고 말해요. 원형 큐에서는 rear와 front를 다음 위치로 이동할 때 index = (index+1)%QSIZE 로 이동합니다. PUT 연산 IF Queue Is full (꽉차면) Overflow (버퍼오버플로우) Else (꽉차지않을때) Buffer[rear] = data (..
1. 소개 및 알고리즘 안녕하세요. 언제나 휴일이예요. 이번에는 버퍼를 동적으로 생성하는 원형 큐를 살펴보아요. 큐는 자료를 한쪽으로 보관하고 다른쪽에서 꺼내는 FIFO(First In First Out) 방식의 자료구조입니다. 큐에 자료를 보관하는 연산을 PUT 혹은 ENQUEUE라 말하고 꺼내는 연산을 GET 혹은 DEQUEUE라고 말합니다. 그리고 보관할 위치 정보를 rear, 꺼낼 위치 정보를 front라고 말해요. 원형 큐에서는 rear와 front를 다음 위치로 이동할 때 index = (index+1)%QSIZE 로 이동합니다. PUT 연산 IF Queue Is full (꽉차면) Overflow (버퍼오버플로우) Else (꽉차지않을때) Buffer[rear] = data (버퍼의 rear..
1. 개요 및 알고리즘 안녕하세요. 언제나 휴일입니다. 이번에는 버퍼크기가 고정인 원형 큐의 소스 코드입니다. 큐는 자료를 한쪽으로 보관하고 다른쪽에서 꺼내는 FIFO(First In First Out) 방식의 자료구조입니다. 큐에 자료를 보관하는 연산을 PUT 혹은 ENQUEUE라 말하고 꺼내는 연산을 GET 혹은 DEQUEUE라고 말합니다. 그리고 보관할 위치 정보를 rear, 꺼낼 위치 정보를 front라고 말해요. 원형 큐에서는 rear와 front를 다음 위치로 이동할 때 index = (index+1)%QSIZE 로 이동합니다. PUT 연산 IF Queue Is full (꽉차면) Overflow (버퍼오버플로우) Else (꽉차지않을때) Buffer[rear] = data (버퍼의 rear ..
1. 유튜브 동영상 강의 2. 개요 및 알고리즘 안녕하세요. 언제나 휴일입니다. 이번에는 스택(STACK)을 연결리스트로 구현하는 소스 코드입니다. 스택은 자료를 한쪽으로 보관하고 꺼내는 LIFO(Last In First Out) 방식의 자료구조입니다. 스택에 자료를 보관하는 연산을 PUSH라 말하고 꺼내는 연산을 POP이라고 말합니다. 그리고 가장 최근에 보관한 위치 정보를 TOP 혹은 스택 포인터라 말합니다. Push 연산 IF Top> MAX Then (꽉 차면) Overflow (버퍼 오버플로우) Else (꽉 차지 않을 때) Top = Top +1 (Top 위치를 1 증가) Buffer[Top] = data (버퍼의 Top 위치에 data 보관) Pop 연산 IF Top=-1 Then (비었으면..
1. 스택 이번에 작성할 코드는 버퍼를 동적으로 할당받는 스택(STACK)입니다. 스택은 자료를 한쪽으로 보관하고 꺼내는 LIFO(Last In First Out) 방식의 자료구조입니다. 스택에 자료를 보관하는 연산을 PUSH라 말하고 꺼내는 연산을 POP이라고 말합니다. 그리고 가장 최근에 보관한 위치 정보를 TOP 혹은 스택 포인터라 말합니다. 2. 알고리즘 Push 연산 IF Top> MAX Then (꽉차면) Overflow (버퍼오버플로우) Else (꽉차지않을때) Top = Top +1 (Top 위치를 1 증가) Buffer[Top] = data (버퍼의 Top 위치에 data 보관) Pop 연산 IF Top=-1 Then (비었으면) Underflow (버퍼언더플로우) Else data = ..
1. 스택 스택은 자료를 한쪽으로 보관하고 꺼내는 LIFO(Last In First Out) 방식의 자료구조입니다. 스택에 자료를 보관하는 연산을 PUSH라 말하고 꺼내는 연산을 POP이라고 말합니다. 그리고 가장 최근에 보관한 위치 정보를 TOP 혹은 스택 포인터라 말합니다. 2. 알고리즘 Push 연산 IF Top> MAX Then (꽉 차면) Overflow (버퍼 오버플로우) Else (꽉 차지 않을 때) Top = Top +1 (Top 위치를 1 증가) Buffer[Top] = data (버퍼의 Top 위치에 data 보관) Pop 연산 IF Top=-1 Then (비었으면) Underflow (버퍼 언더플로우) Else data = Buffer[Top] (버퍼의 Top 위치의 값을 데이터에 설..
1. 알고리즘 힙 정렬은 힙 트리를 이용하는 알고리즘입니다. 최대 힙을 사용하면 크기 순(Ascend)으로 정렬하고 최소 힙을 사용하면 크기 역순(Descend)으로 정렬합니다. 힙 정렬은 먼저 힙 트리를 구성합니다. 그리고 루트의 값과 맨 마지막 값을 교환한 후에 정렬 범위를 1 줄입니다. 이와 같은 작업을 반복하여 정렬 범위가 1일 때까지 반복합니다. 최대 힙 트리에서 루트는 최대 값을 갖습니다. 따라서 마지막 값과 교환하면 제일 큰 값이 맨 뒤로 배치할 수 있습니다. 그리고 난 후에 정렬 범위를 줄여나가면 최종적으로 정렬 상태를 만들 수 있는 것입니다. 힙 정렬(base:배열의 시작 주소, n: 원소 개수, compare:비교 논리) 초기 힙 구성 루트와 맨 마지막 자손 교환 n을 1 감소 반복(n..