1. 동기 / 비동기 동기와 비동기를 구분 짓는 가장 명확한 기준은 ⭐️요청한 작업에 대한 완료 여부⭐️이다. 즉, 동기와 비동기는 요청한 작업에 대해 완료 여부를 신경 써서 다음 작업을 순차적으로 수행할지 비순차적으로 수행할지에 따라 나뉜다고 보면 된다동기(synchronous) : 요청한 작업에 대해 완료 여부를 따지며 순차적으로 작업을 처리하는 것 ex) 100원 주세요 -> 100원 받음 -> 500원 주세요 -> 500원 받음비동기(asynchronous) : 요청한 작업에 대해 완료 여부를 따지지 않고 자신의 다음 작업을 그대로 수행하는 것 ex) 100원 주세요 -> (100원 아직 받지도 않았는데) 500원 주세요 -> 100원 받음 -> 500원 받음 2. 블로킹 / 논블로킹 블로킹과 ..
CS
1. 함수형 프로그래밍이란?(1) 최근 프로그래밍 패러다임과 프로그래밍의 진행 명령형 프로그래밍 절차지향 프로그래밍 : Top-Down 접근 방식을 통해 순차적으로 진행된다. (C, C++) 객체지향 프로그래밍 : Bottom-UP 접근 방식을 통해 세부 모델부터 차근차근 설계하며 진행된다. (C++, Java, C#)선언형 프로그래밍 ⭐️ 함수형 프로그래밍 : 순수 함수를 조합하며 진행된다. (Haskell, Lisp, Erlang) 명령형 프로그래밍의 고질병인 낮은 가독성과 유지보수의 어려움을 함수형 프로그래밍을 통해 해결할 수 있다. (2) 함수형 프로그래밍의 특징⭐️⭐️ 부수 효과가 없는 순수 함수를 1급 객체로 간주하여 파라미터나 반환값으로 사용할 수 있으며, 참조 투명성을 지킬 수 있다...
-목차- 1. 구조체 포인터 변수 2. 구조체 매개 변수 : "구조체 복사" vs "구조체 포인터" 3. 시간, 날짜와 관련된 C언어 표준 라이브러리 함수 1. 구조체 포인터 변수 ※ 구조체 변수 값을 swap하는 함수 만들기 #include typedef struct student { int id; char *pname; double points; } STUD; void stud_printx(STUD s) { printf("[%d:%s] = %lf\n", s.id,s.pname,s.points); } void stud_swap(STUD s1, STUD s2) { STUD tmp = s1; s1 = s2; s2 = tmp; } int main(void) { STUD s1 = {1,"Kim",100}; S..
-목차- 1. 구조체 자료형 정의 및 변수 선언 방법 2. typedef와 구조체 자료형 3. 구조체의 메모리 구조 4. 문자열 배열, 포인터와 구조체 변수에 대한 Assigment 연산 5. 구조체의 배열 1. 구조체 자료형 정의 및 변수 선언 방법 ○ 구조체 ※ 구조체는 여러 자료형의 연속된 변수들로 구성된 집합체 ex) 학생관리 프로그램의 각 학생에 대한 기록 - 이름, 학번, 나이, 전화번호, 전공 등 학생과 관련한 여러 자료 - 한 학생에 대한 여러 자료들을 개별적으로 다루기보다 하 곳에(하나의 변수로) 모아서 관리하는 것이 편리 ※ C의 구조체 구조 - 구조체는 하나 이상의 멤버/필드 변수들로 구성된다 - 각 멤버/필드 변수들은 서로 다른 자료형을 가질 수 있다 ※ 구조체는 일종의 자료형(Ty..
-목차- 1. 포인터 변수에 대한 산술(+,-) 연산 및 우선 순위 2. 배열과 포인터 3. 문자열과 포인터 4. 배열 매개 변수와 포인터 5. 문자열 입출력 함수 : gets( )와 puts( ) 1. 포인터 변수에 대한 산술(+,-) 연산 및 우선 순위 ※ 포인터 변수에 대한 덧셈, 뺄셈 연산 - 포인터 변수에 대해 정수 변수와 유사하게 + , - , ++(increment), -- (decrement) 연산을 할 수 있음. 그러나 정수 변수와는 연산 결과가 다름. #include int main(void) { int a = 1, *pa = &a; // int형 변수 a와 a의 포인터 변수 pa short b = 1, *pb = &b; // short형 변수 b와 b의 포인터 변수 pb char c ..
-목차- 1. 포인터 개념 2. 포인터 변수와 & 연산자 3. 포인터 변수와 주소의 이해 4. 포인터 활용 1. 포인터 개념 ○ 메모리 구조와 변수 ※ 메모리 - 메모리 셀이 연속해 나열되어 있는 구조 - 각 메모리 셀은 식별을 위한 주소를 가지며 셀 내에 이진 값을 저장할 수 있다 ※ Variable - 값을 저장하는 메모리 공간 - Identifier, Type, Value, Memory Size, Memory Address, Scope, Lifetime 등을 속성으로 가짐 ex) int num의 속성은? 식별자 : num, 타입 : int, 값 : 1852609611, 메모리 크기 : 4 bytes, 메모리 주소 : 0x1000 ○ 포인터 : 지시자, 가리키는 자 (변수를 가르키는 변수) 나를 변수..
-목차- 1. Structured Programming and Modular Programming 2. Some Essential Programming Guidelines 3. Style : snake_case vs CamelCase 4. 숫자 야구 게임 프로그래밍해보기 1. Structured Programming and Modular Programming ○ Structured Programming ( 주로 한 모듈 내 함수에서 나타나는 구조) - 모든 프로그램은 본질적으로 순차, 선택, 반복이라는 3가지의 제어 구조 조합으로 구성된다. - 코드에서 이러한 제어 구조가 명확히 드러날 때 코드 작성과 이해가 쉬워진다. 즉, 명확하고 퀄리티가 높고 컴퓨터프로그램의 시간적 이점이 향상된다. - C 언어는 ..