[C언어] 배열과 포인터(1)
·
🛠️Backend/⚙️C
✅ 1. 배열의 개념(1) 배열(array) 이란?여러 개의 동일한 자료형의 값을 연속적인 메모리 공간에 저장하고, 이를 하나의 이름으로 관리할 수 있도록 만든 변수임.각각의 배열 요소는 0번부터 시작해 차례로 부여된 번호(인덱스)를 이용하여 액세스 함배열의 차원: 배열의 요소가 나열되는 구조이며, 1차원, 2차원, 3차원 ... 등이 있음.위와 같이 자료의 최댓값을 구하는 예시가 있다고 가정하면, 변수만 가지고 데이터를 저장 할 경우 최댓값을 찾을 때 위와 같이 하나씩 전체를 비교해야 한다. 이러한 과정은 매우 비효율적임. 그래서 배열을 사용함.✅ 2. 1차원 배열(1) 1차원 배열 - 선언위와 같이 동일한 자료형의 배열명을 통해 독립적으로 개수를 지정해 배열의 크기를 지정해서 만들 수 있음.int a..
[C언어] 함수와 기억 클래스(2)
·
🛠️Backend/⚙️C
✅ 1. 매개변수를 통한 자료 전달(1) 함수의 호출과 자료 전달함수 호출: 처리에 필요한 자료를 피호출 함수의 매개변수에 전달함 -> sum(10, 20); 복귀: 처리 결괏값을 함수 호출식의 값으로 반환함 -> return z;(2) 값에 의한 자료 전달C 언어의 기본적인 자료 전달 방식이다.C 언어는 함수를 호출시 매개변수 전달은 실 매개변수의 값을 형식 매개변수에 복사하는 방식으로 동작함.이유는, 실 매개변수와 형식 매개변수의 공간이 다르기 때문에 값만 복사해서 넣어주는 것임. 즉, 주소값이 달라서임.즉, 변수간의 주소값이 다른데, 서로 영향을 받지 않도록 하기 위해서 복사를 하는 것임.(3) 참조에 의한 자료 전달#include void modify(int *ptr) { *ptr = 99;..
[C언어] 함수와 기억 클래스(1)
·
🛠️Backend/⚙️C
✅ 1. 함수의 개념(1) 함수(function) 란?함수란, 특정한 작업을 수행하도록 설계된 독립적인 코드 블록을 의미한다.함수에 코드 블록에 정의된 코드를 사용하기 위해서는 함수를 호출하여 사용할 수 있음.매개변수를 통해 함수에 데이터를 전달 할 수 있음.작업을 완료하면 호출한 곳으로 복귀 즉, return 을 하게 됨.복귀할 때 결과값을 반환할 수 있음.C 프로그램은 함수를 기본 단위로 하여 구성이 됨.(2) 함수의 특성[ 함수의 장점 ]크고 복잡한 프로그램을 작은 크기의 의미 있는 작업 단위로 분할하여 구성할 수 있음.간결하고 이해하기 쉬우며 유지 관리가 쉬워질 수 있음.반복 사용되는 코드의 중복을 최소화 할 수 있음.잘 설계된 함수는 다른 응용에서 재사용할 수 있음.[ 함수의 단점 ]함수 호출과..
[C언어] 선택 제어문과 반복 제어문
·
🛠️Backend/⚙️C
✅ 1. C 언어의 흐름 제어(1) C 언어의 기본 - 문장 흐름[ 문장(statement) ]선언이나 실행을 지시하는 표현의 기본 단위선언문: 자료형, 변수 등을 선언하는 문장이다. 예: int a;실행문: 동작을 수행하도록 지시하는 문장이다. 예: a += 10;실행문은 함수 안에만 작성할 수 있음.모든 문장은 세미콜론(;)으로 끝을 표시함실행문은 나열된 순서에 따라 순차적으로 실행됨흐름 제어문에 의해 순차적 흐름을 바꿀 수 있음.(1) C 언어의 기본 - 흐름 제어 구조프로그램을 작성할 때 일반적으로 사용하는 것이 위에서부터 차례대로 순차구조, 선택구조, 반복구조 이다.이 세가지가 대표적으로 쓰이는 흐름 제어 구조이다.✅ 2. 선택 제어문(1) 선택 제어문이란?지정된 조건에 따라 특정 위치로 이동하..
[자료구조] 6강 - 연결 리스트의 응용
·
🎓방송통신대학교/🔢자료구조
✅ 1. 연결 리스트의 변형(1) 단순 연결 리스트의 문제점단순 연결 리스트는 하나의 링크만 있고, 각각의 노드의 링크는 후행 노드만을 가리키는 구조이다.즉, 특정 노드의 후행 노드는 쉽게 접근할 수 있지만, 특정 노드의 선행 노드에 대한 접근은 헤드 노드부터 재검색을 해야 하는 문제가 있음. 이것을 해결하기 위해 연결 리스트를 변형한 형태가 만들어짐.연결 리스트 변형은 위이미지와 같이 이중 연결 리스트, 단순 원형 연결 리스트가 될 수 있음.(2) 이중 연결 리스트란?기존 단순 연결 리스트는 후행 노드만을 가리키는 link 만 있음.이중 연결 리스트는 두 개의 link 를 가지고 있으며 각각 선행 노드, 후행 노드의 링크를 가지고 있게 됨.결과적으로 후행 노드를 가리킬 수 있어, 소스 코드가 간단해지고..
[C언어] 입출력 함수와 연산자(2)
·
🛠️Backend/⚙️C
✅ 1. 산술 연산자(1) 연산자의 개념(2) 산술 연산자사칙연산을 포함한 산술 연산을 수행하는 연산자를 의미한다.피연산자가 1개 일땐 단항 연산자, 2개 이상일 땐 이항 연산자로 구분됨.[ 이항 연산자 ]연산자간 덧셈으로 자료형의 범위를 벗어나는 오버플로가 일어나지 않도록 주의해야 함나눗셈의 제수 즉, x 나누기 0 는 불가능 함.정수형에만 사용이 가능한 연산자이다.나머지의 정의는 정수의 소수점 아래를 버리는 방식으로 됨.[ 이항 연산자 예시 ][ 단항 연산자 ]✅ 2. 관계 연산자와 논리 연산자(1) 불 값의 표현(2) 관계 연산자[ 관계 연산자의 사용 예 ]a 가 4 인 경우 a > 2 에 대한 값으로는 참 값인 1 이 들어가게 된다. 반대로 거짓일 경우 0 이 들어간다.[ 정리 ]관계 연산자는 대..
[컴퓨터과학 개론] 6강 - 알고리즘(2)
·
🎓방송통신대학교/💻컴퓨터과학 개론
✅ 1. 정렬 알고리즘: 퀵 정렬, 합병 정렬퀵정렬, 합병 정렬 두 가지의 공통 특징은 분할 정복 방법이 적용되는 알고리즘이다.분할 정복 방법은 그냥 단순히 데이터 집합을 쪼개서 분할 해서 정렬 할 때 쓰이는 개념으로 보면 될 듯(1) 퀵 정렬[ 피벗 - pivot, 분할원소 ]두 개의 부분배열로 분할할 때 기준이 되는 특정한 데이터를 의미함.보통 주어진 배열의 첫 번째 원소를 피벗으로 정하긴 함.특정 데이터(피벗)를 기준으로 입력 배열을 두 개의 부분배열로 분할하고, 각 부분 배열에 대해서 독립적으로 퀵 정렬을 순환적으로 적용한다. 라는 개념을 가지고 있는 정렬임.쉽게말해, 입력 배열에서 정렬 기준으로 삼고 싶은 요소를 피벗으로 보고 해당 피벗 데이터를 기준으로 입력 배열을 두 개의 부분 배열로 나눌 ..
[컴퓨터과학 개론] 4강 - 자료구조(2)
·
🎓방송통신대학교/💻컴퓨터과학 개론
✅ 1. 트리데이터 간의 관계를 나타내는 비선형 자료구조이다. ( 1:N 관계이며, 일직선이 아님 )노드(node)라고 불리는 부분과 노드를 연결하는 가지(branch, edge)로 구분이 된다.노드 사이에는 계층적인 관계성을 갖고 있고 이것은 레벨0, 1, 2, 3 등이 될 수 있음.(1) 트리 용어 정의노드(node): 정보 항목을 의미하며 A, B, C, D ... 등이 모두 노드가 될 수 있음.루트(root): 빈 트리가 아닌 경우에 맨 꼭대기에 있는 하나의 노드를 의미함. ( A 부분에 해당함 )차수(degree): 각 노드에 있는 가지의 수를 의미함. ( 그 노드가 가지고 있는 자식 노드(하위 노드)의 개수로 봐야 함. )(2) 잎 노드 (단말 노드) & 내부 노드 (비단말 노드)[ 잎 노드 ..
[컴퓨터과학 개론] 3강 - 자료구조(1)
·
🎓방송통신대학교/💻컴퓨터과학 개론
✅ 1. 기본 개념(1) 자료구조의 개념[ 추상화 ]공통적인 개념을 이용하여 같은 종류의 다양한 객체를 정의하는 것을 의미함.다양한 객체의 예시는 버스가 될 수 있고, 버스에는 광역, 고속, 시외 등 다양한 종류의 버스가 존재하지만 공통적인 개념을 뽑아서 이미지화를 통해 추상화를 시킬 수 있음. 즉, "버스 타러 가자" 만으로도 이해가 충분할 수 있음.예를 들면 수식, 프로그램 언어 등이 있음[ 자료(데이터) 추상화 ]다양한 객체를 컴퓨터에서 표현하고 활용하기 위해 필요한 데이터의 구조에 대해서 공통의 특징만 뽑아 정의 한 것을 의미함.자료구조는 종류가 다양하다. 즉, 배열만 봐도 여러 배열이 존재 할 수 있기 때문에 배열 자체의 공통적인 특징을 뽑아서 자료 를 추상화 할 수 있음. 이유는 의사소통을 하..
[컴퓨터과학 개론] 10강 - 컴퓨터 구조(2)
·
🎓방송통신대학교/💻컴퓨터과학 개론
✅ 1. 명령어(1) 명령어 집합 구조내장 프로그래밍(폰 노이만 구조) 개념으로부터 직접적으로 도출된 개념이다.이것이 ISA(Instruction Set Architecture) 이다. HW와 SW의 교량 역할을 해주는 중요한 개념이다.연산 코드(OP code)는 CPU의 명령어 집합 ISA에 의해 정의되어있음.쉽게말해, CPU가 이해하고 실행할 수 있는 명령어들의 집합과 그것들의 형식, 동작을 정의한 규칙이다.즉, 프로그래머가 CPU에게 "이렇게 동작해!" 라고 말할 수 있는 언어라고 보면 됨.결과적으로 ISA 는 단순히 명령어 모음이 아닌 CPU가 어떻게 동작할지를 정해놓은 약속집같은 것이다.[ 명령어 집합 ]컴퓨터 시스템 내에 정의되어 있는 기본적인 명령어들의 집합을 의미한다.모든 컴퓨터는 자신만의..